Java Source Attacherプラグインは便利。

あと忘れないように。。今はEclipseで実装をしている。JavaのAPIを解析したり理解する場合はEclipseでバシバシ飛べた方が便利だから。 で、非常に便利な良いツールを見つけた。 「Java Source Attacher」なるプラグインなのだが、選択したライブラリのソース…

clominalで使うGUIツールキットを変えようと思う。

久しぶりのブログということで近況を。(実装や調査に極端に集中し始めるとメモを残すのを忘れてしまうのはなんとかしないと。。)最後のブログ更新をした後、PaperWorkerはGUIの実装に入った。 が、そこで「あ、clominal使ってみよう!」と思ったのが失敗。…

Import/Export機能を実装した。

場所マスタ(純粋に場所の情報だけを格納するテーブル)、場所データ(場所と人を紐付けているテーブル)を分離したデータ構造を考えていたんだが、やってると次から次へと修正したい事が出てきて困る。今回も、pw.standard.action.*系のクラスをpw.action.*…

PWViewActionの実装完了。

PWViewAction関連の実装完了!Bugfixは随時。 てか、PWListActionじゃなくて、PWViewActionに名前変えた。そして、やっぱり丁寧語面倒だから書きなぐりでいこう。 なんか自分で読んでて気持ち悪いや。しかしもっと簡単かと思ってたけど、大分時間がかかった…

PWListActionへの絞り込み機能の方針

ひとまず承認系の依頼・承認・却下の各Actionの実装が終わりました。 相変わらずコマンドラインなので使い勝手が悪いですが。さて、前回記載した、PWListAction(BasicListActionから名前が変わりました)の条件絞り込み機能について更に考え、真逆に舵を取…

BasicListActionに条件絞り込み機能が欲しい。

承認依頼actionの実装が完了し、現在承認actionを実装中ですが、その過程でBasicListActionに条件絞り込み機能の必要性を感じてきました。 後回しにしてたんですけども。 マスタ一覧のように全部取得するケースは稀で、業務actionになってくるとログインユー…

承認依頼について

承認機能は「承認依頼」「承認」「却下」の3種のactionがあれば一周回ると思います。 大事なのは、「承認ルート」の扱い方かと。で、承認依頼ですが、一度実装してみたところなんとなく考えるべき要素が見えてきました。カスタマイズ可能にするのであれば、…

PaperWorkerについてもう少し具体的にメモ。

もう少し具体的なPaperWorkerの構成についてメモしておきます。自分がブレないように。PaperWorkerは「シンプルな事務処理のビジネスロジック」に特化したシステムです。 H2Databaseを組み込みのRDBとしてデータストアに使用していますが、多分JDBCであれば…

今更ながら、リフレクションとアノテーションを使ったフレームワークを実装してみる。

