Pull to refresh

Technotext

Как заставить LLM работать на вас – разбираемся на примере задачи сопоставления товаров на маркетплейсе

Level of difficultyMedium
Reading time9 min
Views4.6K

Привет, Хабр! На связи команда продуктового матчинга ecom.tech. В этой статье мы расскажем, как используем LLM для задачи сопоставления товаров на маркетплейсе. 

Как перевести задачу с продуктового языка на язык промптов. Что делать, если ни одна LLM не обучается на нужную тебе задачу (fine-tune). Как быть с поддержкой русского языка. Об этих и других аспектах по использованию LLM – читайте ниже.

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

Читать далее

«Не заставляйте меня вводить цифры»: реализуем сложный повтор в мобильном календаре

Level of difficultyEasy
Reading time5 min
Views3.8K

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

Некоторые события в календарной сетке являются регулярными, то есть повторяются с определённой периодичностью. Например, можно отметить в календаре день рождения бабушки, чтобы вовремя её поздравить. Бывают повторы посложнее — скажем, для тренировок в фитнес-клубе, которые проходят каждую среду и пятницу в 19:00. Чтобы не вносить в календарь каждую тренировку по отдельности, есть возможность настроить повторяющееся событие.

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

Читать далее

Как мы создаём редакторы документов. Ядро и его роль в кроссплатформенной разработке

Reading time10 min
Views4K

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

Сегодня мы расскажем об общем технологическом устройстве редакторов МойОфис, с акцентом на их центральный элемент: ядро, написанное на C++. Именно ядро обеспечивает основную функциональность приложений и даёт нам возможность эффективно унифицировать её для разных платформ.

О том, что представляет собой ядро наших редакторов, принципах его работы, преимуществах и специфике, читайте под катом.

Читать далее

Как развивать направление исследований и по каким критериям оценивать их успешность: кейс МойОфис

Level of difficultyMedium
Reading time9 min
Views1.7K

К счастью, сегодня многие ИТ-компании знают, насколько важно развивать направление исследований. UX-исследования помогают понять ожидания пользователей, а значит, позволяют создавать продукты, максимально удовлетворяющие их потребности. Благодаря UX-исследованиям можно выявить проблемы пользовательского опыта на ранних этапах разработки и внести необходимые изменения до запуска. Поэтому необходимость этого процесса вопросов ни у кого не вызывает.

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

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

Читать далее

Проактивность сотрудника: что это за качество и как его развить

Reading time7 min
Views12K

Иногда кажется, что вы с коллегами в команде работаете одинаково, но как будто отношение руководства к вам проявляется по-разному. Что это — корпоративная несправедливость или вселенский заговор? Возможно, ни то, ни другое. Зачастую «более ценный коллега» для компании — человек, который часто предлагает идеи, как улучшить рабочие процессы, самостоятельно решает возникающие проблемы, а не ждёт, пока тимлид с этим разберётся. Таких сотрудников называют проактивными, они готовы брать на себя ответственность и проявлять инициативу, поэтому и отдачи получают в конечном итоге больше.

Под катом мы подробнее раскроем понятие проактивности и расскажем о преимуществах, которые даёт это качество, а ещё о способах его развить — со списком полезных материалов по теме.

Читать далее

Как UX-писателю защищать тексты. 5 советов из практики

Reading time5 min
Views1.3K

Создавать тексты – лишь часть работы UX-писателя. Ему также приходится разбираться в разработке, дизайне и исследованиях, чтобы понимать, где лучше расположить текст на макете, можно ли реализовать задумку в коде и однозначно ли считывается фраза на кнопке. Но и это еще не все. Важно знать, как обосновать свою идею. Мало написать удачный текст – нужно уметь его защитить. А делать это приходится постоянно.

Под катом читайте, как UX-писателю убедительно и профессионально отстаивать идеи и на что опираться в своих аргументах.

Читать далее

Кибербезопасность в стиле Сунь-Цзы: защищаемся от угроз по заветам китайского стратега

Reading time15 min
Views2.9K

«Одержать сто побед в ста битвах – это не вершина воинского искусства. Повергнуть врага без сражения – вот вершина» Сунь Цзы.

