Единое окно доступа к образовательным ресурсам

Первая международная конференция разработчиков свободных программ на Протве: Тезисы докладов

Голосов: 0

В сборнике представлены программа конференции и тезисы докладов, одобренных Программным комитетом Первой международной конференции разработчиков свободных программ на Протве, которая состоялась в Обнинске 29-30 июля 2004 года.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
    Локализация Отсутствие документации на родном для пользователя
    языке.
     Данные проблемы в дальнейшем будем использовать для оценки
других видов документации. Документация, сопровождающая дистри-
бутив операционной системы, несомненно, полезна — нет проблем с ло-
кализацией и актуальностью, но обычно можно говорить о лаконично-
сти: затрагивается установка, настройка и использование лишь неболь-
шого количества программ. В непериодических бумажных изданиях —
книгах — отсутствуют проблемы с локализацией и лаконичностью, при-
сутствует высокая наглядность. Но существует проблема «старения»
книги — информация в ней со временем теряет актуальность. Перио-
дические же издания (газеты и журналы) практически лишены всех
недостатков.
     Отдельно нужно рассматривать Интернет. Объем документации в
нем даже избыточный. Здесь к услугам пользователя как домашние
страницы проектов, так и неофициальные сайты поддержки, форумы,
чаты, конференции, дискуссионные листы, рассылки. На первом месте
стоит умение пользоваться услугами мощных поисковых систем. Для
комфорта пользователей создаются всевозможные энциклопедии — на-
копительные и ссылочные.
     Следует отметить сложность накопления данных, предоставленных
во всевозможных электронных конференциях и форумах. Их модера-
торы или участники по возможности ведут отдельно список Ответов
на Часто Задаваемые Вопросы (FAQ), но этого недостаточно — необхо-
димо вести просто Список Ответов на Задаваемые Вопросы, то есть
отслеживать и публиковать все проблемы со способами их решения,
обсуждавшиеся в данном ресурсе. Причём материал не должен быть
сформирован по принципу HOWTO (как сделать), где пользователь по-
ставлен в положение обыкновенного автомата, набирающего команды
методом сut-and-paste. Новичок должен понимать, что он делает. То
есть в ходе описания неплохо было бы показать, что настройка не все-
гда может проходить гладко, что могут возникнуть некоторые проблемы,
показать методы решения этих проблем.
     Как минус, в Интернете, вполне логично, проявляются проблемы
«всегда online» и лицензионной чистоты публикуемых материалов. Для
решения проблемы «всегда online» и активной помощи пользователям
предлагается организовать проект offline документации. В него вклю-
чаются все online-материалы, доступные в сети и представляющие ин-
формационную ценность. Каким критериям должен отвечать подобный
проект:

                                91


    1. Понятный для пользователя язык. 2. Информативность. 3. Струк-
турность построения и в идеале контекстный поиск. 4. Кроссплатфор-
менность. Документация без проблем должна быть доступна для про-
смотра на любой платформе.
    В качестве примера можно рассмотреть сборник offline документа-
ции lindocs1 . Как возникла идея создания сборника? После огромного
скопления различных информационных материалов, касающихся Linux
и unix-подобных систем, возникла идея их каталогизировать. В каче-
стве форматов хранения информации были выбраны HTML и plain text,
а также PDF, так как просмотр информации в таком случае не пред-
ставлял особого труда как в Windows, так и в Linux. Изначально, была
выбрана древовидная структура каталога, которая, как в дальнейшем
оказалось, не подходит для структурирования: один и тот же материал
мог относиться к разным веткам древовидной структуры. Отсюда был
сделан вывод, что для оглавления больше подходила бы сетевая струк-
тура. Но объем наработанной информации был к тому времени уже
велик, поэтому задумка о сетевой структуре была отложена до момента
увеличения количества человек, сопровождающих данный сборник.
    Как происходит в текущий момент работа по накоплению в нем
материалов? В Рунете существует несколько десятков сайтов, которые
время от времени публикуют либо новые статьи, либо ссылки на них.
С помощью wget в случае многостраничного документа, или функции
«Save» браузера в случае отдельной страницы происходит скачивание
материала. При сохранении браузером автоматически скачиваются кас-
кадные таблицы стилей и невообразимое количество графической ин-
формации, которая не нужна для оффлайнового просмотра. Да и теря-
ется текстовая информация в оформлении и изысках дизайна. Поэтому,
вручную или с помощью несложных скриптов, со страниц убирается
ненужное форматирование и удаляются ненужные файлы, многостра-
ничные документы остаются нетронутыми. Затем, путём анализа заго-
ловка или беглого просмотра содержимого, оценивается, в какой раздел
сборника будет помещён материал. После многочисленных добавлений
информации или коренных изменений структуры объявляется о выходе
новой версии, версии нумеруются по принципу ГОД-МЕСЯЦ-ДЕНЬ.
Сборник распространяется без извлечения коммерческой прибыли — за-
интересованные люди либо сами приходят и переписывают докумен-
тацию, либо скачивают архив сборника из Интернета. Публикация в
Интернете сборника в неархивированном состоянии не производится,
так как все материалы и без того доступны в сети, хотя и разбросаны.
  1 http://www.kirov.ru/~mypost/lindocs/



                                     92


Судя по откликам в письмах и спросу на сборник, данный проект даже
в таком виде нужен сообществу.

    Секция 2
    (Председатель — Алексей Смирнов)



15:00–15:25
Вадим Житников                          Москва, ООО «Компания Скид»
Проект: Maxima          http://maxima.sourceforge.net

        Свободные программы символьной
           математики Maxima и Axiom

    Аннотация:
    Программы символьной математики ориентированы на точное, анали-
    тическое решение математических задач в максимально удобной для
    человека форме и находят широкое применение в научных, инженер-
    ных расчётах и в образовании. Рассматривается история, состояние,
    проблемы и перспективы двух свободных систем символьных вычис-
    лений Maxima (GPL) и Axiom (Modified BSD license).

    Системы символьных (аналитических) вычислений (иначе ещё на-
зываемые системами компьютерной алгебры) предназначены для авто-
матизации самого широкого спектра математических расчётов. Причём
вычисления производятся точно, аналитически — в форме, близкой к
обычной математической нотации. Они прекрасно справляются с таки-
ми рутинными задачами, как раскрытие скобок, приведение подобных,
дифференцирование. Более того, используя различные эвристические
или специализированные алгоритмы, системы аналитических вычисле-
ний могут решать и более сложные задачи, такие как интегрирование,
решение символьных и дифференциальных уравнений. Разумеется, не
всякая задача имеет точное решение, и поэтому системы компьютерной
алгебры могут решать задачи численно, строить графики.
    Системы компьютерной алгебры имеют долгую историю, основы их
развития заложены в академической среде Северной Америки. Сего-
дня наряду с такими известными коммерческими системами как Maple

                                   93


и Mathematica, существует две свободные программы: Maxima (GPL,
http://maxima.sourceforge.net/) и Axiom (Modified BSD license,
http://www.nongnu.org/axiom/index.html).
     В 1968 году в Массачусетском Технологическом институте (MIT)
в рамках создания искусственного интеллекта началась разработка си-
стемы аналитических вычислений Macsyma. В ранний период проект,
требовавший чрезвычайно больших для того времени вычислительных
ресурсов, базировался на единственном компьютере марки DEC PDP-6
(позднее DEC PDP-10). С подключением этой машины к сети ARPANET
возросло число пользователей и программистов Maсsyma. Появилось
большое число портов Macsyma на другие вычислительные машины и
операционные системы. Но со временем все эти проекты, включая ори-
гинальный в MIT, прекратили своё существование. В 1982 году права
на коммерческую разработку и использование Macsyma были переданы
Symbolics Inc. В то же время Министерство Энергетики США сохрани-
ло за собой права на оригинальный код Macsyma. Основываясь на нем,
проф. Вильям Шелтер (William Schelter) из Техасского университета в
Августине развивал свою версию программы, переименованную в Max-
ima. В 1998 году он получил официальное разрешение от Министерства
Энергетики США выпустить Maxima под лицензией GPL 2. Тем време-
нем в 1999 году коммерческий проект Macsyma был полностью закрыт и
программа перестала быть доступной. После внезапной смерти Вильяма
Шелтера в 2001 году развитие Maxima продолжается в рамках проек-
та базирующегося на SourceForge. Лидер проекта Джеймс Амундсон
(James Amundson). В феврале 2003 г. выпущен первый официальный
релиз Maxima 5.9.0, в данный момент Maxima 5.9.1 находится на ста-
дии бета-тестирования.
     История развития второй системы аналитических вычислений во
многом сходна. С 1971 до начала 90х годов прошлого века система
Scratchpad развивалась как научно-исследовательский проект IBM. Бы-
ла проделана огромная работа, достаточно сказать, что затраты труда
на разработку Scratchpad оцениваются не менее, чем 300 человеко-лет.
Затем система была переименована в Axiom и передана Numerical Al-
gorithms Group (NAG) для коммерческого использования. В 2001 го-
ду NAG сочла дальнейшее развитие Axiom нецелесообразным и вы-
пустила систему в свободное использование. Современный лидер про-
екта (http://savannah.nongnu.org/projects/axiom) Тим Дэйли (Tim
Daly) является разработчиком Axiom ещё со времён IBM. Уникальным
свойством Axiom является строгая типизация математических выраже-
ний, что делает систему особенно полезной для развития математиче-


                                94


ских алгоритмов. Программа хорошо документирована как на уровне
исходного кода (literate programming), так и для конечного пользовате-
ля (имеется книга).
     Остановимся на проблемах и задачах проекта Maxima. Исходный
код, доставшийся проекту в наследство от Macsyma, был в довольно
разрозненном состоянии — содержал куски неполного кода и рабочие
файлы. С тех пор, сначала силами Вильяма Шелтера, а потом коман-
дой разработчиков Maxima была проделана большая работа. Полностью
реорганизована структура исходного кода и система построения переве-
дена на autotools. Улучшено построение графиков, численное вычисле-
ние специальных функций и исправлено много ошибок. Усовершенство-
вано взаимодействие с программами оболочками. На данный момент
существует несколько оболочек к Maxima — несколько режимов для
GNU/Emacs и графические оболочки xmaxima, TeXmacs, symaxx/2.
К сожалению, ни один из этих интерфейсов не вполне удовлетворяет
современным требованиям и разработка новой полноценной кроссплат-
форменной графической оболочки является важнейшей задачей. Работа
над исправление внутренних ошибок Maxima идёт недостаточно бы-
стрыми темпами, что связано со следующими трудностями. Довольно
высок порог вхождения для понимания внутренней работы програм-
мы. Исходный код слабо комментирован и сложен по своей структуре.
Работа по усовершенствованию ядра системы требует специфической
квалификации — навыков программировании на Lisp вместе с хорошей
математической подготовкой.
     Maxima неплохо документирована: имеется полное справочное ру-
ководство в формате texinfo, на котором основана on-line справочная
система. Однако нет книги — работа начата, но пока далека от завер-
шения. Одна из актуальных задач — перевод документации на русский
язык.
     Сейчас Maxima работает на 6 различных реализациях Common
Lisp (GCL, Clisp, CMUCL, SBCL, OpenMCL, Allegro Common Lisp), и
перенос на любую другую реализацию Common Lisp не составит тру-
да. Система обладает высокой переносимостью и работает практически
на всех современных вариантах Linux (12 процессорных архитектур De-
bian/GNU Linux) и UNIX, Mac OSX, Windows 9x, 2000, XP, наладон-
ных компьютерах.




                                 95


15:25–15:50
Пётр Новодворский                                      Москва, ALT Linux
Проект: dilingvo

      Интеграция свободно доступных
 интернет-словарей в программные продукты

    Аннотация:
    Доклад посвящён использованию протокола dict для интеграции об-
    щедоступных интернет-словарей при разработке программных продук-
    тов. Рассматривается создание специального прокси http↔dict, сред-
    ства нахождения нужных словарей и их пополнения.

     Наряду с коммерческими программами по доступу к словарям, та-
кими как Lingua, Multitran в Интернет существуют средства доступа
к этим словарям через web. Каждая программа, обеспечивающая по-
добный доступ, имеет собственный интерфейс, а для того, чтобы найти
подобный словарь, приходится пользоваться традиционными поисковы-
ми системами.
     Понятно, что всё это усложняет интеграцию доступа к таким сло-
варям в операционную систему, например, такую тесную, как в случае
stardict, когда высвечивается перевод к слову, которое выделил поль-
зователь. Этим, в частности, и объясняется то, почему авторы коммер-
ческих словарей с такой лёгкостью делают к ним бесплатный доступ
через Интернет. Они руководствуются тем, что пользователи не смогут
активно использовать их словари через web и им придётся покупать
локальную версию их программного продукта.
     Создание прокси-серверов, которые могли бы предоставлять единый
интерфейс к различным web-словарям могло бы решить эту проблему.
     Однако, это не решит второй проблемы, выбора нужного словаря
из доступных. Эта проблема существует уже сейчас: когда пользователь
выбирает в качестве основного словарного сервера dict://mova.org/, ему
приходится выбирать из 62 словарей без всякой классификации. Так
называемые виртуальные словари, реализованные в новой версии dictd,
могут частично решить эту проблему, однако они предопределяются
администратором сервера и не всегда могут удовлетворять требованиям
пользователя. Кроме того, поиск сервера, содержащего нужный словарь,
остаётся сложным процессом.


                                   96


     Специализированный DICT-сервер dilingua призван решить две
описанных проблемы. Dilingua представляет шлюз пользователям про-
токола DICT к услугам web-словарей. Он легко настраивается под лю-
бой конкретный словарный web-интерфейс.
     Фактически, он представляет собой обычную службу DICT, которая
общается по протоколу, описанному в документе RFC 2229[1], однако
в отличие от стандартного сервера dictd для осуществления запроса он
обращается не к локальному словарю, а к словарю, находящемуся на
неком web-сервере.
     Для того, чтобы настроить dilingua под конкретный web интерфейс,
надо указать пять параметров. Первые два параметра — это регулярные
выражения, одно из которых при подаче ему на вход результирующей
страницы запроса может определить, нашёлся ли перевод, а второе этот
перевод из страницы выделяет. Следующие два параметра решают ана-
логичные задачи, но для команды match, описанной в RFC 2229. Пятый
параметр задаёт классификацию словаря, о которой будет сказано поз-
же.
     Остаётся вторая проблема: как найти словарь, который удовлетво-
ряет требованиям пользователя. Для этого был заведён DLS (сервер
классификации словарей, основан на LDAP[2]), на котором сервера
dict могут регистрировать имеющиеся словари и описывать их свой-
ства. Здесь и используется пятый параметр конфигурации dilingua, со-
держащий информацию о классификации словарей. При старте dilingua
соединяется с DLS и регистрируются на нём, учитывая классификацию.
Она может включать следующие пункты:

   • С какого языка переводится;
   • На какой язык переводится;
   • Тематика словаря;
   • Тип словаря.
    Таким образом, переводчик может задать интересующие его пара-
метры, например, «Перевод с русского на английский, нефтяной глосса-
рий» и получить имя сервера и имя интересующего его словаря.
    Появляется возможность создавать виртуальные словари, которые
группируются не на основе интересов администратора какого-то dict-
сервера, а следуя параметрам запроса нахождения словарей. Пользо-
ватель может поискать слово во всех словарях, которые переводят с
русского на английский.

                                   97


    Если описанная система станет популярна, пользователь получит
классифицированный доступ к огромному количеству словарей, доступ-
ных в Интернет, а разработчики смогут включить возможности этой
системы в свои программы.


Список литературы
[1] R. Faith, B. Martin, A Dictionary Server Protocol,
    http://www.ietf.org/rfc/rfc2229.txt.
[2] R. Weltman, M. Smith, M. Wahl, Lightweight Directory Access
    Protocol (LDAP) Authorization Identity Request and Response
    Controls, ftp://ftp.rfc-editor.org/in-notes/rfc3829.txt.




15:50–16:15
Станислав Иевлев                                      Москва, ALT Linux
Проект: Sisyphus
http://www.altlinux.org/index.php?module=sisyphus
        Alternatives http://alternatives.sourceforge.net/
        Osec       http://o-security.sourceforge.net/
        Colorifer    http://colorifer.sourceforge.net/
        NDK++, NCursesXX http://ndk-xx.sourceforge.net/

    Почему мы переписываем программы:
на примере alternatives, osec, csed, ncursesxx

    Аннотация:
    Почему ALT Linux Team пишет свои версии известных приложений
    и разрабатывает новые? Чем зачастую не устраивают существующие
    свободные приложения? На примере нескольких приложений из Си-
    зифа, демонстрируется как решались те или иные проблемы, какие
    задачи ставились и что было достигнуто. Что ещё планируется пере-
    писать и почему?




                                   98


    Почему при таком обилии свободных программ их приходится пе-
риодически переписывать? Характерные недостатки ПО от FSF: из-
быточная функциональность, совместимость с огромным количеством
платформ, консервативность upstream некоторых ключевых проектов,
частая несогласованность между проектами, чрезмерная оптимизация.
Всё это обусловлено первоначальными целями и особенностями дви-
жения: отсутствие собственной платформы, требование максимальной
распространённости ПО.
    Мы же хотим от приложений: высокой масштабируемости (адекват-
ного соответствия функциональности и имеющихся ресурсов) и мак-
симально возможного использования готовых решений из системных
библиотек, хорошей поддерживаемости кода и лёгкой адаптируемости к
новым условиям.
    Как выявить точки перегруженности функциональности в прило-
жении: через конфигурационные файлы, изучение формата командной
строки, анализ подлежащих протоколов. Например: конфигурационные
файлы с нелинейной структурой свидетельствуют о том, что возмож-
но тут собрана конфигурация нескольких отдельных приложений; если
аргументы командной строки имеют разный контекст в разных спосо-
бах вызова, значит скорее всего в этом комбайне спрятано несколько
отдельных утилит, если в протоколе заложена излишняя универсаль-
ность, то приложение, реализующее этот протокол, будет скорее всего
комбайном.
    Как писать хорошо масштабируемые приложения? Аккуратное раз-
деление на слои и организация конвейеров, удачный выбор структур
данных, протокола, конфигурационного файла. Unix предоставляет го-
товые примитивы для организации конвейеров, и если приложения бу-
дут ими пользоваться, то будут содержать меньше ненужного кода.
Почему-то зачастую библиотеки пытаются собрать в себе всю возмож-
ную функциональность, когда как проще разделить одну библиотеку на
несколько небольших. Очень хорошо, если библиотека верхнего уровня
не будет использовать недокументированные функции библиотеки ниж-
него уровня, ибо тогда будет легко изменять/заменять её по частям.
    Идеала не достигнуть из-за изначальной сложности некоторых ис-
пользуемых моделей, асинхронности и параллельности процессов в си-
стеме. Несмотря на то, что хочется получить совсем простой код, этого
никогда не произойдёт. Хорошее приложение всегда будет содержать
массу дополнительного кода, проверяющего коды возврата из функ-
ций, защиту от race-conditions, дополнительный код для снижения соб-



                                 99


ственных полномочий до уровня минимально необходимых. Приведём
несколько примеров библиотек и приложений.

ncursesxx/ndk++ vs. ncurses++
    curses — отличный пример неудачно спроектированной библиотеки.
C++ bindings к ncurses отражают всю громоздкость и неразбериху этой
библиотеки, пытаясь охватить сразу всё, что только возможно. Мы
предлагаем свой вариант. Это пример правильного разделения библио-
теки на слои, ncurses++ предоставляет только базовую функциональ-
ность: работа с окнами (изменение размера, перемещение, рисование)
и терминалами (ввод/вывод, изменение атрибутов). ndk++ — поддерж-
ка событий и сложных виджетов. Что ещё в самом ncurses планируется
переделать в том же ключе: terminfo — пример смешения вывода и полу-
чение информации из базы, ncurses — смешение ввода и вывода данных
в окна.

osec vs. AIDE, tripwire, mtree
     Задача проекта состояла в однократном отчёте об изменениях в
файловой системе с обращением особого внимания на security-sensitive
файлы. Чем не устраивают уже существующие средства контроля це-
лостности? Перегруженной функциональностью, а также использовани-
ем собственных версий функций для обхода файловой системы и созда-
ния/ведения базы данных. Более того, все эти приложения работают с
избыточными полномочиями в системе, что нежелательно с точки зре-
ния безопасности.
     Новый проект osec — пример превращения в конвейер: сборка дан-
ных, генерация отчёта, рассылка отчёта. Для работы используются го-
товые системные функции: fts — для быстрого и безопасного обхода
файловой системы, cdb — быстрая и удобная библиотека для создания
read-only баз данных. Все составные части osec устроены относительно
просто.

alternatives vs. update-alternatives
    Изначально в Sisyphus использовалась система альтернатив, взятая
от Debian, однако в ходе эксплуатации был выявлен ряд проблем и недо-
статков функциональности. Новый проект alternatives призван решить
эти проблемы. Это пример «комбайн вместо набора утилит».


                                100



    
Яндекс цитирования Яндекс.Метрика