From e6a15fef451b77d598255c9d20505cc0ab69ca6f Mon Sep 17 00:00:00 2001 From: matyo91 Date: Fri, 23 Aug 2024 23:08:16 +0000 Subject: [PATCH] deploy: 8681fccd5a8937f04a1872fd9e59b5ab7ffff766 --- 404.html | 10 +++++----- CNAME | 1 - blog/index.html | 10 +++++----- blog/index.xml | 2 +- blog/page/1/index.html | 2 +- blog/say-hello-to-doks/index.html | 10 +++++----- blog/sitemap.xml | 2 +- contributors/henk-verlinde/index.html | 10 +++++----- contributors/henk-verlinde/index.xml | 2 +- contributors/index.html | 10 +++++----- contributors/index.xml | 2 +- contributors/matyo91/index.html | 10 +++++----- contributors/matyo91/index.xml | 2 +- docs/getting-started/async-handler/index.html | 14 +++++++------- docs/getting-started/changelog/index.html | 14 +++++++------- docs/getting-started/driver/index.html | 16 ++++++++-------- docs/getting-started/flow/index.html | 14 +++++++------- docs/getting-started/index.html | 12 ++++++------ docs/getting-started/index.xml | 14 +++++++------- docs/getting-started/introduction/index.html | 16 ++++++++-------- docs/getting-started/ip-strategy/index.html | 14 +++++++------- docs/getting-started/license/index.html | 16 ++++++++-------- docs/getting-started/ressources/index.html | 16 ++++++++-------- docs/getting-started/sitemap.xml | 2 +- docs/index.html | 12 ++++++------ docs/index.xml | 2 +- docs/sitemap.xml | 2 +- index.html | 10 +++++----- ...1a82651b9164e91aa00ab1ccf571b4b64846fd3e02.js | 1 - ...53f3982f54450c4e8a6215e7cf2b29f1f10d7291e3.js | 1 + index.xml | 2 +- robots.txt | 2 +- sitemap.xml | 2 +- 33 files changed, 127 insertions(+), 128 deletions(-) delete mode 100644 CNAME delete mode 100644 index.min.7a6230a6d65da58de52e2fa71995835d2171ee7bf1f28fee90342ad87448d9fc1dc42493fbc0c78668ff4f1a82651b9164e91aa00ab1ccf571b4b64846fd3e02.js create mode 100644 index.min.f313877f7c5a55ed2cdc5f113ecbc6da13cd750ee4f68898bbcacd7c6da94ae20c8c0de43cc0927a5ed96553f3982f54450c4e8a6215e7cf2b29f1f10d7291e3.js diff --git a/404.html b/404.html index 5d7fb70..3acc167 100644 --- a/404.html +++ b/404.html @@ -1,6 +1,6 @@ -404 Page not found - Flow