Как вы, вероятно, поняли, речь пойдет о защите. Точнее о подготовке к защите ИТ-инфраструктуры. Предсказать, когда и как именно будет атакована ваша система практически невозможно, но если эта атака будет успешной – значит вы проиграли.

А можно прямо сейчас сделать так, чтобы быть готовым к атакам?

Конечно! И здесь китайская мудрость устами Сунь Цзы говорит: «Непобедимость заключена в себе самом...».

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

Под катом собрали для вас полный список методов для оценки текущего уровня защиты компании и перечень технологий, которые помогут сформировать надёжный «цифровой иммунитет». 

Читать далее

SOLID в Go и щепотка паттернов

Level of difficultyMedium
Reading time23 min
Views11K

SOLID-ная статья о принципах SOLID, которую вы можете предложить тем, кто хочет понять эти принципы в контексте языка Go. Или прочитать самостоятельно, если это интересно и вам.

И да, как сказал бы волк из небезызвестного мультика: «SOLID? Шо, опять?»

Читать далее

BDUI: sapere aude или продолжай писать на коленке

Level of difficultyEasy
Reading time13 min
Views1.3K

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

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

Вперед

Адаптируем VoiceOver для людей

Level of difficultyMedium
Reading time14 min
Views3.1K

Меня зовут Женя Тютюев, я iOS-разработчик в компании 2ГИС. Хочу поделиться, как адаптировал наше приложение под VoiceOver: 

— Делюсь историей про сдвиг парадигмы и как перешёл из стадии «делать, потому что Эпл советует» в совершенно новую — «делать для людей». 

— Как разработал новый вид snapshot-тестирования, чтобы ничего не ломалось при добавлении новых неадаптированных элементов. 

— И описал несколько нюансов, которые важно учесть в работе: escape, динамический расчёт доступности, укрупнение элементов.

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

Читать далее

Как я разрушил свои стереотипы об автотестах, или Мой путь от Appium до Kaspresso

Level of difficultyMedium
Reading time8 min
Views2.7K

Всем привет!

Меня зовут Сергей Дударев, я руководитель направления автоматизированных тестов в департаменте мобильной разработки «Лаборатории Касперского». В этой статье хочу рассказать, как я прошел путь от Appium до open-source-фреймворка Kaspresso, с чего начинал, какие делал для себя открытия, как разрушались мои стереотипы и какие по итогу были сделаны выводы.

Читать далее

Flutter Add-to-App: как добавить Flutter в приложение

Level of difficultyMedium
Reading time24 min
Views4.3K

Меня зовут Сергей, я разработчик в Surf Flutter Team. И сегодня мы разберёмся, как пользоваться Flutter Add-to-App, на что обратить внимание и какие проблемы могут возникнуть при интеграции.

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

Вопперы и табы: как мы сделали меню для Burger King

Level of difficultyMedium
Reading time4 min
Views3.6K

В прошлом году у нашей Android-команды на проекте BurgerKing был мощный вызов: сделать редизайн главного меню. Мы решили написать его с нуля. Так было бы проще организовать А/В тест и потом избавиться от старого меню (не волнуйтесь, при создании нового меню ни один воппер не пострадал 😉).

Сегодня мы расскажем о том, как мы делали часть этой фичи — табы и саб-табы.

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

Android-троян Mamont — расследование реального кейса новой финансовой киберугрозы

Level of difficultyEasy
Reading time7 min
Views8.5K

Всем привет! Меня зовут Сережа Куценко, я ведущий эксперт направления защиты ИТ-инфраструктуры в К2 Кибербезопасность. Уже многие видели предупреждения о новом троянце Mamont, с которым злоумышленники нацелились на персданные и денежные средства российских пользователей Android. Недавно нашему системному инженеру Максиму Гусеву «посчастливилось» познакомиться с новой схемой на практике. Незнакомый аккаунт отправил ему в телегу вредоносный .apk. Мой коллега, конечно же, сразу понял, что это мошенники. В итоге он детально изучил возможности вредоносного файла и подготовил текст с подробным описанием своего расследования. Его вы и найдете под катом.

