Библиотека Go-разработчика | Golang
23.3K subscribers
2.07K photos
41 videos
87 files
4.44K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
Основные операции, необходимые для начала работы с модулями
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 и последующие
Небольшой пакет golang для рендеринга разметки удобным для терминала способом
Пакет termd обеспечивает рендеринг разметки терминала с поддержкой подсветки синтаксиса блоков кода.
Особенности:
- подсветка синтаксиса кода,
- перенос слов до указанной ширины столбца,
- терминальный стиль.
Go Flutter для компьютера
Google Flutter — это платформа, которая позволяет вам разрабатывать приложения с единой кодовой базой на гугловском языке Dart. Flutter позволяет создавать красивые нативные приложения на iOS и Android. Этот неофициальный проект выводит Flutter на рабочий стол благодаря возможностям Go и GLFW. Сам механизм не знает, как обращаться с компьютером (например, обрабатывать ввод с клавиатуры / мыши). Вместо этого он предоставляет уровень абстракции для любой платформы для реализации. Целью этого проекта является реализация API встраивания Flutter с использованием единой кодовой базы, работающей в Windows, MacOS и Linux. GLFW подходит для этой задачи, потому что он предоставляет правильные абстракции поверх буфера / мыши / клавиатуры OpenGL для каждой платформы.
Go.dev: новый центр для разработчиков Go
"За последние два года, когда мы общались с пользователями компаний всех размеров, мы неоднократно слышали три вопроса: кто еще использует Go, для чего они его используют и как я могу найти полезные пакеты Go?", — сообщают в блоге Go.

Вчера был запущен go.dev, новый хаб для разработчиков Go, чтобы помочь ответить на эти вопросы. Там можно найти множество учебных ресурсов для начала работы с языком, примеры использования и примеры компаний, использующих Go.

golang.org по-прежнему является домом для проекта Go с открытым исходным кодом и дистрибутива Go. Go.dev — это сопутствующий сайт, предоставляющий эти вспомогательные ресурсы.
Статическая проверка в действии: инструмент статического анализа Staticcheck
Слишком часто мы обнаруживаем ошибки только после развертывания деплоя на продакшн. Даже на таком языке, как Go, можно писать неэффективный код и не отлавливать ошибки, пока не станет слишком поздно. Staticcheck — это инструмент статического анализа, который может решить эту проблему. Он специализируется на поиске ошибок, простоте кода, производительности и интеграции редактора. Staticcheck с открытым исходным кодом и предлагается бесплатно. Он постоянно дополняется новыми и улучшенными проверками.

Он имеет различные проверки:
- на неиспользуемые переменные,
- на откладывание метода Lock для мьютекса сразу после блокировки (пользователь, вероятно, намеревался вместо этого отложить Unlock),
- на недоступность кода и многое другое.
Методы оценки безопасности для проектов Go
"Практика Trail of Bits Assurance получила множество проектов Go, что было подтверждено успехом оценки в Kubernetes этим летом. В результате мы адаптировали для проектов Go некоторые методы и тактики оценки безопасности, которые мы использовали с другими скомпилированными языками", — вырезка из весьма полезного поста о методах безопасной разработки.
В результате авторами была создана адаптация для проектов Go, некоторые методы и тактики оценки безопасности, которые они использовали с другими скомпилированными языками.
Salt — Простая утилита командной строки, написанная на Go, которая поддерживает шифрование/дешифрование NaCL и криптографию с открытым ключом secretbox.
Использование HTTP/2 Server Push для создания быстрых и идиоматических клиентских API REST
Vulcain — это совершенно новый протокол, использующий HTTP/2 Server Push для создания быстрых и идиоматических клиентских REST API.

