Ocean 的个人资料君子不器日志列表留言簿更多 工具 帮助

日志


2009/4/27

樱桃

这是顾几几周五从成都打飞的给我们带来的,上海少见这个东西。爽啊!
 


为什么Micorsoft的docx是好东西?

Why Microsoft's .docx format is a good thing

  1. 微软面临欧盟和美国一些州要求其开放文件格式的压力。
  2. 现有的文件格式太过于复杂,并且成为病毒写作者的目标。
  3. 可编程访问的文件格式具有更好的商业价值,比如数据挖掘以及内容重用。
  4. 老的文件格式面临来自开放文档格式(Open Document Format, ODF)的压力,ODF已经成为了OSI标准。
为什么微软不直接采用ODF?
The answer was that unless businesses could interchange documents between the old and new formats, the new standards would be difficult to adopt. ODF was not defined with Microsoft compatibility in mind, and couldn't offer the level of compatibility it required.

2009/4/20

WPF 1 什么是WPF

WPF的几个feature:
  1. 声明式的UI
  2. Intelligent Layout
  3. Scalable Graphics
  4. Templates
  5. Binding
  6. Styling
  7. Triggers
  8. Animation
  9. 3D
为什么用WPF:
  1. 项目需要和UI设计人员协作开发
  2. 该软件产品需要集成视频和音频
  3. 发布平台上对DirectX有硬件加速支持
  4. 产品需要支持高级的typography
2009/4/19

5 Years Time _____ Noah And the Whale



Noah and the Whale由Charlie Fink(主唱/吉他/口琴/夏威夷四弦琴)、Tom Hobden(小提琴)、Urby(脚踏式风琴/贝斯)、Laura Marling(伴唱)和Doug Fink(鼓)等几位成员组成。早在去年九月,Noah and the Whale乐团就通过Young and Lost Club厂牌推出了他们的首支单曲《5 Years Time》。
这首歌透出欢快清新的民谣气息,愉悦的旋律、主唱Charlie Fink轻松顽皮的声音、富有活力的小提琴、轻松的木吉他、舒缓的弦乐、随意的口哨...都是这首《5 years time》吸引人的地方


http://ftp.luoo.net/radio/radio45/02.mp3

Years Time

Oh well in five years time we could be walking round a zoo

哦五年的时光我们可以走遍整个动物园
with the sun shining down over me and you


当温暖的阳光撒在我们身上时
and there’ll be love in the bodies of the elephants too

连大象的身体里都被爱意充满
and i’ll put my hands over your eyes,

然后我把你的眼睛蒙上
but you’ll peep through

and there’ll be sun sun sun all over our bodies

我们的全身都充满阳光
and sun sun sun all down our necks

阳光暖着我们的脖子
and sun sun sun all over our faces

我们满脸充满阳光
and sun sun sun -so what the heck!
cos I’ll be laughing at all your silly little jokes

我被你的小笑话逗得哈哈大笑
and we’ll be laughing about how we used to smoke

我们同样为我们平时抽烟的样子互相取笑
all those stupid little cigarettes and drink stupid wine

还有所有这些笨笨的烟笨笨的饮料笨笨的酒
cos it’s what we needed to have a good time

因为此刻我们就痛痛快快的玩~
and it was fun fun fun when we were drinking

我们喝酒的时候也那么有意思
it was fun fun fun when we were drunk

我们喝醉了也那么有意思
and it was fun fun fun when we were laughing

我们欢笑的时候也充满乐趣
it was fun fun fun, oh it was fun

好多的快乐
oh well i look at you and say

我看着你说
it’s the happiest that i’ve ever been

这是我们最快乐的时光

18日游苏州旺山生态园和山塘街夜景(112张)

    


2009/4/17

Angels Thanatos

In Greek religion, Thánatos (in Greek, θάνατος – "Death") was the dæmon personification of Death and Mortality. He was a minor figure in Greek mythology, often referred to but rarely appearing in person. His name is transliterated in Latin as Thanatus, but his Roman equivalent is Mors or Letus/Letum, and he is sometimes identified with Orcus.
 

用例之父称敏捷需要更加明智

这是有人在听了雅各布森在09年软件开发大会上演讲之后做的笔记。看起来雅各布森用的是和他4月2日在我们公司演讲时相同的PPT。

用例之父称敏捷需要更加明智

2009/4/16

Smart Tag学习笔记

首先要搞清楚这样几个关系:
custom control -> custom designer -> smart tag tasks
smart tag是design time的功能,这些功能是和designer想关联的,而designer是和control关联在一起的。

[Designer(typeof(ClockControlDesigner))]
public class ClockControl : System.Windows.Forms.Control
以上代码表示定义了一个ClockControl类型的控件,并且指定这个控件由类型为ClockControlDesigner的设计器进行设计。这里是利用了DesignerAttribute建立了custom control与custom designer之间的关系。

接下来我们看如何建立custom designer和smart tag task之间的关系。

public class ClockControlDesigner : System.Windows.Forms.Design.ControlDesigner
以上代码表示定义了一个类型为ClockControlDesigner的设计器。在其父类中有一个类型为DesignerActionListCollection的成员变量ActionLists,我们就是通过这个成员变量建立designer和smart tag task的联系。
请看如下代码:
public override System.ComponentModel.Design.DesignerActionListCollection ActionLists
        {
            get
            {
                // Create action list collection
                DesignerActionListCollection actionLists = new DesignerActionListCollection();

                // Add custom action list
                actionLists.Add(new ClockControlDesignerActionList(this.Component));

                // Return to the designer action service
                return actionLists;
            }
        }
以上代码中,我们首先实例化DesignerActionListCollection类型成为actionLists对象,在actionList对象中添加一个ClockControlDesignerActionList类型的对象。ClockControlDesignerActionList的构造函数中将control对象作为参数,于是建立了ClockControlDesignerActionList和control之间的联系。

Smart Tag本质上是提供了一种以图像界面交互的方式设置control的某些属性和行为的方式。用户可以在设计的过程中(design time)在designer上,对控件(control,例子中为ClockControl)进行一些操作(action),这些操作被记录在一个列表中(List),来设置ClockContorl的属性。你看,把刚才所说的东西汇集起来,是不是在字面上就可以理解ClockControlDesignerActionList类型是做什么的了?

上图中的所有信息都是定义在ClockControlDesignerActionList类型的对象当中。

public class ClockControlDesignerActionList : System.ComponentModel.Design.DesignerActionList
以上代码定义了ClockControlDesignerActionList类型。在这个类型中我们定义smart tag的外观和行为。
该类型中需要重载父类中的一个方法public override DesignerActionItemCollection GetSortedActionItems(),这个方法返回一个DesignerActionItemCollection类型的对象。我们需要把smart tag中对应的action item添加到这个collection中。
action item有多种类型,比如上图中的“Appearence”是DesignerActionHeaderItem类型的对象;“Properties that affect how the ClockControl looks.”是DesignerActionTextItem类型对象。这两个类型主要是控制smart tag中的描述性字符显示。“Face”和“Digital Time Format”都是DesignerActionPropertyItem类型的对象,property是指这两个东西是对应于control中相应的属性。通过将DesignerActionPropertyItem类型的对象加入到DesignerActionItemCollection中,smart tag上的操作就可以改变control在设计时的属性,从而达到控制control运行时行为的目的。然而在ClockControlDesignerActionList类的对象中,我们不是在这个对象中直接设置control的属性值。我们把需要改变的control的属性在ClockControlDesignerActionList类中进行包装。
比如:
        [Editor(typeof(DigitalTimeFormatEditor), typeof(UITypeEditor))]
        public string DigitalTimeFormat
        {
            get { return this.ClockControl.DigitalTimeFormat; }
            set { SetProperty("DigitalTimeFormat", value); }
        }
       
        // Helper method to safely set a component’s property
        private void SetProperty(string propertyName, object value)
        {
            // Get property
            PropertyDescriptor property = TypeDescriptor.GetProperties(this.ClockControl)[propertyName];
            // Set property value
            property.SetValue(this.ClockControl, value);
        }
DigitalTimeFormatEditor表示对DigitalTimeFormat属性,我们用一个custom的designer来处理。它可以是在smart tag上触发的另一个UI对象,比如一个新的window。

在上图中的“Edit Clock Hands”则是DesignerActionMethodItem类型的对象,它在smart tag上显示为一个类似链接一样的东西。点击它之后,会有一个新的UI对象产生,比如显示一个窗口,用户在窗口中进行复杂一些的设置。
2009/4/15

Smart Tags

Simplify UI Development with Custom Designer Actions in Visual Studio
这篇介绍Custom Designer Actions的文章很经典!

2009/4/14

向visual studio extensibility和WPF进发!

这段时间在看Visual Studio Extensibility的东西,从今天开始在看WPF的东西了。
在网上找到一个匈牙利的MVP写的关于VSX的系列blog,深入浅出,不愧为MVP。
WPF的东西暂时先看MSDN上的东西。那个MVP在他的blog上推荐了一本入门书,Sams Teach Yourself WPF in 24 Hours,打算从下周开始看这本书。不过对于WPF方面的东西,我的重点是在WPF扩展上,需要看的东西主要是WPF Designer Extensibility


2009/4/11

天籁之音 Cantico

伟大的安德烈波切利!
感谢在纪实频道实习的兄弟,谢谢你在百度里面的回答!http://zhidao.baidu.com/question/82870110.html
网上也有人喜欢这首作为纪实频道大师栏目背景音乐的歌曲,这是他博客中描述他寻找这首歌的过程,跟我简直一模一样!http://blog.sina.com.cn/s/blog_4db7688a0100c240.html
2009/4/7

微软软件研发方法与过程-学习笔记2

组织结构 - 用某团队为例

  • 在微软产品是由产品组"Product Units"来创建的,由Product Unit Manager来负责
    • Group Program Manager, Dev Manager, Test Manager各负责一类职责并向Product Unit Manager汇报
  • 项目管理(Program Managerment)
    • 负责产品功能集和功能定义
    • 七位项目管理经理最终向Group Program Manager汇报
  • 开发(Development)
    • 负责产品的实现和架构
    • 十五位软件开发工程师最终向Dev Manager汇报
  • 测试(Testing)
    • 负责产品的质量保证
    • 二十八位软件开发测试工程师最终向Test Manager汇报

以上是一张PPT中的内容。内容很清楚,团队里面有项目管理人员,有开发人员和测试人员,没有什么特别的地方。


时间计划

  • 里程碑=产品周期进展的单元
    • 目标:灵活地计划、跟踪、加固、反馈
    • 常见的里程碑计划:M0, M1, M2, ..., Beta1, Beta2, RTM
  • 有利于对当前进展和所剩工作的评估
    • 目的是保证团队不会在黑暗中前进
  • 在里程碑计划中功能分优先级
    • 在靠后的里程碑中,就会有灵活的时间来对反馈作出响应
  • 当质量达到里程碑终结标准"exit criteria", 里程碑才算完成
    • 保证团队不会只重视速度而忽略了真正的进度
    • 保证里程碑结束后又一个稳定、可用、完整的产品


主要的功能里程碑事件

里程碑事件 定义
Spec Complete 规格完成日 里程碑功能设计规格应写好并审核完的日期
Feature Coding 写功能代码 功能里程碑通常用8-9周长短来写代码
Code Complete(CC) 代码完成日 所有里程碑计划的功能都应完成的日期
Test Plan Complete 测试计划完成日 里程碑功能测试计划应写好并审核完的日期
Zero Bug Bounce(ZBB) 零漏洞震荡 本里程碑大于48小时的漏洞数量等于零
ZBB Test Pass(ZBBTP) ZBB全测试 所有功能测试都在当前构建(build)上运行一遍
Zero Resolved Bugs(ZRB) 零解决漏洞 里程碑内解决的并等待验证的漏洞数量等于零
Test Sign-Off 测试验收 对里程碑构建(Build)做最后的验证和媒介验收

 

虹桥公园外拍

 
2009/4/4

