TGViewer
Channel Public Channel
Go in Action

Go in Action

@go_in_action

Всё про язык программирования Go на русском и английском языке

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels
Subscribers
4.11K
Photos
2.4K
Videos
3
Links
4K

Showing posts older than #4667 · Back to latest

Older Posts 20 shown
Post #4666 772
Как писать резюме в IT-сфере? Как даже хорошее резюме может терять отклики и что с этим делать?

Меня зовут Екатерина Рычкова, я CEO HR-агентства и рекрутёр с 15-летним опытом.

Сегодня разбираю резюме кандидата из IT-индустрии с хорошим опытом, сильной технической базой и понятной целью: переход в Go-разработку.

Самое приятное, что в IT-сфере оформление резюме — не самое ключевое. Главное, на что смотрит рекрутер:


Читать: https://habr.com/ru/articles/979306/

#ru

@go_in_action | Другие наши каналы
  • ⚡ 1
Post #4665 697
Больше 1 млн запросов в секунду на Go: уроки продакшена

Команда Go for Devs подготовила перевод статьи о том, как построить Heavy-Read API на Go, способный обрабатывать более 1 млн запросов в секунду. Автор делится продакшен-архитектурой распределённого In-Memory Cache, показывает, как убрать БД и Redis из критического пути чтения, и объясняет, за счёт каких оптимизаций удаётся добиться субмиллисекундных задержек. Практика, цифры и реальные уроки из продакшена.


Читать: https://habr.com/ru/articles/978766/

#ru

@go_in_action | Другие наши каналы
Post #4664 689
Как я ускорил установку PHP-зависимостей в 5 раз с помощью Go

TL;DR

Переписал Composer на Go, получил 3-5x ускорение благодаря параллельной загрузке пакетов и отсутствию PHP runtime overhead. Проект полностью совместим с экосистемой Composer/Packagist (почти, об этом будет подробнее внизу).


Читать: https://habr.com/ru/articles/979168/

#ru

@go_in_action | Другие наши каналы
  • 🌚 1
Post #4663 637
Проблемы с которыми я столкнулся при написании рекурсивного парсера journal в Linux

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


Читать: https://habr.com/ru/articles/979144/

#ru

@go_in_action | Другие наши каналы
Post #4662 642
Embedded SQL с группировкой запросов: элегантный подход к управлению SQL в Go

Хотелось бы сразу сделать небольшой дисклеймер. Это не супер-экспертная статья. Скажем так - это мой инсайд о том, как еще можно работать с SQL запросами в Go проекте. В этой статье я расскажу о том как удобно хранить запросы в embeded sql файлах. Решение о котором я буду писать - лишь один из инструментов в арсенале разработчика, а не универсальное решение призванное вылечить все болезни. Надеюсь тебе это будет полезно.


Читать: https://habr.com/ru/articles/978974/

#ru

@go_in_action | Другие наши каналы
  • ✍ 1
Post #4661 677
Sing-Box Launcher теперь на macOS

Месяц назад я описывал wizard-подход к настройке sing-box без ручного JSON. Теперь это полноценный нативный macOS-клиент и Windows-клиент с TUN, системным прокси, menu bar, быстрым переключением узлов и решением бага Fyne через Objective-C.



Читать: https://habr.com/ru/articles/978634/

#ru

@go_in_action | Другие наши каналы
Post #4660 771
Разбираем подводные камни, ошибки и лучшие практики при разработке Kubernetes-операторов

Kubernetes-операторы давно стали привычным инструментом автоматизации и управления сложными системами. Однако на практике их поведение далеко не такое предсказуемое, как в примерах из документации. Небольшие отклонения в логике цикла согласования, обработке ошибок или обновлении статуса быстро превращаются в зацикливание, дублирование ресурсов и прочие сюрпризы, которые трудно отладить. Новичкам полезно понимать, почему так происходит, а опытным разработчикам — помнить, какие принципы стоит держать в голове при проектировании оператора.

Меня зовут Стас Иванкевич, я техлид в команде разработки управляющего слоя Platform V DropApp в СберТехе. В управляющий слой входят установщик кластера, консоль, API, другие компоненты и самое релевантное для этой статьи — наши многообразные операторы.

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


Читать: https://habr.com/ru/companies/sberbank/articles/976764/

#ru

@go_in_action | Другие наши каналы
  • 🔥 1
Post #4659 709
Пишем свою in-memory базу на Go, ускоряем поиск отелей в десятки раз

Если вы когда-либо строили высоконагруженные системы поиска, то знаете, что в какой-то момент узким местом становится не код, а сама архитектура. Поиск доступных отелей — как раз тот случай: миллиарды «ночей», десятки тысяч RPS, постоянные обновления календарей, строгая консистентность и высокая цена любой ошибки. Старый стек на Python + Postgres + Redis долго тянул, но однажды стал «тормозить» настолько, что оптимизировать дальше было невозможно — SQL-запросы разрастались, реплики множились, latency прыгала до 60 секунд, а кэширование превращалось в источник инцидентов.

Так мы пришли к идее построить собственную in-memory базу данных на Go — заточенную под наш домен. Быструю, безопасную и синхронизированную с Postgres.

Под катом — история того, как мы её спроектировали, какие архитектурные решения приняли, как победили холодный старт, справились с миллиардами значений. И почему в итоге смогли полностью отказаться от кэша доступности, переведя поиск в real‑time.


Читать: https://habr.com/ru/companies/ostrovok/articles/972084/

#ru

@go_in_action | Другие наши каналы
Post #4658 691
Один сервис — четыре стека: практический бенчмарк с SLO по p99 и Docker/JMeter

В статье я сравниваю четыре реализации одного и того же сервиса поверх PostgreSQL:

1. Spring MVC + JDBC

2. Spring WebFlux + R2DBC

3. Ktor + JDBC

4. Go + pgx

Все сервисы крутятся в Docker с одинаковыми ресурсными лимитами и прогоняются через один и тот же JMeter-план. Для каждого стека я ищу максимальный RPS при соблюдении SLO по p99-латентности.

Я подробно разбираю:

- как устроен стенд (Docker-compose, Postgres, Prometheus, Grafana, JMeter);

- как реализованы сервисы и чем различаются модели конкурентности;

- методологию нагрузочного тестирования и расчёта RPS@p99≤SLA;

- как реально ведут себя блокирующий стек, реактивный стек и Go под честной нагрузкой.


Читать: https://habr.com/ru/companies/domclick/articles/970104/

#ru

@go_in_action | Другие наши каналы
Post #4657 651
Как мы в Авито нашли баланс между качеством и скоростью разработки на примере фичи рекомендаций Автотеки

Всем привет! Меня зовут Михаил Пашедко, я backend-разработчик в Авито в команде Автотека. В статье расскажу, как небольшой эксперимент на пару спринтов стал полноценным направлением разработки — и показал, как в зрелой компании можно запускать живые, «стартаперские» инициативы, не теряя при этом контроль над качеством.


Читать: https://habr.com/ru/companies/avito/articles/975146/

#ru

@go_in_action | Другие наши каналы
  • ❤ 1
Post #4655 638
1000 и один способ угробить программу из-за гонки данных в Go

Команда Go for Devs подготовила перевод статьи о самых коварных и трудноуловимых гонках данных в Go. Автор показывает на реальных примерах, как даже опытные разработчики легко попадают в ловушки конкурентности: от случайных захватов переменных в замыканиях до неправильного срока жизни мьютексов и скрытых гонок в стандартной библиотеке.


Читать: https://habr.com/ru/articles/975844/

#ru

@go_in_action | Другие наши каналы
Post #4654 541
Визуальный язык программирования в NebuLeet: эволюция и дизайн

Пару лет я в соло разрабатывал максимально нишевую игру "для программистов" (NebuLeet) на довольно нишевых технологиях (Go + ebitengine), и вот теперь, после релиза, я хочу рассказать про одну из интересных особенностей этой игры - визуальном программировании логики игровых юнитов.

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

Вас ждёт увлекательная околокомпиляторная/языковая статья с игровым применением. Всё-таки, языки программирования для игр - это ведь отдельный жанр.


Читать: https://habr.com/ru/articles/977380/

#ru

@go_in_action | Другие наши каналы
  • ❤ 1
Post #4653 526
go get в Go — как добавлять и обновлять зависимости

Материал объясняет синтаксис go get, получение пакетов, указание версий и ревизий, обновление патчей, удаление зависимостей, работу GOPROXY и кэша модулей, а также отличие от go install и роль команды go mod tidy.

Подробнее: https://gosamples.dev/️-what-is-go-get-command-in-go/

#en

@go_in_action | Другие наши каналы
GOSAMPLES 🏃‍♂️ What is 'go get' command in Go Learn how to use and understand what the `go get` command does
Post #4652 419
Обновите все Go-пакеты за пару команд: краткое руководство
В статье объясняется, как массово обновлять зависимости Go (go get -u ./..., go get -t -u ./..., go get -u all), обновлять только патчи (-u=patch), и зачем после этого запускать go mod tidy и go list для проверки версий.

Подробнее: https://gosamples.dev/how-to-update-all-go-packages-to-the-latest-version/

#en

@go_in_action | Другие наши каналы
GOSAMPLES 🆕 How to update all Go packages to the latest version Upgrade all your project's dependencies using the `go get` command
  • ❤ 1
Post #4651 413
Как правильно объединять элементы URL в Go
В статье показано, как в Go 1.19 пользоваться url.JoinPath() и методом URL.JoinPath() из пакета net/url для корректной сборки URL из хоста и относительных путей. Примеры помогают избежать двойных или пропущенных слэшей.

Подробнее: https://gosamples.dev/join-url-path-elements-in-go/

#en

@go_in_action | Другие наши каналы
GOSAMPLES 🔗 Join URL path elements in Go Learn Golang programming by example. GOSAMPLES is a library of Golang code snippets that let you solve everyday code problems.
Post #4649 362
Как получить локальный IP в Go — 2 способа

В статье показаны два метода получения локального исходящего IP в Go: подготовка UDP-соединения к внешнему адресу и перебор адресов сетевых интерфейсов. Приведены примеры кода и пояснения отличий локального и публичного IP.

Подробнее: https://gosamples.dev/get-local-ip-address-in-go/

#en

@go_in_action | Другие наши каналы
GOSAMPLES 🏠 Get local IP address in Go Learn how to print the local outbound IP address of your machine
Post #4648 242
Как запускается программа в Go: main(), пакет main и main.go
В статье объясняют, что функция main() в пакете main — точка входа исполняемых программ Go, зачем файл main.go, где его хранить (корень или cmd/), отличие от init() и как запускать и собирать приложение. Источник: статья.

Подробнее: https://gosamples.dev/the-main-function-main-package-and-main.go-file-in-go/

#en

@go_in_action | Другие наши каналы
GOSAMPLES 🫶 The 'main()' function, 'main' package and 'main.go' file in Go Learn how to create an executable Go program
Post #4647 207
Генерация UUID в Go: краткое руководство

В статье показано, как генерировать UUID в Go с пакетами github.com/google/uuid и github.com/gofrs/uuid: простые вызовы NewString()/NewV4(), примеры для версий 1,3,4,5 и советы, когда использовать V1, V3/V5 или V4.

Подробнее: https://gosamples.dev/generate-uuid-in-go/

#en

@go_in_action | Другие наши каналы
GitHub GitHub - google/uuid: Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services. Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services. - google/uuid
Post #4646 194
Как преобразовать time.Time в строку в Go
В статье показано использование Time.String() для стандартного формата и Time.Format() для кастомных форматов (например «2006-01-02»). Приведен пример кода с выводом и указано о reference time для формирования шаблонов.

Подробнее: https://gosamples.dev/convert-date-or-time-to-string-in-go/

#en

@go_in_action | Другие наши каналы
GOSAMPLES 📝 Convert date or time to string in Go Learn Golang programming by example. GOSAMPLES is a library of Golang code snippets that let you solve everyday code problems.
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →