- После закрывающихся тегов не должно быть лишних пробелов и/или табов. Для автоудаления можно настроить свой редактор кода. Для Sublime Text можно посмотреть в репе [sputnik](https://github.com/ZK/sputnik/wiki/Софт).
- После закрывающихся тегов не должно быть лишних пробелов и/или табов. Для автоудаления можно настроить свой редактор кода. Для Sublime Text можно посмотреть в репе [sputnik](//github.com/ZK/sputnik/wiki/Софт).
```html
<!-- Плохо -->
...
...
@@ -198,9 +198,9 @@
</html>
```
Подробнее познакомиться с атрибутом `lang` можно в [спецификации](http://www.w3.org/html/wg/drafts/html/master/semantics.html#the-html-element).
Подробнее познакомиться с атрибутом `lang` можно в [спецификации](//www.w3.org/html/wg/drafts/html/master/semantics.html#the-html-element).
Список кодов различных языков на [Sitepoint](http://reference.sitepoint.com/html/lang-codes).
Список кодов различных языков на [Sitepoint](//reference.sitepoint.com/html/lang-codes).
### <a name="html-ie-compatibility-mode">Режим совместимости Internet Explorer</a>
...
...
@@ -212,11 +212,11 @@ IE поддерживает использование специального
Если сайт будет находиться на собственном хостинге, то следует убрать этот `meta`-тег и настроить хостинг для определения IE и добавления специальных заголовков.
Для получения дополнительной информации можно ознакомиться с обсуждением на [Stack Overflow](http://stackoverflow.com/questions/6771258/whats-the-difference-if-meta-http-equiv-x-ua-compatible-content-ie-edge-e).
Для получения дополнительной информации можно ознакомиться с обсуждением на [Stack Overflow](//stackoverflow.com/questions/6771258/whats-the-difference-if-meta-http-equiv-x-ua-compatible-content-ie-edge-e).
Явно объявив кодировку символов, вы быстро и легко обеспечите правильное отображение вашего контента. При этом, вы сможете избежать использования [символьных сущностей](http://www.w3schools.com/html/html_entities.asp) в вашем HTML-коде, при условии, что их кодировка совпадает с кодировкой документа (как правило, utf-8).
Явно объявив кодировку символов, вы быстро и легко обеспечите правильное отображение вашего контента. При этом, вы сможете избежать использования [символьных сущностей](//www.w3schools.com/html/html_entities.asp) в вашем HTML-коде, при условии, что их кодировка совпадает с кодировкой документа (как правило, utf-8).
```html
<head>
...
...
@@ -249,9 +249,9 @@ IE поддерживает использование специального
### <a name="html-absolute-and-relative-paths">Абсолютные и относительные пути к ресурсам</a>
...
...
@@ -261,7 +261,7 @@ IE поддерживает использование специального
- Для страниц сайта, находящихся в поддиректории (обычно на хостинге ZK или заказчика).
- В JavaScript, например, для указания изображения метки на Яндекс.Картах или Google Maps.
Подробнее можно почитать на [htmlbook.ru](http://htmlbook.ru/samhtml/ssylki/absolyutnye-i-otnositelnye-ssylki).
Подробнее можно почитать на [htmlbook.ru](//htmlbook.ru/samhtml/ssylki/absolyutnye-i-otnositelnye-ssylki).
### <a name="html-file-name">Название файлов</a>
...
...
@@ -313,7 +313,7 @@ contacts.html
Логические атрибуты одни из тех, которые не требуют объявленного значения. XHTML требует от вас задать значение, но в HTML5 нет такого требования.
За подробной информацией обратимся к разделу [о логических атрибутах на WhatWG](http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attributes):
За подробной информацией обратимся к разделу [о логических атрибутах на WhatWG](//www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attributes):
> Наличие логического атрибута у элемента говорит об истинном его значении, а отсутствие атрибута — о ложном.
...
...
@@ -416,10 +416,10 @@ contacts.html
```
<!-- Плохо -->
Мы пользуемся поисковой системой <a href="http://yandex.ru/">Яндекс</a>.
Мы пользуемся поисковой системой <a href="//yandex.ru/">Яндекс</a>.
<!-- Хорошо -->
Мы пользуемся поисковой системой <a href="http://yandex.ru/" target="_blank" rel="nofollow">Яндекс</a>.
Мы пользуемся поисковой системой <a href="//yandex.ru/" target="_blank" rel="nofollow">Яндекс</a>.
```
- Телефоны, email-адреса и Skype-контакт должны быть ссылками:
...
...
@@ -487,7 +487,7 @@ contacts.html
- Если JavaScript изменяет вид страницы, обязательно делать это при помощи смены CSS-классов, а не путём правки атрибута `style` элемента.
- Если в форме элемент удаляется (скрывается), он должен удаляться и из [DOM](http://ru.wikipedia.org/wiki/Document_Object_Model).
- Если в форме элемент удаляется (скрывается), он должен удаляться и из [DOM](//ru.wikipedia.org/wiki/Document_Object_Model).
*[naltatis.github.io/jade-syntax-docs](//naltatis.github.io/jade-syntax-docs/) - ещё одна документация Jade.
*[jsman.ru/jade/](//jsman.ru/jade/) - ещё одна документация Jade.
*[html2jade.org](//html2jade.org/) - конвертация HTML в Jade и Jade в HTML.
*[html2jade.aaron-powell.com](//html2jade.aaron-powell.com/) - и еще один инструмент для конвертации HTML → Jade.
## 1. Назначение папок
...
...
@@ -138,7 +138,7 @@ input.input-text(
## 5. Переносы строк
- Добавляйте перенос строки для однотипных блоков с множественным вложением элементов. В лучшем случае используйте [примесь (mixin)](http://jade-lang.com/reference/#mixins).
- Добавляйте перенос строки для однотипных блоков с множественным вложением элементов. В лучшем случае используйте [примесь (mixin)](//jade-lang.com/reference/#mixins).
- Склеивайте CSS-файлы в один файл и минифицируйте.
- Компилируйте CSS-код в один файл с помощью препроцессоров, например, Stylus, Sass или Less.
Для получения дополнительной информации следует ознакомиться со [статьей Стива Соудерса](http://www.stevesouders.com/blog/2009/04/09/dont-use-import/).
Для получения дополнительной информации следует ознакомиться со [статьей Стива Соудерса](//www.stevesouders.com/blog/2009/04/09/dont-use-import/).
```html
<!-- Используйте тег link -->
...
...
@@ -294,7 +294,7 @@ input[type="text"] {
## <a name='#css-media-queries'>Место для media query</a>
Помещайте медиавыражения настолько близко к соответствующим наборам правил, насколько это возможно. Не объединяйте их в отдельную таблицу стилей. Не помещайте их в конце файла, для этого можно использовать специальный сборщик в [Grunt](https://www.npmjs.org/package/grunt-combine-media-queries) или [Gulp](https://www.npmjs.org/package/gulp-combine-media-queries). В противном случае это приведет к тому, что медиавыражения будут не замечены в будущем.
Помещайте медиавыражения настолько близко к соответствующим наборам правил, насколько это возможно. Не объединяйте их в отдельную таблицу стилей. Не помещайте их в конце файла, для этого можно использовать специальный сборщик в [Grunt](//www.npmjs.org/package/grunt-combine-media-queries) или [Gulp](//www.npmjs.org/package/gulp-combine-media-queries). В противном случае это приведет к тому, что медиавыражения будут не замечены в будущем.
Вот типичная структура:
...
...
@@ -364,7 +364,7 @@ input[type="text"] {
Часто нам не нужно устанавливать все значения сокращенной записи свойства. Например, HTML заголовки устанавливают только отступы сверху и снизу, таким образом, в случае необходимости нужно переопределить только эти два значения. Чрезмерное использование сокращенной записи свойств часто приводит к грязному коду с ненужными переопределения и непреднамеренными побочными эффектами.
На сайте Mozilla Developer Network есть отличная статья о [сокращенной записи свойств](https://developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties) для тех кто не знаком с такой формой записи.
На сайте Mozilla Developer Network есть отличная статья о [сокращенной записи свойств](//developer.mozilla.org/en-US/docs/Web/CSS/Shorthand_properties) для тех кто не знаком с такой формой записи.
```css
/* Плохо */
...
...
@@ -401,8 +401,8 @@ input[type="text"] {
- Вложенность селекторов допускается **только** в случае необходимости, например, когда нужно изменить свойства при наведении (`:hover`) или другом подобного псевдоселекторе, и при использовании специальных глобальных классов.
Дополнительно к прочтению:
-[Scope CSS classes with prefixes](http://markdotto.com/2012/02/16/scope-css-classes-with-prefixes/).
-[Stop the cascade](http://markdotto.com/2012/03/02/stop-the-cascade/).
-[Scope CSS classes with prefixes](//markdotto.com/2012/02/16/scope-css-classes-with-prefixes/).
-[Stop the cascade](//markdotto.com/2012/03/02/stop-the-cascade/).
```css
/* Плохо */
...
...
@@ -443,7 +443,7 @@ a.link { /* ... */ }
> Методология БЭМ создана в Яндексе для разработки сайтов, которые надо делать быстро, а поддерживать долгие годы. Она позволяет создавать расширяемые и повторно используемые компоненты интерфейса.
Чтобы понять что к чему, необходимо подробнее ознакомиться с [методологией БЭМ](https://ru.bem.info/methodology/quick-start/)
Чтобы понять что к чему, необходимо подробнее ознакомиться с [методологией БЭМ](//ru.bem.info/methodology/quick-start/)
Здесь, в Золотом Коде, для написания JavaScript мы используем [подход Google](https://google.github.io/styleguide/javascriptguide.xml), проверенный годами, с некоторыми изменениями.
Здесь, в Золотом Коде, для написания JavaScript мы используем [подход Google](//google.github.io/styleguide/javascriptguide.xml), проверенный годами, с некоторыми изменениями.
Поэтому, в любом, не описанном ниже случае, стоит прибегать к стайлгайду от Google.
## <a name='TOC'>Оглавление</a>
...
...
@@ -26,7 +26,7 @@
## <a name='es2015'>ES2015</a>
На проектах используется система сборки [`startanull`](https://github.com/hustlahusky/startanull), которая позволяет использовать новый стандарт JavaScript - [ECMAScript 2015](https://learn.javascript.ru/es-modern), и компилироваь его в привычный всем бразуерам ES5.
На проектах используется система сборки [`startanull`](//github.com/hustlahusky/startanull), которая позволяет использовать новый стандарт JavaScript - [ECMAScript 2015](//learn.javascript.ru/es-modern), и компилироваь его в привычный всем бразуерам ES5.
- Указывайте директиву use strict в начале файла, для работы с новым стандартом:
...
...
@@ -163,7 +163,7 @@ let item = new Object();
letitem={};
```
- Не используйте [зарезервированные слова](http://es5.github.io/#x7.6.1) в качестве ключей объектов. Они не будут работать в IE8. [Подробнее](https://github.com/airbnb/javascript/issues/61)
- Не используйте [зарезервированные слова](//es5.github.io/#x7.6.1) в качестве ключей объектов. Они не будут работать в IE8. [Подробнее](//github.com/airbnb/javascript/issues/61)
- Если вам необходимо скопировать массив, используйте `Array::slice`. [jsPerf](http://jsperf.com/converting-arguments-to-an-array/7)
- Если вам необходимо скопировать массив, используйте `Array::slice`. [jsPerf](//jsperf.com/converting-arguments-to-an-array/7)
```javascript
letlen=items.length,
...
...
@@ -275,7 +275,7 @@ let hero = {
};
```
- Дополнительная запятая в конце объектов: **Нет**. Она способна вызвать проблемы с IE6/7 и IE9 в режиме совместимости. В некоторых реализациях ES3 запятая в конце массива увеличивает его длину на 1, что может вызвать проблемы. Этот вопрос был прояснен только в ES5 ([оригинал](http://es5.github.io/#D)):
- Дополнительная запятая в конце объектов: **Нет**. Она способна вызвать проблемы с IE6/7 и IE9 в режиме совместимости. В некоторых реализациях ES3 запятая в конце массива увеличивает его длину на 1, что может вызвать проблемы. Этот вопрос был прояснен только в ES5 ([оригинал](//es5.github.io/#D)):
```javascript
// плохо
...
...
@@ -376,7 +376,7 @@ let val = Number(inputValue);
letval=parseInt(inputValue,10);
```
- Если по какой-либо причине вы делаете что-то дикое, и именно на `parseInt` тратится больше всего ресурсов, используйте побитовый сдвиг [из соображений быстродействия](http://jsperf.com/coercion-vs-casting/3), но обязательно оставьте комментарий с объяснением причин.
- Если по какой-либо причине вы делаете что-то дикое, и именно на `parseInt` тратится больше всего ресурсов, используйте побитовый сдвиг [из соображений быстродействия](//jsperf.com/coercion-vs-casting/3), но обязательно оставьте комментарий с объяснением причин.
```javascript
// хорошо
...
...
@@ -388,7 +388,7 @@ let val = parseInt(inputValue, 10);
letval=inputValue>>0;
```
-**Примечание:** Будьте осторожны с побитовыми операциями. Числа в JavaScript являются [64-битными значениями](http://es5.github.io/#x4.3.19), но побитовые операции всегда возвращают 32-битные значенения. [Источник](http://es5.github.io/#x11.7). Побитовые операции над числами, значение которых выходит за 32 бита (верхний предел: 2,147,483,647).
-**Примечание:** Будьте осторожны с побитовыми операциями. Числа в JavaScript являются [64-битными значениями](//es5.github.io/#x4.3.19), но побитовые операции всегда возвращают 32-битные значенения. [Источник](//es5.github.io/#x11.7). Побитовые операции над числами, значение которых выходит за 32 бита (верхний предел: 2,147,483,647).
```
2147483647 >> 0 //=> 2147483647
...
...
@@ -464,7 +464,7 @@ let named = function named() {
})();
```
- Никогда не объявляйте функцию внутри блока кода — например в if, while, else и так далее. Единственное исключение — блок функции. Вместо этого присваивайте функцию уже объявленной через `let` переменной. Условное объявление функций работает, но в различных браузерах работает по-разному.
-**Примечание** ECMA-262 устанавливает понятие `блока` как списка операторов. Объявление функции (не путайте с присвоением функции переменной) не является оператором. [Комментарий по этому вопросу в ECMA-262](http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf#page=97).
-**Примечание** ECMA-262 устанавливает понятие `блока` как списка операторов. Объявление функции (не путайте с присвоением функции переменной) не является оператором. [Комментарий по этому вопросу в ECMA-262](//www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf#page=97).
```javascript
// плохо
...
...
@@ -576,7 +576,7 @@ if (collection.length) {
}
```
- Более подробно можно прочитать в статье [Truth Equality and JavaScript](http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/#more-2108) от Angus Croll
- Более подробно можно прочитать в статье [Truth Equality and JavaScript](//javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/#more-2108) от Angus Croll
**[[⬆]](#Оглавление)**
...
...
@@ -612,7 +612,7 @@ function() {
## <a name='comments'>Комментарии</a>
- Документируйте код в формате [jsdoc](http://usejsdoc.org/). Включите описание, опишите типы и значения для всех параметров и возвращаемых значений.
- Документируйте код в формате [jsdoc](//usejsdoc.org/). Включите описание, опишите типы и значения для всех параметров и возвращаемых значений.
```javascript
// плохо
...
...
@@ -741,7 +741,7 @@ function setSidebar() {
}
```
- Для DOM-запросов используйте классический каскадный CSS-синтаксис `$('.sidebar ul')` или родитель > потомок `$('.sidebar > ul')`. [jsPerf](http://jsperf.com/jquery-find-vs-context-sel/16)
- Для DOM-запросов используйте классический каскадный CSS-синтаксис `$('.sidebar ul')` или родитель > потомок `$('.sidebar > ul')`. [jsPerf](//jsperf.com/jquery-find-vs-context-sel/16)
- Используйте `find` для поиска внутри DOM-объекта.
```javascript
...
...
@@ -777,7 +777,7 @@ $('button#menuToggler');
$('#menuToggler');
```
- Для задания обработчика элементу используйте метод [`.on()`](http://api.jquery.com/on/).
- Для задания обработчика элементу используйте метод [`.on()`](//api.jquery.com/on/).
-[Pro JavaScript Design Patterns](http://www.amazon.com/JavaScript-Design-Patterns-Recipes-Problem-Solution/dp/159059908X) - Ross Harmes and Dustin Diaz
-[High Performance Web Sites: Essential Knowledge for Front-End Engineers](http://www.amazon.com/High-Performance-Web-Sites-Essential/dp/0596529309) - Steve Souders
-[Maintainable JavaScript](http://www.amazon.com/Maintainable-JavaScript-Nicholas-C-Zakas/dp/1449327680) - Nicholas C. Zakas
-[JavaScript Web Applications](http://www.amazon.com/JavaScript-Web-Applications-Alex-MacCaw/dp/144930351X) - Alex MacCaw
-[Pro JavaScript Techniques](http://www.amazon.com/Pro-JavaScript-Techniques-John-Resig/dp/1590597273) - John Resig
-[Pro JavaScript Design Patterns](//www.amazon.com/JavaScript-Design-Patterns-Recipes-Problem-Solution/dp/159059908X) - Ross Harmes and Dustin Diaz
-[High Performance Web Sites: Essential Knowledge for Front-End Engineers](//www.amazon.com/High-Performance-Web-Sites-Essential/dp/0596529309) - Steve Souders
-[Maintainable JavaScript](//www.amazon.com/Maintainable-JavaScript-Nicholas-C-Zakas/dp/1449327680) - Nicholas C. Zakas
-[JavaScript Web Applications](//www.amazon.com/JavaScript-Web-Applications-Alex-MacCaw/dp/144930351X) - Alex MacCaw
-[Pro JavaScript Techniques](//www.amazon.com/Pro-JavaScript-Techniques-John-Resig/dp/1590597273) - John Resig
Строго соблюдайте, предложенные здесь, соглашения.<br>
Если вы нашли ошибку, будь она большая или маленькая, сразу сообщите об этом.<br>
Если у вас есть что дополнить или вы хотите принять участие в разработке этих соглашений, создайте [issue](https://git.zolotoykod.ru/111/developer-guide/issues/new).
Если у вас есть что дополнить или вы хотите принять участие в разработке этих соглашений, создайте [issue](./issues/new).
В наших проектах мы используем автоматизированные инструменты для облегчения разработки сайтов - Gulp c препроцессорами Pug (бывш. Jade) и Less (и др.), систему конроля версий - Git, код проекта в репозитории git.zolotoykod.ru
Скачайте и установите консольную версию [Git с официального сайта](https://git-scm.com/downloads)
Скачайте и установите консольную версию [Git с официального сайта](//git-scm.com/downloads)
## 2. Знакомимся с Git
### 2.1. Проходим обучающийся курс
1. Для новичков рекомендуется пройти небольшой обучающийся курс [Git How To](http://githowto.com/ru).
1. Разбираемся в том, как устроена работа в команде - [Github Flow](https://guides.github.com/introduction/flow/)
1. Для новичков рекомендуется пройти небольшой обучающийся курс [Git How To](//githowto.com/ru).
1. Разбираемся в том, как устроена работа в команде - [Github Flow](//guides.github.com/introduction/flow/)
### 2.2. Полезные ссылки
#### 2.2.1. Разбираемся с Git
*[Git How To](http://githowto.com/ru) — это интерактивный тур, который познакомит вас с основами Git. Тур создан с пониманием того, что лучшим способом научиться чему-нибудь — сделать это своими руками.
*[Команды git](http://git-scm.com/book/commands) - полный список команд на официальном сайте
*[git - the simple guide](http://rogerdudler.github.io/git-guide/)
*[Ежедневная работа с Git](http://habrahabr.ru/post/174467/) - статья на Хабре
*[Что нам стоит Git настроить!](http://habrahabr.ru/post/164297/) - статья на Хабре
*[Git How To](//githowto.com/ru) — это интерактивный тур, который познакомит вас с основами Git. Тур создан с пониманием того, что лучшим способом научиться чему-нибудь — сделать это своими руками.
*[Команды git](//git-scm.com/book/commands) - полный список команд на официальном сайте
*[git - the simple guide](//rogerdudler.github.io/git-guide/)
*[Ежедневная работа с Git](//habrahabr.ru/post/174467/) - статья на Хабре
*[Что нам стоит Git настроить!](//habrahabr.ru/post/164297/) - статья на Хабре
Так как новые проекты работают в Docker окружении, сервер для проксирования контейнеров так же проще организовать, используя Docker.
Просто склонируй [zk/docker-proxy-letsencrypt](http://git.zolotoykod.ru/zk/docker-proxy-letsencrypt) и запусти!
Просто склонируй [zk/docker-proxy-letsencrypt](//git.zolotoykod.ru/zk/docker-proxy-letsencrypt) и запусти!
## Bitnami
В качестве локального сервера рекомендуется использовать [Nginx Stack by Bitnami](https://bitnami.com/stack/nginx).
В качестве локального сервера рекомендуется использовать [Nginx Stack by Bitnami](//bitnami.com/stack/nginx).
Bitnami Nginx Stack предоставляет полноценное окружение для разработки на PHP, MySQL и Nginx. В пакет также входят: phpMyAdmin, SQLite, ImageMagick, FastCGI, Memcache, GD, CURL, PEAR, PECL и другие компоненты. Также известен как LEMP для Linux, WEMP для Windows и MEMP для OS X.
Документация по [Nginx Stack](https://wiki.bitnami.com/Infrastructure_Stacks/Bitnami_Nginx_Stack)
Документация по [Nginx Stack](//wiki.bitnami.com/Infrastructure_Stacks/Bitnami_Nginx_Stack)
Composer - менеджер зависимостей для PHP. По-умолчанию в Nginx Stack включен Composer, но обычно устаревшей версии. Поэтому лучше сразу его обновить и настроить работу с ним.
1. Скачайте последнюю версию файла [`composer.phar`](https://getcomposer.org/download/)
1. Скачайте последнюю версию файла [`composer.phar`](//getcomposer.org/download/)
1. Замените им устаревшую версию в папке `php`
1. Создайте bat-файл для исполнения команды composer (для Windows):
Как разворачивать новые проекты описано в [документации](https://wiki.bitnami.com/Infrastructure_Stacks/Bitnami_Nginx_Stack#How_can_I_create_a_custom_PHP_application.3f) + настройки [создания виртуального хоста](https://wiki.bitnami.com/Infrastructure_Stacks/Bitnami_Nginx_Stack#How_to_create_a_Virtual_Host.3f)
Как разворачивать новые проекты описано в [документации](//wiki.bitnami.com/Infrastructure_Stacks/Bitnami_Nginx_Stack#How_can_I_create_a_custom_PHP_application.3f) + настройки [создания виртуального хоста](//wiki.bitnami.com/Infrastructure_Stacks/Bitnami_Nginx_Stack#How_to_create_a_Virtual_Host.3f)
[*Atom*](https://atom.io) — это бесплатный текстовый редактор с открытым исходным кодом для OS X, Linux, Windows с поддержкой плагинов, написанных на Node.js, и встраиваемых под управлением Git Control. Большинство плагинов имеют статус свободного программного обеспечения, разрабатываются и поддерживаются сообществом.
[*Atom*](//atom.io) — это бесплатный текстовый редактор с открытым исходным кодом для OS X, Linux, Windows с поддержкой плагинов, написанных на Node.js, и встраиваемых под управлением Git Control. Большинство плагинов имеют статус свободного программного обеспечения, разрабатываются и поддерживаются сообществом.
## Настройка Atom
Установка необходимых плагинов
-[*git-control*](https://atom.io/packages/git-control) - GUI для работы с git прямо из редактора
-[*git-time-machine*](https://atom.io/packages/git-time-machine) - Показывает историю файла из GIT
[*PhpStorm*](https://www.jetbrains.com/phpstorm/) — коммерческая кросс-платформенная интегрированная среда разработки для PHP. Разрабатывается компанией JetBrains на основе платформы IntelliJ IDEA.
[*PhpStorm*](//www.jetbrains.com/phpstorm/) — коммерческая кросс-платформенная интегрированная среда разработки для PHP. Разрабатывается компанией JetBrains на основе платформы IntelliJ IDEA.
## Настройка параметров PHPStorm
...
...
@@ -21,14 +21,14 @@
- Set 'ESLint package'
- Configuration file = Automatic search
- PHP
- Set interpreter from [Nginx Stack](http://git.zolotoykod.ru/111/developer-guide/blob/master/3-software/3.1-local-server.md)
- Set interpreter from [Nginx Stack](./3-software/3.1-local-server.md)
- Composer
- Set path to Composer.phar from [Nginx Stack](http://git.zolotoykod.ru/111/developer-guide/blob/master/3-software/3.1-local-server.md)
- Set path to Composer.phar from [Nginx Stack](./3-software/3.1-local-server.md)
-[Create a masked background effect with `background-attachment: fixed`](http://tutsplus.github.io/create-a-masked-background-effect-with--background-attachment--fixed--/)
-[12 Fun Sharing Button Effects](http://demo.tutorialzine.com/2014/11/12-fun-sharing-button-effects/simple.html)
-[Single input 3D form](http://thecodeplayer.com/walkthrough/single-input-3d-form)
-[Tutorials for Creating 3D Effects in CSS3 and JavaScript](http://www.webresourcesdepot.com/3d-effects-in-css3-javascript/)
-[How I Built The One Page Scroll Plugin](http://www.smashingmagazine.com/2014/08/25/how-i-built-the-one-page-scroll-plugin/)([![habr] Хабр](http://habrahabr.ru/post/235943/))
-[CSS Only Loaders](http://blog.pexels.com/css-only-loaders/)
-[Create a masked background effect with `background-attachment: fixed`](//tutsplus.github.io/create-a-masked-background-effect-with--background-attachment--fixed--/)
-[12 Fun Sharing Button Effects](//demo.tutorialzine.com/2014/11/12-fun-sharing-button-effects/simple.html)
-[Single input 3D form](//thecodeplayer.com/walkthrough/single-input-3d-form)
-[Tutorials for Creating 3D Effects in CSS3 and JavaScript](//www.webresourcesdepot.com/3d-effects-in-css3-javascript/)
-[How I Built The One Page Scroll Plugin](//www.smashingmagazine.com/2014/08/25/how-i-built-the-one-page-scroll-plugin/)([![habr] Хабр](//habrahabr.ru/post/235943/))
-[CSS Only Loaders](//blog.pexels.com/css-only-loaders/)
* :star: [Swiper](http://www.idangero.us/sliders/swiper/) - крутой адаптивный слайдер со свайпом, подходит для всего, не только для картинок, хорошее API
*[Простой слайдер с множеством содержимым](http://tympanus.net/codrops/2012/12/31/how-to-create-a-simple-multi-item-slider/)