Telegram Group & Telegram Channel
Rill — это набор инструментов для языка Go, предназначенный для создания чистого, компонуемого и основанного на каналах параллелизма. Он упрощает разработку параллельных программ, позволяя строить их из простых и повторно используемых компонентов. Rill снижает объем шаблонного кода, сохраняя при этом естественную модель каналов Go.

Основные возможности Rill:

- Упрощение общих задач параллелизма: Предоставляет более чистый и безопасный способ решения распространенных проблем параллелизма, таких как параллельное выполнение задач или обработка событий в реальном времени. Устраняет необходимость в шаблонном коде и абстрагирует сложности управления горутинами, каналами и ошибками. При этом разработчики сохраняют полный контроль над уровнем параллелизма для всех операций.

- Компонентность и чистота кода: Большинство функций библиотеки принимают каналы Go в качестве входных данных и возвращают новые, преобразованные каналы в качестве выходных данных. Это позволяет объединять их различными способами для построения повторно используемых конвейеров из более простых частей, аналогично Unix-пайпам. В результате параллельные программы становятся последовательностями понятных и повторно используемых операций.

- Централизованная обработка ошибок: Ошибки автоматически распространяются через конвейер и могут быть обработаны в одном месте в конце. Для более сложных сценариев Rill также предоставляет инструменты для перехвата и обработки ошибок в любой точке конвейера.

- Упрощение обработки потоков: Благодаря каналам Go встроенные функции могут обрабатывать потенциально бесконечные потоки, обрабатывая элементы по мере их поступления. Это делает Rill удобным инструментом для обработки данных в реальном времени или работы с большими наборами данных, которые не помещаются в памяти.

- Решения для сложных задач: Библиотека включает готовые функции для пакетной обработки, упорядоченного объединения потоков, map-reduce, разделения потоков, слияния и многого другого. Конвейеры, хотя обычно линейные, могут иметь любую безцикловую топологию (DAG).

- Поддержка пользовательских расширений: Поскольку Rill работает на стандартных каналах Go, легко писать пользовательские функции, совместимые с библиотекой.

- Легковесность: Rill имеет небольшой, типобезопасный API, основанный на каналах, и не имеет зависимостей, что делает его простым для интеграции в существующие проекты. Он также экономно использует ресурсы, гарантируя, что количество выделений памяти и горутин не растет с увеличением размера входных данных.

Быстрый старт:

Рассмотрим практический пример: получение пользователей из API, их активация и сохранение изменений. Он демонстрирует, как контролировать параллелизм на каждом этапе, сохраняя код чистым и управляемым. Функция ForEach завершает выполнение при первой ошибке, а отмена контекста через defer останавливает все оставшиеся операции получения.


func main() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

// Преобразуем срез идентификаторов пользователей в канал
ids := rill.FromSlice([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, nil)

// Получаем пользователей из API.
// Параллелизм = 3
users := rill.Map(ids, 3, func(id int) (*mockapi.User, error) {
return mockapi.GetUser(ctx, id)
})

// Активируем пользователей.
// Параллелизм = 2
err := rill.ForEach(users, 2, func(u *mockapi.User) error {
if u.IsActive {
fmt.Printf("Пользователь %d уже активен\n", u.ID)
return nil
}

u.IsActive = true
err := mockapi.SaveUser(ctx, u)
if err != nil {
return err
}

fmt.Printf("Пользователь сохранен: %+v\n", u)
return nil
})

// Обработка ошибок
fmt.Println("Ошибка:", err)
}


Этот пример демонстрирует, как Rill упрощает построение параллельных конвейеров обработки данных, делая код более читаемым и поддерживаемым.

https://github.com/destel/rill

👉 @golang_lib



tg-me.com/golang_lib/429
Create:
Last Update:

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

Основные возможности Rill:

- Упрощение общих задач параллелизма: Предоставляет более чистый и безопасный способ решения распространенных проблем параллелизма, таких как параллельное выполнение задач или обработка событий в реальном времени. Устраняет необходимость в шаблонном коде и абстрагирует сложности управления горутинами, каналами и ошибками. При этом разработчики сохраняют полный контроль над уровнем параллелизма для всех операций.

