caddy ace

看了10天的golang, 写了一些东西,参考tj的n写了gvm环境版本控制,不过是用shell写的。

今天在migrate模版引擎的时候, 之前是用martini+ ace 写的站点。 偶然看到了一个封装很规范的go服务器caddy, 所以想要migrate,顺手试了一下给caddy写扩展,项目

caddy-ace

caddy为扩展提供了RegisterPlugin方法,一般在插件包的init函数中调用,使用方法如下:

caddy.RegisterPlugin("basicauth", caddy.Plugin{
    ServerType: "http",
    Action:     setup,
})

每个插件作为一个包至少有一个或类似于setup的方法将其和Caddyfile中指明的配置关联起来。

在setup中初始化了一个相应插件的strut,用于编写插件的实际处理流程。

All in all, caddy是个易于扩展的服务器,但其插件必须在编译期确定,通过配置Caddyfile,可以实现预期内的不停机重启, 但大部分时候不适合作为迭代快速的实际提供服务的服务器。

最近的文章

Ruby 使用 Fiddle 调用 C 函数

写一个c函数// split.cdouble split(double num){ double ret = 0; ret = num / 2; return ret;}编译成动态库gcc -o libsplit.so -shared split.c在 split.rb 里调用 libsplit.so 里的 split 函数require 'fiddle'# Open the filelibsplit = Fiddle.dlopen('./libsplit.so')# Load th...…

继续阅读
更早的文章

ruby RegExp

Ruby对正则表达式支持非常好,所以对我经常使用到的做一个总结,包括Ruby中正则的写法,匹配的方法,替换,分组匹配等。1.Ruby中正则表达式的写法主要有三种 在//之间,要进行转义 在%r{}内,不用进行转义 Regexp.new()内,不用进行转义/mm\/dd/,Regexp.new(“mm/dd”),%r{mm/dd}三者效果相同,实质都是新建了一个Regexp的类。2.匹配的两种方法=~肯定匹配, !~否定匹配。=~表达式返回匹配到的位置索引,失败返回nil,符号左右内容...…

继续阅读