37.1K subscribers
1.46K photos
33 videos
5 files
1.62K links
加入频道
👣 Интересный опрос Go-разработчиков

Было опрошено 500 Go-разработчиков

Опрос затрагивает многие интересные вопросы:
для каких задач используют Go
насколько часто применяют дженерики
какие инструменты в арсенале и т.д.

📎 Слайды опроса

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DevOps Docker
🖥 Как устроены конвейеры CI/CD 💻

Схема взаимодействия контейнерных технологий в рамках работы с привычными инструментами может быть представлена так:

1️⃣Утилита podman с помощью Libpod API обращается к библиотеке libpod, которая вызывает низкоуровневый container runtime (по умолчанию утилиту runc)
containers/podman
Podman Commands

2️⃣Утилита docker с помощью Docker API вызывает сервис dockerd
docker/cli
Docker CLI reference
Docker architecture
Docker API

3️⃣Сервис dockerd вызывает сервис containerd
Dockerd reference

4️⃣Сервис containerd вызывает низкоуровневый container runtime (по умолчанию утилиту runc)
containerd/containerd
Containerd Scope and principles

5️⃣Сервис kubelet с помощью протокола CRI вызывает сервис container runtime (например, containerd или crio)
Container Runtime Interface
Container Runtimes
CRI: the Container Runtime Interface

6️⃣Сервис containerd вызывает низкоуровневый container runtime (по умолчанию runc)
Containerd CRI

7️⃣Сервис cri-o вызывает низкоуровневый container runtime (по умолчанию runc)
cri-o/cri-o

8️⃣Утилита OCI container runtime (по умолчанию runc):

🔘runc с помощью библиотеки libcontainer создает контейнер по runtime-spec, взаимодействуя с подсистемами ядра Linux – пространствами имен (namespaces) и контрольными группами (cgroups)
opencontainers/runc
runc man
opencontainers/runc/libcontainer

🔘crun создает контейнер по runtime-spec, взаимодействуя с подсистемами ядра Linux – пространствами имен (namespaces) и контрольными группами (cgroups)
containers/crun

Docker
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Полезные Go-скрипты для работы с TON

Известная валюта TON, связанная с Telegram, подобралась к $5.

Полезная статья для тех, кто активно работает с блокчейном TON.

В этой статье описывается:
создание заготовки с кошельком, деплой и взаимодействие со смарт-контрактом

детали работы с библиотекой tonutils-go

Статья
Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Apache DevLake

Apache Dev Lake - это платформа данных разработчиков с открытым исходным кодом, которая позволяет собирать, анализировать и визуализировать данные из различных инструментов DevOps.

Apache DevLake предназначен для команд разработчиков, которые хотят лучше разобраться в процессе разработки и внедрить в свою практику основанный на данных подход.

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Библиотека Go для эмбеддинга слов (например, Word2Vec)

Эмбеддинг - это способ преобразования чего-то абстрактного, например слов или изображений в набор чисел и векторов.

Vector("King") - Vector("Man") + Vector("Woman") = Vector("Queen")

#golang #machinelearning

Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🦾 Лучшие Golang библиотеки для создания ботов

Библиотеки для создания ботов и работы с ними.

bot - библиотека для создания Telegram-ботов с нулевыми зависимостями.
echotron - Элегантная и мощная библиотека для Telegram-ботов .
ephemeral-roles - создание Discord ботов
go-chat-bot - IRC, Slack и Telegram-бот, написанный на Go.
go-joe - Библиотека ботов общего назначения, вдохновленная Hubot, но написанная на Go.
go-sarah - фреймворк для создания бота для LINE, Slack, Gitter и других платформ
go-tg - форк официальной клиентской библиотеки docs Go для доступа к Telegram Bot API.
go-tgbot - оболочка Golang Telegram Bot API.
go-twitch-irc - библиотека для написания ботов для twitch.tv чата
golang CryptoTrading Bot - Реализация консольного торгового бота на базе golang для криптовалютных бирж.
govkbot - Простая библиотека ботов Go VK.
hanu - фреймворк для написания Slack-ботов.
kelp - официальный торговый и бот для Stellar DEX. Работает "из коробки", написан на Golang, совместим с централизованными биржами и пользовательскими торговыми стратегиями.
larry - Larry 🐦 - простой генератор твиттер-ботов, который публикует твиты из случайных репозиториев с Github.
margelet - фреймворк для создания ботов Telegram.
micha - Библиотека Go для Telegram bot api.
olivia - Чат-бот, созданный с использованием искусственной нейронной сети.
slack-bot - Готовый к использованию Slack-бот для ленивых разработчиков
slacker - простой в использовании фреймворк для создания Slack-ботов.
slackscot - еще один фреймворк для создания Slack-ботов.
tbot - бот-сервер Telegram с API, похожим на net/http.
telebot - бот-фреймворк Telegram написан на Go.
telego - библиотека Telegram Bot API для Golang
telegram-bot-api - простой и понятный клиент Telegram bot.
teleterm - Telegram Bot Exec.
tenyks - сервис-ориентированный IRC-бот, использующий Redis и JSON для обмена сообщениями.
wayback - бот для Telegram, Mastodon, Slack и других платформ обмена сообщениями.

@Golang_google
👣 Великолепное наглядное руководство по слайсам в Go.

С этой статьей вы углубитесь во внутренние компоненты и посмотрите, как работают слайсы под капотом.

 🔗 Подобнее

#golang #junior

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🗡 Katana

next-generation GO фреймворк для сканирования, парсинга веб-приложений и поиска необходимой информации.

📌 Github

@Golang_google
👣 Почему регулярные в Perl сильно быстрее, чем в Go?

Почему регулярные в Перл быстрее на 40%, чем в Go? Часть простого скрипта анализа лога.
Perl:
$l=~s/\A([^\s]+?) - - \[([^\]]+?)\] \"([^\"]+?)\" ([^\s]+?) ([^\s]+?) \"([^\"]+?)\"(.+)/$1\n$2\n$3\n$4\n$5\n$6\n$7/g;
($ip, $time, $page, $code, $size, $ref, $agent, $els) = split(/\n/, $l);
$page=~s/(GET|HEAD|POST) (.+) (HTTP.+)/$2/;
$hash{$page}++;


Go:
log_format := `^([^ ]+) (-) (-) \[([^\]]+)\] "([^\"]+?)" ([0-9]+) ([^ ]+) "([^"])*" "([^"]*)"`
logParser := regexp.MustCompilePOSIX(log_format)
log_format_get := `^(GET|HEAD|POST) (.+) (HTTP.+)$`
logParserGet := regexp.MustCompilePOSIX(log_format_get)
var hash = make(map[string] int);

analize1 := func (iline *string) {
submatch := logParser.FindSubmatch(strings.TrimSpace(*iline))
if (len(submatch[0])>0){
pg := logParserGet.FindAllStringSubmatch(strings.TrimSpace(submatch[0][5]), 1)
if (len(pg)>0){
hash[pg[0][2]]++
}
}



Ответ прост: оптимизация регулярных выражений в языке Go выполнена хуже, по сравнению с Perl, потому что Perl постарше и в его разработку было вложено больше человек/часов.

А вот на картинке тест скорости в разных языках.

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Реализация ECMAScript 5.1 на чистом Go с акцентом на соответствие стандартам чистого кода и производительности.
#golang

Если вам необходимо добавить функциональность JavaScript в свой проект на Go, просто воспользуйтесь goja - движком ECMAScript/JavaScrip.

Этот инструмент позволяет интегрировать JavaScript непосредственно в Go проекты, без необходимости использования внешних JS-движков👇

📌 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM