为什么要旅游

过去的想法

  • 旅游可以放松心情
  • 旅游可以吃好吃的
  • 旅游可以有好玩的

现在的想法

  • 旅游为什么可以放松心情呢?因为你到外面见到的每个人每件事每个风景每件事物,都可以增加你内心的淡定和从容,对生活中遇到问题的淡定,对生活遇到问题的从容,是内心平静。
  • 当然吃的道理同上
  • 当然玩的道理同上

如果我是个有钱人

99%的人都会想做个有钱人,因为钱,可以让我们拥有的更多,而且可以不用上班,不用工作,想去哪去哪,想找什么样的女朋友男朋友都可以,只要有钱,没有做不到,只有想不到。

如果我有花不完的钱,我会做什么?

有这么一天,我有了一亿美元「或者一辈子都花不完的钱,不管怎么花」,比王健林的小目标还前进了一大步,我会怎么做,我给自己列一个清单,等实现的那天执行这个清单:

  1. 辞掉现在的工作
  2. 把家里欠的钱都还掉
  3. 给家里每个人都做个全身体检
  4. 给家里每个人每份100的万能保险
  5. 给自己买一间别墅,在高档小区买一套房子
  6. 给自己买辆低调奢华的车子
  7. 去欧洲环游一次,去美国走一下,去巴西走一下,去澳大利亚走一下,把旅行社的景点都走一下
  8. 移民去澳大利亚或者其他国家
  9. 让孩子去读名校,大学让他出国「如果移民了应该就在国外读了」
  10. 买很多很多的高科技产品
  11. 想来想去,好像已经被限制了想象力了。

我想亿万富翁的一生会怎么过?

  1. 我想到的是他如果得了大病,需要换一个肝,或者需要长期治疗,一天需要1万,需要30年,30*365=10950万,就是一个亿多就可以活30年。没有的人,马上死掉。「我想,要花1万1天的病,估计身体也好不到哪去,虽然活着,但是身体越来越差,吃的不能乱吃,不能去远行,或者去了远行,又不能动」
  2. 如果一个亿万富翁,还有一个强壮的体魄,估计是富二代之类的有可能,他们的日子应该很好,很舒服。且不管他们的生活会怎样,起码,他们有身体,有钱,ok了,想去哪就去哪,应该很多人会想做这种人,而不是做成功的企业家,成功的已经病的奄奄一息的企业家,他们肯定不会想成为老人家,必须是年轻,有钱去享受,有身体的本钱去花这些钱。
  3. 我想亿万富翁可能不会取老婆,或者嫁老公,因为他们的欲望很大,择偶的要求很高,那可能一辈子都是一个人,有可能结了婚也离了,他们对谁都不信任,因为害怕身边的人都是为了钱靠近他们。他们的幸福和安全指数都是0。他们内心十分的空虚寂寞,不断需要外界的刺激。

总结

  1. 我就从上面的思考总结出来:身体最重要、幸福最重要

我应该做的

  1. 努力做个中产阶级,不做高产阶级
  2. 努力赚钱,生活够用就好
  3. 努力善待身边的亲人,不离不弃的亲人

iOS苹果商店APP上架小技巧

关于转让app

故事:
有一次公司开发一个项目,我用了旧的苹果商店的账号上传了该app,但是到项目收尾的时候,发现要上架的另一个苹果的账号,这时候app还没上架,只是上传了,这个时候怎么上传到新的账号了。


尝试1:我在新的苹果账号下,创建了应用的id,配置了推送证书,还有开发的证书,都配置到我自己电脑,然后就是打包,上传,一切都很顺利,然后就是提交审核,但是发现审核被拒绝,告知,已经有类似代码的app上传了,就是提示我在新账号下上传的是间谍app,俗称盗版app,这时候你会怎么做。


尝试2:既然两个账号都是我的,但是的确我也不是盗版的,那你就申诉吧,好,我就去申诉,但是申诉没有用。


尝试3:于是我想到了转让,但是发现转让有个前提必须是通过审核的应用,好吧,于是我在旧的苹果账号,提交审核,ok,排序拒绝的一切因素,app审核通过了,那现在就是转让app了,接着就是app转染的步骤,删除旧账号下的所有测试版本,满足一切条件,点击转让,ok,大功告成,对已经转让的app,需要重新用新的推送证书上传新版,推送才有效。