Читать далее

ViewModel + Kotlin Multiplatform. Пробуем нативное решение

Level of difficultyMedium
Reading time9 min
Views11K


Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. Компания Google объявили о своем интересе к Koltin Multiplatform на прошлом Google I/O 2023. Следом был обозначен вектор развития имеющихся решений архитектурных библиотек Jetpack для поддержки KMP. Буквально считанные часы назад компания Google опубликовали ожидаемую многими новинку, а именно ViewModels из библиотеки Lifecycle с поддержкой API Kotlin Multiplatform. И сейчас мы с вами проверим, насколько это удобно, что уже готово, а что нужно доработать.

Для начала освежим, с чем же мы работали до ViewModels из Lifecycle.

Сами по себе ViewModel как часть паттерна MVVM применительно к кросс-платформенным решениям идея не новая. Многие давно использовали собственную реализацию, совмещая также с платформенными архитектурами.
Читать дальше →

Как работать с разрешениями для чтения и записи файлов в Android 13+ на примере React Native

Reading time10 min
Views3.8K

В МойОфис мы разрабатываем iOS- и Android-приложения цифрового рабочего пространства Squadus с помощью кроссплатформенного фреймворка React Native. В функциональность нашего приложения входит загрузка и отправка различных вложений другим пользователям.

В какой-то момент мы получили фидбек, что пользователи с Android не могут отправить медиафайлы и посмотреть превью. Наши доблестные QA-инженеры выяснили, что проблема напрямую связана с тем, какая именно версия Android стоит у пользователей. Сложности начинались с версии 13 — оказалось, что Android добавил новые Permissions для повышения безопасности приложений.

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

Читать далее

Воспроизведение и редактирование видео с AVFoundation. Часть 2. Ассеты продвинутые

Level of difficultyMedium
Reading time21 min
Views651

Вторая статья из цикла об идеях воспроизведения и редаĸтирования медиа с
использованием AVFoundation. В ней разберём тему сложных ассетов.

Читать далее

Jetpack Compose как unbundled-библиотека. Скорость UI vs. Гибкость разработки

Level of difficultyMedium
Reading time13 min
Views4.4K

Jetpack Compose может работать медленнее системы View из-за своей архитектуры и дизайна. Но при этом он гораздо более гибкий.

Дело в том, что Jetpack Compose — это unbundled-библиотека. В этой статье я расскажу о том, что это значит и почему оно влияет на производительность, на примере нашего переезда на Compose.

Мы вместе ужаснёмся тормозам UI, вызванным переездом на Compose, и порадуемся возможности писать Compose-код, не оглядываясь на версию Андроида! Но это всё спойлеры. Давайте расскажу подробнее!

Читать далее

Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument

Level of difficultyMedium
Reading time14 min
Views5.9K

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

Если посмотреть на все запросы со стороны, то появится много вопросов: нужно ли переиспользовать URLSession.shared, почему первые запросы выполняются дольше остальных, как построить мониторинг качества работы сети и т.п.

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

Читать далее

Demeter в опенсорсе: реактивное профилирование Android-приложений

Reading time11 min
Views2.7K

Всем привет, меня зовут Вадим Мезенцев, я Android‑разработчик в команде Яндекс Go. Сегодня я хочу рассказать историю о том, как мы искали подход к профилированию нашего приложения, с какими проблемами столкнулись и как в итоге реализовали библиотеку для измерения производительности.

Наша команда часто сталкивалась с проблемами при поиске «узких мест» в производительности приложения. Мы пробовали различные инструменты профилирования, но все они требовали слишком много времени на сбор метрик, анализ и фильтрацию нужных данных. Чтобы решить эту проблему, мы разработали собственное решение, которое сочетает скорость анализа и простоту поиска проблем. Мы создали библиотеку Demeter, которую легко интегрировать в отладочную версию Android‑приложения. Она позволяет получать отчёты о производительности во время использования приложения и переходов между экранами. Такую сборку можно передать команде тестирования, а затем проанализировать отчёты и изучить изменения.

Читать далее