LINUX.ORG.RU

Подскажите инструментарий для создания сложного прикладного приложения


0

0

Требуется запрограммировать одну уже решенную (математически) прикладную задачу. К сожалению, опыт программирования под Linux отсутствует.

Дано.
1. База данных некоторых стандартных для реляционных БД объектов.
2. Список документов шаблоны которых известны и которые формируются на основе разнообразных запросов к базе данных объектов.
Документы практически на 100% имеют табличный вид.
3. Алгоритмы, при помощи которых формируются документы из обработанных элементов базы данных.

Причем, запросы к базе данных могут быть сложными.
Например в базе данных будут таблицы, скажем, вакантных должностей и таблицы кандидатов на эти должности. В БД будет храниться матрица стоимостей назначений i-го кандидата на j-ю должность.
При запросе к БД будет требоваться найти такое закрепление кандидатов за вакантными должностями, при котором общая стоимость назначений будет минимально возможной.
Т.е. будет решаться комбинаторная Задача о Назначениях.
Среди формируемых документов будут и такие, для получения которых надо решать задачи типа комбинаторных Задач Коммивояжера на элементах базы данных.
К чему я клоню? Просто ИМХО для получения таких документов проблематично будет применять стандартные запросы SQL...

Найти.
Список инструментов ОС Linux, при помощи которых можно будет создать такую прикладную программу.

Требования (в идеале).
1. База данных должна заполняться двумя способами. Либо автоматически из текстового файла, либо в диалоговом режиме с пользователем.
Основной режим заполнения БД таков. Основное заполнение идет из текстового файла, а небольшая коррекция данных - в диалоговом режиме.
2. Выдаваемые документы должны лекго трансформироваться в формат либо MS Word, либо MS Excel.
3. Пользовательский интерфейс должен быть графическим и дружественным. Причем, как в плане заполнения БД, так и при выдаче документов.
4. Инструментарий должен быть OpenSource и весьма жалетельно, чтобы были аналоги под Windows (например, пакет MySQL есть как под Linux, так и под Windows).
5. ПО должно быть сетевым (хотя в явном виде подобных требований пока нет, но скорее всего будут). Функционировать оно будет внутри замкнутой сети, поэтому сторонние сервера привлекать нельзя.

anonymous

(Продолжение)

Что уже было сделано и с какими проблемами приходилось сталкиваться.
1. Примерно такая же программа уже была давно написана под DOS в среде Turbo Vision. СУБД ваяли сами на Паскале :-) Почему это ПО сейчас не устраивает, надеюсь, комментировать не надо?
2. В свое время мы пробовали сделать эту программу в среде Delphi под Windows.
Все бы ничего, если бы не некоторые ограничения и неприятности. Например, во многих выходных табличных документах требовалось получить объединенные ячейки (как по вертикали, так и по горизонтали - таблицы имели сложный вид). А объекты Delphi этого ИМХО не любят...
Кроме того, при экспорте документов в MS Excel скорость передачи составляет примерно 3 строчки в секунду из-за тормознутости соответсствующих объектов MS Office.
А в некоторых документах присутствует до 2000 строк. Итого документ даже на экране формируется за 10 минут на P-IV со скоростным винтом. А это неприемлемо много для наших целей (требования заказчика). К слову сказать, в Borland Pascal (Turbo Vision) эти документы рисуются из символов псевдографики за доли секунды...
3. Пока остановились вот на какой связке:
Apache Server + PhP + MySQL
То есть прикладную программу хотим оформить в виде сайта :-))
Документы будем хранить, генерировать и отображать в HTML формате броузером Mozilla. Интерфейс тоже планрируем оформлять в HTML и отображать в броузере (файл index.html).
Формат HTML притягателен своей универсальностью - его может импортировать и MS Word, и MS Excel...
В этом выборе смущают две вещи.
А). Достаточно ли перечисленных средств для организации в броузере всплывающих диалоговых окон? Например, диалог ввода в программу текущего времени, которое может не совпадать с BIOS-временем.
Б). Я не вижу, как в планируемой связке программ организовать расчетные алгоритмы.
То есть в интерфейсе программы (web-страница), методом использования диалоговых окон, списков и т.п. мы определяем выборку из MySQL базы данных.
Далее отфильтрованные данные по-идее должна воспринять какая-то программа типа процедуры Паскаля или С, поместить данные в массивы и запустить счетные алгоритмы (задача о назначениях, задача коммивояжера и пр.). Вот тут я не знаю, что использовать и как организовать передачу данных. Эта библиотека расчетных программ должна быть написана либо на компиляторе С, либо на компиляторе Паскаля (Паскаль предпочтителен, ибо на нем уже написаны все программы обработки данных). Интерпретаторы неприемлемы.
После окончания расчетов процедура должна передать вновь сформированные данные в PhP для формирования выходного документа (шаблоны документов даны). Этот документ должен быть выдан (всплыть) в виде окна web-броузера.

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

