Как стать автором
Обновить

Компания Лайв Тайпинг временно не ведёт блог на Хабре

Сначала показывать

Apple Music: не пытаясь скрыть боль

Время на прочтение 8 мин
Количество просмотров 21K
Когда я начал развивать направление тестирования в компании Лайв Тайпинг, я не думал, что профдеформация пустит корни так глубоко, что я начну искать баги даже там, где меня не просят. На фоне этого произошло следующее: я не могу работать с приложением Apple Music. Без судорог, разумеется. И без недоумения, как Apple, уважаемая компания, задающая тон в разработке и дизайне, может допускать такие ошибки и не следовать своим же собственным гайдлайнам. Я активно пользуюсь музыкальными сервисами, и сравнение их юзабилити играет далеко не в пользу Apple Music.

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


Всего голосов 17: ↑15 и ↓2 +13
Комментарии 24

Live Typing vs. Evernote: как мы налаяли на слона

Время на прочтение 4 мин
Количество просмотров 6K
Цель этой статьи – убедить всех сомневающихся, что при плотной работе с клиентом можно сдвинуть даже бюрократические структуры и сильно поднять свою самооценку. Речь пойдёт о компании Evernote.

Завязка


В 2015 году Лайв Тайпинг стартовал разработку проекта для наших друзей из Австралии. Проект работал в нише контроля производительности сотрудников. За год работы мы прошли с клиентом несколько стадий изменения концепции и кропотливой работы над каждым новым изменением, которое клиент вносил уже на этапе разработки. Конечная стадия проекта предполагала глубокую интеграцию с сервисами Google Drive, Evernote и Toggl. По сути проект копировал часть функциональности этих сервисов и создавал новую механику.

С Google Drive всё прошло гладко. С Evernote – нет. О том, что пошло не так и как нам это удалось преодолеть, читайте под катом.


Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 3

Инструкция по публикации Android-приложения в Google Play

Время на прочтение 12 мин
Количество просмотров 380K
Вслед за инструкцией по публикации приложения в App Store выкладываем внутренний свод правил Лайв Тайпинг по публикации приложений в Google Play, составленный отделом менеджеров при активном участии тимлида отдела Android-разработки Александра Мирко. Вне зависимости от того, насколько ты крутой и опытный проджект-менеджер, всегда есть шанс забыть что-нибудь. Эта инструкция призвана облегчить вам жизнь.

Итак, что нужно сделать PM`y в ходе публикации:

  1. Создать аккаунт в Google Play Developer Console для заказчика, если у заказчика такового нет, или предложить произвести публикацию с нашего аккаунта.
  2. Оформить privacy policy.
  3. Подготовить маркетинговые материалы (иконка, скриншоты, APK, баннер, текст, проморолик).
  4. Обеспечить сборку наличием сертификата цифровой подписи.
  5. Настроить оплату за пользование приложения.
  6. Отправить сборку в Google Play.

Все подробности — под катом.

UPD от 25.04.2017: добавлены разделы про альфа- и бета-тестирование и поэтапное внедрение, дополнены разделы «Обеспечение сборки наличием цифровой подписи» и «Технические требования к apk-файлу», сделано замечание про ASO и внесены косметические правки.


Читать дальше →
Всего голосов 19: ↑14 и ↓5 +9
Комментарии 15

Инструкция по публикации iOS-приложения в App Store

Время на прочтение 6 мин
Количество просмотров 125K
Однажды менеджеры Лайв Тайпинг подумали: «Как хорошо было бы иметь инструкцию-чеклист, чтобы ничего не забыть перед публикацией приложения в стор. С ней можно перестать носить всё в голове и не объяснять вновь пришедшим менеджерам, что к чему, а просто скинуть гуглдок». Подумали и написали — для себя. Но потом поняли, что нехорошо скрывать полезную информацию от общественности. Поэтому мы надеемся, что инструкция поможет менеджерам всех остальных студий так же, как помогает нам.

Тема этой заметки — публикация приложения в App Store. Чуть позже мы опишем порядок действий для публикации в Google Play.

Что же нужно сделать PM`y в ходе публикации:

  1. создать аккаунт в App Store для заказчика, если у заказчика его нет, или предложить
  2. опубликовать приложение с нашего аккаунта;
  3. подготовить маркетинговые материалы (иконка, скриншоты, текст, видео для предпросмотра приложения);
  4. приложить к сборке сертификат цифровой подписи;
  5. настроить оплату за пользование приложения;
  6. Отправить сборку в App Store.

Идём под кат и разбираем по порядку.


Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Комментарии 14

Краткая история JavaScript. Часть 3

