- 浏览: 233770 次
- 性别:
- 来自: 昆明
最新评论
-
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
文章列表
虽然我最喜欢的OS是Linux,但是一直对 .Net 这个多语言友好的平台很有好感,而且很最近又发现了 Castle 这套好东西,于是很自然地想让 MonoRail 运行在 Mono 上,居然成功了,Mono 果然是个好东西。
我的测试步骤如下:
确保系统安装了 Mono 1.2.4+ 和 MonoDevelop 0.15+,外加 Mono 附带的纯 C# Web 服务器 XSP。这一切都可以用 Ubuntu 的包管理系统安装,如果你用 Ubuntu Gutsy 的话。推荐到 www.getdeb.net 中下载安装最新的 MonoDevelop。
到 http:// ...
最近想在我的机器上配置一个 Trac 来管理我自己的小项目,尝试结果却令人失望,Trac 本身依赖无数的 Python 库不说,还非得要过时的 Python 2.4,而我的 Ubuntu Gutsy 默认安装的是 Python2.5,装两个 python 实在是让人不舒服。
幸运的是,在找 Trac 依赖库的过程中,我发现了 Redmine,一个基于 Ruby On Rails 开发的开源项目管理软件,不仅没有名目繁多的依赖,而且界面清爽,功能齐全,重要的是解压后简单配置一下数据库就能使用,实在是 Ruby/Rails 爱好者的最佳选择。
下面是安装 Redmine 的简介,由于 Redmi ...
D1.0 代码
/** TupleMixin 演示程序, DMD2.007/GDC0.24 测试通过
Written in the D programming language 1.0
作者: oldrev
Copyrights: BSD
*/
import std.stdio;
//PredT 参数的作用是让你能够在每个模板混入之前对它进行处理,
//比如可以在混入前用 static assert 检查是否有特定的成员
//总而言之,PredT 给你机会控制混 ...
- 2007-11-10 17:40
- 浏览 3714
- 评论(1)
今天晚上费了点脑筋写了一个简单的 C2D 转换脚本,大致实现了函数申明、全局变量、typedef、enum、struct 和数组的转换,但是还不支持预处理、union、调用约定等。
ruby 代码
#!/bin/ruby
require 'rexml/document'
#TODO:
# * 调用约定
# * union
# # 冲突关键字检查
puts "c2d.rb 0.002 - A C to D Converter"
puts " ...
- 2007-10-24 22:06
- 浏览 4658
- 评论(9)
通过1.0的代码完全模拟了 D 2.0 __traits(hasMember...) 和部分 getMember 的功能:
import std.stdio;
template HasMember(T, string member)
{
const bool HasMember = is(typeof(mixin("T." ~ member)));
}
template HasMember(alias X, string member)
{
...
- 2007-10-08 23:12
- 浏览 5149
- 评论(14)
作为 C++ 狂热的粉丝,你在多年使用C++的过程中是否有过以下症状:
Boost 和 STL 真不错,但是编译太慢,让我想砸电脑!
我讨厌一个程序写两次,干嘛要头文件?编译器不会自动提取声明吗?
经常有大师教导你不要用 ...
- 2007-09-14 01:30
- 浏览 12312
- 评论(30)
刚在 D语言的新闻组里看到了D模板&元编程顶尖高人 Don Clugston 的新作——Compile time lex + parse + semantic = 300 lines of code 一个用300行代码就实现的D语言编译时词法解析、语法解析、语义分析器,换句话说就是一个非常简单的编译器前端。
当然了,这也不是什么新技术,C++ 借助一些模板递归也能实现出像 boost.spirit/boost.phoenix 这样的语法分析器,但是这个语法分析器只是在编译时生成,却不能在编译时运行。而 Don 的实现,借助了D 编译时函数执行(CTFE)的强大功能,能在编译时就完成 ...
- 2007-09-12 22:55
- 浏览 4802
- 评论(5)
Range Coding 是算术编码的变种,二者的效率几乎没有差别,Range Coding 速度更快,且没有专利问题。下面的程序移植和改进自一个非常清晰简洁的C++实现。当然,直接使用下面的代码去压缩文件效果并不好,速度慢压缩率也低,Range Coding 更适合作为其他算法的后端,比如 LZ77、Block Sorting。
如果你看到这里一头雾水的话,可以上 wikipedia 参考“算术编码”,不过更好的选择是找一篇名为《笨笨数据压缩教程》的系列文章来入门。
D1.0 Code
/** Code for range coding, derived from pu ...
Dotmars 实例之:容器、迭代器与算法框架
这几天 Mr. Bright 老是不放新版本,圈子里太冷清了,我来发篇程序凑个数。
这是一个类似 C++ STL 的容器、迭代器和算法框架,迭代器的设计参考了 C++ boost 库中的"new-style" 迭代器,把迭代器的遍历和读写操作分开,内置数组处理参考了 qiezi 的文章: 仿STL的vector,写了一组array操作方法。容器方法的命令没有遵循 STL 的风格,而是采用 .Net 范型容器的名称。
借助于 D 威力强大的模板和模板混入,代码虽然大量用到了模板,但是十分地简短易读。
目前仅仅实现的部分包括: ...
- 2007-08-03 23:49
- 浏览 5716
- 评论(9)
一个模仿 Ruby Test::Unit 的 Quick & Dirty 单元测试框架,托 __traits 的福,看起来已经有那么点意思了。提取行号在目前还没法实现,估计等 macro 出来就能解决这个问题。
SVN里的最新版在下面的链接处:
dotmars.googlecode.com/svn/trunk/sandbox/2.0/test.d
D2.0 代码
/**
A D 2.0 unit test framework inspired by Ruby's Unit::Test
// Written in the D ...
- 2007-07-27 21:25
- 浏览 2839
- 评论(3)
D 2.0 Const/Final/Invariant 概念简介
D 2.0 specs 里的相关文档可读性不佳,因此我总结了一个简单的 const/final/invariant 概念简介,更详细的用法还请参考 D 2.0 specs。
在2.0中,invariant 和 const 有作存储类、定义类型和定义成员 ...
- 2007-07-24 22:55
- 浏览 5467
- 评论(3)
转自 Solidot.org
James Burgett,被CNN称做英雄。他从公司和个人那里收集旧电脑,检查电脑的状况,如果坏了则自己动手修复,把它送给买不起电脑的人,每一套系统都预装了免费的操作系统——主要为Suse和Ubuntu GNU/Linux。
现在James Burgett已经创办了一家非营利组织Alameda County Computer Resource Center,建立了一支志愿者队伍,收集捐赠来的电脑,抹掉所有的私有软件,重新安装Linux和免费应用程序,然后分发给学校、非营利性组织,或者没钱买电脑的人。
一个伟大的人和一项伟大的事业,这才是真正的英雄。"
- 2007-07-15 16:05
- 浏览 3395
- 评论(1)
DotMars 已经具有初步的样子了,特别发帖庆祝。
DotMars 第一个范例程序(dotmars/samples/io/console.d):
D 代码
module samples.io.console;
import dotmars.io.console;
void main()
{
class Foo {
override char[] toString() {
return "Greeting!"; ...
- 2007-06-05 02:17
- 浏览 8231
- 评论(12)
刚才写字符串格式化的由于要处理所有内置类型,而且只有 TypeInfo 可用,为了避免恐怖的 if 链,发明了下面这个有趣的switch模拟。
D语言真是太好玩了。
D代码
import std.stdio;
alias void delegate() Case;
void Switch2(T)(T cond, Case[T] aa)
{
aa[cond]();
}
void main()
{
...
- 2007-05-19 23:29
- 浏览 4559
- 评论(6)