Arantium Maestum

プログラミング、囲碁、読書の話題

Clojure

Clojure/QuilでShepherding Random Numbersその3

最後。今までは「移動する円」がポイントだったが、今回は「移動する円の残す残像」が中心の映像になる。 inconvergent.net 前回と同様、左の円と連動して上下に動いていく円。今度は速度の線は描かず、そのかわり跡が残るようにした: Quil -L8sgTy8ZVQK2Q3…

Clojure/QuilでShepherding Random Numbersその2

続いてここから: inconvergent.net 過去の状態から次に移動する場所を決めていく。 まずは単純に、「現在地からあまり離れていない場所」を次の目的地に決定するパターン: Quil -L8sSIr9XEm-gow3mH4- 次に、「目的地」という概念を消して、上下方向の移動…

Clojure/QuilでShepherding Random Numbersその1

昔からすごく好きなジェネラティブ・アーティストのAnders Hoffのウェブサイトに、いくつかチュートリアル的な記事が載っている。 inconvergent.net ClojureとQuilで試していきたい。 まずは非常に簡単なボール一つが上下に動くもの: Quil -L8r5DqZjda9OSxY…

Clojure/QuilでRのTiny Artを真似てみた

Rでツイートに収まりきる文字数でアート、というブログ記事があった: www.r-bloggers.com いろいろな数式を使ってきれいなパターンをグラフ機能で表示させる、というもの。 残念ながらそこまで文字数を制限することはできなかったが、とりあえずライブラリ…

Clojure/Quilでリセージュと内サイクロイド

数式で表せる曲線を描いてみる。 元ネタ Proce55ing.walker,blog » Blog Archive » 図形を描く数式の使い方 毎度のことながらProcessing Advent Calendar。こういう記事がまとまっている場所があるのは、習作アイディアをもらうのにすごく便利で、参加された…

ClojureとQuilでSF円

SFやアニメのコンピュータスクリーンによく出てくる、円状のものがクルクルと違うスピードで回ってるやつ。 こちらが元ネタ: labs.uechoco.com Quil版: Quil -L7vYVzO6uheSLTyNizI q/arcがほぼ使い物にならないレベルでガタガタだったので、表示しているの…

ClojureとQuilで"The Matrix"の文字列を作ってみた

例によってProcessing Advent CalendarからQuilで作るネタを漁っている。 今回はこの記事: Proce55ing.walker,blog » Blog Archive » マトリックスのアレを作ってみよう このかたは2011年のProcessing Advent Calendar記事の大半を書いていてすごい。今後も…

ClojureとQuilでClifford Attractor

昔のProcessing Advent Calendarをいろいろ漁っていたらこんな記事があった: qiita.com 上記の記事の冒頭の絵は で表されるアトラクターである。 以下の参考サイトにはもっと例が載っている。 Clifford Attractors まさにClojureのiterate関数の使いどころ…

ClojureとQuilでいろいろ降らせてみた

前回の元記事の作者の方がこのような記事をQiitaに挙げていた: qiita.com 前回のコードは基本的に形を座標リストとして表してしまえばあとは同じ関数でデータ作成・描画・アップデートができるので、とりあえずいろいろ降らせてみた。 Quil -L7gXIMMKuYC2kS…

ClojureとQuilで桜を吹雪かせてみた

こういう記事を読んだ: blog.livedoor.jp とても面白そうだったのでひさしぶりにQuilで再現して遊んでみよう、と思ったら意外と色々忘れていてえらく時間がかかった。 とりあえず結果: Quil -L7dtRVx3FipAGAAMkGE Runボタンクリックで桜吹雪が見えるはず。…

Reactで書かれた囲碁ボードをReagentで作ってみる(Core編)

前々回、前回からの続き。 あとは作ったViewsとLogicを組み合わせるだけなので非常に簡単。 まずは状態を管理するreagent atomをdefonceしておく。 (defonce game-state (r/atom (l/new-game-state 9))) defではなくdefonceなのは、defだとコードに変更を加…

Reactで書かれた囲碁ボードをReagentで作ってみる(Views編)

前回からの続き。 Reagentコンポーネントを定義するviews.cljsの説明。 まずは点の大きさを表すGRID_SIZEを定義し、盤上の「点」をコンポーネント化する。 (def GRID_SIZE 40) (defn BoardIntersection [[row col] color click-fn] (let [style {:top (* row…

Reactで書かれた囲碁ボードをReagentで作ってみる(Logic編)

こういう記事を発見した。 React beginner tutorial: implementing the board game Go | Chris LaRose, Software Developer JSとReactで簡単な囲碁のボードを作成する、というもの。コードとしても非常に簡単だったのでClojurescriptとReagentで書いてみた。…

Clojure Web Development勉強 - Devcards(その1)最低限の設定

CSSをいじりたおす根気がなかった・・・ ということで話題を変えてFigwheelの作者でもあるBruce Haumanが作ったツールであるDevcardsについて書く。 Devcardsとは DevcardsはClojureScript+Reactで作ったコンポーネントの動作を試すための環境を提供するツー…

Clojure Web Development勉強 - Garden(その3)lein-gardenとfigwheelでgarden/CSS自動コンパイル&ロード

前々々回のfigwheelによるCSS自動ロードと前回のlein-gardenによるgarden→CSS自動コンパイルを合わせると、gardenデータ構造をcljファイルに記述・変更すると即時にブラウザで表示が更新されるような環境が出来上がる。 project.clj leiningen及びlein-garde…

Clojure Web Development勉強 - Garden(その2)lein-gardenでCSSをオートコンパイル

前回紹介したワークフローだとCSSをednで定義できるのはいいが、二つほど問題があった。 変更の度にいちいちlein runでCSSをコンパイルする必要がある -main関数をCSSコンパイルのために使っていた lein-gardenはこの二つの問題を同時に解決する、gardenコン…

Clojure Web Development勉強 - Garden(その1)最低限の設定でCSSをコンパイルしてみる

前回に続いてCSSの話。 Reagent/Hiccupを使ってHTML/DOMをedn形式で定義しているのだから、できればCSSも同じくednで定義したい!という末期症状な人間のために、gardenというライブラリが存在している。 github.com Hiccupと同じように、Clojureのデータ構…

Clojure Web Development勉強 - FigwheelでCSS Auto-Loading

Single Page Applicationで複雑かつ洗練されたGUIを実装するためには、一般的にHTMLで定義されている文書のコンテンツだけではなく、CSSで定義されているスタイルをどうコントロールするかも非常に重要なポイントになる。 JavaScriptで直接DOMにコンポーネン…

Clojure Web Development勉強 - ReactチュートリアルをReagentでやってみる(その5)

ReactチュートリアルのShowing the Movesから最後のImplementing Time Travelまで。 Showing the Moves https://facebook.github.io/react/tutorial/tutorial.html#showing-the-moves 前回作成したhistoryデータを使って過去の動きを表示するようにする。 Ja…

Clojure Web Development勉強 - ReactチュートリアルをReagentでやってみる(その4)

最後までやるつもりだったのだが、長くなったので今回はStoring a Historyだけ。 https://facebook.github.io/react/tutorial/tutorial.html#storing-a-history これまでReactチュートリアルでは、まずSquareを状態を持ったコンポーネントとして実装し、その…

Clojure Web Development勉強 - ReactチュートリアルをReagentでやってみる(その3)

公式チュートリアルのFunctional ComponentsからDeclaring a Winnerまで。 Functional Components 前回散々JavaScript版が明示的じゃない、ボイラープレートが多いと煽っていたが、実際にはJSでも純粋関数的に書くとより簡潔になる: function Square(props)…

Clojure Web Development勉強 - ReactチュートリアルをReagentでやってみる(その2)

React公式チュートリアルを進める。今回はPassing Data Through PropsからLifting State Upまで。 Passing Data Through Props https://facebook.github.io/react/tutorial/tutorial.html#passing-data-through-props 親コンポーネント(つまり呼び出し側の…

Clojure Web Development勉強 - ReactチュートリアルをReagentでやってみる(その1)

Reactの公式ページに基本概念などの説明のためのチュートリアルがある: facebook.github.io これをClojureScript/Reagentでやっていきたい。 最終的な成果物は簡単な○×ゲーム。 HTMLやCSS、そしてReact Componentの大枠はすでに出来上がっていて、チュート…

Clojure Web Development勉強 - Reagent(その3)状態の管理

Reagentでは、Hiccup構文を使ったコンポーネント関数とReagent Atomを使って、複雑な状態を持つクライアントサイド・アプリケーションを作成できる。 前回の例ではコードをなるべく単純に留めるために、トップレベルでReagent Atomを定義し、各コンポーネン…

Clojure Web Development勉強 - Reagent(その2)Reagent Atom

さて、Reagentの二大要素の二つ目であるReagent Atomについて。 Reagentでは、コンポーネントの可変な状態を保持するために特殊なAtomを用意している。 と言っても概念・機能は通常のClojureのAtomとほとんど同じで、Immutableなデータ構造へのポインタのよ…

Clojure Web Development勉強 - Reagent(その1)概要とHiccup構文

ReactのClojureScript WrapperであるReagentライブラリについて。 前回書いたとおり、ClojureScriptには有名なReact Wrapperが三つある。Om/Om-Next、Quiescent、そしてこのReagentである。 最初の二つの特徴を非常にざっくりと要約するなら: Om/Om-Nextは…

Clojure Web Development勉強 - Reactあれこれ

Facebookが提供するJavaScriptライブラリであるReactについていろいろと書こうと思う。 まず、私自身がReactについて調べていた時に大変参考になった記事を三つ挙げる: qiita.com mizchi.hatenablog.com qiita.com 本記事と前後してこれらも読めば、Reactに…

Clojure Web Development勉強 - ClojureScript(その4)figwheelの最小限設定

Figwheelは素晴らしい。FigwheelはClojureScriptを使うことで得る大きな喜びの一つだ。 と過剰に思われる売り込みで始める。しかし、個人的には全く誇張している意識はない。 Figwheelはwebsocketを使って、ソースファイルの変更を自動的にブラウザに反映さ…

Clojure Web Development勉強 - ClojureScript(その3)cljsbuildオプションあれこれ

cljsbuildには様々なオプションがある。なんでこんなにあるの?と言いたくなるくらいある。 個人的に使いそうだなぁと思うものを抜粋すると: :cljsbuild { :builds { :main { :source-paths ["src-cljs"] :compiler { :optimizations :whitespace :output-t…

Clojure Web Development勉強 - ClojureScript(その2)cljsbuildでコンパイル

Clojureビルドツールあれこれ Clojureビルドツール界隈ではleiningenが圧倒的シェアを誇っておりそこにbootが食らいついている、というような状況になっている。 私はbootは使ったことはないが、leiningenにはいつも非常にお世話になっている。project.cljに…