Клуб API Карт

30 комментариев
Подписаться на комментарии к посту

Неужели разрабочики не предусмотрели такой простой и стандартной возможности - получить версию используемой либы ?

А расскажите, пожалуйста, зачем вам такая функциональность?

Чтобы собственно знать, какая версия api работает (иметь возможность отображать это в приложении и прочее). 

К примеру, на днях возникла ситуация с картами гугла - перестали работать в ie, неожиданная ошибка в уже годами работающем скрипте. В процессе диагностики и поиска решений функция получения реальной загруженной для работы версии api очень помогла.

Зафиксируйте версию в URL подключения API в таком случае.

Фиксация версии в url и возможность получения версии api в коде - вещи разные.

Я зафиксирую 1.1 (так, кстати, и есть), а реально она будет 1.1.0.2, к примеру. Что мне мешает просто и адекватно узнать, какая версия работает ? Пока только отсутствие такой функции в api... Вообще странно - простейшая вещь, а не предусмотрена.

Мы никогда не заменяем версии 2.x апи в продакшене.

Прекрасно. Но дело не в замене, фиксации и прочее.

Дело - в простой функции получения версии.

В содержимом, загружаемом по начальной ссылке api, есть такие вещи:

        var YMaps = {location:{...........................}};
        (function () {
var Internal = {
                    MapData: {
                        scheme: 'https:',
                        token: '...........',
                        userKey: '.................',
                        versionPath: 'https://api-maps.yandex.ru/1.1.21/',

 

Подскажите, плиз, как вытащить versionPath ?

Зачем???
Подключите напрямую 1.1.21

Вы не знаете как "вытащить" ? Ну так просто скажите об этом - будет ясно и определенно, зачем давать подобные советы...

Я руководитель разработки API, если что.
Публичного способа вытащить версию нет не просто так, а потому, что мы не видим, какие кейсы эта функциональность решает.

Если вы нам их расскажете — мы подумаем над включением версии в публичное апи.

 

Я руководитель разработки API, если что.

Какое грозное "если что". Я должен испугаться ? Или сделать вид, что получив на вопрос "Как пройти в библиотеку ?" ответ "Да кому нужна эта библиотека!", я получил логичный профессиональный ответ ?

Резон функции получения версии - простой способ программно узнать версию. В том числе для того, чтобы не бегать по ссылкам страниц с хистори и прочее.

Кстати, слово "Вы" при личном обращении пишется с большой буквы, многоуважаемый Руководитель. Грамотность все же нужна всем, в отличие от функции получения версии...

> Какое грозное "если что". Я должен испугаться ?

Я просто уточнил, во избежание недопониманий.

> ответ "Да кому нужна эта библиотека!", я получил логичный профессиональный ответ ?

Да. API делается на основании понятных юз-кейсов. Есть юз-кейс — есть функциональность. Нет кейса — нет функциональности.

> Резон функции получения версии - простой способ программно узнать версию.

Это понятно. Неясно, зачем такой способ нужен.

> Кстати, слово "Вы" при личном обращении пишется с большой буквы, многоуважаемый Руководитель.

Только в личной или официальной переписке, к которой общение на форуме никак не относится.
http://www.gramota.ru/spravka/letters?rub=rubric_88

> Это понятно. Неясно, зачем такой способ нужен.

Вот ранее предлагалось "зафиксировать версию". Ок, фиксируем, т.е. прописываем нужное в урле. Внимание, вопрос: как просто и наглядно убедиться в том, что загрузилась и работает именно необходимая мне версия ? И не нужно о паранойе и прочее... Вот есть желание проверить. И именно на этапе работы скрипта. Как быть ? Качать и парсить данные по базовому урлу в поисках всяких заветных служебных полей, а также "железную логику" типа "раз работает - значит оно", прошу не предлагать...

Я и не предлагаю. Я пытаюсь понять, зачем вам нужно программно это знать. Какой юз-кейс использования. «Просто хочу» — этого недостаточно для того, чтобы добавлять новую функциональность в api.

Я же написал выше - для проверки, что работает нужная мне версия, которую я явно зафиксировал в урле, что случайности и прочее исключены. Как быть ? Я не имею право удостовериться простым и надежным способом, что работает именно то, что я "заказывал" ?

Зачем?
Чтобы что?
Ну вот вы проверили скриптом, версия не совпала. Дальше что?

Программа пишет электрическое письмо специалисту с пометкой "все пропало, потому что...". Примерно так. Далее - диагностика и лечение.

Если функциональность вашего сервиса не изменилась — зачем вам ложные срабатывания.

Если же вы хотите обработать возникающие на сервисе ошибки — для этого пишутся автотесты.

Сейчас версия 2.0-stable приходит в релизе 2.0.39. Так ?

К примеру, нет желания фиксировать релиз версии апи, только мажор и минор - ведь идет развитие и оптимизация (надеюсь :)), выходят новые релизы. Вы гарантируете, что с выходом нового не отвалится старое ? Думаю, что реально - нет. К "да" вы стремитесь, и это хорошо. Но практически - нет.

Вот хотя бы в этих услових возможность узнать YMaps.Version была бы очень кстати. К слову, гугл вот "навозил" с версией 3.19 (сейчас и 3.20 с тем же багом), помогла как вариант (один из нескольких) фиксация на 3.18, причем в самом процессе анализа и решения очень помогла возможность получить google.maps.version - люди делились вариантами базовых ссылок с фиксацией версии без указания релиза, причем у них все работало, вот выяснить "что приходит" (а значит - что на самом деле реально работает) и помогла обсуждаемае фича.

> Вы гарантируете, что с выходом нового не отвалится старое ?

Гарантируем.

> К слову, гугл вот "навозил" с версией 3.19 (сейчас и 3.20 с тем же багом), помогла как вариант (один из нескольких) фиксация на 3.18, причем в самом процессе анализа и решения очень помогла возможность получить google.maps.version.

Я понимаю этот аргумент. Я не понимаю, зачем вам нужна *программная возможность* это сделать. Вот есть клуб, в нем пишутся все сообщения об обновлениях версий. Писать свой хук в js с отправкой писем когда удобнее-то стал?

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

 

Программное определение версии открывает пути обхода некоторых ограничений, которые мы считаем важными.

С этого и нужно было начинать. И этим же все бы и закончилось.

А то "никому не нужно", "ничего полезного"...

Почему же. Мы бы не делали эту функциональность даже если бы и не было таких соображений. Нет кейсов — нет разработки. Любое публичное поле в апи чего-то стоит в разработке, тестировании и поддержке.

О, как все оптимально и фиансово строго просчитано !

Но ведь с самого начала вы знали, что "Программное определение версии открывает пути обхода некоторых ограничений, которые мы считаем важными.".

И полчается, что вся наша беседа, начавшаяся с вашего вопроса "А расскажите, пожалуйста, зачем вам такая функциональность?" - не более, чем развлечение, щедро оплаченное владельцами Яндекса, учитывая драгоценность вашего рабочего времени.

:-)

Вы почему-то предполагаете, что мне неинтересны ваши аргументы. Разумеется, интересны. Я просто констатирую факт, что ваш кейс в нормальной ситуации должен решаться иначе и смысла в автоматизированной проверке версии нет.

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

Сразу же приходят на память классические строчки великого поэта про "жалкий лепет оправданья".

Коль уж вы постоянно норовите угадать мои мысли (что я думаю "на самом деле" и прочее), я попробую сделать то же, причем у меня действительно это получится.

Мы с вами прекрасно знаем, что обсуждаемую фичу вы не добавили бы никогда, учитывая "Программное определение версии открывает пути обхода некоторых ограничений, которые мы считаем важными.". Мы так же прекрасно с вами знаем, что вся эта тирада про "клуб" и "интересы пользоватлей" - не более чем документальный стандартный отмаз перед возможно читающим форум начальством.

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

Говорить всегда нужно прямо и по делу. А не вилять, как маркетанская лодка. Это вам пожелание на будущее.

Успехов.

При этом вы предполагаете, что ошибки в промышленном софте Яндекса случаются чаще, чем в вашем кустарном не покрытом тестами?

У вас странная логика. Почему я должен такое предполагать ?

Если же вы верите в абсолютную непогрешимость Яндекса как компании-разработчика, смело гарантируя полное отсутствие багов - это уже не ко мне. Тут довольно широкий разброс необходимых специализаций - от богослова до психиатра. :)

Успехов.

ForkUnderCurveKernelU
25 марта 2015, 07:40
Да. API делается на основании понятных юз-кейсов. Есть юз-кейс — есть функциональность. Нет кейса — нет функциональности.

Вот Вам юз-кейс: как меня расстроили в саппорте - вырезать с карты копирайт и переместить его за карту (под неё к примеру) - нельзя, но из-за особенностей вёрстки процентов 80 копирайта скрыто. Я не хочу оставлять всё так (не нужны проблемы), а в классах указана версия api (.ymaps-2-1-22-copyright__logo-cell - версия 2.1.22), так вот, выйдет новое апи, заменим, и всё, старый скрипт не работает, а он нужен, чтобы подвинуть копирайт таким образом, чтобы был виден, но для этого мне (или кому-то другому) придётся лезть в сурсы и искать и править - что есмь bad practice! Это кейс из реальной задачи.

Во всех адекватных библиотеках, которые писались сознательными людьми, есть получение версии - это вещь, которая может понадобится для таких целей, которую нельзя предугадать. Не сочтите, что я хочу назвать команду разработчиков API несознательными, но кто-то там такой точно есть - Вы, к примеру, если считаете, что если не придумали, как использовать версию - значит она не нужна.

Прошу прощения, если мой тон слишком груб

В саппорте вам ответили совершенно верно: модифицировать копирайты НЕЛЬЗЯ. Это требование правообладателя. Мы не собираемся нести юридические риски из-за дизайна вашего сайта, извините.