Go и SQL: Проблемы с существующими библиотеками (и лучшее решение)
Знакомьтесь, KSQL - библиотека, которую я написал для решения проблем Golang и SQL
За годы работы с Golang я пришел к выводу, что работа с SQL еще не является хорошо решенной проблемой. Имеющиеся библиотеки просто не удобны в использовании, и существует слишком много способов прострелить себе ногу.
Чтобы проиллюстрировать это, я попытаюсь описать в этой статье все эти проблемы в деталях, а затем кратко представить решение, которое я придумал для решения этих проблем: написанную мной библиотеку под названием KSQL.
https://betterprogramming.pub/golang-sql-problems-with-existing-libraries-145a037261b8
👉 @golang_lib
Знакомьтесь, KSQL - библиотека, которую я написал для решения проблем Golang и SQL
За годы работы с Golang я пришел к выводу, что работа с SQL еще не является хорошо решенной проблемой. Имеющиеся библиотеки просто не удобны в использовании, и существует слишком много способов прострелить себе ногу.
Чтобы проиллюстрировать это, я попытаюсь описать в этой статье все эти проблемы в деталях, а затем кратко представить решение, которое я придумал для решения этих проблем: написанную мной библиотеку под названием KSQL.
https://betterprogramming.pub/golang-sql-problems-with-existing-libraries-145a037261b8
👉 @golang_lib
👍2
Network_Programming_with_Go_Learn_to_Code_Secure_and_Reliable_Network.pdf
3.9 MB
Modern DevOps Practices: Implement and secure DevOps in the public cloud with cutting-edge tools, tips, tricks, and techniques
Автор: Gaurav Agarwal (2021)
Сетевое программирование с помощью Go научит вас, как писать чистое и безопасное сетевое программное обеспечение с помощью GO
Книга предназначена для разработчиков, готовых начать использовать Go для написания безопасного, читаемого кода для работы с сетевым стеком.
В первых главах закладывается фундамент в области создания сетей и маршрутизации трафика, на котором строится остальная часть книги. Вы примените эти знания на практике, поскольку автор Адам Вудбек проведет вас через главные темы, которые описывают взаимодействие с использованием TCP, UDP, сокетов Unix и других функций, обеспечивающих надежную передачу данных.
👉 @golang_lib
Автор: Gaurav Agarwal (2021)
Сетевое программирование с помощью Go научит вас, как писать чистое и безопасное сетевое программное обеспечение с помощью GO
Книга предназначена для разработчиков, готовых начать использовать Go для написания безопасного, читаемого кода для работы с сетевым стеком.
В первых главах закладывается фундамент в области создания сетей и маршрутизации трафика, на котором строится остальная часть книги. Вы примените эти знания на практике, поскольку автор Адам Вудбек проведет вас через главные темы, которые описывают взаимодействие с использованием TCP, UDP, сокетов Unix и других функций, обеспечивающих надежную передачу данных.
👉 @golang_lib
👍2❤1
Go programming language The Ultimate.pdf
494.4 KB
Go programming language: The Ultimate Beginner's Guide to Learn Go Programming Step by Step
Автор: John Bach (2021)
За последние несколько лет вы часто слышали о новом языке программирования, который появился в Google под названием Go, в этой книге мы попытаемся определить этот язык, его преимущества, недостатки и то, что отличает его от других
👉 @golang_lib
Автор: John Bach (2021)
За последние несколько лет вы часто слышали о новом языке программирования, который появился в Google под названием Go, в этой книге мы попытаемся определить этот язык, его преимущества, недостатки и то, что отличает его от других
👉 @golang_lib
👍3❤1👎1
Для тех, кто программирует на Go!
Golang-разработчиков с опытом от трех лет приглашают на Go Weekend Offer в Тинькофф. Все этапы интервью можно будет пройти за выходные. А еще вы познакомитесь с командой и спросите обо всем, что вас интересует.
В Тинькофф нет бюрократии, много интересных проектов и прозрачная система карьерного роста. А работать можно в гибридном режиме в офисах в 22 городах России или в Казахстане, Беларуси и Армении.
И главное: Go Weekend Offer состоится 3 и 4 июня. Но подать заявку надо до 31 мая. Регистрируйтесь
Golang-разработчиков с опытом от трех лет приглашают на Go Weekend Offer в Тинькофф. Все этапы интервью можно будет пройти за выходные. А еще вы познакомитесь с командой и спросите обо всем, что вас интересует.
В Тинькофф нет бюрократии, много интересных проектов и прозрачная система карьерного роста. А работать можно в гибридном режиме в офисах в 22 городах России или в Казахстане, Беларуси и Армении.
И главное: Go Weekend Offer состоится 3 и 4 июня. Но подать заявку надо до 31 мая. Регистрируйтесь
👍2
Media is too big
VIEW IN TELEGRAM
HTTPLoot
Автоматизированный инструмент, который может одновременно ползать, заполнять формы, вызывать страницы ошибок/отладки и "выуживать" секреты из клиентского кода сайтов.
https://github.com/redhuntlabs/httploot
👉 @golang_lib
Автоматизированный инструмент, который может одновременно ползать, заполнять формы, вызывать страницы ошибок/отладки и "выуживать" секреты из клиентского кода сайтов.
https://github.com/redhuntlabs/httploot
👉 @golang_lib
👍2
Alex Edwards - Let's Go Further (2021).pdf
7.7 MB
Advanced patterns for building APIs and web applications in Go
Edwards Alex (2021)
Let's Go Further поможет вам расширить и углубить свои знания о Go - выйдя за рамки основ и пройдя через продвинутые паттерны для разработки, управления и развертывания API и веб-приложений.
Он опирается на многие концепции, которые были представлены в Let's Go, и рассказывает о создании RESTful JSON API от начала до конца - от начальной настройки проекта до развертывания в производстве.
Это дает нам возможность рассмотреть важные темы в контексте полного, работающего приложения - включая миграцию SQL, CORS-запросы, авторизацию на основе разрешений, управление фоновыми задачами, отчетность по метрикам, автоматизацию этапов сборки и развертывания и многое другое.
Если вам понравился курс Let's Go, этот курс должен вам понравиться и стать идеальным следующим шагом в освоении Go.
👉 @golang_lib
Edwards Alex (2021)
Let's Go Further поможет вам расширить и углубить свои знания о Go - выйдя за рамки основ и пройдя через продвинутые паттерны для разработки, управления и развертывания API и веб-приложений.
Он опирается на многие концепции, которые были представлены в Let's Go, и рассказывает о создании RESTful JSON API от начала до конца - от начальной настройки проекта до развертывания в производстве.
Это дает нам возможность рассмотреть важные темы в контексте полного, работающего приложения - включая миграцию SQL, CORS-запросы, авторизацию на основе разрешений, управление фоновыми задачами, отчетность по метрикам, автоматизацию этапов сборки и развертывания и многое другое.
Если вам понравился курс Let's Go, этот курс должен вам понравиться и стать идеальным следующим шагом в освоении Go.
👉 @golang_lib
👍4
Concurrency, Race Conditions and Concurrency Control
https://sayedalesawy.hashnode.dev/concurrency-race-conditions-and-concurrency-control
👉 @golang_lib
https://sayedalesawy.hashnode.dev/concurrency-race-conditions-and-concurrency-control
👉 @golang_lib
Everyday-Go.pdf
2.6 MB
Everyday Golang - The Fast Track
Автор: Alex Ellis (2021)
Перед вами мини-книга от автора множества руководств по модульному тестированию в Go и других учебных материалов (книги Serverless For Everyone Else и курса Kubernetes on Raspberry Pi).
Everyday Golang — это ускоренный курс для изучения концепций и методов, которые вы можете применять в своей повседневной работе и проектах.
Материал книги представляет собой сборник практических примеров, уроков и техник для Go-разработчиков.
👉 @golang_lib
Автор: Alex Ellis (2021)
Перед вами мини-книга от автора множества руководств по модульному тестированию в Go и других учебных материалов (книги Serverless For Everyone Else и курса Kubernetes on Raspberry Pi).
Everyday Golang — это ускоренный курс для изучения концепций и методов, которые вы можете применять в своей повседневной работе и проектах.
Материал книги представляет собой сборник практических примеров, уроков и техник для Go-разработчиков.
👉 @golang_lib
👍2
Media is too big
VIEW IN TELEGRAM
Как на самом деле устроен тип Map в Golang? | Golang под капотом
00:00 Вступление
00:24 Что такое Map?
00:55 Простая реализация - перебор
01:56 Как сделать лучше - разбиваем на бакеты
03:21 Хэш-функция - равномерное распределение по бакетам
05:08 Как реализовать Map без дженериков?
08:20 v = m[k]: во что на самом деле это скомпилируется?
09:25 Все преобразования операций с Map
10:27 Внутренняя структура Map
11:33 Low order bits (LOB) - выбор бакета
13:39 Структура бакета
15:31 Исходный код заголовка Map (hmap)
16:05 Исходный код поиска значения в Map (mapaccess1)
23:30 Переполнение бакета
24:47 Рост Map при заполнении
27:05 Эвакуация данных
28:02 Как избежать эвакуацию данных и ускорить программу - аллокация памяти
28:39 Почему нельзя взять указатель на элемент Map
29:26 Или можно..?
30:12 Порядох обхода мапы - почему он случайный?
31:47 Вывод функции fmt.Println() - почему он фиксированный?
33:14 Подводим итоги
33:45 Заключение
источник
👉 @golang_lib
00:00 Вступление
00:24 Что такое Map?
00:55 Простая реализация - перебор
01:56 Как сделать лучше - разбиваем на бакеты
03:21 Хэш-функция - равномерное распределение по бакетам
05:08 Как реализовать Map без дженериков?
08:20 v = m[k]: во что на самом деле это скомпилируется?
09:25 Все преобразования операций с Map
10:27 Внутренняя структура Map
11:33 Low order bits (LOB) - выбор бакета
13:39 Структура бакета
15:31 Исходный код заголовка Map (hmap)
16:05 Исходный код поиска значения в Map (mapaccess1)
23:30 Переполнение бакета
24:47 Рост Map при заполнении
27:05 Эвакуация данных
28:02 Как избежать эвакуацию данных и ускорить программу - аллокация памяти
28:39 Почему нельзя взять указатель на элемент Map
29:26 Или можно..?
30:12 Порядох обхода мапы - почему он случайный?
31:47 Вывод функции fmt.Println() - почему он фиксированный?
33:14 Подводим итоги
33:45 Заключение
источник
👉 @golang_lib
👍3
Go, Allure и HTTP, или Как мило тестировать HTTP-сервисы на Go
Все мы привыкли к лёгкому написанию тестов на Python и Java — это основные языки автотестировщиков с богатым инструментарием утилит и всего, что упрощает жизнь. Что нужно для написания автотестов для HTTP-сервиса на Python или Java? Гугл, бутылочка крафта и два часа времени.
А как быть в случае с Go? Как раз на нём мы в большинстве случаев пишем микросервисы. И если тесты написаны на другом языке, разработчики не могут внести в них свой вклад или отревьюить их. Поэтому внутри Ozon активно развивается Go-сообщество QA, и этим ребятам тоже нужно тестировать HTTP-сервисы и проверять отчёты в Allure. Как настоящие сварщики мы подумали: «Если чего-то не хватает, нужно написать своё». Сказано — сделано: встречайте опенсорс-библиотеку CUTE в BDD-стиле, которая облегчает тяготы создания автотестов и упрощает переход на Go. Главные фичи: создание HTTP-тестов, возможность реализовывать проверки из коробки, Allure-отчёты и низкий порог входа.
https://habr.com/ru/companies/ozontech/articles/672678/
👉 @golang_lib
Все мы привыкли к лёгкому написанию тестов на Python и Java — это основные языки автотестировщиков с богатым инструментарием утилит и всего, что упрощает жизнь. Что нужно для написания автотестов для HTTP-сервиса на Python или Java? Гугл, бутылочка крафта и два часа времени.
А как быть в случае с Go? Как раз на нём мы в большинстве случаев пишем микросервисы. И если тесты написаны на другом языке, разработчики не могут внести в них свой вклад или отревьюить их. Поэтому внутри Ozon активно развивается Go-сообщество QA, и этим ребятам тоже нужно тестировать HTTP-сервисы и проверять отчёты в Allure. Как настоящие сварщики мы подумали: «Если чего-то не хватает, нужно написать своё». Сказано — сделано: встречайте опенсорс-библиотеку CUTE в BDD-стиле, которая облегчает тяготы создания автотестов и упрощает переход на Go. Главные фичи: создание HTTP-тестов, возможность реализовывать проверки из коробки, Allure-отчёты и низкий порог входа.
https://habr.com/ru/companies/ozontech/articles/672678/
👉 @golang_lib
❤4
Построение конвейера CI для библиотеки Go с помощью Dagger
Я играю с Dagger уже несколько месяцев, используя его в различных проектах. В этом посте я поделюсь своим опытом использования Dagger для создания CI-конвейеров для библиотек Go.
https://sagikazarmark.hu/blog/dagger-go-library/
👉 @golang_lib
Я играю с Dagger уже несколько месяцев, используя его в различных проектах. В этом посте я поделюсь своим опытом использования Dagger для создания CI-конвейеров для библиотек Go.
https://sagikazarmark.hu/blog/dagger-go-library/
👉 @golang_lib
Márk Sági-Kazár
Building a CI pipeline for a Go library with Dagger
I’ve been playing with Dagger for months now using it in various projects.
In this post, I’ll share my experience with using Dagger to build CI pipelines for Go libraries.
In this post, I’ll share my experience with using Dagger to build CI pipelines for Go libraries.
👍2
Generic Data Structures and Algorithm....pdf
11.2 MB
Generic Data Structures and Algorithms in Go: An Applied Approach Using Concurrency, Genericity and Heuristics
Автор: Richard Wiener (2022)
Расширьте свое понимание общих структур данных и алгоритмов и их применения с помощью Go и эффективного использования параллелизма. Эта книга подведет вас к следующему шагу, показав, как заставить ваши программы работать не только эффективно, но и корректно. Изучая многие структуры данных и связанные с ними алгоритмы и приложения, вы сосредоточитесь на компромиссах между скоростью и хранением данных, а также на преимуществах использования параллелизма, когда это необходимо.
👉 @golang_lib
Автор: Richard Wiener (2022)
Расширьте свое понимание общих структур данных и алгоритмов и их применения с помощью Go и эффективного использования параллелизма. Эта книга подведет вас к следующему шагу, показав, как заставить ваши программы работать не только эффективно, но и корректно. Изучая многие структуры данных и связанные с ними алгоритмы и приложения, вы сосредоточитесь на компромиссах между скоростью и хранением данных, а также на преимуществах использования параллелизма, когда это необходимо.
👉 @golang_lib
👍2