anonymous ()
Ответ на: (Продолжение) от anonymous

Re: (Продолжение)

>Кроме того, при экспорте документов в MS Excel скорость передачи составляет примерно 3 строчки в секунду из-за тормознутости соответсствующих объектов MS Office.

http://www.python.org/windows/win32/

yuriy123 ()

Re: Подскажите инструментарий для создания сложного прикладного приложения

Эх блин, развелось любителей искать приключения на собственный тухес. Задача тривиальная, как грабли. Решается за неделю максимум средствами tcl (для извергов - perl), latex если отчёты хочется делать красивыми или OpenJade, если хочется какого либо кала вроде M$ Ворда.

baklan ()
Ответ на: (Продолжение) от anonymous

Re: (Продолжение)

1. интересно было бы узнать ваши соображения на этот счет.
2. вы ведь программист, vcl имеет открытый исходный код, напишите свои обьекты.
3. разумно, однако имеет свои минусы. Очень плохо когда приходится операторам вводить данные врукопашную. Медленно.

В любом случае желаю удачи.

SatanClaus ★★★ ()
Ответ на: Re: (Продолжение) от SatanClaus

Re: О инструментарии.

Ребята, а нельзя ли поближе к теме?
Почему-то все зациклились на выдаваемых документах и их экспорте в MS Word/Excel. А ведь в моем понимании эта проблема почти решена - html формат.

Прокомментирую уже изложенные здесь рекомендации:
1. Delphi/Kylix нельзя использовать. Это не OpenSource. А в нашей стране есть бюджетные организации, где в силу специфики решаемых ими задач можно юзать только OpenSource.
Впрочем, если инструментарий имеет версии для Windows - это очень хорошо для демонстраций разработанных программ.
2. TeX и LaTeX тоже, наверное, можно использовать. Но я совершенно с ними не знаком.

Хотелось бы конструктивных комментариев по выбранной связке программ:
А). MySQL для хранения данных. Есть версии и для Linux, и для Win.
Б). Apache Server. Для организации программы в виде сайта. Есть версии как для Linux, так и для Win.
В). PhP. Как я понял, этот софт является связкой между Apache сервером и сервером MySQL. Этот софт динамически, в режиме реального времени меняет содержимое web-страницы на основе заданного шаблона и на основе обработанного SQL-запроса.
Есть ли версия пакета PhP для Win?
Г). Так и не прозвучал совет, какой пакет выбрать для решения прикладных задач о назначениях и задач коммивояжера. То есть на основе SQL-запроса выбираются данные и далее должна быть решена прикладная задача по обработке этих данных. Решение этой задачи должно быть выдано в виде web-страницы.
Для примера скажу, что задача коммивояжера для 100 городов иногда решается методом ветвей и границ около часа на PIV-3ГГц, требуя при этом до 300Мб RAM (FreePascal). Поскольку эта комбинаторная задача труднорешаема, то нередки случаи, когда точное решение вообще не удается получить для 100 городов.
Я уже молчу про то, что для получения элементов матрицы стоимостей переходов требуется уметь вычислять синусы, косинусы, тангенсы и пр. спецфункции.

anonymous ()
Ответ на: Re: О инструментарии. от anonymous

Re: Re: О инструментарии.

