The Diary
Дневникът на Георги
<- Четвъртък, 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 ]Коментари
Така настроено не съм го пробвал, но по руските сайтове разправяха, че не ставало. Аз пробвах само с bg_BG (cp1251). Така или иначе, горният хак при мен е за предпочитане, защото не мога да разчитам че сървъра, на който ще инсталирам програмата базата е инициализирана с bg_BG.UTF8.
Е да - ако не ползваш твой сървър определено хак-а ще се окаже полезен. Аз поне не го знаех.
Между другото с postgresql имам един проблем (който не знам дали не е малко offtopic но все пак...) - tsearch2 с UTF-8. По-точно не успях да накарам lexize да работи правилно с български думи - bg ispell речника явно не го харесва а български snowball stemmer не успях да намеря (а не съм сигурен, че сам мога да напиша такъв). Ако имаш някакви идеи/линкове ... ?
За съжаление не съм се борил с tsearch-а и не мога да помогна :(
Disclaimer: Except where otherwise noted all opinions expressed here are personal
opinions of the author and do not reflect official opinions of my employer or
any other person, company or organization associated with the author.
Copyright: Except where otherwise noted the content of this site is licensed under a
Creative Commons Attribution License. Текстът на договора за ползване на български
Copyright (cc) 2003-2011 Georgi Chorbadzhiyski. Some rights reserved.
Comments, texts and pictures not signed by me are property of their respective owners.
Страницата е генерирана от Glog v3.99-test
Ами при мен lower и upper работят с кирилица. Базата ми е инициализирана с --locale=bg_BG.UTF-8
Написа Искър на 28-Jul-2006 14:48