1
ssh-keygen -t rsa -C "YourMail@github.com" -f ~/.ssh/github_rsa

添加到私钥列表

1
2
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/github_rsa

查看私钥列表

1
2
3
4
5
# 可以通过 ssh-add -l 来确私钥列表
ssh-add -l

# 可以通过 ssh-add -D 来清空私钥列表
ssh-add -D

添加配置

1
2
cd ~/.ssh
touch config

添加配置内容

1
2
3
4
Host github.com
HostName github.com
PreferredAuthentications publickey #认证类型为私钥
IdentityFile ~/.ssh/github_rsa

添加github_rsa.pub内容到github的SSH KEY列表

1
cat ~/.ssh/github_rsa.pub

测试

1
2
3
4
⇒  ssh -T git@github.com

# 会提示, 说明已经配置成功
Hi welsonla! You've successfully authenticated, but GitHub does not provide shell access.

参考资料

https://my.oschina.net/stefanzhlg/blog/529403
http://riny.net/2014/git-ssh-key/

Code Snippets

去除空白TableViewCell的分割线
1
listTable.tableFooterView = [UIView new];
让header与cell一起滚动,不在顶部悬停
1
设置为UITableViewStyleGrouped
阅读全文 »

一些常用的命令备忘

显示隐藏文件

1
defaults write com.apple.finder AppleShowAllFiles -bool true;killall Finder

不显示隐藏文件

1
defaults write com.apple.finder AppleShowAllFiles -bool false;killall Finder

10.11后开启第三方硬盘的Trim

1
sudo trimforce enable

释放不活跃的内存

1
sudo purge

允许任何来源的软件进行安装

1
sudo spctl --master-disable

NSString to String

1
2
3
4
5
#ObjC
NSString *notice

#Swift
var notice:String?

NSArray,NSMutableArray to Array

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#1. 声明
#ObjC
NSMutableArray *listArray = [NSMutableArray array];

#Swift
var listArray:[String] = Array() //必须带参数类型
var listArray:[AnyObject] = Array()

#2. 增加元素
#ObjC
[listArray addObject:@"foo"];

#Swift
listArray.append("foo")

NSRange->Range

1
2
3
4
5
#ObjC
NSRange range = NSMakeRange(0,10)

#Swift
Range(start: 0, end: 10)

NSDictionary,NSmutableDictionary to Dictionary

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ObjC
NSMutableDictionary *score = [NSMutableDictionary dictionary];

#Swift
var score0:[String:String]?
var score1 = [String:String]()
var score2 = Dictionary<String,String>()
var score3 = [:]

#ObjC
NSDictionary *person = @{@"name":@"Single Dog",@"Skill":@"Swift"};
person[@“age”] = @“28”;

#Swift
var person = ["name":"Single Dog","Skill":"Swift"]
person["age"] = "28"

Random

1
2
3
4
5
6
#ObjC
arc4random%255

#Swift
arc4random_uniform(255)
random() % 255

Selector

感觉Selector的方式不如ObjC那样有方法提示,容易写错,效率反而不如之前

1
2
3
4
5
#ObjC
SEL callback = @selector(uploadCallback:)

#Swift
Selector("uploadCallback:")

id to AnyObject

1
2
3
4
5
6
7
8
9
10
11
12
13
#ObjC
id sender

#Swift
var sender:Anyobject?
```
### 三元运算缩写
```swift
#ObjC
a ? : b

#Swift
a ?? b

枚举

1
2
3
4
5
6
7
8
9
10
11
#ObjC
typedef NS_ENUM(NSInteger,LocationState){
LocationStateStart,
LocationStateFinish,
LocationStateFail
};

#Swift
enum LocationState {
case LocationStart, LocationFinish, LocationFail
}

Todo List

  1. Block to Closure
  2. DateFormatter
  3. nil value check
    ……

遇到继续添加,未完待续……

Octopress的痛点

