Pull to refresh
-12
0
Светлана Прохорова @SvetaDT

Отвечаю за PR в Doubletapp

Send message

Делай тот PR, который ты умеешь: Григорий Петров о продажах на конференциях

Level of difficultyEasy
Reading time11 min
Views1.2K

Привет, Хабр! В апреле 2024 года в Екатеринбурге прошла масштабная IT-конференция DUMP. Мы, команда Doubletapp, решили не упускать возможности и сняли целых 8 подкастов с топовыми спикерами конференции. Один из них – Григорий Петров, DevRel в компании Evrone. Григорий много выступает, пишет статьи, а еще ведет подкаст про Python и пишет учебник для разработчиков. Поговорили с ним о том, как выступления и написание технических статей помогают продажам, как он применяет нейрофизиологию в работе и о том, сколько часов в день нужно писать код, чтобы не потерять навыка.

Из текста вы узнаете

Как выступления на конференциях влияют на маркетинг
Помогают ли статьи в продажах
Как сохранить экспертность в нескольких областях
Как Григорий применяет нейрофизиологию в работе
Должны ли менеджеры проектов быть программистами
Как выглядит идеальная команда продаж

Читать далее
Total votes 10: ↑9 and ↓1+16
Comments3

Руководители аутсорс-компаний – о «грязной» работе, конкуренции с корпорациями за сотрудников и обучении джунов

Level of difficultyEasy
Reading time15 min
Views3.2K

Один из круглых столов конференции DUMP-2024, которая прошла в этом году в Екатеринбурге, посвятили аутсорсингу в IT. Руководители аутсорс-агентств обсудили, почему к ним приходят крупные компании (спойлер – в том числе для того, чтобы делегировать «грязную» работу), что делать, если твоего сотрудника после проекта пытаются схантить и могут ли сервисные компании конкурировать за кадры с крупными корпорациями, или их предназначение – быть площадкой для карьерного прыжка джунов.

Темы беседы

Почему корпорации отдают работу внешней команде
Где найти специалистов
Аутсорс-компания – правая рука СТО или их проблема?
Про «грязную» работу для аутсорса
Что делать, если заказчик хантит сотрудников
Растить сотрудников для корпораций или конкурировать за лучшие кадры с ними?

Читать далее
Total votes 7: ↑3 and ↓4+1
Comments1

Место QA в тестировании продукта на безопасность

Level of difficultyEasy
Reading time9 min
Views2.3K

Привет, меня зовут Дмитрий Крылатков, работаю QA-инженером в компании Doubletapp. Я всегда был заинтересован темой тестирования на безопасность, участвую в bug-bounty программах, а также поднимаю осведомленность о существующих уязвимостях   среди команд тестирования и разработки. В статье расскажу, как QA может сэкономить ресурсы компании и обеспечить проверку на наличие основных уязвимостей, на что обращать внимание и почему это полезно как для специалиста, так и для бизнеса.

Что такое уязвимость и чем она отличается от бага?
Уязвимости: начнем с простого
Софт для поиска уязвимостей
Где применимы знания о поиске уязвимостей?

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments5

Храним краску с умом: как организовать ресурсы в многомодульном проекте

Level of difficultyEasy
Reading time9 min
Views4.3K

Привет, меня зовут Никита Чернобрисов, и я делаю Android-приложения в Doubletapp. Полтора года назад мы начали работать над приложением «Яндекс Путешествий» — само приложение доступно в Play Store, а про кейс подробно можно прочитать тут. При старте у нас возникло много архитектурных холиваров, в частности о том, как хранить ресурсы и пользоваться ими. И, как это и заведено, первые решения оказались неудачными. Я расскажу вам, дорогие читатели, удары каких граблей оставили больше следов и к чему мы пришли.

Для кого эта статья?
Начинаем
Договор с дизайнерами
Дизайн-система (пригодная для дальнейшего автоэкспорта)
Первый вариант, который не стоит повторять
Дробим наш монолит
Figma автоэкспорт
Подготовка в Figma
Подключаем FigmaExport в проект
Подводим итоги

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

Они заставят вас ненавидеть: знакомство с VAST и VPAID, или Как интегрировать рекламу в web-видеоплеер

Level of difficultyMedium
Reading time26 min
Views6.7K

Доброго вам времени суток! Меня зовут Валерия, я фронтенд-разработчик из компании Doubletapp. Год своей жизни отдала на разработку видеоплеера с рекламными интеграциями. На старте была только спека, дока, единственная статья на Хабре, поясняющая за рекламу, и огроменное желание заказчика накрутить оную на видеоплеер. Пришло время и вас поближе познакомить с рекламой.

Статья подойдет тем, кто хочет разобраться в специфике работы VAST и VPAID, настроить кастомное управление рекламой, разместить видеорекламу отдельным блоком на сайте (out-stream) или разбить видеоролик рекламными интеграциями (in-stream).

  • Инструментарий, или Основные ингредиенты
  • Подробнее о VAST
  • Запускаем рекламный блок на странице (out-stream)
 • Подключаем IMA SDK
  • Инициализируем
  • Обрабатываем ошибки
  • Обрабатываем событие ADS_MANAGER_LOADED
  • Запрашиваем и воспроизводим рекламу
  • Продвинутое управление (въезжаем в обработку событий рекламы)
  • Локализация
  • Адаптивность
  • Обработка событий
Разбиваем видеоролик рекламными паузами (in-stream, VMAP)
  • Подробнее о VMAP
  • Подключаем VMAP к видеоплееру
  • Ручное управление стартом рекламы
  • Особенности VPAID

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments4

Два по цене одного: snapshot-тесты на основе SwiftUI Preview

Level of difficultyMedium
Reading time7 min
Views1.9K

Привет, Хабр! Меня зовут Дима, я iOS-разработчик в компании Doubletapp, и в прошлом году я вместе со своими коллегами и командой Яндекса участвовал в разработке приложения Яндекс Путешествия. В этом проекте мы выбрали фреймворком пользовательского интерфейса SwiftUI (подробнее о том, как мы его выбрали и что из этого получилось, рассказала наша iOS-Head Полина Скалкина здесь).

На начальном этапе реализации приложения мы постоянно вносили изменения во множество вью. Это были и обновления, вызванные переработкой дизайна, и исправление багов, и оптимизации, которые мы делали по мере роста наших знаний о SwiftUI. Нам хотелось контролировать все эти изменения, чтобы еще на этапе разработки отлавливать вызванные ими ошибки верстки. Поэтому наша команда приняла решение использовать snapshot-тесты.

Что такое snapshot-тесты?
Объединение snapshot-тестов и превью
Итог

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments4

Вы кто такие, я вас не знаю, или Как мы делаем JWT-аутентификацию

Level of difficultyMedium
Reading time11 min
Views54K

Привет! Меня зовут Данил, я backend-разработчик в Doubletapp. Почти во всех наших проектах есть пользователи, которые могут войти в систему. А значит, нам почти всегда нужна авторизация. Мы используем авторизацию, построенную на JSON Web Token. Она отлично сочетает в себе простоту реализации и безопасность для приложений.

В интернете есть много разных материалов с объяснением, что такое JWT и как им пользоваться. Но большинство примеров ограничиваются выдачей токена для пользователя. В этой статье я хочу рассказать не только о том, что такое JWT, но и как можно реализовать работу с access и refresh токенами и решить сопутствующие проблемы. Будет немного теории и много практики. Присаживайтесь поудобнее, мы начинаем.

Путеводитель:

Что такое JSON Web Token?
Использование и реализация
Простая реализация JWT
Access и refresh tokens
Как отозвать токены
Доступ с нескольких устройств
Удаление старых данных
Резюмируем

Читать далее
Total votes 18: ↑16 and ↓2+17
Comments45

Как общаться с базой знаний на естественном языке с помощью LLM и объективно оценить работу полученной системы

Level of difficultyEasy
Reading time11 min
Views6.1K

Привет, Хабр! Меня зовут Даниил, работаю в ML-отделе Doubletapp. В статье расскажу про особенности применения больших языковых моделей для оптимизации бизнес-процессов.

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

Тем не менее LLM все еще имеют ряд проблем, одной из которых является галлюцинирование (придумывание фактов). Сложно винить модель за то, что она не знает, как устроен тот или иной процесс/продукт в вашей компании, и пытается придумать вразумительный ответ. Поэтому нужно подсказать LLM фактическую информацию, а она уже даст нам понятную человеку персонализированную реплику.

Такая система ответов на вопросы с использованием фактической информации называется RAG (Retrieval Augmented Generation).

Данная статья состоит из двух частей:

мы рассмотрим построение RAG-системы на основе библиотеки langchain;

объективно оценим работоспособность созданной системы, используя синтетические данные на русском языке с помощью фреймворка RAGAs.

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

Большое обсуждение грейдов и собеседований с руководителями из Яндекса, Okko, Сбера и Doubletapp

Level of difficultyEasy
Reading time49 min
Views11K

В этом году на конференции DUMP в Екатеринбурге прошел круглый стол, на котором руководители из IT-компаний обсуждали пул вопросов, связанных с приемом на работу: как специалисту самому определить свой грейд, как проводить собеседования, с кем приходится работать и стоит ли менять стек, если ты сеньор, а также онбординг внутри компании. 

Мы уже публиковали новость с видео об этом событии, желающие могли посмотреть видеозапись беседы, но читатели рассердились на нас за отсутствие текста. Исправляемся и рассказываем печатным словом, о чем говорили участники. 

Читать далее
Total votes 18: ↑5 and ↓13-4
Comments3

MacBook Pro 2015 для учебы в 2023-м?

Level of difficultyEasy
Reading time8 min
Views19K

Всем привет! Меня зовут Андрей Жаров, я iOS-разработчик в компании Doubletapp.

Лучшей недорогой рабочей машинкой выступает сейчас MacBook Air на М1. Сочетание его цены и качества даже в 2023-м остается оптимальным из-за мощного процессора, низкого нагрева, долгого времени и скорости работы. Но что делать тем, кто только-только начинает свой путь в iOS-разработке и не может его себе позволить?

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

Бюджетный MacBook
Исторический анализ линейки
Процессор
Оперативная память
Накопитель
Графика
Поддержка и возможные проблемы
Подводя итоги
Что дальше?

Читать далее
Total votes 7: ↑5 and ↓2+3
Comments24

CI/CD для iOS-проектов: на железе или в облаке? Что лучше, по версии Doubletapp

Reading time6 min
Views5K

Привет, Хабр! Меня зовут Ярослав Фоменко, я iOS-разработчик в компании Даблтап. После того, как мы с ребятами из iOS-отдела настроили наш CI/CD на Mac mini, начали задумываться о его масштабировании и инкапсулировании и пошли ресерчить то, как это можно сделать. Первым на ум пришел Docker, но инфы оказалось довольно мало как о нем, так и о других возможных способах. В этой статье мы рассмотрим найденные нами возможные решения по развертыванию Gitlab CI/CD на железе и в облаке.

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

Как настроить Gitlab CI/CD в связке с Fastlane для iOS-проектов на Mac mini

Reading time8 min
Views7.3K

Всем привет! Меня зовут Ярослав Фоменко, я iOS-разработчик в компании Даблтап. Мы с моим коллегой по отделу с конца мая работаем над внедрением, улучшением и масштабированием CI/CD на наших проектах. В этой статье мы хотим поделиться гайдом по подготовке проекта в Xcode и настройке раннеров, скриптов и конфигов, а также расскажем, как нам помогает CI/CD.

