Массовая замена текста в PHPMyAdmin

Заходим в phpmyadmin
Идем в вашу базу данных
Выполняем запрос в SQL
UPDATE table SET field = REPLACE(field, 'старое слово', 'на новое слово');

table — это название вашей таблицы
field — поле в этой таблице
Например в vBulletin запрос на смену всех ссылок (c exphack.ru на exphack.org) в постах в SQL выглядит так:
UPDATE post SET pagetext = REPLACE(pagetext, 'exphack.ru', 'exphack.org');

Как посчитать хватит ли вам канала или нет ?

  • Считаете количество скачанных файлов за сутки, высчитываете средний размер файла.
  • Умножаете средний размер на кол-во ваших хитов, получаете мегабайты \ в сутки.
  • Преобразовываете мегабайты\сутки в мегабиты\секунды.

Хранение img на бесплатном сервисе ImageShack




Фотографии сперва ресайзатся, потом заливаются на сервер ImageShack.
Поддерживаются: вставка изображения в топики, комментарии к ним, аватарки, фотка в профайле, и фотосет.

Реализована поддержка одного флага в конфиге, называется: do_local_reserve_copy. Если установить данный флаг в true, то фотография после ресайза не будет удалятся с вашего сервера, так же в БД будет добавлено строчка соответствия вида: файл на сервере ImageShack — файл на вашем сервере. Для чего это нужно. Для того, что бы если вдруг по каким-то причинам вас забанят, вы сможете восстановится с данного бекапа. если do_local_reserve_copy false, то файл после заливки на сервер ImageShack удаляется с вашего сервера.

Получить ключ dev key для вашего домена здесь: stream.imageshack.us/api/

Скачать плагин: 2me.be/x/imageshack.rar
зеркало с гугл сервисов.

Новогодний рецепт для е-магазина. Или как заработать на купонах.

  • поднять цену в 3 раза
  • дать скидку на групоне 50%
  • отправить заказы
  • подсчитать профит

Для размещения на купонном сайте, надо дать большую скидку. Обычно не меньше 50%. При этом надо отдать еще половину от оставшихся 50% купонному сервису, который тоже хочет заработать.

Не понятно? Простой пример: Интернет магазин закупил у поставщика партию арбузов по 50р. за штуку. Сделал наценку скажем, в 100% и продает арбузы по 100р. Для привлечения толп покупателей через купонный сервис, надо дать скидку в 50%, т.е. продавать арбузы по 50р.

Казалось бы, сработал в ноль, привлек покупателей, которые попробуют сказочный сервис магазина и может быть еще вернутся и купят кроме арбузов еще много всего? НО. С оставшихся 50р. продавец получает всего 25р., т.к. купонный сервис берет себе 25р. В минус работать не каждый согласится.

Решение — задрать цены. Т.е. вместо 100р. за арбуз, ставим 300р. Купонный сервис дает скидку в 50% и покупатель забирает полосатого уже за 150р., которые делятся пополам между продавцом и купонным сервисом. Каждый получает по 75р. Купонному сервису побоку, он зарабатывает в любом случае. Продавец тоже не в накладе, т.к. он увеличивает оборот и за счет этого не сильно расстраивается, что маржа просела. Правда покупатель немного переплачивает.

Выделяем цветом комментарии топикстартера

Итак. Сделать это оказалось довольно легко. Как и с комментариями админа все делается также в два действия.

1. В файле comment.tpl находим следующие строчки:
<div id="comment_id_{$oComment->getId()}" class="comment {if !$oUserCurrent or ($oUserCurrent and !$oUserCurrent->isAdministrator())}not-admin{/if} {if $oComment->getDelete()} deleted{elseif $oUserCurrent and $oComment->getUserId()==$oUserCurrent->getId()} self{elseif $sDateReadLast<=$oComment->getDate()} new{/if}" >

и добавляем:
{if $oTopic and $oComment->getUserId() == $oTopic->getUserId()}topicstart{/if}

