[ Pobierz całość w formacie PDF ]
.Wprowadzanie danych przez u¿ytkownikaKa¿dy, kto walczy³ ze standardowymi funkcjami scanf(3), wie, ¿e obs³uga danychwyjœciowych to po prostu bu³ka z mas³em.Prawdziwy programista musi po prostumieæ smyka³kê do obs³ugi wejœcia.Dotyczy to równie¿ wejœcia I18N.Mówi¹cdok³adnie, to nie samo wejœcie stwarza problemy; problemem jest rozpoznawanieznaczenia strumienia danych.Wczytanie danych wejœciowych do bufora jestwykonywane tylko raz, ale program mo¿e potrzebowaæ kilku przejœæ przezposzczególne segmenty strumienia wejœciowego, aby odpowiednio go przetworzyæ.Dlatego w³aœnie zaprzysiêgli programiœci jêzyka C nie martwi¹ siêograniczeniami fscanf(3), ale po prostu korzystaj¹ albo z fgets(3), albo zfread(3).Dziêki temu program mo¿e wypróbowaæ kilka ró¿nych konwersji danychwprowadzonych przez u¿ytkownika, a nie od razu zak³adaæ np.poprawnoœækonwersji za pomoc¹ formatu %d.Angielskojêzyczni programiœci próbuj¹cyodczytaæ liczbê mog¹ byæ ca³kowicie pewni, czy jest ona zakodowana jako ASCII.W wielu innych jêzykach istnieje jednak np.kilka metod zakodowania liczby„jeden” (Japoñczycy stosuj¹ co najmniej trzy sposoby).W najprostszej sytuacji obs³uga „miêdzynarodowych” danych wejœciowych jestzadaniem banalnym, poniewa¿ realizuje j¹ sprzêt.Istniej¹ przecie¿ specjalneklawiatury dla jêzyka francuskiego lub hebrajskiego.Po naciœniêciuodpowiedniego klawisza taka klawiatura wysy³a do procesora kod znaku z zestawuISO-8859-1 (w przypadku klawiatury francuskiej) lub ISO-8859-8 (dla klawiaturyhebrajskiej).Prawie na najni¿szym poziomie odwzorowanie kodów klawiatury mo¿ezostaæ zmienione przez serwer X, dziêki czemu mo¿na uzyskaæ nawet odwzorowaniekombinacji klawiszy daj¹ce znak sk³adany (np.w „trybie francuskim” naciœniêciea i nastêpnie ' da akcentowany znak á).Po stronie aplikacji obs³uga tego rodzaju wejœcia tak¿e jest banalnym zadaniem.W najgorszym przypadku program musi przekszta³ciæ napisy zakodowane zgodnie zumiejscowieniem u¿ytkownika na napisy z kodowaniem Unicode.Wszystko to da siê³atwo zrobiæ za pomoc¹ funkcji iconv(3) dostêpnej w bibliotece libc w wersjiGNU.Tak siê jednak sk³ada, ¿e dla wiêkszej czêœci ludnoœci œwiata (jeœli nie dlawiêkszoœci u¿ytkowników komputerów) po prostu niewygodne jest pos³ugiwanie siêklawiatur¹ umo¿liwiaj¹c¹ wprowadzenie ka¿dego potrzebnego znaku.Wykszta³conyChiñczyk ma w swoim repertuarze od piêciu do dziesiêciu tysiêcy znaków Han, zaœKoreañczyk potrafi algorytmicznie skonstruowaæ 11172 znaki Hangul.Istniejekilka sposobów wprowadzania tekstu wymagaj¹cego tak obszernego zestawu znaków,a najpopularniejszym jest wprowadzanie tekstu w zapisie fonetycznym (czêsto zapomoc¹ alfabetu ³aciñskiego).Nastêpnie zapis ten jest porównywany zes³ownikiem (a czêsto tak¿e „przerzedzany” lub przemieszczany na podstawieznanych zastosowañ w zdaniach i znajomoœci zasad gramatycznych, a tak¿eprzyzwyczajeñ u¿ytkownika).Na tej podstawie wytwarzana jest lista znaków,które mog¹ byæ ostatecznie umieszczone w tekœcie.Manipulowanie reprezentacj¹fonetyczn¹ przez u¿ytkownika nazywa siê preedycj¹, dla odró¿nienia tego procesuod ogólnego procesu edycji polegaj¹cego na wstawianiu, usuwaniu iprzemieszczaniu znaków oraz bloków znaków.Oczywiœcie, opisywana tu metoda wymaga znacznego wsparcia programistycznego.Tak kosztowny proces wymagaj¹cy u¿ycia baz danych i algorytmów sztucznejinteligencji jest czêsto uruchamiany oddzielnie.Oznacza to, ¿e aplikacjaprzetwarzaj¹ca tekst i serwer obs³uguj¹cy wejœcie musz¹ siê ze sob¹ komunikowaæzarówno przy obs³udze zawartoœci, jak i przy prezentacji u¿ytkownikowi danych„sprzê¿onych”.W X11R5 wprowadzono standard obs³ugi wejœcia (tzw.X Input Method), którynastêpnie zosta³ zmodyfikowany i sta³ siê obowi¹zkowy w X11R6.Umo¿liwia onkorzystanie z kilku alternatywnych sposobów prezentacji.W najprostszym z nichsam program zarz¹dzaj¹cy wejœciem bêdzie wyœwietla³ oddzielne okno preedycji.Po³o¿enie tego okna jest kontrolowane przez mened¿era okien (czyli ostatecznieprzez u¿ytkownika).Taka metoda jest oczywiœcie niezrêczna i rozpraszaj¹cauwagê, szczególnie wtedy, gdy program zarz¹dzaj¹cy wejœciem jest u¿ywanysporadycznie (tak by³oby np.przy pisaniu programu w jêzyku C z komentarzami wjêzyku japoñskim).Pozosta³e metody s¹ bardziej elastyczne, ale jednoczeœniebardziej skomplikowane.Wszystko kulminuje siê w metodzie dzia³aj¹cej „wlocie”, w której aplikacja przekazuje wywo³anie zwrotne do programuzarz¹dzaj¹cego wejœciem, umo¿liwiaj¹c mu przes³anie tekstu powsta³ego w wynikupreedycji i statusu sprzê¿enia zwrotnego ponownie do siebie.Dziêki temuaplikacja mo¿e np.prezentowaæ tekst po preedycji za pomoc¹ takiego samegokroju pisma, ale np.w odmiennym kolorze.Daje to czytelniejszy obraz i niezmusza u¿ytkownika do nieustannego przenoszenia wzroku miêdzy oknem aplikacjiodbieraj¹cej dane wejœciowe a oknem preedytora zawieraj¹cym obrabiane detale.Na poni¿szych rysunkach pokazano, jak Japoñczycy wprowadzaj¹ dane, pos³uguj¹csiê powszechnie u¿ywanymi programami kterm(1x), kinput2(1x) orazcannaserver(1).Program kterm(1x) wywodzi siê z xterm(1x), w którym dodanowyœwietlanie znaków japoñskich.Program kinput2(1x) jest japoñskim programem dozarz¹dzania wejœciem, który obs³uguje protokó³ XIM.W wiêkszoœci dystrybucji Linuksa dostarczane s¹ wspomniane programy (Canna,KInput2 i KTerm) w spakowanej postaci, a wiêc bêdzie mo¿na zainstalowaæ je bezproblemów i przeprowadziæ próby na naszym przyk³adzie.Program Canna zazwyczajuruchamia serwer automatycznie i instaluje skrypt rozruchowy, zaœ KInput2 iKTerm musz¹ byæ uruchomione rêcznie.W ró¿nych dystrybucjach mo¿na jednak spotkaæ ró¿ne sposoby konfiguracjipakietów.Pakiety kinput2-canna i kinput2-canna-wnn w dystrybucji Debiandzia³aj¹ od razu, ale w innych dystrybucjach trzeba skonfigurowaæ je rêcznie,zanim zaczn¹ ze sob¹ wspó³pracowaæ.Do edycji tekstu bêdzie u¿yty edytor ae(1), poniewa¿ bash(1) b³êdnie obs³ugujeznaki japoñskie i wysy³a zak³Ã³cenia do kterm [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • listy-do-eda.opx.pl