babahalki
Постоялец
- Регистрация
- 6 Май 2016
- Сообщения
- 247
- Реакции
- 107
- Автор темы
- #81
Очередная версия.
# RAPIDA Ecommerce CMS
## SimplaCMS 2.3.8 fork
## ****************
## Changelog
## ****************
## =================
## v0.0.8.1.2 11.11.2017
## =================
### bugs:
- Исправлена работа страницы пользователя после авторизации.
- Исправлена работа обновления счетчика товаров в индикаторе корзины.
- Исправлена работа на странице восстановления пароля пользователя.
- Исправлена система восстановление пароля по почте.
- Исправлен пустой список брендов в карточке товара в админке.
- Устранены ошибки в simpla->categories
- Устранены ошибки при экспорте товаров
- Исправлен экспорт товаров.
- Мелкие доработки в xhr контроллере.
- Мелкие исправления в шаблонах админки и дизайна сайта в связи с переходом на изменение формата данных, предоставляемых api. (Simpla возвращала почти всега данные в виде простого числового массива внутри которого содержались объекты, если внутри элементов(свойств) объекта было несколько элементов, они тоже делались числовыми массивами). Очень неудобный для работы формат был полностью изменен. Теперь все только в массивах.
- Исправлено отображение опций товара в карточке товара.
### improvements:
- Запуск/возобновление сессии переведен из index.php в конструктор класса api/Simpla.php. Теперь стартовать сессиию отдельно не требуется, удобно для работы существующих сейчас отдельно ajax скриптах, которые запускаются не через index.php.
- Первые попытки использовать api системы через ajax. На странице корзины при удалении товара, производится запрос к api, в случае успеха удаляется соответствующая строка с товаром.
## =================
## v0.0.8.1.1 09.11.2017
## =================
### features:
- Система стала полностью совместима с сервером Nginx. Теперь Apache вообще не требуется. Удалось добиться за счет перевода большей части маршрутизации в саму систему, а не через файлы конфигурации веб-сервера. Simpla всю маршрутизацию делает только через .htaccess. Rapida же наооборот, всю маршрутизацию, в том числе в админ. панели, делает через главный контроллер. Файл конфигурации Nginx или для Apache содержит 2 инструкцию: 1. Все что не является реальным файлом на диске, направлять в /index.php. 2. Все что является реальным файлом на диске открывать непосредственно веб-сервером без участия php. Подобный подход позволяет не нагружать систему простыми запросами статических данных.
- В админку в раздел настройки выведен выключатель кеша.
- В админку в раздел настройки выведен переключатель способа записи кеша. Быстрый или экономный.
- В админку в раздел настройки выведен выключатель отладчика.
- Авторизация администратора переключена на общую авторизацию пользователей.
- Инсталер обучен создавать запись администратора по новой схеме (не через файл simpla/.passwd)
- Раздел настроек пользователя расширен возможностью установки статуса администратора. Для обновления версии БД без перезаписи необходимо выполнить следующие запросы:
```
ALTER TABLE `s_users` ADD `admin` TINYINT(1) NULL DEFAULT '0' AFTER `enabled`, ADD INDEX `perm` (`admin`);
ALTER TABLE `s_users` ADD `last_login` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `last_ip`, ADD INDEX `last_login` (`last_login`);
ALTER TABLE `s_users` ADD `perm` VARCHAR(200) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT '0' AFTER `enabled`;
ALTER TABLE `s_users` CHANGE `created` `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP();
ALTER TABLE `s_users` CHANGE `enabled` `enabled` TINYINT(1) NULL DEFAULT '0';
ALTER TABLE `s_users` DROP INDEX `email`, ADD UNIQUE `email` (`email`) USING BTREE;
ALTER TABLE `s_brands` CHANGE `url` `url` VARCHAR(255) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL;
```
### improvements:
- Эффективно работать с оптимизацией БД можно только на большой базе. Разбираюсь с индексами. Выясняется, что в некоторых случаях в БД отсутсвуют элементарные индексы, необходимость которых очевидна. Например, оказалось, что индекс поля created в таблице s_products отсутствует в Simpla. В результате простейший запрос:
```SELECT id, name, brand_id FROM s_products WHERE visible = 1 ORDER BY created DESC LIMIT 0, 3```
выполняется несколько секунд!
- Немного улучшил скорость импорта товаров за счет увеличение количества импортируемых товаров за 1 цикл скрипта simpla/ajax/import.php. Было 10 товаров, сделал 50 и добавил кеширование метода features->get_options_uniq().
- Добавил кеширование метода features->get_options_ids()
- Добавил 3 необязательный параметр при записи в дисковый кеш. Теперь можно использовать более быстрое сохранение и загрузку из кеша. set_cache_nosql($key, $data, $json). Параметр json - необязательный и по-умолчанию установлен в значение true. В этом случае кеш пишется в виде JSON строки с неэкранированными символами UNICODE, перед записью строка для экономии места преобразовывается в кодировку cp1251 (задается в конфиге). Сами функции json_encode/json_decode медленнее на 40%, чем serialize()/unserialize(), а еще конвертация. В общем если 3 параметр задан false, данные сохраняются в виде serialize строки без изменения кодировки. Таким образом экономится примерно 250мс, что из 500мс на загрузку всей страницы. Возможно выведу в опции, чтобы можно было не экономить место и добиться более высоких скоростей.
- Проведена ревизия фундаментальных методов класса db, которые отвечают за работу метода db->placehold(), удален неиспользуемый тип плейсхолдера # - константа. Остальным типам составлено описание, их стало так много, что вспомнить нужный бывает сложно.
- Заметно ускорен импорт товаров за счет сокращения выполнения дублирующихся операций по добавлению брендов, названий свойств. Сами значения свойств теперь добавляются в основном одновременно, одним запросом, а не по одному.
- Класс api/managers удален, теперь управления всеми пользователями, и покупателями и системными пользователями осуществляется через 1 класс api/users.
### bugs:
- Взамен jquery механизма импорта изображений в товар способом "перетаскивание" внедрен более простой механизм на чистом JS. Теперь работает без нареканий.
- Исправлена ошибка в магическом методе config->__get(), которая приводила к ошибке, если переменной в конфиге нет.
- Скорее не устранение бага, а усовершенствование, тем не менее пишу в баги потому что обнаружилось в ходе дебагинга функции импорта товаров. При импорте возврат от insert_id используется в дальнейшей работе, поскольку insert_id() давал 0, на ошибочных запросах, 0 использовался дальше, как нормальное значение. Метод db->insert_id() очень тупо возвращает то, что дает mysqli->insert_id, если запрос не удался - insert_id возвращает 0, что нельзя считать нормальным ответом. Теперь в случае ошибки, db->insert_id() возвращает false. Аналогичное поведение сделал и для db->num_rows().
- Исправление отсутствия отображения брендов на страницах каталога.
- Мелкие исправления то там, то здесь.
<-------------- добавлено через 421 сек. -------------->
Задача: Поставить с нуля с гитхаба. (Самого приложения git у нас нет)
1. Качаем весь репозиторий архивом целиком
2. Распаковываем туда, где у нас корневой каталог вебсервера.
3. Открываем браузер и пишем в адресной строке
Выполняем установку с шага database.
Задача: Поставить с нуля с гитхаба. У нас есть гитхаб
1. Заходим в каталог вебсервера и пишем
2. Открываем браузер и пишем в адресной строке
Выполняем установку с шага database.
Задача: Обновить систему с github
1. Заходим в каталог с установленной рапидой и пишем 1 простую команду
2. Если изменений в БД в обновлении не было - больше ничего делать не надо. Если изменения в базе были, то дополнительно к действиям в п.1 надо внести изменения в нашу базу. Какие именно запросы надо выполнить указано в информации по данному обновлению в файле README.MD в корневом каталоге.
P.S. Привычный способ установки из архива с дистрибутивом. Обновляется реже, чтобы не засорять репозиторий. Сейчас доступна самая последняя на настоящее время версия. Rapida 0.0.8.1.2
# RAPIDA Ecommerce CMS
## SimplaCMS 2.3.8 fork
## ****************
## Changelog
## ****************
## =================
## v0.0.8.1.2 11.11.2017
## =================
### bugs:
- Исправлена работа страницы пользователя после авторизации.
- Исправлена работа обновления счетчика товаров в индикаторе корзины.
- Исправлена работа на странице восстановления пароля пользователя.
- Исправлена система восстановление пароля по почте.
- Исправлен пустой список брендов в карточке товара в админке.
- Устранены ошибки в simpla->categories
- Устранены ошибки при экспорте товаров
- Исправлен экспорт товаров.
- Мелкие доработки в xhr контроллере.
- Мелкие исправления в шаблонах админки и дизайна сайта в связи с переходом на изменение формата данных, предоставляемых api. (Simpla возвращала почти всега данные в виде простого числового массива внутри которого содержались объекты, если внутри элементов(свойств) объекта было несколько элементов, они тоже делались числовыми массивами). Очень неудобный для работы формат был полностью изменен. Теперь все только в массивах.
- Исправлено отображение опций товара в карточке товара.
### improvements:
- Запуск/возобновление сессии переведен из index.php в конструктор класса api/Simpla.php. Теперь стартовать сессиию отдельно не требуется, удобно для работы существующих сейчас отдельно ajax скриптах, которые запускаются не через index.php.
- Первые попытки использовать api системы через ajax. На странице корзины при удалении товара, производится запрос к api, в случае успеха удаляется соответствующая строка с товаром.
## =================
## v0.0.8.1.1 09.11.2017
## =================
### features:
- Система стала полностью совместима с сервером Nginx. Теперь Apache вообще не требуется. Удалось добиться за счет перевода большей части маршрутизации в саму систему, а не через файлы конфигурации веб-сервера. Simpla всю маршрутизацию делает только через .htaccess. Rapida же наооборот, всю маршрутизацию, в том числе в админ. панели, делает через главный контроллер. Файл конфигурации Nginx или для Apache содержит 2 инструкцию: 1. Все что не является реальным файлом на диске, направлять в /index.php. 2. Все что является реальным файлом на диске открывать непосредственно веб-сервером без участия php. Подобный подход позволяет не нагружать систему простыми запросами статических данных.
- В админку в раздел настройки выведен выключатель кеша.
- В админку в раздел настройки выведен переключатель способа записи кеша. Быстрый или экономный.
- В админку в раздел настройки выведен выключатель отладчика.
- Авторизация администратора переключена на общую авторизацию пользователей.
- Инсталер обучен создавать запись администратора по новой схеме (не через файл simpla/.passwd)
- Раздел настроек пользователя расширен возможностью установки статуса администратора. Для обновления версии БД без перезаписи необходимо выполнить следующие запросы:
```
ALTER TABLE `s_users` ADD `admin` TINYINT(1) NULL DEFAULT '0' AFTER `enabled`, ADD INDEX `perm` (`admin`);
ALTER TABLE `s_users` ADD `last_login` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `last_ip`, ADD INDEX `last_login` (`last_login`);
ALTER TABLE `s_users` ADD `perm` VARCHAR(200) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT '0' AFTER `enabled`;
ALTER TABLE `s_users` CHANGE `created` `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP();
ALTER TABLE `s_users` CHANGE `enabled` `enabled` TINYINT(1) NULL DEFAULT '0';
ALTER TABLE `s_users` DROP INDEX `email`, ADD UNIQUE `email` (`email`) USING BTREE;
ALTER TABLE `s_brands` CHANGE `url` `url` VARCHAR(255) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL;
```
### improvements:
- Эффективно работать с оптимизацией БД можно только на большой базе. Разбираюсь с индексами. Выясняется, что в некоторых случаях в БД отсутсвуют элементарные индексы, необходимость которых очевидна. Например, оказалось, что индекс поля created в таблице s_products отсутствует в Simpla. В результате простейший запрос:
```SELECT id, name, brand_id FROM s_products WHERE visible = 1 ORDER BY created DESC LIMIT 0, 3```
выполняется несколько секунд!
- Немного улучшил скорость импорта товаров за счет увеличение количества импортируемых товаров за 1 цикл скрипта simpla/ajax/import.php. Было 10 товаров, сделал 50 и добавил кеширование метода features->get_options_uniq().
- Добавил кеширование метода features->get_options_ids()
- Добавил 3 необязательный параметр при записи в дисковый кеш. Теперь можно использовать более быстрое сохранение и загрузку из кеша. set_cache_nosql($key, $data, $json). Параметр json - необязательный и по-умолчанию установлен в значение true. В этом случае кеш пишется в виде JSON строки с неэкранированными символами UNICODE, перед записью строка для экономии места преобразовывается в кодировку cp1251 (задается в конфиге). Сами функции json_encode/json_decode медленнее на 40%, чем serialize()/unserialize(), а еще конвертация. В общем если 3 параметр задан false, данные сохраняются в виде serialize строки без изменения кодировки. Таким образом экономится примерно 250мс, что из 500мс на загрузку всей страницы. Возможно выведу в опции, чтобы можно было не экономить место и добиться более высоких скоростей.
- Проведена ревизия фундаментальных методов класса db, которые отвечают за работу метода db->placehold(), удален неиспользуемый тип плейсхолдера # - константа. Остальным типам составлено описание, их стало так много, что вспомнить нужный бывает сложно.
- Заметно ускорен импорт товаров за счет сокращения выполнения дублирующихся операций по добавлению брендов, названий свойств. Сами значения свойств теперь добавляются в основном одновременно, одним запросом, а не по одному.
- Класс api/managers удален, теперь управления всеми пользователями, и покупателями и системными пользователями осуществляется через 1 класс api/users.
### bugs:
- Взамен jquery механизма импорта изображений в товар способом "перетаскивание" внедрен более простой механизм на чистом JS. Теперь работает без нареканий.
- Исправлена ошибка в магическом методе config->__get(), которая приводила к ошибке, если переменной в конфиге нет.
- Скорее не устранение бага, а усовершенствование, тем не менее пишу в баги потому что обнаружилось в ходе дебагинга функции импорта товаров. При импорте возврат от insert_id используется в дальнейшей работе, поскольку insert_id() давал 0, на ошибочных запросах, 0 использовался дальше, как нормальное значение. Метод db->insert_id() очень тупо возвращает то, что дает mysqli->insert_id, если запрос не удался - insert_id возвращает 0, что нельзя считать нормальным ответом. Теперь в случае ошибки, db->insert_id() возвращает false. Аналогичное поведение сделал и для db->num_rows().
- Исправление отсутствия отображения брендов на страницах каталога.
- Мелкие исправления то там, то здесь.
<-------------- добавлено через 421 сек. -------------->
базу, да и вообще все, что нужно после скачивания с гита, лучше сделать через инсталер.В вайл config прописать доспуты к базе.
Задача: Поставить с нуля с гитхаба. (Самого приложения git у нас нет)
1. Качаем весь репозиторий архивом целиком
Код:
https://github.com/legale/rapida
3. Открываем браузер и пишем в адресной строке
Код:
http://localhost/install.php?step=database
Задача: Поставить с нуля с гитхаба. У нас есть гитхаб
1. Заходим в каталог вебсервера и пишем
Код:
git clone https://github.com/legale/rapida
Код:
http://localhost/install.php?step=database
Задача: Обновить систему с github
1. Заходим в каталог с установленной рапидой и пишем 1 простую команду
Код:
git pull
P.S. Привычный способ установки из архива с дистрибутивом. Обновляется реже, чтобы не засорять репозиторий. Сейчас доступна самая последняя на настоящее время версия. Rapida 0.0.8.1.2
Код:
https://github.com/legale/rapida/tree/master/distro
Последнее редактирование: