DevGang
Авторизоваться

Реализация паттерна репозитория в Go с репозиториями in-memory и MySQL

  1.  Мы определяем структуру User, представляющую сущность пользователя.
  2. Мы определяем интерфейс UserRepository с методами для управления пользователями.
  3. Мы реализуем InMemoryUserRepository и MySQLUserRepository для обеспечения хранилищ в памяти и на основе MySQL, соответственно.
  4. NewInMemoryUserRepository и NewMySQLUserRepository - это функции-конструкторы для создания экземпляров соответствующих репозиториев.
  5. Мы демонстрируем, как использовать оба репозитория в главной функции, вставляя пользователей, получая их по ID и получая информацию обо всех пользователях.

Как создать тестовые данные GPS в Go

Многие функции, над которыми я работаю, используют массивы точек (GPS-треков) []float64{lng,lat} для статистического анализа. Отдельные треки могут содержать более 50 000 точек, описывающих реальное путешествие из пункта А в пункт Б.

Тестирование функций, которые обрабатывают GPS-треки, оказалось неожиданно сложным. Тестовые данные вида [1.0,2.0] для логического тестирования подходят. Но помимо этого, я хочу иметь возможность проверять согласованность в таких вещах, как поиск кластеров или контрольных точек коэффициента.

Создавайте электронные письма для новостных рассылок в Golang

Вы когда-нибудь задумывались, как работают информационные бюллетени от разных компаний и организаций? Некоторые компании используют такие платформы, как Mailchimp, но если вы хотите понять, что происходит и как создать свою собственную платформу, чтобы иметь полный контроль, тогда следуйте инструкциям, когда мы отправим нашим подписчикам несколько специальных информационных бюллетеней.

Шаблон Builder

Сегодня я хочу углубиться в шаблон Builder — важную концепцию дизайна, с которой многие разработчики сталкиваются на определенном этапе своей карьеры. Этот шаблон значительно расширяет наши возможности создавать сложные объекты контролируемым и масштабируемым образом. Однако всегда есть куда совершенствоваться, особенно в том, как мы управляем процессом строительства.

Dgraph 24.0.0-alpha теперь доступен на Github и DockerHub

Dgraph v24.0.0-alpha теперь доступен сообществу, чтобы опробовать поддержку векторного типа данных, который обеспечивает семантический поиск.

Dgraph добавляет поддержку векторов для объединения данных графа с встраиваниями, улучшая приложения на основе графов и открывая новые возможности искусственного интеллекта. Сценарии использования основных графов, такие как обнаружение мошенничества, рекомендации и управление основными данными, могут быть дополнены векторами и внедрениями. Graph+Vector также является ключевым методом, используемым для уменьшения галлюцинаций в приложениях с искусственным интеллектом.

7 языков программирования, которые должен знать каждый облачный инженер в 2024 году!

В последние годы, выступая в качестве наставника в различных буткемпах по кодингу, я имел уникальную возможность направлять и поддерживать множество начинающих разработчиков, страстно желающих заявить о себе в сфере облачных технологий и DevOps. Среди этих начинающих инженеров я заметил одну постоянную тему: они стремятся погрузиться в сложность облачных вычислений, но часто чувствуют себя подавленными огромным количеством доступных языков программирования и инструментов. Это осознание подтолкнуло меня к мысли о создании всеобъемлющего, но доступного руководства, которое прольет свет на основные языки программирования для тех, кто начинает свой путь в облачной инженерии.

Валидация данных: Исследование ответственности кода

Наша цель как ответственных разработчиков - писать код, который не только функционален, но и понятен, удобен для сопровождения и адаптации. В этом процессе мы часто сталкиваемся с ключевым, но несколько неуловимым вопросом: проблема ответственности в чистом коде. Подождите, не закрывайте пока страницу. Я не собираюсь описывать хорошо известный принцип единой ответственности (Single Responsibility Principle, SRP). Вместо этого я хочу рассмотреть нечто более широкое и, тем не менее, иногда более сложное - где должны располагаться конкретные функциональные возможности в архитектуре системы?

Что такое мьютекс в Golang?

Создавая программы на Golang, вы почти всегда найдете применение горутинам.

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

В этой статье мы рассмотрим, что такое мьютекс и как его использовать.

Обработка ошибок в веб-приложениях на Go должна быть удобнее!

В этом посте я опишу паттерн обработки ошибок, который показался мне довольно элегантным при написании REST, gRPC и других сервисов на Go. При написании этого поста я преследовал три цели:

Оптимизация образов Docker с помощью многоэтапных сборок и бездистрибутивного подхода

Когда мы перевели наше приложение с Node.js (Express) на Go, нам удалось уменьшить размер образа Docker с 2,8 ГБ до 400 МБ, что изначально нас устраивало. Однако, стремясь к более эффективному использованию ресурсов и более быстрому развертыванию, мы поняли, что все еще есть возможности для дальнейшего уменьшения размера изображения, поэтому мы решили попробовать новый подход.

Возможно, это знакомая территория для инженеров с опытом работы в DevOps, но для новичков я поделюсь улучшениями, которые мы внесли.

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

В этом месте могла бы быть ваша реклама

Разместить рекламу