получаем:
<div id="comment_id_{$oComment->getId()}" class="comment {if !$oUserCurrent or ($oUserCurrent and !$oUserCurrent->isAdministrator())}not-admin{/if} {if $oComment->getDelete()} deleted{elseif $oUserCurrent and $oComment->getUserId()==$oUserCurrent->getId()} self{elseif $sDateReadLast<=$oComment->getDate()} new{/if} {if $oTopic and $oComment->getUserId() == $oTopic->getUserId()}topicstart{/if}" >

2. В файле comments.css добавляем стиль:
.comment.topicstart  { background: #желаемый цвет; }

Вот собственно и все. Напомню, что при должной сноровке и смекалке можно изменить не только цвет блока.

Другой цвет у комментариев админа

После несложных манипуляций можно получить другое визуальное оформление комментариев оставленных администратором сайта.
Все делается всего в два действия:
1. В файле comment.tpl в следующие строчки:
<div id="comment_id_{$oComment->getId()}" class="comment {if !$oUserCurrent or ($oUserCurrent and !$oUserCurrent->isAdministrator())}not-admin{/if} {if $oComment->getDelete()} deleted{elseif $oUserCurrent and $oComment->getUserId()==$oUserCurrent->getId()} self{elseif $sDateReadLast<=$oComment->getDate()} new{/if}" >

добавляем:
{if $oUser->isAdministrator()}admin{else}user{/if}

получаем:
<div id="comment_id_{$oComment->getId()}" class="comment {if !$oUserCurrent or ($oUserCurrent and !$oUserCurrent->isAdministrator())}not-admin{/if} {if $oComment->getDelete()} deleted{elseif $oUserCurrent and $oComment->getUserId()==$oUserCurrent->getId()} self{elseif $sDateReadLast<=$oComment->getDate()} new{/if} {if $oUser->isAdministrator()}admin{else}user{/if}"  >

2. В файле comments.css добавляем стиль:
.comment.admin  { background: #желаемый цвет; }

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

VPS-2012: СКИДКА 50% на тариф VZ/2 при оплате на год

Технические характеристики тарифа VPS-2012:
  • Система виртуализации: OpenVZ Linux
  • Процессор Xeon/Opteron, CPU 2000 МГц
  • Дисковое пространство, RAID-10 HDD, 30 Гб
  • Оперативная память, RAM 1024 Мб
  • Панель управления: ISPmanager Lite предоставляется на всё время использования заказа бесплатно!
  • Поддержка DNS (master+slave) — бесплатно для любого числа доменов!
На каждый заказ предоставляется 1 IP адрес. Возможно подключение до трёх дополнительных IP по цене 100 руб/мес/IP.

Стоимость тарифного плана 6000 руб за 1 год (500 руб/мес). 50% скидка получается.
*При досрочном отказе от заказа (удаление, смена тарифа и т.д.) происходит перерасчёт оплаты исходя из фактического использованного времени по цене 1000 руб/мес.

Тариф доступен для заказа и перехода для всех клиентов. Заказать VPS.
Если вы уже являетесь клиентом. То можете просто «Изменить настройки тарифа».

В 2х словах. Суть акции в том, чтобы сразу прокредитовать их оплатой на год, но с 50% скидкой получается. Кто так или иначе собирался или пользуется, да не против оплатить на 1 год, дерзайте.

Если почитать мой опыт, за 2011 год. То ihc я рекомендую. Можете довериться им и на год!

Некоторые способы борьбы с DDoS

log2ban
Как работает log2ban
Для обнаружения ботов, каждый запрос к серверу, отмечается идентификатором из свойств запроса (например из IP адреса и URL: «1.2.3.4/login.php»). Когда количество обращений с определенным ID достигает установленного предела, в пределах временного окна обнаружения, IP клиента передается в качестве аргумента для внешней команды (BAN_IP_COMMAND) или собранных для пакетной блокировки (см. «Блокировка списков»).

Log2ban работает над логами сервера в реальном времени, и не предназначен для использования в качестве анализатора архива логов. Следует использовать средства файрволла, чтобы произвести саму блокировку (настройки и скрипты для ipset прилагаются в примере).

Скрипт читает лог в реальном времени, с помощью, например «tail -f» или аналогичную команду, как указано в конфигурации. Если команда посылает EOF, log2ban завершит свою работу. Если команда прекратить писать записи журнала на стандартный вывод, процесс log2ban будет висеть вечно.

Настройка
По умолчанию поддерживается шаблон логов Apache/Nginx. Изменения, внесенные в формат должны быть отражены в переменной ACCESS_LOG_RECORD_FORMAT.

Можно также настроить правила обнаружения. Наиболее важным параметром является TOLERANCE_MARGIN (количество хитов в окне). Второй наиболее важными являются WINDOW_SIZE (размер окна в слотах) и SLOT_INTERVAL. (размер слота в секундах) Более короткий интервал и увеличенный размер означает лучшее обнаружение (и худшую производительность).

Чтобы изменить правила вычисления ID, измените функцию «create_server_hit_id».

Чтобы изменить правила пропуска строки в логи, измените функцию «skip». По умолчанию пропускаются запросы на статические типы файлов.

Блокировка списков
Для использования блокировки по спискам, включите базу данных, обработайте логи какое-то время, а затем выполните
python log2ban.py print (banned | allbanned)

распечатать собранные IP-адреса на stdout. «banned» будет печатать только новые IP-адреса (с момента прошлого print banned), в то время как «allbanned» будет печатать каждый запрещённый IP, независимо от того, был он ранее напечатан или нет.

После нескольких дней IP-адреса будут разбанены, для получения их списка:
python log2ban.py print (unbanned)

Эта команда напечатает каждый IP, который был забанен в период current_time — DAYS_UNBAN, и удалит записи из базы данных.

Производительность
log2ban достаточно быстр сам по себе, но для очень быстрорастущих логов обработка запросов может стать проблемой. Рассмотрите возможность отключения регистрации запросов на статические ресурсы, такие как изображения, скрипты и таблицы стилей. Дальнейшая оптимизация может включать в себя более простой формате логов (CSV), вместо того чтобы использовать формат по умолчанию, который обрабатывается модулем apachelog через регулярные выражения.

Установка и интеграция с файрволлом
Процесс описан для Debian Squeeze 6.0, для других дистрибуций может отличаться.
Установите ipset:
sudo apt-get install module-assistant xtables-addons-source

sudo module-assistant prepare

sudo module-assistant auto-install xtables-addons-source

depmod -a

Проверьте что он работает
ipset -L

Если вы получаете не пустой ответ, например ошибки 'Module ip_set not found', то ipset не установлен правильно. Погуглите на предмет решения этой проблемы для вашей конкретной инсталляции. Общая идея в том, что модуль ядра ip_set должен быть локально скомпилирован и загружен в ядро.

Установите MongoDB, Python и PIP:
sudo apt-get install mongodb python-pip

Установите модули для питона:
sudo pip install apachelog pexpect pymongo

Склонируйте репозиторий log2ban:
git clone git://github.com/unicodefreak/log2ban.git

В файле log2ban.py, настройте следующую команду, если необходимо.
ECHO_LOG_COMMAND = "tail -f /var/log/nginx/access.log" 

Добавьте следующий текст в /etc/logrotate.d/nginx:
/var/log/nginx/*log {

 daily

 rotate 10

 missingok

 notifempty

 compress

 sharedscripts

 postrotate

 [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

 /etc/init.d/log2ban stop

 /etc/init.d/log2ban start

 endscript

}

Установите скрипты
sudo mkdir /opt/log2ban

sudo cp log2ban/log2ban.py /opt/log2ban/

sudo cp log2ban/ipset-control.sh /opt/log2ban/

sudo cp log2ban/init-scripts/log2ban-debian.sh /etc/init.d/log2ban

sudo chmod +x /etc/init.d/log2ban

sudo chmod +x /opt/log2ban/ipset-control.sh


Запустите MongoDB
sudo /etc/init.d/mongodb start

Запустите log2ban
sudo /etc/init.d/log2ban start


Добавьте в root cron script следующую команду, например для обновления адресов каждые 5 минут
*/5 * * * * /opt/log2ban/ipset_control.sh update


Пусть поработает какое-то время. Проверьте, если какие-либо IPs are blocked:
sudo ipset -L

Если список похож на правду, то остался последний шаг — подключить iptables.
Добавьте строку:
-A INPUT -m set --match-set autoban src -j DROP

в файл /etc/firewall.conf и выполните
sudo /etc/init.d/networking restart