Anonymous | Login | Signup for a new account | 23-11-24 23:15 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0001841 | SACS.Планета | [All Projects] Хотелка | public | 01-03-2013 06:29 | 09-08-2013 15:13 | ||||
Reporter | vasketsov | ||||||||
Assigned To | vasketsov | ||||||||
Priority | high | Severity | minor | Reproducibility | N/A | ||||
Status | closed | Resolution | fixed | ||||||
Platform | Windows | OS | Vista | OS Version | Ultimate | ||||
Product Version | |||||||||
Target Version | Fixed in Version | 130803 | |||||||
Summary | 0001841: Реализовать возможность использования ScriptControl | ||||||||
Description | Подключить ScriptControl для унифицированного запуска скриптов на разных скриптовых языках. | ||||||||
Additional Information | http://msdn.microsoft.com/en-us/library/aa227400%28v=vs.60%29.aspx | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | PerlScriptText.rar [^] (652 bytes) 01-03-2013 17:45 mobile.yandex.zmp.zip [^] (5,616 bytes) 03-03-2013 17:03 mobile.yandex.zmp.rar [^] (3,488 bytes) 05-03-2013 10:13 | ||||||||
Notes | |
(0010756) vasketsov (manager) 01-03-2013 17:45 |
Чтобы потестить: 1. В params.ini надо добавить что-то типа: [ScriptControl] Filename=PerlScriptText.txt NeedSync=1 Language=PerlScript Function=sas_main InputParamNames=x,y,z,q 2. Создать файлик PerlScriptText.txt с содержимым типа приаттаченного (там пример для ч/б нокии) и кинуть его в zmp. |
(0010757) vasketsov (manager) 01-03-2013 17:49 |
По поводу параметров: xy - тайловые координаты z - зум (от 1) q - quadkey v - version Порядок параметров любой, но должен соответствовать скрипту, обязательных параметров нет. Имя функции любое (лишь бы она была в скрипте). Файл скрипта должен быть с расширением txt. |
(0010758) zed (manager) 02-03-2013 04:48 |
Это типа альтернатива GetUrlScript? Или что куда вообще? |
(0010759) vasketsov (manager) 02-03-2013 07:26 |
GetUrlScript можно переименовать, чтобы туда не лазило. Хотя по идее задумано, что если указано [ScriptControl] и есть файлик - паскальскрипт для этой карты не используется. Скрипт (функция в нём, с именем из Function) должен получать параметры, указанные в InputParamNames (в примере x,y,z,q, пусть даже первые три и не используются, их можно и убрать, но оставлено, версии тут нет). Чё-то я не подумал, что дефолтный урл из zmp (из params.txt) тоже можно пропихнуть, надо будет сделать. Функция возвращает либо код ошибки (как int, если надо - можно добавить и заголовки, но придётся смотреть длину массива и типы значений), либо массивчик значений типа кода статуса http, длины ответа, заголовков, собственно ответа, типа контента, там в примере скрипта это прокомментировано. Вернуться должен variant array. Качает тайл и делает всё прочее нужное скрипт сам. Возвращение из скрипта одного строкового параметра зарезервировано для информирования саса о том, что требуемый тайл уже скачан и лежит там-то, соответственно в этом случае из скрипта передаётся полный путь, и далее логика ровно та же самая, как я делал для протокола file:// - тип контента, размер и тело берётся из файла, то есть тут ничего больше передавать не надо. Как а) писать на других языках и б) что указывать как Language (PhpScript или VBScript или JScript какой) скорее всего я не подскажу, первое их апологетам известно лучше, второе скорее всего можно найти по ссылке на msdn выше (или вообще примеры в инете). |
(0010783) zed (manager) 03-03-2013 17:05 |
Приаттачил zmp - почему-то выскакивает InternalError, хотя сам скрипт из командной строки работает нормально. |
(0010788) vasketsov (manager) 04-03-2013 11:10 |
>почему-то выскакивает InternalError Ага, есть такое, с моим приаттаченным тоже бывает. Иной раз скачаешь пяток тайлов - на 6-й раз вылезет, перекачиваешь тайл - нормально скачивает (причём там если синхронизация - используется критическая секция, так что по двое никто никуда не пролезет). Где-то что-то кривится внутри ScriptControl похоже, или сборщик мусора какой-нибудь гадит. Потому и взял попробовать ещё ActiveScript. |
(0010790) zed (manager) 04-03-2013 16:34 |
>Иной раз скачаешь пяток тайлов У меня ещё печальнее - ни одного тайла скачать не получается... |
(0010791) vasketsov (manager) 04-03-2013 18:08 |
Пописал ScriptControl: 1. Добавил CoInitialize. 2. Параметры скрипта убрал из экземпляра и сделал на стеке как VarArray. У меня эта ошибка пропала. Даже в режиме кэш+интернет нокия стала грузиться )). Так что поверяй. ps. Правда я так и не рискнул пока что многопоточно через ScriptControl качать. Вариант с ActiveScript недоковырен, там надо Invoke сделать (чтобы функцию с параметрами позвать), но если реализация с ScriptControl заработает и будет устраивать по скорости и надёжности - забью и выпилю ActiveScript. |
(0010793) zed (manager) 04-03-2013 19:03 |
Выдало ту же ошибку и всё остановилось. Но судя по сниферу, один тайл таки скачать умудрилось. Глянь скрипт опытным глазом? Я в perl не силён, может крепко нахомутал чё. |
(0010794) vasketsov (manager) 04-03-2013 20:21 |
Я пробовал поглядеть - из того, что в глаза бросилось - это \? (зачем там \ не пойму) да вызов функции ym_get_boundary без параметров и без скобок (чего перл не любит в зависимости от фазы луны). Больше ничего не углядел, но особо и не ковырялся. Убрал \ и добавил скобки - не полегчало, где-то что-то хитрее. Сделал ActiveScript - так он у меня и на нокии работает А на твоём яндексе всё то же InternalError. Чую где-то там косяк, отлаживаться надо... А вообще погляди у себя какие есть парсеры. Это смотрится в реестре по разделам вида: HKEY_CLASSES_ROOT\PerlScript\OLEScript HKEY_CLASSES_ROOT\VBScript\OLEScript может есть HKEY_CLASSES_ROOT\PhpScript\OLEScript например или HKEY_CLASSES_ROOT\JScript\OLEScript Не PerlScript-ом же единым... |
(0010795) vasketsov (manager) 05-03-2013 10:21 |
Загрузил mobile.yandex.zmp.rar - вот так работает. Что называется найдите 10 отличий ))) Вырезал всё и кусками назад затаскивал. Из важного - перенёс UserAgent и сделал KeepAlive. Короче говоря через ScriptControl пашет, лажается у меня 1 тайл из нескольких десятков. А вот через ActiveScript валится чаще. Переделал в общей ini-шке [ScriptControl] UseScriptControl=1 если 1 - ScriptControl, если 2 - ActiveScript, по умолчанию 0 - ничего. |
(0010796) vasketsov (manager) 05-03-2013 10:49 |
Ещё б придумать как отладочные сообщения при загрузке скрипта при работе из-под Delphi придушить... |
(0010806) vasketsov (manager) 05-03-2013 13:23 edited on: 05-03-2013 13:37 |
Если кому будет интересно: Для php (ActivePHP) тут: http://pecl.php.net/package/PHPScript As of PHP 5.0.1, ActiveScript has been moved to the PECL repository. The DLL for this PECL extension may be downloaded from either the PHP Downloads page or from http://pecl4win.php.net/ Но можно забрать отсюда http://museum.php.net/php4/ в версии php-4.4.9-Win32.zip Для perl (PerlScript) ставится сразу при установке ActiveState ActivePerl (там же есть активный питон, но мопед не мой...) VBScript и JScript есть сразу |
(0010808) zed (manager) 05-03-2013 17:21 |
Походу этот InternalError только под дебагером вылетает, потому как обычная дебажная версия с EurekaLog качает исправно и без ошибок. Спасибо за фиксы! >Ещё б придумать как отладочные сообщения при загрузке скрипта при работе из-под Delphi придушить... Не встречал таких. Что за сообщения? А вообще, конечно, фигово, что исправно работающий скрипт может глючить через этот ScriptControl. Когда я встраивал php, помницца, таких проблем небыло. Так что может быть и стоит возродить его из пепла, тем более, что для работы там требовалась всего одна dll без какой-либо необходимости регистрации её в системе. |
(0010810) vasketsov (manager) 05-03-2013 20:20 |
>Что за сообщения? Ну OutputDebugString которые, когда из-под delphi запускаешь - внизу в окно валятся, типа DLL заружена, поток создан-убит, так вот при загрузке скрипта туда столько валится, что время запуска саса из-под delphi заметно увеличивается. >фигово, что исправно работающий скрипт может глючить через этот ScriptControl ну не сказать что уж прямо сильно глючит ))) скорее это можно охарактеризовать как "полная задница с обработкой информации об ошибках". >качает исправно и без ошибок У меня возникла мысль, что ошибка может быть из-за того, что в рабочем потоке не выполнено CoInitialize. Ну не будешь же перед запуском скрипта каждый раз её выполнять ))) а вот при ошибке оно каким-то макаром инициализируется, соответственно тот workaround, который я сделал для пустого ответа из скрипта - и отрабатывает. По крайней мере по косвенным признакам это так (не более 1 ошибки при однопоточном доступе, повторно отрабатывает верно). >может быть и стоит возродить его из пепла Так погляди, может и стоит. В принципе ничего универсальнее не сделаешь, но если будет выигрыш в надёжности или скорости - будет замечательно. |
(0010837) vasketsov (manager) 07-03-2013 12:00 |
Пока что рекомендуется использовать ScriptControl. Но ActiveScript не вырезан (и в частности доступен для тестирования и допиливания). Если надо будет в скрипты пропихивать объекты из саса, добавить параметры, что-нибудь изменить - пишите отдельными тикетами. А этот работает - и ладно. |
Users who viewed this issue | |
User List | Anonymous (2616x), StarvinMarvin (1x), iceon (1x) |
Total Views | 2618 |
Last View | 23-11-2024 23:15 |
Issue History | |||
Date Modified | Username | Field | Change |
01-03-2013 06:29 | vasketsov | New Issue | |
01-03-2013 06:29 | vasketsov | Status | new => assigned |
01-03-2013 06:29 | vasketsov | Assigned To | => vasketsov |
01-03-2013 17:45 | vasketsov | Note Added: 0010756 | |
01-03-2013 17:45 | vasketsov | File Added: PerlScriptText.rar | |
01-03-2013 17:49 | vasketsov | Note Added: 0010757 | |
02-03-2013 04:48 | zed | Note Added: 0010758 | |
02-03-2013 07:26 | vasketsov | Note Added: 0010759 | |
03-03-2013 17:03 | zed | File Added: mobile.yandex.zmp.zip | |
03-03-2013 17:05 | zed | Note Added: 0010783 | |
04-03-2013 11:10 | vasketsov | Note Added: 0010788 | |
04-03-2013 16:34 | zed | Note Added: 0010790 | |
04-03-2013 18:08 | vasketsov | Note Added: 0010791 | |
04-03-2013 19:03 | zed | Note Added: 0010793 | |
04-03-2013 20:21 | vasketsov | Note Added: 0010794 | |
05-03-2013 10:13 | vasketsov | File Added: mobile.yandex.zmp.rar | |
05-03-2013 10:21 | vasketsov | Note Added: 0010795 | |
05-03-2013 10:49 | vasketsov | Note Added: 0010796 | |
05-03-2013 13:23 | vasketsov | Note Added: 0010806 | |
05-03-2013 13:25 | vasketsov | Note Edited: 0010806 | View Revisions |
05-03-2013 13:33 | vasketsov | Note Edited: 0010806 | View Revisions |
05-03-2013 13:37 | vasketsov | Note Edited: 0010806 | View Revisions |
05-03-2013 17:21 | zed | Note Added: 0010808 | |
05-03-2013 20:20 | vasketsov | Note Added: 0010810 | |
07-03-2013 12:00 | vasketsov | Note Added: 0010837 | |
07-03-2013 12:01 | vasketsov | Status | assigned => resolved |
07-03-2013 12:01 | vasketsov | Resolution | open => fixed |
09-08-2013 15:00 | vasketsov | Fixed in Version | => 130803 |
09-08-2013 15:13 | vasketsov | Status | resolved => closed |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |