Найти в Дзене
🚀 Golang meetup - online Программа митапа: ✔️ Использование ресурсов Kubernetes Go-приложениями — Антон Жуков СберМаркет Разберем основы многопоточных приложений. Как kubernetes работает с ресурсами: CPU, RAM. И как правильно настраивать ваши Go приложения для производительной работы в kubernetes ✔️ Не делай этого в golang — Олег Козырев, Авито Доклад о типичных ошибках при разработке на golang. Знание некоторых нюансов языка, помогут не напороться на "грабли", любезно оставленные создателями. В докладе будет рассказаны некоторые хорошие практики, которые уберегут от этих "граблей". Это поможет экономить время на разработку, не тратя его на разбор странных багов. ✔️ Contextual Talk (Разбираемся в устройстве пакета context) — Олег Сидоренков, OzonTech Погрузимся во внутреннее устройство пакета context, вспомним историю его появления и предоставляемый функционал. Разберём подходы и нюансы реализации, заложенные разработчиками при создании библиотеки. Обсудим кейсы использования каждого из вида контекстов. На основе полученных знаний сформируем набор лучших практик. ✔️ Распределенные транзакции: выбор реализации — Попов Виталий, InDrive Рассмотрим выбор стратегии реализации процесса, представляющего собой распределенную транзакцию, на примере проведения платежа. Сравним реализации и выбор инфраструктурных компонентов доступных в экосистеме golang: хореграфия с использованием kafka или nats, fsm, собственный движок оркестрации, temporal. Модератор Григорий Петров, Devrel Evrone Эксперт Артём Кулешов, СберМаркет ➖➖➖ 🗓 26 июня, начало в 19:00 мск, Среда 🌐 ОНЛАЙН ✅ Ссылка на регистрацию erid: 2VtzqvTVp9d Реклама: ООО «ЭВРОНЕ.ру» ИНН: 3663057399
1 год назад
👣 Как загрузить пакет из приватного репозитория? ⏩Итак, ситуация. Есть приватный репозиторий. Можно склонировать себе данный репозититорий по ssh, но через go get / go install происходит ошибка: go: unrecognized import path "private.gitlab.ru/repositoryName": https fetch: Get "https://private.gitlab.ru/repositoryName?go-get=1": dial tcp 255.255.255.255:443(левый IP адрес): i/o timeout Попытки установить хост данного репозитория себе в переменные GONOPROXY / GOPRIVATE / GONOSUMDB не помогли, ошибка остаётся той же. ⏩Возможно, у кого-то тоже была такая проблема, надеюсь, этот совет ещё кому-то пригодится. Итак, если есть доступ по SSH, можно использовать такой вариант: git config --global url."git@private.gitlab.ru".insteadOf "https://private.gitlab.ru" 🟡Или используя access-токен git config --global url."https://${user}:${personal_access_token}@private.gitlab.ru".insteadOf"https://private.gitlab.ru" После этого go get / go install будут работать с приватными репозиториями. @golang
1 год назад
👣 Go: распространенные антипаттерны Самый простой способ писать хороший код заключается в том, чтобы не употреблять в своих программах «антипаттерны». Собственно, об этом и идёт речь в этой полезной статье А вот некоторые из обсуждаемых антипаттернов: 🟡Возврат значения неэкспортируемого типа из экспортируемой функции // Не рекомендовано type unexportedType string func ExportedFunc() unexportedType { return unexportedType("some string") } // Рекомендовано type ExportedType string func ExportedFunc() ExportedType { return ExportedType("some string") } 🟡Неоправданное использование пустых идентификаторов // Не рекомендовано for _ = range sequence { run() } x, _ := someMap[key] _ = <-ch // Рекомендовано for range something { run() } x := someMap[key] <-ch 🟡Ненужное выражение return в функциях // Бесполезное выражение return, не рекомендовано func alwaysPrintFoofoo() { fmt.Println("foofoo") return } // Рекомендовано func alwaysPrintFoo() { fmt.Println("foofoo") } 🟡Ненужные команды break в выражениях switch // Не рекомендовано switch s { case 1: fmt.Println("case one") break case 2: fmt.Println("case two") } // Рекомендовано switch s { case 1: fmt.Println("case one") case 2: fmt.Println("case two") } 📎 Статья @golang
1 год назад
👣 Получение параметров при использовании ssl ▶️Итак, реальный кейс, связанный с использованием ssl/tls сертификатов. В коде есть фрагменты передачи данных из форм такого типа http://localhost:8080/?param1=value Сейчас, без использования шифрования транспорта, можно получить значение param1 так r.FormValue("param1") Вопрос: если начать шифровать транспорт, сами данные останутся незашифрованны ведь? Или придётся изменить способ получения параметров из запроса и сперва эти параметры расшифровать? ▶️Вообще, здесь не важно, происходит шифрование транспорта или нет, в хендлер придут данные в расшифровоном виде. Вот простой пример: package main import ( "fmt" "log" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) w.Header().Set("Content-Type", "text/plain") w.Write([]byte(fmt.Sprintf("param1=%s", r.FormValue("param1")))) } func main() { http.HandleFunc("/", handler) http.NewServeMux() err := http.ListenAndServeTLS(":8080", "server.crt", "server.key", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } А вот команда генерации сертификатов: openssl req -x509 -nodes -newkey rsa:2048 -keyout server.key -out server.crt -days 3650 Такие дела @golang
1 год назад
Исследуешь айтишную тему, но пока нет большого опыта? Залетай до 20 апреля на «Цифровой марафон» Сбера и «Школы 21» и соревнуйся с равными! Три счастливчика отправятся отдыхать на премиум-курорты и прокачивать знания в СберУниверситете. Конкурс проводят по всей России, а минимальный возраст для участия — от 18 лет. Отличная возможность оценить свои навыки и получить советы для дальнейшего развития. А главное — лучшие в своих категориях отправятся на очный финал в Москву с церемонией награждения. Для успеха нужно пройти онлайн-игру на проверку логики и памяти, тестирование в соответствии с твоим уровнем подготовки и цифровой диктант. Здесь ты выбираешь язык, на котором будешь писать код. Заработай как можно больше очков, чтобы попасть в суперфинал, расправиться с более сложными задачами и выиграть главные призы! Дедлайн подачи заявок на участие уже не за горами, скорее переходи на сайт и регистрируйся!
1 год назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала