R*-tree в Go, немного геймдева и поиска элементов в пространстве
Начну с предыстории...
У меня довольно интересный опыт в разработке модификаций для мультиплееров (далее - МП) трехмерных игр на серверной и клиентской части для разных игровых проектов, как на языках JS, так и Lua, которые использовались на сервере и клиенте.
В один прекрасный день, я все же решил углубиться в настоящий Highload и изучать для себя язык Go. Пока я ходил по собеседованиям, я понял, что у меня действительно малозначительный опыт именно в разработке высоконагруженных систем.
И, пока всё это происходило, я понял, что знания все же необходимо подтягивать, а сами собеседования помогут направить меня в нужное русло. И, после одного из собеседований с вопросами об индексах, я решил углубиться в них (помимо бездумного расставления btree и hash через EXPLAIN ANALYZE).Так я наткнулся на интересный для себя индекс в PostgreSQL - GiST.
Что из себя представляет индекс GiST? Вспомним, что GiST - это подвид структуры R-tree, которая позволяет быстро обращаться к данным в пространстве.
Когда я это прочитал, мне стало невероятно интересно, как в игровых модификациях, с которыми я работал, обстоят дела с пространственным поиском?
https://habr.com/ru/post/666904/
👉 @golang_lib
Начну с предыстории...
У меня довольно интересный опыт в разработке модификаций для мультиплееров (далее - МП) трехмерных игр на серверной и клиентской части для разных игровых проектов, как на языках JS, так и Lua, которые использовались на сервере и клиенте.
В один прекрасный день, я все же решил углубиться в настоящий Highload и изучать для себя язык Go. Пока я ходил по собеседованиям, я понял, что у меня действительно малозначительный опыт именно в разработке высоконагруженных систем.
И, пока всё это происходило, я понял, что знания все же необходимо подтягивать, а сами собеседования помогут направить меня в нужное русло. И, после одного из собеседований с вопросами об индексах, я решил углубиться в них (помимо бездумного расставления btree и hash через EXPLAIN ANALYZE).Так я наткнулся на интересный для себя индекс в PostgreSQL - GiST.
Что из себя представляет индекс GiST? Вспомним, что GiST - это подвид структуры R-tree, которая позволяет быстро обращаться к данным в пространстве.
Когда я это прочитал, мне стало невероятно интересно, как в игровых модификациях, с которыми я работал, обстоят дела с пространственным поиском?
https://habr.com/ru/post/666904/
👉 @golang_lib
Хабр
R*-tree в Go, немного геймдева и поиска элементов в пространстве
Приветствую, уважаемые читатели Habr! Сегодня я хотел бы рассказать об интересном подвиде одного алгоритма, о котором Вы могли возможно забыть! Начну с предыстории... У меня довольно интересный опыт в...
Привет, это Podlodka Crew! Похоже, Podlodka Go Crew — единственная русскоязычная специализированная конференция по Go, по крайней мере в ближайшие полгода. Если хотите пообщаться с коллегами, обсудить актуальные вопросы и завести новые знакомства, загляните к нам 6 февраля.
Вместе с разработчиками из «Точки», «Авито», «Сбермаркета», Selectel, Ozon, Lamoda обсудим:
✴ Разницу тулинга, создаваемого на Go, Python и JavaScript. На круглом столе разберём преимущества Go.
✴ Инструменты для написания CLI-интерфейсов. Узнаем, чем Go может привлечь поклонников Python на примере кейса от Ozon.
✴ Создание и эволюцию платформенного продукта. Заглянем «под капот» платформенных продуктов больших компаний.
Если вы ещё не слышали о нас, конференции Podlodka Crew родились из одноимённого подкаста. Мы проводим мероприятия по разным направлениям разработки. Сезон длится 5 дней, ежедневно — 2 экспертные сессии. В программе — воркшопы, рулетки кейсов и круглые столы.
Заходите на сайт, чтобы узнать больше и забрать свой билет.
Вместе с разработчиками из «Точки», «Авито», «Сбермаркета», Selectel, Ozon, Lamoda обсудим:
✴ Разницу тулинга, создаваемого на Go, Python и JavaScript. На круглом столе разберём преимущества Go.
✴ Инструменты для написания CLI-интерфейсов. Узнаем, чем Go может привлечь поклонников Python на примере кейса от Ozon.
✴ Создание и эволюцию платформенного продукта. Заглянем «под капот» платформенных продуктов больших компаний.
Если вы ещё не слышали о нас, конференции Podlodka Crew родились из одноимённого подкаста. Мы проводим мероприятия по разным направлениям разработки. Сезон длится 5 дней, ежедневно — 2 экспертные сессии. В программе — воркшопы, рулетки кейсов и круглые столы.
Заходите на сайт, чтобы узнать больше и забрать свой билет.
GoLang APIs: A skeleton for your future projects
https://blog.devgenius.io/golang-apis-a-skeleton-for-your-future-projects-a082dc4d6818
👉 @golang_lib
https://blog.devgenius.io/golang-apis-a-skeleton-for-your-future-projects-a082dc4d6818
👉 @golang_lib
REST API на Go
Разработка Web-Приложений на Golang. Знакомство с проектом.
Базовая структура проекта. HTTP-Сервер.
Чистая Архитектура. Внедрение Зависимостей.
Запуск Postgres в Docker. Файлы миграций. Конфигурации приложения.
Подключение к БД из приложения. Переменные окружения. Библиотека sqlx
Регистрация пользователей
Аутентификация. JWT-токены.
Парсинг JWT-токенов. Middleware аутентификации
Создание и получение списков
Удаление и обновление списков
Все видео доступны на youtube
👉 @golang_lib
Разработка Web-Приложений на Golang. Знакомство с проектом.
Базовая структура проекта. HTTP-Сервер.
Чистая Архитектура. Внедрение Зависимостей.
Запуск Postgres в Docker. Файлы миграций. Конфигурации приложения.
Подключение к БД из приложения. Переменные окружения. Библиотека sqlx
Регистрация пользователей
Аутентификация. JWT-токены.
Парсинг JWT-токенов. Middleware аутентификации
Создание и получение списков
Удаление и обновление списков
Все видео доступны на youtube
👉 @golang_lib
👍3
Bud - The Full-Stack Web Framework for Go
https://github.com/livebud/bud
Документация
https://denim-cub-301.notion.site/Hey-Bud-4d81622cc49942f9917c5033e5205c69
Пример создания минимального клона Hacker News за 15 минут с помощью Bud
https://www.youtube.com/watch?v=LoypcRqn-xA
👉 @golang_lib
https://github.com/livebud/bud
Документация
https://denim-cub-301.notion.site/Hey-Bud-4d81622cc49942f9917c5033e5205c69
Пример создания минимального клона Hacker News за 15 минут с помощью Bud
https://www.youtube.com/watch?v=LoypcRqn-xA
👉 @golang_lib
GitHub
GitHub - livebud/bud: The Full-Stack Web Framework for Go
The Full-Stack Web Framework for Go. Contribute to livebud/bud development by creating an account on GitHub.
👍2
Рекомендуем к прочтению книгу Александра Бындю "Антихрупкость в IT"
Эта книга — результат многолетнего опыта построения IT-продуктов. И прежде всего она о том, как выстроить процессы разработки IT-систем таким образом, чтобы успевать вовремя подстроиться под любые изменения.
В её основе — описание работающих практик, примеры из реальных проектов, анализ ошибок и выводы. В книге собраны рекомендации для владельцев бизнеса и разработчиков. Первые приобретут систематизированные знания о том, как правильно взаимодействовать с IT, а вторые — как делать хорошо и не делать плохо.
Сайт издания
Ознакомиться с книгой
Эта книга — результат многолетнего опыта построения IT-продуктов. И прежде всего она о том, как выстроить процессы разработки IT-систем таким образом, чтобы успевать вовремя подстроиться под любые изменения.
В её основе — описание работающих практик, примеры из реальных проектов, анализ ошибок и выводы. В книге собраны рекомендации для владельцев бизнеса и разработчиков. Первые приобретут систематизированные знания о том, как правильно взаимодействовать с IT, а вторые — как делать хорошо и не делать плохо.
Сайт издания
Ознакомиться с книгой
👍1
Making a game with Raylib
Making an Animal Crossing type game for beginners Part 1, Part 2, Part 3
Basic Animations with Go & Raylib Tutorial - Part 4
Idle Animation - Making a game with Go & Raylib Tutorial - Part 5
Basic Tile Mapping - Making a game with Go & Raylib Tutorial - Part 6
Advanced Tile Mapping - Making a game with Go & Raylib Tutorial - Part 7
Все видео доступны на youtube https://www.youtube.com/playlist?list=PLVotA8ycjnCsy30WQCwVU5RrZkt4lLgY5
👉 @golang_lib
Making an Animal Crossing type game for beginners Part 1, Part 2, Part 3
Basic Animations with Go & Raylib Tutorial - Part 4
Idle Animation - Making a game with Go & Raylib Tutorial - Part 5
Basic Tile Mapping - Making a game with Go & Raylib Tutorial - Part 6
Advanced Tile Mapping - Making a game with Go & Raylib Tutorial - Part 7
Все видео доступны на youtube https://www.youtube.com/playlist?list=PLVotA8ycjnCsy30WQCwVU5RrZkt4lLgY5
👉 @golang_lib
Экспортируем модули из Go-сервиса: сотворение директории pkg
Чтобы поделиться кодом, нужно создать библиотеку и разместить её в самостоятельном репозитории. Но иногда возникает необходимость хранить библиотеку вместе с сервисом, который её использует. Среди Go-разработчиков существует мнение, что экспортируемые библиотеки стоит хранить в директории pkg.
История этой директории берёт начало со времён ранних релизов Go, когда модули стандартной библиотеки находились в $GOROOT/src/pkg. Впоследствии директория pkg была удалена, но многие проекты, такие как Kubernetes, повторили у себя данную файловую структуру. С тех пор pkg закрепилась в файловой структуре Go-проектов.
https://habr.com/ru/company/ozontech/blog/668254/
👉 @golang_lib
Чтобы поделиться кодом, нужно создать библиотеку и разместить её в самостоятельном репозитории. Но иногда возникает необходимость хранить библиотеку вместе с сервисом, который её использует. Среди Go-разработчиков существует мнение, что экспортируемые библиотеки стоит хранить в директории pkg.
История этой директории берёт начало со времён ранних релизов Go, когда модули стандартной библиотеки находились в $GOROOT/src/pkg. Впоследствии директория pkg была удалена, но многие проекты, такие как Kubernetes, повторили у себя данную файловую структуру. С тех пор pkg закрепилась в файловой структуре Go-проектов.
https://habr.com/ru/company/ozontech/blog/668254/
👉 @golang_lib
👍3
The Go Programming Language and Environment
https://cacm.acm.org/magazines/2022/5/260357-the-go-programming-language-and-environment/fulltext
👉 @golang_lib
https://cacm.acm.org/magazines/2022/5/260357-the-go-programming-language-and-environment/fulltext
👉 @golang_lib
Использование 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
👍2
Media is too big
VIEW IN TELEGRAM
Самое полное интервью Golang Middle
0:00-01:34 Разница между C# и Go, что понравилось и не понравилось?
01:34-03:40 Какая задача на го последние полгода понравилась/порадовала?
03:40-05:06 Модели, структуры в Go и в C# сравнения
05:06-06:28 Рассуждения про дженерики
06:28-08:07 Интерфейсы в го, реализация
08:07-09:59 Кейс с интерфейсами
09:59-11:04 Что такое пустой интерфейс?
11:04-12:17 Типы. Что такое слайсы?
12:17-13:41 Кейс со слайсами, капасити
13:41-15:28 Когда мы передали слайс, что можем с ним дальше делать?
15:28-17:08 Насколько слайс безопасен?
17:08-18:37 Маппа, Хэш-таблица (отличия)
18:37-19:36 Какая в среднем сложность поиска по слайсы и по Маппе?
19:36-21:40 Насколько Маппа безопасна?
21:40-23:20 Объявления переменных, в чем разница?
23:20-25:30 Объявление слайсов
25:30-27:21 Мьютексы, какие используешь? Кейсы.
27:21-28:29 Каналы. Как он работает в го?
28:29-29:15 Насколько каналы безопасны?
29:15-31:00 Кейсы с закрытием канала
31:00-37:10 Select.default.Кейсы.
37:10-39:43 Буферизированные и не буферизированные каналы это
39:43-01:05:40 Анализ кода, задачи
01:05:49-01:10:58 Что такое горутины? Кейсы.
01:10:58-01:12:22 Scheduler, как работает планировщик?
01:12:22-01:16:40 Garbage collector C# и в Go
01:16:40-01:32:36 Кастомные ошибки. Задачи
01:32:36-01:36:09 Контекст, дочерние контексты
01:36:09-01:43:53 Тестирования. Как тестируешь? Какие тесты знаешь?
01:43:53-01:45:14 Профилировщики
01:45:14-01:50:15 Процессы в Linux. Как закончить процессы?
01:50:15-01:56:59 Какие бывают протоколы? Их применение.
01:56:59-02:00:50 Виды баз данных и в чём их различия?
02:00:50-02:04:20 Индексы. Что такое индекс? Как чистить? Кейсы
02:04:20-02:10:15 Что такое Транзакции, что означает сериализуемость?
02:10:15-02:14:15 Race conditions. Data Race
02:14:15-02:17:36 Message broker
02:17:36-02:50:15 System Design
02:50:15-02:56:13 Вопросы из чата.
02:56:13-03:03:20 Фидбэк собеседования с Сергеем
03:03:20-03:08:31 Менторская программа
источник
👉 @golang_lib
0:00-01:34 Разница между C# и Go, что понравилось и не понравилось?
01:34-03:40 Какая задача на го последние полгода понравилась/порадовала?
03:40-05:06 Модели, структуры в Go и в C# сравнения
05:06-06:28 Рассуждения про дженерики
06:28-08:07 Интерфейсы в го, реализация
08:07-09:59 Кейс с интерфейсами
09:59-11:04 Что такое пустой интерфейс?
11:04-12:17 Типы. Что такое слайсы?
12:17-13:41 Кейс со слайсами, капасити
13:41-15:28 Когда мы передали слайс, что можем с ним дальше делать?
15:28-17:08 Насколько слайс безопасен?
17:08-18:37 Маппа, Хэш-таблица (отличия)
18:37-19:36 Какая в среднем сложность поиска по слайсы и по Маппе?
19:36-21:40 Насколько Маппа безопасна?
21:40-23:20 Объявления переменных, в чем разница?
23:20-25:30 Объявление слайсов
25:30-27:21 Мьютексы, какие используешь? Кейсы.
27:21-28:29 Каналы. Как он работает в го?
28:29-29:15 Насколько каналы безопасны?
29:15-31:00 Кейсы с закрытием канала
31:00-37:10 Select.default.Кейсы.
37:10-39:43 Буферизированные и не буферизированные каналы это
39:43-01:05:40 Анализ кода, задачи
01:05:49-01:10:58 Что такое горутины? Кейсы.
01:10:58-01:12:22 Scheduler, как работает планировщик?
01:12:22-01:16:40 Garbage collector C# и в Go
01:16:40-01:32:36 Кастомные ошибки. Задачи
01:32:36-01:36:09 Контекст, дочерние контексты
01:36:09-01:43:53 Тестирования. Как тестируешь? Какие тесты знаешь?
01:43:53-01:45:14 Профилировщики
01:45:14-01:50:15 Процессы в Linux. Как закончить процессы?
01:50:15-01:56:59 Какие бывают протоколы? Их применение.
01:56:59-02:00:50 Виды баз данных и в чём их различия?
02:00:50-02:04:20 Индексы. Что такое индекс? Как чистить? Кейсы
02:04:20-02:10:15 Что такое Транзакции, что означает сериализуемость?
02:10:15-02:14:15 Race conditions. Data Race
02:14:15-02:17:36 Message broker
02:17:36-02:50:15 System Design
02:50:15-02:56:13 Вопросы из чата.
02:56:13-03:03:20 Фидбэк собеседования с Сергеем
03:03:20-03:08:31 Менторская программа
источник
👉 @golang_lib
👍3
How to Achieve Dynamic SQL Query With Go
https://betterprogramming.pub/dynamic-sql-query-with-go-8aeedaa02907
👉 @golang_lib
https://betterprogramming.pub/dynamic-sql-query-with-go-8aeedaa02907
👉 @golang_lib