Помните это?
mkdir $GOTPATH/github.com/shindakun/mailgunner mkdir $GOTPATH/github.com/shindakun/mailgunner/client
Сомневаюсь, что помните, если не читали предыдущий пост об отправке электронной почты через MailGun. Прошлый вариант немного небрежный, и я так сделал только для того, чтобы было проще использовать пакет локально с соответствующим примером. Мне это не очень понравилось и я до сих пор не опубликовывал этот пример на GitHub из-за этого. Итак, решил, что могу написать краткий пост как же сделать mailgunner правильным модулем Go.
Ранее мы рассмотрели, как можем использовать шаблоны Go для быстрого использования размеченного текста. На этот раз используем новые навыки форматирования с пользой! Для этого мы притянем пакет mailgunner, который собрали несколько недель назад. Видите, я же говорил вам, что у меня были на него планы.
Сразу же приступим к созданию того, что мы делали в двух предыдущих постах, поэтому, возможно, если вы их еще не читали, захотите уделить время их прочтению.
Мы уже знаем, как отправить электронное письмо через API MailGun. В этот раз мы улучшим код, который написали пару недель назад, чтобы привлечь пользователей с сайта jsonplaceholder. Потом мы проверим новый код на работоспособность и, если вы читали предыдущий пост, вам не составит труда догадаться, что мы будем делать ...
Мы с вами рассмотрели парочку небольших примеров того, как запрашивать данные с удаленного сервера по REST API. На этот раз, вы узнаете как их туда отправлять. Возможно, для этого вы могли бы использовать что-то вроде go-swagger, как предлагал @bgadrian и, вероятно, еще бы и применили это в продакшене. Однако в целях обучения мы просто сделаем, то, что сумеем стандартными средствами из коробки и используем небольшие самописные пакеты на основе стандартной библиотеки.
В прошлый раз мы сделали небольшую программу для запроса REST API и вывода ответа. И это было пусть и не самым полезным, но хорошим опытом. В это раз мы попробуем сделать с программой что-нибудь такое, что можно встретить на практике - надеюсь, я выясню что, прежде, чем мы доберемся до конца поста.
Недавно я размышлял о такой технологии, как REST API. Мне кажется, что работа с SaaS сервисом почти гарантирует, что вы так или иначе будете работать с одним или даже несколькими апи, так что, думаю, имеет смысл задуматься о том, как их правильно использовать. Я немного практиковался, изучал базовые вещи в Go и подумал, что было бы неплохо поделиться своим опытом и продолжить мою серию Learning Go.
Благодаря встроенному в Go пакету net / http довольно легко начать работу с базовым API-интерфейсом. Практически все необходимое для запроса удаленного API можно найти в стандартной библиотеке Go.
В чем разница между функциями htmlentities() и htmlspecialchars() в PHP?
Для начала htmlspecialchars() является подмножеством htmlentities().
В нашем предыдущем посте в блоге мы рассмотрели пользовательские очереди и маршрутизацию задач. Для каждой задачи нам приходилось настраивать, к какой очереди мы хотим, чтобы Celery поставил маршрут. Хотя этот подход хорошо работает для простой настройки, он не подходит для приложений и микросервисов, где многие задачи Celery необходимо направлять в различные рабочие очереди.
Эта часть будет немного отличаться от предыдущих. Я думаю мы немного обновим Go код и, тем самым, избавимся от возможных проблем с очисткой, которые я упоминал в прошлый раз. Как только закончим с этим, займемся версткой кода для создания расширения Chrome! И на этой ноте давайте начнем!
По умолчанию Celery направляет все задачи в одну очередь, и все обработчики, по умолчанию, используют эту очередь. С очередями Celery вы можете контролировать, какие задачи выполняются обработчиками Celery. Это может быть полезно, если у вас есть разные по скорости выполнения задачи, и вы хотите, чтобы медленные задачи не мешали выполнению быстрым. Или если вам нужно отправить какуюто задачу из одного микросервиса в другой.
Присоединяйся в тусовку
Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.