2012年9月12日 星期三

好書推薦

程式設計書籍:

一、正在閱讀

重構-改善既有的程式設計


設計模式之禪

Android 手機應用程式設計入門


二、別人推薦好書

Design Patterns於Java語言上的實習應用

UI進化論

豆漿到底營養如何!

豆漿這好物哪有什麼壞處呢
豆漿到底營養如何?國家大豆行動領導小組有關人士認為,豆漿是本世紀“餐桌上的明星”,是“心腦血管保健液”,並稱豆漿可與牛奶相媲美。營養專家介紹說,豆漿被譽為“植物性牛奶”,豆漿蛋白質中的氨基酸成分比較接近完全蛋白質,屬於優質蛋白質。豆漿與牛奶中的維生素和礦物質各有長短,豆漿中的鈣含量低於牛奶,但鐵、B類維生素等的含量卻遠高於牛奶。牛奶中含有膽固醇,而豆漿中不含膽固醇,且飽和脂肪酸含量低,這是豆漿的優點。同時,牛奶中含有乳糖,乳糖要在乳糖的作用下才能分解被人體吸收,但我國多數人缺乏乳糖,這也是很多人喝牛奶會腹瀉的主要原因,但豆漿就無此顧慮。另外,豆漿中所含的豐富的不飽和脂肪酸、大豆皂、異黃酮、卵磷脂等幾十種對人體有益的物質,具有降低人體膽固醇、防止高血壓、冠心病、糖尿病等多種疾病的功效,還具有增強免疫力、延緩肌體衰老的功能。 
營養專家認為,由於豆漿營養豐富,每天早上喝250~500ml豆漿,配之以一塊麵包、饅頭等主食,即可滿足營養需要。但豆漿中含鐵量高,鐵吸收不容易,最好喝完豆漿後吃些水果,這樣可以促進對鐵的吸收。
但是............
  豆漿,許多人都喜歡,不少人都將豆漿作為早餐。但是飲用豆漿一定要注意,否則很容易誘發疾病。那麼,飲用豆漿要注意什麼呢? 
1.並非人人皆宜。 
祖國醫學認為:豆漿性平偏寒而滑利,平素胃寒,飲後有發悶、反胃、噯氣、吞酸的人,脾虛易腹瀉、腹脹的人以及夜間尿頻、遺精腎虧的人,均不宜飲用豆漿。 
2.不能與藥物同飲。 
有些藥物會破壞豆漿裏的營養成分,如四環素、紅黴素等抗生素藥物。 
3.不能衝入雞蛋。 
雞蛋中的雞蛋清會與豆漿裏的胰蛋白酶結合,產生不易被人體吸收的物質。 
4.忌過量飲豆漿。 
一次不宜飲過多,否則極易引起過食性蛋白質消化不良症,出現腹脹、腹瀉等不適病症。 
5.不要空腹飲。 
空腹飲豆漿,豆漿裏的蛋白質大都會在人體內轉化為熱量而被消耗掉,不能充分起到補益作用。飲豆漿的同時吃些麵包、糕點、饅頭等澱粉類食品,可使豆漿蛋白質等在澱粉的作用下,與胃液較充分地發生酶解,使營養物質被充分吸收。 
6.不要飲用未煮熟的豆漿。 
生豆漿裏含有皂素、胰蛋白酶抑制物等有害物質,未煮熟就飲用,會發生噁心、嘔吐、腹瀉等中毒症狀。 
7.忌用保溫瓶貯存豆漿。 
在溫度適宜的條件下,以豆漿作為養料,瓶內細菌會大量繁殖,經過3~4個小時就能使豆漿酸敗變質。

2012年5月27日 星期日

git版本管理步驟教學(二)

.檔案的狀態

未暫存 
暫存  git add
已提交 git commit
將未暫存一併提交 git commit -a -m

.移除文件
要從git中移除某個文件,就必須要從已跟蹤文件清單中移除(切確地說,是從暫存區域移除)
,然後提交。
1.rm 檔案
2.git rm 檔案
如果刪除之前修改過並且已經放到暫存區域的話,則必須要用強制刪除選項-f

若想把文件從git倉庫中移除但仍然保留當前工作目錄中,以便稍後在.gitignore文件中補上
git rm --cached readme.txt

.忽略某些文件
創一個".gitignore"文檔,列出要忽略的文件模式
文件的格式規範如下:

1.所有空行或者以註釋符號# 開頭的行都會被Git 忽略。
2.可以使用標準的glob 模式匹配。
3.匹配模式最後跟反斜杠(/)說明要忽略的是目錄。
4.要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反。
5.在.gitignore隱藏檔貼上.DS\_Store
6.終端機上輸入 git config --global core.excludesfile ~/.gitignore

.查看已暫存和上次已提交的快照之間的差異
git diff --staged

.移動文件(更改名字)
git mv oldname newname 
相當於以下三條命令
mv oldname newname
git rm oldname
git add newname


2012年5月23日 星期三

git版本管理步驟教學(一)

.本地端

1.建立資料庫
   git init

2.加入檔案參照
   git add .
   若中途刪除檔案,要將先前被追蹤的被刪除之檔案提交出去
   git add -u

3.將所有修改過得檔案都提交
   git commit -a -m ''

4.建立分支
   git branch 分支名稱 
   
   命名分支
   git branch -m 舊名稱 新名稱

   刪除分支
   git branch -d/-D 分支名稱

   產生新的 branch, 並同時切換過去 new-branch
   git checkout -b new-branch test

5.取消對檔案的修改
   git checkout -- Makefile

6.退至staging Area,重新提交 Commit
   git reset --soft HEAD^

6-1.修改某一次commit
git rebase -i [SHA碼]
reword 1c42c3d Test02 新增test 03拷貝檔案(Fix3)
*:wq 保存且退出

修改commit message再按:wq

7.強制恢復到上一版本
git reset --hard HEAD
最後三個版本 (HEAD, HEAD^, and HEAD~2)

8.將不想被參照的檔案去除

git rm WebKeyScan.xcodeproj/project.xcworkspace/xcuserdata/Apple.xcuserdatad/UserInterfaceState.xcuserstate

git rm -f iphone/Barcodes/WebKeyScan.xcodeproj/xcuserdata/Apple.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist

9.標籤tag
$ git tag -a v1.4 -m 'my version 1.4'

搜尋tag
$ git tag -l 'v1.4.2.*'

10.merge(合併)
git merge [branch name]

git reset --hard ORIG_HEAD /* 取消合併 */


.伺服端
1.必須先在遠端伺服器新增遠端資料庫
   git init --bare

2. 進入你專案所在的Repo目錄
git remote add selab psyche8051selab-nkfust.dyndns.org:/home/psyche8051/walton/WebKeyScan

3.接著要把你專案資料庫的進度放進遠端資料庫中,供其他人取用,所以要在專案資料庫目錄執行Push的指令
git push selab master

PS1: 因為要git clone的話,必須push master分支

PS2: 建立git的群組:
因為我放在/home底下,這邊要root權限,當你用你的帳號push東西上去時,會爆權限不足。但是把他改成權限全開的話(chmod 777 ...)又很危險。所以我開一個git的群組,讓會傳東西的人加到這個群組。

sudo groupadd git
sudo usermod -a -G git your_login # your_login改成你自己的帳號。
# 下面這兩行,在每次新增新project時要對新的資料夾補做
sudo chgrp -R git /home/gitRepository/Project/iOS/MySkyBox
sudo chmod g+rwx -R /home/gitRepository/Project/iOS/MySkyBox

4.如果push有成功,你在遠端Repo (dropbox目錄裡的OurProject目錄) 看不到你的程式檔案(剛剛有提過),要確定是不是真的有push進最新進度,我們需要再Pull回來看看,看現在遠端Repo裡是不是最新進度:
git pull selab master

5.複製整個專案
git clone psyche8051selab-nkfust.dyndns.org:/home/psyche8051/walton/WebKeyScan

.xcode git
使用sudo權限執行合併或是切換分支,檔案會被鎖住


2012年5月18日 星期五

蘋果應用商店審核指南中文翻譯

出處:http://mobile.51cto.com/market-334683.htm

蘋果應用商店審核指南中文翻譯

前言
我们希望帮助您加入 这个成功的组织。这是我们首次发布《应用程序商店评估指导》(App Store Review Guidelines)。通过它,我们希望帮助您解决开发应用程序时遇到的问题,以便于您在提交应用程序时,可以加快审批流程的速度。
我们将应用程序(Apps) 视为与书籍或歌曲不同的产品,我们并不存储它们。如果您意欲批评宗教,那就去写本书。如果您想要描述性爱过程,写本书或写首歌曲,或者可以创建一个医疗程 序。这会出现非常复杂的局面,但是我们决定,在应用程序商店(App Store)禁止出现某种内容。这或许会让您认识到我们秉持的更为深远的目的:
我们拥有许多儿童可以下载的应用程序,除非父母事先进行了设置(一般父母都不会设置),否则父母对这些内容的操作控制将会无效。因此,您要了解我们时刻在留意着您的孩子。
在我们的应用程序商店中已经拥有了超过 25万个应用程序。我们不再需要那些垃圾应用程序。如果您的应用程序没有什么有益的用途或者持续性的娱乐功能,则可能不会获得我方的接受。
如果您的应用程序看上去像是那种只花了几天功夫简单拼凑出来的产品,或者只是想在我们的商店中抓住朋友的眼球,请提前做好遭拒的准备。我们有很多具有严谨态度的开发程序员不希望他们的高品质应用程序充斥在一些业余作品之中。
我们将拒绝任何包含越界内容或行为的应用程序。您可能会问道,具体限制是什么?最高法院的法官曾有言:“它出现时我自然心中有数。”当您越过这一范围时,我们认为您也会有自知之明。
如果您的应用程序被拒,我们设立了一个审查委员会供您上诉。如果您去媒体抨击我们,肯定对您于事无补。
这是一个动态文档,新提交的应用程序会导致新的问题产生,并可能随时产生新的规则。或许您的应用程序会触及到这一点。
最后要说明的是,我们非常珍惜这个平台,并且向您的作品表示敬意。我们确实在尝试尽力创建全球最佳平台,以便让您展示才华,同时获得相应的报酬。如果这读上去让您感觉我们的控制欲过强,那是因为我们曾向用户承诺保证,我们将利用我们的产品让他们获得高品质体验。
目录
1. 条款与条件
2. 功能
3. 元数据、评级与排名
4. 位置
5. 推送通知
6. 游戏中心
7. iAd相关
8. 商标与商业外观
9. 媒体内容
10. 用户界面
11. 购买与流通
12. 删除与聚合
13. 设备损害
14. 人身攻击
15. 暴力
16. 异议内容
17. 隐私
18. 色情
19. 宗教、文化与种族
20. 竞赛、赌金、彩票与罐头抽奖销售|
21. 慈善与援助
22. 法律要件
1. 条款和条件
1.1 为App Store开发程序,开发者必须遵守程序许可协议(PLA)、人机交互指南(HIG)以及开发者和苹果签订的任何协议和合同。以下规则和例子旨在帮助开发者的程序能获得App Store的认可,而不是修改或删除任何其他协议中的条款。
2. 功能
2.1 崩溃的程序将会被拒绝
2.2 有错误的程序将会被拒绝
2.3 跟开发者宣传不符的程序将会被拒绝
2.4 无应用文档或隐藏功能与描述不符的程序将会被拒绝
2.5 使用非公开API的程序将会被拒绝
2.6 在指定容器范围外读写数据的程序将会被拒绝
2.7 以任何方式或形式下载代码的程序将会被拒绝
2.8 安装或释放其他可执行代码的程序将会被拒绝
2.9 beta版、演示版、trial版和测试版的程序将会被拒绝
2.10 iPhone程序必须不经修改就能以iPhone分辨率和2倍 iPhone 3GS的分辨率在iPad上运行
2.11 与App Store已有程序重复的程序可能会被拒绝,特别是数量很多的情况下
2.12 没有显著用途或不提供任何持久娱乐价值的程序可能会被拒绝
2.13 主要内容为营销或广告的程序将会被拒绝
2.14 欺骗或有虚假功能,没有明确标明的程序将会被拒绝
2.15 大于20MB的程序不会通过蜂窝网络下载(App Store会自动禁止)
2.16 多任务程序仅可以为达到预期目的而使用后台服务:网络电话、音频播放、地点、任务完成、本地通知等
2.17 浏览网络的程序必须使用iOS WebKit框架和WebKit Javascript
2.18 鼓励过量饮酒或非法物质,或鼓励青少年饮酒或吸烟的程序将会被拒绝
2.19 提供不正确诊断或其他不准确设备数据的程序将会被拒绝
2.20 向App Store上传大量相似版本程序的开发者将会从iOS开发者项目中除名
3. 元数据(名称、描述、评级、排名等)
3.1 带有任何其他移动平台名称的元数据程序将会被拒绝
3.2 带有占位符文本的程序将会被拒绝
3.3 带有与程序内容和功能不相关描述的程序将会被拒绝
3.4 连接到 iTunes 中的程序名称及显示在设备的程序名称应该相似,不至引起混淆
3.5 程序的大图标与小图标应该类似,不至引起混淆
3.6 程序图标与画面不符合4+年龄评级的程序将会被拒绝
3.7 目录与类型不适合于程序内容的程序将会被拒绝
3.8 开发程序员负责为其程序指定适合的评级。评级不适用可能会由苹果公司修改
3.9 开发程序员负责为其程序指定适合的关键字。关键字不适用可能会由苹果公司修改/删除
3.10 利用伪造或付费评论的方式在App Store中企图操纵或欺骗用户评价或图表排名的开发程序员(或者采用其他不正当方式)将会从iOS开发者项目中除名

程式工程師如何自我超越

出處 http://zhuqil.cnblogs.com 程式工程師如何自我超越
最近讀了彼得·聖吉的《第五項修煉》,有點感悟。這本書是從系統力學的角度闡述如何建立學習型的組織,通過建立學習型的組織,使企業從優秀到卓越,使企業基業長青,被稱為21世紀的管理聖經。這篇文章探討一下書中五項修煉中的第一項修煉:自我超越。我將從程序員的成長角度來進行:程序員如何進行自我超越。首先要建立個人的願景。    願景是程序員內心真正最關心的事情。願景不同於上層目標,上層目標是抽象的,屬於方向性的、比較廣泛,而願景是一個特定的結果,一種期望的未來景象。對程序員來說上層目標可能是提升編程能力,其願景是成為開發leader。當你完成成為一位開發leader這個願景之後,上層目標可能還是提升編程能力,而願景可以變成了成為一位CTO了。
    上層目標和願景是相輔相成的。由於願景是程序員內心真正最關心的事情,因此會在做真正想做事情的時候,你會精神奕奕,充滿熱忱。面對挫折的時候,也會堅忍不拔。因此程式工程師要實現自我超越,首先要建立個人的願景,譬如成為PM,成為CTO等。建立個人願景之後,接下來我們需要看清楚自己的現狀。
其次保持創造性的張力。
  在邁向建立好的願景的過程中,知道自己現在身在何處是非常重要的。也就是說程序員需要看清楚自己的現狀。當我們將願景和現狀在大腦裡面同時並列時,心中便會產生一個創造性的張力,一種想把二者合而為一的力量。下圖可以很形象的表示:


上圖的張力的結果只有兩種可能的途徑:把現狀拉向願景,或者把願景拉向現狀。至於最後會發生哪一種情況,在於我們是否對願景堅定不移。    需要注意的是這種創造性的張力常常夾雜著焦慮、悲哀、氣餒、絕望、擔憂等感覺。了解因創造性張力而產生的負面情緒,並不是創造性張力本身,而是所謂的情緒張力,這點很重要。因為大部分討厭情緒張力。減少情緒張力只要不堅持願景,降低願景,創造性張力就會鬆些,情緒張力自然也少些。
    因此程序員要保持創造性的張力,利用願景和現狀之間的差距來產生創造的能量,不要因為情緒張力而放棄自己的願景。
    舉個例子來說。我要成為CTO,這是願景;而現狀是我只是一個程序員,那麼願景成為CTO和現狀是程序員之間便產生一種張力。而認為自己經驗不夠;CTO需要很強的溝通和管理能力,這些都是我不具備的;CTO需要很強的思維和邏輯判斷能力,這些我很難做到;這些便是一些負面的情緒張力。正確的做法是區分創造性張力和情緒張力,不要因為情緒張力而影響拉向我成為CTO這種創造性的張力。並且我們在成長的道路上持續保持這種創造性張力。
三是看清結構性衝突。     如果我們對自己說:我能夠創造我真正想要的生活,在每一方面,不論工作、家庭、人際關係、社區生活,以及其他更大的範圍。,注意自己內心對於這項宣示的反應,大部分程序員的心中有微弱的聲音在說:你在開玩笑嗎?你真的相信會如此嗎?那是不可能達到的。個人或工作方面或有可能,至於更大的範圍嘛。?,這些對自己能力限制的想法,便是在心中一種根深蒂固的成見。我們需要根除這些深蒂固的成見。
   多數人心中都有限制自己創造力的矛盾。其中較為常見的是,相信自己沒能力實現真正在乎的事情。另一種阻礙自己發展的矛盾,是認為自己不夠資格得到所想要的。我們應當時時警惕自己不要掉入這兩個陷阱之中,並且讓阻礙創造及實現願景的這股強大的、結構性的負面力量,在我們心靈、智慧的強光照射之下無所遁形。




上圖很形象的表示結構性的衝突。假想你向著自己的目標移動,有一根橡皮筋象徵創造性張力,把你拉向想要去的方向,但是也想像還有第二根橡皮筋,被無力感或不夠格的信念拉住。當第一根橡皮筋把你拉向目標,第二根橡皮筋把你拉回你不能(或不夠格)得到這個目標的潛在想法。這種系統就是結構性衝突,它是一個各方力量互相衝突的結構,同時把我們拉向和拉離所想要的。 因而,當我們愈是接近達成願景時,第二根橡皮筋把我們拉離願景的力量愈大。這個向後拉的力量可以許多方式呈現:比如我開始詢問自己是否真正想要成為CTO、感覺完​​成工作愈來愈困難、意外的障礙突然冒出來、周圍的人讓我感到失望。   那麼如何克服阻礙發展的結構性衝突的力量呢?   1、對於這種阻礙發展的結構性衝突的力量,軟弱的人採取的方式是消極放棄願景的方式。   2、不少管理者會使用操縱衝突的方式,比如經常聽到管理人員說如果我們的目標無法達成時,後果會如何的方式來激勵大家,人們一旦習於運用操縱衝突的方式,便會陷入捨本逐末的結構,相信只有透過連續的焦慮與害怕狀態才能使自己成功,其實顯然是不正確的。   3、很多成功人士是靠意志力。也就是全神貫注地去擊敗達成目標的過程中所有形式的抗拒力。但是這種方式也是有問題的,比如需要付出大量的時間和精力,很多成功人士事業成功,但是家庭並不成功。   4 還有一種方式是辨別出這些阻力,誠實的面對事實真相。比如對於相信自己沒能力實現真正在乎的事情和認為自己不夠資格得到所想要這兩種阻力,首先,我們承認它是事實,他是我的現狀,然後將克服這兩種不利的信念設置為自己的願景,通過創造性的張力去完成。    對於程序員來說,在實現自己的願景過程中會遇到很多的阻力,除了上面的兩種信念之外,還有很多其他的阻力。我們需要辨別出這些阻力,並誠實的面對這些阻力,然後利用創造性的張力去克服它們。總結:程序員需要建立個人願景,然後認清自己的現狀,始終保持創造性的張力,通過創造性的張力克服阻礙自己發展的結構性衝突的阻力,等我們完成願景之後,就可以重新建立新的願景。如果從第五項修煉:系統思考的角度來看,程序員自我超越是一個增強環,如下圖所示。







2012年5月17日 星期四

撰寫 object-c 程式語言規則

一.成員變數的命名

1.開頭小寫
int *alert

2.多個單字結合,第一個單字以外開頭必須大寫
int *alertView

3.專用變數全大寫(如公司規定之變數名稱)
NSString *IP
NSString *MID

二.成員變數權限必需寫

三.成員變數存取方式必須寫
assign
retain
copy
readonly
readwrite

四.成員函式

1.開頭小寫

2.第一個參數標頭為大寫
- (void)addPicture:(UIImage *)image

3.第二參數之後都為小寫

4.參數名稱為小寫

五.區域變數命名

1.開頭小寫

2.變數名稱後加"_"

六.Interface protocol寫在另一檔案上


七.Delegate protocol寫在要委託給人的檔案上


八.dealloc函式必寫