Web 2.0, бесплатные Api, Google Maps, кириллица или одна непростая ночь


    И тут он говорит мне: «Как же это у нас сервис без карт? Это ж не Web 2.0!». Услышав сакраментальное «Web 2.0», я внутренне напрягся. Обычно это означает неделю работы без выходных, для реализации какой-нибудь красивой фигни, увиденной начальством на бескрайних просторах Интернета. Придав лицу умное выражение (и такое бывает), я принялся излагать трудности и опасности разработки приложения для работы с картами. Но мой полет мысли был варварски прерван.

    «Есть же GoogleMaps. Там уже все сделано за нас. У них, я слышал, хорошее Api, к тому же бесплатное. Нужно только прикрутить по-быстрому. Работы-то на пару часов».

    После ключевых фраз «по-быстрому» и «Работы-то на пару часов» я понял, что сегодняшний секс с девушкой накрылся медным тазом. Да и вообще на ближайшие дни моим постоянным половым партнером становится Internet Explorer.


    Задача представлялась довольно не тривиальная, нужно было определить, откуда, из какого города пришел пользователь и отобразить на карте. То есть пользователь, увидев маленький красненький флажок, указывающий на его родимый Суходрищенск, начинает прыгать от счастья и остается на сайте навечно. Также нужно хранить координаты его любимых мест и, соответственно, подсвечивать их на карте.

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

    Дело в том, что пока пользователь вводит данные о своем местоположении, его приходится позиционировать по geoip. Он возвращает координаты, а по ним нужно определить ближайший город и предъявить его. Но чтобы узнать координаты города, мне надо знать его название.

    «Блин. Что же делать?» — сказал я (в литературном переводе).

    Как что? Заранее узнать все координаты городов и сохранить их в базе. Узрев перед собой цель, я обрадовался и даже хотел запеть, но вовремя остановился (нечего напрасно тревожить демонов). Стоит ли говорить, что Google не понимает родные кириллические названия городов – толька по-английски. «Так надо же просто перевести!» — радостно взвыли демоны в моей голове (где-то в половине 1 ночи они сжалились над незавидной программерской долей и взялись помогать). Еще пару часов спустя получилось, что все не так радужно. То ли мои познания в грамматике, у меня, помнится, была 3 по русскому, то ли фаза луны, но автоматически генерировать английское название не получилось.

    «И как же мне решить эту проблему?» — сказал я (нет, правда, я так и сказал: «И как же мне решить эту проблему?»). Мысль использовать какой-нибудь переводчик почему-то пришла не сразу…Через полчаса скрипт был готов. Еще пара минут — и все города переведены.

    Остался последней шаг — получить эти проклятые всеми богами координаты.
    Был написан и запущен еще один скрипт, я уже предвкушаю радость победы и ;%;%*? ММ(%У%;*?) (непереводимая игра слов). Google меня забанил!
    «Наверное, на вашем компьютере завелся вирус». Ну что за фигня?! 20 000 запросов за один раз – нормальное поведение для пользователя. Я вживую быстрее серфю (у меня просто F5 западает, поэтому многие ресурсы думают, что я их досю).

    Воздев руки к небу, я провозгласил: «Почему все добрые вещи нужно делать грязными способами?!»

    Ну, конечно, старый добрый список бесплатных проксей выручил меня и на этот раз.

    И вот (музыка туш) список городов у меня в базе. Громко поздравив себя (в 4 утра все равно в офисе никого нет), я с чувством выполненного долга отправился на поиски еды. Но это уже другая история…

    А, да, совсем забыл. В любой истории должен быть смысл, ну, кроме историй про пятничные пьянки. А смысл в том, что если вы хотите пользоваться бесплатными Api, то приготовьтесь к тому, что всегда придется доводить до ума. Ведь разработчики пишут Api, руководствуясь своей, а не вашей функциональностью. Однако пользоваться благами других стоит. Просто посчитайте, сколько времени нужно писать собственный сервис карт! Тут критерий выбора наверно такой же, как и при выборе сторонних библиотек. Если функциональность ключевая для вашего start up’а, то однозначно пишите ее сами. То есть фотогалерея на базе Flickr вряд ли прокатит, а если это хоть и нужная, но фича, что ж, тогда можно позабавляться с чужим Api.

    И еще, для любого (даже самого полезного и доброго дела) все же необходим список бесплатных proxy.

    Комментарии 73

      +3
      улыбнуло :) как я тебя понимаю ))
        0
        ну взяли бы maxmind базу нормальную по городам УЖЕ с КООРДИНАТАМИ
        http://www.maxmind.com/app/city
        370 USD в год копейки
          0
          насколько мне известно, Maxmindовский GeoIP API не позволяет получать географические координаты по названию региона (т.н. Geocoding). Она возвращает всю информацию только по указанному ей IP-адресу.
            0
            Так, насколько я понимаю, именно такая задача и стояла - отобразить, где находится посетитель страницы.
              +1
              да не совсем. На http://livents.ru при выборе города надо показывать его на гуглевской карте, чтобы пользователь мог указать точное расположение места проведения события.
              0
              вам не правильно известно
              maxmind в нескольких форматах распостраняется
              таже City база может быть в виде SQL дампа (по которому выбирай что хочешь) или CVS файла а не только специально оптимизированного под GeoIP бинарного файла
              естественно что где то придется держать таблицу соответсвий "русские города" "города из maxmind"
            0
            не знаю но на мой взгля гугл сделал большое добро для всех открыв свой апи. а все остальные жмоты.
            ещё в гугле нет посика по москве по номеру дома и названию улицы... и много чего нет, но чего то доделать не проблемма, координаты не проблема утащить из других мест.
            а благодаря гуглу очень много людей могут сделать свой маленький сервис который может многим оказаться полезным...
            скажем написать нечто вроде domnakarte.ru сейчас может любой веб программер. я когда изучал апи какраз и сделал такую вещь. по названию улице и номеру дома маркер сам наносится на карту (но с погрешностью +- метров 300) конечно координаты пришлось доставать оч хитрым способом, но это даже интересно.
              +1
              Так я по моему это и говорю. Используйте Api, только будте готовы немного(или много) помучится, чтобы прикрутить.
              Просто я хотел сказать, что Api - это не "серебрянная пуля" и не стоит думать, что все запустится с пол - пинка.
                0
                кто бы спорил) новот написать с нула в данном случае это..... ну очень дорго и долго)
              • НЛО прилетело и опубликовало эту надпись здесь
                –12
                api в каком роде? Оно мое?
                аффтар, api это не НЛО, это Application Programe Interface. т.е. мужского рода.
                  –10
                  Хотя учитывая данный контекст и тот факт, что аффтар врядли гомо, то возможно и женского рода
                    +4
                    это имеет отношение к теме? нет.
                    садись, троечка.
                      +1
                      http://en.wikipedia.org/wiki/Grammatical…
                      С какой стати Interface мужского рода?
                        0
                        с какой стати "Интерфейс" не мужского рода?
                          0
                          Не "Интерфейс", а "Interface". Какого рода это слово в русском, значения не имеет, поскольку Вы привели англ. аббревиатуру. Вот я и спрашиваю, на каком основании Вы считаете, что в англ. языке это слово мужского рода, а не среднего, например. Вы безапелляционно утверждаете, что это слово мужского рода, Вам это и доказывать.
                            0
                            Текст, приведенный автором на каком языке написан? Извините, если я купил машину в германии, это не значит что я на ней буду ездить по немецким дородным правилам. Ведь так?
                              0
                              Так. Но если Вы будете ездить по правилам своей страны, то и ссылаться следует на них, а не на немецкие. Аналогично, если бы Вы сказали "Интерфейс прикладного программирования", можно было бы ссылаться на род слова "Интерфейс" в русском языке. Но Вы сказали "Application Program Interface", фактически заявив, что из мужского рода (?) слова "Интерфейс" в русском языке следует, что и англ. аббревиатура API также мужского рода.
                                0
                                Погодите погодите. Нет, я конечно согласен с вами в том, что в данном случае с моей стороны было бы правильнее сказать "Интерфейс", нежели "Interface". Однако если я спрошу вас в аське, какая у вас машина, а у вас, допустим, Mitsubishi Lancer Exolution VI, вы же не напишите мне "Митсубиси ланцер эволюшен 6". Ой, нет, даже "Митсубиси ланцер эволюшен шесть", а то не дай бог еще че там с арабскими цифрами не то...
                                Вот, в итоге вы ведь все равно ответите "Mitsubishi Lancer Exolution VI", но это совершенно не означает что ваша машина стоит не у вас под окнами, а в японии в автоцентре. Т.е. русское либо английское произношение не перемещает нас на другой континент, мы по прежнему остаемся в россии, а значит и следуем русским правилам произношения, граматики итп. Или я опять что-то упустил?
                                  0
                                  Не так уж часто заимствованиями можно свободно манипулировать согласно правилам языка. Почему слово "метрополитен" мужского рода, а "метро" - среднего? "Пальто", "кафе" и т.д. перенесены из других языков без изменений, при этом никто ведь не утверждает, что следует их преобразовать согласно правилам языка. Чем же "интерфейс" от них отличается?
                                    0
                                    т.е. с твоих слов "интерфейс" в русском языке имеет средний род?
                                      0
                                      Из моих слов следует, что судить о слове "интерфейс" в русском языке следует из его рода в английском, а не как-либо преобразовывать, исходя из правил русского языка. Если в англ. это слово мужского рода - то и в русском оно должно быть таким, если среднего - то нет никаких оснований его менять.
                                        0
                                        "бизнес" какого рода?? Например, предложение "Бизнес довел меня до белого колена" судя по вашим словам неверно. Ведь это иностранное слово, так? Значит правильно будет "бизнес довело меня до белого колена"???
                                          0
                                          Не нужно передергивать мои слова. Я сказал, что иностранные слова передаются в оригинале. Что всякое иностранное слово среднего рода - это уже Вы придумали.
                                            0
                                            Какого рода тогда слово бизнес?
                                            Погодите, мы разговариваем тут на каком языке?
                                            Неужели вы не слышали выражение "Незнание законов страны, не освобождает от ответственности"?
                                              0
                                              Какое отношение имеет то, на каком языке мы разговариваем, к тому, что всякое иностранное слово по-вашему среднего рода?
                                                0
                                                Я разве сказал что все иностранные слова имеют средний род? Да и какое оношение вообще это имеет к нашему спору?
                                                  0
                                                  Именно так Вы и сказали:
                                                  > Например, предложение "Бизнес довел меня до
                                                  > белого колена" судя по вашим словам неверно.
                                                  > Ведь это иностранное слово, так? Значит
                                                  > правильно будет "бизнес довело меня до
                                                  > белого колена"???
                                                  "Бизнес" очевидно мужского рода, что Вы могли бы узнать, обратившись к любом словарю. Я утверждаю, что если слово "interface" в английском языке среднего рода, то нет оснований заявлять, что "API" мужского рода. Вы же утверждаете, что поскольку слово "интерфейс" в русском языке мужского рода, то _английская_ аббревиатура "API" должна быть также мужского рода.
                                                    0
                                                    Да я не спорю что api среднего рода в _английском_ языке, я говорю что апи (как и английская абривиатура api) в русском тексте имеет мужской род
                                                      0
                                                      Не согласен :)
                                                      Впрочем, больше доказательств найти трудно, поэтому спор имхо потерял смысл. Предлагаю его свернуть :)
                                                        0
                                                        согласен с тем что стоит свернуть спор, но совершенно не согласен с тем, что вы имеете сомнения в моей справедливости ;))

                                                        p.s. ну почему все споры, которые заканчиваются ничьей, всегда пагубно влияют на мою карму...
                                            0
                                            Что за "белое колено"? :)
                                            Может быть, каление?
                                        0
                                        а где написано что "метро" среднего рода!? раньше как раз было "наш метро"
                        • НЛО прилетело и опубликовало эту надпись здесь
                            0
                            а у меня API, как и interface, среднего рода - das Interface :)
                              0
                              Jawohl! =)
                            0
                            про быстрый серф м западшую F5 хорошо
                              0
                              забавно, забавно :) а что за сервис то в итоге получился? где можно посмотреть?
                                0
                                Сервис - http://livents.ru, а посмотреть карту можно например при добавлении события (или при его просмотре)
                                  0
                                  Брутально тормозит =( Сие проблема кода или хоста?
                                    0
                                    Это проблема вообще с потерей пакетов на каком то маршрутизаторе. Мы как раз разбираемся с провайдером.
                                      +1
                                      сегодня возникли проблемы с потерей пакетов на одном из узлов в Питере (сервер физически там стоит). Грустно, но ничего сами сделать не можем.
                                      0
                                      По моему, вам надо его как-то попиарить. Идея отличная, исполнение вроде тоже отличное, но вот пользователей мало!
                                        +1
                                        на самом деле мы уже столкнулись с непониманием пользователей. даже те, которые регистрируются, они не знают что делать с сервисом. скорее всего причина в том, что аналогов в россии нет и не было.. сейчас как раз решаем что именно пользователей не устраивает и как это можно исправить.
                                        0
                                        иди убей свой сервис %) я из ростова-НА-ДОНУ. а он мне показывает Ярославская область > Ростов : Увы, но в этом месте ничего нет. Я ж ахренел. Как? В ростове ничего нет?
                                          0
                                          Так контент создают пользователи. Если в твоем городе ничего нет, просто создай интересное событие. :-)
                                            0
                                            Друг мой, ты не понял меня :)
                                            Я тебе говорю — я из Ростова-на-Дону, а сервис твой показывает, что я из Ростова в ярославской области.
                                        +1
                                        Да, интересно было бы на результат таких мучений взглянуть.
                                        Гы: "20 000 запросов за один раз – нормальное поведение для пользователя" :)
                                          0
                                          понравился стиль :)
                                            +3
                                            Живой и интересный текскт, большое спасибо афтору :)
                                            интересно читать даже ради такого стиля изложения.
                                              +2
                                              странно!

                                              автор предлагает писать самим, да это оправданно в основном,
                                              но речь шла не о коде, а о данных (база городов, база geoip, картографическая база) - ничего из этого сам не напишешь!

                                              данные в каком то виде, полном не полном есть на сайтах .org, просто надо владеть информацией

                                              конкретно вся географическая база(CSV) вплоть до деревни жуковка со 100 жителями
                                              с широтой долготой и кучей имен-синонимов на разных языках
                                              http://www.geonames.org/export/
                                              там же есть и веб сервисы

                                              geoIP найти тоже можно,
                                              например http://www.maxmind.com/app/c
                                              вот http://www.maxmind.com/download/geoip/da…
                                              тут база geoIP для скачивания (работает - сам проверял находятся IP и хосты даже из маленьких российский городов)

                                              сервисов карт также не мало кроме google maps (тот же local.live.com)
                                              перестраховаться всегда можно
                                                0
                                                В geonames.org, к сожалению, кириллические названия не всегда присутствуют. Плюс дубляж населенных пунктов (как и у maxmind), из-за чего морока неизбежна. Но по части всяких веб-сервисов geonames, безусловно, интересна.
                                                0
                                                Интересно читать было. Спасибо за статью :)
                                                  0
                                                  хорошо написано (:
                                                    0
                                                    Слушай, а давай дружить :)
                                                    Надо создать общество, каждый член которого хоть раз видел капчу в поиске гугла после 20000 запросов :) И делиться списками прокси и другими методами лечения этой напасти. А также делиться информацией, как можно быстренько и без гемороя узнать PageRank. И уже со спокойной душой писать любимые web-сервисы на общее благо ;)
                                                      0
                                                      Я всей душой за.
                                                      0
                                                      Хммм...молодец, что разобрался как прикрутить...тока че то как то неопрятно получилось....что ль в окошечке рядом где нить разметил бы, а не поверх. А то у всего ресурса дизайн вроде прикольный.....а это поверху как то нехорошо получается. Вопрос по ходу..а это случаем не на базе Community Server запущено??..или свое что то писали?
                                                      + еще есть такой скользкий момент по поводу секретности...это уже обсуждали в ветке по поводу снимков Яндекса...вроде как уже и можно и несколько людей сказали "А"..но регулирующего документа нет....поэтому я на месте владеющих порталом людей.....все же подумал....а стоит ли оно того...с другой стороны..если им можно..почему мне нельзя..
                                                        0
                                                        Можно было использовать список городов из Википедии, российские там есть все, причём с координатами и вариантами названий на нескольких языках.
                                                          0
                                                          Однако пользоваться благами других стоит.

                                                          Я сначала прочитал как "пользоваться багами других"... что-то в этом есть, определенно :)

                                                          А вообще, хорошая статья, живая такая )
                                                            +2
                                                            Ага, хотел я разок доброе дело сделать - помочь девушке выиграть онлайн конкурс красоты.
                                                            Подход такой же: список прокси + чекалка + curl.
                                                            Админ почуствовал, что что-то не так, только когда браузер с гордым именем "electronika-1.0" обогнал у него в статистике Оперу.
                                                              +1
                                                              Отличнейший сервис получится! Действительно очень интересный. Сам страдаю с API на http://geocaching.in.ua, должен отметить, что API у гугла, в принципе, доступно и не программисту.
                                                                0
                                                                Гаси гугл, а то верстальщики и дизайнеры работу отберут.
                                                                  0
                                                                  Вынужден вас огорчить, дорогой хабрачеловек. В нынешний век высоких технологий и с нынешним уровнем доступности технологий участие программистов, дизайнеров и верстальщиков не всегда нужно для создания чего-либо. Я, к примеру, простой радиоинженер.
                                                                  0
                                                                  Пользователи на карте - это здорово! Давно хочу сделать подобный сервис, но пока руки не доходят.
                                                                  0
                                                                  Спасибо, хорошая история :) Тоже собираюсь освоить их api, но пока провел только первое знакомство.
                                                                    0
                                                                    Приятная статья - вообще очень мало имхо статей из процесса разработки. о успехах сколько угодно трубят - а вот чтобы ктото описал как имался реально с чемто - редко.
                                                                      +1
                                                                      поддерживаю, у нас в России довольно много успешных проектов (moikrug, vkontakte, rutube и т.п.), думаю, что разработчикам есть о чем рассказать.

                                                                      или они настолько заняты процессом написания кода, что им просто некогда?
                                                                      0
                                                                      забавные вы, программисты; спасибо за статью, с утра позитив - всегда бы так :)
                                                                        0
                                                                        «секс с ДЕВУШКОЙ» - важное уточнение :)
                                                                          0
                                                                          что-то слишком грамотно написано, для трояка-то по русскому :-)
                                                                            0
                                                                            Ну вообще - то там была 4, но ставили толко за умение писать интересные сочинения. Обычно учительница делал исправлнеия карандашом и отдавала мне. Я исправлял и сочинение отправляли на какой - нибудь конкурс. Руский язык довольно сложный не то что Php :-)
                                                                          • НЛО прилетело и опубликовало эту надпись здесь

                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                            Самое читаемое