Profil de Simonlet 段雪明 = fun 一气 -> 三清PhotosBlogListesPlus Outils Aide

let 段雪明 = fun 一气 -> 三清

上帝籍着话语创造世界,程序员使用代码改造世界!"In the beginning was the Word, and the Word was with God, and the Word was God. The same was in the beginning with God. All things were made by him; and without him was not any thing made that was made.“(John 1:1~1:3)

Simon Duan

Occupation
Lieu
Photo 1 sur 10

Sky Drivers

22/11/2009

Silverlight 4 Beta新特性

2009年11月18日,微软在PDC大会揭示了Silverlight 4 Beta版本。Silverlight 4的新特性如下:

增强了商业应用开发

  • 支持打印:可以创建虚拟打印视图,支持可打印的文档。
  • 超过60个的控件:可自定义、支持皮肤;包括支持排序、尺寸大小可变、支持输入验证的表单;支持超链接、图片和编辑的RitchTextArea。
  • 增强了本地化(I18N):支持双向文本、从右到左和复杂的文本,如:阿拉伯语、希伯来文、泰文等30种新语言。
  • .NET CLR支持编译后的代码都可以在服务器和客户端运行,较少了开发和测试的时间。
  • 增强了数据绑定
  • Managed Extensibility Framework (EMF)支持构建完整的模块化应用:允许快速启动和下载,高效地开发和测试。
  • WCF RIA服务支持企业级的网络和数据访问,允许应用可以喝任何数据源和服务器交互。
  • Visual Studio 2010中Silverlight的工具
    • 完善的设计界面进行控件和布局的设计
    • 丰富的属性编辑器
    • 拖拽方式完成数据绑定,自动化的创建边界控件,例如:Listbox和Datagrid
    • 新的数据源窗口

更丰富的体验

  • 增强动画能力:在列表中允许更加动态和交互式地展现数据。
  • 支持摄像头和麦克风
  • 支持本地音频录制,无需与服务器交互。
  • 拷贝/复制和拖拽方式将图片、文字或其他数据导入Silverlight应用
  • 支持鼠标右键和滚轮
  • 通过优化,相同的应用程序Silverlight 4启动速度提高200%
  • 支持手势和Touch
  • 支持多播Multicast:与Windows Media Services的集成使企业降低了流媒体广播的成本,例如公司会议和培训。
  • 通过PlayReady,内容保护现在支持H.264的媒体。

超越浏览器

沙箱中的应用

  • 开发人员可以在应用中使用HTML
  • 支持桌面弹起的通知窗口,可以给用户提供实时信息和反馈
  • 通过PlayReady,支持离线的数字版权保护DRM。可以嵌入许可证到受保护的内容中,用户可以在离线时使用。
  • 支持窗口设定,如启动时屏幕位置和大小。

受信的应用

  • 可以读写用户的My Document, My Music, My Picture, My Videos文件夹
  • 支持COM automation,可以访问设备和系统其他能力,比如:USB读卡器
  • 可以访问其他桌面应用程序,比如访问Office Excel创建报表
  • 可以通过组策略管理受信应用程序
  • 离线、全屏模式下全面的键盘支持
  • 无需安全策略文件,既可以跨域的网络访问
01/10/2009

微软Wireless Mobile Mouse 4000

image

今天特地打车去公司拿了这款鼠标。本来以为国庆以后才能邮寄到,但是,中午去驾校的路上知道已经寄到公司,想想还是拿回来体验一下吧。

 Microsoft Wireless Mobile Mouse 4000

Wireless Mobile Mouse 4000应该是现在微软销售的最新的一款笔记本无线鼠标。本来想要黑色,但是脱销,只有绿色的了。最高兴的还是包装终于简化了(两眼泪汪汪)。以前微软鼠标的包装都是非常“结实”的塑料壳,解释的必须使用暴力手段才能打开,而且开封后,包装口子很锋利,很容易划到或扎到。我的衣服都被划了好几道。以前,在美国超市里面看到专门给类似设备开封的剪子(美国人做东西都这么缺心眼么?)。这次包装简化以后,很容易开封。

