#статья #diy
Свежая статья о разработке чат-бота. На этот раз - сразу для нескольких мессенджеров.
https://habr.com/ru/post/649413/
Свежая статья о разработке чат-бота. На этот раз - сразу для нескольких мессенджеров.
https://habr.com/ru/post/649413/
Хабр
Чат-бот под несколько месенджеров
Привет, я Паша, руковожу эксплуатацией инфраструктуры крупного хайлоад-проекта. Хочу поделиться опытом разработки бота на Golang для различных мессенджеров. Всё началось с того, что у нас был бот на...
👍1 1
Slice Tricks в графическом предоставлении
https://ueokande.github.io/go-slice-tricks/
Текстовый вариант здесь
#шпаргалка
https://ueokande.github.io/go-slice-tricks/
Текстовый вариант здесь
#шпаргалка
ueokande.github.io
Go Slice Tricks Cheat Sheet
Web site created using create-react-app
#статья #dyi
Интересная статья о написании "игрушечного" DNS-резолвера. Также автор простым языком даёт необходимый ликбез.
Хороший способ получше разобраться в устройстве DNS и потрогать его своими руками.
https://jvns.ca/blog/2022/02/01/a-dns-resolver-in-80-lines-of-go/
Интересная статья о написании "игрушечного" DNS-резолвера. Также автор простым языком даёт необходимый ликбез.
Хороший способ получше разобраться в устройстве DNS и потрогать его своими руками.
https://jvns.ca/blog/2022/02/01/a-dns-resolver-in-80-lines-of-go/
Julia Evans
A toy DNS resolver
👍4 1
#репозиторий #проект #утилита
Cheat - консольная утилита для создания и просмотра "шпаргалок" для командной строки (написана на Go).
Помогает работать с командами, которые мы часто используем, но недостаточно часто, чтобы запомнить.
Пример:
Нам понадобилось поработать с архивом с помощью tar, пишем:
Cheat - консольная утилита для создания и просмотра "шпаргалок" для командной строки (написана на Go).
Помогает работать с командами, которые мы часто используем, но недостаточно часто, чтобы запомнить.
Пример:
Нам понадобилось поработать с архивом с помощью tar, пишем:
cheat tarПолучаем:
# To extract an uncompressed archive:https://github.com/cheat/cheat
tar -xvf '/path/to/foo.tar'
# To extract a .gz archive:
tar -xzvf '/path/to/foo.tgz'
# To create a .gz archive:
tar -czvf '/path/to/foo.tgz' '/path/to/foo/'
# To extract a .bz2 archive:
tar -xjvf '/path/to/foo.tgz'
# To create a .bz2 archive:
tar -cjvf '/path/to/foo.tgz' '/path/to/foo/'
GitHub
GitHub - cheat/cheat: cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help…
cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help remind *nix system administrators of options for commands that they use frequently, but not ...
🔥4
#репозиторий #проект
Коллекция алгоритмов, реализованных на Go в образовательных целях.
Присутствуют как самые простые - поиск максимума с помощью обычного цикла, так и более интересные - реализация хэш-функции sha256.
https://github.com/TheAlgorithms/Go
Коллекция алгоритмов, реализованных на Go в образовательных целях.
Присутствуют как самые простые - поиск максимума с помощью обычного цикла, так и более интересные - реализация хэш-функции sha256.
https://github.com/TheAlgorithms/Go
GitHub
Go/math/max/max.go at master · TheAlgorithms/Go
Algorithms and Data Structures implemented in Go for beginners, following best practices. - TheAlgorithms/Go
👍5
#статья
Отличная статья о том, что такое пул соединений в MySQL, почему он необходим, и как его правильно настроить для Go-клиента.
Тема описана очень подробно, читается интересно.
В начале присутствует краткий ликбез про клиент-серверный протокол MySQL.
https://habr.com/ru/company/citymobil/blog/583558/
Отличная статья о том, что такое пул соединений в MySQL, почему он необходим, и как его правильно настроить для Go-клиента.
Тема описана очень подробно, читается интересно.
В начале присутствует краткий ликбез про клиент-серверный протокол MySQL.
https://habr.com/ru/company/citymobil/blog/583558/
Хабр
Go и MySQL: настраиваем пул соединений
Каждый день мы пишем код в условиях высоких нагрузок, и нередко в таких случаях сталкиваемся с проблемами, связанными с базой данных. Мы в компании используем MySQL, поэтому я расскажу про...
🔥3👍1
#статья
Как использовать пакет dockertest в Go.
В чём суть. Когда мы тестируем свой код, нам часто требуются различные внешние сервисы, чаще всего - база данных. Решить эту проблему можно разными способами - поднять локально в докере, использовать QA-стенд (сервер для тестов), использовать моки и т.п.
Но самый простой и удобный способ, на мой взгляд - автоматическое поднятие контейнера в докере при запуске теста. Тогда вашим тестам не потребуется ни какое внешнее окружение - запускаем тест, поднимаются необходимые контейнеры с зависимостями, прогоняются тесты, контейнеры удаляются.
Сделать это можно, например, с помощью библиотеки dockertest. В статье на наглядном примере демонстрируется, как этим пользоваться.
https://eax.me/golang-dockertest/
Как использовать пакет dockertest в Go.
В чём суть. Когда мы тестируем свой код, нам часто требуются различные внешние сервисы, чаще всего - база данных. Решить эту проблему можно разными способами - поднять локально в докере, использовать QA-стенд (сервер для тестов), использовать моки и т.п.
Но самый простой и удобный способ, на мой взгляд - автоматическое поднятие контейнера в докере при запуске теста. Тогда вашим тестам не потребуется ни какое внешнее окружение - запускаем тест, поднимаются необходимые контейнеры с зависимостями, прогоняются тесты, контейнеры удаляются.
Сделать это можно, например, с помощью библиотеки dockertest. В статье на наглядном примере демонстрируется, как этим пользоваться.
https://eax.me/golang-dockertest/
eax.me
Тестирование проектов на Go с dockertest | Записки программиста
Допустим, мы разрабатываем микросервис на языке Go. Мы успешно написали модульные тесты. Но также требуется написать и другие тесты, которые проверяли бы, что п
👍3🔥1🤔1
#статья #diy #english
Делаем load balancer на Go (Implement a load balancer in Golang)
Как обычно, хороший способ понять, как что-то работает - попробовать сделать это своими руками.
Статья начинается с небольшого ликбеза по балансировщикам, и далее показан пример реализации с подробными пояснениями.
https://dev.to/bmf_san/implement-a-load-balancer-in-golang-8gj
Делаем load balancer на Go (Implement a load balancer in Golang)
Как обычно, хороший способ понять, как что-то работает - попробовать сделать это своими руками.
Статья начинается с небольшого ликбеза по балансировщикам, и далее показан пример реализации с подробными пояснениями.
https://dev.to/bmf_san/implement-a-load-balancer-in-golang-8gj
DEV Community
Implement a load balancer in Golang
Overview This article is a translation of Golangでロードバランサーを実装する This article is the 24th...
❤5
#новость #generics #репозиторий
Дженерики наконец-то вышли, дождались! ❤️
Состоялся релиз Go 1.18, в который они вошли.
В качестве знакомства, предлагаю взглянуть на данный репозиторий. Это библиотека в стиле Lodash (крайне популярной библиотеки "на все случаи жизни" из мира JS).
Конечно, тащить в прод точно не стоит, да и авторы такого не подразумевают. Это просто набор экспериментов с дженериками - очень полезно для ознакомления и практики.
Дженерики наконец-то вышли, дождались! ❤️
Состоялся релиз Go 1.18, в который они вошли.
В качестве знакомства, предлагаю взглянуть на данный репозиторий. Это библиотека в стиле Lodash (крайне популярной библиотеки "на все случаи жизни" из мира JS).
Конечно, тащить в прод точно не стоит, да и авторы такого не подразумевают. Это просто набор экспериментов с дженериками - очень полезно для ознакомления и практики.
🤔4❤2🔥1
#статья
Планировщик Go
Пожалуй, лучшие статьи про устройство планировщика из всех, что я встречал.
Состоит из двух частей.
Оригинал (англ.): OS Scheduler и Go Scheduler
Перевод: Часть I — Планировщик ОС и Часть II — Планировщик Go
В первой части даются базовые основы планировщика ОС, необходимые для понимания основной темы: потоки, переключение контекста, кэш процессора и др.
Во второй уже непосредственно про планировщик Go: в деталях и с примерами разобрано переключение контекста между горутинами и различные нюансы.
Местами читается непросто, особенно для новичка, но оно того точно стоит.
Планировщик Go
Пожалуй, лучшие статьи про устройство планировщика из всех, что я встречал.
Состоит из двух частей.
Оригинал (англ.): OS Scheduler и Go Scheduler
Перевод: Часть I — Планировщик ОС и Часть II — Планировщик Go
В первой части даются базовые основы планировщика ОС, необходимые для понимания основной темы: потоки, переключение контекста, кэш процессора и др.
Во второй уже непосредственно про планировщик Go: в деталях и с примерами разобрано переключение контекста между горутинами и различные нюансы.
Местами читается непросто, особенно для новичка, но оно того точно стоит.
Ardan Labs
Scheduling In Go : Part I - OS Scheduler
Ardan Labs is trusted by small startups and Fortune 500 companies to train their engineers and develop business software solutions and applications.
🔥11
#статья #структуры_данных #детали_реализации #тонкости_go
Хэш таблицы в Go. Детали реализации.
Статья начинается с небольшого ликбеза, а дальше самое интересное - подробности реализации Map в Go:
- как осуществляется инициализация, и почему без неё можно получить панику
- как map растёт, и почему порой лучше выделить память заранее (да, так можно поступать не только со слайсами)
- почему нельзя взять адрес значения
- как устроены бакеты
и др.
https://habr.com/ru/post/457728/
——
Кстати, если вы хотите узнать побольше про хэш-таблицы (без привязки к языку), то у меня на канале есть простое и понятное видео об этом: Хэш-таблицы за 10 минут.
Хэш таблицы в Go. Детали реализации.
Статья начинается с небольшого ликбеза, а дальше самое интересное - подробности реализации Map в Go:
- как осуществляется инициализация, и почему без неё можно получить панику
- как map растёт, и почему порой лучше выделить память заранее (да, так можно поступать не только со слайсами)
- почему нельзя взять адрес значения
- как устроены бакеты
и др.
https://habr.com/ru/post/457728/
——
Кстати, если вы хотите узнать побольше про хэш-таблицы (без привязки к языку), то у меня на канале есть простое и понятное видео об этом: Хэш-таблицы за 10 минут.
Хабр
Хэш таблицы в Go. Детали реализации
Порассуждаем об имплементации map в языке без дженериков, рассмотрим что такое хэш таблица, как она устроена в Go, какие есть плюсы и минусы данной реализации...
🔥8
#статья #детали_реализации #тонкости_go #slice
Изменения функции append в Go 1.18
Небольшая заметка о том, как поменялась формула увеличения capacity среза при добавлении новых элементов в недавнем релизе Go 1.18.
Если вы знали, как это было устроено раньше - ваши знания чуток устарели, стоит обновить.
Если не знали, то для вас тут есть неплохой краткий ликбез об этом - будете знать.
Я бы не назвал это "must have" знанием, но полезно понимать нюансы работы языка под капотом.
Тем более, это статейка на 5-10 минут - можно осилить за чашечкой кофе ☕️
https://habr.com/ru/post/660827/
Изменения функции append в Go 1.18
Небольшая заметка о том, как поменялась формула увеличения capacity среза при добавлении новых элементов в недавнем релизе Go 1.18.
Если вы знали, как это было устроено раньше - ваши знания чуток устарели, стоит обновить.
Если не знали, то для вас тут есть неплохой краткий ликбез об этом - будете знать.
Я бы не назвал это "must have" знанием, но полезно понимать нюансы работы языка под капотом.
Тем более, это статейка на 5-10 минут - можно осилить за чашечкой кофе ☕️
https://habr.com/ru/post/660827/
Хабр
Изменения функции append в Go 1.18
Совсем недавно произошел релиз Go 1.18, гвоздем программы стали дженерики. Но про этот факт уже достаточно статей, а мне нечего к ним добавить. Однако, я не смог найти ни одного поста про этот кусочек...
👍6🔥2❤1
Не совсем про Go, но для Go-разработчиков это супер-полезная штука.
Поймете на фундаментальном уровне, зачем нужен пакет sync, как с ним работать, и почему без них нельзя позволять нескольким горутинам работать с общим ресурсом.
Поймете на фундаментальном уровне, зачем нужен пакет sync, как с ним работать, и почему без них нельзя позволять нескольким горутинам работать с общим ресурсом.
👍4🔥2
Forwarded from Николай Тузов
#game4devs #concurrency
Если вы плохо понимаете проблемы параллельного программирования и конкурентного доступа, очень советую пройти игру - The Deadlock Empire.
Прохождение довольно интересное, быстро затягивает. Те кто осилит, на выходе будут хорошо понимать, почему и как параллельные процессы могут приводить к поломкам, как с этим бороться с помощью примитивов синхронизации и т.п.
Самое главное - вы поймёте, что безопасный параллельный код писать очень сложно, а порой даже невозможно (всегда будет оставаться маленькая вероятность фэйла, с которой придётся жить).
https://deadlockempire.github.io/
Если вы плохо понимаете проблемы параллельного программирования и конкурентного доступа, очень советую пройти игру - The Deadlock Empire.
Прохождение довольно интересное, быстро затягивает. Те кто осилит, на выходе будут хорошо понимать, почему и как параллельные процессы могут приводить к поломкам, как с этим бороться с помощью примитивов синхронизации и т.п.
Самое главное - вы поймёте, что безопасный параллельный код писать очень сложно, а порой даже невозможно (всегда будет оставаться маленькая вероятность фэйла, с которой придётся жить).
https://deadlockempire.github.io/
deadlockempire.github.io
The Deadlock Empire
Slay dragons, learn
concurrency! Play the cunning Scheduler, exploit flawed
programs and defeat the armies of the Parallel Wizard.
concurrency! Play the cunning Scheduler, exploit flawed
programs and defeat the armies of the Parallel Wizard.
👍5🔥4🤔1