Pull to refresh
54
0
Корзунов Антон @kashey

javascript, webgl, maps, react, орфография(нет)

Send message

Скажи мне, где ты, и я скажу тебе, где ты

Reading time7 min
Views24K
В подмосковном Подольске, в микрорайоне Силикатная-2, есть один лайфхак — когда на дворе уже 9 вечера, и пиво в магазинах уже не продают — достаточно просто перейти дорогу, чтобы его купить. Через дорогу Москва — в ней желаемое до 11 найти можно.

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

Исторически на этот вопрос отвечает «обратный геокодер»(reverse geocoder). Он важная часть практически всех картографических АПИ — Google, Яндекс, и даже OSM. Но в большинстве случаев его ответ предназначается человеку, и содержит исключительно текстовое описание локации.

Это-не-технологично! И уж точно непрактично. Esosedi, кушали этот кактус пару лет, а потом просто сделали свой обратный геокодер. Главное как и зачем.

Совсем недавно на хабре искали Смерть Кащееву (nested set и вложеность административных рубрик), ходили по районам(отображение данных регионов на карте), и (не)попадали на счетчик Яндекса (прямой геокодер). А теперь разберем, что такое обратный геокодер, и зачем он нужен. А потом разберем механики его работы.
Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments16

Как найти себе место на земле и не попасть на счетчик Яндекса

Reading time5 min
Views40K
… эта история началась давным-давно в далекой-далекой стране Краковия, чьи жители беспечно проживали свои жизни и не знали…

Но сам я местный, и сегодня расскажу вам страшную историю, о том, что мешало спать (лично мне) долгие годы. И это не налоги (с ними все нормально), это — геокодер Яндекс.Карт!
Геокодер — это один из HTTP-сервисов Яндекс.Карт, получающий в запросе текстовое представление адреса и возвращающий в ответе найденные на его основании объекты. Либо наоборот: получающий координаты и отвечающий адресом.

Именно геокодер подскажет, где на карте находится чудная страна Краковия. И именно он будет главным героем этой истории, завязка которой была описана совершенно в другой книге — в древнем фолианте Пользовательское соглашение API Яндекс.Карт. Легенда гласит, что существует ограничение на количество запросов к функции геокодирования. Максимально допустимо делать в сутки не более 25 000 запросов к HTTP и JS геокодеру в сутки. Или овсянка, сэр.

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



Что делать? Для наглядности достанем из кустов рояль — 8 лет назад на Хабре засветился проект «еСоседи» — «Карта интересных мест». Все эти годы я продолжаю работать над ним.
Читать дальше →
Total votes 46: ↑37 and ↓9+28
Comments9

Районы… Кварталы…

Reading time3 min
Views37K
Совсем недавно на хабре была статья от AirBnb — «Создавая карту мира». Хорошая и красивая статья про административное деление мира. Один минус — у статьи один комментарий, и то мой.
Пользуясь случаем проведу опрос — хотели ли бы вы такую карту административных делений?
А то она у меня есть:



Вы наверное замечали, что Google.Карты умеют подсвечивать контура городов. С недавнего времени такое есть и на Яндекс.Картах. Мало кто знает, что геометрия есть и на eSosedi.

А вот когда такая возможность появится на вашем сайте — теперь зависит только от тебя %username%.

Для достижения эффекта достаточно зайти на data.esosedi.org или GitHub, ознакомиться с документацией библиотеки osmeRegions и начать использовать.

P.S.: 3 признака того, что год минувший все сделал красиво: 1. Районы 2. Кварталы. 3. Детализация до «Жилые массивы» доступна для некоторых городов.
Читать дальше →
Total votes 29: ↑25 and ↓4+21
Comments24

Где смерть Кащеева?

Reading time7 min
Views30K
Привет ребят, давайте для начала проверим вашу память. Итак:
«На море на океане есть остров, на том острове дуб стоит, под дубом сундук зарыт, в сундуке — заяц, в зайце — утка, в утке — яйцо» в яйце игла — смерть Кощея!

