Clojureのagents機構にてsend-offでディスパッチしたアクションが呼ばれないケースに遭遇した際の調査メモ。
...
以前の 『TwitterのリストタイムラインをSlackへ連携する』 で作成した mountベースのSlack Bot chabonze をClojureのサーバサイドフレームワークである Duct 0.7.0-beta1 を使って書き直した際のメモ。
...
OpenJDK11を使うようにしたところductを利用したアプリケーションのREPLでエラーが発生するようになった。
...
lein-ductで作成したプロジェクトのREPL環境とmain実行環境でコンポーネントの初期化範囲に差異があるというメモ。
...
Clojure core.asyncのtimeoutに関するメモ。
...
httpkitで空いているポート番号を自動的に割り当てし、割り当てられたポート番号を取得する方法に関するメモ。
...
Clojure core.asyncのalts!とalt!
名前、機能共に似ており違いや使い方をよく失念するのでメモ。
...
『java.nio.file.Pathをslurp/spitで使えるようにする』からの続き。
clojure.java.ioのmake-parents/file/as-relative-path はString、File、URI、URLなどを対象とする多相的な関数だが、java7で追加された java.nio.file.Pathは対象に入っていない。
ということでPathも扱えるようにするためのメモ。
...
core.asyncのmultでIllegalArgumentException "No implementation of method:〜"が発生するケースを調べた際のメモ。
...
『Clojure Deps and CLIを利用する』からの続き。
tools.deps.alphaでクラスパス、依存ライブラリを管理。 各タスクはClojureの関数として記述。 外部コマンドで済むタスクは外部コマンドを利用する makeを起点に各タスクを実行。
...
Clojureのslurp/spit はFile、URI、URL、Socket、I/O Stream、Reader/Writerなどを対象に入出力を行う多相的な関数だが、java7で追加された java.nio.file.Pathは対象に入っていない。
ということでPathも入出力対象として扱えるようにするためのメモ。
...
実験的にcore.asyncをベースとしたEvent Bus nijohando/event を書いた。
今回試したかったのは以下の3点。
core.async チャネルベースのインタフェース REST API風なパスベースのイベント処理 Request-Replyパターンのサポート
...
Leiningenやbootといった既存のビルドシステムを利用せずに、Deps and CLIと必要な処理を自分で記述するスクリプティング型のビルド方式を試してみた。
...
cemerick/pomegranateを使ってclojarsでデプロイを行った際に ReasonPhrase: Forbidden - no checksums provided でデプロイ失敗する場合のメモ。
...
ClojureScriptの非同期処理テストケースで使用するcljs.test/asyncは一つのdeftest内で一度しか使えないという制約がある。
...
複数のソースディレクトリに含まれるClojureScriptをコンパイルしたい場合、 lein-cljsbuildは :source-paths に複数ディレクトリを指定できるのだが、 cljs.build.api/build ではどうしたら良いのかを調べた。
...
Clojure 1.7から導入されているTransducerの初期処理に関するメモ。
...
SpacemacsでClojure を書くためのメモ。
CIDER を使いたくて『Spacemacs入門』した件の続き。
まずはSpacemacsにClojure layerを導入し[ evil-lisp-state ] (https://github.com/syl20bnr/evil-lisp-state)によるS式操作とCIDERの基本的な使い方を学ぶ。
...
前回の『ドアの動き検知システムの構築2』ではAWS IoTのルールを作成しドアの動き情報を時系列データとしてS3に保存しAmazon Athen
...
『打刻システムの構築(前編)』 『打刻システムの構築(後編)』 『ClojureScriptでLambd@Edge』からの続き。
当初、打刻情報は出退勤イベントのみであったためGoogle Spreadsheetへデータを記録していた。
Google Spreadsheetはブラウザから気軽に閲覧、編集できるため便利ではあるのだが、他の打刻イベントを含め長期間にわたり蓄積していくのには向いていない。
そこで基本的に全ての打刻情報はS3上に蓄積し、任意の打刻イベントのみGoole Spreadsheetへ併記する形にする。
...
『打刻システムの構築(前編)』 『打刻システムの構築(後編)』 では打刻APIを作成し、APIが受け取った打刻イベントをSNSのトピックにパブリッシュ。トピックのリスナーであるLambda関数 dakoku-google-sheets-writer が Google Sheets へ打刻イベントを記録する仕組みを構築した。
...
ClojureScriptのビルドをcljs.build.apiで行った際に java.lang.AssertionError: Assert failed: No file for namespace foo.bar.core exists でビルドが失敗するので原因を調べた。
...
TwitterのリストタイムラインをSlackの任意のチャネルへ流す方法を模索してみる。
zapierのSlack Twitter integrationという選択肢もあったが、 今後Slackを使っていく上でに自由になるボットが一台居た方が今後何かと便利だろうという安易な理由から 自前でSlackボットを立てる事に決定。リストタイムラインの連携処理をやらせることにした。
2018/12/02 『DuctでSlack Botを作成する』 にてSlackボットを再構築。
...
Clojureのsend関数とsend-off関数。機能は全く同じのこの二つの関数の違いを確認する。
...
打刻システムの構築(前編)からの続き。 前編にてSNSを基点に打刻情報をGoogleスプレッドシートへ書き込むところまでが完成した。 後編ではS
...
毎日の出勤退勤時間の記録の煩わしさと しばしば付け忘れて後に「あれこの日何時に出勤(退勤)したっけ?」の苦悩から解放されるため、自分による自分
...
lein deploy clojarsがcommand get_passphrase failedで失敗する件を調べた。
...