Ключевые слова: Х-терминал, linux, LTSP, Linux Terminal Server Project, терминальный linux-сервер, бездисковая станция, ПК без жесткого диска, использование старых компьютеров, diskless workstation, thin client, asplinux, использование Linux в офисе, X-terminal
История личной оптимизации пакета OpenOffice началась после выхода в свет версии 1.1.0, тогда я как раз устанавливал новый сервер Х-терминалов. Компьютер был достаточно мощный (Intel Pentium 2.4 GHz cache L2 512 Mb/ FSB 800 MHz / 1 Gb RAM) и я вправе был думать, что OpenOffice будет на нем летать, но не тут-то было. После установки, которая прошла с небольшими проблемами (не оказалось нужного пакета db4-4.1 для работы с базами данных, который пришлось скачивать из Интернета), я запустил новую версии этого офисного пакета. Первое разочарование было при запуске программы ooffice – она запускалась более 10 секунд, но я отнес такую задержку на создание первичных пользовательских настроек. Далее я увидел главное окно программы OpenOffice, в котором все элементы меню были написаны квадратиками вместо букв. Понятно, что работать в таком виде с офисным пакетом было нельзя, а единственным выходом было внесение изменений в его конфигурацию.
Изменения конфигурации я начал с предположения, что авторы ASPLinux не могли выложить на свой официальный сайт не проверенный офисный пакет, следовательно конфигурация моей системы должна чем-то отличаться от той, на которой его проверяли. Самым главным отличием, на мой взгляд, были локальные настройки, так как у меня выбран системным украинский язык (uk_UA.CP1251), а у разработчиков ASPLinux – русский. Тут следует оговориться, что поддержка украинского языка в ASPLinux находится на достаточно хорошем уровне, но, конечно, уступает аналогичной поддержке русского языка. Недолго думая, я запустил OpenOffice в режиме русской системной локализации:
$ LANG=ru_RU.cp1251 ooffice
Он запустился прекрасно и все пункты меню и элементы диалоговых окон были на русском языке. Единственно, что мне не понравилось, так это шрифты по умолчанию в офисных документах и элементах интерфейса.Я начал постепенно изучать содержимое каталога /usr/lib/openoffice и нашел очень интересный документ /usr/lib/openoffice/share/registry/data/org/openoffice/VCL.xcu. Ниже приведен фрагмент данного документа, который отвечает за используемые шрифты для системной локализации ru-RU:
Nimbus Sans L;Albany;Arial;Luxi Serif;Helvetica;Lucida;Geneva;Helmet;SansSerif;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma
Nimbus Sans L;Albany;Arial;Luxi Sans;Helvetica;Lucida;Geneva;Helmet;SansSerif;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma
Nimbus Mono L;Cumberland;Courier New;Luxi Mono;Courier;Lucida Sans Typewriter;Lucida Typewriter;Monaco;Monospaced
Nimbus Roman No9 L;Thorndale;Times New Roman;Luxi Serif;Times;Lucida Serif;Lucida Bright;Timmons;New York;Serif
Nimbus Sans L;Albany;Arial;Luxi Sans;Helvetica;Lucida;Geneva;Helmet;SansSerif;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma
Nimbus Roman No9 L;Thorndale;Times New Roman;Luxi Serif;Times;Lucida Serif;Lucida Bright;Timmons;New York;Serif
Nimbus Sans L;Albany;Arial;Luxi Sans;Helvetica;Lucida;Geneva;Helmet;SansSerif;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma
Nimbus Roman No9 L;Thorndale;Times New Roman;Luxi Serif;Times;Lucida Serif;Lucida Bright;Timmons;New York;Serif
Nimbus Mono L;Cumberland;Courier New;Luxi Mono;Courier;Lucida Sans Typewriter;Lucida Typewriter;Monaco;Monospaced
Nimbus Mono L;Cumberland;Courier New;Luxi Mono;Courier;Lucida Sans Typewriter;Lucida Typewriter;Monaco;Monospaced
Nimbus Sans L;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma;Luxi Sans;Interface User;WarpSans;Geneva;Tahoma;MS Sans Serif;Helv;Dialog;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Helmet;Interface System;Sans Serif
Как видно из списка шрифтов, которые используются в офисном пакете, на первом месте всегда стоят шрифты Nimbus (Nimbus Sans L, Nimbus Mono L и Nimbus Roman No9 L). Многим привычнее работать со шрифтами Arial, Courier New и Times New Roman, поэтому добавляем к данному файла раздел для не представленной в нем системной локализации uk-UA (для русскоязычных пользователей можно изменить уже существующий раздел):
Arial;Nimbus Sans L;Albany;Luxi Serif;Helvetica;Lucida;Geneva;Helmet;SansSerif;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma
Arial;Nimbus Sans L;Albany;Luxi Sans;Helvetica;Lucida;Geneva;Helmet;SansSerif;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma
Courier New;Nimbus Mono L;Cumberland;Luxi Mono;Courier;Lucida Sans Typewriter;Lucida Typewriter;Monaco;Monospaced
Times New Roman;Nimbus Roman No9 L;Thorndale;Luxi Serif;Times;Lucida Serif;Lucida Bright;Timmons;New York;Serif
Arial;Nimbus Sans L;Albany;Luxi Sans;Helvetica;Lucida;Geneva;Helmet;SansSerif;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma
Times New Roman;Nimbus Roman No9 L;Thorndale;Luxi Serif;Times;Lucida Serif;Lucida Bright;Timmons;New York;Serif
Arial;Nimbus Sans L;Albany;Luxi Sans;Helvetica;Lucida;Geneva;Helmet;SansSerif;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma
Times New Roman;Nimbus Roman No9 L;Thorndale;Luxi Serif;Times;Lucida Serif;Lucida Bright;Timmons;New York;Serif
Courier New;Nimbus Mono L;Cumberland;Luxi Mono;Courier;Lucida Sans Typewriter;Lucida Typewriter;Monaco;Monospaced
Courier New;Nimbus Mono L;Cumberland;Luxi Mono;Courier;Lucida Sans Typewriter;Lucida Typewriter;Monaco;Monospaced
Arial;Nimbus Sans L;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma;Luxi Sans;Interface User;WarpSans;Geneva;Tahoma;MS Sans Serif;Helv;Dialog;Albany;Lucida;Helvetica;Charcoal;Chicago;Helmet;Interface System;Sans Serif
Запускаем OpenOffice и смотрим на знакомые очертания привычных шрифтов. Более того, в моем случае OpenOffice заработал в украинской локализации и никаких квадратиков в меню!
Разобравшись с элементами интерфейса я понял, что на этом оптимизация настройки OpenOffice не заканчивается. Очень разочаровала меня скорость проверки орфографии. Так, при первом запуске текстового редактора OpenOffice я щелкнул на слове с ошибкой (подчеркнутом красной волнистой линией) правой кнопкой “мыши” и вынужден был ждать 10 секунд, пока на экране появится контекстное меню с вариантами правильно написанных слов (при этом загрузка центрального процессора была на отметке в 100%). Конечно, при повторном обращении за помощью к компьютерному словарю эта операция была выполнена довольно быстро, но при проверке орфографии размер программы в памяти достиг 223 Мбайта, и это при 33 Мбайтах при запуске. Углубившись в изучения ситуации поддержки орфографии в OpenOffice версии 1.1.0. я обнаружил, что он поддерживает проверку орфографии, расстановку переносов и тезаурус у довольно большого количества языков, причем большинство из которых не представляет интереса для конечных пользователей. Согласитесь, редкий человек будет составлять документы одновременно на русском, украинском, английском, немецком и, например, итальянском языках, а список поддерживаемых языков намного больше. Для сравнения хочу привести суммарный размер файлов словарей для OpenOffice версии 1.1.0. - более 44 Мбайт. Я посчитал, что будет рациональным отключить проверку орфографии некоторых языков, которыми не владеют пользователи. Для этого в файле /usr/lib/openoffice/share/dict/ooo/dictionary.lst достаточно поставить символы “#” перед неиспользуемыми словарями. Чтобы еще увеличить эффект я также запретил использование тезауруса и автоматической расстановки переносов, так как эти функции мало востребованные. В результате у меня получился такой файл (для проверки орфографии трех языков: русского, украинского и английского США):
# List of All Dictionaries to be Loaded by OpenOffice
# ---------------------------------------------------
# Each Entry in the list have the following space delimited fields
#
# Field 1: Entry Type "DICT" - spellchecking dictionary
# "HYPH" - hyphenation dictionary
# "THES" - thesaurus files
#
# Field 2: Language code from Locale "en" or "de" or "pt" ...
#
# Field 3: Country Code from Locale "US" or "GB" or "PT"
#
# Field 4: Root name of file(s) "en_US" or "hyph_de" or "th_en_US
# (do not add extensions to the name)
#HYPH ru RU hyph_ru_RU
#DICT it IT it_IT
#HYPH it IT hyph_it_IT
#HYPH de DE hyph_de_DE
#DICT en GB en_GB
#HYPH en GB hyph_en_GB
#HYPH da DK hyph_da_DK
DICT en US en_US
#HYPH en US hyph_en_US
#THES en US th_en_US
#DICT ca ES ca_ES
#DICT cs CZ cs_CZ
#DICT da DK da_DK
#DICT de CH de_CH
#DICT de DE de_DE
#DICT el GR el_GR
#DICT en CA en_CA
#DICT es ES es_ES
#DICT fr FR fr_FR
#DICT hr HR hr_HR
#DICT hu HU hu_HU
#DICT it IT it_IT
#DICT nl NL nl_NL
#DICT pl PL pl_PL
#DICT pt PT pt_PT
#DICT sv SE sv_SE
#DICT bg BG bg_BG
#DICT en GB en_GB
#DICT pt BR pt_BR
#DICT sk SK sk_SK
#DICT ga IE ga_IE
#DICT gl ES gl_ES
#DICT lt LT lt_LT
DICT ru RU ru_RU
#DICT sl SI sl_SI
DICT uk UA uk_UA
#DICT no NO no_NO
#DICT la ANY la
#HYPH fr FR hyph_fr
#HYPH it IT hyph_it
#HYPH nl NL hyph_nl
#HYPH cs CZ hyph_cs
#HYPH en CA hyph_en_CA
#HYPH en GB hyph_en_GB
#HYPH es ES hyph_es
#HYPH pt BR hyph_pt_BR
#HYPH pt PT hyph_pt_PT
#HYPH sk SK hyph_sk
#HYPH sl SI hyph_sl
#HYPH uk UA hyph_uk
Запускаем после “орфографической” оптимизации OpenOffice. Проверяем размер программы: 33132 Кбайт, из них 25844 Кбайт в общих библиотеках (Share). Создаем чистый документ, при этом размер программы в памяти увеличивается до 42232 Кбайт и 33288 Кбайт в разделяемых библиотеках. Набираем текст с ошибкой – память программы увеличивается до 61248 Кбайт и 35476 Кбайт (Share). Теперь нажимаем на слове с ошибкой правой кнопкой “мыши”. Меню вариантов появляется моментально, и в памяти программа занимает всего 72504 Кбайт (35596 Кбайт). Согласитесь есть разница между размерами программы в 72 Мбайта после оптимизации проверки орфографии и 223 Мбайта без оптимизации. Таким образом, снизив потребность в памяти для OpenOffice более чем в 3 раза, мы добились более эффективного расходования системных ресурсов сервера, а тем самым обеспечили более комфортные условия для пользователей.