LINUX.ORG.RU

Сообщения grusha

 

Tool chains versus Components

Откопал на слэшдоте (http://developers.slashdot.org/article.pl?sid=01/06/20/1216216).

Tool chains versus Components (Score:2) by Twylite (234238) <twylite@NOSPAM.crypt.co.za> on Monday June 25 2001, @03:01AM (#137487)

I think the author of this article is failing to make an important distinction between tool chains and software components.

Unix unquestionably derives enormous power from tool chains, as described by the article. But a tool chain, or part of a tool chain, is not a component.

You COULD sort your database using sort, but you don't. You COULD select records using grep, but you don't. You COULD use a perl one-liner to total accounts in your general ledger, but you don't. The reason is that these routines need to be integrated into a software application, to prevent the mess of utilities that plague legacy applications.

The answer is components. These are not discrete tools; they cannot exist alone. A component is only meaningful when integrated into a larger application.

The author would have done a lot better to draw attention to the wealth of shared libraries available on Unix, yet even these are a poor approximatation of a reusable component model, despite their obvious value.

There are many good reasons to use COM, not the least of which being that COM offers geniunely reusable object oriented components. COM is, unfortunately, a good vision but a poor implementation. Still, it is somewhat better than DLLs (MS's equivalent of shared libraries).

The «perfect solution» is somewhere out there, not that we'll ever find it. But a step in the right direction would be a compromise between shared libraries and COM (read: shared object libraries), with effective yet simple bindings in a multitude of languages.

Реквестирую флейм.

grusha
()

[тихо и незаметно] lornews - ЛОР по NNTP

Написал сабжевый костыль: http://github.com/dmaluka/lornews

Состоит из 3-х программ:

lord - небольшой NNTP-сервер, слушающий по умолчанию 5119 порт;

lorpull - утилита, скачивающая с ЛОРа сообщения за последние столько-то дней в локальное хранилище (используемое lord'ом) и удаляющая слишком старые сообщения;

lorpost - утилита, читающая с stdin'а Usenet-сообщение с определенными заголовками и отправляющая соответствующее сообщение на ЛОР; используется lord'ом для выполнения NNTP-команды POST.

Подробности в README.

Инсталляция:

./install.sh (из-под рута)

или там скажем

./install.sh ~/bin

Затем из-под своего пользователя:

./install_home.sh

После этого появится директория ~/.lornews с файлом groups. В нем перечислены лоровские ньюсгруппы.

Предполагается запуск lord в бэкграунде и запуск по крону lorpull для нужных вам групп с нужными вам параметрами. Настройте ньюсридер на localhost:5119 или где там у вас (может, в локалке).

Для постинга нужно создать директорию ~/.lornews/users/my_nick/ и в ней файл passwd с паролем внутри. (Анонимусы на данный момент не поддерживаются). lorpost запускать не нужно - lord сам ее запускает, просто писать в ньюсы, но с определенными хедерами (см. README).

Написано на Перле, нужны опр. модули (см. README).

(Сперва было здесь: http://www.linux.org.ru/view-message.jsp?msgid=4189992).

>>>

 

grusha
()

[тихо и незаметно] lornews - ЛОР по NNTP

Написал сабжевый костыль: http://github.com/dmaluka/lornews

Состоит из 3-х программ:

lord - небольшой NNTP-сервер, слушающий по умолчанию 5119 порт;

lorpull - утилита, скачивающая с ЛОРа сообщения за последние столько-то дней в локальное хранилище (используемое lord'ом) и удаляющая слишком старые сообщения;

lorpost - утилита, читающая с stdin'а Usenet-сообщение с определенными заголовками и отправляющая соответствующее сообщение на ЛОР; используется lord'ом для выполнения NNTP-команды POST.

Подробности в README.

Инсталляция:

./install.sh (из-под рута)

или там скажем

./install.sh ~/bin

Затем из-под своего пользователя:

./install_home.sh

После этого появится директория ~/.lornews с файлом groups. В нем перечислены лоровские ньюсгруппы.

Предполагается запуск lord в бэкграунде и запуск по крону lorpull для нужных вам групп с нужными вам параметрами. Настройте ньюсридер на localhost:5119 или где там у вас (может, в локалке).

Для постинга нужно создать директорию ~/.lornews/users/my_nick/ и в ней файл passwd с паролем внутри. (Анонимусы на данный момент не поддерживаются). lorpost запускать не нужно - lord сам ее запускает, просто писать в ньюсы, но с определенными хедерами (см. README).

Написано на Перле, нужны опр. модули (см. README).

>>>

 

grusha
()

Замысел двух игрушек

FlagFall (Падение флагов): С неба падают флаги разных стран. Внизу ходят животные и прочие существа. Флаги раскачиваются и вращаются под дуновениями ветра, но полотна флагов не колышатся, как будто сделаны из твердого материала и жестко прикреплены к флагштокам. Падая на землю, флаги убивают животных и др. существ. Льется кровь.

PeaRain (Гороховый дождь): С неба падают горошины примерно равной величины. Внизу ходит кошка. Горошины падают с разной скоростью и в разных направлениях, в зависимости от сезона, времени суток и т.д. Задача кошки - уворачиваться от горошин.

grusha
()

Система составления учебных расписаний: концепция

Проблема (всем известная, но никем толком не решенная): автоматизация составления расписаний в уч. заведениях, в т.ч. высших. Это мой диплом, но я независимо от этого факта хочу осчастливить человечество.

Задача сводится к назначению одних объектов (ресурсов - времени, аудиторий) другим (событиям - занятиям, экзаменам) с учетом набора ограничений - жестких (обязательных) и мягких (необязательных, определяющих качество расписания).

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

Наборы ограничений также могут быть совершенно разнообразны и непредсказуемы - как простые, типа нежелательности первых пар и суббот, так и довольно нетривиальные, типа окон, расстояний между аудиториями и равномерности нагрузок.

Я пришел к выводу, что для по-настоящему гибкого задания ограничений требуется: 1) полный по Тьюрингу язык, на котором пишутся функции - предикаты ограничений; 2) API, предоставляющее доступ из этих функций к объектам расписания.

В качестве такого языка мне импонирует Lua.

Система должна также уметь работать с неполными и некорректными (нарушающими жесткие ограничения) расписаниями и вносить в расписания динамические изменения в связи с изменением исх. данных и ограничений.

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

Какие у кого мысли насчет концепции системы? Сам думал-думал, много чего надумал, теперь вот решил поинтересоваться.

grusha
()

RSS подписка на новые темы