Как стать автором
Обновить
70.32
red_mad_robot
№1 в разработке цифровых решений для бизнеса
Сначала показывать

Enums + Associated Values = Swift

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

Swift — значит быстрый. Быстрый — значит понятный, простой. Но достичь простоты и понятности непросто: сейчас в Swift скорость компиляции так себе, да и некоторые моменты языка вызывают вопросы. Тем не менее возможность перечислений (enum'ов), про которую я расскажу (associated values — присоединяемые значения) — одна из самых крутых. Она позволяет сократить код, сделать его понятнее и надёжнее.



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

Система сборки Xcode: advanced tutorial

Время на прочтение7 мин
Количество просмотров39K
image
Конфигурация проекта в Xcode выглядит, как пульт управления космическим кораблем. Зачастую люди понимают, как работает система сборки, но путают термины. В этой статье мы пройдемся по структуре проекта, таргетам, настройкам конфигураций и воркспейсам. Поехали!
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии3

Московский Droidcon 2016: взгляд со стороны

Время на прочтение4 мин
Количество просмотров4.6K
Команда наших Android-разработчиков побывала на Droidcon 2016 в Москве и осталась не слишком довольна мероприятием. Мы делимся своим мнением про программу, доклады и общую атмосферу на Droidcon и призываем сообщество к дискуссии. Надеемся, что открытое обсуждение конференции будет способствовать ее улучшению в будущем.


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

Открыта регистрация на первый в России международный Testathon

Время на прочтение1 мин
Количество просмотров5K
image

8 октября в Москве и 9 октября в Санкт-Петербурге пройдет первый в России международный Testathon — хакатон для тестировщиков. Партнер мероприятия — Facebook.

В программе хакатона помимо соревновательной части заявлена Q&A-сессия — на вопросы участников Testathon ответят представители ведущих мировых QA-команд.

Подробности программы и регистрация: testathon.co
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

MVP на стероидах: заставляем робота писать код за вас

Время на прочтение2 мин
Количество просмотров23K
В статье «Moxy — реализация MVP под Android с щепоткой магии» мы рассказывали, как побороть проблему жизненного цикла и разделить код своего Android-проекта на слои. Однако MVP (даже при умной кодогенерации view state в Moxy) заставляет писать огромное количество лишнего кода (создавать связанные друг с другом классы и интерфейсы presenter и view). На самом деле эту работу за вас должен делать робот! :) Настало время еще сильнее уменьшить boilerplate при помощи кастомизации шаблонов Android Studio под Moxy.

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

Как мы написали чат для приложения банка «Открытие»

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


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

iOS 10: Notification Content Extension

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

В этой статье речь пойдет о новой возможности в iOS 10 — Notification Content Extension. Это разновидность расширения, которая позволяет отображать пользователю собственный интерфейс при взаимодействии с уведомлением (remote или local). И отдельно коснемся того, что можно, а что нельзя делать в этом новом расширении — в том числе насколько оно гибко настраивается и конфигурируется.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии2

iOS 10: новое в создании анимаций

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


Не так давно на WWDC 2016 был анонсирован обновленный интерфейс работы с интерактивными анимациями в iOS 10: теперь у разработчиков появился гибкий инструмент их создания, управления и модификации. В этой статье речь пойдет о том, какие произошли изменения и что из себя представляет новое API.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии2

Дорабатываем HTTP-кэширование в Django

Время на прочтение10 мин
Количество просмотров10K
image
В этой заметке речь пойдет о HTTP-кэшировании (перевод) и его использовании совместно с фреймворком Django. Мало кто будет спорить с утверждением о том, что применение HTTP-кэширования — очень правильная и разумная практика разработки веб-приложений. Однако именно в этом функционале Django содержит ряд ошибок и неточностей, которые очень сильно ограничивают практическую пользу от такого подхода. Например, до сих пор актуален баг #15855, заведенный в апреле 2011 года, который может приводить к очень неприятным ошибкам в работе веб-приложения.

Middleware vs. explicit decorator


В Django есть два стандартных способа включения HTTP-кэширования: через активацию UpdateCacheMiddleware/FetchFromCacheMiddleware, либо через декорирование функции представления при помощи декоратора cache_page. У первого способа имеется один существенный недостаток — он включает HTTP-кэширование для всех без исключения представлений (view) проекта, зато второй содержит тот самый баг #15855. Если бы не этот баг, то вариант с использованием cache_page являлся бы более предпочтительным. Плюс, такой вариант хорошо согласуется с важнейшим из постулатов The Zen of Python, что «явное лучше неявного».
Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии7

Как мы обновили и переписали iOS-приложение банка «Открытие»: кейс

Время на прочтение14 мин
Количество просмотров24K
В жизненном цикле мобильного продукта рано или поздно наступает момент, когда нужно радикально обновиться. Потому что за время, прошедшее с запуска, выросли требования бизнеса и ожидания клиентов, изменились возможности платформы и средства разработки — и обновления становится невозможно реализовать путем “косметического ремонта”. В мире мобильных приложений жизненный цикл ПО составляет 2-3 года против 10-15 лет в обычном Enterprise-сегменте. Для нас с командой “Открытие Digital” момент радикального обновления мобильного банка настал в конце прошлого года.


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

Запуск cron внутри Docker-контейнера

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

Так уж вышло, что запуск cron в Docker-контейнере — дело весьма специфическое, если не сказать сложное. В сети полно решений и идей на эту тему. Вот один из самых популярных (и простых) способов запуска:
cron -f

Но такое решение (и большинство других тоже) обладает рядом недостатков, которые сходу обойти достаточно сложно:
  • неудобство просмотра логов (команда docker logs не работает)
  • cron использует свой собственный Environment (переменные окружения, переданные при запуске контейнера, не видимы для cron заданий)
  • невозможно нормально (gracefully) остановить контейнер командой docker stop (в конце концов в контейнер прилетает SIGKILL)
  • контейнер останавливается с ненулевым кодом ошибки
Читать дальше →
Всего голосов 24: ↑19 и ↓5+14
Комментарии85

iMessage в iOS 10: новые возможности для разработчиков

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


На WWDC 2016 Apple представила обновление iMessagе. По презентации Keynote могло показаться, что не произошло ничего интересного: добавлены стикеры, большие эмоджи и анимированные фейерверки. Но на самом деле Apple представила целую новую платформу и открыла Messages для разработчиков. Подробно об этом было рассказано на лекциях iMessage Apps and Stickers, Part 1 и Part2. Для тех же, кто пока не успел их посмотреть, но хоть немного заинтересован, ниже будут рассмотрены новые возможности для разработчиков.

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

Автоматизация развертывания Docker-контейнеров на произвольной инфраструктуре

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


Контейнеризация приложений сегодня является не просто модным трендом. Объективно такой подход позволяет во многом оптимизировать процесс серверной разработки путем унификации поддерживаемых инфраструктур (dev, test, staging, production). Что в итоге приводит к значительному сокращению издержек на протяжении всего цикла жизни серверного приложения.

Хотя большая часть из перечисляемых достоинств Docker является правдой, тех, кто на практике столкнется с контейнерами, может постигнуть легкое разочарование. И так как Docker не является панацеей, а всего лишь входит в список из «лекарственных средств» от рецепта автоматического деплоя, разработчикам приходится осваивать дополнительные технологии, писать дополнительный код и т.д.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии28

Путеводитель по WWDC’16 для мобильных разработчиков

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

Вид из Moscone West


После WWDC на сайте Apple размещается очень много сессий. Чтобы разобраться, что смотреть, а что нет, требуется куча времени. Так как я провел всю неделю на конференции и просмотрел множество топиков, захотелось собрать в одном месте краткий список новинок и видео, которые нужно посмотреть по каждой теме.


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

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

