Skip to content

Commit

Permalink
Merge pull request #1 from worksolutions/master
Browse files Browse the repository at this point in the history
Актуализация
  • Loading branch information
petrgrishin committed Feb 20, 2015
2 parents bc1364b + 7685dad commit acc5245
Show file tree
Hide file tree
Showing 27 changed files with 167 additions and 5 deletions.
Binary file modified .gitignore
Binary file not shown.
31 changes: 31 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Работа с базой знаний
=====================

## Терминалогия

### Fork
Клон любого репозитория, являющийся самостоятельным репозиторием, имеющим ссылку на репозиторий, который был
источником для клона.

### Pull request
Запрос на слияние (merge) изменений. Может производится между как ветками одного репозитория так и между ветками
разных репозиториев (между форком и его источником, например).

## Процесс добавления изменений

Для добавления изменений в базу знаний требуется произвести следующую последовательность действий:

1. Создаем свой `fork` репозитория базы знаний
2. Делаем изменения
3. Отправляем `pull request` в базу знаний

Чтобы получить изменения, сделанные другими людьми в ваш `fork` вам нужно отправить `pull request`
из базы знаний в свой `fork`

[Дополнительная информация по работе с форками](https://help.github.com/articles/fork-a-repo/)

## Создание статьи

Все файлы статей располагаются в директории `articles`. Каждая статья представляет собой отдельную
директорию с файлом статьи в формате [markdown](https://github.com/DsXack/knowbase#user-content-Форматирование-текста). В этой директории можно располагать дополнительные файлы, такие
как изображения, используемые в статье и другие. __На главной страницы базы знаний должна быть ссылка на вашу инструкцию__.
43 changes: 38 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,39 @@

Сборник статей компании "Рабочие решения".

- [Работа с базой знаний](#user-content-Работа-с-базой-знаний)
- [Форматирование текста](#user-content-Форматирование-текста)
- [Git](#git)
- [PhpStorm](#phpstorm)
- [JavaScript](#javascript)
- [jQuery](#jquery)
- [Php](#php)
- [Программирование](#user-content-Программирование)
- [Проектирование](#user-content-Проектирование)
- [1С-Битрикс](#user-content-1С-Битрикс)
- [Zend Framework 2](#zend-framework-2)
- [Linux](#linux)

## Работа с базой знаний

- [Инструкция](CONTRIBUTING.md)

### Форматирование текста
- [Markdown (википедия)](https://ru.wikipedia.org/wiki/Markdown)
- [Markdown Basics](https://help.github.com/articles/markdown-basics/)
- [GitHub Flavored Markdown](https://help.github.com/articles/github-flavored-markdown/)
- [Writing on GitHub](https://help.github.com/articles/writing-on-github/)

## Git
- [Инструкция по работе с Git](articles/git/instruction/README.md)
- [Инструкция по работе с Git](articles/Git/Инструкция/README.md)
- [Scott Chacon - Pro Git (ru)](http://git-scm.com/book/ru) - бесплатная книга про Git
- [Пропробуй Git](https://try.github.io) - интерактивный курс от [codeschool.com](http://codeschool.com) для [github.com](http://github.com)

## PhpStorm
- [Эффективное использование PhpStorm](https://docs.google.com/presentation/d/1jWt3zD64y-HjEJUDtnCJz8f7npZIE8JZ0Dj-arTS9Ks/edit#slide=id.g180ed61f7_0139) - презентация-обзор возможностей PhpStorm (mac)
- [Эффективное использование PhpStorm](http://goo.gl/gZfTqp) - презентация-обзор возможностей PhpStorm (win+linux)
- [Как создавать шаблоны кода](articles/phpstorm/how-create-templates/README.md)
- [Шаблоны кода для работы с 1С-Битрикс](articles/phpstorm/bitrix-templates.md)
- [Как создавать шаблоны кода](articles/PhpStorm/Как создавать шаблоны кода/README.md)
- [Шаблоны кода для работы с 1С-Битрикс](articles/PhpStorm/Шаблоны кода для работы с 1С-Битрикс/README.md)
- [Прохождение PHPUnit тестов на удаленном сервере через SSH c PhpStorm](http://confluence.jetbrains.com/display/PhpStorm/Running+PHPUnit+tests+over+SSH+on+a+remote+server+with+PhpStorm)

## JavaScript
Expand All @@ -28,14 +51,24 @@
- [petrgrishin/array-access](https://github.com/petrgrishin/array-access) - работа с массивами в объектно-ориентированном стиле
- [sokolovsky/Verifier](https://github.com/sokolovsky/Verifier) - валидация полей в объектно-ориентированном стиле

## Программирование
- [Регулярные выражения](media/regexp.pdf)

## Проектирование
- [Где реализовать знание об адресах контроллера?](http://habrahabr.ru/post/226237/)

## Тестирование
- [Работа с инструментом управления браузерами Selenium IDE](http://selenium2.ru/docs/selenium-ide.html)
- [Приемы проектирования тестов](http://selenium2.ru/docs/test-design-considerations.html)

## 1С-Битрикс
- [Свойство "Привязка к разделам инфоблока в новом окне"](articles/bitrix/property-link-to-section-information-block-in-a-new-window/README.md)
- [Модуль миграций](articles/Bitrix/Модуль миграций/README.md)
- [WS Tools](https://github.com/worksolutions/bitrix-module-tools/) - набор инструментов поддержки проектов
- [Свойство "Привязка к разделам инфоблока в новом окне"](articles/Bitrix/Свойство - привязка к разделам инфоблока в новом окне/README.md)

## Zend Framework 2
- [Подключение DoctrineORM к ZF2](http://marco-pivetta.com/doctrine-orm-zf2-tutorial/) - презентация

## Linux
- [Командная строка Linux](articles/linux/shell.md)
- [Advanced Bash-Scripting Guide](http://www.opennet.ru/docs/RUS/bash_scripting_guide/) - подробный мануал по использованию командной строки linux, а так же написание собственных сценариев
- [Командная строка Linux](articles/Linux/Shell/README.md)
98 changes: 98 additions & 0 deletions articles/Bitrix/Модуль миграций/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
Модуль миграций
===============

### Установка и настройка

Для установки в адресную строку сайта добавить:

```
/bitrix/admin/update_system_partner.php?addmodule=ws.migrations
```

При установке модуля необходимо определить основные параметры, такие как: путь к каталогу миграций. В этом каталоге будут создаваться файлы для поддержки (импорта/экспорта) актуализации схемы данных. Лучше всего каталог сделать версионируемым, в противном случае актуальность каталога необходимо будет обеспечивать в ручном режиме при помощи копирования фалов, учитывая все версии проекта.

###### Установка параметров при установке модуля

![Рис 1. Установка параметров при установке модуля.](Установка параметров при установке модуля.png)

В процессе установки создаются ссылки по всем записям мигрирующих сущностей.

После установки модуля в настройках можно активировать учет миграций разделов инфоблоков. Так как эта сущность не всегда нуждается в `мигрировании` по умолчанию она отключена.

###### Настройка модуля

![Рис 2. Настройка модуля.](Настройка модуля.png)

Активирование тестов в настройках необходимо только при работе над реализацией функционала непосредственно модуля, активирование этого флага непосредственно в проекте может привести к непредсказуемым результатам.

### Начало работы

Для начала успешного применения модуля миграций в проекте необходимо произвести инициализацию начального состояния. В первую очередь нужно определить какая версия проекта является наиболее актуальной. К примеру для проекта, который находится в разработке наиболее актуальной версией является одна из версий разработчиков, либо демонстрационная. В проекте, которому обеспечивается техническая поддержка - наоборот, наиболее актуальной можно назвать `production` версию.

##### Способы инициализации в зависимости от приведенных выше ситуаций:

1. ##### Импорт схемы данных.

Использовать в случае развертывания на `production` сервере разработанного проекта. Необходимо произвести экспорт миграций актуальной версии разработчика на странице управления модулем `Экспорт миграций`.

###### Экспорт схемы миграций

![Рис 3. Экспорт схемы миграций.](Экспорт схемы миграций.png)

Полученную схему загрузить на `production` версию проекта на странице импорт миграций. Обязательно указать флаг “Перенос только схемы” и загрузить файл с актуальной схемой. При этом должны создаться необходимые инфоблоки проекта, со списком ссылок.

###### Импорт схемы данных миграций

![Рис 4. Импорт схемы данных миграций.](Импорт схемы данных миграций.png)

2. ##### Использования дампа данных проекта.

Даже при наличии данных у разработчиков, при подключении модуля миграций, рекомендуется использовать именно этот способ, т.к. является наиболее стабильным решением. Для этого необходимо сделать дамп данных проекта используя стандартные инструменты Битрикс (у источника дампа данных должен быть активирован модуль миграций) и применить его на версии разработчика. Важно: Сразу после применения дампа необходимо на странице импорта миграций активировать текущую версию, нажав для этого кнопку `Применить` (флаг `Перенос только схемы` должен быть
неактивен).

###### Произведение импорта в момент следующий за обновлением дампа данных.

![Рис 5. Произведение импорта в момент следующий за обновлением дампа данных.](Произведение импорта в момент следующий за обновлением дампа данных.png)

###### Что происходит в этом случае?

В этом случае происходит обновление хэша текущей версии вместе с обновлением ссылок всех сущностей.

### Как происходит учет изменений (фиксации в файлы)

Учет изменений осуществляется при помощи обработки событий изменения предметной области, события регистрируются для каждого обработчика модуля (например есть обработчик миграций разделов информационных блоков). При этом обработчик обрабатывает только один тип сущности.

При событии изменении данных вызываются определенные методы обработчика для создания нового снимка схемы данных, который помещается во вновь созданную фиксацию и сохраняется в файл (формат json).

### Применение изменений

Применение изменений осуществляется при анализе файлов фиксаций, вычисляются новые фиксации, извлекаются их данные и при помощи обработчиков которые сохраняли эти данные для фиксаций эти данные обновляют текущую схему. Важно понимать, что при создании новых сущностей сторонних версий создаются фиксации учета ссылок текущей версии, которые так же необходимо экспортировать синхронизировть файлы каталога миграций).

###### Интерфейс применения миграций, т.е. изменений основанных на парралельных версиях проекта.

![Рис 6. Интерфейс применения миграций, т.е. изменений основанных на парралельных версиях проекта.](Интерфейс применения миграций.png)

Для более глубокого понимания применения изменений с учетом версионирования есть схема.

### Откат изменений

Любые изменения фиксаций журналируются. Сохраняются как новые данные, так и снимок созданный перед применением миграций. Таким образом существует возможность отката последнего обновления. Так же стоит отметить, что обновления устанавливаются пакетами и при применении обновлений сохраняется запись о пользователе установившем обновления и времени обновления.

### Диаграммы работы модуля

1. ###### Диаграмма классов

![Диаграмма классов](Диаграмма классов.png)

2. ###### Диаграмма последовательности (фиксация изменений)

![Диаграмма последовательности (фиксация изменений)](Диаграмма последовательности (фиксация изменений).png)

3. ###### Диаграмма последовательности (применение изменений)

![Диаграмма последовательности (применение изменений)](Диаграмма последовательности (применение изменений).png)

4. ###### Версионирование. Принцип определения версий

![Версионирование. Принцип определения версий](Версионирование. Принцип определения версий.png)

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes.
File renamed without changes.
Binary file added media/regexp.pdf
Binary file not shown.

0 comments on commit acc5245

Please sign in to comment.