What Is Software Design?

程式設計不是 “building software”,而是 “designing software”。

Is Design Dead?

軟體系統的設計是演進來的,不能一步到位,而是要藉由憑繁與使用者互動得到的回饋來修改系統設計。

Programming is Gardening, not Engineering

與其把程式設計比喻成蓋房子,實際上更像是園藝。

Orthogonality and the DRY Principle

所有程式設計活動其實都是維護,因為絕大部分的時間都在改code,寫一點改一點。即使是新專案,也很快需要回頭作修改。

2013年9月27日 星期五

git commit 排除掉不需要的資料

在git 裡面需要commit 最笨的方法就是 git add . 的指令會把所有東西都commit 上去

有些檔案我們不希望加入版本控制的追蹤,例如說Database的schema或是一些log檔,這時候你可以將他們加入 .gitignore 中來讓 Git 忽略他們,使用編輯器來打開你的 .gitignore 檔案。

利用這樣的方法  再搭配 git commit -a 來做commit的動作可以避免資料雜亂與龐大~!


2013年9月25日 星期三

git 自己建立一個新的 Repository

step1.
到你要存取的資料夾下


git init

這時你就會看到 Git 告訴你說已經在這邊建立好一個新的 Git Repository。


Clone(複製)別人的 Repository



將他複製起來後到你的目錄下輸入 git clone
$ https://github.com/JOHNBASS/Sports-stars.git
如此便會將這個 Git Repository下載到我們的資料夾, git clone 預設會將下載的 git 存成一樣檔名的資料夾,如果你要更改成別的名稱的話只需要在網址後面加上你想要更改的名稱即可,像是:
$ https://github.com/JOHNBASS/Sports-stars.git test1
這樣子下載下來的 Repository 的名稱就會從原本的 Sports-stars 變成 test1 了。

參考資料:http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/

Git alias 的功能 縮短指令

Git 也有提供 alias 的功能

例如你可以將 git status 縮寫為 git stgit checkout 縮寫為 git co 等,你只要這樣設定

git config --global alias.st status

這樣一來只要打 git st 就等同於打 git status 了。

Git 預設輸出是沒有顏色的,我們可以讓他在輸出時加上顏色讓我們更容易閱讀:


git config --global color.ui true

參考文獻:http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/

2013年9月11日 星期三

UITextField 設定 游標的 顏色 set color

step1.

宣告一個 UITextField *bmiTextField;

加入


 bmiTextField.delegate = self;



step2.

設定事件

- (void)textFieldDidEndEditing:(UITextField *)textField
{

      //確定text裡面有值
        if(textField.layer.borderWidth)
        {
            textField.layer.borderWidth = 0;
            textField.backgroundColor = [UIUtility greenColor];
            textField.textColor = [UIColor whiteColor];
           //設定游標顏色
            [[textField valueForKey:@"textInputTraits"] setValue:[UIColor whiteColor] forKey:@"insertionPointColor"];
        }

       
    }
//確定text裡面沒有值
    else
    {
        [[textField valueForKey:@"textInputTraits"] setValue:[UIColor blueColor] forKey:@"insertionPointColor"];
        textField.layer.borderWidth = 0.5;
        textField.backgroundColor = [UIColor whiteColor];
        textField.textColor = [UIColor blackColor];
    }
}

2013年9月5日 星期四

UITextField 後面加入小x 清除 輸入 資料 / 清除的事件

step1.


 UITextField *endTextField;


endTextField[[UITextField alloc] initWithFrame:CGRectMake(10, 50, 300, 30)];

    [contentBaseView addSubview:endTextField];

endTextField.delegate = self;
    
endTextField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    
//加入後面的小xx
endTextField.clearButtonMode = UITextFieldViewModeWhileEditing;

step2.

//這是textfield 清除的事件

-(BOOL)textFieldShouldClear:(UITextField *)textField
{
    //NSLog(@"check in textFieldShouldClear");
    textField.text = @"";
    self.period.endDate = nil;
    return YES;
}

NSUserDefaults Save/Read/Clear 儲存/讀取/清除

step1.
// 定義名稱 define key
#define kIsActive @"isActive"
#define kUserName @"userName"
step2.
// 讀取資料
-(void)loadInfo {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSLog(@"Name : %@", [defaults stringForKey:kUserName]);
NSLog(@"isActive : %@", ([defaults boolForKey:kIsActive] ? @"YES" : @"NO"));
}
step3. 
// 儲存資料
-(void)saveInfo {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *userName = @"Hank";
BOOL isActive = YES;
[defaults setObject:userName forKey:kUserName];
[defaults setBool:isActive forKey:kIsActive];
}
step4. 
// 清除資料
-(void)clearInfo {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:kUserName];
[defaults removeObjectForKey:kIsActive];
}
 
step5. 主程式
// 執行
- (void)viewDidLoad
{
[super viewDidLoad];
[self saveInfo];
[self loadInfo];
[self clearInfo];
[self loadInfo];
}