Поиск по тегу: web
06.02.2010, 06:12
Тэги: innodb, mysql, recovery, web
После очередного «небольшого конфуза» с моим мускулом, он перестал загружаться.
Решено было переустановить его и встала проблема, как сделать дампы баз данных?
Большинство моих таблиц имели тип InnoDB.
В наличии у меня было:
ibdata1 — 1Гб
ib_logfile0 — 5 Мб
ib_logfile1 — 5 Мб
Пришлось все это дело лить на локалку — дабы безопасно потестить и найти метод восстановления. Запаковал весь /var/db/mysql и слил себе.
Подкинули ссылку на статью, в которой точно такая же ситуация. Только я восстанавливал на ноутбуке, винде.
Итак, на локальном серверу MySQL мы подменяем папку Data, которую мы слили из /var/db/mysql.
Сервис MySQL естественно надо остановить (Панель управления / Администрирование / Службы / MySQL » Остановить).
1. заходим в папку с бинарниками мускла и запускаем mysql с параметрами восстановления InnoDB
C:\Users\epsyl>F:
F:\>cd F:\Web\MySQL\MySQL Server 5.0\bin\
F:\Web\MySQL\MySQL Server 5.0\bin>mysqld --innodb_log_file_size=5242880 --innodb_force_recovery=6
2. в лог-файле должно появиться примерно следующее:
InnoDB: The user has set SRV_FORCE_NO_LOG_REDO on
InnoDB: Skipping log redo
100206 6:01:39 InnoDB: Started; log sequence number 0 0
InnoDB: !!! innodb_force_recovery is set to 6 !!!
100206 6:01:39 [Note] mysqld: ready for connections.
Version: '5.0.16' socket: '' port: 3306 Official MySQL binary
3. открываем еще одну коммандную строку и делаем дампы наших баз данных
F:\Web\MySQL\MySQL Server 5.0\bin>mysqldump -uroot -pPASSWORD DATABASE > db.sql
* не забываем, что логин и пароль – не от локального мускула, а от того, что мы восстанавливаем.
Вот и все, таким образом были восстановлены дампы всех баз данных.
Также хочу предостеречь от использования знака «-» в именах таблиц и баз данных, при этом инциденте — они у меня преобразовались в @002d.
p.s.
боже храни Дуда за ссылку на статью
и отдельное мега-спасибо Эдворду, практически персональному админу :)
02.10.2009, 16:51
Тэги: live-cs, web, лайв-кс, проекты

