Задача
Дан массив целых положительных чисел nums, верните количество различных простых множителей в произведении элементов
nums
. Функция должна называться distinctPrimeFactors.
Обратите внимание, что:
▪Число, большее
1
, называется простым, если оно делится только на 1 и само на себя.▪Целое число val1 является множителем другого целого числа
val2
, если val2
/ val1
является целым числом.Пример
nums = [2,4,3,7,10,6]
distinctPrimeFactors(nums)
# 4
# Пояснение:
Произведение всех элементов в `
nums
` равно: `2 * 4 * 3 * 7 * 10 * 6 = 10080 = 25 * 32 * 5 * 7`.
Существует 4
различных простых множителя, поэтому мы возвращаем 4.
nums = [2,4,8,16]
distinctPrimeFactors(nums)
# 1
# Пояснение:
Произведение всех элементов в `
nums
` равно: `2 * 4 * 8 * 16 = 1024 = 210`.
Существует 1 различный простой множитель, поэтому мы возвращаем 1.
#junior #задача #golang
Пишите свое решение в комментариях👇
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👎9👍5❤2🔥2
🌟 Выпущены версии Go 1.20.7 и 1.19.12!
🔐 Security: Includes a security fix for crypto/tls (CVE-2023-29409)
📣 Announcement: https://groups.google.com/g/golang-announce/c/X0b6CsSAaYI
📦 Download: https://go.dev/dl/#go1.20.7
@Golang_google
🔐 Security: Includes a security fix for crypto/tls (CVE-2023-29409)
📣 Announcement: https://groups.google.com/g/golang-announce/c/X0b6CsSAaYI
📦 Download: https://go.dev/dl/#go1.20.7
@Golang_google
👍17🔥4❤3
⚡ StateTrooper
StateTrooper - это пакет Go, в котором реализован конечный автомат (FSM) Он позволяет определять и реализовывать переходы между состояниями на основе заранее заданных правил.
▪ Github
@Golang_google
StateTrooper - это пакет Go, в котором реализован конечный автомат (FSM) Он позволяет определять и реализовывать переходы между состояниями на основе заранее заданных правил.
go get github.com/hishamk/statetrooper
▪ Github
@Golang_google
❤13🔥5👍1
Высокопроизводительная библиотека RCX (Remote Command Execution), применяющая паттерн проектирования Command к архитектуре клиент-сервер и поддерживающая функции reconnect и keepalive.
•Github
•Пример
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥2
🟡 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Хакните HL и заработайте 125.000 рублей
- Шбалон стратегия в Go
— Используем Hashicorp Vault для хранения секретов
— От C до Go. Как Golang объединил лучшие черты своих предшественников
— Отранжированные и смешные: создаем систему выстраивания пользовательской ленты
— В Go 1.21 существенно расширяется стандартная библиотека
— Как протестировать код на Go с базой данных?
— Golang — архитектурный линтер
— Сравниваем скорость и оверхеды библиотек Deep Copy для Go
— Добавляем Starlark в приложение на Go
— Как построить систему, способную выдерживать нагрузку в 5 млн rps
— Understanding the Singleton Pattern in Go
— Bringing Go Templates everywhere
— Minimum Cost for Tickets LeetCode
— Using Golang for your AWS Lambda Functions
— Unlocking AI Potential: Integrating OpenAI API into GoLang Microservices
— Designing Microservices RESTful API using Go with CRUD Operations: A Practical Guide
— Actors and Workflows: Building a Customer Loyalty Program with Temporal
— S1E3: Mastering Concurrency with Worker Pool in GoLang: A Scalable Solution for Efficient Task Processing
— Inspection, on the go
— Resolving type parameter ambiguities
Посмотреть:
🌐 Уроки Golang с нуля /#20 - Методы (⏱ 6:54)
Хорошего дня!
@Golang_google
Почитать:
— Хакните HL и заработайте 125.000 рублей
- Шбалон стратегия в Go
— Используем Hashicorp Vault для хранения секретов
— От C до Go. Как Golang объединил лучшие черты своих предшественников
— Отранжированные и смешные: создаем систему выстраивания пользовательской ленты
— В Go 1.21 существенно расширяется стандартная библиотека
— Как протестировать код на Go с базой данных?
— Golang — архитектурный линтер
— Сравниваем скорость и оверхеды библиотек Deep Copy для Go
— Добавляем Starlark в приложение на Go
— Как построить систему, способную выдерживать нагрузку в 5 млн rps
— Understanding the Singleton Pattern in Go
— Bringing Go Templates everywhere
— Minimum Cost for Tickets LeetCode
— Using Golang for your AWS Lambda Functions
— Unlocking AI Potential: Integrating OpenAI API into GoLang Microservices
— Designing Microservices RESTful API using Go with CRUD Operations: A Practical Guide
— Actors and Workflows: Building a Customer Loyalty Program with Temporal
— S1E3: Mastering Concurrency with Worker Pool in GoLang: A Scalable Solution for Efficient Task Processing
— Inspection, on the go
— Resolving type parameter ambiguities
Посмотреть:
🌐 Уроки Golang с нуля /#20 - Методы (⏱ 6:54)
Хорошего дня!
@Golang_google
🔥22❤4👍4
This media is not supported in your browser
VIEW IN TELEGRAM
gophernotes позволяет использовать Go в интерактивном режиме в браузере, ноутбуке или десктопном приложении.
Можно использовать инструмент для создания и обмена документами, которые содержат код Go, уравнения, визуализации и пояснительный текст.
go install github.com/gopherdata/[email protected]
mkdir -p ~/.local/share/jupyter/kernels/gophernotes
cd ~/.local/share/jupyter/kernels/gophernotes
cp "$(go env GOPATH)"/pkg/mod/github.com/gopherdata/[email protected]/kernel/* "."
chmod +w ./kernel.json # in case copied kernel.json has no write permission
sed "s|gophernotes|$(go env GOPATH)/bin/gophernotes|" < kernel.json.in > kernel.json
▪ Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥3❤1
🦫Создание оркестратора для событийно-ориентированного приложения с Golang и RabbitMQ
Определение требований
Номера в гостинице бронируются по мере доступности.
• Создадим конвейер передачи запроса на бронирование номера по различным сервисам: резервирования, проверки, зачисления средств, бронирования.
Сервисам не нужно ждать ответа друг от друга — они даже не «знают», откуда запрос: у каждого сервиса только одна задача, и он хорошо с ней справляется. Это называется снижением связанности. Не нужно задумываться о причине запроса и ждать ответа других сервисов — используем все преимущества архитектуры микросервисов.
Сначала создадим блок-схему: показано в картинке.
Как видите, всего четыре этапа:
1. Проверка: в некоторых сценариях гостиницами обслуживаются не все желающие, например кому-то закрыт доступ или определенный номер резервируется только для конкретной группы. Это сложные правила, отделим их от веб-API.
2. Резервирование: одновременное бронирование номера несколькими людьми предотвращается глобальной блокировкой, подобной Redis.
3. Списание: зарезервировав номер, списываем средства.
4. Бронирование: завершив процесс списания, удаляем резервирование и бронируем номер.
Но в любом сервисе случаются ошибки.
Оркестрация — отличное подспорье для создания стабильного потока запросов, обработки ошибок и соответственных действий.
Действия требуются при очевидных ошибках:
• Недостаточно средств: удаляем резервирование.
• Ошибка при бронировании: возвращаем средства и удаляем резервирование.
Настройка RabbitMQ
Не знакомы с RabbitMQ? Посмотрите руководство для начинающих, хотя основы мы разберем.
RabbitMQ, как и Apache Kafka, — это приложение с отправителями и получателями сообщений. В приложении-чате отправителями сообщение отправляется, получателями — получается.
Как сообщению попасть к моему другу, а не случайному человеку в другой группе? Это сложная часть.
📌 Читать
@Golang_google
Определение требований
Номера в гостинице бронируются по мере доступности.
• Создадим конвейер передачи запроса на бронирование номера по различным сервисам: резервирования, проверки, зачисления средств, бронирования.
Сервисам не нужно ждать ответа друг от друга — они даже не «знают», откуда запрос: у каждого сервиса только одна задача, и он хорошо с ней справляется. Это называется снижением связанности. Не нужно задумываться о причине запроса и ждать ответа других сервисов — используем все преимущества архитектуры микросервисов.
Сначала создадим блок-схему: показано в картинке.
Как видите, всего четыре этапа:
1. Проверка: в некоторых сценариях гостиницами обслуживаются не все желающие, например кому-то закрыт доступ или определенный номер резервируется только для конкретной группы. Это сложные правила, отделим их от веб-API.
2. Резервирование: одновременное бронирование номера несколькими людьми предотвращается глобальной блокировкой, подобной Redis.
3. Списание: зарезервировав номер, списываем средства.
4. Бронирование: завершив процесс списания, удаляем резервирование и бронируем номер.
Но в любом сервисе случаются ошибки.
Оркестрация — отличное подспорье для создания стабильного потока запросов, обработки ошибок и соответственных действий.
Действия требуются при очевидных ошибках:
• Недостаточно средств: удаляем резервирование.
• Ошибка при бронировании: возвращаем средства и удаляем резервирование.
Настройка RabbitMQ
Не знакомы с RabbitMQ? Посмотрите руководство для начинающих, хотя основы мы разберем.
RabbitMQ, как и Apache Kafka, — это приложение с отправителями и получателями сообщений. В приложении-чате отправителями сообщение отправляется, получателями — получается.
Как сообщению попасть к моему другу, а не случайному человеку в другой группе? Это сложная часть.
📌 Читать
@Golang_google
👍20❤4🔥3
🗺 Google maps scraper
Это Golang парсер, на основе фреймворка scrapemate который позволяет удобно парсить данные из Google Maps.
Он автоматизирует просмотр веб-страниц и позволяет извлекать: имя, адрес, номер телефона, URL-адрес веб-сайта, рейтинг и количество отзывов для каждого выбранного вами места.
Все данные сохраняются в файл CSV для удобства анализа и обработки.
Содержит код для быстрого запуска с использованием Docker.
▪Github
@Golang_google
Это Golang парсер, на основе фреймворка scrapemate который позволяет удобно парсить данные из Google Maps.
Он автоматизирует просмотр веб-страниц и позволяет извлекать: имя, адрес, номер телефона, URL-адрес веб-сайта, рейтинг и количество отзывов для каждого выбранного вами места.
Все данные сохраняются в файл CSV для удобства анализа и обработки.
Содержит код для быстрого запуска с использованием Docker.
▪Github
@Golang_google
👍10❤5🔥2
Goblin позволяет использовать команду curl для установки бинарников Go без самого Go.
Инструмент позволяет устанавливать бинарные файлы Go, указывая желаемую версию и другие параметры.
Это особенно полезно, если вы хотите быстро установить библиотеку без установки всего Go SDK.
curl -sf https://goblin.run/<package>[@version] | [...options] sh
Ставь 👍, если пользовался, только старым Go Binaries.
•Проект
•Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👎4❤1🔥1
🎨 Awesome Software Architecture
Полезный список статей и ресурсов для изучения и применения на практике архитектуры, паттернов и принципов программного обеспечения.
https://awesome-architecture.com/
@Golang_google
Полезный список статей и ресурсов для изучения и применения на практике архитектуры, паттернов и принципов программного обеспечения.
https://awesome-architecture.com/
@Golang_google
👍16🔥3❤2
🟡 Дайджест полезных материалов из мира Golang за неделю
Почитать:
— Expr: простой и мощный ЯП на Go
— Можем ли мы сохранить животных с помощью Golang?
— Из кладовщика в разработчики
— Понимание паттерна Options в Go
— Список популярных утечек с GitHub: Анализ репозиториев компаний
— How to build a URL Shortener with Go
— Channels in Go
— Golang Database Migration With Golang Migrate and Sqlc
— What are interfaces in Go?
— Introducing Goctopus: open-source, state-of-the-art GraphQL endpoint discovery & fingerprinting tool.
— Limitar Gorutinas Con Semáforos
— Pratique com APIs de verdade - ClimaTempo
— Non-blocking sequential processing in Go using infinite (unbounded) buffered channel
— Caching Git Repos: A Deep Dive into OpenSauced’s ‘Pizza Oven’ Service
— Testing with AWS SDK for Go V2 without interface mocks
❓Quiz
Посмотреть:
🌐 Уроки Golang с нуля /#21 - iota/ паттерн перечисления
🌐 Go 1.21 RELEASED!!!! | Prime News
🌐 Второй этап Golang собеса на 950к в месяц
Хорошего дня!
❤️ Лайк, если полезно
@Golang_google
Почитать:
— Expr: простой и мощный ЯП на Go
— Можем ли мы сохранить животных с помощью Golang?
— Из кладовщика в разработчики
— Понимание паттерна Options в Go
— Список популярных утечек с GitHub: Анализ репозиториев компаний
— How to build a URL Shortener with Go
— Channels in Go
— Golang Database Migration With Golang Migrate and Sqlc
— What are interfaces in Go?
— Introducing Goctopus: open-source, state-of-the-art GraphQL endpoint discovery & fingerprinting tool.
— Limitar Gorutinas Con Semáforos
— Pratique com APIs de verdade - ClimaTempo
— Non-blocking sequential processing in Go using infinite (unbounded) buffered channel
— Caching Git Repos: A Deep Dive into OpenSauced’s ‘Pizza Oven’ Service
— Testing with AWS SDK for Go V2 without interface mocks
❓Quiz
Посмотреть:
🌐 Уроки Golang с нуля /#21 - iota/ паттерн перечисления
🌐 Go 1.21 RELEASED!!!! | Prime News
🌐 Второй этап Golang собеса на 950к в месяц
Хорошего дня!
❤️ Лайк, если полезно
@Golang_google
❤17👍8🔥4🤩1
Pattern Matching библиотека для Go.
Pattern Matching - метод анализа и обработки структур данных, основанный на выполнении определённых инструкций в зависимости от совпадения исследуемого значения с тем или иным образцом, в качестве которого может использоваться константа, предикат, тип данных или иная поддерживаемая языком конструкция.
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🔥1
Shiori - это простой менеджер закладок, написанный на языке Go. Представляет собой простой клон Pocket. Его можно использовать как приложение командной строки или как веб-приложение.
Приложение распространяется в виде одного бинарного файла, что позволяет легко установить и использовать его.
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
gat — полноценная альтернатива cat, написанная на Go и с дополнительными функциями: подсветки синтаксиса на разных языках, поддержки разных тем и форматирования.
$ go install github.com/koki-develop/gat@latest
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥7❤3🤔1
✔ Redis Explained
Глубокое техническое погружение во все тонкости Redis.
В статье рассматриваются различные топологии Redis, персистентность данных и форкинг процессов.
Отличная иллюстрированная статья для глубокого понимания Redis.
▪Читать
@Golang_google
Глубокое техническое погружение во все тонкости Redis.
В статье рассматриваются различные топологии Redis, персистентность данных и форкинг процессов.
Отличная иллюстрированная статья для глубокого понимания Redis.
▪Читать
@Golang_google
👍18🔥9❤5
Новая ORM библиотека для Go, поддерживающая PostgreSQL, MySQL. Вскоре авторы обещают добавить SQLite.
go get github.com/evantbyrne/rem
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23👎14🔥3❤2