Кодирование (это не про алкоголизм)

Leonid_V
Уже с Приветом
Posts: 6777
Joined: 10 Jul 2000 09:01
Location: Шербрук, Квебек

Кодирование (это не про алкоголизм)

Post by Leonid_V »

Год назад коллективный разум экспертов с Привета помог мне разобраться с рабочим вопросом в n раз лучше, чем наши университетские спецы. Спасибо еще раз и позволю себе еще раз потревожить оный разум неразумными вопросами. Для начала напомню, что от программирования и прочей компьютики далек как баран от балета.

Ну, а теперь, собственно, вопрос.
Имеем сайт
http://www.bdbiosciences.com/kr/researc ... /index.jsp" onclick="window.open(this.href);return false;

что это и для чего — не суть важно, важно что там можно выбирать всякое-якое, менять местами и прочее. Т.е. создать конфигурацию, которая нужна (лазер / фильтры / флуорохромы итд итп). Но вот же ж, ешкин кот, запомнить эту конфигурацию, создать удобочитаемый линк, который можно было бы послать студенту — нет (?) никакой возможности. Навроде того как в гуглокарте маршрут проложил, получилась ссылка в три километра длинной, но ты ея послал емелей, допустим, адресат один раз кликнул и видит именно то, что ты напрокладывал, а не девственно чистую карту, которая грузится по умолчанию.

Возожно ли каким-то способом добиться этого с сайтом о котором говорю? Или только записывать (экспортировать) как картинку и на этом всё. А если хочешь чего-то подправить в конфигурации, то “на кону мочало, начинай сначала“

Заранее благодарен за консультацию.
User avatar
Serguei666
Уже с Приветом
Posts: 18917
Joined: 11 Jul 2003 01:00

Re: Кодирование (это не про алкоголизм)

Post by Serguei666 »

Leonid_V wrote:Год назад коллективный разум экспертов с Привета помог мне разобраться с рабочим вопросом в n раз лучше, чем наши университетские спецы. Спасибо еще раз и позволю себе еще раз потревожить оный разум неразумными вопросами. Для начала напомню, что от программирования и прочей компьютики далек как баран от балета.

Ну, а теперь, собственно, вопрос.
Имеем сайт
http://www.bdbiosciences.com/kr/researc ... /index.jsp" onclick="window.open(this.href);return false;

что это и для чего — не суть важно, важно что там можно выбирать всякое-якое, менять местами и прочее. Т.е. создать конфигурацию, которая нужна (лазер / фильтры / флуорохромы итд итп). Но вот же ж, ешкин кот, запомнить эту конфигурацию, создать удобочитаемый линк, который можно было бы послать студенту — нет (?) никакой возможности. Навроде того как в гуглокарте маршрут проложил, получилась ссылка в три километра длинной, но ты ея послал емелей, допустим, адресат один раз кликнул и видит именно то, что ты напрокладывал, а не девственно чистую карту, которая грузится по умолчанию.

Возожно ли каким-то способом добиться этого с сайтом о котором говорю? Или только записывать (экспортировать) как картинку и на этом всё. А если хочешь чего-то подправить в конфигурации, то “на кону мочало, начинай сначала“

Заранее благодарен за консультацию.
То, что вы называете "ссылка в три километра длинной" - это сервис, который предоставляет Гугл. Если ваш сайт, на который вы дали линк, этого сервиса не предоставляет и сайт не у вас в руках, то ничего сделать нельзя, кроме как попросить сладельцев сайта добавить требуемую фунциональность
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Кодирование (это не про алкоголизм)

Post by perasperaadastra »

Но неужели нет какого-нибудь сервиса, чтобы сделать макрос, который повторит выбор из списков и радио-коробок? Присоединяюсь к вопросу ТС.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Кодирование (это не про алкоголизм)

Post by perasperaadastra »

Нашел вот такую штуку:
http://www.howtogeek.com/113789/how-to- ... h-imacros/" onclick="window.open(this.href);return false;

Но не знаю, насколько хорошо работает.
User avatar
geek7
Уже с Приветом
Posts: 20297
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Кодирование (это не про алкоголизм)

Post by geek7 »

