История создания Гофера - маскота Golang 💙
На мой взгляд, это самый удачный и популярный маскот IT-технологии.
Интересно, что впервые Гофер был нарисован задолго до создания самого Go.
https://go.dev/blog/gopher
#gopher #mascot #history
На мой взгляд, это самый удачный и популярный маскот IT-технологии.
Интересно, что впервые Гофер был нарисован задолго до создания самого Go.
https://go.dev/blog/gopher
#gopher #mascot #history
Разбор интересных нововведений в Go 1.19
Автор не просто выделил интересные моменты, но и попытался подробно их разжевать, объясняя основную суть и мотивацию авторов.
О чем пойдет речь:
- Область действия типов в объявлениях методов
- Модель памяти
- Новые типы в пакете sync/atomic
- Soft Memory Limit
- Оптимизация
- Прочие минорные изменения
В целом версия 1.19 не внесла каких-то больших и значимых изменений в Go по сравнению с 1.18. В статье опущена часть минорных трансформаций. С их полным списком можно ознакомиться на странице релиза 1.19. Так как официальный релиз намечен на август, можно предположить, что ещё какие-то изменения обязательно появятся.
https://habr.com/ru/company/ozontech/blog/674190/
Автор не просто выделил интересные моменты, но и попытался подробно их разжевать, объясняя основную суть и мотивацию авторов.
О чем пойдет речь:
- Область действия типов в объявлениях методов
- Модель памяти
- Новые типы в пакете sync/atomic
- Soft Memory Limit
- Оптимизация
- Прочие минорные изменения
В целом версия 1.19 не внесла каких-то больших и значимых изменений в Go по сравнению с 1.18. В статье опущена часть минорных трансформаций. С их полным списком можно ознакомиться на странице релиза 1.19. Так как официальный релиз намечен на август, можно предположить, что ещё какие-то изменения обязательно появятся.
https://habr.com/ru/company/ozontech/blog/674190/
tip.golang.org
Go 1.19 Release Notes - The Go Programming Language
go-git - реализация Git на Go
Это не просто клиент, а полноценная реализация на чистом Go.
Она создана для удобной интеграции Git в сервисы, написанные на Go.
go-git ориентирован на расширяемость, совместимость и поддерживает большинство подключаемых API, которые описаны здесь.
Пример использования:
Это не просто клиент, а полноценная реализация на чистом Go.
Она создана для удобной интеграции Git в сервисы, написанные на Go.
go-git ориентирован на расширяемость, совместимость и поддерживает большинство подключаемых API, которые описаны здесь.
Пример использования:
_, err := git.PlainClone("/tmp/foo", false, &git.CloneOptions{В результате, мы получаем экземпляр Repository и можем делать с ним всякое:
URL: "https://github.com/go-git/go-git",
Progress: os.Stdout,
})
————
Counting objects: 4924, done.
Compressing objects: 100% (1333/1333), done.
Total 4924 (delta 530), reused 6 (delta 6), pack-reused 3533
// получаем ветку по указателю HEADЧуть больше информации см. здесь.
ref, err := r.Head()
// получаем объект коммита по указателю ref
commit, err := r.CommitObject(ref.Hash())
// получаем историю коммита
history, err := commit.History()
// проходим по коммитам и выводим каждый из них
for _, c := range history {
fmt.Println(c)
}
GitHub
GitHub - go-git/go-git: A highly extensible Git implementation in pure Go.
A highly extensible Git implementation in pure Go. - go-git/go-git
GoGetPodcast #3: GameDev в Go
http://tuzov.link/gogetpodcast3
Обсудили вопросы, связанные с геймдевом на Go: подходит ли Go для геймдева? Какие основные плюсы и минусы? На какие игровые движки стоит обратить внимание? И др.
В гостях были Искандер Шарипов и Алексей Акулович, которые увлекаются разработкой игр на Go в качестве хобби.
Глеб Яльчик, постоянный участник подкаста, работает в геймдеве, и имеет в этой области огромный опыт.
#gogetpodcast
http://tuzov.link/gogetpodcast3
Обсудили вопросы, связанные с геймдевом на Go: подходит ли Go для геймдева? Какие основные плюсы и минусы? На какие игровые движки стоит обратить внимание? И др.
В гостях были Искандер Шарипов и Алексей Акулович, которые увлекаются разработкой игр на Go в качестве хобби.
Глеб Яльчик, постоянный участник подкаста, работает в геймдеве, и имеет в этой области огромный опыт.
#gogetpodcast
Небольшая статья про кодогенерацию в Go
https://habr.com/ru/company/sbermarket/blog/676486/
Представляет из себя подборку популярных инструментов и подходов для кодогенерации с кратким пояснением происходящего.
Для новичков будет отличной отправной точкой для знакомства с кодогенерацией. Опытным же разработчикам может помочь закрыть пробелы в конкретных областях.
Список инструментов:
- Для создания проекта: buffalo, beego.
- Для создания веб-сервера и клиента по спецификации: swag, go-swagger, oapi-codegen, openapi-generator.
- Для генерации метрик: gowrap.
- Для создания моков: mockery, gomock.
- Для инициализации графа зависимостей: wire.
- Для запуска генераторов одной строкой: go generate.
#article #code_generation #compilation
https://habr.com/ru/company/sbermarket/blog/676486/
Представляет из себя подборку популярных инструментов и подходов для кодогенерации с кратким пояснением происходящего.
Для новичков будет отличной отправной точкой для знакомства с кодогенерацией. Опытным же разработчикам может помочь закрыть пробелы в конкретных областях.
Список инструментов:
- Для создания проекта: buffalo, beego.
- Для создания веб-сервера и клиента по спецификации: swag, go-swagger, oapi-codegen, openapi-generator.
- Для генерации метрик: gowrap.
- Для создания моков: mockery, gomock.
- Для инициализации графа зависимостей: wire.
- Для запуска генераторов одной строкой: go generate.
#article #code_generation #compilation
Хабр
Как Go-разработчику сэкономить несколько недель жизни
Привет! Меня зовут Александр Сусиков, я тимлид команды, которая занимается платформой PaaS для СберМаркета. В этой статье я расскажу, как повысить скорость разработки с помощью кодогенерации. Зачем...
Почему важно хорошо оформлять Pull Request'ы и коммиты
Многие недооценивают важность правильного оформления PRов и коммитов.
В статье подробно и на конкретным примере рассказывается, почему этому стоит уделять особое внимание.
#статья #разработка
Многие недооценивают важность правильного оформления PRов и коммитов.
В статье подробно и на конкретным примере рассказывается, почему этому стоит уделять особое внимание.
#статья #разработка
tuzov.su
Почему важно хорошо оформлять Pull Request'ы и коммиты | Николай Тузов
Блог о разработке и технологиях
Видео про внутреннее устройство каналов в Go
В видео разобрано:
- как как реализована потокобезопасноть каналов
- как в буферизированном канале хранятся данные
- какие интересные оптимизации там есть
- как работает оператор Select
- как каналы закрываются и др.
Теория чередуется с разбором исходного кода каналов. Также присутствует препарирование каналов через в дебагере.
https://www.youtube.com/watch?v=ZTJcaP4G4JM
#видео #детали_реализации #channels
В видео разобрано:
- как как реализована потокобезопасноть каналов
- как в буферизированном канале хранятся данные
- какие интересные оптимизации там есть
- как работает оператор Select
- как каналы закрываются и др.
Теория чередуется с разбором исходного кода каналов. Также присутствует препарирование каналов через в дебагере.
https://www.youtube.com/watch?v=ZTJcaP4G4JM
#видео #детали_реализации #channels
YouTube
Как на самом деле устроены каналы в Golang? | Golang channels internals
Разбираемся со внутренним устройством каналов: как реализована потокобезопасноть, как в буферизированном канале хранятся данные, какие интересные оптимизации там есть, как работает оператор Select, как каналы закрываются и др.
----
❤️ Если у вас есть желание…
----
❤️ Если у вас есть желание…
GoGetPodcast #4: собеседование Go-разработчика глазами нанимателя
Обсудили вопросы, которые не дают покоя многим разработчикам:
- Берут ли на работу новичков?
- Зачем на собеседованиях нужны алгоритмы и live-coding?
- Достаточно ли скинуть ссылку на pet-project на GitHub'е?
- Играет ли роль высшее образование?
- Играет ли роль возраст?
и др.
Выпуск доступен на всех площадках, ссылки тут.
#gogetpodcast #podcast
Обсудили вопросы, которые не дают покоя многим разработчикам:
- Берут ли на работу новичков?
- Зачем на собеседованиях нужны алгоритмы и live-coding?
- Достаточно ли скинуть ссылку на pet-project на GitHub'е?
- Играет ли роль высшее образование?
- Играет ли роль возраст?
и др.
Выпуск доступен на всех площадках, ссылки тут.
#gogetpodcast #podcast
gogetpodcast.ru
Выпуск #4: Собеседование Go-разработчика глазами нанимателя | Go Get Podcast
Обсуждаем язык Go и всё, что с ним связано
Golang Дайджест
GoGetPodcast #4: собеседование Go-разработчика глазами нанимателя Обсудили вопросы, которые не дают покоя многим разработчикам: - Берут ли на работу новичков? - Зачем на собеседованиях нужны алгоритмы и live-coding? - Достаточно ли скинуть ссылку…
А теперь этот выпуск можно посмотреть и на YouTube, посмотреть на лица участников 😊
https://youtu.be/SPj-Kg2fTCk
https://youtu.be/SPj-Kg2fTCk
YouTube
Собеседование Go-разработчика глазами нанимателя | GoGetPodcast №4
Обсудили вопросы, которые не дают покоя многим разработчикам:
- Берут ли на работу новичков?
- Зачем на собеседованиях нужны алгоритмы и live-coding?
- Достаточно ли скинуть ссылку на pet-project на GitHub'е?
- Играет ли роль высшее образование?…
- Берут ли на работу новичков?
- Зачем на собеседованиях нужны алгоритмы и live-coding?
- Достаточно ли скинуть ссылку на pet-project на GitHub'е?
- Играет ли роль высшее образование?…
Learn X in Y minutes, where X=Go
https://learnxinyminutes.com/docs/go/
Ещё один интересный способ быстро познакомиться с Go. Подходит для людей, которые уже умеют программировать на другом языке. Но это даже быстрее, чем Tour of Go!
Мои комментарии тут излишни, просто взгляните своими глазами.
Есть русскоязычный вариант, но он выглядит чуть менее актуальным.
Кроме Go, на сайте разобрано множество других языков. Например, JSON и Си.
#study #article
https://learnxinyminutes.com/docs/go/
Ещё один интересный способ быстро познакомиться с Go. Подходит для людей, которые уже умеют программировать на другом языке. Но это даже быстрее, чем Tour of Go!
Мои комментарии тут излишни, просто взгляните своими глазами.
Есть русскоязычный вариант, но он выглядит чуть менее актуальным.
Кроме Go, на сайте разобрано множество других языков. Например, JSON и Си.
#study #article
Как устроена функция time.Sleep() в Go?
Каждый из вас наверняка пользовался этой функцией, заставляющей горутину немного подождать. Но заглядывали ли вы ей под капот?
В этой статье предлагается туда заглянуть.
#article #internals
Каждый из вас наверняка пользовался этой функцией, заставляющей горутину немного подождать. Но заглядывали ли вы ей под капот?
В этой статье предлагается туда заглянуть.
#article #internals
Николай Тузов - блог
Как устроена функция time.Sleep() в Golang
Вам наверняка не раз доводилось писать такой код:
func main() {
// ...
time.Sleep(4 * time.Second)
// ...
}
Он заставляет программу (горутину) подождать указанное количество секунд. Но что происходит внутри функции time.Sleep()? Давайте разберемся.
func main() {
// ...
time.Sleep(4 * time.Second)
// ...
}
Он заставляет программу (горутину) подождать указанное количество секунд. Но что происходит внутри функции time.Sleep()? Давайте разберемся.
Официальный гайд по GoDoc-комментам
Мало кто знает, но такой гайд существует. Если хочешь стать godoc-мастером, очень рекомендую. Коллеги будут очень благодарны.
Здесь подробно разобрано:
- что такое godoc
- в каких случаях стоит писать такие комменты (спойлер - every exported name should have a doc comment)
- как их правильно писать в разных случаях (для типов, функций, констант, переменных и т.п.)
- как всё это форматировать
Всё разобрано очень подробно, приводится множество примеров.
#article #godoc #codestyle
Мало кто знает, но такой гайд существует. Если хочешь стать godoc-мастером, очень рекомендую. Коллеги будут очень благодарны.
Здесь подробно разобрано:
- что такое godoc
- в каких случаях стоит писать такие комменты (спойлер - every exported name should have a doc comment)
- как их правильно писать в разных случаях (для типов, функций, констант, переменных и т.п.)
- как всё это форматировать
Всё разобрано очень подробно, приводится множество примеров.
#article #godoc #codestyle
GoGetPodcast #5: правила хорошего тона для разработчика
В выпуске обсуждаются вопросы, связанные с написанием хорошего кода в Go: нужен ли он? Насколько важен? Экономит ли "грязный код" время? Как научиться писать хороший код? И др.
Есть видео-вариант на YouTube и аудио-вариант на всех площадках подкастов, ссылки тут.
#gogetpodcast
В выпуске обсуждаются вопросы, связанные с написанием хорошего кода в Go: нужен ли он? Насколько важен? Экономит ли "грязный код" время? Как научиться писать хороший код? И др.
Есть видео-вариант на YouTube и аудио-вариант на всех площадках подкастов, ссылки тут.
#gogetpodcast
YouTube
Чистый код в Go - правила хорошего тона для разработчика | GoGetPodcast №5
Обсуждаем вопросы, связанные с написанием хорошего кода в Go: нужен ли он? Насколько важен? Экономит ли "грязный код" время? Как научиться писать хороший код? И др.
----
Выпуск на других площадках: http://tuzov.link/gogetpodcast5
Другие выпуски: https:/…
----
Выпуск на других площадках: http://tuzov.link/gogetpodcast5
Другие выпуски: https:/…
Что должен вернуть конструктор в Go?
Anonymous Poll
50%
Реализацию
14%
Интерфейс
20%
Зависит от ситуации
16%
Не знаю / Посмотреть ответы
Forwarded from Николай Тузов
GoGetPodcast #6: монорепозиторий vs мультирепозиторий
Будем обсуждать плюсы и минусы монорепозитория. Это частая тема холиваров, и мы решили внести свой вклад 😊
Когда и где: уже завтра (15.11), в 09:30 утра. Трансляция будет на моём YouTube-канале, запись чуть позже появится там же.
Участники:
- Глеб Яльчик - тех. директор компании Gaijin,
- Алексей Акулович - inDriver (ранее Tinkoff, ВКонтакте)
#gogetpodcast #анонс
Будем обсуждать плюсы и минусы монорепозитория. Это частая тема холиваров, и мы решили внести свой вклад 😊
Когда и где: уже завтра (15.11), в 09:30 утра. Трансляция будет на моём YouTube-канале, запись чуть позже появится там же.
Участники:
- Глеб Яльчик - тех. директор компании Gaijin,
- Алексей Акулович - inDriver (ранее Tinkoff, ВКонтакте)
#gogetpodcast #анонс
Golang Дайджест
GoGetPodcast #6: монорепозиторий vs мультирепозиторий Будем обсуждать плюсы и минусы монорепозитория. Это частая тема холиваров, и мы решили внести свой вклад 😊 Когда и где: уже завтра (15.11), в 09:30 утра. Трансляция будет на моём YouTube-канале, запись…
Выпуск уже на YouTube и аудио-площадках
YouTube
Монорепозиторий VS Мультирепозиторий | GoGetPodcast №6
Обсуждаем плюсы и минусы монорепозитория. Это частая тема холиваров, и мы решили внести свой вклад 😊
Состав:
- Глеб Яльчик (http://t.me/gleb_yaltchik) - тех. директор компании Gaijin,
- Алексей Акулович (http://t.me/AterCattus) - inDriver (ранее Tinkoff…
Состав:
- Глеб Яльчик (http://t.me/gleb_yaltchik) - тех. директор компании Gaijin,
- Алексей Акулович (http://t.me/AterCattus) - inDriver (ранее Tinkoff…
Как сделать программу на Go быстрее на в х1.7 раз, изменив один символ
Хорошая короткая статья, которая лишний раз напоминает о том, что:
- понимание работы garbage collector'а важно для Go-разработчика
- необходимо понимать, когда стоит работать с указателями, а когда со значениями
- порой очень маленькие изменения дают очень большой эффект
На хабре есть перевод на русский.
#article #optimisation
Хорошая короткая статья, которая лишний раз напоминает о том, что:
- понимание работы garbage collector'а важно для Go-разработчика
- необходимо понимать, когда стоит работать с указателями, а когда со значениями
- порой очень маленькие изменения дают очень большой эффект
На хабре есть перевод на русский.
#article #optimisation
Hmarr
Making a Go program run 1.7x faster with a one character change • Harry Marr
Programmer and engineering manager working at GitHub. Co-founded Dependabot, and helped build Monzo and GoCardless.
Рассуждения про "Guard" Proposal для обработки ошибок в Go
https://wagslane.dev/posts/guard-keyword-error-handling-golang/
Обработка ошибок в Go достаточно многословна, но при этом надёжна - нам, как минимум, нужно писать для каждой ошибки:
И сообщество регулярно пытается придумать хитрый способ сократить здесь строчки кода, но при этом не потерять надёжность и простоту.
Несколько лет назад был предложен вот такой proposal. Суть его в том, чтобы добавить в Go два ключевых слова:
-
-
Автор статьи комментирует данный proposal, рассказывает что ему не нравится, и как сделать лучше.
В нашем чате предлагаю подискутировать на тему обработки ошибок - согласны ли с автором? Какие варианты нравятся вам больше? Или лучше оставить всё как есть?
#article #english #error_handling
https://wagslane.dev/posts/guard-keyword-error-handling-golang/
Обработка ошибок в Go достаточно многословна, но при этом надёжна - нам, как минимум, нужно писать для каждой ошибки:
if err != nil {Но зато мы точно ни одну не потеряем.
return err
}
И сообщество регулярно пытается придумать хитрый способ сократить здесь строчки кода, но при этом не потерять надёжность и простоту.
Несколько лет назад был предложен вот такой proposal. Суть его в том, чтобы добавить в Go два ключевых слова:
must
и guard
.-
must
- синтаксический сахар для паники при ненулевой ошибке-
guard
- синтаксический сахар для return err
при ненулевой ошибкеАвтор статьи комментирует данный proposal, рассказывает что ему не нравится, и как сделать лучше.
В нашем чате предлагаю подискутировать на тему обработки ошибок - согласны ли с автором? Какие варианты нравятся вам больше? Или лучше оставить всё как есть?
#article #english #error_handling
www.wagslane.dev
Thoughts on the "Guard" Proposal for Go's Error Handling
I found this proposal for improvements to error handling in Go interesting, but still not something I’d be happy to see implemented.
Allow me to clear up my thoughts on Go’s errors. Overall, I prefer how Go forces me to think about errors at every turn. When…
Allow me to clear up my thoughts on Go’s errors. Overall, I prefer how Go forces me to think about errors at every turn. When…
Go developer roadmap
https://roadmap.sh/golang/
Идеальный гайд по изучению языка Go, помогающий ответить на вопросы:
- С чего начать изучения языка?
- Что вообще надо знать?
- В каком порядке это изучать?
- Где искать материалы?
и т.п.
Каждый элемент схемы кликабельный - открывается окошко с полезными ссылками для изучения темы.
Если вас часто спрашивают - "как изучать Go?", просто кидайте это ссылку. Но тут много всякого интересного, так что интересно будет не только новичку.
Спасибо @pavel_bogdashin за ссылку ☺️
#roadmap #guide
https://roadmap.sh/golang/
Идеальный гайд по изучению языка Go, помогающий ответить на вопросы:
- С чего начать изучения языка?
- Что вообще надо знать?
- В каком порядке это изучать?
- Где искать материалы?
и т.п.
Каждый элемент схемы кликабельный - открывается окошко с полезными ссылками для изучения темы.
Если вас часто спрашивают - "как изучать Go?", просто кидайте это ссылку. Но тут много всякого интересного, так что интересно будет не только новичку.
Спасибо @pavel_bogdashin за ссылку ☺️
#roadmap #guide
roadmap.sh
Learn to become a Go developer
Community driven, articles, resources, guides, interview questions, quizzes for Go development. Learn to become a modern Go developer by following the steps, skills, resources and guides listed in this roadmap.