+80.16
Рейтинг
207.74
Сила

Степан Танасийчук

Убираем тормоз synio

На этот топик меня сподвиг тот факт, что последние 3-4 дня наблюдаются регулярные тормоза в работе и этого сайта и всех сайтов на LS с шаблоном synio в частности.

Вооружившись этим топиком от PSNet я понял, что все проблемы исходят от корпорации зла Google, т.е. серверы, которые отдают шрифт PT Sans регулярно глючат и тормозят работу сайта.

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

Они вернулись. Минусы.

Мы возвращаем на сайт минусы, но теперь они будут под присмотром плагина «Magic Rule»

Настройки у нас такие:
/**
 * Список правил
 * Для каждого действия составляется отдельная группа правил, групп может быть несколько
 * Список действий: vote_comment, vote_topic, vote_user, create_comment, create_topic
 * В параметре msg можно указать сообщение, которое будет отображаться пользователю, можно использовать просто текст или указать ключ из языкового файла, например, 'message_cant_vote'
 *
 * Список доступных критериев:
 *	registration_time - время в секундах с момента регистрации пользователя
 *	rating - необходимый минимальный рейтинг
 *	skill - необходимая минимальная сила
 *	count_comment - необходимое минимальное количество комментариев у пользователя
 *	count_topic - необходимое минимальное количество топиков у пользователя
 *  rating_sum_topic - необходимый суммарный рейтинг топиков пользователя за период. По умолчанию период 14 дней, для изменения периода можно указать значение ввиде массива array(rating,period)
 *  rating_sum_comment - необходимый суммарный рейтинг комментариев пользователя за период. По умолчанию период 7 дней, для изменения периода можно указать значение ввиде массива array(rating,period)
 *
 * Любой из критериев можно опустить.
 */
$config['rule']=array(
	'vote_comment' => array(
		'msg' => 'Вы еще не достаточно окрепли!',
		'groups' => array(
			/**
			 * Голосовать за комментарии могут юзеры старше 3-х дней, рейтинг больше -5, написал больше 10 комментариев,
			 * суммарный рейтинг комментариве за последние 7 дней больше -10
			 */
			array(
				'registration_time' => 60*60*24*3,
				'rating' => -5,
				'count_comment' => 2,
				'rating_sum_comment' => array(-10,60*60*24*7),
			),
		),
	),
	'vote_topic' => array(
		'msg' => 'Вы еще не достаточно окрепли!',
		'groups' => array(
			/**
			 * Голосовать за топики могут юзеры старше 3-х дней, рейтинг больше -3, написал хотя бы 1 топик,
			 * суммарный рейтинг топиков за последние 14 дней больше -5
			 */
			array(
				'registration_time' => 60*60*24*3,
				'rating' => -3,
				'count_topic' => 1,
				'rating_sum_topic' => array(-5,60*60*24*14),
			),
		),
	),
	'vote_user' => array(
		'msg' => 'Вы еще не достаточно окрепли!',
		'groups' => array(
			/**
			 * Голосовать за пользователя могут юзеры старше 14 дней, рейтинг больше 3, написал хотя бы 3 топика,
			 * суммарный рейтинг топиков за последние 30 дней больше 0
			 */
			array(
				'registration_time' => 60*60*24*14,
				'rating' => 3,
				'count_topic' => 3,
				'rating_sum_topic' => array(0,60*60*24*30),
			),
		),
	),
);

/**
 * Правила для создания блокировок
 * Группы правил необходимо располагать по приоритету - вверху самые главные
 * Если группа правил сработала, то создается блокировка и обход нижестоящих правил прекращается
 *
 * Параметры правил:
 *	name - название правила блокировки, для учета в таблице блокировок. Название ограничено в 50 символов
 * 	type - список типов голосований, up - за, down - против
 *	target - список сущностей за которые голосуют
 * 	count - количество голосований
 * 	rating - максимальный порог рейтинга пользователя, блокировка используется только если рейтинг пользователя ниже этого
 * 	period - период, за который необходимо считать количество голосований, в секундах
 * 	block_time - время, на которое необходимо блокировать возможность голосования
 * 	block_msg - сообщение, которое будет видеть пользователь при попытке голосования
 */
$config['block_rule_vote']=array(
	/**
	 * Если пользователь за 20 минут успел поставить 5 минусов за комментарии и рейтинг пользователя меньше 3, то блокируем ему голосование на 5 часов
	 */
	array(
		'name' => 'block 1', //
		'type' => array('down'),
		'target' => array('comment'),
		'count' => 5,
		'rating' => 3,
		'period' => 60*20,
		'block_time' => 60*60*5,
		'block_msg' => 'Вы слишком агрессивны, нужно отдохнуть!',
	),
	/**
	 * Если пользователь за 48 часов успел поставить 10 минуса за топики и рейтинг пользователя меньше 5, то блокируем ему голосование на 24 часа
	 */
	array(
		'name' => 'block 2', //
		'type' => array('down'),
		'target' => array('topic'),
		'count' => 10,
		'rating' => 5,
		'period' => 60*60*48,
		'block_time' => 60*60*24,
		'block_msg' => 'Вы слишком агрессивны, нужно отдохнуть!',
	),
	/**
	 * Если пользователь за 3 часа успел поставить 4 минуса за топики и рейтинг пользователя меньше 5, то блокируем ему голосование на 12 часов
	 */
	array(
		'name' => 'block 3', //
		'type' => array('down'),
		'target' => array('topic'),
		'count' => 4,
		'rating' => 5,
		'period' => 60*60*3,
		'block_time' => 60*60*12,
		'block_msg' => 'Вы слишком агрессивны, нужно отдохнуть!',
	),
	/**
	 * Если пользователь за 8 часов успел поставить 3 минуса за пользователя и рейтинг пользователя меньше 10, то блокируем ему голосование на 1 день
	 */
	array(
		'name' => 'block 4', //
		'type' => array('down'),
		'target' => array('user'),
		'count' => 3,
		'rating' => 10,
		'period' => 60*60*8,
		'block_time' => 60*60*24*1,
		'block_msg' => 'Вы слишком агрессивны, нужно отдохнуть!',
	),
);


Всем удачи!

Удаление UTF-8 BOM из консоли

linux (debian tested)
find путь/к/лайвстриту/ -type f \( -name '*.tpl' -o -name '*.php' \) -exec sed -i '1 s/^\xef\xbb\xbf//' {} \;


freebsd (7.2 tested)
find ./ -type f \( -name '*.tpl' -o -name '*.php' \) -exec sed -i -e '1 s/^\xef\xbb\xbf//' {} \;


найти файлы с BOM
find ./ -type f \( -name '*.tpl' -o -name '*.php' \) -print0 | xargs -0r awk '/^\xEF\xBB\xBF/ {print FILENAME}{nextfile}'


sed почему-то иногда не отрабатывает, поэтому php, find, awk, xargs:
php -r "ob_start();
passthru('find ./ -type f \( -name \'*.tpl\' -o -name \'*.php\' \) -print0 | xargs -0r awk \'/^\xEF\xBB\xBF/ {print FILENAME}{nextfile}\'');
foreach(array_filter(explode(\"\n\",ob_get_clean())) as \$f){
	echo \"remove BOM from \$f...\n\";
	file_put_contents(\$f, substr(file_get_contents(\$f), 3));
};"

Увеличиваем скорость 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


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

Sisyphus - защита HTML формы

Sisyphus
Привет Сообщество!

Вчера днем, многие хабраюзеры могли прочитать о jQuery плагине Sisyphus.

Этот плагин подключается к HTML форме и на лету сохраняет данные в LocalStorage. Если до момента отправки формы рухнет браузер, случайно закроется вкладка или вырубят электричество — данные будут сохранены. При следующем открытии страницы с формой она будет заполнена сохраненными данными.



Плагин Sisyphus для LiveStreet подключает Sisyphus.js к форме создания топика (всех типов).
Для проектов написанных с использованием js-фрэймворка Mootools, jQuery будет загружен автоматически.
Плагин протестирован в 0.4.2 и 0.5.1 версиях LiveStreet.
Плагин не тестировался с WYSIWYG-редакторами. (есть мнение, что не заработает)


Плагин Facebook 0.5

Facebook Plugin
Привет Сообщество!

Рад представить вашему вниманию, обновленную версию плагина Facebook.

Плагин поддерживает версии LiveStreet 0.4.2 и 0.5.1
Поддерживаются шаблоны написанные с использованием как mootools, так и jquery.

UPD 23.12.2011: С 13 декабря, JavaScript SDK стал поддерживать OAuth 2.0 для авторизации. Это привело к появлению ошибки при попытке авторизоваться и получить список страниц пользователя на втором шаге мастера настройки. Ошибка исправлена в версии 0.5.1. Спасибо Giorgi за сообщение о неработоспособности.

Подробнее

ORM и ActiveRecord в 0.5 и выше

Выход версии 0.5 для меня было нечто большим, чем добавление страницы активности и ленты топиков из подписанных блогов. В новой версии реализованы ORM и ActiveRecord. Вместе они дают мощнейший инструментарий для разработчика, избавляя того от кучи однотипного кода, который приходилось писать каждый раз при разработке плагина. Тот-же форум, о котором будет идти речь в статье, после обновления похудел на 2177 строк кода. В этой статье я хочу углубиться в ORM и AR на примере создания плагина для LiveStreet.

Читаем дальше...

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

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


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

Плагин HolyWars (freepoll) -- социальное голосование

Многие, наверно, голосовали за символ олимпиады в Сочи, или были на thebattleofbrands.com?

Плагин позволяет создавать социальные голосования. В качестве голосов считаются ссылки на ответ из социальных сетей (Facebook, ВКонтакте, Twitter). Можно голосовать за фотографии, или тексты. Каждый голос — новое сообщение на странице в соц. сети со ссылкой на Ваш сайт.

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

В конфиге можно сделать новый вид поста доступным всем пользователям, или только администраторам.

Посмотреть плагин в работе можно на bestls.17gor.ru/

Плагин платный (цена: $10).

Если кому-то интересно — пишите, пожалуйста, в личку.

Плагин Must Have Blogs

Бывает так, что администратору сайта нужно, чтобы новые пользователи автоматически присоединялись к заданным блогам. Плагин Must Have Blogs позволяет сделать это. А так же позволяет администратору сайта запретить отключаться от заданных блогов.
Читать дальше →