From 6ac9e3a5001d515fa3cf68d7f17e100350643e9e Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Sat, 7 Mar 2015 19:26:10 +0300 Subject: [PATCH] renovations --- 1-js/2-first-steps/13-logical-ops/article.md | 18 ++- 1-js/2-first-steps/8-operators/article.md | 4 +- 1-js/4-data-structures/2-number/article.md | 2 +- .../3-setTimeout-setInterval/article.md | 8 + {8-extra => 12-extra}/10-cookie/article.md | 0 .../10-cookie/safari-nocookie.png | Bin .../10-cookie/safari-nocookie@2x.png | Bin .../11-intl/1-collate-array-sort/solution.md | 0 .../11-intl/1-collate-array-sort/task.md | 0 {8-extra => 12-extra}/11-intl/article.md | 6 +- .../12-regexp-specials/article.md | 0 {8-extra => 12-extra}/3-templates/article.md | 0 {8-extra => 12-extra}/4-books/article.md | 21 +-- .../5-setImmediate/article.md | 36 ++++- .../setImmediate.view/index.html | 0 .../setImmediate.view}/setImmediate.js | 0 {8-extra => 12-extra}/6-bind-late/article.md | 0 {8-extra => 12-extra}/7-sublime/article.md | 4 +- 12-extra/7-sublime/sheet.pdf | Bin 0 -> 142604 bytes .../8-range-textrange-selection/56.gif | Bin .../8-range-textrange-selection/57.gif | Bin .../8-range-textrange-selection/58.gif | Bin .../8-range-textrange-selection/article.md | 13 +- .../domRangeCreate.view/index.html | 0 .../domRangeHighlight.view/index.html | 0 .../fix-ie.view/fixIERangeObject.js | 0 .../fix-ie.view/index.html | 0 .../ieTextRangeHighlight.view/index.html | 0 .../setSelection.view/index.html | 0 .../9-drag-and-drop-plus/DragAvatar.js | 0 .../9-drag-and-drop-plus/DragManager.js | 0 .../9-drag-and-drop-plus/DragZone.js | 0 .../9-drag-and-drop-plus/DropTarget.js | 0 .../9-drag-and-drop-plus/TreeDragAvatar.js | 0 .../9-drag-and-drop-plus/TreeDragZone.js | 0 .../9-drag-and-drop-plus/TreeDropTarget.js | 0 .../9-drag-and-drop-plus/article.md | 0 .../dragTree.view/DragAvatar.js | 0 .../dragTree.view/DragManager.js | 0 .../dragTree.view/DragZone.js | 0 .../dragTree.view/DropTarget.js | 0 .../dragTree.view/TreeDragAvatar.js | 0 .../dragTree.view/TreeDragZone.js | 0 .../dragTree.view/TreeDropTarget.js | 0 .../dragTree.view/dragTree.css | 0 .../dragTree.view/index.html | 0 .../9-drag-and-drop-plus/dragTree.view/lib.js | 0 .../9-drag-and-drop-plus/dragzonetarget.png | Bin {8-extra => 12-extra}/index.md | 0 .../article.md | 52 ++++--- .../html-innerhtml.png | Bin 0 -> 8262 bytes .../html-list.png | Bin .../8-memory-removechild-innerhtml}/html.png | Bin .../1-css-why/article.md | 18 ++- .../10-box-sizing/article.md | 0 .../10-box-sizing/border-box.svg | 0 .../11-margin/1-failing-margins/solution.md | 0 .../11-margin/1-failing-margins/task.md | 0 .../2-position-text-into-input/solution.md | 0 .../solution.view/index.html | 0 .../source.view/index.html | 0 .../2-position-text-into-input/task.md | 0 .../11-margin/article.md | 0 .../h2-margin-top-position.view/index.html | 0 .../11-margin/h2-margin-top.view/index.html | 0 .../hr-margin-left-src.view/index.html | 0 .../11-margin/hr-margin-left.view/index.html | 0 .../negative-margin-bottom.view/index.html | 0 .../12-space-under-img/article.md | 0 .../12-space-under-img/block.view/index.html | 0 .../inline-p.view/index.html | 0 .../12-space-under-img/inline.view/index.html | 0 .../valign-p.view/index.html | 0 .../valign-small-lh.view/index.html | 0 .../valign-small.view/index.html | 0 .../12-space-under-img/valign.view/index.html | 0 .../13-overflow/article.md | 0 .../14-height-percent/article.md | 0 .../index.html | 0 .../height-percent-float.view/index.html | 0 .../height-percent.view/index.html | 0 .../1-select-elements-selector/index.html | 0 .../1-select-elements-selector/solution.md | 0 .../source.view/index.html | 0 .../1-select-elements-selector/task.md | 0 .../2-margin-between-pairs-size-1/solution.md | 0 .../solution.view/index.html | 0 .../source.view/index.html | 0 .../2-margin-between-pairs-size-1/task.md | 0 .../3-margin-between-pairs/index.html | 0 .../3-margin-between-pairs/solution.md | 0 .../solution.view/index.html | 0 .../source.view/index.html | 0 .../3-margin-between-pairs/task.md | 0 .../15-css-selectors/article.md | 0 .../nthchild-type.view/index.html | 0 .../15-css-selectors/nthchild.view/index.html | 0 .../15-css-selectors/relation.view/index.html | 0 .../16-css-no-ie6/article.md | 0 .../17-css-sprite/article.gif | Bin .../17-css-sprite/article.md | 0 .../17-css-sprite/height48.view/index.html | 0 .../17-css-sprite/icons.gif | Bin .../17-css-sprite/minus.gif | Bin .../17-css-sprite/plus.gif | Bin .../17-css-sprite/sprite-example/index.html | 0 .../sprite-tree-1/height48.view/index.html | 0 .../17-css-sprite/sprite-tree-1/index.html | 0 .../sprite-tree-src.view/index.html | 0 .../17-css-sprite/sprite-tree.view/index.html | 0 .../17-css-sprite/sprites-example-lines2.png | Bin .../17-css-sprite/sprites-example.png | Bin .../18-css-format/article.md | 0 .../2-css-units/article.md | 145 +++++++++++------- .../3-display/article.md | 97 ++++++------ .../gallery-float-diffsize.png | Bin .../gallery-float-diffsize.view/index.html | 0 .../gallery-inline-block.view/index.html | 0 .../1-inline-block-vs-float/solution.md | 13 +- .../solution.view/index.html | 0 .../4-float/1-inline-block-vs-float/task.md | 4 +- .../2-tree-with-multiline-nodes/solution.md | 0 .../solution.view/index.html | 0 .../source.view/index.html | 0 .../2-tree-with-multiline-nodes/task.md | 2 - .../nav-div-wrong/arrow-left.jpg | Bin .../nav-div-wrong/arrow-right.jpg | Bin .../3-paginator-css/nav-div-wrong/index.html | 0 .../4-float/3-paginator-css/solution.md | 0 .../3-paginator-css/solution.view/index.html | 0 .../3-paginator-css/source.view/index.html | 0 .../4-float/3-paginator-css/task.md | 2 - .../4-add-border-keep-width/solution.md | 0 .../4-float/4-add-border-keep-width/task.md | 5 +- .../4-float/article.md | 67 ++------ .../4-float/float-small-margin.png | Bin .../4-float/gallery-float.view/index.html | 0 .../4-float/text.png | Bin .../4-float/two-columns-2.view/index.html | 0 .../4-float/two-columns.view/index.html | 0 .../4-float/winnie-block-bg.view/index.html | 0 .../4-float/winnie-block.view/index.html | 0 .../4-float/winnie-clear-1.view/index.html | 0 .../4-float/winnie-clear-2.view/index.html | 0 .../4-float/winnie-clear-3.view/index.html | 0 .../4-float/winnie-clear-4.view/index.html | 0 .../winnie-clearfill-clearfix.view/index.html | 0 .../winnie-clearfill-div.view/index.html | 0 .../winnie-clearfill-float.view/index.html | 0 .../winnie-clearfill-overflow.view/index.html | 0 .../4-float/winnie-nofloat-1.view/index.html | 0 .../4-float/winnie-nofloat-2.view/index.html | 0 .../4-float/winnie-nofloat-3.view/index.html | 0 .../4-float/winnie-nofloat.view/index.html | 0 .../4-float/winnie.view/index.html | 0 .../5-position/1-modal-window/solution.md | 0 .../1-modal-window/solution.view/index.html | 0 .../1-modal-window/source.view/index.html | 0 .../5-position/1-modal-window/task.md | 0 .../5-position/article.md | 2 +- .../position-100-wrong.view/index.html | 0 .../1-center-ball-css/solution.md | 0 .../solution.view/index.html | 0 .../1-center-ball-css/source.view/index.html | 0 .../6-css-center/1-center-ball-css/task.md | 0 .../6-css-center/2-form-modal/solution.md | 0 .../2-form-modal/solution.view/index.html | 0 .../2-form-modal/source.view/index.html | 0 .../6-css-center/2-form-modal/task.md | 0 .../solution.md | 0 .../task.md | 0 .../6-css-center/article.md | 0 .../vertical-align.view/index.html | 0 .../7-font-size-line-height/article.md | 0 .../8-white-space/article.md | 0 .../9-outline/article.md | 0 {12-css-for-js => 8-css-for-js}/index.md | 0 .../html-innerhtml.png | Bin 5618 -> 0 bytes .../1-memory-management-question/solution.md | 5 - .../1-memory-management-question/task.md | 32 ---- 8-extra/2-javascript-quiz/article.md | 16 -- .../setImmediate.view/setImmediate.js | 27 ---- 182 files changed, 275 insertions(+), 324 deletions(-) rename {8-extra => 12-extra}/10-cookie/article.md (100%) rename {8-extra => 12-extra}/10-cookie/safari-nocookie.png (100%) rename {8-extra => 12-extra}/10-cookie/safari-nocookie@2x.png (100%) rename {8-extra => 12-extra}/11-intl/1-collate-array-sort/solution.md (100%) rename {8-extra => 12-extra}/11-intl/1-collate-array-sort/task.md (100%) rename {8-extra => 12-extra}/11-intl/article.md (98%) rename {8-extra => 12-extra}/12-regexp-specials/article.md (100%) rename {8-extra => 12-extra}/3-templates/article.md (100%) rename {8-extra => 12-extra}/4-books/article.md (71%) rename {8-extra => 12-extra}/5-setImmediate/article.md (71%) rename {8-extra => 12-extra}/5-setImmediate/setImmediate.view/index.html (100%) rename {8-extra/5-setImmediate => 12-extra/5-setImmediate/setImmediate.view}/setImmediate.js (100%) rename {8-extra => 12-extra}/6-bind-late/article.md (100%) rename {8-extra => 12-extra}/7-sublime/article.md (76%) create mode 100644 12-extra/7-sublime/sheet.pdf rename {8-extra => 12-extra}/8-range-textrange-selection/56.gif (100%) rename {8-extra => 12-extra}/8-range-textrange-selection/57.gif (100%) rename {8-extra => 12-extra}/8-range-textrange-selection/58.gif (100%) rename {8-extra => 12-extra}/8-range-textrange-selection/article.md (98%) rename {8-extra => 12-extra}/8-range-textrange-selection/domRangeCreate.view/index.html (100%) rename {8-extra => 12-extra}/8-range-textrange-selection/domRangeHighlight.view/index.html (100%) rename {8-extra => 12-extra}/8-range-textrange-selection/fix-ie.view/fixIERangeObject.js (100%) rename {8-extra => 12-extra}/8-range-textrange-selection/fix-ie.view/index.html (100%) rename {8-extra => 12-extra}/8-range-textrange-selection/ieTextRangeHighlight.view/index.html (100%) rename {8-extra => 12-extra}/8-range-textrange-selection/setSelection.view/index.html (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/DragAvatar.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/DragManager.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/DragZone.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/DropTarget.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/TreeDragAvatar.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/TreeDragZone.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/TreeDropTarget.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/article.md (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragTree.view/DragAvatar.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragTree.view/DragManager.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragTree.view/DragZone.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragTree.view/DropTarget.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragTree.view/TreeDragAvatar.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragTree.view/TreeDragZone.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragTree.view/TreeDropTarget.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragTree.view/dragTree.css (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragTree.view/index.html (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragTree.view/lib.js (100%) rename {8-extra => 12-extra}/9-drag-and-drop-plus/dragzonetarget.png (100%) rename {8-extra => 12-extra}/index.md (100%) rename {8-extra/1-memory-removechild-innerhtml => 6-optimize/8-memory-removechild-innerhtml}/article.md (56%) create mode 100644 6-optimize/8-memory-removechild-innerhtml/html-innerhtml.png rename {8-extra/1-memory-removechild-innerhtml => 6-optimize/8-memory-removechild-innerhtml}/html-list.png (100%) rename {8-extra/1-memory-removechild-innerhtml => 6-optimize/8-memory-removechild-innerhtml}/html.png (100%) rename {12-css-for-js => 8-css-for-js}/1-css-why/article.md (68%) rename {12-css-for-js => 8-css-for-js}/10-box-sizing/article.md (100%) rename {12-css-for-js => 8-css-for-js}/10-box-sizing/border-box.svg (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/1-failing-margins/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/1-failing-margins/task.md (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/2-position-text-into-input/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/2-position-text-into-input/solution.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/2-position-text-into-input/source.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/2-position-text-into-input/task.md (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/article.md (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/h2-margin-top-position.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/h2-margin-top.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/hr-margin-left-src.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/hr-margin-left.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/11-margin/negative-margin-bottom.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/12-space-under-img/article.md (100%) rename {12-css-for-js => 8-css-for-js}/12-space-under-img/block.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/12-space-under-img/inline-p.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/12-space-under-img/inline.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/12-space-under-img/valign-p.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/12-space-under-img/valign-small-lh.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/12-space-under-img/valign-small.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/12-space-under-img/valign.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/13-overflow/article.md (100%) rename {12-css-for-js => 8-css-for-js}/14-height-percent/article.md (100%) rename {12-css-for-js => 8-css-for-js}/14-height-percent/height-percent-float-exact.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/14-height-percent/height-percent-float.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/14-height-percent/height-percent.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/1-select-elements-selector/index.html (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/1-select-elements-selector/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/1-select-elements-selector/source.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/1-select-elements-selector/task.md (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/2-margin-between-pairs-size-1/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/2-margin-between-pairs-size-1/solution.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/2-margin-between-pairs-size-1/source.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/2-margin-between-pairs-size-1/task.md (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/3-margin-between-pairs/index.html (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/3-margin-between-pairs/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/3-margin-between-pairs/solution.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/3-margin-between-pairs/source.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/3-margin-between-pairs/task.md (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/article.md (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/nthchild-type.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/nthchild.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/15-css-selectors/relation.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/16-css-no-ie6/article.md (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/article.gif (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/article.md (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/height48.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/icons.gif (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/minus.gif (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/plus.gif (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/sprite-example/index.html (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/sprite-tree-1/height48.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/sprite-tree-1/index.html (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/sprite-tree-src.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/sprite-tree.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/sprites-example-lines2.png (100%) rename {12-css-for-js => 8-css-for-js}/17-css-sprite/sprites-example.png (100%) rename {12-css-for-js => 8-css-for-js}/18-css-format/article.md (100%) rename {12-css-for-js => 8-css-for-js}/2-css-units/article.md (64%) rename {12-css-for-js => 8-css-for-js}/3-display/article.md (68%) rename {12-css-for-js => 8-css-for-js}/4-float/1-inline-block-vs-float/gallery-float-diffsize.png (100%) rename {12-css-for-js => 8-css-for-js}/4-float/1-inline-block-vs-float/gallery-float-diffsize.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/1-inline-block-vs-float/gallery-inline-block.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/1-inline-block-vs-float/solution.md (93%) rename {12-css-for-js => 8-css-for-js}/4-float/1-inline-block-vs-float/solution.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/1-inline-block-vs-float/task.md (76%) rename {12-css-for-js => 8-css-for-js}/4-float/2-tree-with-multiline-nodes/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/4-float/2-tree-with-multiline-nodes/solution.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/2-tree-with-multiline-nodes/source.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/2-tree-with-multiline-nodes/task.md (96%) rename {12-css-for-js => 8-css-for-js}/4-float/3-paginator-css/nav-div-wrong/arrow-left.jpg (100%) rename {12-css-for-js => 8-css-for-js}/4-float/3-paginator-css/nav-div-wrong/arrow-right.jpg (100%) rename {12-css-for-js => 8-css-for-js}/4-float/3-paginator-css/nav-div-wrong/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/3-paginator-css/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/4-float/3-paginator-css/solution.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/3-paginator-css/source.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/3-paginator-css/task.md (99%) rename {12-css-for-js => 8-css-for-js}/4-float/4-add-border-keep-width/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/4-float/4-add-border-keep-width/task.md (72%) rename {12-css-for-js => 8-css-for-js}/4-float/article.md (85%) rename {12-css-for-js => 8-css-for-js}/4-float/float-small-margin.png (100%) rename {12-css-for-js => 8-css-for-js}/4-float/gallery-float.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/text.png (100%) rename {12-css-for-js => 8-css-for-js}/4-float/two-columns-2.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/two-columns.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-block-bg.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-block.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-clear-1.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-clear-2.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-clear-3.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-clear-4.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-clearfill-clearfix.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-clearfill-div.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-clearfill-float.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-clearfill-overflow.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-nofloat-1.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-nofloat-2.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-nofloat-3.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie-nofloat.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/4-float/winnie.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/5-position/1-modal-window/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/5-position/1-modal-window/solution.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/5-position/1-modal-window/source.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/5-position/1-modal-window/task.md (100%) rename {12-css-for-js => 8-css-for-js}/5-position/article.md (99%) rename {12-css-for-js => 8-css-for-js}/5-position/position-100-wrong.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/1-center-ball-css/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/1-center-ball-css/solution.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/1-center-ball-css/source.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/1-center-ball-css/task.md (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/2-form-modal/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/2-form-modal/solution.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/2-form-modal/source.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/2-form-modal/task.md (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/3-vertical-align-table-cell-position/solution.md (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/3-vertical-align-table-cell-position/task.md (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/article.md (100%) rename {12-css-for-js => 8-css-for-js}/6-css-center/vertical-align.view/index.html (100%) rename {12-css-for-js => 8-css-for-js}/7-font-size-line-height/article.md (100%) rename {12-css-for-js => 8-css-for-js}/8-white-space/article.md (100%) rename {12-css-for-js => 8-css-for-js}/9-outline/article.md (100%) rename {12-css-for-js => 8-css-for-js}/index.md (100%) delete mode 100644 8-extra/1-memory-removechild-innerhtml/html-innerhtml.png delete mode 100644 8-extra/2-javascript-quiz/1-memory-management-question/solution.md delete mode 100644 8-extra/2-javascript-quiz/1-memory-management-question/task.md delete mode 100644 8-extra/2-javascript-quiz/article.md delete mode 100644 8-extra/5-setImmediate/setImmediate.view/setImmediate.js diff --git a/1-js/2-first-steps/13-logical-ops/article.md b/1-js/2-first-steps/13-logical-ops/article.md index a132b6fb..4942472f 100644 --- a/1-js/2-first-steps/13-logical-ops/article.md +++ b/1-js/2-first-steps/13-logical-ops/article.md @@ -13,7 +13,7 @@ result = a || b; ``` -**Логическое ИЛИ в классическом программировании работает следующим образом: "если *хотя бы один* из аргументов `true`, то возвращает `true`, иначе -- `false`".** +Логическое ИЛИ в классическом программировании работает следующим образом: "если *хотя бы один* из аргументов `true`, то возвращает `true`, иначе -- `false`". В JavaScript, как мы увидим далее, это не совсем так, но для начала рассмотрим только логические значения. Получается следующая "таблица результатов": @@ -25,7 +25,7 @@ alert( true || false); // true alert( false || false); // false ``` -Если значение не логического типа -- то оно к нему приводится. Например, число `1` будет воспринято как `true`, а `0` -- как `false`: +Если значение не логического типа -- то оно к нему приводится в целях вычислений. Например, число `1` будет воспринято как `true`, а `0` -- как `false`: ```js //+ run @@ -129,6 +129,9 @@ alert(result); // выведет "Привет!" - первое значение alert(undefined || '' || false || 0); // 0 ``` +[summary] +Итак, оператор `||` вычисляет операнды слева направо до первого "истинного" и возвращает его, а если все ложные -- то последнее значение. +[/summary] ## && (И) @@ -171,7 +174,7 @@ if ( 1 && 0 ) { // вычислится как true && false К И применим тот же принцип "короткого цикла вычислений", но немного по-другому, чем к ИЛИ. -**Если левый аргумент -- `false`, оператор И возвращает его и заканчивает вычисления. Иначе -- вычисляет и возвращает правый аргумент.** +Если левый аргумент -- `false`, оператор И возвращает его и заканчивает вычисления. Иначе -- вычисляет и возвращает правый аргумент. Например: @@ -197,7 +200,12 @@ alert(1 && 2 && null && 3); // null alert(1 && 2 && 3); // 3 ``` -**Приоритет оператора И `&&` больше, чем ИЛИ `||`, т.е. он выполняется раньше.** +[summary] +Итак, оператор `&&` вычисляет операнды слева направо до первого "ложного" и возвращает его, а если все истинные -- то последнее значение. +[/summary] + +[smart header="Приоритет у `&&` больше, чем у `||`"] +Приоритет оператора И `&&` больше, чем ИЛИ `||`, так что он выполняется раньше. Поэтому в следующем коде сначала будет вычислено правое И: `1 && 0 = 0`, а уже потом -- ИЛИ. @@ -205,7 +213,7 @@ alert(1 && 2 && 3); // 3 //+ run alert(5 || 1 && 0); // 5 ``` - +[/smart] [warn header="Не используйте `&&` вместо `if`"] diff --git a/1-js/2-first-steps/8-operators/article.md b/1-js/2-first-steps/8-operators/article.md index e0f20193..3a8b7b69 100644 --- a/1-js/2-first-steps/8-operators/article.md +++ b/1-js/2-first-steps/8-operators/article.md @@ -135,7 +135,7 @@ alert( +apples + +oranges); // 5, число, оба операнда предв 5деление`/` 6сложение`+` 6вычитание`-` -17присвоение`=` +3присвоение`=` ......... @@ -145,7 +145,7 @@ alert( +apples + +oranges); // 5, число, оба операнда предв Обратим внимание, в таблице приоритетов также есть оператор присваивания `=`. -У него -- один из самых низких приоритетов: `17`. +У него -- один из самых низких приоритетов: `3`. Именно поэтому, когда переменную чему-либо присваивают, например, `x = 2 * 2 + 1` сначала выполнится арифметика, а уже затем -- произойдёт присвоение `=`. diff --git a/1-js/4-data-structures/2-number/article.md b/1-js/4-data-structures/2-number/article.md index 397940ba..b467f990 100644 --- a/1-js/4-data-structures/2-number/article.md +++ b/1-js/4-data-structures/2-number/article.md @@ -161,7 +161,7 @@ alert(number); // Infinity, плюс преобразовал строку "Infi Обычно если мы хотим от посетителя получить число, то `Infinity` или `NaN` нам не подходят. Для того, чтобы отличить "обычные" числа от таких специальных значений, существует функция `isFinite`. -**Функция `isFinite(n)` возвращает `true` только тогда, когда `n` -- обычное число, а не одно из этих значений:** +**Функция `isFinite(n)` преобразует аргумент к числу и возвращает `true`, если это не `NaN/Infinity/-Infinity`:** ```js //+ run diff --git a/1-js/7-js-misc/3-setTimeout-setInterval/article.md b/1-js/7-js-misc/3-setTimeout-setInterval/article.md index 5ac95ffe..e649ed48 100644 --- a/1-js/7-js-misc/3-setTimeout-setInterval/article.md +++ b/1-js/7-js-misc/3-setTimeout-setInterval/article.md @@ -245,6 +245,14 @@ setTimeout(function() {}, 100); В Internet Explorer, нулевая задержка `setInterval(.., 0)` не сработает. Это касается именно `setInterval`, т.е. `setTimeout(.., 0)` работает нормально. [/warn] +[smart header="Откуда взялись эти 4мс?"] +Почему минимальная задержка -- 4мс, а не 1мс? Зачем она вообще существует? + +Это -- "привет" от прошлого. Браузер Chrome как-то пытался убрать минимальную задержку в своих ранних версиях, но оказалось, что существуют сайты, которые используют `setTimeout(..,0)` рекурсивно, создавая тем самым "асинхронный цикл". И, если задержку совсем убрать, то будет 100% загрузка процессора, такой сайт "подвесит" браузер. + +Поэтому, чтобы не ломать существующие скрипты, решили сделать задержку. По возможности, небольшую. На время создания стандарта оптимальным числом показались 4мс. +[/smart] + ## Реальная частота срабатывания В ряде ситуаций таймер будет срабатывать реже, чем обычно. Задержка между вызовами `setInterval(..., 4)` может быть не 4мс, а 30мс или даже 1000мс. diff --git a/8-extra/10-cookie/article.md b/12-extra/10-cookie/article.md similarity index 100% rename from 8-extra/10-cookie/article.md rename to 12-extra/10-cookie/article.md diff --git a/8-extra/10-cookie/safari-nocookie.png b/12-extra/10-cookie/safari-nocookie.png similarity index 100% rename from 8-extra/10-cookie/safari-nocookie.png rename to 12-extra/10-cookie/safari-nocookie.png diff --git a/8-extra/10-cookie/safari-nocookie@2x.png b/12-extra/10-cookie/safari-nocookie@2x.png similarity index 100% rename from 8-extra/10-cookie/safari-nocookie@2x.png rename to 12-extra/10-cookie/safari-nocookie@2x.png diff --git a/8-extra/11-intl/1-collate-array-sort/solution.md b/12-extra/11-intl/1-collate-array-sort/solution.md similarity index 100% rename from 8-extra/11-intl/1-collate-array-sort/solution.md rename to 12-extra/11-intl/1-collate-array-sort/solution.md diff --git a/8-extra/11-intl/1-collate-array-sort/task.md b/12-extra/11-intl/1-collate-array-sort/task.md similarity index 100% rename from 8-extra/11-intl/1-collate-array-sort/task.md rename to 12-extra/11-intl/1-collate-array-sort/task.md diff --git a/8-extra/11-intl/article.md b/12-extra/11-intl/article.md similarity index 98% rename from 8-extra/11-intl/article.md rename to 12-extra/11-intl/article.md index 3b4cb175..44a9e90e 100644 --- a/8-extra/11-intl/article.md +++ b/12-extra/11-intl/article.md @@ -1,6 +1,6 @@ -# Интернационализация, встроенные объекты Intl +# Intl: интернационализация в JavaScript -Общая проблема строк, дат, чисел в JavaScript -- они совершенно не в курсе языков и стран, где находится посетитель. +Общая проблема строк, дат, чисел в JavaScript -- они "не в курсе" языка и особенностей стран, где находится посетитель. В частности:
@@ -12,7 +12,7 @@
В одних странах выводятся цифрами, в других -- иероглифами, длинные числа разделяются где-то пробелом, где-то запятой.
-Все современные браузеры, кроме IE10- (но есть библиотеки и для него) поддерживает стандарт [ECMA 402](http://www.ecma-international.org/ecma-402/1.0/ECMA-402.pdf), предназначенный решить эти проблемы навсегда. +Все современные браузеры, кроме IE10- (но есть библиотеки и для него) поддерживают стандарт [ECMA 402](http://www.ecma-international.org/ecma-402/1.0/ECMA-402.pdf), предназначенный решить эти проблемы навсегда. [cut] diff --git a/8-extra/12-regexp-specials/article.md b/12-extra/12-regexp-specials/article.md similarity index 100% rename from 8-extra/12-regexp-specials/article.md rename to 12-extra/12-regexp-specials/article.md diff --git a/8-extra/3-templates/article.md b/12-extra/3-templates/article.md similarity index 100% rename from 8-extra/3-templates/article.md rename to 12-extra/3-templates/article.md diff --git a/8-extra/4-books/article.md b/12-extra/4-books/article.md similarity index 71% rename from 8-extra/4-books/article.md rename to 12-extra/4-books/article.md index 00e3c1fb..f687e3f1 100644 --- a/8-extra/4-books/article.md +++ b/12-extra/4-books/article.md @@ -1,15 +1,8 @@ # Книги по JS, HTML/CSS и не только -При разработке сложных приложений вам понадобятся как смежные технологии, так и знание общей методологии программирования. -[cut] - -Прямо сейчас вам будет достаточно знания основ HTML/CSS, но в будущем или параллельно с изучением учебника вы, возможно, захотите углубить свои знания и в других областях. - -**Для обучения JavaScript по учебнику чтение книг, которые здесь предложены, не является обязательным.** - Мне часто задают вопрос: "Какую литературу порекомендуете?". На этой странице я предлагаю рекомендации по различным темам. Всего несколько книг на каждую тему, из большего количества все равно пришлось бы выбирать. -Кстати, по всем книжкам, особенно тех, которые касаются технологий, всегда ищите последнее издание. +Кстати, по всем книжкам, особенно тем, которые касаются технологий, всегда ищите последнее издание. P.S. Скачать книги здесь нельзя. Эта страница содержит только рекомендации. @@ -18,20 +11,20 @@ P.S. Скачать книги здесь нельзя. Эта страница CSS стоит изучать по одной из этих книг. Можно сразу по обеим. -Для того, чтобы разобраться в конкретных вопросах CSS, и в качестве справочника полезна книга Эрика Мейера CSS. Каскадные таблицы стилей. Подробное руководство., а также [стандарт CSS 2.1](http://specs.operafan.net/css2.1RU/CSS21/visuren.html). +Конечно, [стандарт CSS 2.1](http://specs.operafan.net/css2.1RU/CSS21/visuren.html) тоже будет вам в помощь. Подчас его скупая простота и точность гораздо понятнее, чем много страниц разъяснений. ## JavaScript Полезное чтение о языке, встроенных методах и конструкциях JavaScript: