Category : golang

golang
Пишем медленный код на Go

Почему Вы должны оптимизировать читаемость, а не производительностьПодождите, что? Медленный код? Разве мы не должны беспокоиться об ускорении наших Go‑программ?На самом деле, нет. Оптимизация кода на Golang ради производительности — это попросту трата времени, и вот почему:Производительность в большинстве случаев не имеет значенияGo и так быстрыйЧитаемость важнее скоростиЭти аргументы нуждаются в объяснении, и я его дам. Для них есть исключения, как, собственно говоря, для всех нетривиальных у…

  • понедельник, 6 января 2025 г. в 00:00:08
golang
Генерация PDF-файлов на Go

Генерация PDF-документов это практически неотъемлемая часть при создании отчетов. Ведь гораздо проще иметь один HTML-шаблон который просто редактируется, и в нужные места подставить необходимые данные.В статье отобрал самые популярные (по звездам на GitHub на момент написания статьи) инструменты для генерирования PDF из HTML, DOCX и некоторых других форматов. Рассмотрим только те, которые реализованы непосредственно на Go ИЛИ имеют обертки над API на Go.Список следующий: https://github.com/go-…

  • суббота, 4 января 2025 г. в 00:00:03
golang
ErrorHandling-патерн в golang

Обработка и передача ошибок в конкурентном коде имеет некоторые особенности. Поскольку решении о запуске подзадачи(или подзадач) принимается вне запущенной горутины, центр обработки информации(в данном случае ошибки) должен находится в другом месте. Это может быть часть кода инициирующая запуск горутин(родительская горутина) и ожидающая результатов ее выполнения или отдельная горутина, запущенная для этих целей.Будем отталкиваться от примера, где мы ожидаем результатов выполнения n-горутин. Рез…

  • суббота, 4 января 2025 г. в 00:00:02
golang
Ory Kratos — конструктор для сборки цифрового продукта любой сложности

Привет! Я Андрей Баронский, бэкенд-тимлид в KTS.Одно из ключевых направлений деятельности нашей компании — это аутсорс-разработка цифровых продуктов. При создании очередной системы мы хотим уделять больше времени и сил необходимым фичам для клиентов, а не настройке рутинного взаимодействия с юзерами, и для ускорения проработки основных пользовательских сценариев мы используем технологию Ory Kratos. В статье я расскажу, почему я рекомендую обратить на нее внимание и как с ней работать.Для тех, к…

  • вторник, 31 декабря 2024 г. в 00:00:07
golang
Отмена defer вызова функции в Golang

Недавно столкнулся с такой проблемой, что не всегда приходиться выполнять defer вызов функции. Те кто знают, как работает defer можете листать вниз до реализации моего паттерна.Представьте, что у вас есть 10 кейсов, в одном из которых не вам не нужен вызов defer func. Что же тогда делать...... Оператор defer помещает вызов функции в список. Список сохраненных вызовов выполняется после того, как возвращается функция. Defer обычно используется для упрощения функций, выполняющих различные действия…

  • суббота, 28 декабря 2024 г. в 00:00:16
golang
Антипаттерны Go: чего нельзя делать и почему

Привет, Хабр! Go часто называют «языком простоты»: мол, нет лишних фич, легко стартовать, запустил горутину — и вперед! Но в реальности эта «простота» — палка о двух концах. Я собрал самые распространенные (на мой взгляд) антипаттерны в Go, которые приводят к дедлокам, паникам и километрам непонятного кода.Злоупотребление горутинами«Запустим горутину, а там посмотрим…»В Go очень легко распараллелить задачу: пишешь go func() { ... }() — и вуаля, новая горутина. Однако за видимой простотой скрыва…

  • суббота, 28 декабря 2024 г. в 00:00:15
golang
Как я узнал данные 70 тысяч игроков MMORPG

Мне нравится рубить дерево в Minecraft'е. Я рубил дерево целый год и мне стало интересно сколько дерева срубаю каждый день. Так получилось сделать сервис по сбору статистики https://foragingupdate.com.страница статистики срубленного дереваУже более года я играю на сервере Hypixel в MMORPG режим Skyblock. Любопытно, что там есть таблица лидеров для самых разных абсурдных действий. Так сформировалось сообщество "элитных фермеров", где игроки каждый час соревнуются в скорости сбора раз…

  • суббота, 28 декабря 2024 г. в 00:00:14
golang
Создаем систему напоминаний о приёме лекарств

Утро, аромат свежесваренного кофе, и телефон тихонько напоминает вам о приеме важного лекарства. «Привет! Не забудь принять лекарство!» Такую систему можно реализовать самостоятельно с помощью Golang и Exolve API.SMS остается простым, универсальным и проверенным временем методом коммуникации, работающим на любом телефоне. В этой статье я покажу, как клиники и медцентры могут построить надежную систему SMS-напоминаний.Что понадобится:Golang: язык программирования, идеально подходящий для создани…

  • пятница, 27 декабря 2024 г. в 00:00:21
golang
bufio в Go

Привет, Хабр! Сегодня мы рассмотрим замечательный пакет в Golang bufio. Пакет bufio — это стандартная библиотека Go, предназначенная для буферизации ввода-вывода. Почему буферизация важна? Представьте, что вы пытаетесь читать или записывать данные по одному байту за раз. Это утомительно и неэффективно. bufio помогает объединить множество мелких операций в более крупные блоки.Пакет bufio имеет несколько основных структур и методов:bufio.Reader — буферизованный ридер для чтения данных из io.Reade…

  • пятница, 27 декабря 2024 г. в 00:00:19