1. Да, бывает версии mysql и php и апачь как под Linux, так под эту жалкую пародию на операционную систему, навсегда осквернившую чистое и светлое слово windows. Mysql и apache - неплохо будет для этой задачи. Только апачь лучше наверное взять из первой ветки (хотя следует уточнить).

2. если есть вычислительные задачи - не стОит юзать пхп (ИМХО). Оптимально в твоём случае - CGI модули на С. Оно же наиболее сложно в разработке. Изготовь и отладь сперва реализацию твоего алгоритма на с, затем воткни реализацию в модуль. Этот CGI модуль, возможно, удасться сделать на паскале тоже, но лучше с этим не связываться. Как связать модлуль с субд - прочитаеш на сайте mysql (смотри в сторону использования субд в с-приложениях, то, что в данном случае будет не приложение а cgi-модуль, не влияет на подключение к субд).

3. Для экспорта в всякий ворд-ёксель (если уж без их совсем не обойтись) используй текстовые файлы. Меньше траходрому поимееш с всех сторон. При этом, для вывода на экран, т.е. для демонстрации можно продолжать юзать хтмл. В cgi модуле предусмотри возможность, чтобы твой алгоритм умел выводить данные как в текстовом, так и хтмл виде. Ссылку на текстовую форму оставь на страничке, при необходимости получить её это будет выглядеть как "скачать".

Вот.

bugmaker ★★★★☆ ()

Re: Подскажите инструментарий для создания сложного прикладного приложения

Вопрос а ваша программка это програмка для простых пользователей? Тоесть она в массы пойдет потоком или будет ставится как некая система вашими спецами? Тоесть на сколько сложным вы планируете процесс установки программки?

Если это будет сложная система то веб формы привествуются с любой БД. Отчеты можно делать как заметили в HTML либо использовать TeX. Исходник документа TeX легко создается и конвертируется во что угодно (открытое) например в RTF - там будут вам и таблицы и все что захотите.

Если это программка для простых смертных которые должны будут ее установить сами не напрягаясь. Могу посоветовать использовать кросплатформенные графические библиотеки + embeded MySQL (относительно недвано появился, теперь MySQL можно прилинковать к бинарнику), но отчеты в даном варианте делать только html или если найдете библиотеки преобразований.

Aleks_IZA ()

Re: Re: Подскажите инструментарий для создания сложного прикладного приложения

Спасибо всем специалистам, давшим конструктивные рекомендации.
1. От TeX скорее всего придется отказаться. Будем мучиться с html.
Скорее всего придется также юзать PhP, ибо очень много шаблонных документов. Типа шапка одинаковая, а количество строк под ней разное (зависит от SQL-запроса к БД).
В любом случае решение будет принято в процессе апробации средств разработки...
2. Особое спасибо про cgi-модули. Я, конечно, слышал про них, но думал, что это типа место хранилища javascript или чего-то подобного.
Не думал, что эти модули есть ни что иное, как средство обмена между С-программами и web-сервером.
Именно то, что нужно!

Одно плохо - все наши программисты работают в Паскале. Но ИМХО разберемся. На крайний случай слышал, что существуют конвертеры Pascal-C :-)))

Спасибо.

anonymous ()
Ответ на: Re: О инструментарии. от anonymous

Re: Re: О инструментарии.

html - НЕ РЕШЕНИЕ. А вот какой либо docbook - уже ближе к телу.

С latex-ом НАДО ознакомиться. Без этого нельзя считать себя вообще каким либо специалистом. Это важнейшая технология, идеология, философия, дзен и дао программирования. Точно так же, каждый ОБЯЗАН ознакомиться с идеологией literate programming.

Да, apache и пыхпыхпых я бы не рекомендовал ни в коем случае.

Бери Jakarta Tomcat и пиши на Жабе. Если Жаба не нравится (а любому умному человеку она должна быть глубоко отвратительна, но всё равно - даже жабка лучше, чем php) - то http://brl.sourceforge.net/, и пиши на одном из самых красивых языков программирования, когда либо придуманных человечеством.

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

baklan ()

Re: Re: Подскажите инструментарий для создания сложного прикладного приложения

Кроме embedded mysql (который недавно появился -> глюк на глюке) можно использовать sqlite, которому сто лет в обед будет.

baklan ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.