毎度毎度、今まで作ってたのをほっぽりだして次から次へと新しいモノを作り始めて自分でも何だかなぁと思いますが、ちょっとclominalは壁にぶち当たって実装お休み中です。。 (検索機能の実装はできたんですが、置換機能について、RSyntaxTextAreaの中のコ…

clojure備忘録[replを使った開発手法 その3(filter関数)]

標準のfilter関数の挙動 続いて実装する関数は「filter」という名称の関数です。 まずは概要を。 表記(filter f coll) 引数f引数にcollの要素を受け取り、論理値を返却する関数オブジェクト。 coll入力シーケンス 返却値シーケンスcollの要素に関数fを適用し…

clojure備忘録[replを使った開発手法 その2(map関数)]

標準のmap関数の挙動 最初に実装する関数は「map」という名称の関数です。 (データ型のマップではありません。)次のようなデータについて考えます。 ; 関数名と年代 '(("FORTRAN" 1954) ("Lisp" 1958) ("C" 1972) ("C++" 1983) ("Perl" 1987) ("Python" 19…

clojure備忘録[replを使った開発手法 その1(シーケンスを扱う関数)]

では早速、replとsample.cljを使って、 シーケンスを扱う関数を作って行きましょう。 と思ったのですが、「シーケンス」の説明が必要であることに気づいたので、 このエントリはこれについて先に説明しておきたいと思います。 clojureとは切っても切り離せな…

clojure備忘録[replを使った開発手法 その0(ソースファイルの扱い方)]

これまでのエントリで、clojureを書いていく際に必要な基本的情報は説明したつもりです。 が、実際にどのように開発をしていくのかはまだあまりイメージが沸いていないと思います。 以前のエントリではしばしば小さなコード断片(S式)を replのプロンプトに…

clojure備忘録[clojureの基本的な関数 その4(=関数)]

atomは存在が確認できなかったのでclojureの基本関数としてはこれが最後です。 値が等しいか等しくないかを返却する関数です。 表記 (= form0 form1) 引数を2つとり、両者の「S式の構成も含めて」、「値」が同じであれば論理値のtrueを、 同じでなければfal…

clojure備忘録[clojureの基本的な関数 その2(first関数)]

引数で受け取ったリストの先頭要素を新しい要素として返却します。 表記 (first seq) seqがリストになります。 実例 実際のデータを使って動作を確認してみます。 user=> (first '(1 2 3)) 1 user=> ちゃんと先頭がとれています。 ネストしたリストも試して…

clojure備忘録[clojureの基本的な関数 その1(cons関数)]

まずはcons関数です。 前エントリで触れた通り、第1引数を第2引数のリストの先頭に挿入した、新しいリストを返却します。 表記 使用方法は次の通りです。 (cons x seq) xは先頭に挿入されるデータ、seqは元になるリストです。 実際に使用してみましょう。 u…

clojure備忘録[clojureの基本的な関数 その0]

最小構成のLispは次の要素があれば実装可能らしいです。 (私は突っ込んで検証したことがないのですが。。) ・アトム ・リスト ・5つの基本関数 ・4種の特殊形式今回説明するのはこの中の「基本関数」についてです。 Lispの基本関数は歴史的な背景もあっ…

clojure備忘録[clojureの基本的な関数 その3(rest関数)]

基本的関数の最後は、2番目以降の全ての要素を新たなリストとして返却するrest関数です。 表記 (rest seq) こちらもfirst関数と同じく、第1引数のseqがリストになります。 実例 user=> (rest '(1 2 3)) (2 3) user=> ちゃんと2番目以降の要素がリストとして…

clojure備忘録[末尾再帰の最適化]

このエントリーはまとめようとしたら、 書いては消し書いては消しの繰り返しで時間がかかってしまいました。 理解はしていても人に伝える為に整理しようとするのは難しいもんですねぇ。 さて。 本エントリでは、Lisp方言であるschemeとclojureが、 「繰り返…

clojure備忘録[clojureの基本的な特殊形式 その7(loop/recur特殊形式)]

loop/recur特殊形式は「末尾再帰最適化」を行います。 何のこっちゃかと思うかもしれませんが、繰り返しの制御を行う為の特殊形式です。 手続き型言語に慣れた方は驚くかもしれませんが、 clojureには明示的な繰り返し制御用の式がありません。 実は繰り返し…

clojure備忘録[clojureの基本的な特殊形式 その6(let特殊形式)]

これはマクロで実装できるので個人的には特殊形式ではないだろうと思っていたら特殊形式でした。。 というわけで「let特殊形式」です。 一般的な手続き型言語で定義する関数やらメソッドでは、代入を使って値を保持しておき、後からその値を使って処理を実行…

clojure備忘録[clojureの基本的な特殊形式 その5(do特殊形式)]

do特殊形式は、ある箇所で複数のS式を順に評価させたいけれども、 わざわざ関数を作るのは面倒くさい、という時に使用します。 do特殊形式は、内部に複数のS式を記述します。 最後に評価されたS式の値が、do特殊系式の返却値となります。 表記 (do & body) …

clojure備忘録[clojureの基本的な特殊形式 その4(if特殊形式)]

お腹いっぱいかもしれませんが一応。 if特殊形式は、条件分岐のフロー制御を行います。 表記 (if predicate-form then-form else-form) 既に説明済みですが、評価順序は次のようになります。 1.まずpredicate-formが評価される。 2.1の結果が真ならば、…

clojure備忘録[clojureの基本的な特殊形式 その3(fn特殊形式)]

fn特殊形式は、関数をデータとして生成して返却します。 表記 (fn [arg0 arg1 ...] & forms) または #(form) 1番目が典型的な表記方法です。これを使っておけば間違いありません。 良く見ると、第1引数が普通の括弧でなく、かぎ括弧「[...]」になっています…

clojure備忘録[clojureの基本的な特殊形式 その2(def特殊形式)]

def特殊形式は、データに名前をつけて紐付けし、かつそのデータの値を返却します。 データに名前をつけることにより、後から何度も参照することが可能になります。 表記 (def name var) 第2引数が名前、第3引数がデータになります。 おさらいになりますが、…

clojure備忘録[clojureの基本的な特殊形式 その1(quote特殊形式)]

概要 quote特殊形式は、引数のS式を評価せずにそのままデータとして返却します。 表記 (quote form) または 'form 1番目は、第2引数以降を指定しても無視されますので注意してください。2番目の「'」(シングルクオート)は、単なるquoteの省略形です。 こち…

clojure備忘録[clojureの基本的な特殊形式 その0]

前エントリで「Lisp」の基本的な概念について、 大雑把ではありますが一通り説明してみました。 その前提を元に、ここからはclojureに特化した説明を行っていきます。 特に関数、特殊形式については、「どのようなものか」は既に記述しましたので、 この後の…

clojure備忘録[前提としてのLisp]

replでいろいろ遊ぶ前に、Lispの基本的な概念についてもざっくりとですがまとめておきます。 Lispは、他の一般的な手続き型の言語と比べて独特の性質があります。 clojureもLispの方言の一つですから、その独特さを理解するためには、 どうしても基本的なLis…

clojure備忘録[最小構成の環境構築]

clojureには簡単に環境構築を行える「leiningen」というツールがあります。 このツールは環境構築だけでなく開発時にも非常に便利に使えるのですが、 インターネットアクセスが可能であることが大前提の為、 proxy越しの環境では動作させるまでに挫折しそう…

clojureについてまとめていきます。

まったくご無沙汰しております。 昨年の暮れから、年賀状の宛名印刷ツールをclojureで実装してたんですが、clojureでのコーディングが楽しくて学習結果を全然まとめていませんでした。 んで、今何をしているかというと宛名印刷ツールはちょっと一休みして、c…