Обновить

Технотекст

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

Время на прочтение13 мин
Охват и читатели62K

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

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

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

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

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

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

Время на прочтение10 мин
Охват и читатели4K

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

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

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

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

Время на прочтение8 мин
Охват и читатели9.4K

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

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

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

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

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

Читать далее

Bottom sheet: Custom transitioning

Время на прочтение10 мин
Охват и читатели11K

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

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

Читать далее

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

Время на прочтение11 мин
Охват и читатели44K

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

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

Читать далее

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

Время на прочтение5 мин
Охват и читатели16K

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

Интересно!

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

Время на прочтение8 мин
Охват и читатели5.6K

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

Работаем!

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

Время на прочтение13 мин
Охват и читатели35K

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

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

Читать далее

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

Время на прочтение4 мин
Охват и читатели28K

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

Читать далее

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

Время на прочтение4 мин
Охват и читатели6.2K

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

Читать далее

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

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



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

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

Время на прочтение16 мин
Охват и читатели7.4K


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

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

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

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

Время на прочтение11 мин
Охват и читатели49K

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

Читать далее

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

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

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



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

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

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



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

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

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

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

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

Время на прочтение10 мин
Охват и читатели6.2K

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

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

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

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

Читать далее

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

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



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

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

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

image

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

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

Время на прочтение7 мин
Охват и читатели14K


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

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

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