Pull to refresh

Technotext

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

Reading time13 min
Views58K

Всем привет, на связи Фарук, инженер-разработчик электроники и встроенного ПО в Whoosh (читается как ВУШ, ощущается как вжууух). Работаю я в embedded отделе (хардкорные программисты, что пишут прошивку на C для различных железок и проектируют эти самые железки), но в основном занимаюсь анализом различных данных от нашего IoT модуля и разработкой алгоритмов для работы с этими данными.

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

Одно из отличий использования шерингового самоката от личного — наличие определенных правил. Например, вы видели когда-нибудь парочку влюбленных, вдвоем на самокате, исчезающих в закате? Или может наблюдали троих парней, которые в обнимку, преодолев смущенье, едут навстречу новым приключеньям? А может быть вы видели как чей-то отец, словно швец, жнец и на самокате ездец, с одним ребенком подмышкой а с другим на шее смело едет по парковой аллее?
Вызывают ли у вас эти картины гнев и праведное негодование? А может быть вы и сами не прочь прокатиться с другом/подругой на одном самокате? У нас для вас есть две новости.

Во-первых, так нельзя. А во-вторых, добро пожаловать под кат.

На самокат и под кат

Как обработать deep link со сложным path? Вот так

Reading time10 min
Views3.2K

Привет, Хабр! Хоть раз приходилось настраивать deep link? А для такого scheme://domain/path/user/2022?

В Android это сделать непросто. Нет никаких инструментов для обработки сложных path в deep link. По крайней мере, их не было до этого дня…

Узнать, как обработать сложный path

Дерево метрик и управленческие решения на основе данных

Reading time8 min
Views7K

При развитии продуктов часто используют принципы на базе исследования потребностей, определения размеров рынка и гипотез достижения тех или иных стратегических целей. Меня зовут Гришин Александр, я менеджер продуктов и отвечаю за разработку и развитие VMmanager в ISPsystem. Сегодня я расскажу о том, как управлять развитием уже существующего продукта в контексте управления на основе инструмента математического моделирования и визуализации — «дерева метрик».

Представим, что перед нами стоит цель зарабатывать 1 млн долларов в месяц. Хорошая цель. И вот мы собрались с нашей командой — разработка, тестирование, дизайн, аналитик, маркетинг, продажи, техподдержка… Что будем делать, капитан? Куда плывем? Как достигнем цели?

Молодой, но опытный моряк сразу скажет: «Все просто! Нам нужен непрерывный цикл исследований, который мы будем проходить по кругу, раз за разом: гипотеза, действие, измерение, анализ».

Но с какой конкретно гипотезы начать? Что делать, если гипотез очень много? На чем нужно сконцентрировать усилия в первую очередь: маркетинг? Качество? Удовлетворенность? Может, новые фичи, о которых мечтает тимлид? И если так, то какая фича действительно важна, а какую положить в бэклог?

Давайте попробуем использовать дерево метрик для решения этой задачи.

Читать далее

Bottom sheet: Custom transitioning

Reading time10 min
Views9K

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

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

Читать далее

[Python Intermediate] Урок 2. Docker и docker-compose

Reading time11 min
Views37K

К сожалению, в python-мире до сих пор повсеместно применяется неизолированный запуск приложения и его инфраструктуры на личных устройствах. Боюсь, даже опытные специалисты неохотно используют контейнеризацию, хотя в действительности её плюсы неоспоримы.

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

Читать далее

“Да кто это написал?!!”, или решение сложных задач простыми средствами

Reading time5 min
Views13K

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

Интересно!

Почему в «Северсталь Диджитал» сделали свою библиотеку для организации кода в машинном обучении и к чему это привело

Reading time8 min
Views4.5K

Привет! Меня зовут Кирилл Трибунский, я ведущий разработчик отдела архитектуры и разработки “Северсталь Диджитал”. Сегодня я расскажу про нашу библиотеку Typed Blocks, задача которой — снизить порог входа в разработку с машинным обучением и избавить дата-сайентистов от рутины при переносе проектов в продуктив. Библиотека появилась на свет, как водится, через боль команд «Северсталь Диджитал» от решения однотипных задач при выводе кода в продакшен. Она позволяет разбивать код на независимые блоки и вести однотипную разработку вне зависимости от типа используемого транспорта. Статья, как и сама Typed Blocks, будет интересна дата-сайентистам, которые не хотят много кодить. А также программистам, неравнодушным к опциональной статической типизации в Python, которую вовсю использует Typed Blocks. Автор идеи и создатель библиотеки — Даниил Зубакин, за что ему большое спасибо! 

Работаем!

Как работать с атомарными типами данных в C++

Reading time13 min
Views28K

Насколько популярна сегодня тема атомарных данных, настолько же она обширна для одной статьи. Можно подробно останавливаться на разных аспектах атомарности: например, анализировать memory ordering, рассуждать о lock-free алгоритмах с использованием атомиков или исследовать производительность атомиков на разных платформах.

