- 浏览: 233768 次
- 性别:
- 来自: 昆明
最新评论
-
beiyangshuishi:
确实挺幽默的,太能恶搞了。不过这也让我想起日本的一则广告宣纸的 ...
一对活宝—— MySQL & PostgreSQL -
ShiningRay:
稍微看了vcf的api,比wxwidgets要干净得多
VCF 库的搞笑提示 -
Colorful:
Wow, this is amazing.
D语言 struct constrcutor 的 bug -
oldrev:
楼下,当时的 TRAC 确实说是要 py 2.4 的
出色的开源项目管理软件——Redmine -
jusdao:
...Trac可以用python2.5啊,没有说必须用2.4的 ...
出色的开源项目管理软件——Redmine
文章列表
基础类库的东西看起来容易做起来难,今天花时间实现了一点点 .Net 风格的字符串格式化函数,贴出来娱乐一下。
注意:目前仅支持占位符索引号而已...
import std.stdio;
import std.string;
import std.conv;
alias void delegate(char c) Sink;
alias void* Argument;
const size_t MaxArguments = 16;
void format(char ...
- 2007-05-18 22:51
- 浏览 3627
- 评论(1)
dsource 上的 juno 是一个很不错的 Windows 封装库,可惜的是作者似乎已经放弃了开发,已经近5个月没有更新了。
由于时间的原因,juno 无法在现在的 DMD 下编译,因此我修改并提取了 juno 库最有价值的 COM 库部分,让它能顺利编译。这么做的目的在于我们现在可以通过 juno 中的 tlbimpd.exe 为 COM 类型库生成接口代码,自己手工转换了。
附件中的 combase.d 是 juno.com.base 的修改版,mshtml.d 是 MSHTML 的接口代码。
需要注意的是当用 tlbimpd 生成代码以后需要将第一行 import juno.. ...
- 2007-04-20 00:28
- 浏览 4319
- 评论(8)
一个类似 C# 的 DllImport 实现,用于“半”动态加载 DLL。用起来比我以前写的 DLLWrapper 要麻烦一些,但是 DLLWrapper 由于使用一个 Tuple 来存储函数声明,会造成超长的标识符导致编译错误,这个 DllImport 避免了这个问题。
这个实现有一个缺陷是每次调用API函数的时候都会执行一次 GetProcAddress,效率比较低.... 谁能告诉我怎么避免该死的 CTFE?
代码
// DllImport - A C#-like DLL Wrapper
// written by oldrev (wstring#gmail ...
- 2007-04-16 23:19
- 浏览 4418
- 评论(9)
昨晚我写了一个非常简单的 VIM 的D语言缩写插件,希望能让用VIM编辑D程序的指头轻松一点。
请看下图,当在VIM的插入模式键入“'main”这个字符序列时,该插件能自动将文本替换为一个完整的 main() 函数定义,并且能自动选中 <+ body +> 部分等待输入替换。Ctrl+j 键可以跳转到下一个由 <+ ????? +> 标记的地方,同样会自动选定。
插件中的代码片段由 d_imaps.vim 文件定义,此文件应当放到 ~/.vim/ftplugin(Windows 用户推荐放到 $VIMRUNTIME/ftplugin/) 目录下,下面是 d_ima ...
- 2007-04-13 15:45
- 浏览 3503
- 评论(4)
参考 STL 实现的 Quick & Dirty 双向链表模板类,勉强看的过去。参考了 boost 的新概念迭代器,遵循D的命名风格,只实现了几个简单的成员函数。
迭代器使用 i.current属性或i()读取当前指向的元素,使用 i = x; 设置当前指向的元素
update:
添加了 ReverseIterator, rbegin, rend, insert, erase, popBack, popFront
D 的函数模板特化还是有问题(或者我不知道?)
D 代码
// The STL-Like Template Class of Linked List
...
- 2007-04-07 02:03
- 浏览 3066
- 评论(3)
上回说到 Rank 这个 Ruby 世界最广泛使用的构建工具在 Windows 下有大bug,根本不能运行。Python的scons太慢、自动得过了头,造成定制起来很麻烦.....
最终,我找到了一个叫 Rant 的Ruby构建工具,用起来几乎与 Rank一样,而且特性更多,最重要的是能在 windows 下面正常运行。因此我强烈推荐各位D语言的粉丝使用Rant作为软件构建工具,放弃那些不成熟的IDE。用Rant的好处是还能顺带学习一下Ruby语言,对于像我一样的Ruby&&D双料菜鸟,这是不可多得的学习机会。
如果没有Ruby,请先下载安装 Ruby。 然后在控制台中输入:g ...
- 2007-03-31 13:54
- 浏览 3264
- 评论(1)
在一个日文网站上发现的通用 Rakefile for GDCrequire "rake/clean"NAME = "hogehoge" # プロジェクト名 ##可执行文件名PROG = "#{NAME}"PROG_DEBUG = "#{NAME}_debug"SRC = "src"SRCS = FileList["./src/**/*.d"]OBJS = SRCS.ext "o"OBJS_DEBU ...
- 2007-03-31 00:21
- 浏览 2946
- 评论(1)
在正文之前,先佩服一下伟大的GFW——又把 blogspot.com 的二级域名给封了。
如果你和我一样经常为了测试D语言的某个特性而写一些小程序来验证想法,而且恰好也使用 VIM 的话,那么本文就是为你准备的。
首先,VIM7 中自带的D语言语法文件版本很老,请替换为 http://www.vim.org/scripts/script.php?script_id=379 这个支持0.178的。
下面的代码是 VIM 的DMD编译器支持,将其放入 ~/.vim/complier/dmd.vim (for unix-like, Windows 为 $VIMRUNTIME\vim70\compil ...
- 2007-03-28 11:59
- 浏览 5177
- 评论(11)
Firefox 的同门兄弟 Thunderbird 是一款优秀的电子邮件客户端。可是我在使用中却发现这家伙竟然使用 Base64 编码来加密敏感数据,真是服了它了。
要想揪出 Thunderbird 的小辫子,请 follow 以下步骤:
请搜索 \Documents and Settings\*\Application Data\Thunderbird\Profiles\ 目录下一个叫 signons.txt 的文件,秘密就藏在里面。
打开 signons.txt 你会看到 ~***= 的内容,其中 *** 就是被 base64编码后的字符串。要解码可以使用下面的简单D语言 ...
- 2007-03-22 21:07
- 浏览 2519
- 评论(2)
D的文档里说 struct/class 的 .tupleof 属性可以把一个 struct 的所有成员变量转换为一个 tuple。那么反过来让 tuple 作为 struct 的成员可不可以呢?答案是可以,因为 tuple相当一个可以存放不同元素类型的静态数组,我们只要在 struct 中声明一个 Tuple 实例就能达到目的:
D 代码
struct Foo(Tuple...)
{
Tuple fields;
}
alias Foo!(int, long, char) Foobar;
Foobar bar; ...
- 2007-03-16 23:28
- 浏览 3178
- 评论(5)
Fedora6 越用越慢,最不靠谱的是自动升级以后竟然用不了我自己装的 Firefox2,在实在是忍无可忍的情况下闪过了一个换 Ubuntu 6.10 的念头,结果我就用上了 ubuntu.....
可是 6.10 终究不是最新版,终于一狠心一跺脚把 6.10 升级成 7.04,下面是本免费小白鼠的亲身体验:
升级很顺利,直接 apt-get update & apt-get dist-upgrade 就搞定了,基本的设置没有变化,不过我刚配置好的字体又回去了。
感觉 gnome 的速度上来了一点,不过感觉还是没刚装好的 fedora6 快。Firefox的速度倒是有进 ...
- 2007-03-15 16:02
- 浏览 1311
- 评论(0)
Fedora6 越用越慢,最不靠谱的是自动升级以后竟然用不了我自己装的 Firefox2,在实在是忍无可忍的情况下闪过了一个换 Ubuntu 6.10 的念头,结果我就用上了 ubuntu.....可是 6.10 终究不是最新版,终于一狠心一跺脚把 6.10 升级成 7.04,下面是本免费小白鼠的亲身体验:升级很顺利,直接 apt-get update & apt-get dist-upgrade 就搞定了,基本的设置没有变化,不过我刚配置好的字体又回去了。感觉 gnome 的速度上来了一点,不过感觉还是没刚装好的 fedora6 快。Firefox的速度倒是有进步。不错的国际象棋游戏右 ...
- 2007-03-15 15:44
- 浏览 640
- 评论(0)
cpp 代码
ubyte a[3] = [2, 3, 4]; //OK!
void main()
{
ubyte b[3] = [2, 3, 4]; //编译错误
}
一只很大的 bug........
- 2007-03-11 22:24
- 浏览 2533
- 评论(7)
boost.variant 是安全、范型、基于栈的可识别联合容器,下面的代码是其在D语言中的等价实现。借助D语言强大的元编程能力,其与C++的版本相比,代码清晰,对类型安全有更大的保证。
boost.variant 文档:http://www.boost.org/doc/html/v ...
- 2007-03-07 17:53
- 浏览 3951
- 评论(7)
D语言的 TypeTuple既然可以按数组的方式操作,我觉得应该可以对其增加更多的算法,下面的 RemoveIf就是一个例子:
1 module dust.meta.tuple; 2 3 import std.typetuple; 4 5 6 template RemoveIf(alias PredTempl, TList...) 7 { 8 static if (TList.length == 0) 9 alias TList RemoveIf;10 else static
- 2007-03-02 06:18
- 浏览 1512
- 评论(0)