В общем, с датой ничего не решилось, но понял, что с помощью прекрасного go-cmp(адвансед альтернатива DeepEqual), можно исключать поля, которые не желательно проверять. Это мой инсайт номер один.
А второй инсайт - это потрясающий тул go-spew, с помощью которого можно очень красиво логировать структуры для дебага(со значениями, типами и т.д). Так я вспомнил, что нулевое значение слайса - nil, а Mongo, когда она сканирует результат запроса в структру, создаёт пустой слайс, а не nil. Так и получается, что в итоге эти две структуры, которые хранят в себе слайсы - не равны по DeepEqul и cmp.Equal.
Столько боли в этих тестах, столько боли …
А вот и сами тулы:
https://github.com/davecgh/go-spew
https://github.com/google/go-cmp
А второй инсайт - это потрясающий тул go-spew, с помощью которого можно очень красиво логировать структуры для дебага(со значениями, типами и т.д). Так я вспомнил, что нулевое значение слайса - nil, а Mongo, когда она сканирует результат запроса в структру, создаёт пустой слайс, а не nil. Так и получается, что в итоге эти две структуры, которые хранят в себе слайсы - не равны по DeepEqul и cmp.Equal.
Столько боли в этих тестах, столько боли …
А вот и сами тулы:
https://github.com/davecgh/go-spew
https://github.com/google/go-cmp
GitHub
GitHub - davecgh/go-spew: Implements a deep pretty printer for Go data structures to aid in debugging
Implements a deep pretty printer for Go data structures to aid in debugging - davecgh/go-spew
Я уже знаю, о том, что есть hub. Но вот что.
Github запустил свою command line утилиту для управления репозитириями.
Приятно, что они решили эту утилиту написать на Go.
Пока что это бета и функционал немного урезан по сравнению с тем, что есть в hub.
В будущем обещают поддержку Github Enterprise Server и больше функционала.
Но, по моему скромному мнению, функционала более чем достаточно, чтобы пользоваться в работе.
https://github.com/cli/cli
Github запустил свою command line утилиту для управления репозитириями.
Приятно, что они решили эту утилиту написать на Go.
Пока что это бета и функционал немного урезан по сравнению с тем, что есть в hub.
В будущем обещают поддержку Github Enterprise Server и больше функционала.
Но, по моему скромному мнению, функционала более чем достаточно, чтобы пользоваться в работе.
https://github.com/cli/cli
GitHub
GitHub - cli/cli: GitHub’s official command line tool
GitHub’s official command line tool. Contribute to cli/cli development by creating an account on GitHub.
Если вкратце, я работаю в компании, сервисы которой тесно связаны с криптовалютой.
И по долгу службы, как бы формально это не звучало, мне нужно знать, как устроен блокчейн и апи разных блокчейн платформ.
В процессе ознакомления я прочитал очень известный документ(Satoshi Nakamoto Paper) - https://bitcoin.org/bitcoin.pdf
Впринципе понял, как это устроено в теории. Но на этом решил не останавливаться, ведь намного лучше всё понимается на практике.
Так вот, в итоге я нашел интересную серию статей на медиуме, в которых показывают как сделать свой простой блокчейн и внедрить имплементации разных алгоритмов(майнинг, proof-of-work и т.д).
Пока что еще не написал его, но совсем скоро - поделюсь репо на гитхабе.
Вот ссылка на первую статью, там внизу ссылки на все остальные из серии.
https://medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc
И по долгу службы, как бы формально это не звучало, мне нужно знать, как устроен блокчейн и апи разных блокчейн платформ.
В процессе ознакомления я прочитал очень известный документ(Satoshi Nakamoto Paper) - https://bitcoin.org/bitcoin.pdf
Впринципе понял, как это устроено в теории. Но на этом решил не останавливаться, ведь намного лучше всё понимается на практике.
Так вот, в итоге я нашел интересную серию статей на медиуме, в которых показывают как сделать свой простой блокчейн и внедрить имплементации разных алгоритмов(майнинг, proof-of-work и т.д).
Пока что еще не написал его, но совсем скоро - поделюсь репо на гитхабе.
Вот ссылка на первую статью, там внизу ссылки на все остальные из серии.
https://medium.com/@mycoralhealth/code-your-own-blockchain-in-less-than-200-lines-of-go-e296282bcffc
Forwarded from oleg_log (Oleg Kovalov)
Стало интересно собрать статистику по Cloud & SaaS. Кто и что использует на работе или просто для себя. На текущем месте работы, а так же и на прошлом.
Даже если вы с этими вещами не работаете (в силу специализации), но знаете, что есть в вашей фирме используется - попрошу вас ответить :)
Результаты выложу на след неделе, думаю за 3-4 дня будет собрано достаточно ответов. Репост приветствуется, или хотя бы ссылку на опрос киньте покидайте другим.
https://forms.gle/v4wppXeC1thfHJ4J9
Спасибо.
Даже если вы с этими вещами не работаете (в силу специализации), но знаете, что есть в вашей фирме используется - попрошу вас ответить :)
Результаты выложу на след неделе, думаю за 3-4 дня будет собрано достаточно ответов. Репост приветствуется, или хотя бы ссылку на опрос киньте покидайте другим.
https://forms.gle/v4wppXeC1thfHJ4J9
Спасибо.
Google Docs
Cloud & SaaS questionnaire
See: https://telegram.me/oleg_log
Forwarded from oleg_log (Oleg Kovalov)
Последние 2 или 3 недели решил пожить в Goland (который IDE от JetBrains) и...я так-то не много потерял, когда жил без него.
Конечно рефакторинг по F6 это прикольно, и вот все эти менюшки, но как показывает практика, бОльшая часть времени тратится в простом наборе кода и перепрыгиванию между файлами/определениями.
Что сильно выбешивает, так это время отклика, когда по привычке ставишь {} и быстренько хочешь поставить курсор внутри и нажать Enter, а в итоге проваливаешься на строку ниже, а скобки висят на месте. Да и другие телодвижения чувствуются в натяжку (сейчас в лс набегут со словами, что РАМУ РАМУ НАДО БЫЛО ПОДДАТЬ, но факт такой, mbp15 не дотягивает)(и да, кроме как телеги и хрома с 4 вкладками ничего нет, цпу нулевой).
В итоге с июня возвращаюсь в VSCode 🎉
Конечно рефакторинг по F6 это прикольно, и вот все эти менюшки, но как показывает практика, бОльшая часть времени тратится в простом наборе кода и перепрыгиванию между файлами/определениями.
Что сильно выбешивает, так это время отклика, когда по привычке ставишь {} и быстренько хочешь поставить курсор внутри и нажать Enter, а в итоге проваливаешься на строку ниже, а скобки висят на месте. Да и другие телодвижения чувствуются в натяжку (сейчас в лс набегут со словами, что РАМУ РАМУ НАДО БЫЛО ПОДДАТЬ, но факт такой, mbp15 не дотягивает)(и да, кроме как телеги и хрома с 4 вкладками ничего нет, цпу нулевой).
В итоге с июня возвращаюсь в VSCode 🎉
Интересная статья про монорепо Uber. Здесь приводится много примеров использования Bazel и много интересной статистики.
https://eng.uber.com/go-monorepo-bazel/
https://eng.uber.com/go-monorepo-bazel/
И вот, после прочтения статьи сверху мне стало интересно чуть глубже копнуть в тему монорепо, и тут есть статья о том, почему это плохо.
https://link.medium.com/UaYr3uIeV6
https://link.medium.com/UaYr3uIeV6
Medium
Monorepos: Please don’t!
Here we are at the beginning of 2019 and I’m engaged in yet another discussion on the merits (or lack thereof) of keeping all of an…
Релизнули Go 1.14.4
Там несколько фиксов для пакета os, райнтайма и go doc.
Не знаю, стоит ли писать анонсы для майнор версии, но всё же.
https://twitter.com/golang/status/1267589808529997825?s=20
Там несколько фиксов для пакета os, райнтайма и go doc.
Не знаю, стоит ли писать анонсы для майнор версии, но всё же.
https://twitter.com/golang/status/1267589808529997825?s=20
Twitter
Go
😷 Go 1.14.4 and 1.13.12 are released! 📡 Announcement: https://t.co/0101AhDmAq ⬇️ Download: https://t.co/iJdDLCvMkl #golang
Небольшая документация о 12-и факторных приложениях. https://12factor.net/
Много где встречал этот термин раньше, но как-то не доходили руки почитать.
А этот материал обещает быть хорошим, т.к написан сооснователем Heroku, Adam Wiggins.
Много где встречал этот термин раньше, но как-то не доходили руки почитать.
А этот материал обещает быть хорошим, т.к написан сооснователем Heroku, Adam Wiggins.
12factor.net
The Twelve-Factor App
A methodology for building modern, scalable, maintainable software-as-a-service apps.
Forwarded from Komfy 🔐
We completed migrating from graphql-go/graphql to graph-gophers/graphql-go because the original package had a number of issues we couldn't solve. Now the GraphQL API works and further development can continue.
Решил попробовать использовать vim какое-то время.
Очень много разговоров вокруг этого зверюги.
Оказалось, что всё не так сложно и из vim’a есть выход.
Vim очень хорошо документирован, у него есть свой интерактивный(насколько это возможно в окне терминала) туториал, который пошагово объяснянт всю навигацию и функционал.
Решил установить nvim, следуя этому гайду.
Было бы круто услышать от вас о вашем опыте использования vim, если такой есть.
https://octetz.com/docs/2019/2019-04-24-vim-as-a-go-ide/
Очень много разговоров вокруг этого зверюги.
Оказалось, что всё не так сложно и из vim’a есть выход.
Vim очень хорошо документирован, у него есть свой интерактивный(насколько это возможно в окне терминала) туториал, который пошагово объяснянт всю навигацию и функционал.
Решил установить nvim, следуя этому гайду.
Было бы круто услышать от вас о вашем опыте использования vim, если такой есть.
https://octetz.com/docs/2019/2019-04-24-vim-as-a-go-ide/
Octetz
Vim as a Go IDE
Vim as a Go (Golang) IDE using LSP and vim-go It is 2019 and there are many great ways to write Go. Goland is available for Intellij users, Visual Studio Code (VSCode) is an incredibly enjoyable editor / IDE, and of course, Vim. I am no Vim-purist, I think…
Около месяца искал тул с помощью которого можно найти весь неиспользуемый код.
Казалось, что на проекте его куча и хотелось от него избавиться.
И в итоге долгих поисков я нашел вот этот потрясающий линтер: https://github.com/dominikh/go-tools.
Который не только ищет неиспользуемые методы/поля/структуры/глобальные переменные, но и помогает писать идеоматичный код.
И вообще, делает намного больше, чем встроенный golint. К тому же, у него очень крутая документация.
Вот примеры тех алертов, которые он выдаёт:
Если использовать литералы создание слайсов.
Если значение переменной после присваивания нигде не используется:
И, кстати, по итогу на проекте было не так уж много “мертового” кода, что очень порадовало.
Казалось, что на проекте его куча и хотелось от него избавиться.
И в итоге долгих поисков я нашел вот этот потрясающий линтер: https://github.com/dominikh/go-tools.
Который не только ищет неиспользуемые методы/поля/структуры/глобальные переменные, но и помогает писать идеоматичный код.
И вообще, делает намного больше, чем встроенный golint. К тому же, у него очень крутая документация.
Вот примеры тех алертов, которые он выдаёт:
Если использовать литералы создание слайсов.
should use make([]string, 0) instead (S1019)
Если значение переменной после присваивания нигде не используется:
this value of findCond is never used (SA4006)
И, кстати, по итогу на проекте было не так уж много “мертового” кода, что очень порадовало.
GitHub
GitHub - dominikh/go-tools: Staticcheck - The advanced Go linter
Staticcheck - The advanced Go linter. Contribute to dominikh/go-tools development by creating an account on GitHub.
Forwarded from Жалкие низкочастотники
Сегодня расскажу про первоапрельские Request For Comments (пару лет назад я про них уже упоминал). RFC — массив документов, описывающих интернет-протоколы и различные технические вопросы, связанные с их использованием, по сути, основная база стандартов интернета, если слово "стандарт" тут вообще применимо; на данный момент их почти 9 тысяч. Инженеры порой любят пошутить, и время от времени стали появляться первоапрельские RFC (википедия знает уже больше 50).
Самая известная (хотя и не первая) шутка опубликована в 1990 году в RFC 1149 "передача IP-пакетов голубиной почтой". Стандарт указывает, что "пропускная способность ограничена длиной лапки", "broadcasting не поддерживается", "MTU в среднем повышается с возрастом носителя" и другие полезные сведения. Позже стандарт расширялся, например, в RFC 2549 (поддержка QoS) и в RFC 6214 (поддержка IPv6). В 2001 году протокол был практически реализован в Bergen Linux user group, было отослано 9 ping пакетов и получено 4 reply:
В этом году опубликовали RFC 8774 "The Quantum Bug", но я пока не читал. А ещё я когда-то давно рисовал интерактивные "созвездия RFC" — граф взаимного цитирования этих документов. Почитать/посмотреть можно тут.
Самая известная (хотя и не первая) шутка опубликована в 1990 году в RFC 1149 "передача IP-пакетов голубиной почтой". Стандарт указывает, что "пропускная способность ограничена длиной лапки", "broadcasting не поддерживается", "MTU в среднем повышается с возрастом носителя" и другие полезные сведения. Позже стандарт расширялся, например, в RFC 2549 (поддержка QoS) и в RFC 6214 (поддержка IPv6). В 2001 году протокол был практически реализован в Bergen Linux user group, было отослано 9 ping пакетов и получено 4 reply:
--- 10.0.3.1 ping statistics ---Среди других первоапрельских RFC упомяну RFC 2324+RFC 7168 о "гипертекстовом протоколе по управлению кофейником" (очень похожим на мою старую курсовую), RFC 3251 "электричество поверх IP", RFC 5514 "IPv6 поверх социальных сетей" (позже также реализованная) и RFC 7511 "живописная маршрутизация для IPv6".
9 packets transmitted, 4 packets received, 55% packet loss
round-trip min/avg/max = 3211900.8/5222806.6/6388671.9 ms
В этом году опубликовали RFC 8774 "The Quantum Bug", но я пока не читал. А ещё я когда-то давно рисовал интерактивные "созвездия RFC" — граф взаимного цитирования этих документов. Почитать/посмотреть можно тут.
Весь предыдущий месяц занимался тестами. Ну и совсем немного писал новые фичи и исправлял баги, которые где-то вылазили.
И вот, момент истины, у меня по всем пакетам (почти) test coverage 70-85%, и я ожидаю увидеть хотя бы 60% по всей репо.
В итоге, я как-то это всё неправильно замерил и получил 17%. Очень расстроился, весь день недоумевал, как это вообще может быть.
В итоге вот нашел правильный скрипт для замера tc, ну и отправки показатель в CI системы(если кому нужно) и у меня 62%.
Теперь можно спать спокойно.
Вот тут можно почитать об этом: https://blog.seriesci.com/how-to-measure-code-coverage-in-go/
И вот, момент истины, у меня по всем пакетам (почти) test coverage 70-85%, и я ожидаю увидеть хотя бы 60% по всей репо.
В итоге, я как-то это всё неправильно замерил и получил 17%. Очень расстроился, весь день недоумевал, как это вообще может быть.
В итоге вот нашел правильный скрипт для замера tc, ну и отправки показатель в CI системы(если кому нужно) и у меня 62%.
Теперь можно спать спокойно.
Вот тут можно почитать об этом: https://blog.seriesci.com/how-to-measure-code-coverage-in-go/
Seriesci
How to measure code coverage in Go - seriesci blog
Code coverage is a first class citizen in Go. However programmatically getting the total code coverage for multiple packages within a single project can be tricky. Learn how to retrieve the overall code coverage by using standard Unix command line tools like…
Forwarded from Go Дайджест
Пока GoLand 👋, привет VSCode ✋. Go кор команда перебирает бразды правления над этим плагином.
https://blog.golang.org/vscode-go
https://blog.golang.org/vscode-go
blog.golang.org
The VS Code Go extension joins the Go project - The Go Blog
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Очень крутая и понятная лекция о фундаментальном устройстве баз данных.
https://www.youtube.com/watch?v=c4_5rqvmDFU
https://www.youtube.com/watch?v=c4_5rqvmDFU
YouTube
Как устроены базы данных / Илья Космодемьянский (Data Egret)
РИТ++ 2017, HighLoad Junior
Тезисы:
http://junior.highload.ru/2017/abstracts/2791.html
Хранить и обрабатывать данные нужно везде, неслучайно, как минимум последние полвека, интенсивно развивались специализированные для этой задачи фреймворки - сервера управления…
Тезисы:
http://junior.highload.ru/2017/abstracts/2791.html
Хранить и обрабатывать данные нужно везде, неслучайно, как минимум последние полвека, интенсивно развивались специализированные для этой задачи фреймворки - сервера управления…