挣脱人生的枷锁,控制自己的习惯

人自生下来就是生活在桎梏中,这个桎梏是由基因和模式组成的,对我们来说,人生中最重要的问题,就是,你或者其他人,是否会成为一个只能将基因和模式遗传给下一代的容器,而不自知

这个地球,六十亿人,绝大多数人都是被习惯支配的生活,也就是说,我们往往会一遍一遍的重复自己过去的生活,没有思索,没有反思,没有真正留意过身边发生的一切。大多数人只是活着而已,没有对这些生活进行整理消化,所以,也就没有经验。

所以,要让这一生更有意义,一个重要的题目,就是控制自己的习惯。其中一个最重要的习惯,就是用心,就是我们作文课上的“用心观察”,“用心思考”,这两个词语,我们学过了几十年,但到现在我都不敢说自己真正理解了。

其中一个方法,就是“松弛眼睛”,放松自己的双眼,让自己关注全局,跳脱到自己的身体之外,观察自己、周边的人、这个世界的运转,这样,会更容易做到用心,用心体察自己的坏习惯和好习惯,体察自己的睡眠、饮食、锻炼、社交、学习,然后甄别出来,去除其中坏的习惯,培养好的习惯。

我个人就有一些坏习惯,比如经常刷微信、邮件,手机放在手边,经常刷,一不小心,一个小时过去了。然后我也会经常睡觉很晚,经常要到凌晨,这个也要改。我也有负面思考的习惯,一些事情,本来是一个中性的事件,我会经常从负面的角度考虑这个事情,导致自己心情变差,结果也不会那么好。

最近,我也养成了一些好习惯,比如每天12点之前睡觉,比如我会每天花时间听书、阅读和学习,我自己也会经常记录日记,反思自己,我自己做笔记的习惯也不错,能力也在不断加强。对身体的关注,对思想的关注,这些也让我自己能让我的桎梏吧。

我在努力,反思自己的人生,试图控制自己的习惯,以挣脱这人生的枷锁,你呢?

如何设定目标——写在定半年KPI之际

进入职场,难免都需要设定KPI,或者是OKR,或者每季度做一次,或者半年甚至一年,但无论如何,目标都是需要设定的,而目标设定本身,也是管理各项工作中最基础的工作之一,所以,今天写下,我对目标设定的理解。 

  1. 目标设定要管理者自己做

    目标设定很重要,不建议直接交给下属去做,因为,只有管理者你自己才知道你的团队要做什么,想做什么,目标是什么。

  2. 要有整体的方向

    一方面,你需要从你的上级那里获得一些“输入”,比如你是一个部门经理,那么你需要从部门主管/总监那里获得整个部门的一些策略。

    另一方面,你需要给你的下属一些输出,如果你是一个部门主管,那么你的下属在制定KPI的时候,你需要给一些方向和整体的基调,不然下属制定的KPI可能并不是你想要的,比如今年整个部门的目标是要“专业化”,还是要“自动化”,还是“平台”更重要一些?这些基调定了,KPI才能更好实施。

  3. 目标要少,要有重点

    设立目标之前,要不停的问自己,这个目标真的是最重要的么,如果不做会如何呢?多问自己几遍。

  4. 目标要定责到人

    所有的工作要有一个唯一的明确的负责人,这也是项目管理的一个基础理念,目标设定也是一样。

  5. 目标是愿景、措施、资源的结合

    愿景的优势是考虑的比较长远,问题也是考虑的比较长远,所以可能不太现实。

    措施是实现目标的方法,有时候,如果目标不好确定,也是可以用措施本身来作为目标的。

    资源也是实现目标的不可缺少的因素,比如拿破仑等都是资源配置的高手,一场战役,需要多少马匹多少机枪多少粮草,这些资源配置往往是战役胜利的关键。

  6. 设立目标的原则

    具体包括SMART、PURE、CLEAR,具体见下方图片。

当然,目标设定仅仅是很多工作的开始,后续的监督、执行也很关键,后续再表。

读叔本华的《人生的智慧》

叔本华一生,只留下了唯一的一首诗,诗的最后一句是,“窗帘挡住了阳光:我的人生黯淡无光”,我的人生黯淡无光,这句话大概可以形容叔本华的一生,因为,叔本华的光芒在死后才爆发出来。这本书,是叔本华晚年的成名作,这本书的名字,人生的智慧,如何才能幸福度过一生,是我们每个人都需要思考的问题。

叔本华他自己是一个非常善于独处的人,甚至可以说是“寂寞”,他的一生,大部分时间都活在自己的思想里,所以他说,人类真正的幸福主要来源于思想,来源于想象力,来源于独处,来源于睿智,而不是外物。精神世界是否丰富,决定了幸福的层次,最高级最持久的幸福来源于你的想象能力,而不是外物,而不幸福只是因为你感觉不幸福而已。别人没法给你也没法拿走,即使你一个人的时候也陪着你的,是“你自己”,也就是你的思想,你的个性,这才是我们人类最本质的幸福来源。

当然,叔本华也指出,健康是第一位的,健康比什么都重要,有句俗语说,宁做健康的乞丐,不做病恹恹的国王,所以,牺牲健康追求任何事情都是不值得的,哪怕是让你去做国王,哪怕是完美的性爱,哪怕是至亲逝去,因为这些损失健康,都是不值得的。要想健康,要多运动,“多进行户外锻炼”,避免一切不愿快的情绪,避免过度紧张。

叔本华还提到了爱好,他把爱好必做一个美丽又富有的姑娘,追求她的人众多,但真正了解她的人没有几个。大多说人想和她在一起是因为和他在一起有面子,而真正喜欢她“自己”的没有几个。一个真正的爱好,你应该是爱这个爱好本身,而不是这个爱好会给你带来的东西,比如很多人说我要养成一个弹吉他的爱好,因为弹吉他可以用来撩妹,让人觉得我很有魅力,这种就算不上真正的爱好,只有当我真正喜欢上弹吉他本身的时候,弹吉他对我来说才算的上一个爱好,我现在大概还是一个没有真正爱好的人吧,如果应要算,读书应该算一个了。当然,反过来说,利用外物来学习一个东西,也没什么不对的,反而会增强自己的动力,但长期来说,反而会降低这件事情本身的乐趣。

读叔本华的这本书,还有一个收获,就是让我自己认识到了“闲暇”的价值。对我来说,我一直在努力的生活,工作,看书,路上的时间吃饭的时间也不想错过而会听书,甚至觉得谈恋爱看电影浪费时间,这样的生活,反思一下,有什么价值呢?我们人活在这个世界上,如果你永远在忙,那么你一辈子都不会闲下来,如果我一直这么匆忙,大概我也会匆忙的死去吧,所以,对我来说,学会享受闲暇,享受可以发呆的时间,才是人生真正的智慧吧。

如何做一次重要的演讲

心法

技法、算法、刀法,都是表象,最重要的是心法

心态上,可以想象非常冷静沉着的一名同事,他是如何做演讲的,比如董海峰,比如羊头的幽默,比如韩元的冷静和镇定,比如一些Ted视频里面的任务的举止相貌。想象自己被灵魂附体。

时间上,不要太在意时间,要打心底觉得自己讲的内容重要,比如虽然时间规定是五分钟,但是这个其实不太关键,还是要把内容讲清楚,不然这五分钟也是白讲。关注内容而不是时间。

多设想一下自己演讲的时候的情形,自己的语调、姿势和声音,当时是站着还是坐着,你的听众都有谁,他们在看手机还是抬头看你亦或是打瞌睡,想象一下每种情况你会如何应对,想象一下你讲完之后,其他人对你的认可。

最后,如果你很紧张,也可以想象一下最坏的情形如何,最坏的情形发生的可能性多大,发生了之后自己是否可以接受。这样,你会意识到,最差也查不到哪里去,就会不太紧张了。

一些要求

这是我对自己的一些要求,希望以后每次做Presentation都能做到。

声音要够大

这是善真之前的要求,他要求给老板汇报的时候,不用麦克风,最后一排的人能清晰的听到你所说的内容,声音够大了,紧张之类的,就会有所缓解。声音大了之后,也会显得你有自信一些。

提前演练

要总体演练一遍,估计一下时间,然后分开演练,将不太熟悉的环节多练习几次,录音,听自己的语气,看思维是否顺畅。

结构很重要

演讲的结构很重要,即使只有五分钟,也要有自己的演讲的结构和逻辑。比如总分总,比如“最重要的十件事”等等。

做好演讲的多维度思考

从多维度思考的角度来讲,如何做好一个演讲呢?演讲有哪些特性呢?比如有输入和输出,有听众和介质,针对这些特点,可以针对性的将演讲做的更好。比如介质不一定是PPT,还可以是白板,甚至是视频。比如输出有声音、视觉,视觉包括你的文档的展示,也包括你的手势和动作。

从《大象和骑象人》的角度来讲,一个好的演讲,不但要说服大象,还要说服骑象人,这两个需要的演示方法是不一样的,一个是需要理性的数据说服,另一个则需要用清晰的画面、场景说服。

我和手游《魔卡幻想》的故事

    前言:

    13年的时候,因加入网易游戏,开始从事手游行业。当时手游刚刚兴起,网易的大话梦幻手游还未开始,阴阳师的制作人也未入职,腾讯没有王者农药,当时只有《大掌门》等代入感很差却引领了一代风潮的游戏,而《魔卡幻想》则是当时接触的手游中最流行最绚丽最NB的一款,现在大浪淘沙之后,手游行业大局已定,回望当年这段玩魔卡幻想的经历,不禁唏嘘。

接触魔卡,同时玩三号:

最近,流行玩《魔卡幻想》,作为一名手游测试人员,也开始玩,于是申请了一个屌丝号码,取名“大头包子”。闯关、打塔,打了一个多月,只有一张五星黑龙,很是悲催。于是花了40两银子在淘宝上买了一个天使开局,附送了一个凤凰号。所谓天使、凤凰,就是其中两张比较NB的五星卡牌,如下图所示。

 



图一:天使,我的最爱
图二:凤凰

 

 

所以,我现在就有了三个号码,一个屌丝开局号,一个天使号,一个凤凰号。虽然说,手游本身不太花费时间,但三个号一起玩,就很费时间了,而且和其他手游一样,魔卡也有一个很“变态”的设置,就是有些行动,你必须间隔10分钟或者1个消失才能执行一次,每天中午事儿点和晚上十点还有“魔神入侵”的活动,然后在魔神被打死前,你需要每隔3分钟打一次魔神,才能获得足够的金币奖励,这样你就不能花五分钟玩完游戏,然后放手去做其他事情,你必须每隔一段时间上去看看,很是神伤。

另外,魔卡高级卡牌的获取有三种方式,一种是魔卡碎片换取,一种是晶钻兑换,一种是刷塔(反复的对指定的关卡进行通关),不管你是不是RMB玩家,不管你是大R还是小R,或者是如我之辈的屌丝玩家,换取高级卡牌都是很考验人品的,有人说洗漱好之后获得五星卡牌几率高,有人说,晚上六点到六点十分几率高,有人说贴吧爆照第二天会出五星,所以,十分的纠结,魔卡的五星卡牌发放到底是什么样的规则呢?

 

总结一下,问题有二,

第一、费时间:玩多个号、每天刷塔,耗费时间,而且需要你一直惦记着。

第二、运行机制搞不清楚:高级卡牌靠人品,不免想起,魔卡到底是怎么工作的呢?

遭遇困境,尝试反编译:

想搞清楚魔卡到底是怎么工作的,第一个,很自然的想法就是反编译。对Android程序更熟悉,所以,试着反编译Android版本的apk

 

我们知道android的安装文件.apk实际上是一个压缩包,所以将你下载下来的魔卡幻想的apk文件后缀改为zip并解压(我放置在D:\works\mokahuanxiang\下面),得到如下文件:

先看第一个文件夹assets下面,有两个文件夹,一个是卡牌的底图,一个是符文的底图,如下:

图:apk解压后的卡片底图,可以看到天使也在其中

图:apk解压后的符文图片

其他几个文件对我们用处不大,我们关注的代码都放置在classes.dex里面,游戏逻辑应该都写在里面了,不过classes.dex是经过Google制定的一种可以在android dalvik虚拟机上运行的格式,要查看里面的内容,先用dex2jar转换一下格式,命令行模式下运行:

dex2jar classes.dex

会生成classes_dex2jar.jar,这个jar包就可以利用jdgui来反编译,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jarclasses_dex2jar.jar,即可看到源代码了,代码如下图:

图:反编译后的java代码

 

 

致此,大功告成!但深入去看的时候,找遍了所有的代码,发现竟然完全没有逻辑代码,比如卡牌强化是如何强化的,魔神是如何的,盗贼是什么情况下出现的,纠结呀。那么逻辑代码都是写在哪里的呢?

反编AIR,柳暗又花明

可以看到,dex2jar的文件夹下面有一个shanks.flash.ane的类,aneAdobe AIR Native Extension,因为Adobe AIR是跨平台的,macwindowsAndroidIos都能运行,但也有其局限性,比如在Android上面,AIR就无法调用Android系统级别的API,比如摄像头,比如系统通知等,如果想做类似的事情,就需要先用android写一段本地代码,让AIR和这段代码通信,进而完成类似的工作,这也就是魔卡游戏的总体工作机制,如下图所示:

图:魔卡游戏架构图

 

 

所以,大胆猜测,大部分游戏逻辑是写在Adobe AIR层的,据百度百科,AIR是针对网络与桌面应用的结合所开发出来的技术,可以不必经由浏览器而对网络上的云端程式做控制,这样的优势,就是跨平台,主要的逻辑代码无论在Android上还是在IOS上,甚至在Windows Phone上都是一致的,在每个平台上,只要实现对应的系统API即可,这也是为什么,魔卡的账号体系在IOS上和Android上是统一的,不像某掌门游戏。

既然确定,游戏逻辑写在AIR层,于是开始找对应的实现文件,终于发现了:

图:找到逻辑代码所在处

得到了Cardmain.swf文件,在浏览器下直接打开看看,没有任何反应,只是白屏,怎么办呢?再来反编译,使用业界出名的硕思闪客精灵进行反编译试试,安装了一个企业版,打开这个swf文件,经过“漫长”的等待,终于,结果出来了,可以看到,游戏界面主要的形状、图像、音频、视频以及关键的动作脚本都是在这个swf文件里面的。

图:反编译后的Cardmain.swf文件

点开对应的额动作复选框,查看对应的脚本代码。其中有几个关键的文件和目录,其中一个是URLconfig文件,是记录的所有的客户端命令所对应的服务器指令地址,比如:

这个card.php?do=GetAllCard就是用来获的指定用户的所有的卡片的信息的,后面还有很多:

图:反编译的UrlConfig文件

核心逻辑代码写在这里:

图:魔卡核心逻辑代码

 

以卡牌/符文强化为例,每张卡牌都对应着一定的升级金币和经验点数,每张符文也有对应的经验点数,这是每张卡牌固有的属性,当你升级的时候,是将被升级卡牌的金币和经验乘以一个系数进行累加,然后再计算被升级卡牌、符文的升级情况的,具体代码片段如下:

 

可以看到,一星卡牌的升级系数是0.6,二星卡牌是0.7,以此类推,也就是说,如果你吃三星卡牌,那么你将损失20%的经验,如果你吃五星卡牌的话,那么经验点将完全不会损失哦,不过又有几个非大R玩家能富裕到舍得吃五星呢~~

当然,里面还有很多其他秘密,待你去发掘。

协议分析,自动打迷宫

到目前为止,我们了解了魔卡的架构,还有一些底层的实现,我们知道,主题的逻辑是通过AIR来和服务器进行交互,所以,大部分命令都是server端完成的,那么,很自然的想到,分析一下协议,使用大名鼎鼎的wireshark软件抓包。但是,魔卡幻想是个手机游戏,想要抓手机给服务器端发包,怎么做呢?可以用模拟器来做。

大家知道BlueStacks本身就是一个android模拟器,这个模拟器运行在我的windows操作系统之上,那么,我在BlueStacks上玩魔卡幻想的时候,所有的命令包都会通过我操作系统的网卡发送出去,所以,利用wireshark抓取windows上的数据包,也就能够抓取到魔卡幻想给其服务器端的数据包了。

我们先看一下,打一个迷宫,大致的数据流如何。我现在在末日之塔,也就是7塔,第四层的最后一个怪,先在BlueStacks上进入这个状态,然后打开wireshark开始抓包,打怪,结束后停止录制,查看wireshark上的信息。

记录的网络通信包,如下图所示,因为wireshark记录了所有的网络交互,所以,我使用一个Filter来过滤我们所关注的数据包,filter为:

http && (ip.dst == 116.90.81.139) || (ip.src==116.90.81.139)

这句话的意思是,我过滤http协议的,目标地址为116.90.81.139或者源地址为116.90.81.139的协议包,其中116.90.81.139为魔卡幻想的web server。可以看到,其实,每次打一个怪,相当于,给服务器发送了一个POST命令!POST的数据内容为“manual=1&MapStageId=7&Layer=4&ItemIndex=13”,这句话什么意思呢?Manual=1,代表自动战斗,MapStageID=7,代表我打的是第7个塔,也就是末日之塔,ItemIndex=13是什么意思呢?为什么是13呢?暂时搞不清楚。

再刷几个怪,对比一下数据,我们发现,每进入一个楼层的时候,服务器端会返回一个本楼层的一个基本信息,我们看一下,末日之塔第四层的信息如下:

{"status":1,"data":{"Name":"\u672b\u65e5\u4e4b\u5854\u7b2c4\u5c42","BoxNum":2,"MonsterNum":2,"RemainBoxNum":2,"RemainMonsterNum":1,"Layer":4,"TotalLayer":5,"Map":{"IsFinish":false,"WallRows":[0,0,0,1,0,0,0,0,1,1,1,1,0,0,1,0,1,0,1,0,0,0,0,1,1,0,0,0],"WallCols":[0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,1,0],"Items":[1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,3,1,1,1,1,6,1,4,6,1,1,6,1,1,1]}},"version":{"http":"201302090","stop":"","appversion":"version_1","appurl":"ios:\/\/xxx"}}

 

其中Name字段是unicode编码,然后用gb2312编码打印出来,"\u672b\u65e5\u4e4b\u5854\u7b2c4\u5c42" 就是“末日之塔第4层”,后面的字段顾名思义,重点说一下Items字段,我们发现,"Items" : [1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,1,3,1, 1,1,1, 6, 1 , 4, 6, 1,1,6,1,1,1 ] 28位,我们调整一下格式:

[1,1,1,1,1,1,1,5,

1,1,1,1,1,1,1,1,

1,3,1,1,1,1,6,1,

4,6,1,1,6,1,1,1]

再和下图对比一下,

你会发现,这个Items字段中,1代表普通方块,5代表是向上的楼梯,4代表向下的楼梯,6代表已经被打掉的宝箱或者怪物,同理可以分析,2代表宝箱,3代表怪物,然后indexitem就是方块的索引!

这样,我们自动打塔的思路就确定了:

先获得每一层的信息,然后分析一下这一层的怪物和宝箱的情况,得到对应的indexitem,然后再POST给对应的server就可以完成了,上代码:

其中maze_info返回的是一个指定地图和楼层的json格式的信息,我使用exec将其转化为一个dict对象,然后获得其中的Items字段,如果这个字段是2或者3的话,我就去打,最后再打去楼上的楼梯口,很简单吧。

 

具体如何打的呢?请看maze_battle函数:

 

关键是我们的PostMessage函数,我们最终都是通过这个函数,组成特定的魔卡服务器能识别的http协议包,利用Post命令发送出去,发送的http协议包的内容为:

 

POST /maze.php?do=Info&v=9945&phpp=ANDROID&phpl=ZH_CN&pvc=1.2.0&pvb=2013-04-16%209%3A18%3A23 HTTP/1.1

Host: s9.mysticalcard.com

Accept-Encoding: identity

Content-Length: 20

Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, text/css, image/png, image/jpeg, image/gif;q=0.8, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, application/futuresplash, */*;q=0.5

User-Agent: Mozilla/5.0 (Android; U; zh-CN) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/3.6

Connection: Keep-Alive

Cookie: _sid=qjl7qn8js501756f57lrevet55

Cache-control: no-cache

Content-Type: application/x-www-form-urlencoded

Refer: app:/assets/CardMain.swf

 

Layer=2&MapStageId=5

 

 

使用pythonurllib库来进行http协议发送,另外,由于server端可能返回gzip格式的数据内容,所以需要利用pythongzip库对gzip格式的返回数据进行解码。

这样,刷塔的程序就大致成型了。

最终,你只需要两行代码就能完成刷塔工作了:

这两句话的意思是,我新建一个魔卡幻想的对象,然后刷第五塔的一二三四层!搞定。

再举一个简单的例子,就是对某个地图进行探索,返回信息,下图为我进行一次探索的运行截图,我对编号为44的关卡进行探索,获得了740点经验,1280个金币,以及一个8号魔幻碎片。

图:探索地图协议流

图:探索地图获得奖励

除了自动打地图、自动探索外,你可以利用协议做更多的事情,比如每隔10分钟获取一次盗贼,如果有盗贼,则挑选级别最高的打。再比如每天中午12点魔神入侵的时候,你每隔3分钟打一次魔神,这样会累积比较高的积分,也不用你总是惦记着打魔神这回事了。

登陆破解,大江已东去

上文中,利用http协议进行自动打塔,有一个关键的地方没有说明,就是登陆。魔卡幻想本身具有自动登陆的功能,其实现的原理就是利用Cookie信息,如果你发送http请求的时候,http头携带了Cookie字段,而且Cookie字段和你最近登录一次的设备匹配的话,那么就不需要重新登录,而可以直接进行一些对应操作了。魔卡对cookie信息的处理流程大致是,如果你发送过来的cookie信息在我的server端有记录,而且最近登录设备匹配的话,那么我就返回给你所有你需要的信息。这样,如果你有一个账号,只在一台设备上登录的话,那么你可以一直用这个Cookie,但是如果你有多个账号的话,则需要一个手动登录账号的过程,非常麻烦,能否进行自动登陆呢?那么我们就来看一下魔卡的登陆是怎么做的吧。

继续抓取登陆的时候的协议,如下图所示,即给login.php?do=PassportLogin发送一个POST命令,POST的消息体内容为Devicetoken=&time=1371305578867&key=7a370df34c5fddd1f1c6ee9d6279d7da&Origin=TTGW&Udid=3D%3ABF%3A4A%3A6A%3AC0%3A7D&UserName=qqqaaagsr&Password=1000616820。其中Devicetoken为空,time为自Epoc以来的秒数,key这个东西,猜测是用来做验证的,比如验证cookieuid等是否是一致的。Udid是设备的唯一标示信息。UserName是我的账号名,password=1000616820,这个是经过加密之后的密码。

试着直接将UserName改成我另外一个好的用户名,发送POST信息,得到一个错误“passport\u7b7e\u540d\u9a8c\u8bc1\u5931\u8d25!”,意思是:“passport签名验证失败!”。猜测玄机在key上,其应该是用来验证UdidUserNamePassword的一致性的。

图:魔卡登陆协议包抓取

但是,这个key是怎么生成的呢?猜测是在登陆页面生成的,同样利用反编译,找到其登陆界面的网址,为:http://pp.fantasytoyou.com/pp/start.do?udid=3D:BF:4A:6A:C0:7D&locale=CHS&gameName=CARD-ANDROID-CHS&client=flash,这样就可以在Chrome中打开了:

图:在chrome中打开登陆界面

邮件查看源码,发现其主要的登陆逻辑都是写在“http://d.muhecdn.com/pp/V20130528/js/startHttp.js”这个js脚本里面的。时间关系,这个登陆的破解暂时还没有搞定,服务器端总是提示Passport验证错误,到此为止吧,后续有进展再通报。

【更新】:经过一段时间探索,自动登陆终于搞定了。魔卡的服务器,主要有两个,第一个是业务服务器,hosts9.mysticalcard.com,绝大多数的业务操作,日常事务都是和这个服务器交互完成的,还有一个是登陆验证服务器,hostpp.fantasytoyou.com,是专门进行用户登陆的验证的,所以,登陆共分为三步:

第一步,先给业务服务器发送一个GET请求,进入登陆界面。包主题内容为:GET /pp/start.do?udid=3D:BF:4A:6A:C0:7D&locale=CHS&gameName=CARD-ANDROID-CHS&client=flash,返回的即使登陆界面。

第二步,将用户名、密码、设备标识信息发送给验证服务器,获得密钥。包主体内容为POST  /pp/httpService.doPOST的内容为:{"serviceName":"login","callPara":{"userName":"qqqaaagsr","userPassword":"password1","gameName":"CARD-ANDROID-CHS","udid":"3D:BF:4A:6A:C0:7D","clientType":"flash","releaseChannel":"","locale":"chs"}}

返回的信息(密钥)如下:

{"returnCode":"0","returnMsg":"No error.","returnObjs":{"GS_NAME":"server9","GS_IP":"http://s9.mysticalcard.com/","friendCode":"null","GS_PORT":"80","timestamp":"1372814484134","GS_CHAT_PORT":"8000","source":"qqqaaagsr","userName":"qqqaaagsr","GS_DESC":"","U_ID":"1000616820","key":"b1ddb0dd6c2ab73ff1b5cb84b2c9d465","G_TYPE":"1","GS_CHAT_IP":"116.90.81.139"}}

第三部,利用上述返回的信息进行登陆,在业务服务器上的login.php进行登陆,包主体内容为:POST /login.php?do=PassportLogin&v=3539&phpp=ANDROID&phpl=ZH_CN&pvc=1.2.0&pvb=2013-04-16%2012%3A46%3A54POST的消息体为:Devicetoken=&time=1372814484134&key=b1ddb0dd6c2ab73ff1b5cb84b2c9d465&Origin=TTGW&Udid=3D%3ABF%3A4A%3A6A%3AC0%3A7D&UserName=qqqaaagsr&Password=1000616820,登陆成功。

 

其中,登陆能否成功,上述的三个蓝色字段是关键字段,其中timestamp是个时间戳,验证的时间戳必须和登陆的时间戳为同一时间,key是验证服务器生成的一个类似MD5的数值,要伪造不太可能,只能通过截取转发的方式来记录,而U_ID字段,则是在登陆的时候作为Password这个参数的值传递给server的。

最终的效果为:

这段代码既可完成对我三个账号的第8塔的1~5层进行刷塔。

    后记

    本文原创,因为涉及到摩卡幻想等商业游戏,如有侵权,请联系本人修改或者删除。

玩德州扑克有感

这次徽杭古道,和一帮同事朋友玩德州扑克,大概玩了两个小时吧,输了300块,如果时间长一点,相信应该能收支平衡的。这是我第三次正规的玩德州,前两次分别是+300,+3000,这次负300,还是有一些感触的。

玩德州还是要主玩运气,而不是技术。和非顶尖高手玩德州,还是不要bluff,靠运气为主吧。如果牌不算好,就急流勇退,不要担心自己可能错过某个对子而不进场。牌好的话,再进彩池。这样,即使每轮大小盲都需要花一点钱,只要自己能控制住,500块够玩一晚上了。

不要秒Call,关键时刻、筹码大的时候,做决定的时候不要太快。记得有一手,我转牌击中Set,对手则天成的顺子,手里是AJ,而翻牌则是KQT,一把被输了近500块。我当时被All in,call的时候是秒call的,甚至没有考虑到还有顺子的可能,如果有考虑的话,我大概能少损失至少300块钱。

 

保持自律。德州扑克是很考验技巧、经验的。给自己设定一个底限,比如今天晚上如果我输了一千块就不玩了,那么,当输了一千的时候,就一定退场。比如,如果大家都要熬夜来玩德州的话,可以找机会说想休息下,找人替代一下,这样既不会扫大家的兴,也能保持自律而不过度熬夜。

Have fun~~

什么是好的下属?

所谓好的下属,个人觉得要包括如下方面:

一、“结果”好的下属。

结果好包括两方面,首先是没有明显的负面反馈,第二是工作有亮点。

二、让老板“省心”的下属。

好的下属需要了解老板的风格,不让老板担心,也不耽搁老板太多的时间,在关键的问题上让老板决策,同时,提供足够的信息和帮助以减轻老板决策的压力。

三、能培养自己下属的下属。

一个好的下属,团队里面来了牛人,不会让这个牛人埋没,担心自己被抢了功劳,相反,他会给牛人更多展现的机会,更多培训的机会,更重要的项目,以让这个牛人脱颖而出。

四、“积极主动”+“正能量”的下属。

这两个性格特质,也是很多公司都很看中的。积极主动的人就让人很“省心”,你交代的工作,他完成的很好,你没有交代的工作,他会主动发现并完成。正能量的人,只要他在团队中,整个团队的斗志就会被带动起来。这两种性格特质的人越多,你的团队就越好带。对于这两种性格特质反面的人,则需要冷处理甚至替换了。

如何做更好的决定

对如何做选择,最近有了一些感悟和想法,和您分享如下。

了解你自己。你要知道自己是偏悲观还是偏自信,是否喜欢拖延,是否容易冲动,喜欢完美,还是差不多就好了。一般人都有两面,有的人过于自信,炒股的话,赚钱了,那是自己技术好,没赚钱,那是市场太差。有的人则相反,会过于悲观或者自卑。了解自己之后,才可以下意识的往自己性格的反方向对冲一下。

了解自己的偏见。我们都是人,是人都是有偏见的,而做决定的时候,要将我们的偏见作为一个元素考虑进来。比如,一般人都会选择搜集和关注那些他们自己认为正确的论据,我们听到的都是我们想听的话,所以,我们要主动寻找与自己信念不一样的信息。比如面试一个人,如果上一个面试官和你说这个候选人很优秀,你的第一印象也不错,那么,你就需要反过来想,主动去找这个候选人不好的地方。

我们的偏见还和我们的经验有关系,同一张人脸的照片,一般人看到的就是一个人的脸而已,而整容医生则看到的是一个不完美的鼻子。带来偏见的经验,也包括我们接收到的信息,比如很多人认为坐飞机比汽车危险,认为单亲的儿童往往会走上犯罪的道路,认为那些名人做了某些事情成功了,我做那些事情也能成功,这些,都是媒体、书籍等信息带来的偏见。还有些偏见来自地域、种族、时间。

人类是看不清自己的,认为自己比其他人强,这是,就要站在局外来看,比如你要开一家餐厅,你很可能高估自己成功的可能性,而低估别人成功的可能性,那么,你可以想象,你最好的朋友开了这么一个餐厅,他成功的概率有多大,然后这个概率就是你自己成功的概率。

相对于同样比例的收益,人类更害怕损失,所以,一般人都是避免冒险,而不是追求收益,这也是很多人一般会卖掉已经挣钱的股票(追求收益),而很少割肉,抛售赔钱的股票(避免损失)。对于一般人来说,比自己想象的更冒险一点会更好。

人生很长,但真正重要的决定就那么几个。所以,不要纠结于过去的决定,因为那些是沉没成本。也不要在日常的琐事上话费太多的时间,比如点什么菜,走那条路回家,对于这些小的决定,告诉自己,这不过是一个小决定而已,决定错了也影响不大。而是,要在真正有着长远影响的决定上,尽量理性的决策,先确定大致目标,然后获取足够但适量的信息,为每个维度打分,然后选择得分最高的那一个。

最后一个小技巧,就是10-10-10决定法,在做一个决定前,问问自己,如果自己做了这个决定,那么10分钟内会怎样,10天后会怎样,10年后会怎样,这样思考之后,你往往就有了自己的答案。

祝你能做出好的决定。

零秒工作——速度解决一切的麦肯锡工作书

所谓零秒工作,就是超高效的工作,高效思考,高效执行,高效的给出结果,几乎只花了“零秒”的时间,所以,称为零秒工作。

先对工作有个整体的概念。

有整体概念之后,人的潜意识,已经在后台开始默默的为你干活了,所以,我会在每天早上或者提前一天的晚上,将第二天要做的事情过一遍,心里有个预期,这样在自己的心中就会大致有一个进度条。人类很爱进度条,就像创业过程中随时有个数字(股指)标示你的创业进度一样,让人有控制感。

就像看书,先花十分钟将目录仔细看看,书大概翻一遍,这样看书的效率会提高,也能吸收更多的东西。

在工作中保持紧张感。

这是我最近感受比较深的一句话,知道了这句话之后,我个人的工作产出有了几倍的提升。因为之前我更加关注事情的优先级,低优先级的事情不做,而最近,我则会更多的关注产出,给自己一些压力,看到需要回复的邮件立马回复,想到要推进的重点工作,立马打一个电话,而不是犹豫半天,想起一件需要推进的事情,立马给对方发个消息询问一下进度,这么一天下来,会发现自己完成的工作成果就会有成倍的提升。

凡事提前:先行一步、提前完成。

先行一步,首先就是提前思考,在平常的生活中就需要不断地想,那些事情可能导致问题发生,这样出现问题的时候,就能把握住问题的要点,看透问题的本职。

当然,先行一步,并不只是先思考,还包括比别人提前调查信息,主动设定会议主题,在别人之前对某个方向有个认知,这样才能更容易产出成果,获得认可。当然,也不要冒进,只要比别人早一步,甚至半步就好。我之前是觉得,应该先看别人怎么做的,然后自己照着来,这样对我个人来说比较保险,不过很多事情,这样自己就会比较被动,更多像个跟进者,而不是领导者。

提前,专注于只有自己才能完成的工作,对于那些可以委托给其他人的则尽量委托,不重要的工作,尽量不做。

假设思考+本源思考。

假设思考,是说遇到一个问题的时候,需要心底有一个假设,然后在解决的过程中不断验证自己的想法。不要担心自己的假设不对,“反正只是个假设,不用太在意”,“以后还可以反复修改”,深入一线,直接到短兵相接的地方,这样就不会出现对于一个问题没有任何意见的情况,因为他们习惯了这种思考方式。

本源思考,就是抛弃之前的各种约束,而直接从食物的本源思考,比如马斯克解决交通的问题,不会去想怎么让汽车更快,而是思考交通就是位置的转移,进而想到了Hyperloop这种创意

5个为什么探究真相。

连续问5个,“这是为什么呢”?这差不多分析能力和独创性的全部内容。问的时候,不要担心自己被嘲笑,问出来被嘲笑一秒,不问,被嘲笑一生。提问的时候,不要怀着挑刺的态度,而是要时钟保持感谢和敬意,因为人类对这种情绪很敏感,对方很容易能感受到。

多花点钱在学习上。

如果你能够将你的收入的5%花费在你的学习上,那么,你将获得非凡的成就。看书,买付费视频,定得到收费频道,参加专业培训和讲座,相信我,你一定会成长的飞快。

矛盾和统一(2017.6.11)

关于外向和内向:

研究表明,一般情况下,外向的人在当今的社会更有优势一些。平均下来,外向的人的薪资比内向的人要高10%,如果是领导者,那么这个比例会更高。

但,实际上,内向的人一般能力更强。

所以,作为一个内向的人,在职场中还是要扮演一下外向的角色,主动跟人打招呼,多表达自己的观点,展示自己,会更好。

科学和诗歌:

如何描述一朵花,现在的科学还比不上诗歌更精准,现在的科学只能描述花的质量、物理以及很小的一部分化学特性,至于为何一朵花会开花那么美,科学还不能解释万一,这个时候,诗歌就更加精准了。

数学的对错:

数学没有对错,只有合理和不合理,所谓合理就是一致性。比如你不能说集合论或者虚数不对,因为他们是“合理”的,也就是“自洽”的。

营养学和宗教:

营养学感觉和宗教差不多,吃素的人,说动物在被宰杀的时候会释放毒素,肉不能吃。而吃肉的人,则说人类自远古时代开始就开吃吃肉吸髓,而《谷物大脑》中更有示例证明,谷物降低了人类的智商,缩短了人类的寿命,所以还是要吃肉。营养学,感觉和宗教有些像,暂时也没有对错,只是你个人的喜好而已。