受不了_deploy文件夹的折磨,以及AutoGenerate Disable这错误导致生成问题,rake deploy靠运气成功,今天将blog迁移到了hexo

Hexo优点

  1. 更简洁的语法

    1
    2
    3
    4
    5
    hexo new "title"
    hexo new page
    hexo g #生成
    hexo d #部署
    hexo s #运行
  2. 更快的生成速度

  3. 直观的部署结果

安装

  1. 安装Node

    参考node官方 https://nodejs.org

  1. 安装hexo以及用到的东西

    1
    npm install -g hexo-cli
  2. 创建Blog

    1
    2
    3
    4
    5
    6
    hexo init blog
    cd blog
    npm install

    #安装Server
    npm install hexo-server --save
  3. 创建文章

    1
    2
    3
    4
    hexo new "first blog"

    #创建独立页面
    hexo new page "about"
  4. 预备部署

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #添加github部署支持
    npm install hexo-deployer-git --save


    # 修改_config.yml
    deploy:
    type: git #不要再使用github作为type
    repo: git@github.com:<yourname>/<yourname>.github.io.git
    branch: master
  5. 安装主题,推荐Next, 有详细的安装文档

    安装参考

    http://theme-next.iissnan.com/five-minutes-setup.html

    详细的配置

    https://github.com/iissnan/hexo-theme-next/wiki/主题配置参考

  6. 添加RSS

    1
    npm install hexo-generator-feed --save
  7. 上传图片

    1
    2
    放到./source/uploads文件夹下,代码中使用
    ![](/uploads/xxx.png)

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

项目地址: https://github.com/Mantle/Mantle

今年上半年在两个项目中都将Model层替换为Mantle,大大减少了开发中实体转换的时间;选择mantle的初衷是因为看到了大神的blog,里面的应用场景也是在开发中我们经常遇到的情况:
iWangKe.me - 为什么唱吧iOS 6.0选择了Mantle

对比一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# http://bubbler.labs.douban.com/j/user/wheats

{
"homepage": "http://www.douban.com/people/wheats",
"icon": "http://img3.douban.com/icon/u46721592-5.jpg",
"userid": "46721592",
"r": 0,
"stats": {
"board": 0,
"bub": 0,
"collect": 0
},
"title": "welsonla",
"uid": "wheats"
}
阅读全文 »

单元测试可以让我们快速检测项目接口与一些功能的可用性,这次编写了大量的单元测试,让我对之前的一些疑惑有了一个透彻的理解

  • 单元测试中,可以直接import我们项目中的类
  • 想要执行的方法,必须使用test开头,testLogin会被执行,userLogin这样的方法名不会被执行
  • 单元测试没有头文件,一些变量声明,写在interface里面
  • 对于一些变量的初始化,放到setup里面进行
阅读全文 »

(摘录来自: persie. “Ruby on Rails 教程”)

short key

1
2
3
g   generate
d destory
s server

脚手架以及一些常用的变量类型

1
rails g scaffold user name:string age:int email:string description:text cash:float

删除脚手架生成的代码

1
rails d scaffold Users

生成Controller与action

1
rails g controller TodoList list delete index

删除Controller

1
rails d controller TodoList list delete index

生成Model

1
rails g model User name:string email:string

删除Model

1
rails d model User name:string email:string

添加字段到表

1
“rails generate migration add_password_digest_to_users password_digest:string”

根据Model生成数据库表

1
rake db:migrate

生活

今年完成了几件大事:
三月,订婚
五月,买房,成为了房奴
八月,拍婚纱照
九月,结婚

今年生活上发生了很大的变化,与小关关组建了新的家庭,也让我肩负起了一个男人的责任,为了我们新的生活而奋斗。希望我能为家人和老婆创造更好的生活条件。

感谢小关同志的陪伴与理解,七年长跑,我们终于走到了一起

工作

