Gmail收件箱新增多面板功能

     今天无意中发现google多了一个对我们这些使用宽屏电脑的人来说非常实用的功能.收件箱多窗体功能.以后就不用经常在几个窗口之间切换来切换去了.但现在这一个功能需要手工输入一些配置,对中国的普通网民来说可能有那么一点点的困难.希望google会在以后改进这一项内容.

要启用这一项功能,首先在Settings -> Labs 中启用 Multiple Inboxes.

2009-02-06_210123

设置完成后,你可以自定义设置你的面板.

2009-02-06_211251

最后的效果图如下:
Gmail收件箱多窗体截图

点击图片可以放大.

Posted in Google产品, 业界新闻 | Tagged , | Leave a comment

微软官网全面升级至Windows Server 2008 R2 Beta

        在Windows 7 Beta公开发布的同一天,微软也放出了新一代服务器操作系统Windows Server 2008 R2的测试版。虽然一般用户可能用不到它,但其重要性对微软来说不言而喻。为了展示该系统的成熟,借机向客户推销,微软官方网站已经悄然升级,全面启用尚不是正式版的Windows Server 2008 R2 Beta。

  据Netcraft监测,www.microsoft.com现在已经全面基于Microsoft-IIS 7.5,而这正是Windows Server 2008 R2的一部分。此次升级看起来是在1月8日前后启动的,因为当时微软官网的响应开始有时候是IIS 7.5,只不过大部分还是IIS 7.0。现在,转变已经完成,微软网站已经完全构架于IIS 7.5之上。

  不过Netcraft的监测结果还显示,目前只有28个网站采纳了IIS 7.5,大型网站也仅微软一家。

  其实在Windows Server 2008的开发过程中,微软官网也都是先行者:2007年6月中旬启用Beta 3测试版,五个月后升级到R0候选版,次年2月底推出了正式版。如果Windows Server 2008 R2也是如此,那么很可能会在今年9月底发布正式版,和Windows 7的预计发布时间差不多,也可能仍要稍晚一些。

  IIS 7.5是现有IIS 7.0的升级版,主要变化是将IIS 7.0需要通过扩展才能提供的一些功能集成到了服务本身,同时对已有功能进行了完善。

来源: 驱动之家

Posted in Microsoft产品, 业界新闻 | Tagged , , | Leave a comment

隐式类型的局部变量

可以赋予局部变量推断“类型”var 而不是显式类型。var 关键字指示编译器根据初始化语句右侧的表达式推断变量的类型。推断类型可以是内置类型、匿名类型、用户定义类型或 .NET Framework 类库中定义的类型。

下面的示例演示了使用 var 声明局部变量的各种方式:

// i is compiled as an int
var i = 5;
 
// s is compiled as a string
var s = "Hello";
 
// a is compiled as int[]
var a = new[] { 0, 1, 2 };
 
// expr is compiled as IEnumerable
// or perhaps IQueryable
var expr =
    from c in customers
    where c.City == "London"
    select c;
 
// anon is compiled as an anonymous type
var anon = new { Name = "Terry", Age = 34 };
 
// list is compiled as List
var list = new List();

需要了解的一点是,var 关键字并不意味着“变体”,也不表示该变量是松散类型化变量或后期绑定变量。它只是表示由编译器确定和分配最适当的类型。

var 关键字可在下面的上下文中使用:

在如上示例所示的局部变量(在方法范围中声明的变量)上。

在 for 初始化语句中。

for(var x = 1; x < 10; x++)

在 foreach 初始化语句中。

foreach(var item in list){...}

在 using 语句中

using (var file = new StreamReader("C:\\myfile.txt")) {...}

有关更多信息,请参见如何:在查询表达式中使用隐式类型的局部变量和数组(C# 编程指南)。

var 和匿名类型
在很多情况下,var 是可选的,它只是提供了语法上的便利。但是,在使用匿名类型初始化变量时,如果需要在以后访问对象的属性,则必须将该变量声明为 var。这在 LINQ 查询表达式中很常见。有关更多信息,请参见匿名类型(C# 编程指南)。

从源代码的角度来说,匿名类型没有名称。因此,如果已使用 var 初始化查询变量,则只有一种方法可以访问返回的对象序列中的属性,那就是使用 var 作为 foreach 语句中的迭代变量的类型。

class ImplicitlyTypedLocals2
{
    static void Main()
    {
        string[] words = { "aPPLE", "BlUeBeRrY", "cHeRry" };
 
        // If a query produces a sequence of anonymous types,
        // then use var in the foreach statement to access the properties.
        var upperLowerWords =
             from w in words
             select new { Upper = w.ToUpper(), Lower = w.ToLower() };
 
        // Execute the query
        foreach (var ul in upperLowerWords)
        {
            Console.WriteLine("Uppercase: {0}, Lowercase: {1}", ul.Upper, ul.Lower);
        }
    }
}
/* Outputs:
    Uppercase: APPLE, Lowercase: apple
    Uppercase: BLUEBERRY, Lowercase: blueberry
    Uppercase: CHERRY, Lowercase: cherry
 */

备注
下列限制适用于隐式类型的变量声明:

只有在同一语句中声明和初始化局部变量时,才能使用 var;不能将该变量初始化为 null、方法组或匿名函数。

不能将 var 用于类范围的域。

由 var 声明的变量不能用在初始化表达式中。换句话说,表达式 int i = (i = 20) 是合法的;但表达式 var i = (i = 20) 则会产生编译时错误。

不能在同一语句中初始化多个隐式类型的变量。

如果范围中有一个名为 var 的类型,则 var 关键字将解析为该类型名称,而不作为隐式类型局部变量声明的一部分进行处理。

在查询表达式中,当难以确定查询变量的确切构造类型时,您会发现 var 也很有用。这种情况可能发生在分组和排序操作中。

当在键盘上键入变量的具体类型单调乏味时,或者当该类型显而易见或对提高代码可读性没有作用时,var 关键字也可能有用。var 以这种方式发挥作用的一个示例是嵌套的泛型类型,例如在分组操作中使用的那些类型。在下面的查询中,查询变量的类型是 IEnumerable>。只要您和其他必须维护您代码的人员了解到这一点,就可以毫无问题地使用隐式类型化,以达到方便和简洁的效果。

// Same as previous example except we use the entire last name as a key.
// Query variable is an IEnumerable>
 var studentQuery3 =
     from student in students
     group student by student.Last;

不过,使用 var 确实可能使其他开发人员更加难以理解您的代码。因此,C# 文档通常仅在需要时才使用 var。

Posted in ASP.NET | Tagged , | Leave a comment

泛型的优点

在公共语言运行时和 C# 语言的早期版本中,通用化是通过在类型与通用基类型 Object 之间进行强制转换来实现的,泛型提供了针对这种限制的解决方案。通过创建泛型类,您可以创建一个在编译时类型安全的集合。

使用非泛型集合类的限制可以通过编写一小段程序来演示,该程序利用 .NET Framework 类库中的 ArrayList 集合类。ArrayList 是一个使用起来非常方便的集合类,无需进行修改即可用来存储任何引用或值类型。

1
2
3
4
5
6
7
8
// The .NET Framework 1.1 way to create a list:
System.Collections.ArrayList list1 = new System.Collections.ArrayList();
list1.Add(3);
list1.Add(105);
 
System.Collections.ArrayList list2 = new System.Collections.ArrayList();
list2.Add("It is raining in Redmond.");
list2.Add("It is snowing in the mountains.");

但这种方便是需要付出代价的。添加到 ArrayList 中的任何引用或值类型都将隐式地向上强制转换为 Object。如果项是值类型,则必须在将其添加到列表中时进行装箱操作,在检索时进行取消装箱操作。强制转换以及装箱和取消装箱操作都会降低性能;在必须对大型集合进行循环访问的情况下,装箱和取消装箱的影响非常明显。

另一个限制是缺少编译时类型检查;因为 ArrayList 会将所有项都强制转换为 Object,所以在编译时无法防止客户端代码执行类似如下的操作:

1
2
3
4
5
6
7
8
9
10
11
12
System.Collections.ArrayList list = new System.Collections.ArrayList();
// Add an integer to the list.
list.Add(3);
// Add a string to the list. This will compile, but may cause an error later.
list.Add("It is raining in Redmond.");
 
int t = 0;
// This causes an InvalidCastException to be returned.
foreach (int x in list)
{
    t += x;
}

尽管将字符串和 ints 组合在一个 ArrayList 中的做法在创建异类集合时是完全可接受的,并且有时需要有意为之,但这种做法很可能产生编程错误,并且直到运行时才能检测到此错误。

在 C# 语言的 1.0 和 1.1 版本中,只能通过编写自己的特定于类型的集合来避免 .NET Framework 基类库集合类中的通用代码的危险。当然,由于此类不可对多个数据类型重用,因此将丧失通用化的优点,并且您必须对要存储的每个类型重新编写该类。

ArrayList 和其他相似类真正需要的是:客户端代码基于每个实例指定这些类要使用的具体数据类型的方式。这样将不再需要向上强制转换为 T:System.Object,同时,也使得编译器可以进行类型检查。换句话说,ArrayList 需要一个类型参数。这正是泛型所能提供的。在 N:System.Collections.Generic 命名空间的泛型 List<(Of <(T>)>) 集合中,向集合添加项的操作类似于以下形式:

1
2
3
4
5
6
7
8
// The .NET Framework 2.0 way to create a list
List&lt;int&gt; list1 = new List&lt;int&gt;();
 
// No boxing, no casting:
list1.Add(3);
 
// Compile-time error:
// list1.Add("It is raining in Redmond.");

对于客户端代码,与 ArrayList 相比,使用 List<(Of <(T>)>) 时添加的唯一语法是声明和实例化中的类型参数。虽然这种方式稍微增加了编码的复杂性,但好处是您可以创建一个比 ArrayList 更安全并且速度更快的列表,对于列表项是值类型的情况尤为如此。

Posted in ASP.NET | Tagged , , , | Leave a comment

微软宣布Windows 7六大版本 专业版取代商业版

Windows系统一直广为诟病的一个地方那个就是版本划分太多,繁复得让很多人不知该如何选择。在经历了Vista之后,业界普遍希望微软能在Windows 7上做出精简,但结果令人失望:微软今天正式宣布了Windows7的版本划分,和Vista一样有六个之多,只不过用专业版取代了商业版,但未看到上网本专用版。首先是“Windows 7 Starter”,只能最多同时运行三个应用程序,可以加入家庭组(Home Group),任务栏有不小的变化,也有JumpLists菜单。

  接下来是“Windows 7 Home Basic”(家庭基础版)和“Windows 7 Home Premium”(家庭高级版),和Vista一样。前者仅用于新兴市场国家,主要新特性有无限应用程序、实时缩略图预览、增强视觉体验(仍无Aero)、高级网络支持(ad-hoc无线网络和互联网连接支持ICS)、移动中心(Mobility Center)。

  后者则有Aero Glass高级界面、高级窗口导航、改进的媒体格式支持、媒体中心和媒体流增强(包括Play To)、多点触摸、更好的手写识别等等。

  XP时代的专业版又回来了“Windows 7 Professional”,替代Vista下的商业版,支持加入管理网络(Domain Join)、高级网络备份和加密文件系统等数据保护功能、位置感知打印技术(可在家庭或办公网络上自动选择合适的打印机)等。

  最后是“Windows 7 Enterprise”(企业版)和“Windows 7 Ultimate”(旗舰版),拥有最完整的功能:BitLocker,内置和外置驱动器数据保护;AppLocker,锁定非授权软件运行;DirectAccess,无缝连接基于Windows Server 2008 R2的企业网络;BranchCache,Windows Server 2008R2网络缓存;等等。

  根据微软的说法,Starter版面向对价格敏感的小型笔记本和部分OEM厂商(可能就包括上网本),家庭基础版仅用于新兴市场(大概是为了避免官司),小型商务客户可选专业版企业版则针对与微软签署了软件保障协议的大中型客户

  另外,微软推荐大多数消费者选择家庭高级版,需要更多功能和特性的可以考虑专业版;商业客户大多数都可以安装专业版,大中型公司和企业的首选自然就是企业版了。

转自: CnBeta

Posted in 业界新闻 | Tagged , | Leave a comment

超便携电脑运行Windows 7(录像)

 
    微软宣称即使是低端配置的netbook上网本也是可以运行Windows 7的,有人在一台Amtek U560 UMPC上就成功的将Windows 7安装了上去,并且Windows 7的体验得分有1.2!而之前在Amtek U560 UMPC上的Windows Vista的得分为1.0,要知道Amtek U560为600MHz A100 CPU,内存也仅有512MB!

    也许体验得分1.2不是很多,不过对于一台超便携式PC,要求不要太高.安装Windows 7时,Amtek U560需要外接一个USB DVD光驱,Amtek U560的硬盘为18GB,安装Windows 7应该绰绰有余.之前Amtek u560默认的操作系统为Windows XP,安装之后此台UMPC的WiFi无法使用.该视频演示的结果显示,Amtek U560选择全新安装Windows 7,并且可以与Windows XP形成双启动!

Posted in 业界新闻 | Tagged , | Leave a comment

微软证实Windows 7无Beta2版 开发工作进入尾声

【赛迪网讯】1月31日消息,据国外媒体报道,微软Windows工程主管史蒂文·辛诺夫斯基(Steven Sinofsky)周五证实,Windows 7将不设Beta 2版本,而是直接进入RC阶段。

  辛诺夫斯基称,微软仍坚持此前计划,即Windows 7只有一个Beta版本,然后直接发布RC。辛诺夫斯基说 :“Windows 7的下一个版本是RC,这意味着Windows 7的开发工作已接近尾声。”

  本月9日,微软已经发布了Windows 7 Beta,供用户下载测试。由于用户热情太高,曾导致微软服务器被挤爆。本月中旬,微软负责Windows产品管理的企业副总裁迈克·纳什(Mike Nash)曾表示,Windows7的开发已经进入RC1阶段。

  RC版本发布后,如果没有太大Bug,那么将直接进入RTM版本。如果存在重大漏洞,通常会再发布一个RC版。但辛诺夫斯基并未透露Windows 7正式版发布日期。

  有分析师认为,Windows 7有望于今秋提前发布,就连对微软提前发布Windows 7不抱太大希望的IDC分析师阿尔·吉伦(Al Gillen)也表示,如果微软取消Windows 7 Beta 3和RC2,那么Windows7将赶在圣诞购物旺季前发布。

Posted in 业界新闻 | Tagged , , , | Leave a comment

收到机械工业出版寄来的新书《ExtJS Web应用程序开发指南》

就快过年了,大家都没有什么心思工作,想着回家了.突然前台告诉我有一个印刷品回执要我去拿.又是一些软件公司的宣传资料?拿到手一看,居然是出版社寄过来的书.突然想起前几天出版社的小杜说给我寄一本《ExtJS Web应用程序开发指南》过来,没想到速度还真快!
下了班,就到对面的邮局领了这一本书,领回来一看,上面居然写着由于公司的信息放不下,所以退回.看来下次买房子的时候,信息要买个开口大一点的.
还没有来得及看这本书,打算过来回来后再认认真真看一遍.

关于该书的详细介绍见:
http://extjs.org.cn/node/293

Posted in Web UI, 生活乐事 | Tagged , , | Leave a comment

检测到在集成的托管管道模式下不适用的 ASP.NET 设置

    最近由于项目比较紧张,过年了,很多外地的同事都请假提前回家了.没办法,进度还是要按时完成的.只能硬着头皮自己也参与到项目的代码编写当中来了.

    这个项目是香港集团的一个应用系统,以前一直在win2000服务器下运行,基本上没有什么错误.最近要加一个新的需求,顺便也把.net framework 从1.1升级到2.0. 在同事的winxp下面,也一点问题也没有.可是搬到我的机器上,就出问题了,错误信息如下:

HTTP 错误 500.23 – Internal Server Error
检测到在集成的托管管道模式下不适用的 ASP.NET 设置。

   这个一个问题其实是由于我的系统是 Vista , IIS7的缘故.一般的解决办法是选择应用程序池为经典应用程序池.如下图所示:
2009-01-19_160305

Posted in ASP.NET | Tagged , , | Leave a comment

{由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值}

    今天在家闲着无事,想找个时间补一下.net方面的基础知识.于是乎打了很久之前的一个小小的测试项目,编译项目成功.但是运行的时候居然报错.该项目前一阵子还在我公司的电脑上测试通过的.

出错代码部分:

1
2
3
4
5
6
7
8
9
10
11
12
            try
            {
                Response.Cookies["userId"].Value = u.userId.ToString();
                Response.Cookies["username"].Value = u.username;
 
                Response.Redirect("Default.aspx");
                Response.End();
            }
            catch (Exception ex)
            {
                throw ex;
            }

没办法,只有上去百度一下,发现还真有这个问题的解决方案.

如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常。您可以使用 try-catch 语句捕获此异常。
Response.End 方法终止页的执行,并将此执行切换到应用程序的事件管线中的 Application_EndRequest 事件。不执行 Response.End 后面的代码行。
此问题出现在 Response.Redirect 和 Server.Transfer 方法中,因为这两种方法均在内部调用 Response.End。
解决方案 :
要解决此问题,请使用下列方法之一:
• 对于 Response.End,调用 HttpContext.Current.ApplicationInstance.CompleteRequest 方法而不是 Response.End 以跳过 Application_EndRequest 事件的代码执行。
• 对于 Response.Redirect,请使用重载 Response.Redirect(String url, bool endResponse),该重载对 endResponse 参数传递 false 以取消对 Response.End 的内部调用。例如:
Response.Redirect (“Default.aspx”, false);

原文地址:http://www.cnblogs.com/zhangronghua/archive/2008/09/11/1289089.html

Posted in ASP.NET | Tagged , , | 1 Comment

jQuery 1.3 正式版正式发布

http://docs.jquery.com/Release:jQuery_1.3

jQuery 1.3终于发布了。
min版(gzip后18kb)
源码(114kb)

另外可以用google的代码托管:
http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js

下面这个是我自己用Packer压缩的pack版
http://shawphy.com/down/jquery-1.3.pack.js(37kb)

简要来说:

更新了Sizzle选择器引擎,这个之前也提到过。可以查看他的性能:

此外据声称,把代码给了dojo基金会。这回Sizzle的野心在于能够让其他各种JS库都能用,包括Prototype, Dojo, Yahoo UI, MochiKit, 和 TinyMCE等等其他库。

live 事件
这也是jQuery 1.3这次更新的第二个重大更新。

可以看下面iframe中的效果以及源码

性能比较:

这样,我以前写的关于重复绑定的文章就差不多可以抛弃了

Event 对象
新增了一个jQuery.Event对象,他根据w3c文档,做了一个完整的,兼容所有浏览器的一个对象。具体还得看文档。

append, prepend, before, 和 after 方法重写
据声称,这些方法的效率提升了6倍

重写了offset方法
这回更快了

取消了浏览器侦测,全面改用jQuery.support
具体还得看文档了。
变化:
其中与开发者比较密切的是
[@attr] 中的@在1.3里不能用了
用trigger触发的事件现在能冒泡了
ready方法中,再也不等css加载完了再执行其中代码了。直接要求把css放在脚本之前就行
简化了.isFunction方法,那些偏门的就被无视了
用选择器a, b, c选择东西,在支持querySelectorAll (Safari, Firefox 3.1+, Opera 10+, IE 8+)中会按照这些元素在文档中顺序来确定这些数组在获得的对象列表中的位置。而不支持这个方法的浏览器则按照选择器顺序排好
新增了jQuery.Event
要求网页都在标准模式下,不要在怪异模式下使用,否则会报错。
以下3个方法属性已被不推荐使用。
* jQuery.browser
* jQuery.browser.version
* jQuery.boxModel

具体内容:
内核部分:
更好的queue, dequeue
新增selector, context这两个属性,分别指向获取这个元素的原始选择器和被查找的内容(可选)
选择器部分:
Sizzle的使用
复杂的css例如not(a, b)
属性部分:
toggleClass( “className”, state ) – 增加了一个布朗值的参数。
筛选文档:
.closest( selector ) – 找到离这个元素最近的一个父元素。这跟parents不一样。
is() 也支持更复杂的选择器了。
操作文档:
HTML Injection重写了
$(”<script/>”) 就自动转化为 $(document.createElement(”script”))
css:
offset()重写了
事件:
Live 事件
jQuery.Event
trigger()会冒泡了
效果:
hide() .show()之类的加快速度
内置动画效果考虑到了margin和 padding
.toggle( boolean ) 多提供了一个参数
jQuery.fx.off 关闭所有动画
AJAX:
.load()支持了文本格式的数据
工具:
新增jQuery.isArray

内部:
jQuery.support

另外这回改用YUI的工具压脚本了

 转自: http://shawphy.com/2009/01/release-jquery-1-3.html

Posted in 业界新闻 | Leave a comment