Shammer's Philosophy

My private adversaria

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

ccl-init.lisp

Clozure CL 用初期化ファイルがあるようだ。 Clozure CL Documentationasdfの設定もここに書くようにすれば、毎回実行せずとも済む。何か3rd-partyのライブラリとか使いたい場合もここに書いておけばよさそうだ。asdfをロードするため、以下のような内容でcc…

asdf-install

Lispではライブラリを追加する際にasdf(a system definition facility)というもの?仕組み?を使う。ただ、使えるようにするためにはちょっとした追加作業が必要。Clozure CL の場合は、 HintsForAsdfAndOpenmcl – Clozure CLに説明がある。自分の場合、MacP…

SLIME環境再構築・・・

何がきっかけかわからないが、久しぶりにEmacsでSLIMEを起動したら動作がおかしくなっていた。具体的には、何も文法とかで間違いがなければ問題なく動作しているが、何かエラーが発生した後で復帰できなくなる。SLIMEで、何かエラーが発生すると、 Unbound v…

SKKの不安定さ解消に向けて

SKKを無事にインストールできた、と思っていたが、どうも不安定なところがあった。たとえば、Emacsを起動して初めてSKKを有効にしようとすると、 skk-setup-j-mode-map-options: Symbol's chain of function indirections contains a loop: char-valid-p.と…

OCamlの引数の処理のされ方

たとえば、int 型の引数を2つ受け取る関数があるとする。こんな感じ。 # let add x y = x + y;; val add : int -> int -> int = <fun> # add 10 20;; - : int = 30 # この場合は、add の型は int -> int -> int = となる。意味としては、int 型の変数を2つ受け</fun>…

#useを使う

#useは、インタプリタから別ファイルに書いた処理を実行するためのコマンド(?)。たとえば、sayHello.mlという名前で以下のようなファイルを定義する。 "Hello," ^ "World!"このファイルをocamlのインタプリタ上から以下のように実行。 # #use "sayHello.m…

SKKのインストール

Emacs上でしか動作しないというIME、SKKをインストールしてみた。 仮名漢字変換機能というか、入力変換の仕組みがMS-IMEやATOKなどと かなり異なり、かなり戸惑う。このBlogも、実はSKKを使用して書いている。 慣れない方法で文章を書いているためか、かなり…

OCaml基礎

とりあえず、せっかくインストールしてみたのでちょっとだけ試す。 以下のことがわかった。 変数や関数の宣言は let に続けて記述 []で括ると配列になり、配列内の要素は;(セミコロン)で区切る 再帰関数の場合は、let rec $FunctionName $Arguments = ... …

OCaml環境構築続編

macportでOCamlを入手出来ない問題は、結局プロキシが原因という自分の環境特有の問題だった。とりあえず、プロキシを無効にして $ sudo port install ocamlを実行することで、OCamlのインストールは完了。Terminalで問題なく使用できることを確認し、Emacs…

OCaml環境構築

まずは、OCamlをインストール。 $ sudo port install ocamlしかし、ここでエラー。ログを確認すると、HTTP 407 Error となっている。407 って何だ?Emacs から使いたいので、プラグインを探す。いろいろ調べたが、これが一番良さそう。 TuaregMode http://www…

Mac OS X Lion で NAS に接続できない

Mac

Mac OS Lion にしてから、自宅のNASが使えなくなりました。 どうやら、AFPプロトコルのサポート状況が変わったことが原因のようで。 以前のバージョンと同様に、アクセスできるようにする方法を見つけました。 OS X LION connection error with AFP and work…

いつの間にか変な文字コードに・・・

sbcl の文字コード設定 - Shammerismで、何かうまくいかないという状態になったが、原因はシステムの文字コードがいつの間にかおかしくなっていたことだった。env コマンドで情報を表示すると、LANG が Invalid UTF-8 とかなっていて、dpkg-reconfigure loca…

Emacs行番号表示

対象は、先日インストールしたEmacs 23.2.94 on Mac OS Lion。ソースからビルドして、特に新しいパッケージとか入れなくても実現できたのでメモ。まず、~/.emacs.d/init.el(あるいは.emacs)に以下のように書いておく。 (global-set-key "M-n" 'linum-mode)…

sbcl の文字コード設定

ターミナル内で起動させると、日本語がみんな"?"になってしまうのでちょっと調べてみた。ここの情報が参考になりそうなのでやってみた。 (setf sb-impl::*default-external-format* :UTF-8) (setf sb-alien::*default-c-string-external-format* :UTF-8) こ…

Windowsプログラミング

今度の会社は、Windowsと密接に関わっているプロダクトが多いので、Windowsプログラミングについてちょっと調べてみました。主に調べたのはVisual C++ について。普通の C++ といったい何が違うのか?かなり昔、普通の何も問題のないはずのC++のコードをVisu…

LionでObjective-Cデビュー

昔、ちょっとだけCocoa/Objective-Cをやってみようかな、と思ったことがあったが、時間を確保できずにできなかった。当時は、まだJavaに触れていた時期で、仕事でJavaを使っているとどうもそれ以外の言語をやる、となってもそのモチベーションを維持するのが…

家康と三成

学生時代のことだが、ある後輩からこういう疑問を投げかけられた。戦国時代、秀吉が死んだ後、大半の大名が家康か三成のどちらかを盛り立てようとしていたが、なぜこの2人になったのか、と。この2人が関ヶ原で争って、家康が勝利を収めたのは有名だが、な…

心のダメージ

もはや常識となりつつあるうつ病。こうなってしまったとき、「頑張れ」という言葉は厳禁だと言う。はたから見ると、無気力になって何もやる気が起きないように見えるが、実際はそうじゃない、というのが「頑張れ」厳禁の背景にあると思う。先日、懐かしい人…

BluetoothMouseが切断される問題

MicrosoftのBluetoothマウス、 http://www.microsoft.com/japan/hardware/mouse/bl_note5000.mspxを買ってみた。最初はいい感じだったが、文字入力が長くなると マウスが効かなくなる、という問題にすぐに遭遇。これでは使いものにならない、 と思ったが、ど…

バイナリデータの送信

HTTP GET に続き、POST を書こうとしていたら壁にぶち当たった。どうやら ASCII テキストとバイナリデータでは送信方法に違いがあるようだ。まあ、どの言語でもそうか。sbcl の場合は、データの送受信は socket の作成 作成した socket から stream を生成 …

MacにPukiWikiをインストール

なんかMAMPとかいうパッケージもあるようだが、ApacheとPHPはすでにインストールされているようなので、それを有効にしてそこにPukiWikiだけ追加するようにしてみました。OS再インストールとかに備えて手順をメモしておきます。1.Mac OS X にバンドルされ…

LionにCocoa Emacsをインストール

OSもLionになったし、そろそろCarbonを卒業しようと、Cocoa版のEmacsを使用することにしました。以前も一度挑戦したけれども、インプットメソッドの都合で結局Carbonを使用し続けることに。具体的には、Ctrl+\でOS標準のインプットメソッドの入力切り替えを…

LionにClozureCLをインストール

いつかLeopardにclispをインストールしたが、それとほとんど同じ手順でインストールできる。Lion用のMacPortsをインストールして(2011/08/02の時点ではバージョン2.0.0)、以下のコマンドを実行するだけ。 $sudo port -d install cclLeopardのときは、えー…

SBCL で thread に引数を渡すことができるようになりました

SBCL で thread を使ってみたが引数は使用できず - Shammerismでやったときはできなかったが、新バージョンではそれができるようになった。以下、使用例。 * (sb-thread:make-thread #'info :arguments '("Hello")) Hello #<SB-THREAD:THREAD FINISHED values: NIL {1002AD4043}> * :aruguments というキーワード</sb-thread:thread>…

sbcl http GET client

とりあえずですが書いてみました。 (require :sb-bsd-sockets) (defpackage web (:use :cl :sb-bsd-sockets)) (in-package web) (defun resolve-hostname (name-or-IPv4Address) (car (host-ent-addresses (get-host-by-name name-or-IPv4Address)))) (defun…

SBCL で thread を使ってみたが引数は使用できず

sb-thread:make-thread 'Function という形で実行できるようだ。 * (defun hello () (format t "Hello~%")) HELLO * (hello) Hello NIL * (sb-thread:make-thread 'hello) Hello #<SB-THREAD:THREAD FINISHED values: NIL {1002A424E3}> * 引数なしは簡単に実行できた。でも、引数を使用するとうまくいかない。 * </sb-thread:thread>…

Lisp コンパイル比較

clozure と clisp と sbcl でのコンパイル方法を比較。すでに main という何らかの関数が定義済みで、test という名前のバイナリで保存するものとする。 (defun compile () #+CCL (save-application "test" :toplevel-function #'main :prepend-kernel t) #+…

ポリシーVSマネー

仕事をしていれば、お客様と会話することもある。その会話の中で、「我々はあなた方にXXを求めているから高いお金を支払っているのです」と言われることもある。これ自体は別になんてことないやり取りだが、この「XX」に来るのが、 本来提供しているサービス…

転職が決まって

会社を辞めることになりました。数日前から水面下では動きがあったものの、公開されたのは本日。決まってから公開まで、それを隠すことに何かプレッシャーのようなものがあった気がする。今日、自分の転職を知ったある人から、「なんかスッキリした感じ」と…

car とか cdar とか cddar とかいろいろ

リストやセルやコンスから決まった箇所のデータを取り出したい、というときに、car や cdr を駆使することになる。car はコンスの左側を取得、cdr はコンスの右側を取得、というのが基本。まあ、これで悩むことはまずない。でも、これらは複雑に絡み合って、…