Время на прочтение 7 мин
Количество просмотров 15K
Третья и заключительная часть перевода статьи из блога сервиса Auth0 A Brief History of JavaScript. Ключевые моменты: транспайлеры и ECMAScript 2015, немного о новом процессе подготовки обновлений, чего ждать в будущем и как на него повлияют Asm.js и WebAssembly. Перевод подготовлен отделом фронтенд-разработки компании Лайв Тайпинг.

Краткая история JavaScript. Часть 1
Краткая история JavaScript. Часть 2


Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Комментарии 2

Краткая история JavaScript. Часть 2

Время на прочтение 12 мин
Количество просмотров 18K
Продолжение перевода статьи A Brief History of JavaScript, подготовленный отделом фронтенд-разработки компании Лайв Тайпинг. Первая часть закончилась на том, что в ноябре 1996 года язык JavaScript начали приводить к стандартам ECMA. С этих пор язык проходит по бумагам как ECMAScript, но в обыденной жизни все называют его по-прежнему. Читайте во второй части: версии ECMAScript, появление технологии AJAX, ActionScript и его влияние на Flash и путь к Гармонии.

Краткая история JavaScript. Часть 1


Всего голосов 14: ↑12 и ↓2 +10
Комментарии 6

Краткая история JavaScript. Часть 1

Время на прочтение 11 мин
Количество просмотров 71K
Отдел фронтенд-разработки компании Лайв Тайпинг перевёл для читателей Хабра большой материал о зарождении, развитии и перспективах языка JavaScript, вышедший в блоге сервиса Auth0. Сегодня мы публикуем первую часть перевода. Соперничество Netscape и Mosaic, грёзы об интерактивном вебе, язык программирования для не-программистов, переход от классов к прототипам и что общего между JavaScript и ECMAScript (спойлер: всё).

Краткая история JavaScript. Часть 2
Краткая история JavaScript. Часть 3


Всего голосов 23: ↑21 и ↓2 +19
Комментарии 45

Термины «фронтенд», «клиентская сторона» и «интерфейс» — как употреблять и не облажаться

Время на прочтение 4 мин
Количество просмотров 17K
До работы редактором и контент-маркетологом в компании Лайв Тайпинг я два года занимался гуманитарными текстами: редактировал и писал статьи про моду, музыку, кино, изобразительное искусство, социологию и тому подобное. От меня требовалось не столько корректно донести смысл, сколько добиться яркого образа, создать настроение и подарить читателю эмоцию. Это развязывает руки в отношениях со словами: прежде имевшие точный смысл, они становятся сырьём для аллегорий, метафор и других литературных приёмов.

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

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


Читать дальше →
Всего голосов 24: ↑15 и ↓9 +6
Комментарии 53

CSS для Swift: использование стилей для любых подклассов UIView

Время на прочтение 5 мин
Количество просмотров 8.8K
Оригинальное название статьи: Composable, type-safe UIView styling with Swift functions

Прежде, чем вы познакомитесь с материалом, мне хочется добавить кое-что про абстрагирование стилей от себя. Этот метод может облегчить вашу жизнь при работе на крупных проектах и особенно — в активно меняющемся продукте. Мы в полной силе ощутили это на таком проекте, как ИЛЬ ДЕ БОТЭ, где требования к визуальной составляющей приложения были значительными.

По мере развития в проект вносились существенные UI-изменения, и благодаря выделению стилей нам удалось отделаться малой кровью. В своем подходе мы использовали расширения для стандартных классов (UITextField, UILabel, UITextView, UIFont, UIColor). Нам кажется, что автору статьи удалось поднять данный подход на пару ступеней выше — настолько, что мы, потирая ладошки, бросились использовать его в нашем новом проекте. Надеемся, наш перевод поможет вам оптимизировать время на разработку и сделать проекты лучше.


Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 3

Разработка архитектуры нового приложения для пассажиров Uber

Время на прочтение 14 мин
Количество просмотров 35K
— Здравствуйте. Скажите, сколько стоит сделать приложение типа Uber?

Менеджер по входящим заявкам нашей компании получает звонки с таким содержанием стабильно раз в неделю. Понимать его стоит, как правило, так: либо клиент хочет себе настолько же успешный аналог приложения для связи между пассажиром и водителем, либо Uber для ______ (вписать нужную отрасль).

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

Теперь у нас есть аргумент в защиту нашей позиции. Разработчики Uber опубликовали в блоге компании заметку про опыт переноса приложения с одной архитектуры на новую, собственную. Это очень масштабное мероприятие подтверждает, что Uber — далеко не элементарное приложение. Мы не могли пройти мимо этого материала и не перевести его.

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


Всего голосов 29: ↑26 и ↓3 +23
Комментарии 21

Firebase: прощание с иллюзиями

Время на прочтение 6 мин
Количество просмотров 77K
Маркетинг стал частью мира разработки. По количеству звездочек на GitHub определяют, какое из похожих друг на друга решений круче, а по количеству твитов можно спрогнозировать, какая технология будет развиваться в ближайшие полгода. В таких условиях мы рискуем стать жертвами хайпа, что мы в Лайв Тайпинге и сделали, принимая Firebase за Священный Грааль, способный решить все проблемы разом: сбора статистики, интеграции чатов, выбора базы данных, быстрой разработки MVP. Когда же я столкнулся с этим сервисом в бою, то понял, что моё представление о Firebase расходилось с реальностью настолько сильно, что понимание области применения технологии стало для меня настоящим откровением. Я хочу поделиться этим пониманием и тем, как всё-таки использовать Firebase правильно.


Читать дальше →
Всего голосов 24: ↑15 и ↓9 +6
Комментарии 34

Анимации в iOS для начинающих. Модели, классы от Core Animation, блоки

Время на прочтение 10 мин
Количество просмотров 66K
Думаю, всем разработчикам хочется в той или иной степени украсить свои приложения различными эффектами. Android-отдел компании Live Typing уже выпустил две статьи на эту тему: про тип классов Animator и собственную библиотеку CannyViewAnimation, заменяющую им несовершенный ViewAnimator. Я представляю отдел iOS-разработки нашей компании и тоже хочу высказаться на тему, которая важнее, чем кажется.

Эта статья — введение в мир анимаций для iOS-приложений. Рекомендуется тем, кто никода не работал с анимациями, либо не понимает некоторые моменты в стандартных iOS-анимациях.
Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 3

Про оптимизацию рендеринга — с оптимизмом

Время на прочтение 7 мин
Количество просмотров 22K
У меня есть мечта, и она утопична: я хочу, чтобы мои веб-приложения работали идеально. JQuery, AngularJs, React, Vue.js — все обещают производительность. Но проблема совсем не во фреймворках и не в JavaScript. Проблема в том, как браузер рендерит страницу. А делает он это очень плохо.

Если бы браузер отлично справлялся с рендерингом, то не появился бы такой инструмент, как React Native. Под капотом React Native всё тот же JavaScript, а View нативное, и разница в производительности между нативным приложением и приложением на React Native не будет заметна для рядового пользователя. Другими словами, проблема не в JavaScript.

Если что-то оптимизировать, то как раз рендеринг. Инструментов, которые нам даёт JavaScript и API браузера, недостаточно. Два года я пытаюсь сделать работу своих продуктов плавной и быстрой, но тщетно. Я почти смирился с тем, что веб останется таким навсегда. В этой статье я собрал всё, что успел узнать об оптимизации рендеринга и применить на проектах, над которыми работал, и рассказываю о своих надеждах на ближайшее будущее. Это будущее, в котором я хочу опираться на устойчивый фундамент стандартов и API браузера, а не CSS-хаки и third-party репозитории для оптимизации производительности.


Читать дальше →
Всего голосов 23: ↑21 и ↓2 +19
Комментарии 25

Особенности мультиоконного режима на Android-планшетах

Время на прочтение 7 мин
Количество просмотров 9.2K
Привет! В этой статье я хочу рассказать, какие проблемы могут возникнуть с появлением мультиоконного режима на планшетных версиях приложений. Команда Android-разработки компании Лайв Тайпинг столкнулась с ними, когда адаптировала приложение ИЛЬ ДЕ БОТЭ под планшет. Будьте готовы к тому, что эти же проблемы будут и у вас.

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

Если вы делаете планшетные версии приложений или вы просто неравнодушны к мультиоконному режиму, то добро пожаловать в статью!
Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 3

Что не так с отображением символов валют в iOS

Время на прочтение 2 мин
Количество просмотров 18K
В июне 2016 года в App Store появилось разработанное нами приложение ИЛЬ ДЕ БОТЭ. Клиент попросил нас использовать шрифт Carisma. К системным шрифтам платформы iOS он не относится, что можно понять после попытки найти его здесь. Работая над приложением, я отметил, что символы валют, попадающие в диапазон от U+20B6 (символ турского ливра) до U+20BE (символ грузинского лари) и набранные шрифтом, не входящим в число системных, снижают производительность приложения. Символ рубля — как раз из указанного диапазона.

Найдите отличия:



Капитан выходит на связь
Экран справа лагает. Это заметно по показателю загруженности CPU.

Давайте-ка это обсудим.
Читать дальше →
Всего голосов 36: ↑32 и ↓4 +28
Комментарии 10

На пути к удачному проекту: 11 советов для эффективного общения с клиентом и командой

Время на прочтение 8 мин
Количество просмотров 17K
Здравствуйте! Я работаю проектным менеджером около года. Одни проекты складывались удачно — подводные камни не топили продукт, и теперь он живёт и развивается. Другие сопровождались непрофессиональным поведением и глупыми ошибками.

Однако мне нравится моя работа, и мне не лень покопаться в этих ошибках, чтобы найти их причину. А она, как правило, следующая: кто-то что-то не понял. Разработчик не понял задачу, клиент не понял команду, менеджер не понял смысл проекта, и так далее. Недопонимание ведёт к срыву сроков и бюджетов, к неправильным ожиданиям клиента, к недоумению конечных пользователей и к беспокойному сну менеджера.

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


Читать дальше →
Всего голосов 17: ↑14 и ↓3 +11
Комментарии 7

CannyViewAnimator: переключаем состояния красиво

Время на прочтение 18 мин
Количество просмотров 7.1K

Всем привет! Мне очень нравится работать с анимациями — в каждом Android-приложении, в создании которого я участвую или на которое просто смотрю, я нашёл бы место парочке. В не таком ещё далёком апреле 2016 года с моей записи про тип классов Animation начал жить блог компании Лайв Тайпинг, а позже я выступил с докладом об анимациях на очередном омском IT-субботнике. В этой статье я хочу познакомить вас с нашей библиотекой CannyViewAnimator, а также погрузить вас в процесс её разработки. Она нужна для красивого переключения видимости View. Если вам интересна библиотека, или история её создания, ну или хотя бы интересны проблемы, с которыми я столкнулся, и их решения, то добро пожаловать в статью!


О чём вообще речь


Но сначала представим для наглядности ситуацию, банальную в Android-разработке. У вас есть экран, а на нём — список, который приходит от сервера. Пока прекрасные данные грузятся от прекрасного сервера, вы показываете лоадер; как только данные пришли, вы в них смотрите: если пусто — показываете заглушку, если нет — показываете, собственно, данные.
Как разрешить эту ситуацию на UI? Раньше, мы в Лайв Тайпинг пользовались следующим решением, которое когда-то подсмотрели в U2020, а затем перенесли в наш U2020 MVP — это BetterViewAnimator, View, который наследуется от ViewAnimator. Единственное, но важное отличие BetterViewAnimator от его предка — это умение работать с id ресурсов. Но он не идеален.


Что такое ViewAnimator?

ViewAnimator — это View, который наследуется от FrameLayout и у которого в конкретный момент времени виден только один из его child. Для переключения видимого child есть набор методов.


Важным минусом BetterViewAnimator является умение работать только с устаревшим AnimationFramework. И в этой ситуации приходит на помощь CannyViewAnimator. Он поддерживает работу с Animator и AppCompat Transition.
Ссылка на проект в Github


Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 0

Hermitage — решение ваших проблем с хранением и обработкой изображений

Время на прочтение 3 мин
Количество просмотров 8.5K
Всем привет! Буду краток: в обмен на пять минут вашего времени отдел PHP-разработки компании Лайв Тайпинг расскажет вам о собственном микросервисе для хранения и обработки загружаемых изображений. Он называется Hermitage. Его задача — представлять изображение в разных версиях согласно заранее заданным параметрам. Hermitage будет полезен в ситуациях, когда необходим автономный и масштабируемый сервер для хранения изображений и манипуляций над ними.
hermitage
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 18

Работа NSFetchRequest и NSFetchedResultsController, а также зачем тут продуктовый рынок

Время на прочтение 20 мин
Количество просмотров 22K

Здравствуйте! Эта статья нацелена на разработчиков, у которых есть минимальный навык работы с Core Data Framework. Напомню, что Core Data — это фреймворк для хранения данных на устройстве и взаимодействия с ними. На эту тему есть куча русскоязычных статей на хабре и в сети, поэтому не вижу необходимости повторять их содержание.


Зачастую начинающие особенно Stack Overflow разработчики пугаются использовать Core Data Framework, потому что он кажется им сложным, или используют лишь малую часть его возможностей. В реальности знание базовых функций классов данного фреймворка позволяет разработчику с удобством работать с моделью.


В статье я хочу акцентировать внимание на следующих моментах:


  • мы рассмотрим класс NSFetchRequest, с помощью которого создаются запросы на извлечение данных из модели. Мы изучим его основные свойства и кейсы с их применением;
  • мы подробно разберём функции и работу NSFetchedResultsController по эффективному представлению извлечённых данных с помощью NSFetchRequest на примере UITableView.

image
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 3

Тестирование в рамках SCRUM. Тернии, грабли и успехи

Время на прочтение 10 мин
Количество просмотров 47K
SCRUM — фреймворк управления проектами, в который наша команда попробовала внедрить этап тестирования. В этой статье мы хотим помочь не совершить наших ошибок тем командам, которые только начинают знакомиться со SCRUM. Участники же опытных SCRUM-команд приглашаются в комментарии, чтобы поделиться замечаниями и успехами. А в качестве иллюстраций — беговые дорожки, марафонцы, препятствия. Они тут неспроста. Да и Олимпиада же, в конце концов.


Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 10
1