《人月神话》书摘

焦油坑


1. 编程系统产品开发的工作量是供个人使用的、独立开发的构件程序的九倍。

2. 编程行业的一些内在固有苦恼:


● 将做事方式调整到追求完美,是学习编程的最困难部分。


● 由其他人来设定目标,并且必须依靠自己无法控制的事物。


● 真正的权威来自于每次任务的完成。


● 任何创造性活动都伴随着枯燥艰苦的劳动,编程也不例外


● 人们通常期望项目在接近结束时(bug、工作时间)能收敛得快一些,然而软件项目的情况却是越接近完成,收敛得越慢。


● 产品在即将完成时总面临着陈旧过时的威胁。


人月神话


1. 缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来影响还大。

2. 良好的烹饪需要时间,某些任务无法在不损害结果的情况下加快速度。

3. 我们的构思是有缺陷的,因此总会有bug。

4. 我们围绕成本核算的估计技术,混淆了工作量和项目进展。人月是危险和带有欺骗性的神话,因为它暗示人员数量和时间是可以相互替换的。

5. 在若干人员中分解任务会引发额外的沟通工作量——培训和相互沟通。

查看更多

OS X下常用的终端命令

  • curl请求url列表
1
cat urls.txt | xargs -P5 -n1 curl -O
  • 远程拷贝:
1
scp -r root@192.168.1.113:/private/var/mobile/Media/DICM /local/path
  • 制作OS X启动盘
1
sudo /Applications/Install\ OS\ X\ Mavericks.app/Contents/Resources/createinstallmedia --volume /Volumes/Untitled --applicationpath /Applications/Install\ OS\ X\ Mavericks.app --nointeraction
  • 显示、隐藏隐藏文件
1
2
defaults write com.apple.finder AppleShowAllFiles -bool true/false
KillAll Finder
  • 查找程序或静态库是否用到了某个方法
1
find . | grep -v .svn | grep "\.a" | grep -v "\.app" | xargs grep uniqueIdentifier
  • 清理svn隐藏文件
1
2
cd [some path]
find ./ -name ".svn" | xargs rm -Rf
  • 静态库合并
1
lipo -create libA.a libB.a -output libC.a
  • svn上传静态库(a包)
1
2
svn add libxxx.a
svn commit -m "add static lib"
1
2
3
open ~/.subversion/config
[auto-props]
global-ignores=.o .lo .la .al .libs .so .so.[0-9] .pyc .pyo .rej ~ ## .# ..swp .DS_Store .xcuserstate
  • svn版本合并
1
2
svn merge -r fromVersion:toVersion fromBencheLocalPath toBencheLocalPath
(如:svn merge -r 26546:HEAD /Users/tracy/Documents/SVN/BOC/branches/P301 /Users/tracy/Documents/SVN/BOC/branches/P302)

查看更多

基于Node.js的APNS和Passbook服务

本文介绍iOS开发中常用到的两个服务APNS和Passbook基于Node.js实现的工具,虽然大部分公司可能目前不会选择Node.js开发后台,但对于广大iOS开发人员来说能够不依赖后台开发人员,自己写后台配合联调APNS或Passbook程序还是方便的多,甚至你可以在了解了一系列处理流程后指导一下后台开发人员完成开发,毕竟他们对苹果的服务不一定有你了解的多^_^。

express

在正式介绍这两个工具之前,先简单的介绍一下express,因为本文的Demo基于express框架。 Express是一个简洁灵活的node.js Web应用框架,它提供了一系列强大的特性帮助快速创建各种Web应用,有兴趣的可以进一步了解。本文demo中主要用到express中路由的管理和请求的封装。首先通过npm install -g express安装express包,安装完成后创建express应用express --ejs MyService,此时在当前目录下会创建一个MyService文件夹,里面有各种目录,编辑package.json文件,在dependencies中增加apnspassbook

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app"
},
"dependencies": {
"express": "3.1.0",
"mongodb": "1.2.14",
"ejs": "*",
"apns": "0.1.0",
"passbook": "*"
}
}

查看更多

iOS & OS X 内存管理

内存管理其实就是在需要的时候分配内存、使用、使用完后释放的过程。一个好的程序会尽可能的使用更少的内存资源。在Objective-C中对内存管理的原则是管理好对象的生命周期,在不再需要的时候释放,确保内存中没有多余的对象。

Objective-C中提供了两种内存管理方式:

  1. 手动内存管理(MRR),也就是你需要精确的管理好自己所拥有的对象,这是用过引用计数系统来实现的,而引用计数的实现则是依赖NSObject类和运行时系统;
  2. 自动引用计数(ARC),和MRR一样也是依赖引用计数,不同的是编译器会在编译时自动插入合适的内存管理的方法。建议在新的项目组使用ARC,这样不仅可以省掉很多麻烦,也可以提升程序运行效率。

查看更多

Hello Hexo

前言

从CSDN到博客园,然后从博客园到个人博客,也尝试过WordPress,但个人感觉使用和配置太麻烦,而且本人对PHP不感冒,所以一直在寻找一个简单一点的博客系统。之前个人也有想法自己用Node.js来实现一套,不需要那么花哨的功能,简单就好。在下手之前Google了一下“a Node.js blog”,搜到了Hexo, Hexo 是一个简单但功能强大的Node.js博客框架,通过简单的配置马上就能使用了,而且界面风格简约,正是我喜欢的博客。

安装

因为Hexo是基于Node.js实现的,所以在安装Hexo之前需要先安装 Node.js,安装完Node.js后, 就可以通过Node.js自带的npm(Node Packaged Modules)工具安装Hexo了。

安装

sudo npm install -g hexo

更新

sudo npn update -g

查看更多