Особенности разработки Telegram бота с Google API в Docker

Коротко о боте: получает список YouTube-каналов пользователя и уведомляет о новых видео с возможностью напомнить о нем позже.


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

На какие вопросы ответит статья:

  • Где взять внешний адрес сайта для Webhook
  • Где взять HTTPS-сертификат как его использовать, чтобы Telegram ему доверял
  • Как передавать данные и обрабатывать нажатия на Inline-кнопки
  • Как получить вечный OAuth токен для Google API
  • Как передать данные пользователя через OAuth callback url
  • Как получить бесплатный домен 3 уровня

Стэк:

  1. Back-end: Node.js + Express.js
  2. БД: Mongo.js + mongoose
  3. Пакетный менеджер: Yarn (он действительно быстрый)
  4. Telegram-бот фреймворк: Telegraf
  5. Продакшн: Docker + Docker Compose + Vscale.io

Читать дальше →
Особенности разработки Telegram бота с Google API в Docker
Source: habrahabr

Из АЭС в дата-центры: новая тенденция в мире телекоммуникаций


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


Существует ряд важных условий при выборе такого места. Это определенный климат, наличие энергетической и сетевой инфраструктуры, относительная близость населенных пунктов и т.п. Во многих регионах, где все эти условия можно выполнить, возникает одна проблема — стоимость аренды или покупки земли, а также стоимость строительства. Для того, чтобы избежать значительных затрат, разработчики предлагают самые разные варианты, вплоть до создания плавучих дата-центров (что вполне реально и реализуется сейчас). Есть и более необычные предложения — например, преобразовать заброшенную АЭС в ЦОД.
Читать дальше →
Из АЭС в дата-центры: новая тенденция в мире телекоммуникаций
Source: habrahabr

Пост №2941732

Автор: kopcap2012

Joycasino добрался и до игр.Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/2941732″ }, «headline»: «Joycasino добрался и до игр. / Escape from Tarkov :: coub :: Joycasino :: Игры», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/coub-%D0%98%D0%B3%D1%80%D1%8B-Joycasino-Escape-from-Tarkov-3589075.jpeg», «height»: 720, «width»: 1280 }, «datePublished»: «2017-01-07T23:27:55+03:00», «dateModified»: «2017-01-07T23:27:55+03:00», «author»: { «@type»: «Person», «name»: «kopcap2012» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №2941732
Source: Joyreactor

Классы типов в Scala (с небольшим обзором библиотеки cats)

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

Читать дальше →
Классы типов в Scala (с небольшим обзором библиотеки cats)
Source: habrahabr

О сравнении объектов по значению — 5: Structure Equality Problematic

В предыдущей публикации мы вывели наиболее полный и корректный способ реализации сравнения по значению объектов — экземпляров классов (являющихся ссылочными типами — Reference Types) для платформы .NET.

Каким образом нужно модифицировать предложенный способ для корректной реализации сравнения по значению объектов — экземпляров структур (являющихся «типами по значению» — Value Types)?

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

Для предопределенных типов, таких как Boolean или Int32, под сравнением по значению понимается сравнение непосредственно значений экземпляров структур.

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

(Подробности см. в описании метода ValueType.Equals(Object) и операторов == и !=)

Также при этом автоматически определенным образом реализуется метод ValueType.GetHashCode(), перекрывающий метод Object.GetHashCode().

И в этом случае есть несколько существенных подводных камней:

Читать дальше →
О сравнении объектов по значению — 5: Structure Equality Problematic
Source: habrahabr

Пост №2941694

Автор: SoulMorphine

Мой кот «Кот»Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/2941694″ }, «headline»: «Мой кот «Кот» / сибирский :: котэ (прикольные картинки с кошками) :: красивые картинки», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D0%BA%D0%BE%D1%82%D1%8D-%D1%81%D0%B8%D0%B1%D0%B8%D1%80%D1%81%D0%BA%D0%B8%D0%B9-%D0%BA%D1%80%D0%B0%D1%81%D0%B8%D0%B2%D1%8B%D0%B5-%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8-3588995.jpeg», «height»: 2160, «width»: 2160 }, «datePublished»: «2017-01-07T22:45:25+03:00», «dateModified»: «2017-01-07T22:45:25+03:00», «author»: { «@type»: «Person», «name»: «SoulMorphine» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №2941694
Source: Joyreactor

Пост №2941681

Автор: ashkael

by Eliminated YOUR MOMРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/2941681″ }, «headline»: «Overwatch Comics :: Lucio :: Junkrat :: Overwatch :: Rick and Morty crossover :: Rick and Morty (Рик и Морти, рик и морти, ) :: Blizzard (Blizzard Entertainment) :: crossover :: фэндомы», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/Blizzard-%D1%84%D1%8D%D0%BD%D0%B4%D0%BE%D0%BC%D1%8B-Rick-and-Morty-crossover-Rick-and-Morty-3588960.jpeg», «height»: 772, «width»: 1200 }, «datePublished»: «2017-01-07T22:35:47+03:00», «dateModified»: «2017-01-07T22:35:47+03:00», «author»: { «@type»: «Person», «name»: «ashkael» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «by Eliminated YOUR MOM» }
Комментировать 
Пост №2941681
Source: Joyreactor

Пост №2941673

Автор: Valera Panov

Твой кот, когда ты уходишь на работу. Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/2941673″ }, «headline»: «Твой кот, когда ты уходишь на работу. / милота :: язык :: работа :: кровать :: котэ (прикольные картинки с кошками)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D0%BA%D0%BE%D1%82%D1%8D-%D0%BC%D0%B8%D0%BB%D0%BE%D1%82%D0%B0-%D1%8F%D0%B7%D1%8B%D0%BA-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-3588951.jpeg», «height»: 413, «width»: 700 }, «datePublished»: «2017-01-07T22:28:34+03:00», «dateModified»: «2017-01-07T22:28:34+03:00», «author»: { «@type»: «Person», «name»: «Valera Panov» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №2941673
Source: Joyreactor

Настройка SPICE-консоли виртуальных машин в OpenStack

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

В данном статье речь пойдет о том, как настроить в своей инсталляции Опенстека гораздо более быструю SPICE-консоль.
Читать дальше →
Настройка SPICE-консоли виртуальных машин в OpenStack
Source: habrahabr

Пост №2941664

Автор: lolwooot

Пусть звезды сойдутся в 2017Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/2941664″ }, «headline»: «Пусть звезды сойдутся в 2017 / Unspeakable Vault of Doom :: vauде 547», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/Unspeakable-Vault-of-Doom-vau%D0%B4%D0%B5-547-3588938.jpeg», «height»: 1028, «width»: 900 }, «datePublished»: «2017-01-07T22:19:01+03:00», «dateModified»: «2017-01-07T22:19:01+03:00», «author»: { «@type»: «Person», «name»: «lolwooot» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №2941664
Source: Joyreactor