Учимся разрабатывать REST API на Go на примере сокращателя ссылок:
* мы выберем для него актуальный http-роутер,
* позаботимся о логах,
* напишем тесты: unit-тесты, тесты хэндлеров и функциональные,
* настроим автоматический деплой через GitHub Actions и др.
https://habr.com/ru/companies/selectel/articles/747738/
* мы выберем для него актуальный http-роутер,
* позаботимся о логах,
* напишем тесты: unit-тесты, тесты хэндлеров и функциональные,
* настроим автоматический деплой через GitHub Actions и др.
https://habr.com/ru/companies/selectel/articles/747738/
Хабр
Учимся разрабатывать REST API на Go на примере сокращателя ссылок
В этой статье мы напишем полноценный REST API сервис — URL Shortener — и задеплоим его на виртуальный сервер с помощью GitHub Actions. Говоря «полноценный», я имею в виду, что это будет не игрушечный...
❤11🔥2
Стартануло исследование Go-разработчиков про самые важные навыки, условия работы и сообщество. Проходите опрос, рассказывайте про ваш опыт, результаты появятся в сентябре!
👉 Пройти опрос
👉 Пройти опрос
🔥1
Go & IT
Скоро выйдет большое обновление go 1.21 ✅ Новые встроенные функции (max, min, clear) ✅ Новые пакеты slices, maps, cmp, log/slog ✅ Улучшена производительность компилятора и сборщика мусора
⚡️ Вышел Go 1.21 с изменениями про которые мы писали ранее, подробнее: https://go.dev/doc/go1.21
🔥17👍1
- Дженерики ждали все, а в итоге регулярно их используют только 10% разработчиков.
- До Middle Go-разработчик обычно растет 1-2 года, а тимлидом может стать уже через 3.
Подробнее:
Результаты исследования Go-разработчиков 2023
- До Middle Go-разработчик обычно растет 1-2 года, а тимлидом может стать уже через 3.
Подробнее:
Результаты исследования Go-разработчиков 2023
🔥17👍2
Вышел go 1.23 https://go.dev/doc/go1.23
go.dev
Go 1.23 Release Notes - The Go Programming Language
🔥16👍1👎1🎉1
Исcледования рынка Go-разработчиков
Второй год подряд ребята из DevCrowd проводят большое исследование Go-разработчиков:
- Что входит в обязанности и каких навыков не хватает
- Сколько в среднем зарабатывают в профессии в зависимости от грейда
- Какие инструменты, сервисы наиболее популярны
- Что читают, слушают и смотрят для профессионального развития.
Проходите опрос, делитесь своими мнениями и помогите сделать исследование максимально охватным. Организаторы обещают сравнить данные с прошлым годом и поделиться выводами публично уже в конце ноября.
Результаты опроса помогут вам сравнить свои ожидания с рыночными, построить план своего развития, и просто понять, что происходит с индустрией!
👉 Пройти опрос - https://survey.alchemer.eu/s3/90751981/Go-2024
Посмотреть результаты прошлого года - https://devcrowd.ru/go-2023/
Второй год подряд ребята из DevCrowd проводят большое исследование Go-разработчиков:
- Что входит в обязанности и каких навыков не хватает
- Сколько в среднем зарабатывают в профессии в зависимости от грейда
- Какие инструменты, сервисы наиболее популярны
- Что читают, слушают и смотрят для профессионального развития.
Проходите опрос, делитесь своими мнениями и помогите сделать исследование максимально охватным. Организаторы обещают сравнить данные с прошлым годом и поделиться выводами публично уже в конце ноября.
Результаты опроса помогут вам сравнить свои ожидания с рыночными, построить план своего развития, и просто понять, что происходит с индустрией!
👉 Пройти опрос - https://survey.alchemer.eu/s3/90751981/Go-2024
Посмотреть результаты прошлого года - https://devcrowd.ru/go-2023/
👍4❤1
Go & IT
Исcледования рынка Go-разработчиков Второй год подряд ребята из DevCrowd проводят большое исследование Go-разработчиков: - Что входит в обязанности и каких навыков не хватает - Сколько в среднем зарабатывают в профессии в зависимости от грейда - Какие инструменты…
Результаты исследования Go разработчиков 2024 - https://devcrowd.ru/go-2024
- На чем пишут помимо Go?
- Как часто ходят в офис?
- Какие инструменты используют?
И многое другое🖼️
- На чем пишут помимо Go?
- Как часто ходят в офис?
- Какие инструменты используют?
И многое другое
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Как главная страница Яндекса переезжала на Go - https://habr.com/ru/companies/yandex/articles/871868/
Хабр
Видишь суслика? А он есть! Как главная страница Яндекса переезжала на Go
Переезд большого сервиса с Perl на Golang едва ли кому‑то покажется простой задачей. А теперь представьте, что это главная страница Яндекса, на которую ежедневно заходят...
🔥11👍2
Что выведет программа выше на скриншоте?
Anonymous Quiz
16%
[1 2 3 100 200] [-1 2 3 100 200]
23%
[-1 2 3 100] [-1 2 3 100 200]
36%
[1 2 3 100] [-1 2 3 100 200]
25%
[1 2 3] [-1 2 3 100 200]
👍8
Планировщик Go — самый подробный гайд простым языком
https://habr.com/ru/articles/891426/
https://habr.com/ru/articles/891426/
Хабр
Планировщик Go — самый подробный гайд простым языком
Давайте спроектируем с нуля планировщик Go — начнём с самой простой и понятной наивной реализации, а затем шаг за шагом будем разбираться, какие изъяны в ней есть, и придумывать как их решать,...
🔥9👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27🤔3👎2
Оптимизация конкурентных приложений в Go
https://habr.com/ru/companies/vktech/articles/904046/
https://habr.com/ru/companies/vktech/articles/904046/
Хабр
Оптимизация конкурентных приложений в Go
Эпиграф в стиле А.П. Чехова по следам оригинального выступления Иван Семёныч Троицкий, программист сорока лет, застенчивый и робкий, от природы больше склонный к одиночеству, чем к публичным...
👍1
Оптимизация и советы по работе с хэш таблицами https://habr.com/ru/articles/901518/
Хабр
Карты (maps) в Go
Карты (maps) в Go — это отличный инструмент для хранения данных в виде пар «ключ — значение». Они широко используются в разработке благодаря своей гибкости и удобству. Например, карты часто...
❤4
Топ 15 самых распространённых ошибок при разработке на Golang https://habr.com/ru/articles/904658/
👍8
В августе планируется релиз go1.25, начинаем разбираться что нового в этом релизе 🖼️
📦 Спустя 13 лет разработчики решили добавить "Add+Done" wrapper. Теперь не нужно вручную писать Add(1) перед запуском горутины и defer Done() внутри неё. Всё это делает Go() автоматически. Сравним:
Go 1.24:
Go 1.25:
Простое изменение, которое делает код чище и надёжнее.
📦 Спустя 13 лет разработчики решили добавить "Add+Done" wrapper. Теперь не нужно вручную писать Add(1) перед запуском горутины и defer Done() внутри неё. Всё это делает Go() автоматически. Сравним:
Go 1.24:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
fmt.Println("go 1")
}()
wg.Add(1)
go func() {
defer wg.Done()
fmt.Println("go 2")
}()
wg.Wait()
fmt.Println("done")
Go 1.25:
var wg sync.WaitGroup
wg.Go(func() {
fmt.Println("go 1")
})
wg.Go(func() {
fmt.Println("go 2")
})
wg.Wait()
fmt.Println("done")
Простое изменение, которое делает код чище и надёжнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19😁6🤔3🔥2❤1
Продолжаем разбираться с go1.25 который должен выйти уже в этом месяце. В предыдущих версиях encoding/json struct-теги были довольно ограниченными, но в новом пакете encoding/json/v2 появилась мощная опция format, которая позволяет задавать специальное форматирование для разных типов: дат, чисел, байтовых массивов и тд. Пример:
Получившийся json:
Раньше приходилось вручную реализовывать MarshalJSON или писать вспомогательные поля, теперь же стало чуточку удобнее 🙌
package main
import (
"encoding/json/v2" // импортируем новый пакет
"math"
"time"
)
type Data struct {
// time.Duration в формате "1h0m0s" (строка)
Duration time.Duration `json:"duration,format:units"`
// time.Duration в секундах (числом)
DurationSec time.Duration `json:"duration_sec,format:sec"`
// time.Time в формате "YYYY-MM-DD"
Date time.Time `json:"date,format:'2006-01-02'"`
// []byte как base64url
B64 []byte `json:"b64,format:base64url"`
// float64 с поддержкой NaN и ±Inf в виде строки
Val float64 `json:"val,format:nonfinite"`
// nil slice выводится как null (а не [])
List []int `json:"list,format:emitnull"`
}
func main() {
data := Data{
Duration: time.Hour,
DurationSec: time.Hour,
Date: time.Now(),
B64: []byte("base64url"),
Val: math.NaN(),
}
dataJson, err := json.Marshal(data)
// ...
}
Получившийся json:
{
"duration": "1h0m0s",
"duration_sec": 3600,
"date": "2025-08-01",
"b64": "YmFzZTY0dXJs",
"val": "NaN",
"list": null
}
Раньше приходилось вручную реализовывать MarshalJSON или писать вспомогательные поля, теперь же стало чуточку удобнее 🙌
🔥12👍4🤩2