Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
319 - Telegram Web
Telegram Web
🍐 Элегантный Golang REST API Framework

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

Чистый код: Goyave имеет выразительный, элегантный синтаксис, надежную структуру и соглашения. Минимализм вызовов и сокращение избыточности - основные принципы Goyave.
Быстрая разработка: Разрабатывайте быстрее и сосредоточьтесь на бизнес-логике вашего приложения благодаря многочисленным помощникам и встроенным функциям.

Мощные функциональные возможности: Goyave - это доступный, но мощный фреймворк. Фреймворк включает маршрутизацию, разбор запросов, валидацию, локализацию, тестирование, аутентификацию и многое другое!

Надежность: Благодаря продвинутой обработке ошибок и восстановлению после падения, вы можете легко найти ошибки. Фреймворк глубоко протестирован.

https://github.com/go-goyave/goyave

👉 @golang_lib
👍5💩3
Media is too big
VIEW IN TELEGRAM
SQLite в Golang - как использовать, на примере Telegram-бота

00:00 Вступление
00:16 Для кого этот ролик?
00:26 Почему именно SQLite?
01:10 Конкурс - 2000 подписчиков
01:30 Интерфейс Storage
01:58 SQLite-реализация Storage
02:37 Установка соединения с БД
03:36 Какием методы будем реализовывать
03:56 Метод Save()
07:36 Метод PickRandom()
10:18 Метод Remove()
10:47 Экранирование данных в SQL-запросах
13:31 Метод IsExists()
14:37 godoc-комментарии
15:40 Функция Init() - инициализация хранилища
17:04 Используем новый SQLite-Storage
20:36 Фиксим мелкие баги
23:10 Дебажим упавшего бота, stack trace
24:17 Тестируем бота с новым хранилищем
25:31 Конкурс - условия
26:38 Заключение

источник

👉 @golang_lib
👍11
Создаем базовое приложение для соревнований в реальном времени с помощью Go

Большинство из нас любят конкурсы на знание, верно? Существует множество приложений, которые утоляют нашу жажду, заставляя нас отвечать на вопросы, касающиеся различных профессий.

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

https://betterprogramming.pub/build-basic-real-time-competition-app-with-go-96c2ca0d35bf

👉 @golang_lib
👍2
Использование graphQL+gRPC+Golang для создания микросервиса аренды велосипедов, с персистенцией на ArangoDB

https://dev.to/myk_okoth_ogodo/using-graphqlgrpcgolang-to-create-a-bike-rental-microservices-with-persistence-on-arangodb-2a6h

👉 @golang_lib
👍5
Миграции баз данных с Golang

Недавно я присоединился к новой команде и был поражен созданной у них инфраструктурой тестирования для успешной работы приложений. Для меня это было большой переменой: я не привык к такой манере «тестирования».

С тестированием уровня данных связаны миграции БД. С базами данных я работаю на протяжении всей своей карьеры инженера-разработчика и все же задался вопросом: «Что это за миграции БД?»

Рассмотрим применение миграций БД в службах, написанных на Golang.

https://blog.stackademic.com/using-database-migrations-with-golang-7f6736f580c8

👉 @golang_lib
Перед вами — книга-метод, книга-наставник, способная перевернуть мышление и помочь выработать осознанный подход к работе и жизни в целом путём высокоуровневого планирования.

В своей второй книге IT-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.

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

Ознакомиться с книгой
👍7
Обзор итераторов в Go

В Go 1.22 ожидается появление расширений оператора for-range как для функций типа int (range-over-int), так и для функций-итераторов (range-over-func). Кроме того, продолжается работа по достижению консенсуса насчет библиотеки итераторов и корутин.

Рассмотрим причины использования итераторов в Go, а также текущее состояние соответствующих предложений и реализаций.

https://medium.com/eureka-engineering/a-look-at-iterators-in-go-f8e86062937c

👉 @golang_lib
👍3
Простые highload паттерны на Go

Хочу поделиться некоторыми рекомендациями, которые часто на моем опыте помогали держать highload нагрузку не прибегая к хардкору. Примеры будут на Go. Эти подходы довольно хорошо известны, но как мне кажется они недооценены и многие этими подходами пренебрегают. Если вы впервые видите их, то рекомендую хотя бы попробовать реализовать в своих проектах и провести бенчмарки, возможно вы будете приятно удивлены. Этих подходов в 90% случаях мне хватало за глаза, когда требовалось быстро и кратно увеличить перфоманс приложения в короткие сроки. Ну и конечно же делитесь своим опытом к каким подходам для оптимизаций вы прибегаете в первую очередь, буду рад взять себе интересное на заметку

