放弃一些我们不想放弃的

      几经折磨,我慎重决定逐步的放弃BDB在我的项目中的应用,还是改用Sqlite来实现。不抛弃不放弃似乎是近来听得比较多的话语,可是在程序员的世界里,你经常会遇到n叉路口,你需要选择,你需要舍弃。

      最近在做写程序的过程中,我感受到,写程序的人,背后需要有方法论的支持,如果能懂点哲学,那更好了。整天低头写程序,使你局限在一个小领域思考问题。特别是当你遇到一个难题时,你紧紧的围绕着它想把它fixed out,不如退一步,看一看整个貌,再审慎的看一下,这个问题真的是系统中不可缺少的一部分吗?我非就要这样实现吗?在资源有限,时间有限,精力有限,什么都有限的情况下,叫我们来做一件事情(特别是做项目,基本上都是这种情况),我们是需要取舍的。或者可以说风险的识别与管理吧

      在撰写分布式信息采集程序的过程中,我有很多的取舍的地方,比如:

1.本来想使用NxBRE做为规则引擎来实现,可我发现它的实现是基于解析xml,太烦索了,而且有些我需要的功能没有,如果我要利用它,我要通读源码,这个对于做项目而言是大忌讳。但是在发现没有更好的解决方案前我也只能这么做。正当我准备这么做的时候,机缘巧合,在使用windsor的过程中,发现brail模板引擎用的是boo,它和C#是集成的,而且可以做为动态语言来内嵌,而且提供了编译器的扩展,支持DSL,于是我转投boo门下。其实你会发现在你为了实现某样功能,转投到某项新技术下寻找是否有你需要的答案的时候,你会不断的问自己,它能实现我的要求吗?又会问自己是不是还是用原来的方案好,使用它至多多费点时间,但是肯定可以实现,不过在针对我这个具体的情况,在我深入下去不久,我发现确实它能更好的实现我想要的功能。

小结:与其说这次是我主动的选择,不如说是好奇心+机遇所造就了,因为boo是类python的语法,之前正好学过python的语法,倘若之前没有尝过python可能,一看到boo说是类python我就逃了,程序员总是喜欢拥抱自己熟悉的东西,就像你不爱和陌生人说话一样,搭讪犯除外哈。

2.第二次抉择是发生在我在深入学习boo之后,ruby下dsl盛行,.net下dsl也蠢蠢欲动,mini dsl,iron python,等等 ,为了在boo下构造dsl我可是煞费苦心啊,把英文资料都看遍了,上maillist求解,但是无奈,不甘心的放弃了,为什么,找不到一个符合我要求的例子。我的道行还够深,我不明白其中的内部机理,只会clone,不会innovation。英文水平有限,和国外程序员交流还有障碍。

小结:这次是我无奈的放弃,不放弃也得放弃,并不是我死抱着boo不放一个月三个月就能解决的,我的功能还不到那份上,或许,几年之后,当我有了其它的相关工作经验,再回来看这个问题就迎刃而解了,但对于现在的我而言,是一个无解的问题。

3.第三次抉择是我在使用sqlite之后,应该说这是一次失败的抉择。此前我曾经在一个半成品的项目DBSchema2Doc(是一个类codesmith mygeneration之类的项目)中应用sqlite,对sqlite还算有些熟悉,sqlite在sql中支持regex正则对此我的印象很深。因此自然而然的应用它了。但随后发现它不能很好的支持多线程的并发读写,只能多个读一个写。这个困扰了我。我自认为是个见多识广的人,且也很会转弯,于是转到了bdb的门下,这次真的是一个失败的经历。因为它的文档稀少,而且在做demo原型是老报些错,一直找不到解决的方法,后来在qq上经网友的指点,勉强解决了,BDB是能很好的支持多线程的并发读写,但是关于它如何应用的文档实在太少,使得你遇到问题真的不能该如何解决。但是最好我还是决定在项目中应用它,边走边解决吧。在项目后期快完成的时候,经常在读写数据库的操作上出现些问题,一些是你不想要的数据,有时出现异常。但是又找不到好的解决方案,我本来想写个单元测试好好的把BDB操作的函数再测一遍,结果刚写第一个测试多线程的用例就失败了,把各种可能的参数都试了一遍,而且死活找不到原因,最后只能是放弃了。放弃也得有过程,我决定先利用BDB还是将怎么程序做完,再最后将数据储存这块替换,虽然没有使用接口的形式来替换操作数据库,但是难度和工作量还不是太大。

总结:在以往的写程序的过程中,我没有遇到那么多难点,都是做些asp.net的应用,可能是些div+js的特效,或是想用下xml+ajax,亦或是某个控件怎么使,正则写起来有点难度,上网问问google一下,基本上的问题都可以解决。似乎还没有遇到过想做而没有做成的,不过这次的项目中真的遇到了,我也学会了很多。也算是在失败中汲取教训吧。

我希望把这个经验教训,应用到我以后的生活、学习、工作中将是受益无穷的事情。整个暑假我都在不断的选择、抉择、抛弃、放弃,从失望到绝望再到希望,经历着这种轮回。相信这种轮回,会使我更加的成熟和自信。

 

PS:我觉得我有做项目经理的潜质,不过这活太耗心力。

在Git中,如果你想要放弃某个commit(提交)所做的所有更改,但保留之前的提交历史,你可以通过以下步骤操作: 1. **检出上一个提交**: 使用命令`git checkout <commit_hash>`,将工作目录恢复到指定的commit状态,这里的`<commit_hash>`是你想要回滚到的那个提交的哈希值。 2. **暂存未提交的更改** (如果有的话): 如果还有未提交的更改,先执行`git add .` 或 `git add <file>` 将它们添加到暂存区,以便以后重新处理。 3. **创建一个新的分支来保存当前的工作**: 如果你不希望丢失这个分支中的改动,可以创建一个新的分支,例如:`git branch new_branch_name`. 4. **删除旧的commit**: 你需要切换回原来的分支,然后使用`git rebase -i HEAD~n` (`n`是你想丢弃commit的数量),这会打开一个交互式的编辑界面。在编辑列表中找到你想删除的commit行,通常标记为`pick`,改为`drop`,然后保存并退出。剩下的commit就会被合并到下一个commit。 5. **解决冲突(如果有)**: 如果在这个过程中出现了冲突,Git会提示你解决。完成后,按照提示继续操作。 6. **确认删除**: 最后,运行`git commit --amend` 来替换掉包含被删除commit的上一次提交,并用新的提交信息覆盖它。如果不想替换,可以选择`git reset --hard HEAD~1` 回退到上一个提交。 完成以上步骤后,你就放弃了之前的commit,并保留了更改。如果需要回到之前的版本,只需切换到那个分支即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值