Рубрика «Программирование» - 400

tl;dr: Контур во второй раз организует оффлайновые площадки для онлайн-соревнования по программированию игровых ботов на CodinGame. Площадки будут в 7 городах: Екатеринбурге, Ижевске, Иннополисе, Новосибирске, Перми, Ростове-на-Дону и Санкт-Петербурге.

Всё пройдёт 16 июня, в субботу (в Иннополисе — 18 июня, в понедельник). Приходите, если хотите отвлечься от рабочих задач и запрограммировать что-нибудь необычное. Ссылка для регистрации — в конце поста.

Всем привет! Я люблю участвовать в соревнованиях по программированию. Например, занимаюсь спортивным программированием — недавно в составе команды Ural FU: Kek стал бронзовым призёром ACM ICPC World Finals.

Другим моим классным хобби является программирование игровых ботов на CodinGame. Я занимаюсь этим не так давно, но успел вовлечься и теперь ищу единомышленников. Поэтому я решил помочь с организацией хабов и приглашаю всех присоединиться.

[Анонс] Хабы для соревнования на CodinGame.com в семи городах России - 1
Мой профиль на CodinGame.

Читать полностью »

Безопасное взаимодействие в распределенных системах - 1

Привет!

Меня зовут Алексей Солодкий, я PHP-разработчик в компании Badoo. И сегодня я поделюсь текстовой версией моего доклада для первого Badoo PHP Meetup. Видео этого и других докладов с митапа можно найти здесь.

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

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

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

Рассмотрим, что делать, когда сервис падает или тупит, как организовать сбор метрик и что делать, когда всё вышесказанное вас не спасёт.
Читать полностью »

Недавно мы презентовали решение для бизнеса, которое назвали Dialogflow Connector: связка из гугловского Dialogflow и нашего облака Voximplant. Коннектор может работать вместо оператора колл-центра и принимать сложные заказы. Это стало возможным, потому что Dialogflow позволяет уйти от сценария обычного IVR, где клиент вынужден называть слова из заданного набора, на который умеет реагировать интерактивное меню. Гугловская платформа может последовательно получать входные данные от клиента и собирать их воедино – например, чтобы сформировать заказ в интернет-магазине. Вероятно, вы уже слышали модное слово “slot filling”, так вот это он и есть. Под катом вас ждут подробности, как мы делали бота для заказа пиццы – по аналогии вы можете запилить нечто похожее и возрадоваться, что времена лифта и “eleven” давно прошли…

Читать полностью »

Недавно мы презентовали решение для бизнеса, которое назвали Dialogflow Connector: связка из гугловского Dialogflow и нашего облака Voximplant. Коннектор может работать вместо оператора колл-центра и принимать сложные заказы. Это стало возможным, потому что Dialogflow позволяет уйти от сценария обычного IVR, где клиент вынужден называть слова из заданного набора, на который умеет реагировать интерактивное меню. Гугловская платформа может последовательно получать входные данные от клиента и собирать их воедино – например, чтобы сформировать заказ в интернет-магазине. Вероятно, вы уже слышали модное слово “slot filling”, так вот это он и есть. Под катом вас ждут подробности, как мы делали бота для заказа пиццы – по аналогии вы можете запилить нечто похожее и возрадоваться, что времена лифта и “eleven” давно прошли…

Читать полностью »

Декларативная часть импорта пакетов в Go достаточно скучная и обыденная. Всего лишь нужно указать директиву import и перечислить импортируемые пакеты. Современные IDE делают эту работу за Вас — сами подставляют пакеты в этот раздел, что очень удобно. Кроме того, они сворачивают этот блок, чтобы он не мешал обозревать код. Я же советую развернуть этот блок, и изучить его внимательно — возможно Вы найдете там нечто необычное:

    package main

    import (
        "github.com/vigo5190/goimports-example/a"
        foo "github.com/vigo5190/goimports-example/a"
        . "github.com/vigo5190/goimports-example/b"
        _ "github.com/vigo5190/goimports-example/c"
    )

Если стандартный импорт, импорт с синонимом и _ я встречал, то импорт с . я до этого не видел.

Читать полностью »

Привет! Меня зовут Александр Измайлов. В Badoo я возглавляю команду релиз-инженеров. Я знаю, что во многих компаниях можно присылать изменения кода специально обученному человеку, он их смотрит и добавляет куда следует (например, именно так происходит с кодом Git). А я хочу рассказать о том, как мы автоматизировали этот процесс у нас.

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

Patch me if you can: как мы отлаживаемся на production. Часть 1 - 1

Изображение: источник
Читать полностью »

Введение

В интернетах довольно много информации и споров по поводу выбора sql/nosql подхода, а также плюсах и минусах того или иного KV-хранилища. То, что вы сейчас читаете, не является пособием по rocksdb или агитацией за использование именного этого хранилища и моего драйвера к нему. Я хотел бы поделиться промежуточным результатом работы по оптимизации процесса разработки NIF для Erlang. В данной статье представлен работоспособный драйвер для rocksdb, разработанный за пару вечеров.

Читать полностью »

Компания JetBrains объявляет об открытии магистерской программы «Разработка программного обеспечения / Software Engineering» на базе Университета ИТМО. Приглашаем абитуриентов продолжить своё обучение и получить качественные знания в области программирования и компьютерных наук.

Открытие совместной магистратуры JetBrains и ИТМО - 1

Учебная программа

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

Первые прямые трансляции с места событий появились в России почти 70 лет назад и вели их из передвижной телевизионной станции (ПТС), которая внешне походила на «троллейбус» и позволяла вести эфиры не из студии. А всего лишь три года назад Periscope позволил вместо «троллейбуса» использовать мобильный телефон.

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

Пишем свой протокол поверх UDP - 1

Еще через полгода, летом 2016, Одноклассники запустили свое мобильное приложение OK Live для стриминга, в котором постарались решить эти проблемы.

Александр Тоболь отвечает за техническую часть видео в Одноклассниках и на Highload++ 2017 рассказал про то, как писать свой UDP протокол, и зачем это может потребоваться.

Из расшифровки его доклада вы узнаете все про другие протоколы стриминга видео, какие есть нюансы, и про то, какие уловки иногда требуются.

Говорят, что надо всегда начинать с архитектуры и ТЗ — якобы без этого нельзя! Так и сделаем.
Читать полностью »

И снова здравствуй, дорогой читатель. Вторая глава о похождениях Let’s Encrypt в панели ISPmanager объявляется открытой. В предыдущей статье мы обсудили плагин для ACME v01. В этой поговорим о его эволюции с точки зрения логики работы с пользователем и, разумеется, о протоколе ACME v02 с поддержкой wildcard-сертификатов.

Пишем плагин для получения wildcard-сертификатов Let’s Encrypt - 1
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js