Библиотека Go-разработчика | Golang
23.3K subscribers
2.07K 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
🚀🏢 Стартапы vs IT-гиганты: куда лучше устроиться Junior-разработчику

Представим ситуацию: вы начинающий разработчик с очень востребованным стеком (да, звучит как фантастика, но допустим). И так уж сложилось, что перед вами стоит выбор: пойти работать в стартап или крупную компанию. Причем предлагаемые условия абсолютно идентичны и там, и там.

Что же делать в такой ситуации?

👉 Разбираемся в статье
🔗 Зеркало
🔥21
🤦‍♂️ Есть такое слово «надо», которое отравляет многим жизнь. Надо получить вышку, надо жениться до стольких-то лет и родить детей до стольких-то, надо зарабатывать столько-то и еще много-много «надо».

❤️ Как с этим жить? Попробуйте вместо «надо» поставить «полезно». И если бесполезно — то не надо!

💬 А какое слово отравляет вашу жизнь? Поделитесь в комментариях 👇
🥱19❤‍🔥4👍4🌚1
💬 Какие существуют распространенные паттерны конкурентности в Go?

Паттерны конкурентности в Go обычно строятся вокруг горутин и каналов.

Вот несколько основных паттернов конкурентности, которые широко используются в Go:

🔸 Worker pools: подразумевает создание нескольких горутин (воркеров) для выполнения задач из очереди.

🔸 Fan-in (собирает данные из множества источников) и Fan-out (распределяет задачи между несколькими обработчиками).

🔸 Pipeline: организация горутин в серию обработчиков, где каждая горутина выполняет определенную подзадачу. Каждая стадия пайплайна читает из одного канала и пишет в другой, формируя цепочку обработки данных.

🔸 Publish/Subscribe: создание механизма, в котором одни горутины (издатели) публикуют сообщения в канал, а другие горутины (подписчики) читают эти сообщения.

🔸 Context passing: использование пакета context для управления жизненным циклом и отмены горутин. Это особенно полезно в сетевых приложениях и при выполнении запросов к базам данных.

🔸 Errgroup: использование пакета errgroup для параллельного выполнения задач с возможностью обработки ошибок и отмены всех задач при возникновении первой ошибки.

🔸 Select statement: использование оператора select для ожидания нескольких операций с каналами. select позволяет горутине ожидать несколько коммуникационных операций, блокируясь до готовности одной из них.

👉 Подробнее: доклад Go Concurrency Patterns Роба Пайка (слайды) и Advanced Go Concurrency Patterns (слайды) Sameer Ajmani
29👍14🔥2👏1
🥳 Выпущена версия Go 1.22.0!

📌 Мини-обзор изменений и новых возможностей:

1️⃣ Изменения в языке:

☑️ Изменения в поведении переменных в циклах for. Теперь каждая итерация цикла создает новые переменные, чтобы избежать ошибок совместного использования.
☑️ Циклы for теперь могут итерировать по целым числам.

2️⃣ Команда go:

☑️ В workspaces теперь можно использовать директорию vendor с зависимостями.
☑️ Команда go get больше не поддерживается в режиме GOPATH.
☑️ Изменения в go mod init и go test -cover.

3️⃣ Обновлен веб-интерфейс инструмента trace.

4️⃣ Инструмент vet:

☑️ Изменения в поведении vet в соответствии с новой семантикой переменных цикла.
☑️ Новые предупреждения для append и другие.

5️⃣ Рантайм: улучшения производительности и снижение использования памяти.

6️⃣ Компилятор: улучшения в Profile-guided Optimization (PGO) и другие оптимизации.

7️⃣ Linker: изменения в флагах -s/-w и другие улучшения.

8️⃣ Bootstrap: требуется последний релиз Go 1.20 или более новый для bootstrap.

9️⃣ Основная библиотека:

☑️ Новый пакет math/rand/v2.
☑️ Новый пакет go/version.
☑️ Улучшенные шаблоны роутинга в HTTP и многое другое.

🗒️ Примечания к выпуску
📦 Скачать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥111🌚1
🤩 Очередной любопытный CLI-инструмент на Go от команды ProjectDiscovery 👇
2
🤔 Устали сначала собирать, а потом анализировать данные о различных CVE из NVD и других критически важных источников? Команда ProjectDiscovery позаботилась об этом и представила новый инструмент cvemap.

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

✔️ Поиск и запрос набора данных CVE
✔️ Сопоставление CVE с Known Exploited Vulnerabilities Catalog
✔️ Сопоставление CVE и Exploit Prediction Scoring System
✔️ Сопоставление CVE и Common Platform Enumeration
✔️ Сопоставление CVE с PoC'ами на GitHub
✔️ Сопоставление CVE с Nuclei Template
✔️ Сопоставление CVE с отчетами HackerOne

go install github.com/projectdiscovery/cvemap/cmd/cvemap@latest


#news #tools #CVE
👍16🤔21
12 Factor CLI Apps.pdf
1.1 MB
🧰 12 факторов CLI-приложений

Go — тот самый язык, который отлично подходит и активно используется для разработки CLI-приложений.

📌 Вот 12 аспектов, о которых стоит знать при разработке последних:

1. Качественная документация
2. Использование флагов вместо аргументов
3. Возможность легко определить версию
4. Правильное использование stdout и stderr для вывода сообщений и данных
5. Обработка ошибок
6. Использование цветов, индикаторов выполнения и прогресс-баров для улучшения UX
7. Использование подсказок для ввода данных, когда это возможно
8. Эффективное отображение данных в таблицах
9. Оптимизация времени запуска и выполнения
10. Поддержка открытого исходного кода и вовлечение сообщества
11. Четкое разделение и описание подкоманд в CLI
12. Использование стандартов XDG для хранения файлов конфигурации, данных и кэша

👉 Подробнее на Medium или в PDF
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👏3
Начать курс «Алгоритмы и структуры данных» с вводной части можно уже сегодня

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

🔥Начать вводные занятия можно здесь – https://proglib.io/w/b00fcfd1

На курсе вас ждет:

▪️ бессрочный доступ

▪️ 47 видеолекций

▪️ 150 практических заданий

▪️ бессрочная поддержка в чате студентов

▪️развернутая обратная связь по всем домашним заданиям

🔹Подробная программа – https://proglib.io/w/40510c9e

Переходите, оставляйте заявку на вводные занятия и знакомьтесь с самым харизматичным спикером – Степаном Мацкевичем. Он определенно получил приз зрительских симпатий от наших студентов 🥰
3👍3🔥2😁1🥱1
Matthew Boyle, автор книги Domain-Driven Design with Golang, создал мини-курс по основным изменениям в Go 1.22. Врывайтесь👇

👨‍💻 Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🌚1
🔐 Filippo Valsorda, эксперт по криптографии и бывший член команды Go, делится подробностями разработки библиотеки mlkem768

🛠 mlkem768 — это реализация ML-KEM-768 на чистом Go + sha3. ML-KEM представляет собой механизм обмена ключами постквантовой криптографии, который в настоящее время стандартизируется NIST.

📺 И да, Filippo написал часть библиотеки в прямом эфире. Тоже можно посмотреть 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3
🥇 Спортивная мотивация и мотивация в IT, что общего?

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

👉 Читать статью
👉 Зеркало
👍10🔥4🥱21
🤔 Как отложенная (ленивая) инициализация может положить Go-сервис в Cloud Run?

Инженер из Google Valentin Deleplace делится историей повышения производительности Go-сервиса с помощью double-checked locking (второй скрин).

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍114🌚1
💡 Лучшие практики управления контекстом в Go

📌 Есть три ключевых правила работы с контекстом:

1️⃣ Только функции entry point должны создавать новый контекст, например, используя context.Background()
2️⃣ Контекст передается только вниз по цепочке вызовов
3️⃣ Не следует хранить контекст в структурах или использовать его после возврата функции

Первые два относительно просты, а вот третье стало причиной написания статьи.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍211🤔1🥱1
⚒️ Jaegar + Open Telemetry в действии: простой пример для Go-разработчика

📌 Пример файла Docker Compose для запуска Jaeger:

version: '3'
services:
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "16686:16686" # UI
- "14268:14268" # Collector
- "14250:14250" # gRPC
- "9411:9411" # Zipkin


📌 Пример минимального Go-приложения для демонстрации интеграции Open Telemetry:

package main

import (
"context"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/jaeger"
"go.opentelemetry.io/otel/sdk/resource"
"go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.7.0"
"log"
"math/rand"
"net/http"
"time"
)

func main() {
// Initialize Jaeger Exporter
exporter, err := jaeger.New(jaeger.WithCollectorEndpoint())
if err != nil {
log.Fatal(err)
}

// Create Trace Provider
tp := trace.NewTracerProvider(
trace.WithBatcher(exporter),
trace.WithResource(resource.NewWithAttributes(
semconv.SchemaURL,
semconv.ServiceNameKey.String("app-one"),
)),
)

otel.SetTracerProvider(tp)

http.Handle("/", otelhttp.NewHandler(http.HandlerFunc(SimpleHandler), "Hello"))
log.Fatal(http.ListenAndServe(":8081", nil))
}

func SimpleHandler(w http.ResponseWriter, r *http.Request) {
_, _ = w.Write([]byte("Hello, World!"))
}


👉 Источник

#tip
👍198🥱1
🖼️ Разработка HTTP-сервисов спустя 13 лет работы с Go: подход Мэта Райера, техдира Grafana Labs в команде машинного обучения

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

📌 В новом материале Мэт рассматривает ряд тем, связанных с созданием сервисов на Go, в том числе:

☑️ Структурирование серверов и обработчиков для максимального удобства сопровождения
☑️ Советы и рекомендации по оптимизации для быстрого запуска и graceful shutdown
☑️ Как выполнять общую работу, применимую ко многим типам запросов
☑️ Как правильно тестировать сервисы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥133👍2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤔 Как нестандартно войти в АйТи

Многие IT-специалисты приходят в эту сферу нестандартным путем — кто-то начинал как самоучка, а кто-то стал программистом случайно. Был ли у вас необычный старт карьеры в IT?

Расскажите нам свою историю! Ваш опыт может вдохновить тех, кто мечтает о переменах, но пока не решается начать.

❤️ С нетерпением ждем ваших комментариев!
🥱8👍5🌚1
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
👍1
🎮👨‍💻 15 игр, которые научат программированию

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

Читать статью
👍62