1 
сделаем это пост полезным - выкладывайте в комментариях свои проекты, код, наработки, лучшие попадут в подборку.
сделаем это пост полезным - выкладывайте в комментариях свои проекты, код, наработки, лучшие попадут в подборку.
❤12👍3🔥1
  Пакет Go Mongo, поддерживающий операции по работе с документами и эффективным компоновщиком данных BSON с использованием различных типов данных.
BSON - бинарная форма представления простых структур данных и ассоциативных массивов (которые в контексте обмена называют объектами или документами)
go get github.com/chenmingyong0423/go-mongox#golang #MongoDB
▪ Github
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  ❤10👍6🔥2
  go-daemon:какой лимит по умолчанию на количество открытых дескрипторов файла в Go? Как его менять? И есть ли общепринятые рекомендации по их количеству?
ulimit -a и ulimit -aH в shell'е перед запуском вашего демона. Это быстро покажет текущие "мягкие" и (второй вызов) "жесткие" ограничения. При помощи ulimit можно открутить мягкие ограничения до пределов жестких. Следует понимать, что ulimit меняет только текущие лимиты, для шелла и всех программ, запущенных в этом шелле, поэтому после завершения сессии или даже в другом окне терминала значения останутся прежними./etc/security/limits.conf и каталог /etc/security/limits.d/, ограничение называется nofile. Редактировать (а, иногда, и смотреть) эти файлы может только суперпользователь ("root"). Там задаются ограничения на отдельных пользователей или группы, применяемые на всю сессию данного пользователя, или всех пользователей определенной группы.sysctl - это fs.nr_open:/sbin/sysctl -n fs.nr_openему же соответствует файл
/proc/sys/fs/nr_opengetrlimit/setrlimit, которые можно звать из Go, используя FFI (примеры можно посмотреть здесь)@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍16❤3🔥3
  Основная идея — отделить интерфейс хранилища данных от его реализации. Тогда мы можем использовать различные реализации хранилища, обладающие одним интерфейсом
entity/user@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍19🤔5❤4🔥3
  Основная цель этого шаблона, кроме обучения — это снизить время на прототипирование небольших серверных задач на Go.
Шаблон включает в себя:
На изображении — UML-диаграмма последовательности запуска и остановки сервера
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  🔥31👍12❤6
  ./goprogram
1 29.06.2099 14:10
./goprogram
2 29.06.2099 14:12
./goprogram
3 29.06.2099 15:10
./goprogram
4 30.06.2099 14:10
При этом ни каких дополнительных файлов или записей не должно создаваться.
На Purebasic довольно просто такое реализовать:
• Скомпилированный бинарный файл создаёт свою копию.
• Записывает в конец файла число.
• Замещает оригинал изменённой копией.
• При повторном запуске выводит записанное число.
• Можно пример такой реализации на Go?
type persistent struct {
    Magic   [8]byte
    Content int64
}
var p = persistent{
    Magic:   [8]byte{0xBA, 0xDD, 0xFA, 0xCE, 0xBE, 0xEF, 0xCA, 0xCE},
    Content: 0,
}
func main() {
    fmt.Println(p.Content)
    const size = int(unsafe.Sizeof(p))
    currentBuf := bytes.NewBuffer(make([]byte, 0, size))
    err := binary.Write(currentBuf, binary.LittleEndian, p)
    newP := p
    newP.Content++
    newBuf := bytes.NewBuffer(make([]byte, 0, size))
    err = binary.Write(newBuf, binary.LittleEndian, newP)
    currentBytes, newBytes := currentBuf.Bytes(), newBuf.Bytes()
    self, err := os.OpenFile(os.Args[0], os.O_RDONLY, 0755)
    selfBytes, err := ioutil.ReadAll(self)
    i := bytes.Index(selfBytes, currentBytes)
    copy(selfBytes[i:i+size], newBytes)
    newSelf, err := ioutil.TempFile("", "selfmodifying")
    _, err = newSelf.Write(selfBytes)
    err = os.Rename(newSelf.Name(), self.Name())
    err = os.Chmod(self.Name(), 0755)
}@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍13❤4🤬4🔥3
  Вот задача — дано изображение в виде слайса байт, в которое нужно добавить метаинформацию вроде заголовков exif.
Практиески все библиотеки на Go дают возможно считать метаинформацию из файла, но не записать.
Благо, есть такая библиотека
go-exif, которая умеет править или создавать новые exif-блоки: Немного подробностей про
go-exif:@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍19❤2🔥2😢1
  Инструмент для анализа размера зависимостей в скомпилированных бинарных файлах
Go.
• Github
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  🔥28👍15❤3
  Предлагает массу вариантов работы с pdf:
• аннотирование
• создание pdf с помощью json
• извлечение изображений, текста и т.д.
• объединение нескольких pdf
• поворот, изменение размера
Отличный инструмент для pdf, да и в плане демонстрации возможностей Go тоже — исходный код открыт, можно форкать, добавлять свои возможности
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍28❤4🔥4
  @Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍23🔥4❤2
  🔥 Дайджест полезных материалов из мира Golang за неделю