perasperaadastra wrote:Но неужели нет какого-нибудь сервиса, чтобы сделать макрос, который повторит выбор из списков и радио-коробок? Присоединяюсь к вопросу ТС.
если результатом должен быть один пост (ака http post) то можно записать debugging proxy скажем fiddler и сделать статическую страничку с кнопкой [post]
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Кодирование (это не про алкоголизм)

Post by helg »

Весь интерактив со ссылки, указанной автором ветки, находится внутри iframe по адресу:
http://static.bdbiosciences.com/spectru ... iewer.html" onclick="window.open(this.href);return false;

Интерактив - это jquery+d3, которые при загрузке страницы вешают HTML select'ы (выпадающие списки) с нужным сождержимым на div'ы HTML-разметки страницы и JS обработчики onchange на те же selectы, которые пересчитывают картинку при каждом изменении данных. Полагаю, что не только картинку, но и содержимое select'ов может поменять обработчик.

Как универсальным плагином для браузера таким управлять - не представляю. Стандартные плагины для запоминания-заполнения длинных форм: Lazarus, "Form Save and Restore" (chrome only) - для статических HTML-форм и в данной ситуации работать не должны.

Плагином с записыванием макроса, как предложено выше по ветке, работать может неустойчиво. Другой размер окна может сбить положение элементов формы, и проигрываемая запись кликов мыши может не попадать по оригинальным элементам формы.

Не знаю как это автоматизировать...
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: Кодирование (это не про алкоголизм)

Post by Мальчик-Одуванчик »

А если подпихнуть под это дело селениум со скриптом, который нажмет нужные кнопочки и заполнит поля
потом отдельно послать этот скрипт студенту.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Кодирование (это не про алкоголизм)

Post by perasperaadastra »

helg wrote:Плагином с записыванием макроса, как предложено выше по ветке, работать может неустойчиво. Другой размер окна может сбить положение элементов формы, и проигрываемая запись кликов мыши может не попадать по оригинальным элементам формы.
А нет таких макросов, чтобы работали по id элемента вместо координат? Вот, к примеру, один из выпадающих списков:
<select id="ddlFluor2" class="input">...</select>
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Кодирование (это не про алкоголизм)

Post by perasperaadastra »

Мальчик-Одуванчик wrote:А если подпихнуть под это дело селениум со скриптом, который нажмет нужные кнопочки и заполнит поля
потом отдельно послать этот скрипт студенту.
Главное, чтобы скрипт мог обновляться в зависимости от того, что выберет ТС. А то руками там непросто набивать...
Вопрос: как web browser отмечает (за кулисами), что я выбрал такой-то элемент? Можно ли выцепить эту информацию?
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Кодирование (это не про алкоголизм)

Post by helg »

perasperaadastra wrote:А нет таких макросов, чтобы работали по id элемента вместо координат? Вот, к примеру, один из выпадающих списков:
<select id="ddlFluor2" class="input">...</select>
Два плагина, что я привёл, - именно по id/name и работают путём выполнения JS, содержащегося внутри плагина, который модифицирует DOM-дерево на предмет вписывания значений в элементы формы. Для работы этих плагинов нужен статический DOM. У автора ветки это не так. А когда JS на странице динамически создаёт элементы формы в DOM, JS в плагине эти элементы не видит - и не может их заполнить сохранёнными данными.
Leonid_V
Уже с Приветом
Posts: 6777
Joined: 10 Jul 2000 09:01
Location: Шербрук, Квебек

Re: Кодирование (это не про алкоголизм)

Post by Leonid_V »

helg wrote:модифицирует DOM-дерево на предмет вписывания значений в элементы формы. Для работы этих плагинов нужен статический DOM. У автора ветки это не так. А когда JS на странице динамически создаёт элементы формы в DOM, JS в плагине эти элементы не видит - и не может их заполнить сохранёнными данными.
правильно ли я понимаю, что на русский это переводится как “дело труба“?
User avatar
geek7
Уже с Приветом
Posts: 20297
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Кодирование (это не про алкоголизм)

Post by geek7 »

helg wrote:Весь интерактив со ссылки, указанной автором ветки, находится внутри iframe по адресу:
http://static.bdbiosciences.com/spectru ... iewer.html" onclick="window.open(this.href);return false;

