вторник, 13 октября 2009 г.

Some tips for Gentoo

Несколько полезных моментов

  1. -fomit-frame-pointer Glibc has a glibc-omitfp USE flag. This makes glibc use -fomit-frame-pointer and some other optimizations for the build where it's safe.)
  2. If you are using gcc-4.2.2 or newer you can also use -march=native or -mtune=native.
  3. 64 bit profile (amd64):
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=native -mtune=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"




Apache auth in PHP

Пример кода для реализации аутентификации в PHP средствами Apache:
(не тестировалось)
session_start();
error_reporting(2047);
$user = '112';
$pass = 'test';

$authorized = false;

if(isset($_GET['logout']) && (0!=$_SESSION['user_id'])) {
$_SESSION['auth'] = false;
unset($_SESSION['user_id']);
header("Location: ./googby.html");
// session_destroy();
echo "logging out...";
}

if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
if (($user == $_SERVER['PHP_AUTH_USER']) && ($pass == ($_SERVER['PHP_AUTH_PW'])) && $_SESSION['auth']) {
$authorized = true;
$_SESSION['user_id']=intval($_SERVER['PHP_AUTH_USER']);

}
}

if ((! $authorized)) {
header('WWW-Authenticate: Basic Realm="Login please"');
header('HTTP/1.0 401 Unauthorized');
$_SESSION['auth'] = true;
print('Login now or forever hold your clicks...');
// header("Location: ./access_denied.html");
exit;
}

?>
?logout">exit

Как выбрать повторяющиеся записи в таблице

Еще один трюк, сам до этого ни за что бы не додумался, где то подсмотрел.

Запрос, показывающий повторяющиеся записи в таблице:

SELECT subject, сount(subject) AS retry
FROM myTable
-- where ....
GROUP BY subject
HAVING ( (Count(subject))>1 );

Количество записей возвращаемых MySQL без учета limit

Иногда нужно получить полное число записей в таблице. При этом в скрипте уже есть запрос, возвращающий часть записей (limit).

Чтобы обойтись одним запросом к базе, можно использовать такой код:
$query="select SQL_CALC_FOUND_ROWS id [, ...] from table_tb limit 1,1";
....
$result=mysql_query($query);
....
$result_=mysql_query('SELECT FOUND_ROWS() as total_count');

Размер таблиц в PostgreSQL

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

SELECT relname AS name, relfilenode AS oid, (relpages /128) as size_mb, reltuples as count
FROM pg_class WHERE relname='myBigTable';

Также он покажет примерное количество записей.

Очень выручает когда база пухнет и нужно выяснить кто виноват.
источник - какой то фак с опеннет.

Важно: нужно обращать внимание на toast таблицы - в них хранятся текстовые поля пользовательских таблиц, и насколько я понял, bytea тоже.