Основные операции, необходимые для начала работы с модулями
Go 1.11 и 1.12 включают предварительную поддержку модулей, новую систему управления зависимостями, которая делает информацию о версии зависимостей явной и простой в управлении. Модуль представляет собой набор пакетов Go, хранящихся в файловом дереве с файлом "go.mod" в корне. "go.mod" определяет путь модуля (module path), который также является путем импорта, используемого для корневого каталога. Его требование зависимостей, другие модули, необходимы для успешной сборки. Каждое требование к зависимости записывается в виде пути к модулю и конкретной семантической версии .
Начиная с Go 1.11, команда go позволяет использовать модули, если текущий каталог или любой родительский каталог имеет go.mod, при условии, что каталог находится снаружи $GOPATH/src. Внутри $GOPATH/src, для совместимости, команда go по-прежнему выполняется в старом режиме GOPATH, даже если go.mod найден. Начиная с Go 1.13, режим модуля будет использоваться по умолчанию для всех разработок.
В этих ссылках на четыре части одного большого поста можно найти более подробную информацию об использовани Go Modules:
Часть 1 - Использование Go Modules
Часть 2 - Миграция на Go Modules
Часть 3 - Публикация Go Modules
Часть 4 - Go Modules: v2 и последующие
Go 1.11 и 1.12 включают предварительную поддержку модулей, новую систему управления зависимостями, которая делает информацию о версии зависимостей явной и простой в управлении. Модуль представляет собой набор пакетов Go, хранящихся в файловом дереве с файлом "go.mod" в корне. "go.mod" определяет путь модуля (module path), который также является путем импорта, используемого для корневого каталога. Его требование зависимостей, другие модули, необходимы для успешной сборки. Каждое требование к зависимости записывается в виде пути к модулю и конкретной семантической версии .
Начиная с Go 1.11, команда go позволяет использовать модули, если текущий каталог или любой родительский каталог имеет go.mod, при условии, что каталог находится снаружи $GOPATH/src. Внутри $GOPATH/src, для совместимости, команда go по-прежнему выполняется в старом режиме GOPATH, даже если go.mod найден. Начиная с Go 1.13, режим модуля будет использоваться по умолчанию для всех разработок.
В этих ссылках на четыре части одного большого поста можно найти более подробную информацию об использовани Go Modules:
Часть 1 - Использование Go Modules
Часть 2 - Миграция на Go Modules
Часть 3 - Публикация Go Modules
Часть 4 - Go Modules: v2 и последующие
go.dev
Using Go Modules - The Go Programming Language
An introduction to the basic operations needed to get started with Go modules.
Небольшой пакет golang для рендеринга разметки удобным для терминала способом
Пакет termd обеспечивает рендеринг разметки терминала с поддержкой подсветки синтаксиса блоков кода.
Особенности:
- подсветка синтаксиса кода,
- перенос слов до указанной ширины столбца,
- терминальный стиль.
Пакет termd обеспечивает рендеринг разметки терминала с поддержкой подсветки синтаксиса блоков кода.
Особенности:
- подсветка синтаксиса кода,
- перенос слов до указанной ширины столбца,
- терминальный стиль.
GitHub
GitHub - tj/go-termd: Package termd provides terminal markdown rendering, with code block syntax highlighting support.
Package termd provides terminal markdown rendering, with code block syntax highlighting support. - tj/go-termd
Go Flutter для компьютера
Google Flutter — это платформа, которая позволяет вам разрабатывать приложения с единой кодовой базой на гугловском языке Dart. Flutter позволяет создавать красивые нативные приложения на iOS и Android. Этот неофициальный проект выводит Flutter на рабочий стол благодаря возможностям Go и GLFW. Сам механизм не знает, как обращаться с компьютером (например, обрабатывать ввод с клавиатуры / мыши). Вместо этого он предоставляет уровень абстракции для любой платформы для реализации. Целью этого проекта является реализация API встраивания Flutter с использованием единой кодовой базы, работающей в Windows, MacOS и Linux. GLFW подходит для этой задачи, потому что он предоставляет правильные абстракции поверх буфера / мыши / клавиатуры OpenGL для каждой платформы.
Google Flutter — это платформа, которая позволяет вам разрабатывать приложения с единой кодовой базой на гугловском языке Dart. Flutter позволяет создавать красивые нативные приложения на iOS и Android. Этот неофициальный проект выводит Flutter на рабочий стол благодаря возможностям Go и GLFW. Сам механизм не знает, как обращаться с компьютером (например, обрабатывать ввод с клавиатуры / мыши). Вместо этого он предоставляет уровень абстракции для любой платформы для реализации. Целью этого проекта является реализация API встраивания Flutter с использованием единой кодовой базы, работающей в Windows, MacOS и Linux. GLFW подходит для этой задачи, потому что он предоставляет правильные абстракции поверх буфера / мыши / клавиатуры OpenGL для каждой платформы.
dart.dev
Dart programming language
Dart is an approachable, portable, and productive language for high-quality apps on any platform.
Go.dev: новый центр для разработчиков Go
"За последние два года, когда мы общались с пользователями компаний всех размеров, мы неоднократно слышали три вопроса: кто еще использует Go, для чего они его используют и как я могу найти полезные пакеты Go?", — сообщают в блоге Go.
Вчера был запущен go.dev, новый хаб для разработчиков Go, чтобы помочь ответить на эти вопросы. Там можно найти множество учебных ресурсов для начала работы с языком, примеры использования и примеры компаний, использующих Go.
golang.org по-прежнему является домом для проекта Go с открытым исходным кодом и дистрибутива Go. Go.dev — это сопутствующий сайт, предоставляющий эти вспомогательные ресурсы.
"За последние два года, когда мы общались с пользователями компаний всех размеров, мы неоднократно слышали три вопроса: кто еще использует Go, для чего они его используют и как я могу найти полезные пакеты Go?", — сообщают в блоге Go.
Вчера был запущен go.dev, новый хаб для разработчиков Go, чтобы помочь ответить на эти вопросы. Там можно найти множество учебных ресурсов для начала работы с языком, примеры использования и примеры компаний, использующих Go.
golang.org по-прежнему является домом для проекта Go с открытым исходным кодом и дистрибутива Go. Go.dev — это сопутствующий сайт, предоставляющий эти вспомогательные ресурсы.
blog.golang.org
Go.dev: a new hub for Go developers - The Go Blog
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Статическая проверка в действии: инструмент статического анализа Staticcheck
Слишком часто мы обнаруживаем ошибки только после развертывания деплоя на продакшн. Даже на таком языке, как Go, можно писать неэффективный код и не отлавливать ошибки, пока не станет слишком поздно. Staticcheck — это инструмент статического анализа, который может решить эту проблему. Он специализируется на поиске ошибок, простоте кода, производительности и интеграции редактора. Staticcheck с открытым исходным кодом и предлагается бесплатно. Он постоянно дополняется новыми и улучшенными проверками.
Он имеет различные проверки:
- на неиспользуемые переменные,
- на откладывание метода Lock для мьютекса сразу после блокировки (пользователь, вероятно, намеревался вместо этого отложить Unlock),
- на недоступность кода и многое другое.
Слишком часто мы обнаруживаем ошибки только после развертывания деплоя на продакшн. Даже на таком языке, как Go, можно писать неэффективный код и не отлавливать ошибки, пока не станет слишком поздно. Staticcheck — это инструмент статического анализа, который может решить эту проблему. Он специализируется на поиске ошибок, простоте кода, производительности и интеграции редактора. Staticcheck с открытым исходным кодом и предлагается бесплатно. Он постоянно дополняется новыми и улучшенными проверками.
Он имеет различные проверки:
- на неиспользуемые переменные,
- на откладывание метода Lock для мьютекса сразу после блокировки (пользователь, вероятно, намеревался вместо этого отложить Unlock),
- на недоступность кода и многое другое.
Superhighway
Staticcheck in Action
An introduction to the static analysis tool Staticcheck for improving Go code
Методы оценки безопасности для проектов Go
"Практика Trail of Bits Assurance получила множество проектов Go, что было подтверждено успехом оценки в Kubernetes этим летом. В результате мы адаптировали для проектов Go некоторые методы и тактики оценки безопасности, которые мы использовали с другими скомпилированными языками", — вырезка из весьма полезного поста о методах безопасной разработки.
В результате авторами была создана адаптация для проектов Go, некоторые методы и тактики оценки безопасности, которые они использовали с другими скомпилированными языками.
"Практика Trail of Bits Assurance получила множество проектов Go, что было подтверждено успехом оценки в Kubernetes этим летом. В результате мы адаптировали для проектов Go некоторые методы и тактики оценки безопасности, которые мы использовали с другими скомпилированными языками", — вырезка из весьма полезного поста о методах безопасной разработки.
В результате авторами была создана адаптация для проектов Go, некоторые методы и тактики оценки безопасности, которые они использовали с другими скомпилированными языками.
Trail of Bits
Trail of Bits | Services
Since 2012, Trail of Bits has helped secure some of the world’s most targeted organizations and products. We combine high-end security research with a real...
Salt — Простая утилита командной строки, написанная на Go, которая поддерживает шифрование/дешифрование NaCL и криптографию с открытым ключом secretbox.
GitHub
GitHub - prologic/salt: A simple command-line utility written in Go that supports NaCL (salt) box encryption/decryption and secrebox…
A simple command-line utility written in Go that supports NaCL (salt) box encryption/decryption and secrebox public key crypto - prologic/salt
Использование HTTP/2 Server Push для создания быстрых и идиоматических клиентских API REST
Vulcain — это совершенно новый протокол, использующий HTTP/2 Server Push для создания быстрых и идиоматических клиентских REST API.
Также предоставляется сервер с открытым исходным кодом, который вы можете поместить поверх любого существующего веб-API, чтобы мгновенно превратить его в Vulcain-совместимый. Он поддерживает гипермедиа API, а также любой «устаревший» API, документируя его отношения с помощью OpenAPI .
Vulcain — это совершенно новый протокол, использующий HTTP/2 Server Push для создания быстрых и идиоматических клиентских REST API.
Также предоставляется сервер с открытым исходным кодом, который вы можете поместить поверх любого существующего веб-API, чтобы мгновенно превратить его в Vulcain-совместимый. Он поддерживает гипермедиа API, а также любой «устаревший» API, документируя его отношения с помощью OpenAPI .
GitHub
GitHub - dunglas/vulcain: 🔨 Fast and idiomatic client-driven REST APIs.
🔨 Fast and idiomatic client-driven REST APIs. Contribute to dunglas/vulcain development by creating an account on GitHub.
Gotraning — это материал для любого разработчика среднего уровня, который имеет некоторый опыт работы с другими языками программирования и хочет изучать Go. Материал идеально подходит для тех, кто хочет начать обучение изучению го или для тех, кто хочет лучше понять язык и его внутреннюю среду.
Примечание. Этот материал предназначен для обучения в группе с тренером или же с ментором, так как код хорошо прокомментирован, но в нем отсутствуют некоторые контекстуальные концепции и идеи, которые будут рассмотрены в классе. Также вы можете внести свой вклад в развитие, создав новую учетную запись. :)
Примечание. Этот материал предназначен для обучения в группе с тренером или же с ментором, так как код хорошо прокомментирован, но в нем отсутствуют некоторые контекстуальные концепции и идеи, которые будут рассмотрены в классе. Также вы можете внести свой вклад в развитие, создав новую учетную запись. :)
GitHub
gotraining/topics/go/README.md at master · ardanlabs/gotraining
Go Training Class Material : . Contribute to ardanlabs/gotraining development by creating an account on GitHub.
DockerSlim — прекрасный репозиторий с открытым исходным кодом, написанный на Go. Его использование — это большой шаг в правильном направлении! ;)
"Продолжай делать то, что делаешь. Не нужно ничего менять. Используй базовое изображение, которое хочешь. Используй менеджер пакетов, который хочешь. Не беспокойся о ручной оптимизации свое Dockerfile. Тебе не нужно выбрасывать свои инструменты и рабочий процесс, чтобы иметь небольшие изображения контейнеров" — обо всем этом беспокоится docker-slim.
"Продолжай делать то, что делаешь. Не нужно ничего менять. Используй базовое изображение, которое хочешь. Используй менеджер пакетов, который хочешь. Не беспокойся о ручной оптимизации свое Dockerfile. Тебе не нужно выбрасывать свои инструменты и рабочий процесс, чтобы иметь небольшие изображения контейнеров" — обо всем этом беспокоится docker-slim.
16 избранных ссылок на материалы о языке Go для начинающих
Подборка лучших статей о языке Go для читателей различного круга интересов и уровня подготовки, на английском и русском языках.
Golang: основы для начинающих (rus)
Трюки с использованием срезов
5 советов по использованию строк
Типы данных Struct, Map, Array и Slice
Понятное объяснение указателей Go менее чем в 800 слов
Туториал по каналам Go
Разработка с использованием каналов
Аксиомы каналов
Наглядная визуализация структур Go
Понимание panic-ошибок
3 наиболее распространенных ловушки языка Go (rus)
Как обойти подводные камни
Основные подводные камни
50 оттенков Go: ловушки, подводные камни и распространенные ошибки новичков
Неофициальный список частых вопросов и ответов
Лекции Техносферы: Программирование на Go (rus)
Подборка лучших статей о языке Go для читателей различного круга интересов и уровня подготовки, на английском и русском языках.
Golang: основы для начинающих (rus)
Трюки с использованием срезов
5 советов по использованию строк
Типы данных Struct, Map, Array и Slice
Понятное объяснение указателей Go менее чем в 800 слов
Туториал по каналам Go
Разработка с использованием каналов
Аксиомы каналов
Наглядная визуализация структур Go
Понимание panic-ошибок
3 наиболее распространенных ловушки языка Go (rus)
Как обойти подводные камни
Основные подводные камни
50 оттенков Go: ловушки, подводные камни и распространенные ошибки новичков
Неофициальный список частых вопросов и ответов
Лекции Техносферы: Программирование на Go (rus)
Tproger
Golang: основы для начинающих
Golang, или Go — язык программирования, начало которого было положено в 2007 году сотрудниками компании Google. Это быстрый, статически типизированный, компилируемый язык, который создает впечатление динамически типизированного и интерпретируемого языка.…
Многие платят за образование, но после выпуска работают за зарплату ниже рынка, только чтобы получить опыт работы. МТС и Сколково создали образовательную программу для выпускников бакалавриата и магистратуры(возраст - 19-24 года), которая поможет подтянуть навыки и скиллы и, что самое главное, получить реальный опыт работы над проектом.
Программа платная, но у тебя есть возможность выиграть 100% грант на обучение. Узнай о программе, перейдя по ссылке https://prglb.ru/33gwx со своего ПК, найди все подсказки, информацию об обучении и сразу же стартуй с одного из этапов квеста.
Программа платная, но у тебя есть возможность выиграть 100% грант на обучение. Узнай о программе, перейдя по ссылке https://prglb.ru/33gwx со своего ПК, найди все подсказки, информацию об обучении и сразу же стартуй с одного из этапов квеста.
Как начать работать с Docker
Docker раскрывает потенциал вашей организации, предоставляя разработчикам и ИТ-специалистам свободу создавать, управлять и защищать критически важные для бизнеса приложения, не опасаясь блокирования технологий или инфраструктуры. Docker позволяет объединять традиционные и облачные приложения, созданные на Windows Server, Linux и мэйнфреймах, в автоматизированную и безопасную цепочку поставок, улучшая сотрудничество между разработчиками и сокращая время окупаемости.
Docker можно использовать по-разному. Например, он предлагает одноразовую среду, которую можно использовать для изучения новых технологий. Docker предоставляет удобный способ иметь локальные среды разработки, которые часто соответствуют производственной среде. Docker также имеет популярный способ конфигурирования, сохранения и совместного использования серверных сред с использованием контейнеров, который помогает в установке приложения или большого стека с помощью простой команды запуска, например, «docker pull» или «docker run».
В этой статье описано когда и зачем использовать Docker.
Docker раскрывает потенциал вашей организации, предоставляя разработчикам и ИТ-специалистам свободу создавать, управлять и защищать критически важные для бизнеса приложения, не опасаясь блокирования технологий или инфраструктуры. Docker позволяет объединять традиционные и облачные приложения, созданные на Windows Server, Linux и мэйнфреймах, в автоматизированную и безопасную цепочку поставок, улучшая сотрудничество между разработчиками и сокращая время окупаемости.
Docker можно использовать по-разному. Например, он предлагает одноразовую среду, которую можно использовать для изучения новых технологий. Docker предоставляет удобный способ иметь локальные среды разработки, которые часто соответствуют производственной среде. Docker также имеет популярный способ конфигурирования, сохранения и совместного использования серверных сред с использованием контейнеров, который помогает в установке приложения или большого стека с помощью простой команды запуска, например, «docker pull» или «docker run».
В этой статье описано когда и зачем использовать Docker.
go.dev
Deploying Go servers with Docker - The Go Programming Language
How to use Docker's new official base images for Go.
Fuzz-тестирование в Go
Fuzzing — это метод тестирования, который загружает нашу программу случайными данными. Он дополняет обычное тестирование и позволяет разработчикам находить ошибки, которые было бы трудно найти при вводе вручную. Fuzzing довольно легко настроить в программах Go и может быть адаптирован практически всеми видами кода.
Где можно узнать больше?
Презентация о фаззинге на митапе Google TechTalk.
Учебники, примеры, обсуждения, исследовательские предложения и другие ресурсы, связанные с фаззингом — тут.
Fuzzing — это метод тестирования, который загружает нашу программу случайными данными. Он дополняет обычное тестирование и позволяет разработчикам находить ошибки, которые было бы трудно найти при вводе вручную. Fuzzing довольно легко настроить в программах Go и может быть адаптирован практически всеми видами кода.
Где можно узнать больше?
Презентация о фаззинге на митапе Google TechTalk.
Учебники, примеры, обсуждения, исследовательские предложения и другие ресурсы, связанные с фаззингом — тут.
YouTube
Zurich Go Meetup: Go-Fuzz: Practical Fuzzing with Go
A Google TechTalk, 2019/09/26, presented by Roberto Clapis.
ABSTRACT: Humans are usually not good at identifying edge cases in their code, this talk will explain some techniques to automate this process and efficiently find surprising bugs.
About the speaker:…
ABSTRACT: Humans are usually not good at identifying edge cases in their code, this talk will explain some techniques to automate this process and efficiently find surprising bugs.
About the speaker:…
Быстрый старт: Golang & MongoDB
Полезная серия статей о том, как подключить и использовать MongoDB.
В первом уроке рассматривается, как установить связь между языком и базой данных.
Во втором уроке продолжается работа с материалом из первого урока, но также показано подключение к определенной коллекции для создания новых документов.
В третьем уроке показано чтение документов из MongoDB и создание запросов для получения документов на основе определенных критериев.
Полезная серия статей о том, как подключить и использовать MongoDB.
В первом уроке рассматривается, как установить связь между языком и базой данных.
Во втором уроке продолжается работа с материалом из первого урока, но также показано подключение к определенной коллекции для создания новых документов.
В третьем уроке показано чтение документов из MongoDB и создание запросов для получения документов на основе определенных критериев.
MongoDB
Quick Start: Golang & MongoDB - Starting and Setup | MongoDB Blog
Go and MongoDB - a powerful match made in JSON and Go and in this Quick Start series you'll learn how to put that power to use.
Hugo-темы
Docsy — это тема Hugo для наборов технической документации, обеспечивающая простую навигацию, структуру сайта и многое другое. Это неофициально активно поддерживаемый продукт Google, написанный на Go. Он является самым быстрым в мире статическим движком для сайтов.
Docsy — это тема Hugo для наборов технической документации, обеспечивающая простую навигацию, структуру сайта и многое другое. Это неофициально активно поддерживаемый продукт Google, написанный на Go. Он является самым быстрым в мире статическим движком для сайтов.
#beginner #best_practices
Немного лучших практик по Go начинающим разработчикам.
https://prglb.ru/4edc3
Немного лучших практик по Go начинающим разработчикам.
https://prglb.ru/4edc3
peter.bourgon.org
Peter Bourgon · Go best practices, six years in
Generally good things to do when writing Go code, in 2016 and beyond.
На языке С++ можно написать любое приложение для любой задачи. Правда, он настолько сложный, что освоить все тонкости довольно трудно.
Go — простой и удобный язык, который был создан в Google на замену C и C++. Если вы решили изучать Go, советую посмотреть бесплатное занятие Нетологии «Программирование на Go: практика для новичков», чтобы:
• узнать о специфике языка и библиотек,
• решить простую задачу и проверить Go в деле,
• выяснить, подходит ли Go для ваших задач.
Подробности и регистрация по ссылке: http://netolo.gy/faA
Go — простой и удобный язык, который был создан в Google на замену C и C++. Если вы решили изучать Go, советую посмотреть бесплатное занятие Нетологии «Программирование на Go: практика для новичков», чтобы:
• узнать о специфике языка и библиотек,
• решить простую задачу и проверить Go в деле,
• выяснить, подходит ли Go для ваших задач.
Подробности и регистрация по ссылке: http://netolo.gy/faA
В статье приводятся ряд отличительных особенностей языка Go, выделяемых одним из разработчиков Google Cloud. Он объясняет причину перехода на Go с Python, Java и JavaScript в некоторых из своих проектов. Основные особенности: в Go уделяется особое внимание прямой совместимости и зависимости, у языка нет функциональных особенностей, которые ухудшают читабельность, а также он поставляется из коробки со всем, что действительно нужно (базовая библиотека тестов, надежные сетевые и синхронизирующие примитивы и шаблоны, и многое другое).
https://benjamincongdon.me/blog/2019/11/11/The-Value-in-Gos-Simplicity/
https://benjamincongdon.me/blog/2019/11/11/The-Value-in-Gos-Simplicity/
benjamincongdon.me
The Value in Go's Simplicity
After using Go for a couple years, I’ve really come to appreciate its
simplicity. I started writing Go at work a couple months ago, and have found it
really easy to iterate on – much more so than Python and Java.
simplicity. I started writing Go at work a couple months ago, and have found it
really easy to iterate on – much more so than Python and Java.
Как вы думаете, что выведет данный код? u := url.URL{Scheme: "http", Host: "localhost"} fmt.Printf("%s", u)
anonymous poll
Print http://localhost – 166
👍👍👍👍👍👍👍 73%
Нет правильного ответа – 39
👍👍 17%
Compile error – 13
👍 6%
Print http:localhost – 8
▫️ 4%
👥 226 people voted so far.
anonymous poll
Print http://localhost – 166
👍👍👍👍👍👍👍 73%
Нет правильного ответа – 39
👍👍 17%
Compile error – 13
👍 6%
Print http:localhost – 8
▫️ 4%
👥 226 people voted so far.