⚒️ Jaegar + Open Telemetry в действии: простой пример для Go-разработчика
📌 Пример файла Docker Compose для запуска Jaeger:
📌 Пример минимального Go-приложения для демонстрации интеграции Open Telemetry:
👉 Источник
#tip
📌 Пример файла 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
👍19❤8🥱1
Почти шесть лет назад Мэт написал пост на такую же тему, который стал вирусным и значительно повлиял на его взгляды относительно этой темы.
📌 В новом материале Мэт рассматривает ряд тем, связанных с созданием сервисов на Go, в том числе:
☑️ Структурирование серверов и обработчиков для максимального удобства сопровождения
☑️ Советы и рекомендации по оптимизации для быстрого запуска и graceful shutdown
☑️ Как выполнять общую работу, применимую ко многим типам запросов
☑️ Как правильно тестировать сервисы
Please open Telegram to view this post
VIEW IN TELEGRAM
Grafana Labs
How I write HTTP services in Go after 13 years | Grafana Labs
Mat Ryer, principal engineer at Grafana Labs and host of the Go Time podcast, shares what he's learned from more than a dozen years of writing HTTP services in Go.
🔥13❤3👍2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🤔 Как нестандартно войти в АйТи
Многие IT-специалисты приходят в эту сферу нестандартным путем — кто-то начинал как самоучка, а кто-то стал программистом случайно. Был ли у вас необычный старт карьеры в IT?
Расскажите нам свою историю! Ваш опыт может вдохновить тех, кто мечтает о переменах, но пока не решается начать.
❤️ С нетерпением ждем ваших комментариев!
Многие 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 запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
🎮👨💻 15 игр, которые научат программированию
А также помогут подготовиться к техническому собеседованию, развить алгоритмическое мышление и просто провести свободное время с пользой.
Читать статью
А также помогут подготовиться к техническому собеседованию, развить алгоритмическое мышление и просто провести свободное время с пользой.
Читать статью
👍6❤2
☑️ Легко расширяем
☑️ Совместим с CommonMark
☑️ Имеет хорошо структурированную архитектуру
import (
"bytes"
"github.com/yuin/goldmark"
"github.com/yuin/goldmark/extension"
"github.com/yuin/goldmark/parser"
"github.com/yuin/goldmark/renderer/html"
)
md := goldmark.New(
goldmark.WithExtensions(extension.GFM),
goldmark.WithParserOptions(
parser.WithAutoHeadingID(),
),
goldmark.WithRendererOptions(
html.WithHardWraps(),
html.WithXHTML(),
),
)
var buf bytes.Buffer
if err := md.Convert(source, &buf); err != nil {
panic(err)
}
👉 GitHub
👉 Goldmark playground
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - yuin/goldmark: :trophy: A markdown parser written in Go. Easy to extend, standard(CommonMark) compliant, well structured.
:trophy: A markdown parser written in Go. Easy to extend, standard(CommonMark) compliant, well structured. - yuin/goldmark
👍8❤4
Вы работаете в команде мидл-разработчиком, но уже давно чувствуете, что знаний у вас гораздо больше, чем у сеньора в команде. Ваши действия:
Anonymous Poll
17%
Свалю из такой команды
48%
Поговорю с тимлидом и попрошу пересмотреть грейды
1%
Смирюсь
12%
Забью и сделаю фокус на личном развитии
0%
Свой вариант (напишу в комментариях)
21%
Посмотреть результаты
🥱10❤2
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🧑🏻🏫 Менторство в IT: как стать айтишником, найти работу мечты и облегчить себе жизнь
Как вкатиться в IT и найти работу с помощью ментора? Чем могут помочь наставники и с какими запросами к ним приходят? А главное — где найти хорошего специалиста?
👉 Рассказываем обо всём в новой статье 👈
🔗 Зеркало
Как вкатиться в IT и найти работу с помощью ментора? Чем могут помочь наставники и с какими запросами к ним приходят? А главное — где найти хорошего специалиста?
👉 Рассказываем обо всём в новой статье 👈
🔗 Зеркало
👍6
🩷👨💻 Пока влюбленные шлют друг другу валентинки, айтишники отмечают свой профессиональный праздник. 14 февраля считается неофициальным днем компьютерщика.
🤦♂️ Так совпало, что именно в этот день в 1946 году общественности был продемонстрирован первый работающий электронный компьютер ENIAC I. Именно к этому событию приурочено празднование.
💬 А ведь раньше действительно айтишников называли компьютерщиками… Или кого там так называли? Кто винду мог переустановить?
🤦♂️ Так совпало, что именно в этот день в 1946 году общественности был продемонстрирован первый работающий электронный компьютер ENIAC I. Именно к этому событию приурочено празднование.
💬 А ведь раньше действительно айтишников называли компьютерщиками… Или кого там так называли? Кто винду мог переустановить?
🔥5❤3👍2🥱1
🤔 «Зачем уменьшать зависимости?» — спросите вы. Как минимум для уменьшения сложности, снижения риска, сокращения времени сборки и уменьшения размера итогового бинаря.
🤩 Под катом — взгляд на этот вопрос с примерами в Huma , Go-фреймворке для создания REST API с использованием OpenAPI, который может вдохновить вас на рассмотрение аналогичных вариантов для ваших собственных проектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2🥱2👍1🌚1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in your browser
VIEW IN TELEGRAM
🏎️ Основные особенности gRPC: на заметку разработчику
gRPC (Remote Procedure Calls) — это система удалённого вызова процедур с открытым исходным кодом, первоначально разработанная в Google в 2015 году. Под капотом используется HTTP/2 для транспорта и Protocol Buffers в качестве языка описания интерфейса.
🔹Protocol Buffers (Protobuf): gRPC по умолчанию использует Protocol Buffers (файлы .proto) в качестве языка описания интерфейса (IDL). Это делает сообщения gRPC меньше и быстрее по сравнению с JSON или XML. Protobuf позволяет определять структуру данных и интерфейс сервиса в едином формате, что упрощает сериализацию/десериализацию данных.
🔹Транспорт на основе HTTP/2: gRPC использует HTTP/2 для транспорта, что позволяет реализовать ряд улучшений по сравнению с HTTP/1.x. Включая такие фичи, как мультиплексирование потоков, сжатие заголовков, приоритизация запросов и поддержка серверного push.
🔹Поддержка множества языков программирования: gRPC поддерживает широкий спектр ЯП, включая C#, Java, Python, и Go, что делает его универсальным инструментом для создания распределенных систем.
🔹Двунаправленный стриминг: gRPC поддерживает стриминг запросов и ответов, что позволяет разрабатывать сложные real-time приложения вроде чат-сервисов.
👉 Источник
#инфографика
gRPC (Remote Procedure Calls) — это система удалённого вызова процедур с открытым исходным кодом, первоначально разработанная в Google в 2015 году. Под капотом используется HTTP/2 для транспорта и Protocol Buffers в качестве языка описания интерфейса.
🔹Protocol Buffers (Protobuf): gRPC по умолчанию использует Protocol Buffers (файлы .proto) в качестве языка описания интерфейса (IDL). Это делает сообщения gRPC меньше и быстрее по сравнению с JSON или XML. Protobuf позволяет определять структуру данных и интерфейс сервиса в едином формате, что упрощает сериализацию/десериализацию данных.
🔹Транспорт на основе HTTP/2: gRPC использует HTTP/2 для транспорта, что позволяет реализовать ряд улучшений по сравнению с HTTP/1.x. Включая такие фичи, как мультиплексирование потоков, сжатие заголовков, приоритизация запросов и поддержка серверного push.
🔹Поддержка множества языков программирования: gRPC поддерживает широкий спектр ЯП, включая C#, Java, Python, и Go, что делает его универсальным инструментом для создания распределенных систем.
🔹Двунаправленный стриминг: gRPC поддерживает стриминг запросов и ответов, что позволяет разрабатывать сложные real-time приложения вроде чат-сервисов.
👉 Источник
#инфографика
👍9❤2🔥2
💸 Рост или падение? Изменение зарплат в IT за 2023 год
Чтобы разобраться в этом вопросе, «Библиотека программиста» решила провести опрос среди читателей издания. Мы хотим понять, выросли ли ваши зарплаты в 2023 году и если да, то на сколько процентов. Или может быть наоборот — ваши доходы снизились на фоне кризисных явлений в экономике?
Примите участие в нашем коротком опросе и поделитесь своим мнением! Вместе мы проанализируем текущую ситуацию на рынке труда в IT-сфере и поймем, что ждёт эту отрасль дальше. Ждём ваших ответов!
Опрос займёт у вас примерно 4 минуты.
👉 Ссылка на опрос
Чтобы разобраться в этом вопросе, «Библиотека программиста» решила провести опрос среди читателей издания. Мы хотим понять, выросли ли ваши зарплаты в 2023 году и если да, то на сколько процентов. Или может быть наоборот — ваши доходы снизились на фоне кризисных явлений в экономике?
Примите участие в нашем коротком опросе и поделитесь своим мнением! Вместе мы проанализируем текущую ситуацию на рынке труда в IT-сфере и поймем, что ждёт эту отрасль дальше. Ждём ваших ответов!
Опрос займёт у вас примерно 4 минуты.
👉 Ссылка на опрос
👏6🤔3❤2👍1
💬 Как вы относитесь к парному программированию? Это то самое, при котором два разраба работают вместе над одной задачей, сидя за одним рабочим местом.
👨💻 Кирилл Мокевкин разобрался, что к чему, — если вам интересна эта тема.
#холивар
👨💻 Кирилл Мокевкин разобрался, что к чему, — если вам интересна эта тема.
#холивар
Telegram
Организованное программирование | Кирилл Мокевнин
Парный кодинг для всех
Про парное программирование слышали наверное все, но все ли его практикуют?
Сразу к делу, парное программирование, при правильном использовании, лучшая техника прокачки и распространения знаний в команде. Кроме того, качество кода…
Про парное программирование слышали наверное все, но все ли его практикуют?
Сразу к делу, парное программирование, при правильном использовании, лучшая техника прокачки и распространения знаний в команде. Кроме того, качество кода…
🥱10👍9🌚3❤2
Используйте
jsonfile
для сохранения значения Go в файле JSON.type JSONFile
func Load[Data any](path string) (*JSONFile[Data], error)
func New[Data any](path string) (*JSONFile[Data], error)
func (p *JSONFile[Data]) Read(fn func(data *Data))
func (p *JSONFile[Data]) Write(fn func(*Data) error) error
В несколько строк кода этого репозитория вложено немного больше мыслей, чем вы могли ожидать. Если вам нужна более подробная информация, смотрите заметки в блоге.
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - crawshaw/jsonfile: Persist a Go object to a JSON file
Persist a Go object to a JSON file. Contribute to crawshaw/jsonfile development by creating an account on GitHub.
🥱10👍3❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2
🏃 Самоучитель по Go для начинающих. Часть 7. Массивы и слайсы. Append и сopy. Пакет slices
Рассмотрим реализацию массивов и слайсов в языке Go, разберем функции append и copy, изучим пакет slices и по традиции решим несколько занимательных задач.
👉 Читать статью
👉 Часть 1
👉 Часть 2
👉 Часть 3
👉 Часть 4
👉 Часть 5
👉 Часть 6
Рассмотрим реализацию массивов и слайсов в языке Go, разберем функции append и copy, изучим пакет slices и по традиции решим несколько занимательных задач.
👉 Читать статью
👉 Часть 1
👉 Часть 2
👉 Часть 3
👉 Часть 4
👉 Часть 5
👉 Часть 6
👍17❤2🔥1😁1🥱1
🤔 Остаться или уйти? Оптимальный срок работы на одном месте
Вы любите свою работу, интересные проекты вам гарантированы, зарплата повышается каждый год. Но вот уже 5 лет вы трудитесь в одной и той же компании. Не пора ли что-то изменить, пока мотивация окончательно не улетучилась?
Многие опытные айтишники сталкиваются с такой дилеммой. С одной стороны, текущее место работы устраивает. С другой — хочется разнообразия, новых задач и знаний.
Должен ли современный IT-специалист менять работу чаще, чем раз в 5 лет? Или лучше наращивать экспертизу в рамках одной компании? А может дело совсем не в сроках, а в качестве задач и развитии карьеры?
👉 Расскажите о своём опыте в нашем новом опросе 👈
Вы любите свою работу, интересные проекты вам гарантированы, зарплата повышается каждый год. Но вот уже 5 лет вы трудитесь в одной и той же компании. Не пора ли что-то изменить, пока мотивация окончательно не улетучилась?
Многие опытные айтишники сталкиваются с такой дилеммой. С одной стороны, текущее место работы устраивает. С другой — хочется разнообразия, новых задач и знаний.
Должен ли современный IT-специалист менять работу чаще, чем раз в 5 лет? Или лучше наращивать экспертизу в рамках одной компании? А может дело совсем не в сроках, а в качестве задач и развитии карьеры?
👉 Расскажите о своём опыте в нашем новом опросе 👈
🥱21🌚4👍3❤2👾1
📌 Для базового использования просто укажите интересующий путь к пакету в качестве первого аргумента:
errcheck github.com/kisielk/errcheck/testdata
📌 Проверить все пакеты в текущей директории:
errcheck ./...
📌 Или проверьте все пакеты в вашем $GOPATH и $GOROOT:
errcheck all
👉 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Release v.1.7.0 · kisielk/errcheck
What's Changed
Go 1.22 support, plus other fixes.
Correct typos in comments and doc by @alexandear in #225
Fix errcheck issues in tests by @alexandear in #227
Directly specify the needed field...
Go 1.22 support, plus other fixes.
Correct typos in comments and doc by @alexandear in #225
Fix errcheck issues in tests by @alexandear in #227
Directly specify the needed field...
👍21❤2
00:00 — Lock-free структуры данных
00:41 — Реализация стека на связном списке
01:59 — Неправильная реализация lock-free стека
06:17 — Правильная реализация lock-free стека
09:43 — ABA проблема
11:55 — Hazard pointers
12:13 — Tagged pointers
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍12🌚3🥱2