ラベル Lisp の投稿を表示しています。 すべての投稿を表示
ラベル Lisp の投稿を表示しています。 すべての投稿を表示


2020年2月2日日曜日

ContOS8 StumpWM & Emacs 26.3


このエントリーをはてなブックマークに追加


気分を変えるために StumpWM を久々に動かしてみた。
StumpWM は Common Lisp で記述されたシンプルなウインドマネージャーで、タイル型と呼ばれるウインドマネージャーです。キーボードを中心に操作を行い、Emacs と相性が良いです。

xrdp で動かす場合の導入のメモを残しておきます。roswellのおかげですごく簡単になっています。



2016年2月15日月曜日

CLML.LAPACK-ENVIRONMENT::DYNAMIC-HEAP-SPACE-TOO-SMALL


このエントリーをはてなブックマークに追加


SBCLで機械学習パッケージのCLMLを導入しようとすると、以下のエラーが出る場合があります。
When you try to install CLML on SBCL, you might encounter the blow problem.

COMMON-LISP:SIMPLE-TYPE-ERROR : CLML.LAPACK-ENVIRONMENT::DYNAMIC-HEAP-SPACE-TOO-SMALL does not designate a condition class.

この理由は実行環境のメモリ不足です。
This reason is too small memory size of lisp execution environment.

以下で解決できます。
The solution is below:

$ sbcl --dynamic-space-size 4gb

デフォルトでSBCLは1GBです。これは、CLMLをコンパイルするには少なすぎます。
Default SBCL memory size is 1gb . It's too small to compile CLML on SBCL.


2014年5月25日日曜日

Common Lisp のスレッド処理


このエントリーをはてなブックマークに追加


Common Lispにおけるスレッド処理は処理系依存であり、利用する場合はなかなか悩ましい問題です。そんな頭痛の種を解決してくれる一つの手段として、bordeaux-threads というライブラリがあります。

bordeaux-threads は処理系依存のスレッド処理をラップして、共通の記述が可能となる事を目的として開発されたライブラリです。bordeaux-threads は QuickLisp から導入可能です。
(ql:quickload :bordeaux-threads)

利用イメージは以下となります。



2014年5月4日日曜日

Helm から Hyerspec/CLtL2 を引く


このエントリーをはてなブックマークに追加


** 2014/05/11 slime をバージョンアップ したらHyperSpec が引けなくなったので修正

HyperSpec と CLtL2 を Helm から引けるようにします。 anything とまったく一緒です。

HyperSpec は ANSI Common Lispのリファレンス、CLtL2 は Common Lisp the Language, 2nd Editionの略記で仕様書風の読み物。CLTL1 → ANSI と仕様がFIXするまでの経緯等にもついて記載されているらしいです。私はほぼ HyperSpec しか使っていません。


設定方法は以下


2014年2月19日水曜日

Clack & Swank によるインタラクティブなWebシステム開発


このエントリーをはてなブックマークに追加


以前にこんな記事 「実行中 Common Lisp アプリのホットディプロイ」 を書きましたがその続きです。

Swankを使って起動しているCommon Lisp処理系に接続して動的に実行環境を操作しましたが、それをもう少し実践的に使ってみます。



2013年12月24日火曜日

続:イブの夜はIaaSをCommon Lispでキめる!


このエントリーをはてなブックマークに追加


2つのアドベントカレンダーの合同ネタです。

OpenStack Advent Calendar 2013 JP
Wakame Users Group Advent Calendar 2013

Common Lispの基礎に関しては2012年の OpenStack Advent Calendar 2012 JP 12/24 イヴの夜はOpenStackをCommon Lispでキメる!をご覧ください。

Common Lispを使って、OpenStackとWakame-VDCの操作を行いながら、Lispの世界を見ていきましょう。



2013年12月15日日曜日

世の中の Common Lisp OpenStack Clients を眺めてみる


このエントリーをはてなブックマークに追加


タイトルの通りです。気になったので調べて見ます。

github で 「openstack common lisp」で検索してみたところ・・・

2013/12/15


4つのリポジトリが見つかりました。


russell/cl-openstack

 とてもシンプルな実装でnovaに対して最低限の操作が実装されています。マクロを活用して実装されておりLISPっぽいつくりです。行数も少ないので、入門として読むのに適していると思います。


novaを操作するための関数をマクロによって定義しています。
(defmacro nova-call (name args documentation lambda-list &body body)
  (let ((documentation (if (stringp documentation) documentation "")))
    (destructuring-bind (&key url content (method :get)) lambda-list
      `(defun ,name ,args
         ,documentation
         (assert *token*)
         (assert *service-catalog*)
         (let* ((service-url (car (service-catalog-query "compute")))
                (url (merge-uris ,url service-url)))
           (let ((data (restart-case
                           (rpc-call url ,method ,content)
                         (retry ()
                           :report "Retry Openstack Call."
                           (rpc-call url ,method ,content)))))
                 ,@body))))))


stackforge/cl-openstack-client

 こちらも機能としてはシンプルですが、CLOSを活用した実装がなされています。

(defclass resource ()
  ((id :initarg :id
       :reader resource-id)
   (connection :initarg :connection
               :reader resource-connection)
   (attributes :initform (make-hash-table))))

(defmethod resource-error-class ((resource resource))
  'openstack-error)

(defmethod print-object ((resource resource) stream)
  (if (slot-boundp resource 'id)
      (print-unreadable-object (resource stream :type t :identity t)
        (format stream "~A" (resource-id resource)))
      (print-unreadable-object (resource stream :type t :identity t))))

(defmethod decode-resource (resource parent type)
  ;; TODO (RS) currently extra keys are just ignored in all resources,
  ;; it would be best if they were saved somewhere.
  (apply #'make-instance
         type
         :connection (resource-connection parent)
         :parent parent
         (concatenate 'list
                      (alist-plist resource)
                      '(:allow-other-keys t))))

(defmethod decode-resource-list (resources parent type)
  (loop :for resource :in resources
        :collect (decode-resource resource parent type)))

(defgeneric resource-authentication-headers (resource)
  (:documentation "Return a list of the authentication headers that
  should be added to the request."))


AeroNotix/cl-stack

 こちらは先の二つと違い、Novaではなくオブジェクトストアに対する基本的なファイルアップロードを実装しているようです。

(defmethod upload-file ((client openstack-client) (filename string)
                        &key (container "/testainer") (content-type "application/text") headers)
  "Upload file will upload `filename' into the ObjectStore."
  (let* ((url (format nil "~a~a~a/~a"
                      *computeurl*
                      (slot-value client 'tenantid)
                      container
                      (pathname-name filename)))
         (md5-hash (md5-digest-file filename)))
    (base-request url :PUT
                  :content-type content-type
                  :content (pathname filename)
                  :headers (base-headers client headers)
                  :after-request #'(lambda (request)
                                     (let* ((recvdheaders (nth 2 request))
                                            (etag (cdr (assoc :ETAG recvdheaders))))
                                       (string= etag md5-hash))))))

irixjp/cl-openstackclients

 どっかでみたリポジトリですね。全然できていませんXD




この4つを眺めてみましたが、実装としてはどれも実験的、といった印象です。

Lispっぽい使い方をOpenStack上で実装しているものや、アイデアのある方はぜひ教えてください。


2013年3月23日土曜日

実行中 Common Lisp アプリのホットディプロイ


このエントリーをはてなブックマークに追加


Practical Common Lisp の一節にこんな文章があります。

2. Lather, Rinse, Repeat: A Tour of the REPL



2012年12月24日月曜日

OpenStack Advent Calendar 2012 JP 12/24 イヴの夜はOpenStackをCommon Lispでキメる!


このエントリーをはてなブックマークに追加


カレンダーネタ 第・・・いくつだっけ??



2011年6月9日木曜日

CL clack & cl-markup GET/POST/SESSION


このエントリーをはてなブックマークに追加


Clackをもう少し。Webで必須なデータの受け渡し部分について試してみた。

cl-markupはcl-whoと挙動が違うので使うときは注意が必要。



2011年6月7日火曜日

CL clack & cl-markup


このエントリーをはてなブックマークに追加


Common Lispで書かれたシンプルなWebサーバとタグビルダー(?)。試行錯誤しながらちょっと使ってみた。

http://e-arrows.sakura.ne.jp/2011/05/what-ive-created-in-ariel.html



2011年6月2日木曜日

CL で Livedoor Blog へ投稿


このエントリーをはてなブックマークに追加


変数にID、API Key、自分のブログ用AtomPubエンドポイントを設定すれば使える(はず



2011年6月1日水曜日

Common Lisp で WSSE認証


このエントリーをはてなブックマークに追加


Win7 64 + Clozure CL

Hatenaはうまくいくけど、Livedoorは上手くいかなかった・・・何でだろう?

間違ってたので修正。Livedoorも上手くいくようになった。



Hash Digest の算出


このエントリーをはてなブックマークに追加


ironclad というパッケージを使う。quicklispから簡単にインストール可能。

文字列のハッシュ例
CL-USER> (ironclad:byte-array-to-hex-string
               (ironclad:digest-sequence :sha1
                  (ironclad:ascii-string-to-byte-array "password")))

"5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"

抜粋
・Supported ciphers: AES, DES, 3DES, Blowfish, Twofish, RC5, RC6, Arcfour (RC4)
・Supported hash functions: MD4, MD5, SHA1, SHA256, Tiger, Adler32, CRC32 (also supports tree hashes)
・RFC2104 HMACs and RFC4493 CMACs
・Public key schemes: DSA signing and verification
・Key derivation functions: PBKDF1, PBKDF2 (RFC 2898)


2011年5月31日火曜日

Hunchentoot で2chブラウザ その3


このエントリーをはてなブックマークに追加


相変わらず試行錯誤しています。いくつか機能追加してみました。

・スレッド編集(2chまとめサイト作るノリのものです。ここを参考にしました)
 強調ボタン、AAボタンはおいてあるだけ。これから作る予定・・・?
・アンカーリンクの削除(ホントはアンカーに基づいてスレ順を組み替えたい)
・自動リンク
・YouTubeリンクの展開
・画像リンクの展開
・ちゃんとセッションを使うようにしました(2chで教えて貰いました。ありがとうございます)
・編集したスレ&レスを記録して一覧で編集済みのマークが出るようにしました。

・相変わらずIEでトップページが動きません・・・
・正規表現がバックスラッシュ大杉で訳わからなくなってます。
・Win7 + CCL + Chrome で動作確認しています。
・一部の板で動きません。どうもURLの形式が通常と違う板があるようです(自分が見る板は問題ないので放置予定)

・:jpライブラリはこちらのものに、clozure対応パッチを当てたものを使っています。



2011年5月25日水曜日

Hunchentoot で2chブラウザ その2


このエントリーをはてなブックマークに追加


すこし改良してみた。

javascriptをいじってたらIEで動かなくなってしまった。

Win7 64nit + CCL + Chrome で動作確認。

いまいちセッションの取り扱いがわからない。
一人用だし、グローバル変数にぶち込んで使うのもありかな?

parenscriptを使ってみようと呼び出してるけど使っていない。

*default-directory* を設定して、ファイルを配置して load したら、(2ch-editor:start-2ch-server)で localhost:8080で使用可能。

名前がeditorってなってるのは、まとめブログの支援ツールにしようと思ったんだけど、セッションがわからなかったので断念したから。。。



2011年5月18日水曜日

Hunchentoot で2chブラウザを作ってみた


このエントリーをはてなブックマークに追加


この程度でかなり苦労してしまった・・・

Win7 + CCL で動作してます。

参考>> HUNCHENTOOT - The Common Lisp web server formerly known as TBNL
参考>> CL-WHO - Yet another Lisp markup language
参考>> Common Lisp で Web アプリを作るためのブランクプロジェクト
参考>> (Lisperp sakuranbo) => t を目指す日記 会社から投稿テスト



2011年5月14日土曜日

cl-twitter を使ったフォロワーを自動で増やすサンプルプログラム


このエントリーをはてなブックマークに追加


Twitterのフォロワーを増え方を調査した時に見つけた、フォロワーを自動で増やすプログラムをまねて作ってみた。

1週間ほど動かしたところ、1000 → 3000までフォロワーが増えました。

勉強がてら作っているので、かなりコードはしょぼいです。エラー処理はコンディションが良く分からなかったので無視。リスト処理も集合処理を知らなかったので力技で処理してます。



2011年5月10日火曜日

Emacs anythig から hyperspec と cltl2 を引く


このエントリーをはてなブックマークに追加


こちらを参考に、そのままで動きました。
http://d.hatena.ne.jp/kitokitoki/20100912/p1

私はCygwinを使っていないですが、w3m.exe を cygwin でコンパイルされたものを利用しているのでパスの与え方だけ注意。

cltl2.el http://www.uuhaus.de/software/cltl2.el
ドキュメント http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/lang/lisp/doc/cltl/cltl_ht.tgz

dot.emacs は以下



Emacs Slime で auto-complete


このエントリーをはてなブックマークに追加


こちらを参考にやってみた。
http://dev.ariel-networks.com/wp/archives/462

NTEmacsではこのままじゃ旨く行かなかったので、以下を参考に修正。
http://calltopower.wordpress.com/2010/12/29/lisp-emacs-autocomplete/

いい感じだけど、もともとfuzzy補完を使ってて、一緒に動かすと癖のある動作をするから慣れるまでちょっとかかりそう。

修正した dot.emacs