Поиск по тегу: web

Восстановление данных InnoDB в MySQL

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.
боже храни Дуда за ссылку на статью
и отдельное мега-спасибо Эдворду, практически персональному админу :)

Live-CS 2.0

02.10.2009, 16:51

Тэги: live-cs, web, лайв-кс, проекты

lcs

Долгожданное обновление самой популярной социальной сети контыр-страйщиков вышло на днях.

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

Полностью новый дизайн.

Любите его так, как он любит Вас — Live-CS.

Хотите провести рекламную компанию? С нами можно договориться, как мы договорились с популярнейшим агрегатором видео-торрентов Kinsburg.

Проблемы с установкой iMagick на FreeBSD

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…

← сюда

1 2 3