rambler-ios / team Goto Github PK
View Code? Open in Web Editor NEWsweet home
sweet home
Интересно было бы послушать рассказ о ReSwift, Redux, Flux
11 месяцев назад @CognitiveDisson в своей статье про CoreSpotlight пообещал, что в скором времени мы выпустим компонент, архитектуру которого он обрисовал. Потом Вадик перешел на ЖЖ, времени стало в разы меньше - и вот недавно мы об этом снова вспомнили.
Сейчас я встраиваю интеграцию с CoreSpotlight в Рамблер.Конференции. После этого мы посмотрим на получившуюся систему и я вынесу ее в отдельный компонент.
Нужно привести ссылки на полезные материалы по теме, добавить готовые шаблоны и дополнительную информацию, специфичную для Rambler.iOS.
Пока что я перечислил только наши Open Source проекты. Круто будет рассказать и о том, чем мы занимаемся большую часть времени - пара предложений о каждом проекте, ключевые технологии используемые в нем.
Danger - очень крутая тулза для атоматизации кучи разных проверок при мердже веток. Есть сильное ощущение, что он может помочь и нам - нужно детальнее исследовать вопрос, проверить наличие работающей интеграции с GitLab и определить список интересных нам фич.
Многие разработчики любят спорить о преимуществах и недостатках того или иного подхода к реализации верхнего слоя мобильного приложения - MVC, MVVM, VIPER. При этом зачастую уделяется недостаточно времени продумыванию логики работы с данными. Роли компонентов для получения и обновления моделей получаются непродуманными, появляется дублирование кода, сильная связность, размытая ответственность. Как следствие, усложняется понимание и последующее расширение данного слоя.
Я хочу рассказать про подход, который давно используется в server-side разработке, но позже был адаптирован к реалиям мобильных приложений. Service Oriented Architecture задает строгий каркас в части обработки данных, фиксируя ответственность компонентов. Такой подход оказывается крайне полезным как в части поддержки и рефакторинга, так и при последующем расширении приложения.
По-моему уже пора )
Планирую выступить с докладом о Typhoon, подготовленным к MobiusConf.
Typhoon - очень мощный инструмент в руках разработчика. Помимо своей основной роли - реализации всех видов Dependency Injection (property, constructor, method), он также выступает в роли декларативного языка архитектуры приложения. Для того, чтобы полностью проанализировать взаимосвязи между всеми элементами и понять особенности их жизненного цикла, достаточно посмотреть на слой TyphoonAssembly. Именно эта особенность как всех IoC контейнеров, так и Typhoon в частности, остается за пределами внимания обычных разработчиков. Цель моего выступления - показать разработчикам, зачем в их приложении нужен дополнительный слой Assembly, чтобы каждый мог осознанно принять решение, встраивать ему Typhoon или нет. Определяющим моментом в этом вопросе должны выступать не детали синтаксиса и особенности внутреннего устройства библиотеки, а структурные вопросы. Лучший способ их раскрыть - показать слушателям методы работы с Typhoon во время разработки абстрактного приложения. Я планирую затронуть следующие возможности фреймворка:
Все практические вопросы будут подкреплены определенным теоретическим базисом - к примеру, DI, IoC, декоратор. После выступления разработчики должны четко понимать, какие их текущие проблемы может решить Typhoon, как приступиться к этим задачам и какие его возможности им стоит использовать.
На конференции AppsConf @serkrapiv выступает с докладом Чистая архитектура с VIPER.
Тот же доклад, что и на CodeFest, с незначительными правками.
Пока что доклады у нас делаются по такому принципу: все шерстят в поисках чего-то интересного в своих проектах или делятся инфой по какой-то сторонней теме. Можно попробовать спрашивать народ о темах, о которых они хотели бы узнать, а затем отдавать кому-нибудь эту тему для подготовки доклада.
Когда стоит применять, когда лучше воздержаться.
На конференции MobiusConf @idva выступает с докладом Типографика в iOS.
Нужно будет устроить прослушивание внутри команды.
@juyka занимается исследованием различных способов отлавливания и обработки ошибок в рамках VIPER-модуля. В результате планируется подготовить доклад для внутренних встреч/Rambler.iOS.
В последних спринтах на проекте "Рамблер/Почта" я занимался, в том числе, улучшением сетевого слоя приложения. Для этого был выбран подход "Compound operations" или "Составные операции", предложенный Apple на WWDC (Advanced NSOperations) и развитый ребятами из проекта Livejournal.
На основе их опыта и собственного видения я создал компонент для удобной интеграции данного подхода в проект. В своём рассказе я затрону как тему конкретной реализации компонента (архитектурной и технической части), так и тему внедрения компонента в реальный проект (на примере Рамблер/Почты или Рамблер/Конференций).
Доклад запланирован на 17 июня.
Мы с @Sapozhnik расскажем о непростой истории приложения, сложностях и интересных решениях при разработке, а также о планах на будущее.
Предварительно планируем на 10 июня.
На конфе MobileOptimized в Минске, которую я недавно посетил, один парень делал доклад про fastlane. И там он упомянул, что тулза deliver, входящая в fastlane, умеет автоматизировать процесс обновления метаданных в сторе. Больше всего интересуют скриншоты и release notes. Стоит покопать в этом направлении и прикрутить эту возможность нам.
Слайды презентации можно найти тут: https://speakerdeck.com/chipp/fastlane-beta-ili-pochiemu-ia-stal-pit-bol-shie-kofie
8 октября выступаю на TK Conf с докладом на тему "Как мы делали ЖЖ".
Я бы соврал, если бы сказал, что работа над новым приложением LiveJournal для iOS проходила абсолютно гладко - такого просто не бывает. Несколько используемых API, часть из которых дорабатывалась в процессе, непростой дизайн, необычные продуктовые решения, сложная политика кэширования - все это делало проект не просто сложным, а и очень интересным с точки зрения разработки.
В своем выступлении я хочу рассказать несколько историй о том, как налаженные процессы разработки и применение принятых в iOS команде Rambler&Co архитектурных подходов помогли нам в каких-то случаях пережить столкновение с граблями, а в каких-то - и вовсе не наступать на них. Я затрону такие темы, как code review и его роль в поддержании концептуальной целостности проекта, continuous delivery, организацию гибкого сетевого слоя, unidirectional data flow, и, конечно же, VIPER.
И небольшой спойлер: мы все-таки его выпустили, и оно крутое!
Валидация ответа сервера с помощью json-схем
Сейчас у нас есть список книг/статей/видео, который мы раздаем всем новичкам в команде и тем, кто не прошел собеседование. Цель - направить человека на изучение требуемых для работы у нас областей, обеспечив его проверенным материалом.
Список составлялся нами с @Hastewave на скорую руку, и его явно можно сильно профильтровать и дополнить. Ваши предложения - в комментарии.
Список тем, которые мы сейчас затрагиваем на собеседованиях я привел в этом разделе. Сейчас я планирую подготовить опросник с перечислением всех тем, обязательных задач и вопросов - он поможет нам объективнее оценивать кандидатов, выставляя им баллы за каждый из разделов.
Так вот, давайте обсудим, какие темы помимо упомянутых стоит затрагивать.
На конференции MobiusConf @DevAlloy выступает с докладом Feature toggle в iOS.
Пора бы обновить описания наших вакансий. Вбрасывайте ваши предложения.
Задачи:
Требования:
Что мы предлагаем:
Задачи:
Требования:
Что мы предлагаем:
Есть проблема разных стилей на одном проекте. Хочется, чтобы была специальная тулза, которая автоматически приводила к одному стилю. Да, в xcode есть что-то для этого, но оно довольно слабенькое.
Поресерчил: есть плагин ClangFormat. Там можно забить свой конфиг и применять к своему проекту.
Плагин: https://github.com/travisjeffery/ClangFormat-Xcode
Поиграться с параметрами: http://clangformat.com/
Он довольно мощный, предлагаю создать общий конфиг, при помощи которого можно было бы причесать все проекты под один стиль.
@complexityclass готовит рассказ о проблемах, с которыми он столкнулся при работе со swift и способах их решения.
Предварительная дата выступления: 20 мая.
На конференции AppsConf @idva выступает с докладом Типографика в iOS.
Предварительно договорились на 30 июня 18:00 в Лектории.
Распределение тем:
Андрей Панов из Avito на разных конференциях рассказывает о концепции Application Coordinator'a. Эта штука, в которой централизуется процесс переходов между модулями приложения. Она позволяет уйти от того, что модулям необходимо знать друг о друге: они сообщают о желании перейти на другой модуль и передать в него данные этому самому координатору, а тот уже знает на какой экран и как надо переходить.
Вброс на подумать: может ли такая концепция пригодиться нам в VIPER для каких-нибудь случаев?
Слайды тут: https://speakerdeck.com/andreypanov/introducing-application-coordinators
Код тут: https://github.com/AndreyPanov/ApplicationCoordinator
На конференции AppsConf @Brain89 выступает с докладом Как не выстрелить себе в ногу из конечного автомата.
Тот же доклад, что и на Dump, с незначительными правками.
Есть идея рассказать про безопасность, пока в голове такие направления докладов:
Что из этого могло бы быть интересно? Добавляйте свои предложения в комменты.
Мне на днях скинули форму аттестации нашего тестировщика. В ней все сделано неплохо: по каждому пункту можно проставить рейтинг от 1 до 5, под каждым пунктом или группой пунктов можно оставить комментарии. Надо бы нашу форму оценки подтянуть.
Ссылка (только не отсылайте результат): http://goo.gl/forms/ol066GJnbgrEnuYt1
Есть желание рассмотреть следующие аспекты
Появилось желание выступить на одной из будущих конференций с темой под рабочим названием "Чистые тесты".
Последние полтора года на каждой из наших встреч мы рассказываем о том, почему продуманная и чистая архитектура мобильных приложений - это нужно и важно. За попытками спроектировать серебряную пулю мы очень часто забываем - или просто не уделяем достаточно внимания менее заметной части нашего кода - тестам.
Я не буду рассказывать о том, зачем нужны unit-тесты. Обещаю не показывать схему этапов TDD и не разыгрывать сценки red-green-refactor. В рамках этого доклада примем за факт то, что тесты нужны и мы их пишем.
Я хочу рассказать о том, почему не стоит обделять вниманием unit-тесты, как подходить к их проектированию и осуществлять постепенный рефакторинг. Выступление, как обычно, подкреплено зарядом личной боли и опыта от поддержки базы в 3.000 unit-тестов на одном проекте и 1.000 на другом.
На конференции MobiusConf выступаю с докладом Typhoon Explained.
Первое прослушивание пройдет в команде в рамках еженедельных встреч (Issue #1).
На WWDC 15 Apple представил новый подход к deep linking под названием Universal links. Рассказ про опыт внедрения Universal links на Афише.
Основные тезисы:
Всем привет!
Мне хотелось бы рассказать про диплинкинг, поделиться опытом и знаниями в формате дружеской встречи.
Branch является международным лидером в этой области, SDK которого интегрирован в такие приложения как Twitter, Pinterest, Airbnb, Swarm и другие. Мы собрали очень много граблей и поэтому с удовольствием делимся опытом:)
Мне бы хотелось рассказать про то, какие существуют способы перетаскивания пользователей из мобильного веба в приложение и почему это важно. Покажу, что получается, а что не работает у крупных игроков.
Краткий обзор о том, что такое диплинки и deffered deeplink.
Кейсы перемещения пользователей Web -> App.
Case studies от крупных приложений.
Идеи использования диплинков на примере приложений Rambler.
Если вам эта тема интересна или есть какая-нибудь текущая проблема (техническая или продуктовая), напишите, пожалуйста, чтобы я мог подробнее рассказать о том, как ее решить.
21-22 числа проходил тренинг для спикеров. Впечатления о самого тренинга более чем хорошее, степень полезности - средняя. Готов сделать краткий пересказ с основными моментами.
По результатам выступления на Rambler.iOS 6 планирую подготовить статью на Хабр.
Тема организации лент с разными типами контента актуальна для многих наших приложений: Почты, Чемпионата, Афиши, да и многих других. В LiveJournal мы используем довольно интересное и легкорасширяемое решение. По результатам прошлого доклада Вадима, да и вообще, было несколько просьб раскрыть эту тему и рассказать о ней подробнее.
Короче, команда ЖЖ (@CognitiveDisson @juyka @constZinovyev ), поделитесь на одной из встреч знаниями об архитектурном устройстве наших лент, его плюсах и минусах.
Есть почти готовая реализация полноэкранной галереи. Она выполнена на основе NYT. Ее необходимо отрефакторить и вынести в pod, чтобы в дальнейшем использовать на всех проектах. Также необходимо поговорить с дизайнерами, собрать все пожелания, возможно удастся привести галерею к общему виду. Это значительно упростит поддержку и добавление подобной галереи в новых проектах.
О компоненте Ponsomizer из Чемпионата мы рассказывали уже два раза. Его уже используют за пределами проекта, поэтому его неплохо бы тоже вынести отдельно.
В большинстве наших приложений требуется отображать меню разработчика. Сейчас проблема везде решается по-разному: кто-то зашивается на флажки, изменяемые в зависимости от release-схемы, кто-то просит сервер вместе с профилем возвращать права пользователя. Нужно разработать единое решение, которое будет решать следующие задачи:
Дополнительные хотелки:
Вариант решения, которы по-быстрому накидали:
Заводим у себя веб-приложение, которое умеет принимать имя устройства и отвечать, показывать ему меню или нет. Под капотом - маленькая база/csv со списком наших устройств.
Довольно часто в процессе ревью кода возникают моменты, когда ты пишешь человеку "мы делаем вот так вот", а потом понимаешь, что это знание находится только в головах у некоторых членах команды и не зафиксировано в гайдлайнах.
Пока не очень понимаю как сходу сформулировать недостающие в гайдлайнах моменты. Наверное нужно заносить их в некоторый todo-список при проведении ревью кода, время от времени ревьюить этот список и обновлять гайдлайны в соответствии с ним.
На недавней еженедельной встрече мы рассказывали о разработке Чемпионата и упомянули TableViewAnimator, позволяющий упростить работу с анимированным изменением таблиц. Нет причин не вынести его в отдельный pod, полезный для всех.
Планируется рассказать об электронной коммерции в целом и о ее применении в мобильной мире в частности.
Предварительно, доклад состоит из двух частей: общей, о теории электронной коммерции и интернет-эквайринга, и частной, о проведении платежей с помощью iOS-устройства.
Докладчики: @Brain89 и @GooKellas.
Описание доклада от @GooKellas:
В своем докладе я расскажу, что такое электронная коммерция и интернет-эквайринг в частности, а также почему это актуально. Будут рассмотрены основные участники и этапы обработки платежной транзакции, выполненной с помощью банковской карты в сети. Также коснемся вопросов защиты от мошенничества с данными банковских карт при помощи технологии 3-D Secure и узнаем, зачем проходить сертификацию PCI DSS. В конце поговорим про возможность осуществления оплаты банковскими картами в мобильных приложениях.
Доклад рассчитан на новичков, которые только начинают знакомиться с электронными платежами.
Выступление планируется на Rambler.iOS 7
В результате нужен чеклист, в котором будут отмечены основные моменты при подготовке к конференции.
К одной из ближайших пятничных встреч я хочу подготовить небольшой рассказ о тайм менеджменте - что это такое, зачем это вообще нужно для разработчика и какие основные подходы встречаются.
Хаотичный набор тезисов:
Это необходимо для корректной работы CI на проектах, которые используют фичи ios10.
У нас написано уже несколько SDK, и вопрос с генерацией документации становится всё более актуальным.
Расскажу какие системы для создание документации существуют. Чем они хороши. Какую мы выбрали. Зачем нужна сгенерированная документация, и где её можно использовать.
И расскажу, как у нас настроена генерация доков через jenkins + fastlane.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.