今年工作发生了变动,离开了工作三年的老东家,加入了新公司,在各方面都对自己的提升非常大,技术上有了比较明显的提升,由于产品是直接面对用户的,在各方面的细节的要求也比较高,尤其是用户体验方面。

跨部门沟通上,由于团队非常大,涉及的业务部门也比较多,这一年有了不少机会与别的部门进行工作上的沟通协作,与人沟通上,也让我不再对人际交往有恐惧感。

工作方式上,拆分复杂业务,从最小的点逐步分析整个复杂的功能系统,在功能的实现上有了更明确的思路,对时间节点也有了更好的控制。抽离与重用,减少重复代码,精简了项目代码,提高了可扩展性。

通过龙哥的处理问题的方式跟思路,也让我积累到了很多宝贵的编程经验:

  • 清晰的调试思路与正确的分析,在一些棘手的问题上,不再是猜和逃避,而要找到出错的地方进行修复;
  • 对公共资源的全局封装,自定义的Color使用Category方法封装,比用宏定义更优雅;
  • 对业务的不同状态进行枚举化,使用起来更可读
  • 对Notification的name常量化,更易查找
  • 接口都继承自同一基类,公共的处理由基类完成,在较大变动的情况下,只需要在基类做出理,就能兼容新需求
  • 特定符号写成常量,如接口返回值,在接口变动时只需要修改下常量即可

推荐的书

  • 《我编程,我快乐》
  • 《大教堂与集市》
  • 《重来》

bye, 2014

###背景
从3月份换了新工作,就一直在使用自己的电脑,每天背着上下班,后来自己又买了显示器和新的机械键盘。想想这时候如果上Mac mini的话,外设都已经齐全了。
一直在等9月份的Mini新版,无奈对新版确实有些失望,一直摇摆不定,恰巧双十一的前一天,发现京东的MD387已经降价到了3588,果断决定入手了。

阅读全文 »

最近在iOS7的系统上使用Instrument想检查内存的leaks,启动时候总是提示失败,花了些时间,解决了这个问题,做下笔记。

阅读全文 »

本子是MC700,已经陪伴我coding了三年,中间升级了内存,硬盘加了SSD,但是自从电池坏掉以后,我拆掉了电池,接电使用,发现越来越卡,经历了三个月左右的煎熬,我的mac终于又重新焕发了青春,说说遇到的问题

阅读全文 »

####作品

  1. 对晴天进行了两次更新;
  2. 和小伙伴们一起做了一个密码管理的软件passbox
  3. 写了一个对SQLCipher加密数据库转换的Mac程序

####读书

  1. 《打造Facebook》
  2. 《MacTack人生元编程》
  3. 《写给程序员的Web设计书》
  4. 《写给大家看的Web设计书》
  5. 《淘宝技术这十年》
  6. 《苹果开发之Cocoa编程》
  7. 《代码整洁之道》

####健康
12年有一阵子住院,13年特别注意锻炼身体,9月份每天和几个朋友去紫竹院跑步运动。强度不是很大,天气渐冷,入冬,雾霾跟严寒,使运动停止。

13年身体并没有什么大碍,感谢

####技术
感觉自己这一年的技术,进步不大,惭愧。在用户体验跟交互方面,倒是有了一些自己的心得。对Mac的编程有了越来越浓厚的兴趣。

####济南
从十月份,陆续跟女朋友在济南看了几套房子。主要参考的房子是90平米以上可以落户的房子,现在我女人已经开始考虑学区的问题了,经十路沿线现在也越来越多的高楼在崛起,房价也在逐渐的攀高,房价是每个年轻人心里的痛。

####2014

  1. 多读书
  2. 更多的iOS上的作品
  3. 更多的Mac应用
  4. 深入Object-c,并继续强化Ruby on Rails
  5. 锻炼身体
  6. 从AppStore赚多一点钱
  7. 与几个朋友的小工作室,希望我们能成为TapBot
  8. 换新工作
  9. 买房结婚(房子已买)