Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Code Fest - Работает? Стабильно? Эффективно?
Search
Mikhail Davydov
September 23, 2013
Education
0
160
Code Fest - Работает? Стабильно? Эффективно?
Mikhail Davydov
September 23, 2013
Tweet
Share
More Decks by Mikhail Davydov
See All by Mikhail Davydov
Back To Text UI
azproduction
3
280
Promise – это не больно
azproduction
0
200
Components Now!
azproduction
3
140
ШРИ - JavaScript Event Model
azproduction
0
200
ШРИ - Code Style
azproduction
0
110
HTML5 Camp - JavaScript на фронте и в тылу
azproduction
0
290
UWDC - Модули и сборка JavaScript
azproduction
0
200
Шаблонизация
azproduction
0
130
КРиПИ - Node.js – серверный JavaScript
azproduction
0
130
Other Decks in Education
See All in Education
Library Prefects 2025-2026
cbtlibrary
0
130
相互コミュニケーションの難しさ
masakiokuda
0
300
Présentation_2nde_2025.pdf
bernhardsvt
0
320
✅ レポート採点基準 / How Your Reports Are Assessed
yasslab
PRO
0
130
仏教の源流からの奈良県中南和_奈良まほろば館‗飛鳥・藤原DAO/asuka-fujiwara_Saraswati
tkimura12
0
160
Introduction - Lecture 1 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
2.6k
20250807_がんばらないコミュニティ運営
ponponmikankan
1
200
【ZEPメタバース校舎操作ガイド】
ainischool
0
530
AIを使って最新研究 について調べて発表しよ う!
mickey_kubo
4
150
Web Architectures - Lecture 2 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Google Gemini (Gem) の育成方法
mickey_kubo
2
390
Linguaxes de programación
irocho
0
430
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Context Engineering - Making Every Token Count
addyosmani
10
380
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
The Invisible Side of Design
smashingmag
302
51k
BBQ
matthewcrist
89
9.9k
Rails Girls Zürich Keynote
gr2m
95
14k
How to train your dragon (web standard)
notwaldorf
97
6.4k
The Cult of Friendly URLs
andyhume
79
6.7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
Transcript
Работает? Стабильно? Эффективно? Михаил Давыдов, Яндекс
Error on line 1 column 57841. Ololo is not defined…
Воспроизводится! В норм. браузере!
4 Эта проблема легко решается • Это уже воспроизвелось! • Reformat Code
• SourceMap
5 Reformat Code
6 SourceMap • Сопоставляет код коду • UglifyJS • Chromium browser • CoffeeScript, TypeScript,
JS Статья - http://clck.ru/8bjOI Визуализатор - http://clck.ru/8bjOQ
7 Воспроизводится! Только в IE < 8 L
8 Дебаг IE – это весело! • Любимые ошибки – Unexpected call
to method or property access – Error: 'z' is null or not an object
9 И эта проблема легко решается • Это уже воспроизвелось! • console.log
– не поможет… • F12 – не поможет… • Visual Studio Express – FTW!
10 Visual Studio Express for Web Как дебажить - http://clck.ru/8bjPG
Ошибка нигде не воспроизводится…
12 И проблема решается • Связаться с пользователем • Попросить описать шаги
• Скриншоты • Информация о браузере
Отслеживание ошибок
14 Отслеживаем ошибки • Собираем все данные • Хорошая форма репорта • Отлов
ошибок в фоне
15 Собираем все данные • User Agent • OS • Список все плагинов
16 Хорошая форма репорта • Все данные браузера • Скриншот • Пошаговое воспроизведение
17 Распространённые формы репорта • User Voice • Get Satisfaction • UserEchо
18 Отлов ошибок в фоне • Ловим – window.onerror + jQuery.error
• Интерпретируем – библиотека stacktracejs • Отправляем – Google Analytics – Яндекс.Метрика http://stacktracejs.com/
19 Отлов ошибок в фоне • Raven.js – Клиент для Sentry
– window.onerror = Raven.process; – Open-Source https://github.com/getsentry/raven-js
20 Сервисы для отлова ошибок • Qbaka • Proxino • Errorception
Предотвращение ошибок, как?
22 Как предотвратить • Хороший IDE – Ловит 95% проблем • Статический
анализ – Автоматический! – JSLint – JSHint • Тестирование http://www.jshint.com/ Хороший IDE – http://clck.ru/8bosY
Код долго загружается
24 Как оптимизировать • Вынести максимум в CDN • Найти холодный код
• Найти мертвый код • Сделать ленивую загрузку
25 Вынести максимум в CDN • http://yandex.st/ • http://cdnjs.com/ • Google – http://clck.ru/8bjZK
• Держать запасную библиотеку!
26 Найти холодный и мертвый код • Аналитически – Своим умом
– С помощью IDE • Счетчики для "фичей" – Google Analytics – Яндекс.Метрика • Code Coverage
27 Счетчики для "фичей" • Это дешево – Сервисы аналитики есть
везде • Нужно вешать счетчики • Отчет слишком общий
28 Статистический Code Coverage • СС – не только для тестов
• Пользователь – лучший тестер • Дешево и надежно • Можно управлять покрытием • Мониторится все
29 Статистический Code Coverage https://github.com/azproduction/lmd
30 Косвенная прибыль Code Coverage • Знаем что не интересно • Знаем
горячие фичи
Загружаем лениво
32 Как использовать • Выделяем холодный код • Делим код на модули
• Загружаем по требованию
33 Библиотеки для ленивой загрузки • RequireJS + r.js • LABjs, YepNope,
Headjs • LMD
Деградация проекта. Как не допустить?
35 Деградация происходит из-за • Не соблюдается Code Style • Децентрализация • Отсутствие
документации
36 Способы предотвращения деградации • Единый Code Style • Коммит через Code
Review • Проверка кода c JSHint • Автотесты • Плановые рефакторинги
Что нужно пользователю?
38 Что нужно пользователю • Стабильная работа • Быстрая загрузка • "Прикольные фичи!!11"
39 Как узнать какие фичи нужны/не нужны?
40 Что нужно пользователю • Опросники • Счетчики • Code Coverage • Анализ конкурентов
41 Холодная фича – не нужная фича?
42 Проблемы Холодной фичи • Не знают о ней • Не могут
найти • Не удобная/не привыкли • Не нужна
Оптимизируем затраты
44 На что нужно обратить внимание • Максимум автоматизации – Отлов
ошибок – Хороший IDE – Статический анализ кода с JSHint • Не пишем лишнее – Формы с обсуждением фичей – Взвешиваем каждую фичу – Code Coverage для анализа кода
Михаил Давыдов Яндекс
[email protected]
azproduction Спасибо