• Бот на нейросетках: как работает и учится виртуальный ассистент

      В 2016 году на пике популярности чат-ботов наша команда делала кнопочных помощников для бизнеса. Пока не пришла мысль поинтереснее: «А что, если автоматизировать клиентскую поддержку нейронными сетями?». Нам хотелось, чтобы роботы в чатах наконец научились понимать естественный язык и стали удобными.

      Потребовалось четыре математика, шесть месяцев запойной работы, один новый язык программирования и много ошибок — и мы создали конструктор, в котором каждый может собрать виртуального ассистента с ИИ.

      В материале мы расскажем


      • Чем виртуальный ассистент отличается от обычного чат-бота
      • Правда ли, что виртуальные ассистенты понимают язык
      • Как мы научили робота понимать контекст и написали язык lialang
      • Проверка кейсами: как мы автоматизировали поддержку в трёх банках
      • Создание Lia Platform и движка для интерфейсов
      • Три шага: как работает платформа для сборки виртуальных ассистентов (где собрать робота может любой, даже не-программист)

      Читать дальше →
      • +10
      • 12.2k
      • 7
    • Видеозаписи всех докладов с восьми конференций Онтико

        Ситуация с тем-самым-вирусом сильно бьёт по организаторам мероприятий. Людям, которые помогают сообществу разработчиков России, сейчас тяжело. Мы в AvitoTech хотим поддержать своих друзей из Онтико, и поэтому открываем доступ к видео с конференций, которые ещё не публиковались. Это доклады за 2019 год с Saint AppsConf, HighLoad++, DevOpsConf, FrontendConf, Product Fest и с последней TeamLead Conf.


        Инженеры Авито, которые выступали или были участниками конференций, вспомнили самые интересные доклады. Под катом — ссылки на плейлисты со всеми-всеми видео и наша субъективная подборка.


        UPD: добавили в статью плейлисты с UseData и GolangConf 2019.


        Читать дальше →
        • +48
        • 27.9k
        • 4
      • Диаграмма Ганта vs Канбан доска

        • Translation
        Если коротко – диаграммы Ганта полезны, когда зависимости являются основным фактором формирования расписания, тогда как Канбан доски можно использовать для работ, которые не имеют зависимостей между собой.

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

        Канбан доски лучше подходят для повторяющейся работы (работы со схожими этапами), а диаграммы Ганта – для комбинации различных видов работ.

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

        Теперь давайте потратим ещё несколько минут, чтобы разобраться в деталях.
        Читать дальше →
      • Django — обработка ошибок в ajax-формах

          Hello everyone!

          Все мы знаем что Django — очень мощный и динамично развивающийся фреймворк для создания веб-приложений. Однако, несмотря на наступление эпохи Веб 2.0, в нём всё ещё нет встроенных механизмов для работы с AJAX, в частности отправки и проверки форм. Возможно django просто не хочет навязывать пользователю какой-то js-фреймворк и хочет оставаться гибкой в этом вопросе, но так или иначе при разработке часто требуются формы, работающие через ajax, без перезагрузок страниц.
          О создании таких форм и работе с ними и пойдёт речь в данной статье.

          Сразу оговорюсь, что идея не нова, и существует несколько библиотек, реализующих требуемую функциональность, например одна из них — http://www.dajaxproject.com/.
          Для тех же, кто предпочитает сам управлять взаимодействием клиента с сервером или тех, кто не хочет втягивать в проект дополнительную библиотеку и иметь дело с её багами, я расскажу как изобрести велосипед реализовать механизм самостоятельно и опишу различные способы решения проблемы.
          Читать дальше →
        • Docker-compose. Как дождаться готовности контейнера

            Введение


            Существует много статей про запуск контейнеров и написание docker-compose.yml. Но для меня долгое время оставался не ясным вопрос, как правильно поступить, если какой-то контейнер не должен запускаться до тех пор, пока другой контейнер не будет готов обрабатывать его запросы или не выполнит какой-то объём работ.
            Читать дальше →
          • Яндекс: умный дом по-взрослому

            • Tutorial


            Недавно компания Яндекс запустила свою систему «умного дома». Нам предлагают купить недорогие работающие по Wi-Fi устройства: адаптер в розетку, лампочку и ИК пульт. Интересно, что у разработчиков «умных» устройств появилась возможность создать свои навыки «умного дома», это позволит подключить девайсы к системе Яндекса и управлять ими голосом через Алису. В списках навыков появляется всё больше новых брендов. Алиса прекрасно понимает русскую речь, что делает ее безусловным лидером среди голосовых ассистентов на российском рынке.
            Однако, не всё так гладко…
            Читать дальше →
          • Инфраструктура и жизненный цикл разработки веб-проекта

              Когда проект маленький, особых проблем с ним не возникает. Список задач можно вести в текстовом файле (TODO), систему контроля версий, по большому счёту, можно и не использовать, для раскладки файлов на живой сервер их можно просто скопировать (cp/scp/rsync) в нужную директорию, а ошибки всегда можно посмотреть в лог-файле. Глупо было бы, например, для простенького сервиса с двумя скриптами и тремя посетителями в день поднимать полноценную систему управления конфигурациями серверов.

              С ростом проекта требования растут. Становится неудобно держать в TODO-файле несколько десятков задач и багов: хочется приоритетов, комментариев, ссылок. Появляется необходимость в системе контроля версий, специальных скриптах/систем для раскладки кода на сервер, системе мониторинга. Ситуация усугубляется, когда над проектом работает несколько человек, а уж когда проект разрастается до нескольких серверов, появляется полноценная инфраструктура («комплекс взаимосвязанных обслуживающих структур или объектов, составляющих и/или обеспечивающих основу функционирования системы», Wikipedia).

              На примере нашего сервиса "Календарь Mail.ru" я хочу рассказать о типичной инфраструктуре и жизненном цикле разработки среднего по размерам веб-проекта в крупной интернет-компании.

              Срыв покровов
            • pdb – Интерактивный отладчик

              • Translation

              pdb – Интерактивный отладчик


              Версии Python: 1.4 и выше

              pdb является интерактивной средой отладки для программ на Python. Он включает возможности приостановки выполнения программы, просмотра значений переменных, построчного выполнения кода так, что вы можете понять, чем ваша программа на самом деле занимается, и найти логические ошибки.
              Читать дальше →
            • 10 книг для понимания устройства фондового рынка, инвестиций на бирже и автоматизированной торговли



                Изображение: Unsplash

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

                В этом материале мы собрали десять книг, которые помогут разобраться с устройством современного фондового рынка, тонкостями инвестирования на нем, и том, как здесь используются передовые технологии.
                Читать дальше →
              • Автоматическое развёртывание Django из GitLab

                  В этой статье я опишу настройку автоматического развёртывания веб-приложения на стеке Django + uWSGI + PostgreSQL + Nginx из репозитория на сервисе GitLab.com. Изложенное также применимо к кастомной инсталляции GitLab. Предполагается, что читатель располагает опытом в создании веб-приложений на Django, а так же опытом администрирования Linux-систем.

                  Читать дальше →
                • 10 причин [не] использовать k8s

                    Сегодня мы поговорим про Kubernetes, про грабли, которые можно собрать при его практическом использовании, и про наработки, которые помогли автору и которые должны помочь и вам. Постараемся доказать, что без k8s в современном мире никуда. Противникам k8s также предоставим отличные причины, почему не стоит на него переходить. То есть в рассказе мы будем не только защищать Kubernetes, но и ругать его. Отсюда в названии появилось это [не].

                    Эта статья основана на докладе Ивана Глушкова (gli) на конференции DevOops 2017. Последние два места работы Ивана так или иначе были связаны с Kubernetes: и в Postmates, и в Machine Zone он работал в инфракомандах, и Kubernetes они затрагивают очень плотно. Плюс, Иван ведет подкаст DevZen. Дальнейшее изложение будет вестись от лица Ивана.


                    Читать дальше →
                  • Быстрый запуск и использование своего открытого docker-registry

                      Docker – это программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации (см. Википедию).
                      Подробные инструкции по установке есть на официальном сайте: https://docs.docker.com/engine/installation/

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

                      Когда я начал делать новый проект — решил попробовать использовать докер. Получилось четыре контейнера, которые надо как-то доставлять на сервер. Далее последует рассказ о том, что у меня из этого получилось.

                      Что имеется на входе:

                      • виртуальный сервер с IP-адресом (без домена) на Ubuntu 14.04 64bit с docker@1.10.3 — здесь мы будем поднимать регистр и здесь же забирать из него образы
                      • рабочий компьютер на OS X 10.11.3 с docker@1.9.1 и docker-machine@0.5.5

                      Регистр докера — это хранилище с версионированными докер-образами.
                      Регистр удобно использовать для доставки приложения на сервер:

                      1. на рабочем компьютере собираем образ и отправляем в регистр
                      2. на виртуальном сервере забираем образ из регистра и запускаем

                      У докера есть официальный регистр, как сервис: https://hub.docker.com
                      Там можно размещать неограниченное количество публичных образов и только один приватный. Большее количество приватных образов можно добавлять за отдельную плату.

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

                      Регистр докера способен работать как по http, так и по https. При использовании защищённого соединения возможна так же авторизация отдельных пользователей. Но нужен сертификат, который можно купить только для доменного имени. Самоподписанный сертификат у меня так и не получилось заставить работать (читал в интернетах, что с этим есть проблемы). Ввиду того, что у меня нет доменного имени — мы рассмотрим открытый регистр с доступом по http. Это значит, что если кто-то узнает адрес вашего регистра — он сможет свободно им пользоваться.
                      Читать дальше →
                      • +3
                      • 26.9k
                      • 8
                    • Настраиваем приватный Docker-репозиторий

                      • Tutorial

                      Docker одна из горячих тем в разработке. Большинство новых проектов строится именно на Docker. Как минимум, он отлично зарекомендовал себя для распространения ПО, например, наша система поиска по документам Ambar устанавливается с помощью docker-compose.


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

                      Читать дальше →
                    • Подборка @pythonetc, июль 2019


                        Это двенадцатая подборка советов про Python и программирование из моего авторского канала @pythonetc.

                        Предыдущие подборки


                        Нельзя изменять переменные замыканий с помощью простого присваивания. Python расценивает присваивание как определение внутри тела функции и вообще не делает замыкание. 
                        Читать дальше →
                        • +45
                        • 7.3k
                        • 9
                      • Полная автоматизация «development» среды с помощью docker-compose

                        • Tutorial

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


                        Docker в 2017


                        На конференции Dockercon 2016 CEO компании Docker рассказал, что количество приложений, которые запускаются в Docker выросло на 3100% за последние два года. Боле 460 тысяч приложений по всему миру запускаются в Docker. Это невероятно!


                        Если вы все еще не используете Docker, я бы посоветовал почитать отличную статью об использовании Docker во всем мире. Docker полностью изменил то, как мы пишем приложения и стал неотъемлемой частью для разработчиков и DevOps команд. В этой статье мы полагаем, что вы уже знакомы с Docker и хотим дать вам еще одну серьезную причину продолжать использовать его.

                        Читать дальше →
                      • Blameless environment: никто не должен писать качественный код

                          На РИТ++ Никита Соболев (sobolevn) выступил, как он сам назвал это, с проповедью на тему качества кода и процессов в компании. Особо впечатлительных просим налить себе ромашкового чаю, но отойти от экранов не предлагаем. Вы можете не соглашаться ни с одним из тезисов, настаивать, что трёп о сериалах — залог здоровой атмосферы в коллективе, и утверждать, что вам не нужны строгие рамки линтера и CI, чтобы писать хороший код. Но если вы хоть раз винили окружающих в неудачах на работе, вам стоит прочитать или посмотреть рассказ Никиты.

                          Работали ли вы когда-нибудь на плохой работе?

                          Я работал и долго. Моя компания была ужасна. Все было очень плохо, за что ни возьмись — все из рук вон. У нас были отвратительные процессы, ненавистные клиенты и неумелые разработчики. С этим ничего нельзя было поделать. Когда все так плохо, просто не знаешь, за что взяться, с чего начать. Чувствуешь себя жалким винтиком, который не может ни на что влиять.



                          Когда я говорю, все плохо, я имею в виду, что у нас был:

                          • плохой код — никто не думал о качестве кода, никто не мог даже сформулировать, что такое качество кода.
                          • плохие процессы.
                          • мы не могли нормально общаться,
                          • мы не делали то, что хотел клиент.

                          Да, это была аутсорс-разработка, но не это делало её плохой. Люди сделали ее такой.
                          Читать дальше →
                        • Управление зависимостями в Python: сравнение подходов

                          image

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

                          К сожалению, в Python-сообществе нет универсального понятия «хорошей архитектуры», есть только понятие «питоничности», поэтому архитектуру приходится придумывать самим. Под катом — лонгрид с размышлениями об архитектуре и в первую очередь — об управлении зависимостями применимо к Python.
                          Читать дальше →
                        • Удобная система управления базами данных

                            Хочу поделиться опытом эволюции использования систем баз данных в языковой онлайн школе GLASHA.

                            Школа образовалась в 2012 году и в начале работы в ней обучалось все 12 студентов, так что никаких проблем с управлением расписанием и оплатами не было. Однако по мере роста, развития и появления новых студентов остро встал вопрос о выборе системы базы данных.

                            Задача состояла в том, чтобы сделать:
                            Читать дальше →