А теперь, внимание, вопрос — как это формализовать?
Как приатачить к яйцу иголку и какова временная сложность детача смертии моей. Как перенести сказку в быль, как это выглядит на B-деревьях и почему на самом деле нет разницы между 2D и 1D.
А было все так: давным давно, в неком царстве, некотором государстве, на одном сервисе с шейрингом геолокации очень захотелось Иванушке Дурачку на уровне ЧПУ разделить Москву(/RU/MOW/) и Область(/RU/MOS/). И вообще навести порядок, чтобы все лежало по полочкам красиво и по алфавиту. Но не получалось ему сокровища свои посчитать, и аккуратно разложить. А Василису, хоть и дурак, к сбережениям не пускал.
Но решение было найдено.
Совсем недалеко над каким-то златом успешно чах Чахлик, еще и смерть он свою прятал по науке.
И если задача определения региональной (точнее полигональной) принадлежности некой иголки к некому сундуку выходит за рамки данной статьи, то нам ничто не мешает погрузиться в глубины зайца и посмотреть как он устроен на табличном уровне.
PS: и не спрашивайте почему зайца.
Читать дальше →
Total votes 26: ↑20 and ↓6+14
Comments8

W for Wikipedia

Reading time11 min
Views14K
Что такое «BigData»? Это те данные, которые нельзя просто так переварить. Или нельзя просто так приготовить. Или это вы думаете что нельзя.
Особо сильный «перекос», в этом понимании бигдаты спрятался в web-картографии, в картах на различных сайтах.
И так уж получилось — на протяжении нескольких лет я катался по различным конференциям, и рассказывал про организацию передачи данных с сервера на Карту. Иногда меня спрашивали — «а где же взять эти ваши много данных».
Это не правильные вопросы, правильные вопросы это:
— как данные хранить
— какие данные, когда и почему передавать на клиент
— что такое серверная кластеризация, как она выглядит и почему она нужна
— что с данными делать
— и зачем это все нужно %username%

А насчет откуда взять данные… Есть один такой детский стишок

Весь покрытый метками
Абсолютно весь
Остров Википедии
В океане есть


И на этом острове растет примерно десять миллионов геотегированных статей, которыми мы и воспользуемся.
Но с флорой и фауной там не все так просто — статьи растут на разных языках, в разных местах, и их на само деле много…
Поэтому мы, как настоящие герои, немного усложним задачу и добавим немного агрегатных функций, Левенштайна, Мorton кодов, esosedi и немного здравого смысла.

Поехали!
Total votes 33: ↑29 and ↓4+25
Comments7

Кешируем статику

Reading time4 min
Views36K
Существует мнение, что nginx — отличный инструмент для отдачи статики.
Есть статьи, где описываются настройки sendfile или aio для «улучшения» отдачи.
На Хабре есть чего почитать о настройке proxy_store с proxy_cache для минимизации проблем со стороны мозгов сайта.
Еще в QA иногда возникают вопросы про кеширование картинок, например.
Зачем заниматься этой ерундой! — говорят опытные пользователи — OS лучше вас знает как кешировать файлы! С кешем и префетчем в современных OS, точнее FS, проблем нет! Зачем плодить свои кеши и списки популярных материалов и все такое?...

Есть только одно вредное «но» — в среде исполнения nginx (в общем случае Linux) понятие "файл" и вообще «файловая система» — просто понятие.
И однажды, когда я, подмонтировав сервер по sshfs, обновил один скриптик, случилось волшебное:
1. На каждой страничке стало на 4 картинки больше.
2. Сервера сдохли.

Что поделать — картинки хранились на glusterFS. Наступил полный FUSE.
Читать дальше →
Total votes 34: ↑30 and ↓4+26
Comments23

еСоседи — три года спустя

