Download - Zamyakin
![Page 1: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/1.jpg)
![Page 2: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/2.jpg)
![Page 3: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/3.jpg)
![Page 4: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/4.jpg)
Вёрстка
![Page 5: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/5.jpg)
![Page 6: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/6.jpg)
<div class="event event_past"></div>
<div class="sidebar sidebar_left"></div>
<div class="wrapper has-sidebar_left"></div>
![Page 7: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/7.jpg)
![Page 8: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/8.jpg)
var nodes = this.node.find(“.todo”);
for (var i = 0, l = nodes.length; i < l; i++) {
nodes.eq(i).addClass(“todo_hidden”);
}
![Page 9: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/9.jpg)
var nodes = this.node.find(“.todo”);
nodes
.closest(“.container”)
.addClass(“without-todo”)
![Page 10: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/10.jpg)
.container .todo {
display: block;
}
.container_without-todo .todo {
display: none;
}
![Page 11: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/11.jpg)
https://github.com/mailru/fest http://habrahabr.ru/company/mailru/blog/141361/
![Page 12: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/12.jpg)
— IDE
— Валидация из коробки
— SAX, XSLT, XSD, DTD ...
— XML to XML
![Page 13: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/13.jpg)
![Page 14: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/14.jpg)
3ms
![Page 15: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/15.jpg)
<div>
<fest:attributes>
<fest:attribute name="class">
<fest:text>event</fest:text>
<fest:if test="end > now">
<fest:text>event_past</fest:text>
</fest:if>
<fest:if test="!event.is_writeable">
<fest:text>event_readonly</fest:text>
</fest:if>
<fest:if test="event.is_temporary">
<fest:text>event_temporary</fest:text>
</fest:if>
</fest:attribute>
</fest:attributes>
</div>
![Page 16: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/16.jpg)
<div>
<fest:attributes>
<fest:attribute name="class">
<fest:text>event</fest:text>
<fest:if test="end > now">
<fest:text>event_past</fest:text>
</fest:if>
<fest:if test="!event.is_writeable">
<fest:text>event_readonly</fest:text>
</fest:if>
<fest:if test="event.is_temporary">
<fest:text>event_temporary</fest:text>
</fest:if>
</fest:attribute>
</fest:attributes>
</div>
![Page 17: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/17.jpg)
<div>
<fest:attributes>
<fest:attribute name="class">
event
<fest:if test="end > now">
event_past</fest:text>
</fest:if>
<fest:if test="!event.is_writeable">
<fest:text>event_readonly</fest:text>
</fest:if>
<fest:if test="event.is_temporary">
<fest:text>event_temporary</fest:text>
</fest:if>
</fest:attribute>
</fest:attributes>
</div>
![Page 18: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/18.jpg)
<div>
<fest:attributes>
<fest:attribute name="class">
<fest:text>event</fest:text>
<fest:if test="end > now">
<fest:text>event_past</fest:text>
</fest:if>
<fest:if test="!event.is_writeable">
<fest:text>event_readonly</fest:text>
</fest:if>
<fest:if test="event.is_temporary">
<fest:text>event_temporary</fest:text>
</fest:if>
</fest:attribute>
</fest:attributes>
</div>
![Page 19: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/19.jpg)
<div class="event event_past event_temporary"></div>
![Page 20: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/20.jpg)
<div class="event event_past event_temporary"></div>
![Page 21: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/21.jpg)
<div class="event event_past event_temporary"></div>
![Page 22: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/22.jpg)
Javascript
![Page 23: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/23.jpg)
![Page 24: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/24.jpg)
![Page 26: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/26.jpg)
var that = this;
this.node
.find(".g-button")
.on("click", function() {
that.addCalendar();
})
![Page 27: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/27.jpg)
var that = this;
window.setTimeout(function() {
that.update();
}, 30)
![Page 28: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/28.jpg)
this.node
.find(".g-button")
.on("click", this.addCalendar.bind(this))
window.setTimeout(this.update.bind(this), 30)
![Page 29: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/29.jpg)
this.node
.find(".g-button")
.on("click", this.addCalendar)
window.setTimeout(this.update, 30)
![Page 30: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/30.jpg)
someMethod: function() {
methodBody
}
![Page 31: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/31.jpg)
someMethod: function() {
try {
methodBody.apply(this, arg)
} catch (e) {
// processError
}
}
![Page 32: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/32.jpg)
![Page 33: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/33.jpg)
![Page 34: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/34.jpg)
![Page 35: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/35.jpg)
![Page 36: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/36.jpg)
![Page 37: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/37.jpg)
window.onerror = function(errorMsg, url, lineNumber) { … }
![Page 38: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/38.jpg)
https://github.com/getsentry/raven-js https://github.com/getsentry/sentry
![Page 39: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/39.jpg)
![Page 40: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/40.jpg)
![Page 41: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/41.jpg)
CORS
webkit FF
![Page 42: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/42.jpg)
<script src="//static.calendar.mail.ru" />
![Page 43: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/43.jpg)
<script src="//static.calendar.mail.ru" />
![Page 44: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/44.jpg)
Идеи
![Page 45: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/45.jpg)
![Page 46: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/46.jpg)
![Page 47: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/47.jpg)
![Page 48: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/48.jpg)
![Page 49: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/49.jpg)
![Page 50: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/50.jpg)
![Page 51: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/51.jpg)
API
![Page 52: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/52.jpg)
О чём надеемся рассказать в следующий
раз
![Page 53: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/53.jpg)
- Векторные иконки
- Оффлайн-режим
- Аналог tzdata в браузере
- Интернационализация
- Вебсокеты
![Page 54: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/54.jpg)
![Page 55: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/55.jpg)
![Page 56: Zamyakin](https://reader034.vdocument.in/reader034/viewer/2022052600/558789ecd8b42a47318b468c/html5/thumbnails/56.jpg)
Константин Замякин
п р о г р а м м и с т, К а л е н д а р ь @ M a i l . r u
k . z a m y a k i n @ c o r p . m a i l . r u