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: |

Why Telegram?

Telegram has no known backdoors and, even though it is come in for criticism for using proprietary encryption methods instead of open-source ones, those have yet to be compromised. While no messaging app can guarantee a 100% impermeable defense against determined attackers, Telegram is vulnerabilities are few and either theoretical or based on spoof files fooling users into actively enabling an attack.

Telegram and Signal Havens for Right-Wing Extremists

Since the violent storming of Capitol Hill and subsequent ban of former U.S. President Donald Trump from Facebook and Twitter, the removal of Parler from Amazon’s servers, and the de-platforming of incendiary right-wing content, messaging services Telegram and Signal have seen a deluge of new users. In January alone, Telegram reported 90 million new accounts. Its founder, Pavel Durov, described this as “the largest digital migration in human history.” Signal reportedly doubled its user base to 40 million people and became the most downloaded app in 70 countries. The two services rely on encryption to protect the privacy of user communication, which has made them popular with protesters seeking to conceal their identities against repressive governments in places like Belarus, Hong Kong, and Iran. But the same encryption technology has also made them a favored communication tool for criminals and terrorist groups, including al Qaeda and the Islamic State.

telegram from ms


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