https://habr.com/ru/articles/682618/

👉 @golang_lib
👍7
Идеальное начало для вашего нового проекта Go

Легко создайте идеальный каркас приложения для вашего веб-приложения или API на Go, адаптированный к вашим потребностям и экономящий время.

https://autostrada.dev/

👉 @golang_lib
👍5
Building Go Executables: Build Tags

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

https://www.youtube.com/watch?v=vQ8GJDwBdos

👉 @golang_lib
👍4
Подборка web-фреймворков для Golang

Beego
Если нужен быстрый запуск API-интерфейсов REST, веб- и серверных приложений в Go, то лучшего варианта не найти. Golang-разработчики зачастую сравнивают Beego с Django в Python. Достоинство Beego — отсутствие необходимости установки сторонних производителей. Это, фактически, полноценный фреймворк Model-View-Controller, причём у него есть собственные библиотеки и встроенный инструмент Bee, который даёт возможность находить изменения кода.

https://github.com/beego/beego


Kit
Инструмент для работы с микросервисами в любом масштабе. Микросервисы часто требуют специализированной поддержки, которую Kit без проблем предоставляет.

https://github.com/go-kit/kit


Echo
Облегчённый, гибкий и расширяемый веб-фреймворк. Позволяет создавать надёжные и масштабируемые RESTful API, имеет встроенное промежуточное ПО и даёт возможность определять своё собственное.

https://github.com/labstack/echo


Fiber
Простой но мощный фреймворк, который был создан на базе Fasthttp — самого быстрого HTTP-движка для Go. Fiber разработали для ускорения работы с нулевым распределением памяти и возможностями производительности. Плюс ко всему, этот фреймворк ещё и компактен, он без проблем позволяет интегрировать сторонние библиотеки с Martini. Fiber обеспечивает необходимую масштабируемость при сокращении накладных расходов.

https://github.com/gofiber/fiber


Fasthttp
Fasthttp обеспечивает быстрый HTTP-сервер и клиент API. Он может обрабатывать более 100 000 запросов в секунду и свыше 1 млн одновременно открытых соединений. Фреймворк рассчитан на относительно низкое потребление памяти и обеспечивает простую поддержку обновления соединения через RequestCtx.Hijack.

https://github.com/valyala/fasthttp


Gorilla
Gorilla практически безупречно работает со всеми повторно используемыми элементами и компонентами HTTP-библиотеки. Её главные достоинства в том, что она предлагает модульность и масштабируемость в качестве основных функций. И проблемы «засорения» устаревшим функционалом в случае Gorilla нет — всё отлично спроектировано.

https://github.com/gorilla/


👉 @golang_lib
👍6👎1
Подробно рассмотрим принцип работы и реализацию фильтра Блума

https://programmer.group/explain-the-principle-and-implementation-of-bloom-filter-in-detail.html

👉 @golang_lib
👍2
Мои собеседования (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
👍8
Есть ли жизнь на Go после C#?

Всем привет! На связи Пётр, 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
👍7
Go functions: автоматическое масштабирование и метрики с Kubernetes + OpenFaaS

OpenFaaS - открытый фреймворк, опирающийся на свободные технологии с открытым исходным кодом, такие как Docker и формат OCI, - демократизирует то, что обычно связано с замкнутым кругом поставщиков: функции как сервис. Развернутая в Kubernetes, она предлагает автомасштабирование, метрики и встроенный пользовательский интерфейс из коробки.

https://dominikbraun.io/blog/go-functions-as-a-service-with-kubernetes-and-openfaas/

👉 @golang_lib
👍2
Применение чистой архитектуры в Go

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

На старте проекта приходится принимать множество решений. Большинство инженеров при этом рассматривают область применения проекта и решают, при помощи каких инструментов он будет реализовываться. Речь, в частности, о языках программирования, фреймворках, базах данных, внешних API, вариантах развёртывания. Принимая такие решения на самых ранних этапах, они замыкаются на этих инструментах, пронизывают ими всю базу кода, в результате чего её становится сложно менять и поддерживать.

https://habr.com/ru/companies/timeweb/articles/810857/

original https://blog.geisonbiazus.com/posts/applying-clean-architecture-in-go

👉 @golang_lib
👍4
2025/07/14 02:55:15
Back to Top
HTML Embed Code: