Коллеги, plz, посоветуйте в каком направлении копать!
Есть необходимость в создании GUI-вой морды к прикладной проге, которая показывает свои интерактивы (не X-формы, а ncurses текстовые окошки) в обычном telnet клиенте. При этом саму прогу, естественно, трогать бы не хотелось.
Появилась мысль каким-то образом транслировать telnet-протокол в то, что будет отрисовываться Java в окне броузера и то, что будет вводить пользователь обратно в telnet-протокол.
Хотелось бы получить от осведомленной общественности какое-нибудь направление дальнейших изысканий, а еще лучше ссылку или примеры реальных программ, реализующих подобную функциональнисть.
Спасибо.
Смотря чего она делает, а то может проще ее всю в джяву вывернуть ибо сам по себе телнет - гемор редкий, а тут еще и с ncurses - помрешь в кодах. Можно С-шные модули из джявы тягать - через .so-шки. Можно ее без всяких джяв в CGI переклепать (самое простое наверное, отрубить терминалку и прицепить HTML, один модуль на базовую функциональность и N экранных форм ). Можно из джявского сервлета пускать базовый .so-шник.
...
Короче "не трогать" я думаю не выйдет, по крайней мере пользовательский интерфейс, а так - вариантов поле непаханное.
>Смотря чего она делает,
это полноценная ERP-система.>может проще ее всю в
>джяву вывернуть ибо сам по
>себе телнет - гемор редкий,
немного не понятно, почему телнет гемор редкий? что в нем геморного? протокол как протокол, по крайней мере на первый взгляд...>а тут еще и с
>ncurses - помрешь в кодах.
ncurses приведена только лишь для того, чтобы обозначить КАК выглядит интерфейс, а не НА ЧЕМ он выполнен. сама же ncurses никакого реального отношения к интерфейсу не имеет.>Можно из джявского сервлета
>пускать базовый .so-шник.
у этой ERP-системы архитектура хост-терминал. при этом саму систему переделывать в 100 раз дороже, чем терять клиентов, которым не нравится консольный интерфейс, так что сервлеты не помогут;)>Короче "не трогать" я думаю не
>выйдет, по крайней мере пользовательский
>интерфейс,
в том то все и дело, что нужно именно не трогать (хотя бы потому, что многих устраивает тот интерфейс, что есть). сам "интерфейс" исполняется на хосте и передается по телнет-протоколу на терминал и вот на терминале уже и нужно морду рисовать: хост (сервер) тут ни при чем.2ALL: хотелось бы услышать мнение касательно создания именно телнет-клиента, который бы позволял с одной стороны работать со стандартным телнет-сервером, а с другой стороны имел бы GUI-вую морду.
спасибо всем еще раз.
>немного не понятно, почему телнет гемор
>редкий? что в нем геморного?
>протокол как протокол, по крайней
>мере на первый взгляд...
>
>>а тут еще и с
>>ncurses - помрешь в кодах.
>ncurses приведена только лишь для того,
>чтобы обозначить КАК выглядит интерфейс,
>а не НА ЧЕМ он
>выполнен. сама же ncurses никакого
>реального отношения к интерфейсу не
>имеет.
>
Если ты собираешься тянуть в джяву содержимое телнета, то кроме разбора идиотского протокола ( имею опыт попытки перекачки бинарников по этой гадости ) ты еще провозишься с кодами терминалов - это тебе будет подарочек от ncurses. Потом упаришься с адаптацией кодов по типам терминалов... Кусок работы для человек 10-ти программеров не самой средней квалификации.>>Можно из джявского сервлета
>>пускать базовый .so-шник.
>у этой ERP-системы архитектура хост-терминал.
...
>терминал и вот на терминале
>уже и нужно морду рисовать:
>хост (сервер) тут ни при
>чем.
Очень странное заявление. Если подходить правильно, то на терминале ничего рисовать не надо. Кто хочет работать в терминале прет телнетом и работает. Кто хочет GUю тому можно сделать двумя путями:
1. Клиент лезет из браузера на хост, пускает сервлет и работает.
2. Вместо сервлета пишется JRMI-приложение и GUI-шки на каждую клинттскую машину. Тут может вскочить вопрос совместимости ( исполнение SWINGа не гарантируется в винде, а голый awt не очень красиво ) и трудоемкости.
Собственно и все.
ЗЫЖ А насчет телнета - поверь на слово, не для бинарных данных протокол. Работает он нормально, но ковырять его мама дорогая...
>>у этой ERP-системы архитектура хост-терминал.
>...
>>терминал и вот на терминале
>>уже и нужно морду рисовать:
>>хост (сервер) тут ни при
>>чем.
>Очень странное заявление. Если подходить правильно,
>то на терминале ничего рисовать
>не надо. Кто хочет работать
>в терминале прет телнетом и
>работает. Кто хочет GUю тому
>можно сделать двумя путями:вот о том то и речь, что САМУ систему менять нет возможности (да и по своей архитектуре она не клиент-сервер, а как у мэйнфреймов было - хост-терминал), поэтому единственное приемлемое по своей стоимости решение - транслировать телнет протокол в GUI-вую морду, так как отдельные заказчики лица кривят от осознания того, что им за терминалом работать придется.
>1. Клиент лезет из браузера на
>хост, пускает сервлет и работает.сервлет подключать не к чему, т.к. все что у пользователя есть - это процесс на хосте, который по своей сути принципиально не серверный. как я выше указывал, архитектура у системы - хост-терминал.
>
>2. Вместо сервлета пишется JRMI-приложение и
>GUI-шки на каждую клинттскую машину.это значит - существенно переделывать имеющуюся и работающую систему, что не удовлетворяет поставленным требованиям, по этому неприемлемо.
ну сам посуди, всю логику работы с данными, которая уже есть и работает, заново вклолачивать в JRMI-приложение - это приемлемо?>ЗЫЖ А насчет телнета - поверь
>на слово, не для бинарных
>данных протокол. Работает он нормально,
>но ковырять его мама дорогая...дык я вот и пытаюсь разобраться как мне поставленную задачку решить: систему не трогать и морду GUI-вую к ней приделать, чтоб отдельные товарищи мышами ерзали и кнопками наслаждались.
p.s. а кто-нибудь может подробнее рассказать о TinyFugue? что это такое и для каких задач можно использовать?
спасибо.
Кстати, может я не совсем правильно указал тему треда, по этому есть определенное недопонимание?
Если это так, то тогда прошу прощения ;-)Попробую пояснить что мне нужно: задача состоит в том, чтобы создать транслятор с протокола телнет в объекты виндового интерфейса, какими являются button, edit, grid & etc.
Нужно это для того, чтобы пользователь имел перед глазами привычное ему по мастдаю окошко, но при этом не догадывался, что он на самом деле работает с удаленной программой, запущенной по телнету; при этом интерфейс у программы а-ля ncurses.
>Попробую пояснить что мне нужно: задача
>состоит в том, чтобы создать
>транслятор с протокола телнет в
>объекты виндового интерфейса, какими являются
>button, edit, grid & etc.Можно попробовать чтонить типа expect
Спасибо,
но что такое expect? что он делает и для чего он нужен? есть ли порты под мастдай? где можно почитать об этом expect?
p.s. искать по слову expect - просто гибляк;)))
практичеки то же самое, что в рамблере в строке поиска набрать file или computer ;)))
Коль уж так неймется - ищи исходники Xterm, на бсдёвых портах должны быть, и адаптируй их. Там с мышью работать можно, да и джява там лего цепляется (читал где-то у сантехников, сам не пытался делать). Xterm - он поддерживает (должен) режимы простого терминала тоже.А что насчет логики работы с данными - в RMI ничего особо и делать не надо - создаешь serializable класс с терминальным выводом и засылаешь клиенту или серверу, это уж как захочется их разложить... Но это уже лирика.
>Коль уж так неймется - ищи
>исходники Xterm, на бсдёвых портах
>должны быть, и адаптируй их.Xterm - это же под X'ы, а мне под мастдайку нужно, под какой-нить IE или Netscaper; слишком сложно адаптировать одним словом;)
на сайте linux.org.ru посоветовали некую TinyFugue - что за зверь, может кто-нить подсказать? www.tinyfugue.org - крайне не информативен ;-(
>А что насчет логики работы с
>данными - в RMI ничего
>особо и делать не надо
>- создаешь serializable класс с
>терминальным выводом и засылаешь клиенту
>или серверу, это уж как
>захочется их разложить...я никогда не считал себя профи в жабе, но по большому счету имею представление как работают эти технологии: мне абсолютно не понятно, КАК можно ничего особо не делать с данными, для того чтобы пользователь ИМЕЛ возможность работать с ними в привычном для себя режиме? КАК можно взаимодействовать с процессом, реализующим бизнес-логику и отправляющим весь вывод в телнет-протокол из внешней программы, НЕ ИЗМЕНЯЯ при этом сам процесс?
если ты наберешся терпения объяснить - буду тебе безумно благодарен ;-)
спасибо.
Бизнес-логика тут ни причем - можно выводить клиенту что угодно, хоть консоль фрейма. Базовая-то функциональность не затрагивается. Я СИЛЬНО СОМНЕВАЮСЬ, что создатели системы лепили вывод в каждую функцию - наверняка есть НЕЧТО (класс/процедура(ы)/функция(и)) отправляющее сообщения клиенту, даже если делается это через КАНАЛ (или как это сейчас на фреймах называют).
Профессионалом придется быть на клиентской стороне - чтоб на жабе изобразить все так, как будто ничего не менялось. А на фрейме весь ВЫВОД должен отправляться не в "поток вывода на терминал", а в жабский модуль. Хоть через stdin. Если на пальцах - жабский класс представляет собой serializable класс содержащий набор переменных для подлежащих отображению. Если лень раскладывать, можно запихать все в одну String :). Этот набор/строка по мере готовности засылается клиенту. Это что касается жабы. И объяснять дальше просто нет смысла - копнешь пару раз и въедешь сам, там все слишком просто, чтобы быть сложным:).
Я усматриваю тут ДВЕ других трудности:
1. По какому пути (кроме браузера) ты не решишь пойти, тебе придется размещать у клиента софт = увеличению затрат на сопровождение = куче новых проблем (не только в теории). Сейчас он наверняка может юзать любой телнет-клиент, какой ему нДравится. Более того - если сейчас ВЫ у клиента ничего не инсталяете, клиент может просто встать в позу.
2. Судя по всему ВЫ (не лично, а контора где ты работаешь) сами не делали эту систему. Иначе у вас просто ОБЯЗАНЫ быть схемы разработки/тестирования/опытной_ эксплуатации . Без наличия этих схем лезть в ЛЮБУЮ промышленную программу равносильно самоубийству. При их наличии вопрос о доработке пользовательского интерфейса просто не встал бы. Поэтому, все что я тут наговорил ВАМ не подойдет - я подходил с позиции разработчика, а не реселлера.ЗЫЖ В жабе где-то есть телнетский класс. Может, если порыться, то можно и для терминала что-то найти.
>Бизнес-логика тут ни причем - можно
>выводить клиенту что угодно, хоть
>консоль фрейма. Базовая-то функциональность не
>затрагивается. Я СИЛЬНО СОМНЕВАЮСЬ, что
>создатели системы лепили вывод в каждую функцию -
>наверняка есть НЕЧТО (класс/процедура(ы)/функция(и))дело в том, что ты мне опять предлагаешь изменять саму систему, а это как раз одно из самых приоритетных требований: саму систему не менять. поэтому все правильные и красивые слова, которые ты написал, как все можно было бы реализовать в сервлете - несколько далеки от заданных мной вопросов. это первое.
второе. насколько хорошо спроектирована система -судить пользователям на производстве, но на мой взгляд - достаточно хорошо спроектирована, раз пользуется популярностью в отдельных кругах при отсутствии какой-либо рекламы.
>Я усматриваю тут ДВЕ других трудности:
>
>1. По какому пути (кроме браузера)
>ты не решишь пойти, тебе
>придется размещать у клиента софт
>= увеличению затрат на сопровождение
>= куче новых проблем (не
>только в теории). Сейчас он
>наверняка может юзать любой телнет-клиент,
>какой ему нДравится. Более того
>- если сейчас ВЫ у
>клиента ничего не инсталяете, клиент
>может просто встать в позу.я писал в самом начале, что нам необходимо решение "в браузере пользователя на мастдайке". видимо просто невнимательно прочитал.
>
>2. Судя по всему ВЫ (не
>лично, а контора где ты
>работаешь) сами не делали эту
>систему. Иначе у вас просто
>ОБЯЗАНЫ быть схемы разработки/тестирования/опытной_ эксплуатациимы сами являемся разработчиками этой системы и действительно за много лет сложились схемы разработки, тестирования и опытной эксплуатации.
было бы неправильно, есил бы они не сложились;)>Без наличия этих схем
>лезть в ЛЮБУЮ промышленную программу
>равносильно самоубийству.думаю, здесь мало кто с этим не согласится;)
>При их наличии
>вопрос о доработке пользовательского интерфейса
>просто не встал бы.как это ни парадоксально может показаться, но являясь разработчиками указанной промышленной системы мы поднимаем этот вопрос, ибо отдаем себе отчет в том, что главное в процессе поддержки работающей системы не кто что закодил, а стоимость внесения изменений. для того, чтобы проанализировать стоимость каждого решения (а их, на мой взгляд, хотелось бы иметь несколько), я и озаботился этой тематикой (создание в броузере на мастдайке графической морды, скрывающей под собой терминальное окошко с его интерфейсом а-ля nsurses).
>Поэтому, все что я тут наговорил
>ВАМ не подойдет - я
>подходил с позиции разработчика, а не реселлера.не подойдет не потому, что кто-то из участвующих в этом треде является реселлером, а потому, что несколько не по заданному вопросу.
>
>ЗЫЖ В жабе где-то есть телнетский
>класс. Может, если порыться, то
>можно и для терминала что-то
>найти.спасибо за информацию, о наличии такого класса я уже слышал, но насколько он может подойти к нашим целям - пока до конца не понятно.
2ALL: может кто-нибудь из присутствующих сталкавался с обсуждаемой в этом треде проблематикой и может поделиться своими мыслями по поводу "в каком направлении копать"?
хочу еще раз заострить вопрос на том, что не нужно предлагать варианты перепроектирования самой системы, необходимо решение, которое систему не затронет. например, приемлемым решением было бы такое, которое можно было бы смело отдать на оутсорсинг: от него сама система не зависит, но само решение может зависить от системы насколько это необходимо.
спасибо.
>2ALL: может кто-нибудь из присутствующих сталкавался
>с обсуждаемой в этом треде
>проблематикой и может поделиться своими
>мыслями по поводу "в каком
>направлении копать"?
>хочу еще раз заострить вопрос на
>том, что не нужно предлагать
>варианты перепроектирования самой системы, необходимо
>решение, которое систему не затронет.
>например, приемлемым решением было бы
>такое, которое можно было бы
>смело отдать на оутсорсинг: от
>него сама система не зависит,
>но само решение может зависить
>от системы насколько это необходимо.
>
>спасибо.
U menya poyavilas' odna ideya, ne znayu naskol'ko ona podhodit, no podelyus' na vsyakiy sluchay. Predpolagaetsya, chto programma nahoditsya na *nix mashine. Osnovnaya misl' ispolz'ovat' imenovannie trubi (fifo) i shemu client-server. Pri soedenenii, server sozdaet paru fifo-shek (mkfifo), naprimer /tmp/fifo1 i /tmp/fifo2 , zatem zapuskaetsya ta samaya proga, sleduyuschim obrazom:proga < fifo1 > fifo2.
Takim obrazom vivod schitivaetsya iz fifo2 i peredaetsya klientu, klientskaya chast' dolzhna translirovat' i vivodit' v sootvetsvuyuschem vide na ekran. Zdes' nado obrabativat' escape-posledovatel'nosti, no oni standartnie. (Naprimer posledovatel'nost' 0x1B]1;1H sootvetstvuet gotoxy(1,1)) Dalee, klavishi nazhatie na klientskoy storone peredayutsya na server, gde posle translyatsii zapisivayutsya v fifo1 i stanovyatsya dostupnimi toy programme.
Mne kazhetsya zadacha ne ochen' slozhnaya, razve chto eto ne to chto trebuetsya.
>Коллеги, plz, посоветуйте в каком направлении
>копать!
>Есть необходимость в создании GUI-вой морды
>к прикладной проге, которая показывает
>свои интерактивы (не X-формы, а
>ncurses текстовые окошки) в обычном
>telnet клиенте. При этом саму
>прогу, естественно, трогать бы не
>хотелось.
>Появилась мысль каким-то образом транслировать telnet-протокол
>в то, что будет отрисовываться
>Java в окне броузера и
>то, что будет вводить пользователь
>обратно в telnet-протокол.
>Хотелось бы получить от осведомленной общественности
>какое-нибудь направление дальнейших изысканий, а
>еще лучше ссылку или примеры
>реальных программ, реализующих подобную функциональнисть.
>
>Спасибо.Prochital ves' tred, no posle дня Победы nichego ne soobrazhayu. Mozhet eta fignya podoydet?
http://www.astec.co.jp/products/ENGLISH/ASTECX/Pozvolyaet zapuskat' dazhe X na Winde.
Pravda ona platnaya, no mi versiyu 2.12 polomali za kakih to polchasa.
Esli ne ugadal to sorry, no iskrene hotel pomoch.