SlideShare uma empresa Scribd logo
1 de 93
Baixar para ler offline
Егор Непомнящих
Очередной MV* фреймворк?
Зачем?
TodoMVC.com
Так зачем?
● Когда я начал разработку своего
фреймворка, об остальных ничего не было
слышно
Так зачем?
● Когда я начал разработку своего
фреймворка, об остальных ничего не было
слышно
● А как оказалось в итоге, jWidget круче всех
Приложения на базе jWidget
Приложения на базе jWidget
www.digmydata.com
Приложения на базе jWidget
Мой entry для Ludum Dare
Приложения на базе jWidget
Отличительные черты jWidget
● ООП-подход
Отличительные черты jWidget
● ООП-подход
● Гранулярность
Отличительные черты jWidget
● ООП-подход
● Гранулярность
● Предсказуемость
Отличительные черты jWidget
● ООП-подход
● Гранулярность
● Предсказуемость
● Простота
Отличительные черты jWidget
● ООП-подход
● Гранулярность
● Предсказуемость
● Простота
● Скорость
Тест на скорость
http://plnkr.co/edit/VtZe40
Тест на скорость
Вот только часть решений не MV* (читеры)
Что такое MV*?
Что такое MV*?
Приложение
Приложение
Что такое MV*?
Сущность 1
Сущность 2
Сущность 3
LibreOffice Impress
Что такое MV*?
Презентация
Слайд
Элемент слайда
LibreOffice Impress
Что такое MV*?
Модель презентации
Модель слайда
Модель элемента слайда
Панель слайдов
Диалог свойств слайда
Данные Представление
Редактор слайда
Представление элемента
Просмотрщик слайдов
LibreOffice Impress
Что такое MV*?
Модель презентации
Модель слайда
Модель элемента слайда
Панель слайдов
Редактор слайда
Представление элемента
Просмотрщик слайдов
Диалог свойств слайда
Данные Представление
LibreOffice Impress
Что такое MV*?
Модель презентации
Модель слайда
Модель элемента слайда
Панель слайдов
Редактор слайда
Представление элемента
Просмотрщик слайдов
Диалог свойств слайда
Данные Представление
События
События
События
Когда стоит использовать
клиентские MV*-фреймворки?
● Крупное приложение с большим
количеством взаимосвязанных сущностей
● Есть сущности, имеющие большое
количество представлений одновременно
● В команде достаточно матерых JavaScript-
разработчиков
Когда не стоит использовать
клиентские MV*-фреймворки?
● В команде мало хороших JavaScript-
разработчиков
● Страница должна грамотно парситься
поисковыми роботами и аналитическими
системами
● Вам нужна хорошая скорость работы
сайта (jWidget – исключение!)
Документация
Найдите ссылку в проекте на GitHub
https://github.com/enepomnyaschih/jwidget
Структура фреймворка
6 слоев
Структура фреймворка
1. Классы и объекты (JW.Class)
Классы и объекты
На базе популярной библиотеки
John'а Resig'а “Simple JavaScript inheritance”.
http://ejohn.org/blog/simple-javascript-inheritance/
Классы и объекты
Система агрегации объектов.
var Soldier = function() {
Soldier._super.call(this);
this.leftHand = this.own(new Hand("left"));
this.rightHand = this.own(new Hand("right"));
};
JW.extend(Soldier, JW.Class);
var soldier = new Soldier();
soldier.destroy();
// руки уничтожены тоже
Структура фреймворка
1. Классы и объекты (JW.Class)
2. События (JW.Event)
События
Нет никаких Observable. Есть Event.
this.titleChangeEvent = this.own(new JW.Event());
this.titleChangeEvent.trigger(
new JW.ValueEventParams(this, title));
this.own(obj.titleChangeEvent.bind(
this._onTitleChange, this))
Подписка.
Структура фреймворка
1. Классы и объекты (JW.Class)
2. События (JW.Event)
3. Свойства (JW.Property)
Свойства
Интерфейс проще некуда:
● Метод get()
● Метод set(value)
● Событие changeEvent
Свойства
Автоматическое дублирование.
source target1 target2
var source = new JW.Property("apple");
var target1 = new JW.Property();
target1.bindTo(source);
var target2 = new JW.Property();
target2.bindTo(target1);
source.set("banana");
// target2.get() === "banana"
Свойства
Функтор формирует свойство по формуле.
target '{value} {unit}'
JW.Functor
target == '1000 MW' value == 1000, unit == 'MW'
target == '1500 МВ' value == 1500, unit == 'МВ'
Свойства
Функтор формирует свойство по формуле.
target '{value} {unit}'
var target = new JW.Functor(
[ value, unit ],
function(value, unit) {
return value + " " + unit;
},
this
).target;
JW.Functor
Свойства
Switcher переключает on/off.
Hash (#doc_id) view selected?
JW.Functor JW.Switcher
http://myapp.com/#5077-MB
Свойства
Switcher переключает on/off.
Hash (#doc_id) view selected?
JW.Functor JW.Switcher
this.own(new JW.Switcher([view], {
init: function(view) { view.selected.set(true); },
done: function(view) { view.selected.set(false); },
scope: this
}));
Свойства
Можно осуществлять Data binding.
var el = $("#document");
this.own(new JW.UI.ClassUpdater(
el, "my-selected", selected));
this.own(new JW.UI.TextUpdater(el, name));
this.own(new JW.UI.ValueUpdater(el, name));
this.own(new JW.UI.ValueListener(el, name));
И двусторонний Data binding.
Свойства
Можно налету менять локализацию.
var printText = this.own(locale.getFunctor("print")).target;
this.own(new JW.UI.TextUpdater(el, printText));
Структура фреймворка
1. Классы и объекты (JW.Class)
2. События (JW.Event)
3. Свойства (JW.Property)
4. Коллекции (JW.AbstractCollection)
Коллекции
Три коллекции:
● Массив
(JW.AbstractArray)
● Словарь
(JW.AbstractMap)
● Множество
(JW.AbstractSet)
Коллекции
Три коллекции:
● Массив
(JW.AbstractArray)
● Словарь
(JW.AbstractMap)
● Множество
(JW.AbstractSet)
Две реализации:
● JW.Array
JW.Map
JW.Set
● JW.ObservableArray
JW.ObservableMap
JW.ObservableSet
Коллекции
И самое главное...
Коллекции
И самое главное...
СИНХРОНИЗАТОРЫ
Коллекции
Конвертер элементов (Mapper)
target[i] function(source[i])
var target = dataCollection.map(function(data) {
return new View(this, data);
}, this);
Коллекции
Конвертер элементов (Mapper)
target[i] function(source[i])
var target = dataCollection.map(function(data) {
return new View(this, data);
}, this);
Коллекции
Конвертер элементов (Mapper)
target[i] function(source[i])
var mapper = dataCollection.createMapper({
createItem: function(data) {
return new View(this, data);
},
destroyItem: JW.destroy,
scope: this
});
var viewCollection = mapper.target;
Коллекции
Конвертер элементов (Mapper)
target[i] function(source[i])
var mapper = dataCollection.createMapper({
createItem: function(data) {
return new View(this, data);
},
destroyItem: JW.destroy,
scope: this
});
var viewCollection = mapper.target;
Коллекции
Конвертер элементов (Mapper)
target[i] function(source[i])
var source = new JW.ObservableArray([5]);
var target = source.createMapper({
createItem: function(item) { return 2 * item; }
});
console.log(target.get(0)); // 10
source.add(7);
console.log(target.get(1)); // 14
Коллекции
Другие синхронизаторы
1. Конвертер элементов (Mapper)
target[i] function(source[i])
2. Фильтровщик (Filterer)
target[ ] function(source[ ]) ? source[ ] :
Коллекции
Другие синхронизаторы
1. Конвертер элементов (Mapper)
target[i] function(source[i])
2. Фильтровщик (Filterer)
target[ ] function(source[ ]) ? source[ ] :
3. Конвертер в множество (Lister)
JW.Set target[ ] source[ ]
Коллекции
Другие синхронизаторы
4. Конвертер в массив (Orderer)
JW.Array target (в порядке доб.) source
Коллекции
Другие синхронизаторы
4. Конвертер в массив (Orderer)
JW.Array target (в порядке доб.) source
5. Сортировщик (SorterComparing)
JW.Array target (sorted by f(x, y)) source
Коллекции
Другие синхронизаторы
4. Конвертер в массив (Orderer)
JW.Array target (в порядке доб.) source
5. Сортировщик (SorterComparing)
JW.Array target (sorted by f(x, y)) source
6. Объединитель массивов (Merger)
target source1 … sourceN
Коллекции
Другие синхронизаторы
7. Обратитель массива (Reverser)
target[i] source[length - i – 1]
Коллекции
Другие синхронизаторы
7. Обратитель массива (Reverser)
target[i] source[length - i – 1]
8. Индексатор (Indexer)
target[function(source[ ])] source[ ]
Коллекции
Можно делать цепочки синхронизаторов.
JW.Set JW.Array
JW.Set source list
JW.Map index
Sorter
Filterer
Indexer
Структура фреймворка
1. Классы и объекты (JW.Class)
2. События (JW.Event)
3. Свойства (JW.Property)
4. Коллекции (JW.AbstractCollection)
True
Структура фреймворка
1. Классы и объекты (JW.Class)
2. События (JW.Event)
3. Свойства (JW.Property)
4. Коллекции (JW.AbstractCollection)
5. Компоненты (JW.UI.Component)
Структура фреймворка
1. Классы и объекты (JW.Class)
2. События (JW.Event)
3. Свойства (JW.Property)
4. Коллекции (JW.AbstractCollection)
5. Компоненты (JW.UI.Component) ReactJS
И все-таки...
Компоненты
var Greeter = function() {
Greeter._super.call(this);
this.name = this.own(new JW.Property("wanderer"));
};
JW.extend(Greeter, JW.UI.Component, {
renderNameField: function(el) {
this.own(new JW.UI.ValueUpdater(el, this.name));
this.own(new JW.UI.ValueListener(el, this.name));
},
renderGreeting: function(el) {
var text = this.own(new JW.Functor([this.name], function(name) {
return "Hello, " + name + "!";
}, this)).target; // build greeting message
this.own(new JW.UI.TextUpdater(el, text));
}
});
JW.UI.template(Greeter, {
main:
'<div class="greeter">' +
'<p>Your name: <input jwid="name-field"></p>' +
'<div jwid="greeting"></div>' +
'</div>'
});
new Greeter().renderTo("body");
Компоненты
<div jwclass="greeter">
<p>Your name: <input jwid="name-field"></p>
<div jwid="greeting"></div>
</div>
<div class="greeter">
<p>Your name: <input class="greeter-name-field"></p>
<div class="greeter-greeting"></div>
</div>
Компоненты
Шаблонный движок JW.UI ну
ОООООЧЕНЬ
Быстрый.
Быстрее даже,
чем чистый HTML.
Компоненты
Шаблонный движок JW.UI ну
ОООООЧЕНЬ
Быстрый.
Быстрее даже,
чем чистый HTML.
Компоненты
Как это возможно?
● Каждый HTML-шаблон рендерится только
один раз
● После этого каждый новый компонент
получается клонированием отрендеренного
фрагмента
● Шаблон рендерится
напрямую браузером, без
всякого препроцессинга
● Никаких селекторов
Компоненты
renderDocument: function(el) {
return this.own(new DocumentView(this.document));
}
<div jwclass="my-component">
<div jwid="document"></div>
</div>
DocumentView
Компоненты
renderDocument: function(el) {
return this.own(new JW.Mapper([ this.document ], {
createValue: function(document) {
return new DocumentView(this.document);
}
destroyValue: JW.destroy,
scope: this
})).target;
}
<div jwclass="my-component">
<div jwid="document"></div>
</div>
DocumentView
Компоненты
renderDocuments: function(el) {
return this.documents.$map(function(document) {
return this.own(new DocumentView(document));
}, this);
}
<div jwclass="my-component">
<div jwid="documents">
</div>
</div>
DocumentView
DocumentView
DocumentView
DocumentView
Компоненты
renderDocuments: function(el) {
return this.own(this.documents.createMapper({
createItem: function(document) {
return new DocumentView(document);
},
destroyItem: JW.destroy,
scope: this
})).target;
}
<div jwclass="my-component">
<div jwid="documents">
</div>
</div>
DocumentView
DocumentView
DocumentView
DocumentView
Компоненты
renderDocument: function(el) {
return false;
}
<div jwclass="my-component">
<div jwid="document"></div>
</div>
Компоненты
renderDocument: function(el) {
this.own(new JW.UI.TextUpdater(el, this.text));
}
<div jwclass="my-component">
<div jwid="document"></div>
</div>
Компоненты
JW.UI.Component vs ReactJS (TBD)
● Совместим с jQuery
● Можно создавать поверх
существующего DOM
● Прозрачнее
● Дает полный контроль
над компонентами
и DOM
● Ниже порог входа
(проще на старте)
● Код проще
● Большое сообщество
разработчиков
Структура фреймворка
1. Классы и объекты (JW.Class)
2. События (JW.Event)
3. Свойства (JW.Property)
4. Коллекции (JW.AbstractCollection)
5. Компоненты (JW.UI.Component)
6. Система сборки (jWidget SDK)
Система сборки
Standalone проект
jWidget SDK
https://github.com/enepomnyaschih/jwsdk
Система сборки
Standalone проект
jWidget SDK
https://github.com/enepomnyaschih/jwsdk
Является прямой альтернативой GruntJS,
и посему планируется заменить
jWidget SDK плагином к GruntJS
И все же...
Система сборки
1. Формируем пакеты
{
"requires": [
"thirdparty/jwquery.js|auto",
"thirdparty/jwlib.js|auto",
"thirdparty/jwui.js|auto"
],
"resources": [
"mt/mt.js",
"mt/data/data.js",
"mt/data/tweet.js",
...
]
}
Система сборки
2. Создаем страницы
{
"package": "mt",
"template": "base",
"title": "Mini-Twitter"
}
Система сборки
3. Собираем
или
jwsdk debug jwsdk-config
jwsdk release jwsdk-config
Система сборки
Супер-фича: конвертирование шаблонов в JS
{
"resources": [
"mt/app/app.js",
"mt/app/app.jw.html : mt.App",
...
]
}
<div jwclass="mt-app">
<div jwid="profile"></div>
<div jwid="tweets"></div>
</div>
JW.UI.template(mt.App,{main:'<div
jwclass="mt-app"><div
jwid="profile"></div><div
jwid="tweets"></div></div>'});
Система сборки
Также поддерживаются другие форматы:
● html
● json
● txt
● less
● sass
● scss
● styl
● jsx (TBD)
Система сборки
Выполняются оптимизации:
● Объединение и минимизация JS
Система сборки
Выполняются оптимизации:
● Объединение и минимизация JS
● Параметр timestamp для браузерного
кэширования
Система сборки
Выполняются оптимизации:
● Объединение и минимизация JS
● Параметр timestamp для браузерного
кэширования
● Конвертирование малых изображений и
шрифтов в base64 Data URI
Система сборки
Выполняются оптимизации:
● Объединение и минимизация JS
● Параметр timestamp для браузерного
кэширования
● Конвертирование малых изображений и
шрифтов в base64 Data URI
● Поддержка динамической загрузки пакетов
по требованию
Совместимость jWidget с другими
библиотеками и фреймворками
● Весь функционал размещен в отдельном
пространстве имен JW
Совместимость jWidget с другими
библиотеками и фреймворками
● Весь функционал размещен в отдельном
пространстве имен JW
● UI-слой работает на базе jQuery
Совместимость jWidget с другими
библиотеками и фреймворками
● Весь функционал размещен в отдельном
пространстве имен JW
● UI-слой работает на базе jQuery
● Разрабатываются адаптеры между моделью
jWidget и UI-слоями других фреймворков
(например, ReactJS и ExtJS)
Ссылки
Twitter: @jwidgetproject
Почта: jwidgetproject@gmail.com
GitHub (там ссылка на документацию):
https://github.com/enepomnyaschih/jwidget
Статья на хабрахабре (там еще ссылки):
http://habrahabr.ru/post/219995/
Вопросы?
FAQ
● jWidget – почему так называется?
Потому что гладиолус
● Много ли пользователей у jWidget?
Пока нет
● Почему ООП-подход так важен?
Легко переносится на Dart и пр. платформы
● Есть ли готовая библиотека визуальных
компонентов?
Нет. Но легко совмещается с jQuery UI

Mais conteúdo relacionado

Mais procurados

Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаAlexander Kucherenko
 
Andrew Borisenko "Magic of Vue.js""
Andrew Borisenko  "Magic of Vue.js""Andrew Borisenko  "Magic of Vue.js""
Andrew Borisenko "Magic of Vue.js""OdessaJS Conf
 
Архитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьАрхитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьAndrey Bibichev
 
Разработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoРазработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoMoscowDjango
 
Влад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseВлад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseCocoaHeads
 
Владимир Горбенко «Использование блоков в Objective-C»
Владимир Горбенко «Использование блоков в Objective-C»Владимир Горбенко «Использование блоков в Objective-C»
Владимир Горбенко «Использование блоков в Objective-C»e-Legion
 
Эффективное программирование на NodeJS
Эффективное программирование на NodeJSЭффективное программирование на NodeJS
Эффективное программирование на NodeJSYura Bogdanov
 
Быть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyБыть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyEvgeny Kompaniyets
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
Проектирование программных систем. Занятие 10
Проектирование программных систем. Занятие 10Проектирование программных систем. Занятие 10
Проектирование программных систем. Занятие 10Dima Dzuba
 
Принципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DПринципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DAndreyGeonya
 
Лекция 8. Итераторы, генераторы и модуль itertools.
 Лекция 8. Итераторы, генераторы и модуль itertools. Лекция 8. Итераторы, генераторы и модуль itertools.
Лекция 8. Итераторы, генераторы и модуль itertools.Roman Brovko
 
Yii 2. Что нового?
Yii 2. Что нового?Yii 2. Что нового?
Yii 2. Что нового?yiiconf
 
YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоYiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоAlexander Makarov
 
Fun with core graphics
Fun with core graphicsFun with core graphics
Fun with core graphicsSoftTechnics
 
Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Evgeny Borisov
 
Лекция 9. Модули, пакеты и система импорта.
Лекция 9. Модули, пакеты и система импорта.Лекция 9. Модули, пакеты и система импорта.
Лекция 9. Модули, пакеты и система импорта.Roman Brovko
 
Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)Pavel Novitsky
 

Mais procurados (20)

Поговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языкаПоговорим о JavaScript, основы и современные тенденции развития языка
Поговорим о JavaScript, основы и современные тенденции развития языка
 
Andrew Borisenko "Magic of Vue.js""
Andrew Borisenko  "Magic of Vue.js""Andrew Borisenko  "Magic of Vue.js""
Andrew Borisenko "Magic of Vue.js""
 
Decorators' recipes
Decorators' recipesDecorators' recipes
Decorators' recipes
 
Архитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьАрхитектура в Agile: слабая связность
Архитектура в Agile: слабая связность
 
Разработка расширяемых приложений на Django
Разработка расширяемых приложений на DjangoРазработка расширяемых приложений на Django
Разработка расширяемых приложений на Django
 
Влад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseВлад Ковташ — Yap Database
Влад Ковташ — Yap Database
 
Владимир Горбенко «Использование блоков в Objective-C»
Владимир Горбенко «Использование блоков в Objective-C»Владимир Горбенко «Использование блоков в Objective-C»
Владимир Горбенко «Использование блоков в Objective-C»
 
Эффективное программирование на NodeJS
Эффективное программирование на NodeJSЭффективное программирование на NodeJS
Эффективное программирование на NodeJS
 
Быть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря GroovyБыть в 10 раз эффективнее благодаря Groovy
Быть в 10 раз эффективнее благодаря Groovy
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1
 
Tomita 4марта
Tomita 4мартаTomita 4марта
Tomita 4марта
 
Проектирование программных систем. Занятие 10
Проектирование программных систем. Занятие 10Проектирование программных систем. Занятие 10
Проектирование программных систем. Занятие 10
 
Принципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.DПринципы проектирования S.O.L.I.D
Принципы проектирования S.O.L.I.D
 
Лекция 8. Итераторы, генераторы и модуль itertools.
 Лекция 8. Итераторы, генераторы и модуль itertools. Лекция 8. Итераторы, генераторы и модуль itertools.
Лекция 8. Итераторы, генераторы и модуль itertools.
 
Yii 2. Что нового?
Yii 2. Что нового?Yii 2. Что нового?
Yii 2. Что нового?
 
YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоYiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что нового
 
Fun with core graphics
Fun with core graphicsFun with core graphics
Fun with core graphics
 
Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Groovy jug-moscow-part 1
Groovy jug-moscow-part 1
 
Лекция 9. Модули, пакеты и система импорта.
Лекция 9. Модули, пакеты и система импорта.Лекция 9. Модули, пакеты и система импорта.
Лекция 9. Модули, пакеты и система импорта.
 
Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)
 

Destaque

2013-04-06 03 Ольга Павлова. Байки про Интернет-тексты
2013-04-06 03 Ольга Павлова. Байки про Интернет-тексты2013-04-06 03 Ольга Павлова. Байки про Интернет-тексты
2013-04-06 03 Ольга Павлова. Байки про Интернет-текстыОмские ИТ-субботники
 
2012-12-01 04 Разгрузочный доклад о нагрузочном тестировании
2012-12-01 04 Разгрузочный доклад о нагрузочном тестировании2012-12-01 04 Разгрузочный доклад о нагрузочном тестировании
2012-12-01 04 Разгрузочный доклад о нагрузочном тестированииОмские ИТ-субботники
 
2014-02-01 01 Евгений Тюменцев. Качественный код - миф
2014-02-01 01 Евгений Тюменцев. Качественный код - миф2014-02-01 01 Евгений Тюменцев. Качественный код - миф
2014-02-01 01 Евгений Тюменцев. Качественный код - мифОмские ИТ-субботники
 
2015 09-05 04 Андрей Аржанников. Project Tango - новые возможности мобильной ...
2015 09-05 04 Андрей Аржанников. Project Tango - новые возможности мобильной ...2015 09-05 04 Андрей Аржанников. Project Tango - новые возможности мобильной ...
2015 09-05 04 Андрей Аржанников. Project Tango - новые возможности мобильной ...Омские ИТ-субботники
 
2016-02-13 02 Дмитрий Ульянов. ГИС, форматы данных
2016-02-13 02 Дмитрий Ульянов. ГИС, форматы данных2016-02-13 02 Дмитрий Ульянов. ГИС, форматы данных
2016-02-13 02 Дмитрий Ульянов. ГИС, форматы данныхОмские ИТ-субботники
 
2012-12-01 02 Про ИТ-экосистему Омска сообщества и конференции
2012-12-01 02 Про ИТ-экосистему Омска сообщества и конференции2012-12-01 02 Про ИТ-экосистему Омска сообщества и конференции
2012-12-01 02 Про ИТ-экосистему Омска сообщества и конференцииОмские ИТ-субботники
 
2015 09-05 01 Арсений Заляев. Городские мобильные приложения
2015 09-05 01 Арсений Заляев. Городские мобильные приложения2015 09-05 01 Арсений Заляев. Городские мобильные приложения
2015 09-05 01 Арсений Заляев. Городские мобильные приложенияОмские ИТ-субботники
 
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...Омские ИТ-субботники
 
2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло
2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло
2013-11-09 02 Александр Самолов. Фреймворки - сладкое злоОмские ИТ-субботники
 
2014-01-04 03 Денис Нелюбин. Технологии - как машины захватывают мир
2014-01-04 03 Денис Нелюбин. Технологии - как машины захватывают мир2014-01-04 03 Денис Нелюбин. Технологии - как машины захватывают мир
2014-01-04 03 Денис Нелюбин. Технологии - как машины захватывают мирОмские ИТ-субботники
 
2014 06-07 02 Игорь Родионов. Drupal - когда и зачем он нужен.
2014 06-07 02 Игорь Родионов. Drupal - когда и зачем он нужен.2014 06-07 02 Игорь Родионов. Drupal - когда и зачем он нужен.
2014 06-07 02 Игорь Родионов. Drupal - когда и зачем он нужен.Омские ИТ-субботники
 
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIPОмские ИТ-субботники
 

Destaque (15)

2013-04-06 03 Ольга Павлова. Байки про Интернет-тексты
2013-04-06 03 Ольга Павлова. Байки про Интернет-тексты2013-04-06 03 Ольга Павлова. Байки про Интернет-тексты
2013-04-06 03 Ольга Павлова. Байки про Интернет-тексты
 
2012-12-01 04 Разгрузочный доклад о нагрузочном тестировании
2012-12-01 04 Разгрузочный доклад о нагрузочном тестировании2012-12-01 04 Разгрузочный доклад о нагрузочном тестировании
2012-12-01 04 Разгрузочный доклад о нагрузочном тестировании
 
2014-02-01 01 Евгений Тюменцев. Качественный код - миф
2014-02-01 01 Евгений Тюменцев. Качественный код - миф2014-02-01 01 Евгений Тюменцев. Качественный код - миф
2014-02-01 01 Евгений Тюменцев. Качественный код - миф
 
2015 09-05 04 Андрей Аржанников. Project Tango - новые возможности мобильной ...
2015 09-05 04 Андрей Аржанников. Project Tango - новые возможности мобильной ...2015 09-05 04 Андрей Аржанников. Project Tango - новые возможности мобильной ...
2015 09-05 04 Андрей Аржанников. Project Tango - новые возможности мобильной ...
 
2016-01-16 03 Денис Нелюбин. How to test a million
2016-01-16 03 Денис Нелюбин. How to test a million2016-01-16 03 Денис Нелюбин. How to test a million
2016-01-16 03 Денис Нелюбин. How to test a million
 
2016-02-13 02 Дмитрий Ульянов. ГИС, форматы данных
2016-02-13 02 Дмитрий Ульянов. ГИС, форматы данных2016-02-13 02 Дмитрий Ульянов. ГИС, форматы данных
2016-02-13 02 Дмитрий Ульянов. ГИС, форматы данных
 
2012-12-01 02 Про ИТ-экосистему Омска сообщества и конференции
2012-12-01 02 Про ИТ-экосистему Омска сообщества и конференции2012-12-01 02 Про ИТ-экосистему Омска сообщества и конференции
2012-12-01 02 Про ИТ-экосистему Омска сообщества и конференции
 
2015 09-05 01 Арсений Заляев. Городские мобильные приложения
2015 09-05 01 Арсений Заляев. Городские мобильные приложения2015 09-05 01 Арсений Заляев. Городские мобильные приложения
2015 09-05 01 Арсений Заляев. Городские мобильные приложения
 
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...
2016 06-11 Ирина Мещрякова. Выяснять задачу, формулировать задачу, доносить з...
 
2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло
2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло
2013-11-09 02 Александр Самолов. Фреймворки - сладкое зло
 
2016-04-30 03 Антон Рожков. Android + iOS = ?
2016-04-30 03 Антон Рожков. Android + iOS = ?2016-04-30 03 Антон Рожков. Android + iOS = ?
2016-04-30 03 Антон Рожков. Android + iOS = ?
 
2014-01-04 03 Денис Нелюбин. Технологии - как машины захватывают мир
2014-01-04 03 Денис Нелюбин. Технологии - как машины захватывают мир2014-01-04 03 Денис Нелюбин. Технологии - как машины захватывают мир
2014-01-04 03 Денис Нелюбин. Технологии - как машины захватывают мир
 
2015-10-03 02 Константин Борисов. 3D-печать
2015-10-03 02 Константин Борисов. 3D-печать2015-10-03 02 Константин Борисов. 3D-печать
2015-10-03 02 Константин Борисов. 3D-печать
 
2014 06-07 02 Игорь Родионов. Drupal - когда и зачем он нужен.
2014 06-07 02 Игорь Родионов. Drupal - когда и зачем он нужен.2014 06-07 02 Игорь Родионов. Drupal - когда и зачем он нужен.
2014 06-07 02 Игорь Родионов. Drupal - когда и зачем он нужен.
 
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
2016-09-17 02 Игорь Гончаровский. Техническая и программная сторона VoIP
 

Semelhante a 2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Ontico
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
 
TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаdavertmik
 
Selenium: начало работы
Selenium: начало работыSelenium: начало работы
Selenium: начало работыPaul Stashevsky
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb SpockBohdan Danyliuk
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Ontico
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill Chebunin
 
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"QA Dnepropetrovsk Community (Ukraine)
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)7bits
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview ReleaseDenis Shestakov
 
Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?Ivan Tsyganov
 
Нагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter КожуховНагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter КожуховИлья Кожухов
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveSQALab
 

Semelhante a 2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк (20)

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
 
Erlang tasty & useful stuff
Erlang tasty & useful stuffErlang tasty & useful stuff
Erlang tasty & useful stuff
 
TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщика
 
Selenium: начало работы
Selenium: начало работыSelenium: начало работы
Selenium: начало работы
 
2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock2014 Jeeconf - Geb Spock
2014 Jeeconf - Geb Spock
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
 
Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?Moscow Python Conf 2016. Почему 100% покрытие это плохо?
Moscow Python Conf 2016. Почему 100% покрытие это плохо?
 
Нагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter КожуховНагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter Кожухов
 
Java threads - part 2
Java threads - part 2Java threads - part 2
Java threads - part 2
 
Unit тестирование
Unit тестированиеUnit тестирование
Unit тестирование
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
BDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehaveBDD girls Battle: Cucumber VS. JBehave
BDD girls Battle: Cucumber VS. JBehave
 

Mais de Омские ИТ-субботники

2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!Омские ИТ-субботники
 
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKitОмские ИТ-субботники
 
2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?Омские ИТ-субботники
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальноеОмские ИТ-субботники
 
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системыОмские ИТ-субботники
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOpsОмские ИТ-субботники
 
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидацииОмские ИТ-субботники
 
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...Омские ИТ-субботники
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...Омские ИТ-субботники
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторыОмские ИТ-субботники
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленкеОмские ИТ-субботники
 
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборотОмские ИТ-субботники
 
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...Омские ИТ-субботники
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность Омские ИТ-субботники
 
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?Омские ИТ-субботники
 
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикерОмские ИТ-субботники
 
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of ThingsОмские ИТ-субботники
 

Mais de Омские ИТ-субботники (20)

2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!2017-08-12 01 Алексей Коровянский. Привет, ARKit!
2017-08-12 01 Алексей Коровянский. Привет, ARKit!
 
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
2017-08-12 02 Антон Ковалев. Texture a.k.a AsyncDisplayKit
 
2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?2017-05-06 02 Илья Сиганов. Зачем учить машины?
2017-05-06 02 Илья Сиганов. Зачем учить машины?
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
 
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
2017-02-04 03 Алексей Букуров, Игорь Циглер. DSL для правил валидации
 
2017-02-04 02 Яков Лило. Решение задач
2017-02-04 02 Яков Лило. Решение задач2017-02-04 02 Яков Лило. Решение задач
2017-02-04 02 Яков Лило. Решение задач
 
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
2017-02-04 01 Евгений Тюменцев. Выразительные возможности языков программиро...
 
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
 
2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке2016-12-03 03 Евгений Тюменцев. DSL на коленке
2016-12-03 03 Евгений Тюменцев. DSL на коленке
 
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборот
 
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...
 
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность 2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
2016-11-12 01 Егор Непомнящих. Агрегация и осведомленность
 
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
2016-10-01 03 Андрей Аржанников. Что такое Bluetooth Low Energy?
 
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
2016-10-01 02 Евгений Комаров. Как я сделал IoT-кикер
 
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
2016-10-01 01 Звиад Кардава. Welcome to Internet of Things
 
2016-09-17 03 Василий Полозов. WebRTC
2016-09-17 03 Василий Полозов. WebRTC2016-09-17 03 Василий Полозов. WebRTC
2016-09-17 03 Василий Полозов. WebRTC
 

2014-08-02 01 Егор Непомнящих. jWidget - очередной MV*-фреймворк