lisp

;;どう書く?org 条件を満たす行を取り除く をcommonLispで

これは簡単。 あえてcl-pprecを使ってみた。 ;;どう書く?org 条件を満たす行を取り除く (require :asdf) (asdf:oos 'asdf:load-op :cl-ppcre) (defun remcomment(in out) (with-open-file (is in :direction :input) (with-open-file (os out :direction :o…

mysqlとclsqlで文字化け その2

文字化け解決したっぽい。 [mysqld]にskip-character-set-client-handshakeって書いとくとサーバ側の文字コードをクライアントも使うらしい。 /etc/mysql/my.cnfはこう変更。mysqlはコメントした。 [mysqld] skip-character-set-client-handshake default-ch…

mysqlとclsqlで文字化け その1

emacs/slimeから接続して結果を取得しても、shellからつないでも日本語が化ける。 char(10)なカラムに "あいうえお"をInsertすると結果は "あいう■"みたいにつぶれる。 char(12)だと "あいうえ"になったから、一文字3バイト??になってるのか??わからん…

どう書く?org ピラミッドを作る を common lispで

こんな感じ。 マクロを使いたくなる年頃。 あまり意味はないところが将来見たら恥ずかしいんだろな。 (defmacro string-times(n str) `(apply #'concatenate (cons 'string (make-list ,n :initial-element ,str)))) (defun pyramid(n) (dotimes (var n) (fo…

festival入れてみた(音声合性)

どう書く.orgのお題を眺めていたら、音声合性でhello worldなんてお題が。 そんなのできんのか??、とのぞいてみたらfestivalっていうのがあるらしい。おもしろそうなので入れてみる・・・。 色々やったけど、結局はドキュメント通りでよさそう。 やっぱ最…

どう書く?org ウインドウの表示 を common lispで

久しぶりにどう書く.orgの続き。 僕が先に進よりお題が先に追加されてて永遠に追い付けないような気がしてきた。GUI表示ってどうやればいいの?というところからわからないので、「Common lisp GUI」で検索。 一番最初に見付かった日本語サイトにLTKって書い…

seriesと遅延評価

seriesで遅延評価されているか確認。 なんだかまたhaskellさわってみたくなってきた・・・。 前よりはわかること増えてるんじゃないかって思えるし。 ; SLIME 2006-11-26 CL-USER> ;;seriesで遅延評価の確認 ; No value CL-USER> (require :series) ("SB-CLT…

common lispがはやらない理由(かもしれない)

色々うまくできんかったので八つ当たり。0.括弧。色々な意味で使われてて、使われ方にも統一がないんじゃないか? (c d">*1 と (a b c d) と書くときがあっていちいち覚えていられない。 前置は別にいいと思う。僕は。 1.日本語の情報が少ない。 文法解説は…

CommonLisp Series

series入れてみた。 リファレンスどっかにないかなぁ。 ; SLIME 2006-11-26 CL-USER> (require :asdf) NIL CL-USER> (require :asdf-install) ("ASDF-INSTALL") CL-USER> (asdf-install:install :series) Install where? 1) System-wide install: System in …

どう書く?org 税込み価格への修正 を common lispで

つぎは税込み価格への修正 ・・・lispの正規表現ライブラリしらん。 ・・・lispでの回答を先に見てしまった。まぁいいや。 cl-ppcreというのがあるのか。あとは調べて頑張る。 cl-ppcreのリファレンスは↓ここ http://weitz.de/cl-ppcre/ おお。結構便利だ。 …

どう書く?org ;Hello, world! を common lispで

(princ "hello world") っと。

どう書く?org ;n人中m人が当選するくじ を commonlispで

例外処理はいいかげん。 なんだか汚いソースだなぁ・・・。 ;;n人中m人が当選するくじ (defun make-targets(n) (let ((arr (make-array n))) (reduce #'(lambda (ar i) (if (null ar) (list "0") (append ar (list (princ-to-string (length ar)))))) arr :i…

どう書く?org 指定されたフォルダ以下のゴミ掃除 を commonlispで

どう書く.orgのお題をやってみる。 まずは「指定されたフォルダ以下のゴミ掃除」なんだけど、いきなりディレクトリの一覧のしかたがわからん。 調べる・・・。 directoryでとれるみたい。・・・pathnameの使いかたがよくわからんぞ。 googleに聞いてみてもあ…

文字コード

文字列の文字コード変更は見つからない。 が、いろいろ見てたらファイルの文字コードを指定してOpenする方法はあった。 そのうちいるようになるかもしんないから書いとく。 SBCLでは通ったけど、External-Formatに何を指定できるのかは処理系依存らしいから…

CommonLispで分からないことリスト その0

ちょっと何か書いてみようと思って、すぐに詰まった。 古典的なCGIを書こうと思ったんだけど、 ・文字コード変換 ・URLエンコード、デコード ってどうすりゃいいのかわからない。 標準ライブラリとかCLISP、SBCLのライブラリに入ってるのか、入ってないのか…

common lispでcgi

SBCLでコンパイルするのも面倒な気分。 なぜかエンドユーザの会社にいって障害対応なんかしたので今日は疲れているのです。 でも疲れている時に限って色々やりたくなるのはなんでだろ?ともあれ、今日はCLISPでCGI POSTする側はこんな感じ。 #!/usr/bin/clis…

SBCLでプロセス間通信

会社でとんでもないことが発生していたのでずいぶん間が空いた。 まぁ、だれも読んでないからいい。とりあえずサーバ側 面倒だからインデントも整形しない。 (require :sb-bsd-sockets) (defpackage "SBCL-FAST-CGI" (:use "COMMON-LISP" "SB-BSD-SOCKETS") …

CommonLispで何かを作る 4 SBCLでCGI

CGIって #!sbclのパスその後にプログラムを書くって感じでいいと思うんだけど、sbclのパスってどこなんだろ? findで調べんのかなぁ、って思ってたら昔書いたメモ発見。 which xxxでパスがわかるってさ。 which sbclで /usr/bin/sbclて返ってきた。 というわ…

CommonLispで何かを作る 3 apacheを入れる

まずはApacheを入れる。Apacheのインストールと設定 インストール自体は簡単。 UbuntuだからSynapticパッケージマネージャでApacheを選ぶだけ。 あぁ簡単。 Synapticパッケージマネージャを立ち上げて「Apachem」で検索。 ん??Apacheって1.3xx系と2.xxx系…

CommonLispで何かを作る 2

Webアプリを作るのはいいとして、どうやって作ればいいんでしょう?? SBCLを使ってるんだけど、Webアプリ作るフレームワーク見たいのあるのか? 軽く調べてもない。聞いたこともないから多分ないんだろう。 単純なCGIでいいや。と、いいつつ実際にCGIで何か…

CommonLispで何かを作る 1

ANSICommonLispとOnLispはざーと流し読みした。 最初は練習問題をときながらちびちび読み進めてたんだけど、だんだん面白そうなところだけ先に読み出してしまう。 でー。大体は読んだ。ポールグレアムだから読みやすかったし、なんとなく分かってきたような…

2分検索

マシン起動後一回しかでないバグのテストは疲れる。 コンパイルしてテストして再起動して・・・。 再起動してて暇な間に練習。 (defun oserch(bt a) (oserch_ bt a 0 (length bt))) (defun oserch_(bt a low high) (if (> low high) nil (let* ((i (truncate…

とにかく使わないと

覚えられない。日常的に書かないとネイティブにはならない。 小さくてもいいからとにかく書く、と心に決めた。(明日あっさり忘れることも十分ありえる) (defun makeArg(prefix c) (cond *1 "\"" (makeArg prefix (- c 1)))))) (makeArg "data.1." 10)