Создана открытая группа в Telegram.
Имя группы: abricosorg
Пригласительный на вступление: https://telegram.me/joinchat/CEauRAo69SR52cmK4zQtnw
Вступайте в группу, задавайте вопросы, следите за новостями.
Создана открытая группа в Telegram.
Имя группы: abricosorg
Пригласительный на вступление: https://telegram.me/joinchat/CEauRAo69SR52cmK4zQtnw
Вступайте в группу, задавайте вопросы, следите за новостями.
Очередной раз получил письмо с негодованием по поводу документацией в платформе. Начал было отвечать на него, но ввиду регулярности таких писем и размером ответа, отвечу записью в блоге.
Сразу скажу, что с негодованием по поводу документацией в платформе, ее устарелыми инструкциями по установке, и прочим, жизненно необходимым текстом — согласен. Проблема была, есть и возможно сохраниться еще неопределенное время. Да чего уж говорить, если уж официальные дистрибутивы на сайте 2013 года до сих пор...
Причина проста — для меня процесс разработки настолько увлекательный, что на документацию попросту не остается времени.
Хотя неоднократные попытки привести все в порядок периодически возникают.
Для одного из своих проектов возникла необходимость создать базу знаний из документов, но таким образом, чтобы можно было каждый абзац, раздел и прочий элемент документа использовать в другом модуле. Причем ссылаться на определенный текст можно было бы с соблюдением иерархии в документе: Страница -> Раздел -> Абзац.
В итоге за недельку набросал модуль doc — редактор конструктор.
Всего каких-то пару лет и ядро вернулось в ветку мастер!
Можно сказать, что глобальных изменений в ядре 0.5.7 возможно больше не будет, хотя...
Но речь не об этом, а о том, что из-за столь долгих странствий ядра, все основные модули также развивались минуя мастера. Что являлось крайне не удобным и мучительным. А иногда и вызывало путаницу.
Вот как раз для устранения беспорядка и была создана сборка allrepos, которая включает в себя все основные модули платформы и их актуальные на сегодняшней день версии (бранчи).
Теперь, при создании очередной сборки очередного проекта, я смотру в multik.json сборки, в котором указаны актуальные бранчи модулей и ядра.
Также удобство этой сборки в том, что все основные модули в одном месте.
Вступление для тех, кто не знаком с Github...
Определить деятельность довольно просто.
Так как ядро и все основные модули находятся в репозиториях на Githab-е по адресу https://github.com/abricos, то уже смотря на этот список видно, когда последний раз вносились изменения в тот или иной репозиторий. Да и сам список сортируется по дате изменения. Но вот какая именно идёт работа в исходниках, не всегда понятно.
Для получения более детальной информации, нужно сначала определить в какой ветке идёт работа, а потом и просмотреть список вносимых изменений.
На примере модуля Комментарии, заходим в список веток (branches): https://github.com/abricos/abricos-mod-comment/branches.
На текущий момент видим, что последние изменения вносились в ветку 0.4.3. Жмем на нее, тем самым переходя в исходники этой ветки, и далее жмем на [N] commits (N-всего изменений — коммитов). Перед нами открывается список проделываемой работы по этому модулю.
Теперь, собственно, пару строк о работе и некоторых планах.
Как я уже и говорил в разных уголочках этого сайта, вся работа сейчас сосредоточена над ядром версии 0.5.7 и переводом модулей под эту версию.
Всегда и во всем я руководствуюсь простым правилом: — Неважно какой движок, сайт, сервис или версию я обновляю, важно наличие полной резервной копии. Даже если создание резервной копии в несколько раз по времени превышает накат обновления или мелкой правки (случаи с другими движками, системами).
Итак, если обновляю боевой сайт с изменением версии ядра:
1. Делаю самый актуальный дамп базы и выгружаю на локальный сервак;
2. На локальном серваке поднимаю копию сайта, но с чистым движком. Это проще, если все файлы, не относящиеся к движку, содержатся в сборке проекта.
3. Если сборки проекта нет, создаю ее, наполняю всеми необходимыми файлами, шаблонами и т.п. и фиксирую ее в приватном репозитории. (https://gitlab.com/, https://bitbucket.org/ and etc.).
4. На локальном сайте обязательно включаю режим разработчика в config.php и открываю главную страницу сайта. В этот момент платформа определяет наличие изменений версий и накатывает обновления в базы данных.
5. Тестирую локальную версию сайта. Кстати, в версии платформы 0.6.0 разработал механизм покрытия ядра и модулей тестами. Так что, в скором будущем с выходом версии 0.6.0 кол-во багов будет на порядок меньше.
6. На боевом сервере останавливаю сайт и в его настройках (config.php) включаю режим ReadOnly.
7. Очередной раз делаю актуальную копию дампа базы данных и так же делаю полную копию текущих файлов сайта.
8. Заливаю новую версию платформы на боевой сервер, отключаю режим ReadOnly и открываю главную страницу сайта. Сайт обновлен.
Если обновление не содержит изменение версии ядра, то все практически тоже самое, за исключением создания полной копии файлов сайта — просто заливаю платформу с заменой.
Вроде ничего не забыл...
Если что не понятно, спрашивайте.
Да, кстати, этот процесс у меня практически полностью автоматизирован всевозможными скриптами. Так что, если возникнет необходимость в них, скажите, скину их куда нибудь в репозиторий.
Вот сижу, осуществляю полный рефакторинг модуля "Финансы" под все самые последние возможности платформы 0.5.7, а тем временем в голове накопилось куча мыслей, с которыми хочется поделиться...
Честно признаюсь, писать сложный код мне гораздо проще, чем статьи или еще хуже документацию. Даже сейчас, пишу этот текст, а на другом мониторе моя любимая IDE PhpStorm и каждые тридцать минут, я переключаюсь с нее на этот текст, уделяя ему по 5 минут. Но писать такие тексты походу все-таки нужно и придется. Периодически получается так, что платформой очередной раз всерьез начинают интересоваться вебмастера. Качают с сайта старые версии, на которые я уже давно смотреть не могу, и даже не подозревают, что есть продукт гораздо круче и то, какая бурная жизнь платформы бурлит за кадром...
Экспериментальная система структуризации моделей приложения — придуманная мной в версии 0.5.7, сильнейшая библиотека YUI версии 3 — которую YAHOO прекратила поддержку, AbricosJS — JS шаблонизатор — который я вынес в отдельный проект, Bootstrap от Twitter, и еще куча мелких, но значимых возможностей — все это позволяет в прямом смысле слова наслаждаться разработкой очередного проекта. Но речь не об этом.
Далее, мои мысли будут сумбурными и структурировать их не охота, просто вылью некоторую их часть, что крутиться в голове.
Модуль блога переписан под все самые современные технологии платформы, дальше пойдет только его доработка напильником (кстати, очень рекомендую разработчикам посмотреть на применяемые технологии в нем, рождено множество отработанных техник упрощающих саму разработку в разы). Теперь на очереди модуль интернет-магазина. А этот модуль куда более обширнее и сложнее, чем модуль блога.
Когда я только проектировал модуль интернет-магазина, я закладывал в него самые различные варианты его использования, но я даже предположить не мог, что этот модуль будет востребован не только в интернет-магазинах, но и на сайтах для предоставления различной информации не связанных с потребительской онлайн корзины.