首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 数据库 第二书店 程序员

YoungLOVEMaster/ 


共3个网摘 [ 1 ]   |  访问YoungLOVEMaster的个人空间

微软首席预言家:并行计算将成未来重点

YoungLOVEMaster收录,使用标签:.NET,时间:2008-3-14 18:54:37 | 相关网摘我也收藏

北京时间3月13日消息,据国外媒体报道,微软首席研究和战略官克莱格·穆迪(Craig Mundie)确信,他可以很好地把握科技的发展方向,但时间则是另外一个问题。

预测未来并不难

穆迪2006年接替微软联合创始人比尔·盖茨,成为了微软首席预言家。他目前正在准备帮助微软完成一次重要技术转型,即向并行计算转型。他认为,此次转型将同当初PC和互联网的兴起同样重要。他说:“要对技术的发展方向有相当准确的感知并不困难,我们甚至可以朝着这一方向前进,取得不错的技术进展。但是,几乎我们做的每一件事所花费的时间都超过了预期。”

穆迪控制着微软70亿美元的研发预算,他十分清楚有前途的技术需要很长时间来开发。毕竟,他一直在负责微软的网络电视和非传统计算项目。最近几年来,并行计算吸引了业界的高度关注,被认为是下一个重大技术进展。利用并行计算技术,计算机可以将不同的任务分配给多个处理器同时处理,而不是由一个处理器每次处理一项任务,从而提升了计算机的运算速度。

并行计算第一步

并行计算的全部潜力几乎深不可测,它可以推动机器人领域的重大技术进展,还可以加速多语种实时翻译软件的出现。计算机行业已经在走向并行计算的道路上迈出第一步,这就是多核处理器的普及。但穆迪认为,这只是冰山的一角。

为了将计算能力最大化,软件厂商需要改变软件程序员的工作方式。目前,全世界只有少数程序员知道如何在代码中将计算任务划分为多个部分,并交由多个处理器同时处理,而不是使用传统的线性方式,即每次处理一个任务。要实现这一目标,需要一种全新的编程语言,可能会影响软件每一部分的开发方式。

穆迪承认,这一问题难以解决,它所带来的挑战将于未来五到十年变得更加明显。加盟微软之前,他曾经在超级计算机公司Alliant Computer Systems从事并行计算开发。由于处理器主频的提升遭遇了散热和功耗方面的阻碍,芯片行业开始开发多核处理器,希望通过这一方式进一步提升处理器性能。在这种情况下,向并行计算转型变得更加必要。英特尔和AMD已经推出了四核处理器。硅谷创业公司Tilera预计,1000核处理器将于2014年出现。

等待杀手级应用

过去两年里,穆迪和微软首席软件设计师雷·奥谢(Ray Ozzie)分担了盖茨的职责。其中,前者主要负责把握长期技术方向,而后者则负责制定短期规划。在穆迪的建议和领导下,微软研发部门有超过800名博士正在研发新技术,包括网络搜索、实时翻译和触摸屏技术等等。在此之中,并行计算当然是一个高优先级项目,因为它可能会影响微软的方方面面。

穆迪预计,未来20年里,将会出现比现在强大100倍的计算机,企业数据中心甚至可以封装到笔记本或手机的芯片之中。他说,杀手级应用将使这种计算能力进入最前沿,就像字处理和电子表格软件推动PC普及,以及电子邮件和浏览器促进互联网流行一样。

对于微软这样拥有约8万名员工的大企业来说,放弃自己过去的优势和传统运作模式去关注新技术,并不是一件容易的事情。穆迪就此表示:“盖茨和我都曾经说过,除非是一名极度乐观主义者,否则很难完成这样的工作,因为要对抗所有反对变革的人。”


一种在IE中编写Mashups的新方法

YoungLOVEMaster收录,使用标签:.NET,时间:2008-3-14 18:54:23 | 相关网摘我也收藏

Mashup是一个被松散定义的Web应用程序,它将从各个源中获得数据和功能联合在一起。它通常使用JavaScript,也许还有AJAX技术在浏览器中执行。虽然它们已经相当的成功,但是mashups通常还需要站点运营者进行一定的规划。

微软正在创造一种编写类似mashup功能的新方法,他们将其称之为“Activities”。与采用一个特定页面定义的方式不同,用户可以启动类似的一套activities,而不用管这些activities位于哪个页面。

通过创建一个遵循OpenService格式的技术规范的XML文件,可以创建Activities。该文件指定了activity何时被触发,activity预览视图的样式,以及在运行activity时发生的内容。

最常见的activities可能是基于selection的activities。用户可以选择一个文本块,然后点击一个图标查看activities的列表。当用户的光标从每个菜单项移过时,一个预览视图就会出现。点击菜单项会启动activity,并把选中的文本传递到activity中。

预览视图的生成与动作的执行都在上面提到的XML文件中指定。它既支持简单的参数,也支持相当复杂的参数集,例如{selection}, {documentUrl}和{documentTitle}。此外,调用既可以采用“get”方式执行,也可以采用“post”方式执行。预览视图具有额外的限制,必须满足320*240的文本框大小,并且必须是在HTML中。

微软并不吝于OpenService格式的技术规范的许可,这一点甚至超出了人们的期望。它并没有让其成为ECMA规格或者将其限制为这些许可中的一种,而是采用Creative Commons Attribution-Share许可。

对于OpenService格式和WebSlice格式的技术规范,我们使用了两种独立的Creative Commons协议,允许开发人员免费使用我们的技术,或者基于我们的技术构建产品。我们将版权划定为在Creative Commons Attribution-Share Alike许可之下的OpenService格式的技术规范。该许可允许其他人复制、分发、修改以及根据该技术规范进行产品的构建,甚至允许商业使用,只要声明微软为其版权所有者,并基于相同的条约对他们所做出的修改授予许可。该许可与OpenSearch社区所接受的许可也是一致的。OpenSearch社区致力于OpenService格式的技术规范的相关工作。

既然专利权总是受到关注,因此微软清楚地表达了他们对此授予了所有的权利。

微软发展了Open Specification Promise (“OSP”),用以提供简单明白的专利权承诺,再次确保了广泛的开发者用户和客户从现在直到永远都能够免费、便捷地使用给定的技术规范。OAP可以根据客户与开源社区提出的反馈进行发展,而且,我们也乐于使得OpenService格式和WebSlice格式的技术规范能够在OSP下可用。OSP的使用确认了这两种技术规范都能够免费实现。


C++Builder非可视组件的消息处理-

YoungLOVEMaster收录,使用标签:.NET,时间:2008-3-14 18:52:37 | 相关网摘我也收藏

一个非可视的组件必须对Windows操作系统或用户定义的消息作出响应。然而,由于一个非可视组件没有窗口,因此它也没有窗口句柄,自然它也不能接收到消息,为了解决这一问题,我们的思路是创建一个隐藏的窗口,使非可视组件能够接收到消息。

为了给你的非可视组件创建一个隐藏的窗口,需要有以下: 1.一个私有变量型(Private Variable)的HWnd来取得窗口句柄。 2.一个用来捕捉窗口发送给组件的函数(a WndProc)。 3.对AllcolateHwnd的调用使之创建窗口句柄并设置WndProc。为了清楚的解释上述思路和展示创建过程,下面我们将以一个具体的实例来说明。

首先我们先创建一个新的组件,在C++Builder中,选择FILE|NEW…双击组件图标显示一个新的组件对话框改变Ancestor Type为Tcomponent和Class name为Ttest并设置完毕。

然后,切换到新组件的头文件,在类的私有部分(private section)加入以下声明: HWnd Fhandle;

void—fastcall WndProc(Tmessage& Msg); 第一行声明了一个调用Fhandle的HWnd变量,这个变量将用于窗口创建后捕获窗口句柄。第二行声明了一个用于接收消息的WndProc函数。这个函数的声明必须加以标识,以便限定它是一个WndProc,然后在类声明Public(公有)部分构造以下声明: Viod DoIt( );这个公有函数将被我们用来测试组件,类声明应如下:

class PACKAGE Ttest : public Tcomponent{private: HWnd Fhandle;
void—fastcall WndProc(Tmessage& Msg); protected: public: —fastcall Ttest(Tcomponent* Owner); void DoIt( );


—published: }; 现在切换到组件的代码单元,将下面一行加入到单元的顶部(在函数上也许是不错的地方) #define MY—Message.WM_USER+1 这一行声明了一个在DoIt函数被调用时,组件将发送给它自己的用户自定义消息。此时我们必须为组件分配一个窗口句柄。这个句柄将提供一个隐藏的窗口使我们可以捕捉组件中的消息。找到组件构造代码,加入下面代码: —fastcall Test::Test(Tcomponent* Owner): Tcomponent(Owner)
{
Fhandle=AllocateHWnd(WndProc);
} 好,重要的一步已完成,AllocateHWnd函数创建了一个隐藏窗口并且返回它的句柄,注意这里我们为了使Windows知道哪里发来了消息,传递WndProc的地址; 现在我们来创建WndProc的函数部分。在源文件中加入:

  void—fastcall Ttest::WndProc(Tmessage& Msg)
{
if (Msg.Msg == MY_MESSAGE)
MessageBox(0, ″Got here!″, ″Message″, 0);
try {
Dispatch(&Msg);
}


catch (…) { Application-〉HandleException(this); } } 无论何时Windows发送消息给组件,Windows都会调用这个函数。这部分代码完成了两件事。首先,它检查被接收的消息是否是我们用户自定义的消息。如果是,一个消息框将被显示,你可以看到实际上我们接收到的消息。其次,这段代码传送了系统(或VCL)处理过程中的消息,try/catch块用来保证,如果异常出现,它将成为缺省风格下的句柄。概括地说,WndProc函数在为缺省句柄传递所有其他消息,监控了所有客户消息。现在我们创建DoIt函数,完成我们的组件,加入我们创建DoIt函数,完成我们的组件,加入代码: void Ttest::DoIt() { PostMessage(Fhandle, MY—MESSAGE, 0, 0); } 这个函数发送一个消息组件的窗口句柄(记住,这个窗口句柄是以前存入到Fhandle数据成品中的)。现在我们已经完成了创建组件选择,用 SelectFile|ColseAll来保存我们的工作测试组件。下一步将测试组件。如果你使用BCB3,那么你必须把组件加入到“包”(Packege)中,然后用Componet|install(可以使用 DCLSTD35 Packege来快速测试)。再选择你刚存的TestBCB.Cpp,一旦你安装完成组件后,它将出现在组件板上。双击按钮,为按钮的OnClick事件创建以下代码: Test1-〉 DoIt( ); 现在运行程序,当你点击按钮时,将看到一个消息框显示“Got here". ListingA和B包含了头文件和源代码以下列出。

总结:一个可以响应Windows消息的非可视组件有许多用途。最显而易见的就是用来封装某些方面的WindowsAPI。例如:TAPI和 WinSock发送消息给事件的指定用户。如果你写的组件封装了一个这样的API。你将需要捕捉Windows发送的消息。而在你的组件中加入隐藏窗口将很好的帮你做到这一点。 以上程序在C++ BUILDER 3.0中调试通过。



共3个网摘 [ 1 ] 

YoungLOVEMaster/相关标签



网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
Copyright © 2000-2008, CSDN.NET, All Rights Reserved