0%

问题描述

今天用SourceTree克隆Git库,报如下错误:
error: RPC failed; curl 56 SSLRead() return error -36
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

问题解决方案

git config http.postBuffer 24288000
brew install git –with-brewed-curl –with-brewed-openssl

用python实现的微信红包算法,有些地方还是没有搞明白,如果有人知道还请指教

算法精要

主要在于随机数的生成

1
2
3
4
#这一句是重点,不知道为什么
#如果比2.0小则前面的红包是小,后面大
#如果比2.0大则前面是大红包,后面是小红包
max = remainAmount / remainSize * 2.0

源代码

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
#! encoding:utf-8

import random

import math


def getMoney(remainAmount,remainSize):
if remainSize == 1:
money = round(remainAmount * 100) / 100
else:
min = 0.01
#这一句是重点,不知道为什么
#如果比2.0小则前面的红包是小,后面大
#如果比2.0大则前面是大红包,后面是小红包
max = remainAmount / remainSize * 2.0
#print remainAmount,remainSize,max

money = random.random() * max
money = money <= min and min or money
money = math.floor(money * 100) / 100;

return money

#模拟发放
def simulateRedPacket(amount,num):
remainSize = num
remainAmount = amount

#初始化数组
results = [0 for x in xrange(0,num)]

#模拟发红包
for x in xrange(0,num):
money = getMoney(remainAmount,remainSize)
remainSize -= 1
remainAmount -= money
results[x] = money


#计算发放总额
sum = 0
for x in results:
sum += x

if amount - sum > 0.01:
#发放结果
pass
print results
print ", ".join([" = ".join(["金额",str(amount)])," = ".join(["数量",str(num)])," = ".join(["已发放",str(sum)])," = ".join(["差额",str(amount - sum)])])

if __name__ == '__main__':
for x in xrange(1,2000):
#金额
amount = round(random.random() * 100) * 1000 / 100
#红包数量
num = random.randint(1,100)

simulateRedPacket(amount,num)

看到有人用算法实现了在一个栈中实现最小值,且复杂度保持在O(1)的问题,用Scala实现看看是不是合适.

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
import scala.collection.mutable.ArrayBuffer

class MinStack {
private val buffer = new ArrayBuffer[Int]()
private val sort = new ArrayBuffer[Int]()

def push(value: Int) :Unit = {
buffer.append(value)
val min = if(sort.length > 0) minValue() else 99999
if(value < min){
sort.append(buffer.length -1)
}
}

def pop() :Int = {
val pos = buffer.length - 1
if(pos == sort.last){
sort.remove(sort.length - 1)
}
buffer.remove(pos)
}

def minValue() :Int = {
return if (sort.length > 0) buffer(sort.last) else 0
}

def description() : Unit = {
println(buffer.mkString("(",",",")"))
println(sort.mkString("(",",",")"))
}
}

今天读到ZeeTea创始人彭萦分享的一些关于创业中一些问题的分享,看了之后摘录一些内容,内容源自36kr的这10个关于品牌的问题,你一开口就已经错了

一句话说清楚你要做什么

在讲自己公司要做什么的时候,不要提任何别人听不懂的词,如大数据,平台,共享经济,云,系统,闭环,算法,构架,O2O…

列一些经典的公司的主题:

我们是Airbnb,我们能让你的陌生人家租个房间
你必须一秒内把产品的点告诉顾客,就像苹果的每个产品每次总是有一个新的aha monents一样.

创业只需要销售,而不是市场推广

你不应该如开一个发布会,你不应该花钱买个自媒体的文章的末尾加个广告,你不应该搞广告展位,你不应该刷榜单,你不应该参加任何行业展会和创投圈会议.

你必须一个一个得到你的用户和顾客,自己亲自去卖,去帮顾客体验你的产品,问他们体验如何,评价如何,你要自己找到第一批种子用户.让一百个人爱你,比一万人觉得你还行重要的多.因为有一百人爱你就有可能一万人爱你,如果一万人觉得你还行,那他们爱上你很难.

你要得到第一批种子顾客的爱,有了稳定的留存率后,再做市场宣传,否则宣传无意义

增长率=新增率-流失率.很多人一想到增长率就只想到新增率,却忘了流失率.其实在很多时候,提高5%的留存率可能比提高5%的新增率要简单的多,成本也低的多.

怎样建立自己的品牌

要不要做品牌

有溢价能力的叫品牌,没有溢价能力的可以叫互联网营销,可以叫认知,可以叫市场推广,反正不能叫品牌.
Michael Treacy 和Fred Wiersema 在哈佛商业评论上曾经说过,占领市场只有三种形式:

最好的价格(best price)
最好的产品(best product)
最好的整体解决方案(best overall solution)
如果你的公司定位在最好的价格,那么运营更重要,如沃尔玛,小米,Amazon.如果你的公司定位在最好的产品,那么最重要的是研发和技术,如苹果.如果你的公司定位于整体解决方案,在意的是顾客的互动和满意度,奢侈品是这样,高档酒店等服务行业是这样,如星巴客是这样.

对于那些提供最好的整体解决方案的公司,品牌极其重要.对于提供最好的产品的公司来说,品牌也很重要.但如果是提供最好的价格的公司,品牌真的不是那么重要,它永远都不是你最重要的三件事之一.

别想着做别人那样的品牌

一个公司的风格,就是CEO的风格

基因没有办法改变,一个公司要有很明白的品牌策略,CEO首先得想明白自己是一个怎么样的人.要做一个Airbnb那样的品牌,CEO就必须是一个touchly-feely,非常感性,非常有爱的人.可是如果你不是这样风格的人,为什么要一定要做出那样一个品牌呢?

关于招人

你是招一个牛人帮你还是你自己先了解要做的事情,再请人过来帮你?

永远记得你把自己最擅长的工作分配给别人,不擅长的工作自己亲自做,等你发解这个工作了再找人帮你.切记!!!!

与运算:&

两者都为1为1,否则为0
1&1=1, 1&0=0, 0&1=0, 0&0=0

或运算:|

两者都为0为0,否则为1
1|1 = 1, 1|0 = 1, 0|1 = 1, 0|0 = 0

非运算:~

1取0,0取1
~1 = 0, ~0 = 1
~(10001) = 01110

异或运算: ^

两者相等为0,不等为1
1^1=0, 1^0=1, 0^1=1, 0^0=0

创建一个UIView

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
-(id)init {
if (self = [super init]) {

UILabel * label = [UILabel new];
label.tag = 100;
[self addSubview:label];

NSLog(@"init");

[self performSelector:@selector(setNeedsUpdateConstraints) withObject:nil afterDelay:5.0f];

}
return self;
}

-(id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
NSLog(@"initWithFrame");
}
return self;
}


- (void)willMoveToSuperview:(nullable UIView *)newSuperview {
NSLog(@"willMoveToSuperview");


}
- (void)didMoveToSuperview {
NSLog(@"didMoveToSuperview%@",NSStringFromCGRect(self.frame));
}
- (void)willMoveToWindow:(nullable UIWindow *)newWindow {
NSLog(@"willMoveToWindow");
}
- (void)didMoveToWindow {
NSLog(@"didMoveToWindow%@",NSStringFromCGRect(self.frame));
}

-(void)updateConstraints {
[super updateConstraints];
NSLog(@"updateConstraints%@",NSStringFromCGRect(self.frame));

UILabel * label = [self viewWithTag:100];
[label makeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(self);
}];
}

-(void)layoutSubviews {
[super layoutSubviews];
NSLog(@"layoutSubviews%@",NSStringFromCGRect(self.frame));


}

-(void)drawRect:(CGRect)rect {
[super drawRect:rect];
NSLog(@"drawRect%@",NSStringFromCGRect(rect));

}
将此View加入到UIViewController
STPStartButton * btn = [STPStartButton new];
[self.view addSubview:btn];
[btn makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.view);
make.centerY.equalTo(self.view).offset(100.0f);
}];

-(void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
NSLog(@"viewWillLayoutSubviews");
}

-(void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSLog(@"viewDidLayoutSubviews");
}

-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"viewWillAppear");
}

-(void)updateViewConstraints {
[super updateViewConstraints];
NSLog(@"updateViewConstraints");

}

打印周期日志如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2016-10-08 21:33:32.378 Stuep[12384:5705814] initWithFrame
2016-10-08 21:33:32.379 Stuep[12384:5705814] init
2016-10-08 21:33:32.379 Stuep[12384:5705814] willMoveToSuperview
2016-10-08 21:33:32.379 Stuep[12384:5705814] didMoveToSuperview{{0, 0}, {0, 0}}
2016-10-08 21:33:32.387 Stuep[12384:5705814] viewWillAppear
2016-10-08 21:33:32.387 Stuep[12384:5705814] willMoveToWindow
2016-10-08 21:33:32.388 Stuep[12384:5705814] didMoveToWindow{{0, 0}, {0, 0}}
2016-10-08 21:33:32.401 Stuep[12384:5705814] updateConstraints{{0, 0}, {0, 0}}
2016-10-08 21:33:32.404 Stuep[12384:5705814] updateViewConstraints
2016-10-08 21:33:32.405 Stuep[12384:5705814] viewWillLayoutSubviews
2016-10-08 21:33:32.406 Stuep[12384:5705814] viewDidLayoutSubviews
2016-10-08 21:33:32.407 Stuep[12384:5705814] layoutSubviews{{172.5, 416.5}, {30, 34}}
2016-10-08 21:33:32.408 Stuep[12384:5705814] viewWillLayoutSubviews
2016-10-08 21:33:32.410 Stuep[12384:5705814] viewDidLayoutSubviews
2016-10-08 21:33:32.410 Stuep[12384:5705814] drawRect{{0, 0}, {30, 34}}
2016-10-08 21:33:37.380 Stuep[12384:5705814] viewWillLayoutSubviews
2016-10-08 21:33:37.381 Stuep[12384:5705814] updateConstraints{{172.5, 416.5}, {30, 34}}
2016-10-08 21:33:37.382 Stuep[12384:5705814] viewDidLayoutSubviews

最后三行是由于在创建成功后5秒执行了子View的setNeedsUpdateConstraints方法.

  • 电池电量 Prefs:root=BATTERY_USAGE
  • 通用设置 Prefs:root=General
  • 存储空间 Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE
  • 蜂窝数据 Prefs:root=MOBILE_DATA_SETTINGS_ID
  • Wi-Fi 设置 Prefs:root=WIFI
  • 蓝牙设置 Prefs:root=Bluetooth
  • 定位设置 Prefs:root=Privacy&path=LOCATION
  • 辅助功能 Prefs:root=General&path=ACCESSIBILITY
  • 关于手机 Prefs:root=General&path=About
  • 键盘设置 Prefs:root=General&path=Keyboard
  • 显示设置 Prefs:root=DISPLAY
  • 声音设置 Prefs:root=Sounds
  • App Store 设置 Prefs:root=STORE
  • 墙纸设置 Prefs:root=Wallpaper
  • 打开电话 Mobilephone://
  • 世界时钟 Clock-worldclock://
  • 闹钟 Clock-alarm://
  • 秒表 Clock-stopwatch://
  • 倒计时 Clock-timer://
  • 打开相册 Photos://