01

2010年04期《程序员》配套源码及相关链接

作者: chenqiuge 分类:坊间人语   阅读:12,182 次 添加评论

为了方便大家查阅,现把2010年04期《程序员》杂志中相关链接及代码发布在此:


微博

原文请见:http://www.programmer.com.cn/2537/


程序天下事


P18页,推荐资源


1. 网站:Molly Holzschlag的个人网站:molly.com

2. 文章:金旭亮在他的博客中发表的“抛砖引玉:我看微软.NET各子技术领域之应用前景”一文:http://blog.csdn.net/bitfan/archive/2010/03/03/5341985.aspx

3. 视频:“Introducing F#”:

http://channel9.msdn.com/posts/JanSteberl/F-Webcast-I-Introducing-functional-concepts/


P20页,推荐资源


关于业务分析师的漫画

http://www.modernanalyst.com/Resources/BusinessAnalystHumor/tabid/218/Default.aspx

OMG20周年庆,Richard Mark Soley谈过去和将来20年。

http://www.youtube.com/watch?v=M84pOXS2SbU

最新演讲“学校里学不会的软件知识”

http://imedia.emn.fr/podcast/Jeudismodeles/IvarJacobson.m4v


P23页,推荐资源


IT世界itworldcanada(加拿大网站)

Ingres技术公司计划发布适于密集数据处理(比如:数据仓库应用)的开源产品——VectorWise

http://www.itworldcanada.com/news/ingres-to-move-open-sourcedatabase-to-beta/140084


P25页,推荐资源


《StarCraft II: Effects & Techniques》

http://ati.amd.com/developer/SIGGRAPH08/Chapter05-Filion-StarCraftII.pdf


P27页,推荐资源


从合同的签订分析项目的成与败

http://soft.chinabyte.com/311/11176811.shtml


P28页,推荐资源


“Rails3.0升级手册”, 由Jeremy McAnally撰写。

http://www.railsupgradehandbook.com/


P29页,推荐资源


VMware vSphere: http://www.vmware.com/cn/products/vsphere/


P30页,推荐资源


未来三年 SaaS产业发展的“分水岭”?

http://www.cnsoftnews.com/show_news.asp?newsid=25457

甲骨文对SaaS及云计算“尽弃前嫌”

http://cloud.csdn.net/a/20100303/259112.html

SaaS面临软件商业模式缺陷的挑战

http://server.csdn.net/n/20100204/258754.html

CIO选择SaaS产品和服务的五个步骤

http://java.csdn.net/a/20100302/259071.html


P31页,推荐资源


JaveScirpt简史(The Early Years)

演讲者:Douglas Crockford

http://developer.yahoo.com/yui/theater/video.php?v=crockonjs-1


Mix10大会相关报道请见:


【总编观察】直击微软MIX10:第一天

http://www.programmer.com.cn/2551/

【总编观察】直击微软MIX10:第二天

http://www.programmer.com.cn/2570/


免费午餐之后的选择——体验Visual Studio 2010中的并行开发


P72页相关链接1:


更加详尽的论述可以参考《程序员》2006年11月号的译文《免费午餐已经结束——软件历史性地向并发靠拢》(http://blog.csdn.net/hsutter/archive/2006/08/29/1136281.aspx


P72页相关链接2:


那么今天,并行计算已经成为软件开发的核心趋势之一(援引自Soma的博客中文版http://blog.joycode.com/soma/archive/2010/03/04/115899.joy)。


P73页相关链接3:


在MSDN你能找到详尽的关于调试基于任务的并行应用程序的文档(http://msdn.microsoft.com/en-us/magazine/ee410778.aspx


P73页代码段1:


// 使用tg对象来并发执行若干任务

task_group tg;

tg.run([] { do_something(1); });

tg.run([] { do_something(2); });

tg.run([] { do_something(3); });

// 等待所有的任务结束执行

tg.Wait();


P73页,代码段2:


// 串行for循环

for (int i = 0; i < 100; i++) {

a[i] = a[i]*a[i];

}

// 并行for循环

Parallel.For(0, 100, delegate(int i) {

a[i] = a[i]*a[i];

});


Windows Phone开发工具初体验


P75页,代码段1:

而WebBrowser选择Navigate方法来访问指定网站。

private void button1_Click(object sender, RoutedEventArgs e)

{

textBlockListTitle.Text = textBox1.Text;

if (Convert.ToBoolean(checkBox1.IsChecked))

{

webBrowser1.Visibility = Visibility.Collapsed;

mediaElement1.Visibility = Visibility.Visible;

// play Video

mediaElement1.Source = new Uri(“Wildlife.wmv”, UriKind.Relative);

mediaElement1.Position = TimeSpan.FromMilliseconds(0);

mediaElement1.Play();

}

else

{

mediaElement1.Visibility = Visibility.Collapsed;

webBrowser1.Visibility = Visibility.Visible;

// Browser

webBrowser1.Navigate(new Uri(textBox1.Text, UriKind.Absolute));

}

}


P76页,代码段2:


下面是示例代码片段:

protected override void LoadContent()

{

// Create a new SpriteBatch, which can be used to draw textures.

spriteBatch = new SpriteBatch(GraphicsDevice);

texture1 = Content.Load<Texture2D>(“winphone”);

texture2 = Content.Load<Texture2D>(“winphone”);

soundEffect = Content.Load<SoundEffect>(“Windows Ding”);

spritePosition1.X = 0;

spritePosition1.Y = 0;

spritePosition2.X = graphics.GraphicsDevice.Viewport.Width - texture1.Width;

spritePosition2.Y = graphics.GraphicsDevice.Viewport.Height - texture1.Height;

sprite1Height = texture1.Bounds.Height;

sprite1Width = texture1.Bounds.Width;

sprite2Height = texture2.Bounds.Height;

sprite2Width = texture2.Bounds.Width;

}


LoadContent方法中使用Content.Load方法来加载资源文件,这些文件也是作为资源被加载到XNA程序中的。


protected override void Update(GameTime gameTime)

{

// Allows the game to exit

if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

this.Exit();

// Move the sprite around.

UpdateSprite(gameTime, ref spritePosition1, ref spriteSpeed1);

UpdateSprite(gameTime, ref spritePosition2, ref spriteSpeed2);

CheckForCollision();

base.Update(gameTime);

}


Update方法负责更新元素的位置,进行碰撞检测。如果后退键被按下,则退出程序。


protected override void Draw(GameTime gameTime)

{

GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Add your drawing code here

// Draw the sprite.

spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);

spriteBatch.Draw(texture1, spritePosition1, Color.White);

spriteBatch.End();

spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.Opaque);

spriteBatch.Draw(texture2, spritePosition2, Color.AliceBlue);

spriteBatch.End();

base.Draw(gameTime);


.NET4和VS2010新技术亮点选析


P77页,代码段1


代码协定(Code Contract)的核心类是“Contract”,以下是一个示例:

static double Divide(double divisor, double dividend)

{

Contract.Requires(divisor >= 0 && dividend > 0,

“除数与被除数必须大于0,并且除数不能为0″);

return divisor / dividend;

}


P78页,代码段2


(1)使用Parrallel.Invoke()方法可以让多条语句并行执行:


Parallel.Invoke(

() => StatementA(),

() => StatementB(),

() => StatementC() );


(2)使用Parrallel.For()方法启动并行循环


Parallel.For(0, 100, (i) => DoWork(i));


(3)如果你有一大堆“单个”的数据,并且每个数据都需要进行同样的处理,并且这些处理可以并行,那么使用Parallel.ForEach()方法可以实现这些处理工作的并行执行。


Parallel.ForEach(sourceCollection, item => Process(item));


P78页,代码段3


TPL提供了多种手段实现多任务间的同步。例如,以下代码在task1完成之后自动运行task2:


Task task1=new Task(()=>

{

DoStep1();

});

Task task2 = task1.ContinueWith((PrevTask) =>

{

DoStep2();

});

task1.Start();


P79页,代码段4


将LINQ查询转换为PLINQ非常简单,在许多情况下只需简单地添加一个AsParallel子句就行了,例如,以下代码将把整数集合中的偶数挑出来:


//创建一个100个元素的整数集合,保存从1到100的整数.

var source = Enumerable.Range(1, 100);

var evenNums = from num in source.AsParallel()

where num % 2==0

select num;


更多内容请下载Word版本:2010年04期《程序员》配套源码及相关链接


转播到腾讯微博

----->立刻申请加入《程序员》杂志读者俱乐部,与杂志编辑直接交流,参与选题,优先投稿

请评论

preload preload preload
京ICP备06065162