最近遇见的几个坑SQLite,ViewController,SSH

最近遇见的几个坑SQLite,ViewController,SSH

最近略忙,不单单是项目,也包括些自己的代码and忙着看一些书,多看看书总是好的,多少会有一些收获。记录下最近遇见的几个坑,防止以后有童鞋也进去了~起码能爬起来。

SQLite

做游戏的时候自己有整理过一个关于excel转sqlite文件的脚本,在游戏领域这个还是很重要的,就是对配置表做一个转换。有个字段叫code,它的值是类似001,002…999 这样子的string在excel里肯定要设置成文本格式,那么问题来了,明明定义了code的类型是string,但是导出后SQLite却把它当做数字,剔除为1, 2…999,这个不是我们想要的,这个时候记得把类型string改为text, 那么世界一切将变得美好。

UIViewController

在iOS开发的时候经常会使用导航栏将ViewController压栈

1
2
[self.navigationController pushViewController:vc animated:YES];

假如有多个ViewController跳转压栈,如果我要回到RootViewController有对应的方法,那假设要回到中间的某一个呢,ViewController1 –> ViewController2 –> ViewController3 –> ViewController4
看如下代码:

1
2
3
4
5
for (UIViewController *controller in self.navigationController.viewControllers) {
if ([controller isKindOfClass:[ViewController2 class]]) {
[self.navigationController popToViewController:controller animated:YES];

相当于遍历在栈中的ViewController,并用运行时方法判定是不是ViewController2,如果是就pop到这个ViewController

SSH

生成公钥密钥的方法:

1
ssh-keygen -t rsa

生成出两个文件xx.key, xx.key.pub

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
barton@bartondeMacBook-Pro:~/Desktop$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/barton/.ssh/id_rsa): barton.key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in barton.key.
Your public key has been saved in barton.key.pub.
The key fingerprint is:
SHA256:4QuQ7/YhFVVhcPhez59ox9nwtoxmvcE1oYZYwSQ3glg barton@bartondeMacBook-Pro.local
The key's randomart image is:
+---[RSA 2048]----+
| oE.o=O=. |
| o . .=+o |
| o o o . |
| o . oo o o .|
| o S. o + +.|
| . o . o o =|
| + o +==|
| . o . =o**|
| . +..=o|
+----[SHA256]-----+

最终生成出两个文件:公钥:barton.key.pub 密钥:barton.key
密钥自己保存,公钥上传server的.ssh里~OK以后就可以直接ssh ip -i xx.key 直接登录server了,不用每次输入密码。

1
2
3
公钥是:barton.key.pub,不要把秘钥给别人
公钥是:barton.key.pub,不要把秘钥给别人
公钥是:barton.key.pub,不要把秘钥给别人

重要的事情说三遍~!

下面是百度出来的一段ssh生成证书的脚本,希望对大家有用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env bash
echo "Generating RSA key pair ..."
echo "1024 RSA key: private_key.pem"
openssl genrsa -out private_key.pem 1024
echo "create certification require file: rsaCertReq.csr"
openssl req -new -key private_key.pem -out rsaCertReq.csr
echo "create certification using x509: rsaCert.crt"
openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt
echo "create public_key.der For IOS"
openssl x509 -outform der -in rsaCert.crt -out public_key.der
echo "create private_key.p12 For IOS. Please remember your password. The password will be used in iOS."
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt
echo "create rsa_public_key.pem For Java"
openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout
echo "create pkcs8_private_key.pem For Java"
openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
echo "finished."

坑先填到这,以后有遇到再继续填上~!