Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@mori-dev@github

emacs で動く Elserv という HTTP サーバを見つけました

emacs で動く Elserv という HTTP サーバを見つけました。Wanderlust で有名な Yuuichi Teranishi さん作です。elisp を学ぶうえでの参考になるかもしれません。ソースコードは公式ページ からダウンロードできないようです。Ubuntu ならパッケージ化されているため、apt でインストールできます。ちなみに sudo apt-get source elserv でソースを取得できます。

$ sudo apt-get install elserv 
...
以下の特別パッケージがインストールされます:
  flim
提案パッケージ:
  emacs-wiki mhc xemacs21-bin semi wl wl-beta
以下のパッケージが新たにインストールされます:
  elserv flim
...
続行しますか [Y/n]? 

emacs23 でも、以下の設定で動作を確認できました。

(require 'elserv)
(elserv-start 8088)
(require 'es-monitor)
(require 'es-wiki)
(elserv-package-publish (elserv-find-process) "/wiki" "wiki")
(require 'es-demo)

試しに、以下を評価して、http://localhost:8088/ へアクセスすると、foo と表示されました。

(elserv-publish (elserv-find-process 8088) "/"
                :string "foo"
                :content-type "text/plain")

README.ja を引用します。

Elserv -- Yet Another HTTP Server on Emacsen

Elserv は Emacs 上で常駐して動く HTTP サーバです。

Emacs 自身にはサーバの機能がありませんので、専用のサーバプロセス
(ruby スクリプト)をバックエンドで立ち上げ、そのプロセスと通信することに
よってサーバ機能を実現しています。

特徴:

* 手軽に Web サーバを立ち上げられる (Emacs のコマンドを実行するだけ)。
* Emacs lisp で動的コンテンツを作成できる。
* コンテンツの置き換えは eval するだけで OK。
* HTTP 1.1 GET, HEAD, POST に対応。

必要なもの:

* Emacs (Emacs 20 or XEmacs)
* APEL, FLIM
* ruby (1.6.3 or later)

インストール:

* アーカイブを適当なところで展開します。
* `make install' を実行します。
(XEmacs パッケージとしてインストールする場合は `make install-package'
 を実行します。)

使い方:

(require 'elserv) したあと関数 elserv-start を実行すると
サーバが立ち上がります。
デフォルトのままだとポート番号は 8000 番となります。

そのままではほとんどコンテンツがありませんので、
関数 elserv-publish を使ってコンテンツを登録してください。

es- で始まるファイルに定義されたアプリケーションは、
関数 elserv-package-publish で登録できます。
例えば、es-wiki.el に定義された wiki サーバを /wiki に登録するには
以下を実行します。

(elserv-package-publish (elserv-find-process) "/wiki" "wiki")

関数 elserv-stop を実行するか、バッファ "*elserv*.." を消すと
サーバプロセスが終了します。

"*Log of elserv*..." というバッファにアクセスログが残ります。

アプリケーション:

es-demo.el:    デモ用のサンプルサーバです。
es-wiki.el:    emacs-wiki を使った Wiki サーバです。
es-mhc.el:     MHC を使ったスケジュールサーバです。
es-monitor.el: publish されているコンテンツの一覧を表示します。
               デフォルトで /monitor に publish されています。

remote.el:     web ブラウザ経由で Emacs を操作するためのサーバです。
web-custom.el: web ブラウザ経由で Emacs をカスタマイズするためのサーバです。

同様のツールに、elnode というのもあるようです。

8
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
8
Help us understand the problem. What is going on with this article?