SlideShare a Scribd company logo
Пользователь
2ГИС Онлайн
API Справочника
АРХИТЕКТУРА WEB-APP
WWW.2GIS.RU
АРХИТЕКТУРА CLIENT-SIDE APP
Пользователь
2ГИС Онлайн
API
Транспорта
API
пробок
API
<Место для
вашего сервиса>
API
Справочник
API
Карт +1
WWW.2GIS.RU
DOM НА КЛИЕНТЕ
WWW.2GIS.RU
DOM НА КЛИЕНТЕ
var newDiv = document.createElement('div');
newDiv.className = 'my-class';
newDiv.id = 'my-id';
newDiv.innerHTML = 'Привет, мир!';
$('#container').appendChild(newDiv);
Привет, мир!
WWW.2GIS.RU
WHERE IS
ШАБЛОНИЗАТОРЫ
jQueryTemplate
Mustache
Underscore.js
Шаблонизатор резига
Pure
WWW.2GIS.RUWWW.2GIS.RU
СОБЫТИЯ
.firmShort
.firmFull#firmList
WWW.2GIS.RUWWW.2GIS.RU
СОБЫТИЯ
$("#firmTemplate").tmpl(someData)
.appendTo("#firmList");
$('.firmShort').live({
click: function() {
showFirmCard(this);
}
});
$('.firmFull').live({
click: function() {
hideFirmCard(this);
}
});
WWW.2GIS.RUWWW.2GIS.RU
СОБЫТИЯ
ПОЧЕМУ KNOCKOUT?
Активно развивается
WWW.2GIS.RUWWW.2GIS.RU
● Активно развивается
ПОЧЕМУ KNOCKOUT?
Удобное разделение
логики и шаблонов
WWW.2GIS.RUWWW.2GIS.RU
● Активно развивается
● Удобное разделение логики и шаблонов
ПОЧЕМУ KNOCKOUT?
Функционален, есть
декларативные биндинги
WWW.2GIS.RUWWW.2GIS.RU
● Активно развивается
● Удобное разделение логики и шаблонов
● Функционален, есть декларативные
биндинги
ПОЧЕМУ KNOCKOUT?
Низкий порог вхождения
WWW.2GIS.RUWWW.2GIS.RU
MVVM
View Model
ViewModel
UI Logic Business Logic
Application Logic
WWW.2GIS.RUWWW.2GIS.RU
KNOCKOUT
WWW.2GIS.RUWWW.2GIS.RU
<div class="dg-search-result-header">
<span data-bind="text: what_text"></span>,
<span data-bind="text: where_text"></span>
</div>
KNOCKOUT
WWW.2GIS.RUWWW.2GIS.RU
function vm() {
this.what_text = ko.observable('');
}
ko.applyBindings(new vm());
...
vm.what_text(response.what);
<span data-bind="text: what_text"></span>
KO.OBSERVABLE
WWW.2GIS.RUWWW.2GIS.RU
МАССИВЫ
WWW.2GIS.RUWWW.2GIS.RU
response.result = [
{
firmName = 'Театр №1',
...
},
{
firmName = 'Театр №2';
...
}
]
МАССИВЫ
WWW.2GIS.RUWWW.2GIS.RU
function vm () {
this.firms = ko.observableArray([]);
}
...
vm.firms(response.result);
<div data-bind="foreach: firms">
<div data-bind="text: firmName"></div>
</div>
KO.OBSERVABLE_ARRAY
WWW.2GIS.RUWWW.2GIS.RU
BINDINGS
<div class="dg-search-result-header">
<span data-bind="text: what_text"></span>,
<span data-bind="text: where_text"></span>
</div>
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
BINDINGS
— Текст и стиль блока
— Control flow
— Работа с формами
— Шаблонизация
— <место для ваших идей>
WWW.2GIS.RUWWW.2GIS.RU
.firmShort
.firmFull#firmList
WWW.2GIS.RUWWW.2GIS.RU
BINDINGS
<div id="firmList"
data-bind="foreach: firms">
<div class="firmShort"
data-bind="visible: !isVisible"></div>
<div class="firmFull"
data-bind="visible: isVisible"></div>
</div>
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
data-bind="visible: isVisible,
click: toggleVisibility"
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
data-bind="visible: isVisible,
click: toggleVisibility"
toggleVisibility = function() {
this.isVisible(!this.isVisible());
}
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
ko.bindingHandlers['visible'] = {
'update': function (element, valueAccessor) {
var value = ko.utils.unwrapObservable
(valueAccessor());
var isCurrentlyVisible = !(element.style.display
== "none");
if (value && !isCurrentlyVisible)
element.style.display = "";
else if ((!value) && isCurrentlyVisible)
element.style.display = "none";
}
};
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
ko.bindingHandlers['animateVisible'] = {
'update': function (element, valueAccessor) {
var value = ko.utils.unwrapObservable
(valueAccessor());
var isCurrentlyVisible = !(element.style.display
== "none");
var slideSpeed = 200;
if (value && !isCurrentlyVisible)
$(element).slideDown(slideSpeed,
callback);
else if ((!value) && isCurrentlyVisible)
$(element).slideUp(slideSpeed,
callback);
}
};
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
data-bind="animateVisible: isVisible,
click: toggleVisibility"
toggleVisibility = function() {
this.isVisible(!this.isVisible());
}
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
<script type="text/my-tpl" id="firm-tpl">
//firm template code
</script>
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
<script type="text/my-tpl" id="catalog-tpl">
//some template code
<div data-bind="template: {
name: 'firm-tpl',
foreach: firms
}"></div>
</script>
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
BINDINGS
BINDING-CONTEXT
vm
vm.firms[n]
WWW.2GIS.RUWWW.2GIS.RU
ПЕЧАТЬ
WWW.2GIS.RUWWW.2GIS.RU
<script type="text/my-tpl" id="print-tpl">
//some template code
<div data-bind="template: {
name: 'firm-tpl',
foreach: firms,
templateOptions: {
isPrint: 1
}
}"></div>
</script>
ПЕЧАТЬ
WWW.2GIS.RUWWW.2GIS.RU
BINDINGS
<div class="phone-number"
data-bind="visible: $context.isPrint)"
>
<!-- Some code-->
</div>
WWW.2GIS.RUWWW.2GIS.RU
BINDINGS
<div class="contacts"
data-bind="template: {
name: 'firm-tpl',
data: $data,
templateOptions: {
isPrint: $context.isPrint
}
}">
<!-- Some code-->
</div>
WWW.2GIS.RUWWW.2GIS.RU
$context
$data
templateOptions
BINDING CONTEXT
WWW.2GIS.RUWWW.2GIS.RU
BINDING CONTEXT
● $parent
● $parentContext
● $root
● $index
● $element
WWW.2GIS.RUWWW.2GIS.RU
$context
$data
templateOptions
function initBalloon (options) {
map.createBalloon({
point: options.point;
content: options.template
});
}
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
function initBalloon (options) {
map.createBalloon({
point: options.point;
content: options.template
});
var container = $('#balloonContent');
ko.applyBindingsToNode(container , vm);
}
BINDINGS
WWW.2GIS.RUWWW.2GIS.RU
КОГДА МНОГО "ЕСЛИ"
WWW.2GIS.RUWWW.2GIS.RU
this.showPreloader = ko.computed(function(){
return this.firmsLoad() && this.geoLoad();
});
<span id="preloader"
data-bind="visible: showPreloader">
</span>
КОГДА МНОГО "ЕСЛИ"
WWW.2GIS.RUWWW.2GIS.RU
Не наблюдайте один computed
внутри другого
KO.COMPUTED
WWW.2GIS.RUWWW.2GIS.RU
WWW.2GIS.RU
1. Не наблюдайте один computed внутри другого
KO.COMPUTED
Не меняйте observable внутри
computed
WWW.2GIS.RUWWW.2GIS.RUWWW.2GIS.RU
1. Не наблюдайте один computed внутри другого
2. Не меняйте observable внутри computed
KO.COMPUTED
Используйте computed только там,
где это необходимо
WWW.2GIS.RUWWW.2GIS.RU
PLUGINS
PLUGINS
knockout.address
WWW.2GIS.RUWWW.2GIS.RU
PLUGINS
window.location vm.myObservable
ko.linkObservableToUrl(vm.history, 'history');
WWW.2GIS.RUWWW.2GIS.RU
knockout.address
PLUGINS
WWW.2GIS.RUWWW.2GIS.RU
$('#firmFull').dataBind({
animateVisible: isVisible,
click: toggleVisibility
});
https://gist.github.com/joelnet/1006808
PLUGINS
WWW.2GIS.RUWWW.2GIS.RU
Unobtrusive Knockout
support library for jQuery
Joel Thoms
https://github.com/SteveSanderson/knockout/wiki/Plugins
PLUGINS
WWW.2GIS.RUWWW.2GIS.RU
БОЛЬШИЕ ПРОЕКТЫ
107 22 18
Observable Computed Observable
Array
WWW.2GIS.RUWWW.2GIS.RU
Functions
БОЛЬШИЕ ПРОЕКТЫ
200+ 107 22 18
WWW.2GIS.RUWWW.2GIS.RU
БОЛЬШИЕ ПРОЕКТЫ
18
WWW.2GIS.RUWWW.2GIS.RU
107200+13 22
Namespace.ViewModelModules.<ourModule> = {
_observables: {
<ourObservable>: <defaultData>,
<ourComputed>: function()
{/*computedCode*/}
},
<someProperty>: 100500,
_initModule: function(){/*initCode*/},
<function>: function(){/*fBody*/}
}
БОЛЬШИЕ ПРОЕКТЫ
WWW.2GIS.RUWWW.2GIS.RU
Namespace.ViewModelModules.<ourModule> = {
_observables: {
<ourObservable>: <defaultData>,
<ourComputed>: function()
{/*computedCode*/}
},
<someProperty>: 100500,
_initModule: function(){/*initCode*/},
<function>: function(){/*fBody*/}
}
WWW.2GIS.RU
БОЛЬШИЕ ПРОЕКТЫ
150
WWW.2GIS.RUWWW.2GIS.RU
https://github.com/2gis/dgKoModulizer
dgKoModulizer
WWW.2GIS.RUWWW.2GIS.RU
IDE
data-bind="
//очень много
//кода
//который выглядит
//как одна сплошная строка
"
WWW.2GIS.RUWWW.2GIS.RU
IDE
WWW.2GIS.RUWWW.2GIS.RU
IDE
WWW.2GIS.RUWWW.2GIS.RU
ПРОИЗВОДИТЕЛЬНОСТЬ
WWW.2GIS.RUWWW.2GIS.RU
DOM.Build()
АНАЛОГИ
— AngularJS
— Backbone.js
— Ember.js
— ExtJS
— CorMVC
— AsanaLuna
— ...
WWW.2GIS.RUWWW.2GIS.RU
Илья Таратухин
@darklifa

More Related Content

What's hot

jQuery как путь к RIA
jQuery как путь к RIAjQuery как путь к RIA
jQuery как путь к RIA
GetDev.NET
 
Knockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-ОнлайнKnockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-Онлайн2ГИС Технологии
 
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшeQA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
QAFest
 
CodeFest dirty facts about AngularJS
CodeFest dirty facts about AngularJSCodeFest dirty facts about AngularJS
CodeFest dirty facts about AngularJS
Антон Плешивцев
 
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)ZFConf Conference
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2Alexander Makarov
 
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS) Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
COMAQA.BY
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляции
Paul Klimov
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
Ruslan Begaliev
 
Лучший frontend-фреймворк, и почему вы его не хотите
Лучший frontend-фреймворк, и почему вы его не хотитеЛучший frontend-фреймворк, и почему вы его не хотите
Лучший frontend-фреймворк, и почему вы его не хотите
CodeFest
 
API Яндекс.Карт. Мастер-класс
API Яндекс.Карт. Мастер-классAPI Яндекс.Карт. Мастер-класс
API Яндекс.Карт. Мастер-класс
Yandex.Maps
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаprivate_face
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Ontico
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
Alexander Makarov
 
Drupal Cafe №5 Харьков. Drupal 7 Form API.
Drupal Cafe №5 Харьков. Drupal 7 Form API.Drupal Cafe №5 Харьков. Drupal 7 Form API.
Drupal Cafe №5 Харьков. Drupal 7 Form API.
Dmytro Olaresko
 
AngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для пониманияAngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для понимания
Igor Sazonov
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаprivate_face
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
 

What's hot (19)

jQuery как путь к RIA
jQuery как путь к RIAjQuery как путь к RIA
jQuery как путь к RIA
 
Knockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-ОнлайнKnockoutjs на примере 2ГИС-Онлайн
Knockoutjs на примере 2ГИС-Онлайн
 
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшeQA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшe
 
CodeFest dirty facts about AngularJS
CodeFest dirty facts about AngularJSCodeFest dirty facts about AngularJS
CodeFest dirty facts about AngularJS
 
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2
 
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS) Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляции
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
 
Лучший frontend-фреймворк, и почему вы его не хотите
Лучший frontend-фреймворк, и почему вы его не хотитеЛучший frontend-фреймворк, и почему вы его не хотите
Лучший frontend-фреймворк, и почему вы его не хотите
 
API Яндекс.Карт. Мастер-класс
API Яндекс.Карт. Мастер-классAPI Яндекс.Карт. Мастер-класс
API Яндекс.Карт. Мастер-класс
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
Drupal Cafe №5 Харьков. Drupal 7 Form API.
Drupal Cafe №5 Харьков. Drupal 7 Form API.Drupal Cafe №5 Харьков. Drupal 7 Form API.
Drupal Cafe №5 Харьков. Drupal 7 Form API.
 
AngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для пониманияAngularJS. Введение и простые примеры для понимания
AngularJS. Введение и простые примеры для понимания
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кода
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 

Similar to DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья

Yii2
Yii2Yii2
Yii2
Noveo
 
Secr презентация гардиенков
Secr презентация гардиенковSecr презентация гардиенков
Secr презентация гардиенковLuxoftTraining
 
всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта  всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта
Olga Pirozhenko
 
Angular js
Angular jsAngular js
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4Technopark
 
WP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript Utils
WP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript UtilsWP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript Utils
WP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript Utils
WordCamp Kyiv
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10Technopark
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
DevDay
 
ReTag - Презентация
ReTag - ПрезентацияReTag - Презентация
ReTag - Презентация
Alexander Bachmann
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Softengi
 
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Транслируем.бел
 
Новая eCommerce платформа D7: заказы, холдинг, персональный раздел
Новая eCommerce платформа D7:  заказы, холдинг, персональный разделНовая eCommerce платформа D7:  заказы, холдинг, персональный раздел
Новая eCommerce платформа D7: заказы, холдинг, персональный раздел
1С-Битрикс
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
Pavlo Iuriichuk
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4Technopark
 
Looking into WordPress Core, WordCamp Russia 2015
Looking into WordPress Core, WordCamp Russia 2015Looking into WordPress Core, WordCamp Russia 2015
Looking into WordPress Core, WordCamp Russia 2015
Sergey Biryukov
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
Ontico
 
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,..."Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
it-people
 
Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10Technopark
 

Similar to DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья (20)

Yii2
Yii2Yii2
Yii2
 
Secr презентация гардиенков
Secr презентация гардиенковSecr презентация гардиенков
Secr презентация гардиенков
 
всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта  всплывающее окно при закрытии сайта
всплывающее окно при закрытии сайта
 
Angular js
Angular jsAngular js
Angular js
 
Web осень 2012 лекция 4
Web осень 2012 лекция 4Web осень 2012 лекция 4
Web осень 2012 лекция 4
 
WP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript Utils
WP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript UtilsWP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript Utils
WP Kitchen Meetup Spring 2015 - Виктор Кулебякин: WordPress JavaScript Utils
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
ReTag - Презентация
ReTag - ПрезентацияReTag - Презентация
ReTag - Презентация
 
External Widgets Performance
External Widgets PerformanceExternal Widgets Performance
External Widgets Performance
 
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
 
Ci
CiCi
Ci
 
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
 
Новая eCommerce платформа D7: заказы, холдинг, персональный раздел
Новая eCommerce платформа D7:  заказы, холдинг, персональный разделНовая eCommerce платформа D7:  заказы, холдинг, персональный раздел
Новая eCommerce платформа D7: заказы, холдинг, персональный раздел
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Web весна 2013 лекция 4
Web весна 2013 лекция 4Web весна 2013 лекция 4
Web весна 2013 лекция 4
 
Looking into WordPress Core, WordCamp Russia 2015
Looking into WordPress Core, WordCamp Russia 2015Looking into WordPress Core, WordCamp Russia 2015
Looking into WordPress Core, WordCamp Russia 2015
 
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
 
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,..."Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
"Гибридное приложение: полгода после релиза" Легчилин Андрей, Парадеев Роман,...
 
Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10
 

More from it-people

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
it-people
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub
it-people
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
it-people
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
it-people
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
it-people
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
it-people
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
it-people
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
it-people
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
it-people
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
it-people
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
it-people
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
it-people
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
it-people
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
it-people
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
it-people
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies
it-people
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс
it-people
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
it-people
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
it-people
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
it-people
 

More from it-people (20)

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 

DUMP-2013 Frontend - Knockoutjs на примере 2ГИС-Онлайн - Таратухин Илья