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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
💬Go — язык программирования, который отлично подходит для разработки облачных приложений. Что облачные технологии и облачные приложения из себя представляют теоретически?

📌Так звучат определения по мнению Cloud Native Computing Foundation:

Облачные технологии позволяют создавать и запускать масштабируемые приложения в современных динамических окружениях — общедоступных, частных и гибридных облаках.

Облачные технологии делают слабосвязанные системы устойчивыми, управляемыми и наблюдаемыми. В сочетании с надежной автоматизацией они позволяют разработчикам часто и предсказуемо вносить важные изменения с минимальными усилиями.

📝Исходя из этого, облачные приложения — больше, чем просто приложения, которые работают в облаке. Они также должны отвечать некоторым требованиям/атрибутам:

👉Масштабируемость — способность показывать ожидаемое поведение в условиях значительных колебаний спроса вверх и вниз.
👉Слабая связанность — свойство системы и стратегия проектирования, согласно которой компоненты системы знают лишь самый минимум о любых других компонентах.
👉Устойчивость — способность системы восстанавливаться после ошибок и сбоев.
👉Управляемость — простота (или ее отсутствие), с которой можно изменить поведение системы для обеспечения безопасности, бесперебойной работы и соответствия меняющимся требованиям.
👉Наблюдаемость — способность определения внутреннего состояния системы по наблюдаемым результатам.
👍101
🧰 Константин Соколов и Сергей Мачульскис, бэкенд-разработки в Positive Technologies, делятся опытом работы с пакетом context в Go

На их взгляд, он идеально выражает философию Go: образцовый интерфейс, постоянное развитие пакета и использование самых распространенных приемов Go.

🔗 Читать
🔥16👍5
Forwarded from Библиотека программиста | программирование, кодинг, разработка
💪👨‍💻 6 сервисов для подготовки к техническим собеседованиям

Мы не понаслышке знаем, какие глупые вопросы иногда задают на собеседованиях — этими историями с нами поделились вы. А теперь рассказываем, где готовиться к нормальным техническим собеседованиям, на которых вас не попросят заполнить бегемотами комнату. Подборка сервисов ждет вас в нашей статье👇

🔗Читать статью
🔗Зеркало
👍9🔥1
С какого языка программирования, по вашему мнению, проще всего перейти на Go? Если хотите, можете выбрать несколько вариантов.
Anonymous Poll
24%
С Go лучше начать свой путь в разработку ПО
22%
Python
13%
PHP
7%
JavaScript
10%
C#
2%
Ruby
32%
C
31%
C++
13%
Java
5%
Другой ЯП (напишу в комментарии)
👍5
🚀 Вышли версии Go 1.21.2 и 1.20.9

🔐Выпуск включают исправления безопасности для cmd/go и директивы "//line" (CVE-2023-39323).

🔈Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
💬В Go есть такое понятие, как «затенение» (англ. shadowing) переменной. Что оно из себя представляет?

🔹В Go происходит «затенение», когда переменная, объявленная во внутренней области видимости, имеет то же имя, что и переменная во внешней области видимости.

🔹В результате внутренняя переменная «затеняет» внешнюю, делая её недоступной в своей области видимости.

📌Пример:

package main

import (

"fmt"
)

func main() {
x := 10

if true {
x := 5 // здесь происходит затенение внешней переменной x
fmt.Println(x) // выводит 5, т. к. используется внутренняя переменная x
}

fmt.Println(x) // выводит 10, т. к. используется внешняя переменная x
}

🔹«Затенение» может быть особенно запутывающим, когда оно происходит с результатами функций, такими как err. Например, часто в Go вы можете видеть следующий код:

value, err := someFunction()
if err != nil {

// обработка ошибки
}

// ...

value2, err := anotherFunction() // здесь может произойти «затенение», если использовать := вместо =
if err != nil {
// обработка ошибки
}

