Мои собеседования (Golang developer)
Разработкой начал заниматься ещё со старшей школы, изучал C/C++ (очень пригодилось при написании скриптов в injection для ультимы онлайн). Профессионально начал работать разработчиком приблизительно с 2014, основной язык до 2020 года был C# с примесью C++. Сначала разрабатывал и поддерживал некоторые проекты в банковской сфере, потом резко поменял предметную область и ушёл писать софт для автоматизации работы одного строительного девелопера. На начальных этапах это было огромное легаси на C# от бывшего архитектора, решившего стать программистом, с кучей багов и неочевидных решений, пришлось много переписывать.
Со временем появились задачи, которые не были привязаны к языку и технологиям в принципе (изначально писал, по сути, плагины к CAD-приложениям), и я попробовал Golang, а вместе с ним и микросервисы, NoSQL, gRPC и прочие модные штуки. Побывал в шкуре админа-девопса, так как новые сервисы я запускал и поддерживал сам.
Некоторое время назад наткнулся на пост про собеседования и решил рассказать Хабру про свой опыт. Возможно, кому-то он окажется полезным.
Почему вообще собеседовался? Во-первых, стало интересно - а как это, работать в большой компании разрабов? На последнем месте у меня было два разработчика, и я чуть-чуть попробовал себя в роли тимлида бэкендеров.
Во-вторых, как и у всех – деньги (двое детей, машина в кредит, вот это вот всё...).
В-третьих, понимание того, что я хорошо уже так стагнирую на своём прошлом месте, потому что всё, что нужно – уже написано, и требует только поддержки, а более-менее интересные идеи нельзя реализовать текущей маленькой командой.
В-четвёртых, на прошлом месте работы приходилось заниматься не только разработкой, но и настройкой деплоя, администрированием, ручным тестированием и прочей «обвязкой» программистской деятельности, это очень выматывает, если вы понимаете о чём я – хочешь развиваться как разработчик, но в итоге тратишь кучу времени на смежные области.
Скажу сразу, что во все компании, в которые я проходил собеседования и о которых далее пойдет речь, я шёл как middle или senior. На самом деле я опирался в основном на цифру в графе зарплаты. Из других вводных - ориентировался на хотя бы частичную удалёнку и зарплату в рынке, но в принципе если мне бы очень уж понравилось, готов был обсуждать на 10-20% меньше.
https://habr.com/ru/articles/683920/
👉 @golang_lib
Разработкой начал заниматься ещё со старшей школы, изучал C/C++ (очень пригодилось при написании скриптов в injection для ультимы онлайн). Профессионально начал работать разработчиком приблизительно с 2014, основной язык до 2020 года был C# с примесью C++. Сначала разрабатывал и поддерживал некоторые проекты в банковской сфере, потом резко поменял предметную область и ушёл писать софт для автоматизации работы одного строительного девелопера. На начальных этапах это было огромное легаси на C# от бывшего архитектора, решившего стать программистом, с кучей багов и неочевидных решений, пришлось много переписывать.
Со временем появились задачи, которые не были привязаны к языку и технологиям в принципе (изначально писал, по сути, плагины к CAD-приложениям), и я попробовал Golang, а вместе с ним и микросервисы, NoSQL, gRPC и прочие модные штуки. Побывал в шкуре админа-девопса, так как новые сервисы я запускал и поддерживал сам.
Некоторое время назад наткнулся на пост про собеседования и решил рассказать Хабру про свой опыт. Возможно, кому-то он окажется полезным.
Почему вообще собеседовался? Во-первых, стало интересно - а как это, работать в большой компании разрабов? На последнем месте у меня было два разработчика, и я чуть-чуть попробовал себя в роли тимлида бэкендеров.
Во-вторых, как и у всех – деньги (двое детей, машина в кредит, вот это вот всё...).
В-третьих, понимание того, что я хорошо уже так стагнирую на своём прошлом месте, потому что всё, что нужно – уже написано, и требует только поддержки, а более-менее интересные идеи нельзя реализовать текущей маленькой командой.
В-четвёртых, на прошлом месте работы приходилось заниматься не только разработкой, но и настройкой деплоя, администрированием, ручным тестированием и прочей «обвязкой» программистской деятельности, это очень выматывает, если вы понимаете о чём я – хочешь развиваться как разработчик, но в итоге тратишь кучу времени на смежные области.
Скажу сразу, что во все компании, в которые я проходил собеседования и о которых далее пойдет речь, я шёл как middle или senior. На самом деле я опирался в основном на цифру в графе зарплаты. Из других вводных - ориентировался на хотя бы частичную удалёнку и зарплату в рынке, но в принципе если мне бы очень уж понравилось, готов был обсуждать на 10-20% меньше.
https://habr.com/ru/articles/683920/
👉 @golang_lib
Хабр
Мои собеседования (Golang developer)
Привет, меня зовут Олег, я разработчик со стажем почти 10 лет. Разработкой начал заниматься ещё со старшей школы, изучал C/C++ (очень пригодилось при написании скриптов в injection для ультимы...
👍8
Есть ли жизнь на Go после C#?
Всем привет! На связи Пётр, Go-разработчик в команде Ozon, которая занимается управлением товарами торговой площадки. Всё, что загружают продавцы, обрабатывается нашими сервисами. Девять месяцев назад я сменил основной язык программирования с C# на новый для меня Go. В статье будут впечатления от Go, расскажу о некоторых различиях между языками, а в конце поделюсь своим опытом поиска работы на новом языке. Ведь вопрос смены стека технологий рано или поздно встаёт перед каждым разработчиком.
https://habr.com/ru/companies/ozontech/articles/684422/
👉 @golang_lib
Всем привет! На связи Пётр, Go-разработчик в команде Ozon, которая занимается управлением товарами торговой площадки. Всё, что загружают продавцы, обрабатывается нашими сервисами. Девять месяцев назад я сменил основной язык программирования с C# на новый для меня Go. В статье будут впечатления от Go, расскажу о некоторых различиях между языками, а в конце поделюсь своим опытом поиска работы на новом языке. Ведь вопрос смены стека технологий рано или поздно встаёт перед каждым разработчиком.
https://habr.com/ru/companies/ozontech/articles/684422/
👉 @golang_lib
👍5
Media is too big
VIEW IN TELEGRAM
Как на самом деле устроены каналы в Golang?
Разбираемся со внутренним устройством каналов: как реализована потокобезопасноть, как в буферизированном канале хранятся данные, какие интересные оптимизации там есть, как работает оператор Select, как каналы закрываются и др.
00:00 Вступление
00:38 Какие свойства каналов интересно изучить?
01:22 Проектирование каналов
01:32 В какой области памяти хранятся каналы?
02:00 Структура канала
04:08 Реализация свойств: goroutine-safe и FIFO
05:04 Как работают буфер канала и mutex
07:18 Передача данных в канал
08:21 Получение данных из канала
08:38 Переполнение буфера
09:05 Как устроен планировщик (Scheduler)
10:14 Как поставить горутину на паузу
10:56 Как разбудить горутину: очередь спящих горутин - sendq
13:49 Чтение из переполненного канала
15:57 Пробуждение спящей горутины Sender
17:43 Чтение из пустого канала
18:44 Передача данных напрямую между стэками двух горутин
19:11 Небуферизированные каналы
19:37 Итоги по изучению интересных свойств каналов
20:35 Изучаем код реализации каналов
28:22 Изучаем поведение канала вживую с помощью дебагера
35:23 Как работает Select
37:14 Закрытие канала
38:13 Код закрытия канала
39:20 Итоги: почему каналы спроектированны именно так?
40:48 Заключение
источник
👉 @golang_lib
Разбираемся со внутренним устройством каналов: как реализована потокобезопасноть, как в буферизированном канале хранятся данные, какие интересные оптимизации там есть, как работает оператор Select, как каналы закрываются и др.
00:00 Вступление
00:38 Какие свойства каналов интересно изучить?
01:22 Проектирование каналов
01:32 В какой области памяти хранятся каналы?
02:00 Структура канала
04:08 Реализация свойств: goroutine-safe и FIFO
05:04 Как работают буфер канала и mutex
07:18 Передача данных в канал
08:21 Получение данных из канала
08:38 Переполнение буфера
09:05 Как устроен планировщик (Scheduler)
10:14 Как поставить горутину на паузу
10:56 Как разбудить горутину: очередь спящих горутин - sendq
13:49 Чтение из переполненного канала
15:57 Пробуждение спящей горутины Sender
17:43 Чтение из пустого канала
18:44 Передача данных напрямую между стэками двух горутин
19:11 Небуферизированные каналы
19:37 Итоги по изучению интересных свойств каналов
20:35 Изучаем код реализации каналов
28:22 Изучаем поведение канала вживую с помощью дебагера
35:23 Как работает Select
37:14 Закрытие канала
38:13 Код закрытия канала
39:20 Итоги: почему каналы спроектированны именно так?
40:48 Заключение
источник
👉 @golang_lib
👍7
Go functions: автоматическое масштабирование и метрики с Kubernetes + OpenFaaS
OpenFaaS - открытый фреймворк, опирающийся на свободные технологии с открытым исходным кодом, такие как Docker и формат OCI, - демократизирует то, что обычно связано с замкнутым кругом поставщиков: функции как сервис. Развернутая в Kubernetes, она предлагает автомасштабирование, метрики и встроенный пользовательский интерфейс из коробки.
https://dominikbraun.io/blog/go-functions-as-a-service-with-kubernetes-and-openfaas/
👉 @golang_lib
OpenFaaS - открытый фреймворк, опирающийся на свободные технологии с открытым исходным кодом, такие как Docker и формат OCI, - демократизирует то, что обычно связано с замкнутым кругом поставщиков: функции как сервис. Развернутая в Kubernetes, она предлагает автомасштабирование, метрики и встроенный пользовательский интерфейс из коробки.
https://dominikbraun.io/blog/go-functions-as-a-service-with-kubernetes-and-openfaas/
👉 @golang_lib
dominikbraun.io
Go Functions as a Service With Kubernetes and OpenFaaS – dominikbraun.io
OpenFaaS is an open source functions as a service framework for Kubernetes. This guide illustrates the deployment of a Go function with auto-scaling and metrics.
👍2
Применение чистой архитектуры в Go
Одна из проблем, с которыми мне часто доводится сталкиваться в различных софтверных проектов — это сильная связанность кода, при которой в него так сложно вносить даже простые изменения, не провоцируя нежелательных побочных эффектов. Дело в том, что программисты склонны сосредотачиваться на разработке конкретных фич, не задумываясь о том, как база кода станет развиваться в будущем. Также не все учитывают, что применяемые сегодня библиотеки и фреймворки могут постепенно сойти со сцены спустя несколько месяцев или лет.
На старте проекта приходится принимать множество решений. Большинство инженеров при этом рассматривают область применения проекта и решают, при помощи каких инструментов он будет реализовываться. Речь, в частности, о языках программирования, фреймворках, базах данных, внешних API, вариантах развёртывания. Принимая такие решения на самых ранних этапах, они замыкаются на этих инструментах, пронизывают ими всю базу кода, в результате чего её становится сложно менять и поддерживать.
https://habr.com/ru/companies/timeweb/articles/810857/
original https://blog.geisonbiazus.com/posts/applying-clean-architecture-in-go
👉 @golang_lib
Одна из проблем, с которыми мне часто доводится сталкиваться в различных софтверных проектов — это сильная связанность кода, при которой в него так сложно вносить даже простые изменения, не провоцируя нежелательных побочных эффектов. Дело в том, что программисты склонны сосредотачиваться на разработке конкретных фич, не задумываясь о том, как база кода станет развиваться в будущем. Также не все учитывают, что применяемые сегодня библиотеки и фреймворки могут постепенно сойти со сцены спустя несколько месяцев или лет.
На старте проекта приходится принимать множество решений. Большинство инженеров при этом рассматривают область применения проекта и решают, при помощи каких инструментов он будет реализовываться. Речь, в частности, о языках программирования, фреймворках, базах данных, внешних API, вариантах развёртывания. Принимая такие решения на самых ранних этапах, они замыкаются на этих инструментах, пронизывают ими всю базу кода, в результате чего её становится сложно менять и поддерживать.
https://habr.com/ru/companies/timeweb/articles/810857/
original https://blog.geisonbiazus.com/posts/applying-clean-architecture-in-go
👉 @golang_lib
👍4
Средние highload паттерны на Go
Меня зовут Агаджанян Давид и ранее я опубликовал статью «простые highload паттерны на Go», в которой были рассмотрены простые подходы увеличения пропускной способности отдельно взятого экземпляра приложения без хардкора. Мне импонируют простые подходы, так как over engineering подходы требуются в исключительных проектах, и то чаще всего только в отдельно взятых подсистемах, в остальном можно воспользоваться давно известными лучшими практиками. Статья ориентирована на начинающих разработчиков и может служить отправной точкой для дальнейшего изучения. В этой статье подходы ориентированы на масштабирование приложения при верхнеуровневом рассмотрении. Подходы универсальны, приписка языка Go только потому, что сама реализация приложения на нем. Для наглядности, примеры будут упрощены, а чтобы было интереснее наблюдать, проведем замеры производительности. Ну и конечно же делитесь своим опытом масштабирования, буду рад взять на заметку.
https://habr.com/ru/articles/684904/
👉 @golang_lib
Меня зовут Агаджанян Давид и ранее я опубликовал статью «простые highload паттерны на Go», в которой были рассмотрены простые подходы увеличения пропускной способности отдельно взятого экземпляра приложения без хардкора. Мне импонируют простые подходы, так как over engineering подходы требуются в исключительных проектах, и то чаще всего только в отдельно взятых подсистемах, в остальном можно воспользоваться давно известными лучшими практиками. Статья ориентирована на начинающих разработчиков и может служить отправной точкой для дальнейшего изучения. В этой статье подходы ориентированы на масштабирование приложения при верхнеуровневом рассмотрении. Подходы универсальны, приписка языка Go только потому, что сама реализация приложения на нем. Для наглядности, примеры будут упрощены, а чтобы было интереснее наблюдать, проведем замеры производительности. Ну и конечно же делитесь своим опытом масштабирования, буду рад взять на заметку.
https://habr.com/ru/articles/684904/
👉 @golang_lib
👍6
Пишем нативный потоковый пайплайна на Go
За последний год в Beam Go Sdk появилось несколько функций для поддержки нативных потоковых DoFns. В этом докладе Дэнни, инженер-программист Google, и Джек, инженер-программист Google, расскажут об этих функциях и обсудят, как их можно использовать для создания потоковых конвейеров, написанных полностью на Go.
Вы получите представление о некоторых проблемах, связанных с обработкой неограниченных наборов данных. Вы также узнаете, как можно построить собственные потоковые DoFns для решения этих проблем.
https://www.youtube.com/watch?v=PNDY2OYASrE
👉 @golang_lib
За последний год в Beam Go Sdk появилось несколько функций для поддержки нативных потоковых DoFns. В этом докладе Дэнни, инженер-программист Google, и Джек, инженер-программист Google, расскажут об этих функциях и обсудят, как их можно использовать для создания потоковых конвейеров, написанных полностью на Go.
Вы получите представление о некоторых проблемах, связанных с обработкой неограниченных наборов данных. Вы также узнаете, как можно построить собственные потоковые DoFns для решения этих проблем.
https://www.youtube.com/watch?v=PNDY2OYASrE
👉 @golang_lib
YouTube
Beam Summit 2022 - Writing a Native Go Streaming Pipeline
Session presented by Danny McCormick and Jack McCluskey, at Beam Summit 2022.
Over the past year, the Beam Go Sdk has rolled out several features to support native streaming DoFns. During this talk, Danny, Software Engineer at Google, and Jack, Software…
Over the past year, the Beam Go Sdk has rolled out several features to support native streaming DoFns. During this talk, Danny, Software Engineer at Google, and Jack, Software…
👍4
Паттерны гонки данных в Go
Uber использует язык Golang (сокращенно Go) в качестве основного языка программирования для разработки микросервисов. Наш монорежим Go состоит примерно из 50 миллионов строк кода (и продолжает расти) и содержит около 2 100 уникальных сервисов Go (и продолжает расти).
https://www.uber.com/blog/data-race-patterns-in-go/
👉 @golang_lib
Uber использует язык Golang (сокращенно Go) в качестве основного языка программирования для разработки микросервисов. Наш монорежим Go состоит примерно из 50 миллионов строк кода (и продолжает расти) и содержит около 2 100 уникальных сервисов Go (и продолжает расти).
https://www.uber.com/blog/data-race-patterns-in-go/
👉 @golang_lib
👍5🤣2
Media is too big
VIEW IN TELEGRAM
Код на Golang: форматирование и линтинг
00:00 | Вступление
00:08 | Зачем нужно форматирование кода на Go
00:45 | Форматер кода fmt
01:51 | Зачем нужен линтер кода на Go
02:08 | Линтер vet
03:52 | Линтер golangci-lint
06:40 | Линтер gofumpt
06:59 | Запускаем линтер gofumpt в режиме исправления ошибок
07:27 | Конфигурационный файл для golangci-lint
08:09 | Git Hooks
08:34 | Устанавливаем Left Hook
09:29 | Настраиваем запуск golangci-lint перед коммитом
09:37 | Коммитим изменения
09:54 | Заключение
источник
👉 @golang_lib
00:00 | Вступление
00:08 | Зачем нужно форматирование кода на Go
00:45 | Форматер кода fmt
01:51 | Зачем нужен линтер кода на Go
02:08 | Линтер vet
03:52 | Линтер golangci-lint
06:40 | Линтер gofumpt
06:59 | Запускаем линтер gofumpt в режиме исправления ошибок
07:27 | Конфигурационный файл для golangci-lint
08:09 | Git Hooks
08:34 | Устанавливаем Left Hook
09:29 | Настраиваем запуск golangci-lint перед коммитом
09:37 | Коммитим изменения
09:54 | Заключение
источник
👉 @golang_lib
👍5
Media is too big
VIEW IN TELEGRAM
Go and LLMs - GopherCon SG 2023
Чанг Сау Шонг
Использование возможностей больших языковых моделей с помощью Go.
источник
👉 @golang_lib
Чанг Сау Шонг
Использование возможностей больших языковых моделей с помощью Go.
источник
👉 @golang_lib
👍5
Пишем систему логической репликации Postgres на Golang
Мы создаем Dolt, первую в мире базу данных SQL с контролем версий. Dolt совместим с MySQL, но многие из наших потенциальных клиентов хотели бы иметь версию, совместимую с Postgres, поэтому мы усердно работаем над созданием DoltgreSQL.
https://www.dolthub.com/blog/2024-03-08-postgres-logical-replication/
👉 @golang_lib
Мы создаем Dolt, первую в мире базу данных SQL с контролем версий. Dolt совместим с MySQL, но многие из наших потенциальных клиентов хотели бы иметь версию, совместимую с Postgres, поэтому мы усердно работаем над созданием DoltgreSQL.
https://www.dolthub.com/blog/2024-03-08-postgres-logical-replication/
👉 @golang_lib
👍3🔥1
FormStream
FormStream - это потоковый парсер Golang для многокомпонентных данных, используемый в основном при отправке веб-форм и загрузке файлов.
Особенности
Обеспечивает потоковый парсер, избавляя от необходимости хранить целые файлы в памяти или на диске в большинстве случаев.
Отличается крайне низким потреблением памяти.
Обеспечивает высокую производительность, значительно превосходящую традиционные методы.
https://github.com/mazrean/formstream
👉 @golang_lib
FormStream - это потоковый парсер Golang для многокомпонентных данных, используемый в основном при отправке веб-форм и загрузке файлов.
Особенности
Обеспечивает потоковый парсер, избавляя от необходимости хранить целые файлы в памяти или на диске в большинстве случаев.
Отличается крайне низким потреблением памяти.
Обеспечивает высокую производительность, значительно превосходящую традиционные методы.
https://github.com/mazrean/formstream
👉 @golang_lib
👍5❤2
Когда Kubernetes и Go не очень хорошо работают вместе
Go не знает об ограничениях, установленных для его контейнера, что приводит к некоторым проблемам, которые нелегко отследить. Это история о том, как я наткнулся на одну из них.
https://lalatron.hashnode.dev/when-kubernetes-and-go-dont-work-well-together
👉 @golang_lib
Go не знает об ограничениях, установленных для его контейнера, что приводит к некоторым проблемам, которые нелегко отследить. Это история о том, как я наткнулся на одну из них.
https://lalatron.hashnode.dev/when-kubernetes-and-go-dont-work-well-together
👉 @golang_lib
👍5
Оптимизация Go: как повысить скорость и эффективность кода
Меня зовут Макс, я Go-разработчик в компании SimbirSoft. Язык Go (Golang) стремительно набирает популярность, он всё чаще внедряется в существующие программные решения, а также встречается в стеке новых проектов. Высокая производительность и скорость работы – его главные преимущества, поэтому для реализации бизнес-задач он подходит как нельзя кстати. Go легко поддерживается и отлично годится для создания MVP, из-за чего востребованность в нём растёт.
Но чтобы этот язык программирования был действительно производительным, разработчикам необходимо учитывать некоторые тонкости работы с ним. Иначе ваше приложение станет таким же медленным, как айтишник без чашки кофе :) В этой статье мы с вами на примерах разберём часто возникающие ситуации при работе с Go, а также рассмотрим приёмы, которые позволят повысить производительность кода. Надеюсь, разработчики уровня джуниор и мидл смогут почерпнуть для себя что-то полезное.
https://habr.com/ru/companies/simbirsoft/articles/819015/
👉 @golang_lib
Меня зовут Макс, я Go-разработчик в компании SimbirSoft. Язык Go (Golang) стремительно набирает популярность, он всё чаще внедряется в существующие программные решения, а также встречается в стеке новых проектов. Высокая производительность и скорость работы – его главные преимущества, поэтому для реализации бизнес-задач он подходит как нельзя кстати. Go легко поддерживается и отлично годится для создания MVP, из-за чего востребованность в нём растёт.
Но чтобы этот язык программирования был действительно производительным, разработчикам необходимо учитывать некоторые тонкости работы с ним. Иначе ваше приложение станет таким же медленным, как айтишник без чашки кофе :) В этой статье мы с вами на примерах разберём часто возникающие ситуации при работе с Go, а также рассмотрим приёмы, которые позволят повысить производительность кода. Надеюсь, разработчики уровня джуниор и мидл смогут почерпнуть для себя что-то полезное.
https://habr.com/ru/companies/simbirsoft/articles/819015/
👉 @golang_lib
👍6👎2
Высокоскоростная передача пакетов в Go: От net.Dial до AF_XDP
Недавно я разработал программу на Go, которая отправляет ICMP ping-сообщения на миллионы IP-адресов. Естественно, я хотел, чтобы это происходило как можно быстрее и эффективнее. Это побудило меня изучить различные методы взаимодействия с сетевым стеком и быстрой отправки пакетов! Это было увлекательное путешествие, поэтому в этой статье я поделюсь некоторыми своими наработками и задокументирую их для себя в будущем :) Вы увидите, как мы достигаем 18,8 Мбит/с, используя всего 8 ядер. На Github есть репозиторий с примерами кода, что облегчает процесс.
https://toonk.io/sending-network-packets-in-go/
👉 @golang_lib
Недавно я разработал программу на Go, которая отправляет ICMP ping-сообщения на миллионы IP-адресов. Естественно, я хотел, чтобы это происходило как можно быстрее и эффективнее. Это побудило меня изучить различные методы взаимодействия с сетевым стеком и быстрой отправки пакетов! Это было увлекательное путешествие, поэтому в этой статье я поделюсь некоторыми своими наработками и задокументирую их для себя в будущем :) Вы увидите, как мы достигаем 18,8 Мбит/с, используя всего 8 ядер. На Github есть репозиторий с примерами кода, что облегчает процесс.
https://toonk.io/sending-network-packets-in-go/
👉 @golang_lib
👍11
Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд
Пару недель назад я прочитал о запавшем мне в душу челлендже по обработке миллиарда строк, поэтому захотел решить его на Go.
Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.
Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.
https://habr.com/ru/articles/798215/
👉 @golang_lib
Пару недель назад я прочитал о запавшем мне в душу челлендже по обработке миллиарда строк, поэтому захотел решить его на Go.
Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.
Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.
https://habr.com/ru/articles/798215/
👉 @golang_lib
👍5
Изучение Go в 2024 году; от новичка до сеньора
Мы все учимся по-разному и в разном темпе. Найти контент, который подходит именно нам, очень сложно. Ниже я попытался собрать в одном месте все замечательные материалы, которые мне попадались на протяжении многих лет, чтобы, надеюсь, помочь людям продвинуться в изучении Golang на следующий шаг.
https://www.bytesizego.com/blog/learning-golang-2024
👉 @golang_lib
Мы все учимся по-разному и в разном темпе. Найти контент, который подходит именно нам, очень сложно. Ниже я попытался собрать в одном месте все замечательные материалы, которые мне попадались на протяжении многих лет, чтобы, надеюсь, помочь людям продвинуться в изучении Golang на следующий шаг.
https://www.bytesizego.com/blog/learning-golang-2024
👉 @golang_lib
👍9
Konf
Простейший загрузчик конфигураций для Go, который читает/смотрит из файла, env, флага и облаков (AWS, Azure, GCP).
📌 Основные возможности:
🔧 konf.Unmarshal для чтения конфигурации в любой тип объекта.
🔧 konf.OnChange для регистрации колбэков при изменении конфигурации.
🔧 konf.Explain для понимания, откуда загружается конфигурация.
🔧 Различные провайдеры для загрузки конфигурации из облаков (AWS, Azure и GCP).
🔧 Zero dependencies в core модуле, который поддерживает загрузку конфигурации из переменных окружения, флагов и встроенной файловой системы.
https://github.com/nil-go/konf
👉 @golang_lib
Простейший загрузчик конфигураций для Go, который читает/смотрит из файла, env, флага и облаков (AWS, Azure, GCP).
📌 Основные возможности:
🔧 konf.Unmarshal для чтения конфигурации в любой тип объекта.
🔧 konf.OnChange для регистрации колбэков при изменении конфигурации.
🔧 konf.Explain для понимания, откуда загружается конфигурация.
🔧 Различные провайдеры для загрузки конфигурации из облаков (AWS, Azure и GCP).
🔧 Zero dependencies в core модуле, который поддерживает загрузку конфигурации из переменных окружения, флагов и встроенной файловой системы.
https://github.com/nil-go/konf
👉 @golang_lib
👍4
Освоение регулярных выражений в Go
От базовых паттернов до продвинутых техник - эта статья вооружит вас знаниями об эффективном использовании regex в ваших Go-приложениях.
https://www.honeybadger.io/blog/a-definitive-guide-to-regular-expressions-in-go/
👉 @golang_lib
От базовых паттернов до продвинутых техник - эта статья вооружит вас знаниями об эффективном использовании regex в ваших Go-приложениях.
package main
import "strings"
func extractURLs(input string) []string {
var urls []string
words := strings.Fields(input)
for _, word := range words {
if strings.HasPrefix(word, "http://") || strings.HasPrefix(word, "https://") || strings.HasPrefix(word, "www.") {
urls = append(urls, word)
}
}
return urls
}
https://www.honeybadger.io/blog/a-definitive-guide-to-regular-expressions-in-go/
👉 @golang_lib
Honeybadger Developer Blog
Mastering regular expressions in Go
From basic patterns to advanced techniques, this article will equip you with the knowledge to use regex effectively and efficiently in your Go applications.
👍2