Инструменты недели:
📌 go-size-analyzer - инструмент для анализа размера зависимостей в скомпилированных бинарных файлах
Go.
📌 Go-mongox - пакет Go Mongo, поддерживающий операции по работе с документами и эффективным компоновщиком данных BSON с использованием различных типов данных.
📌Dendy - это эмулятор NES/Famicom, написанный на Go и названный в честь советского клона Famicom, который был у многих в детстве.
📌 The Gowebly CLI - инструмент интерфейса командной строки, который упрощает создание Go приложений на серверной части.
Почитать:
— Fuzzing-тестирование. Практическое применение
— Почему теряются поля при конвертации?
— Бойлерплейт как инструмент стандартизации Go-проектов
— Как добавить метаданные в изображение?
— Пишем поиск семантически похожих текстов (или товаров) за полчаса на Go и Postgres (pgVector)
— Шаблон backend сервера на Go
— Использование миграций баз данных в Go
— My weekly dev.to recommendations
— What’s New in Go 1.22: cmp.Or
— Golang in-memory key-value pair cache
— Golang generator functions (Experimental in 1.22)
— From Homemade HTTP Router to New ServeMux
— (Part 5)Golang Framework Hands-on - KisFlow Stream Computing Framework-Function Scheduling
— Go Program pattern 04:Map-Reduce
— Live reload em Go com docker e compile daemon
— Go program pattern 05 : Decorations
— Go program pattern 03:Inversion of Control
— Gin + Gorm Practical Guide, Implementing a Simple Q&A Community Backend Service in One Hour
— "The Two Reasons I Prefer Passing Struct Pointers Around"
Посмотреть:
🌐 Разработка полноценного распределенного хранилища файлов на Go (⏱ 9:57:00)
🌐 Why Golang's IO.READER Is More Important Than You Think (⏱ 06:38)
🌐 Расследуй убийство с SQL. Игры, которые реально учат писать код. (⏱ 03:52)
🌐 3 Important Use Cases Why The Industry Is Using Kafka (⏱ 07:52)
🌐 When Should You Pick NEOVIM Over VSCODE? (⏱ 01:00)
🌐 Ultimate Golang - HTMX - TEMPL - TAILWIND Project Template (⏱ 02:35:23)
🌐 DEPENDENCY INJECTION IN GOLANG? YEAH YIKES (⏱ 01:55:43)
🌐 Внутреннее устройство планировщика Go (⏱ 01:01:57)
Хорошего дня!
@Golang_google
Инструменты недели:
📌 go-size-analyzer - инструмент для анализа размера зависимостей в скомпилированных бинарных файлах
Go.
📌 Go-mongox - пакет Go Mongo, поддерживающий операции по работе с документами и эффективным компоновщиком данных BSON с использованием различных типов данных.
📌Dendy - это эмулятор NES/Famicom, написанный на Go и названный в честь советского клона Famicom, который был у многих в детстве.
📌 The Gowebly CLI - инструмент интерфейса командной строки, который упрощает создание Go приложений на серверной части.
Почитать:
— Fuzzing-тестирование. Практическое применение
— Почему теряются поля при конвертации?
— Бойлерплейт как инструмент стандартизации Go-проектов
— Как добавить метаданные в изображение?
— Пишем поиск семантически похожих текстов (или товаров) за полчаса на Go и Postgres (pgVector)
— Шаблон backend сервера на Go
— Использование миграций баз данных в Go
— My weekly dev.to recommendations
— What’s New in Go 1.22: cmp.Or
— Golang in-memory key-value pair cache
— Golang generator functions (Experimental in 1.22)
— From Homemade HTTP Router to New ServeMux
— (Part 5)Golang Framework Hands-on - KisFlow Stream Computing Framework-Function Scheduling
— Go Program pattern 04:Map-Reduce
— Live reload em Go com docker e compile daemon
— Go program pattern 05 : Decorations
— Go program pattern 03:Inversion of Control
— Gin + Gorm Practical Guide, Implementing a Simple Q&A Community Backend Service in One Hour
— "The Two Reasons I Prefer Passing Struct Pointers Around"
Посмотреть:
🌐 Разработка полноценного распределенного хранилища файлов на Go (⏱ 9:57:00)
🌐 Why Golang's IO.READER Is More Important Than You Think (⏱ 06:38)
🌐 Расследуй убийство с SQL. Игры, которые реально учат писать код. (⏱ 03:52)
🌐 3 Important Use Cases Why The Industry Is Using Kafka (⏱ 07:52)
🌐 When Should You Pick NEOVIM Over VSCODE? (⏱ 01:00)
🌐 Ultimate Golang - HTMX - TEMPL - TAILWIND Project Template (⏱ 02:35:23)
🌐 DEPENDENCY INJECTION IN GOLANG? YEAH YIKES (⏱ 01:55:43)
🌐 Внутреннее устройство планировщика Go (⏱ 01:01:57)
Хорошего дня!
@Golang_google
🔥13👍8❤7
  Неплохая статья, которая даёт понимание, как используется Go в бигтехе.
О чём?
Во всех golang-сервисах пишут тесты на свой код, которые в среднем гоняются на CI более 5 минут.
Поэтому автор подумал, что неплохо бы это всё ускорить — собственно, этим он и решил поделиться
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  ❤22👍11🔥7
  Devcards предоставляет интерактивную визуальную среду для Go, аналогичную REPLY и python ноутбукам, таким как Jupyter.
go install github.com/igorhub/devcard/cmd/devcards@latest
▪Github
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍31🤔5❤2🔥2
  — Секция 1, системный минимум
— Секция 2, минимум по Go
— Секция 3, форматы данных
— Секция 4, базы данных
— Секция 5, сети
— Секция 6, брокеры, очереди сообщений
— Секция 7, инфраструктура и архитектура
— Секция 8, алгоритмы
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍36🔥10❤5😁5
  Открытый учебник по Go с упором на тестирование и test coverage
@Golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍26🔥5❤4
  