[新闻] D Web Template, Fastcgi4d , FlvGet
sleets
2011-02-20
sleets 写道 3个D写的小程序,都是Web相关的。
D Web Template 这个是使用dmdscript实现的模板, 语法还算灵活。 使用pcre替代了dmdscript的regexp, 因为Walter写的regexp很多特性不支持,性能也不怎么样。 这个东西是这两天写的,很多地方没测过。 http://gool.googlecode.com/files/D_Web_Template.zip D里已经有人实现了一些web模板, 但大都不支持运行时重新载入(编译时生成)。运行时模板对业务界面分离支持更好,安全性更高,也更容易实现多语言支持和风格热切换。 在渲染时使用自然缓冲代替了dmdscript的字符串操作,性能提升20倍左右。 在运行时,可以对模板编译结果缓冲,这样渲染时触发的GC行为大大减少。速度超快。 本来计划实现http://haml-lang.com/模版引擎,结果dmdscript太不标准,还需要做很多修改。 Fastcgi4d , 这个我只是在win32下编译成功了。 替代了tango的Format后性能有极大提升。 http://dsource.org/projects/fastcgi4d/ticket/7#comment:9 FlvGet 一个基于libev的web桌面应用,这个花了我很多时间,主要是libev 4.04之前的windows版一直有bug。 http://gool.googlecode.com/files/FlvGet.zip |
|
sleets
2011-02-20
D测试代码
void main(string[] argv) { //GC.disable; Tpl_Factory tf; tf.Init; auto user_list = tf.create("UserList", "test.tpl") ; StopWatch sw; sw.start; scope(exit){ sw.stop; log(" use time=", sw.peek.msecs, "ms" ); user_list.clear; } auto v1 = new V1; user_list.assign(v1, "var1"); V1[3] v2; foreach(int i, ref _v;v2) _v = new V1; user_list.assign(v2, "v2"); auto vv2 = new V2; user_list.assign(vv2, "vv2"); user_list.assign(argv, "argv"); user_list.assign(environment.toAA, "env"); user_list.render; log("", user_list.buffer); } class V1 { long v1_i = 123 ; string v1_v1 = "Test 123" ; string v1_x1 = "321"; } struct V2 { long v2i = 1234444 ; string v1 = "V2.v1.string" ; private string x1 = "V2 x1"; } test.tpl {=argv[0]} {macro test(args)} {foreach v in args} `{=v_index}` => `{=v}` <br/> {/foreach} {/macro} {=var1.v1_i} {=test(env)} output 引用 test.d(50) tpl.exe 123 `` => `H:=H:\top\bin` <br/> `OS` => `Windows_NT` <br/> `TMP` => `H:\tmp` <br/> `TEMP` => `H:\tmp` <br/> `Path` => `C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;D:\usr\local\OpenVPN\bin` <br/> `windir` => `C:\WINDOWS` <br/> `PROMPT` => `$P$G` <br/> `ComSpec` => `C:\WINDOWS\system32\cmd.exe` <br/> `asl.log` => `Destination=file` <br/> `PATHEXT` => `.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH` <br/> `APPDATA` => `C:\Documents and Settings\Administrator\Application Data` <br/> `COLINUX` => `F:\vm\co` <br/> `HOMEPATH` => `\Documents and Settings\Administrator` <br/> `USERNAME` => `Administrator` <br/> `HOMEDRIVE` => `C:` <br/> `USERDOMAIN` => `HP6520S` <br/> `CLIENTNAME` => `Console` <br/> `SystemRoot` => `C:\WINDOWS` <br/> `USERPROFILE` => `C:\Documents and Settings\Administrator` <br/> `SystemDrive` => `C:` <br/> `SESSIONNAME` => `Console` <br/> `LOGONSERVER` => `\\HP6520S` <br/> `ProgramFiles` => `C:\Program Files` <br/> `COMPUTERNAME` => `HP6520S` <br/> `PROCESSOR_LEVEL` => `6` <br/> `ALLUSERSPROFILE` => `C:\Documents and Settings\All Users` <br/> `FP_NO_HOST_CHECK` => `NO` <br/> `PROCESSOR_REVISION` => `0f0d` <br/> `CommonProgramFiles` => `C:\Program Files\Common Files` <br/> `NUMBER_OF_PROCESSORS` => `1` <br/> `PROCESSOR_IDENTIFIER` => `x86 Family 6 Model 15 Stepping 13, GenuineIntel` <br/> `PROCESSOR_ARCHITECTURE` => `x86` <br/> test.d(30) use time=1ms |
|
sleets
2011-02-20
......
|