Rambler.iOS #5: VIPER и SwiftRAMBLER&CoRambler.iOS #5: VIPER и Swift (Попов Валерий).
Rambler.iOS - митапы iOS-разработчиков, организуемые компанией RAMBLER&Co.
#13 "Управление состоянием в Redux" Роман СальниковJSibОдин из трендов в разработке приложений на JavaScript - разделение состояния и отображения. В докладе речь пойдет о том, как мы применили для этих целей библиотеку Redux. Расскажу, больно ли ломать мозг новым подходом (спойлер: да), обязательно ли писать все на React (спойлер: нет), стало ли легче разрабатывать и тестировать (спойлер: вы не поверите).
WebCamp: Developer Day: Parse'им бэкенд - Аким ХалиловGeeksLab OdessaРarse'им бэкенд
Аким Халилов
Вы хотите выучить Backbone? Хотите просто писать клиентский код, не думая о сервере и о том, как все обрабатывать, хранить, бэкапить? Выход есть – храните с помощью Parse. Parse – платформа, которая предоставляет возможность хранения данных без забот о сервере. Хранилище данных, соц. сети, push-notification, cloud code. Что такое Parse и что он умеет, о библиотеке для использования:
- знакомство с JS API и примеры использования;
- начинаем кодить: stub-проект;
- кодим фичи: CRUD + плюшки;
- хостим.
Moxy. Из чего состоит и как этим пользоватьсяYuri ShmakovПрезентация о том, из каких компонентов состоит Moxy, как они взаимодействуют между собой и о том, как этим пользоваться.
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»Mail.ru GroupВладислав делится подробностями о том, что собой представляет DI и как его можно использовать. Также вы узнаете, почему был выбран именно Blood Magic.
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"TechnoparkТехнопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №7 "Оптимизация запросов и индексирование". Лектор - Павел Щербинин.
Вначале рассказывается об оптимизации доступа к данным, о декомпозиции соединения и состоянии запроса. Далее идёт большой блок, посвящённый оптимизатору запросов (изменение порядка соединения, применение алгебраических правил эквивалентности, оптимизации COUNT(), MIN(), MAX(), вычисление и свертка константных выражений, покрывающие индексы, оптимизация подзапросов, раннее завершение, сравнение по списку IN() и распространение равенства). Затем последовательно рассматриваются такие вещи, как соединение (JOIN) в MySQL, оптимизатор сортировки, коррелированные подзапросы, слияние и непоследовательный просмотр индексов, функции SELECT & UPDATE, COUNT(). После этого рассказывается об оптимизации запросов с помощью JOIN, GROUP BY, DISTINCT и LIMIT со смещением. В конце лекции даётся информация о кэшировании запросов, объединённых таблицах и секционировании.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Automation Functional Testing in Agile ProjectsAndrey RebrovОб автоматических тестах писал ещё Сам Кент Бек. Ну, а автоматические функциональные тесты — это вообще лакомый кусок для современных agile методик разработки ПО. Вместе с участниками кемпа мы узнаем, с какой стороны подходить к процессу автоматизации тестирования в целом. Кроме того, мы создадим проект автотестирования с использованием одного из самых популярных продуктов для тестирования веб-приложений — Selenium 2.
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...TechnoparkТехнопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №4 "Расширенные возможности работы с базами данных. Триггеры и хранимые процедуры"
Лектор - Павел Щербинин.
Первая часть лекции посвящена хранимым процедурам (использование, примеры кода, аспекты безопасности при использовании хранимых процедур): LOOP, REPEAT, WHILE, HANDLER, курсоры, EXECUTE. Во второй части рассказывается о триггерах: BEFORE, AFTER, INSTEAD OF, о специальных таблицах inserted, updated и deleted, об использовании триггеров для поддержания целостности и бизнес-логики, о проблемах при использовании триггеров, приводятся примеры кода. В завершающей части лекции обсуждаются вопросы, связанные с транзакциями: концепция A.C.I.D.; уровни изоляции ANSI/ISO (SET TRANSACTION ISOLATION LEVEL); взаимовлияние транзакций и проблемы lost update, dirty read, non-repeatable read и phantom read; технология MVCC (контроль версионирования конкуренции); конкуренция; параллельность и согласованность.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Разработка бизнес-приложений на OpenUI5 —Николай Надоричев, MOLGA ConsultingYandexРечь в докладе пойдёт о фреймворке OpenUI5, слоган которого — «Build once. Run on any device». Фреймворк, как несложно догадаться, позволяет создавать десктопные и мобильные приложения в кратчайшие сроки.
Особенности разработки API / Всеволод Шмыров (Яндекс)OnticoРИТ++ 2017, Frontend Сonf
Зал Дели + Калькутта, 6 июня, 10:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2468.html
Разработка API/Framework/встраиваемого контента сильно отличается от разработки обычного frontend-приложения. На примере нашего API Яндекс.Карт я расскажу, чем именно.
+ Какие задачи обычно решают разработчики API?
+ С каким проблемами сталкиваются?
+ Какие есть ограничения в разработке?
+ Чем еще должен заниматься разработчик API, кроме непосредственно разработки?
Moxy – реализация MVP под Android. С щепоткой магииYuri ShmakovРассмотрим главные компоненты Moxy, а так же то для чего они нужны и как ими пользоваться.
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)OnticoAlaSQL - это библиотека для обработки данных с помощью языка SQL, которая написана на JavaScript и может работать в браузере (в том числе, и в режиме WebWorker) или Node.js. Библиотека может быть использована в приложениях для обработки данных, а также для решения задач ETL (extract-transform-loading), таких как приложения бизнес-аналитики.
Тезисы - http://frontendconf.ru/2015/abstracts/1713
Артемий Гарин "Выбор лучшего хранилища в Android (cпойлер: Realm)"IT Event"Выбор хранилища для проекта — важная часть разработки. Раньше в Android, было сложно: много различных ORM-библиотек на SQLite, есть NoSQL библиотеки, но нет чего-то действительно быстрого и легкого в работе.
Появление Realm изменило всё. В докладе мы сравним его с популярными SQLite ORM библиотеками, посмотрим что быстрее, с чем проще работать. В конце доклада пара слов об еще одном, новом и интересном инструменте, который сравнимым с Realm."
Тестируй это / Виктор Русакович (GP Solutions)OnticoРИТ++ 2017, Frontend Сonf
Зал Дели + Калькутта, 5 июня, 18:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2625.html
Как писать тесты?
Как запускать тесты?
Кто все сломал?
Все три вопроса рассмотрены в докладе. Также будет демо интеграции проекта, покрытого тестами, и cloud-based-сервиса по запуску этих тестов (github+travis).
Кроме того, расскажу об опыте по сокращению времени прогона тестов; о том, как добавить тесты в случае, если у вас уже есть большое приложение, но все еще без тестов.
#MBLTdev: Опыт использования MVVM в реальных проектахe-Legion#MBLTdev: Конференция мобильных разработчиков
Спикер: Юрий Буянов
Разработчик мобильных приложений, Одноклассники
http://mbltdev.ru/
Moxy. Из чего состоит и как этим пользоватьсяYuri ShmakovПрезентация о том, из каких компонентов состоит Moxy, как они взаимодействуют между собой и о том, как этим пользоваться.
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»Mail.ru GroupВладислав делится подробностями о том, что собой представляет DI и как его можно использовать. Также вы узнаете, почему был выбран именно Blood Magic.
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"TechnoparkТехнопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №7 "Оптимизация запросов и индексирование". Лектор - Павел Щербинин.
Вначале рассказывается об оптимизации доступа к данным, о декомпозиции соединения и состоянии запроса. Далее идёт большой блок, посвящённый оптимизатору запросов (изменение порядка соединения, применение алгебраических правил эквивалентности, оптимизации COUNT(), MIN(), MAX(), вычисление и свертка константных выражений, покрывающие индексы, оптимизация подзапросов, раннее завершение, сравнение по списку IN() и распространение равенства). Затем последовательно рассматриваются такие вещи, как соединение (JOIN) в MySQL, оптимизатор сортировки, коррелированные подзапросы, слияние и непоследовательный просмотр индексов, функции SELECT & UPDATE, COUNT(). После этого рассказывается об оптимизации запросов с помощью JOIN, GROUP BY, DISTINCT и LIMIT со смещением. В конце лекции даётся информация о кэшировании запросов, объединённых таблицах и секционировании.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Automation Functional Testing in Agile ProjectsAndrey RebrovОб автоматических тестах писал ещё Сам Кент Бек. Ну, а автоматические функциональные тесты — это вообще лакомый кусок для современных agile методик разработки ПО. Вместе с участниками кемпа мы узнаем, с какой стороны подходить к процессу автоматизации тестирования в целом. Кроме того, мы создадим проект автотестирования с использованием одного из самых популярных продуктов для тестирования веб-приложений — Selenium 2.
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...TechnoparkТехнопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №4 "Расширенные возможности работы с базами данных. Триггеры и хранимые процедуры"
Лектор - Павел Щербинин.
Первая часть лекции посвящена хранимым процедурам (использование, примеры кода, аспекты безопасности при использовании хранимых процедур): LOOP, REPEAT, WHILE, HANDLER, курсоры, EXECUTE. Во второй части рассказывается о триггерах: BEFORE, AFTER, INSTEAD OF, о специальных таблицах inserted, updated и deleted, об использовании триггеров для поддержания целостности и бизнес-логики, о проблемах при использовании триггеров, приводятся примеры кода. В завершающей части лекции обсуждаются вопросы, связанные с транзакциями: концепция A.C.I.D.; уровни изоляции ANSI/ISO (SET TRANSACTION ISOLATION LEVEL); взаимовлияние транзакций и проблемы lost update, dirty read, non-repeatable read и phantom read; технология MVCC (контроль версионирования конкуренции); конкуренция; параллельность и согласованность.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Разработка бизнес-приложений на OpenUI5 —Николай Надоричев, MOLGA ConsultingYandexРечь в докладе пойдёт о фреймворке OpenUI5, слоган которого — «Build once. Run on any device». Фреймворк, как несложно догадаться, позволяет создавать десктопные и мобильные приложения в кратчайшие сроки.
Особенности разработки API / Всеволод Шмыров (Яндекс)OnticoРИТ++ 2017, Frontend Сonf
Зал Дели + Калькутта, 6 июня, 10:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2468.html
Разработка API/Framework/встраиваемого контента сильно отличается от разработки обычного frontend-приложения. На примере нашего API Яндекс.Карт я расскажу, чем именно.
+ Какие задачи обычно решают разработчики API?
+ С каким проблемами сталкиваются?
+ Какие есть ограничения в разработке?
+ Чем еще должен заниматься разработчик API, кроме непосредственно разработки?
Moxy – реализация MVP под Android. С щепоткой магииYuri ShmakovРассмотрим главные компоненты Moxy, а так же то для чего они нужны и как ими пользоваться.
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)OnticoAlaSQL - это библиотека для обработки данных с помощью языка SQL, которая написана на JavaScript и может работать в браузере (в том числе, и в режиме WebWorker) или Node.js. Библиотека может быть использована в приложениях для обработки данных, а также для решения задач ETL (extract-transform-loading), таких как приложения бизнес-аналитики.
Тезисы - http://frontendconf.ru/2015/abstracts/1713
Артемий Гарин "Выбор лучшего хранилища в Android (cпойлер: Realm)"IT Event"Выбор хранилища для проекта — важная часть разработки. Раньше в Android, было сложно: много различных ORM-библиотек на SQLite, есть NoSQL библиотеки, но нет чего-то действительно быстрого и легкого в работе.
Появление Realm изменило всё. В докладе мы сравним его с популярными SQLite ORM библиотеками, посмотрим что быстрее, с чем проще работать. В конце доклада пара слов об еще одном, новом и интересном инструменте, который сравнимым с Realm."
Тестируй это / Виктор Русакович (GP Solutions)OnticoРИТ++ 2017, Frontend Сonf
Зал Дели + Калькутта, 5 июня, 18:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2625.html
Как писать тесты?
Как запускать тесты?
Кто все сломал?
Все три вопроса рассмотрены в докладе. Также будет демо интеграции проекта, покрытого тестами, и cloud-based-сервиса по запуску этих тестов (github+travis).
Кроме того, расскажу об опыте по сокращению времени прогона тестов; о том, как добавить тесты в случае, если у вас уже есть большое приложение, но все еще без тестов.
#MBLTdev: Опыт использования MVVM в реальных проектахe-Legion#MBLTdev: Конференция мобильных разработчиков
Спикер: Юрий Буянов
Разработчик мобильных приложений, Одноклассники
http://mbltdev.ru/
Sign Me UpAndrew MayorovОсновные функциональные возможности системы SignMeUp - автоматизация управления инструкторами автошкол с возможностью записи на занятия через Интернет.
(Eng) How Social Media Worked In #24godyny project (Updated)Internews Ukraine#24godyny is a initiative by Ukrainian journalists and bloggers to create a professional magazine during 24 hours
Asad C.VAune AsadAune Ahmad Asad has over 13 years of experience in marketing and business development in the telecom, TV, and music industries across multiple countries. He has expertise in developing business partnerships, rolling out new projects, and implementing value-added services for telecom operators. Currently, he is the VP of Sales at Mobile Content Distribution Co., where he is responsible for global business development. Previously, he held director/manager level roles developing business for companies in media, telecom value-added services, and software.
XsltAndrew Mayorov* XSLT в качестве языка шаблонов.
* XML для передачи модели в MVC.
* ObjectXPathNavigator помогает совместить типизированные модели и XML.
* Внедряем ASPX веб-формы в MVC.
Banana Shelf Life TestingshubhamchandraThe document describes an experiment to extend the shelf life of bananas. It tested bananas stored in polyethylene bags with a Chandra Associates film (Protocol A) against a control of bananas stored in air without a film (Protocol C). The results showed that bananas stored with the film maintained quality and freshness for 29 days at 56°F, while the control bananas spoiled sooner. Therefore, the film was successful in lengthening the bananas' shelf life beyond the typical 16 days.
об удобстве иерархических структур данныхAndrew MayorovПлан выступления:
1. Зачем?
1. Проектированием хранилищ данных занимается почти каждый.
2. В начале проекта сложно представить, какие новые требования появятся через месяц. (КО напоминает)
3. "Много думать" - бессмысленно, все равно все поменяется.
4. Нужна схема, которую можно будет легко расширять и перетасовывать.
5. Дерево объектов - искомая структура.
2. Примеры деревьев (иерархических структур):
1. Организационная диаграмма.
2. Файлы и папки на диске
3. Файлы и папки - отличная метафора, от которой мы и будем плясать. На диске успешно хранится все, что нужно. Аналогично любые данные хорошо укладываются в дерево.
4. Пример №1
1. Традиционное проектирование. Рисуем UML-диаграмму: новость, каталог новостей, иерархия разделов каталога, страны, к которым принадлежат разделы, описания стран.
2. Выражаем то же самое в виде дерева объектов "статья", "папка", "страна".
3. Такое дерево реализуется примитивнейшей структурой классов - класс Node и его наследники.
1. Как следствие, для моделирования иерархической структуры диаграмма классов не подходит.
5. Полезные операции в дереве объектов:
1. Найти объект по пути. Путь - это последовательность ребер. Полный аналог пути к файлу.
1. Объект может иметь осмысленный путь - это удобно для пользователя.
2. Выбрать все объекты заданных типов, находящиеся в указанной ветви дерева.
1. Одна и та же операция позволяет выбрать все новости про заданную страну или все новости из указанной категории.
3. Наследование свойств вниз по дереву:
1. Конфигурационные настройки.
2. Роли пользователей.
6. Переход от дерева к ориентированному графу
1. Дерева (один родительский узел) не всегда достаточно.
2. Пример - новость может принадлежать нескольким разделам сразу.
3. Надо позволить узлу иметь нескольких родителей - получаем ориентированный граф.
4. Не должно быть циклов
1. Циклы создают проблемы.
2. В них нет никакого смысла для целей хранения данных.
7. Объект Relation - на диаграмму классов, моделирующих дерево добавляем новый класс: parent, child, name.
1. name - имя отношения, которое можно использовать при по
ASP.NET, MVC, ASP.NET MVCGetDev.NETВидео с доклада: http://getdev.net/Event/asp-net-mvc-4
Доклад об ASP.NET MVC, откуда и зачем он появился, какие задачи решает, какой подход к разработке исповедует. Этот доклад больше пригодится тем, кто хочет углубить и структурировать свои знания об ASP.NET MVC
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)OnticoВ докладе будут рассмотрены приемы, практики и «фишки», которые полезно использовать для создания любого Frontend-приложения.
Мы поговорим об организации модульности и компонентов на примере приложений с Angular, React и Polymer. Обсудим, как использовать особенности JavaScript, и рассмотрим особые случаи, когда фреймворки действительно приходят на помощь.
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi Разработка Web-приложений на Angular JS — доклад Бориса Левицкого, архитектора ПО в команде портфеля проектов Enviance компании Softengi.
Видео с докладом от автора можно посмотреть по ссылке: http://youtu.be/oTXxrmIxo8Y
Презентация ответит на вопросы:
- что такое Angular?
- для чего он используется и что с ним можно делать?
- как работает Data-Binding?
- кастомные фильтры
- структура Angular приложения
Архитектурные семинары Softengi - еженедельные встречи, на которые приглашаются ведущие разработчики/архитекторы Softengi и других компаний нашего консорциума Intecracy Group.
Все проведенные семинары мы записывали, и теперь хотим поделиться опытом и знаниями с такими же профессионалами.
Подписывайся на канал Softengi https://www.youtube.com/user/softengi и узнай первым о новых семинарах.
http://www.softengi.com
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSibКирилл Кайсаров рассказывает о сборщике Webpack и фреймворке Vue.js.
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETDev2DevASP.NET MVC простой и распространённый инструмент. Но строить на его основе большое веб-приложение не так просто. Туториалы не раскрывают проблем возникающих при росте проекта. Зачастую, изначально стройная архитектура размазывается с каждой следующей итерацией.
Я хочу поделиться своим опытом. Рассказать об основных проблемах и предложить выбранные мной решения.
Модульная структура. Цветцих Денис D2D Just.NETDev2DevСегодня многие фреймворки, такие как Prism или Autofac, позволяют разработчику организовать модульную структуру приложения. При этом часто бывает непонятно, для чего ещё нужны модули, кроме как для пресловутой "красоты архитектуры".
В рамках доклада я расскажу о том, какие существуют подходы к организации модульной структуры, в каких фреймворках они реализованы и для решения каких задач дает преимущество каждый подход.
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Yulia TsisykНи один современный продукт не обходится без API. Этот API может быть внешним, для публичного использования, а может быть сугубо внутренним, но требования к созданию расширяемого, версионируемого, тестируемого, документированного программного интерфейса очень похоже. В этом докладе мы поговорим о том, как создавать подобные API на основе REST, какие существуют best-practices, чего следует избегать, на что обращать внимание при проектировании.
VIPER architectureAlex RudyakVery quick comparison between the most popular iOS application architectures (MVC, MVP, MVP) and introducing VIPER architecture with slight modifications of the canonical one.
17. Проблема: 1 метод на 1 URL
• Огромные контроллеры
• Нечеткие критерии группировки методов
• Мало базовых классов
• Сервисные методы раздувают
контроллеры
21. Сложности с именами view
/View
/Home
/Execute.chtml
/News
/Execute.chtml
/Products
/Execute.chtml
/NextPage.chtml
/Product
/Execute.chtml
22. Свой ViewEngine
/View
/Home.xslt
/News.xslt
/Products.xslt
/Products_NextPage.xslt
/Product.xslt
23. Преимущества
• Один контроллер – одно действие
• Контроллеры маленькие
• Общий функционал → в базовый класс
• Создаем DSL*
• Дружит с Dependency Injection*
44. Dependency inversion principle
Модули верхних уровней не должны
зависеть от модулей нижних уровней.
Модули должны зависеть от абстракций.
Абстракции не должны зависеть от
деталей. Детали должны зависеть от
абстракций.
SOLID
48. Указание зависимостей
public class HomeController : Controller
{
[Dependency]
public INewsService NewsService { get; set; }
public HomeController( IDatabase database ) { … }
…
}
49. Настройка DI-контейнера
• Связь между интерфейсом и реализацией*
• Контроль за жизнью объекта
<register type="INewsService"
mapTo="NewsService">
<lifetime type="singleton"/>
</register>
* Не обязательно
59. Ajax delivers
• Не надо сериализовать всю страницу
• При ошибке можно повторить
• Трафик меньше на порядки
60. Правила
1. Один контроллер – одно действие
2. Модель – член класса
3. Задавайте маршруты явно
4. Делайте собственные DSL
5. Используйте DI
6. Используйте Ajax для редактирования