一个软件开发者的解决问题的心得——善于利用蛛丝马迹

作为一个软件开发者,研究问题以及解决问题是我们的职业所要求的。针对一个问题,我们想要研究它,学习它,那就需要搜集相关的材料,学习这个问题所牵扯到的知识。只有掌握了一定的知识,那么利用我们的推理、观察、思考等才可能尽快地解决问题。

最近研究c#操作word脚注(footnote)。在网上搜索关于c#操作脚注的内容,少之又少。我研究的问题是这样的:如何生成脚注的时候,在脚注的内容前面,不生成序号,或者生成后,可以删除掉,因为前面的序号我想自己控制。如图:

图上面的正文中的[2] ,和hello前面的一样,我想自由控制hello world前面的东东。有两种方案:

方案一:生成脚注的时候,自定义标记,插入空的符号,此方案用代码没有实现。

方案二:删除掉hello world前面的[2],然后加入自己的编号。

方案二,c#代码实现的时候,也是特别难,不知道怎么做。我在网上搜索,根本没有答案。后来我在笔记本中找到这样的一段代码:

this.Application.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekCurrentPageFooter;
Word.Range oRange = this.Application.Selection.Range;
oRange.Text = "1234567890";
object styleName = "Intense Emphasis";
oRange.SetRange(1, 5);
oRange.set_Style(ref styleName);

测试了下,发现这段代码原来是用来添加页脚的,从代码里面的单词也可以看出。跟我研究的脚注(footnote)关系不是很大。不过,我试着用了前面两句代码,摸索着,修改如下:

1  WordOpt.WordApplication.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekFootnotes;
2 Word.Range oRange = WordOpt.WordApplication.Selection.Range;
3 oRange.SetRange(0, 2);
4 oRange.Delete();

这样就实现了方案二。

由此可见,一两句的代码,对我们研究的问题,也可能会产生很大的作用,直至问题解决。值得一提的是,我在前期收集材料的时候,把代码片段保留下来,当时也不知道能不能用上,只是觉得有点关联。

第二个例子:我用vsto做了一个word插件,同事负责打包。在32位word上可以安装成功,但在64位word上,加载不了插件。

同事问我,你当时是怎么测试64位的?我说我安装了64位操作系统,然后装了64位word。其实这不是她想要的答案,于是我在本地再次测试。我先生成debug文件,把debug下的东西拷贝到虚拟机上测试。但同事是release打包,然后测试的。我在debug下生成的东西,安装是没有问题的。于是我release了下,然后在直接安装vsto文件时,报出一个错误来,xx.dll哈希值与清单中计算的不一致,这下把我搞懵了。后来,为了解决这个问题,我把清单文件打开,也不知道怎么办。我想了下,debug都没有问题,于是我把debug下的xx.dll拷贝到release下,结果又报清单上的dll版本与实际文件的dll版本不一致。这下,我想看看debug下清单,找出xx.dll信息来,令我吃惊的是,它和release下的信息有一个地方不同,这个地方立刻引起了我的注意。我想这就是在64位上装不成功的原因。于是我跟她说了下我这个小发现,结果她重新打包,一会儿问题就解决了。

 <assemblyIdentity name="Samson.NoteFirst.RemoteCallInterface" version="1.0.0.0" publicKeyToken="B9552CFE9AEF3411" language="neutral" processorArchitecture="x86" />

看了下 processorArchitecture="x86",这不是说的32位吗?

由此可见,从一个细节的地方着手,就可能会直接解决问题,但前提是如何发现这个细节,这个一方面是知识经验,另一方面是直觉和灵感。灵感经常在苦闷和无助,但是一直苦苦思索和追求当中,像闪电般刹那间闪现。知识和经验那得靠时间来积累,直觉得有好的观察力和洞察力。

时间: 2024-07-30 02:44:32

一个软件开发者的解决问题的心得——善于利用蛛丝马迹的相关文章

一个软件开发者的BPM之路

我是小林,一名普通的软件工程师,从事BPM(业务流程管理)软件开发工作.我没有几十年的技术底蕴,无法像大牛们一样高谈阔论,品评BPM开发之道:也不是资深的流程管理专家,能与大家分析流程管理的时弊.我只是一名有着一轮工作经历的软件开发者,更准确说是流程开发者,有那么几次特殊的经历,可以窥探一丝BPM开发的发展轨迹. 2004年,我初入软件行业.当时,国内BPM软件产品大多还处在概念阶段,它们基本都是非常专业的中间件级产品,复杂的状态机.活动.事件等概念充斥其中,只有高水平的开发实施人员才能驾驭.而

《软件开发者路线图:从学徒到高手》

1.为什么要不断学习新东西: 专长带来的回馈是直接而切实的,但这样做的风险不会立即浮现出来,直到有一天你采取任何措施都为时已晚.当你的专长最终变得过时,你将被迫再次面临一大片无知领域,而此时你可能已经失去学习新东西的习惯,重新开始会比原来痛苦得多.在这种情况下,克服那种被压垮的感觉比解决问题本身更困难. 2.走上同一条路: 通过观察,并且与几个这样的杰出黑客交流,他发现自己离真正意义上的"杰出软件开发者"差远了.每隔一段时间,他就会去看一看这些黑客们所学知识的深度和广度,然后垂头丧气或

