🔖 О чем канал?
3 года назад попался мне проект prometheus, и вот пытался я его запустить все дела. Как обычно, начинаешь устанавливать, проходить всякий getting-started, потом … часа через 2 ты уже дебажишь исходный код и пытаешься отправить свой патч на Github.
Так я узнал про язык программирования Go! На этой приятной ноте, предлагаю Вам подписаться на мой канал чтобы быть в курсе того над чем я работаю и прочитать что-то интересное (не ссылку и не копипаст) о новом, но довольно популярном языке программирования Go за чашечкой кофе :)
P.S. В комментариях можно поделиться своей историей, о том как Вы начали писать на Go и почему?
P.P.S. Лого канала взял у жены Rob Pike -> Renee French https://www.instagram.com/reneefrench/ :)
3 года назад попался мне проект prometheus, и вот пытался я его запустить все дела. Как обычно, начинаешь устанавливать, проходить всякий getting-started, потом … часа через 2 ты уже дебажишь исходный код и пытаешься отправить свой патч на Github.
Так я узнал про язык программирования Go! На этой приятной ноте, предлагаю Вам подписаться на мой канал чтобы быть в курсе того над чем я работаю и прочитать что-то интересное (не ссылку и не копипаст) о новом, но довольно популярном языке программирования Go за чашечкой кофе :)
P.S. В комментариях можно поделиться своей историей, о том как Вы начали писать на Go и почему?
P.P.S. Лого канала взял у жены Rob Pike -> Renee French https://www.instagram.com/reneefrench/ :)
🐛Дебажим код написанный на Go
Да код на Go можно и нужно дебажить. Часто сталкиваюсь в разных командах, как разработчики, до сих пор в 2019 году! дебажат принтами :)
Delve - дебаггер который я обычно использую каждый день. Если открыть документацию, она мягко говоря не идеальная.
Установить можно так: go get -u github.com/go-delve/delve/cmd/dlv
Чаще всего я использую
Либо
dlv debug main.go
(dlv) breakpoint main.go:1
(dlv) continue
После того как установили breakpoint, можно нажать continue и программа остановится там где нужно и так далее. Также есть shortcuts (
Да код на Go можно и нужно дебажить. Часто сталкиваюсь в разных командах, как разработчики, до сих пор в 2019 году! дебажат принтами :)
Delve - дебаггер который я обычно использую каждый день. Если открыть документацию, она мягко говоря не идеальная.
Установить можно так: go get -u github.com/go-delve/delve/cmd/dlv
Чаще всего я использую
dlv debug <имя пакета>
. dlv debug github.com/andriisoldatenko/go-blog
Либо
dlv debug main.go
(dlv) breakpoint main.go:1
(dlv) continue
После того как установили breakpoint, можно нажать continue и программа остановится там где нужно и так далее. Также есть shortcuts (
b
, c
, l
и так далее).🔨 Note #3 Настраиваем дебаггер
Сегодня наткнулся на то, что print в режиме дебаггера, не показывает длинные строки.
> main.main() ./main.go:7 (PC: 0x10b08d4)
2:
3: import "fmt"
4:
5: func main() {
6: v1 := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
=> 7: fmt.Println(v1)
8: }
(dlv) p v1
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...+2 more"
(dlv) config -list
aliases map
substitute-path
max-string-len <not defined>
max-array-values <not defined>
show-location-expr false
(dlv) config max-string-len 1000
(dlv) p v1
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
✅ Теперь можно напечатать длинную строку.
Сегодня наткнулся на то, что print в режиме дебаггера, не показывает длинные строки.
> main.main() ./main.go:7 (PC: 0x10b08d4)
2:
3: import "fmt"
4:
5: func main() {
6: v1 := "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
=> 7: fmt.Println(v1)
8: }
(dlv) p v1
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...+2 more"
(dlv) config -list
aliases map
substitute-path
max-string-len <not defined>
max-array-values <not defined>
show-location-expr false
(dlv) config max-string-len 1000
(dlv) p v1
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
✅ Теперь можно напечатать длинную строку.
Forwarded from Go Library
Writing and Optimizing Go code
This document outlines best practices for writing high-performance Go code.
https://github.com/dgryski/go-perfbook/blob/master/performance.md
This document outlines best practices for writing high-performance Go code.
https://github.com/dgryski/go-perfbook/blob/master/performance.md
Свежие статьи:
- Go 2018 Survey Results https://blog.golang.org/survey2018-results
- Debugging what you deploy in Go 1.12 https://blog.golang.org/debugging-what-you-deploy (от https://twitter.com/Dr2chase)
- Go 2018 Survey Results https://blog.golang.org/survey2018-results
- Debugging what you deploy in Go 1.12 https://blog.golang.org/debugging-what-you-deploy (от https://twitter.com/Dr2chase)
Twitter
David Chase (@Dr2chase) | Twitter
The latest Tweets from David Chase (@Dr2chase). Not a physician, bikes a lot, DFH, works on Go compiler.
He/him. Ex(?) Florida Man.
(I do not speak for my employer. near Boston, MA
He/him. Ex(?) Florida Man.
(I do not speak for my employer. near Boston, MA
Вот как нужно делать программу для конференции!
GoCon Canada -> https://play.golang.org/p/dSlNFqsiKKl
GoCon Canada -> https://play.golang.org/p/dSlNFqsiKKl
Наверное одна из самых лучших статей, которые попадались мне на тему как писать хороший Git Commit Message https://chris.beams.io/posts/git-commit/
Чистый код только в контексте Го https://github.com/Pungyeon/clean-go-article
GitHub
GitHub - Pungyeon/clean-go-article: A reference for the Go community that covers the fundamentals of writing clean code and discusses…
A reference for the Go community that covers the fundamentals of writing clean code and discusses concrete refactoring examples specific to Go. - Pungyeon/clean-go-article
COME ON SHOW US THE REGULAR EXPRESSION
или как Cloudflare обещает показать регулярное выражение ...
https://blog.cloudflare.com/cloudflare-outage/
или как Cloudflare обещает показать регулярное выражение ...
https://blog.cloudflare.com/cloudflare-outage/
Брайн Керниган рассказывает как придумали название "grep" ->
eсли кратко то:
g/re/p
если догадались почему именно так, либо можно посмотреть видос:
https://www.youtube.com/watch?v=NTfOnGZUZDk
eсли кратко то:
g/re/p
если догадались почему именно так, либо можно посмотреть видос:
https://www.youtube.com/watch?v=NTfOnGZUZDk
YouTube
Where GREP Came From - Computerphile
Commonly used grep was written overnight, but why and how did it get its name? Professor Brian Kernighan explains.
EXTRA BITS: https://youtu.be/bSaBe6WiC2s
Inside an ALT Coin Mining Operation: COMING SOON
Unix Pipeline: https://youtu.be/bKzonnwoR2I
…
EXTRA BITS: https://youtu.be/bSaBe6WiC2s
Inside an ALT Coin Mining Operation: COMING SOON
Unix Pipeline: https://youtu.be/bKzonnwoR2I
…
Note #4 Дебажим приложение на Go в докере 🐳
Итак нам понадобится:
- прямые руки и тазик с предустановленным докером
$ cat Dockerfile
$ docker build -t my-golang-app .
# Это всего лишь один из вариантов, иногда нужно вместо bash сразу dlv запускать и так далее
$ docker run -it --rm my-golang-app bash
$ root@03c1977b1063:/go/src/app# dlv main.go
Error: unknown command "main.go" for "dlv"
Run 'dlv --help' for usage.
root@03c1977b1063:/go/src/app# dlv debug main.go
could not launch process: fork/exec /go/src/app/__debug_bin: operation not permitted
OOps...
Итак добавим параметры:
$ docker run -it --rm --security-opt="apparmor=unconfined" --cap-add=SYS_PTRACE my-golang-app bash
И вуаля 🎉
$ root@7dc3a7e8b3fc:/go/src/app# dlv debug main.go
Type 'help' for list of commands.
(dlv)
P.S. опять же этот же трюк можно использовать с docker-compose/ либо с multi-stage билдами. Если интересно как дебажить multi-stage билды на Го просьба поставить “+” в комментариях или кинуть помидором 🍅.
Итак нам понадобится:
- прямые руки и тазик с предустановленным докером
$ cat Dockerfile
FROM golang:1.13
WORKDIR /go/src/app
COPY . .
RUN go get -u github.com/go-delve/delve/cmd/dlv
CMD ["app"]
$ docker build -t my-golang-app .
# Это всего лишь один из вариантов, иногда нужно вместо bash сразу dlv запускать и так далее
$ docker run -it --rm my-golang-app bash
$ root@03c1977b1063:/go/src/app# dlv main.go
Error: unknown command "main.go" for "dlv"
Run 'dlv --help' for usage.
root@03c1977b1063:/go/src/app# dlv debug main.go
could not launch process: fork/exec /go/src/app/__debug_bin: operation not permitted
OOps...
Итак добавим параметры:
$ docker run -it --rm --security-opt="apparmor=unconfined" --cap-add=SYS_PTRACE my-golang-app bash
И вуаля 🎉
$ root@7dc3a7e8b3fc:/go/src/app# dlv debug main.go
Type 'help' for list of commands.
(dlv)
P.S. опять же этот же трюк можно использовать с docker-compose/ либо с multi-stage билдами. Если интересно как дебажить multi-stage билды на Го просьба поставить “+” в комментариях или кинуть помидором 🍅.