Простой Regex Matcher Роба Пайка на языке C в Go
В 1998 году Роб Пайк, известный по Go и Plan 9, написал простую программу сопоставления регулярных выражений на языке C для книги "Практика программирования", которую он написал вместе с коллегой, Unix-хакером Брайаном Керниганом. Если вы еще не читали "экзегезу" этого кода, написанную Керниганом, то это определенно стоит того, чтобы потратить 30 минут времени на неспешное изучение этого кода.
Учитывая наследие Go в языке C (и влияние Пайка на язык Go), я решил посмотреть, насколько хорошо код на C будет переведен на Go и будет ли он по-прежнему элегантным.
https://benhoyt.com/writings/rob-pike-regex/
👉 @golang_lib
В 1998 году Роб Пайк, известный по Go и Plan 9, написал простую программу сопоставления регулярных выражений на языке C для книги "Практика программирования", которую он написал вместе с коллегой, Unix-хакером Брайаном Керниганом. Если вы еще не читали "экзегезу" этого кода, написанную Керниганом, то это определенно стоит того, чтобы потратить 30 минут времени на неспешное изучение этого кода.
Учитывая наследие Go в языке C (и влияние Пайка на язык Go), я решил посмотреть, насколько хорошо код на C будет переведен на Go и будет ли он по-прежнему элегантным.
https://benhoyt.com/writings/rob-pike-regex/
👉 @golang_lib
Benhoyt
Rob Pike's simple C regex matcher in Go
Translating Rob Pike's simple and elegant C regex matcher to Go.
👍4
The Algorithms - Go — Алгоритмы, реализованные на GoLang
Репозиторий представляет собой коллекцию имплементаций и демонстраций наиболее популярных алгоритмов, реализованных в Go.
https://github.com/TheAlgorithms/Go
👉 @golang_lib
Репозиторий представляет собой коллекцию имплементаций и демонстраций наиболее популярных алгоритмов, реализованных в Go.
https://github.com/TheAlgorithms/Go
👉 @golang_lib
GitHub
GitHub - TheAlgorithms/Go: Algorithms and Data Structures implemented in Go for beginners, following best practices.
Algorithms and Data Structures implemented in Go for beginners, following best practices. - TheAlgorithms/Go
👍7
🍐 Элегантный Golang REST API Framework
Goyave - это прогрессивный и доступный фреймворк для веб-приложений, ориентированный на REST API и призванный сделать разработку бэкенда легкой и приятной. В нем заложена философия чистоты и лаконичности, чтобы сделать программы более элегантными, простыми в обслуживании и более целенаправленными. Goyave - это фреймворк, который помогает вашим приложениям сохранять единую архитектуру и ограничивать избыточность. С Goyave вы получите полный пакет услуг с минимальными настройками.
Чистый код: Goyave имеет выразительный, элегантный синтаксис, надежную структуру и соглашения. Минимализм вызовов и сокращение избыточности - основные принципы Goyave.
Быстрая разработка: Разрабатывайте быстрее и сосредоточьтесь на бизнес-логике вашего приложения благодаря многочисленным помощникам и встроенным функциям.
Мощные функциональные возможности: Goyave - это доступный, но мощный фреймворк. Фреймворк включает маршрутизацию, разбор запросов, валидацию, локализацию, тестирование, аутентификацию и многое другое!
Надежность: Благодаря продвинутой обработке ошибок и восстановлению после падения, вы можете легко найти ошибки. Фреймворк глубоко протестирован.
https://github.com/go-goyave/goyave
👉 @golang_lib
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
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
Большинство из нас любят конкурсы на знание, верно? Существует множество приложений, которые утоляют нашу жажду, заставляя нас отвечать на вопросы, касающиеся различных профессий.
В этой статье я расскажу, как я реализовал приложение для проведения соревнований в реальном времени на 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
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
Недавно я присоединился к новой команде и был поражен созданной у них инфраструктурой тестирования для успешной работы приложений. Для меня это было большой переменой: я не привык к такой манере «тестирования».
С тестированием уровня данных связаны миграции БД. С базами данных я работаю на протяжении всей своей карьеры инженера-разработчика и все же задался вопросом: «Что это за миграции БД?»
Рассмотрим применение миграций БД в службах, написанных на Golang.
https://blog.stackademic.com/using-database-migrations-with-golang-7f6736f580c8
👉 @golang_lib
Перед вами — книга-метод, книга-наставник, способная перевернуть мышление и помочь выработать осознанный подход к работе и жизни в целом путём высокоуровневого планирования.
В своей второй книге IT-архитектор, методолог, педагог Александр Бындю раскрывает наиболее эффективный на сегодняшний день метод стратегического планирования, получивший название «Карта гипотез». Карта учит, как достигать намеченной цели через гипотезы, и служит навигатором на этом пути. В основу книги легли годы практики, и с уверенностью можно сказать, что Карта гипотез позволяет создать стратегию достижения для самых амбициозных целей.
У Карты гипотез нет ограничений по области применения или роли пользователя — она будет полезна в самых разных ситуациях, от личного планирования до планирования работы огромной компании. Автор надеется, что его метод, которому посвящена эта книга, послужит вашему благополучию во всех сферах жизни.
Ознакомиться с книгой
В своей второй книге 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
В 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
Хочу поделиться некоторыми рекомендациями, которые часто на моем опыте помогали держать highload нагрузку не прибегая к хардкору. Примеры будут на Go. Эти подходы довольно хорошо известны, но как мне кажется они недооценены и многие этими подходами пренебрегают. Если вы впервые видите их, то рекомендую хотя бы попробовать реализовать в своих проектах и провести бенчмарки, возможно вы будете приятно удивлены. Этих подходов в 90% случаях мне хватало за глаза, когда требовалось быстро и кратно увеличить перфоманс приложения в короткие сроки. Ну и конечно же делитесь своим опытом к каким подходам для оптимизаций вы прибегаете в первую очередь, буду рад взять себе интересное на заметку
https://habr.com/ru/articles/682618/
👉 @golang_lib
👍7
Идеальное начало для вашего нового проекта Go
Легко создайте идеальный каркас приложения для вашего веб-приложения или API на Go, адаптированный к вашим потребностям и экономящий время.
https://autostrada.dev/
👉 @golang_lib
Легко создайте идеальный каркас приложения для вашего веб-приложения или API на Go, адаптированный к вашим потребностям и экономящий время.
https://autostrada.dev/
👉 @golang_lib
👍5
Building Go Executables: Build Tags
Используя теги сборки, вы можете создавать различные версии вашего Go-приложения из одного и того же исходного кода и легко переключаться между ними.
https://www.youtube.com/watch?v=vQ8GJDwBdos
👉 @golang_lib
Используя теги сборки, вы можете создавать различные версии вашего Go-приложения из одного и того же исходного кода и легко переключаться между ними.
https://www.youtube.com/watch?v=vQ8GJDwBdos
👉 @golang_lib
YouTube
Building Go Executables: Build Tags
By using build tags, you can create different versions of your Go application from the same source code and toggle between them with ease.
In this example, @MikiTebeka shows us how to use both explicit and implicit build tags when building Go executables.…
In this example, @MikiTebeka shows us how to use both explicit and implicit build tags when building Go executables.…
👍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
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
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
Разработкой начал заниматься ещё со старшей школы, изучал 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