• Чего ждать при работе с API: 5 (не)обычных проблем при интеграции приложений

      Где-то на просторах мультивселенной…

      Представьте на минуту, что вы капитан Сиракузии, которая в 239 году до н. э. приближается к острову Фарос, что близ города Александрии. Вслед­ст­вие узо­сти про­хо­да, вой­ти в гавань Александрии — непростая задача, в особенности, для такого корабля, как ваш. Вы слышали, что за последний год навигация около острова улучшилась, так как был завершен Фа́росский маяк, уникальное сооружение, заложенное еще при Птолемее I.

      Но, приблизившись к острову, вы понимаете, что промахнулись мимо гавани, так как гигантский маяк был спроектирован башней под воду, а свет сигнальных костров виден только в сумерках и при сильной облачности, ведь зеркала подводной башни отражают свет исключительно вверх. Проклиная свою работу, вы пишете письмо Гиерону II, с описанием того, как неудачно спроектирован интерфейс взаимодействия с портом, а он, как человек с поистине царским чутьем, решает подарить корабль правителю Александрии, а сам начинает смотреть в сторону альтернативных торговых маршрутов…

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

      Читать далее
    • Что такое XML

        Если вы тестируете API, то должны знать про два основных формата передачи данных:

        • XML — используется в SOAP (всегда) и REST-запросах (реже);
        • JSON — используется в REST-запросах.

        Сегодня я расскажу вам про XML.

        XML, в переводе с англ eXtensible Markup Language — расширяемый язык разметки. Используется для хранения и передачи данных. Так что увидеть его можно не только в API, но и в коде.

        Этот формат рекомендован Консорциумом Всемирной паутины (W3C), поэтому он часто используется для передачи данных по API. В SOAP API это вообще единственно возможный формат входных и выходных данных!

        См также:
        Что такое API — общее знакомство с API
        Введение в SOAP и REST: что это и с чем едят — видео про разницу между SOAP и REST.

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


        Читать дальше →
      • Некоторые советы по созданию API

          У нас в Uma.Tech накопился хороший опыт по созданию различных API. Часть этого опыта была приобретена через набивание шишек. Хотим поделиться с вами некоторыми советами, которым мы сами стараемся следовать, чтобы в будущем вам было проще развивать и поддерживать собственный продукт.

          Автор материала — @alitvinenko

          Читать далее
        • История нашего open source: как мы сделали сервис аналитики на Go и выложили его в открытый доступ

            В настоящее время практически каждая компания в мире собирает статистику о действиях пользователя на web ресурсе. Мотивация понятна — компании хотят знать как используется их продукт/веб сайт и лучше понимать своих пользователей. Конечно на рынке существует большое количество инструментов для решения данной проблемы — от систем аналитики, которые предоставляют данные в виде дашбордов и графиков (например Google Analytics) до Customer Data Platform, которые позволяют собирать и агрегировать данные из разных источников в любом хранилище (например Segment).

            Но мы нашли проблему, которая еще не была решена. Так родился EventNative — open-source сервис аналитики. O том, почему мы пошли на разработку собственного сервиса, что нам это дало и что в итоге получилось (с кусками кода), читайте под катом.

            Читать дальше →
          • Как я сделал бота, который контролирует моих сотрудников, следит за моими тренировками, весом и чтением книг

            Привет, меня зовут Антон Ланцов, мне 26 лет. Я рыжий и у меня всегда миллион идей, некоторые из них я реализую успешно, некоторые нет.

            Контроль сотрудников


            В 2014 году я купил франшизу «Клаустрофобии» (квесты в реальности). Это был мой первый серьезный бизнес, где требовалось контролировать сотрудников. Ребят, которые вели квесты, мы называли «Операторы квеста».

            Ежедневно нам приходилось контролировать операторов и собирать следующую информацию:

            1. Время прихода на локацию (клиенты могли прийти в любой момент, а чек был от 2500 рублей, любая потеря критична и досадна).
            2. Время пересменки (чтобы локация не оставалась без оператора).
            3. Время ухода с работы.
            4. Поломки и неисправности квестов (требовалось узнавать это оперативно, чтобы вызвать инженера, а то полетят плохие отзывы, что квест не работает).
            5. Уборка.
            6. Количество игр в день.
            7. Выручка за день.

            В то время мы прекрасно обходились общим чатиком во «ВКонтакте» и Google Sheets:

            1. Время прихода на локацию. Пришел — пришли фоточку в чатик.
            2. Время пересменки — пришли фоточку в чатик обоих операторов.
            3. Время ухода с работы — пришли фоточку в чатик перед уходом.
            4. Поломки и неисправности квестов. Все в Google-таблицу с описанием и фото.
            5. Уборка — фоточка в чатик
            6. Количество игр в день — Google-таблица отлично справлялась и с этим.
            7. Выручка за день — Google-таблица и для этого.

            Все это работало только тогда, когда оператор не забывал об этих ежедневных отчетах, которые занимали всего 3‑4 минуты. Напоминать в каждый чат (а чатов было два, так как локаций с квестами у нас было две) было очень утомительно каждый день, да и тот, кто должен был напоминать операторам, мог и сам забыть.

            Система очень сильно зависела от памяти человека и легко любой косяк оправдывался «Ой, я забыл(а)...»

            Об автоматизации мы только мечтали, ведь API у «Google Таблиц» и боты во «ВКонтакте» появились намного позже, чем 2014 год. А потом все никак не доходили руки. Вроде все работает и пусть себе работает.
            Читать дальше →
          • okdb — библиотека для совместной работы



              Организация совместной работы в приложении всегда кажется большим геморроем и отметается на этапе планирования большинства приложений. По сути, сейчас принято пилить реалтайм-взаимодействие только там, где это часть обязательного функционала, в качестве дополнительной фишки его не встретить. Разработчики из Anwendo хотят исправить эту ситуацию и представляют okdb — библиотеку и сервис, позволяющие снять с себя львиную долю проблем и сложности, связанных с организацией совместных рабочих сессий.
              Читать дальше →
              • +29
              • 5,2k
              • 3
            • OBS Studio Lua Скриптинг. Часть 2

              • Tutorial

              Всем привет, в этой части руководства рассмотрим: фильтры, сцены, предметы сцен, Frontend API, создание функциональных фильтров и прочее...


              С первой частью можно ознакомиться по этой ссылке.


              КДПВ сделана в OBS 26.0.0

              Читать дальше →
            • Реклама
              AdBlock похитил этот баннер, но баннеры не зубы — отрастут

              Подробнее
            • Создание современного API на PHP в 2020 году

              Итак, на примере этого API, я хочу показать современную PHP архитектуру для высоконагруженных проектов. Когда проект еще в самом начале, и не то, что бизнеслогика (взаимоотношения с базой данных) не прописана, но и сама бизнес модель не очень ясна, построение эффективной IT архитектуры может идти только одним путем: необходимо жестко разделить frontend и backend.

              Что обычно делали в таких ситуациях два-три года назад? Брался монолитный фрейворк типа Laravel или Yii2, вся бизнес модель разбивалась, худо-бедно, на блоки, а эти блоки уже имплементировались как модули фреймворка. В итоге еще через 3 года получалась огромная не поворотная машина, которая сама по себе медленная, а становилась почти невыносимо медленной, в которой фронтенд рендится через бэкенд посредством классической MVC архитеркутуры (пользователь отправил запрос, контроллер его подхватил, вызвал модель, та в свою очередь чего-то там натворила с базой данных, вернула все контроллеру, а тот наконец-то вызвал вьювер, вставил туда данные из модели и отдал это все пользователю, который уже успел открыть очередную банку пива...). А… ну еще особо продвинутые ребята, они не просто вьюверели Tweeter Bootstrap, а во вьювер вкручивали на самом деле очень хорошие библиотеки типа JQuery или вместо вьювера использовали какой-нибудь фронтенд фреймворк. В итоге поддерживать такой БеЛаЗ становилось все сложнее, а ввести нового программиста в команду было очень сложно, ибо не все рождаются Энштейнами. Добавим сюда тотальное отсутствие документации разработчика (камменты в 9000 файлах почитаешь — там все есть!) и в итоге, смотря на это все, становилось по-настоящему грустно…
              Читать дальше →
            • Как жить с ограничениями внешних API на количество запросов

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

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

                Читать далее
                • +10
                • 2,6k
                • 3
              • Пишем telegram бота на языке R (часть 5): Управление правами пользователей бота

                • Tutorial

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


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


                Читать дальше →
              • Airtable — что это?

                Введение


                Сегодня я хочу рассказать вам о Airtable — популярном zero-code инструменте, который используют самые разные специалисты — от фотографов до менеджеров. У сервиса есть множество фишек, из-за которых с ним полезно ознакомиться каждому программисту.


                Читать дальше →
              • Бот для автопостинга VK

                • Tutorial
                ВНИМАНИЕ: статья создана только в обучающих целях, я не призываю Вас использовать продукт полученный в конце урока для принесения неудобств или собственной выгоды

                Что будем делать


                Бота для автопостинга записей на стене сообщества или страницы Vk

                Зачем


                Для ознакомительных целей

                Что нам понадобится


                Читать дальше →
              • Как я умный аквариум делал (backend)

                image


                Пролог


                Работая программистом в одной из больших и успешных компаний Москвы, я не переставал совершенствовать свои навыки программирования и проходил различные курсы на платформе Udemy.
                Конечно просто смотря курс и повторяя все за автором было скучновато, да и были моменты которые я не понимал ввиду своей некомпетентности на тот момент. Нужно делать свои проекты, основываясь на том, что дает автор курса — подумал я, и был конечно же прав. Только настоящие трудности и их разрешение дает вам бесценный опыт, это и есть настоящая обучение.


                Обучался я в основном web программированию, поскольку и работал на том же направлении. Охватывал Full-stack разработку, поскольку решил, что нужно разбираться как в серверной части, так и во фронтовой. Учил JavaScript и различные фреймворки для бека это были Express, Appolo GraphQL (поскольку на работе был именно такой стек, да и в целом хотелось попробовать что-то отличное от REST подхода), на фронте это был все тот же Apollo GQL и Vue.

                Читать дальше →
              • Контрольный список для ревью кода в распределенных системах

                  points of view by sanja

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

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

                  Команда Mail.ru Cloud Solutions перевела статью, автор которой несколько лет занимался обнаружением типовых сбоев в коде на продакшене и изучал причины, приведшие к такому результату. В статье — рекомендации по проверке кода, которые автор использует в качестве базового контрольного списка.
                  Читать дальше →
                  • +30
                  • 5,9k
                  • 3
                • OBS Studio Lua Скриптинг

                  Всем привет, в этом руководстве рассмотрим создание скриптов для OBS на языке Lua.


                  Скриптинг в OBS доступен начиная с версии 21, на данный момент новейшая 26.0.0-rc3 версия доступна для тестирования.Обновление включает в себя виртуальную веб камеру (пока что только на Windows), улучшенный UI, возможность скриншота любого источника( КДПВ была сделана с помощью этой функции).


                  image

                  Читать дальше →
                • Кому на Руси жить хорошо? Как мы искали самый “зеленый” город с помощью OpenStreetMap и Overpass API

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

                  Когда мы готовились к автоматизации работы местных муниципальных служб, мы обратили внимание на использование картографии, которое мы сочли действительно мощным и эффективным инструментом для решения широкого кластера задач. На карте можно отображать актуальную информацию о местоположении объектов, маршруты движения уборочной техники, транспорта, план работы и тепловую карту с проблемными и “здоровыми” участками.

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

                  В ходе работы с одним из заказчиков перед нами возникла интересная задача — подсчитать количество объектов на карте по категориям.

                  Найти


                  Определить самый “зеленый” город в ЦФО по совокупности следующих данных: количество лавочек, урн и парков.

                  Дано


                  Картография. В качестве плацдарма мы выбрали OpenStreetMap (далее — OSM) по весьма простой причине — Open Source.

                  Решение


                  Существует несколько подходов к решению поставленной задачи. К примеру, мы можем использовать PostgreSQL для осуществление запросов к базе данных OSM и получения необходимых данных, или использовать QGIS — систему для создания, анализа и публикации геопространственной информации. Однако, мы нашли более элегантный и эффективный способ — Overpass API.
                  Читать дальше →
                • Искусственный интеллект может предупредить о приближении эвакуатора

                    image

                    Больше всего раздражения у водителей автомобилей вызывают гаишники и эвакуаторы. Что если дать водителю неправильно припаркованной машины шанс узнать о приближении эвакуатора и исправить ситуацию? С такой идеей мы обучили нейронную сеть распознавать эвакуаторы на изображениях с камер видеонаблюдения.
                    Читать дальше →
                  • Пишем telegram бота на языке R (часть 4): Построение последовательного, логического диалога с ботом

                    • Tutorial

                    Если вы уже ознакомились с предыдущими тремя статьями из данной серии, то вы уже умеете писать полноценных telegram ботов с клавиатурой.


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


                    Также в данной статье мы научимся использовать под капотом бота базы данных, в нашем примере это будет SQLite, но вы можете использовать любую другую СУБД. Более подробно о взаимодействии с базами данных на языке R я писал в этой статье.


                    Читать дальше →
                  • Парсинг сайта Умного Голосования и новый API на сайте ЦИК

                      image

                      13 сентября 2020 года в России прошёл единый день голосования. В некоторых регионах оппозицией была применена стратегия «Умного Голосования», заключающаяся в том, что оппозиционно настроенные избиратели голосуют за единого кандидата, имеющего наивысшие шансы победить представителя от властей.

                      Процесс отбора кандидатов для «Умного Голосования» уже второй год вызывает дискуссии на тему своей прозрачности. Кроме того, лично меня смущают сложности с подведением итогов стратегии, с которыми могут столкнуться независимые аналитики. Организаторы УмГ не публикуют подробные итоги стратегии, а лишь диаграммы, демонстрирующие сколько оппозиционных кандидатов прошло в региональный парламент.

                      На сайте «Умного Голосования» нельзя получить список поддержанных кандидатов, указав, например, город и округ. Если кто-то захочет собрать данные по региону, ему предстоит монотонная работа по подбору адресов для каждого округа.

                      Ни в коем случае не упрекаю разработчиков сайта УмГ, он имеет весь требуемый функционал для реализации стратегии голосования. Но в связи с тем, что в 2019 году никто не занимался сбором и публикацией подробных данных по итогам УмГ (вне московских выборов), на этих выборах я решил взять инициативу в свои руки.

                      В итоге получилась вот такая сводная таблица. В данной статье я расскажу, как был получен приведённый набор данных, как собиралась информация с сайтов Умного Голосования и нового веб-сервиса ЦИК.

                      image
                      Читать дальше →
                    • Четыре способа получить аудио вк или «это не баг, а фича»

                        Всем привет! Сегодня я расскажу вам о моем опыте с ВК, найденных багах, об отношении к пользователям и, собственно, как получить аудиозаписи вк, пользуясь "не багами а фичами", как меня заверяли сотрудники данной корпорации. Итак, приступим!

                        Читать далее

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