SlideShare a Scribd company logo
Григорий Петров
Портирование Web SDK с JS на TS
Voximplant
Dump.conf, Екатеринбург, 04.2017
Что сейчас будет?
Рассказывает Григорий Петров
Специализация Руководство разработкой
Чем занимается Технический евангелист
Опыт Более 15 лет
Время выступления 45 минут
Вопросы В конце выступления, 15 минут
2
Что портировали?
- Web SDK облачной телефонии
Что портировали?
- Web SDK облачной телефонии
- 13kloc, 250kb
Что портировали?
- Web SDK облачной телефонии
- 13kloc, 250kb
- Немного, да? :)
Что портировали?
- Web SDK облачной телефонии
- 13kloc, 250kb
- Немного, да? :)
- Зато там было много WebRTC...
На что портировали?
На что портировали?
TypeScript
На что портировали?
TypeScript
- Создан в недрах Microsoft 4 года назад
На что портировали?
TypeScript
- Создан в недрах Microsoft 4 года назад
- От автора Delphi и C#
На что портировали?
TypeScript
- Создан в недрах Microsoft 4 года назад
- От автора Delphi и C#
- Обратно совместим с JavaScript
На что портировали?
TypeScript
- Создан в недрах Microsoft 4 года назад
- От автора Delphi и C#
- Обратно совместим с JavaScript
- Тулчейн в экосистеме npm
На что портировали?
TypeScript
- Создан в недрах Microsoft 4 года назад
- От автора Delphi и C#
- Обратно совместим с JavaScript
- Тулчейн в экосистеме npm yarn
На что портировали?
TypeScript
- Создан в недрах Microsoft 4 года назад
- От автора Delphi и C#
- Обратно совместим с JavaScript
- Тулчейн в экосистеме npm yarn
- Добавляет ES6, ES7 ...
На что портировали?
TypeScript
- Создан в недрах Microsoft 4 года назад
- От автора Delphi и C#
- Обратно совместим с JavaScript
- Тулчейн в экосистеме npm yarn
- Добавляет ES6, ES7 ES2016 ...
На что портировали?
TypeScript
- Создан в недрах Microsoft 4 года назад
- От автора Delphi и C#
- Обратно совместим с JavaScript
- Тулчейн в экосистеме npm yarn
- Добавляет ES6, ES7 ES2016 ... и типы!
Проблема сложности
Мы хотим, чтобы код был по делу
А не по инфраструктуре
Почему TypeScript?
Ведь есть же:
● ES6/7/Babel
● Dart
● Flow
● Elm
● EMScripten
● CoffeScript, наконец! :)
TypeScript
Потому что Microsoft :)
TypeScript
Потому что Microsoft :)
TypeScript
Потому что Microsoft :)
Потому что TS это JS
TypeScript
Потому что Microsoft :)
Потому что TS это JS
И async
TypeScript
Потому что Microsoft :)
Потому что TS это JS
И async
И декораторы
TypeScript
Потому что Microsoft :)
Потому что TS это JS
И async
И декораторы
И интерфейсы
TypeScript
Потому что Microsoft :)
Потому что TS это JS
И async
И декораторы
И интерфейсы
И типы
Типы: капкан для ошибок
Типы: капкан для ошибок
The main purpose of a type system is to reduce
possibilities for bugs in computer programs
- wikipedia
Как работают капканы
Без капкана:
function addUser(name) { …
// где-то в другом месте
addUser(user.name)
С капканом:
function addUser(name: string) { …
// где-то в другом месте
addUser(user.name)
Через полгода:
// жертва рефакторинга
addUser(id)
Через полгода:
// ошибка проверки типов
addUser(id)
Без капкана:
function addUser(name) { …
// где-то в другом месте
addUser(user.name)
С капканом:
function addUser(name: string) { …
// где-то в другом месте
addUser(user.name)
Через полгода:
// жертва рефакторинга
addUser(id)
Через полгода:
// ошибка проверки типов
addUser(id)
Плюсы и минусы типизаций
Dynamic typing
- Скорость разработки
- Капканы срабатывают не сразу
- Капкан может не поставиться
Static typing
- Скорость разработки
- Нужно думать
- Капканы срабатывают сразу
Плюсы и минусы типов
Dynamic typing
- Скорость разработки
- Капканы срабатывают не сразу
- Капкан может не поставиться
Static typing
- Скорость разработки
- Нужно думать
- Капканы срабатывают сразу
TypeScript: Gradual Typing
Плюсы и минусы типов
Dynamic typing
- Скорость разработки
- Капканы срабатывают не сразу
- Капкан может не поставиться
Static typing
- Скорость разработки
- Нужно думать
- Капканы срабатывают сразу
TypeScript: Gradual Typing
- Добавляем типы только там, где надо
Плюсы и минусы типов
Dynamic typing
- Скорость разработки
- Капканы срабатывают не сразу
- Капкан может не поставиться
Static typing
- Скорость разработки
- Нужно думать
- Капканы срабатывают сразу
TypeScript: Gradual Typing
- Добавляем типы только там, где надо
- Быстрое прототипирование и модификации
Плюсы и минусы типов
Dynamic typing
- Скорость разработки
- Капканы срабатывают не сразу
- Капкан может не поставиться
Static typing
- Скорость разработки
- Нужно думать
- Капканы срабатывают сразу
TypeScript: Gradual Typing
- Добавляем типы только там, где надо
- Быстрое прототипирование и модификации
- Защита кода после стабилизации
Зачем типы нам в Voximplant
Фиксируем контракты методов
Зачем типы нам в Voximplant
Фиксируем контракты методов
Страхуем себя в мире WebRTC
А что будет у клиентов?
А у клиентов будет JavaScript
TypeScript ES2015 ES5
class Foo {
bar = () => {
console.log(this);
}
}
class Foo {
constructor() {
this.bar = () => {
console.log(this);
};
}
}
var Foo = (function () {
function Foo() {
var _this = this;
this.bar = function () {
console.log(_this);
};
}
return Foo;
}());
А что будет у клиентов?
С классами тоже все будет хорошо *
TypeScript ES2015 ES5
class Foo {
bar = () => {
console.log(this);
}
}
class Foo {
constructor() {
this.bar = () => {
console.log(this);
};
}
}
var Foo = (function () {
function Foo() {
var _this = this;
this.bar = function () {
console.log(_this);
};
}
return Foo;
}());
* Если не используется что-нибудь атипичное
Но оно компилируется!
Но оно компилируется!
Что будет со стектрейсами?
Но оно компилируется!
Что будет со стектрейсами?
Все будет хорошо
Но оно компилируется!
Что будет со стектрейсами?
Все будет хорошо
Символы есть
Но оно компилируется!
Что будет со стектрейсами?
Все будет хорошо
Символы есть
На выходе “читаемый” JavaScript
А что с jQuery и другим легаси?
А что с jQuery и другим легаси?
Все хорошо, оно обратно совместимо
А что с jQuery и другим легаси?
Все хорошо, оно обратно совместимо
А если скачать типы - то и типизировано
Распухнет и будет тормозить?
Распухнет и будет тормозить?
JS компилируется в JS
Распухнет и будет тормозить?
JS компилируется в JS
Бонусы компилируются адекватно
А что с креативным JavaScript?
А что с креативным JavaScript?
У нас есть функция-enum-объект!
А что с креативным JavaScript?
У нас есть функция-enum-объект!
Придется использовать any
Постепенный переход на TS?
Постепенный переход на TS?
Файлы могут быть JS или TS
Постепенный переход на TS?
Файлы могут быть JS или TS
Type inference работает всегда
Постепенный переход на TS?
Файлы могут быть JS или TS
Type inference работает всегда
Изменить тип файла - миллион ошибок
Тулчейн?
yarn init .
yarn install typescript
./node_modules/.bin/tsc entrypoint.ts
Вот прямо ‘entrypoint’?
- Синтаксис ESM
- Генерация ESM/CJS/AMD/UMD/SystemJS
Откуда брать типы для либ?
"dependencies": {
"@types/jquery": "^2.0.41",
"jquery": "^2.0.41",
А если типов не завезли?
declare var $;
Чем это все собирать?
Чем это все собирать?
Чем угодно
Чем это все собирать?
Чем угодно
Angular 2 ничем не собирает (tsc)
Чем это все собирать?
Чем угодно
Angular 2 ничем не собирает (tsc)
Мы используем Webpack
А как с CI?
А как с CI?
Одним словом: npm
А как с CI?
Одним словом: npm
Мы используем Gitlab CI
Тестирование?
@suite("mocha typescript")
class Basic {
@test("should pass on assert")
asserts_pass() {
Тестирование?
@suite("mocha typescript")
class Basic {
@test("should pass on assert")
asserts_pass() {
Мы используем “intern” с webdriver
Самое главное
Самое главное
Gradual Typing
Самое главное
Gradual Typing
Быстрые эксперименты
Самое главное
Gradual Typing
Быстрые эксперименты
Постепенное обрастание типами
Ошибки компилятора
Как в C++ 20 лет назад:
Cannot find name 'foo'
Cannot find module 'foo'
Property 'bar' does not exist on type 'foo'
Нужны сильные разработчики
Иначе - будет больно
Ловушки для ошибок
Ловушки для ошибок
Все новое из мира JS
Ловушки для ошибок
Все новое из мира JS
Возможен постепенный переход
Ловушки для ошибок
Все новое из мира JS
Возможен постепенный переход
Поддерживает Microsoft
Ловушки для ошибок
Все новое из мира JS
Возможен постепенный переход
Поддерживает Microsoft
npm экосистема
Ловушки для ошибок
Все новое из мира JS
Возможен постепенный переход
Поддерживает Microsoft
npm экосистема
Ловушки нужно ставить вручную
Ловушки для ошибок
Все новое из мира JS
Возможен постепенный переход
Поддерживает Microsoft
npm экосистема
Ловушки нужно ставить вручную
Адские сообщения об ошибках
Ловушки для ошибок
Все новое из мира JS
Возможен постепенный переход
Поддерживает Microsoft
npm экосистема
Ловушки нужно ставить вручную
Адские сообщения об ошибках
Нужны сильные программисты
Ловушки для ошибок
Все новое из мира JS
Возможен постепенный переход
Поддерживает Microsoft
npm экосистема
Ловушки нужно ставить вручную
Адские сообщения об ошибках
Нужны сильные программисты
Не все можно явно переписать
Ловушки для ошибок
Все новое из мира JS
Возможен постепенный переход
Поддерживает Microsoft
npm экосистема
Ловушки нужно ставить вручную
Адские сообщения об ошибках
Нужны сильные программисты
Не все можно явно переписать
Не для всего есть готовые типы
Мнение Voximplant?
Мнение Voximplant?
- Контракты, интерфейсы, ловушки
Мнение Voximplant?
- Контракты, интерфейсы, ловушки
- 3 человеко-месяца
Мнение Voximplant?
- Контракты, интерфейсы, ловушки
- 3 человеко-месяца
- 250kb -> 800kb
Мнение Voximplant?
- Контракты, интерфейсы, ловушки
- 3 человеко-месяца
- 250kb -> 800kb
- 12kloc -> 20kloc
Это всё!
Вопросы?
Григорий Петров
grigory.v.p@gmail.com
http://facebook.com/grigoryvp
96

More Related Content

What's hot

Алексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHPАлексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHP
Oleg Poludnenko
 
Как перевести любой контент (статью, интерфейс, приложение) на любой язык
Как перевести любой контент (статью, интерфейс, приложение) на любой языкКак перевести любой контент (статью, интерфейс, приложение) на любой язык
Как перевести любой контент (статью, интерфейс, приложение) на любой язык
NaZapad
 
Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»
SpbDotNet Community
 
CodeFest 2011. Алиев Д. — Natural language processing (Обработка естественног...
CodeFest 2011. Алиев Д. — Natural language processing (Обработка естественног...CodeFest 2011. Алиев Д. — Natural language processing (Обработка естественног...
CodeFest 2011. Алиев Д. — Natural language processing (Обработка естественног...CodeFest
 
Оптицизация: на грани и за
Оптицизация: на грани и заОптицизация: на грани и за
Оптицизация: на грани и за
Anton Patrushev
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковAlex Tumanoff
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Python
automated-testing.info
 
Highload2009 Rybak Badoo Os
Highload2009 Rybak Badoo OsHighload2009 Rybak Badoo Os
Highload2009 Rybak Badoo OsHighLoad2009
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
Daniel Podolsky
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодером
Kirill Kovalchuk
 
мифы о спарке
мифы о спарке мифы о спарке
мифы о спарке
Evgeny Borisov
 
Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥
Oleg Poludnenko
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
Daniel Podolsky
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Ontico
 
Опыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игрыОпыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игры
Yuri Zhloba
 
Лев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про ErlangЛев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про Erlang
Yury Yurevich
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON
 
Scala performance под капотом
Scala performance под капотомScala performance под капотом
Scala performance под капотом
Roman Grebennikov
 
Server Side Javascript (ru)
Server Side Javascript (ru)Server Side Javascript (ru)
Server Side Javascript (ru)
Bakyt Niyazov
 

What's hot (20)

Алексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHPАлексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHP
 
Как перевести любой контент (статью, интерфейс, приложение) на любой язык
Как перевести любой контент (статью, интерфейс, приложение) на любой языкКак перевести любой контент (статью, интерфейс, приложение) на любой язык
Как перевести любой контент (статью, интерфейс, приложение) на любой язык
 
Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»Валерий Петров «Модель памяти .NET»
Валерий Петров «Модель памяти .NET»
 
CodeFest 2011. Алиев Д. — Natural language processing (Обработка естественног...
CodeFest 2011. Алиев Д. — Natural language processing (Обработка естественног...CodeFest 2011. Алиев Д. — Natural language processing (Обработка естественног...
CodeFest 2011. Алиев Д. — Natural language processing (Обработка естественног...
 
Оптицизация: на грани и за
Оптицизация: на грани и заОптицизация: на грани и за
Оптицизация: на грани и за
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис Цыплаков
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Python
 
Highload2009 Rybak Badoo Os
Highload2009 Rybak Badoo OsHighload2009 Rybak Badoo Os
Highload2009 Rybak Badoo Os
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодером
 
мифы о спарке
мифы о спарке мифы о спарке
мифы о спарке
 
мир без Jsp. thymeleaf 2.0
мир без Jsp. thymeleaf 2.0мир без Jsp. thymeleaf 2.0
мир без Jsp. thymeleaf 2.0
 
Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
 
Опыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игрыОпыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игры
 
Лев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про ErlangЛев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про Erlang
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодня
 
Scala performance под капотом
Scala performance под капотомScala performance под капотом
Scala performance под капотом
 
Server Side Javascript (ru)
Server Side Javascript (ru)Server Side Javascript (ru)
Server Side Javascript (ru)
 

Similar to "Портирование Web SDK с JS на TS" Петров Григорий, Voximplant

Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
Pavel Chertorogov
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
ITCrowd Almaty
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Anthony Marchenko
 
Презентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьПрезентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начать
Dmitriy Polisadov
 
Разработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScriptРазработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScript
Stas Vyschepan
 
Joker2014
Joker2014Joker2014
Joker2014
Igor Kmets
 
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Yandex
 
Backend на Swift. Существует и работает! / Роман Мочалов (Improve Digital)
Backend на Swift. Существует и работает! / Роман Мочалов (Improve Digital)Backend на Swift. Существует и работает! / Роман Мочалов (Improve Digital)
Backend на Swift. Существует и работает! / Роман Мочалов (Improve Digital)
Ontico
 
Фишки и прелести TypeScript
Фишки и прелести TypeScriptФишки и прелести TypeScript
Фишки и прелести TypeScript
Александр Майоров
 
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Ontico
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NET
lugnsk
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
Anton Piskunov
 
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаАндрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Sergey Platonov
 
Статический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибокСтатический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибок
Andrey Karpov
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
SQALab
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
Alexander Syrotenko
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 

Similar to "Портирование Web SDK с JS на TS" Петров Григорий, Voximplant (20)

Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
 
Презентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начатьПрезентация: 1С-Bitrix — как начать
Презентация: 1С-Bitrix — как начать
 
Разработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScriptРазработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScript
 
Joker2014
Joker2014Joker2014
Joker2014
 
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
 
Backend на Swift. Существует и работает! / Роман Мочалов (Improve Digital)
Backend на Swift. Существует и работает! / Роман Мочалов (Improve Digital)Backend на Swift. Существует и работает! / Роман Мочалов (Improve Digital)
Backend на Swift. Существует и работает! / Роман Мочалов (Improve Digital)
 
Фишки и прелести TypeScript
Фишки и прелести TypeScriptФишки и прелести TypeScript
Фишки и прелести TypeScript
 
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
Opensource на .NET
Opensource на .NETOpensource на .NET
Opensource на .NET
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаАндрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кода
 
Статический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибокСтатический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибок
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
 
JPHP
JPHPJPHP
JPHP
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 

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
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 

"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant