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

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


@viktorreh
@anothertechrock

Чат: https://t.iss.one/+UA9kQbQdpFxmZGY6
Download Telegram
🦦 Otter

Самая быстрая библиотека golang in-memory cache, основанная на алгоритме S3-FIFO. Раюотает во много раз быстрее, чем Ristretto.

Внутри используется хеш таблица, которая имеет мьютекс на каждый бакет + seq lock для чтения + каждый бакет помещается в две кеш линии, что предотвращает false sharing и это намногооо быстрее map с мьютексом и sync.Map.
Также исрользуется несколько трюков для избегания частых локов политики вытеснения: при чтении используются wait-free буфферы, которые иногда могут терять данные, но так как главная задача кеша - хранить наиболее частые элементы, то потери незначительны + реализация mpsc очереди при записи, которая значительно превосходит каналы по перфомансу и принцип из статьи bp-wrapper, который коротко можно назвать "batch, batch, batch" aka кеш не обновляет политику мгновенно, а только после наполнения небольшого буффера.

go get -u github.com/maypok86/otter

▪️Github
Вакансии для Golang-разработчиков за последние 14 дней:

Golang Developer. Гибрид (Москва), до 220 000 ₽

Backend разработчик. Удалённо, от 290 000 ₽

Golang разработчикУдалёнка, 230–250 т.р.

Golang Developer Удалёнка (РФ), 200–240 т.р.

Golang Blockchain Engineer. Удалённо, 6 000–7 000 USD

Golang Developer Удалённо/офис (Азербайджан, Баку), 400–500 тыс. руб.

Golang Developer Гибрид/удалённо (Москва), 400 000–450 000 ₽

Backend Engineer Офис, 290–310 т.р.

#подборка #go
1
Вакансии для C#/.NET разработчиков за последние 14 дней:

C#/.NET-разработчик Удалёнка или гибрид (Москва), 170–200 т.р.

C# Developer Удалённо (РФ), 1400$ - 2500$

.NET разработчик Middle Удалённо, 240–280 т.р.

C#/.NET-разработчик Удалённо/гибрид, 170–200 т.р.

Fullstack QA на С# Удалённо (РФ), 250 000 - 370 000 ₽

QA full stack C# Удалённо (РФ), 250 000 - 280 000 ₽

.NET Backend Developer Удалённо (Бразилия), 5 000 - 6 500 $

C# .NET разработчик Удалёнка, 450-500 т.р.

QA Engineer C# Удалённо (РФ), 334 000 - 378 000 ₽

C# developer Гибрид (Москва), до 350 000 ₽

#подборка #csharp
👎8🤔3👍1
Вакансии для Golang-разработчиков за последние 14 дней:

Golang Blockchain Engineer Удалённо, 6000–7000

Golang Engineer Удалённо

Golang Developer Удалённо (РФ)

Go Developer Гибрид, от 5000 до 6000£

Go-разработчик Удалёнка (РФ), 300–340 т.р.

Golang Engineer Удалёнка, 5000 USD

Ведущий Golang-разработчик. Удалённо/гибрид (Москва), от 300 000 до 350 000 ₽

Go разработчик Удалёнка, 300 000 ₽

Go разработчик Удалёнка, 300 000 ₽

#подборка #go
2
📌 Задача палиндром наибольшей длины, полученный с помощью соединений из слов, состоящих из двух букв.

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

Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.

Необходимо создать палиндром наибольшей длины путем выбора некоторых элементов из массива строк и компаниовки их в любом порядке. Каждый элемент массива можно использовать не более одного раза.

В ответе надо вернуть длину такого палидрома.

Палиндром - строка, которая одинаково читаются слева направо и справа налево.

Пример:

Ввод:
words = ["lc","cl","gg"]
Вывод: 6
Объяснение: lc" + "gg" + "cl" = "lcggcl" или же "clgglc", но оба имеют максимальную длину 6.

Ввод: words = ["ab","ty","yt","lc","cl","ab"]
Вывод: 8
Объяснение: "ty" + "lc" + "cl" + "yt" = "tylcclyt" или "lcyttycl"

Ввод: words = ["cc","ll","xx"]
Вывод: 2

Решение

Пишите свое решение в комментариях👇
Вакансии для Golang-разработчиков за последние 14 дней:

Go PHP Developer. Удалёнка, $3700–4200

Golang Developer. Удалёнка/гибрид/офис (Ташкент), $3200–4000

Golang Developer. Удалёнка/офис (Лиссабон, Португалия), $4000–6000

Tech Lead Backend-команды (Go). Удалёнка/офис, 7000–9000 €

Go Developer. Удалёнка (РФ, РБ)

Golang разработчик. Удалёнка/офис/гибрид

Golang Разработчик. Офис/удалёнка/гибрид (Москва, Краснодар, Иннополис)

Golang Developer. Гибрид

#подборка #go
👍1👎1
🌐 HTTP уже не тянет? В микросервисной архитектуре запросы множатся, скорость падает, а код превращается в клубок зависимостей. Настало время познакомиться с инструментом, который решает эти проблемы изящно — gRPC.

📗 На открытом уроке вы разберёте, как работает этот фреймворк, почему он вытесняет REST и как описывать API с помощью Protobuf. Вы узнаете, как обеспечить обратную совместимость между сервисами, повысить производительность и упростить взаимодействие микросервисов.

❗️После вебинара вы сможете строить быстрые и надёжные коммуникации между сервисами на Go — с чистой архитектурой и минимумом боли.

➡️ 12 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Golang Developer. Professional». Регистрируйтесь и узнайте, почему gRPC становится стандартом нового поколения для Go-разработчиков: https://vk.cc/cR576N

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🤣1
👣 Reload — это библиотека для Go, разработанная для автоматического обновления ассетов веб-сервера, таких как HTML, CSS и JavaScript, без необходимости вручную перезагружать страницу!

🌟 Она отслеживает изменения файлов на сервере и автоматически передаёт обновления в браузер с помощью WebSocket. Это значительно упрощает процесс разработки веб-приложений, особенно для динамических проектов с частыми изменениями интерфейса.

🌟 Библиотека интегрируется с различными фреймворками Go, используя middleware, и поддерживает управление кэшированием через заголовки Cache-Control. Простота настройки делает Reload удобным инструментом для ускорения разработки и тестирования. Она идеально подходит для разработчиков, которые хотят минимизировать рутинные задачи и сосредоточиться на создании функционального и качественного кода.

🔐 Лицензия: MIT

🖥 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Effective Go
Руководство на русском языке

Автор: go.dev
Перевод от:
2024

#go #ru

Скачать
👍51
👣 Почему сообщество #golang старается не использовать сторонние библиотеки?

Некоторые причины исторические (до Go 1.11 в Go была довольно печальная история управления зависимостями), некоторые культурные (сообщество Go пропагандирует простоту и самодостаточность), но некоторые из них, я бы сказал, являются хорошей практикой независимо от используемого языка.

Безопасность - когда вы добавляете зависимость, вы добавляете разработчика (или команду разработчиков), с которым вы никогда не взаимодействовали, в качестве участника вашего проекта. Вы должны проанализировать библиотеку, как если бы она была написана собственными силами, и убедиться, что она соответствует вашим задачам и не несет никакого риска.

Сложность в поддержке - теперь вы и ваша команда должны поддерживать добавленную библиотеку в актуальном состоянии.

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

Просто нет необходимости - Это одна из лучших причин. В Go есть замечательная стандартная библиотека, и вы можете добиться очень многого, используя ее.

Так когда же следует обращаться к библиотеке?
Если то, что вы хотите реализовать, является функционально сложным, имеет приемущества от поддержки сообществом и берется из надежного источника, то использование библиотеки может быть хорошим вариантом.

Примерами библиотек, которые, на мой взгляд, являются достойными для внимания:

- Библиотеки шин сообщений (Kafka, RabbitMQ и т.д.)
- Библиотеки БД (Mongo, Postgres).
- Сложные криптографические вещи алгоритмы, которые не поддерживаются стандартной библиотекой.

👇 Напишите в комментаряих о ваших любимых сторонних библиотеках.

@golangprofi
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ Две структуры с одинаковыми полями могут иметь разный размер.

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

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

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

Она увеличивается до 32 байт, в то время как структура B остается меньше - 16 байт.
👍4
Вакансии для Golang-разработчиков за последние 14 дней:


Golang Developer. Удалёнка, 100–140 т.р.

Golang Developer. Удалёнка, 1700–2300 $

Go Developer. Удалёнка, 150–175 т.р.

Golang Developer. Гибрид

Golang Разработчик. Офис/гибрид/удалёнка (Москва, Краснодар, Иннополис)

Go Developer. Удалёнка

Python Go разработчик. Гибрид/офис (Москва)

Golang Developer. Удалёнка/офис (Лиссабон, Португалия), 4000–6000 $

Golang Developer. Удалёнка, 4000–7000 $


#подборка #go
Разбираем ключевые ошибки и учимся писать Go-код правильно с самого начала.

На уроке изучим:
🔹 особенности синтаксиса
🔹 нюансы concurrency
🔹 обработки ошибок
🔹 управления памятью в Go

Вы узнаете о типичных ловушках, с которыми сталкиваются разработчики при переходе из других языков.

Покажем, как правильно использовать концепции языка и не сломать себе мозг, разбираясь с горутинами.

Освоив эти принципы, вы сможете чувствовать себя уверенней.

👉🏻Забрать видеоурок
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Roboden-game

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

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

Github
Проект

#ebitengine #gamedev #golang
2👍1
🧑‍💻 Все еще пишешь типовой код вручную?

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

На открытом уроке «Кодогенерация в Go: код, который не пришлось писать» разберем, как это работает. Поговорим о том, когда кодогенерация уместна, какие механизмы Go ее позволяют и как это применяется в реальных проектах.

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

🗓 Урок пройдет 19 ноября в 20:00 в преддверии старта курса «Golang Developer. Professional». Все участники вебинара получат скидку на обучение. Регистрируйтесь по ссылке, чтобы освоить один из самых перспективных навыков в Go: https://vk.cc/cRq967

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Пишем первую программу на Go 🚀 Для самых начинающих.

Привет, будущие гоперы! 👋 Давайте отбросим страхи и напишем вашу первую программу на языке Go. Это проще, чем кажется!

Шаг 1: Готовим рабочее место

- Мы уже установили Go и редактор кода (например, VS Code). Открываем редактор и создаем новую папку для нашего проекта.
- Внутри папки жмем на «плюсик» и создаем файл. Но не простой, а с кодом на Go!

Шаг 2: Создаем правильный файл


- Файлы с кодом на Go имеют расширение .go
- Есть важное правило: главный файл программы, с которого всё начинается, принято называть main.go.
- Создаем файл main.go. Теперь мы готовы писать код!

В следующем посте перейдем к самому интересному — написанию кода!

#Go #Программирование #ДляНачинающих #УрокGo #Часть1

@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
5🥰3💩2
Первая программа на Go: разбираем код по косточкам 🦴

В нашем файле main.go нужно написать несколько строчек. Не пугайтесь незнакомых слов, сейчас всё объясню!

package main

import "fmt"

func main() {
fmt.Println("Hello, World!")
}


Давайте разберем, что тут происходит:

- package main — объявляем «главный пакет».
- import "fmt" — берем полезный ящик с инструментами под названием fmt. Он нужен, чтобы выводить текст на экран.
- func main() — объявляем главную функцию. Программа всегда начинает свою работу именно отсюда.
- {} — внутри этих фигурных скобок живет код, который будет выполняться.

⬇️ Самое главное:

fmt.Println(...) — это команда из нашего ящика fmt, которая печатает текст и переходит на новую строку.
Текст, который мы хотим вывести, пишем в кавычках "..."

В следующем посте мы ЗАПУСТИМ эту программу и увидим легендарный «Hello, World!»

#Go #Программирование #ДляНачинающих #УрокGo #Часть2

@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👀1
Запускаем первую программу на Go! Терминал и магия команды «go run»

Код написан, теперь нужно его выполнить. Редактор кода — это умный блокнот, но запускать программы он не умеет. Для этого нам нужен терминал и установленный Go!

Шаг 1: Открываем терминал в редакторе

Откроем сверху вкладку View ➡️ Terminal

Шаг 2: Волшебная команда

Убедитесь, что вы в папке с вашим main.go. Можно в терминале написать ls (на MacOS) или dir (на Windows), и нажать Enter, чтобы увидеть список файлов.

Вводим команду:
go run main.go

И нажимаем Enter

Что это значит?

- go — обращаемся к компилятору Go.
- run — просим его запустить файл.
- main.go — указываем, какой именно файл запускать.

Результат:
Если вы всё сделали правильно, в терминале вы увидите заветную надпись:
Hello, World!

Поздравляю! 🎉 Вы только что написали и запустили свою первую программу на Go! Это огромный шаг.

#Go #Программирование #ДляНачинающих #УрокGo #Часть3

@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4😁2