KEEP K.I.S.S.

tk's blog

Git删除submodule

已添加一个子模块:

git submodule add blah@blah.com:repos/blah.git lib/blah

删除这个子模块只需要运行:

git rm lib/blah

就搞定了。而对于旧本版的Git(1.8.5),则需要以下命令:

git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah

来源

 

I hate dotnet and ms

 

最近在看Unix 编程艺术,其实也是当休闲书籍看来着。
不过有很多感触,对于书里提出的很多原则和方法。
比如线程的问题。
 
    linux 里没有等同于windows下的源生线程的东西,使用的是轻量级用户进程。线程的问题在于,多线程之间共享了过多的东西,这种共享是硬性的,默认的,容易引发问题,典型的就是C库的全局变量冲突问题,所以win下有包装过的多线程C库和单线程C库。而多进程的模型中,进程彼此的C库是独立的,其他资源默认也会是独立的,不会互相冲突,对于需要共享的资源只要通过灵活的IPC机制传递或者共享文件描述符。线程间的资源是默认共享,而进程间的资源是默认独立的,前者暴露了太多细节。就并发性来说,两者应该没有太多性能上的区别,轻量级线程的切换和线程切换,性能上现在也差别不是很大了。
 
自己还是对.net 执有偏见,或者说有些抵触的态度,我的感觉是,MS 的开发链变迁真的让开发人员心憔力悴,虽然很多的windows开发者并没有这种感觉,也不会认可这种感觉。MS 我个人觉得苦逼的程序猿大多是win下吧,唉。Unix的简单哲学,KISS原则,真的很适合让自己去反省和深思的。
还有一些就是关于设计模式和Ruby了。虽然自己对于设计模式也是懂的很浅的,不过不应该把设计模式的思想仅仅拘泥在面向对象的语言中,再进一步说,不应该把设计模式的一些思想拘泥在面向对象之中,这是从这本书里感悟到的。
 
虽然从emacs奔向了vim,但是最终还是镇守在ruby这边,没有逃向python。原因感觉也不清楚。相对来说,我不喜欢那种极度严谨的感觉。国内的ruby 真的不活跃。仅有的活跃地方应该是 Ror 和 RGSS了,我也是个初学者,也需要努力的。
 

不应如此

最近越来越感到一种恐惧,对于自已选择的领域。

学编程这么久,真的没有拿过一个特定领域来仔细钻研,都是泛泛的涉猎。

程序真的只是个工具而已,没有应用领域的话,各种奇淫逸巧也不过是镜月水花。

自己该好好反思一下了。

是不是走入了一个死胡同。

设计模式

最近突然开始看设计模式了,原因很简单,自己写的一个程序写大了过于复杂,想分成各个类的时候比较纠结,不清楚如何分配各个功能,更要命的是,对于实际需求的分析能力还不够,慢慢学习吧。。。。

几篇易懂的文章推荐

当然最好的还是去看“官方书籍” 设计模式-可复用面向对象软件的基础

我要学的最后一门编程语言:LISP (Clojure)

转载

来源:外刊IT评论

我开发软件。事实上,我的整个职业生涯都是从事软件开发。早在互联网时代之前,在那次泡沫之前,那次泡沫之前的泡沫之前,我就在波士顿的一家小公司里的一份软件开发的岗位上苦苦奋斗,我们做多协议路由器。在那份工作中,我从做测试干起,是一个“质管员”,感谢这个公司的技术创始人的榜样,他努力的工作,在Cayman Systems中作为一个特殊的开发人员给予我们指导,使我找到了驱动我之后二十年的人生招唤:软件开发。

 

这第一份工作不仅仅塑造了我的职业内容,同时,在Cayman,我遭遇了可怕的创业诱惑的冲击。第一次,我感觉到了一个公司创业的成功带来的直接、美好、让人紧张颤栗的强烈感觉。我感觉到了那种自己掌舵的愉悦,尽管只是部分的。这次跟自由与责任的第一次的亲密接触让我胃口大开,我从此走上了创业之路。

我在Cayman Systems的导师给了我两条谏言,它们一直陪伴我至今:

  • 当你想开办一个公司时,先从顾问做起。(看,他已经知道我入魔了。)从你的客户那里学习业务和开发,获得报酬的同时,利用他们的专家和资金,最终将其全部转化到你的产品里。
  • 学习LISP。

我很不擅长听取建议,所以这两样我一个都没做。

十年后(几乎也是这段时间),我开始研究Ruby。当我发现Ruby时,一种高兴的,一种长出一口气,一种兴奋的感觉充满着我。它俘获了我,不仅仅从技术上,在之后的一年的学习这种语言中,我编写软件的方式、我解决问题的模式改变了。我可以用一种最简单的,但毫无疑问的语句描述这种奇异的感觉:“编程太有意思了!”。

经过了多年对这种体验的深刻的反思,我对Paul Graham的话更深信不疑了:

“编程语言不仅仅是一种技术,它更是一种思维习惯。” – http://www.paulgraham.com/avg.html

通过对其它语言的学习,我无意中学会了新的、更高效的思维习惯。Ruby使我成为一个更优秀的程序员。

回顾往事,我发现有些地方做的很英明,并不是有意识的,就像是我早就知道了那句名言——早在它清晰的指导我行为处事之前。因为,你看,我第一眼看到Java,我就知道我讨厌它。我从来没有用Java写过一行代码,不会拿它来挣钱,更不会把它当作兴趣。我想我清楚的知道,深深的知道,它会改变我,使我成为一个“编码器”。甚至更糟。

纽约时报推荐了一篇Guy Deutscher写的标题为“语言如何改变你的思维”的文章,文章先从回顾开始,然后谈到了在这个问题上的最新研究发现。

“50多年前,著名的语言学家Roman Jakobson用一句简单的名言指明了语言之间最关键的不同之处:‘语言之间的不同本质在于它们能够传达的信息,而不是它们不能传达的信息。’这句名言告诉了我们解放我们母语潜能的关键所在:不同的语言用不同的方式影响我们的大脑思维,这并不是因为这种语言可以让我们这样思考问题,而是它在强迫你这样思考。”

“当你的语言日常的强迫你去使用某些类型的信息进行说明,这会迫使你去留意那些使用其它种语言的人平时不会注意的某些细节和体验。因为这种说法的习惯是从小养成的,这种习惯已经成为大脑思维的习惯,超越了语言本身,直接影响了你的言行,感知,联想,感觉,记忆,以及世界观。”

基本上我不是一个办事果断的人,但年初我决定要给自己充充电,我誓言要再学一门新的语言。我知道,我现在是CTO,这样做会使我“失身份”,但我认为,我的能力就体现在能在技术界和商务界的贯通,我必须坚定的深度的同时浸润着这两个领域。我听说越来越多的语言开始利用JVM,所以我想Scala也许会是一个不错的选择。我不想用无聊的细节打搅你,但这种语言确实没有符合我的预期。

六个星期之前,我发现了Cloure。现在,二十年来的今天,我懊悔不已,我发现导师的建议不该被当作耳边风,那是个极其重要的建议。

我们知道,Clojure是LISP语言的一种方言。而事实证明,LISP并不是一种语言。LISP是一种思维方式。