Reading time5 min
Views2.9K
eSpsedi Три года назад произошло одно событие, которое мне до сих пор не дает покоя.
Три года назад хабр помог мне сделать eSosedi относительно популярным сайтом.
И про эти три года я и хочу немного рассказать.
Читать дальше →
Total votes 116: ↑103 and ↓13+90
Comments50

Конфетки для Валерки

Reading time3 min
Views3.4K
конфеткаВы никогда не сталкивались с проблемой как объяснить человеку, неиспорченному общением с железным другом, азы программирования?

Так уж получилось, что мы, работая в компании ГдеЭтотДом (я и anei), относительно часто ходим обедать в МуМу. Остаток от обеда обычно представляет собой фирменную конфетку. Которую мы не едим — вот такое несоответствие типов.

Но мы нашли выход, скармливая их Валерке.
Я, честно говоря, не знаю, причем тут программирование, Валерка и конфетки, но, в общем, однажды…
Подходит Александреску к Валерке и говорит:
Читать дальше →
Total votes 245: ↑201 and ↓44+157
Comments208

css Rotate. Возможен и в IE

Reading time2 min
Views14K
Буду краток.
css свойство transform:rotate в ИЕ не доступно.
Но все знают что есть фильтр progid:DXImageTransform.Microsoft.Matrix, который конечно поворачивает изображение. Но скажем так не совсем правильно.
99% статей про использование этого фильтра содержат примерно такую фразу.
filter: матрица трансформации
left:?
right:?
*ps: left и right находятся эмпирически

На самом деле это не так.
Читать дальше →
Total votes 54: ↑46 and ↓8+38
Comments30

Старые карты по новому

Reading time9 min
Views4K

Порядка 4х месяцев назад мы решили немного обновить карты. Это, вроде бы как, один из разделов на который мы сильно обращаем внимание пользователей.
Это случилось 4 месяца назад, но только сегодня мы, Евгений johnny_palec Емельянов и Антон kashey Корзунов хотели бы рассказать историю создания сервиса «На карте» портала gdeetotdom.ru. В чем-то мы были первопроходцами, в чем-то догоняющими, но в любом случае граблей было собрано немало, а в конечном итоге получился уникальный в своем роде сервис (не слишком заметно, что мы им гордимся?).
Своими изысканиями, ошибками и находками мы и хотели бы поделиться с сообществом хабра-веб-разработчиков. Но, обо всем по порядку.
Читать дальше →
Total votes 11: ↑8 and ↓3+5
Comments9

Я разрежу тебя на тайлы. Часть первая

Reading time5 min
Views11K
image Несмотря на все мои попытки к исправление ситуации с технологиями загрузки данных на карту, люди все продолжают и продолжают работать по старинке, загружая либо все данные вьюпорта при малейшем движении карты, либо просто загружая все данные вообще.
Покуда метры направления растеризует маркеры в картинки, строят супер системы группировок и кластеризаций и дрожат над каждым лишним килобайтом в скриптах, давайте я расскажу самый простой, стабильны, и банальный способ сделать жизнь свою, своих пользователей, своих карт и своего сервера чуть прекрасней.
Как будет сказано чуть позже покорение карт состоит из 5ти шагов.
Первый из них это загрузка карты( не все так просто как думается ), а вот второй — это загрузка на эти самые карты данных.
Он то нам и интересен.
Читать дальше →
Total votes 60: ↑43 and ↓17+26
Comments11

Когда-нибудь мы опишем весь мир

Reading time3 min
Views3K
wiki
Так уж получилось, что живем мы на одной планете. Мелочь, но, честно говоря, приятно.
И, вместе с нами, на бедном шарике живут еще толпы народа.
Описанием мест их обитаний и занимается проект Wikimapia.
И покуда другие люди плачутся по потерянной «классике» давайте посмотрим на причину их слез — на бету викимэпии( которая уж два месяца как не бета) и, быть может, опишем весь мир
Читать дальше →
Total votes 46: ↑39 and ↓7+32
Comments38

Поиграем в CacheGraph?

