< HomePage | Снимки
<- Четвъртък, 27 Юли 2006 | Начална страница | Събота, 29 Юли 2006 ->
Петък, 28 Юли 2006

Честит ви/ни ден на системния администратор! Припомням съветите, които още си важат :). Довечера се пие от 19:00 в Кривото на Будапеща. Трети ден подред се превръщам в малък сюнгер. С тия поводи няма отърваване.

И за да не е съвсем изпразнено от съдържание днешното писание, два съвета - един за админи и един за програмисти.

1. За да не се чудите защо изведнъж графичните приложения спират да работят след обновяването до последния Slackware-current (от три дни), преди да обновявате дръпнете и инсталирайте новите пакети fontconfig и freetype.

Преди тези библиотеки бяха част от x11 пакетите в момента са отделени, за по-лесно обновяване в бъдеще.

Пакетите можете да ги свалите от:
http://mirrors.unixsol.org/slackware/slackware-current/slackware/x/

2. На всеки му се е случвало да пише елементарна търсачка в база данни с функцията LIKE '%търсеното%'.

Проблема е, че в postgresql upper и lower функциите не работят с кирилица, дори и базата и клъстера да са инициализирани с правлните енкодинги. Затова може да ползвате следния трик (извадка от примерен php код):

if (isset($search["name"]) && strlen($search["name"])) {
  $qname = cyr_to_lower(pg_escape_string($search["name"]));
  $searchquery .= " AND lower(translate(name,
    'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯ',
    'абвгдежзийклмнопрстуфхцчшщъьюя')) LIKE '%{$qname}%'";
}

Магията е в Postgres функцията translate, която в случая ползваме за lower, работещо с кирилица.

Решението е куцо, но е понякога е за предпочитане вместо добавяне на допълнителни полета в базата данни или "пипане" по данните при запазването им.

[ Коментари: 4 ]
Коментари

Ами при мен lower и upper работят с кирилица. Базата ми е инициализирана с --locale=bg_BG.UTF-8

Написа Искър на 28-Jul-2006 14:48


Така настроено не съм го пробвал, но по руските сайтове разправяха, че не ставало. Аз пробвах само с bg_BG (cp1251). Така или иначе, горният хак при мен е за предпочитане, защото не мога да разчитам че сървъра, на който ще инсталирам програмата базата е инициализирана с bg_BG.UTF8.

Написа Георги Чорбаджийски (www) на 31-Jul-2006 07:14


Е да - ако не ползваш твой сървър определено хак-а ще се окаже полезен. Аз поне не го знаех.
Между другото с postgresql имам един проблем (който не знам дали не е малко offtopic но все пак...) - tsearch2 с UTF-8. По-точно не успях да накарам lexize да работи правилно с български думи - bg ispell речника явно не го харесва а български snowball stemmer не успях да намеря (а не съм сигурен, че сам мога да напиша такъв). Ако имаш някакви идеи/линкове ... ?

Написа Искър на 31-Jul-2006 16:33


За съжаление не съм се борил с tsearch-а и не мога да помогна :(

Написа Георги Чорбаджийски (www) на 31-Jul-2006 20:04