Powered by CodeIgniter

Обновления

(3)
7
7 голосов
Последние обновления движка.
Обновление движкаДрузья, работа не стоит на месте, но движется довольно быстрыми темпами. Довольно много времени было уделено семейным вопросам на этой неделе, но удалось произвести значительные улучшения движка. Обо всем по порядку.

Кеширование

Полностью переписано кеширование, которое теперь построено по принципу драйверов. Появилась поддержка тегов кеша — данные теряют актуальность, если одна из их меток стирается или обновляется после определенного промежутка времени. Упразднен класс storage, дублирующий кешированные записи в БД. На его замену пришла производительная цепочка файлового кеша + Memcached.
Данные улучшения привели к увеличению производительности. Количество запросов к странице сократилось до минимума. Ведутся работы по оптимизации кеширования во всех необходимых компонентах.
//Пример кеширования с тегами $this->cache->tags('one,two,three')->set('nodes',$nodes); // Или так $this->cache->set('nodes',$nodes,3600,array('one','two','tree')); // Теги можно указывать строкой через запятую или же массивом // Если кто-то удалит хотя бы один тег или перезапишет его $this->cache->tags('one')->clear(); // то все данные кеша, привязанные к этому тегу потеряют свою актуальность

Автозагрузка

Доработал задумки с прошлого обновления. Модели и классы шестеренок индексируются и кешируются. Исключены все функции include и require для стандартного вызова моделей и классов.// Автозагрузка действует только для контроллера и сущности // В моделях она создает путаницу, к сожалению. $CI =& get_instance(); // Модель не требуется инициализировать, // хотя эта возможность осталась для особых параметров вызова модели $CI->user->get(); // Если вы хотите предзагрузить некоторые модели для того, // чтобы они изначально были доступны во всех других моделях // Просто укажите это в файле конфигурации шестеренки // Например, global.conf models[] = breadcrumb bc; Загрузим модель breadcrumb, назвав объект bc models[] = cpanel; ... // Любая другая модель $this->bc->add();

Убрать все лишнее

Были упразднены компоненты «Таксономия», «Типы таксономии», «Типы нод» по причине их громоздкости. Новые версии шестеренок по данной тематике ожидаются в ближайшем будущем.

Производительность

Результат не заставили себя ждать. Загрузка главной страницы на локальной машине (Mac Pro Early 2008):
Использование памяти: 1.35Мб
Запросов к базе данных: 0
Запросов в кеш: 2
Время работы: 0.1853
Загрузка главной страницы на данном сервере (высокая загруженность):
Использование памяти: 2.26Мб
Запросов к базе данных: 0
Запросов в кеш: 2
Время работы: 0.3540

Будущее

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


Спасибо всем, кто следит за развитием движка и посещает этот сайт.
22:38 ← 03 июля 2009 Отправить в Твиттер adminadmin  RSS comments 67

Здесь пока ничего нет.

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

