diff --git a/1-js/1-getting-started/1-intro/article.md b/1-js/1-getting-started/1-intro/article.md
new file mode 100644
index 00000000..0d4171a8
--- /dev/null
+++ b/1-js/1-getting-started/1-intro/article.md
@@ -0,0 +1,143 @@
+# Введение в JavaScript
+
+Давайте посмотрим, что такого особенного в JavaScript, почему именно он, и какие еще технологии существуют, кроме JavaScript.
+[cut]
+## Что такое JavaScript?
+
+*JavaScript* изначально создавался для того, чтобы сделать web-странички "живыми".
+Программы на этом языке называются *скриптами*. Они подключаются напрямую к HTML и, как только загружается страничка -- тут же выполняются.
+
+**Программы на JavaScript -- обычный текст**. Они не требуют какой-то специальной подготовки.
+
+В этом плане JavaScript сильно отличается от другого языка, который называется Java.
+
+[smart header="Почему JavaScript?"]
+Когда создавался язык JavaScript, у него изначально было другое название: "LiveScript". Но тогда был очень популярен язык Java, и маркетологи решили, что схожее название сделает новый язык более популярным.
+
+Планировалось, что JavaScript будет эдаким "младшим братом" Java. Однако, история распорядилась по-своему, JavaScript сильно вырос, и сейчас это совершенно независимый язык, со своей спецификацией, которая называется ECMAScript, и к Java не имеет никакого отношения.
+
+У него много особенностей, которые усложняют освоение, но по ходу учебника мы с ними разберемся.
+[/smart]
+
+Чтобы читать и выполнять текст на JavaScript, нужна специальная программа -- [интерпретатор](http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B0%D1%82%D0%BE%D1%80). Процесс выполнения скрипта называют *"интерпретацией"*.
+
+[smart header="Компиляция и интерпретация, для программистов"]
+Строго говоря, для выполнения программ существуют "компиляторы" и "интерпретаторы".
+
+Компиляторы преобразуют программу в машинный код. Этот машинный код затем распространяется и запускается.
+
+А интерпретаторы, в частности, встроенный JS-интерпретатор браузера -- получают программу в виде исходного кода. При этом распространяется именно сам исходный код (скрипт).
+
+Современные интерпретаторы перед выполнением преобразуют JavaScript в машинный код или близко к нему, а уже затем выполняют.
+[/smart]
+
+Во все основные браузеры встроен интерпретатор JavaScript, именно поэтому они могут выполнять скрипты на странице.
+
+Но, разумеется, этим возможности JavaScript не ограничены. Это полноценный язык, программы на котором можно запускать и на сервере, и даже в стиральной машинке, если в ней установлен соответствующий интерпретатор.
+
+## Что умеет JavaScript?
+
+Современный JavaScript -- это "безопасный" язык программирования общего назначения. Он не предоставляет низкоуровневых средств работы с памятью, процессором, так как изначально был ориентирован на браузеры, в которых это не требуется.
+
+Что же касается остальных возможностей -- они зависят от окружения, в котором запущен JavaScript.
+
+В браузере JavaScript умеет делать все, что относится к манипуляции со страницей, взаимодействию с посетителем и, в какой-то мере, с сервером:
+
+
+- Создавать новые HTML-теги, удалять существующие, менять стили элементов, прятать, показывать элементы и т.п.
+- Реагировать на действия посетителя, обрабатывать клики мыши, перемещение курсора, нажатие на клавиатуру и т.п.
+- Посылать запросы на сервер и загружать данные без перезагрузки страницы(эта технология называется "AJAX").
+- Получать и устанавливать cookie, запрашивать данные, выводить сообщения...
+- ...и многое, многое другое!
+
+
+## Что НЕ умеет JavaScript?
+
+JavaScript -- быстрый и мощный язык, но браузер накладывает на его исполнение некоторые ограничения..
+
+Это сделано для безопасности пользователей, чтобы злоумышленник не мог с помощью JavaScript получить личные данные или как-то навредить компьютеру пользователя.
+
+Этих ограничений нет там, где JavaScript используется вне браузера, например на сервере. Кроме того, различные браузеры предоставляют свои механизмы по установке плагинов и расширений, которые обладают расширенными возможностями, но требуют специальных действий по установке от пользователя
+
+**Большинство возможностей JavaScript в браузере ограничено текущим окном и страницей.**
+
+
+
+
+- JavaScript не может читать/записывать произвольные файлы на жесткий диск, копировать их или вызывать программы. Он не имеет прямого доступа к операционной системе.
+
+Современные браузеры могут работать с файлами, но эта возможность ограничена специально выделенной директорией -- *"песочницей"*. Возможности по доступу к устройствам также прорабатываются в современных стандартах и частично доступны в некоторых браузерах.
+
+- JavaScript, работающий в одной вкладке, не может общаться с другими вкладками и окнами, за исключением случая, когда он сам открыл это окно или несколько вкладок из одного источника (одинаковый домен, порт, протокол).
+
+Есть способы это обойти, и они раскрыты в учебнике, но они требуют внедрения специального кода на оба документа, которые находятся в разных вкладках или окнах. Без него, из соображений безопасности, залезть из одной вкладки в другую при помощи JavaScript нельзя.
+
+- Из JavaScript можно легко посылать запросы на сервер, с которого пришла страница. Запрос на другой домен тоже возможен, но менее удобен, т.к. и здесь есть ограничения безопасности.
+
+
+
+## В чем уникальность JavaScript?
+
+Есть как минимум *три* замечательных особенности JavaScript:
+
+[compare]
++Полная интеграция с HTML/CSS.
++Простые вещи делаются просто.
++Поддерживается всеми распространенными браузерами и включен по умолчанию.
+[/compare]
+
+**Этих трёх вещей одновременно нет больше ни в одной браузерной технологии.** Поэтому JavaScript и является самым распространенным средством создания браузерных интерфейсов.
+
+## Тенденции развития.
+
+Перед тем, как вы планируете изучить новую технологию, полезно ознакомиться с ее развитием и перспективами. Здесь в JavaScript всё более чем хорошо.
+
+### HTML 5
+
+*HTML 5* -- эволюция стандарта HTML, добавляющая новые теги и, что более важно, ряд новых возможностей браузерам.
+
+Вот несколько примеров:
+
+- Чтение/запись файлов на диск (в специальной "песочнице", то есть не любые).
+- Встроенная в браузер база данных, которая позволяет хранить данные на компьютере пользователя.
+- Многозадачность с одновременным использованием нескольких ядер процессора.
+- Проигрывание видео/аудио, без Flash.
+- 2d и 3d-рисование с аппаратной поддержкой, как в современных играх.
+
+
+Многие возможности HTML5 всё ещё в разработке, но браузеры постепенно начинают их поддерживать.
+
+[summary]Тенденция: JavaScript становится всё более и более мощным и возможности браузера растут в сторону десктопных приложений.[/summary]
+
+### EcmaScript 6
+
+Сам язык JavaScript улучшается. Современный стандарт EcmaScript 5 включает в себя новые возможности для разработки, EcmaScript 6 будет шагом вперёд в улучшении синтаксиса языка.
+
+Современные браузеры улучшают свои движки, чтобы увеличить скорость исполнения JavaScript, исправляют баги и стараются следовать стандартам.
+
+[summary]Тенденция: JavaScript становится всё быстрее и стабильнее.[/summary]
+
+Очень важно то, что новые стандарты HTML5 и ECMAScript сохраняют максимальную совместимость с предыдущими версиями. Это позволяет избежать неприятностей с уже существующими приложениями.
+
+Впрочем, небольшая проблема с HTML5 всё же есть. Иногда браузеры стараются включить новые возможности, которые еще не полностью описаны в стандарте, но настолько интересны, что разработчики просто не могут ждать.
+
+...Однако, со временем стандарт меняется и браузерам приходится подстраиваться к нему, что может привести к ошибкам в уже написанном (старом) коде. Поэтому следует дважды подумать перед тем, как применять на практике такие "супер-новые" решения.
+
+При этом все браузеры сходятся к стандарту, и различий между ними уже гораздо меньше, чем всего лишь несколько лет назад.
+
+[summary]Тенденция: всё идет к полной совместимости со стандартом.[/summary]
+
+## Недостатки JavaScript
+
+Зачастую, недостатки подходов и технологий -- это обратная сторона их полезности. Стоит ли упрекать молоток в том, что он -- тяжелый? Да, неудобно, зато гвозди забиваются лучше.
+
+В JavaScript, однако, есть вполне объективные недоработки, связанные с тем, что язык, по выражению его автора (Brendan Eich) делался "за 10 бессонных дней и ночей". Поэтому некоторые моменты продуманы плохо, есть и откровенные ошибки (которые признает тот же Brendan).
+
+Конкретные примеры мы увидим в дальнейшем, т.к. их удобнее обсуждать в процессе освоения языка.
+
+Пока что нам важно знать, что некоторые "странности" языка не являются чем-то очень умным, а просто не были достаточно хорошо продуманы в своё время. В этом учебнике мы будем обращать особое внимание на основные недоработки и "грабли". Ничего критичного в них нет, если знаешь -- не наступишь.
+
+**В новых версиях JavaScript (ECMAScript) эти недостатки постепенно убирают.**
+
+Процесс внедрения небыстрый, в первую очередь из-за старых версий IE, но они постепенно вымирают. Современный IE в этом отношении несравнимо лучше.
+
diff --git a/1-js/1-getting-started/1-intro/jslimit.jpg b/1-js/1-getting-started/1-intro/jslimit.jpg
new file mode 100755
index 00000000..12753ea9
Binary files /dev/null and b/1-js/1-getting-started/1-intro/jslimit.jpg differ
diff --git a/1-js/1-getting-started/2-alternatives/allow.png b/1-js/1-getting-started/2-alternatives/allow.png
new file mode 100755
index 00000000..42f874de
Binary files /dev/null and b/1-js/1-getting-started/2-alternatives/allow.png differ
diff --git a/1-js/1-getting-started/2-alternatives/article.md b/1-js/1-getting-started/2-alternatives/article.md
new file mode 100644
index 00000000..8d8368d0
--- /dev/null
+++ b/1-js/1-getting-started/2-alternatives/article.md
@@ -0,0 +1,101 @@
+# Альтернативные браузерные технологии
+
+Современный JavaScript используется во многих областях. Если говорить о браузерах, то вместе с JavaScript на страницах используются и другие технологии.
+
+Самые извеcтные -- это Flash, Java, ActiveX/NPAPI. Связка с ними может помочь достигнуть более интересных результатов в тех местах, где браузерный JavaScript пока не столь хорош, как хотелось бы.
+
+[cut]
+
+## Java
+
+Java -- язык общего назначения, на нем можно писать самые разные программы. Для интернет-страниц есть особая возможность - написание *апплетов*.
+
+*Апплет* -- это программа на языке Java, которую можно подключить к HTML при помощи тега `applet`:
+
+```html
+
+
+```
+
+Такой тег загружает Java-программу из файла `BTApplet.class` и выполняет ее с параметрами `param`. Апплет выполняется в отдельной части страницы, в прямоугольном "контейнере". Все действия пользователя внутри него обрабатывает апплет. Контейнер, впрочем, может быть и спрятан, если апплету нечего показывать.
+
+Конечно, для этого на компьютере должна быть установлена и включена среда выполнения Java, включая браузерный плагин. Статистика показывает, что это около 80% компьютеров. Кроме того, апплет должен быть подписан сертификатом издателя (в примере выше апплет без подписи), иначе Java заблокирует его.
+
+**Чем нам, JavaScript-разработчикам, может быть интересен Java?**
+
+В первую очередь тем, что подписанный Java-апплет может всё то же, что и обычная программа, установлена на компьютере посетителя.
+
+При попытке сделать потенциально опасное действие -- пользователь получает вопрос, который выглядит примерно так:
+
+
+
+Обойти это подтверждение или поменять его внешний вид нельзя. То есть, согласие посетителя действительно необходимо.
+
+И если оно есть -- то Java-апплет может выполнять любые действия, в отличие от JavaScript.
+
+[compare]
++Java может делать *всё* от имени посетителя, совсем как установленная программа. В целях безопасности, потенциально опасные действия требуют подписанного апплета и доверия пользователя.
+-Java требует больше времени для загрузки.
+-Среда выполнения Java, включая браузерный плагин, должна быть установлена на компьютере посетителя и включена. Таких посетителей в интернет -- около 80%.
+-Java-апплет не интегрирован с HTML-страницей, а выполняется отдельно. Но он может вызывать функции JavaScript.
+[/compare]
+
+Подписанный Java-апплет -- это возможность делать все, что угодно, на компьютере посетителя, если он вам доверяет.
+
+Java и JavaScript могут взаимодействовать, так что можно вынести в Java те вызовы, которым нужно обойти контекст безопасности, а для самой страницы использовать JavaScript.
+
+
+## ActiveX/NPAPI, плагины и расширения для браузера
+
+ActiveX для IE и NPAPI для остальных браузеров позволяют писать плагины для браузера, в том числе на языке C. Как и в ситуации с Java-апплетом, посетитель поставит их в том случае, если вам доверяет.
+
+Эти плагины могут как отображать содержимое специального формата (плагин для проигрывания музыки, для показа PDF), так и взаимодействовать со страницей.
+
+ActiveX при этом еще и очень удобен в установке. Лично я - не фанат Microsoft, но видел отличные приложения, написанные на ActiveX и я могу понять, почему люди используют его и привязываются к IE.
+
+## Adobe Flash
+
+Adobe Flash -- кросс-браузерная платформа для мультимедиа-приложений, анимаций, аудио и видео.
+
+*Flash-ролик* -- это скомпилированная программа, написанная на языке ActionScript. Ее можно подключить к HTML-странице и запустить в прямоугольном контейнере.
+
+В первую очередь Flash полезен тем, что позволяет **кросс-браузерно** работать с микрофоном, камерой, с буфером обмена, а также поддерживает продвинутые возможности по работе с сетевыми соединениями.
+
+[compare]
++Сокеты, UDP для P2P и другие продвинутые возможности по работе с сетевыми соединениями
++Поддержка мультмедиа: изображения, аудио, видео. Работа с веб-камерой и микрофоном.
+-Flash должен быть установлен и включен. А на некоторых устройствах он вообще не поддерживается.
+-Flash не интегрирован с HTML-страницей, а выполняется отдельно.
+-Существуют ограничения безопасности, однако они немного другие, чем в JavaScript.
+[/compare]
+
+**JavaScript и ActionScript могут вызывать функции друг друга**, поэтому обычно сайты используют JavaScript, а там, где он не справляется -- можно подумать о Flash.
+
+## Dart
+
+Язык Dart предложен компанией Google как замена JavaScript, у которого, по выражению создателей Dart, есть [фатальные недостатки](http://lurkmore.to/%D0%A4%D0%B0%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D0%BA).
+
+Сейчас этот язык, хотя и доступен, находится в стадии разработки. Многие из возможностей еще ожидают своей реализации, есть ряд проблем. Другие ведущие интернет-компании объявляли о своей незаинтересованности в Dart. Но в будущем он может составить конкуренцию JS, если его доведут до ума.
+
+Программы на языке Dart специальным инструментом могут быть преобразованы в JavaScript. Конечно, при этом часть важных возможностей Dart теряется.
+
+## CoffeeScript
+
+Язык [CoffeeScript](http://coffeescript.org) -- это "синтаксический сахар" для JavaScript, который короче и, местами, проще.
+
+Этот язык напрямую в браузере не работает, но предлагается специальная программа для преобразования CoffeeScript в JavaScript, и при этом, так как CoffeeScript изначально задумывался как преобразуемый в JavaScript, результирующий код выглядит вполне хорошо и работает тоже.
+
+Есть и другие языки, которые написаны "поверх" JavaScript, например [TypeScript](http://www.typescriptlang.org/).
+
+Строго говоря, это не альтернативные технологии, для их использования необходимо, как базу, хорошо знать и понимать JavaScript.
+
+Возможно, вы захотите изучить этот язык после того, как освоите JavaScript, многим он нравится.
+
+## Итого
+
+Язык JavaScript уникален благодаря своей полной интеграции с HTML/CSS. Он работает почти у всех посетителей.
+
+**...Но хороший JavaScript-программист не должен забывать и о других технологиях.** Ведь наша цель -- создание хороших приложений, и здесь Flash, Java, ActiveX/NPAPI имеют свои уникальные возможности, которые можно использовать вместе с JavaScript.
diff --git a/1-js/1-getting-started/3-pre-coding/article.md b/1-js/1-getting-started/3-pre-coding/article.md
new file mode 100644
index 00000000..ab3cf454
--- /dev/null
+++ b/1-js/1-getting-started/3-pre-coding/article.md
@@ -0,0 +1,111 @@
+# Справочники и спецификации
+
+В этом разделе мы познакомимся со справочниками и спецификациями.
+
+Если вы только начинаете изучение, то вряд ли они будут нужны прямо сейчас. Тем не менее, эта глава находится в начале, так как предсказать точный момент, когда вы захотите заглянуть в справочник -- невозможно, но точно известно, что этот момент настанет.
+
+Поэтому рекомендуется кратко взглянуть на эту страницу и взять её на заметку, чтобы при необходимости вернуться к ней в будущем.
+
+[cut]
+
+## Справочники, и как в них искать
+
+Самая полная и подробная информация по JavaScript и браузерам есть в справочниках.
+
+Её объём таков, что перевести все с английского невозможно. Даже сделать "единый полный справочник" не получается, так как изменений много и они постоянно происходят.
+
+Тем не менее, жить вполне можно если знать, куда смотреть.
+
+**Есть три основных справочника по JavaScript на английском языке**:
+
+
+- [Mozilla Developer Network](https://developer.mozilla.org/) -- содержит информацию, верную для основных браузеров. Также там присутствуют расширения только для Firefox, они помечены.
+
+Когда мне нужно быстро найти "стандартную" информацию по `RegExp` - ввожу в Google **"RegExp MDN"**, и ключевое слово "MDN" (Mozilla Developer Network) приводит к информации из этого справочника.
+
+- [MSDN](http://msdn.microsoft.com) -- справочник от Microsoft. Там много информации, в том числе и по JavaScript (они называют его "JScript"). Если нужно что-то, специфичное для IE -- лучше лезть сразу туда.
+
+Например, для информации об особенностях `RegExp` в IE -- полезное сочетание: **"RegExp msdn"**. Иногда к поисковой фразе лучше добавить термин "JScript": **"RegExp msdn jscript"**.
+- [Safari Developer Library](https://developer.apple.com/library/safari/navigation/index.html) -- менее известен и используется реже, но в нём тоже можно найти ценную информацию.
+
+
+Есть ещё справочники, не от разработчиков браузеров, но тоже хорошие:
+
+
+- [http://help.dottoro.com]() -- содержит подробную информацию по HTML/CSS/JavaScript.
+- [http://javascript.ru/manual]() -- справочник по JavaScript на русском языке, он содержит основную информацию по языку, без функций для работы с документом. К нему можно обращаться и по адресу, если знаете, что искать. Например, так: [http://javascript.ru/RegExp]().
+
+- [http://www.quirksmode.org]() -- информация о поддержке тех или иных возможностей и несовместимостях.
+Для поиска можно пользоваться комбинацией **"quirksmode onkeypress"** в Google.
+
+
+
+## Спецификации
+
+Спецификация -- это самый главный, определяющий документ, в котором написано, как себя ведёт JavaScript, браузер, CSS и т.п.
+
+Если что-то непонятно, и справочник не даёт ответ, то спецификация, как правило, раскрывает тему гораздо глубже и позволяет расставить точки над i.
+
+### Спецификация ECMAScript
+
+Спецификация (формальное описание синтаксиса, базовых объектов и алгоритмов) языка Javascript называется ECMAScript.
+
+Ее перевод есть на сайте в разделе [стандарт языка](http://javascript.ru/ecma).
+
+[smart header="Почему не просто "JavaScript" ?"]
+Вы можете спросить: "Почему спецификация для JavaScript не называется просто *"JavaScript"*, зачем существует какое-то отдельное название?"
+
+Всё потому, что JavaScript™ -- зарегистрированная торговая марка, принадлежащая корпорации Oracle.
+
+Название "ECMAScript" было выбрано, чтобы сохранить спецификацию независимой от владельцев торговой марки.
+[/smart]
+
+Спецификация может рассказать многое о том, как работает язык, и является самым фундаментальным, доверенным источником информации.
+
+Мы живем во время, когда все быстро изменяется. Современный стандарт -- это ECMA-262 5.1 (или просто ES5), поддерживается всеми современными браузерами.
+
+Не за горами -- новая спецификация ES6, в которой предусмотрены еще много полезных возможностей, делающих разработку быстрее и веселее :)
+
+### Спецификации HTML/CSS
+
+JavaScript -- язык общего назначения, поэтому в спецификации ECMAScript нет ни слова о браузерах.
+
+Соответствующую информацию вы можете найти на сайте [w3.org](http://w3.org). Там расположены стандарты HTML, CSS и многие другие.
+
+К сожалению, найти в этой куче то, что нужно, может быть нелегко, особенно когда неизвестно в каком именно стандарте искать. Самый лучший способ -- попросить Google с указанием сайта.
+
+Например, для поиска `document.cookie` набрать [document.cookie site:w3.org](https://www.google.com/search?q=document.cookie+site%3Aw3.org).
+
+Последние версии стандартов расположены на домене [dev.w3.org](http://dev.w3.org).
+
+## Итого
+
+Итак, посмотрим какие у нас есть источники информации.
+
+Справочники:
+
+- Mozilla Developer Network -- информация для Firefox и большинства браузеров.
+Google-комбо: `"RegExp MDN"`, ключевое слово "MDN".
+- MSDN -- информация по IE.
+Google-комбо: `"RegExp msdn"`. Иногда лучше добавить термин "JScript": `"RegExp msdn jscript"`.
+- [Safari Developer Library](https://developer.apple.com/library/safari/navigation/index.html) -- информация по Safari.
+- http://help.dottoro.com -- подробная информация по HTML/CSS/JavaScript с учетом браузерной совместимости.
+Google-комбо: `"RegExp dottoro"`.
+- [](http://javascript.ru/manual) -- справочник по JavaScript на русском языке. К нему можно обращаться и по адресу, если знаете, что искать. Например, так: [](http://javascript.ru/RegExp).
+Google-комбо: `"RegExp site:javascript.ru"`.
+
+
+
+Спецификации содержат важнейшую информацию о том, как оно "должно работать":
+
+
+- JavaScript, современный стандарт [ES5 (англ)](http://www.ecma-international.org/publications/standards/Ecma-262.htm), и предыдущий [ES3 (рус)](http://javascript.ru/ecma).
+- HTML/DOM/CSS -- на сайте [w3.org](http://www.w3.org).
+Google-комбо: `"document.cookie site:w3.org"`.
+
+
+То, как оно на самом деле работает и несовместимости:
+
+
\ No newline at end of file
diff --git a/1-js/1-getting-started/4-editor/article.md b/1-js/1-getting-started/4-editor/article.md
new file mode 100644
index 00000000..2fafff7d
--- /dev/null
+++ b/1-js/1-getting-started/4-editor/article.md
@@ -0,0 +1,70 @@
+# Редакторы для кода
+
+Для разработки обязательно нужен хороший редактор.
+
+Тот, который вы выберете должен иметь в своем арсенале:
+
+
+- Подсветку синтаксиса.
+- Автодополнение.
+- "Фолдинг" (от англ. folding) -- возможность скрыть-раскрыть блок кода.
+
+
+[cut]
+## IDE
+
+Термин IDE (Integrated Development Environment) -- "интегрированная среда разработки", означает редактор, который расширен большим количеством "наворотов", умеет работать со вспомогательными системами, такими как багтрекер, контроль версий, и много чего ещё.
+
+Как правило, IDE загружает весь проект целиком, поэтому может предоставлять автодополнение по функциям всего проекта, удобную навигацию по его файлам и т.п.
+
+Если вы еще не задумывались над выбором IDE, присмотритесь к следующим вариантам.
+
+
+- Продукты IntelliJ: [WebStorm](http://www.jetbrains.com/webstorm/), а также в зависимости от дополнительного языка программирования [PHPStorm (PHP)](http://www.jetbrains.com/phpstorm/), [IDEA (Java)](http://www.jetbrains.com/idea/), [RubyMine (Ruby)](http://www.jetbrains.com/ruby/) и другие.
+- Visual Studio, в сочетании с разработкой под .NET (Win)
+- Продукты на основе Eclipse, в частности [Aptana](http://www.aptana.com/) и Zend Studio
+- [Komodo IDE](http://www.activestate.com/komodo-ide) и его облегчённая версия [Komodo Edit](http://www.activestate.com/komodo-edit).
+- [Netbeans](http://netbeans.org/)
+
+
+Почти все они, за исключением Visual Studio, кросс-платформенные.
+
+Сортировка в этом списке ничего не означает. Выбор осуществляется по вкусу и по другим технологиям, которые нужно использовать вместе с JavaScript.
+
+Большинство IDE -- платные, с возможностью скачать и бесплатно использовать некоторое время. Но их стоимость, по сравнению с зарплатой веб-разработчика, невелика, поэтому ориентироваться можно на удобство.
+
+## Лёгкие редакторы
+
+Лёгкие редакторы -- не такие мощные, как IDE, но они быстрые и простые, мгновенно стартуют.
+
+Основная сфера применения лёгкого редактора -- мгновенно открыть нужный файл, чтобы что-то в нём поправить.
+
+На практике "лёгкие" редакторы могут обладать большим количеством плагинов, так что граница между IDE и "лёгким" редактором размыта, спорить что именно редактор, а что IDE -- не имеет смысла.
+
+Достойны внимания:
+
+
+- Sublime Text (кросс-платформенный, shareware).
+- TextMate (Mac, платный)
+- SciTe простой, легкий и очень быстрый (Windows, бесплатный).
+- Notepad++ (Windows, бесплатный).
+- Vim, Emacs. Если умеете их готовить.
+
+
+## Мои редакторы
+
+Лично мои любимые редакторы:
+
+
+- Как IDE -- редакторы от Jetbrains: для чистого JavaScript [WebStorm](http://www.jetbrains.com/webstorm/), если ещё какой-то язык, то в зависимости от языка: [PHPStorm (PHP)](http://www.jetbrains.com/phpstorm/), [IDEA (Java)](http://www.jetbrains.com/idea/), [RubyMine (Ruby)](http://www.jetbrains.com/ruby/). У них есть и другие редакторы под разные языки, но я ими не пользовался.
+- Как быстрый редактор -- Sublime Text.
+- Иногда Visual Studio, если разработка идёт под платформу .NET (Win).
+
+
+Если не знаете, что выбрать -- можно посмотреть на них ;)
+
+## Не будем ссориться
+
+В списках выше перечислены редакторы, которые использую я или мои знакомые -- хорошие разработчики. Конечно, существуют и другие отличные редакторы, если вам что-то нравится -- пользуйтесь.
+
+Выбор редактора, как и любого инструмента, во многом индивидуален и зависит от ваших проектов, привычек, личных предпочтений.
\ No newline at end of file
diff --git a/1-js/1-getting-started/5-devtools/article.md b/1-js/1-getting-started/5-devtools/article.md
new file mode 100644
index 00000000..a4a187bb
--- /dev/null
+++ b/1-js/1-getting-started/5-devtools/article.md
@@ -0,0 +1,112 @@
+# Консоль разработчика
+
+При разработке скриптов всегда возможны ошибки... Впрочем, что я говорю? У вас абсолютно точно будут ошибки, если конечно вы -- человек, а не робот инопланетный.
+
+Чтобы читать их в удобном виде, а также получать массу полезной информации о выполнении скриптов, в браузерах есть *инструменты разработки*.
+
+**Для разработки рекомендуется использовать Chrome или Firefox.**
+
+Другие браузеры, как правило, находятся в положении "догоняющих" по возможностям встроенных инструментов разработки. Если ошибка, к примеру, именно в Internet Explorer, тогда уже смотрим конкретно в нём, но обычно -- Chrome/Firefox.
+
+В инструментах разработчика предусмотрена масса возможностей, но на текущем этапе мы просто посмотрим, как их открывать, смотреть в консоли ошибки и запускать команды JavaScript.
+
+[cut]
+
+## Google Chrome
+
+Откройте страницу [bug.html](/devtools/bug.html).
+
+В её JavaScript-коде есть ошибка. Конечно, обычному посетителю она не видна, нужно открыть инструменты разработчика.
+
+Для этого используйте сочетание клавиш [key Ctrl+Shift+J], а если у вас Mac, то [key Cmd+Shift+J].
+
+При этом откроются инструменты разработчика и вкладка Console, в которой будет ошибка.
+
+Выглядеть будет примерно так:
+
+
+
+
+
+- При клике на `bug.html` вы перейдёте во вкладку с кодом к месту ошибки, там будет и краткое описание ошибки.
+В данном случае ошибка вызвана строкой `lalala`, которая интерпретатору непонятна.
+- Здесь же вы можете набирать команды на JavaScript, например наберите `alert("Hello")` -- команду вывода сообщения. Мы познакомимся с этой и другими командами далее.
+- Для запуска команды в консоли, нажмите [key Enter], для перевода курсора на следующую строку (если команда состоит из нескольких строк) -- [key Shift+Enter].
+
+
+Далее в учебнике мы подробнее рассмотрим отладку в Chrome в главе [](/debugging-chrome).
+
+## Firefox
+
+Для разработки в Firefox используется расширение Firebug.
+
+
+- Первым делом его надо установить.
+
+Это можно сделать со страницы https://addons.mozilla.org/ru/firefox/addon/firebug/.
+
+Перезапустите браузер. Firebug появится в правом-нижнем углу окна:
+
+
+
+Если иконки не видно -- возможно, у вас выключена панель расширений. Нажмите [key Ctrl+\] для ее показа.
+
+Ну а если ее нет и там, то нажмите [key F12] -- это горячая клавиша для запуска Firebug, расширение появится, если установлено.
+
+- Далее, для того чтобы консоль заработала, её надо включить.
+
+Если консоль уже была включена ранее, то этот шаг не нужен, но если она серая -- выберите в меню `Консоль` и включите её:
+
+
+
+- Для того, чтобы Firebug работал без глюков, желательно сначала открыть Firebug, а уже потом -- зайти на страницу.
+
+С открытым Firebug зайдите на страницу с ошибкой: [bug.html](/devtools/bug.html).
+
+Консоль покажет ошибку:
+
+
+
+Кликните на строчке с ошибкой и браузер покажет исходный код. При необходимости включайте дополнительные панели.
+
+
+
+Как и в Chrome, можно набирать и запускать команды, область для команд на рисунке находится справа, запуск команд осуществляется нажатием [key Ctrl+Enter] (для Mac -- [key Cmd]).
+
+Можно перенести её вниз. нажав на кнопочку
-- на рисунке она не видна, но есть справа-снизу панели разработки.
+
+Об основных возможностях можно прочитать на сайте firebug.ru.
+
+## Internet Explorer
+
+Панель разработчика запускается нажатием [key F12].
+
+Откройте её и зайдите на страницу с ошибкой: [bug.html](/devtools/bug.html). Если вы разобрались с Chrome/Firefox, то дальнейшее будет вам более-менее понятно, так как инструменты IE построены позже и по аналогии с Chrome/Firefox.
+
+## Safari
+
+Горячие клавиши: [key Ctrl+Shift+I], [key Ctrl+Alt+C] для Mac -- [key Cmd] вместо [key Ctrl].
+
+Для доступа к функционалу разработки через меню:
+
+
+-
+В Safari первым делом нужно активировать меню разработки.
+
+Откройте меню, нажав на колесико справа-сверху и выберите `Настройки`.
+
+Затем вкладка `Дополнительно`:
+
+
+Отметьте `Показывать меню "Разработка" в строке меню`. Закройте настройки.
+
+- Нажмите на колесико и выберите `Показать строку меню`.
+
+Инструменты будут доступны в появившейся строке меню, в пункте `Разработка`.
+
+
+## Итого
+
+Мы разобрали, как открывать инструменты разработчика и смотреть ошибки, а также запускать простые команды, не отходя от браузера.
+
+Далее мы приступим к изучению JavaScript.
diff --git a/1-js/1-getting-started/5-devtools/chrome.png b/1-js/1-getting-started/5-devtools/chrome.png
new file mode 100755
index 00000000..ed2e8928
Binary files /dev/null and b/1-js/1-getting-started/5-devtools/chrome.png differ
diff --git a/1-js/1-getting-started/5-devtools/chrome@2x.png b/1-js/1-getting-started/5-devtools/chrome@2x.png
new file mode 100755
index 00000000..ed7909e1
Binary files /dev/null and b/1-js/1-getting-started/5-devtools/chrome@2x.png differ
diff --git a/1-js/1-getting-started/5-devtools/firebug-gray.png b/1-js/1-getting-started/5-devtools/firebug-gray.png
new file mode 100755
index 00000000..1fd5f8fa
Binary files /dev/null and b/1-js/1-getting-started/5-devtools/firebug-gray.png differ
diff --git a/1-js/1-getting-started/5-devtools/firefox.png b/1-js/1-getting-started/5-devtools/firefox.png
new file mode 100755
index 00000000..5bf06dda
Binary files /dev/null and b/1-js/1-getting-started/5-devtools/firefox.png differ
diff --git a/1-js/1-getting-started/5-devtools/firefox@2x.png b/1-js/1-getting-started/5-devtools/firefox@2x.png
new file mode 100755
index 00000000..bf602cd9
Binary files /dev/null and b/1-js/1-getting-started/5-devtools/firefox@2x.png differ
diff --git a/1-js/1-getting-started/5-devtools/firefox_console_down.png b/1-js/1-getting-started/5-devtools/firefox_console_down.png
new file mode 100755
index 00000000..d17cea7b
Binary files /dev/null and b/1-js/1-getting-started/5-devtools/firefox_console_down.png differ
diff --git a/1-js/1-getting-started/5-devtools/firefox_console_down@2x.png b/1-js/1-getting-started/5-devtools/firefox_console_down@2x.png
new file mode 100755
index 00000000..2e5dd021
Binary files /dev/null and b/1-js/1-getting-started/5-devtools/firefox_console_down@2x.png differ
diff --git a/1-js/1-getting-started/5-devtools/firefox_console_enable.png b/1-js/1-getting-started/5-devtools/firefox_console_enable.png
new file mode 100755
index 00000000..aa9300d9
Binary files /dev/null and b/1-js/1-getting-started/5-devtools/firefox_console_enable.png differ
diff --git a/1-js/1-getting-started/5-devtools/firefox_console_enable@2x.png b/1-js/1-getting-started/5-devtools/firefox_console_enable@2x.png
new file mode 100755
index 00000000..a9eb7f26
Binary files /dev/null and b/1-js/1-getting-started/5-devtools/firefox_console_enable@2x.png differ
diff --git a/1-js/1-getting-started/5-devtools/safari.png b/1-js/1-getting-started/5-devtools/safari.png
new file mode 100755
index 00000000..7fda7429
Binary files /dev/null and b/1-js/1-getting-started/5-devtools/safari.png differ
diff --git a/1-js/1-getting-started/index.md b/1-js/1-getting-started/index.md
new file mode 100644
index 00000000..b3e8e77d
--- /dev/null
+++ b/1-js/1-getting-started/index.md
@@ -0,0 +1,3 @@
+# Введение
+
+Про язык JavaScript и окружение для разработки на нём.
\ No newline at end of file
diff --git a/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.md b/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.md
new file mode 100644
index 00000000..95104042
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.md
@@ -0,0 +1,19 @@
+Код страницы:
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
diff --git a/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.view/index.html b/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.view/index.html
new file mode 100644
index 00000000..a3b0b7b1
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/1-hello-alert/solution.view/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/1-js/2-first-steps/1-hello-world/1-hello-alert/task.md b/1-js/2-first-steps/1-hello-world/1-hello-alert/task.md
new file mode 100644
index 00000000..22890483
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/1-hello-alert/task.md
@@ -0,0 +1,9 @@
+# Выведите alert
+
+[importance 5]
+
+Сделайте страницу, которая выводит "Я - JavaScript!".
+
+Создайте ее на диске, откройте в браузере, убедитесь, что все работает.
+
+[demo src="solution"]
diff --git a/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/alert.js b/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/alert.js
new file mode 100755
index 00000000..5dbc7e7b
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/alert.js
@@ -0,0 +1 @@
+alert('Я - JavaScript!');
diff --git a/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/index.html b/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/index.html
new file mode 100755
index 00000000..7b1dac29
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/solution.md b/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/solution.md
new file mode 100644
index 00000000..bef2fc5b
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/solution.md
@@ -0,0 +1,12 @@
+Код для HTML-файла:
+
+```html
+
+```
+
+Для файла `alert.js` из той же директории:
+
+```js
+//+ src="alert.js"
+```
+
diff --git a/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/task.md b/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/task.md
new file mode 100644
index 00000000..93cf1b4e
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/2-hello-alert-ext/task.md
@@ -0,0 +1,7 @@
+# Вывести alert внешним скриптом
+
+[importance 5]
+
+Возьмите решение предыдущей задачи [](/task/hello-alert) и вынесите скрипт во внешний файл `alert.js`, который расположите в той же директории.
+
+Откройте страницу и проверьте, что вывод сообщения всё ещё работает.
\ No newline at end of file
diff --git a/1-js/2-first-steps/1-hello-world/3-async-defer-first/solution.md b/1-js/2-first-steps/1-hello-world/3-async-defer-first/solution.md
new file mode 100644
index 00000000..089a87e0
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/3-async-defer-first/solution.md
@@ -0,0 +1,6 @@
+Ответы:
+
+- Первым выполнится `big.js`, это нормальная последовательность выполнения подряд идущих скриптов.
+- Первым выполнится `small.js`, так как скрипты из-за `async` ведут себя совершенно независимо друг от друга, страница тоже от них не зависит.
+- Первым выполнится `big.js`, так как скрипты, подключённые через `defer`, сохраняют порядок выполнения относительно друг друга.
+
\ No newline at end of file
diff --git a/1-js/2-first-steps/1-hello-world/3-async-defer-first/task.md b/1-js/2-first-steps/1-hello-world/3-async-defer-first/task.md
new file mode 100644
index 00000000..72405f9a
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/3-async-defer-first/task.md
@@ -0,0 +1,27 @@
+# Какой скрипт выполнится первым?
+
+[importance 4]
+
+В примере ниже подключены два скрипта `small.js` и `big.js`.
+
+Если предположить, что `small.js` загружается гораздо быстрее, чем `big.js` -- какой выполнится первым?
+
+```html
+
+
+```
+
+А вот так?
+
+```html
+
+
+```
+
+А так?
+
+```html
+
+
+```
+
diff --git a/1-js/2-first-steps/1-hello-world/4-async-defer-inline-first/solution.md b/1-js/2-first-steps/1-hello-world/4-async-defer-inline-first/solution.md
new file mode 100644
index 00000000..288b3b6f
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/4-async-defer-inline-first/solution.md
@@ -0,0 +1,17 @@
+**Первым выполнится обычный скрипт.**
+
+Заметим, что атрибуты `defer` и `async` на обычном скрипте будут проигнорированы. То есть, он работает так же, как и без них:
+
+```html
+
+```
+
+Далее, обычно скрипты с `async/defer` не тормозят обработку страницы. То есть, браузер начнёт их загружать, а сам пойдёт дальше показывать страницу и выполнять скрипты.
+
+То есть, обычный скрипт в этом случае, очевидно, выполнится первым.
+
+...Но более того, даже если скрипты `small.js` и `big.js` не нужно загружать, а браузер берёт их из кеша, то он всё равно устроен так, что выполнит их после основных скриптов страницы.
+
+Таким образом, первым всегда будет обычный скрипт, а вот относительный порядок `small.js` и `big.js` здесь не регламентирован.
diff --git a/1-js/2-first-steps/1-hello-world/4-async-defer-inline-first/task.md b/1-js/2-first-steps/1-hello-world/4-async-defer-inline-first/task.md
new file mode 100644
index 00000000..e4013123
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/4-async-defer-inline-first/task.md
@@ -0,0 +1,17 @@
+# Что выполнится первым из скриптов?
+
+[importance 4]
+
+В этой странице есть три скрипта.
+
+Какой выполнится первым?
+
+```html
+
+
+
+
+```
+
diff --git a/1-js/2-first-steps/1-hello-world/article.md b/1-js/2-first-steps/1-hello-world/article.md
new file mode 100644
index 00000000..0eed1c60
--- /dev/null
+++ b/1-js/2-first-steps/1-hello-world/article.md
@@ -0,0 +1,315 @@
+# Привет, мир!
+
+В этой статье мы создадим простой скрипт и посмотрим, как он работает.
+[cut]
+## Тег SCRIPT
+
+[smart header="А побыстрее?"]
+В том (и только в том!) случае, если читатель нетерпелив и уже разрабатывал на JavaScript или имеет достаточно опыта в другом программировании, он может не читать каждую статью этого раздела, а прыгнуть сразу на главу [](/javascript-specials). Там будет кратко самое основное.
+
+Если же у вас есть достаточно времени и желание начать с азов, то читайте дальше :)
+[/smart]
+
+Программы на языке JavaScript можно вставить в любое место HTML при помощи тега `SCRIPT`. Например:
+
+```html
+
+
+
+
+
+
+
+
+
+ Начало документа...
+
+*!*
+
+*/!*
+
+ ...Конец документа
+
+
+
+```
+
+Этот пример использует следующие элементы:
+
+
+<script> ... </script>
+- Тег `script` содержит исполняемый код. Предыдущие стандарты HTML требовали обязательного указания атрибута `type`, но сейчас он уже не нужен. Достаточно просто `
+```
+
+Браузер, для которого предназначались такие трюки, очень старый Netscape, давно умер. Поэтому в этих комментариях нет нужды.
+
+
+
+Итак, для вставки скрипта мы просто пишем `
+```
+
+Здесь `/path/to/script.js` -- это абсолютный путь к файлу, содержащему скрипт (из корня сайта).
+
+Браузер сам скачает скрипт и выполнит.
+
+Можно указать и полный URL, например:
+
+```html
+
+```
+
+Вы также можете использовать путь относительно текущей страницы, в частности `src="jquery.js"` обозначает файл из текущей директории.
+
+Чтобы подключить несколько скриптов, используйте несколько тегов:
+
+```html
+
+
+...
+```
+
+[smart]
+Как правило, в HTML пишут только самые простые скрипты, а сложные выносят в отдельный файл.
+
+Браузер скачает его только первый раз и в дальнейшем, при правильной настройке сервера, будет брать из своего [кеша](http://ru.wikipedia.org/wiki/%D0%9A%D1%8D%D1%88).
+
+Благодаря этому один и тот же большой скрипт, например, меню или библиотека функций, может использоваться на разных страницах без полной перезагрузки с сервера.
+
+[/smart]
+
+
+[warn header="Если указан атрибут `src`, то содержимое тега игнорируется."]
+
+В одном теге `SCRIPT` нельзя одновременно подключить внешний скрипт и указать код.
+
+Вот так не cработает:
+
+```html
+
+```
+
+Нужно выбрать: либо `SCRIPT` идёт с `src`, либо содержит код. Тег выше следует разбить на два: один -- с `src`, другой -- с кодом, вот так:
+
+```html
+
+
+```
+
+[/warn]
+
+## Асинхронные скрипты: defer/async
+
+Обычно тег `
+*/!*
+
+ Кролики посчитаны!
+
+