О том, как и почему мы пришли к решению использовать Mac mini для CI/CD, можно почитать здесь.

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

Как настроить Gitlab CI/CD для Android и Firebase App Distribution для доставки сборок

Reading time9 min
Views11K

Привет, меня зовут Антон Рябых, я технический директор компании Doubletapp, и я расскажу, как реализовать сборку Android-приложений на Gitlab CI/CD с последующей загрузкой в Firebase App Distribution для удобной доставки.

Это позволит нам:

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

Данная статья будет полезна как людям с опытом в CI/CD, так и Android-разработчикам — новичкам в CI/CD и DevOps теме в целом. Поэтому, кроме непосредственного описания настройки Gitlab CI и Firebase App Distribution, мы также поговорим о том, что такое CI/CD, и о том, что такое Docker. Статья подразумевает, что ваш репозиторий находится в Gitlab. В качестве вычислительных мощностей, собирающих сборки, будет использован сам Gitlab, дающий 2000 бесплатных минут для сборок в месяц (большее количество минут можно докупать, но для небольшой команды бесплатного лимита может быть достаточно. Также можно легко настроить запуск сборок на своих мощностях).

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

Парсинг ответов на BLE-команды на языке Swift на примере GoPro

Reading time11 min
Views2.2K

Привет, Хабр! Меня зовут Полина, работаю в Doubletapp iOS‑разработчиком и сегодня хочу рассказать о нашем опыте работы с API GoPro, а конкретно с парсингом ответов на команды BLE, которые описаны в этом API.

Содержание:

Принцип работы с BLE-устройствами
Сервисы и характеристики BLE-устройств
Процесс отправки команд и получения ответов через BLE
Простые ответы
Комплексные ответы
Формирование пакетов
Парсинг комплексных ответов
Общий алгоритм работы с BLE-ответом 

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

Прости нас, Джон Коннор, или Как мы научили нейросеть точечно распознавать звуки выстрелов

Level of difficultyMedium
Reading time8 min
Views3.6K

Привет, Хабр! Меня зовут Антон Рябых, работаю в Doubletapp и в этой статье расскажу про технические детали применения машинного обучения в проекте HitFactor. 

Что такое hit factor? На соревнованиях по практической стрельбе спортсмены быстро перемещаются, меняют магазин и стреляют по разным, в том числе и подвижным мишеням. Hit factor — это результат соревнования, то есть количество набранных очков, деленное на время прохождения. 

Нам рассказали об этом чемпионы мира по практической стрельбе Алена Карелина и Роман Халитов, которым нужно было мобильное приложение для помощи в тренировках. Двигаться экономнее, стрелять быстрее — анализ записи тренировки поможет понять, как сократить время на прохождение упражнения и повысить эффективность.

В проекте требовалось очень точно определять время начала выстрела и время стартового сигнала. Каких-то готовых решений на момент разработки продукта (2019 год) не было. В статье расскажу:

как решали задачу без машинного обучения
какие были подходы с машинным обучением;
как размечали данные
как использовали промежуточную модель для помощи с разметкой;
как деплоили конечную модель на iOS-девайсы.

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments12

Руки на руль: Bus Factor следит за тобой

Level of difficultyEasy
Reading time3 min
Views1.8K

Привет, Хабр, меня зовут Антон Рябых, работаю в Doubletapp. Расскажу вам о том, как мы придумали сервис, контролирующий поведение водителей общественного транспорта с помощью алгоритмов машинного обучения и компьютерного зрения.

К нам обратилась компания «Термотех», которая занимается городскими перевозками. Организатору движения нужно было автоматически понимать, что:

водитель общественного транспорта не пользуется телефоном во время движения;
камера, установленная в салоне водителя, снимает с верного ракурса, не отвернута в сторону;
от камеры в целом идет сигнал, она не повреждена, не завешена и не загрязнена.

Ранее задача решалась силами сотрудников «Термотеха» — они вручную просматривали все записи с камер видеонаблюдения, установленных в кабинах водителей. Такой подход занимал огромное количество времени и все равно приводил к ошибкам, основанным на человеческом факторе.

Как мы решали эту задачу?
Как это работает?

Читать далее
Total votes 6: ↑3 and ↓30
Comments4

Как мы делали свой шрифт

Level of difficultyEasy
Reading time9 min
Views5.3K

Я Павел Лаптев, графический дизайнер Даблтап. В этой статье речь не о том, как нормальные люди делают шрифты. Я расскажу, как мы сами делали свой собственный шрифт и зачем это нам понадобилось.

Если вдруг у вас появится желание повторить этот путь — для этого нужно:

1. Понять, для чего вам нужен свой шрифт (и нужен ли).
2. Определиться с характером шрифта.
3. Долго и много рисовать буквы.
4. Упороться с кернингом.
5. Обратиться к специалисту-шрифтовику.
6. Повторить подход.
7. Да, и хинтинг, конечно.

Дальше больше
Total votes 22: ↑19 and ↓3+19
Comments13

«Внешняя» навигация в многомодульном проекте на Kotlin

Level of difficultyMedium
Reading time8 min
Views8.3K

Привет, Хабр! Я Дмитрий Воронов из Doubletapp, в этой статье расскажу, как мы делали навигацию в Яндекс Путешествиях. С навигацией в Android, кажется, давно все ясно: бери Jetpack Navigation, читай официальную документацию и следуй ей — и все получится. Если рекомендованная библиотека не подходит — берешь Fragment Manager, прописываешь собственную реализацию и идешь хвастаться коллегам. Если писать свою реализацию нет желания, а официальная библиотека не соответствует модным веяниям — дополняешь свое резюме умением работать с Cicerone. Если твои вкусы специфичны — почему бы не удивить людей неожиданным добавлением в проект Alligator?

В одном коротком абзаце удалось обозначить сразу 4 варианта реализации навигации и, казалось бы, в чем вопрос? Каждый выбирает для своего проекта подходящий ему вариант. Все так, но ровно до того момента, пока не возникает необходимость «поделиться» частью приложения — интегрироваться в другое приложение, и там, как оказывается, другая реализация навигации. И здесь начинается: «Что будем делать? Попробуем написать мост? А может, лучше перепишем навигацию?» 

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

Что такое «внешняя» навигация?
Как это делается?
Реализуем модуль навигации
Примеры реализации

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

Вас много, а я одна: обзорная система мониторинга на Prometheus и Grafana

Level of difficultyMedium
Reading time11 min
Views15K

Привет, Хабр! Меня зовут Сева, я работаю backend-разработчиком в Doubletapp, а также занимаюсь некоторыми devops-задачами. В этой статье я расскажу о мониторинге наших backend-приложений: сборе метрик, их визуализации и отправке уведомлений. Покажу примеры конфигов с подробными комментами и дам ссылки на гитхаб.

Содержание:
Конфигурация Prometheus
Сбор метрик
Дашборды для визуализации метрик в реальном времени
Настройка уведомлений

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

CI/CD for iOS-projects: device or cloud? What’s better, Doubletapp’s take

Level of difficultyMedium
Reading time6 min
Views1.3K

Hey, Habr! I’m Yaroslav Fomenko, Doubletapp iOS-developer. After our IOS department deployed our CI/CD on a Mac Mini, we got an idea of scaling and encapsulating it. So we started researching ways to do it. First we thought of Docker, but there was neither enough info about it nor any other possible ways. In this article, we’ll look at all possible solutions we found for the deployment of Gitlab CI/CD on a device and in the cloud.

Read more
Total votes 2: ↑1 and ↓10
Comments1
1

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

Content Director, PR-manager