照葫芦画瓢:技巧通过第一次成功的经验,我也掌握了这个转让的流程,后来又遇到同样的问题,也尝试上面的步骤,但是又有新问题出现,问题是卡在了用旧的账号上架app的时候,苹果告知你的应用是间谍应用,但是我是在旧的账号下上传的,应该是最先上传的,虽然我也在新的苹果账号下上传了,但是我也删除了,虽然有删除记录在,这个时候,真的是万般无语了,我尝试了很多次,不断给苹果审核,苹果每次都提示为间谍应用,刚开始还以为他们是不是换了审核规则,或者来了一个新的实习生,把我这个给卡住了,但尝试了7、8次之后,我决定申诉,申诉的内容大概如下:
”xxx app确实没有在应用商店上架,请重新审核!谢谢!”

  • 大概的内容和上面差不多,你们可以再粉饰一下,通过这样的申诉后,奏效了,苹果马上给我审核通过了,真是千辛万苦了,我猜平时给我检测间谍app都是机器干的,机器干的漏洞还是有的,这个时候通过发申诉,就是人工审核了,他们就会看实际情况了。这个给我长记性了。

ViewStyle示例包含的swift技术点

源代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import Foundation
import UIKit

// 结构体ViewStyle
struct ViewStyle<T> {
// style闭包,参数T
// let style:(UIButton) -> Void
let style:(T) -> Void
}

// --------------------------------------------------------------
// 结构体filled
// ?疑问,不明白结构体下面还能用$0和大括号一起使用,这里有用到闭包吗?还是说下面用到了属性style,但是不像,没有这样用法
// 解答:是ViewStyle<UIButton>.init( style = {. xxxx } )的简写
let filled = ViewStyle<UIButton> {
// $0是传入的第一个参数,这里默认推导出的第一个参数的类型是UIButton
$0.setTitleColor(.white, for: .normal)
$0.backgroundColor = .red
}

// 结构体rounded
let rounded = ViewStyle<UIButton> {
$0.layer.cornerRadius = 4.0
}

// ViewStyle的扩展
// 代码内调用了style(T),调用之后会发生什么事情吗?
extension ViewStyle {
// 传入结构体,返回结构体
func compose(with style:ViewStyle<T>) -> ViewStyle<T> {
return ViewStyle<T> {
// 先调用自己的style,比如这是UIButton的圆角
self.style($0)
// 后调用传入结构体的style,比如设置UIButton的颜色
style.style($0)
}
}
}

let roundedAndFilled = rounded.compose(with: filled)

// --------------------------------------------------------------
// ViewStyle的扩展,针对T是UIButton类型
extension ViewStyle where T:UIButton {
// 结构体属性filled,filled的类型也是结构体
static var filled:ViewStyle<UIButton> {
return ViewStyle<UIButton> {
$0.setTitleColor(.white, for: .normal)
$0.backgroundColor = .red
}
}

// 结构体属性rounded
static var rounded:ViewStyle<UIButton> {
return ViewStyle<UIButton> {
$0.layer.cornerRadius = 4.0
}
}

// 结构体属性roundedAndFilled
static var roundedAndFilled:ViewStyle<UIButton> {
return rounded.compose(with: filled)
}
}

// --------------------------------------------------------------
// 传入对象和结构体作为参数
func style<T>(_ object:T,with style:ViewStyle<T>) {
style.style(object)
}

// --------------------------------------------------------------
// 协议Stylable
protocol Stylable {
init()
}

// UIView的扩展遵守Stylable协议
// 对于扩展继承系统api,不需要实现什么,直接{}
extension UIView:Stylable {}

// Stylable扩展
extension Stylable {
init(style:ViewStyle<Self>) {
self.init()
apply(style)
}

func apply(_ style:ViewStyle<Self>) {
style.style(self)
}
}

// --------------------------------------------------------------
// 直接调用协议方法init(style:ViewStyle<Self>){}
let button = UIButton(style: .roundedAndFilled)
button.setTitle("My Button", for: .normal)
button.sizeToFit()