利用好最近这个30天,好好转型。
千里之行,始于足下。
为了一个家庭的责任。
虽然人生路茫茫,但是终究的走下去。
雪球跟踪用户持股
重仓:新疆天业、立讯精密
其余散仓: 乐视网,国瓷材料
你不应该在年轻时炫耀一种叫“悠闲”的东西
—— 1 ——
在祖国广袤而空虚的土地上浪荡了整整两个月时间,我的朋友阿哲,一枚标准的社会主义接班人,终于决定结束这段把身体掏空的交配之旅了。
两个月前,这枚“富富富”以罹患绝症的表情,和公司申请辞职。老板立感断臂之痛,极力挽留,加薪、减负、谈情,霸道总裁把能用的招数都试了一遍,最后裤子都脱了,终于把我的朋友挽留下来。
但考虑到这家伙一副马上就要猝死在工位上的状态,老板满眼求欢的祈求道:给你几个月时间,好好调整一下自己吧,你什么时候归队我不管,但一定要归队。
他供职于一家业内顶级的咨询公司,主攻一级市场做投资,是一枚标准的有钱没闲的“闪闪发光冒傻气的精英”。赚来的大把钞票,最大的用处也就是凌晨两点关上电脑开车跑到簋街上孤独地吃一份小龙虾。
很早前在望京买了套房,但一年之中,他睡在自己房子里的时间加起来也到不了一个月,忙的连猫都不敢养。更多的时候,即使在北京,他也选择睡在君悦,因为可以多睡一会,醒来之后,5分钟就可以走到自己位于东方广场的办公室。
他无暇感受各家商务舱和白金五星级有何优劣之处,因为他这两个地方,除了睡觉就是在做报表,关掉电脑前的固定动作,永远都是再核对一下Schedule,然后痛苦而疲惫地睡去。
下飞机或者打开电脑,微信和Outlook会噼里啪啦地响个不停,那是数不清的项目群组和永无止境的Meeting邀请的声音,如果每一个会议他都要参加的话,那么大概需要7*72小时的工作时间,他必须花费至少一个小时的宝贵时间,用冰冷而礼貌的用词,推掉那些可有可无的工作和冗余会议。
但依然有太多临时而重要的会议他需要参加。所以,下飞机的时候,他往往能够收到秘书已经订好的当晚飞往另一个城市的机票。
投资市场上风云变幻,他必须保持36524的随时随地待命状态,开不完的会,参加不完的路演,见不完的人,谈不完的项目。
最忙的时候,下了飞机连回家换衣服的时间都没有,在办公室和BOSS报告一下项目进度,又马不停蹄的赶下一趟航班,对他而言已经是工作的一项基本素质。
“的确,没有谁地球都一样转,但关键是我不上,我们的很多项目真的就玩不转了!”
他曾经这样和我抱怨,钱似乎早就赚够了,但身在其位,世事推着你不得不选择那样忙成狗的状态。
他在群里说,我先消失两个月,估计这两个月中国的资本市场会非常沉寂吧!
妈的,现在想想似乎被他言中了。朋友们依然诧异于他能真正选择脱身。毕竟这家伙的第一站还是从北京飞到了上海,朋友圈的照片里,他和一群妖艳可人的妹纸一起在环球中心的柏悦酒吧笑的下流,配上了一句同样下流的句子:从今天开始,老子要豁车走遍祖国的花花江山了,立志让自己的足迹和精液洒遍了神州!
翌日,这家伙借了一辆圈内某渣买来就没开过几天的兰德酷路泽,竟然真的开始了从人民广场一路干到西藏樟木镇的自驾游。然后,他两个月的心路历程大概如下:
第一周,会感受到一种巨大的烦躁的不适感,会习惯性地在手机上查看Mail,会习惯性地点开那些出发前屏蔽的微信群,将项目信息一条条看完;
第二周开始真正沉浸在旅游这件事本身,拿起相机的频次开始超过拿起手机;
从第三周开始,走走停停,把这一辈子的寺庙都逛完了,很多夜晚就与和尚们一起住在寺庙里,感觉生活就应该是这种缓慢的样子;
但奇妙的是,在第二个月的最后两周,我的旅行更多地呈现出一种百无聊赖的状态,我开始对“悠闲”这件事儿产生一种恍惚感,一个声音反复出现:
余生若就如此闲适,并不美好。我开始怀念工作以及忙碌带给我的成就感,休息本身所能带给我的愉悦感越来越浅薄了。
“我知道,我必须回去干点正事儿了。”他以这样的方式,宣告自己回归工作。
—— 2 ——
一个对立的镜面是,谁身边也不乏另一种朋友:
他们多半苟且于某个不知名的小城镇,多半有一个稳定、轻松而收入微薄的工作,他们身上多半有一种和年轻不相仿颓废气息。
他们很年轻,然而二十啷当岁却活的像个临退休的老干部,他们不到三十岁甚至就徜徉过退休后的生活图景了。
他们安于并享受现状,不仅享受,而且四处炫耀自己的“悠闲”生活。坦白讲,我每一次回老家,都能听到几句“悠闲生活论”。几个年轻人凑在一起,竟然是互相炫耀各自工作和生活的悠闲:
我们单位很闲,管理也很松,每天没什么事儿,根本不用加班,上班也多半是呆着……
他们热衷于转发“起底某某某的隐秘背景,一看吓一跳”这类爆料知名人士背景,原本应该404的文章,他们坚信阶级早已固化,人间并无鲤鱼跃龙门的稀奇事。
如果你像我一样告诉他们,自己经常加班到凌晨,周六周日也往往不得空闲,因为我想过的更好一些。他们就会集体向你投以同情和怜悯的眼神,然后拍拍你的肩膀说:
兄弟,不好混就回来吧,还是咱们这舒坦,根本不用加班,每天下班喝喝小酒,打打麻将,这日子多滋润啊!人啊,一定要学会享受生活。
但他们忽略了一个基本点:我,或者说我们,并不想变得悠闲!
或者说,我并不想一直处于“悠闲”的生活中。毫无疑问,Better Me们正在致力于将自己变的越来越忙碌。
有限的悠闲时光只是作为忙碌生活的一剂润滑剂,甜蜜、宝贵、难以忘怀而又短暂,是的,“短暂”,这是一个很重要的标识。
我总觉得,悠闲而安逸的生活,对于年轻人而言,意味着一个巨大而舒适的泥潭:如果你久居其中,总有一天会发现自己深陷泥潭已经无法自拔,眼睁睁看着脚步滑向中年发福的肚腩,满心惶恐却早已丧失了奔跑的能力。
于是,只能泡在泥潭里,一副仁波切的闲淡目光,对疾驰而过的脚步说一声:年轻人啊,你慢一点奔跑,等一等你的灵魂吧!
总之潦倒非常却摆出一副活明白了的样子,这很容易让人想起网络上的一个段子:
最怕你一生碌碌无为却安慰自己平凡可贵。
我总觉得,你没有拼过命,就没资格摆出一副平凡可贵的模样;
你没真正富贵过,动辄视金钱如粪土是十分可笑的;
你如果从没有认真读过书,却到处宣讲着读书无用,只能让你显得像个傻逼。
人生的一些状态,只有你经历过,得到过,感受过,才有资格选择说“不,这不是我要的”。
无论一个无所事事的人如何生动地描绘他优渥的“悠闲”生活,我总是怀疑他的内心感受,我总能透过他的眼神看到空虚和无聊的一面。
当悠闲成为生活本身,那么任何形式的悠闲都将变的毫无疑义,正因为批评才能彰显赞美的意义,只有忙碌本身才能凸显“悠闲”的可贵。
相信我:一直悠闲的人没有任何值得羡慕的地方。
—— 3 ——
显然,世界并没有按照凯恩斯(John Maynard Keynes)的预测所运转。
这位著名经济学家曾经预测:
到2023年,得益于科学技术的巨大进步,人类每天仅仅需要工作3个小时即可,剩下的时间全部用来休闲。
我们有理由相信,凯恩斯先生很可能用错了词汇,如果这句话变成:“到2023年,人类每天仅仅只能休息3个小时,而其余的时间将全部用来工作”。也许凯恩斯的Title上,还会加上一个“伟大的预言家”的标签。
仔细感受一下身边的世界和步履匆匆的人们吧,毫无疑问,我们正变得越来越忙碌。
年轻人应该远离那些终日无所事事的悠闲一族,他们只会用连自己都已经快无法忍受的无聊去麻痹你,你应该去结识那些比你更忙碌的人。
忙碌令人充实,空虚使人变态。你但凡稍微观察思考一下,就会发现许多令人捧腹的愚蠢行为,许多Loser的可鄙德行,都有一个巨大而明显的共同点:太闲!
闲的蛋疼,为了打发自己空虚漫长的人生,往往斤斤计较于一些无意义的小事上,将暴躁当热闹,用负能量加速时光转瞬带来的遗憾感。
他们在微博上骂,在回帖上骂,在豆瓣天涯上骂,在公众号和朋友圈里骂;他们扒这个扒那个,从海里到天上,所有人的背景都了如指掌;
他们有热闹就凑,生活中最大的恐惧是’今天没局”,中午对着手机看女主播吃饭也能笑一个小时;他们在家里吵,街上闹,公司里玩离间,地铁上你不小心碰了他一下,他能骂你骂到终点站……
毕竟,他最不缺的就是时间,他有的是时间。
—— 4 ——
如果说真正的自由源自我们面对时间的态度,那么我得说,有相当一部分人甘心为奴。
这话听起来特像是前苏联某个斯基说的,但实际上这的确是我这个司机的真实内心感受。
不得不说,许多人都搞错了我们和时间的关系。以为自己的当下放肆的庸常,可以在时间横亘的某一个阶段,华丽地改写那苍白的画纸。
当然我得说,我也反感现在某些创业公司老板动辄喊的震天响的“All In”,太忙当然会压榨个体的幸福感。但对你而言,逃离冗繁的时段永远应该是两个字:短暂。
就像开篇我的那位朋友,他的确忙到了必须要调整和跳出来的程度,但他也终将明白:
停下来是为了思考前进的意义和方向,或者仅仅是简单地调整一下步伐;
但停下来并不是为了呆立原地,那是死人的事情。
时间无涯,它的残酷之处在于,它不等任何人。
年轻人应该致力于让自己变得越来越忙,而不是越来越闲。正如英国小说家杰罗姆·K·杰罗姆(Jerome K.Jerome)所言:
“只有在你工作堆积如山时,你才可能享受闲暇。当你无事可做时,空闲就变得一点也不有趣,因为空闲就是你的工作,而且是最耗人的工作。闲懒和吻一样,当它被盗走了之后,它的味道才是甜的。”
闲人没什么可羡慕的,因为无所事事已经成为了他们的日常。当放空成为日常,当无聊成为常态,你根本体会不到“悠闲”的价值,因为碌碌无为即是你的生活本身。
你不应该在年轻时炫耀一种叫“悠闲”的东西,所谓“慢生活”,这不该是20几岁时该拥有的状态。骚年,做点什么吧,比如这个夜晚!
收起阅读 »
与市场为友
保持清醒,是市场带着你赚了钱。
而不是你牛逼到可以去赚市场的钱。
从来都要尊重和敬佩市场,不能与市场为敌。
python 爬虫获取XiciDaili代理IP
class getProxy():
def __init__(self):
self.user_agent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
self.header = {"User-Agent": self.user_agent}
self.dbname="proxy.db"
self.now = time.strftime("%Y-%m-%d")
def getContent(self, num):
nn_url = "http://www.xicidaili.com/nn/" + str(num)
#国内高匿
req = urllib2.Request(nn_url, headers=self.header)
resp = urllib2.urlopen(req, timeout=10)
content = resp.read()
et = etree.HTML(content)
result_even = et.xpath('//tr[@class=""]')
result_odd = et.xpath('//tr[@class="odd"]')
#因为网页源码中class 分开了奇偶两个class,所以使用lxml最方便的方式就是分开获取。
#刚开始我使用一个方式获取,因而出现很多不对称的情况,估计是网站会经常修改源码,怕被其他爬虫的抓到
#使用上面的方法可以不管网页怎么改,都可以抓到ip 和port
for i in result_even:
t1 = i.xpath("./td/text()")[:2]
print "IP:%s\tPort:%s" % (t1[0], t1[1])
if self.isAlive(t1[0], t1[1]):
self.insert_db(self.now,t1[0],t1[1])
for i in result_odd:
t2 = i.xpath("./td/text()")[:2]
print "IP:%s\tPort:%s" % (t2[0], t2[1])
if self.isAlive(t2[0], t2[1]):
self.insert_db(self.now,t2[0],t2[1])
接着实现写插入数据库函数:
def insert_db(self,date,ip,port):
dbname=self.dbname
try:
conn=sqlite3.connect(dbname)
except:
print "Error to open database%" %self.dbname
create_tb='''
CREATE TABLE IF NOT EXISTS PROXY
(DATE TEXT,
IP TEXT,
PORT TEXT
);
'''
conn.execute(create_tb)
insert_db_cmd='''
INSERT INTO PROXY (DATE,IP,PORT) VALUES ('%s','%s','%s');
''' %(date,ip,port) #写入时间,ip和端口
conn.execute(insert_db_cmd)
conn.commit() #记得commit
conn.close()
接着完成判断代理是否有效
#查看爬到的代理IP是否还能用
def isAlive(self,ip,port):
proxy={'http':ip+':'+port}
print proxy
#使用这个方式是全局方法。
proxy_support=urllib2.ProxyHandler(proxy)
opener=urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
#使用代理访问腾讯官网,进行验证代理是否有效
test_url="http://www.qq.com"
req=urllib2.Request(test_url,headers=self.header)
try:
#timeout 设置为10,如果你不能忍受你的代理延时超过10,就修改timeout的数字
resp=urllib2.urlopen(req,timeout=10)
if resp.code==200:
print "work"
return True
else:
print "not work"
return False
except :
print "Not work"
return False
获取前面多少也的代理IP,用一个循环即可:
def loop(self,page):
for i in range(1,page):
self.getContent(i)
更新2016-08-13
接着实现对已有的数据库进行清洗,失效的代理要移除。 待续。。。
调用类实例:设置爬取前面5页的代理ip
if __name__ == "__main__":
now = datetime.datetime.now()
print "Start at %s" % now
obj=getProxy()
obj.loop(5)
获取最新source code,可以到
https://github.com/Rockyzsu/getProxy
sync up 收起阅读 »
python 判断sqlite数据库中的表是否存在,不存在就创建
#判断表存不存在来创建表
def create_table():
conn = sqlite3.connect(db_name)
try:
create_tb_cmd='''
CREATE TABLE IF NOT EXISTS USER
(NAME TEXT,
AGE INT,
SALARY REAL);
'''
#主要就是上面的语句
conn.execute(create_tb_cmd)
except:
print "Create table failed"
return False
insert_dt_cmd='''
INSERT INTO USER (NAME,AGE,SALARY) VALUES ("Jack",10,20.1);
'''
conn.execute(insert_dt_cmd)
conn.commit()
conn.close()
代码如上,主要就是
CREATE TABLE IF NOT EXISTS USER 收起阅读 »
任何人都有拖延症!
下面的是译文(原稿+配图):
在大学,我读的是政府专业。也就是说,我需要写很多的论文。一般的学生写论文时,他们可能会这样安排:
你可能开头会慢一点,但第一周有这些已经足够。后期再一点点的增加,最后任务完成,非常的有条理。我也想这么做,所以一开始也是这么计划的。我做了完美的安排,
但后来,实际上论文任务一直出现,我就只能这样了。
我的每一篇论文都是这种情况,直到我长达90页的毕业论文任务,这篇论文理应花一年的时间来做,我也知道这样的工作,我先前的工作方式是行不通的,这个项目太大,所以我制定了计划。决定按照这样的方式工作,这样来安排我这一年。(看图)开头我会轻松一点,中期任务逐渐增加,到最后,我再全力冲刺一下。整体是这种阶梯式安排,一层一层走楼梯有多难?所以没什么大不了的,是吧?但后来,好笑的事情出现了,头几个月?时光匆匆而逝,我还没有来得及动工,所以我们明智的调整了计划。然后,中间的几个月也过去了,我还是一个字也没有动,眨眼就到了这里,然后两个月变成了一个月,再变成了2周。一天我醒来,发现离交稿日期只剩3天了,但我还一个字都没写。我别无选择,只能在接下来的72小时里,连续通宵两个晚上赶论文——一般人不应连续通宵两个晚上。90页赶出来后,我飞速冲过校园,像电影中的特写慢镜头一样,恰好在截止日期前的最后一刻交上。
我以为事情就这么完了,但一周后,我接到一个电话,是学校打来的。他们说:“你是Tim Urban吗?”我说:“是。”他们说:“我们要说一说你的毕业论文。”我说:“好啊。”他们说:“这是我见过最棒的论文。”……当然不可能。论文非常非常的差劲。我只想享受下你们对我的崇拜,想听你们说:“这老兄太厉害了。”没有,其实写的非常差劲。
不管怎样,我现在成为了一个博客写手,经营着“wait but why”这个博客。几年前,我决定写写拖延这件事。我的行为方式总让身边非拖延者感到不能理解。我很想对世界上非拖延者的人解释一下,我们拖延症患者的脑子是什么样的,为什么我们会拖延。
首先我假设,拖延症患者的大脑实际上和其他人的大脑不一样。为了验证这一点,我找了家核磁共振实验室,给我和另一个确定是非拖延症的人,进行了脑部扫描,我好将二者进行对比,今天我带到现场,给大家展示一下。我希望大家仔细观察,看能不能注意到差异。我知道大家并非专业的大脑专家,较难看出他们的差异,但大家不妨先看一眼,如何?这张是非拖延者的大脑,这张是我的大脑。
正常人的大脑
拖延症者的大脑
张是有一点不同,两个大脑都有一个理性决策人,但在拖延症患者的大脑里,还有一个及时行乐的猴子。那这对拖延症患者来说意味着什么呢?这意味着平时没什么异样,但一旦发生了以下的情况,理性的决策人做出理性的决策,要去做一些实际的工作,但猴子不喜欢这个计划,所以他抢过方向盘,说道:“说实话,我们还是去维基百科上查一查NKTH的丑闻吧。”因为我刚想起来还发生过这件事,然后我们会去翻冰箱,看看和十分钟前相比有没有什么新的东西。然后我们去youtobe看一连串的视频,从Richard Feynman谈论磁铁开始,一直到很久很久之后看到一个Justin Bieber妈妈的访谈才结束。以上这些事情都得花时间,所以我们今天没有时间再来工作了。
所以,到底发生了什么?这个及时行乐的猴子并非你,希望是控制方向的人,他完全生活在当下,没有过去的记忆,也没有未来的概念。他只关注两件事情:简单和开心。在动物界,这两点完全没有问题。如果你是一条狗,一辈子只追求一些简单和快乐的事,那就是巨大的成功了。但对猴子来说,人类是另外一个物种,你得正常睡眠、规律饮食、繁衍后代。在原始部落时代,这也没太大问题。但你注意到没有,现在并非原始部落时代,我们生活在一个现代文明社会中,而猴子完全不能理解这是什么意思,这也是为什么我们大脑中会有另外一个,理性的决策者,他使人类有能力做到其他动物无法做到的事情。我们能设想未来,可以从大局出发,制定长期计划,他可以把所有这些事考虑在内。希望让我们做出最合理的事情。
有时,做一些简单开心的事情是很合理的,比如吃饭睡觉、享受赢得的休闲时光,所以二者也有重叠的部分。有时二者是一致的,但有些时候,从长远的角度来看,一些更困难不开心的事情,才是合理的事情,所以就出现了冲突。对拖延症患者来说,每次这种冲突到最后的结果都一样,都让他在这片橙色区域里耗费大量时间,这里很简单很开心,但完全不在合理圈的范围内,我将这个区域称为黑暗操场。这个黑暗操场,所有的拖延者患者都应该很熟悉,在这里发生了许多,本不应该在此时进行的休闲活动。你在黑暗操场获得的乐趣,实际并不有趣,因为这并非你应得的。这里的空气充满了内疚、恐惧、焦虑和自我憎恨——这些都是拖延症患者常有的情绪。所以问题是,在猴子掌握方向盘的情况下,拖延症患者如何进入这边的蓝色区域呢?这里虽然没有这么舒适,但进行的事情都非常重要。
原来,拖延症患者都有一个守护天使,一个在他黑暗时刻,一直注视和关注他的人,这个人称为惊慌怪兽。惊慌怪兽大部分时间都处于休眠状态,但当临近截止日期或有当众出丑的危险时,或出现职业灾难或者其他恐怖情况时,他就会突然醒来,并且最重要的是,他是猴子唯一害怕的东西。
最近他也经常出现在我的生活中,因为6个月前,TED的人找到我,邀请我做TED的演讲,我当然同意了。我一直有个梦想,希望可以“曾经”做过一次TED演讲。但在兴奋之余,理性决策人似乎另有看法。他说:“我们清楚刚才答应了什么吗?我们知道未来哪一天会发生什么事情吗?我们应该坐下来马上开始工作。”猴子说:“完全同意你的看法,但我们先打开google地图,在印度的最南边放大,然后花两个半小时的时间从大约200英尺的高度,慢慢往上滑,直到印度的最北边,这样可以更好地了解印度这个国家。”所以那一天我们就这么做了。
很快6个月变成了4个月,然后2个月,然后1个月,TED工作人员发布了演讲者的照片,我打开网址,看到自己的脸,我的双眼直勾勾的看着我,大家猜猜这个时候谁醒了。惊慌怪兽像发疯了一样,几秒种后,整个系统全乱套了。这时候猴子——还记得吗,他是最害怕惊慌怪兽的,一溜烟窜到了树上!终于,理性决策者重新掌回了方向盘,我也终于可以为这个演讲开始工作了。所以,惊慌怪兽解释了拖延症患者的很多奇葩行为,比如像我,有时候整整两周,都没法写出论文的第一句话,会突然奇迹般的找到职业操守,通宵整晚,把8页论文都给写了出来,以上三个角色的整体情况,就是拖延症患者的系统,虽然并不美好,但最终也有效果。
这是我几年前决定在博客上和大家分享的内容。写成之后,大家的反应很让我惊讶,我收到了上千封的邮件,寄信人来自世界各地,从事各行各业的不同朋友,有护士、银行家、画家、工程师,还有很多很多的博士生。他们都在写同一句话:“我也有这个问题。”但真正让我感到触动的,是我博客的轻描淡写,和邮件的沉重文风之间的强烈对比。这些读者以非常沮丧的语言,告诉我拖延对他们的生活造成了哪些影响,告诉我猴子对他们都做了些什么。我思考了一下,问道,既然拖延症患者的系统是有效果的,那到底哪不对呢?为什么这些人都置身黑暗之中呢?
原来,拖延分为两种,我今天所说的拖延和所举的例子,都是有截止日期的。一旦有了截止日期,拖延的影响会被限制在一定时期内,因为后期惊慌怪兽会出现,但还有第二种拖延,这种拖延是没有截止日期的,所以如果你想在一些领域内自学成才——比如学个艺术或者创个业——这些事情开始都是没有截止日期的,因为开始不会有什么变化,直到你拼尽全力,辛勤投入,才会有一点起色,你才能看到进展。除了工作之外,还有很多其他重要的事情,也是没有截止日期的,比如看望家人、锻炼身体、保持健康、维系感情,或者从一段不合适的感情中抽身。如果说拖延症患者处理这些困难的唯一机制,是惊慌怪兽的话,那就有问题了,因为在这些没有截止日期的情况下,惊慌怪兽是不会现身的,没有唤醒他的条件,所以这一类拖延的后果是没有限制的,他们会不断地肆意延伸。
和有截止日期的好笑的短期拖延相比,这种长时期的拖延,更不易被人察觉,也更少被谈论到,他常常在无声无息中折磨着人们,可以说是大部分长期抑郁和悔恨的根源。我想,这也是为什么这些人会写信,为什么状态这么差的原因吧。他们并非在为某个项目临时抱佛脚,这种长期拖延使他们有时感觉,自己只是生活的旁观者,让他们沮丧的不是他们没有实现梦想,而是他们甚至还没有开始追寻梦想。我读着这些来信,忽然有一种顿悟——我觉得非拖延者是不存在的,没错,我认为你们所有人都是拖延者,当然你们可能不像,我们有些人这么混乱。你们有些人可能与截止日期保持着良性的关系。但记住:猴子最狡猾的伎俩,发生在没有截止日期的时候。
最后我想给大家看一个东西,我称之为“生命日历”。这里的每一个格子都代表90年生命中的一周,格子数并不是很多,尤其我们已经用掉了许多。我想我们需要好好花时间,认真看看这个日历。我们需要想一下,我们真正在拖延的是什么,因为每个人在生命中都有拖延一些东西,我们需要警惕及时行乐的猴子,这是我们所有人的任务。因为这里的格子数并不多,所以或许我们今天就应该行动起来,或许不一定是今天,而是尽快。
所以,最好每一件事情都要设置一个Deadline, 本来打算这篇文字明天再写的,后来还是当场就写好,免得落下几天没更新。
要时刻唤醒Panic monster! 收起阅读 »
钻石的营销案例
钻石被誉为二十世纪最精彩的营销骗局,它提供了现代营销史上教科书般的经典案例:商品服务消费者只是一种低端的理念,商品教育消费者才是最高的成就。
一、钻石营销的奥秘
钻石在被发现以后很长一段时间只是皇家和贵族炫耀财富的饰品,产地固定而且产量稀缺。十九世纪后期发生改变,因为南非居然神奇地发现了一座钻石矿,产量有几千万克拉。
这一下不得了,那些投资钻石的商人彻底懵逼。如果这些钻石进入市场,钻石的价值将大打折扣,于是,一个叫罗兹的英国商人在1988年创建了大名鼎鼎的戴比尔斯公司,从此钻石营销拉开了它的世纪大幕。
戴比尔斯一咬牙买下了整个钻石矿,之后小心翼翼地控制钻石出量,垄断了整个钻石的供货市场。最高时候戴比尔斯掌控着市场上90%的交易量。
如果买了钻石的人要出售掉,钻石的价格体系也会崩溃,所以要想稳定价格除了让别人买,还得不让他卖钻石。这怎么可能呢?可是神通广大的戴比尔斯就是做到了,这个超级难题的解决方案催生了这个世界最不要脸的组合,那就是把爱情同钻石紧紧结合在一起。
因为钻石=美好+永恒,而爱情=美好+永恒,所以,钻石=爱情。
1938年以后,戴比尔斯的实际控制者奥本海默家族花费了巨额的广告费用开始打造所谓的钻石文化。宣称坚硬的钻石象征的正是忠贞不渝的爱情,而只有钻石才是各地都接受的订婚礼物。通过各种手段铺天盖地的广告,强化钻石和美好爱情的联系。婚纱照上新娘身着美丽的婚纱,一脸幸福的微笑,手上的钻戒闪瞎大家的眼。
1950年,戴比尔斯更提出了丧心病狂的广告语,“A DIAMOND IS FOREVER”,钻石恒久远,一颗永流传。通过这个营销,戴尔比斯一石三鸟。
1.男人都认为只有更大更美的钻石才能表达最强烈的爱意,恋爱中的男人为了女人什么事都做的出来,买钻石比送命门槛低得多
2.女人都认为钻石是求爱的必需,你连钻石都不舍得买,你还好意思说你爱我,什么,你以为我看中的是钻石,我看中的是你舍不舍得!
3.钻石都代表着永恒的爱情,拿来出售简直是对神圣爱情的最大亵渎。除非你跟前夫不共戴天,否则很少会卖掉他给你的钻戒,而且就算卖,也不会有人接手,因为那是你的爱情,那不是我的~
正是因为如此,尽管钻石不断开采至今已经有五亿克拉,但在整体上还是供不应求,价格扶摇直上,因为只有戴比尔斯才可以卖钻石。你以为戴比尔斯的营销到这就算完成了吗,那这未免太小看它,戴比尔斯还可以根据市场形势改变营销,再通过营销反控市场。
上世纪八十年代,前苏联发现一座更大的钻石矿,大量碎钻供应于世面。戴比尔斯吓得尿了裤子,马上同苏联订立价格同盟。另一方面,为了不让钻石掉身价,营销广告顺势转向,强调碎钻一样高贵,钻石虽小依然代表高贵的爱情。钻石的珍贵不是看大小,而是看做工和切面,于是又炮制了大量行业的标准,如今你去柜台上听服务员向你扔出什么净度4C等专业术语,跟睁眼说瞎话的售楼小姐没什么两样。随后,钻石也彻底征服了底层阶级,大的好的卖给富人,碎的小的卖给穷人。
你以为营销到这个高度就可以了吧,远!没!有!戴比尔斯已经把女人的心理研究到登峰造极的地步,比如他们研究显示,对于钻石这种奢侈的商品女人的心理是矛盾的。
一方面,她们对首饰有着天然的占有欲,一方面又认为主动索取会带来良心的负罪感。所以戴比尔斯的广告在八十年代又开始强调钻戒应该跟惊喜结合。一个男人默默买了钻戒,在一个精心安排的场合突然送出,这才能最大程度上化解女性的矛盾心理,一方面她们拥有钻戒带来的极度喜悦,一方面又保持了女人的纯真。
把女人研究成这样,实在是不服不行。连拥有戴比尔斯百分之四十股权的奥本海默家族都不禁感叹:“感谢上帝,创造了钻石,同时也创造了女人。”
多少年来,钻石已经逐渐绑架了消费它的人们。你以为女人看重的仅仅是钻石本身吗,错了,她们更看重的是你宁愿花掉三个月的工资差点年纪轻轻就过劳死而为她换来的一件爱情的象征。
如果你拿着本文去向你未婚的女友义正言辞地指出,买钻戒是一件傻逼的事情,那么这种行为才是真的傻逼,因为你的女友只需要看着你的眼睛说一句话就让你哑口无言,“是的,这很傻,可是你就不能为我傻一次吗?”
把所有营销学的书籍看完都不如完全理解戴比尔斯钻石营销的案例带来的收获大。消费者是需要培养的吗,完全不是,消费者是需要教育的。
当把一种商品提升到文化乃至习俗的高度,你拥有的就是宗教般狂热和虔诚的信徒。然而我们不知道的是,钻石除了表面的光鲜美好忠贞不渝,还有阴暗血腥的另一面。
二、钻石的血泪史
钻石给戴比尔斯带来了无尽的利益,却也给广袤的非洲大地带来了深重的苦难。这倒并非戴比尔斯公司的错,而是军阀因为争夺钻石的开采和控制权开启了惨绝人寰的内战。莱昂纳多主演的05年的电影《血钻》就处于这样的背景下。
因为钻石发生内战的国家典型当属安哥拉和塞拉利昂。直到现在我仍清楚地记得高三时候看到关于塞拉利昂内战文章的午后,那种头皮发麻的惊悚和不适。
塞拉利昂盛产钻石,因为钻石背后的暴利,叛军首领福迪·桑科联合利比里亚军事强人查尔斯·泰勒建立革命联合阵线。桑科利用军队压迫人民攫取钻石,又靠出售钻石获得的资金购买军火供养军队。
为了打赢惨烈的内战,桑科组建了骇人听闻的娃娃军。将七八岁的孩子集合,让他们亲自肢解敌人,挖出他们的心脏,培养嗜血的狼性;对内亲手杀害自己的亲人泯灭天生的人性,更惊悚地是向孩子的太阳穴注射可卡因等毒品进行精神控制。娃娃军中甚至有女童,白天持刀杀人,晚上沦为性奴。十三岁的塞拉利昂少年伊斯梅尔·比亚不幸加入娃娃军,沦为杀人机器,后来被解救后提笔写下了《长路漫漫》一书,记下了这一人类历史上惨绝人寰的战争。
塞拉利昂的内战从1991年开始,持续了整整十一年,造成了5万人死亡全国三分之一的人口流离失所。其出产的钻石成为了无数恩爱的情侣手指的订婚信物,却也沾满了非洲人民的鲜血。
吊诡的是,戴比尔斯也跳出来呼吁和平,在2001年签订《金伯利进程协议》,呼吁世界不要购买战乱国的钻石,买钻石只会让钻石的争夺更加惨烈。几个卖钻石的商人摇身一变居然操心起了世界和平,其背后的逻辑不言而喻,因为他们可以掌控消费者,却掌控不了军阀。倘若军阀大量出售钻石,也会让钻石市场失控,所以,封闭他们的出售渠道,钻石还是牢牢掌控在戴比尔斯的手里。
是的,这个世界就是这么荒诞。
钻石的唯一元素就是碳,是这个世界上最不缺的元素。人造金刚石与钻石也别无二致,如果想靠钻石保值无疑很难。二手的钻石没有任何市场,只能以低廉的价格回售给商家,可是这仍然阻挡不了被绑架的人类对它疯狂的追捧。
2011年访华的南非副总统莫特兰蒂面对央视采访时说了这么一段话:“钻石只是人们虚荣心的产物,它只是碳而已,价格上涨并不是钻石会枯竭,而是人为造成的供不应求的局面。”
但我似乎能想象,当一个男人把关于钻石的种种都告诉自己的妻子时,他最可能遇到的情景就是妻子幽幽地说:“所以呢,你觉得给我看了这个,钻石就不用买了,是吧?”
而男人一定会立刻摇头,斩钉截铁地说:“哪能啊,买,当然要买,咱还得买个大的,我这就是跟你说说。”
你看,这个世界,就是这么荒谬。
【个人意见】 : 还不如把钱给女友或老婆用呢。 收起阅读 »
python @classmethod 的使用场合
classmethod(function)
中文说明:
classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法,使用方法如下:
class C:
@classmethod
def f(cls, arg1, arg2, ...): ...
看后之后真是一头雾水。说的啥子东西呢???
自己到国外的论坛看其他的例子和解释,顿时就很明朗。 下面自己用例子来说明。
看下面的定义的一个时间类:
class Data_test(object):
day=0
month=0
year=0
def __init__(self,year=0,month=0,day=0):
self.day=day
self.month=month
self.year=year
def out_date(self):
print "year :"
print self.year
print "month :"
print self.month
print "day :"
print self.day
t=Data_test(2016,8,1)
t.out_date()
输出:
year :
2016
month :
8
day :
1
符合期望。
如果用户输入的是 "2016-8-1" 这样的字符格式,那么就需要调用Date_test 类前做一下处理:
string_date='2016-8-1'
year,month,day=map(int,string_date.split('-'))
s=Data_test(year,month,day)
先把‘2016-8-1’ 分解成 year,month,day 三个变量,然后转成int,再调用Date_test(year,month,day)函数。 也很符合期望。
那我可不可以把这个字符串处理的函数放到 Date_test 类当中呢?
那么@classmethod 就开始出场了
class Data_test2(object):
day=0
month=0
year=0
def __init__(self,year=0,month=0,day=0):
self.day=day
self.month=month
self.year=year
@classmethod
def get_date(cls,
string_date):
#这里第一个参数是cls, 表示调用当前的类名
year,month,day=map(int,string_date.split('-'))
date1=cls(year,month,day)
#返回的是一个初始化后的类
return date1
def out_date(self):
print "year :"
print self.year
print "month :"
print self.month
print "day :"
print self.day
在Date_test类里面创建一个成员函数, 前面用了@classmethod装饰。 它的作用就是有点像静态类,比静态类不一样的就是它可以传进来一个当前类作为第一个参数。
那么如何调用呢?
r=Data_test2.get_date("2016-8-6")输出:
r.out_date()
year :
2016
month :
8
day :
1
这样子等于先调用get_date()对字符串进行处理,然后才使用Data_test的构造函数初始化。
这样的好处就是你以后重构类的时候不必要修改构造函数,只需要额外添加你要处理的函数,然后使用装饰符 @classmethod 就可以了。
本文原创
转载请注明出处:http://30daydo.com/article/89
收起阅读 »
自学能力强大的人在任何领域都会无比强大!
有部叫做《Hero》的美剧是讲正反两派都是一群有超能力的人,彼此为了某个巨大的阴谋互相撕逼。作为两边的头头,他们自己既不会飞,也不会手上冒火,更不会心灵控制等。但他们却有一种当他们盯着一个超能力者使用自己的力量时,马上能把这个能力复制到自己身上的能力,比如他看到一个人在徒手煎鸡蛋,过了一分钟之后他就说卧槽我也会了......他们只要看到了有人使用超能力,就能马上掌握在手,最后变得无所不能。
这种能力,就叫学习能力。一个会学习的人,在任何领域都能变得强大。
一个人最重要的能力,不是学历多牛逼,不是实习经历多光彩,而是拥有一种强大的学习能力。但很可惜,我们有部分人毕业之后就丧失了如何继续学习的“学习能力”。
那么到底怎样才叫会学习呢?
1.通过观察找到事物的共性
小学课本上有加减乘除的四则运算法则。例如:2*3 -(5-2)- 2=?。如果你去翻答案,可能只有一个孤零零的数字1摆在上面,并没有解题过程。这个时候你可以尝试着用答案来反推解题过程:
2*3 -(5-2)- 2=1,这个等式去掉括号如何才能成立?在试过了几种方向之后,最后会发现只有:2*3-5+2-2=1,这个等式才成立。
进而你会发现,当括号前面是 + 号的时候,去掉括号,括号里面的运算符号不变;
当括号前面是-号的时候,去掉括号,括号里面的运算符号要变成相反。
当你拿着这个结论去验算其他类似的题目,发现全部符合这个规律。这是一个最简单的“演绎归纳”的推理过程,而它背后的逻辑是,通过找到个别事物的特性从而反推找到整体的共性。
在日常的工作生活中,这种方法其实屡见不鲜。
谈恋爱的时候,男生为了讨好女生会在追求的过程中说各种甜言蜜语,可是等到追到手以后就变得不那么上心。这是通过几个个别事例总结出来的事实,然后情感热线专家们据此就会得出一个共性规律:
得不到时才是最好的,得到了就不会懂得珍惜。
在给领导做工作汇报的时候,通常时间都不会超过半个小时,因为领导总是有下一场会议要赶。这是你在做了几次汇报之后发现的一个事实,然后职场热线专家据此就会告诉你一个共性规律:
领导的时间都是有限的,所以汇报工作要精简抓住要点。
这个世界上所有的事情背后都有一套简单的运转规律。会学习的人,首先会通过观察找到事物背后的本质,继而发现共性,最终推论到全局。无论是科学研究,还是世故人情,无论是商业经济,还是生物进化,支撑着这些领域不断向前发展的可能是简单的几条规律,或者说,真理。
牛顿三大定律,摩尔定律,广义相对论,波士顿矩阵,达尔文进化论......这些实际上都是一个东西,规则。聪明人从大量事实中发现共性,总结规则;普通人顺应和利用这些规则,仅此而已。
2.活学活用,举一反百
你身边一定有那种各门考试都很好,但是一遇到没见过的问题就不知道该怎么解的“学霸”,这种叫“死学”。
会学习的人,讲究“活学”。“活学”最大的特征就是,善于跨界地去学习不同领域的知识,并善于各种灵活多变的知识组合,对各种事情进行高效的处理。你在A领域学习到的规则,发现在B领域也基本适用,再修改或者变通下也能在C领域、D领域部分适用。
能量守恒定律最初是物理学规则,但是同样适用于商业领域,于是有了“零和博弈”。
“物竞天择,适者生存”最初是生物进化学的理论,但是推演到任何一个高度竞争的领域都同样适用。在工作中,能力强的人会一路高升,能力差的人一定会被淘汰;在商业竞争中,质量好的商品会收到追捧,质量差的商品会被下架。
“市场供求曲线”最初是经济学的一条规则,但是你在谈恋爱的时候同样适用。
“活学”之人,必会“活用”,再复杂的问题到了他手里都会变的清晰和简单。碰到一个新问题,进行逻辑分析,找出相似性和共性。他们就进入到一个熟悉的领域,问题马上迎刃而解。
3.多领域发展
不管关于这一点是否有争议,但这个世界上“通才”似乎比“专才”往往更能适应竞争。只说一点,“通才”和“专才”最大的区别在于面对急剧变化的形势时的应变能力。
凯文凯利在《失控》说过:
要成长为新物种,你就要经历所有你不会去扮演的角色。
当一个环境开始急剧变化的时候,一定是内部和外部同时发生了改变。如果只是单一内部发生改变,以往过去的规则和经验或许足以应对和解决问题,但是一旦这个冲击变化来自于外部陌生的领域,经验主义就再也不适用了。最好的例子就是近几年来几乎中国所有的实体经济都开始朝着互联网+的方向发展。你会发现,线下超市被电商大规模冲击、逐步有自我学习能力的机器人开始工业和民用领域、工业4.0让制造业变得更加无缝对接、互联网反欺诈让隐形的欺诈者越来越难生存,移动支付让我们省去大量去银行门店处理事务的时间.......这些在过去让人们匪夷所思的事情,背后都蕴含着新的规则和逻辑。
点评:
不论你已经是一位很有名的专家或者专才了,我们都应该保持永久学习的好奇心态,因为世界变化太快。
来自知乎专栏 收起阅读 »
社保停交后,医保处于被冻结状态,不能使用。
社保停交后,医保处于被冻结状态,不能使用。
医疗保险指通过国家立法,按照强制性社会保险原则基本医疗保险费应由用人单位和职工个人按时足额缴纳。不按时足额缴纳的,不计个人帐户,基本医疗保险统筹基金不予支付其医疗费用。
医疗保险是为补偿疾病所带来的医疗费用的一种保险。职工因疾病、负伤、生育时,由社会或企业提供必要的医疗服务或物质帮助的社会保险。如中国的公费医疗、劳保医疗。
中国职工的医疗费用由国家、单位和个人共同负担,以减轻企业负担,避免浪费。发生保险责任事故需要进行治疗是按比例付保险金。
医疗保险在退休时必须积累一定的缴费年限(含视同缴费年限),一般规定为20年-30年,并且实际缴费年限必须达到5年(或10年),才可以在退休以后免费终身享受医疗保险保障待遇。如果在退休时的累计缴费年限不足规定要求,可以按当时的费率标准补交所差的医疗保险缴费年限。
职工医疗保险补缴:
一、医保机构征缴部门根据医疗保险欠费情况,建立欠费数据信息,填制《社会保险费补缴通知单》,通知参保单位补缴欠费。
二、对因筹资困难,无法一次足额缴清欠费的参保单位,医保机构征缴部门与其签订社会保险补缴协议。如欠费单位发生被兼并、分立、破产等情况时,按下列方法签订补缴协议。
1、欠费单位被兼并的,与兼并方签订补缴协议。
2、欠费单位分立的,与各分立方签订补缴协议。
3、欠费单位进入破产程序的,与清算组签订清偿协议。
4、单位被拍卖出售或租赁的,与主管部门签订补缴协议。
三、参保单位根据《社会保险费补缴通知单》或补缴协议办理补缴,医保机构征缴部门予以受理,并通知医保机构财务管理部门收款。
四、破产单位无法完全清偿的欠费,医保机构征缴部门受理单位破产清算组提出的申请,审核后送稽核监督部门处理。
五、医保机构征缴部门依据财务管理部门传来的职工医疗保险补缴欠费到账信息和稽核监督部门传来的核销信息,调整参保单位欠费信息。
也就是说,你工作了20年,但是突然想放松一下,间隔年一下,去个游山玩水,社保中断了交。 这个时候你的社保卡是冻结状态,这个时候你的社保卡不能到医院看病。 除非你去游山玩水期间,自己去交社保的钱,不中断。
这种政策真扯淡。 所以说,国家的这些政策,完全弊大于利。 医保上的钱,如果我自己全部自己拿着,去理财,福利收益20年怎么也可以翻一翻吧,一年年收益只需要几个点就够了。(1+1*x)**20=2, (其中x为年收益率,**20 是20次方,复利计算公司), 可以算出 x=3.5%, 指数运算差点忘记了擦。
而且我爱什么时候用就什么时候用, 不要考虑中断不中断。 反正呢,ZF想要把你的口袋的钱放到他们那里,所以这笔钱,你不能动,其实我心里已经把当做这笔钱花了出去,看病能拿回一点算一点, 心里一种强烈被剥削的感觉。
收起阅读 »
日内操作 7月29日 特停政策下游资休养生息
何况其他?
为何自己目前还满仓运行?
错误
日内操作 7月28日 价投的天下 中小创的地狱
板块相应出来了,可惜自己一直持有的中小创。
git冲突 解决
在提交单个文件的时候出现这个错误.
意思是不能部分提交代码.
原因是git认为你有部分代码没有做好提交的准备,比如没有添加
解决方法是
1. 提交全部
git commit -a
2. 如果不想提交全部,那么可以通过添加 -i 选项
git commit file/to/path -i -m "merge"
上述情况一般出现在解决本地working copy冲突时出现, 本地文件修改(手工merge)完成后,要添加并提交,使得本地版本处于clean的状态.
这样以后git pull就不再会报错.
冲突处理
当两条分支对同一个文件的同一个文本块进行了不同的修改,并试图合并时,Git不能自动合并的,称之为冲突(conflict)。解决冲突需要人工处理。
比如当前在master分支,想把dev分支merge过来,结果产生了一个冲突,打开文件内容可以看到这么一个冲突:[复制代码]
<<<<<<< HEAD test in master ======= test in dev >>>>>>> dev
[复制代码]
<<<<<<<标记冲突开始,后面跟的是当前分支中的内容。
HEAD指向当前分支末梢的提交。
=======之后,>>>>>>>之前是要merge过来的另一条分支上的代码。
>>>>>>>之后的dev是该分支的名字。
对于简单的合并,手工编辑,然后去掉这些标记,最后像往常的提交一样先add再commit即可。 收起阅读 »
每天输出一篇高质量文章 ---始于2016年7月28日
平时太多的输入,但是输出很少。 这好比学校里学了很多东西,但是不做作业,不考试,这样永远无法知道学生的水平。
即使质量不高,我也要坚持。 百篇里能出一篇也不错。
所能承受的困惑
但是行动力不足以改变任何东西,日复一日,年复一年。所以,平庸的人就是这么诞生的了。
百人里面才会有甚少的一两个人,有突破的意志,能以跃出浅潭浊水,潜龙出海。
tushare 源码分析 之 fundamental.py
下面来具体看看里面的一些具体的函数是怎么实现的。
fundamental.py 这个文件是获取企业的基本面信息的。
比如 在主程序 main中,
import tushare as ts那么我们来看看get_stock_basics函数的实现。
df=ts.get_stock_basics()
def get_stock_basics():
"""
获取沪深上市公司基本情况
Return
--------
DataFrame
code,代码
name,名称
industry,细分行业
area,地区
pe,市盈率
outstanding,流通股本
totals,总股本(万)
totalAssets,总资产(万)
liquidAssets,流动资产
fixedAssets,固定资产
reserved,公积金
reservedPerShare,每股公积金
eps,每股收益
bvps,每股净资
pb,市净率
timeToMarket,上市日期
"""
request = Request(ct.ALL_STOCK_BASICS_FILE)
text = urlopen(request, timeout=10).read()
text = text.decode('GBK')
text = text.replace('--', '')
df = pd.read_csv(StringIO(text), dtype={'code':'object'})
df = df.set_index('code')
return df
上面通过urlib2的Request函数获取url的信息,然后保存为df格式然后返回。
url路径在这个变量里面:
ct.ALL_STOCK_BASICS_FILE
跳转到这个变量
ALL_STOCK_BASICS_FILE = '%s%s/static/all.csv'%(P_TYPE['http'], DOMAINS['oss'])
P_TYPE 和DOMAINS 是字典变量, 在同一个文件内可以找到他们的值:
P_TYPE = {'http': 'http://', 'ftp': 'ftp://'}
DOMAINS = {'sina': 'sina.com.cn', 'sinahq': 'sinajs.cn',
'ifeng': 'ifeng.com', 'sf': 'finance.sina.com.cn',
'vsf': 'vip.stock.finance.sina.com.cn',
'idx': 'www.csindex.com.cn', '163': 'money.163.com',
'em': 'eastmoney.com', 'sseq': 'query.sse.com.cn',
'sse': 'www.sse.com.cn', 'szse': 'www.szse.cn',
'oss': '218.244.146.57', 'idxip':'115.29.204.48',
'shibor': 'www.shibor.org', 'mbox':'www.cbooo.cn'}
然后把上面的字典值抽取出来:
那么url就是 http://218.244.146.57/static/all.csv , 你可以试试在浏览器里直接输入。 看到了吗?
可以直接下载一个all.csv格式的文件,打开后可以看到里面很多企业基本面的信息。
获取业绩报表
def get_report_data(year, quarter):
"""
获取业绩报表数据
Parameters
--------
year:int 年度 e.g:2014
quarter:int 季度 :1、2、3、4,只能输入这4个季度
说明:由于是从网站获取的数据,需要一页页抓取,速度取决于您当前网络速度
Return
--------
DataFrame
code,代码
name,名称
eps,每股收益
eps_yoy,每股收益同比(%)
bvps,每股净资产
roe,净资产收益率(%)
epcf,每股现金流量(元)
net_profits,净利润(万元)
profits_yoy,净利润同比(%)
distrib,分配方案
report_date,发布日期
"""
函数主要通过 request = Request(url) 在财经网站获取信息。
request = Request(ct.REPORT_URL%(ct.P_TYPE['http'], ct.DOMAINS['vsf'], ct.PAGES['fd'],year, quarter, pageNo, ct.PAGE_NUM[1]))
text = urlopen(request, timeout=10).read()
Request里面的参数是一个可变量,通过循环的列表来获取所有的公司业绩报表。
通过定位参数里的变量,可以得到随意一个url, 比如 REPORT_URL = '%s%s/q/go.php/vFinanceAnalyze/kind/mainindex/%s?s_i=&s_a=&s_c=&reportdate=%s&quarter=%s&p=%s&num=%s'
那么url =http://vip.stock.finance.sina.com.cn/q/go.php/vFinanceAnalyze/kind/mainindex/index.phtml?s_i=&s_a=&s_c=&reportdate=2014&quarter=1&p=1&num=38
那么直接在浏览器输入看看 是什么数据
看到了2014年第一节度的每个公司的业绩(因为有些是新股,所以2014的数据显示不全)
注意
df=ts.get_report_data(2016,4)
#第四季度就是年报
根据作者的意思,这个参数写4就是年报。 (可以自己根据网址内容去到新浪财经去验证)
新版tushare注册码
https://tushare.pro/register?reg=217168
注册后送积分,只有足够的积分才能够调用一些高权限的接口
待续。 收起阅读 »
30天学会量化交易模型 Day05
这一节 我们学习如何把得到的数据写入数据库。
虽然也可以写入excel或者json,不过考虑到后面用的的排序和其他python脚本的调用,最后选择了轻量级的数据库SQLiite作为首选。
# -*-coding=utf-8-*-
#数据库的操作
'''
http://30daydo.com
weigesysu@qq.com
'''
import sqlite3, time, datetime
__author__ = 'rocky'
class SqliteDb():
def __init__(self,dbtable):
'''
self.today = time.strftime("%Y-%m-%d")
self.DBname = self.today + '.db'
self.conn = sqlite3.connect(self.DBname)
'''
today = time.strftime("%Y-%m-%d")
DBname = today + '.db'
self.conn = sqlite3.connect(DBname)
self.dbtable=dbtable
create_tb = "CREATE TABLE %s (date varchar(10),id varchar(6), name varchar(30), p_change REAL,turnover REAL);" %self.dbtable
self.conn.execute(create_tb)
self.conn.commit()
def store_break_high(self,price_high_data):
#data 是创新高的个股信息 dataframe
#print today
#create_tb = 'CREATE TABLE STOCK (date TEXT,id text PRIMARY KEY, p_change REAL,turnover REAL);'
#conn.commit()
#print "(%s,%s,%f,%f)" %(price_high_data[0], price_high_data[1], price_high_data[2], price_high_data[3])
insert_data_cmd = "INSERT INTO %s(date,id,name,p_change,turnover) VALUES(\"%s\",\"%s\",\"%s\",%f,%f);" %(self.dbtable,price_high_data[0], price_high_data[1], price_high_data[2], price_high_data[3],price_high_data[4])
self.conn.execute(insert_data_cmd)
#self.conn.execute('INSERT INTO STOCK(date,id,name,p_change,turnover) VALUES(?,?,?,?,?)',(price_high_data[0], price_high_data[1], price_high_data[2], price_high_data[3],price_high_data[4]))
self.conn.commit()
def close(self):
self.conn.close()
上面创建的表名是 以日期为命名的(前面的下划线是因为数据库的命名规则不能以数字为首)
上一篇:30天学会量化交易模型 Day04 (tushare获取破新高的股票)
http://www.30daydo.com/article/70 收起阅读 »
使用pandas的dataframe数据进行操作的总结
#使用iloc后,t已经变成了一个子集。 已经不再是一个dataframe数据。 所以你使用 t['high'] 返回的是一个值。此时t已经没有index了,如果这个时候调用 t.index
t=df[:1]
class 'pandas.core.frame.DataFrame'>
#这是返回的是一个DataFrame的一个子集。 此时 你可以继续用dateFrame的一些方法进行操作。
删除dataframe中某一行
df.drop()
df的内容如下:
df.drop(df[df[u'代码']==300141.0].index,inplace=True)
print df
输出如下
记得参数inplace=True, 因为默认的值为inplace=False,意思就是你不添加的话就使用Falase这个值。
这样子原来的df不会被修改, 只是会返回新的修改过的df。 这样的话需要用一个新变量来承接它
new_df=df.drop(df[df[u'代码']==300141.0].index)
判断DataFrame为None
if df is None:
print "None len==0"
return False
收起阅读 »
30天学会量化交易模型 Day04
股市有句话,新高后有新高。
因为新高后说明消化了前面的套牢盘。 所以这个时候的阻力很小。
下面使用一个例子来用代码获取当天创新高的股票。
使用的是tushare
#-*-coding=utf-8-*-
__author__ = 'rocky'
'''
http://30daydo.com
weigesysu@qq.com
'''
#获取破指定天数内的新高 比如破60日新高
import tushare as ts
import datetime
info=ts.get_stock_basics()
def loop_all_stocks():
for EachStockID in info.index:
if is_break_high(EachStockID,60):
print "High price on",
print EachStockID,
print info.ix[EachStockID]['name'].decode('utf-8')
def is_break_high(stockID,days):
end_day=datetime.date(datetime.date.today().year,datetime.date.today().month,datetime.date.today().day)
days=days*7/5
#考虑到周六日非交易
start_day=end_day-datetime.timedelta(days)
start_day=start_day.strftime("%Y-%m-%d")
end_day=end_day.strftime("%Y-%m-%d")
df=ts.get_h_data(stockID,start=start_day,end=end_day)
period_high=df['high'].max()
#print period_high
today_high=df.iloc[0]['high']
#这里不能直接用 .values
#如果用的df【:1】 就需要用.values
#print today_high
if today_high>=period_high:
return True
else:
return False
loop_all_stocks()
可以修改 函数 is_break_high(EachStockID,60) 中的60 为破多少天内的新高。
上一篇:30天学会量化交易模型 Day03
http://www.30daydo.com/article/15
下一篇: 30天学会量化交易模型 Day05 (tushare数据写入SQLite)
http://www.30daydo.com/article/73 收起阅读 »
安卓系统常用命令 adb shell
1. 安卓关机(非重启): adb shell svc power shutdown
2. android开机的时候跳过初始化设置 (setup wizard): adb shell input text 1396611460
3.