Долгожданное обновление самой популярной социальной сети контыр-страйщиков вышло на днях.
Исправлены многие баги и неудобства предыдущей версии и добавлены новые функциональные возможности.
Полностью новый дизайн.
Любите его так, как он любит Вас — Live-CS.
Хотите провести рекламную компанию? С нами можно договориться, как мы договорились с популярнейшим агрегатором видео-торрентов Kinsburg.
21.09.2009, 15:17
Тэги: freebsd, imagick, web
Устанавливал расширения к php.
Установил GD, установил imagick из портов.
Оказалось, что iMagick использует старую версию библиотеки JPEG.
Fatal error: Uncaught exception ‘ImagickException’ with message ‘Wrong JPEG library version: library is 70, caller expects 62
Сначала рыл инет на эту тему, поставил portmaster, обновил JPEG и все зависимые либы
portmaster -dRrf jpeg-7
Не помогло Оо.
Решил обновить само pecl’овское расширение imagick.
Скачал imagick 2.3.0, установил по инструкции.
wget http://pecl.php.net/get/imagick-2.3.0.tgz
tar -xzf imagick-2.3.0.tgz
cd imagick-2.3.0
phpize
./configure
make
make install
echo "extension=imagick.so" >> /usr/local/etc/php/extensions.ini
Теперь у нас выскакивает проблема:
Fatal error: Uncaught exception ‘ImagickException’ with message ‘Wand contains no images `MagickWand-1′ @ magick-image.c/MagickSetImageFilename/9326′ in …
Хорошо, переустанавливаем ImageMagick!
Заходим сюда: http://www.imagemagick.org/script/install-source.php#unix, тащим последнюю сборку и устанавливаем себе.
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar -xzf ImageMagick.tar.gz
cd ImageMagick-6.5.6-2
./configure
make
make install
Рестартим апач и ура!
FreeBSD 7.2 64 bit.
11.09.2009, 14:20
Тэги: dudecurl, php, web
Всем колхозникам посвящается.
Попросили меня как-то подать объявления на форум местный, но темы там быстро уходят в /dev/null и их постоянно надо апать, чтобы у людей мелькало перед глазами.
Руками заходить каждые несколько минут и писать «up!» — это не для нас, ведь?
Отличный повод заюзать DudeCurl, подумал я :) (дуд, с тебя 1000$, постпроплачен ^_^)
Вобщем, подключаем всеми нами любимый дуд курл, заводим тестовый файл с ID топика на каждой строчке, пишем пару строк кода и ставим на крон.
// подключаем дуд курл
include_once(dirname(__FILE__) . '/DudeCurl.php');
// считываем ID-ы топиков
$topics = file(dirname(__FILE__) . '/topics.txt');
// ваши авторизационные данные
$login = 'login';
$password = 'password';
// урл страницы форма (надо, чтобы вытащить некий «kodun» для авторизации)
$url = 'http://forums.kuban.ru/forum/index.php';
// урл авторизации
$login_url = 'http://forums.kuban.ru/forum/login_new.php';
// урл постинга
$post_url = 'http://forums.kuban.ru/forum/posting_new.php?page=1';
// пошли по всем топикам
foreach ($topics as $topic_id) {
$topic_id = intval(trim($topic_id));
// если еще не авторизовались, то делаем это
if (!isset($curl)) {
$curl = new DudeCurl($url);
$html = $curl->exec();
preg_match('#kodun" type="hidden" value="(.*?)"#i', $html, $m);
if (!isset($m[1])) { die('can\'t find kodun :('); }
$kodun = $m[1];
$auth = array("username"=>$login,"password"=>$password, "kodun"=>$kodun);
$curl->init($login_url);
$curl->post = $auth;
$curl->exec();
}
// постим сообщение
$data = array("visible_mail"=>'OFF', "message"=>'up!', "kodun"=>$kodun, "add_post"=>$topic_id);
$curl->init($post_url);
$curl->post = $data;
$curl->exec();
// эту тему мы апнули
print 'http://forums.kuban.ru/forum/viewtopic_new.php?t=' . $topic_id . '<br/>';
// т.к. на этом мегафоруме стоит антифлуд, то мы немного посмпим
sleep(rand(35,40));
}
Исходнички + DudeCurl 0.2.5 Beta
Всем кубаньрушникам привет! :)
05.09.2009, 22:49
Тэги: php, web, лайв-кс, рейтинг Эло
Ссылка на официальный ман по рейтингу эло — Рейтинг Эло.
Применим на практике?
Допустим, у нас 2 команды с рейтингами:
$rating_a = 800;
$rating_b = 500;
Расчитаем вероятность победы первой команды:

$e = 1/(1+pow(10, ($rating_b-$rating_a)/400));
Дальше опишу простую функцию для расчета коэффициена, необходимого для участия в финальном рейтинге:
function EloK($rating)
{
if ($rating >= 2400) {
return(10);
}
elseif ($rating >= 1000) {
return(15);
}
else {
return(25);
}
}
Простая хуйня, иллюстрирующая, что значение равно 10 для сильнейших команд (рейтинг от 2400), 15 — для команд с рейтингом меньше чем 2400 и 25 — для новичков.
Ну и получим новый рейтинг по самой формуле:

$new_rating_a = $rating_a + EloK($rating_a) * (1 - $e);
$new_rating_b = $rating_b + EloK($rating_b) * (0 - (1-$e));
print $new_rating_a;
print ' / ';
print $new_rating_b;
Результат:
803.77448893 / 496.22551107
Вот такие пироги. Да, будет введено на Live-CS…