Михаил Рахманов рассказывает о паттерне Promise и его использовании в iOS разработке.
Краткие тезисы:
- Что такое promises?
- Использование promises в iOS разработке (существующие библиотеки и подходы)
- Реализация promises библиотекой PromiseKit (основные методы, цепочки promises, обработка ошибок)
- Какие задачи можно решить с помощью promises, а какие - нельзя
- Использование promises на примере приложения: драм-машины с возможностью сохранять аудио-дорожки
- Подведение итогов: преимущества и недостатки.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Видео: https://www.youtube.com/watch?v=LziQMf26zGg
Мы каждый день добавляем новую функциональность в наши приложения по запросам бизнеса, часто забывая о её инкапсуляции. Станислав Цыганов расскажет про подход «Feature toggle», который позволяет легко и удобно управлять набором «фич» и их конфигураций.
RDSDataSource: Автогенерация документации для SDKRAMBLER&Co
Помимо различных приложений в нашей команде разрабатывается несколько SDK, и вопрос с генерацией документации становится всё более актуальным. Михаил рассказал какие системы для создание документации существуют, чем они хороши и какую из них мы выбрали для своих нужд. Кроме этого освещаются вопросы исползования такой документации и ее автоматического деплоя через Jenkins и fastlane.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...SlideShare
This document provides a summary of the analytics available through SlideShare for monitoring the performance of presentations. It outlines the key metrics that can be viewed such as total views, actions, and traffic sources over different time periods. The analytics help users identify topics and presentation styles that resonate best with audiences based on view and engagement numbers. They also allow users to calculate important metrics like view-to-contact conversion rates. Regular review of the analytics insights helps users improve future presentations and marketing strategies.
Dnepr iOS Club #2
Speaker - Геннадий Книжник, iOS developer at Agilie
Тема: "Преимущества и недостатки динамической и статической локализации iOS проекта"
Тезисы:
- суть динамической локализации;
- процесс (один из способов) реализации динамической локализации;
- преимущества и недостатки динамической локализации;
- скрипты для работы со статической локализацией: скрипт облегчающий работу со статической локализацией, скрипт, позволяющий автоматизировать процесс создания строк для локализации;
- интеграция скрипта в проект;
- замена стандартного инструмента NSLocalizedString;
- преимущества и недостатки вышеперечисленных инструментов для статической локализации;
Уровень: junior и выше.
Михаил Рахманов рассказывает о паттерне Promise и его использовании в iOS разработке.
Краткие тезисы:
- Что такое promises?
- Использование promises в iOS разработке (существующие библиотеки и подходы)
- Реализация promises библиотекой PromiseKit (основные методы, цепочки promises, обработка ошибок)
- Какие задачи можно решить с помощью promises, а какие - нельзя
- Использование promises на примере приложения: драм-машины с возможностью сохранять аудио-дорожки
- Подведение итогов: преимущества и недостатки.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Видео: https://www.youtube.com/watch?v=LziQMf26zGg
Мы каждый день добавляем новую функциональность в наши приложения по запросам бизнеса, часто забывая о её инкапсуляции. Станислав Цыганов расскажет про подход «Feature toggle», который позволяет легко и удобно управлять набором «фич» и их конфигураций.
RDSDataSource: Автогенерация документации для SDKRAMBLER&Co
Помимо различных приложений в нашей команде разрабатывается несколько SDK, и вопрос с генерацией документации становится всё более актуальным. Михаил рассказал какие системы для создание документации существуют, чем они хороши и какую из них мы выбрали для своих нужд. Кроме этого освещаются вопросы исползования такой документации и ее автоматического деплоя через Jenkins и fastlane.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...SlideShare
This document provides a summary of the analytics available through SlideShare for monitoring the performance of presentations. It outlines the key metrics that can be viewed such as total views, actions, and traffic sources over different time periods. The analytics help users identify topics and presentation styles that resonate best with audiences based on view and engagement numbers. They also allow users to calculate important metrics like view-to-contact conversion rates. Regular review of the analytics insights helps users improve future presentations and marketing strategies.
Dnepr iOS Club #2
Speaker - Геннадий Книжник, iOS developer at Agilie
Тема: "Преимущества и недостатки динамической и статической локализации iOS проекта"
Тезисы:
- суть динамической локализации;
- процесс (один из способов) реализации динамической локализации;
- преимущества и недостатки динамической локализации;
- скрипты для работы со статической локализацией: скрипт облегчающий работу со статической локализацией, скрипт, позволяющий автоматизировать процесс создания строк для локализации;
- интеграция скрипта в проект;
- замена стандартного инструмента NSLocalizedString;
- преимущества и недостатки вышеперечисленных инструментов для статической локализации;
Уровень: junior и выше.
Компилируемые в реальном времени DSL для С++corehard_by
В последнее время в промышленной разработке особую популярность обретают предметно-ориентированные языки программирования (Domain-Specific Lanugages, DSL). Они драматически упрощают разработку и дают возможность “программировать” не только инжеренерам, но и пользователям прикладных программ. В своем докладе я расскажу об опыте использования DSL применительно к С++, причем упор будет сделан на производительность кода DSL, и его мгновенную “встраиваемость” в запущенную программу путем компиляции DSL-кода в нативный код с помощью инструментария LLVM.
В последнее время в промышленной разработке особую популярность обретают предметно-ориентированные языки программирования (Domain-Specific Lanugages, DSL). Они драматически упрощают разработку и дают возможность “программировать” не только инжеренерам, но и пользователям прикладных программ. В своем докладе я расскажу об опыте использования DSL применительно к С++, причем упор будет сделан на производительность кода DSL, и его мгновенную “встраиваемость” в запущенную программу путем компиляции DSL-кода в нативный код с помощью инструментария LLVM.
Как мы готовим MySQL / Николай Королёв (Badoo)Ontico
* Исторический экскурс, введение понятия спота, принцип функционального деления баз на группы (споты / не споты), шардирование как способ масштабирования спотов.
* Возникновение второго датацентра на другом континенте, создание самодельной репликации, позволяющей работать по схеме много -> много, краткая схема (структура спотов, схема репликации, служебные базы - очереди, репликация, мониторинг), плюсы и минусы этого решения, инструменты диагностики.
* Альтеры шадрированых спотов - первый вариант утилиты для этой задачи: схема его работы и возникшие проблемы; вторая версия утилиты - улучшения, а также, что осталось неисправленным.
* “Температура” спота, трудности её определения, проблемы, возникающие из-за его “перегрева”, наш способ решения и возникновение проекта “кладбище”.
* Деплой и около - почему мы используем MySQL в chroot, как мы его собираем и как деплоим.
* Бэкапы спотовых данных - первоначальное решение (ленточные хранилища), работа над ошибками, текущая схема.
* Query sampling: проект Minba.
Highload2016
"Как мы готовим MySQL", Николай Королев
* Исторический экскурс, введение понятия спота, принцип функционального деления баз на группы (споты / не споты), шардирование как способ масштабирования спотов.
* Возникновение второго датацентра на другом континенте, создание самодельной репликации, позволяющей работать по схеме много -> много, краткая схема (структура спотов, схема репликации, служебные базы - очереди, репликация, мониторинг), плюсы и минусы этого решения, инструменты диагностики.
* Альтеры шадрированых спотов - первый вариант утилиты для этой задачи: схема его работы и возникшие проблемы; вторая версия утилиты - улучшения, а также, что осталось неисправленным.
* “Температура” спота, трудности её определения, проблемы, возникающие из-за его “перегрева”, наш способ решения и возникновение проекта “кладбище”.
* Деплой и около - почему мы используем MySQL в chroot, как мы его собираем и как деплоим.
* Бэкапы спотовых данных - первоначальное решение (ленточные хранилища), работа над ошибками, текущая схема.
* Query sampling: проект Minba.
В своем докладе Денис Батвинкин кратко рассказал об истории LLVM и его внутренней архитектуре.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Rambler.iOS #9: Анализируй это! (Сергей Крапивенский).
Доклад посвящён наиболее популярным статическим анализаторам кода для iOS: как ими пользоваться, какие проблемы они решают, как внедрить их в привычный цикл разработки, как писать для них свои правила. Также рассмотрен опыт интеграции статического анализа и CI.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Rambler.iOS #9: Нужны ли бэкенд-разработчики, когда есть Swift?RAMBLER&Co
Rambler.iOS #9: Нужны ли бэкенд-разработчики, когда есть Swift? (Самвел Меджлумян)
Любой iOS-команде в повседневной практике требуется тот или иной вспомогательный инструментарий, оптимизирующий рутинные процессы. В рамках доклада рассмотрен Swift как инструмент для реализации этих задач, проведено сравнение имеющихся фреймворков между собой, а наиболее подходящий для указанных задач рассмотрен в сравнении с популярными серверными платформами.
Также затронуты вопросы микросервисной архитектуры, проблемы и best practices в бэкенд-разработке.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Rambler.iOS #9: Life with out of memory (Денис Батвинкин).
Out of memory error – ошибка, о которой не стоит забывать. В докладе Денис разбирает, что такое out of memory error и почему стоит уделить этой проблеме больше внимания. Отдельное внимание уделено причинам OOM и инструментам, которые помогут ее отследить. Также на примере iOS-приложения "Livejournal" рассмотрена практика борьба с этой ошибкой.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Бениамин Саркисян рассказал про устройство и принципы работы статического анализатора кода OCLint, а также показал, как можно написать свои собственные правила для него.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Екатерина Тришина рассмотрела плюсы и минусы различных видов диаграмм на примере кейса проектирования сложного блока функционала в проекте Афиша.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Артур Протько рассказал о различных технологиях семейства App Thinning: bitcode, slicing, on-demand resources. Помимо теории приводятся практические примеры и статистика, полученная в проекте Рамблер/почта.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
This document provides an overview of Dip, a dependency injection framework for Swift. It discusses key Dip concepts like dependency containers, component registration, and resolution. Key points include:
1. Modules are represented as dependency containers that manage their own components.
2. All components are registered in their containers with their dependencies.
3. The dependency graph is resolved by obtaining fully-initialized components from their containers.
Михаил Головко рассказал о принципах устройства и основных возможностях YapDatabase.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Компилируемые в реальном времени DSL для С++corehard_by
В последнее время в промышленной разработке особую популярность обретают предметно-ориентированные языки программирования (Domain-Specific Lanugages, DSL). Они драматически упрощают разработку и дают возможность “программировать” не только инжеренерам, но и пользователям прикладных программ. В своем докладе я расскажу об опыте использования DSL применительно к С++, причем упор будет сделан на производительность кода DSL, и его мгновенную “встраиваемость” в запущенную программу путем компиляции DSL-кода в нативный код с помощью инструментария LLVM.
В последнее время в промышленной разработке особую популярность обретают предметно-ориентированные языки программирования (Domain-Specific Lanugages, DSL). Они драматически упрощают разработку и дают возможность “программировать” не только инжеренерам, но и пользователям прикладных программ. В своем докладе я расскажу об опыте использования DSL применительно к С++, причем упор будет сделан на производительность кода DSL, и его мгновенную “встраиваемость” в запущенную программу путем компиляции DSL-кода в нативный код с помощью инструментария LLVM.
Как мы готовим MySQL / Николай Королёв (Badoo)Ontico
* Исторический экскурс, введение понятия спота, принцип функционального деления баз на группы (споты / не споты), шардирование как способ масштабирования спотов.
* Возникновение второго датацентра на другом континенте, создание самодельной репликации, позволяющей работать по схеме много -> много, краткая схема (структура спотов, схема репликации, служебные базы - очереди, репликация, мониторинг), плюсы и минусы этого решения, инструменты диагностики.
* Альтеры шадрированых спотов - первый вариант утилиты для этой задачи: схема его работы и возникшие проблемы; вторая версия утилиты - улучшения, а также, что осталось неисправленным.
* “Температура” спота, трудности её определения, проблемы, возникающие из-за его “перегрева”, наш способ решения и возникновение проекта “кладбище”.
* Деплой и около - почему мы используем MySQL в chroot, как мы его собираем и как деплоим.
* Бэкапы спотовых данных - первоначальное решение (ленточные хранилища), работа над ошибками, текущая схема.
* Query sampling: проект Minba.
Highload2016
"Как мы готовим MySQL", Николай Королев
* Исторический экскурс, введение понятия спота, принцип функционального деления баз на группы (споты / не споты), шардирование как способ масштабирования спотов.
* Возникновение второго датацентра на другом континенте, создание самодельной репликации, позволяющей работать по схеме много -> много, краткая схема (структура спотов, схема репликации, служебные базы - очереди, репликация, мониторинг), плюсы и минусы этого решения, инструменты диагностики.
* Альтеры шадрированых спотов - первый вариант утилиты для этой задачи: схема его работы и возникшие проблемы; вторая версия утилиты - улучшения, а также, что осталось неисправленным.
* “Температура” спота, трудности её определения, проблемы, возникающие из-за его “перегрева”, наш способ решения и возникновение проекта “кладбище”.
* Деплой и около - почему мы используем MySQL в chroot, как мы его собираем и как деплоим.
* Бэкапы спотовых данных - первоначальное решение (ленточные хранилища), работа над ошибками, текущая схема.
* Query sampling: проект Minba.
В своем докладе Денис Батвинкин кратко рассказал об истории LLVM и его внутренней архитектуре.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Rambler.iOS #9: Анализируй это! (Сергей Крапивенский).
Доклад посвящён наиболее популярным статическим анализаторам кода для iOS: как ими пользоваться, какие проблемы они решают, как внедрить их в привычный цикл разработки, как писать для них свои правила. Также рассмотрен опыт интеграции статического анализа и CI.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Rambler.iOS #9: Нужны ли бэкенд-разработчики, когда есть Swift?RAMBLER&Co
Rambler.iOS #9: Нужны ли бэкенд-разработчики, когда есть Swift? (Самвел Меджлумян)
Любой iOS-команде в повседневной практике требуется тот или иной вспомогательный инструментарий, оптимизирующий рутинные процессы. В рамках доклада рассмотрен Swift как инструмент для реализации этих задач, проведено сравнение имеющихся фреймворков между собой, а наиболее подходящий для указанных задач рассмотрен в сравнении с популярными серверными платформами.
Также затронуты вопросы микросервисной архитектуры, проблемы и best practices в бэкенд-разработке.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Rambler.iOS #9: Life with out of memory (Денис Батвинкин).
Out of memory error – ошибка, о которой не стоит забывать. В докладе Денис разбирает, что такое out of memory error и почему стоит уделить этой проблеме больше внимания. Отдельное внимание уделено причинам OOM и инструментам, которые помогут ее отследить. Также на примере iOS-приложения "Livejournal" рассмотрена практика борьба с этой ошибкой.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Бениамин Саркисян рассказал про устройство и принципы работы статического анализатора кода OCLint, а также показал, как можно написать свои собственные правила для него.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Екатерина Тришина рассмотрела плюсы и минусы различных видов диаграмм на примере кейса проектирования сложного блока функционала в проекте Афиша.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Артур Протько рассказал о различных технологиях семейства App Thinning: bitcode, slicing, on-demand resources. Помимо теории приводятся практические примеры и статистика, полученная в проекте Рамблер/почта.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
This document provides an overview of Dip, a dependency injection framework for Swift. It discusses key Dip concepts like dependency containers, component registration, and resolution. Key points include:
1. Modules are represented as dependency containers that manage their own components.
2. All components are registered in their containers with their dependencies.
3. The dependency graph is resolved by obtaining fully-initialized components from their containers.
Михаил Головко рассказал о принципах устройства и основных возможностях YapDatabase.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Последние полтора года на каждой из наших встреч мы рассказываем о том, почему продуманная и чистая архитектура мобильных приложений — это нужно и важно. За попытками спроектировать серебряную пулю мы очень часто забываем — или просто не уделяем достаточно внимания менее заметной части нашего кода — тестам.
Егор Толстой расскажет о том, почему не стоит обделять вниманием unit-тесты, как подходить к их проектированию и осуществлять постепенный рефакторинг. Выступление, как обычно, подкреплено зарядом личной боли и опыта от поддержки базы в 3.000 unit-тестов на одном проекте и 1.000 на другом.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Многие разработчики любят спорить о празных подходах к реализации верхнего слоя мобильного приложения — MVC, MVVM, VIPER. При этом зачастую уделяется недостаточно времени продумыванию логики работы с данными. Как следствие, усложняется понимание и последующее расширение данного слоя.
Стас Цыганов расскажет про подход, который давно используется в server-side разработке, но позже был адаптирован к реалиям мобильных приложений. Service Oriented Architecture задает строгий каркас в части обработки данных, фиксируя ответственность компонентов. Такой подход оказывается крайне полезным как в части поддержки и рефакторинга, так и при последующем расширении приложения.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Rambler.iOS #8: Make your app extensible with JavaScriptCoreRAMBLER&Co
This document discusses using JavaScriptCore to extend the functionality of apps. It provides an example of using JavaScriptCore to evaluate JavaScript code and access the results. It also outlines how JavaScriptCore maps JavaScript types to Objective-C and Swift types. The document describes how JavaScriptCore creates a virtual machine and handles single-threaded execution. It then shows how to export Swift classes to JavaScript using a protocol. Finally, it lists some ways apps like Paw could leverage JavaScriptCore, such as for code generators, importers, and dynamic values.
Rambler.iOS #8: Как не стать жертвой бэкендеровRAMBLER&Co
Клиент-серверное взаимодействие лежит в основе большинства мобильных приложений. Язык общения между клиентом и сервером всегда закреплён определённым контрактом. Однако валидация этого контракта незаслуженно остаётся в стороне. Отсюда и большинство проблем на клиенте — некорректное отображение, неконсистентность данных и падения.
Как избежать этих проблем и повысить уровень crash-free ваших приложений, добавив предварительную валидацию, расскажет Ирина Дягилева.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
RDSDataSource: iOS Reverse Engineering for inexperiencedRAMBLER&Co
Валерий Попов рассказывает о том, как организован процесс реверс-инжиниринга iOS приложений.
RDSDataSource - внутренние пятничные митапы iOS-команды RAMBLER&Co.
Rambler.iOS #6: App delegate - разделяй и властвуйRAMBLER&Co
Вадим Смаль объяснил, что плохого в содержании одного огромного класса и как решить эту проблему с помощью разработанного им компонента.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Егор Толстой рассказывает о том, как он справился с проблемами постраничной загрузки данных в мобильном клиенте для одного абстрактного известного блог-сервиса.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
Дмитрий Журавленко рассказывает об одном подходе к решению проблемы слияния файла проекта Xcode.
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.