Golang Юниор
4.88K subscribers
198 photos
7 videos
229 links
Канал для начинающих изучать язык программирования Go. Юниоры или Junior - Вперед.

Контент нашего канала состоит из:
- туториалы
- вопросы с собесов
- тесты на знания Go


@anothertechrock
@viktorreh

Чат: https://t.me/+UA9kQbQdpFxmZGY6
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Huh.

Huh: простая, мощная библиотека для создания терминальных форм (написана на Go).

▪️Github

@golangprofi
👣 SGSG - Svelte + Go + SQLite + gRPC

Это полнофункциональное приложение с открытым исходным кодом, в основе которого лежат два основных принципа: ПРОИЗВОДИТЕЛЬНОСТЬ и ПРОСТОТА. Идея заключается в том, что вы можете взять этот шаблон и использовать его для создания собственного проекта и он будет очень хорошо масштабироваться.

Кроме того, это не очередной шаблон для разработчиков. В нем есть все, что нужно для запуска в продакшен: конфигурация Nginx, развертывание Docker, GitHub Actions, логирование Grafana и т. д.

▪️Github
⁉️ Хотите научиться писать эффективные интеграционные тесты на Go?

Тогда ждём вас на практическом уроке от OTUS, где вы вместе с опытным экспертом:

- посмотрите, какое место в пирамиде тестирования занимают интеграционные тесты;
- узнаете, зачем их писать;
- напишете несколько тестов на практике;
- получите ответы на все возникающие вопросы.

Встречаемся 2 июля в 20:00 мск в преддверии старта курса «Golang Developer. Professional». Все участники вебинара получат специальную цену на обучение!

➡️ Пройдите короткий тест прямо сейчас, чтобы не пропустить бесплатный урок: РЕГИСТРАЦИЯ
Восстановить IP

Сложность: Средняя

Условие задачи: Рабочий IP-адрес состоит ровно из четырех целых чисел, разделенных одиночными точками. Каждое целое число находится в диапазоне от 0 до 255 (включительно) и не может содержать начальных нулей.

Например, "0.1.2.201" и "192.168.1.1" являются допустимыми IP-адресами, но "0.011.255.245", "192.168.1.312" и "192.168@1.1 " являются недопустимыми IP-адресами.
Учитывая строку s, содержащую только цифры, верните все возможные действительные IP-адреса, которые могут быть сформированы путем вставки точек в s. Вам не разрешается изменять порядок или удалять какие-либо цифры в s. Вы можете вернуть действительные IP-адреса в любом порядке.

Пример:

Ввод:
s = "25525511135"
Вывод:
["255.255.11.135","255.255.111.35"]

Ввод:
s = "0000"
Вывод:
["0.0.0.0"]

Решение задачи

Пишите свое решение в комментариях👇
👣 errtrace - это экспериментальный пакет на Go для отслеживания пути возврата ошибки, трассировка возврата.

Если трассировка стека отслеживает путь кода, который привел к ошибке, то трассировка возврата отслеживает путь кода, который ошибка прошла, чтобы добраться до пользователя. Часто это один и тот же путь, но в Go они могут различаться, поскольку ошибки - это значения, которые могут передаваться между горутинами (например, с помощью каналов).

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

▪️Github
👣 Go + gRPC + GORM + SQLite + GIN + Swagger

gRPC - это система удалённого вызова процедур (RPC) с открытым исходным кодом, первоначально разработанная в Google в 2015 году. Она имеет открытый исходный код и используется для коммуникаций с архитектурой клиент-сервер.

gRPC может использовать буферы протоколов в качестве определения интерфейса lang

▪️Github
🔥Разработчики на Go! Вам нужны экстремальные результаты в разработке?

Присоединяйтесь к нашему открытому онлайн вебинару «Как сделать быстрорастущий сервис с помощью трейсинга».

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

🗣Спикер — DevOps-инженер в нескольких крупных проектах, опытный разработчик и преподаватель.

Встречаемся онлайн 25 июля в 20:00 мск. Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок:

➡️ РЕГИСТРАЦИЯ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Как базы данных выполняют SQL-запросы?

Процесс выполнения SQL-запросов в базе данных включает в себя несколько компонентов, взаимодействующих между собой. Хотя конкретная архитектура различных систем баз данных может отличаться, ниже описана общая последовательность действий.

1. Оператор SQL запускается в клиентской программе и передается по сети на сервер базы данных.

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

3. Оптимизатор запросов просматривает дерево запросов и определяет наиболее эффективный способ выполнения SQL-оператора, создавая план выполнения.

4. План выполнения передается исполнителю запроса, который использует его для координации получения или изменения данных в соответствии с запросом SQL. Для доступа к данным исполнитель взаимодействует с движком хранилища.

5. Движок хранилища использует методы доступа - протоколы чтения и записи данных, наиболее эффективные для выполнения различных операций.

6. При чтении данных менеджер буферов проверяет, кэшированы ли нужные данные в памяти, и при необходимости извлекает их с диска. Это ускоряет последующий доступ.

7. При записи данных со вставкой или обновлением менеджер транзакций следит за тем, чтобы изменения происходили атомарно и сохраняли целостность базы данных.

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

Работая вместе, эти компоненты обеспечивают надежную и эффективную обработку SQL-запросов в системе управления базами данных.

@golangprofi
🔍Хотите углубить свои знания в области backend и блокчейн-разработки?

☄️А теперь представьте, что вы уверенно пишете код на Rust как для классического backend, так и для блокчейн-систем. Вы востребованы и получаете хорошие офферы в финтехе.

Хотите это реализовать? Присоединяйтесь к открытому вебинару «Backend vs Blockchain на Rust» 14 августа в 20:00 мск и сделайте прыжок в будущее! На занятии мы разберём:

- принципы работы блокчейн-систем;
- различия между смарт-контрактами и классическим backend;
- примеры кода и сравнение разработки на Rust для backend и блокчейн.

Спикер Кирилл Федченко — опытный разработчик на нескольких языках.

➡️ Встречаемся в рамках курса «Rust Developer. Professional». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ Две структуры с одинаковыми полями могут иметь разный размер.

Это явление известно как "padding", понятие, заимствованное из языка C++, но применимое и в Go.

Рассмотрим приведенный выше пример.

Структуры A и B имеют совершенно одинаковые поля, но если просто переставить порядок полей, то структура A станет в два раза больше.

Она увеличивается до 32 байт, в то время как структура B остается меньше - 16 байт.
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Roboden-game

Создать RTS, которая бы хорошо работала в браузере с помощью #golang, сложная задача, но возможная.

Игра написана с использованием движка Ebitengine и даже доступна в Steam.

Github
Проект

#ebitengine #gamedev #golang
Что выведет код?

package main

var m = make(map[any]any)

func foo[T any](x T) {
type K struct{}
m[K{}] = x
}

func main() {
foo(123)
foo(true)
println(len(m))
}


Ответ
Задача: Идеальное число

Условие: идеальное число - это положительное целое число, которое равно сумме делителей этого же числа, за исключением самого числа.

Необходимо проверить входное число на идеальность.

Пример:

Ввод:
num = 28
Вывод: true
Объяснение: 28 = 1 + 2 + 4 + 7 + 14

Ввод: num = 7
Вывод: false

Решение

Пишите свое решение в комментариях👇
📣Как сделать верификацию пользователя в системе с помощью телеграмм-бота?

Узнайте на открытом вебинаре 18 сентября в 20:00 мск, где мы разберем:

- как реализовать потоко-независимый тип map;
- как создать и настроить телеграмм-бота для постоянного ожидания пользователей;
- как использовать web-socket и каналы для верификации пользователя.

Встречаемся в преддверии старта курса «Go (Golang) Developer Basic». Все участники вебинара получат специальную цену на обучение!

➡️Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/bTU0/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Задача: Ежедневная температура

Условие: дается массив, в котором содержатся на температуры за определенный день. Необходимо вернуть массив, такой что будет содержать на i-ой позиции количество дней, которое необходимо выждать, чтобы наступил день теплее. Если такой ситуации не случается, то на i-ой позиции установить 0.

Пример:

Ввод:
temperatures = [73,74,75,71,69,72,76,73]
Вывод: [1,1,4,2,1,1,0,0]

Ввод: temperatures = [30,40,50,60]
Вывод: [1,1,1,0]

Решение

Пишите свое решение в комментариях👇
Хотите узнать, как использовать Patroni для управления высокодоступными кластерами PostgreSQL?

Ждем вас на открытом вебинаре 24 октября в 20:00 мск, где мы разберем:

- что такое Patroni и как он помогает обеспечить высокую доступность для PostgreSQL;
- основные компоненты и архитектуру Patroni;
- настройку и конфигурацию Patroni для работы с PostgreSQL;
- примеры использования Patroni для управления кластером PostgreSQL;
- практические советы по оптимизации и мониторингу работы кластера.

👨‍💻🛠👨🏻‍💻 Урок для DevOps-инженеров, системных администраторов, backend-разработчиков и тимлидов, стремящихся обеспечить высокую доступность PostgreSQL.

Спикер Андрей Поляков — старший разработчик в Unlimint.

Встречаемся в преддверии старта курса «Highload Architect». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⚡️ Выпущен Go-HTML 1.0

Go-HTML предоставляет платформу для программирования интерактивных компонентов пользовательского интерфейса с использованием Go (вместо JavaScript) для веб-приложений.

##golang #htmx #javascript #программирование #релиз #webdev

Go-HTML может использовать компоненты Templ.

- https://go.dev/
- https://htmx.org/
- https://templ.guide/

▪️ Github

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие брокеры использовать, чтобы обеспечить асинхронную связь между микросервисами?

Узнайте на открытом практическом уроке «Брокеры сообщений: RabbitMQ и Kafka» от OTUS, где мы узнаем:

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

🗓 Встречаемся 24 октября в 20:00 мск в преддверии старта курса «Microservice Architecture». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!

➡️ Ссылка для регистрации

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👩‍💻 Пакет unique в Go 1.23 — хороший способ оптимизировать ваши ресурсы

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Операции со слайсами в Go

Будет полезно начинающим гоферам;
здесь наглядно показывается, как работают слайсы, какие они имеют методы и как взаимодействуют с разными функциями

📎 Go slice tricks

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 go-backend-clean-architecture-chi

Проект чистой архитектуры Go Backend с Chi (стандартный net/http), MongoDB, JWT Authentication Middleware, Test и Docker.
#golang

▪️Github

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM