jmas

Рейтинг
83
Регистрация
28.06.2011
Разработчик

Авилум, Представьте, международный форум (не этот конечно — реальный), вы приходите на него, расставляете везде таблички с надписью "Template CMS". Народ ходит, но особо внимания не обращает. Тогда вы начинаете ставить таблички на проходе: чтобы люди через них падали. Ок, вы добились того, что на вас начали обращать внимание, но еще и материться. Вы стоите, чешите репу и думаете, что же не так.

В этот момент вы слышите, что несколько людей с коктэйлями начали тихо обсуждать системы управления. И сразу же мысль: "Вот оно! Здесь то я и пропиарюсь!". Подбегаете с табличками и ворохом картинок и начинаете тыкать практически в нос этим всем. Люди морщатся, рассматривают изображения, некоторые берут пробуют, говорят вам свое мнение, замечания... И тут вас несет... Вы еще больше начинаете забрасывать всех табличками. Уже не на шутку разозлились и орете на весь зал! Люди оборачиваются и с непониманием смотрят на вас. А ваши глаза уже налились яростью, негодованием, сумасшествием, вы в захлеб кричите, мол "Вы все идиоты! Мир уже не тот! Это заговор! Моя система все равно лучше! Идиоты, одумайтесь!".

awilum:
jmas
про екшен page edit я знаю. какое это имеет отношение к скорости фронтенда ?


Вы видели этот плагин ? хотя бы альфу ? нет.
На той либе XMLDB что есть сейчас сделать можно но! это приведет к большим проблемам из за роста БД форума XML c которой XMLDB(с SimpleXML) не справится.

Я много раз писал, что даже плагин news не рекомендую использовать в качестве блога!. Нужно ждать пока не будет XMLDB 2 для этих больших целей.

И второе. для унылых Троллей!

http://pluxml.org/ - XML data storage
http://pluxfolio.ru/ - XML data storage
http://get-simple.info/ - XML data storage
http://template-cms.ru/ - XML data storage

Ох... А вы так и подкидываете пищу для троллей, потому что хочется чтобы топик постоянно апался.

Лучше движок пилите:

  • SQL-linke БД
  • Поработать с файловой структурой (потому что, извините, в конфигах хранить функции - это не в какие ворота)
  • Отделить функциональность админки от плагинов (потому что тогда уже совсем непонятно что же такое "плагин", а что админка, что модуль и т.д.)
  • Переход к ООП или хотя бы к статическим классам и автолоадеру
  • Вы там еще с хуками не запутались? Хуки это хорошо, но нужно знать меру.

А то скоро будет что то вроде:


runHook('substr_function_run', $string);
$string = substr($somevar, 5)
runHook('substr_function_end', $string);
foxi:
а в каком варианте взаимодействия с файлом будет меньше чем в 1,5-2 раза? Вроде как не извращаться, а так и выйдет.

У вас парсится XML файл - на выходе получается древовидная структура классов. Очень даже реально, что занимать это все будет больше чем просто открыть файл.

anton831:
Что там можно такого сделать чтоб он весил 10ГБ, у конторы в которой я раньше работал в Oracle столько база не весила.....😕
Хотя работали с ней 1,5 года без архивации.

мож он базы гугла умыкнул? 😂

Номид:
Добрый день, у меня есть два друга, которые хотели бы поучаствовать в разработке кода (php). Если бы речь шла о разных видах деятельности, например, рисование дизайна в фотошопе или верстка макета, то проблем бы не возникло. Как организовывают работу коллективы программистов, чтобы использовать наработки друг друга свободно? В институте один семестр была информатика, помню, писали техническое задание (тз) и там описание программы: текст, таблицы выходных, выходных данных, описывали таким же образом функции, что на выходе/входе/что делает. Неужели что-то подобное делать? Для примера пусть целью будет написание cms для того, чтобы набраться опыта.

Естественно по-хорошему нужна спецификация или видение проекта конечной системы. То есть для начала, перед тем как заняться кодом так сказать, нужно набросать план строительства. Что куда будет подключаться, что откуда будет брать данные, решить проблемы на бумаге, набросать БД. Определиться с выбором технологий, которые будут применяться при разработке.

Когда это будет сделано, тогда лучше всего поднять SVN. Можно поработать на Google Code. Есть список задач (Issues). Набрасываете план в список задач, садите 2 человек, даете доступ к SVN, раздаете задания и вперед... Когда возникает идея о новом функционале или находится баг: кидаете новую задачу в Issues: пускай решают.

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

Как то так. Поправьте, если я ошибся.

awilum:
Я гиговые XML парсил. Ясное дело, что не SimpleXML для этого не подойдет.
Юзал XMLReader для этой цели.

awilum добавил 28.06.2011 в 22:51
SimpleXML, XMLReader, XML Parser.

Для Template CMS лучше всего подходит SimpleXML.

awilum добавил 28.06.2011 в 22:53
По гуглите уже сами почему SimpleXML лучше использовать чем XMLReader, XML Parser для тех задач для которых предназначена Template CMS.

awilum добавил 28.06.2011 в 22:55
1. Одна страница сайта визитки не весит ни мегабайты ни гигабайты.

awilum добавил 28.06.2011 в 23:45


ткни пальцем


/**
* Load current page
* @global string $defpage default page
* @param array $data uri
* @return string
*/
function lowLoader($data) {
global $defpage;

// If data count 2 then it has Parent/Child
if(count($data) >= 2) {
// If exists parent file
if(fileExists(TEMPLATE_CMS_DATA_PATH.'pages/'.$data[0].'.xml')) {
// Get child file and get parent page name
$child_page = getXML(TEMPLATE_CMS_DATA_PATH.'pages/'.$data[1].'.xml');

// If child page parent is not empty then get his parent
if($child_page->parent != '') {
$c_p = $child_page->parent;
} else {
$c_p = '';
}

// Check is child_parent -> request parent
if($c_p == $data[0]) {
// Checking only for the parent and one child, the remaining issue 404
if(count($data) < 3) {
$id = $data[1]; // Get real request page
} else {
$id = 'error404';
statusHeader(404);
}
} else {
$id = 'error404';
statusHeader(404);
}
} else {
$id = 'error404';
statusHeader(404);
}
} else { // Only parent page come
if(empty($data[0])) {
$id = $defpage;
} else {

// Get current page
$current_page = getXML(TEMPLATE_CMS_DATA_PATH.'pages/'.$data[0].'.xml');

if($current_page != null) {
if($current_page->parent != '') {
$c_p = $current_page->parent;
} else {
$c_p = '';
}
} else {
$c_p = '';
}

// Check if this page has parent
if($c_p !== '') {
if($c_p == $data[0]) {
if(file_exists(TEMPLATE_CMS_DATA_PATH.'pages/'.$data[0].'.xml')) {
$id = $data[0];
} else {
$id = 'error404';
statusHeader(404);
}
} else {
$id = 'error404';
statusHeader(404);
}
} else {
if(fileExists(TEMPLATE_CMS_DATA_PATH.'pages/'.$data[0].'.xml')) {
$id = $data[0];
} else {
$id = 'error404';
statusHeader(404);
}
}
}
}
// Return page name/id to load
return $id;
}

Ок, залезь в PagesAdmin.php и ткни пальцем, где получаешь список всех-всех страниц.

Если у вас CMS для сайтов-визиток, тогда зачем вы анонсировали плагин форума?

OpenCart. Я не пользовался, но говорят вещь хорошая.

awilum:
CMS или сайт собран на коленке. и ?

awilum добавил 28.06.2011 в 20:24
я на html сделаю сайт еще шустрее вашего на коленке и ?

Я привел пример сайта, где используется mysql, который работает в разы быстрей сайта на XML, который можно легко расширить за счет уже обкатанных технологий.

Например, пускай программист не будет разбираться с кодом системы, если у него есть коннект к БД mysql, он может создать табличку и работать с нужными ему данными через человеческий SQL.

Пускай не MySQL, пускай даже SQLite2 (третью версию уже начинают поддерживать большинство серверов) — зато можно будет гарантировано избавить себя от кучи гемороя, который конечно же вылезет, когда вы начнете писать, например, тот же плагин форума для своей системы. Ладно проехали про SQL базы... Есть куча no-sql БД (или), которые даже не требуют от хостинга их поддержки. Как говорили выше, обычный serialize тоже в эту копилку.

Кстати, у меня была задача распарсить огромный XML файл (который получился на выходе из Access базы), SimpleXML падал, а вот DOM парсил до конца... Но все равно это жрало кучу ресурсов. Подумайте насчет целесообразности использования конкретно SimpleXML.

Потом уже если начали юзать XML, то почему бы не юзать XSLT?

А вообще вам больше в пиарщики нужно двигать... Нужно отдать должное: в раскрутке вы знаете толк. :)

@TiA, спасибо, запамятовал про б-деревья... Нужно матчасть подучить ;)

awilum:
По поводу скорости.

Пока этот сайт (http://template-cms.ru/) самый посещаемый из тех что сделан на Template CMS



CMS: Template CMS 2.0.3
Страниц: 24
Плагины: BBCodes, News, Paginator, Markitup, Simple Gallery
Хостинг: http://www.besthosting.ua/ тарифный план Ultra - самый простой
Скорость генерации страницы: ~ 0.030

Сайт работает быстро и без каких либо лагов.

awilum добавил 28.06.2011 в 19:59

не только в WP процедурный подход.

Сайт http://businessliga.dn.ua/

Три раза обновил код (можете открыть исходник в ФФ и пообновлять).


<!-- 3 querys, 0,007888 msec -->
<!-- 3 querys, 0,004752 msec -->
<!-- 3 querys, 0,005247 msec -->

Простой коннэкт к БД mysql через php-функции mysql_*. Тоже процедурный подход. Админка собрана "на коленке" и по сути чем то большим чем Template CMS не является, за исключением того, что я могу разработать и легко внедрить код, работающий с нормальной БД, где есть еще и кэширование запросов.

awilum:
jmas

и что ? предлагаешь переписать в классы ? это добавит новый функционал который может клиент попробовать и испытать ?


да, это вариант. как в том же CI.


Изначально задумывалось, что хелперы - это дополнительные либы(+ и стороние) расширящие возможности движка. пример: http://forum.webdevart.ru/index.php?topic=492.msg3009#msg3009

Прежде всего вы избавите программистов, которые будут писать плагины от следующего кода

if(function_exists('...'))

и внесете ясность где какой функционал. Тем более если ввести автозагрузку классов, то было б вообще гуд:

SomeClass::someFunction()

автолоадер один раз подтаскивает класс и все.

Я считаю явным недостатком использование процедурного подхода в WP, который очевидно вы взяли в пример.

Всего: 133