Powered by CodeIgniter
tochka6

tochka6

7
4 голоса
  ПрофильБлог (2)Комментарии (45)Закладки (1)Продукты 
1. Документация
"Документация написана наполовину.© Дмитрий Беляев

Пардоньте сильно. IMHO: Она вообще не написана. То, что написано — _не_документация_ к фреймворку. Это сто пятая рассказка об как оно вообще. Брошеная кость.

Что ожидается (обычно) от документации к фреймоворку?
— Какие модули (классы/функции) имеются в наличии (регулярно обновляемый список, по мере добавления новых модулей)
— Какие аттрибуты, методы имеются в наличии в _каждом_ из модулей (детально, по каждому представленному модулю. с примерами _возможного_ использования. _без_необходимости методично засовывать физически нос в каждый из модулей и самостоятельно разбираться <как оно там..>.
Потому что, главное назначение фреймоворка (любого) — _быстрое_написание сайта.

Ничего подобного в документации представленной на 24 страницах нет.

2. Установка.

Для фреймоворка необходимо создать/установить уникальную базу данных. Именно его, родную, ту, которая идет с ним в пакете. Ни с какой другой, ранее существущей и, не дай бог, заполненой данными, он не будет работать. Даже, если ваша существующая имеет одноименные таблицы(поля в таблицах).
Почему?
Ответ:
в представленном… хм… фреймворке имеет место быть уникальное шифрование юзерпаролей, по схеме: md5(md5($password).unique_key). Причем ключ поставляется в пакете. И в документации нет ни слова о такой важной, как мне, наивно, видится, детали. Равно, как нет никакого механизма для изменения этого «уникального» ключа при инсталляции (соотвественно, уникальным этот ключ является для фреймворка, а не для вашего сайта.) Если вы планируете шифровать пароли каким-либо другим методом, вам придется кастомизировать шестерню User (method hashPassword), под свои нужды. Заранее оговорю — ни в коем случае, не правьте ту, которая идет в пакете. Механизм правки существущих шестерен (о котором тоже, к слову, нет ни слова в документации должен быть таковым. Скопируйте шестерню User (весь директорий) из дира engine в дир gears. И вот в копии уже вносите поправки.)
Далее, допустим вы изменили уникальный ключ (файл settings.php) вручную… В результате, логнуться под существующим админ/паролем в дефлтовом демо-сайте, можете и не мечтать. валидатор не пропустит. Вам придется ручками же, изменять хэш пароля в бд. Чтобы соотвествовало… По-большому счету, я вообще не понимаю, почему дефолтовым сайтом — для первоначального логина-настроек представлен блог. Как-то оно… очень не профессионально.

to be continued…
22:28 ← 17 октября 2011 Отправить в Твиттер tochka6tochka6  RSS comments 13

Комментарии (13) ↓

admin admin time 22:43 ← 17 октября 2011 #
1. Спрашивал всех до того, как к ней приступил: «Напишите, что вы хотите увидеть в документации?».Она еще не закончена. Если бы сразу пожелания были высказаны… В принципе, они и еще сейчас принимаются.
Список модулей последним делом описывается. Примеры для всех модулей приводить — уйдет еще много времени. Лучше пару уроков сделать.
2. Любой движок, если работает с БД, то предлагает свою таблицу. Поскольку мы начали реализовывать расширенный функционал — управления пользователями, постами и так далее, то пришлось создать и БД. В остальном согласен. Можно часть шестерней перенести из ядра просто в базу.
Спасибо.
Вообще, было бы здорово документом или постом все пожелания выразить. Потому что у меня одно видение документации, у тебя — другое, а еще кого-нибудь — третье.
Автор
tochka6 tochka6 time 23:07 ← 17 октября 2011 #
у меня вопрос — прямо и сразу. какой файл(механизм/шестерня) заведует созданием файлов database_[table_name].php в директории cache — system? и как действует этот механизм.
admin admin time 23:09 ← 17 октября 2011 #
/engine/Db/Driver/Abscract.php:
/** * Grab table for fields * * @param string $table * @return array */ public function getFields($table = ''){ $table OR $table = reset($this->_query['from']); if (!$this->fields[$table] = $this->system_cache->read('database/' . $table,TRUE)) { if($fields = $this->getFieldsQuery($table)){ $this->fields[$table] = array(); foreach ($fields as $field) { $this->fields[$table][$field->Field] = $field->Type; } $this->system_cache->write('database/' . $table, $this->fields[$table],array('db.fields')); } } return $this->fields[$table]; }
Суть такая — кеширует поля таблиц. Чтобы каждый раз не делать этот емкий запрос. А поля знать нужно для работы с ними через ORM.
Автор
tochka6 tochka6 time 23:15 ← 17 октября 2011 #
но оно кэширует не все таблицы. а только те, которые упомянуты в шестернях. Каким образом откэшировать все таблицы?
admin admin time 15:09 ← 20 октября 2011 #
Только те таблицы, которые используются в ORM. Зачем все?
inetlover inetlover time 09:17 ← 18 октября 2011 #
Ничего подобного в документации представленной на 24 страницах нет.

Странно, а у меня всего 16 страниц, может я не ту качаю?
Nick Nick time 08:18 ← 19 октября 2011 #
to be continued…
спасибо за текст, жду продолжения

ps
Так же жду CMS Cogear2, а не фреймворк) Но, как понимаю, не в этом году уже точно
JiLiZART JiLiZART time 12:42 ← 21 октября 2011 #
Нашёл что то по аналогии нашего
www.spoon-library.com/ — фреймворк
www.fork-cms.com/ — сделанная на нем CMS

На данном этапе код cogear 2 заточен под CMS но никак не под Фреймворк, он не даёт той свободы, т.е половина классов=модулей уже заточены под движок, они не дают свободу действий, в пример той же таблицы пользователей и самого модуля
inetlover inetlover time 16:53 ← 21 октября 2011 #
Коля, а ты не смотрел на MODx Revolution? У них очень здорово реализован принцип наращивания функционала, каталог модулей работает так же, как мы хотели сделать GearStore.
Автор
tochka6 tochka6 time 20:55 ← 22 октября 2011 #
совершенно верно.
за линки спасибо.
Ramir Ramir time 00:36 ← 11 ноября 2011 #
мало минусов как-то )) щадишь комьюнити.
Автор
tochka6 tochka6 time 22:18 ← 13 ноября 2011 #
времени мало, а не минусов. ведь не только Дима такой занятой. но и каждый присутствующий. и я — не исключение.
Автор
tochka6 tochka6 time 22:14 ← 13 ноября 2011 #
кому интересно…

Core --> Filesystem.php --> public static function fromBytes

в свитче необходимо изменить $byte на $bytes.
ибо баг(и)