About Forum Blogs NOC Docs Downloads KB Issues Code CI Registration

nocproject.org

#nocproject.org at irc.freenode.net log.
Back to nocproject.org Back to IRC log index
Date: 28.01.2011
free|wk #
07:08
Народ а DNS запустил кто ?
10:09
dvolodin, привет. пофикси плиз импорт вланов из файла с русскими доменами
dvolodin #
10:18
а что там?
free|wk #
10:20
выдает ошибки при импорте
10:20
типа русские буквы детектед
Guest73098 #
10:30
И заодно поиск в IPAM по русским названиям. Так и не нашел причину, по которой у меня не ищет.
10:33
Хоть бы какие-нибудь заглушки, чтобы дебаг куда-нибудь бросал, при поиске русских названий в IPAM
free|wk #
10:36
кстати да не ищет
10:36
а должен по дескрипшенам искать ?
10:39
Guest49592, а ты днс модуль юзаешь ?
Guest73098 #
10:57
Должен по названию железяки. Я вот захотел назвать свои железяки по-русски. И в IPAM не смог их добавить.
dvolodin #
11:27
локаль на системе проверять надо
11:27
пробовал на MacOS - нормально ищет
Guest73098 #
11:29
Локаль для кого? Для юзера "noc" или "pgsql" ?
11:29
Или для юзера "www", под которым nginx запускается?
dvolodin #
11:30
для noc
Guest73098 #
11:32
%locale
11:32
LANG=ru_RU.UTF-8
11:32
LC_CTYPE="ru_RU.UTF-8"
11:32
LC_COLLATE="ru_RU.UTF-8"
11:32
LC_TIME="ru_RU.UTF-8"
11:32
LC_NUMERIC="ru_RU.UTF-8"
11:32
LC_MONETARY="ru_RU.UTF-8"
11:32
LC_MESSAGES="ru_RU.UTF-8"
11:32
LC_ALL=
11:32
%
free|wk #
11:34
аналогично
Guest73098 #
11:34
Может еще где-то, в настройках nginx, например?
11:35
Или как-то отладку скрипта именно для поиска куда-то выводить?
11:37
Есть мысли по этому поводу. Хочется таки IPAM попробовать, а переводить название "Николаевское шоссе" на английский язык совсем не хочется.
dvolodin #
11:38
зачем переводить-то?
11:38
FreeBSD ?
11:38
когда набираешь имя железки, какие запросы на nginx летят?
Guest73098 #
11:40
"GET /sa/managedobject/lookup/?q=%D0%BC%D0%B5%D0%BB HTTP/1.1"
11:40
Т.е. по русски что-то передает.
11:41
В nginx.conf в секцию "server" добавил уже "charset utf-8;"
11:41
Это я уже извращался по разному
11:46
Если бы этот lookup в логи писал, что ему передают, и как он это обрабатывает, можно было бы выловить проблему.
11:46
Возможно в nginx какой-то rewrite срабатывает.
11:49
У меня стоит nginx-0.8.54
dvolodin #
11:51
http://redmine.nocproject.org/projects/noc/repository/entry/sa/apps/managedobject/views.py#L258
11:51
вот сюда оно прилетает
Guest73098 #
11:55
Можешь сделать пару заглушек с дебагом, которые бы активировались по взведению какой-либо переменной?
12:11
2011-01-28 14:04:06,617 INFO <WSGIRequest
12:11
GET:<QueryDict: {u'q': [u'\u043c\u0435\u043b']}>,
12:11
'QUERY_STRING': 'q=%D0%BC%D0%B5%D0%BB',
12:12
2011-01-28 14:05:32,944 ERROR <WSGIRequest
12:12
GET:<QueryDict: {u'q': [u'\u043c\u0435\u043b']}>
12:14
u'\u043c\u0435\u043b' = 'Мел' в UTF-8
12:16
Это кусок из переменной "request"
12:17
Только вот не понятно, по какой 'q' оно ищет?
12:17
'q=%D0%BC%D0%B5%D0%BB'
12:17
или
12:17
u'q': [u'\u043c\u0435\u043b']
12:22
В следующей строке, в 'q' содержится 'мел'
12:23
Где еще копать?
12:25
def view_lookup(self,request):
12:25
logging.error("request \n %s"%request)
12:25
def lookup_function(q):
12:25
logging.error("q \n %s"%q)
12:25
for m in ManagedObject.objects.filter(name__istartswith=q):
12:25
yield m.name
12:25
return self.lookup(request,lookup_function)
12:25
view_lookup.url=r"^lookup/$"
12:25
view_lookup.url_name="lookup"
12:25
view_lookup.access=Permit()
dvolodin #
12:29
python manage.py shell
12:30
from noc.sa.models import *
12:30
ManagedObject.objects.filter(name__istartswith="мел")
Guest73098 #
12:31
>>> ManagedObject.objects.filter(name__istartswith="мел")
12:31
[]
12:31
>>>
free|wk #
12:31
да
12:31
ток у мя не мел
Guest73098 #
12:31
>>> ManagedObject.objects.filter(name__istartswith="Мел")
12:31
[<ManagedObject: Мелешкина 40>, <ManagedObject: Мелешкина 38>]
12:31
>>>
12:31
А скрипт делает по ходу lower()
12:32
Т.е., я набираю "Мел" или "мел", а в 'q' всегда 'мел'
12:36
'QUERY_STRING': 'q=%D0%BC%D0%B5%D0%BB', - если внимательно присмотришься, то увидишь, что в русском алфавите идут подряд буквы 'лм', и в запросе идут буквы "%BB" и "%BC". Т.е. заглавная буква преобразовалась в маленькую.
12:36
>>> ManagedObject.objects.filter(name__istartswith="мел")
12:36
[]
12:36
>>> ManagedObject.objects.filter(name__istartswith="Мел")
12:36
[<ManagedObject: Мелешкина 40>, <ManagedObject: Мелешкина 38>]
12:36
>>>
dvolodin #
12:38
это нормально
12:38
ну вот
12:38
>>> ManagedObject.objects.filter(name__istartswith="мел")
12:38
[3:36PM] Guest73098: []
12:38
[3:36PM] Guest73098: >>> ManagedObject.objects.filter(name__istartswith="Мел")
12:39
я же говорю, с локалью проблема
Guest73098 #
12:39
LC_COLLATE
12:39
А что должно быть?
12:44
У меня стоит LC_COLLATE="ru_RU.UTF-8"
12:45
Может это для таблицы postgre, регистрочувстительный поиск стоит?
12:52
Покажи хоть вывод своей команды 'locale'
dvolodin #
12:59
LANG=
12:59
LC_COLLATE="en_US.UTF-8"
12:59
LC_CTYPE="en_US.UTF-8"
12:59
LC_MESSAGES="en_US.UTF-8"
12:59
LC_ALL="en_US.UTF-8"
12:59
ну и так дальше
Guest73098 #
13:00
Ксати, В SA - search тоже находится "Мел", и не находится "мел"
dvolodin #
13:01
noc=# SELECT name FROM sa_managedobject WHERE name ILIKE 'русс%';
13:01
name
13:01
----------------
13:01
Русский объект
13:01
(1 row)
13:01
это в постгресе
13:01
скорее всего, локаль битая
13:01
и неполная
Guest73098 #
13:03
У меня пайтон собран со следующими опциями:
13:03
WITH_THREADS=true
13:03
WITHOUT_HUGE_STACK_SIZE=true
13:03
WITHOUT_SEM=true
13:03
WITHOUT_PTH=true
13:03
WITH_UCS4=true
13:03
WITH_PYMALLOC=true
13:03
WITHOUT_IPV6=true
13:03
WITHOUT_FPECTL=true
13:03
Может в них дело?
13:08
USC4 - это поддержка юникода. Может пайтон без нее собирать надо?
13:15
Тыкни меня пальцем, где посмотреть можно, как отрабатывает функция перекодировки?
dvolodin #
13:18
все нормально
13:18
psql noc
13:18
и там что-то вроде
13:18
SELECT name FROM sa_managedobject WHERE name ILIKE 'русс%';
13:19
найдет или не найдет
Guest73098 #
13:22
noc# psql noc
13:22
psql: FATAL: role "root" does not exist
13:22
noc#
13:24
В самом pqsl буквы по русски не набираются
dvolodin #
13:25
su - noc
Guest73098 #
13:27
noc=> SELECT name FROM sa_managedobject WHERE name ILIKE 'Мел%';
13:27
name
13:27
--------------
13:27
Мелешкина 40
13:27
Мелешкина 38
13:27
(2 rows)
13:27
noc=> SELECT name FROM sa_managedobject WHERE name ILIKE 'мел%';
13:27
name
13:27
------
13:27
(0 rows)
13:27
noc=>
13:27
не нашло
dvolodin #
13:29
база как создавалась?
Guest73098 #
13:30
Х.З. Из каких-то левых источников, потому как так, как написано на официальном сайте у меня ничего не получилось.
13:31
Я смотрю, что в postgre 8.3 добавили экспериментальную поддержку ICU. Может поможет?
13:33
как-то посмотреть, с какими параметрами создалась база можно?
dvolodin #
13:33
plsql -l
13:33
psql -l
Guest73098 #
13:35
это буква i большая ?
13:35
%psql -l
13:35
Список баз данных
13:35
Имя | Владелец | Кодировка
13:35
-----------+------------------+--------------------
13:35
noc | noc | UTF8
13:35
postgres | pgsql | SQL_ASCII
13:35
template0 | pgsql | SQL_ASCII
13:35
template1 | pgsql | SQL_ASCII
13:35
(4 rows)
13:35
%
13:35
Может версия самого postgre ?
13:40
Что можно в нем подкрутить? У меня стоит 8.2.19
13:40
В портах есть 8.3, 8.4 и 9.0
13:54
только что крутил локаль. ничего не помогает
14:03
Крутил локаль юзера pgsql, noc. Ничего не помогает.
dvolodin #
14:19
какая система?
Guest73098 #
14:25
FreeBSD 8.2-PRERELEASE
14:26
У "free|wk: " вроде как debian. У него тоже не работает
Tweet
Share this page
Share this page: Tweet