Page not found :(

The page you are looking for doesn't exist or has been moved.

- - +404 Page not found - Flow

Page not found :(

The page you are looking for doesn't exist or has been moved.

+ + \ No newline at end of file diff --git a/CNAME b/CNAME deleted file mode 100644 index d13582c..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -flow.darkwood.com \ No newline at end of file diff --git a/blog/index.html b/blog/index.html index c9246de..5b2a2d5 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1,6 +1,6 @@ -Blog - Flow

Blog

Say hello to Doks 👋

Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default.

Posted November 4, 2020 by Henk Verlinde ‐ 0 min read

- - +Blog - Flow

Blog

Say hello to Doks 👋

Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default.

Posted November 4, 2020 by Henk Verlinde ‐ 0 min read

+ + \ No newline at end of file diff --git a/blog/index.xml b/blog/index.xml index 3ea0b84..a7b7851 100644 --- a/blog/index.xml +++ b/blog/index.xml @@ -1 +1 @@ -Blog onhttps://darkwood-com.github.io/flow/blog/Recent content in Blog onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:49:55 +0000Say hello to Doks 👋https://darkwood-com.github.io/flow/blog/say-hello-to-doks/Wed, 04 Nov 2020 09:19:42 +0100https://darkwood-com.github.io/flow/blog/say-hello-to-doks/ \ No newline at end of file +Blog onhttps://flow.darkwood.fr/blog/Recent content in Blog onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:49:55 +0000Say hello to Doks 👋https://flow.darkwood.fr/blog/say-hello-to-doks/Wed, 04 Nov 2020 09:19:42 +0100https://flow.darkwood.fr/blog/say-hello-to-doks/ \ No newline at end of file diff --git a/blog/page/1/index.html b/blog/page/1/index.html index 5c328ec..a57d60a 100644 --- a/blog/page/1/index.html +++ b/blog/page/1/index.html @@ -1 +1 @@ -https://darkwood-com.github.io/flow/blog/ \ No newline at end of file +https://flow.darkwood.fr/blog/ \ No newline at end of file diff --git a/blog/say-hello-to-doks/index.html b/blog/say-hello-to-doks/index.html index aca584b..264c96c 100644 --- a/blog/say-hello-to-doks/index.html +++ b/blog/say-hello-to-doks/index.html @@ -1,6 +1,6 @@ -Say hello to Doks 👋 - Flow

Say hello to Doks 👋

Posted November 4, 2020 by Henk Verlinde ‐ 0 min read

Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default.

- - +Say hello to Doks 👋 - Flow

Say hello to Doks 👋

Posted November 4, 2020 by Henk Verlinde ‐ 0 min read

Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default.

+ + \ No newline at end of file diff --git a/blog/sitemap.xml b/blog/sitemap.xml index 1b26533..9f56b31 100644 --- a/blog/sitemap.xml +++ b/blog/sitemap.xml @@ -1 +1 @@ -https://darkwood-com.github.io/flow/blog/say-hello-to-doks/2020-11-04T09:19:42+01:00weekly0.5 \ No newline at end of file +https://flow.darkwood.fr/blog/say-hello-to-doks/2020-11-04T09:19:42+01:00weekly0.5 \ No newline at end of file diff --git a/contributors/henk-verlinde/index.html b/contributors/henk-verlinde/index.html index 80a30cc..574542c 100644 --- a/contributors/henk-verlinde/index.html +++ b/contributors/henk-verlinde/index.html @@ -1,6 +1,6 @@ -Henk Verlinde - Flow

Henk Verlinde

Say hello to Doks 👋

Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default.

Posted November 4, 2020 by Henk Verlinde ‐ 0 min read

- - +Henk Verlinde - Flow

Henk Verlinde

Say hello to Doks 👋

Introducing Doks, a Hugo theme helping you build modern documentation websites that are secure, fast, and SEO-ready — by default.

Posted November 4, 2020 by Henk Verlinde ‐ 0 min read

+ + \ No newline at end of file diff --git a/contributors/henk-verlinde/index.xml b/contributors/henk-verlinde/index.xml index 23ab891..8a3e585 100644 --- a/contributors/henk-verlinde/index.xml +++ b/contributors/henk-verlinde/index.xml @@ -1 +1 @@ -Henk Verlinde onhttps://darkwood-com.github.io/flow/contributors/henk-verlinde/Recent content in Henk Verlinde onHugo -- gohugo.ioen-USWed, 04 Nov 2020 09:19:42 +0100Say hello to Doks 👋https://darkwood-com.github.io/flow/blog/say-hello-to-doks/Wed, 04 Nov 2020 09:19:42 +0100https://darkwood-com.github.io/flow/blog/say-hello-to-doks/ \ No newline at end of file +Henk Verlinde onhttps://flow.darkwood.fr/contributors/henk-verlinde/Recent content in Henk Verlinde onHugo -- gohugo.ioen-USWed, 04 Nov 2020 09:19:42 +0100Say hello to Doks 👋https://flow.darkwood.fr/blog/say-hello-to-doks/Wed, 04 Nov 2020 09:19:42 +0100https://flow.darkwood.fr/blog/say-hello-to-doks/ \ No newline at end of file diff --git a/contributors/index.html b/contributors/index.html index 4374fd2..b5757fd 100644 --- a/contributors/index.html +++ b/contributors/index.html @@ -1,6 +1,6 @@ -Contributors - Flow
- - +Contributors - Flow
+ + \ No newline at end of file diff --git a/contributors/index.xml b/contributors/index.xml index f6a4836..34bcd7b 100644 --- a/contributors/index.xml +++ b/contributors/index.xml @@ -1,2 +1,2 @@ -Contributors onhttps://darkwood-com.github.io/flow/contributors/Recent content in Contributors onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:50:29 +0000Henk Verlindehttps://darkwood-com.github.io/flow/contributors/henk-verlinde/Wed, 04 Nov 2020 09:19:42 +0100https://darkwood-com.github.io/flow/contributors/henk-verlinde/Mathieu Ledruhttps://darkwood-com.github.io/flow/contributors/matyo91/Tue, 06 Oct 2020 08:50:45 +0000https://darkwood-com.github.io/flow/contributors/matyo91/Creator of Darkwood. +Contributors onhttps://flow.darkwood.fr/contributors/Recent content in Contributors onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:50:29 +0000Henk Verlindehttps://flow.darkwood.fr/contributors/henk-verlinde/Wed, 04 Nov 2020 09:19:42 +0100https://flow.darkwood.fr/contributors/henk-verlinde/Mathieu Ledruhttps://flow.darkwood.fr/contributors/matyo91/Tue, 06 Oct 2020 08:50:45 +0000https://flow.darkwood.fr/contributors/matyo91/Creator of Darkwood. @matyo91 \ No newline at end of file diff --git a/contributors/matyo91/index.html b/contributors/matyo91/index.html index 57f9e19..179ccf0 100644 --- a/contributors/matyo91/index.html +++ b/contributors/matyo91/index.html @@ -1,6 +1,6 @@ -Mathieu Ledru - Flow

Mathieu Ledru

Creator of Darkwood.

@matyo91

- - +Mathieu Ledru - Flow

Mathieu Ledru

Creator of Darkwood.

@matyo91

+ + \ No newline at end of file diff --git a/contributors/matyo91/index.xml b/contributors/matyo91/index.xml index 0d88e15..00ac3c2 100644 --- a/contributors/matyo91/index.xml +++ b/contributors/matyo91/index.xml @@ -1 +1 @@ -Mathieu Ledru onhttps://darkwood-com.github.io/flow/contributors/matyo91/Recent content in Mathieu Ledru onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:50:45 +0000 \ No newline at end of file +Mathieu Ledru onhttps://flow.darkwood.fr/contributors/matyo91/Recent content in Mathieu Ledru onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:50:45 +0000 \ No newline at end of file diff --git a/docs/getting-started/async-handler/index.html b/docs/getting-started/async-handler/index.html index 0ba7da2..a17b70a 100644 --- a/docs/getting-started/async-handler/index.html +++ b/docs/getting-started/async-handler/index.html @@ -1,9 +1,9 @@ -Async Handler - Flow

Async Handler

When processing Flow at async step, you can choose a handler that will process asynchronously the Ip.

AsyncHandler

This is the default one. Ip is async processed immediately.

BatchAsyncHandler

This async process Ip as batch capability : the handler will wait for a certain amount of async messages ($batchSize) to be processed before pushing them.

DeferAsyncHandler

This async process Ip to offer defer capability : the handler will pass [$data, $defer] as entry for the job. In that case, the job can fine control the async process. $defer is a callable that embark two callbacks

  • an complete callback to store result
  • an async callback to go to the next async call.

Make your Async Handler

You can make your custom Ip strategy by implementing Flow\AsyncHandlerInterface

Edit this page on GitHub

- - - +Getting Started

Async Handler

When processing Flow at async step, you can choose a handler that will process asynchronously the Ip.

AsyncHandler

This is the default one. Ip is async processed immediately.

BatchAsyncHandler

This async process Ip as batch capability : the handler will wait for a certain amount of async messages ($batchSize) to be processed before pushing them.

DeferAsyncHandler

This async process Ip to offer defer capability : the handler will pass [$data, $defer] as entry for the job. In that case, the job can fine control the async process. $defer is a callable that embark two callbacks

  • an complete callback to store result
  • an async callback to go to the next async call.

Make your Async Handler

You can make your custom Ip strategy by implementing Flow\AsyncHandlerInterface

Edit this page on GitHub

+ + + \ No newline at end of file diff --git a/docs/getting-started/changelog/index.html b/docs/getting-started/changelog/index.html index df1ebb3..04880d4 100644 --- a/docs/getting-started/changelog/index.html +++ b/docs/getting-started/changelog/index.html @@ -1,9 +1,9 @@ -Changelog - Flow - - - +Getting Started + + + \ No newline at end of file diff --git a/docs/getting-started/driver/index.html b/docs/getting-started/driver/index.html index daad887..bbcd481 100644 --- a/docs/getting-started/driver/index.html +++ b/docs/getting-started/driver/index.html @@ -1,15 +1,15 @@ -Driver - Flow

Driver

Flow embark multiple drivers.

Coroutine

Drivers are useful to essentially provide asynchronous programming by using coroutines. Thus, this can be implemented in severals ways in most popular programming languages.

Coroutine are very similar to threads and provide concurrency but not parallelism. Advantage of using coroutine :

  • this can be a preferred usage to thread for hard-realtime context.
  • there is no need for synchronisation primitives such as mutexes, semaphore.
  • it reduces the usage of system lock for sharing resources.

Amp Driver

To use Amp Driver, you have to require the library with composer

composer require amphp/amp
 

More documentation can be found https://amphp.org

Fiber Driver

More documentation can be found https://www.php.net/manual/fr/language.fibers.php

ReactPHP Driver

To use ReactPHP Driver, you have to require the library with composer

composer require react/async
 

More documentation can be found https://reactphp.org

Spatie Driver

To use Spatie Driver, you have to require the library with composer

composer require spatie/async
 

More documentation can be found https://github.com/spatie/async

Swoole Driver

To use Swoole Driver, you have to add the extension with your current running PHP

pecl install openswoole-22.0.0
-

More documentation can be found https://openswoole.com

Make your custom driver

You can make your custom driver by implementing Flow\DriverInterface

Edit this page on GitHub

- - - +

More documentation can be found https://openswoole.com

Make your custom driver

You can make your custom driver by implementing Flow\DriverInterface

Edit this page on GitHub

+ + + \ No newline at end of file diff --git a/docs/getting-started/flow/index.html b/docs/getting-started/flow/index.html index f5da7c9..a594343 100644 --- a/docs/getting-started/flow/index.html +++ b/docs/getting-started/flow/index.html @@ -1,9 +1,9 @@ -Flow - Flow

Flow

Flow implementation

According to Wikipedia, Monads is an abstract generic structure that get its usage in function composition. Monads can shortly considered as Programming with effects.

We consider Flows as a set of elements in our ensemble as a Monad implementation :

  • By using job as basic function type within the Flow.
  • By using fn as a binary operation, Flow can be composed together with others Flow element.

A Flow can process one or many Ips which has its application for asynchronous programming when mixing with Drivers.

Flow

This is the standard Flow implementation that support asynchronous Ip processing.

FlowDecorator

This is useful for implementing the decorator design pattern.

TransportFlow

TransportFlow will interact with Flow with Producer and Sender.

YFlow

YFlow use YCombinator to provide recursion.

Make your own Flow

You can make your custom Flow by implementing Flow\FlowInterface.

Edit this page on GitHub

- - - +Getting Started

Flow

Flow implementation

According to Wikipedia, Monads is an abstract generic structure that get its usage in function composition. Monads can shortly considered as Programming with effects.

We consider Flows as a set of elements in our ensemble as a Monad implementation :

  • By using job as basic function type within the Flow.
  • By using fn as a binary operation, Flow can be composed together with others Flow element.

A Flow can process one or many Ips which has its application for asynchronous programming when mixing with Drivers.

Flow

This is the standard Flow implementation that support asynchronous Ip processing.

FlowDecorator

This is useful for implementing the decorator design pattern.

TransportFlow

TransportFlow will interact with Flow with Producer and Sender.

YFlow

YFlow use YCombinator to provide recursion.

Make your own Flow

You can make your custom Flow by implementing Flow\FlowInterface.

Edit this page on GitHub

+ + + \ No newline at end of file diff --git a/docs/getting-started/index.html b/docs/getting-started/index.html index 06c6dff..88f7ec0 100644 --- a/docs/getting-started/index.html +++ b/docs/getting-started/index.html @@ -1,8 +1,8 @@ -Getting Started - Flow - - - +Getting Started + + + \ No newline at end of file diff --git a/docs/getting-started/index.xml b/docs/getting-started/index.xml index cfbf05f..270bfd0 100644 --- a/docs/getting-started/index.xml +++ b/docs/getting-started/index.xml @@ -1,18 +1,18 @@ -Getting Started onhttps://darkwood-com.github.io/flow/docs/getting-started/Recent content in Getting Started onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:49:15 +0000Introductionhttps://darkwood-com.github.io/flow/docs/getting-started/introduction/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/introduction/Flow Why ? Flow concept aims to solve +Getting Started onhttps://flow.darkwood.fr/docs/getting-started/Recent content in Getting Started onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:49:15 +0000Introductionhttps://flow.darkwood.fr/docs/getting-started/introduction/Tue, 13 Oct 2020 15:21:01 +0200https://flow.darkwood.fr/docs/getting-started/introduction/Flow Why ? Flow concept aims to solve Adopt asynchronous as native implementation Build your code with functional programming and monoids Assemble your code visually Installation PHP 8.3 is the minimal version to use Flow The recommended way to install it through Composer and execute composer require darkwood/flow Usage A working script is available in the bundled examples directory -Run Flow : php examples/flow.php Start Server : php examples/server.Flowhttps://darkwood-com.github.io/flow/docs/getting-started/flow/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/flow/Flow Flow implementation According to Wikipedia, Monads is an abstract generic structure that get its usage in function composition. Monads can shortly considered as Programming with effects. +Run Flow : php examples/flow.php Start Server : php examples/server.Flowhttps://flow.darkwood.fr/docs/getting-started/flow/Tue, 13 Oct 2020 15:21:01 +0200https://flow.darkwood.fr/docs/getting-started/flow/Flow Flow implementation According to Wikipedia, Monads is an abstract generic structure that get its usage in function composition. Monads can shortly considered as Programming with effects. We consider Flows as a set of elements in our ensemble as a Monad implementation : -By using job as basic function type within the Flow. By using fn as a binary operation, Flow can be composed together with others Flow element. A Flow can process one or many Ips which has its application for asynchronous programming when mixing with Drivers.Driverhttps://darkwood-com.github.io/flow/docs/getting-started/driver/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/driver/Driver Flow embark multiple drivers. +By using job as basic function type within the Flow. By using fn as a binary operation, Flow can be composed together with others Flow element. A Flow can process one or many Ips which has its application for asynchronous programming when mixing with Drivers.Driverhttps://flow.darkwood.fr/docs/getting-started/driver/Tue, 13 Oct 2020 15:21:01 +0200https://flow.darkwood.fr/docs/getting-started/driver/Driver Flow embark multiple drivers. Coroutine Drivers are useful to essentially provide asynchronous programming by using coroutines. Thus, this can be implemented in severals ways in most popular programming languages. Coroutine are very similar to threads and provide concurrency but not parallelism. Advantage of using coroutine : -this can be a preferred usage to thread for hard-realtime context. there is no need for synchronisation primitives such as mutexes, semaphore. it reduces the usage of system lock for sharing resources.Async Handlerhttps://darkwood-com.github.io/flow/docs/getting-started/async-handler/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/async-handler/Async Handler When processing Flow at async step, you can choose a handler that will process asynchronously the Ip. +this can be a preferred usage to thread for hard-realtime context. there is no need for synchronisation primitives such as mutexes, semaphore. it reduces the usage of system lock for sharing resources.Async Handlerhttps://flow.darkwood.fr/docs/getting-started/async-handler/Tue, 13 Oct 2020 15:21:01 +0200https://flow.darkwood.fr/docs/getting-started/async-handler/Async Handler When processing Flow at async step, you can choose a handler that will process asynchronously the Ip. AsyncHandler This is the default one. Ip is async processed immediately. BatchAsyncHandler This async process Ip as batch capability : the handler will wait for a certain amount of async messages ($batchSize) to be processed before pushing them. -DeferAsyncHandler This async process Ip to offer defer capability : the handler will pass [$data, $defer] as entry for the job.Ip Strategyhttps://darkwood-com.github.io/flow/docs/getting-started/ip-strategy/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/ip-strategy/Ip Strategy When processing Flow with one or multiple Ips, you can choose a strategy that will sequence the order of processing Ip. +DeferAsyncHandler This async process Ip to offer defer capability : the handler will pass [$data, $defer] as entry for the job.Ip Strategyhttps://flow.darkwood.fr/docs/getting-started/ip-strategy/Tue, 13 Oct 2020 15:21:01 +0200https://flow.darkwood.fr/docs/getting-started/ip-strategy/Ip Strategy When processing Flow with one or multiple Ips, you can choose a strategy that will sequence the order of processing Ip. LinearIpStrategy This process Ip by order : first in, first out. StackIpStrategy This process Ip as a stack order : push ip to the top of the stack, then order ip retrieval from the top stack to bottom. -MaxIpStrategy This process Ip as soon less Ip are currently process than the current max.Ressourceshttps://darkwood-com.github.io/flow/docs/getting-started/ressources/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/ressources/More information about the code Article of this project : https://blog.darkwood.fr/article/php-railway-flow-based-programming Slides of this project : https://speakerdeck.com/matyo91/php-railway-flow-based-programming Video of this project : https://www.youtube.com/watch?v=mxxdhGsaIjY -Railway Flow Based Programming with Elixir from Anton Mishchuk Presentation in an article : https://anton-mishchuk.medium.com/railway-flow-based-programming-with-flowex-ef04fd338e41 Presentation with video : https://www.youtube.com/watch?v=TLvbP8bt2HA Advanced implementation with multiple programming languages : https://medium.com/@anton.mishchuk/multi-language-flowex-components-fdda11d34744 Presentation in an article : https://fr.slideshare.net/AntonMishchuk/multilanguage-fbp-with-flowex Implementation in Elixir : https://github.com/antonmi/flowex Implementation in Elixir with multiple programming languages : https://github.Changeloghttps://darkwood-com.github.io/flow/docs/getting-started/changelog/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/changelog/Changelog Changelog can be found https://github.com/darkwood-com/flow/blob/1.x/CHANGELOG.mdLicensehttps://darkwood-com.github.io/flow/docs/getting-started/license/Tue, 13 Oct 2020 15:21:01 +0200https://darkwood-com.github.io/flow/docs/getting-started/license/The MIT License (MIT) +MaxIpStrategy This process Ip as soon less Ip are currently process than the current max.Ressourceshttps://flow.darkwood.fr/docs/getting-started/ressources/Tue, 13 Oct 2020 15:21:01 +0200https://flow.darkwood.fr/docs/getting-started/ressources/More information about the code Article of this project : https://blog.darkwood.fr/article/php-railway-flow-based-programming Slides of this project : https://speakerdeck.com/matyo91/php-railway-flow-based-programming Video of this project : https://www.youtube.com/watch?v=mxxdhGsaIjY +Railway Flow Based Programming with Elixir from Anton Mishchuk Presentation in an article : https://anton-mishchuk.medium.com/railway-flow-based-programming-with-flowex-ef04fd338e41 Presentation with video : https://www.youtube.com/watch?v=TLvbP8bt2HA Advanced implementation with multiple programming languages : https://medium.com/@anton.mishchuk/multi-language-flowex-components-fdda11d34744 Presentation in an article : https://fr.slideshare.net/AntonMishchuk/multilanguage-fbp-with-flowex Implementation in Elixir : https://github.com/antonmi/flowex Implementation in Elixir with multiple programming languages : https://github.Changeloghttps://flow.darkwood.fr/docs/getting-started/changelog/Tue, 13 Oct 2020 15:21:01 +0200https://flow.darkwood.fr/docs/getting-started/changelog/Changelog Changelog can be found https://github.com/darkwood-com/flow/blob/1.x/CHANGELOG.mdLicensehttps://flow.darkwood.fr/docs/getting-started/license/Tue, 13 Oct 2020 15:21:01 +0200https://flow.darkwood.fr/docs/getting-started/license/The MIT License (MIT) Copyright (c) 2023 Darkwood Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: \ No newline at end of file diff --git a/docs/getting-started/introduction/index.html b/docs/getting-started/introduction/index.html index f973ccd..a02fdcc 100644 --- a/docs/getting-started/introduction/index.html +++ b/docs/getting-started/introduction/index.html @@ -1,11 +1,11 @@ -Introduction - Flow

Flow

Why ?

Flow concept aims to solve

  • Adopt asynchronous as native implementation
  • Build your code with functional programming and monoids
  • Assemble your code visually

Installation

PHP 8.3 is the minimal version to use Flow +Getting Started

Flow

Why ?

Flow concept aims to solve

  • Adopt asynchronous as native implementation
  • Build your code with functional programming and monoids
  • Assemble your code visually

Installation

PHP 8.3 is the minimal version to use Flow The recommended way to install it through Composer and execute

composer require darkwood/flow
-

Usage

A working script is available in the bundled examples directory

  • Run Flow : php examples/flow.php
  • Start Server : php examples/server.php
  • Start Client(s) : php examples/client.php

Messaging part require to install Docker and execute docker-compose up -d

Documentation

https://darkwood-com.github.io/flow

License

Flow is released under the MIT License.

Edit this page on GitHub

- - - +

Usage

A working script is available in the bundled examples directory

  • Run Flow : php examples/flow.php
  • Start Server : php examples/server.php
  • Start Client(s) : php examples/client.php

Messaging part require to install Docker and execute docker-compose up -d

Documentation

https://darkwood-com.github.io/flow

License

Flow is released under the MIT License.

Edit this page on GitHub

+ + + \ No newline at end of file diff --git a/docs/getting-started/ip-strategy/index.html b/docs/getting-started/ip-strategy/index.html index fb15a9d..ef46441 100644 --- a/docs/getting-started/ip-strategy/index.html +++ b/docs/getting-started/ip-strategy/index.html @@ -1,9 +1,9 @@ -Ip Strategy - Flow

Ip Strategy

When processing Flow with one or multiple Ips, you can choose a strategy that will sequence the order of processing Ip.

LinearIpStrategy

This process Ip by order : first in, first out.

StackIpStrategy

This process Ip as a stack order : push ip to the top of the stack, then order ip retrieval from the top stack to bottom.

MaxIpStrategy

This process Ip as soon less Ip are currently process than the current max.
You can embed it by a custom strategy with is LinearIpStrategy by default.

Make your Ip Strategy

You can make your custom Ip strategy by implementing Flow\IpStrategyInterface

Edit this page on GitHub

- - - +Getting Started

Ip Strategy

When processing Flow with one or multiple Ips, you can choose a strategy that will sequence the order of processing Ip.

LinearIpStrategy

This process Ip by order : first in, first out.

StackIpStrategy

This process Ip as a stack order : push ip to the top of the stack, then order ip retrieval from the top stack to bottom.

MaxIpStrategy

This process Ip as soon less Ip are currently process than the current max.
You can embed it by a custom strategy with is LinearIpStrategy by default.

Make your Ip Strategy

You can make your custom Ip strategy by implementing Flow\IpStrategyInterface

Edit this page on GitHub

+ + + \ No newline at end of file diff --git a/docs/getting-started/license/index.html b/docs/getting-started/license/index.html index 88e65a4..d24efdb 100644 --- a/docs/getting-started/license/index.html +++ b/docs/getting-started/license/index.html @@ -1,8 +1,8 @@ -License - Flow

The MIT License (MIT)

Copyright (c) 2023 Darkwood

Permission is hereby granted, free of charge, to any person obtaining a copy of +Getting Started

The MIT License (MIT)

Copyright (c) 2023 Darkwood

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of @@ -13,8 +13,8 @@ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Edit this page on GitHub

- - - +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Edit this page on GitHub

+ + + \ No newline at end of file diff --git a/docs/getting-started/ressources/index.html b/docs/getting-started/ressources/index.html index cc94403..d44def1 100644 --- a/docs/getting-started/ressources/index.html +++ b/docs/getting-started/ressources/index.html @@ -1,15 +1,15 @@ -Ressources - Flow

More information about the code

Article of this project : https://blog.darkwood.fr/article/php-railway-flow-based-programming Slides of this project : https://speakerdeck.com/matyo91/php-railway-flow-based-programming Video of this project : https://www.youtube.com/watch?v=mxxdhGsaIjY

Railway Flow Based Programming with Elixir from Anton Mishchuk

Flow Based Programming from J. Paul Rodker Morrison

Railway Oriented Programming

Coroutines in PHP

Fibers in PHP

Monads and PHP

Article on Monads : https://blog.darkwood.fr/article/les-monades-et-leur-utilisation-en-php Slides on Monads : https://speakerdeck.com/matyo91/monads-and-usage-in-php Video on Monads : https://www.youtube.com/watch?v=0M6MhUpra9o

Y-Combinator and PHP

Article of Y-Combinator : https://blog.darkwood.fr/article/y-combinator-en-php Slides of Y-Combinator : https://speakerdeck.com/matyo91/y-combinator-in-php -Video of Y-Combinator : https://www.youtube.com/watch?v=QSS_ZcO8Q1g

Messaging approach with East oriented code from Frédéric Hardy

Edit this page on GitHub

- - - +Video of Y-Combinator : https://www.youtube.com/watch?v=QSS_ZcO8Q1g

Messaging approach with East oriented code from Frédéric Hardy

Edit this page on GitHub

+ + + \ No newline at end of file diff --git a/docs/getting-started/sitemap.xml b/docs/getting-started/sitemap.xml index 5451daf..809cf47 100644 --- a/docs/getting-started/sitemap.xml +++ b/docs/getting-started/sitemap.xml @@ -1 +1 @@ -https://darkwood-com.github.io/flow/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/async-handler/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5 \ No newline at end of file +https://flow.darkwood.fr/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/async-handler/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5 \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 3ee2f8f..71e219c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,8 +1,8 @@ -Docs - Flow - - - +Getting Started + + + \ No newline at end of file diff --git a/docs/index.xml b/docs/index.xml index f23d470..d538b86 100644 --- a/docs/index.xml +++ b/docs/index.xml @@ -1 +1 @@ -Docs onhttps://darkwood-com.github.io/flow/docs/Recent content in Docs onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:48:23 +0000 \ No newline at end of file +Docs onhttps://flow.darkwood.fr/docs/Recent content in Docs onHugo -- gohugo.ioen-USTue, 06 Oct 2020 08:48:23 +0000 \ No newline at end of file diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 69a6067..4ae1eb6 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -1 +1 @@ -https://darkwood-com.github.io/flow/docs/getting-started/2020-10-06T08:49:15+00:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/async-handler/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5 \ No newline at end of file +https://flow.darkwood.fr/docs/getting-started/2020-10-06T08:49:15+00:00weekly0.5https://flow.darkwood.fr/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/async-handler/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5 \ No newline at end of file diff --git a/index.html b/index.html index 1a04693..83df3d2 100644 --- a/index.html +++ b/index.html @@ -1,6 +1,6 @@ -Flow - Flow

Flow

Assemble your code by adopting asynchronous as native implementation and build with functional programming and monads.

Get Started

Open-source MIT Licensed. GitHub v1.2.1

- - +Flow - Flow

Flow

Assemble your code by adopting asynchronous as native implementation and build with functional programming and monads.

Get Started

Open-source MIT Licensed. GitHub v1.2.1

+ + \ No newline at end of file diff --git a/index.min.7a6230a6d65da58de52e2fa71995835d2171ee7bf1f28fee90342ad87448d9fc1dc42493fbc0c78668ff4f1a82651b9164e91aa00ab1ccf571b4b64846fd3e02.js b/index.min.7a6230a6d65da58de52e2fa71995835d2171ee7bf1f28fee90342ad87448d9fc1dc42493fbc0c78668ff4f1a82651b9164e91aa00ab1ccf571b4b64846fd3e02.js deleted file mode 100644 index c605aaa..0000000 --- a/index.min.7a6230a6d65da58de52e2fa71995835d2171ee7bf1f28fee90342ad87448d9fc1dc42493fbc0c78668ff4f1a82651b9164e91aa00ab1ccf571b4b64846fd3e02.js +++ /dev/null @@ -1 +0,0 @@ -var suggestions=document.getElementById('suggestions'),search=document.getElementById('search');search!==null&&document.addEventListener('keydown',inputFocus);function inputFocus(a){a.ctrlKey&&a.key==='/'&&(a.preventDefault(),search.focus()),a.key==='Escape'&&(search.blur(),suggestions.classList.add('d-none'))}document.addEventListener('click',function(a){var b=suggestions.contains(a.target);b||suggestions.classList.add('d-none')}),document.addEventListener('keydown',suggestionFocus);function suggestionFocus(b){const d=suggestions.querySelectorAll('a'),e=[...d],a=e.indexOf(document.activeElement),f=suggestions.classList.contains('d-none');let c=0;b.keyCode===38&&!f?(b.preventDefault(),c=a>0?a-1:0,d[c].focus()):b.keyCode===40&&!f&&(b.preventDefault(),c=a+1{a.result.forEach(a=>{b[a.doc.href]=a.doc})});for(const d in b){const e=b[d],a=document.createElement('div');if(a.innerHTML='',a.querySelector('a').href=d,a.querySelector('span:first-child').textContent=e.title,a.querySelector('span:nth-child(2)').textContent=e.description,suggestions.appendChild(a),suggestions.childElementCount==c)break}}function c(){while(suggestions.lastChild)suggestions.removeChild(suggestions.lastChild);return!1}})() \ No newline at end of file diff --git a/index.min.f313877f7c5a55ed2cdc5f113ecbc6da13cd750ee4f68898bbcacd7c6da94ae20c8c0de43cc0927a5ed96553f3982f54450c4e8a6215e7cf2b29f1f10d7291e3.js b/index.min.f313877f7c5a55ed2cdc5f113ecbc6da13cd750ee4f68898bbcacd7c6da94ae20c8c0de43cc0927a5ed96553f3982f54450c4e8a6215e7cf2b29f1f10d7291e3.js new file mode 100644 index 0000000..61a81fd --- /dev/null +++ b/index.min.f313877f7c5a55ed2cdc5f113ecbc6da13cd750ee4f68898bbcacd7c6da94ae20c8c0de43cc0927a5ed96553f3982f54450c4e8a6215e7cf2b29f1f10d7291e3.js @@ -0,0 +1 @@ +var suggestions=document.getElementById('suggestions'),search=document.getElementById('search');search!==null&&document.addEventListener('keydown',inputFocus);function inputFocus(a){a.ctrlKey&&a.key==='/'&&(a.preventDefault(),search.focus()),a.key==='Escape'&&(search.blur(),suggestions.classList.add('d-none'))}document.addEventListener('click',function(a){var b=suggestions.contains(a.target);b||suggestions.classList.add('d-none')}),document.addEventListener('keydown',suggestionFocus);function suggestionFocus(b){const d=suggestions.querySelectorAll('a'),e=[...d],a=e.indexOf(document.activeElement),f=suggestions.classList.contains('d-none');let c=0;b.keyCode===38&&!f?(b.preventDefault(),c=a>0?a-1:0,d[c].focus()):b.keyCode===40&&!f&&(b.preventDefault(),c=a+1{a.result.forEach(a=>{b[a.doc.href]=a.doc})});for(const d in b){const e=b[d],a=document.createElement('div');if(a.innerHTML='',a.querySelector('a').href=d,a.querySelector('span:first-child').textContent=e.title,a.querySelector('span:nth-child(2)').textContent=e.description,suggestions.appendChild(a),suggestions.childElementCount==c)break}}function c(){while(suggestions.lastChild)suggestions.removeChild(suggestions.lastChild);return!1}})() \ No newline at end of file diff --git a/index.xml b/index.xml index e75d3af..6e41d4f 100644 --- a/index.xml +++ b/index.xml @@ -1 +1 @@ -Flow onhttps://darkwood-com.github.io/flow/Recent content in Flow onHugo -- gohugo.ioen-USCopyright (c) 2021 DarkwoodTue, 06 Oct 2020 08:47:36 +0000Bloghttps://darkwood-com.github.io/flow/blog/Tue, 06 Oct 2020 08:49:55 +0000https://darkwood-com.github.io/flow/blog/Docshttps://darkwood-com.github.io/flow/docs/Tue, 06 Oct 2020 08:48:23 +0000https://darkwood-com.github.io/flow/docs/ \ No newline at end of file +Flow onhttps://flow.darkwood.fr/Recent content in Flow onHugo -- gohugo.ioen-USCopyright (c) 2021 DarkwoodTue, 06 Oct 2020 08:47:36 +0000Bloghttps://flow.darkwood.fr/blog/Tue, 06 Oct 2020 08:49:55 +0000https://flow.darkwood.fr/blog/Docshttps://flow.darkwood.fr/docs/Tue, 06 Oct 2020 08:48:23 +0000https://flow.darkwood.fr/docs/ \ No newline at end of file diff --git a/robots.txt b/robots.txt index 589bf9c..e7c7075 100644 --- a/robots.txt +++ b/robots.txt @@ -1,4 +1,4 @@ User-agent: * Allow: / -Sitemap: https://darkwood-com.github.io/flow/sitemap.xml \ No newline at end of file +Sitemap: https://flow.darkwood.fr/sitemap.xml \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 4958e8f..86cfc84 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://darkwood-com.github.io/flow/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/async-handler/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/blog/say-hello-to-doks/2020-11-04T09:19:42+01:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5https://darkwood-com.github.io/flow/contributors/henk-verlinde/2020-11-04T09:19:42+01:00weekly0.5https://darkwood-com.github.io/flow/contributors/matyo91/2020-10-06T08:50:45+00:00weekly0.5https://darkwood-com.github.io/flow/contributors/2020-10-06T08:50:29+00:00weekly0.5https://darkwood-com.github.io/flow/blog/2020-10-06T08:49:55+00:00weekly0.5https://darkwood-com.github.io/flow/docs/getting-started/2020-10-06T08:49:15+00:00weekly0.5https://darkwood-com.github.io/flow/docs/2020-10-06T08:48:23+00:00weekly0.5https://darkwood-com.github.io/flow/2020-10-06T08:47:36+00:00weekly0.5 \ No newline at end of file +https://flow.darkwood.fr/docs/getting-started/introduction/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/flow/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/driver/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/async-handler/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/ip-strategy/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/blog/say-hello-to-doks/2020-11-04T09:19:42+01:00weekly0.5https://flow.darkwood.fr/docs/getting-started/ressources/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/changelog/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/docs/getting-started/license/2020-10-13T15:21:01+02:00weekly0.5https://flow.darkwood.fr/contributors/henk-verlinde/2020-11-04T09:19:42+01:00weekly0.5https://flow.darkwood.fr/contributors/matyo91/2020-10-06T08:50:45+00:00weekly0.5https://flow.darkwood.fr/contributors/2020-10-06T08:50:29+00:00weekly0.5https://flow.darkwood.fr/blog/2020-10-06T08:49:55+00:00weekly0.5https://flow.darkwood.fr/docs/getting-started/2020-10-06T08:49:15+00:00weekly0.5https://flow.darkwood.fr/docs/2020-10-06T08:48:23+00:00weekly0.5https://flow.darkwood.fr/2020-10-06T08:47:36+00:00weekly0.5 \ No newline at end of file