ltk と Tk との接続

管理者権限の無いマシンで Common Lisp の GUI 開発をする場合,GUI ツールキットをローカル・ディレクトリにインストールせざるを得ない.管理者権限の無いマシンで ltk を使う必要に迫られたので,Lisp コードからどのように Tk を呼び出しているのか調べてみた. .... »

Lisp のストリームあれこれ

peek-char の便利な機能 ストリームから文字を peek する際,peek-char の第 1 引数に t を指定すると空白文字をスキップしてくれる.次に read-char を実行すると,スキップ後の 1 文字を返す. .... »

UC Davis の Introduction to Graphics Architecture (EEC 277)

YouTube で UC Davis の講義「Introduction to Graphics Architecture」を視聴し始めました.2009 年に撮影されたようなので今から約 10 年前の講義ということになります.コンピュータ・グラフィックスのハードウェア的側面を扱った講義で,第 1 回の講義を聞いたらとても良かったので,ここに感想とメモを残しておきます.全 14 回を制覇できるかわかりませんが,視聴する度にこのページを更新します. .... »

ASDF3 on Clozure CL does not search ASD files under the symbolic links

I put all my lisp projects under the directory git-repos and set symbolic links to each projects from ~/common-lisp. ASDF3 on SBCL loads ASD files under the symbolic links recursively while that on Clozure CL doesn’t. If you add those links to source-registry they get loaded on CCL too. Here is the snipped for CCL to add all the links and directories under ~/common-lisp. .... »

Lisp の Sequence 型のまとめ

Common Lisp のソート関数や探索関数は,引数にシーケンス(SEQUENCE)型のオブジェクトを取る.シーケンス型はベクトル(VECTOR)型とリスト(LIST)型の抽象型なので,ベクトルとリストのいずれもそれら関数に渡すことが出来る.では配列(ARRAY型)を引数に渡したい場合はどうか? Common Lisp ではベクトルは 1 次元配列と同じなので,シーケンスを引数に取る関数に 1 次元配列を渡すのは問題ない. Common Lisp における配列とベク .... »

コードリーディング: Lack の Session ミドルウェアを理解する

Webアプリケーションを構築する際にはユーザのセッション管理が必須である.今回は lack-middleware-session のソースを読みながらSessionミドルウェアの使い方を学ぶ.本稿の最後ではSessionミドルウェアを使ったサンプルWebアプリケーションを構築する. Sessionミドルウェアの概観 Sessionミドルウェアはセッション変数として,文字列をキーにしたハッシュテーブルを提供する.つまり,セッション毎にハッシュテーブル .... »

Roswell 環境下でのローカル・プロジェクト管理入門

この記事は Lisp Advent Calendar 2017 の4日目の記事として書かれました.コメント,質問等は @waterloo_jp まで. 「 Lisp のパッケージ管理入門.Quicklisp,ASDF,Roswell の違いなど 」では,Quicklisp,ASDF,Roswell の違いを説明し,Roswell の導入部分を解説しました.ここでは,もう少し踏み込んで,自分で開発するプロジェクト(ローカル・プロジェクト)を Roswell の環境下で管理する方法を説明します.本稿の最後で .... »

Lisp で CouchDB の Getting Started を始めてみる

CouchDBオフィシャル・ドキュメントの Getting Started をLispを使ってやってみた.CouchDBはRESTfulなAPIを提供しているので,特別なドライバを使わなくてもHTTPクライアントがあればDBを操作できる.ここでは,LispのHTTPクライアント・ライブラリ Dexador と,高速なJSONエンコード/デコード・ライブラリ Jonathan を使って,CouchDBと通信する.どちらも日本を代表する若手Lisperによって書か .... »

コードリーディング: Lack の Mount ミドルウエアを理解する

