| 
			| 
					
						| 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 | 
								|  | « Ответ #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 | 
								|  | « Ответ #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 или дельфийских компонентов. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Rimbe 
								Интересующийся    Offline | 
								|  | « Ответ #11 :  23-11-2014 15:18 »   |  | 
 
 Можно использовать связку asp.net mvc с ext. Вот примеры: http://examples.ext.net/  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Ilia | 
								|  | « Ответ #12 : 23-11-2014 23:56 »  |  | 
 
 У вас только к вашей имеющейся программе добавится модуль, который будет взаимодействовать с серверной программой на основе WinInet API или дельфийских компонентов.
 Я понимаю, но в идеале я хочу избавиться от exe файлов на стороне клиента, переложив все на браузер. Любопытно и красиво, спасибо посмотрю обязательно. Уж ночь не сплю, посмотрел что такое этот JQuery, пока действительно это видится решением. Наконец начал понимать что все гораздо проще можно сделать, чем я даже планировал   |  
						| 
								|  |  
								|  |  Записан | 
 
 Кто выпил весь кофе! |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #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 | 
								|  | « Ответ #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 »  |  | 
 
 в формулировках. |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	|  |