SlideShare a Scribd company logo
TypeScript
особенности разработки
Эволюция JS
JS compilers
Список всевозможных трансляторов и диалектов:
goo.gl/EAabNP (340+)
— CoffeeScript family: 12
— CoffeeScript friends (philosophically related): 25
— Static typing: 16 (TypeScript, Dart, Typecast.js, AtScript, ...)
— X-language compilers: Java, Ruby, Python, PHP, Erlang, Perl, Lua, Scala,
C#, F#, Lisp, Scheme, OCaml, Haskell, Smalltalk, C/C++, Go, ...
3
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
Достоинства CoffeeScript
— Классы
— Стрелочные функции, сохранение контекста (=>, ->)
— Безопасные сравнения === меньше ошибок
— Краткость
— ... и много чего другого
5
Почему не CoffeeScript?
— Это другой язык
— Краткость не всегда сестра таланта. Иногда брат Морзе
— Приходится уметь работать с 2мя языками
— Если вдруг прекратится поддержка, что делать?
— Есть проблемы с поиском разработчиков
6
TypeScript
Светлое будущее ES6+ уже вчера
Достоинства TypeScript
— TS - это и есть ES6+
— Режимы транспилирования: ES3, ES5, ES6
— Поддержка модулей: Commonjs, AMD
— Class, public, private, protected, static...
— Статическая типизация
— Дополнительно: Interface, Enum, tuple, ...
8
Мифы о TypeScript
Мифы о TypeScript
1. Это другой язык, как и CoffeeScript
2. Закрытый исходный код
3. Разрабатывать можно только в VisualStudio
4. Корректно работает только с Windows
5. Генерит лишний код
6. Медленный
10
Это другой язык, как и CoffeeScript
let say = (def:string):string => `TypeScript is ${def}!`;
say('pretty amazing')
11
Закрытый исходный код
Исходники по адресу:
https://github.com/Microsoft/TypeScript/
12
Разрабатывать можно только в Visual
Studio
IDE supports
— ★ WebStorm, PhpStorm, ...
— ☆ Sublime Text (2,3)
— Atom (atom.io)
— TypeEcs for Eclips (typecsdev.com)
— MS Visual Studi☺
13
Корректно работает только с Windows
npm install -g typescript
tsc my_application.ts
01.
02.
14
Генерит лишний код
var say = (def:string):string => `TypeScript is ${def}!`;
say('pretty amazing');
15
Генерит лишний код
var say = (def:string):string => `TypeScript is ${def}!`;
say('pretty amazing');
Результат:
var say = function (def) { return ("TypeScript is " + def + "!"); };
say('pretty amazing');
16
Тот же результат на CoffeeScript
(function() {
var say;
say = (function(_this) {
return function(def) {
return "TypeScript is " + def + "!";
};
})(this);
say('pretty amazing');
}).call(this);
17
var gvstr;
var _this = this; // Babel делает так же
var say = function (def) {
return _this.gvstr = "T..." + def + "!"
};
say('pretty amazing');
(function() {
var say;
say = (function(_this) {
return function(def) {
return "T..." + def + "!";
};
})(this);
say('pretty amazing');
}).call(this);
TypeScript vs CoffeeScript. Результат компиляции
18
Генерит лишний код
enum Color { Red, Green, Blue }
var color :Color = Color.Green;
19
Генерит лишний код
var Color;
(function (Color) {
Color[Color["Red"] = 0] = "Red";
Color[Color["Green"]= 1] = "Green";
Color[Color["Blue"] = 2] = "Blue";
})(Color || (Color = {}));
var color = 1;
20
Генерит лишний код
const enum Color { Red, Green, Blue }
var color :Color = Color.Green;
Результат:
var c = 1;
21
Реальная практика
использования
TypeScript
Способы подключения
— FileWatchers in IDE
— TypeScript Compiler in IDE
— tsc, grunt, gulp, ...
23
TypeScript Compiler
File → Settings → Language & Frameworks → TypeScript → Enable TypeScript Compiler
24
Управляющие
комментарии
/// <reference path="file-name.d.ts" />
26
/// <amd-module name="myName" />
/// <amd-module name="lib/md5" />
function md5() { ... }
export = md5;
define("lib/md5", ["require", "exports"], function (require, exports) {
function md5() { ... }
return md5;
});
27
/// <amd-dependency path="dir/file" />
/// <amd-dependency path="lib/global" />
define(["require", "exports", "lib/global"], function (require, exports) { ... });
28
///<amd-dependency path="file" name="var"/>
/// <amd-dependency path="legacy/base/view" name="View" />
View.someDo();
define(["require", "exports", "legacy/base/view"],
function (require, exports, View) {
View.someDo();
}
);
29
<amd-dependency path="..." name="..." />
/// <reference path="legacy/base/view.d.ts" />
/// <amd-dependency path="legacy/base/view" name="View" />
Эквивалентно записи:
/// <reference path="legacy/base/view.d.ts" />
import View = require("legacy/base/view");
30
/// <reference no-default-lib="true" />
0_o
31
Подключение
существующего
legacy кода
Пример подключения *.js в *.ts
— newApp.ts
— lib/crypt.js
33
lib/crypt.js
define(function () {
function md5() { /* ... */ }
function uid() { /* ... */ }
return {
md5: md5,
uid: uid
}
});
34
newApp.ts
class AppController {
private _uid: string;
constructor() { ... }
setUid(): string {
return this._uid = crypt.uid(); // crypt в legacy
}
init(): void { ... }
run(): void { ... }
static exec(ctrl: AppController): void { ... }
}
export = AppController;
35
newApp.ts
/// <amd-dependency path="lib/crypt" />
class AppController {
setUid(): string {}
}
define(["require", "exports", "lib/crypt"], function (require, exports) {
var AppController = (function () {
function AppController() {}
AppController.prototype.setUid = function () { this._uid = crypt.uid() };
return AppController;
})();
return AppController;
});
36
newApp.ts
/// <amd-dependency path="lib/crypt" />
declare var require:any;
var crypt = require("lib/crypt");
class AppController { ... }
define(["require", "exports", "lib/crypt"], function (require, exports) {
var crypt = require("lib/crypt");
var AppController = (function () {
function AppController() {}
AppController.prototype.setUid = function () { this._uid = crypt.uid() };
return AppController;
})();
return AppController;
});
37
crypt.d.ts
declare module "lib/crypt" {
export function md5() :string;
export function uid() :string;
}
38
newApp.ts
/// <require path="lib/crypt.d.ts" />
import crypt = require("lib/crypt");
class AppController { ... }
define(["require", "exports", "lib/crypt"], function (require, exports, crypt) {
var AppController = (function () {
function AppController() {}
AppController.prototype.setUid = function () { this._uid = crypt.uid() };
return AppController;
})();
return AppController;
});
39
TypeScript
+
React
TypeScript ничего не знает про JSX
render: function() {
return <div className="train">
<div className="title">{this.state.title}</div>
</div>
}
41
TypeScript умеет жить с React
render: function() {
return React.jsx(
"<div className="train">
<div className="title">{this.state.title}</div>
</div>"
)
}
42
TypeScript: особенности разработки / Александр Майоров (Tutu.ru)
React Templates
— npm install react-templates -g
— npm install grunt-react-templates --save-dev
— WebStorm plugin: http://plugins.jetbrains.com/plugin/7648
Документация: wix.github.io/react-templates
44
Пример работы TS c RT(JSX)
Структура компонента
.../page/train/seats/carMap/carMap/
— carMapItem
— carMapItem.rt
— carMapItem.rt.js
— carMapItem.js / carMapItem.ts
— modelFactory.ts
45
carMapItem.rt
<rt-require dependency="bemp/blocks/popup/component" as="Popup"/>
<rt-require dependency="bemp/blocks/train/seats/carMap/legend/component" as="Legend"/>
<div class="car_wrapper">
<Ereg isAvailable={this.props...} schemeHeight={this...} className="...">
</Ereg>{this.props.children}<div class="..." rt-if="...">
<Popup
innerHtml={this.props.errorMessage}
active="{!this.state.popupHiddenByClick}"
onClose={this.onPopupClosed}></Popup>
</div>
<Legend rt-if="this.props.showLegend" className="..."/>
</div>
46
carMapItem.rt.js
define([
'react/addons', 'lodash', 'bemp/blocks/popup/component', ...
], function (React, _, Popup, ...) {
'use strict';
return function () {
return React.createElement('div', {...}, React.createElement(Ereg, {
'isAvailable': this.props.isEregAvailable, ...
}),
this.props.errorMessage
? React.createElement('div', {...}, React.createElement(Popup, {
'innerHtml': this.props.errorMessage,
'onClose': this.onPopupClosed
}))
: null,
...
};
});
47
carMapItem.js
define(['react', './carMapItem.rt', ...], function (React, template, ...) {
return React.createClass({
displayName: 'carMapItem',
getDefaultProps: function () {
return { ... }
},
checkErrorMessage: function (props) { ... },
getInitialState: function () {
return { ... }
},
onPopupClosed: function () {
this.setState({ ... })
},
render: template
});
});
48
carMapItem.ts
import React = require("react");
import template = require("./carMapItem.rt");
class carMapItem extends React.Component {
public displayName:string = 'carMapItem',
static defaultProps = {
...
onErrorShow: () => void 0
}
getInitialState() { return { ... } }
onPopupClosed() { this.setState({ ... }) }
render() { return template }
}
export = carMapItem;
49
TypeScript
или
Facebook Flow?
TypeScript
или
Babeljs?
TypeScript vs Babel
— TypeScript — это Babel + Flow
— Babel — это TypeScript без проверки типов
52
Выбираем Flow если ...
— ... хочется JSX
— ... хочется Babel JS, но не хочется MS TS
53
Что нравится в Flow
— Режимы типизации
— Проверка типов без указания
— Возможность явно указать типы как в TypeScript
— Нативная поддержка JSX
54
Что не нравится в Flow
— Официально поддерживаются платформы: Mac, Linux, Windows
— Распространяется в виде бинарника
— Нет (не было) хорошей поддержки в IDE
55
Почему
нам
нравится
TypeScript
Почему нам нравится TypeScript
— Пишем на ES6+
— Типизация защищает от опечаток и ошибок
— Возможность описывать интерфейсы
— Инструменты для реализации ООП
— Бекендеры понимают наш код!
— Возможность управлять AMD
— Активное развитие и поддержка от MS. Уже доступен TS 1.5 beta
57
TypeScript обрастает инструментами
— Definition manager http://definitelytyped.org/tsd/
— Doc generator http://typedoc.io/
— Различные плагины для IDE, grunt, gulp, ...
58
TypeScript завтра
— ES6 module support, decorators, computed properties, for..of
— AMD-dependency optional names
— Настройка поведением через конфиг tsconfig.json
— Angular 2.0
59
Вопросы?
TypeScript
Особенности разработки
Александр Майоров, Tutu.ru
— mayorov@tutu.ru
— majorov.su
Презентация: frontendconf.majorov.su
61

More Related Content

PDF
Как перестать отлаживать асинхронный код и начать жить / Андрей Саломатин (Pr...
Ontico
 
PDF
Михаил Давыдов — JavaScript: Базовые знания
Yandex
 
PPTX
Александр Фокин, Рефлексия в C++
Sergey Platonov
 
PDF
Михаил Давыдов: JavaScript. Базовые знания
Yandex
 
PDF
Михаил Давыдов - JavaScript. Базовые знания
Yandex
 
PDF
Борис Сазонов, RAII потоки и CancellationToken в C++
Sergey Platonov
 
PDF
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
Yandex
 
PPT
Groovy On Grails
guest32215a
 
Как перестать отлаживать асинхронный код и начать жить / Андрей Саломатин (Pr...
Ontico
 
Михаил Давыдов — JavaScript: Базовые знания
Yandex
 
Александр Фокин, Рефлексия в C++
Sergey Platonov
 
Михаил Давыдов: JavaScript. Базовые знания
Yandex
 
Михаил Давыдов - JavaScript. Базовые знания
Yandex
 
Борис Сазонов, RAII потоки и CancellationToken в C++
Sergey Platonov
 
"Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты". Ма...
Yandex
 
Groovy On Grails
guest32215a
 

What's hot (20)

PDF
JPoint 2015 - Javassist на службе Java-разработчика
Anton Arhipov
 
PDF
Павел Довгалюк, Обратная отладка
Sergey Platonov
 
PDF
Component Inspector
Roman Dvornov
 
PDF
DI в C++ тонкости и нюансы
Platonov Sergey
 
PPTX
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Sergey Platonov
 
PDF
JPoint 2016 - Etudes of DIY Java profiler
Anton Arhipov
 
PDF
JavaScript. Basics (in russian)
Mikhail Davydov
 
PDF
Полухин Антон, Как делать не надо: C++ велосипедостроение для профессионалов
Sergey Platonov
 
PDF
Почему Mojolicious?
Anatoly Sharifulin
 
PPTX
Павел Беликов, Как избежать ошибок, используя современный C++
Sergey Platonov
 
PDF
Пластилиновый код: как перестать кодить и начать жить
Moscow.pm
 
PPTX
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Sergey Platonov
 
PDF
Антон Полухин, Немного о Boost
Sergey Platonov
 
ODP
Как за час сделать недельную работу
corehard_by
 
PDF
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Sergey Platonov
 
PDF
Joker 2016 - Bytecode 101
Anton Arhipov
 
PPTX
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Platonov Sergey
 
PDF
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Sergey Platonov
 
PDF
Функционально декларативный дизайн на C++
Alexander Granin
 
PPTX
Deep Dive C# by Sergey Teplyakov
Alex Tumanoff
 
JPoint 2015 - Javassist на службе Java-разработчика
Anton Arhipov
 
Павел Довгалюк, Обратная отладка
Sergey Platonov
 
Component Inspector
Roman Dvornov
 
DI в C++ тонкости и нюансы
Platonov Sergey
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Sergey Platonov
 
JPoint 2016 - Etudes of DIY Java profiler
Anton Arhipov
 
JavaScript. Basics (in russian)
Mikhail Davydov
 
Полухин Антон, Как делать не надо: C++ велосипедостроение для профессионалов
Sergey Platonov
 
Почему Mojolicious?
Anatoly Sharifulin
 
Павел Беликов, Как избежать ошибок, используя современный C++
Sergey Platonov
 
Пластилиновый код: как перестать кодить и начать жить
Moscow.pm
 
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Sergey Platonov
 
Антон Полухин, Немного о Boost
Sergey Platonov
 
Как за час сделать недельную работу
corehard_by
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Sergey Platonov
 
Joker 2016 - Bytecode 101
Anton Arhipov
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Platonov Sergey
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Sergey Platonov
 
Функционально декларативный дизайн на C++
Alexander Granin
 
Deep Dive C# by Sergey Teplyakov
Alex Tumanoff
 
Ad

Viewers also liked (20)

PPTX
TypeScript Overview
Aniruddha Chakrabarti
 
PDF
Typescript + Graphql = <3
felixbillon
 
PPTX
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
 
PDF
Power Leveling your TypeScript
Offirmo
 
PPTX
Typescript tips & tricks
Ori Calvo
 
PPTX
TypeScript
GetDev.NET
 
PDF
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
Micael Gallego
 
PPTX
Typescript Fundamentals
Sunny Sharma
 
PDF
TypeScript Seminar
Haim Michael
 
PDF
Angular 2 - Typescript
Nathan Krasney
 
PPTX
TypeScript - Silver Bullet for the Full-stack Developers
Rutenis Turcinas
 
PDF
TypeScript - An Introduction
NexThoughts Technologies
 
PDF
TypeScript for Java Developers
Yakov Fain
 
PDF
TypeScript Introduction
Dmitry Sheiko
 
PPTX
Typescript ppt
akhilsreyas
 
PDF
Александр Русаков - TypeScript 2 in action
MoscowJS
 
PPT
TypeScript Presentation
Patrick John Pacaña
 
PPTX
Why TypeScript?
FITC
 
PDF
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
PDF
TypeScript: Angular's Secret Weapon
Laurent Duveau
 
TypeScript Overview
Aniruddha Chakrabarti
 
Typescript + Graphql = <3
felixbillon
 
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
 
Power Leveling your TypeScript
Offirmo
 
Typescript tips & tricks
Ori Calvo
 
TypeScript
GetDev.NET
 
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
Micael Gallego
 
Typescript Fundamentals
Sunny Sharma
 
TypeScript Seminar
Haim Michael
 
Angular 2 - Typescript
Nathan Krasney
 
TypeScript - Silver Bullet for the Full-stack Developers
Rutenis Turcinas
 
TypeScript - An Introduction
NexThoughts Technologies
 
TypeScript for Java Developers
Yakov Fain
 
TypeScript Introduction
Dmitry Sheiko
 
Typescript ppt
akhilsreyas
 
Александр Русаков - TypeScript 2 in action
MoscowJS
 
TypeScript Presentation
Patrick John Pacaña
 
Why TypeScript?
FITC
 
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
TypeScript: Angular's Secret Weapon
Laurent Duveau
 
Ad

Similar to TypeScript: особенности разработки / Александр Майоров (Tutu.ru) (20)

PPTX
Статический анализ кода: Что? Как? Зачем?
Andrey Karpov
 
PPTX
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Yandex
 
PDF
Инструментируй это
Roman Dvornov
 
PPTX
Зачем нужна Scala?
Vasil Remeniuk
 
PDF
functional patterns - dotnetconf'11
0xffAA
 
PPTX
Статический анализ кода
Pavel Tsukanov
 
PPTX
статический анализ кода
Andrey Karpov
 
PPTX
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Yandex
 
PDF
Михаил Давыдов - Транспорт, ajax
Yandex
 
PDF
JavaScript не нужен, CoffeeScript - мимими
Evgeny Vlasenko
 
PDF
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
it-people
 
PPTX
Tdd webpack + testem + mocha + chai
Michael Chernobrov
 
PPTX
NetworkUA - 2012 - Introduction TypeScript
Dmytro Mindra
 
PDF
Как выглядит современный фронтенд
Timophy Chaptykov
 
PPTX
Ciklum .NET Saturday - Introduction to TypeScript
Dmytro Mindra
 
PPTX
automation is iOS development
Ivan Trifonov
 
PDF
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Yandex
 
PDF
Decorators' recipes
Yury Yurevich
 
PPTX
DSLs in Lisp and Clojure
Vasil Remeniuk
 
PPTX
Node.js введение в технологию, КПИ #ITmeetingKPI
Timur Shemsedinov
 
Статический анализ кода: Что? Как? Зачем?
Andrey Karpov
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Yandex
 
Инструментируй это
Roman Dvornov
 
Зачем нужна Scala?
Vasil Remeniuk
 
functional patterns - dotnetconf'11
0xffAA
 
Статический анализ кода
Pavel Tsukanov
 
статический анализ кода
Andrey Karpov
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Yandex
 
Михаил Давыдов - Транспорт, ajax
Yandex
 
JavaScript не нужен, CoffeeScript - мимими
Evgeny Vlasenko
 
View как чистая функция от состояния базы данных - Илья Беда, bro.agency
it-people
 
Tdd webpack + testem + mocha + chai
Michael Chernobrov
 
NetworkUA - 2012 - Introduction TypeScript
Dmytro Mindra
 
Как выглядит современный фронтенд
Timophy Chaptykov
 
Ciklum .NET Saturday - Introduction to TypeScript
Dmytro Mindra
 
automation is iOS development
Ivan Trifonov
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Yandex
 
Decorators' recipes
Yury Yurevich
 
DSLs in Lisp and Clojure
Vasil Remeniuk
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Timur Shemsedinov
 

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 

TypeScript: особенности разработки / Александр Майоров (Tutu.ru)