4gophers

...

Погружаемся в каналы

Перевод статьи “Diving Deep Into The Golang Channels”. В этой статье поговорим о реализации каналов в Go и связанных с ними операциях. Конкурентность в Go это больше чем просто синтаксис. Это паттерн. Паттерн это способ решения типичных проблем при работе с конкурентностью когда необходима синхронизация. В Go используется CSP(Communicating Sequential Processes) модель конкуренции и синхронизация достигается через использование каналов. Главная философия конкурентности в Go выражена одной фразой: Не сообщайтесь через разделение памяти.

Бесшовное обновление

Перевод статьи “Graceful upgrades in Go“ Идея бесшовного обновления заключается в смене конфигурации и кода процесса пока он запущен, так что никто ничего не заметил. Если вам кажется что этот способ небезопасный, нежелательный и подверженный ошибкам - то я в целом я с вами согласен. Но иногда вам нужна такая функциональность. Такое часто случается если у вас нет балансера перед вашим приложением. Такой подход используется в Cloudflare и нам пришлось реализовать целый набор различных решений вокруг этой проблемы.

Бесплатные и автоматические SSL сертификаты

Перевод статьи “Free and Automated SSL Certificates with Go“ Сейчас без HTTPS никуда. И это связанно не только с безопасностью. Поисковоки лучше ранжируют сайты работающие по HTTPS в отличии от обычного HTTP. Уже не то время чтобы искаь оправдания и не использовать HTTPS на вашем сайте. В этой статье я я расскажу как написать приложение, которе автоматически генерирует SSL сертификаты и использует их для HTTPS. И самое главное: это совершенно бесплатно!

Инструменты, которые помогут улучшить ваш код

Перевод статьи “Simple tools to improve your go code“ Для Go есть целая куча различных статических анализаторов. С их помощью можно писать более простой и надежный код. Некоторые редакторы уже интегрированы с этими инструментами. При желании вы всегда сможете запустить эти инструменты автономно на ваших исходниках. В этой статье я описал, как мне кажется, самые полезные инструменты. Если у вас появятся идеи сто еще стоит добавить в этот список, то пишите в коментариях.

Strace в 60 строчек код

Перевод статьи Liz Rice “Strace in 60 lines of Go”. Эта статья написана по мотивам моего доклада “A Go Programmer’s Guide to Syscalls”. Вы можете посмотреть код тут. Чтобы объяснить некоторые моменты работы линуксовского ptrace я решила написать свою базовую реализацию strace. И в этой статье я расскажу, как этот самодельный strace работает. Если у вас есть время, то можете посмотреть видео того самого доклада: Брекпоинт в процессе потомке Наша программа перехватывает все сисколы которые были вызваны в процессе работы любой команды, которую мы указываем через аргументы.

Разработка твиттер ботнета на основе цепей Маркова

Перевод “Developing a Twitter botnet based on Markov chains in Go“ Основная идея этой статьи - рассказать как написать твиттер ботнет с автономными ботами которые смогут отвечать на другие твиты текстом сгенерированным с помощью алгоритма цепей Маркова. Так как это обучающий минипроект, то мы будем делать все сами и с самого нуля. Идея совместить алгоритм цепей Маркова и твиттер ботов появилась после общения с x0rz. Цепи Маркова Цепь маркова это последовательность стохастических событий(основанных на вероятности) где текущее состояние переменной или системы не зависит только от предыдущего события и не зависит от всех остальных прошедших событий.