Если вы случайно используете := вместо =, когда присваиваете результат anotherFunction(), вы создадите новую переменную err, которая «затенит» внешнюю переменную err. Это может привести к тому, что ошибки будут проигнорированы или обработаны неправильно.

📌Как обнаружить shadowing в коде? Есть не сколько способов: использовать встроенные инструменты Go или линтеры.

1. go vet -shadow ./...
2. golangci-lint run --enable shadow
3.
$ go get -u golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
$ go vet -vettool=$(which shadow)
👍36🌚3
🧰Мини-обзор стека Go-разработчика с акцентом на практику и достоинства/недостатки каждой библиотеки:

• kong,
• req,
• echo,
• worker,
• sqlite3 driver,
• ginkgo,
• golangci-lint,
• lo,
• log/slog.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔6👍2🥱1
Boxes and Glue — Go-библиотека для рендеринга PDF с использованием алгоритмов TeX. Основные фичи:

🏎 Высокая скорость
👌 Высокое качество вывода
🔩 Расширяемость
🚀 Возможности OpenType и формирование шрифта с помощью harfbuzz

Пример кода поможет понять используемую концепцию более подробно.

🔗GitHub
🔥10👍41🙏1
Как-то мы упустили из виду, что ребята из Evrone пообщались с Робом Пайком о карьере, охватывающей четыре десятка лет, об эволюции языка Go за последние 10 лет и перспективах на будущее.

👉 Читать интервью
👍35
Мнение Владимира Балуна о том, что должен знать начинающий Go-разработчик.

📺 Смотреть

#карьера
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱33👍4🤔32
🖼️ Антон Околелов, Go-тимлид в команде Karuna, делится опытом поиска «мёртвого» кода в проекте и оценки покрытия тестами «живого» кода

В Go 1.20 завезли возможность сбилдить приложение с флагом cover: go build -cover. После запуска приложения будет собираться статистика, показывающая, какие части кода были выполнены, а какие — нет.

Это, конечно, было сделано для интеграционных тестов, когда приложение запускается целиком в каких-то сценариях (а не через go test), но, вероятно, можно попробовать использовать этот кейс и по-другому: запустить прямо в проде, подождать и посмотреть, какие участки кода в реальности никогда не запускаются.

👉 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🤔31🥱1
🤔Обречен ли пакет encoding/json?

На GitHub началось обсуждение, цель которого — создание официального предложения по улучшению или, возможно, замене пакета json для устранения недостающей функциональности, недостатков API, ограничений производительности и поведенческих изъянов.

💬Список недостатков достаточно длинный, впрочем как и список предлагаемых улучшений. А вы что думаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🙏4
Writing_a_Netflix_Disney_Movie_Recommender_with_Go_by_Movie_o.pdf
5 MB
🎥 Написание сервиса рекомендаций к фильмам Netflix/Disney+ на Go

Под катом — пошаговый гайд по разработке простого веб-сервиса REST API на Go, который принимает от пользователя некоторую информацию (страна, подписки, жанр, ключевое слово и тип фильма) и предлагает рекомендации с соответствующими ссылками. Код — на GitHub, а готовый продукт — на reccio.com.
🔥9👍42
🎆Вслед за недавними обновлениями прилетели новые релизы Go 1.21.3 и 1.20.10, которые исправляют баги в net/http (CVE-2023-39325).

📌Обновления популярных Go-инструментов:

Mods 1.0.0 — CLI ИИ-инструмент от создателей Charm
Viper 1.17 — мощное и гибкое решение для конфигурации Go-приложений
requests 0.23.5 удобная библиотека HTTP-запросов для Go
task 3.31.0 — простой в использовании инструмент для запуска/сборки задач
Roaring 1.6 — реализация растровой структуры данных Roaring
Betteralign 0.3.1 — инструмент для обнаружения структур, элементы которых можно лучше выровнять
Ginkgo 2.13 – современный фреймворк для тестирования

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9