DeTeam DeTeam time 22:49 ← 03 июля 2009 #
JSHttpRequest с файлами ведь не работает. Т.е. ajax-запросов с файлами нет, а так — полезные нововведени! (:

/me слежу
Автор
admin admin time 22:51 ← 03 июля 2009 #
Как раз с файлами он и работает :-)
Используется для ajax-загрузки файлов.
DeTeam DeTeam time 22:54 ← 03 июля 2009 #
Почему-то казалось, что jsjttprequest = ajax, в аяксе нет загрузки файлов.
Все делается через flash-компонент (-:
Автор
admin admin time 22:58 ← 03 июля 2009 #
Понятное дело. Загрузка через Flash (с индикатором) нужна преимущественно в том случае, если загружаются большие по размеру файлы.
Посмотрим. В идеале — мне очень нравится реализация загрузки на http://picamatic.com. Хотя такой вариант скорее всего будет реализован в следующей версии движка.
BigShark BigShark time 06:55 ← 04 июля 2009 #
За кеш +)
Вот статья по загрузки файлов http://vremenno.net/html-css/file-uploaders-overview/
maxic maxic time 02:00 ← 06 июля 2009 #
Очень легкий вариант.
Я свою ajax мультизагрузку сделал за 2 дня :)
Автор
admin admin time 10:37 ← 06 июля 2009 #
Как раз вчера сделал загрузку картинок в один клик через Swiff.Uploader.
Скоро обновление.
maxic maxic time 19:45 ← 06 июля 2009 #
flash. Совсем неинтересно.
Куда «красивее» JS ;)
Автор
admin admin time 19:48 ← 06 июля 2009 #
Покажите скрипт на MooTools, реализующий асинхронную загрузку файлов.
Пришивать jQuery ради единственного момента нет смысла.
Тем более, что вы не поймете, что это Flash, если не заглянете в код ;-)
maxic maxic time 20:04 ← 06 июля 2009 #
Flash — некрасиво :)
У вас стоит расширение под FF Adblock Plus ;)? Тогда поймете.
А это расширение стоит у многих.
Автор
admin admin time 20:08 ← 06 июля 2009 #
Конечно, у меня оно установлено.
Как бы вам этого не хотелось, оно не реагирует на мою реализацию загрузки «в один клик».
JiLiZART JiLiZART time 23:11 ← 03 июля 2009 #
Думаю если всё пойдёт хорошо, то у движка большое будущее =))
/me тоже слежу =), всё мыло заслежено ревизиями =))
JiLiZART JiLiZART time 23:32 ← 03 июля 2009 #
Ура, удалось запустить когуар на ZendServer CE, после небольших танцев и правки htaccess
исправил это
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 на
RewriteEngine on #RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] ЗЫ. также думаю не помешало бы включить в htaaccess
<IfModule mod_rewrite.c> ... </IfModule> и убрать php_value, т.к не на всех серверах поддерживается изменение php параметров через htaccess
Автор
admin admin time 00:23 ← 04 июля 2009 #
Думаю, что движок изначально рассчитан на рерайт адресов, поэтому условия ставить не стоит.
Если их не будет — ссылки внутри движка работать также не будут.
Идея «чистых адресов» является ключевой.
Странно, что помогли такие исправления. RewriteBase никому не мешал жить.
BigShark BigShark time 06:57 ← 04 июля 2009 #
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Можно убрать и прописать папки исключения.
Автор
admin admin time 12:19 ← 04 июля 2009 #
Зачем? Приведите пример, пожалуйста.
BigShark BigShark time 04:51 ← 05 июля 2009 #
Кто либо написал либу и забыл сделать проверку на то запущен ли скрипт из index.php или нет.
Таким образом кто угодно может запускать этот скрипт и использовать ( если скрипт не использует ядро Cogear).
А если убрать данные строки и вписать папки исключения из правил, то любой запрос кроме того который будет адресован на соответствующие папки будет переведен на index.php
Автор
admin admin time 11:52 ← 05 июля 2009 #
Не совсем понял, о чем речь.
Любой скрипт движка может быть подключен только после index.php.
Посмотрите первую строчку в любой моделе/контроллере/библиотеке.
BigShark BigShark time 02:29 ← 06 июля 2009 #
А если разработчик модуля для вашей CMS забудет эту строчку.
DeTeam DeTeam time 09:36 ← 06 июля 2009 #
кстати, правлиьный шаг будет папки все кроме тех что отдаем на выход
index.php
images
css
js

оставить в htdocs/www
а остальное — на уровень ниже, и доступа не будет.
Автор
admin admin time 10:40 ← 06 июля 2009 #
Де-факто это стандарт, который применяется очень часто.
Если разработчик модуля забудет про строку защиты — придется ее использовать прежде, чем его модуль будет размещен в официальном каталоге.
BigShark BigShark time 02:35 ← 07 июля 2009 #
Один из самых глупых стандартов которые используют CMS
Кстати убрав эти строки шел запущенный в CMS будет практически не возможно вызвать.
Автор
admin admin time 11:17 ← 07 июля 2009 #
Хорошо, что тогда предлагаете вы? С условием, что неизвестно, на каком веб-сервере раздается движок.
BigShark BigShark time 02:32 ← 08 июля 2009 #
Как делаю я
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|phpinfo\.php|templates|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