芭比上海旗舰店 - 超嗲

 
2009/4/2

微软软件研发方法与过程-学习笔记1

今天有幸聆听了UML的发明人之一雅各布森关于未来软件开发的讲座,有一些感悟。不久前,我参加了一个会议,在其中获得了一些关于微软软件研发方法与过程的介绍,当时也有一些思考。现在,在这里我把这段时间关于软件开发过程的一些理解整理出来,每天在博客上更新一部分。
 
微软面对的开发挑战
  • 了解客户的需求
    • 多样化的客户群
    • 未来以及潜在需求的开发
  • 怎样在多个产品上为客户提供长期的价值
    • 产品发布的稳定性和预期性
    • 产品升级的路线和怎样给客户提供最大价值
  • 可扩展性-很多大团队一起共同研发负责的产品
    • 产品的最终集成和相容性
  • 雇用优秀的工程师并让他们很快进入状态
  • 与全世界不同地区的同事做分布式的协同开发
以上内容是一张ppt中的文字,讲到的是微软认为他们在开发中遇到的挑战。这里列举出来的挑战非常具有代表性,典型性。对于任何一个类似于微软这样具有广阔产品线,开发部门规模庞大,市场地位领先,市场份额很大的软件公司,我认为他们都同样面对类似的挑战。
 
客户需求
了解客户的需要当然是最重要的事情。客户可以分成两类,一类是已有客户,另一类是潜在客户。随着技术和市场的演化,已有的客户在逐渐的分化,他们的需求越来越细化,客户的差异度在提高。现有产品逐渐不能满足已有客户的全部需要。因此,对现有产品的更新升级,增加新的功能是客户的必然要求,满足这些要求也是可能的。除非在某一领域,技术的发展产生了革命性的变化,那么在一段时间内,总是可以有new feature在现有产品上做的。另一方面,为了扩大市场份额,企业必须为未来的客户提供产品服务。新兴市场总是存在,市场机会总是垂青于有所准备的企业。比如,当预见一部分市场已经饱和,那么必须开拓新的一片市场。大型客户,传统客户市场饱和时,开拓中小市场,提供个人服务,个性化服务,是当今的趋势。所有这些客户需求,都需要开发部门提供出产品来满足。这就是产品部门面对的首要挑战。
 
多个产品上的长期客户价值
什么是产品发布的稳定性和预期性?我觉得可以举出一个比较简单的例子来说明,比如微软的Visual Studio, 最近的版本是2008,上一个版本是2005,那么市场上预期在2008之后的2到3年,微软需要有一个新版本的Visual Studio发布给市场。产品预期来源于市场,产品的稳定性则来自于生产企业。这是一对具有内在关系的概念,稳定性造就预期性,因为只有发展相对稳定的东西才能被预期。被预期的东西,也需要其发展具备稳定性才能满足市场预期。谈到开发的稳定,谈何容易?软件唯新,要把新的东西节奏稳定地推出市场,并非易事。比如在游戏软件市场上,新游戏的跳票是司空见惯的事情。暴雪公司经常这样干。再举一个例子,去年年底苹果公司宣布09年之后不再参加Macworld展会。对此消息,市场上各种分析都有,其中有一种说法是,苹果觉得市场期望在每年的展会上都看到苹果推出的新产品,这种期望迫使苹果的开发节奏需要跟随展会的时间,苹果感到被市场牵着鼻子走很被动很痛苦,于是推出这个展会。我觉得这种说法有一定道理,这个例子一定程度上说明了稳定性和预期性之间的关系。开发部门必须对产品发布的稳定性负责,必须响应市场预期,对于规模巨大的软件企业来说这确实是巨大挑战。
客户为什么需要升级软件?因为客户需要通过升级软件来获得新的价值,满足新的需求。客户并非只有升级软件这一个选择,但是升级软件可能是满足他新的需求的最低成本解决方案。但是,如果升级软件的复杂度太高,花费太大,未来维护更加困难。客户也会转而寻找其他的软件提供者。很多小的软件公司就是通过抓住大公司的此类弱点,获得市场而机会成长了起来。特别是在当前世界经济危机的情况下,如何提供更好的产品升级技术路线,降低客户成本,也是开发部门的责任。
什么是长期价值?一个产品推出市场之后,从开始卖到最后消逝,可能是一个很漫长的过程。想想去年微软宣布不再继续支持XP操作系统之后市场的反对声浪,想想Windows3.x居然是去年才被微软宣布不再支持(这个产品已经存在了18年了!)。多少公司18年前的代码还在?多少公司还能在一个存在18年的代码上改bug,保持稳定?当然,windows3.x一定是一个稳定的产品才能被市场认可如此之久。那么短一点,现在有的公司是宣布对产品提供至少8年的支持。想想从代码管理的角度,从release management的角度,需要做什么样的努力才能达到这个要求?这些都是开发部门的责任。
 
今天写到这里,没想到只是写了半页ppt的东西,已经花了很多时间。明天继续。

Silent Hill 2 OST- 曾经一直听一直听的OST

     Silent Hill 2 的原声大碟气氛阴郁绝望,手法纯熟,是不可多得的佳作。它共有30首曲目,有长有短,它们应用的音效和本身的技术及结构复杂程度使每一个曲目的分析都可以有整篇文章那样长,所以我只能将它们归类介绍,并就几个印象深刻的曲目作点评。希望大家通过此文有所收获,并能真正去体会游戏中音乐所要告诉我们的一切。
  下面三首应该是寂静岭的主题曲目,第1首Theme of Laura,第18首Love Psalm,第30首Promise。任何一首拿出来都是可以作为很棒的单曲去竞争排行榜。配器很丰富,主题表达得很明确,音场拉得很丰满,结构很紧凑。第1首故意把鼓组包括其他打击乐器放在音场中间后部,主音吉他也处于中间前方,低音贝斯拉宽,键盘补充在右后方。这样的摆位使人有种不平衡的感觉,这表达了游戏对系列中一个小女孩Laura的,难以捉摸的举动的一种暗示。第18,30首则是那种令人振奋的前进式的音乐。鼓组分布得很开,小军鼓撑在中间,踩镲被放置在最左和最右,低鼓略偏,大镲在左中,这样的安排首先把乐曲音频的骨架搭得很坚实。主音吉他很从容地在正前方缓缓地表现着主题,副音吉他衬在主音的间隙。低音贝斯音场拉得相当开,填补了旋律和鼓组节奏中间的空隙部分。旋律进程给人一种从悲哀中苏醒,仿佛自己在劫难之后反而充满力量,向着前方迈开步伐的感觉。尤其是第30首Promise,可以说是非常漂亮的作品。由于整个游戏乃至整张OST大多表现了绝望恐怖,但是这三首乐曲可以说是给了我们以温馨的希望,给了我们继续下去的勇气。特别是当回头看到自己走过的路,经历过的种种困难后,听到这样的乐曲往往感慨万分。
  在这30首曲目里有些只是单纯的采样,拼接而成的音效及音效组合出的节奏与旋律,或者把这些音效采样揉合到旋律乐曲中作为层次的一种展现。
  第5首Ordinary Vanity,第7首Ashes and Ghosts,第11首The Darkness That Lurks in Our,第19首Silent Heaven,第25首Betrayal,第26首Black Fairy,都是符合这种情况的曲目。其中第19,25,26首运用了大量后工业时代的工业噪声作为主线,在每组工业噪声上用了很多的混响,并且只提升了部分频段,使得整条音轨 听起来令人焦躁不安;枯燥的节奏沉沉而顽固地冲击着听着的胸口,令人压抑。
  对于性格顽强的玩家,这样的工业噪音音乐反而能激起他们玩游戏的斗志,但是在这张OST中,我还听到了令人沉陷于悲哀与绝望而无法自拔的曲目。第8首Null Moon,第24首True,第27首Theme of Laura (Reprise)给人的感觉就是这样的。虽然这三首有着三个不同的主旋律且配器的侧重点不同,但是有很多相似点。它们的主题都是由大提琴Solo,而且大提琴的音色处理是一致的,这三首主题都是小调性的,很好听也很犹豫。副题非常的简单,就是个暗性和弦的琶音,都是由钢琴反复地在后方毫无表情的重复。第8,24首都加入了Chemical感觉的鼓组,衬托着无助的钢琴旋律,更显伤感和惆怅。同时还加入了一个很难让人感觉出来的Organ,作者把它的音场拉得很大,像一面墙纸一样贴在很后面,增加了曲子的层次感,使人在不知不觉中有种凌空的感觉,这种凌空正是作者想要表达的那种孤独的感受。特别要突出的是在第8首的最后,渐入的混响很大的钟楼的钟声,除了给人以凌空的感觉,更让人觉得犹如有个心结还未打开,需要更多的时间空间去思考。也许无法自拔的感觉就是这样被作者挑拨出来的吧。
  由于游戏注重的是人的心理的揣摩和自我意识的唤醒,所以对于虚幻、梦境的音乐诠释是必不可少的。在这张OST中比较典型有,第17首Prisonic Fairytale,第20首No One Love You,第29首Pianissimo Epilogue。都使用了两种音色的Organ各自占据了高频和中低频,旋律的走向并不确定,正如人梦中的感觉无法预知一样。由于两个Organ不同的和弦音色,且大部分是长音,所以声音听起来含混不清,梦境的感觉就这样产生了。
  游戏的紧张也时时由音乐烘托出来。第12首Angels Thanatos,第28首Overdose Delusion就是用重金属音乐来营造这样刚强而压抑的气氛的。Hardcore的鼓组带着那种毁掉一起的渐进式的节奏和重拍有力烘托着整个游戏场景,失真的吉他狂喊着像一个男人一样从惊恐到狂奔。
  此外,在这张OST中还有不少额外的个人认为比较经典的小品。第14首Block Mind是首很重要的转折曲目,它启承了The Day of Night并且很好地转向了工业噪音音乐。虽然前后的音乐风格完全不同,但是作者用了一个拉满低频的心脏脉动的声音来处理过渡,很是聪明。不知道大家又没有看过宫崎骏的作品《天空之城》,对其中的主题音乐应该记忆犹新吧。OST中的第6首Promise (Reprise)可以说是类似的作品。孤独的钢琴伴着钟琴的点缀,合成器为它们很好地铺垫着,犹如晚上哀伤的星空忽闪忽闪。还有,当Maria第一次在电梯那里被杀死的时候,这首背景音乐一下就变成单调而清晰的钢琴,不停地重复着一个主题(第15首Magdalene),在这里我完完全全感受到了James失去妻子之后的解脱和忧伤。这样舒缓的旋律简直就是点睛之笔,寥寥几句却完全烘托出人物的内心。第21首Reverse Will是我认为和整张OST风格有些不同的曲目,它的风格比较亮丽而且带着诙谐,从很多次地运用滑音,中间段落处理过的Vocal,不羁的萨克斯音色等等可以看出,这首曲目完全可以脱离与这张OST外,也许Reverse Will这个名字就给出了答案了吧。

曲目 · · · · · ·
  01.Theme of Loura
  02.White Noiz
  03.Forest
  04.A World of Madness
  05.Ordinary Vanity
  06.Promise (Reprise)
  07.Ashes And Ghost
  08.Null Moon
  09.Heaven's Night
  10.Alone in The Town
  11.The Drakness That Lurks In Our Mind
  12.Angel's Thanatos
  13.The Day of Night
  14.Block Mind
  15.Magdalene
  16.Fermata in Mistic Air
  17.Prisonic Fairytale
  18.Love Psalm
  19.Silent Heaven
  20.Noone Love You
  21.The Reverse Will
  22.Laura Plays The Piano
  23.Terror In The Depths of The Fog
  24.True
  25.Betrayal
  26.Blank Fairy
  27.Theme of Loura (Reprise)
  28.Overdose Delusion
  29.Pianissimo Epilogue
  30.Promise

320Kbps音质的全集下载 http://www.hometown.ru/sh2ost.html