前回 は Lack のアプリケーションのコードを追い,ミドルウェアの使われ方を理解した.今回はミドルウェアを一つ取り上げる.今回取り上げるのはMountミドルウェア(lack-middleware-mount)で,リクエスト・パスに応じたルーティングを司る.最初にミドルウェアのソースを読み,最後にMountミドルウェアを使ったサンプルWebアプリを作成する.コメント,間違いのご指摘等は [@waterloo_jp](https://twitter.com/waterloo_jp) まで. .... »

Lispの変数とシンボルは同じか?

David S. Touretzkyの"COMMON LISP: A Gentle Introduction to Symbolic Computation"では,変数に値を代入するという言葉を使い,束縛という言葉を使いません.同書158ページには「シンボルは値と束縛されない.変数だけが値と束縛されうる(Symbols are never bound; only variables can be bound)」と,意味深なことを言っています.そこで,シンボル,変数,束縛について調べてみました. まず,ANSI X3J13のFinal Draftによる .... »

wshito on #lisp,

Hugoのサマリ長(Summary Length)

Hugoではトップページの投稿一覧に表示するサマリの長さがデフォルトで70でした.英語の場合は70単語で良いのですが,日本語では70文字になってしまい圧倒的に少なすぎました.先日ようやく最新のMasterにデフォルトのサマリ長を変更するコードがマージされました. Make SummayLength configurable #3735 Change SummaryLength to be configurable #3924 リポジトリから最新バージョンをビルド,インストールし,config.toml に summaryLength = 200 と指定することで,デフォルトのサマ .... »

Lispのダイナミック・スコープとスペシャル変数

Common Lispのダイナミック・スコープについて勉強したのでまとめてみた.まず,要点は以下の通り. Lispのスコープは,レキシカル・スコープとダイナミック・スコープの2種類ある. ダイナミック・スコープに従う変数をスペシャル変数という. スペシャル変数は defvar か defparameter によって作成される. スペシャル変数と同名の変数が作成されると,スコープを超えて同名のスペシャル変数全てが新しい変数を参照する.つまり,スコープを超えて .... »

wshito on #lisp,

AsciiDocでBouncing Ball

HTML5のCanvasを画面いっぱいに表示して,Webページにアニメーションを重ねる方法を説明します.実際のデモであるこのページは,AsciiDoc原稿にCanvasを埋め込んで作成したので,AsciiDocでの設定方法についても説明したいと思います.アニメーションのバウンシング・ボールは,中1の息子が夏休みの自由研究で作った Scratchプロジェクトへのオマージュです(笑). ソースコードはこち .... »

Hugo で AsciiDoc 原稿を書く際の留意点

Hugo は静的にWebサイトを生成するプログラムです.データベースを使って動的にページを生成するCMSと違い,ローカルに作成された全原稿から予めサイト全体のページを生成します.カテゴリやタグのページも静的に生成されます.このサイトも Hugo で作成しています. 原稿ファイルをHTMLに変換するのは Hugo ではなく Hugo が起動する外部プログラムです. Supported Content Formats にサポートする原稿のフォーマットが載っています.拡張されたMarkdo .... »

アセンブリを始めてみる

マイコンをもっと極めたい.その一心でひたすら低水準(マシン寄り)の勉強をしていると,結局アセンブリやリンカスクリプトの勉強に辿り着く. 坂井氏の「12ステップで作る組込みOS自作入門」をやってH8のアセンブリを勉強するか,それとも,もっと基礎から書かれたCASLの解説書の方が良いか.CASL IIの本ではKindleで読める「アセンブリ言語スタートブック」が良さそうだ.でもシュミレーターで動く言語じゃ .... »

次のマイクロマウス製作に向けて

初出場の2016年九州地区大会では完走できなかった.今年は初号機を調整して完走を目指すと同時に,もっと速いマウスの製作にも挑戦したい.DCマウスも作ってみたいが,まだ完走も出来ていないので,今年も基本に忠実にステッパーでいこうと思う. 今年は新しいスキルを身につけるために,以下のことにチャレンジしたい. 3D CADを使って機体を設計する. KiCadを使って基板を設計する. 新しいMPUを採用する. マウスの .... »

uvbook -- libuvの仕組みとidle-basicの解説

libuvのチュートリアルuvbook,第2節のIdlingプログラムを解説します.libuvはNode.jsの根幹部分を担うCライブラリです.IdlingプログラムのLispによる実装例は後ほど別ページとして投稿します.間違い,コメント等は@waterloo_jpまで. 下のコードは,uvbookのIdleハンドル使用例です.ここでは下のコード例を追いながら,Idleハンドルの使い方と,libuv .... »

uvbook for Lisp -- Hello World

ここでは,libuvのチュートリアル本,uvbookの第2.2節に載っている以下のHello WorldコードをLispで実装する手順を解説します.まず始めにCFFIを使って直接libuvの関数を呼び出す方法を解説し,最後にlibuvラッパーのcl-libuvを使った実装方法を解説します.間違い,コメント等ありましたら,@waterloo_jpまでお願いします. .... »