WAP Access is available!

112 views 四月 21, 09 by Timothy

此博客的WAP访问地址已经开启,现在你可以使用手机随时随地的通过以下地址进行访问:

http://m.xiaozhou.net

电信3G无线体验

180 views 四月 20, 09 by Timothy

无意中听同事说,成都电信最近推出了3G无线宽带免费体验的活动,我也在网上预约了。周六一大早,跑了一趟营业厅,拿回了传说中的无线上网卡,一番折腾过后,终于连上了3G网络体验了一把3G冲浪。电信的3G网络,号称可以达到下行3.1Mbps,上行1.8Mbps,而在试用的过程中,发现速度确实如此,看来3G离我们越来越近了……直接上图了。

拿回的无线上网卡,中兴的,如图:

P4200135

样子看起来很像个U盘,USB接口,卡壳里面可以插一张卡,其实也就是个189的手机卡,开通了3G宽带数据业务,也可以用来打电话,不过在宽带免费体验期间,话费另计。

P4200136

旁边有一个可以转动的天线

P4200137插上我的机器  P4200138

 

 

插入后,发现多一个虚拟光驱,里面有拨号程序和驱动程序

1

安装驱动和拨号软件

2

拨号软件界面

4

拨号成功后,马上下载软件测试,发现电信的3G速度确实不是吹的,最快达到300KB/S,平均下载速度都在200KB/S以上……这简直比家里的2MBps的ADSL还快了。

6总的说来,电信的3G确实不错,巴巴掌~~不过资费确实有点让人接受不了,  打算免费体验完后退掉无线上网卡,等以后降价了再作打算……

blog恢复正常

126 views 四月 11, 09 by Timothy

前两天发现blog不能访问了,问了空间服务商,发现空间到期了。。无奈,自己机器上的备份不是最新的,所以部分评论和留言丢失,见谅……看来以后经常备份数据库才是王道。

Microsoft My Phone 体验

182 views 三月 07, 09 by Timothy

21世纪什么最重要?当然是手机里面的联系人和电话号码!没法想象,当你的手机遗失的时候,往往令人遗憾的或许不是手机本身,而是手机上成百上千联系人号码的丢失,就算你重新换了手机,你的朋友、同事的电话号码也只有一个一个的重新录入,那真是相当的折磨人啊……

不过现在Windows Mobile的用户有福气了,微软新推出的MyPhone服务,能彻底让你远离这样的噩梦,使用MyPhone,能自动帮你同步你的联系人电话号码、短信、手机里面的相片、音乐到网上,就算你的手机不幸遗失了,联系人还在,这可方便多了。不过现在MyPhone刚开放Beta版本供用户使用,使用前需要申请排队。

等了几天,终于等到了申请回复的邮件,于是今天我也打算来MyPhone一把。不说了,直接上图体验!

MyPhone的安装界面,需要下载相应的软件到你的Windows Mobile手机并安装

手机访问安装包的网址,下载安装包到手机并安装

安装过程

安装过后的程序图标

初次运行

使用MyPhone需要Windows Live ID登录

选择同步方法

选择需要同步的内容

开始同步了

同步完成,这样也可以通过PC上的浏览器查看同步到网上的内容了

MyPhone的Web登录界面,左边的菜单项目,和手机上同步的内容选项一致

这就是从手机自动同步到网上的联系人列表,具体的内容被我PS掉了。呵呵

SQL中的日期计算

136 views 二月 22, 09 by Timothy

这两天写一个和统计数据有关的存储过程,里面要利用日期进行一些计算和判断,也自然要利用SQL的一些日期相关的函数。这里略记一下,当是复习一下SQL。

利用SQL脚本内置的几个函数,我们能灵活的对日期进行计算和比较。常用的几个函数:GETDATE(),DATEDIFF(),DATEADD()

GETDATE() 当然顾名思义,得到当前的日期,返回类型是DateTime类型。

DATEDIFF ( datepart , startdate , enddate ) 用于判断在两个日期之间存在的指定时间间隔的数目。

第一个参数是指定时间间隔的类型,例如mm(月),dd(天),yy(年),ms(毫秒),ss(秒),不同的间隔类型,返回的结果也不一样。

DATEADD (datepart , number, date ) 用于日期运算的函数,将传入的日期,加上指定时间间隔数目的日期。

 

例如,计算得到本年的第一天:

Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

我们来分析下这个SQL语句就可以知道,首先从最里面的getdate()开始,getdate()得到当前日期和时间,外层的datediff,计算当前日期和1900-01-01 00:00:00之间的时间间隔,返回单位是以年来统计的,如果我们分开看DATEDIFF(yy,0,getdate()),0)的结果,返回就是:109。返回的109,传递给最外层的DATEADD函数,将1900-01-01 00:00:00加上109年,得到的结果,自然就是2009-01-01 00:00:00了,也即本年的第一天。

 

同样,灵活的利用这几个函数的组合,我们可以得到不同的结果:

得到当月的第一天:Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

得到当前季度的第一天:Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

得到当天的起始时间: Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

得到上个月最后一天: Select DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

得到上个月的第一天: Select DATEADD(m,-1,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

其原理就是得到当月第一天,再减去三毫秒(SQL的时间以3毫秒为一个单位),这样以当前为2月,得到的结果就是:2009-01-31 23:59:59.997

得到去年的最后一天: Select DATEADD(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

得到本月的最后一天: Select DATEADD(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

得到本年的最后一天: Select DATEADD(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

得到本月的第一个星期一: Select DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd,6-datepart(day,getdate()),getdate())), 0)

快速开启、屏蔽Vista下的UAC提示

180 views 二月 02, 09 by Timothy

User Account Control (UAC) 是在 Windows Vista 中新加入的一种安全特性。利用UAC能够为系统的安全带来保障,而且,我们在运行程序的时候,能够针对不同的用户账户区分权限。但是UAC在使用过程中,也有不少的麻烦。特别针对我们个人用户而言,其实自己就是管理员,没必要让其他的人也用我们的电脑,而UAC的提示随处可见,频繁的提示,并且每次弹出UAC提示的时候,屏幕总是会变暗,让人很是不习惯。所以通常我在使用Vista的时候,会关闭掉UAC功能。

 

常见的关闭UAC的功能,其实就是直接进入控制面板–>管理工具–>本地安全策略–>本地策略–>安全选项–>用户帐户控制, 以管理员批准模式运行所有管理员,这个选项在默认的情况下是“已启用”,我们要关闭它,但是关闭后Vista的安全中心会提示:操作系统的总体安全性已降低。

 

其实启用与屏蔽UAC功能,还有一个很便捷的方法,就是修改注册表就可以实现了,并且关闭后安全中心也不会有提示。

所需要修改的键值在注册表的位置:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]

 

只要将下面两段修改注册表键值的脚本,分别保存成Disable_UAC.reg和Enable_UAC.reg文件,直接双击相应的文件导入注册表即可。

 

 

屏蔽UAC提示:

 

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
“ConsentPromptBehaviorAdmin”=dword:00000000
“ConsentPromptBehaviorUser”=dword:00000000

 

启用UAC提示:

 

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
“ConsentPromptBehaviorAdmin”=dword:00000002
“ConsentPromptBehaviorUser”=dword:00000001

 

 

怎样,用起来很方便吧?  :-) 

云计算杂谈–Windows Azure Service Platform

351 views 十一月 26, 08 by Timothy

在LA的软件开发者会议(PDC 2008)上,微软首席软件架构师Ray Ozzie宣布了微软的云计算战略以及云计算平台——Windows Azure Service Platform。押注于云计算,出售信息存储空间和云端计算能力,为全球用户提供数据中心,由此可见微软想在互联网平台和其竞争对手一搏的决心。

基于Windows Azure Service Platform,用户可以在不必搭建自己服务器群的情况下创建基于互联网的各种应用。或许从现在开始,我们的整个软件工业,都在面临一个巨大的转折点,从某种意义上说,是一场巨大的变革,从强大的桌面运算进化到在互联网上运行各种轻量级且便宜的各种应用,而用户的体验也不再仅仅局限于桌面应用,而是不断的延伸到互联网。Windows Azure以云计算为核心,提供了软件+服务的计算方法。它也是Azure服务平台的基础。Azure由微软主导开发,用于帮助开发者开发下一代应用程序。这些应用程序将可以跨越云端和专业数据中心,在PC、Web和手机间创造完美的,无缝的用户体验。

对于开发者而言,借助于Windows Azure的灵活性,我们能建立基于云计算的新应用,或者为已有的应用增加云计算的能力。更为方便的是,开发Azure Service应用,不需要开发人员进行其他前端知识的准备,通过充分利用现有的VS开发环境和.NET Framework的技术,我们就能搭建基于云计算的应用了。基于Azure Service 开放、灵活的架构设计,在不久的将来,还将针对更多的开发环境和开发语言提供支持。而Azure Service本身所提供的开放的,基于标准的通用性环境也提供了对众多互联网标准协议的支持,包括:HTTP, REST, SOAP, 和 XML.

一、Windows Azure Service 的服务结构
新的开发模式,新的技术,总是让人为之振奋,Windows Azure Service所提供的组件包括以下几种类型:

Windows Azure
Windows Azure 是一个提供云计算服务的操作系统,作为Azure Service Platform的一部分,为开发、部署云服务以及管理提供环境。

Live Services
为用户可以在PC、手机、PC应用程序和Web网站上存储、共享、同步文档、照片、文件以及任何信息提供服务。

Microsoft SQL Services
Microsoft SQL Service作为Azure Service的一部分,扩展了原有Microsoft SQL Server的功能,是一种基于Web的分布式关系数据库。它提供的基于Web的服务包括查询、搜索以及同步数据到移动用户,远程办公系统以及商业合作伙伴。提供结构化、半结构化以及非结构化的数据存取服务。

Microsoft .NET Services
Microsoft .NET Service 使开发松耦合结构的云端应用更为简单。所提供的功能与.NET Framework的工作流、访问控制等概念相似,但是提供了基于服务的实现。

Microsoft® SharePoint® Services & Dynamics® CRM Services
用于在云端提供针对业务内容、协作和快速开发的服务

二、Windows Azure Service开发流程

进行云端开发,首先需要下载微软所提供的相应的SDK。由于现在Azure Service还未推出正式版,所以我们能下载到的SDK是CTP版本。在Azure Services Developer Portal获取Windows Azure授权,还需要在Azure的官方站点申请邀请码并进行注册。
获取SDK和更多的信息,可以访问Azure的官方站点:http://www.azure.com/

在前面的介绍中,我们也看到,Azure 是一个灵活的平台,我们能利用它所提供的所有服务或者仅仅是某一项服务进行开发。开发人员能通过现有的Microsoft .NET Framework和Microsoft Visual Studio进行开发,编写基于web或是基于Mobile的应用,或者编写Web Service。在不久的将来,Azure会支持更多微软的或者非微软的开发语言和平台。

开发的流程也相对简单,一旦你完成编码,只需要将的应用部署到Windows Azure的云服务器,终端用户就能够通过Internet访问到你的应用了。

大致了解了Windows Azure,也让我对Azure服务平台的强大能力感到兴奋不已。或许在未来的应用中,Windows Azure能未我们带来的不仅仅是惊喜,而是一场变革。

Host WCF Service in WAS

240 views 十一月 24, 08 by Timothy

WAS 是 Windows (Process) Activation Service 的缩写,是Windows Vista中所新增的一种进程宿主模型。WAS作为 IIS7.0 特有的新增功能,和以前IIS 6.0的功能相比更加强大,因为它提供并支持除HTTP之外的更多协议,比如TCP方式和Pipe(管道)方式。以下的文中,都把Windows (Process) Activation Service简称为WAS。利用WAS作为WCF(Windows Communication Foundation)的宿主,我们能充分利用WAS的很多优点,因为我们再也不用为非HTTP方式的WCF Service单独编写宿主程序了。而WAS本身的特点,也让我们的服务端程序能享受到只有以往的HTTP方式的WCF Service才能拥有的很多特性。本文也简单向大家分享一下怎样使用WAS来作为WCF Service的宿主。

以往的部署WCF Service的方式,大家一般会想到以下几种:
1. 使用WinForm或者控制台程序作为宿主
2. 使用Windows Service作为宿主
不管我们用怎样的方式来作为WCF Service的宿主,少不了的麻烦,都是需要单独编写Host程序,除此之外,就该轮到WAS了。WAS在Vista中,其实是由一个单独的Windows Service来实现的,如果我们仔细找找,就能找到,Windows Service的名称,就叫做”Windows Process Activation Service”。由此看来,WAS的进程和IIS进程在物理上是隔离开的,能为我们提供一个灵活、稳定的WCF Service宿主环境。WAS内部的工作机制,大致和ASMX WebService类似。

简单了解了WAS的特性,下面我们用一个netTcpBinding的WCF示例来演示怎样利用WAS来Host WCF Service:

首先,我们需要查看Vista的组件中,是否打开了WAS的功能,打开控制面板,打开“程序和功能”对话框,在”打开/关闭 Windows功能”对话框中,确保下面图中的功能项被打开:

其实在这一部操作之后,windows会自动帮我们在IIS中做好配置,不过为了放心,我们还是打开IIS确认一下设置是否正确。

首先是检查IIS站点中的绑定:

确保net.tcp方式,绑定到808端口

打开站点的高级设置,确认”已启用的协议”中,填有”net.tcp”,没有的话,可以补上。

然后是建立应用程序目录,这个目录等下会用来部署WCF的Service端程序。建立好目录后,也在”高级设置–已启用的协议”中,填上net.tcp

到这里,基本的host环境我们已经设置好了。下面来实现我们的服务端和客户端。

建立Contract
[code]
[ServiceContract]
public interface IService1
{
[OperationContract]
string SayHello(string value);
}
[/code]

实现简单的Service类
[code]
public class Service1 : IService1
{
public string SayHello(string value)
{
return string.Format("Hello,{0}", value);
}
}
[/code]

建立svc文件
[code]
<%@ ServiceHost Language="C#" Debug="true" Service="WCFLibrary.Service1" CodeBehind="./App_Data/Service1.cs" %>
[/code]

服务端的WCF配置
[code]










bindingConfiguration="NetTcpBinding" contract="WCFLibrary.IService1">






















[/code]

其实endpoint只需要一个即可,为了方便通过svcutil.exe生成客户端代理,需要通过另外一个endpoint的mexTcpBinding来暴露元数据。这样当服务在发布好的时候,我们可以通过
Svcutil.exe net.tcp://Timothy-T61/WCFService/HelloService.svc/mex 来生成客户端代理了。

完成服务端的编写,直接将服务端程序,部署到刚才在IIS中添加的应用程序目录中。

客户端的wcf配置如下:
[code]









bindingConfiguration="ClientBinding" contract="WCFLibrary.IService1" />

[/code]

客户端拖放一个按钮,添加如下代码:
[code]
private void button1_Click(object sender, EventArgs e)
{
ClientProxy client = new ClientProxy();
MessageBox.Show(client.SayHello("Timothy!"));
}
[/code]

一切就绪,运行程序,点击按钮:

没有单独编写host程序,通过WAS,我们的服务端正常运行了。

Page: 26 of 49 1 ... 22 23 24 25 26 27 28 29 30 ... 49