-2.27
Рейтинг
0.06
Сила

Иван

Боевой курс новичка или "всем новеньким - сюда", часть 2

все, там место кончилось.
Продолжение FAQ для новичков, первую часть можно прочесть здесь.

Читать дальше →

Увеличиваем скорость livestreet. Nginx. GZip и не только.

Недавно перешел с шаред хостинга на VPS и столкнулся с проблемой что VPS работает не очень быстро, при том что тариф взял не самый дешевый (1600MHz и 1024Mb). Перекопал кучу сайтов чтобы разобраться как все сделать лучшим образом, думаю многие с этим сталкивались, хочу сэкономить ваше время и подытожить важные моменты по настройке.
Для тестирования производительности изначально использовал приложение siege, когда меня там цифры стали более-менее радовать, уже начал использовать для тестов замечательный сайт loadimpact.com (количество бесплатных проверок ограничено, не злоупотребляйте сразу). Привожу картинки как было и как стало (сразу хочу заметить увеличение производительности не только из-за настройки nginx).
1. Debian 5 (64) nginx + apache + php-fcgi + eAccelerator + memcache (Апач по сути только для ISPmanager использовался)

2. Debian 5 (32) nginx + apache + mod_php + APC + memcache


Читать дальше →

Система блоков

Если пробежаться глазами по сайтам, созданным с ее помощью несложно заметить, что большинство из них наследует две колонки стандартных шаблонов.
Но ведь LS может похвастаться простой, но от этого не менее функциональной системой блоков. Почему владельцы сайтов не используют ее? Возможно, дело в документации?
Это я сегодня с Вашей помощью и попробую исправить.


Читать дальше →

Создание новой страницы

Не раз видел, что у новичков (таких же как и я) возникал впорос как созать новую страницу без стандартного плагина «StaticPage», т.е. вручную.

Создаем страницу: site.ru/price/

Читать дальше →

Исправлены ошибки в бесплатном пингаторе

Присказка

После просмотра скринкаста о трастовом пингаторе я начал следить за этой темой. Особенно меня заинтриговал следующий комментарий:

Все ругаются на цену, однако никто не задумывался, что стоило его создать и отладить. Переписки с саппортами поисковых систем всем знакомы? Так вот, чтобы отладить его работу понадобилось чуть ли не пол года и цена в 40$ — просто смех! Закажите такой пингатор на фрилансе и получите ценник в 6 раз больше + нерабочий скрипт, т.к. никто не будет тратить своё время на переписку и устранение багов с саппортом ПС.

В моем понимании пинг это простой GET или POST запрос и мне стало интересно посмотреть, что там такого наворотил Яндекс, что понадобилось полгода для отладки плагина.

Читать дальше →

похожие темы через sphinx

Дело, было как обычно вечером :) И лежало на мне уже давно задание — добавить «похожие темы» к проекту, но ввиду приоритетов откладывалось оно на потом постоянно. Полазил по LS, нашел уже готовый бесплатный модуль: livestreet.ru/blog/2053.html
Но незадача :( нужен fulltext для InnoDB… уже хотел похерить задание и отложить опять до лучших времен, но что-то дернуло меня все-таки покопаться чуток. А именно, вспомнил я про уже готовый fulltext поиск реализованный на sphinx'e в дефолтной сборке LS. Там как раз есть тайтл + текст, так что впринципе больше и не надо :)
В общем, пришлось чуток модифицировать имеющийся модуль + добавить ф-цию в Sphinx.class.php
К действиям:
1) берем имеющийся модуль
2) удаляем папку и ее содержимое /classes/modules/similartopics/mapper
3) заменяем полностью содержимое файла(/classes/modules/similartopics/SimilarTopics.class.php) на:
<?php
##### [hack] similar_topics_sphinx #####
class LsSimilarTopics extends Module {
	public function Init() {
	}
	public function GetSimilarTopics($oTopic){
	    $sTitleTags=$oTopic->getTags();
	    $aTopics=array();
	    $data=$this->Sphinx_FindSimilarTopics($sTitleTags,SIMILARTOPICS_COUNT+1);
	    if(is_array($data['matches']) && sizeof($data['matches'])>0){
		foreach($data['matches'] as $k=>$v) if($k!=$oTopic->getId()) $aTopics[]=$this->Topic_GetTopicById($k);
		return $aTopics;
	    }else return false;
	}
}
##### [hack] similar_topics_sphinx #####
?>

4) добавляем в класс(classes/modules/sphinx/Sphinx.class.php):
        ##### [hack] SimilarTopics #####
        public function FindSimilarTopics($sTerms,$iLimit){
                $cacheKey=SEARCH_ENTITY_PREFIX."similartopics_{$sTerms}_{$iLimit}";
                if(false===($data=$this->Cache_Get($cacheKey))){
                        $this->oSphinx->SetMatchMode(SPH_MATCH_ANY);
                        $this->oSphinx->SetLimits(0,$iLimit);

                        if(!is_array($data=$this->oSphinx->Query($sTerms,SEARCH_ENTITY_PREFIX.'topicsIndex'))) return FALSE;

                        # no results = no cache
                        if($data['total']>0) $this->Cache_Set($data,$cacheKey,array(),60*15);
                }
                return $data;
        }
        ##### [hack] SimilarTopics #####

лично я оставил поиск по тэгам, хотя — можете добавить и по тайтлу, как было первоначально в плагине
5) все, радуемся жизни :)

п.с. должен быть настроен уже sphinx и работать поиск через sphinx
п.п.с. делаем на свой страх и риск, так что не забываем о том что надо бэкапить файлы ;)

Создание админки. ч2. Создание своего меню, получение и сохранение настроек.


И так, продолжаем. В этой части будет расказано как создать меню (как на картинке) и воспользоваться модулем из предыдущего урока.
Для создания меню(панели админа) необходимо в каталоге «templates\skin\habra\» создать файл «menu.admin.tpl» (код файла приведен ниже).
Основное на что стоит обратить внимание это переменные: $sMenuItemSelect — с помощью нее можно узнать выбранное основное меню (например «Админка»), $sMenuSubItemSelect — это подменю которое выбрано (например, «Сайт»), а также стоит обратить внимание на указанные пути ссылок типа "{$DIR_WEB_ROOT}/admin/site/" от них будет зависеть какое действие будет вызываться.

Читать дальше →