По хорошему должна быть папка asset в которую будут сложенны все img,js,css которые используются на сайте.
Запрос к всему остальному должен перекидывать пользователя на index.php
P.S. Смотрите http://cogear.ru/templates/cogear/footer.tpl
по идеи до этого я не должен был добраться.
http://cogear.ru/engine/index.html
Глядя на эту страницу (стандартная КИшная 403) я понимаю что папку engine вы не куда не перемешали и не переименовывали.
http://cogear.ru/gears/admin/templates/navbar.tpl
Вы закрыли доступ к файлам с расширением .txt и .info а
вот про .tpl забыли)
P.S. Что-та раздвигающийся автоматом редактор тупит.
Автор
admin admin time 10:13 ← 08 июля 2009 #
Понятно. Ветка дискуссии поджимает, напишу в личку.
iPerson iPerson time 05:01 ← 04 июля 2009 #
Когда сделаете как в Водпресе, без проблем установка на хост, без никаких ковыряний в БД, сообщите.
JiLiZART JiLiZART time 11:25 ← 04 июля 2009 #
Как убого =(
Автор
admin admin time 12:19 ← 04 июля 2009 #
Это для новичков, которые ничего не смыслят ни в сайтостроительстве. Такие тоже существуют (:
JiLiZART JiLiZART time 12:29 ← 04 июля 2009 #
Чёт у движка не любовь ко мне =(
При попытке авторизации\регистрации у себя на локалхосте
вылазит
Секретный ключ формы не совпадает с заданным. Обновите страницу.
Автор
admin admin time 13:56 ← 04 июля 2009 #
Отключи в контроллере "/gears/user/index.php" проверку ключа безопасности.//Вот так $this->form->set('login')->key()... Или же в модели формы по-умолчанию можно выключить проверку ключа безопасности, если изменить ее переменную $key на ложное значение.
JiLiZART JiLiZART time 14:58 ← 04 июля 2009 #
Нде, вроде всё работает, но Firefox не хочет жрать куки при авторизации на Opera всё работает отлично =), даже полное удаление кукисов не помагает =(
Автор
admin admin time 15:05 ← 04 июля 2009 #
Хм. Возможно, что надо сессию потереть. Ключ секретный на нее завязан.
JiLiZART JiLiZART time 10:38 ← 05 июля 2009 #
Хром и Сафари тоже не хотят сессию брать =(
Автор
admin admin time 11:53 ← 05 июля 2009 #
Хорошо, уделю внимание этому вопросу. Просто старался сделать максимальное защищенной передачу информации из форм.
Fr3nzy Fr3nzy time 13:42 ← 04 июля 2009 #
А счетчик внизу страницы нормально работает? А то, обычно, было макс 20-30 человек в онлайне.
А вот две минуты назад было ~380 человек. После перезагрузки страницы — 82
Автор
admin admin time 13:45 ← 04 июля 2009 #
Нормально. Это с легкой подачи одного знакомого нас старались заддосить.
Fr3nzy Fr3nzy time 13:58 ← 04 июля 2009 #
Ясно =) уже недоброжелатели появились :)
Автор
admin admin time 14:00 ← 04 июля 2009 #
Да, какой-то несознательный аноним складывает в идеи сервиса Reformal свои матюки.
Бог ему судья.
JiLiZART JiLiZART time 14:40 ← 04 июля 2009 #
Конкуренты xD
Автор
admin admin time 14:45 ← 04 июля 2009 #
Возможно, но не думаю, что любой разработчик может быть настолько низок, чтобы писать такие гадости. Скорее всего просто кто-то из зависти.
andyduke andyduke time 03:13 ← 05 июля 2009 #
Случайно ткнул в пустое место справа от ссылки «ответить» и появилась форма ответа, ИМХО лучше не делать блочным, неудобно.
andyduke andyduke time 03:16 ← 05 июля 2009 #
И тэг <a> съелся! Нажимал «Предпросмотр» он был, когда нажал «Отправить» — исчез.
andyduke andyduke time 03:19 ← 05 июля 2009 #
Пытался скачать последнюю версию с сайта, получил ошибку, видимо после замены системы кэширования.

A PHP Error was encountered

Severity: Warning

Message: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, 'FilesCache::remove' was given

Filename: libraries/Cache.php

Line Number: 88
Автор
admin admin time 11:55 ← 05 июля 2009 #
Исправлено.
Автор
admin admin time 12:05 ← 05 июля 2009 #
Понял, учту.
JiLiZART JiLiZART time 18:46 ← 05 июля 2009 #
Ещё одна идея по поводу админки\публикации =)
Можно ли ввести систему хоткеев? Чтобы при нажатии определёных сочетаний клавиш можно было опубликовать\создать\перейти на определённый пункт меню или к форме написания статьи. Чтобы было всё быстро и удобно =)
Автор
admin admin time 23:39 ← 05 июля 2009 #
В редакторе работают «горячие клавиши», но только при английской раскладке клавиатуры на маке. Коды русских клавиш javascript не знает или, по крайней мере, я не знаю как их подружить.
Смысл делать это, если до страницы публикации один клик? Быть может просто перекомпоновать панель пользователя, сделав его полупрозрачным слоем в фиксированном расположении на экране (а-ля «Оставить свой отзыв»)?
JiLiZART JiLiZART time 23:45 ← 05 июля 2009 #
Я имел ввиду Вот это — пример видео интерфейса для habari. Мне очень понравился функционал админки =)
Автор
admin admin time 23:59 ← 05 июля 2009 #
Посмотрел видео, не понял, что в нем нового. Слайды между экранами — это не в движке сделано, а видео-редакторе.
Я против разделения дизайна админки/сайта.
Идея Dashboard уже очень давно присутствует в Wordpress в более наглядном виде, чем в Habari.
Сейчас скачаю и посмотрю код, чтобы получить более полное представление об этой системе.
Автор
admin admin time 00:57 ← 06 июля 2009 #
Скачал дистрибутив. Код очень интересный, как и сам движок.
Но при установке с mysql вылезло пару ошибок. Не войти под админом также после установки. Пробовал sqlite — такой же результат.
JiLiZART JiLiZART time 00:59 ← 06 июля 2009 #
гы, а у меня всё работает =)
Кстате у них на сайте вроде демо есть — demo/demo
Fr3nzy Fr3nzy time 07:52 ← 06 июля 2009 #
Ммм… подобные сочетания клавиш работают в том же vBulletin'е.
Что с русской, что с английской раскладкой. Там же указывается код клавиши, а не само значение.
JiLiZART JiLiZART time 01:30 ← 06 июля 2009 #
Первая моя шестерёнка =)
Брать тут Описание: Позволяет добавлять публикации в социальные закладки.
Сделана на основе шестерёнки favorites
ЗЫ
Ещё один вопрос по шестерёнкам. Смогу ли я сделать двойную авторизацию? чтобы при логине в систему проверялся логин с 2х разных таблиц и пароль с 2х разных таблиц?
Автор
admin admin time 11:31 ← 06 июля 2009 #
Я в восторге :-) Просто положил твою шестеренку в папку, сбросил кеш и она заработала. Вот это настоящая модульность!
Двойная авторизация для каких целей — безопасности?
JiLiZART JiLiZART time 13:03 ← 06 июля 2009 #
Чёта не так работает, закладки должны быть скрыты и выезжать по клику на книжку =(
Авторизация нужна мне для игрового сервера =), чтобы человек мог заходить по аккаунту через который он играет на сервере =)
Автор
admin admin time 13:07 ← 06 июля 2009 #
Все верно. Браузер кеширует скрипты. Кеш надо сбросить.
Fr3nzy Fr3nzy time 13:51 ← 06 июля 2009 #
Классно :) Только сейчас додумался обновить кеш у браузера :))
maxic maxic time 01:59 ← 06 июля 2009 #
Есть переделанный компонент загрузки файлов ajax (jquery). (у меня реализован варинат мультизагрузки)
А переделал потому, что «стандартный» модуль передавал через iframe только $_FILES и совсем забывал про $_GET и $_POST.
Автор
admin admin time 10:41 ← 06 июля 2009 #
Сделал на MooTools загрузку картинок «в один клик» вчера.
maxic maxic time 19:45 ← 06 июля 2009 #
Передает вместе и get, post? Или iframe и только files?
Автор
admin admin time 19:49 ← 06 июля 2009 #
Читайте первый пост на главной.
Fr3nzy Fr3nzy time 12:16 ← 06 июля 2009 #
Почему-то перестала скроллится страница, когда переходишь по подобной ссылке
http://cogear.ru/community/updates/update-03-july-21.html#comment-6

ФФ 3.5, ХР сп3
Автор
admin admin time 12:25 ← 06 июля 2009 #
Не скроллится, потому что на данной странице нет комментария под номером 6.
Попробуйте так.
Fr3nzy Fr3nzy time 13:49 ← 06 июля 2009 #
Все бы ничего, да вот только ссылку не я придумал :)
А, ну все, понял. Посмотри на «Пульс» :) Там у всех ссылок якорь одинаковый.
Fr3nzy Fr3nzy time 13:57 ← 06 июля 2009 #
Плюс давно хотел попросить сделать ссылку с числом новых комментариев display:block, ибо сейчас по этому числу не всегда можно попасть =)
PS. Я про число комментариев, которое справа (или слева) под значком «обновить комментарии»
Автор
admin admin time 16:12 ← 06 июля 2009 #
Понял, будет сделано в процессе обновления шестеренки комментариев.
Автор
admin admin time 16:11 ← 06 июля 2009 #
Исправил.