Ilia
|
|
« : 20-11-2014 17:31 » |
|
Здравствуйте! Хочу сказать спасибо форуму Весельчака - это Люди, которого помогли мне начать программировать лет 10 назад. Сейчас зашел и прям ностальгия. Наверное буду читать и писать здесь снова. И снова я с глобальным вопросом. У меня есть готовый проект состоящий из программ статистических расчетов. Расчеты разные, но алгоритм взаимодействия с пользователем одинаков. 1. Загрузка пользователем исходных данных в достаточно большие таблицы руками, copy paste либо из БД 2. Расчет результатов, в ходе расчета бывает диалог с пользователем - например на выбор пользователю дается 2 алгоритма либо пользователю нужно ввести дополнительное значение 3. На экран выводятся результаты расчета - табличные данные и график 4. Результат расчета с графиком можно передать в Ворд, можно сохранить в БД
Такое взаимодействие и математика прекрасно реализованы в Delphi + MSSQL. Мне нравятся удобные таблицы для ввода, работа пользователя с формой, когда в таблице он может выбрать из ComboBox его вариант и на лету меняется вид таблицы. Все это легко сделать в исполняемом файле. Сейчас встал вопрос о переводе проекта на web интерфейс т.к. количество пользователей растет и поддерживать их все труднее. И вот сейчас думаю на чем писать проект. Delphi, SQL - навыки достаточные для такой работы. C++ - подзабыл, могу вспомнить и легко переложить математику из pascal в C++ html,php - легкая математика, работа с БД, но не более - делал как-то "Электронную библиотеку" - по сути это работа с БД + морфологический поиск используя готовые библиотеки Net Studio - пробовал asp лет 10 назад, очень понравилось, но тогда выбрал для себя Delphi основным языком так как был с ним уже хорошо знаком.
Вот что выбрать, склоняюсь к ASP т.к. там, как я помню, можно визуально проектировать "форму" как в Delphi, но можно ли с ASP создать такой же удобный интерфейс как у exe файла? Может есть еще платформы на которых реализовывают такие проекты, может Borland что-то подобное делает на паскале (чтобы расчетную часть меньше переписывать)?
Заранее спасибо.
|
|
|
Записан
|
Кто выпил весь кофе!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #1 : 20-11-2014 18:01 » |
|
ASP не создает UI ни разу. UI делается из HTML+JS. Т.ч. серверная часть может быть любая.
За себя скажу, что не рекомендую завязываться на платформу MS - ни языком, не web-сервером, ни СУБД. Также не рекомендую PHP, даже если он на первый взгляд кажется проще.
Кстати, HTTP-сервер можно написать на Дельфях. Ведь этот язык ты знаешь лучше.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Ilia
|
|
« Ответ #2 : 20-11-2014 18:30 » |
|
Спасибо. Насколько я помню в Net Studio было какое то подобие дельфийской формы на которой можно было расположить элементы ввода и управления. А сама студия формировала уже html c js. Меня вот это привлекает. Когда я писал программу в Delphi большую часть времени я бился над пользовательским интерфейсом, если сейчас вручную используя html мне писать пользовательский интерфейс я завязну на долгое время. HTTP сервер на Дельфях - я понимаю это дельфийская программа будет формировать html страницы, допустим так Writeln(varfile, '<html><head> .....')? Я думал над этим, даже пример находил и пробовал, но честно скажу - я так хочу максимально возможно избавиться от ручного писания html кода. Честно, cайты aspx, которые я видел по работе были в основном написаны за госденьги и большинство было просто уродство, да и вообще прилично выглядящих подобных онлайн программ не припомню, например таблица для ввода значений, собранная из input получается такой не удобной, что пользователи не будут ее заполнять, нужно что-то более приближенное к тому же StringGrid. Я подотстал в веб-технологиях поэтому прошу уважаемых программистов ткнуть пальцем в какую сторону смотреть.
|
|
|
Записан
|
Кто выпил весь кофе!
|
|
|
zubr
Гость
|
|
« Ответ #3 : 20-11-2014 20:21 » |
|
Ну для красивости есть всякие готовые компоненты типа JQuery. Динамику все равно придется программно выводить writeln (Delphi) или echo (PHP). У php есть свои преимущества, что в статическую html-страницу можно вставлять вставки <php>. В варианте с Delphi можно, чтобы весь html-код не формировать программно, создать на сервере html-файлы шаблоны, которые уже в динамике модифицировать.
|
|
|
Записан
|
|
|
|
Ilia
|
|
« Ответ #4 : 21-11-2014 07:33 » |
|
Простите наверное за тупой вопрос. И все таки перед тем как выбрать что-то, спрошу у знающих людей. Есть ли в web возможность сделать для пользователя ввод табличных данных как в stringgrid? То, что я пока нашел в интернете красиво, но удобством пользования не отличается. Допиленный дельфийский stringgrid умеет копировать, вставлять, двигаться курсорными стрелками, встраиваются comboboxы и очень удобен для ввода моим пользователям. Это главный элемент работы пользователя. Крайне не хочу, чтоб программа при переходе на Веб потеряла в удобстве работы.
Остапа понесло... Кто что знает про Intraweb - VCL for Delphi, отпишитесь, пожалуйста!!!
|
|
« Последнее редактирование: 21-11-2014 08:05 от Ilia »
|
Записан
|
Кто выпил весь кофе!
|
|
|
zubr
Гость
|
|
« Ответ #5 : 21-11-2014 08:17 » |
|
Не знаю, есть ли что то готовое типа stringgrid в виде готовых java-script компонентов. Но: 1. В связке html java-script вполне можно соорудить что то похожее, а то и поудобнее. 2. Можно посмотреть в сторону flex или java-аплетов. Во flex точно есть аналог stringgrid. 3. А что мешает сделать клиентом ваше дельфийское приложение, которое будет данные получать с сервера и если надо обновляться оттуда?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #6 : 21-11-2014 09:18 » |
|
|
|
« Последнее редактирование: 21-11-2014 09:28 от Sla »
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #7 : 21-11-2014 09:24 » |
|
HTTP сервер на Дельфях - я понимаю это дельфийская программа будет формировать html страницы, допустим так Writeln(varfile, '<html><head> .....')? Я думал над этим, даже пример находил и пробовал, но честно скажу - я так хочу максимально возможно избавиться от ручного писания html кода.
Бррр.... Такой подход устарел лет на 20. Не забывай, что тут у тебя не монолитное приложение, а клиент-серверное. Шаблоны + AJAX + jQuery или другая либа. Сервер только обрабатывает запросы и подготавливает данные, передавая их шаблонизатору. AJAX позволяет JS оперативно без перезагрузки страницы обмениваться данными с сервером.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|
Ilia
|
|
« Ответ #9 : 22-11-2014 13:53 » |
|
Спасибо друзья за обсуждение, пока в голове все еще каша, честно, полагал, что asp.net легко справится с этой задачей, но видно надо действительно смотреть другой вариант. Внимательно посмотрю Ваши рекомендации и напишу. 3. А что мешает сделать клиентом ваше дельфийское приложение, которое будет данные получать с сервера и если надо обновляться оттуда?
Этот вариант я думаю, но хочу чисто браузерный вариант без exe файлов и желательно без ActiveX Шаблоны + AJAX + jQuery или другая либа. Сервер только обрабатывает запросы и подготавливает данные, передавая их шаблонизатору.
Действительно для меня лучше всего проект базировать на Delphi но я не могу понять как это в связке все работает. Шаблонизатор - это вообще что? PHP в инете называют шаблонизатором. Понятно, что шапку и низ страницы, меню и т.п. я буду дергать из готовых файлов а результат расчета формировать программно, а еще в чем суть шаблонизатров? Вот у меня допустим есть хостинг с виртуалкой. Могу для этого проекта свой отдельный компьютер подключить к сети интернет. ОС и веб-сервер на хостинге какие ставить и какие среды программирования ставить для разработки и как это мне все совместить?
|
|
|
Записан
|
Кто выпил весь кофе!
|
|
|
zubr
Гость
|
|
« Ответ #10 : 22-11-2014 14:07 » |
|
Этот вариант я думаю, но хочу чисто браузерный вариант без exe файлов и желательно без ActiveX
А причем здесь ActiveX? У вас только к вашей имеющейся программе добавится модуль, который будет взаимодействовать с серверной программой на основе WinInet API или дельфийских компонентов.
|
|
|
Записан
|
|
|
|
|
Ilia
|
|
« Ответ #12 : 23-11-2014 23:56 » |
|
У вас только к вашей имеющейся программе добавится модуль, который будет взаимодействовать с серверной программой на основе WinInet API или дельфийских компонентов.
Я понимаю, но в идеале я хочу избавиться от exe файлов на стороне клиента, переложив все на браузер. Любопытно и красиво, спасибо посмотрю обязательно. Уж ночь не сплю, посмотрел что такое этот JQuery, пока действительно это видится решением. Наконец начал понимать что все гораздо проще можно сделать, чем я даже планировал
|
|
|
Записан
|
Кто выпил весь кофе!
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #13 : 24-11-2014 09:21 » |
|
Обрати внимание, что программирование на JS с jQuery будет асинхронным. Это существенно сложнее привычного синхронного - надо быть очень аккуратным и не ждать определенной последовательности срабатывания колбеков. Если нужна определенность срабатывания, то, вместо вешания второго колбека, эту функцию нужно вызвать из первого колбека.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Ilia
|
|
« Ответ #14 : 24-11-2014 12:24 » |
|
Обрати внимание...
Ok, спасибо большое, учту. Этот проект совмещаю с другими, когда есть свободное время, разгребу текучку и продолжу. Для начала думаю попробую написать простенькое на Delphi + jQuery с простой логикой - пользователь заполнил таблицу - сервер ее сохранил - пользователь открыл таблицу - изменил - сервер опять сохранил. Если это нормально получится, остальное будет уже легче.
|
|
|
Записан
|
Кто выпил весь кофе!
|
|
|
Sla
|
|
« Ответ #15 : 24-11-2014 16:12 » |
|
программирование на JS с jQuery будет асинхронным. бр... а в чем асинхронность? 1. Рисуется основа DOM 2. Доступ к элемента по слектору 3. Callback - да, конечно же существует, но не это главное, и не сейчас. 4. Асинхронность представлена в виде callback? Так не все методы имеет callback. Callback методы имеют, в основном те методы, которые влияют на визуальные эффекты и на асинхронные запросы, в частности - ajax (во всех его видах)
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #16 : 24-11-2014 16:22 » |
|
Слав, колбеки! Много колбеков!
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Sla
|
|
« Ответ #17 : 24-11-2014 19:49 » |
|
Слав, колбеки! Много колбеков!
Не понимаю, о чем ты... Чесслово...
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Ilia
|
|
« Ответ #18 : 28-11-2014 16:00 » |
|
Появилось немного времени для этой задачи и нашел любопытное свойство в html5 contenteditable. Легко можно создать простую редактируемую таблицу, из таблицы легко копируются данные (со вставкой правда надо возиться) В Chrome все супер, но в IE 9 не работает и интернет о contenteditable неоднозначного мнения... Что скажете мастера?
|
|
|
Записан
|
Кто выпил весь кофе!
|
|
|
Ilia
|
|
« Ответ #19 : 03-12-2014 18:41 » |
|
Разобрался с IE conteneditable нормально работает, скоро напишу простую программу Hello table! - прототип будущего проекта и покажу если кому интересно на обсуждение.
|
|
|
Записан
|
Кто выпил весь кофе!
|
|
|
x77
Команда клуба
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #20 : 19-01-2015 14:45 » |
|
У вас только к вашей имеющейся программе добавится модуль, который будет взаимодействовать с серверной программой на основе WinInet API или дельфийских компонентов.
Я понимаю, но в идеале я хочу избавиться от exe файлов на стороне клиента, переложив все на браузер. Любопытно и красиво, спасибо посмотрю обязательно. Уж ночь не сплю, посмотрел что такое этот JQuery, пока действительно это видится решением. Наконец начал понимать что все гораздо проще можно сделать, чем я даже планировал JQuery - это только вершина айсберга, сейчас чаще используются готовые фреймворки типа Backbone или Knockout. Смысл JQuery в добавлении AJAX-функциональности, т.е. в возможности обмениваться данными с сервером без перегрузки страницы. Отсюда вытекает необходимость в отлавливании изменений на стороне страницы и обновлении данных на серваке, + при необходимости, опросе сервака и отображении изменений. и для этого есть уже готовые фреймворки. модная тема - это RESTfull сервер на стороне СУБД, который помимо GET/POST умеет делать PUT/DELETE и пр, т.е. представляет собой просто интерфейс к БД. При этом стандартом де-факто для обмена данными является JSON (который более удобен, чем XML, к тому же может быть бинарным), А транспортом является HTTP. Это - бэк-енд. фронт-енд, само приложение, представляет собой HTML+CSS+JS. при этом HTML отвечает за структуру данных (model), CSS - за их внешний вид (view), а скрипты - за логику их обработки (controller). В совокупности имеем тот самый MVC-паттерн, о котором так долго мечтали большевики. есс-но, что разделение это во многом условное. так вот, смысл фреймворков, о которых я говорил выше, именно в том, чтобы облегчить логику работы с сервером. если сервером является REST-апп, то для большинства таких приложений оно будет стандартным, и это позволяет создавать уже готовые решения, которые просто масштабируются под конкретную задачу. пример такого подхода можно посмотреть здесь: http://knockoutjs.com/examples/gridEditor.htmlчем это все интересно. у вас получается четкое разделение серверной части, работающей по спецификации REST, к которой можно наколбасить сколько угодно клиентов, и клиентской части, которая обменивается с сервером HTTP-запросами, при этом работая полностью на стороне клиента (и HTML, и CSS, и джава-скрипты - все это будет в конечном итоге жить в локальном кеше браузера). следующим шагом в развитии всего этого являются такие штуки, как, например, kordova и работающий на его основе адобовский PhoneGap. это нативные врапперы под основные платформы (андроид, виндофон, мак и т.д.), "внутрь" которых засовывается, по сути, веб-приложение (тот самый HTML+CSS+JS). на телефоне это выглядит и является нативным приложением, хотя по факту это приложение представляет собой мини веб-сайт, засунутый в родной для данной платформы враппер. я видел на практике такие решения для одной телефонной компании. мобильное приложение для телефонов (андроид, виндофон, айфон и еще чего-то) пишется с нуля и полностью 4 людьми, из которых 1 - разработчик, 1 - дизайнер, и двое - бизнесовые бумагомаратели. в обычных условиях один человек, пишущий для 4 разных платформ - это утопия, а вот приблуды вроде PhoneGap это делают вполне реальным, т.к. адаптация под разные оси сводится к допиливанию CSS, вся остальная клиентская часть не меняется. кроме того, никто не мешает на том же дельфи наваять клиента (для винды, линуха или андроида) к этому же рест-серваку. не буду утверждать, что все это оптимально, но, как минимум, интересно и заслуживает рассмотрения.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #21 : 19-01-2015 15:40 » |
|
JQuery - это только вершина айсберга, сейчас чаще используются готовые фреймворки типа Backbone или Knockout. Смысл JQuery в добавлении AJAX-функциональности, т.е. в возможности обмениваться данными с сервером без перегрузки страницы. Отсюда вытекает необходимость в отлавливании изменений на стороне страницы и обновлении данных на серваке, + при необходимости, опросе сервака и отображении изменений. и для этого есть уже готовые фреймворки. Ой... jquery - это framework для работы с dom объектами в клиентской части аякс - это просто уже встроенный функционал, который "формирует" заголовок HTTP_X_REQUESTED_WITH стандартом де-факто для обмена данными является JSON (который более удобен, чем XML, к тому же может быть бинарным), А транспортом является HTTP. Это - бэк-енд. Здесь нужно расставить приоритеты Сначала транспорт (HTTP), а затем формат данных, который может быть практически любой, который подходит для решения задач. backend - это, грубо, сервер frontend - клиентская часть Обновление страницы, может происходить разным способом Это отслеживание действий пользователя (различные функции событий, от клавиатуры, мыши, точпада и т.д.) и от программных действий, таких как, например, конец анимации, или рендеринга - они называются callback-функции Для RESTfull - все равно нужно использовать роутеры, для валидации запросов. Лично я пока не вижу большого преимущества использования PUT/DELETE
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
x77
Команда клуба
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #22 : 19-01-2015 15:50 » |
|
и в чем ты не согласен? я все это расписывал, чтобы в итоге подвести к таким вещам, как PhoneGap, kordova, nodejs и пр. основной посыл - есть готовые фреймворки, которые реализуют большую часть рутинной работы и позволяют четко разделять фронт и бэк. о чем был твой "Ой" - я не понял, если честно )
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #23 : 19-01-2015 17:10 » |
|
в формулировках.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
|