Также предоставляется сервер с открытым исходным кодом, который вы можете поместить поверх любого существующего веб-API, чтобы мгновенно превратить его в Vulcain-совместимый. Он поддерживает гипермедиа API, а также любой «устаревший» API, документируя его отношения с помощью OpenAPI .
Gotraning — это материал для любого разработчика среднего уровня, который имеет некоторый опыт работы с другими языками программирования и хочет изучать Go. Материал идеально подходит для тех, кто хочет начать обучение изучению го или для тех, кто хочет лучше понять язык и его внутреннюю среду.
Примечание. Этот материал предназначен для обучения в группе с тренером или же с ментором, так как код хорошо прокомментирован, но в нем отсутствуют некоторые контекстуальные концепции и идеи, которые будут рассмотрены в классе. Также вы можете внести свой вклад в развитие, создав новую учетную запись. :)
DockerSlim — прекрасный репозиторий с открытым исходным кодом, написанный на Go. Его использование — это большой шаг в правильном направлении! ;)

"Продолжай делать то, что делаешь. Не нужно ничего менять. Используй базовое изображение, которое хочешь. Используй менеджер пакетов, который хочешь. Не беспокойся о ручной оптимизации свое Dockerfile. Тебе не нужно выбрасывать свои инструменты и рабочий процесс, чтобы иметь небольшие изображения контейнеров" — обо всем этом беспокоится docker-slim.
Многие платят за образование, но после выпуска работают за зарплату ниже рынка, только чтобы получить опыт работы. МТС и Сколково создали образовательную программу для выпускников бакалавриата и магистратуры(возраст - 19-24 года), которая поможет подтянуть навыки и скиллы и, что самое главное, получить реальный опыт работы над проектом.

Программа платная, но у тебя есть возможность выиграть 100% грант на обучение. Узнай о программе, перейдя по ссылке https://prglb.ru/33gwx со своего ПК, найди все подсказки, информацию об обучении и сразу же стартуй с одного из этапов квеста.
Как начать работать с Docker

Docker раскрывает потенциал вашей организации, предоставляя разработчикам и ИТ-специалистам свободу создавать, управлять и защищать критически важные для бизнеса приложения, не опасаясь блокирования технологий или инфраструктуры. Docker позволяет объединять традиционные и облачные приложения, созданные на Windows Server, Linux и мэйнфреймах, в автоматизированную и безопасную цепочку поставок, улучшая сотрудничество между разработчиками и сокращая время окупаемости.

Docker можно использовать по-разному. Например, он предлагает одноразовую среду, которую можно использовать для изучения новых технологий. Docker предоставляет удобный способ иметь локальные среды разработки, которые часто соответствуют производственной среде. Docker также имеет популярный способ конфигурирования, сохранения и совместного использования серверных сред с использованием контейнеров, который помогает в установке приложения или большого стека с помощью простой команды запуска, например, «docker pull» или «docker run».

В этой статье описано когда и зачем использовать Docker.
Fuzz-тестирование в Go
Fuzzing — это метод тестирования, который загружает нашу программу случайными данными. Он дополняет обычное тестирование и позволяет разработчикам находить ошибки, которые было бы трудно найти при вводе вручную. Fuzzing довольно легко настроить в программах Go и может быть адаптирован практически всеми видами кода.

Где можно узнать больше?
Презентация о фаззинге на митапе Google TechTalk.
Учебники, примеры, обсуждения, исследовательские предложения и другие ресурсы, связанные с фаззингом — тут.
Быстрый старт: Golang & MongoDB
Полезная серия статей о том, как подключить и использовать MongoDB.

В первом уроке рассматривается, как установить связь между языком и базой данных.
Во втором уроке продолжается работа с материалом из первого урока, но также показано подключение к определенной коллекции для создания новых документов.
В третьем уроке показано чтение документов из MongoDB и создание запросов для получения документов на основе определенных критериев.
Hugo-темы
Docsy — это тема Hugo для наборов технической документации, обеспечивающая простую навигацию, структуру сайта и многое другое. Это неофициально активно поддерживаемый продукт Google, написанный на Go. Он является самым быстрым в мире статическим движком для сайтов.
На языке С++ можно написать любое приложение для любой задачи. Правда, он настолько сложный, что освоить все тонкости довольно трудно.

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/
Как вы думаете, что выведет данный код? 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.