SlideShare a Scribd company logo
1 of 69
Download to read offline
Stylelint:
Как и зачем линтить CSS
Андрей Ситник,
Злые марсиане
1
2
Наш опенсорс
3
История человечества
10К40К250К
4
5
Неолитическая революция
6
7
История линтеров
8
Исходный код
Парсер
Анализ
Список
ошибок
Линтер
9
1978 — первый линтер Lint
10
1995 — JavaScript
// true
1 == "1"
// забыт var
count = 1
11
ЛинтерыCoffeeScript или
12
CoffeeScript :-(
13
Эволюция линтеров
JSLint JSHint ESLint→ →
14
ESLint: белый список
module.exports = {
'rules': {
'space-before-function-paren': [2],
'no-shadow-restricted-names': [2],
'computed-property-spacing': [2],
'no-empty-character-class': [2],
'no-irregular-whitespace': [2],
'no-unexpected-multiline': [2],
'no-multiple-empty-lines': [2],
'no-constant-condition': [2],
…
15
ESLint: модульность
Исходный код
Парсер
Плагин 1
Список ошибок
16
Плагин 2
ESLint: автоисправление
if(foo) {
bar()}
if (foo) {
bar();
}
eslint --fix *.js
17
Популярные зависимости
1. mocha
2. chai
3. lodash
4. grunt
5. gulp
6. eslint
7. babel-preset-es2015
8. request
9. async
10. should
Источник: https://gist.github.com/feross/e0882df2fe673d6ce064
18
Линтеры
CSS
19
Поддержка синтаксисов
SCSS
CSSLint
SCSS Lint
CSSComb
CSS Less
20
Функции
Белый
список
CSSLint
SCSS Lint
CSSComb
Модульность Исправление
21
Количество правил
CSSLint
SCSS Lint
CSSComb
38
26
62
22
23
Stylelint
24
Исходный код
Парсер
Плагин 1
Список ошибок
Плагин 2
25
Модульность
26
Единый фреймворк
Полифилы
Минификация Линтинг
Примеси Изоляция
27
Сменные парсеры
CSS
SCSS Less
SugarSS Битый CSS
28
Правило — плагин PostCSS
const ruleName = "comment-no-empty"
(root, result) => {
root.walkComments(comment => {
if ( comment.text && comment.text.length === 0 ) {
report({ … })
}
}
}
29
Белый список правил
module.exports = {
'rules': {
'at-rule-name-case': 'lower',
'at-rule-semicolon-newline-after': 'always',
'block-closing-brace-newline-after': 'always',
'color-hex-case': 'lower',
'color-hex-length': 'short',
'color-hex-length': 'short',
'color-no-invalid-hex': true,
'indentation': 2,
…
30
Исправление
.foo {
color:black}
.foo {
color:black;
}
stylefmt *.css
31
postcss-browser-reporter
32
SCSS
CSSLint
SCSS Lint
CSSComb
CSS Less
Stylelint
33
Белый
список
CSSLint
SCSS Lint
CSSComb
Модульность Исправление
Stylelint
34
CSSLint
SCSS Lint
CSSComb
38
26
62
Stylelint 168
Легко писать новые правила
35
Пользователи Stylelint
36
Популярность
37
Зачем линтить
38
Cеньор
39
Юниор
Код-ревью
40
CеньорЮниор
1. Автоматическое код-ревью
Stylelint
«Я понимаю,
что ты думаешь …,
но …»
41
2. Критика роботов приятнее
42
3. Обмен практиками
module.exports = {
'extend': 'stylelint-config-wordpress'
}
43
4. Поиск ошибок
'color-no-invalid-hex',
'function-linear-gradient-no-nonstandard-direction',
'time-no-imperceptible',
'property-no-unknown',
'property-no-vendor-prefix',
'declaration-block-no-duplicate-properties',
'declaration-block-no-ignored-properties',
'declaration-block-no-shorthand-property-overrides',
'selector-class-pattern',
'selector-max-compound-selectors',
'selector-pseudo-element-no-unknown',
'selector-type-no-unknown',
'media-feature-no-missing-punctuation',
'no-unsupported-browser-features',
'no-unknown-animations',
'no-indistinguishable-colors',
'no-descending-specificity',
'no-browser-hacks'
44
no-descending-speci•city
#container .foo {
top: 10px;
}
…
.foo {
/* Expected selector .foo come before #container .foo */
top: 0;
}
45
no-unsupported-browser-features
.foo {
opacity: 1;
/* Features like this, which is unsupported in IE 8 */
}
46
declaration-block-no-ignored-properties
.foo {
display: inline;
width: 100px;
/* Unexpected width with display: inline */
}
47
declaration-block-no-shorthand-property-overrides
.foo {
margin-top: 10px;
margin: 0 auto;
/* Unexpected shorthand margin after margin-top */
}
48
no-indistinguishable-colors
.foo {
color: black;
}
…
.bar {
background: #010101;
/* Unexpected indistinguishable colors #010101 and black */
}
49
Как линтить
50
1. Линтер в текстовом редакторе
51
2. lint-staged — перед коммитом
"scripts": {
"lint-staged": "lint-staged",
},
"lint-staged": {
"*.css": "stylelint"
},
"pre-commit": ["lint-staged"]
52
3. Линтер в CI
53
4. Начните с популярного
module.exports = {
'extend': 'stylelint-config-standard'
}
54
55
5. Добавляйте плагины
module.exports = {
'plugins': [
'stylelint-scss'
],
'rules': {
'scss/selector-no-redundant-nesting-selector': true
}
}
56
dustinspecker/awesome-eslint
57
6. Линтер — стайл-гайд
«В стайл-гайде не должно
быть правил, которые
нельзя описать в
алгоритме»
58
7. Делайте исключения
.foo.is-started {
/* stylelint-disable no-unknown-animations */
/* Animation will be generated in JS*/
animation-name: js-generated-path;
}
59
stylelint-disable-reason
.foo.is-started {
/* stylelint-disable no-unknown-animations */
animation-name: js-generated-path;
/* Expected comment reason after `stylelint-disable` comment */
}
60
8. Пишите свои правила
import { utils } from "stylelint"
export const ruleName = namespace("ИМЯ")
export const messages = utils.ruleMessages(ruleName, {
expected: "ТЕКСТ ОШИБКИ",
})
export default function () {
return (root, result) => {
/* ЛОГИКА */
}
}
61
Повторы цветов — в переменные
colors = { }
return (root, result) => {
root.walkDecls(decl => {
decl.value.match(/#[0-9a-f]{3,6}/, color => {
if ( colors[color] ) {
utils.report({ … })
} else {
colors[color] = true
}
})
})
}
62
Правила Фейсбука
slow-css-properties
filters-with-svg-files
use-variables
mobile-flexbox
63
9. Ошибка 2 раза — в правило
64
10. Линтите всё
gulp.task('default', ['lint',
'test',
'all-translated',
'spell-check',
'security-audit',
'file-size'])
65
postcss-sorting
div {
-moz-box-sizing: border-box;
width: 100%;
box-sizing: border-box;
position: absolute;
-webkit-box-sizing: border-box;
}
div {
position: absolute;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
}
66
yaspeller
$ yaspeller /home/ai/Dev/postcss/README.md
✗ /home/ai/Dev/postcss/README.md 453 ms
-----
Typos: 1
1. transorming (suggest: transforming, transporting)
-----
67
Node Security Platform
> nsp check
(+) 1 vulnerabilities found
┌───────────────┬───────────────────────────────────────────────────────┐
│ │ ReDoS via long string of semicolons │
├───────────────┼───────────────────────────────────────────────────────┤
│ Name │ tough-cookie │
├───────────────┼───────────────────────────────────────────────────────┤
│ Installed │ 2.2.2 │
├───────────────┼───────────────────────────────────────────────────────┤
│ Vulnerable │ >=0.9.7 <=2.2.2 │
├───────────────┼───────────────────────────────────────────────────────┤
│ Patched │ >=2.3.0 │
├───────────────┼───────────────────────────────────────────────────────┤
│ Path │ my-test-project@undefined > honeybadger@1.1.2 > requ… │
├───────────────┼───────────────────────────────────────────────────────┤
│ More Info │ https://nodesecurity.io/advisories/130 │
└───────────────┴───────────────────────────────────────────────────────┘
68
Ссылки
stylelint.io
@stylelint
@postcss
evl.ms/chronicles
69

More Related Content

What's hot

Жизнь в изоляции
Жизнь в изоляцииЖизнь в изоляции
Жизнь в изоляцииRoman Dvornov
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаYandex
 
2.3. Java cracking random_utils
2.3. Java cracking random_utils2.3. Java cracking random_utils
2.3. Java cracking random_utilsdefconmoscow
 
Филипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npmФилипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npmYandex
 
Быстро о быстром
Быстро о быстромБыстро о быстром
Быстро о быстромRoman Dvornov
 
Опыт работы с фреймворком ASP.NET MVC
Опыт работы с фреймворком ASP.NET MVCОпыт работы с фреймворком ASP.NET MVC
Опыт работы с фреймворком ASP.NET MVCДаниил Силантьев
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptAlexey Ivanov
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
 
Фреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр БирюковФреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр БирюковDevDay
 
Как сделать Instagram в браузере — Дмитрий Дудин, xbSoftware
Как сделать Instagram в браузере — Дмитрий Дудин, xbSoftwareКак сделать Instagram в браузере — Дмитрий Дудин, xbSoftware
Как сделать Instagram в браузере — Дмитрий Дудин, xbSoftwareYandex
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!Roman Dvornov
 
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, ЯндексYandex
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Ontico
 
Basis.js – «под капотом»
Basis.js – «под капотом»Basis.js – «под капотом»
Basis.js – «под капотом»Roman Dvornov
 
ДАМП 2015 Екатеринбург
ДАМП 2015 ЕкатеринбургДАМП 2015 Екатеринбург
ДАМП 2015 ЕкатеринбургAlexey Ivanov
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2Alexander Makarov
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CYandex
 

What's hot (20)

Жизнь в изоляции
Жизнь в изоляцииЖизнь в изоляции
Жизнь в изоляции
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кода
 
2.3. Java cracking random_utils
2.3. Java cracking random_utils2.3. Java cracking random_utils
2.3. Java cracking random_utils
 
Филипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npmФилипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npm
 
Foxdevs
FoxdevsFoxdevs
Foxdevs
 
Быстро о быстром
Быстро о быстромБыстро о быстром
Быстро о быстром
 
Опыт работы с фреймворком ASP.NET MVC
Опыт работы с фреймворком ASP.NET MVCОпыт работы с фреймворком ASP.NET MVC
Опыт работы с фреймворком ASP.NET MVC
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
Фреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр БирюковФреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр Бирюков
 
Как сделать Instagram в браузере — Дмитрий Дудин, xbSoftware
Как сделать Instagram в браузере — Дмитрий Дудин, xbSoftwareКак сделать Instagram в браузере — Дмитрий Дудин, xbSoftware
Как сделать Instagram в браузере — Дмитрий Дудин, xbSoftware
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!
 
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс"Рекомендации по проектированию API" — Марина Степанова, Яндекс
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
 
Kranonit s16 (python). dmitry furzenko
Kranonit s16 (python). dmitry furzenkoKranonit s16 (python). dmitry furzenko
Kranonit s16 (python). dmitry furzenko
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
Basis.js – «под капотом»
Basis.js – «под капотом»Basis.js – «под капотом»
Basis.js – «под капотом»
 
ДАМП 2015 Екатеринбург
ДАМП 2015 ЕкатеринбургДАМП 2015 Екатеринбург
ДАМП 2015 Екатеринбург
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 

Viewers also liked (20)

Profile - 1
Profile - 1Profile - 1
Profile - 1
 
Grafica
GraficaGrafica
Grafica
 
Edelweiss Certificate
Edelweiss CertificateEdelweiss Certificate
Edelweiss Certificate
 
Arbol jennifer
Arbol jenniferArbol jennifer
Arbol jennifer
 
Spot.Illustration.Pg2
Spot.Illustration.Pg2Spot.Illustration.Pg2
Spot.Illustration.Pg2
 
Grafica Excel
Grafica ExcelGrafica Excel
Grafica Excel
 
Spashotel
SpashotelSpashotel
Spashotel
 
Notas cohorte xi
Notas cohorte xiNotas cohorte xi
Notas cohorte xi
 
FlyerStrokeTX
FlyerStrokeTXFlyerStrokeTX
FlyerStrokeTX
 
041
041041
041
 
MEJORAMIENTO DE LA CALIDAD DE LA EDUCACIÓN POR MEDIO DE LA DIRECCIÓN ESCOLAR
MEJORAMIENTO DE LA CALIDAD DE LA EDUCACIÓN POR MEDIO DE LA DIRECCIÓN ESCOLARMEJORAMIENTO DE LA CALIDAD DE LA EDUCACIÓN POR MEDIO DE LA DIRECCIÓN ESCOLAR
MEJORAMIENTO DE LA CALIDAD DE LA EDUCACIÓN POR MEDIO DE LA DIRECCIÓN ESCOLAR
 
The Coolest Cooler
The Coolest CoolerThe Coolest Cooler
The Coolest Cooler
 
bharat 2
bharat 2bharat 2
bharat 2
 
Slide 13
Slide 13Slide 13
Slide 13
 
Ejerc·5
Ejerc·5Ejerc·5
Ejerc·5
 
Jp
JpJp
Jp
 
Compondo o cenário digital
Compondo o cenário digitalCompondo o cenário digital
Compondo o cenário digital
 
Fundamentals of Option Contracts
Fundamentals of Option ContractsFundamentals of Option Contracts
Fundamentals of Option Contracts
 
El raonament clinic de l exploracio al diagnostic
El raonament clinic de l exploracio al diagnosticEl raonament clinic de l exploracio al diagnostic
El raonament clinic de l exploracio al diagnostic
 
Tabac alcohol i altres vicis
Tabac alcohol i altres vicisTabac alcohol i altres vicis
Tabac alcohol i altres vicis
 

Similar to TК°Conf. Stylelint — как и зачем линтить CSS. Андрей Ситник.

Modules and assembling of JavaScript (in russian)
Modules and assembling of JavaScript (in russian)Modules and assembling of JavaScript (in russian)
Modules and assembling of JavaScript (in russian)Mikhail Davydov
 
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Andrey Karpov
 
Unit-тестирование скриншотами: преодолеваем звуковой барьер
Unit-тестирование скриншотами: преодолеваем звуковой барьерUnit-тестирование скриншотами: преодолеваем звуковой барьер
Unit-тестирование скриншотами: преодолеваем звуковой барьерRoman Dvornov
 
Поговорим о микрооптимизациях .NET-приложений
Поговорим о микрооптимизациях .NET-приложенийПоговорим о микрооптимизациях .NET-приложений
Поговорим о микрооптимизациях .NET-приложенийAndrey Akinshin
 
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"Yandex
 
Путеводитель SQLite для разработчика
Путеводитель SQLite для разработчикаПутеводитель SQLite для разработчика
Путеводитель SQLite для разработчикаiThink
 
Как команда PVS-Studio может улучшить код операционной системы Tizen
Как команда PVS-Studio может улучшить код операционной системы TizenКак команда PVS-Studio может улучшить код операционной системы Tizen
Как команда PVS-Studio может улучшить код операционной системы TizenAndrey Karpov
 
Deployment to production with an unexpected load
Deployment to production with an unexpected loadDeployment to production with an unexpected load
Deployment to production with an unexpected loadGrid Dynamics
 
SAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в кодеSAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в кодеAndrey Karpov
 
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Ontico
 
Сергей Сергеев — Maintainer кода в большом проекте
Сергей Сергеев — Maintainer кода в большом проектеСергей Сергеев — Maintainer кода в большом проекте
Сергей Сергеев — Maintainer кода в большом проектеYandex
 
Статические анализаторы кода как DevSecOps решение
Статические анализаторы кода как DevSecOps решениеСтатические анализаторы кода как DevSecOps решение
Статические анализаторы кода как DevSecOps решениеAndrey Karpov
 
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Ontico
 
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Pythonru_Parallels
 
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на PythonCodeFest
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кодаAndrey Karpov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода Pavel Tsukanov
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Mikhail Shcherbakov
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterAleksandr Tarasov
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioAndrey Karpov
 

Similar to TК°Conf. Stylelint — как и зачем линтить CSS. Андрей Ситник. (20)

Modules and assembling of JavaScript (in russian)
Modules and assembling of JavaScript (in russian)Modules and assembling of JavaScript (in russian)
Modules and assembling of JavaScript (in russian)
 
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
 
Unit-тестирование скриншотами: преодолеваем звуковой барьер
Unit-тестирование скриншотами: преодолеваем звуковой барьерUnit-тестирование скриншотами: преодолеваем звуковой барьер
Unit-тестирование скриншотами: преодолеваем звуковой барьер
 
Поговорим о микрооптимизациях .NET-приложений
Поговорим о микрооптимизациях .NET-приложенийПоговорим о микрооптимизациях .NET-приложений
Поговорим о микрооптимизациях .NET-приложений
 
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
Владимир Алаев "Разработка на Node.js: инструменты, библиотеки, сервисы"
 
Путеводитель SQLite для разработчика
Путеводитель SQLite для разработчикаПутеводитель SQLite для разработчика
Путеводитель SQLite для разработчика
 
Как команда PVS-Studio может улучшить код операционной системы Tizen
Как команда PVS-Studio может улучшить код операционной системы TizenКак команда PVS-Studio может улучшить код операционной системы Tizen
Как команда PVS-Studio может улучшить код операционной системы Tizen
 
Deployment to production with an unexpected load
Deployment to production with an unexpected loadDeployment to production with an unexpected load
Deployment to production with an unexpected load
 
SAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в кодеSAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в коде
 
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
Оптимизация UI потока / Дмитрий Куркин (Mail.Ru)
 
Сергей Сергеев — Maintainer кода в большом проекте
Сергей Сергеев — Maintainer кода в большом проектеСергей Сергеев — Maintainer кода в большом проекте
Сергей Сергеев — Maintainer кода в большом проекте
 
Статические анализаторы кода как DevSecOps решение
Статические анализаторы кода как DevSecOps решениеСтатические анализаторы кода как DevSecOps решение
Статические анализаторы кода как DevSecOps решение
 
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...
 
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Python
 
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Python
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"
 
Jbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot StarterJbreak 2016: Твой личный Spring Boot Starter
Jbreak 2016: Твой личный Spring Boot Starter
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 

More from TKConf

TК°Conf. Как мы делали ЖЖ. Егор Толстой.
TК°Conf. Как мы делали ЖЖ. Егор Толстой.TК°Conf. Как мы делали ЖЖ. Егор Толстой.
TК°Conf. Как мы делали ЖЖ. Егор Толстой.TKConf
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TKConf
 
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.TKConf
 
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...TKConf
 
TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...
TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...
TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...TKConf
 
TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.
TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.
TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.TKConf
 
TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.
TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.
TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.TKConf
 
TК°Conf. Как отвечать за продакшн. Андрей Сумин.
TК°Conf. Как отвечать за продакшн. Андрей Сумин.TК°Conf. Как отвечать за продакшн. Андрей Сумин.
TК°Conf. Как отвечать за продакшн. Андрей Сумин.TKConf
 
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TKConf
 
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.TKConf
 
TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.
TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.
TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.TKConf
 
TК°Conf. Сетевые орг.структуры. Владимир Каленов.
TК°Conf. Сетевые орг.структуры. Владимир Каленов.TК°Conf. Сетевые орг.структуры. Владимир Каленов.
TК°Conf. Сетевые орг.структуры. Владимир Каленов.TKConf
 
TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.
TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.
TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.TKConf
 
TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...
TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...
TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...TKConf
 
Функциональное программирование в продуктовой разработке
Функциональное программирование в продуктовой разработкеФункциональное программирование в продуктовой разработке
Функциональное программирование в продуктовой разработкеTKConf
 
SQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбораSQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбораTKConf
 
Разработка через микросервисы
Разработка через микросервисыРазработка через микросервисы
Разработка через микросервисыTKConf
 
Архитектура растущего проекта, на примере ВКонтакте
Архитектура растущего проекта, на примере ВКонтактеАрхитектура растущего проекта, на примере ВКонтакте
Архитектура растущего проекта, на примере ВКонтактеTKConf
 
Проектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-системПроектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-системTKConf
 

More from TKConf (19)

TК°Conf. Как мы делали ЖЖ. Егор Толстой.
TК°Conf. Как мы делали ЖЖ. Егор Толстой.TК°Conf. Как мы делали ЖЖ. Егор Толстой.
TК°Conf. Как мы делали ЖЖ. Егор Толстой.
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.
 
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.
 
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
TК°Conf. Хайп против реальности: год жизни с изомофорным React-приложением. И...
 
TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...
TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...
TК°Conf. Как оформить права на программный продукт, чтобы его не угнали конку...
 
TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.
TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.
TК°Conf. Как проложить путь к успеху с помощью банковских карт. Александр Сычев.
 
TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.
TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.
TК°Conf. «Быстрокод» и что за это бывает. Артём Кулаков.
 
TК°Conf. Как отвечать за продакшн. Андрей Сумин.
TК°Conf. Как отвечать за продакшн. Андрей Сумин.TК°Conf. Как отвечать за продакшн. Андрей Сумин.
TК°Conf. Как отвечать за продакшн. Андрей Сумин.
 
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
 
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
TК°Conf. 10 проблем автоматизации UI и их решение с помощью JDI. Роман Иовлев.
 
TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.
TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.
TК°Conf. Обеспечение качества в продуктовых проектах. Наталья Руколь.
 
TК°Conf. Сетевые орг.структуры. Владимир Каленов.
TК°Conf. Сетевые орг.структуры. Владимир Каленов.TК°Conf. Сетевые орг.структуры. Владимир Каленов.
TК°Conf. Сетевые орг.структуры. Владимир Каленов.
 
TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.
TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.
TК°Conf. Красивый интерфейс — это лишь часть крутого UX. Никита Ефимов.
 
TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...
TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...
TК°Conf. Impact Mapping: планирование разработки продукта с учетом бизнес цел...
 
Функциональное программирование в продуктовой разработке
Функциональное программирование в продуктовой разработкеФункциональное программирование в продуктовой разработке
Функциональное программирование в продуктовой разработке
 
SQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбораSQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбора
 
Разработка через микросервисы
Разработка через микросервисыРазработка через микросервисы
Разработка через микросервисы
 
Архитектура растущего проекта, на примере ВКонтакте
Архитектура растущего проекта, на примере ВКонтактеАрхитектура растущего проекта, на примере ВКонтакте
Архитектура растущего проекта, на примере ВКонтакте
 
Проектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-системПроектирование архитектуры крупных веб-систем
Проектирование архитектуры крупных веб-систем
 

TК°Conf. Stylelint — как и зачем линтить CSS. Андрей Ситник.