• Разработка Action-able приложения для Slack



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

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

      Этот туториал проведет вас через весь процесс создания действующего приложения.
      Читать дальше →
    • История об одном глазе и 20 операциях (не читать впечатлительным) или он хотел быть летчиком, а его не пускали в небо

        Операции на глазах по улучшению зрения

        Как вы думаете, сколько операций можно сделать на одном глазу? Клинический случай одного из моих пациентов подтверждает, что более 20 операций разного рода – не предел. Хотя, вне сомнения, этот случай – рекорд для России и мировой офтальмологии.

        В 1978 году все было банально – был 18 летний мальчик (назовем его «А»), который хотел стать летчиком-испытателем как его отец. Этому мешала слабая близорукость правого глаза – всего минус 1, для жизни не мешала, но будущему пилоту нужно было хорошее зрение. Он решил подправить оптику одного глаза путем кератотомии – старого «ручного» метода коррекции в институте Фёдорова (конечно, по знакомству), но что-то пошло не так. Это была первая операция. Затем еще четыре в России, затем еще семь – в Швейцарии. Летчиком он не стал, зато стал олигархом, человеком, управляющим серьезными бизнес-проектами, но не управляющим ситуацией со своим зрением.

        Ко мне «А» попал совершенно разочарованный в мировой офтальмологии, со зрением 10%, невозможностью коррекции стандартными способами и высоким внутриглазным давлением. И это был молодой 50-летний бизнесмен, по жизни — успешный (это важно – потому что дальше тоже не все пошло «так»). Так вот – следующие восемь операций – мои. И хотя мы рассчитывали, что одной-двух будет достаточно – пришлось пережить почти тотальную офтальмохирургию – все возможные виды операций.

        Кстати, была бы вместо кератотомии коррекция СМАЙЛ (ReLEX SMILE) или, хотя бы, Femto-LASIK – не о чем бы было писать – ничего подобно при них невозможно!
        Читать дальше →
      • 5+1 случай, когда спецификация REST API играет огромную роль

        • Перевод
        • Tutorial

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


        Что такое RESTful API?



        Это миф.


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

        Читать дальше →
      • Computer-Telephony Integration и телефоны Grandstream


          Все больше и больше современные средства связи интегрируются в окружающий нас мир, и офисная телефония не является исключением. В компании Grandstream решили не отставать и добавили поддержку специального интерфейса CTI (Computer-Telephony Integration) в свои телефоны. Изначально были обновлены аппараты серии GXP21ХХ, а чуть позже обновились устройства младшей линейки GXP16ХХ, такие как GXP1610, GXP1620 и т.д.

          Читать дальше →
        • Подслушиваем чат телеграма с помощью своего клиента

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


          Для этого в телеграме есть боты. На Хабре есть несколько статей, посвященных ботам, например: "Чат-помощник на сайт".


          Бот позволяет читать и посылать сообщения, для регистрации бота не нужен телефон и количество ботов может быть любым. Но название бота включает в себя слово "bot", что может вызвать у хозяина чата ненужные вопросы.


          Но, как говорится, правильно поставленный вопрос — половина ответа.

          Читать дальше →
          • +16
          • 9,7k
          • 5
        • Обзор SIP-телефонов Digium A20 и A25

            Digium A20, Digium A25


            В феврале 2018 компания Digium, разработчик open-source проекта Asterisk, представила телефоны А серии, предназначенные для работы именно с Asterisk. Даже странно, что столько лет Digium воздерживался от производства под своим брендом обычных SIP-телефонов. А уже в августе 2018 компания Digium объявила о слиянии с Sangoma, ведущим производителем оборудования для Asterisk. Совпадение? Вряд ли, конечно.


            Линейка телефонов серии А получилась, на мой взгляд, вполне конкурентной, со своими фишечками. Серия на текущий момента включает в себя четыре модели — A20, A22, A25, A30. Давайте посмотрим подробнее на телефон A20 — обычную лошадку начального уровня и А25 — телефон среднего уровня.


            Читать дальше →
          • 10 лучших инструментов для тестирования API

              10 лучших инструментальных средств тестирования интерфейсов прикладного программирования 2018 года.

              Интерес к тестированию неудержимо растёт на протяжении нескольких последних лет, согласно исследованиям Google Trends. Опрос, проведенный компанией Smartbear в 2017 году среди 5000 профессионалов в области разработки программного обеспечения, показал, что более 50% опрошенных респондентов используют автоматические средства тестирования API, и ожидается рост их количества на 30% ( с 59% до 77%) в течении следующих двух лет, причем 80% участников опроса указали, что отвечают за тестирование API.
              Читать дальше →
              • +11
              • 12,3k
              • 6
            • Honeypot- логгер на nodejs и tcpdump

              Всем привет. Недавно тов. R_Voland рассказал о своём http ханипоте. Он меня и вдохновил к написанию этого поста. Но в этом случае, будем ловить все tcp и udp сканы, а не только http. Запросы будем ловить с помощью tcpdump.

              Для tcp ловим только syn пакеты:

              tcpdump -n "tcp[tcpflags] & (tcp-syn) != 0"

              Для udp все входящие udp пакеты

               tcpdump -n inbound and udp

              В теории вывод от tcpdump'а можно перенаправить в файл и дальше парсить его по необходимости, но я ещё тот извращенец, поэтому напишем сервис на nodejs, который будет слушать tcpdump и сохранять результаты в mysql базу.
              Читать дальше →
            • Kubernetes-HA. Разворачиваем отказоустойчивый кластер Kubernetes c 5 мастерами

              Здравствуйте!

              В данной публикации я хотел бы рассказать о кластере Kubernetes с высокой доступностью (HA).

              image

              Оглавление:

              1. Вступление
              2. Список используемого софта
              3. Список и назначение хостов
              4. Принцип работы и развертывания
              5. Подготовка ОС к развертыванию. Установка docker, kubeadm, kubelet и kubectl
              6. Подготовка конфигурационного скрипта
              7. Создание etcd кластера
              8. Инициализация мастера с помощью kubeadm
              9. Настройка CIDR
              10. Инициализация остальных мастернод
              11. Настройка keepalived и виртуального IP
              12. Добавление рабочих нод в кластер
              13. Установка ingress-nginx
              14. Дополнительно

              Читать дальше →
            • Концепции распределенной архитектуры, с которыми я познакомился при построении крупной системы платежей

              • Перевод
              Я присоединился к Uber два года назад в качестве мобильного разработчика, имеющего некоторый опыт разработки бекенда. Здесь я занимался разработкой функционала платежей в приложении — и по ходу дела переписал само приложение. После чего я перешёл в менеджмент разработчиков и возглавил саму команду. Благодаря этому я смог гораздо ближе познакомиться с бэкендом, поскольку моя команда несёт ответственность за многие системы нашего бэкенда, позволяющие осуществлять платежи.

              До моей работы в Uber у меня не было опыта работы с распределёнными системами. Я получил традиционное образование в Computer Science, после чего с десяток лет занимался full-stack разработкой. Поэтому, пусть я и мог рисовать различные диаграммы и рассуждать о компромиссах (tradeoffs) в системах, к тому моменту я недостаточно хорошо понимал и воспринимал концепции распределённости — такие, например, как согласованность (consistency), доступность (availability) или идемпотентность (idempotency).

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

              Полный ли это список? Скорее всего, нет. Однако, если бы лично я сам узнал про эти концепции раньше, это сделало бы мою жизнь гораздо проще.

              Итак, давайте приступим к нашему погружению в SLA, согласованность, долговечность данных, сохранность сообщений, идемпотентность и некоторые другие вещи, которые мне потребовалось выучить на своей новой работе.
              Читать дальше →
              • +20
              • 14,3k
              • 2
            • Распознавание речи на python с помощью pocketsphinx или как я пытался сделать голосового ассистента

              • Tutorial

              Это туториал по использованию библиотеки pocketsphinx на Python. Надеюсь он поможет вам
              побыстрее разобраться с этой библиотекой и не наступать на мои грабли.

              Читать дальше →
            • Онлайн имплементация localStorage

              Хочу поделиться тем, как приватный режим Safari привел к разработке простого ключ-значение хранилища на Node.js с резервным копированием, доступом к данным с определенных доменов и защитой паролем от записи и очистки хранилища.



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

              Задача была решена и работала следующим образом:

              1. неавторизованный пользователь кликает на магазин (ссылка «_blank»);
              2. в новом окне отображаются тестовые товары, а в iframe мы перенаправляем пользователя в профиль тестового пользователя и ждем появления данных покупки в localStorage;
              3. после совершения покупки, данные о ней сохраняем в localStorage (сумма, количество, магазин, время покупки и количество бонусов)
              4. в iframe при появлении данных тестовой покупки в localStorage, мы отображаем информацию в блоке «история покупок»;

              Все работало в большинстве браузеров, и даже в IE11, но только не в Safari, чья политика безопастности (более известный как porno-mode) не разрешала получить доступ к данным localStorage одного и того же домена внутри iframe и снаружи (в новом окне).

              Нужно где-то хранить промежуточные данные, привлечь к этой задачи бэкенд разработчиков для создания какого-либо API для хранения данных разрешения не получил, оставалось только найти какое-нибудь онлайн хранилище, с возможностью создание для каждого пользователя своего токена.
              Читать дальше →
            • Обзор и практическое руководство по Katalon Recorder (Selenium IDE++ для Chrome и Firefox)

                Когда Firefox, начиная с версии Firefox 55, перестал поддерживать Selenium IDE, миллионы тестировщиков и разработчиков столкнулись с тем, что привычный ход работы по автоматизированному тестированию был нарушен, что вызвало среди них немалое беспокойство. К счастью, разработки в данной области продолжились, и не так давно команда Katalon представила Katalon Recorder – инструмент, который был разработан как альтернатива Selenium IDE.
                Читать дальше →
              • Как и зачем переходить от сервис-ориентированной архитектуры к микросервисам

                  Здравствуйте, меня зовут Алексей, я главный IT-архитектор банка «Ренессанс Кредит». Лет десять назад мы, как и многие компании, ускорили свое развитие благодаря сервис-ориентированной архитектуре (SOA). Но со временем требования к архитектуре менялись, и к данной парадигме стали возникать серьезные вопросы. В конце концов мы решили перейти от интеграционной шины ESB к микросервисам. На нашем примере я расскажу, почему стоит задуматься об эффективности SOA и что можно предпринять, если эта модель вас тоже не устраивает.


                  Читать дальше →
                • ES6: полезные советы и неочевидные приёмы

                  • Перевод
                  Стандарт EcmaScript 2015 (ES6) существует уже несколько лет. Он принёс с собой множество новых возможностей, разные способы использования которых далеко не всегда очевидны. Вот обзор некоторых из этих возможностей с примерами и комментариями.

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

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

                    image
                    Читать дальше →
                  • Робот Xiaomi MITU: не убийца, а сам по себе

                      Вспомните себя ребёнком: Новый год, ёлка, горы вкусной еды, отдых дома и на катке, интересные подарки, каникулы рядом с родителями и друзьями. Раз, два — и вот уже ёлка осыпается и больно колется в тапочках, а за окном настаёт длинная и беспросветная третья четверть. Неохота выходить на мороз, зубрить, писать контрольные и слушать бесконечные тирады про самую главную четверть в году. Собственно, то же самое сейчас испытывают наши дети и младшие братья и сёстры. Перед родителями стоит важная задача: не довести ребёнка до нервного срыва и сохранить интерес и стимул к учёбе более гуманными способами, чем ремень.


                      Читать дальше →
                    • Новая жизнь для XMPP. Делаем мессенджер, который не получится заблокировать

                      • Tutorial


                      Идея сделать независимый от корпораций P2P мессенджер не нова, однако разработка нового протокола и клиентских приложений для него достаточно дорогой и долгий процесс. А что, если использовать старый добрый XMPP, в котором уже все давно продумано и запилено?


                      Но это же не настоящий peer-to-peer, скажете вы, для работы XMPP нужен собственный сервер и домен. Это так, но мы можем запустить сервер на локалхосте, а для связи с серверами других пользователей использовать скрытый сервис в виртуальной сети I2P. Использование I2P избавит нас от необходимости платить за домен с хостингом, а так же защитит наши коммуникации от преступной онлайн-слежки.


                      Таким образом, получаем:


                      • Гибридный P2P мессенджер, который можно запускать и на пользовательских устройствах, и на полноценном сервере.
                      • Фичи, которых не хватает другим P2P мессенджерам: оффлайн сообщения, хранение контактов и истории "в облаке", работа нескольких клиентов с одним аккаунтом.
                      • Готовые клиентские приложения на любой вкус.
                      • За счет использования I2P, неуязвим для различных *надзоров (сори за мат).

                      Приступим же к реализации...

                      Читать дальше →
                    • Пощупать нейросети или конструктор нейронных сетей



                      Я давно интересовался нейросетями, но только с позиции зрителя – следил за новыми возможностями, которые они дают по сравнению с обычным программированием. Но никогда не лез ни в теорию, ни в практику. И вдруг (после сенсационной новости о AlphaZero) мне захотелось сделать свою нейросеть. Посмотрев несколько уроков по этой теме на YouTube, я немного врубился в теорию и перешёл к практике. В итоге я сделал даже лучше, чем свою нейросеть. Получился конструктор нейросетей и наглядное пособие по ним (то есть можно смотреть, что творится внутри нейросети). Вот как это выглядит:


                      Читать дальше →
                    • Исповедь менеджера продукта

                        image

                        Я работаю в продуктовой компании. Что это значит?

                        Мы не разрабатываем проекты на заказ, мы делаем продукт, который продаем клиентам.
                        Для своих команд я формирую видение продукта, принимаю решение, какие из “хотелок” пользователей мы будем делать и объясняю команде (иногда на уточках), зачем они нужны. Описываю задачи с точки зрения ценности для бизнеса, формулирую и проверяю гипотезы.
                        Мои требования к разработке зачастую сформулированы нечетко, фичи часто приходится переделывать или дорабатывать после запуска.

                        Этим я мешаю разработчикам писать идеальный код. Я знаю, что так поступают многие менеджеры продукта.

                        И я хочу рассказать, зачем я делаю это снова и снова.
                        Читать дальше →