Под катом мы рассмотрим некоторые базовые принципы работы с атомарными типами данных в языке C++. А именно: осветим работу с атомарными данными, основные операции с ними в стандартной библиотеке C++, а также некоторые аспекты использования атомиков с пользовательскими типами данных.

Читать далее

Что читать DevOps-инженеру: 7 полезных книг

Reading time4 min
Views26K

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

Читать далее

Памятка для UX-дизайнера на все случаи жизни: как взяться за задачу и довести ее до конца

Reading time4 min
Views5.7K

Всем привет, меня зовут Александр Никитин, я дизайнер интерфейсов в Pixonic. За время работы я вывел для себя несколько общих советов, которые могут пригодиться другим UI/UX-дизайнерам. В этой статье я расскажу, как берусь за задачу, на какие этапы делю свой рабочий процесс и как справляюсь с возникающими проблемами. 

Читать далее

Где искать баги фаззингом и откуда вообще появился этот метод

Reading time8 min
Views7.3K
Подход фаззинг-тестирования родился еще в 80-х годах прошлого века. В некоторых языках он используется давно и плодотворно — соответственно, уже успел занять свою нишу. Сторонние фаззеры для Go были доступны и ранее, но в Go 1.18 появился стандартный. Мы в «Лаборатории Касперского» уже успели его пощупать и тестируем с его помощью довольно большой самостоятельный сервис.



Меня зовут Владимир Романько, я — Development Team Lead, и именно моя команда фаззит баги на Go. В этой статье я расскажу про историю фаззинга, про то, где и как искать баги, а также как помочь фаззинг-тестам эффективнее находить их в самых неожиданных местах. И покажу этот подход на примере обнаружения SQL-инъекций.
Читать дальше →

Артефакты в CLR: как маскируют современные кибератаки и как SOC может их обнаружить

Reading time16 min
Views6.8K


Сейчас в мире кибербезопасности защищаться дорого, а вот атаковать дешево. Все благодаря «гитхабификации» процессов в offensive-командах. Атакующие создали множество часто переиспользуемых утилит и техник.

Но однозначного преимущества у «красных» нет. Профессиональные Blue Teams давно изучили распространенные методы нападения и легко их вычисляют. Успех кибератаки сегодня во многом зависит от того, как хорошо «красные» смогут замаскировать старую проверенную утилиту, чтобы сбить детект классического защитного средства.

Меня зовут Александр Родченко (gam4er), я — Senior SOC Analyst в «Лаборатории Касперского». Под катом я расскажу, почему атакующие предпочитают использовать старые утилиты, а не писать новые, где (а на самом деле — когда) в CLR появляются артефакты от «старых добрых» утилит, и как ваш SOC может вовремя их задетектить.
Читать дальше →

Секретный прогноз IT-экосистемы (сбывшийся на 82%), чтобы понять к чему готовиться

Reading time11 min
Views48K

Меня зовут Константин Кичинский, я технологический эксперт Kaspersky Product Studio – продуктовой студии в «Лаборатории Касперского». Наша команда занимается поиском и инкубацией свежих идей, стартапов и проектов, и нам важно отслеживать, что происходит на рынке в целом. Я расскажу о прогнозе, который собирал с конца февраля этого года, и который представил на рубеже весны-лета 2022 года на конференции Highload Foundation. У меня смешанные чувства: к моему глубочайшему сожалению, он оказался достаточно верным и сбылся на 82%, но я рад, что модель технологической экосистемы, на которой он базируется, работает.

Читать далее

О хороших практиках построения инфраструктуры ML-моделей

Reading time14 min
Views6.1K
Не все дата-сайентисты умеют хорошо писать код. Их этому не учили. Также их не учили писать веб-сервисы, и они могут забывать, что код должен быть проверен. Дата-сайентисты — не разработчики, от них ждут высоких метрик и решения поставленных задач, а не умения писать модульные тесты и следить за кодом. По крайней мере, им это не прививают. Не говоря уже о том, что они не работают с Kubernetes и не пишут для него Helm charts.

Но нам с командой дата-сайентистов пришлось это все освоить и запустить. Меня зовут Дмитрий Аникин, в «Лаборатории Касперского» я занимаюсь оптимизацией внутренних бизнес-процессов со стороны Data Science. Хочу рассказать, какие проблемы у нас возникали на пути нашей модели — от простого артефакта до самостоятельного сервиса — и как мы их решили, освоив все несвойственные дата-сайентистам процессы. Как справедливо замечено в нашем самопредставлении, именно в таких моментах — весь драйв!



Всю эту историю расскажу на примере живого проекта MDR (Kaspersky Managed Detection and Response).
Читать дальше →

Как мы допилили PyTest для счастья разработчиков, билд-инженеров, тестировщиков и менеджеров

Reading time9 min
Views6.4K
Привет, Хабр! Меня зовут Олег, я работаю в «Лаборатории Касперского» и занимаюсь созданием нашей собственной операционной системы KasperskyOS. Если еще точнее, я — Lead Software Development Engineer in Test в подразделении, которое занимается контролем качества. Задача нашего отдела — проверять качество ядра ОС, ее компонентов и продуктов на их основе. Важную роль здесь играет непосредственно написание и прогон тестов.



