用 Emacs Lisp 开发 CGI 程序

Emacs Lisp 作为编程语言也是非常强大的。尤其 Emacs 作为一款编辑器,自带了很多处理文本的函数,用起来很方便。

我一直希望用 Emacs Lisp 作为服务端脚本语言来开发 Web 程序。在网上搜索了很久,还真有人做过类似的事情:http://www.emacswiki.org/emacs/cgi.el。但他封装的还不够彻底,用起来还是挺麻烦,于是自己动手写了一个。目前支持:

  1. script-let,即可在 <% %> 或 <%= %> 之中插入 lisp 代码;
  2. 原生 s-exp 生成 html 文档;
  3. GET/POST 请求支持;
  4. 存取 Cookie。

程序作为 CGI 运行于 Apache 下,这里提供一个简单的求斐波那契数的例程作为演示。

BTW,这也是我第一次使用 Github 托管代码:https://github.com/redraiment/emacs-cgi

#!/usr/local/bin/emacs --script

(require 'cgi)

(cgi/cookie "n"
 (or (cgi/param "n")
     (cgi/cookie "n")
     "15"))

(html
 (head
  (title "Fabonacci 1 -> n")
  (meta (http-equiv . "Content-Type")
        (content . "text/html; charset=UTF-8")))
 (body
  (form (method . post)
   (span "n = ")
   (input (type . text) (name . n))
   (button (type . submit) "Submit"))
  (table (border . 1) (width . "100%")
   (thead
    (caption "Fabonacci")
    (tr
     (th "#")
     (th "Value")))
   (tbody
    <%
    (let ((a 0) (b 1) x)
      (dotimes (i (string-to-number
                   (cgi/cookie "n")))
        (tr
         (td <%= (1+ i) %>)
         (td <%= (setq x a a b b (+ x b)) %>))))
    %>))))

运行效果:

时间: 2024-09-18 07:27:31

用 Emacs Lisp 开发 CGI 程序的相关文章

C、Shell、Perl基于Tomcat开发CGI程序环境配置

基于Tomcat7.0版本配置CGI开发环境,步聚如下: 以我的Tomcat7安装目录为例:TOMCA_HOME = /Users/yangxin/Documents/devToos/java/apache-tomcat-7.0.39 1.打开TOMCA_HOME/conf/web.xml 将CGI的Serlvet配置与URL映射注释打开 <servlet> <servlet-name>cgi</servlet-name> <servlet-class>or

用C++写的CGI程序

经过前面的学习,大家应该能够根据例子用ANSI C为自己的服务器写出CGI程序.之所以选用ANSI C,是因为它几乎随处可见,是最流行的C语言标准.当然,现在的C++也非常流行了,特别是采用GNU C++编译器(g++)形式的那一些(注释④).可从网上许多地方免费下载g++,而且可选用几乎所有平台的版本(通常与Linux那样的操作系统配套提供,且已预先安装好).正如大家即将看到的那样,从CGI程序可获得面向对象程序设计的许多好处. ④:GNU的全称是"Gnu's Not Unix".这

用C++ Builder开发Web程序

Web应用程序是运行在服务器端的可执行程序或动态链接库.它们可以响应用户要求,动态产生超文本页面,并将信息提供给客户浏览器. 由于Web应用程序的标准并不相同,程序的写法各异,这样就给开发者造成不小的困扰,因为开发人员不太可能了解每一种标准的写法.而C++ Builder可以很好地解决这个问题. C++ Builder将Web应用程序的开发封装成组件,使开发者面对一致的开发界面,使用一致的开发原理,惟一不同的地方在于开始产生程序时所选择的程序结构,至于程序的编写细节和方式都一模一样.本文通过两个

如何利用Emacs来调试C++程序_C 语言

俗话说,Emacs是神的编辑器,而Vim是编辑器之神.高手程序员都是用这两样神器进行开发.本人觉得,Emacs之所以厉害,是因为许多在其他编辑器下必须用鼠标点选很多步的操作,在Emacs下都可以通过键盘来完成.大大地节省了你在显示器上找按钮的时间.Emacs在Linux上运行感觉比windows流畅些,用Emacs编辑程序时,手基本不用离开键盘,就可以完成所有的工作.那么今天就让我们看看如何利用Emacs来调试C++程序. 一.安装Emacs和GCC 下载地址:Emacs:http://www.

Eclipse开发Android程序如何在手机上运行

1.设置android手机为USB调试模式 打开手机里面的开发者选项->USB调试 2.通过eclipse上真机测试 没用真机时,用eclipse开发android程序都是点run,然后选择模拟器的.安装好手机的usb驱动后,还是点run,程序就会神奇的在真机上运行了,效果与在模拟器中的一样,而且速度比用模拟器块很多. 如果还是在模拟器上运行,右键->run as->run configurations->target 选项1:总是提示选择设备 选项2:在所有的设备上登陆 选项3:

从根本上改变我们开发Java程序的方式:Lambda

当今世界主流编程语言无不吸纳强大的闭包概念,但有个例外,它就是Java.数年来,Java语言中增加闭包特征的工作看起来毫无进展. 早在15年之前,Scala语言和TypeSafe框架的作者Martin Odersky和Phillip Wadler发布了实验性的"Pizza"项目,由此,人们开始试图将闭包纳入编程语言的基本特征之一.尽管这看起来有点过于复杂,Java社区大概在2008年就有了接纳闭包概念的想法.但由于Oracle对Sun微系统公司的匆忙收购,Java被冷落,Java语言新

使用JBuilder开发J2ME程序

程序 使用JBuilder开发J2ME程序 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb          现在实际应用大部分都是使用JBuilder在进行开发,所以简单介绍一下如何使用.        JBuiler 9(包括JB9)以上都包含了MobileSet和WTK,可以直接用来开发.        使用JB9以上开发J2ME应用时,和使用JB进行一般的开发类似,步骤如下: 1.  新建project,根据需要选择合适的project类型.以下以新建空项

用Struts开发国际化程序思路

程序 对于使用者来说,一个支持国际化的WEB程序具有下面几种形式 1. 根据用户浏览器自动设置显示的语言(无需用户干预)2. 提供用户选择,用户根据自己的需要决定使用何种语言显示3. 结合前两种.系统自动选择一种语言,但同时提供用户根据需要选择 使用Struts开发国际化程序是一件非常便利的事情,我们来看前两种怎么来实现 1. 这是最简单的方式,你不需要修改任何程序,只需要把资源文件按照各个语言翻译一遍并把这些文件按照国际化程序的要求命名好放置同一个目录即可. 例如 ApplicationRes

技巧:PHP开发网站程序代码的优化方法

如何消灭或优化那PHP开发网站程序的代码呢? 这一点上我个人最主要的经验只有两点,一是消除错误的或低效的循环:二是优化数据库查询语句.其实还存在一些其它的优化细节,比如"str_replace比ereg_replace快"."echo比print快"等等.这些我暂时都放在一边,稍后我会提到用缓存来对付过于频繁的IO. 下面我们将三个功能相同,但程序写法不同的函数的效率(消耗的时间)进行对比. webjx.php <?php require_once('Benc