Morn!
God morgen, og god sommer! ✈️🇯🇵
Morn!
Mrn
Morn!
Morn :)
God morgen!
Jeg har brukt noen kvelder på core.async.flow. Stanget først hodet i veggen; hvordan skal HTTP-serveren spørre flyten om å få et resultat? Da jeg snudde på avhengighetene ble det mye hyggereligere, flyten kontrollerer HTTP-serveren.
(ns tlh2
"What if flow lifecycle controls the HTTP server"
(:require
[clojure.core.async.flow :as flow]
[org.httpkit.server :as http-server]))
(defn handler [{}]
{:status 200
:body "okayyy"})
(defn server
([] {:params {:http-port "HTTP port to bind"}})
([argmap]
(when-not (:http-port argmap)
(throw (ex-info "http port missing" {:argmap argmap})))
{:http-port (:http-port argmap)})
([{:as state :keys [http-port http-server]} transition]
(prn transition)
(case transition
::flow/resume
(assoc state :http-server
(http-server/run-server
#'handler
{:port http-port
:legacy-return-value? false}))
::flow/pause
(do (http-server/server-stop! (:http-server state)) state)
state
::flow/stop state))
([state input msg] [state nil]))
(comment
(def flow (flow/create-flow {:procs {::server {:proc (flow/process #'server)
:args {:http-port 9999}}}}))
(flow/start flow)
(flow/resume flow)
(flow/pause flow)
(flow/stop flow)
,)det er joe armstrong og rob pike igjen; don't communicate by sharing memory, share memory by communicating!
jeg var i utgangspunktet kritisk: hva med Integrant? Hva når en komponent trenger å ta en annen komponent for å få startet opp? Men da er spørsmålet, burde ikke heller disse to integrant-komponentene (core async flow-prosessene) heller sendt meldinger til hverandre?
Etter å ha jobbet i en Componentkodebase i snart 10 år, er det min mening at sånne avhengigheter er styggedom. Det er vanskelig å diskutere sånne ting i det generelle, så hva er den konkrete avhengigheten mellom komponentene dine?
For øvrig. Du kunne brukt ny keys! syntaks her (1.13alpha2) og hvorfor plukker du ut http-poet av args map bare for å lage et nytt map med http-port? Kunne vel bare sendt arga-map videre?
> hva er den konkrete avhengigheten mellom komponentene dine Jeg jobber ut teorien nå. Problemdefinisjonen er heller "kan vi klare oss helt uten integrant?" og svaret ser ut til å være ja!
> 1.13alpha2 Jepp! Men jeg venter på en stabil release tror jeg
> hvorfor plukker du ut http-poet av args map bare for å lage Fordi jeg vil ha eksplisitt kontroll på argumentene. Argmap og state er forskjellige ting.
BTW @neumann er i Sverige i midten av oktober 14. tror jeg) og vurderer en tur til Oslo. Kanskje en meetup hadde vært på sin plass?
det bør vi få til!
Stemmer! Jeg har også DM’a en del med ham, og han nevnte at han skal holde en presentasjon i Stockholm 14. oktober.
Han nevnte at han vurdere en tur til Oslo før eller etter det.