Xmodmapとのどか(旧窓使いの憂鬱)の設定ファイルを晒してみる

HHKが前提だけど日本語キーボードでも一応使えると思う 新たな修飾キーModeSwitchを入れることで、ホームポジション周辺3列にできるだけ全てのキーを詰め込もうとしている SKK使いなので小指の負担を減らすために右手のShiftはホームポジションの小指の位置…

clml-svmの紹介

(LISP Library 365参加記事)この記事ではclml-svmを紹介する。SVMそのものの解説はしない。CLML (Common Lisp Machine Learning)は、数理システムからgithubに公開されているCommon Lisp用の機械学習ライブラリである。以前は売り物であったらしい。当初はラ…

Lispbox for Windowsバイナリ配布

2016/1/21追記:最新版を公開しました http://d.hatena.ne.jp/masatoi/20160121/1453379153Windows版のLispboxが色々古くなってたので更新したものを公開します。 内容は以下の通り。 emacs 24.3 slime 2014-1-10 ccl 1.9 quicklisp 2014-1-30 CCLとの通信は…

プログラム=データ=遺伝子? Lispは無慈悲な言語の女王

(Lisp Advent Calendar 2013 18日目の記事)しばしばLispの特徴として「プログラムを生成するプログラムを書ける」ということが言われるわけだが、普通の人はこれを聞いてどう解釈したらよいものか悩むと思う。字面通りに受け取ると、あたかも勝手に世の中の…

第2章 Clojure ひとめぐり

2.1 フォーム 何がリテラルになるのかについての説明。有理数型が用意されていることなどCLとの重複は多い。 文字列はCLだと文字のベクタだったが、ClojureではJavaの文字列型を使っている。 ;; Common Lisp (vectorp "hoge") ; T ;; Clojure (vector? "hoge…

第1章 さあ、始めよう

1章のコードはcode/src/examples/introduction.cljにある。 1.1 なぜ Clojure なのか Javaとの比較で高階関数を使うことでコードが簡潔に書けることを主張する。マクロの存在も匂わせている。他のLispよりも括弧が少ないというのは視覚上のメリットとS式単位…

プログラミングClojure第二版を買ったので環境づくり

オーム社のページからプログラミングClojure第二版(電子版)を買ってみた。第二版からはプロジェクト管理ツールleiningenを使うようになったのでこれをインストールする必要がある。とはいえシェルスクリプトに実行権限を与えて実行パスの通ったディレクトリ…

Weblocksでウィジェットのスロットを変更すると即座に反映される件

以前weblocksのwith-flowマクロを使ってウィジェットを置き換えるという記事を書いたが、別のウィジェットに置き換えるのではなく、同じウィジェットのスロットを変更してそれを反映させたい場合はどうするのだろうかという疑問が湧いたので実験してみた。ま…

スキャナと裁断機をレンタルして自炊した全記録

十年以上買い集めてきたので、流石に本がたまってきたと感じていた今日このごろ。優に100冊くらいはあるだろうか。 しかも大半は技術書なのでかさばる。かさばる本は出し入れや持ち運びが大変なので結局読まなくなる傾向にあった。 読む機会を増やすには、手…

Weblocksの継続ベースの画面遷移

WeblocksはCommon Lisp用のWebアプリケーションフレームワーク(WAF)。Common LispのWAFも色々出てきているみたいだけど、一番リッチに作り込まれているのはこのWeblocksだと思う。なにしろ1行のHTMLもJavascriptも書かずにWebアプリを作ることができるという…

lispbuilder-sdl-ttfで日本語を表示する

魔法言語リリカル☆LispみたいなものをCommon Lisp処理系の上に直接作れたらと思ったので、とりあえずlispbuilder-sdlで簡単なスクリプトエンジンを作ってみることにした。 と思ったら日本語テキストを表示するところでいきなりはまった。 当初はlispbuilder-…

[LISP] メモ化

メモ化(memoization)は関数の引数と返値の対応をハッシュテーブルなどに保存しておくことにより、同じ引数で呼ばれた場合の再計算を防ぐプログラミング技法だ。ただし、メモ化する関数が内部状態を持っていて引数によらないで値が変わる場合、すなわち参照透…

lispbuilder-sdlでライフゲーム書いてみた

Common Lispでゲーム開発するときはlispbuilder-sdlを使うのが定石らしい。実際CLのライブラリとしてはドキュメントも充実してるし移植性もそれなりにあり、完成度は高いように思える。とりあえず簡単な例をつくってみることにした。 思えばライフゲームを作…

クラスパスの指定

あんまりJavaとか使ったことなかったので、Clojureでクラスパスを指定するところで詰まってしまった。Clojureの公式サイトでは、起動コマンドは $ java -cp clojure.jar clojure.mainとのことなので、cpオプションのところに使いたいライブラリのパスを指定…

LtkでGUIの練習―オセロ盤

Common Lispには全てのウィジェットがCLOSオブジェクトという強力なGUI環境の仕様CLIM(Common Lisp Interface Manager)というのがあって、商用の実装Allegro CLIMやオープンソースの実装McCLIMがある。しかしMcCLIMはかなり大きいライブラリなのでインストー…

Operaでuimによる日本語入力がおかしくなる問題の修正方法

FreeBSDでもOperaは走るが、uimで日本語を入力しようとするとctrlキーで確定してしまったり(このためctrlとのキーバインドは全滅となる)、キャレット位置がおかしくなったりする問題があった。 この問題は本家のフォーラムでも報告されている(【不具合】ui…

On Lisp 8章まとめ

原則的には関数を使うべきだが、マクロでないとできないことがあったり、マクロでやる方が良い場合がある。 マクロでないとできないこと 関数は引数を全て評価する マクロは引数の評価を制御できる マクロでも引数全部を一回ずつ評価するようなものは関数と…

SLIMEでClojureを使う

Clojureのバージョンアップのせいか、どうも前に他のサイトで見た方法がうまくいかなくなってしまった。 試行錯誤してみた結果とりあえずちゃんと動くようになったので、色々とアヤシイところはあるもののまとめてみる。 SLIMEのインストール Emacs Lispは~/…

なぜRubyは許容可能なLISPなのか

LISPの真実を読んでたら最後に出てきたので、かなり古い記事だけれども、Eric Kidd氏のWhy Ruby is an acceptable LISPを訳してみました。まつもとさんによる反応もあり、そのエントリの中で原文はほぼ要約されています。 一年前、私はRubyに注目してはいた…

あから2010 vs 清水市代

http://www.ipsj.or.jp/50anv/shogi/20101012.html ディープブルーがカスパロフを破ったことを書いた論評が中学の国語の教科書に載っていたのが思いだされるニュースだ。チェスより多いとはいえ、将棋の盤面の組み合わせは有限なので、どこかの段階でコンピ…

GNOEM: Gauss Net with On-line EM algorithm

正規化ガウス関数ネットワーク(Normalized Gaussian Networks)は正規分布による線形回帰ユニットを組み合わせて非線形回帰をするモデルだ。論文によってはほとんど同じモデルが確率的ニューラルネットワークと呼ばれていることもある。修士のときにこの論文(…

GAで取引エージェントのポートフォリオ最適化

前回のエントリで紹介したGAのライブラリGECOを使って実際の問題に応用してみる。比較的単純なルールでFXの自動売買を行うエージェントを色々組み合わせる事で、全体として安定して利益を出すようなシステムを考える。 まずSMAやMACDなどの指標にもとづいて…

Common Lisp用の遺伝的アルゴリズムのライブラリGECOを使ってみる

GECO (Genetic Evolution through Combination of Objects)ASDFが使えるので、インストールするには、このサイトからパッケージをダウンロードして展開し、その中のgeco.asdへのリンクを*central-registry*に登録されているディレクトリに置く。SBCLの場合、…

DECLAREとDECLAIMとPROCLAIMの違い

http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/aced55aeed5f6ef2/e4b7902d0d84fc68 を見ると、DECLAREはそのブロックの中だけで有効で、DECLAIMとPROCLAIMは大域的に作用すると書いてある。 DECLAIMとPROCLAIMの違いは、PROCLAIMは関…

帰省だん

今日、母の実家である山形から帰ってきた。うちは正月と盆は母の実家で過ごすのが習わしだったのだけれど、去年は母が肺癌の摘出手術を受けたりして行けていなかった。86歳の祖父が危篤状態だと聞いていたので今年ははずすわけにはいかなかった。我々が到着…

CL-HMMのインストールとテスト

FXとかで普通の離散状態、離散行動の強化学習を使うには時系列をそのまま状態とするわけにもいかないので、時系列を離散的な状態にマッピングしてから強化学習したほうがいいような気がする。例えば隠れマルコフモデルのemissionsをレートの時系列として、そ…

with-open-fileの中で中断

無限ループさせてREPLから中断することを前提としているプログラムを書いているときに、ループの中での出力をどうやってファイルに記録するかという問題が出てくる。素直に考えると (defun write-test () (with-open-file (f "/home/masatoi/hoge" :directio…

コンディションの定義と再試行マクロwith-ntimes-retry

証券会社に売買注文を出す処理は失敗することもあるので、再試行できるようにする必要がある。ある処理の中で特定のコンディションが通知されたとき、一定回数再試行するマクロを書くことにした。まずコンディションを定義する必要があるが、コンディション…

いまさらながらニコニコ生放送のベーシックインカムの話を見たのでまとめてみる

ベーシックインカムって,名前は知っているくらいの理解だったけど,ちょっと良さそうに思えてきた. http://www.nicovideo.jp/watch/sm9795672 昨日のニコ生のベーシック・インカムについての議論を文字起こしした 起点: 技術革新によって生産活動に必要な…