专注ASP.NET和SQLServer2005 BI

骂别人不革命,便是革命者,则自己不做事,而骂别人的事做得不好,自然便是更做事者。
若与此辈理论,可以被牵连到白费唇舌,一事无成,也就是白活一世,于己于人,都无益处。
我现在得了妙法,是谣言不辩,诬蔑不洗,只管自己做事。——鲁迅1934年6月21日信
posts - 237, comments - 1164, trackbacks - 21, articles - 6
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2008年5月14日



参加王燕老师的讲座,收获很多,同时也认识了很多高手。参加了很多次王燕老师的讲座,每一次我们遇到问题王燕老师都能细心地给与我们指导。




有幸碰到王洪超老师,偶像耶,恰巧带了相机,就和开心就好老师合了两张相作为留念。上次看到开心老师是06年10月份,当时条件有限只朝开心老师要了张签名,呵呵,现在还放在笔记本包里珍藏着呢。




王研,在希格玛和现代都碰到过她,这次聊了一些,呵呵,是老乡。正如我见到的所有微软的员工一样(印象最深的是毛培老师),在他们身上总能感觉到对自己所从事工作的的那份热情。


感谢张哥(Jackal Farmer),让我能在微软留下这么多留念。

posted @ 2008-05-14 21:01 aspnetx 阅读(27) | 评论 (4)编辑

2008年4月19日

按照现在社区里大多数的silverlight 2.0教程,在做到与webservice通信的时候通常会遇到这样一个问题,就是crossdomainerror.而关于crossdomain.xmlclientaccesspolicy.xml这两个文件所提及的更是少之又少,甚至在网络上搜索都是关于flash或者flex.我一直就被这个问题困扰着.

看到silverlight.net上的新视频教程才解决了这个问题.里面提及了一个工具webdevhelper很不错,通过它可以看到一个silverlight应用运行的时候都做了哪些请求(当然,这个工具不只是干这个的).

在网络上能找到的资料,和在社区交流的信息,都是说把这两个文件其中的一个放到webservice项目根目录就可以了.当然这样我一直没有试验成功.后来通过这个工具,发现,比如我的webservice目录叫做WSProject,引用地址是http://localhost/WSProject/webservice.asmx,那么silverlight不是在http://localhost/WSProject这个目录下找crossdomain.xmlclientaccesspolicy.xml,而是在http://localhost/下找这两个文件.所以假如你的IIS默认目录是C:\inetpub\wwwroot的话,服务文件是部署在C:\inetpub\wwwroot\WSProject,那么crossdomain.xmlclientaccesspolicy.xml这样的文件一定要放在C:\inetpub\wwwroot而不是http://localhost/WSProject.

另外更多的时候,对于初学者做相关教程的时候,按照教程里的步骤,最后点VS2008里运行的时候,通常是把silverlight程序作为启动项目.我在做到这里的时候就遇到了本文所涉及到的问题.我发现这个时候在项目里添加crossdomain.xmlclientaccesspolicy.xml是无济于事的.VS的小型服务器会给你提供这样的测试环境,http://localhost:端口号/项目名/网页名,如前所述是注定找不到这两个文件的,所以,还是把服务文件先部署到IIS上然后再测试吧.

关于silverlightflash为什么都需要这样的文件,我还不是很理解,不过可能也是类似于asp.net中的fileupload控件指定文件的那个属性为什么只能是只读一样,肯定是有它的道理的.慢慢去体会了.

 

希望对和我一样初学的朋友有帮助.

---aspnetx

 

posted @ 2008-04-19 23:14 aspnetx 阅读(273) | 评论 (2)编辑

2008年4月10日

Visifire是利用Silverlight 2.0 beta 1开发的不错的Chart解决方案.利用它可以很容易的把其加入到各种技术方式实现的BS方案中的项目中去.按照官方的文档,只要加入一个xml文件就可以了,比如:


<vc:Chart xmlns:vc="clr-namespace:Visifire.Charts;assembly=Visifire.Charts"
          Theme="Theme3" AnimationType="Type3">

  <vc:Title Text="Athens 2004 Olympics"/>
  <vc:AxisX Title="Country"/>
  <vc:AxisY Title="Gold Medals Won"/>

  <vc:DataSeries RenderAs="Column"  LabelEnabled="True">
    <vc:DataPoint AxisLabel="USA" YValue="35"/>
    <vc:DataPoint AxisLabel="China" YValue="32"/>
    <vc:DataPoint AxisLabel="Russia" YValue="27"/>
    <vc:DataPoint AxisLabel="Australia" YValue="17"/>
    <vc:DataPoint AxisLabel="Japan" YValue="16"/>
  </vc:DataSeries>
</vc:Chart>



不过对于开发人员来说这样一定很不爽,既然是开源的.net下的东西,为什么不能在程序中控制它呢?Sunil的这个文章向大家介绍了如何去做:
http://www.visifire.com/blog/2008/04/03/creating-visifire-charts-with-managed-code/#comment-31
其实看下面的代码就很清晰了:


Visifire.Charts.Chart visiChart = new Visifire.Charts.Chart();
Visifire.Charts.DataSeries dataSeries = new Visifire.Charts.DataSeries();
Visifire.Charts.DataPoint dataPoint;
Visifire.Charts.Title title = new Visifire.Charts.Title();

title.Text = "Click On Chart To Refresh";
visiChart.Children.Add(title);

visiChart.Width = 500; // Width and Height are required for the Chart.
visiChart.Height = 300;

Random rand = new Random(DateTime.Now.Millisecond);

for (int i = 0; i < 9; i++)
{
    dataPoint = new Visifire.Charts.DataPoint();
    dataPoint.YValue = rand.Next(100, 1000);
    dataSeries.Children.Add(dataPoint);
}

dataSeries.RenderAs = "Point";
visiChart.Children.Add(dataSeries);

LayoutRoot.Children.Clear(); // So that Chart objects don’t build up each time we add one.
LayoutRoot.Children.Add(visiChart);

这样在自己的系统中数据怎么取就自己说的算了,里面的数据元素实际上就是一个DataPoint数据类型,简单的很.
以下是Visifire的相关资源,强烈建议silverlight社区的朋友去看看,真的很眩.

官方网站
http://www.visifire.com/
下载页面
http://www.visifire.com/download_silverlight_charts.php

posted @ 2008-04-10 14:47 aspnetx 阅读(239) | 评论 (3)编辑

2008年4月2日

     摘要: 来自:cngba
http://psp.cngba.com/psp_zx/2008040231498.shtml  阅读全文

posted @ 2008-04-02 20:49 aspnetx 阅读(150) | 评论 (1)编辑

2008年3月30日

做过一个地图的示例,实现的方法是每一个省作为一个path画的元素然后拼接到一起.后来想做一个鼠标移动到某个省然后那个省就显示点特效.这个功能想起来是理所当然,不过后来发现不是所有的省都会相应特效.排查了好久,最后发现无论你的path构建成的图形是多么的不规则,它的区域始终是一个能正好包含它的矩形区域,这样鼠标还没等挪到省里特效可能就被触发了,更可怕的是层与层的重叠会覆盖掉其它省的区域.目前想到的比较好的方案是画一个在其范围里面的最大矩形,来捕捉鼠标的事件.用这个方法需要注意的是,尽管这些矩形区域是用来捕捉鼠标事件的,不需要显示,但是也要让他们有边框和内部区域,不能是no brush,而是要有个眼色的设置,再把它们的透明度设置成0,否则将无法捕捉到鼠标事件.
至于这些是否是silverlight2 beta 1的bug,真不好说,其发布后比之前的1.1确实有好大的变化,不过基本上不用做太多的代码改动就可以平移过来.
另,曾和社区里的一个技术高人交流过关于新发布的silverlight 2,这里不方便提供具体是谁,大概的内容是:silverlight 2 beta 1好吗?好,但是不敢用...
聊完后总感觉哪里酸酸的.

posted @ 2008-03-30 19:52 aspnetx 阅读(310) | 评论 (2)编辑

2008年3月18日

地图找到一个现成的图片然后在上面描的.粒度到省,理论上可以到区或者县,不过工作量实在太大.
和作GIS的朋友探讨过,他们的GIS用户通常要求精确到街道,甚至是马路上的一个下水井井盖.所以,我做的这个算什么呢?肯定不是一个GIS,加入数据只需要精确到省的话,当然了,是目前,那么它就是一个还算得过去的报表展现组件.










通过前三个图,可以统计类似如下的信息,比如博客园用户在全国的分布.看地图有点乱?把地图层去掉,清晰多了.

后两个图适合做如下的统计,比如此次来陕西博客园俱乐部参加活动的成员都是来自于哪里的朋友.另外通过这个图比较发现一些在平面表里很难发现的信息,比如上图中基本能说明此次活动的朋友基本上都不是来自于周边地区的,而是千里迢迢赶来的.

目前所遇到的问题,关于点击下钻.我分了好几个层,第一个层是地图层,第二个是点层,第三个是文本层,第四个是数据层,比如显示柱图或者关联线.Silverlight的元素很奇怪,无法圈定一个不规则区域范围,全都是矩形,这样地图捕获用户焦点的时候就很困难.后来想到的办法是再加一个热点层,用一个包含在省图形里的矩形框代表热点区域,不过困惑至今的是鼠标的任何事件居然捕获不到.

基于安全考虑部分信息作了处理,并且以上图中数据均不是任何真实数据,切勿对号入座.

posted @ 2008-03-18 08:34 aspnetx 阅读(588) | 评论 (2)编辑

2008年3月12日

xap的加入让开发的思路产生了好大的变化.在1.1中添加了silverlight link后仍可以在控件里指定我要看哪个silverlight page.xap把所有的usercontrol封装了起来,所以之前的要指定哪个xaml就不可行.后来参考了下官方的silverlight controls demo,发现里面的方案是全站silverlight,在silverlight application里控制我要加载哪个silverlight usercontrol,这也难怪为什么建立的item都是usercontrol了.
silverlight2.0的总体开发确实是方便了不少,这个先赞一下.里面代码的变化和TerryLee交流了一下,确实变化好大,最明显的就是好多代码不是以前那么写的了,比如全屏.比较多的变化都可以参考TerryLee相关的教程,我一直都很喜欢看他写的教程,因为每一个教程都很认真负责,而且富有时效性,推荐阅读.

posted @ 2008-03-12 17:06 aspnetx 阅读(247) | 评论 (2)编辑

2008年2月23日

     摘要: Scott Gu早上发布了关于Silverlight 2.0 beta1的教程,粗略的看了一下,摘录几个目前个人比较关心的特性.同时又羡慕一下微软的员工,可以第一时间拿到尚未发布的技术以及产品.  阅读全文

posted @ 2008-02-23 20:54 aspnetx 阅读(2676) | 评论 (13)编辑

2008年2月22日

SQLServer Analysis Service下的决策树模型,使用Silverlight 1.1




目前来说攻克了很多技术上的难关,剩下的就是完善和润色了。
我一直以来都比较看好Silverlight for BI的灵活展现模式,尤其是在国内的软件氛围下。现在期望的就是正式版本的Silverlight 2.0能更完善一些,用起来再舒服一些。另外就是SQLServer2008里关于商业智能的更多的新特性。

posted @ 2008-02-22 13:14 aspnetx 阅读(707) | 评论 (0)编辑

2008年2月20日

关于开发:

SilverLight不许访问不同端口号的webservice,所以现在的解决方法是建立一个asp.net web application,然后在里面添加asmx文件作为服务接口,然后添加 silverlight link,这样就可以实现silverlight应用和webservice处在同一domain.

 

XamlReader的用法:

string xamlstring = "<TextBlock Text=\"Nice\"></TextBlock>";

try

{

UIElement uie = (UIElement)XamlReader.Load(xamlstring);

this.Children.Add(uie);

}

catch (Exception ex)

{

}

读取的结果看样子只能用UIElement的类型来接收,试过其它的方法全部抱错.

 

实现全屏:

public void Page_Loaded(object o, EventArgs e)

{

//Required to initialize variables

InitializeComponent();

fullButton.MouseLeftButtonDown += new MouseEventHandler(bgRect_MouseLeftButtonDown);

}

void bgRect_MouseLeftButtonDown(object sender, MouseEventArgs e)

{

if (System.Windows.InteropBrowserHost.IsFullScreen)

{

fullButton.Text = "Click Here to FullScreen";

System.Windows.InteropBrowserHost.IsFullScreen = false;

}

else

{

fullButton.Text = "Click Here Return to Window";

System.Windows.InteropBrowserHost.IsFullScreen = true;

}

}

posted @ 2008-02-20 21:20 aspnetx 阅读(381) | 评论 (0)编辑

2008年2月18日

The Path to Reusable XAML

http://www.codeproject.com/KB/silverlight/PathToReusableXAML.aspx

重用XAML的四个方法.

-Using "content.createFromXaml(Xaml)" JavaScript on the Client Based on Some XAML Script

-Using "XmlReader.Read(Xaml)" .NET Code on the Client Based on Some XAML Script

-Setting the Source Property of our Silverlight Control to a Server Side .NET Page / HttpHandler that Renders an existing XAML File

-Render XAML Code with Some Sort of Generation Tool that Uses XML Comments for Instructions

 

 

Silverlight Alien Sokoban

http://www.codeproject.com/KB/silverlight/SilverlightGame.aspx

通过一个游戏开发介绍Silverlight以及WPF的方方面面.

 

 

使用自定义实体类和集合代替DataSet

http://www.turingtoday.net/www/ArticleContent.asp?ID=1491

清晰地描述了关于强类型以及弱类型,并且阐述了自定义实体类以及集合的优点.

示例代码很多,是一个不错的参考文章.

 

 

HOW TO:在 Visual C# .NET 中实现自定义集合

http://support.microsoft.com/default.aspx?scid=kb;zh-cn;307484

介绍实现集合类需要实现的一些接口以满足foreach等操作.

 

 

Windows 2003网络负载均衡的实现

http://news.skycn.com/article/11518.html

介绍网络负载均衡的优点以及实现,简单的介绍了在两台安装Windows Server 2003的普通计算机上,介绍网络负载平衡的实现及应用。其中有介绍用IIS服务验证网络负载平衡.

posted @ 2008-02-18 08:22 aspnetx 阅读(202) | 评论 (0)编辑

2008年2月10日

这两天看了一个电视剧,名字叫什么从来不是我关心的事,关键是里面所涉及的公安破案取证以及调查的流程挺吸引我.通常来说刑事案件发生后,特大的案件会成立专案组,而专案组的领导通常是中央调派过来的,然后在案发地组织专案组,下面通常分为若干个刑警大队.在这个过程中户政处时常发挥着作用,在专案组发现一个关联人之后,会首先需要知道这个人的基本情况,包括与这个人关联的亲人等,然后就是与以前掌握的犯罪嫌疑人看是否有关联,这些往往都是破案的关键.然后就是串案,比如现场发现的强制弹痕和以往的枪支弹痕是一样的,那么就可以初步的认为这两个案子是一个人干的可以串到一块来破.这是根据现场物证来串,也有根据人的体貌特征来串的,比如凶手行凶的时候都带墨镜,看不清脸,那么这个时候就可以根据体貌特征来初步判断两个案子的犯罪嫌疑人是同一个人.
案件破获中还有可能需要其它的信息作为辅助,比如从犯罪嫌疑人身上搜得一部手机,而在犯罪嫌疑人死不招认得情况下,他的通话记录就是很关键的破案线索.这个时候各电信运营商都会积极地配合.还有比如犯罪嫌疑人的银行卡,这张卡最近的交易记录往往也是破案的关键线索,再延伸,像ATM的录像等等.
如果说设计一个系统让这些全都自动的话,从技术上说是可行的,但是从法律上来说可行性不高,因为很多信息不只是靠刑侦部门就可以解决的,还要综合电信和银行等几大平台(听说电信的平台,各个省份都不是一个系统),中间需要若干法律手续,除非国家下达特殊文件,否则这些系统很难综合到一起.
不过想设计一个辅助的系统还是可行的,让计算机帮助人们在海量的历史数据中快速的发现人们不知道的而又对人们有用的知识或者信息.

最后,关于中国式的类似电视剧,都有这么一个惯性,就是坏人最终都会被绳之以法。不过设计的似乎都有点傻,比如,王荣海最后的跑路,反正已经向李世达要了个人情了,那为什么不干脆先把自己送出去,然后再拖李世达把亲人送出去。他应该知道,这种情况下财产都被冻结了,自己的亲人肯定已被警方监视了,顺着亲人这条线警方就可以抓到他,而他还非要在国内和亲人见面然后一起跑路。这些老大平时整人的时候足以见其智商是如何的高,我想他们不能连这点道理都想不通吧。

posted @ 2008-02-10 11:54 aspnetx 阅读(74) | 评论 (0)编辑

2008年1月22日

silverlight 1.1里访问webservice很容易,早先看过一个兄弟写过用asp.net ajax来实现silverlight访问webservice,可能是由于版本1.0只能用javascript吧.
现在已经把创建usercontrol摸清,顺便把各个element以及storyboard的套路摸了个清
1.0里的javascript的createfromxaml方法看起来很实用,但是在1.1里的托管代码里找不到这个方法了,正在找替代的方法.通过createfromxaml可能有点啥,不过在创建一个button以及它的storyboard似乎比较容易.
对于BI来说,由于是托管代码,应该容易很多,走webservice的话能更灵活一些.
现在已经逐步的验证silverlight for BI可行.
由于3月份才能获得golive许可,可能有很大的变化,不过有变化应该是能让开发更舒服,总体来说是很值得期待的.现在的准备对于将来肯定也是有用的.

posted @ 2008-01-22 20:38 aspnetx 阅读(182) | 评论 (1)编辑

2008年1月20日

silverlight1.1支持托管代码写脚本,比写javascript要舒服得多,虽然2008支持了javascript的调试,不过不如c#使得顺手.
创建图形基本上没什么太大的变化,从教程来看,基本上c#和javascript是一个套路.
silverlight是支持创建usercontrol的,不过看演示目前的IDE对这个东西的支持好像还不是很好.早先埋怨过silverlight没有类似flash的符号功能,看来usercontrol可以替代这个,希望在正式的silverlight2.0版的时候在IDE里加入这个功能.
不过从目前掌握的技术细节来看用silverlight构造复杂的BI应用应该是够了.只是很多工作都要从底层来做,就像用纯粹的c++语言画一个窗体一样.这个比喻可能不太贴切,不过多少也说明了问题.
silverlight2.0要获得golive许可要在3月份,很值得期待.

posted @ 2008-01-20 21:19 aspnetx 阅读(199) | 评论 (2)编辑

2008年1月19日

Farmer以前好像在哪个微软出版的红皮书见过,也或许国外的胡子大树太多所以我记混了.
胡子大树一点半就出现在了会议室,感觉很和蔼可亲的一位大叔------这就是国外的牛人给人的感觉,难怪KevenYu也在感叹:你看看国内的某些牛人,然后深深的叹了一口气.
起初说有翻译或者同声传译,但好像不需要.Farmer从头到尾的讲解,语速都很标准,听起来不是很费劲,到后来的时候设计到了一些太专业的东西,而且Farmer讲的也起兴了语速也快了起来,到这部分只能猜他在说什么了.
中途休息的时候RayZhang问了Farmer关于GIS的问题,虽然他们都是微软的员工,但是似乎也有些发难,因为很多东西微软平台实现不了的时候,直接面对客户的是这些DPE.不过Farmer不愧老道,回答得很完美,反而RayZhang问第二个问题的时候,好像连语言都组织不好了.会议结束的时候我问了Farmer关于ASP.NET开发人员展现BI的问题,要说专家不愧是专家,直接告诉你没有,不过他给推荐了一些网站,在他的名片后面------呵呵,所有在场人员好像就我得到了Farmer的名片,会后我也把我的名片与Farmer做了交换.
最后的最后,与Farmer进行了独立的合影.与Farmer的沟通一切都显得很自然,失败的地方嘛,就是居然忘记了要Farmer的签名,后悔中.相信以后在某次的TechED会议或者MVP的聚会能再次见到Farmer的身影.

posted @ 2008-01-19 08:45 aspnetx 阅读(199) | 评论 (1)编辑