$30 off During Our Annual Pro Sale. View Details »

MiddlewarePattern.pdf

ayato
September 11, 2015

 MiddlewarePattern.pdf

ayato

September 11, 2015
Tweet

More Decks by ayato

Other Decks in Programming

Transcript

  1. Middleware  Pattern @_ayato_p/Cybozu  Startups,  Inc.

  2. (def  _ayato_p      {:name  "あやぴー"        :lang

     [:clojure  :ruby  :javascript]        :company  "Cybozu  Startups,  Inc."})
  3. (def  _ayato_p      {:name  "あやぴー"        :lang

     [:clojure  :ruby  :javascript]        :company  "Cybozu  Startups,  Inc."}) Clojure  歴、半年
  4. Agenda Ring     Ring  Middleware   Middleware  Pattern

  5. Ring

  6. Ring サーバーを抽象化する仕様/デファクトスタンダード   Ring  Handler,  Requests,  Responses,  Middleware   公式には

     jetty  のアダプタがある   最近で  Ring  インターフェイスを実装したものだと   Immutant  などがある
  7. Ring  Middleware

  8. Ring  Middleware ただの高階関数   Ring  Middleware  の場合、  Handler  を受け取って  

    Request  を受け取る関数を返すような書き方されてる
  9. Ring  Middleware (defn  wrap-­secret-­key[handler  secret-­key]      (fn  [req]  

           (handler  (assoc-­in  req  [:params  :secret-­key]  secret-­key))))   (defn  make-­handler  [handler]      (-­>  handler                  (wrap-­secret-­key  "This  is  secret!!")                  wrap-­something                  wrap-­anything                  wrap-­defaults))   (app  (make-­handler  (get-­ring-­handler)))
  10. Middleware  Pattern

  11. Middleware  Pattern Ring  Middleware  はひとつの  Middleware  Pattern  例   他には

     Boot  でも適用されている
  12. Use  case ユーザーの入力を受け取って、関数を適用するか決めたい   config  ファイルを使って、関数を適用するか決めたい   LazySeq  に適用する関数をオプションから決めたい  

    -­>  Composable  な関数を作りたい!!
  13. Conclusion Composable  な関数を書くお供に     Middleware  Pattern  を活用しよう

  14. Enjoy  Clojure