Архив метки: snippet

Несколько полезных команд при работе с mysql из-под ssh

Снятие и восстановление дампа базы данных

mysqldump -hhost -ulogin -ppassword --default-character-set=cp1251 db_name > dump.sql
mysql -hhost -ulogin -ppassword --default-character-set=cp1251 --database=db_name < dump.sql

Проблемы:

База в UTF-8
Используем значение ключа --default-character-set=utf8
Mysql валится по нехватке памяти при генерации большого дампа
Может помочь ключ --quick
Перенос с более новой версии на более старую
Используем ключ типа --compatible=mysql40
При переносе дампа с версии 4 на 5 муська ругается на поле CONDITION
При создании дампа надо использовать следующий ключ: -Q, --quote-names Quote table and column names with backticks (`).
Дамп слишком большой
Пакуем/распаковываем на лету

mysqldump ключи | gzip > base.sql.gz
zcat base.sql.gz | mysql ключи
База в InnoDB
используем такой набор ключей:

--skip-opt --add-drop-table --add-locks --create-options --quick --lock-tables --set-charset --disable-keys --default-character-set=...

Очистка базы В одну строку:

mysqldump -hhost -ulogin -ppassword -d --skip-opt --add-drop-table database | grep "^DROP TABLE" | mysql -hhost -ulogin -ppassword --database=database

Согласование слов с числительными в PHP и JavaScript

Пожалуй самая лаконичная и удобная функция для выбора верной формы слов.

PHP Вариант:

<?php
/**
 * Функция склонения числительных в русском языке
 *
 * @param int    $number Число которое нужно просклонять
 * @param array  $titles Массив слов для склонения
 * @return string
 **/
function declOfNum($number, $titles)
{
    $cases = array (2, 0, 1, 1, 1, 2);
    return $number." ".$titles[ ($number%100 > 4 && $number %100 < 20) ? 2 : $cases[min($number%10, 5)] ];
}
?>

Читать далее 

Запрет вызова действия по-умолчанию в javascript

Для предотвращения действия по умолчанию (например переход по ссылке) из js нужно вернуть в качестве результата обработчика события false, но не все браузеры правильно интерпретирую этот результат полностью кроссбраузерный запрет defaultAction выглядит так: 

//e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = false;
//e.stopPropagation works only in Firefox.
if (e.stopPropagation) {
   e.stopPropagation();
   e.preventDefault();
}
return false;