В этой статье расскажу о нашей модульной обвязке для PyTest, которая позволяет запускать тесты продуктов на разном железе. Фокус в том, что тесты при этом остаются простыми, а на сдачу мы получаем трассируемость от требований к результатам прогонов тестов, написанных по данным требованиям. В итоге у нас фактически получилась замкнутая система CI/CD с наглядным качеством кода.
Читать дальше →

Украшаем молоток: как автоматизировать разбор проблем в дебаггере

Reading time10 min
Views2.3K
Ошибки и проблемные ситуации, которые возникают при работе высоконагруженных систем, имеют свои особенности и специфику. У нас в «Лаборатории Касперского» накопился целый ряд приемов по анализу таких ошибок. Часть приемов мы выложили в опенсорс в виде библиотеки скриптов для отладчиков, где есть в том числе JS-скрипты для WinDBG и Python-скрипты для GDB. В этой статье на живых примерах будет показано, как их использовать, и как автоматизировать хотя бы часть процесса анализа ошибок и подозрительных ситуаций.

cover
Читать дальше →

Тестировало тестирование тестировщика, или Как мы используем и тестируем распределенную систему тестирования

Reading time10 min
Views5.8K

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

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

Но что, если обновлений насчитывается 250+ типов? А если поддерживаемых ОС — порядка 250? И для тестирования требуется 7500+ тестовых машин? Такой вот типичный хайлоад. Который должен постоянно масштабироваться…

Я — Иван Лауре, менеджер по тестированию в «Лаборатории Касперского». Именно так, как я описал выше, выстроено «выкатывание» у нас. В этой статье я расскажу о центральной части всего процесса — как мы тестируем обновления для более чем 500 уникальных версий ПО, да и саму распределенную систему тестирования. Не сомневаюсь, что наш опыт будет вам полезен.

Читать далее

Тимлид без команды — всё ещё тимлид? Или уже нет?

Reading time11 min
Views7.8K
Тимлид — это, как известно, глава команды, то есть руководитель подразделения. У успешного тимлида есть специфические компетенции, повышенные хард-скилы и множественные софт-скилы. Однако нужно ли, имея весь этот позитивный багаж, идти на роль тимлида? И можно ли со всеми этими качествами нанести пользу компании и себе, не занимая позиции тимлида?



‎Я расскажу, зачем не быть тимлидом, обладая при этом всеми необходимыми компетенциями. Расскажу о методе двух императоров, чтобы описать модель, когда в команде помимо настоящего тимлида есть «как бы» тимлид, человек с тимлидскими навыками. А также, поскольку тимлид не бывает бывшим, отдельно пройдусь по особенностям найма экс-тимлидов на синьорные позиции.
Читать дальше →

За гранью App Store, или Что нового открывает MDM и Supervised для B2B в iOS

Reading time14 min
Views11K
Привет! Меня зовут Денис Кудинов, я iOS-Development team lead в «Лаборатории Касперского». В этой статье расскажу об Mobile Device Management, а также о supervised- и BYOD-режимах — как работает технология и что с ее помощью можно сделать такого, что недоступно обычным приложениям из App Store. Считайте это презентацией возможностей Configuration Profiles, да и Apple MDM в целом :)

image

Статья будет полезна разработчикам B2B-приложений для iOS, которые хотят разбавить свои инструменты новыми фичами, а также для product owner-ов и бэкенд-разработчиков, которые хотят поддержать взаимодействие с мобильными устройствами.
Читать дальше →

Улучшаем производительность android-приложения с помощью Baseline profiles

Reading time7 min
Views11K


Производительность важна для формирования положительного пользовательского опыта использования приложения, поэтому разработчики стремятся ускорить работу своих программ. Для приложений в области безопасности важно время инициализации: пара секунд может стать роковой для пользователя. Поэтому в «Лаборатории Касперского» мы пристально следим за производительностью наших приложений, анализируем влияние новых доработок на ключевые метрики и регулярно улучшаем их.

В большинстве случаев работа над производительностью сводится к оптимизации исходного кода: сперва находят узкие места при помощи метрик, утилит и инструментов, затем разработчик обращается к коду для поиска и устранения проблем. Иногда Google предоставляет дополнительные возможности для оптимизации. Baseline profile стал одной из таких возможностей и был анонсирован совсем недавно. Безусловно, такие доработки очень приятны для разработчиков и полезны для приложений, поэтому мы с огромным интересом знакомимся с новой возможностью и начинаем применять ее к нашему проекту.

В этой статье я хочу поделиться нашим опытом и результатами. Сперва мы коротко вспомним виды компиляции в Android, поймем принцип, на котором основывается данная оптимизация. Затем ознакомимся с пошаговой инструкцией по интеграции в свой проект и посмотрим на полученные результаты. В конце я расскажу о наших дальнейших шагах и планах.
Читать дальше →