16. 8.
2006
Not rated yet.
Na Masarykově univerzitě s rozvojem e-learningu v Informačním systému
vznikla potřeba vkládat do aplikací texty v cizím jazyce (ruština,
francouzština, japonština aj.), jejichž písmo zahrnuje znaky, které
nejsou ve středoevropských jazycích běžné. Například může učitel
chtít studentům do interaktivních osnov nebo do otázek pro odpovědníky
vkládat text v příslušném jazyce, student může potřebovat odpovídat
na odpovědníky v tomtéž cizím jazyce, vzájemně mohou diskutovat
v předmětových diskusních fórech ve vyučovaném jazyce.
Tyto jazyky si nevystačí se znaky dostupnými ve znakových sadách
středoevropských jazyků, a proto Informační systém Masarykovy
univerzity nyní běží s podporou Unicode znaků (univerzální sada znaků).
Interně se používá kódování UTF-8 (Universal Transformation Format, 8 bitů).
Informační systém Masarykovy univerzity je v provozu od roku 1999,
tedy z doby, kdy ještě takové univerzální způsoby ukládání znaků
nebyly rozšířené. Proto systém nebyl vybaven UTF-8 od svého vzniku,
jak by se u dnes do provozu uváděných systémů mohlo zdát běžné.
Unicode je založeno na unikátním 32-bitovém čísle (tzv. codepoint)
pro každý znak všech světových jazyků. Unicode (včetně UTF-8) je
nezávislé na provozované platformě, konkrétním programu a používaném jazyce.
Kódování UTF-8 zapisuje jednotlivé znaky (codepointy) jedním až čtyřmi
bajty, přičemž znaky anglické abecedy se zapisují stejně jako v kódování
US-ASCII. UTF-8 je tedy s ASCII zpětně kompatibilní.
Proces migrace na Unicode v Informačním systému MU, tedy na sadu znaků,
kdy lze vkládat do aplikací jakýkoli znak, který existuje, byl velmi
technicky i časově náročný. První fáze - převedení databáze do interního
kódování UTF-8, proběhla již v loňském roce. V letošním roce pak byla
převedena aplikační infrastruktura tak, aby interně i směrem k uživateli
pracovala s kódováním UTF-8.
Úprava aplikační vrstvy si vyžádala revizi v podstatě veškerého
aplikačního kódu, který tvoří IS. Jako příklad lze uvést ty části
programového vybavení, které v některém místě počítají s délkou
vstupního textu. Tato místa bylo třeba jednotlivě prověřit, jestli
daná část programu má na mysli délku ve smyslu počtu znaků (písmen)
textu, nebo délku jako počet bajtů (protože v UTF-8 může být jeden
znak kódován jedním až čtyřmi bajty, mohou být tedy tyto dvě délky
obecně různé).
Dále bylo třeba vytvořit infrastrukturu a nastavit parametry jednotlivých
aplikací tak, aby některé aplikace umožňovaly uživateli zadávat
libovolné Unicode znaky, a některé naopak množinu povolených znaků omezovaly.
Jde o to, že některé údaje v systému jsou exportovány do externích systémů
jako je matrika studentů nebo personalistika, které ještě nejsou na práci
s Unicode připraveny. Podobně tiskový subsystém ISu je omezen na znaky
dostupné v používaných písmech a zpracovatelné použitým sázecím systémem.
Proto i údaje, které je třeba někam tisknout (například na diplom nebo
diploma supplement), mohou obsahovat jen omezenou množinu znaků. IS MU
tedy rozeznává tři kategorie znaků: Unicode (plný rozsah znaků), latinka
(znaky latinské abecedy s případnými diakritickými značkami, používá se
zejména pro tiskové výstupy) a ISO Latin 2 (znaková sada středoevropských
jazyků, používá se pro výstupy do externích systémů).
Některé obvyklé otázky vývojáři zodpověděli v Nápovědě systému (v IS MU:
Osobní administrativa -> Nápověda -> Jiné/Znaky v ISu a cizí abecedy).
Dále je pro uživatele připravena aplikace, do níž uživatel vloží znak
nebo více znaků, a aplikace ověří, do kterých kategorií znaky spadají
(v IS MU: Osobní administrativa -> Systém -> Které znaky je povoleno
zadávat v aplikacích?).
Přesto, jakkoli složité bylo konvertovat celý systém do Unicode,
ukázalo se, že byla historicky správná volba jazyka Perl jako základního
programovacího jazyka pro IS MU, neboť podpora Unicode a UTF-8 v Perlu
má mnohem lepší architekturu než v jiných skriptovacích jazycích.
17. srpna 2006