Интерактив - это jquery+d3
....
Не знаю как это автоматизировать...
результатом этого действа является один пост? в смысле - если там не кидается что-то в сессию на стороне сервера с каждым селектом, а меняется только DOM а потом послылается один запрос и только он собственно нужен - то записываем этот пост и при необходимости посылаем (тем же прокси что записали или статической формой).. если красивости волнуют - можно скриншот сделать
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
User avatar
geek7
Уже с Приветом
Posts: 20297
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Кодирование (это не про алкоголизм)

Post by geek7 »

Leonid_V wrote:
helg wrote:модифицирует DOM-дерево на предмет вписывания значений в элементы формы. Для работы этих плагинов нужен статический DOM. У автора ветки это не так. А когда JS на странице динамически создаёт элементы формы в DOM, JS в плагине эти элементы не видит - и не может их заполнить сохранёнными данными.
правильно ли я понимаю, что на русский это переводится как “дело труба“?
да, динамический ДОМ это когда "труба шатал" сильно проблематично т.к. труба отсутсвует изначально и может появлятся в самых неожиданных местах по ходу действия.

позитивным для Вас моментом является то, что относится это к плагинам которые работают с самим дом - т.е. заполняют страницу на том сайте и позволяют Вам нажать на последнюю кнопочку (ну и поменять что-то до того)
Я подозреваю, что Ваша цель - воспроизвести результат после нажатия этой кнопочк (ну как у гугль-мапа)
так для этго вам сам ДОМ не нужен, а только тот кто из него выйдет.. обычно, насколько хитрыми бы нибыли манипуляции с ДОМ-ом в браузере, по последней кнопке тот отправляет серверу курьера (запрос) вот его можно перехватить и сделать дубль (как у АиБ С-х) и посылать этого дубля каждый раз как понадобится воспроизвести тот-же эффект
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Кодирование (это не про алкоголизм)

Post by helg »

Leonid_V wrote:правильно ли я понимаю, что на русский это переводится как “дело труба“?
Увы, да. Но задачка интересная: кажется я понимаю как написать плагин, который такое сделает.
Leonid_V
Уже с Приветом
Posts: 6777
Joined: 10 Jul 2000 09:01
Location: Шербрук, Квебек

Re: Кодирование (это не про алкоголизм)

Post by Leonid_V »

geek7 wrote: так для этго вам сам ДОМ не нужен, а только тот кто из него выйдет.. обычно, насколько хитрыми бы нибыли манипуляции с ДОМ-ом в браузере, по последней кнопке тот отправляет серверу курьера (запрос) вот его можно перехватить и сделать дубль (как у АиБ С-х) и посылать этого дубля каждый раз как понадобится воспроизвести тот-же эффект
правильно ли, мы с ёшкиным котом поняли, что надежды юношей еще немножечко питают?
Leonid_V
Уже с Приветом
Posts: 6777
Joined: 10 Jul 2000 09:01
Location: Шербрук, Квебек

Re: Кодирование (это не про алкоголизм)

Post by Leonid_V »

helg wrote: кажется я понимаю как написать плагин, который такое сделает.
это интересно ...
у меня, правда, созрел альтернативный подход по части “написать“: отправить создателям сайта (правда, это крутые ребята в крутой компании, не думаю, что они читают письма восхищенных юзеров) что-нибудь восторженно-обожательное, типа “блин, какого хрена у вас нет кнопки “save configuration", вот только не знаю какую формулу вежливости поставить в конце письма.

а вообще ... почитал я советы ваши ... крутые вы программисты, ребята. Вы друг-друга понимаете, когда общаетесь? По мне так это надо компьютером быть, чтоб понять. Словом, как всегда, ничего не понял, но, как всегда восхищен.

(на самом деле в общих чертах понял, что речь идет о некоем скрипте, который будет на моём компе (или на моём сервере) собирать в единую команду всё то, что я делаю, поэтапно выбирая нужные строчки и кнопочки, а потом пошлет всё это подальше единым запросом (автоматизированной серией запросов) и у обсуждаемого сайта не будет иного выхода, кроме как показать всё как заказано)
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Кодирование (это не про алкоголизм)

Post by Sergunka »

geek7 wrote: по последней кнопке тот отправляет серверу курьера (запрос) вот его можно перехватить и сделать дубль (как у АиБ С-х) и посылать этого дубля каждый раз как понадобится воспроизвести тот-же эффект
включаешь дебагер/wireshark ловишь запрос и сохраняешь у себя типо :cry: Когда надо повторить то postman посылаешь повторно :fr: Чо там какие-то мучения я это проделываю по десять раз на день как акробат под куполом в нашем цирке.
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Boriskin
Уже с Приветом
Posts: 18906
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Кодирование (это не про алкоголизм)

