Category Archives: Programming

iPhone开发之Rotation

iPhone或iPad可以支持4种朝向    UIInterfaceOrientationPortrait    UIInterfaceOrientationPortraitUpsideDown    UIInterfaceOrientationLandscapeLeft    UIInterfaceOrientationLandscapeRight 究竟支持哪几个朝向,由view controller的shouldAutorotateToInterfaceOrientation函数来指定,每当设备的朝向发生变化时,这个方法都会被调用。 对于iPhone程序,应该防止用户在通话时拿倒电话,不支持UIInterfaceOrientationPortraitUpsideDown因此函数实现为:– (BOOL)shouldAutorotateToInterfaceOrientation:  (UIInterfaceOrientation) interfaceOrientation {      return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);}对于iPad,应该支持所有的朝向,因此函数实现为– (BOOL)shouldAutorotateToInterfaceOrientation:  (UIInterfaceOrientation) interfaceOrientation {      return true;} 实现对Rotation的支持有三种方法:1. 设置UI元素的Autosize Attribute,类似于.NET form的dock2. 重新构造UI元素大小和位置3. 不同的朝向使用不同的view 使用Autosize AttributeInner box中的红色箭头和UI元素的size有关,如果横向的红色的箭头成为实线,则窗口尺寸变化时UI元素的宽度也会变化,如果横向红色箭头为虚线,则窗口宽度变化时UI元素的宽度保持不变。垂直方向同理。Inner box周围的短线变成实线时,表明UI元素和它所在的view的边缘的距离保持不变。 下图中的UI对象的高度将会随着view的高度而变化,同时UI元素相对于View的上下边距不变 对应的UI设置为 重新构造UI元素的大小和位置 – (void)willAnimateRotationToInterfaceOrientation:  (UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {   … Continue reading

Posted in Programming | Leave a comment

iPhone程序开发之Localization

首先要注意,iPhone中有关语言的配置分为Language和Region, 等同于.NET 中的UICulture和Culture。  Localization的实质就是在程序中为支持的各种语言生成一个以语言命名的目录,如fr.lproj,在这个目录中生成资源的副本,供修改,资源可以是nib,string,image。 在程序运行时,会根据系统配置查找对应的资源目录并使用其中的资源,如果找不到,就是用English目录下的缺省资源。查找的顺序说起来非常绕口,忽略。 Xcode生成的缺省资源目录为English.lproj,这不符合iOS规范,已经作为一个bug被记录在案,但是到目前为止还没被修正。 如何在程序中读取系统当前所使用的Language和Region    NSLocale *locale = [NSLocale currentLocale];   NSString *displayNameString = [locale  displayNameForKey:NSLocaleIdentifier                                                                          value:[locale localeIdentifier]];   NSLocale 对象用来读取iOS中的语言和Region的配置。调用静态函数[NSLocale currentLocale]; 得到其实例。   [locale localeIdentifier] 函数返回当前Region的标识,如en-US,fr-FR   NSLocale 对象中的信息可以被视为一个字典,每个信息都可以用一个key来访问,   locale  displayNameForKey: value  用来返回当前Region的displayName, 注意,如果在iPhone中把language 设置为English,把Region设置为Franch, 那么displayNameForKey: value返回的将是用英文显示的Franch,而不是法语显示的Français。 如何Localize UI也就是nib文件进行Localiztion   在nib文件上点击右键,选择get info,再点击Mak … Continue reading

Posted in Programming | Leave a comment

笔记:有关文档写作

读 A Coder’s Guide to Writing API Documentationhttp://msdn.microsoft.com/en-us/magazine/gg309172.aspx 做任何事情之前,首先要回答几个问题:Who(对象),Why(为什么),How(怎么做) 为什么大家不愿意写文档?大多数程序员的时间都花在了实现功能和修bug上。文档不能带来立竿见影的效益,得不到重视,因而没有schedule,没有budget英语不是母语 为什么还要写文档?方便程序员,赢得用户减少维护成本 API文档的要素概述:入门:step-by-step的 tutorial 例程:尽量简单明了,不要考虑维护性,健壮性,美观。sample code 和 production code不是一回事.使用手册:由于文档是从注释中提取而来,这个问题实际上变成了如何写注释 注释的风格 类型 要求 例子 Class 以Represents开始 Represents a user’s photo album Constructor Initializes Initializes a new instance of the Button class. Function … Continue reading

Posted in Programming | Leave a comment

Using Virtual PC for Muliti-version Debugging

Virtual PC是一个重要的开发工具,常见的使用场景是:为了调查问题,必须用虚机来搭建问题重现的环境,然后把debug版本的dll部署到虚机上,再从开发环境中对运行在虚机中的程序进行远程调试。 针对不同版本中的问题,其测试环境大同小异,仅仅是上面安装调试对象的版本有所不同,如果每次都是从零开始搭建测试环境,就每次都要重复进行系统软件的安装和配置。因此,我们想到了对安装了必须的系统软件的虚机进行备份,比如先做一个windows server 2003虚机,命名为vm2k3,在它上面安装必须的系统软件并进行相关配置:      · 安装IIS      · 安装SQL 2008      · 拷贝MS Visual Studio remote debug      · 拷贝Reflector      · 生成相关的用户并设置权限 为这个虚机的Virtual disk文件生成一份备份,命名为2k3bk.vhd。 在以后的安装和调试都在虚机vm2k3上进行,一旦有新的release,就删除vm2k3,用备份好的2k3bk.vhd重新生成虚机,再安装新产品,进行调试。 这么做避免了每次搭建环境要进行的重复工作。但是每个虚机中都包含了OS,SQL server和IIS等相同的内容,这些重复的东西浪费大量的硬盘空间,更糟糕的是,为了测试Patch,就需要备份安装了GA版本的虚机, GA版本和Patch的组合,很快就可以让硬盘爆满。 Virtual PC的Differencing Virtual Hard Disk功能和Undo Disk功能可以帮我们解决这个问题。 1. 使用Differencing Virtual Head Disk Differencing Virtual Head … Continue reading

Posted in Programming | Leave a comment

安装 Windows 自动化 API 3.0 后,Visual Studio 2010 的运行速度更快

http://support.microsoft.com/kb/981741/zh-cn

Posted in Programming | Leave a comment

图书馆阅读.xlsm

我用Excel文件记录要借阅的书籍,分为技术,历史,学习方法,社会人文,文学,哲学,国学,武术,每一类占用一个sheet, 每个sheet中记录了书籍的星级,名称,作者,代码,馆藏位置,备注,借阅时间… 为了打印出清单供借书时使用,我用一小段宏把和借书相关的信息抽取到一个Summary Sheet中: ‘Extract book name,code, location into a single sheetSub CreateSummary()    Me.Cells.ClearContents     Dim sheetCount As Integer    Dim i As Integer    Dim currSheet As Worksheet    Dim currTargetRow As Integer    sheetCount = ActiveWorkbook.Worksheets.Count    currTargetRow = 1    ‘Go through all … Continue reading

Posted in Programming | Leave a comment

How to create symbols file server

1. Building your project and creating exe/dll and pdb files. 2. Create a VD in IIS,whilch will be used to store the packed pdb files for user downing. More information please refer to HTTP Symbol Stores(http://msdn.microsoft.com/en-us/library/ff549781%28VS.85%29.aspx) 3. Using symstore.exe to … Continue reading

Posted in Programming | Leave a comment

《软件随想录》阅读

《软件随想录》中文主页:http://www.ruanyifeng.com/mjos/ Joel翻译工程http://local.joelonsoftware.com/ 首先要感谢这本书的翻译者,阮一峰先生(http://www.ruanyifeng.com),没有他,Joel云山雾罩的高论我根本无法读懂,说他云山雾罩是他运用的太多的典故,隐喻,读不懂这些,就无法领会Joel在喷什么。Joel让我想起了薛颠,他们的共同点是,功夫很好,但不一定是最好,但是他们会写,会表达,在Joel之前,没有人用Blog用的这么成功,在薛颠之前,没有人把招式拍成照片,随之而来的自然是万人瞩目。Joel是一个程序员,不是教你吹牛逼的大忽悠,所以他的段子几乎天天,正在,发生在我的身边。 这是一本阐明Joel编程哲学的书,其编程哲学的关键字是:What,Why and How,具体来说分为以下这些部分: 有关管理:管理是什么,好的Manager是怎样的,Manager应该怎么做 ,如何找到好员工 有关编程:编程是什么,好的程序员是怎样的,程序员如提高自己 ,如何找到好工作 有关软件:好的软件是怎样的,怎么做出好的软件.. 有关经营:这里你必须要有战略眼光。 1. 管理是什么   Joel管理是不得不做的杂活,通过协调,让每个人的工作正常进行,不受影响。使所有人朝同一个方向前进。这有悖于我所经历的“管理”。我经历的往往是:我不care你每天回去多晚,我只care按时交货。   对于管理者,Joel给出了下列建议    1.尊重程序员,提供好的工作环境和设施,不要把程序员视为齿轮或打字机。    2.不要迷信“裨将+裨将+裨将=诸葛亮”这一定理,也不要迷信人至贱(便宜,成本低)则无敌,Joel用来好几个例子说明这一点,最有说服力的是QuarkXpress的死掉和Winamp的消亡。    2.分享更多的信息,而不是命令。就算对当前讨论的议题不能直接产生作用,也可以对以后产生影响。    3.一起干活的人一起吃饭    4.团队需要的不仅是军事化管理和利用驱动,更需要集体认同感。也就是说,一个帮会,光有赏和罚是远远不够的,还要有义气,闹革命,光      有军法和大洋也不够,还要有主义。    5.经理要设计一套有效的机制(比如星巴克的规范),但不要对技术细节发表意见。    6.训练下属,而不是告诉他们要么搞定,要么走人。    7.要懂技术,不要认为只要雇用形形色色顾问就可以管理任何东西。Joel推荐了一个楷模:啤酒盖子,他用一整晚看完500页(大约一包打印纸)的产品规范,几乎每一页都写上评语,第二天向产品经理提出一堆问题,其反例是:Notes被一个叫做Jim Manzi的管理控给搞残废了,苹果也差点让一个卖可口可乐的(John Scully)搞倒闭。   以上这些,大都能从中国历代带兵手册都能找到,但知易行难。 2. 有关编程    我同意程序员应该坐着900美元的椅子,有独立的工作空间,使用顶级电脑,至少两块21吋液晶屏,可以任意购买自己想要的技术书籍….但前题是要先成为Joel心目中聪明,可以在任何地方找到工作的程序员,才有资格享受这些。好的程序员应应该是:    1. 了解更多的业务,不做可以随时替换的齿轮或打字机。    2. 对新事物充满好奇,当铺天盖地的新语言,新概念,新名词不断涌现时,你是不是感到恐惧?是否愿意把新技术运用到产品中?    3. 对进一步改进充满兴趣。你不是胡适笔下的“差不多”先生?是否会反复审视,改进的代码?    4. 每项工作都会有枯燥难耐的时候。好的程序员必须能够克服。    5. … Continue reading

Posted in Programming | Leave a comment

VS 2010 Shortcuts Poster

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=92ced922-d505-457a-8c9c-84036160639f#filelist

Posted in Programming | Leave a comment

浅谈:国内软件公司为何无法做大做强?(ZT)

http://www.caiwenhui.com/tuijian/read/10096 纵览,国内比较大的软件公司(以下统一简称"国软"),清一色都是做政府项目的(他们能做大的原因我就不用说了吧),真正能做大的国软又有几家呢? 更何况开源企业,这是为什么呢?   今天风吹就给大家简单分析下:   1."作坊"式管理   "作坊"往往是效率最高的, 国软几乎都是从作坊走过来的,但把作坊式的管理模式套用到一个不断壮大的公司中显然是不行的.组织架构到达一定程度后就必然要进行分工的细化,依靠作坊式的"暴力开发"是行不通的.   2."法制社会"   上班必须打卡,迟到要扣钱,还一次比一次多,加班没有加班费,反正算下来就是,只有扣钱的项目,没有加钱的项目.比起外企,人家上班不打卡,迟到不扣钱,加班有加班费,这样宽松点的环境不好吗?   3. 自生自灭   国软一般没有师徒制,有的话也只是形式上的,公司基本没人管你,你也不用去管别人,新进的员工,不管会不会,先丢个东西给你做,自己研究,不懂的google去.这也是为什么国软喜欢招有经验的人,因为没经验的人熬不住,跑了几个以后,国软就不招了.   4. 销售-开发-维护脱节   这点是非常严重的,会直接导致项目流产的.国软的典型的做法是,销售为了业绩,在没有调研的情况下就签了合同 (这里主要是指项目型的,产品型的一般可以控制),而且合同的范围也非常模糊,可大可小,接下来就是调研人员上场,调研后发现,10w块钱的合同,调研出来了100w的需求,接下来就是和客户扯皮,最后直接导致项目流产,甚至打上官司.项目或产品上线后,维护人员对系统不了解(一方面是没有文档,另外一方面维护人员一般没有参与到开发中),接下来往往就会发生两种情况:   a.维护人员在不了解系统的情况下擅自修改,结果导致系统越改问题 越多.   b.维护人员一不做二不休,所有客户反馈的问题全部打回给开发人员,于是开发人员就生不如死,在做别的项目的同时还要维护以前的项目,结果就是导致几个项目都失败.   5.缺乏规划   今天要用这个,明天想用那个(笔者就经历了公司在半年的时间内对框架进行了两次大的变动,导致开发人员都必须重新学习框架)产品也接,项目也接,大的也接,小的也接.今天领导说往左走,明天说往右走,也不能怪领导,他也没经验,我们就是他的DEMO.公司没有一个明确的目标,要做成什么样,只是一味的提出做大做强,但是没有规划出如何做大做强.(和我的标题一样哦)   6.三无-无需求,无设计,无测试.   a.没有文档是国软的通病,曾几何时,产品经理丢过来的那一句话:" 喂,**,给我做一个**模块来",然后开发人员就开始埋头苦写了.   b.当然如果你天资聪慧,可以轻易理解出产品经理的意思,那有没有设计都无所谓了,但是,当有一天别人要维护你的程序的时候问题就出现了,没有文档,代码又那么天马行空,怎么维护?改了这个地方,又影响了那个地方…   c.其实程序员都懂得测试的意义,可以工时安排的那么紧,哪来的时间测试?测试又没有算工时.所以几乎所有的程序员的做法就是,直接丢给用户测试   这时候有人肯定要问:那项目经理呢?他不是可以测试吗?请记住这是国软,刚才写代码的那个人就是项目经理,还是售前,还是设计人员,还是维护,还是…归结还是成本问题,在外资软件公司中,做文档的工时是比做开发的工时更多的,国软为了节省成本,这块当然要 CUT掉了.不必去追去文档有多么详细多么美观,需要做的就是找到一个平衡点,一份适合自己的文档.   7.员工都是"十项全能"   在国软里面的员工各个都是十项全能(笔者就是一个鲜明的例子,从系统调研分析设计,到进度管理,开发,测试,验收,实施,维护,甚至拉给客户拉网线都需要我去.)直接导致的结果就是这些员工每过多久就直接出来自己开公司了…嘿嘿又一家作坊诞生了…这样做对员工个人其实是有好处的,但是对于企业本上来说是没有好处的,并不是说员工成立了作坊,成为了你的竞争对手,而是让员工各个都是十项全能的结果就是   a.员工都是"十项全不 能".   b.员工一旦离职,他手头的项目必定流产.   c.对公司的发展是不利的(细化分工).   8.莫不关心   老板并不知道员工在做什么,员工也不知道老板在做什么.上级很少去关心下级的工作,更别说去关心下级的生活,一个东西丢给你,一个月后交差,中间不管你任何事情,交不了差就唯你是问.下级也不知道能为上级分担什么,只有等着上级分配任务.甚至还有些老板都不不知道员工的名字,在这样的国软的,每个人都是孤立的,又怎么能做大做强呢?   9.企业文化   所谓十年树木,百年树人.国软的企业文化表面功夫算是做的很好的了,什么"为客户创造价值","做最好的行业解决方案","软件公司的最大资源就是人才"等等,要多华丽有多华丽,重复体现了"口号文化".真正做到企业文化又有多少呢?有多少仅仅是为了做给客户看的呢?   10.盲目跟风   很多国软看到人家外企软件公司最近在搞什么推进活动,就跟风,效仿外企做,可是无法领悟精髓,纯粹只是在模仿.(外企集体笑:"一直被模仿,从未被超越")做完了也不知道这么做的意义,劳民伤财. … Continue reading

Posted in Programming | 1 Comment