Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS. / 19 сообщений из 19, страница 1 из 1
15.12.2013, 23:19
    #38501629
user_tiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
Приветствую, кто как обеспечивает правильную сортировку узловых значений штатными средствами M?
Учитывая, что на кирилице аски коды идут не совсем последовательно:
GTM>f i=65:1:122 d w $c(i)
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
GTM>f i=1025:1:1111 d w $c(i)
ЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕії

Может, как вариант - это модифицированный транслит(мапинг кирилических символов, размещенных в алфавитном порядке в asci коды латиницы по возрастанию кода) значений на кирилице в латинку перед записью в узел, а при чтении значений узлов, перед их выводом - обратный транслит?Этот вариант влечёт за собой накладные расходы, ничего другого пока придумать не удалось.
Например:
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk
АБВГДЕЄЭЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЪЫЬЮЯ
...
Рейтинг: 0 / 0
15.12.2013, 23:39
    #38501639
user_tiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
чуть иначе-транслит кирилических символов размещённых по алфавиту

в кирилические, размещённые по возрастанию аски кодов в системе:
АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯабвгґдеєжзиіїйклмнопрстуфхцчшщьюя
в
АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэю
...
Рейтинг: 0 / 0
16.12.2013, 10:38
    #38501837
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
Это если не установлен unicod:
Код: sql
1.
2.
3.
4.
5.
6.
[root@GTM ~]# source /usr/gtm603/sysprofile
[root@GTM gtm603]# gtm

GTM>write $zchset
M
GTM>



Если установлен:
Код: sql
1.
2.
3.
4.
5.
6.
[root@GTM ~]# source /usr/gtm603/sysprofile
[root@GTM gtm603]# gtm

GTM>write $zchset
UTF-8
GTM>


GT.M supports international character sets using Unicode. A mumps process can operate in one of two modes: M mode and UTF-8 mode, which is specified by the environment variable gtm_chset at process startup and which is immutable for the life of the process.

In M mode, the process interprets strings as single byte characters with characters from $Char(0) through $Char(127) encoded as ASCII (M mode). A GT.M process in M mode places no interpretation on characters $Char(128) through $Char (255) – the application is free to use any interpretation it chooses, and ISO-8859 variants are commonly used. There is no distinction between a string of bytes and a string of characters and all bytes are valid characters – the concept of an illegal or a non-canonical character is a non-sequitur in M mode.

In UTF-8 mode, the process by default interprets strings as multi-byte characters encoded using UTF-8 (UTF-8 mode). Some sequences of bytes are not defined by the standard, and are considered illegal characters. The process can also interpret a string as a sequence of bytes, and the same string can have different properties (such as its length) when it is considered a sequence of bytes than as a sequence of characters.

Except when triggers are used, this interpretation is at the level of the process: the database treats strings as binary data and does not care how they are encoded. So, it is possible for the same database to be concurrently accessed by mumps processes operating in both M mode and UTF-8 mode. Mupip and other processes are not concerned with this distinction. If the database has triggers, since triggers are compiled code, all proceses that use a database must have the same mode.

Скачайте с сайда GT.M Acculturation Workshop.
http://sourceforge.net/projects/fis-gtm/files/
там про это сказано
...
Рейтинг: 0 / 0
16.12.2013, 16:06
    #38502367
user_tiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
Приветствую,
перед запуском gtm делаю export gtm_chset="UTF-8"
поэтому:
GTM>write $zchset
UTF-8
иначе в консоли GTM
GTM>write $zchset
M
кирилица отображается как-то так '@?'

ISO 8859-5 (Latin/Cyrillic) кириллица, включающая символы славянских языков (белорусский, болгарский, македонский, русский, сербский и частично украинский ).
В данной раскладке укр. большие буквы ЄІЇ по аски кодам размещены перед началом алфавита (а маленькие - в конце всего алфавита) - что в свою очередь влияет на правильность сортировки укр. слов (ФИО, номенклатуры и т.д. имеющие в своём составе эти символы):
404 Є
A0 Ё
403 Є
405 І
406 Ї
40F А
410 Б
411 В
412 Г
413 Д

Acculturation Workshop наск. я понял это виртуалка с установленным GT.M, я изначально экспериментировал на ней, после чего установил GT.M на обычном ПК с Debian.
...
Рейтинг: 0 / 0
16.12.2013, 16:20
    #38502392
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
user_tiv,
Если честно, я не занимался глубоко этими вопросами-у нас латиница.
Но я думаю, что какую то альтернативу можно найти.
Почему кашевары не отвечают ? Думаю здесь подход одинаковый,
что в GT.M что Cache.
...
Рейтинг: 0 / 0
16.12.2013, 16:26
    #38502397
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
а в Cache у нас проблем с сортировкой особо нет, подключил нужную локаль и все готово.
...
Рейтинг: 0 / 0
16.12.2013, 16:31
    #38502408
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
DAiMor, user_tiv
Может зависит от ICU Version ?
Они говорят что "GT.M requires at least ICU Version 3.6 to install the functionality related to Unicode."

http://download.icu-project.org/files/icu4c/51.1/
...
Рейтинг: 0 / 0
16.12.2013, 16:38
    #38502412
user_tiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
Valeriu,

icu у меня 4 ver
...
Рейтинг: 0 / 0
16.12.2013, 16:43
    #38502419
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
user_tiv,
Когда просмотр командой
[root@GTM gtm603]# locale -a
Ваша кодировка присутствует в списке ?
...
Рейтинг: 0 / 0
16.12.2013, 16:47
    #38502426
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
The mode of a process is controlled by the environment variable gtm_chset. If it is not set, or has a value other than "UTF-8", the process operates in M mode. Within a process the ISV $ZCHset can be used to test the mode.

For a process to operate in UTF-8 mode requires:

ICU with a level of 3.6 or higher packaged as libicu. GT.M may also require the environment variable gtm_icu_version to be defined (the gtmprofile script attempts to detect and set it, if it is not set, but is not guaranteed to succeed).

The environment variable LC_CTYPE (or the environment variable LC_ALL) to specify a UTF-8 locale available on the system.

The locale command provides a list of available locales:

gtmuser@gtmworkshop7:~$ locale -a
C
POSIX
en_US.utf8
gtmuser@gtmworkshop7:~$
You can use the localedef command to generate additional UTF-8 locales – in this example, a UTF-8 locale for Arabic as used in Jordan is generated.

gtmuser@gtmworkshop7:~$ sudo localedef -f UTF-8 -i ar_JO ar_JO.utf8
gtmuser@gtmworkshop7:~$ locale -a
C
POSIX
ar_JO.utf8
en_US.utf8
gtmuser@gtmworkshop7:~$
...
Рейтинг: 0 / 0
16.12.2013, 16:57
    #38502453
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
ValeriuПочему кашевары не отвечают ? Думаю здесь подход одинаковый,
что в GT.M что Cache.Раз Вы настаиваете:
...
Рейтинг: 0 / 0
17.12.2013, 02:56
    #38502985
user_tiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
DAiMorа в Cache у нас проблем с сортировкой особо нет, подключил нужную локаль и все готово.

для рос. локали - проблем нет и для gt.m - исключение разве что c Ё.
Для укр. на линуксе по каше - проверю, отпишусь (думаю, что те же грабли, поск. ISO 8859-5 и те же аски коды).

Думаю коллеги, что в ISO 8859-5 засунули все кирилические языки и при этом не для всех языков (минимум для укр.) соблюдена очерёдность алфавитного следования символов.
...
Рейтинг: 0 / 0
17.12.2013, 02:57
    #38502987
user_tiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
Valeriuuser_tiv,
Когда просмотр командой
[root@GTM gtm603]# locale -a
Ваша кодировка присутствует в списке ?

таки да:
root@debian:/home/tiv# locale -a
C
C.UTF-8
en_US.utf8
POSIX
uk_UA.utf8
...
Рейтинг: 0 / 0
17.12.2013, 02:59
    #38502988
user_tiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
ValeriuDAiMor, user_tiv
Может зависит от ICU Version ?
Они говорят что "GT.M requires at least ICU Version 3.6 to install the functionality related to Unicode."

http://download.icu-project.org/files/icu4c/51.1/

root@debian:/home/tiv# icu-config --version
4.8.1.1
...
Рейтинг: 0 / 0
17.12.2013, 09:59
    #38503104
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
user_tivDAiMorа в Cache у нас проблем с сортировкой особо нет, подключил нужную локаль и все готово.

для рос. локали - проблем нет и для gt.m - исключение разве что c Ё.
Для укр. на линуксе по каше - проверю, отпишусь (думаю, что те же грабли, поск. ISO 8859-5 и те же аски коды).

Думаю коллеги, что в ISO 8859-5 засунули все кирилические языки и при этом не для всех языков (минимум для укр.) соблюдена очерёдность алфавитного следования символов.У нас проекты в том числе в Украине и в Казахстане. Для Украины используем сортирвку Cyrillic3, а в Казахстане и России хватает CacheStandard.
...
Рейтинг: 0 / 0
17.12.2013, 11:53
    #38503258
user_tiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
DAiMoruser_tivпропущено...


для рос. локали - проблем нет и для gt.m - исключение разве что c Ё.
Для укр. на линуксе по каше - проверю, отпишусь (думаю, что те же грабли, поск. ISO 8859-5 и те же аски коды).

Думаю коллеги, что в ISO 8859-5 засунули все кирилические языки и при этом не для всех языков (минимум для укр.) соблюдена очерёдность алфавитного следования символов.У нас проекты в том числе в Украине и в Казахстане. Для Украины используем сортирвку Cyrillic3, а в Казахстане и России хватает CacheStandard.

Вероятно в Каше есть то, чего нет в gtm и на уровне gtm нужно будет либо заниматься
"транслитом" либо модифицировать розкладку на уровне ОС.
...
Рейтинг: 0 / 0
17.12.2013, 12:38
    #38503344
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
user_tiv,
Я думаю есть смысл задавать вопрос разработчикам GT.M (K.S. Bhaskar)
на форуме https://groups.google.com/forum/#!forum/comp.lang.mumps
Им даже будет интересно. Пробуйте.
...
Рейтинг: 0 / 0
17.12.2013, 12:59
    #38503405
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
user_tiv,

вы правы, в Cache' есть понятие Collation (сортировка), которое позволяет определить порядок сортировки символов, отличный от порядка следования их кодов. Порядок сортировки, совпадающий с порядком следования кодов, называется стандартным (Cache Standard). В GT.M, по-видимому, такой порядок действует всегда.

При этом надо учитывать, что скорость глобального доступа к БД, использующей сортировку, отличную от Cache Standard, может быть на 20-25% ниже по сравнению с Cache Standard.
...
Рейтинг: 0 / 0
18.12.2013, 11:08
    #38504722
user_tiv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS.
Ок.Всем спасибо за ответы.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Обеспечение правильной сортировки узлов глобалей на кирилице в MUMPS. / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]