Post by Boriskin »

helg wrote:
Leonid_V wrote:правильно ли я понимаю, что на русский это переводится как “дело труба“?
Увы, да. Но задачка интересная: кажется я понимаю как написать плагин, который такое сделает.
Надо смотреть на http(s) траффик, как гик рекомендует, есть шанс, что выбор каждого из элементов списка генерирует определенный запрос и их последовательность можно как то склеить. Но даже если это заработает, то в случае если данные (ака списки) как то изменятся - все может развалиться.
Тупизна как Энтропия. Неумолимо растет.
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Кодирование (это не про алкоголизм)

Post by helg »

Давайте подробнее объясню в чём особенность.

В 20 веке веб-приложения типа: вы нам входные данные, мы в ответ результат - работали просто. Рисовалась страничка содержащая HTML-форму, в поля формы пользователь вводил данные - и нажимал кнопку "НуДавайЖе!". При нажатии браузер своим стандартным методом посылал эти данные на сервер, вытаскивал ответ сервера в виде новой HTML-странички - и показывал эту страничку заместо той, где форма была.

С тех пор принцип работы несколько поменялся.
- Зачем всякий раз вытаскивать с сервера всю HTML-страничку, если новая - почти как текущая? Получим от сервера только новые данные - и заменим то, что сейчас нарисовано. С некоторых пор стало возможным браузеру обмениваться данными с сервером не переходя на новую страничку. Магическое слово тут - XMLHttpRequest.
- Зачем всякий раз искать кнопку "НуДавайЖе!" - лучше при всяком изменении данных формы посылать текущее содержание формы на сервер - и получать пересчитанные данные. Это делает не простой HTML, а программа на языке JavaScript, загруженная с сервера вместе с HTML-страничкой. Полулярная библиотека для подобных манипуляций - JQuery, которая тут используется.
- Зачем серверу передавать полный текст странички со всеми HTML-элементами? Всем надо прописывать примерно одинаковый набор атрибутов, обрабатывать примерно одинаковые события от мышки-клавиатуы и реагировать на них. Давайте передадим браузеру вместе со страничкой программу, которая HTML/DOM, определяющий эти элементы, создаст прямо в браузере, после загрузки. Отличительные параметры на каждый элемент передавать всяко быстрее, чем полное описание для каждого элемента в отдельности.
- Зачем получать с сервера большую картинку с данными, нагружая его рисованием? Сервер один, а вас много. Получим набор цифр от сервера - и нарисуем график по ним прямо в браузере. В данном случае эти действия производятся библиотекой d3.js.
- Зачем все параметры передавать на сервер, а потом их же получать с сервера для рисования графика? Параметры у нас уже есть в браузере, будем их использовать.

Программа работает быстро. Но теперь.
- У формы нету кнопки "НуДавайЖе!" а вместе с ней и явно прописанного адреса, куда посылать данные формы.
- Формы как таковой на страничке нет - она же динамически создается при загрузке. Анализатор HTML-кода, пытающийся понять в какие поля вбивать сохранённые данные, этих полей не видит
- Если разобраться с вышеперечесленным, возникает ещё проблема. Послали на сервер данные, получили табличку, по которой рисовать график. Это не HTML, который дал браузеру - он нарисует. Это столбцы данных для программы на страничке, использующей библиотеку d3.js. Чтобы получить график, надо передать эти данные аккурат ей же.

Суммируя. Что не будет работать:
1. Найти кнопку "НуДавайЖе!" и отправить те же данные на тот же сервер, но со своей странички. Нету у него кнопки, Ури.
2. Найти программой все поля форму в загруженном HTML и выстаить из в нужные значения. Нету полей в загружененом HTML.
3. Проэмулировать запросы на сервер программой-прокси, что находится между браузером и сервером - и получить данные браузером. Дело в том, что часть данных для графика никогда до сервера не доходит. Она получается из полей в браузере и программой в браузере же и используется. Программа-прокси не получает этих данных - и не может передать их браузеру, когда эмулирует от него запрос.