相对来说,做工有些粗糙,估计用料很便宜。手感很轻,有点轻飘飘的感觉。滚轮有点滑,不像其它鼠标滚轮有棱,防滑。

以上是他不好的感受,其他感觉就很不错。

  • Nano接收器,非常小,插到电脑上以后都可以不用拔下来了。当然,拔下来以后也可以隐藏到鼠标里面。鼠标底部有一个按钮,一按就会弹出来。因为,设计了卡口。不会弹的调出来。爽!!!
  • 鼠标底部有一个单独的电话开关,所以不用接收器也可以关掉鼠标电源。因为,过去的鼠标都是用接收器卡在鼠标底部以后关闭电源。
  • 强大的Blue Track技术使鼠标在玻璃上也能正常使用!强!!!
  • 整体手感不错,鼠标两侧的胶质防滑。本来这是鼠标基本要素,这是相对于微软其他几款鼠标而言…
  • 外观设计虽然没有宣传图边上那么出彩,但是中规中矩,个人还是比较喜欢。

总体感觉很好!强烈推荐!

回顾用过的几款鼠标,推荐的是:Wireless Notebook Optical 3000/4000/6000。但是他们的价格都和这款鼠标一样,所有个人觉得还是Wireless Mobile Mouse 4000。

非常不推荐的是:

  • Wireless Notebook Presenter Mouse 8000:价格不菲,耗电大户(几次在讲课的时候掉电),使用手感很差。如果使用蓝牙直连电脑,你会发现屏幕上鼠标指针常常有延时!当然也许我的Thinkpad T60不够强劲吧。当然,这款鼠标的做工还是很赞的!(当然,因为也很贵!)
  • Arc Mouse :因为外形不错,就给老婆买了一个。后来老婆拒绝使用,因为实在太难用了。我试用一下,确实实在实在太难用了。使用时,鼠标整体太长,对于手小的用户抓不过来。在使用时,折叠的轴非常影响使用,一直在晃。Arc的用户体验就是一个灾难啊!
  • Wireless Mobile Mouse 6000:虽然使用了喝Wireless Mobile Mouse 4000同样的技术。但是他光滑的外表,就是一个指纹采集装置。而且,“简洁”的外表赋予了很差的手感。与兄弟4000同样的毛病,做工粗糙。最后居然还比它兄弟贵!

一直以为微软的鼠标必是精品,因为我第一款就是其经典的Wireless Notebook Optical 4000,用了3年多,直到上个月被我摔坏了。但是后来的几款确实让我伤心了!

29/09/2009

.NET学习入门指南

最近一段时间,和一些客户和软件厂商的开发人员做了几次交流。发现一些非.NET的开发人员希望能够学习.NET开发,但是觉得找不到入门的地方。直接在网上搜索,又发现网上的资料浩如烟海,无所适从。

这里就整理了一些学习的资料和书籍信息,方便各位看官查询,希望能够给一些刚开始学习.NET的朋友一些帮助。对于.NET平台的介绍,请参看我的讲稿《微软.NET平台概述》。

如果要开始学习,请记住下面这张图。帮助你了解一些.NET开发平台涉及的大概内容,也能够帮助你确定自己的学习路线和方向。

image

推荐的内容主要以书籍、动手实验、WebCast网络广播、网页链接。

  • 书籍是强烈推荐阅读的,内容更有条理,容易理解,而且有大牛的思想在其中,你看到的不仅仅是知识,而是思想;
  • 动手实验:其中包含了很多示例代码和指导手册,手把手教你写代码。眼过千遍,不如手过一遍,所以在看书之余,强烈推荐大家过一遍,虽然简单,但是挺有帮助的。但是,动手实验大都是流水账,很少会告诉你代码背后的设计意图和设计思想。
  • MSDN WebCast中文网络广播:每周都会有开发课程实时广播,而且都会录制下来供大家以后观看。点击这里直接进入MSDN中文网络广播

开发语言的选择

首先,需要选择你使用什么开发语言。对于没有什么明确偏好的,或者熟悉Java/C/C++的,建议使用C#作为你的开发语言。

C#的学习资料:

对于VB,抱歉,虽然曾经用它做过项目,但是还是不懂。留个空白,有人知道的帮忙补充一下。

由于MSIL的存在,是的.NET能够吸收其他的开发语言,这里各位看官可以关注F#IronPythonIronRuby

F#是一种微软推出的函数式语言,具有函数式语言(Functional Language)、指令是语言(Imperative Language)和面向对象语言的特性。注重高效、简洁的开发。而且,F#将会成为Visual Studio 2010的一部分发布。现在已经在发布的Visual Studio 2010 Beta1和LCTP版本中看到了。

F#的学习资料:

 

今天先到这里,去打球了。明天驾校实际路考,希望能够通过。回来继续…

10/09/2009

什么是Bootstrapping?

Bootstrapping来自于英文中的一句老话“pull oneself up by one's bootstraps”,意思是用鞋带将自己提起来,让我都想到了武当绝学“梯云纵”!大侠们都是通过左脚踩右脚飞起来了。

计算机中,Bootstrapping解释为引导程序,就是用一个小的应用程序来引导一个更复杂的应用。比如PC启动的时候首先加载BIOS,当BIOS检测硬件无恙后,再加载操作系统Windows,然后将控制权交给Windows。当然,现在的一些应用软件也会编写一个Bootstrapper来负责整个应用程序的初始化工作,比如PRISM 2.0中的初始化过程。

Dd490835.StockTraderRIFig3(en-us,MSDN.10).png

Bootstrapping还有一个意思就是在挫折中自我恢复,无需别人的帮助自己恢复过来。如:We can't get a loan, so we'll just have to pull ourselves up by our bootstraps

如何用WPF编写玻璃窗口(Glass Window)?

image

主要使用桌面窗口管理器(DWM)的方法:DwmExtendFrameIntoClientArea。在WPF代码中需要利用Interop的操作。

封装DWM的接口:

public class NonClientRegionAPI
{
    [StructLayout(LayoutKind.Sequential)]
    public struct MARGINS
    {
        public int cxLeftWidth;      // width of left border that retains its size
        public int cxRightWidth;     // width of right border that retains its size
        public int cyTopHeight;      // height of top border that retains its size
        public int cyBottomHeight;   // height of bottom border that retains its size
    };

    [DllImport("DwmApi.dll")]
    public static extern int DwmExtendFrameIntoClientArea(
        IntPtr hwnd,
        ref MARGINS pMarInset);
}

在窗口加载的事件代码,注意只要有一个Margin的值为负,则整个窗口为Glass效果,所以很多代码都可以去掉了。

void OnLoaded(object sender, RoutedEventArgs e)
{
    try
    {
        // Obtain the window handle for WPF application
        IntPtr mainWindowPtr = new WindowInteropHelper(this).Handle;
        HwndSource mainWindowSrc = HwndSource.FromHwnd(mainWindowPtr);
        mainWindowSrc.CompositionTarget.BackgroundColor = Color.FromArgb(0, 0, 0, 0);

        // Get System Dpi
        System.Drawing.Graphics desktop = System.Drawing.Graphics.FromHwnd(mainWindowPtr);
        float DesktopDpiX = desktop.DpiX;
        float DesktopDpiY = desktop.DpiY;

        // Set Margins
        NonClientRegionAPI.MARGINS margins = new NonClientRegionAPI.MARGINS();

        // Extend glass frame into client area
        // Note that the default desktop Dpi is 96dpi. The  margins are
        // adjusted for the system Dpi.
        margins.cxLeftWidth = Convert.ToInt32(5 * (DesktopDpiX / 96));
        margins.cxRightWidth = Convert.ToInt32(5 * (DesktopDpiX / 96));
        margins.cyTopHeight = Convert.ToInt32(((int)topBar.ActualHeight + 5) * (DesktopDpiX / 96));
        margins.cyBottomHeight = Convert.ToInt32(5 * (DesktopDpiX / 96));

        margins.cyBottomHeight = -1;

        int hr = NonClientRegionAPI.DwmExtendFrameIntoClientArea(mainWindowSrc.Handle, ref margins);
        //
        if (hr < 0)
        {
            //DwmExtendFrameIntoClientArea Failed
        }

    }
    // If not Vista, paint background white.
    catch (DllNotFoundException)
    {
        Application.Current.MainWindow.Background = Brushes.White;
    }
}

主窗口的XAML,当然很多控件的Background设置为Transparent也可以实现透明,无需Opactiy属性:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Glass Window" Height="300" Width="300"
    Loaded="OnLoaded" Background="Transparent"
    >
    <Grid ShowGridLines="True">
        <DockPanel Name="mainDock">
            <!-- The border is used to compute the rendered height with margins.
           topBar contents will be displayed on the extended glass frame.-->
            <Border Name="topBar" DockPanel.Dock="Top" >
                <Grid Name="grid">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition MinWidth="100" Width="*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <TextBox Grid.Column="0" MinWidth="100" Margin="0,0,10,5" Opacity="0.5" Background="Gainsboro">Path</TextBox>
                    <TextBox Grid.Column="1" MinWidth="75" Margin="0,0,0,5" Opacity="0.5" Background="Beige">Search</TextBox>
                </Grid>
            </Border>
            <Grid DockPanel.Dock="Top" >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <TextBox Grid.Column="0" AcceptsReturn="True" Opacity="0.5" Background="Azure" />
            </Grid>
        </DockPanel>
    </Grid>
</Window>

24/08/2009

用代码释放Windows 7的能量-赢得比赛!

Windows 7的开发团队衷心的邀请您参加激动人心的全球Code 7大赛。我们希望表彰和奖励那些Windows 7上独特,创新和精彩的应用程序:

  • 展现Windows 7中的崭新特性
  • 炫酷并且创新

大奖非你莫属:现在就加入比赛吧,来赢取往返美国洛杉矶参加Professional Developers Conference2009的旅程。其中六名决赛选手将获得$7,777美元的奖金;其中一名决赛选手会获得更加惊喜大奖,该获奖者将被评委团选出并赢得$17,777美元的奖金

现在就加入比赛吧:请在2009年10月10日之前到www.code7contest.com上传您的视频。

更多信息请访问:msdn.microsoft.com/zh-cn/ee364703.aspxwww.code7contest.com

15/07/2009

微软公布云计算平台Azure收费细节和上市日期

微软表示,Azure将根据实际使用量进行收费,为了吸引企业客户,还将采用打折方式进行促销。Azure平台的计算资源定价为每小时0.12美元,存储资源定价为每GB每月0.15美元,每1万次存储交易的收费为0.10美元。SQL Azure将提供9.99美元的基本包月套餐,数据库容量最高为1GB,而99.99美元的商业版的数据库容量最大可达10GB。

微软同时还提供名为“开发加速器(development accelerator)”的打折套餐,这种套餐分两类,将分别提供15%和30%的折扣。要享受折扣,用户必须保证至少使用6个月,期间超出的使用量按照正常标准计费,6个月后所有资源也将恢复正常标准。

微软还宣布,Azure将在今年11月中旬举行的微软“专业开发者大会”上正式面市。微软最早于去年10月发布Azure,开发者一直都在通过微软社区技术预览(Community Technology Preview)测试该平台。

微软Azure云计算平台此前曾经在业界引发了强烈反响,该平台还将在Microsoft SQL Azure中包含一个基于网络的关系数据库,同时与微软的.NET服务连接并相互兼容。

微软表示,Azure的计算和连接的可靠性将达99.95%,而存储资源的可靠性可达99.99%。

微软首席软件架构师雷·奥兹(Ray Ozzie)曾表示,微软在平台和应用两个领域拥有双重优势,在消费市场和企业市场也拥有丰富的经验,而Azure将为微软在云计算领域建立据点。