До роботи редактором і контент-маркетологом в компанії Лайв Тайпинг я два роки займався гуманітарними текстами: редагував і писав статті про моду, музику, кіно, образотворче мистецтво, соціологію тощо. Від мене вимагалося не стільки коректно донести сенс, скільки домогтися яскравого образу, створити настрій і подарувати читачеві емоцію. Це розв'язує руки у відносинах зі словами: перш мали точний сенс, вони стають сировиною для алегорій, метафор та інших літературних прийомів.

Потрапивши в технічну середу, я зрозумів, що словесні прикрашення заважають функції. Разом з трендом инфостиля це змусило мене переглянути підхід до роботи з текстами. У тому числі настав час згадати, що у кожного терміна є своє значення.

При роботі над кейсом проекту Designet я зловив себе на тому, що вважаю терміни «фронтенд», «клієнтська сторона» і «інтерфейс» синонімами. Щоб розставити всі крапки над i і більше їх не плутати, я написав цю пам'ятку. Сподіваюся, що вона допоможе не тільки мені, але і колегам — редакторам, копірайтерам, технічним журналістам, маркетологам, менеджерам проектів і всім, хто не має прямого відношення до програмування.



Читати далі →

Оригінальна назва статті: Composable, type-safe UIView styling with Swift functions

Перш, ніж ви познайомитеся з матеріалом, мені хочеться додати дещо про абстрагування стилів від себе. Цей метод може полегшити ваше життя при роботі на великих проектах і особливо — в активно мінливому продукті. Ми в повній силі відчули це на такому проекті, як ІЛЬ ДЕ БОТЭ, де вимоги до візуальної складової програми були значними.

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



Читати далі →

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

— Здрастуйте. Скажіть, скільки коштує зробити додаток типу Über?

Менеджер по вхідним заявками нашої компанії отримує дзвінки з таким змістом стабільно раз в тиждень. Розуміти його варто, як правило, так: або клієнт хоче собі настільки ж успішний аналог програми для зв'язку між пасажиром і водієм, або Über для ______ (вписати потрібну галузь).

У такі моменти ми відповідаємо, що Uber — це технічно дуже складний проект з мільйонними інвестиціями і сотнями тисяч людиногодин розробки в місяць, і що робити його клон не дуже доцільно.

Тепер у нас є аргумент у захист нашої позиції. Розробники Über опублікували в блозі компанії замітку про досвід перенесення програми з однієї архітектури на нову, власну. Це дуже масштабний захід підтверджує, що Uber — далеко не елементарне додаток. Ми не могли пройти повз цього матеріалу і не перевести його.

Стаття може бути корисною не тільки мобільним розробникам, але і менеджерам, які стикаються з такою ситуацією.



Читати далі →

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

Маркетинг став частиною світу розробки. За кількістю зірочок на GitHub визначають, яке з схожих один на одного рішень крутіше, а за кількістю твітів можна спрогнозувати, яка технологія буде розвиватися в найближчі півроку. В таких умовах ми ризикуємо стати жертвами хайпи. Я — став: моє уявлення про Firebase розходилося з реальністю настільки сильно, що розуміння області застосування технології стало для мене справжнім одкровенням. Я хочу поділитися цим розумінням і тим, як все-таки використовувати Firebase правильно.



Читати далі →

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

У мене є мрія, і вона утопічна: я хочу, щоб мої веб-додатки працювали ідеально. JQuery, AngularJs, React, Vue.js — всі обіцяють продуктивність. Але проблема зовсім не у фреймворках і не в JavaScript. Проблема в тому, як браузер рендерить сторінку. А робить він це дуже погано.

Якби браузер відмінно справлявся з рендерингом, то не з'явився б такий інструмент, як React Native. Під капотом React Native все той же JavaScript, а View нативне, і різниця в продуктивності між нативною додатком додатком на React Native не буде помітна для рядового користувача. Іншими словами, проблема не в JavaScript.

Якщо щось оптимізувати, то як раз рендеринг. Інструментів, які нам дає JavaScript API браузера, недостатньо. Два роки я намагаюся зробити роботу своїх продуктів плавної й швидкої, але марно. Я майже змирився з тим, що веб залишиться таким назавжди. У цій статті я зібрав усе, що встиг дізнатися про оптимізацію рендеринга і застосувати на проектах, над якими працював, і розповідаю про своїх надіях на найближче майбутнє. Це майбутнє, в якому я хочу спиратися на стійкий фундамент стандартів і API браузера, а не CSS-хакі і third-party репозиторії для оптимізації продуктивності.



Читати далі →

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

Привіт! У цій статті я хочу розповісти, які проблеми можуть виникнути з появою мультиоконного режиму на планшетних версій додатків. Команда Android-розробки компанії Лайв Тайпинг зіткнулася з ними, коли адаптувала додаток ІЛЬ ДЕ БОТЭ під планшет. Будьте готові до того, що ці ж проблеми будуть і у вас.

Як ви всі знаєте, в кінці серпня 2016 року вийшла Android 7.0, і однієї з її основних особливостей є підтримка мультиоконности. Це прекрасна функція, яка піднімає зручність Android на новий рівень. Всі користувачі будуть на сьомому небі від щастя, але те, що є щастям для користувача, може обернутися болем для розробника. На жаль, з мультиоконностью на планшетах саме так і сталося. І саме на планшетах — на телефонах з нею як раз все відмінно, заздалегідь кажу.

Якщо ви робите планшетні версії додатків або ви просто небайдужі до мультиоконному режиму, то ласкаво просимо в статтю!

Читати далі →

Що не так з відображенням символів валют в iOS

У червні 2016 року в App Store з'явився додаток розроблене нами ІЛЬ ДЕ БОТЭ. Клієнт попросив нас використовувати шрифт Carisma. До системних шрифтів платформи iOS він не відноситься, що можна зрозуміти після спроби знайти його тут. Працюючи над додатком, я зазначив, що символи валют, що потрапляють в діапазон від U+20B6 (символ турського ливра) до U+20BE (символ грузинського ларі) і набрані шрифтом, що не входять до числа системних, знижують продуктивність програми. Символ рубля — як раз з зазначеного діапазону.

Знайдіть відмінності:



Капітан виходить на зв'язокЕкран праворуч лагает. Це помітно за показником завантаженості CPU.

Давайте це обговоримо.

Читати далі →

На шляху до вдалого проекту: 11 порад для ефективного спілкування з клієнтом і командою

Доброго дня! Я працюю проектним менеджером близько року. Одні проекти складалися вдало — підводні камені не топили продукт, і тепер він живе і розвивається. Інші супроводжувалися непрофесійною поведінкою і безглуздими помилками.

Однак мені подобається моя робота, і мені не лінь покопатися в цих помилках, щоб знайти їх причину. А вона, як правило, наступна: хто щось не зрозумів. Розробник не зрозумів завдання, клієнт не зрозумів команду, менеджер не зрозумів сенс проекту, і так далі. Непорозуміння веде до зриву строків та бюджетів, до неправильних очікуванням клієнта, на подив кінцевих користувачів і неспокійного сну менеджера.

Джерело непорозуміння — відсутність ефективної комунікації. Коли її немає, то не можна побудувати ефективну систему призначення і виконання завдань. Своїми порадами я хочу допомогти вам це виправити.



Читати далі →

CannyViewAnimator: перемикаємо стану красиво

Всім привіт! Мені дуже подобається працювати з анімаціями — в кожному Android-додатку, у створенні якого я беру участь або на яке просто дивлюся, я знайшов би місце парочці. У ще не такому далекому квітні 2016 року з моєї запису про тип класів Animation почав жити блозі компанії Лайв Тайпинг, а пізніше я виступив з доповіддю про анімація на черговому омському IT-суботнику. У цій статті я хочу познайомити вас з нашою бібліотекою CannyViewAnimator, а також занурити вас в процес її розробки. Вона потрібна для красивого перемикання видимості View. Якщо вам цікава бібліотека, або історія її створення, ну або хоча б цікаві проблеми, з якими я зіткнувся, і їх рішення, то ласкаво просимо в статтю!
Про що взагалі мова
Але спочатку наведемо для наочності ситуацію, банальну в Android-розробці. У вас є екран, а на ньому — список, який приходить від сервера. Поки прекрасні дані вантажаться від прекрасного сервера, ви показуєте лоадер; як тільки дані прийшли, ви в них дивіться: якщо порожньо — показуєте заглушку, якщо немає — показуєте, власне, дані.
Як вирішити цю ситуацію на UI? Раніше, ми в Лайв Тайпинг користувалися таким рішенням, яке коли-то підгледіли в U2020, а потім перенесли в наш U2020 MVPBetterViewAnimator, View, який успадковується від ViewAnimator. Єдине, але важлива відмінність BetterViewAnimator від його предка — це вміння працювати з id ресурсів. Але він не ідеальний.
Що таке ViewAnimator?ViewAnimator — це View, який успадковується від FrameLayout і у якого в конкретний момент часу видно тільки один з його child. Для перемикання видимого child є набір методів.
Важливим мінусом BetterViewAnimator є вміння працювати тільки з застарілим AnimationFramework. І в цій ситуації приходить на допомогу CannyViewAnimator. Він підтримує роботу з Animator і AppCompat Transition.
Посилання на проект Github
Читати далі →

Hermitage — рішення ваших проблем зі зберіганням і обробкою зображень

Всім привіт! Буду коротким: в обмін на п'ять хвилин вашого часу відділ PHP-розробки компанії Лайв Тайпинг розповість вам про власний микросервисе для зберігання і обробки завантажуваних зображень. Він називається Hermitage. Його завдання — представляти зображення в різних версіях згідно з заздалегідь заданими параметрами. Hermitage буде корисний у ситуаціях, коли необхідний автономний і масштабований сервер для зберігання зображень і маніпуляцій над ними.
hermitage

Читати далі →