После этого становится понятно как сделать, чтобы работало. Но писать это, увы, муторно.
Last edited by helg on 20 Jul 2016 15:58, edited 1 time in total.
User avatar
Boriskin
Уже с Приветом
Posts: 18906
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Кодирование (это не про алкоголизм)

Post by Boriskin »

Sergunka wrote:включаешь дебагер/wireshark ловишь запрос и сохраняешь у себя типо :cry: Когда надо повторить то postman посылаешь повторно :fr: Чо там какие-то мучения я это проделываю по десять раз на день как акробат под куполом в нашем цирке.
Дык задача не себе сохранить, а собрать это все в некий контейнер, который можно отправить другому человеку по мылу и там у него этот контейнер воспроизведет конечный результат.
Тупизна как Энтропия. Неумолимо растет.
User avatar
geek7
Уже с Приветом
Posts: 20297
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Кодирование (это не про алкоголизм)

Post by geek7 »

Leonid_V wrote:
geek7 wrote: так для этго вам сам ДОМ не нужен, а только тот кто из него выйдет.. обычно, насколько хитрыми бы нибыли манипуляции с ДОМ-ом в браузере, по последней кнопке тот отправляет серверу курьера (запрос) вот его можно перехватить и сделать дубль (как у АиБ С-х) и посылать этого дубля каждый раз как понадобится воспроизвести тот-же эффект
правильно ли, мы с ёшкиным котом поняли, что надежды юношей еще немножечко питают?
да, ключевые слова debugging proxy. конкретно можно поставить Fiddler
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Кодирование (это не про алкоголизм)

Post by helg »

geek7 wrote: да, ключевые слова debugging proxy. конкретно можно поставить Fiddler
Вы на сайт-то смотрели?
1. Идём по ссылке FireFox'ом
2. В FFох нажимаем F12. В открывшейся панели выбираем табу "network". Все запросы к серверу и ответы от него будут отображаться в этой табе.
3. Меняем параметры спектра в форме. Видим, что картинка меняется при изменении любого параметра формы. А обмен данных с сервером происходит не при всяком изменении.

Рroxy стоит между клиентом и сервером. Proxy не может получать доступ к данным, которые не гуляют между клиентом и сервером. Поскольку изменение графика не всегда сопровождается обменом данными между клиентом и сервером, у proxy нет полной информации какие параметры поставил клиент, proxy не знает какой клиент видит график. Следовательно, proxy не может решить поставленной задачи.
Last edited by helg on 20 Jul 2016 17:17, edited 1 time in total.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Кодирование (это не про алкоголизм)

Post by perasperaadastra »

Спасибо всем за ответы, и респект helg за разжевывание!
User avatar
geek7
Уже с Приветом
Posts: 20297
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Кодирование (это не про алкоголизм)

Post by geek7 »

helg wrote:Давайте подробнее объясню в чём особенность.

В 20 веке веб-приложения типа
...
3. Проэмулировать запросы на сервер программой-прокси, что находится между браузером и сервером - и получить данные браузером. Дело в том, что часть данных для графика никогда до сервера не доходит. Она получается из полей в браузере и программой в браузере же и используется. Программа-прокси не получает этих данных - и не может передать их браузеру, когда эмулирует от него запрос.

После этого становится понятно как сделать, чтобы работало. Но писать это, увы, муторно.
если цель - не на сервер отправить то, что браузер посылал при работе с ним "вручную", а в браузере поиметь нужный стейт ДОМа - тоже есть тривиальный способ
вот конкретно для хрома
http://stackoverflow.com/questions/4498 ... y-html-dom" onclick="window.open(this.href);return false;
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись
User avatar
geek7
Уже с Приветом
Posts: 20297
Joined: 01 Dec 2003 23:16
Location: Russia->USA

Re: Кодирование (это не про алкоголизм)

Post by geek7 »

helg wrote:
geek7 wrote: да, ключевые слова debugging proxy. конкретно можно поставить Fiddler
Вы на сайт-то смотрели?
да, не разобрался в чём цель :oops: много контролов - думал навыбираеш правильно, а потом таки появится что-то типа [заказать]. недошло, что всё чтобы полюбоватся на красивые графики.. ну так там в дисплей опшенз есть экспорт.. да и принтскрин никто не отменял
Говори что думаешь, думай что говоришь!
Маразм крепчал и скрепы гнулись

Return to “Вопросы и новости IT”