日曜プログラミング

休日趣味でやってるプログラミング関連記事をダラダラと

2013-01-01から1年間の記事一覧

codox 良いね

多分バリバリ開発してる人には今更なんだろうけど自分の作ってる関数がとっ散らかってきてどんな命名にしてたっけか、と言うのを見たくて leingen プラグインとして提供されてる Clojure アプリ/ライブラリの API 自動生成ドキュメントである codox を入れて…

require 一辺倒でなく use もいいかなあ

Clojure を使い始めた頃は名前の衝突とどの名前空間だか分からなくなるので (require '[clojure.string :as s]) のスタイル一択でしょ、と思ってたが、書くコードが増えてくるにつれ :as で短くした修飾すら打つのを面倒に感じるようになってきた。emacs で…

Clojure の ratio? と rational?

小ネタ。昨日から Clojure で分数を扱いたくちょいちょい調べてるが、分数かどうか判定する関数は ratio? が使える。 (ratio? 1/3) ;=> true (ratio? 1) ;=> false (ratio? 1.1) ;=> false 似たような名前の関数で rational? もあるが、こちらは整数でも tru…

[Excel] Excel で分数計算

どうやら地味に分数を扱えるらしい事を見つけたのでメモ。エクセル分数を入力するにはセルに "0 1/3" と入れれば Excel は分数とみなす。 実際の入力にはダブルクォーテーションや 0 の前に = は不要。 これを * 3 すればキッチリ 1 となる。この点は分数を…

Clojure の leiningen プロジェクトでファイル分割する際の注意点

とある leiningen プロジェクト内でまぁ何となく機能別にファイルを分割したくなりファイルを分割した。元々 core.clj の 1 ファイル内で REPL 上で試しながらコードを書いていて量が増えてきたので機能別にこんな依存関係で分割した。 foo.core -> foo.a ->…

Windows で Java の PID を見ながらプロセスキルする

Java (と言うか Clojure で書いた)プログラム、リリースしてしまえばどうと言う事はないのだが、Emacs cider で REPL 立ち上げて他に Datomic transactor や Datomic Console 立ち上げてるとそれだけで java.exe が 4 つ立ち上がり、しかも既存の Java ツー…

Datomic transactor に接続できなくなった?

Datomic でトラブルらしきものに初めて遭遇した。datomic-pro-0.9.4324 の dev プロトコル transactor を自分の PC に立ち上げっ放しで Emacs cider REPL から接続しようとするといつもならすぐ接続できるのに今日は何故か接続できず 中断すると以下の例外が…

ライブラリ整理

ちょくちょく使ったり気になるライブラリをちょっと整理したくなった。 使った事ある 名前 概要 Datomic 何か新しいデータベース clj-time Joda-Timeをベースとした日付時刻操作ライブラリ clojure.java.jdbc JDBC Clojure ラッパライブラリ clojure.data.cs…

Datomic Console を試す

以前ちょいと紹介だけしたDatomic Console。細かい紹介は例によって公式に譲る。インストールについても README を読めば特に何も困らなかったので割愛し、感想だけ。 定義したスキーマがツリー状に見られるのが良い ツリーの親は :foo/bar だったら :foo/ …

DynamicDraw 感想

前から気になっていた DynamicDraw を初めてまともに試してみた。使った動機は Datomic ブログで時折見かけるリレーションダイアグラムを自分でも書き起こしてみたくなったので。 良い点 良く使う図形パーツをチップと言う呼び名で登録しておける チップ集を…

Clojureの遅延シーケンスのファイル出力

小ネタ。Clojure では何気に使ってる関数で返されるのが遅延シーケンス(LazySeq)な事は良くある。 REPL では LazySeq を勝手に具現化してくれるのだが、ここで遅延シーケンス foo-seq をファイルに吐き出したくて以下のように spit としても、 (spit "some.f…

datomic でハマった事いくつか

datomic でまだまだ遊んでいる所なのだがハマった事を順次書いていく。 DB は常に最新を見ましょう 結論から言うと DB 指定する所では過去を振り返る必要が出てくる時以外は常に (db conn) で最新の DB を指定すべきと言うお馬鹿なオチ。話を単純化するため…

Clojure のキーワードを文字列に変換する

小ネタ。キーワードを文字列に変換するのは name がお手軽。 (name :foo) => "foo" コロンも含めたければ単純に str で良い。 (str :foo) => ":foo" ただ :foo/bar のような名前空間修飾があるタイプのキーワードはちょっと事情が異なる。 これを "foo/bar" …

Clojure シンタックスクォートマクロで名前空間修飾を回避する

Clojure のシンタックスクオートを使用したマクロでは、マクロ展開時シンボルに名前空間が修飾されて名前衝突を回避するようになっている。多分大部分はこれで問題ないんだろうけど、敢えて修飾したくない場合は以下のように書くとマクロ展開でシンボルその…

[Clojure] clj-time を使う

java.util.Date でフォーマットとか考えると途端に面倒くさくなったので clj-timeを使ってみた。楽だ。ただ、少し調べた事もあったのでメモ。 日時と日でクラスが違う (require '[clj-time.core :as t] '[clj-time.format :as tf] '[clj-time.local :as tl])…

datomic ブログを読む - クエリ駆け足ツアー

チュートリアルを終えたものの、まだどうも慣れない部分が多いのでもう少しサンプル的なものを試したいと探してたらブログにより単純なスキーマでのクエリの使い方紹介記事があった。Datomic: A Whirlwind Tour of Datomic Query コードの入手と準備 github …

datomic を試す(6) - データ操作、データ定義再び

datomic チュートリアルについては今回の記事で最終回。前回は datomic の目玉の一つである時間の考え方について見てきた。 datomic を試す(5) - 時と共に - 日曜プログラミング今回の記事で公式チュートリアルで該当する原文項目は以下。 Manipulating data…

datomic を試す(5) - 時と共に

前回はパラメータクエリ、クエリ内関数、全文検索、ルールの使用などを見てきた。 datomic チュートリアルを試す(4) - アドバンスド・クエリー - 日曜プログラミング今回の記事で公式チュートリアルで該当する原文項目は以下。 Working with time Time is bu…

datomic チュートリアルを試す(4) - アドバンスド・クエリー

前回、SQL で言うと SELECT, WHERE, JOIN の基本的な使い方についてやったような感じかな。記事はこちら。 datomic チュートリアルを試す(3) - 実体の属性値をクエリで取る - 日曜プログラミング今回の記事で公式チュートリアルで該当する原文項目は以下。 A…

WorkSheet.Paste メソッドが失敗する

手元の VBA ツールで WorkSheet.Paste メソッドを使う場面があるのだが、何故か失敗するようになった。そして何故なのかがググっても良く分からないが、どうも 100% ではないにせよ同じ人が結構いるみたい。解決策も最初に出てくるのが SpecialPaste メソッ…

datomic チュートリアルを試す(3) - 実体の属性値をクエリで取る

前回、datomic でのデータ定義の考え方と実体の属性値をどうやって取得するかまでやってみた。記事はこちら。 datomic チュートリアルを試す(1) - 導入・DB 作成・最初のクエリ実行 - 日曜プログラミング今回公式チュートリアルで該当する原文項目は以下。 Q…

環境変数の設定をバッチ化

家の PC がお亡くなりになって、仕方なく新しい PC を買ったのは良いものの、環境移行を全く考えておらずまた最初からやるハメになった。で、移行をやっててめんどくさいなと思ったのは環境変数設定。これバッチ化できないんだろうかと探してみたらあった。s…

datomic console リリース

GUI で datomic の情報を色々確認できる datomic console がリリースされたみたい。 Datomic Development Resources本格的に使うようになると便利かも?

定義済み環境変数

MS の以下にサポート情報がある。 Windows NT の環境変数NTからの情報で最近のWindowsではなくなっていたりするものがあるかもしれないため、自分の目的とする環境変数が実際にあるかどうかはコマンドプロンプトで確認する。

which コマンド

Unix系に比べ実行ファイルを置く場所の共通認識が非常に弱い Windows なら余計に需要がありそうな which コマンドなんだがなぜか無い。@ITに作成記事があるのでありがたく頂戴する。@IT:Windows TIPS -- Hint:whichコマンドを作る実行ファイル検索に特化…

datomic チュートリアルを試す(2) - datomic のデータ定義・実体の属性値の取得

前回、インストール・DB作成・スキーマ定義・クエリ実行までやってみた。記事はこちら。 datomic チュートリアルを試す(1) - 導入・DB 作成・最初のクエリ実行 - 日曜プログラミングまた、この記事書いてる途中で作者による Clojure でどう書くかの動画があ…

(解決)cider-jack-in でプロセスが 2 つ立ち上がって emacs 終了時 1 つしか終了しない話

半年以上前にこんな記事を書いた。 プロセスが残るんですけど - 日曜プログラミングnrepl 自体はサーバクライアント型で jack-in した時サーバとクライアント両方立ち上がるようになってる。ここまでは分かるのだが、昔は M-x nrepl-close しても何で1つのプ…

el-get トラブルシューティング

昨日 Emacs Live に Clojure 関連の設定の大部分をお任せできるんじゃないかとちょっと試したが、こっちはこっちで自分の設定のマージのさせ方が分からず諦めて el-get で四苦八苦した結果、やはり職場の制限されたネットワーク環境上で色々発生していそうな…

日本語のパス下で実行するとエラーが出る場合の対処方法

Mac OS X やの Linux のパスの扱いがどうなってるかは分からんけど、Clojure でファイルを吐き出すちょっとした小物ツールを作った時日本語含まれるパスで実行すると以下のようなエラーが出る。 Error: Unable to access jarfile hoge.jarこれを回避するには…

また設定か

nrepl.el の新バージョンとなる cider が使えるようになったらしいので el-get で update。・・・しようと思ったが頻繁に使うものではないので使い方をすっかり忘れてる。cider には M-x el-get-install するだけで良いよ!とあるがダメ。そういやパッケージ…