Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Clojureを用いたWebアプリケーション開発

ayato
December 02, 2016

 Clojureを用いたWebアプリケーション開発

ayato

December 02, 2016
Tweet

More Decks by ayato

Other Decks in Programming

Transcript

  1. #ccc_m2 プロジェクト構成 •lein-modulesでマルチモジュールプロジェクト構成 anpi ├── lib // アプリ共通ライブラリ ├── db

    // データベース接続用のライブラリ ├── ymir // Quenoteクライアントライブラリ ├── web // メインのアプリ ├── worker // 非同期処理用アプリ ├── admin // 管理画面用アプリ └── project.clj
  2. #ccc_m2 利用しているライブラリ •サーバー: Immutant Web •ルーティング: bidi •テンプレートエンジン: Enlive •SQLビルダー:

    stch.sql, HugSQL •ライフサイクル, DI: Component •フロントエンド: Reagent, re-frame •テスト: Midje, kerodon, clojure.test •ユーティリティ: Plumbing, Medley
  3. #ccc_m2 (import [com.orangesignal.csv Csv]) (defprotocol CsvLoader (load [this])) (extend-protocol CsvLoader

    com.orangesignal.csv.CsvReader (load [csv-reader] (->> (Csv/load csv-reader (str-ary-handler)) (map vec))))
  4. #ccc_m2 (require [clojure.java.jdbc :as jdbc]) (import org.postgresql.jdbc4.Jdbc4Array org.postgresql.util.PGobject) (extend-protocol jdbc/IResultSetReadColumn

    Jdbc4Array (result-set-read-column [val rsmeta idx] (sequence (.getArray val))) PGobject (result-set-read-column [val rsmeta idx] (parse-pgobject val)))