Альтератор изначально строился как средство кнструирования решений.

Мы хотим конструктор, из которого мы хотим получить возможность не переписывая этот конструктор получать разные решения.

Как мы планируем систему:

Выглядит оно так:

  интерфейс
    |
  модель
    |
  модули настроек (бэкэнд)

(Пример -- опущено)

В принципе, нам ничего не мешает сделать больше уровней модели.


Модули должны общаться.

Протокол: (объект параметр1 параметр2 параметр3)

Пример:

  интерфейс
    |    (users/test action new)
  модель
    |    (users/test action new) (groups/test action new)
  бэкэнд


Все эти модули висят на некоторой общей шине, которая имеет два названия: woolus и telegraph


Мы получили простую систему. Её простота обманчива.

Рассмотрим пример, как на её примере можно сделать сложную конфигурацию.

Типовой случай:

  браузер (b)
  |            web  i+b
  трансп. (t)   |    | 
  развязка     ...   t
  |             |   /
  i           socket
  |             |      
  a             a      
  |             |      
  e             e


   i+b
   |
  ...
   |
  t t
  | |
  e e

t -- это ещё один модуль, либо модель, либо бэкенд с разных сторон, который предоставляет возможность раздачи через сеть.


Гоша: задача alterator -- тиражирование решений


Первая задача, которая была частично решена -- построение решений и реализация решений.

Вторая задача, чтобы части к нему мог писать даже человек, не знающий много языков программирования.

Программист знает sh, perl, но не хочет изучать, например, схему, на которой написан alterator.

Поэтому все модули можно делать на любом языке программирования. За исключением одного -- описание взаимодействия делается на некоем подмножестве языка scheme.

Модули общаются стандартным для UNIX способом -- через stdio.

ENSIGN

Программист:

  1. пишет на scheme и пользуется всеми бонусами
  2. пишет на чём угодно

Мы видели, что у объектов фиксированное число аргументов.

Пример

  1. (/users/test action new)
  2. (/users actoin list)
  3. (/users action write)

лирическое отступление: раньше оно было сделано через FUSE, FUSE лежал между ensign и бэкэндами


В alterator используется guile.

лирическое отступление про Scheme...

  number? string? boolean?
  number->string
  #t, #f, всё истина, кроме #f ( nil, 0, ... -- истина )

LOOKOUT

Нарисовать кнопку:

  (button "текст")

Нарисовать метку:

  (label "метка")

Нарисовать метку под кнопкой:

  (vbox (button "текст) (label "метка"))

Нарисовать кнопку, которая будет писать 8 на stdout:

  (vbox
    (label "метка")
    (button "текст" (on-click (write (+ 5 3))))
  )


Вебовский движок (dom/xmlhttp) сделан на этом: http://qooxdoo.sf.net


Контакты

inger at altlinux.ru

<lj user="byuth1"/>

repo: Daedalus (alterator 2)

wiki.sisyphus.ru/Alterator

Meetings/ALTerator/Conspect (last edited 2009-11-28 14:10:24 by eSyr)