Слайд 2 ● Введение
● Фреймворки
● Web-приложения
● Native UI, C++ Back
![● Введение ● Фреймворки ● Web-приложения ● Native UI, C++ Back ● CouchBase ● Итог](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-1.jpg)
● CouchBase
● Итог
Слайд 10 ● PhoneGap
● Cordova
● Ionic
● Monaca, Taco… ой
Гибриды
![● PhoneGap ● Cordova ● Ionic ● Monaca, Taco… ой Гибриды](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-9.jpg)
Слайд 15Что хорошо?
● Единая Бизнес Логика
● Классные специалисты
● Идеальный интерфейс
![Что хорошо? ● Единая Бизнес Логика ● Классные специалисты ● Идеальный интерфейс ● Параллельная разработка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-14.jpg)
● Параллельная разработка
Слайд 16А что плохо?
● Дорогая разработка
● Коммуникация команд
● Дублирование интерфейса
![А что плохо? ● Дорогая разработка ● Коммуникация команд ● Дублирование интерфейса ● Мосты между языками](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-15.jpg)
● Мосты между языками
Слайд 18Мост из ObjC в C++
@interface Test : NSObject
+ (int32_t)func(NSString*)s;
@end
@implementation Test
+ (int32_t)func:(NSString*)s {
![Мост из ObjC в C++ @interface Test : NSObject + (int32_t)func(NSString*)s; @end](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-17.jpg)
return SomeCppClass::Func(std::string([s UTF8String],
[s lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
}
@end
Слайд 19Мост из Java в C++
jint JNICALL Java_Test_func(JNIEnv* jniEnv, jobject, jstring js) {
const
![Мост из Java в C++ jint JNICALL Java_Test_func(JNIEnv* jniEnv, jobject, jstring js)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-18.jpg)
jsize len = env->GetStringLength(js);
const jchar* c = env->GetStringChars(js, nullptr);
std::string s = Utf16ToUtf8(std::string(c, len));
env->ReleaseStringChars(js, c);
return SomeCppClass::Func( s );
}
Слайд 21DJINNI
user = record {
name: string;
birthday: date;
}
users_storage = interface +c {
![DJINNI user = record { name: string; birthday: date; } users_storage =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-20.jpg)
static instance(): users_storage;
find_user(id: i32): optional;
}
Слайд 29 ● NO SQL
● View (Indexes)
● Live Query
● Репликация
СouchBase
![● NO SQL ● View (Indexes) ● Live Query ● Репликация СouchBase](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-28.jpg)
Слайд 30Sync Gateway
CBL
CB
CB
CB
Change Feed
Doc update
![Sync Gateway CBL CB CB CB Change Feed Doc update](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-29.jpg)
Слайд 36 ● Быстрый старт
● Прототипирование
● Не native интерфейс
●
![● Быстрый старт ● Прототипирование ● Не native интерфейс ● Мини приложения Framework](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-35.jpg)
Слайд 37 ● Сложная БЛ
● Мосты
● Есть программисты
● Дублирование интерфейса
С++
![● Сложная БЛ ● Мосты ● Есть программисты ● Дублирование интерфейса С++](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-36.jpg)
Слайд 38 ● Большие проекты
● Сложность вхождения
● Серверная инфраструктура
CouchBase
![● Большие проекты ● Сложность вхождения ● Серверная инфраструктура CouchBase](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1182488/slide-37.jpg)