Pagoda набор инструментов для быстрой и простой фуллстек-разработки
👣 Pagoda — набор инструментов для быстрой и простой фуллстек-разработки на Go. Под капотом: echo, ent, Postgres, Redis, htmx, Alpine.js и Bulma.

git clone git@github.com:mikestefanello/pagoda.git
cd pagoda
make up


🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
conc better structured concurrency for go conc это
👣 conc: better structured concurrency for go

conc — это ваш набор инструментов для структурирования конкуренции в Go, который делает обычные задачи проще и безопаснее.

🖥 Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Как подружить Go c Kubernetes В Слёрме 6
Как подружить Go c Kubernetes

В Слёрме 6 февраля начнется курс «Kubernetes для разработчиков».

Поток пройдет с 6 февраля до 21 марта, видеокурс доступен всегда.

Курс знакомит с базовыми абстракциями k8s и устройством кластера, объясняет, как запускать приложения в кластере.

Учимся конфигурировать своё приложение в Kubernetes, хранить данные и конфиги в нужных местах, выполнять миграции в базе данных для приложения, использовать Helm. Спикеры рассказывают, какие существуют практики и какие из них стоит применять. Рассматриваем особенности языков программирования при запуске в Kubernetes (Go, Python, Java).

Спикеры:
Марсель Ибраев (System Engineer, G42 Cloud);
Павел Селиванов (архитектор, Yandex Cloud).

Подробнее о курсе: https://slurm.club/3YUPVXS
Тестовое задание для стажера в юнит Market Intelligence
👣 Тестовое задание для стажера в юнит Market Intelligence

Нужно реализовать HTTP сервис для голосования. Например, для выбора самого популярного покемона. UI не нужен, достаточно сделать JSON API сервис. Должна быть возможность:

Задача

Нужно реализовать HTTP сервис для голосования. Например, для выбора самого популярного покемона. UI не нужен, достаточно сделать JSON API сервис. Должна быть возможность:

Создать новое голосование с разными вариантами ответов
Отдать свой голос за какой-либо вариант
Получить текущий результат голосования

Реализовать методы:

- POST /api/createPoll/ создать голосование c вариантами ответов
- POST /api/poll/ проголосовать за конкретный вариант: <poll_id, choice_id>
- POST /api/getResult/ получить результат по конкретному голосованию: <poll_id>

Структура и формат входных и выходных данных на ваше усмотрение.

Описание идеального решения
Задание декомпозировано, составлен иерархический список работ. Каждый пункт из этого списка может быть реализован за небольшое время.
Составлена схема архитектуры со всеми сущностями и их связями в Miro
Код слабо связан, функции не имеют побочных эффектов
История коммитов осмысленная. По ней видно, в каком порядке решалась задача.
Покрытие тестами >70%

Требования
Язык: Go
Результаты голосования должны храниться в базе данных. Мы обычно используем PostgreSQL и MongoDB, но можно выбрать любую другую.
Код нужно выложить на github (просьба не делать форк этого репозитория, чтобы не плодить плагиат)
Предоставить инструкцию по запуску приложения. В идеале (но не обязательно) – использовать контейнеризацию с возможностью запустить проект командой docker-compose up
Сервис должен отвечать на 8000 порту

Усложнения
Написаны тесты (постарайтесь достичь покрытия в 70% и больше)
Опишите, как изменится архитектура, если мы ожидаем большую нагрузку (Реализация не требуется)
Опишите, как можно защититься от накруток (Реализация не требуется)
Попробуйте оценить, какую нагрузку в RPS сможет выдержать ваш сервис

Что будет оцениваться
Декомпозиция задачи (например, в виде вложенного списка подзадач)
Архитектура решения
Корректность реализации
Подход к тестированию
Понятность инструкций и документации
Codestyle

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Бесплатные онлайн практикумы по DevOps Linux Networks и
Бесплатные онлайн практикумы по DevOps, Linux, Networks и Golang от REBRAIN: расписание на январь

Мы проводим бесплатные практикумы на всевозможные IT темы. Основное — Kubernetes, Docker, Ansible, Gitlab CI, Linux, Kafka , MySQL, Golang и др. Работаем в консоли, разбираем реальные кейсы на практике. Анонсы публикуем на нашем канале в Telegram

👉Подключайтесь

Ближайшие бесплатные практикумы:

✔️10 января DevOps: Тюнинг Nginx для клиентской оптимизации (Николай Лавлинский - Технический директор в ООО “Метод Лаб”)
✔️11 января Linux: Процессы, демоны, зомби, сироты (Андрей Буранов - Специалист по UNIX-системам в компании VK)
✔️12 января Networks: Создание собственной криптовалюты в сети TON (Михаил Белкин - CTO haknem.com)
✔️18 января Linux: Определение нагрузки на сервер и поиск узких мест производительности (Андрей Буранов - Специалист по UNIX-системам в компании VK)
✔️18 января TeamLead: Как нанять 20 сеньоров за 1 собес и не облажаться (Максим Ульянов - Руководитель отдела клиентской разработки в RUTUBE)
✔️19 января Golang: Работа с gprc в golang (Глеб Наземнов - Разработчик в компании Aliexpress Russia)
✔️25 января Linux: Аутентификация в Linux (Даниил Батурин - Основатель проекта VyOS)
✔️25 января TeamLead: Как продвинуть идею с нуля (Наталья Белоусова -Teamlead devops ex-selectel)
✔️26 января Golang: Observability. Логи, метрики, трейсы (Сергей Парамошкин - Сергей Парамошкин)
✔️26 января Networks: Разграничение доступа между сетями на основе ACL (Ольга Яновская - Разработчик в Pyzzle.ISP)

👉Посмотреть расписание и записаться
PocketBase озволяет быстро и безболезненно развернуть real-time бекенд
👣 PocketBase — озволяет быстро и «безболезненно» развернуть real-time бекенд буквально за минуту.PocketBase компилируется в один переносимый бинарник и состоит из:

— встроенной базы данных SQLite + realtime subscriptions,
— удобной панели администратора,
— встроенного управления файлами и пользователями,
— и удобного REST-API.

🖥 Github
✔️ Документация

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Лучшие бесплатные книги Golang 2023 Есть много доступных
📚 Лучшие бесплатные книги Golang 2023.

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

✔️ Смотреть список

@Golang_google
DiscordGo DiscordGo это пакет Go который обеспечивает низкоуровневую
👣 DiscordGo

DiscordGo — это пакет Go, который обеспечивает низкоуровневую привязку к API-интерфейсу клиента чата Discord. DiscordGo почти полностью поддерживает все методы API Discord, интерфейс веб-сокеты и голосовой интерфейс.

go get github.com/bwmarrin/discordgo

🖥 Github
✔️ Examples

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Решаем задачи с codewars Последняя цифра огромного числа
👣 Решаем задачи с codewars

Последняя цифра огромного числа

Для данного списка {x1, x2, x3, ..., xn} вычислить последнюю (десятичную) цифру
x1 ^ (x2 ^ (x3 ^ (... ^ xn))).

Примеры
Пример 1
LastDigit([]int{3, 4, 2}) // должно вернуть 1
потому что 3 ^ (4 ^ 2) = 3 ^ 16 = 43046721

Примечания
Прогрессия растет невероятно быстро. Например, 9 ^ (9 ^ 9) имеет более 369 миллионов цифр. LastDigit должен эффективно обрабатывать такие числа.
0 ^ 0 = 1
0 ^ (0 ^ 0) = 0 ^ 1 = 0

Пустой список следует рассматривать как равный 1

Решение
package src

func LastDigit(as []int) int {
if len(as) == 0 {
return 1
}

for key := len(as) - 1; key > 0; key-- {
if as[key] == 0 {
as[key-1] = 1
as = as[:key]
continue
} else if as[key] == 1 {
as = as[:key]
continue
}

if as[key-1]%10 == 2 || as[key-1]%10 == 3 || as[key-1]%10 == 7 || as[key-1]%10 == 8 {
switch as[key] % 4 {
case 0:
as[key-1] = pow(as[key-1], 4)
case 1:
as[key-1] = pow(as[key-1], 5)
case 2:
as[key-1] = pow(as[key-1], 6)
case 3:
as[key-1] = pow(as[key-1], 7)
}
} else if as[key-1]%10 == 4 || as[key-1]%10 == 9 || as[key-1]%10 == 1 {
switch as[key] % 2 {
case 0:
as[key-1] = pow(as[key-1], 2)
case 1:
as[key-1] = pow(as[key-1], 3)
}
} else if as[key-1]%10 == 5 {
as[key-1] = 25
} else if as[key-1]%10 == 6 {
as[key-1] = 36
} else if as[key-1]%10 == 0 {
as[key-1] *= as[key-1]
}
as = as[:key]
}

return as[0] % 10
}

func pow(a, b int) int {
result := getDigs(a)
for i := 1; i < b; i++ {
result = getDigs(result * a)
}

return result
}

func getDigs(a int) int {
if a > 1000 {
return a % 1000
}

return a
}


@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM

506637

Каналов

2365983

Сообщений