读《软件开发者路线图:从学徒到高手》感悟

好长时间,没有读过一本书了. 这两天花了点时间,读了一本<软件开发者路线图:从学徒到高手>,感觉很不错,所以推荐给大家. 本来以为,作为一名合格的程序员只要会看文档和源码,就可以,看来我真的烦了一个很大错误呢,是不是你也有这个Bug ? 以前的我,总是喜欢 自己一个人摸索问题的答案,有的时候也不一定能够解决, 作为一名好的 程序员,要保持一个 谦卑的心,正如 乔帮主 所说的:"Stay foolish ,Stay hungry!" 学会,分享自己所学的知识,这样 会进步的更

浅谈软件开发者应具备的基本素质

我们常常能在一些电子产品的发布会上听到新产品修复了某些BUG.开发出了某些先进的功能: 我们常常会听到某些黑客攻击某些网站的消息,也可能受过某些电脑病毒的侵害: 我们也常常能在一些科幻大片里见到程序员在紧急关头敲打代码拯救世界. 每天,我们都在使用着电子产品,使用着软件程序开发者的成果.但是,对于普通人,软件开发又高深.难以涉猎.而作为软件开发者,又应该怎么样对待软件开发,应当具备哪些素质?我正在学习软件开发,下面从个人的角度,浅谈自己的看法. 开发软件的基本前提是站在他人的角度考虑问题:软件开

作为一个软件工程师,在接下来的 5-10 年内应该掌握的技术

这是一个发布在Quora上的问题,提问者问到:“作为一个软件工程师,想要生存下去,在未来的 5-10 年内有哪些必须掌握的技能呢?例如人工智能?高等数学?” 下面是一位曾经在 Facebook 和 Google 工作过,目前在 Uber 就职的程序员 Pedram Keyani 的分享,目前已获得 3500+ 的赞: 如果你的目标是成为一名通用软件工程师,那么未来 5-10 年需要掌握的技能与过去 5-10 年并没有什么太多的差别. 通用技能: 深刻理解计算机科学的基本原理 数据库 网络技术 编

要抓住100万软件开发者,华为公有云打算这么做

(上图为华为企业云业务部总裁杨瑞凯) 华为要做公有云?华为怎么做公有云?华为做公有云有戏吗?自从2017年3月10日华为轮值CEO徐直军在长沙华为中国生态伙伴大会2017上宣布华为将组建负责公有云的Cloud BU并在2017年强力投资打造开放的公有云后,就激起了业界强烈的关注和一连串的问题. 华为在2011年成立企业BG全力拓展政企市场,当时也开始积累华为企业云的能力.2015年7月,华为举行了云服务的战略发布会,当时把公有云命名"华为企业云".2017年3月,华为在大连和青岛相继举

《软件开发者路线图——从学徒到高手》—— 读后总结

这本书读起来很快,而且很多地方都感觉到了共鸣!收获还是不少的... 空杯心态 这是我最喜欢的一个主题,书中有一个故事: 意思是说,如果我们自己的心态不摆正,骄傲浮躁,不能静下心来好好学习,那么看再多的书也是无用的. 只有以一种求知的心态学习,才会有收获. 关于技能 对于软件开发者来说,在入职之前的学生时代应该广泛涉猎各种专业领域的书籍,尽量扩宽自己的知识面,为入职打下一个良好的基础. 在实习时,尽量保证快速的学习,以可用为目标,你不需要知道某个UI组件的实现原理,只需要知道怎么使用即可. 然后入

软件开发者的最佳实践

近期在一个站点上看到一篇写关于软件开发者应该有的几项实践,感觉写的很的好.以下将列举下文章中提到的几个方面. 首先文章中提出,软件开发者须要不断的练习,什么是练习,为什么要练习,练习意味着什么?文章中给出了非常好的解读.练习是一种习惯,练习是一个过程,练习并不意味着记住,练习须要不断的实践,练习须要专心致志的付出.射击运动员须要不断的练习才干射中很多其它的分数,开车也须要不断的练习才干成为driver,写字须要不断的练习才干写出好的字,然后才有可能成为书法家. Shooting, Driving

读书笔记《软件开发者路线图—从学徒到高手》

<软件开发者路线图—从学徒到高手> 模式列表 另辟蹊径(A Different Road):你发现自己想要去的那个方向跟通往软件技能的道路并不相同. 只求最差(Be the Worst):当快速超越了周围的每一个人,你的学习速度下降了. 质脆玩具(Breakable Toys):你工作在一个不允许失败的环境中,却需要一个安全的环境来学习. 具体技能(Concrete Skills):你想到一个优秀的团队中工作,然而你掌握的实用技能很少. 正视无知(Confront Your Ignorance