akirich_pcroom

Category:

Карты. Деньги. Два... подхода.

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

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

Но менять местами цели надо, и скорее всего страница с картой терминалов станет вторичной, а страница с GPS — индексной на домене. То есть у последней будет адрес https://xt.akirich.pp.ua/. Причина в том, что картой терминалов, в месячном расчете пользуется в четыре-шесть раз меньше пользователей, чем картой GPS.

Кстати, карантин в статистике тоже сказался. Трафик идеально показывает ситуацию с карантином — разгар болезни ожидаемо привел к падению к аудитории. Даже этот факт может указать то, что мы оставаясь дома, делали все возможное, чтобы как можно быстрее вернуться на работу. Кстати, в период с 19 по 22 цифры дошли до мартовских значений.


Но карту етикетов надо переписывать, причем крупно. Сейчас третья итерация — переделка под javascript. Изначально страница рендерилась при помощи PHP. Нагора выбрасывается 28 КБайтовый файл. При том, что более «тяжелая» по функциям карта GPS со старта кушает 12 КБ. И потом догружает  до 22 КБ полезных данных. Причем 22 КБ — это в дневные часы, когда транспорта на линии регистрируется больше. А вот в предпик и постпик (с 19:30 до 7 утра) — трафика генерируется меньше.

Новая итерация, еще на этапе разработки сократила вес ядра системы на треть, но пока надо повоевать с оптимизацией полезной нагрузки, она наоборот оказалась великоватой (пакет вылазит по размерам за сотню килобайт).

Но не надо писать бэкэнд. Его надо просто допилить до блеска. К тому же причина заняться бэкендом есть. Его я писал в первую очередь для мобильного приложения, которое вообще не стрельнуло. 


Он все же пригодился. И в случае с картой GPS, и с картой етикет — появились телеграм-боты, которые сейчас им и пользуются. Теперь главное — оптимизировать к ним запросы.

Но само написание ботов — это кайф, который я давно не ловил от программирования. Есть несколько вещей, от которых я словил неплохое вдохновение.

1. Практически идеальный справочник по API. Те кто его писал, и те кто писал к нему доки — не зря получают зарплату. Удивителен он еще и тем, что для нормальной работы с ним не надо городить ООП-велосипед на костылях. Ну, конечно питоноводы со мной поспорят, но я думаю и там можно как-то все облагородить. Любители покодить на С, PHP и Node.JS будут точно довольны.

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


Например, нужна клавиатура с 9 клавишами в 4 ряда. Первые 3 ряда по две кнопки, последний — три.

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

 $keyboard = array(

      array(

         array("text"=>"1 ряд слева"),

         array("text"=>"1 ряд справа"),  

      ),

array(

        array("text"=>"2 ряд слева"),

        array("text"=>"2 ряд справа")  

     ),

array(

        array("text"=>"3 ряд слева"),

        array("text"=>"3 ряд справа")  

     ),

array(

        array("text"=>"4 ряд слева"),

        array("text"=>"4 ряд по центру"),

        array("text"=>"4 ряд справа")  

     )

   ); 

И вызвать функцией с параметром «reply_markup», запихнув в json масив по типу этого:

json_encode(array('keyboard' => $keyboard,"resize_keyboard"=> true))


2. Элементарная инициализация и подключение бота к платформе. Специальный служебный бот телеги, ключ, вебхук и пара параметров в запросе. Все. После того ужаса, который я видел в SOAP и RESTful — я аплодирую стоя, за то что они это все сделали простыми запросами методов, и простой подачей в виде (вложенных) массивов. Но получилось так, что у разработчиков телеги получилось сделать HATEOAS* лучше, чем в REST.

(hypertext as the engine of app state — гипертекст, как движитель состояния приложения)

3. Оперативная работа бота по вебхукам, и надежность посылаемых запросов боту. То есть в случае 500х отказов сервера по ошибкам скрипта (все мы ошибаемся!) — телеграм будет продолжать стучаться в сервер, пока не получит ответ.

4. Бот на PHP без обработки, по типу «Который час» или, «helloworld» занимает не более 20 строк. А если не Pretty-Print то и еще меньше. Хотя мой вот на функциях за неделю наел на 700. Хотя он сейчас умеет отдавать почти все данные, которые получает для себя карта. Которая даже без учета выведенных в отдельные файлы функций уже перевалила за 1000 строк.

5. Огромный спектр вариантов коммуникации с пользователем. От обычных сообщений, до инлайна и голосовых сообщений.

Короче, пишу и радуюсь.

promo akirich_pcroom september 1, 2013 01:18
Buy for 10 tokens
Размещайте рекламу в промо по уникально низким ставкам! Правила размещения промо в моем ЖЖ. Даже несмотря на непостоянство показов в данном журнале действуют ограничения по тематике промоутируемых материалов. Рекламируемый материал должен содержать материалы подходящие для группы 12+.…

Error

Anonymous comments are disabled in this journal

default userpic

Your reply will be screened

Your IP address will be recorded