- Компонентность и чистота кода: Большинство функций библиотеки принимают каналы Go в качестве входных данных и возвращают новые, преобразованные каналы в качестве выходных данных. Это позволяет объединять их различными способами для построения повторно используемых конвейеров из более простых частей, аналогично Unix-пайпам. В результате параллельные программы становятся последовательностями понятных и повторно используемых операций.

- Централизованная обработка ошибок: Ошибки автоматически распространяются через конвейер и могут быть обработаны в одном месте в конце. Для более сложных сценариев Rill также предоставляет инструменты для перехвата и обработки ошибок в любой точке конвейера.

- Упрощение обработки потоков: Благодаря каналам Go встроенные функции могут обрабатывать потенциально бесконечные потоки, обрабатывая элементы по мере их поступления. Это делает Rill удобным инструментом для обработки данных в реальном времени или работы с большими наборами данных, которые не помещаются в памяти.

- Решения для сложных задач: Библиотека включает готовые функции для пакетной обработки, упорядоченного объединения потоков, map-reduce, разделения потоков, слияния и многого другого. Конвейеры, хотя обычно линейные, могут иметь любую безцикловую топологию (DAG).

- Поддержка пользовательских расширений: Поскольку Rill работает на стандартных каналах Go, легко писать пользовательские функции, совместимые с библиотекой.

- Легковесность: Rill имеет небольшой, типобезопасный API, основанный на каналах, и не имеет зависимостей, что делает его простым для интеграции в существующие проекты. Он также экономно использует ресурсы, гарантируя, что количество выделений памяти и горутин не растет с увеличением размера входных данных.

Быстрый старт:

Рассмотрим практический пример: получение пользователей из API, их активация и сохранение изменений. Он демонстрирует, как контролировать параллелизм на каждом этапе, сохраняя код чистым и управляемым. Функция ForEach завершает выполнение при первой ошибке, а отмена контекста через defer останавливает все оставшиеся операции получения.


func main() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()

// Преобразуем срез идентификаторов пользователей в канал
ids := rill.FromSlice([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, nil)

// Получаем пользователей из API.
// Параллелизм = 3
users := rill.Map(ids, 3, func(id int) (*mockapi.User, error) {
return mockapi.GetUser(ctx, id)
})

// Активируем пользователей.
// Параллелизм = 2
err := rill.ForEach(users, 2, func(u *mockapi.User) error {
if u.IsActive {
fmt.Printf("Пользователь %d уже активен\n", u.ID)
return nil
}

u.IsActive = true
err := mockapi.SaveUser(ctx, u)
if err != nil {
return err
}

fmt.Printf("Пользователь сохранен: %+v\n", u)
return nil
})

// Обработка ошибок
fmt.Println("Ошибка:", err)
}


Этот пример демонстрирует, как Rill упрощает построение параллельных конвейеров обработки данных, делая код более читаемым и поддерживаемым.

https://github.com/destel/rill

👉 @golang_lib

BY Библиотека Go (Golang) разработчика


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/golang_lib/429

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

What is Telegram?

Telegram’s stand out feature is its encryption scheme that keeps messages and media secure in transit. The scheme is known as MTProto and is based on 256-bit AES encryption, RSA encryption, and Diffie-Hellman key exchange. The result of this complicated and technical-sounding jargon? A messaging service that claims to keep your data safe.Why do we say claims? When dealing with security, you always want to leave room for scrutiny, and a few cryptography experts have criticized the system. Overall, any level of encryption is better than none, but a level of discretion should always be observed with any online connected system, even Telegram.

How to Buy Bitcoin?

Most people buy Bitcoin via exchanges, such as Coinbase. Exchanges allow you to buy, sell and hold cryptocurrency, and setting up an account is similar to opening a brokerage account—you’ll need to verify your identity and provide some kind of funding source, such as a bank account or debit card. Major exchanges include Coinbase, Kraken, and Gemini. You can also buy Bitcoin at a broker like Robinhood. Regardless of where you buy your Bitcoin, you’ll need a digital wallet in which to store it. This might be what’s called a hot wallet or a cold wallet. A hot wallet (also called an online wallet) is stored by an exchange or a provider in the cloud. Providers of online wallets include Exodus, Electrum and Mycelium. A cold wallet (or mobile wallet) is an offline device used to store Bitcoin and is not connected to the Internet. Some mobile wallet options include Trezor and Ledger.

telegram from ua


Telegram Библиотека Go (Golang) разработчика
FROM USA