WWDC 16: первые впечатления с места событий

Время на прочтение5 мин
Количество просмотров13K
Месяц назад прошел Google I/O, где самые интересные анонсы касались сервисов работы с данными и умных систем. Сейчас же пришло время Apple: посмотрим, какие новинки приготовила для потребителей и разработчиков компания, не признающая компромиссов. Keynote проходил не в Moscone Center, как обычно, а аж в Bill Graham Auditorium — историческом здании посреди San Francisco Civic Center. Обычно здесь презентуют потребительские новинки компании, но в этот раз позвали разработчиков. Как всегда, первое место в очереди нужно занимать за сутки, а за два часа до презентации можно встать где-то в середине толпы из 5 000 разработчиков.



В этом отчете я ( mc_murphy ) собрал информацию с двух презентаций: Keynote и Platform State of the Union, чтобы рассказать обо всех анонсах первого дня.
Читать дальше →
Всего голосов 28: ↑24 и ↓4+20
Комментарии5

iOS Localization: XLIFF

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


В интернете легко найти статьи по локализации iOS, где описываются все основные этапы. Проблема в том, что чаще нам на глаза попадается вариант ручного заполнения файла *.strings. Это довольно муторный подход и даже небольшая автоматизация в этом нам бы пригодилась. Ещё в iOS 8 Apple добавила возможность частичной автоматизации перевода приложения посредством экспорта и импорта локализованных строк через XLIFF-документ.

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

Свой UX приложения ЖКХ Москвы с чатом и крутилками

Время на прочтение7 мин
Количество просмотров12K
image

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

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

  • если решение интуитивно понятно
  • если решение упрощает процесс взаимодействия
  • если решение реализуемо


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

Не так давно вышло приложение ЖКХ Москвы, призванное облегчить жизнь граждан. Его описание гласит:

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


Интригующе. Рассмотрим под микроскопом
Всего голосов 22: ↑19 и ↓3+16
Комментарии17

Generics в Kotlin vs. Generics в JAVA: cходства, различия, особенности

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

Эта статья про Generics в Kotlin — особенности их использования, сходства и различия с Generics в Java.

В двух словах про Generics
Если коротко, то Generics — это способ сказать, что класс, интерфейс или метод будут работать не с каким-то конкретным типом, а просто с каким-то. С каким именно будет определено из контекста. Например:

public interface List<E> extends Collection<E> {
	//...
}

Заранее неизвестно, объекты какого класса будут содержаться в списке, но это определится при его использовании:

List<String> list = new ArrayList<>();

Теперь это не просто список, а список строк. Generics помогают обеспечить типобезопасность: в List можно попытаться положить любой объект, но в List<String> — только String или один из его потомков.

Я разделю рассказ про Generics на две части: собственно Generics и использование Wildcards. Пока речь не заходит про Wildcards, использование Generics в Kotlin мало чем отличается от Java.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии7

Лучший друг киномана: переделываем приложение CBS под Android

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

Любите ли вы сериалы, так как люблю их я? У многих из нас есть друг, который подсаживает на долгоиграющие истории. Лично я не успеваю следить за бесконечным многообразием новинок кинорынка, но с удовольствием прожгу часок-другой у экрана, жаря овощные котлетки после напряженной дизайн-недели. Так о чем я? Каждому хотелось бы иметь верного друга, сообщающего про все киносвежести и эпизодики, чтобы забыть наконец про долгие и изнурительные поиски захватывающего фильма для вечера пятницы. Но что если его нет?
There is an app for that!
Всего голосов 11: ↑8 и ↓3+5
Комментарии8

Боль и анимация таблиц для iOS. Фреймворк Awesome Table Animation Calculator

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

Представим себе экран обычного мобильного приложения с уже заполненным списком ячеек. С сервера приходит другой список. Нужно посчитать разницу между ними (что добавилось/удалилось) и проанимировать UICollectionView.


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


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

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

Информация

Сайт
redmadrobot.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия