尼康 P5100 入手已有月半,上几张片子:
 
泰山日出,努力向上中...

红日初升,其道大光。

人间四月芳菲尽,泰山槐花始盛开。
 

办公室外的夕阳

晚霞

 
手动调焦,点测光,微距一

手动调焦,微距二
 
    买之前在 P5100 和佳能 A650 之间犹豫了半天,最后选了更精致漂亮的 P5100。总体感觉没有想象中的好,尤其是在最经常用的全自动模式下,测光不准,前后景亮度差别一大相机就不知所措了。其它优点倒还可以,拍风景的几个场景模式很棒。

 

posted @ 2008-06-30 20:05 阳春三月 阅读(65) | 评论 (2)编辑
    食堂早饭最好吃的是烙油饼,但去的早了有时反而吃不着,因为还没做好,我于是很小人的认为是烙油饼的大师傅贪睡耽误了干活儿。不过我要说的是另一个现象:油饼没上时在一边儿等着的全是女人,男人们都是有什么吃什么,馒头茶蛋小咸菜,从来不等。但时间长了,我发现只有一个男的例外,他会坐那儿等着油饼做好,我在想这时为什么。后来想通了:
 

    因为坐在桌对面的是他老婆。

posted @ 2008-06-17 08:55 阳春三月 阅读(72) | 评论 (4)编辑
 
    程序报异常:Sequence contains no elements。首先想到 Oracle 数据库中用到的 Sequence 对象,查之未超限,.NextVal、.CurrVal 都正常。Google 之,异常是 IQuerable<T>.First() 方法报的,当查询的结果集为空时,调用 First() 方法将报此异常,换用 FirstOrDefault() 方法,则不报异常,问题解决。
 
    思考一:在 Google 中搜索时,一开始用的关键字是加双引号的 "Sequence contains no element",这是同事从电话里告知的异常信息,用这个关键字搜不到有价值的信息;当我在现场再现了这个异常后,直接把异常文本复制到 Google 中搜索,此时关键字是加双引号的 "Sequence contains no elements",结果一下子就定位到了问题的所在,而两次仅仅是关键字“element”和“elements”单复数的差异。
    这很出乎我的意料,按通常的思路,“element”应比“elements”搜到更多的结果,包含“elements”的网页应该是“element”的子集。难道 Google 有英语的语法分析功能?
 
    思考二:程序中调用 void 的方法时,经常需要知道方法是否成功执行,若不成功,需要知道不成功的原因(通常是异常消息)。比如要执行的方法叫 FooA(),FooA 的一种实现办法是在不成功时抛出异常,调用方捕捉到异常自然就知道 FooA 执行失败,也得到了失败的原因。但我经常用的方式是不抛出异常,而是用布尔返回值 true、false 表示成功与否,加一个 out string 参数携带失败时的消息。这样做的好处有二:一是避免了处理异常时要消耗很多的资源,二是在多次循环其前次处理失败要求能继续进行后续处理,且调用方没有异常处理代码时,避免了程序一遇到异常就跳出执行。看到 IQuerable<T>.First 和 FirstOrDefault 方法,我想也可以多写个 FooAOrDefault 方法,让调用方想处理异常时调用 FooA,不想处理异常或避免被异常影响执行时调用 FooAOrDefault 方法。

posted @ 2008-06-09 14:35 阳春三月 阅读(93) | 评论 (0)编辑
1. 更换 TFS 服务器后,在客户端 Team Explorer 的工作区中重新建立服务器和本地目录之间的映射时,提示本地目录已经映射到了老服务器上,从而无法建立映射。实际上此时老服务器早从 TFS 服务器列表中删除了。
    经查,在文件
C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\Team Foundation\2.0\Cache\VersionControl.config
中缓存了原来老服务器上的映射信息,删掉之后问题解决。
 
2. 往 Team Foundation Licensed Users 组中添加新用户时,遇到该组最多只能添加 5 个用户的提示。从搜索到的资料来看,是我安装的 TFS 为工作组版本,此版本有 5 用户的限制。不过按照下面这篇帖子说明的步骤,很容易的就从后台把第 6 个用户添加到了该组。
    核心脚本:
declare @container varchar(100),@member varchar(100) SELECT @container=[sid]     
  FROM [TfsIntegration].[dbo].[tbl_security_identity_cache]
where [display_name]=N'Team Foundation Licensed Users' and deleted=0
 
SELECT @member=[sid]     
  FROM [TfsIntegration].[dbo].[tbl_security_identity_cache]
where [display_name]=N'TFSGuest4' and deleted=0
 

Insert [TfsIntegration].[dbo].[tbl_security_membership_cache]
( [container],[member])
s(@container,@member)
Insert [TfsIntegration].[dbo].[tbl_gss_group_membership]
([parent_group_sid], [member_sid], [last_update])
s(@container, @member, getdate())
 
还有两个问题未解决:
1. TFS 有 90 天试用版(90 days trial version)、工作组版(workgroup version)和完整版(full version)三种,软件都是一样的,不同的只是注册码,未能从网上找到完整版的注册码。
2. 从 Team Explorer 的“Team Foundation Server 列表”中删除 TFS 服务器后,上文提到的 VersionControl.config 文件未更新,是微软的 bug?
 

posted @ 2008-05-23 18:35 阳春三月 阅读(60) | 评论 (0)编辑

    联想 YT810 优盘集成了蓝牙适配器功能,以前在 Windows Server 2003 上用时,只装个“联想通讯中心6.0”就行。但最近不知何故,从设备管理器里看蓝牙设备-CSR USB Bluetooth Device 运转正常,通讯中心就是检测不到蓝牙设备。到网上搜了一下,说是 Windows Server 2003 系统对蓝牙的支持就不是很好,得安装驱动。按照后面这篇文章的讲解,下载 WIDCOMM 软件(5.0,必须破解的),重启机器,问题解决,USB 蓝牙适配器在 Server 2003 上又能用了。

    在Windows 2003下轻松搞定杂牌USB蓝牙适配器

    如果电脑是 XP 操作系统,该优盘插上后蓝牙功能就可用,没任何问题。


posted @ 2008-05-13 14:29 阳春三月 阅读(138) | 评论 (1)编辑

The linq expression is:
var query = from p in _db.LogProjects
      where p.Well == well
      select p;
( Well is a user class )

An exception will be thrown:
Unable to create a constant value of type 'Closure type'. Only primitive types (for instance Int32, String and Guid) are supported in this context.

So, you can change the linq expression to:
var query = from p in _db.LogProjects
      where p.Well.WellID == well.WellID
      select p;

reference:
 ADO.NET Entity Framework Comparison Frustration
Entity Framework Comparison Frustration: Explained

posted @ 2008-05-10 09:12 阳春三月 阅读(39) | 评论 (0)编辑
1. Open control panel - windows firewall, add an exception port in the  exception list.  The  default  port number for oracle connection is  1521.
2. Start regedit tool, add a string item under HKey_Local_Machine\Software\Oracle\Home0, set the name of the item is 'Use_Shared_Socket' and the value is 'true'.

That's ok.

posted @ 2008-05-06 16:12 阳春三月 阅读(50) | 评论 (0)编辑

    当年 .Net Framework 2.0 刚发布时,泛型(Generics)、匿名方法(Anonymous Methods)、迭代器(Iterators)和不完全类型(Partial Types)被称为 .Net Framework 2.0 的四项新特性。现在随着微软 .Net 3.0、3.5 的发布推广,关于新特性的介绍却都是以 C# 3.0 为题,就连 Linq 这样在 .Net Framework 3.5 中才支持的特性,也算作 C# 3.0 的新特性。这种称呼叫法的改变,也许显示了微软在逐渐地把 .Net、C# 这些概念区分的更清晰,就像当年的 Visual Studio .Net 2003 到 Visual Studio 2005 一样。

    粗粗看来一下 C# 3.0 的新特性:

1. 隐式类型化本地变量(Implicitely typed local variables)

刚看到这个有点 JScript 式的特性,觉得很一般,我甚至不会去用,因为与我要求的清晰、严谨的编码风格不符,呵呵。但看到后面的匿名类型、Linq 查询表达式等特性时,觉得这个还是很有用的。

2. 扩展方法(Extension methods)

不错的特性,省得我为了给一个类加个简单无比的新功能,就非得用组合或继承写个新类。

3. 对象初始化器(Object initializers)

不错,省了一堆大同小异的重载的构造函数。

4. 集合初始化器(Collect initializers)

一般,自从有了 List<T>,需要自己实现 ICollection<T> 接口的机会就不多了。

5. 匿名类型(Anonymous types)

这个也挺有用,省事儿。

6. 隐式类型化数组(Implicitely typed arrays)

是隐式类型化本地变量这一新特性在数组初始化上的延伸。

7. Lambda 表达式(Lambda expressions)

为了使初始化委托和处理事件的程序代码更加简洁,在 .Net 2.0 中引入了匿名方法,在 3.0 中又更进一步,引入了看起来更明快却有些唬人的 Lambda 表达式。

8. 查询表达式(Quer expressions)

强大的 Linq,第 9 条表达式树也是跟 Linq 有关的,这是 C# 3.0 最精华的新特性,有待仔细研究学习。

9. 表达式树(Expression trees)

 

另外,发现在 .Net Framework 3.0 的代码中,简单的 Property 属性可以只写 get、set,连对应的 Field 的声明都省了,好像在定义接口:

class Program
{
    public string Name { get; set; }

    static void Main( string[] args )
    {
        Program p = new Program();
        p.Name = "HelloWorld";
        Console.WriteLine( p.Name );
        Console.Read();
    }
}

这样的代码也可运行,C# 3.0 可真够为程序员着想到家了。

posted @ 2008-04-21 20:22 阳春三月 阅读(217) | 评论 (1)编辑

 

从 .Net 2.0 开始,CLR 的版本一直没有变化,尽管 .Net 已经到了 3.5,但 CLR 一直在 2.0 版。这是 2007 年的图片,现在 Orcas 已经变成正式发布的 VS2008 了。

 

 

.Net 的基础类库到 2.0 版已经算比较稳定了,到 3.0、3.5 都是新功能的扩展、增加。若要尝试 Linq 等 3.5 的新特性,2.0 和 3.0 的 SP1 都是必须安装的

posted @ 2008-04-21 19:25 阳春三月 阅读(50) | 评论 (0)编辑

大文件在数据库中的存储

把大尺寸文件用关系数据库管理起来,常见两种方案:
方案一、用 Blob 字段,弊端是性能差,blob字段的备份也是问题。
方案二、文件仍用操作系统管理,数据库只存文件路径作为索引,需要自己另外维护同步问题。

微软出过一份研究报告,在 SQL Server 2005 和 NTFS 文件系统上做对比测试,关于文件尺寸对性能的影响,是小于 256k 用 blob 好,大于 1M 用文件系统存储较好。

关于方案二,数据库厂商在数据库端也提供了支持,可以看作是第三种方案:
Oracle:使用 BFile 数据类型。BFile 的使用,见 Oracle 官方文档《Application Developer's Guide - Large Objects (LOBs)》。
SQL Server 2008: 用带 fileStream 选项的 varBinary(max) 类型。

Oracle 不知从哪个版本开始支持 BFile 的,我试验的 Oracle9.2 肯定支持;SQLServer2005 不支持varBinary(max) 的 fileStream 选项。

 

参考

Oracle Lob 介绍

在 .NET 中使用大对象

Getting Traction with SQL Server 2008 Filestream

To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem?

posted @ 2008-03-12 15:37 阳春三月 阅读(135) | 评论 (1)编辑