Reading time3 min
Views675
imageПредположим у Вас есть сайт. Предположим вы его оптимизировали по самое «немогу», но всеравно хочеться больше.
Лично мне хотелось, но долгое время не получалось.
Когда я победил тормознутость базы кэшированием запросов, тормознутость блоков — кэшированием блоков, а целые страницы кэшировать я не мог…
Cайт конечно стал работать много быстрее, но начал тормозить уже… мемкэшед?
Читать дальше →
Total votes 69: ↑61 and ↓8+53
Comments24

Позвонило МВД

Reading time2 min
Views917
еСоседи
Жили били соседи поживали, посетителей и друзей себе наживали.
Радовались, что количество объектов и качество их описаний растут день ото дня.
Много интересного узнали и на страницах своих показали
Пока…
не
позвонило МВД
Total votes 70: ↑48 and ↓22+26
Comments64

Гуглякартим по умному

Reading time9 min
Views10K
В последнее время модно стало использовать гуглякарту.
Гугля карту суда, гугля карту туда.
И главное не забыть отобразить свои объектики на карте.
Но, почему-то, подавлявшее число сервисов используют неправильную реализацию процесса передачи маркеров с сервера на клиент.
Точнее они не правильно формируют запросы.
А если выразиться еще более точнее — они это делают
не-по-умному
Total votes 80: ↑63.5 and ↓16.5+47
Comments29

Мы ваши еСоседи

Reading time3 min
Views1.9K
Мы Ваши еСоседи
Давно я хочу представить свой проект хабраобществу, но както не выходило.
Но сегодня моему стартапу исполняется три года со дня рождения.
Всего рождений у него было два, а сегодня будет третье, но именно три года назад проект зародился в своей первоначальной форме.
Это у людей беременность длиться 9 месяцев( Два месяца у кошек) — у меня она длилась три года.
И сегодня у нас юбилей. Может быть пора вылезти на свет?
Ведь что ни говори —
мы Ваши еСоседи, а Вы, соотвественно, наши
Total votes 87: ↑52 and ↓35+17
Comments70

Особенности падения InnoDB в средней полосе России

Reading time2 min
Views875
Решив как-то проверить работу своего сайта для «гостей» я недолго думая нажал [ВЫХОД] и начал проверку.
Когда проверка была окончена — я не смог зайти в систему обратно.
Запросы апдейта просто не применялись.
Поколдовав с десяток минут я, не долго думая, нажал на сервере reset
Слава богу что действие происходило на локальной версии сайта
Читать дальше →
Total votes 11: ↑6 and ↓5+1
Comments19

Борьба с фрагментацией PHP кешеров

Reading time3 min
Views3.7K
Я надеюсь, что нормальные люди уже прониклись необходимостью кешировать вывод данных на своих сайтах, либо кэшировать промежуточные результаты работы с базой данных, либо просто кешировать opcode скриптов для их более быстрого выполнения.
И что разработчики предоставляют нам для этого дела?
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments43

Ускорение загрузки JavaScript и CSS

Reading time3 min
Views962
Незнаю знаете вы или не знаете, но
1.Пока не загрузятся стили — страница отображаться не будет
2.Пока не загрузиться(и не выполниться) скрипт который вы инклюдите — дальше страница отображаться не будет
3.Из пункта 2 следует что в один момент времени грузиться( и исполняется) только один скрипт.
*Но в зависимости от написания второй скрипт тоже может грузиться(но не исполняться) одновременно с первым… но
4.Один браузер в один момент времени держит только два(или четыре?) соединения с одним хостом.
Тоесть в среднем за загрузку 6ти скриптом браузер сделает 6 запросов к серверу один за другим.
К картинкам это в общем плане не относиться, мозила вроде 4 картинки одновременно тащит.
НО НЕ БОЛЕЕ!

Что же делать?
Читать дальше →
Total votes 11: ↑7 and ↓4+3
Comments6
2

Information

Rating
Does not participate
Location
Sydney, New South Wales, Австралия
Date of birth
Registered
Activity