protobuf生成demo


### 进入例子目录

“`
cd $odp_root/php/phplib/protobuf/example
“`
### 编写proto文件

`foo.proto`文件如下:

message Foo
{
required int32 bar = 1;
optional string baz = 2;
repeated float spam = 3;
}

### 编译proto文件
“`
php ../protoc-php.php foo.proto
“`
编译后,可生成一个`pb_proto_foo.php`文件

### 编写用户代码

`example.php`文件如下

<?php
require_once ‘pb_proto_foo.php’;

$foo = new Foo();
$foo->setBar(1);
$foo->setBaz(‘two’);
$foo->appendSpam(3.0);
$foo->appendSpam(4.0);

$packed = $foo->serializeToString(); #打包

$foo->clear();

try {
$foo->parseFromString($packed); #解包
} catch (Exception $ex) {
die(‘Upss.. there is a bug in this example’);
}

$foo->dump();
?>

然后执行`php example.php`,预期结果:


Foo {
1: bar => 1
2: baz => ‘two’
3: spam(2) =>
[0] => 3
[1] => 4
}

三个忠告

第一,永远不要走捷径。便捷而陌生的道路可能要了你的命。

第二,永远不要对可能是坏事的事情好奇,否则也可能要了你的命。

第三, 永远不要在仇恨和痛苦的时候做决定,否则你以后一定会后悔。

互联网商业创新 听后笔记

今天听了一课:互联网的商业创新,觉得还不错,简单记一下笔记;

先捡记得成体系的来说;

在创业的过程中,也就是从0-1的过程中,我们会经常从3个方面去分析这个创业的事情,行业、市场、产品;

行业分为3点:
第一点是趋势,一个行业未来5-10年的发展趋势,是用户增加的还是用户降低,是成本升高还是降低,一个用户逐渐增长的行业肯定要比一个下降的行业机会更多,比如养老,比如移动互联网;
第二点是自身的价值和愿景,你在这个行业内你自己的价值是什么,你的愿景是什么,
第三点是在你理解了自己价值和愿景之后,怎么对行业重构达成你的目标;有a,b,c3类公司,a公司自己提供技术,b公司用a公司的技术去改进自身业务,c公司用a的技术去创造新的业务,你对行业的重构可以体现的两个方面,价值重构或者供应重构,价值重构如小米手环,之前的手环成本是599,699,但是华米公司一夜之间把价格从599打到79,那么其他的公司就不用玩了,小米投了300万,一年不到估值就翻了好多番,收获1个亿;

接下来是市场,从格局业务,多市场组合,逐层抽象业务本质来考虑;
格局业务指的是需要对市场进行认真仔细的分析,如低频还是高频的,一般来说跨市场的组合,都是通过高频来拉动低频,比如聊天是高频的,而打车是个低频的,所以微信能推滴滴且效果不错,同样的事情支付宝推动快的就不好做,第二点,通用性和专业性,举个例子,打车、买衣吃饭、买房,就是通用、一般、专业的三个例子,打的对不同的的士区别较小,所以是一个非常容易做抉择的产品,而买衣、吃饭,就需要稍微看看了,至少你会去点评看看评分,看看评价,而买衣服也是一样,需要经过一些思考才能进行抉择的,而买房就是完全专业的事情,需要经过较长的思考才能得到决定;针对这三个,一般来说,越通用的利润越低,赚的是规模效益的钱,越专业的利润越高;第三就是市场份额和利润获得,市场份额,一般能到c轮的公司,如果排行业第三,基本上就不能往下走了,会死掉,拿不到vc的钱;

接下来是多市场进行组合,现在的市场基本上都是组合市场,从一个市场获取用户,然后在另外一个市场去赚取利润,通过不同市场的利差来赚钱;如天猫、百度都是免费提供服务,赚的是广告的钱,腾讯提供的是社交,赚的是游戏的钱,乐视卖的的赔本的电视,赚的是内容的钱,这些都是把传统行业往死里打的节奏,如果只是单一业务,很容易会被玩死;比如ibm和亚马逊一起去抢一件云计算的订单,亚马逊出的价格是ibm的1/10,ibm说你这样做不道德,单是亚马逊用的不是专业的机器,用的是他所有服务中间的idle资源,成本自然就很低了,所以即使出1/10,还是有得赚;

第三个是逐层抽象业务本质,如餐饮:其实就是价格、口味、服务、环境、停车,5个选项,电商就是低价、服务、便利,要想更深刻的理解用户需求,了解本质才是最重要的;

产品,早期产品验证需求是最重要的,能够满足用户的需求,就只有快和慢的问题了;然后在0-1的过程中,土匪式的打法是比较好的,在1-10或者10-100的过程中,引入mba或者商学院的同学会不错,因为是阵地战,可以保证比较稳定的增长;
以上是比较成体系的回忆,接下来是不成体系的回忆:

产品最重要的是满足用户的需求,举个例子,用户买车的核心需求不是为了买车,而是为了出行便利,如果解决了出行便利,就可以从根本上撬动传统的卖车行业;另外一个例子,现在汽车除了当成交通工具,本质上是一个移动的iphone,如果有一天,小米把汽车当成手机一样的来制造,是不是传统的汽车行业就面临的巨大的风险;互联网不仅仅可以按成本或者低于成本出售,还把卖车中间的4s店干掉了,营销成本降低,还可以用其他行业的钱来补贴汽车,因为对移动互联网来说,车的利润固然不错,但是更重要的,他构造了生活中最重要的一个移动场景,你控制了这个,想想可以在上面卖电影票,卖门票,卖团购,卖直播电影,卖广告,卖游戏,所有的一切都可以在里面干。。。这里面有巨大的市场,其他所有的入口都要经过,想想就是带来多大的量呀,而且车还是一个5-10年的产品,简单想想这就是一个革命呀,把宝马从50万干到10万,不是梦。。。
然后简单分析一下出行的东西,出行的动机分两种,一种跨城市、一种市内,跨城市主要是出差和旅游,而市内,主要是上班和逛街吃饭等,针对不同需求,可以衍生不同的产品出来,如滴滴打车、神州租车、大巴、嘀嗒拼车

传统的行业,经营的是一种产品,参考的是大部分人都认可的产品模式,通过规模效益来赚取利润,互联网经营的是用户,需要对市场进行拆分,需要挖的更深入,亚马逊是最大出版商,滴滴是最大的出租车公司,作为互联网公司,做的成本都不在自身,而在第三方;亚马逊的商品周转在10天左右,沃尔玛在40+,其他国内公司的周转时间就更长了,周转的越快,赚的越多;

在设计产品的时候,要把用户当做小白来设计产品,如iphone,利润接近50%,用户不关注的是几核,关注的是体验,服务业的如银行就是体验不好的产品;

目前的世界是整合的世界,单一的市场容易被干掉,如tcl,之前小米推出1999的彩电时,表示还好,售价还是微高于成本,还有的赚,但是当乐视出来1499的电视之后,就完全没办法了,成本也不止2000呀,乐视不通过硬件赚钱,需要绑定的是两年内容服务,接近900块,卖的是内容,传统的电视制造业就没办法了,从来没做过内容呀,怎么做这个,总不能一直亏吧,而对乐视来说,即使1499,还是有得赚,这个战争就没办法做了;

亚马逊的机器人还是不错的,仓储完全用机器人来做,非常赞;

无人车也不错;

顺带提一下之前看的一本书的3点,创业需要考虑的3点,成本多少,和其他的差异性,业务需要聚焦;

顺便想起来前几天和同学一起吃饭自己的点子,他们的提议确实还不错,创业的时候,自己的优势是什么,需要无限的放大自己的优势和别人竞争,而不是从头开始和别人pk,没有优势呀;

最后获益较多,感觉不错!谢谢陆教授以及组织培训的同学;

结构性思维

今天上了结构性思维的课,简单写一些读后感;

之前记得讲过一种做ppt的方法,基本上都是从这几个方面来说的,背景,现状,难点,方案,结果,这种方案我觉得是用来说解决问题会比较好,然后我觉得结构性思维,是用来介绍问题的,用于做事情的第一阶段;

好了,言归正传,结构性思维是帮助我们梳理和介绍问题的方法,总结起来就是4点:

 

1. 结论在前

2. 上下一致

3. 分类清楚

4.排序逻辑

 

结论在前,是我们一般人都会想到的,在上课的时候也确实大部分同学都会做这一部分处理,也就是把结论提前,在做议论文的时候,首先提出论点一般人都能想到;

 

上下一致指的是你提出的论据要和论点一致,也就是你提出的点和你的论点要一致,这个在上课中,有一些人会忘记这个,尤其在重新组织的时候,会出现逻辑不支持的情况;

 

分类清楚是里面较难的地方,主要是我们一般不太会做分类的事情,或者没有主动的去做分类的事情,分类有两个判断标准,一是分清,二是分全;

 

逻辑排序,是第四个要关注的成分,可以按时间、结构性、重要性来进行排序;

 

但是这样看起来也没啥逻辑的感觉,这四个点到底是怎么组织在一起的了;

 

最近一直比较懒,所以这个属于很久之前的记录,一直都没有做,所以先自我批评一下;

 

这是一个多月的前的培训了,我就不在这里做总结了;

 

当时主要讲了4个点,结论在前,上下一致,分类清楚,排序逻辑;这四个点是这样的,首先从最开始的时候来讲,表明先要把观点放在前面,虽然我个人觉得这样效果不是特别好,然后是需要用论据来支持观点,论据需要进行分类,不要从一个点上去讲,而且尽可能覆盖到所有的逻辑,同时不同的点需要有优先级,同时最重要的一点,你的论据需要支持你的观点的;这就是这四个点的主要逻辑;

 

比如说,我想表达的观点是想要加钱了,其实说实在话,这种方法比较适合公开的竞争场所,不适合真正的说事情;那为什么要老板支持我加钱了,可以说我工作很努力,可以说我给公司带来了很多效益,可以说我还带了很多小弟,可以说我从来没有出错,这些都是可以说的观点,但是应该怎么归类了,举个我自己的归类的方式,当然归类有很多种,这个只是我现在临时想出来的观点,要加钱,无非就是给公司带来效益了,这个效益我说的狭窄一点,就是纯粹给公司挣钱,那简单分类,无非就是开源+节流,开源,我的新项目赚钱了,我的工作很努力,我带了新员工,节流,我从来没有出错,我还给公司节省了多少资源,这是最简单的分法,然后再来一个简单的排序,开源自然比节流更讨喜,新项目赚钱自然比老项目努力更吸引眼球,做个简单的排序;

 

这是一个简单的分法,如果这个时候的标题,是老板给我加钱,也可以换个话题,为啥是给我而不是给别人加钱,这种时候你就要从你和别人相比的优势在哪里去讲,这又是一个分类+排序的问题,总而言之,论据是为了论点服务的,你的立论是什么,取决于你怎么去组织语言;

 

我觉得这一类的应该经常去训练,其实对训练逻辑非常好,如果有机会,去上个课也是不错的;

最近做的搜索

好久没写技术文章了,咱们就来随便写写吧

最近好一段时间,叔都在研究gss,gss是什么了,general special search,就是针对特殊搜索做的通用检索,好高大上的一个词,好吧,我们重头开始说;

搜索是什么?搜索就是通过技术帮人们找到他们心中想要的东西,这里面的关键是两个,第一个是找到东西,第二个是找到心中所想,换算成专业的术语,就是考察的两个指标是召回和准确,所有搜索的最终目标就是这两个;

1.召回

1.1解析query

从召回开始,gss的输入是用户的query以及da根据输入query分析出来的一些成分信息,da的事情我们暂不去说它,我们说一下gss是怎么解析的吧,他通过的是一套pattern+feature的方式来进行解析,pattern是什么,pattern就是从我们常用的语句中提取出的表达式,比如刘德华演的电影,表达式就是[actor][stopword][type],stopword就是一些连接词,这一个表达式可以覆盖,张学友的电视剧,陈赫拍的综艺这一系列的query,feature就是actor所有可能的选项,所以召回其实就是尽可能的挖掘出pattern,使得不管用户输入什么query,我们都能从中提取出足够多的信息来进行搜索,目前这一块我当然是做的比较low,主要指覆盖了一阶和二阶的组合,长尾的覆盖暂时还没有做,难点当然也是长尾的覆盖,既然我写了这个,表示之后会把长尾词覆盖做成一个topic来进行的,比如挖pattern;

但是这只是一部分,用户的输入解析其实应该是da做的,gss只是因为自己有业务体系,所以把这个也做了,提高召回最快的做法,还是接入da,之后可以花个一天的时间,把这个接进去;

1.2建索引

接下来说召回的另外一部分,也就是如何从商品数据中提出有用的特征和属性来建索引,这个事情的极致,就是切词,把商品的所有信息都切成可以理解的短语来建索引,当然这里的难点就是如何给不同的短语设置权值,避免引入不相关的切词短语;而一般的搜索,其实不应该从这个防线往下走,因为我们一般都是针对具体业务来的,比如视频、小说、商品、旅游,这些都是有很强的业务性的,而这些业务数据很多时候并不一定体现在商品上,他们是商品的标签而不是描述,所以在针对具体业务的搜索上,分类体系往往是更加合适的,即把一个检索问题变成一个分类问题,将商品扔到一个个合适的体系里,往往更加适合用户来进行选择;

举个例子,如美食,第一个体系自然是行业分类,他可以分为 川菜、湘菜、粤菜、火锅、麻辣烫、烤鱼等一系列菜系,这种分类可以帮助我们快速的对自己心中所想进行定位,然后下发到某一个类别中去;第二个维度是地域,从区(浦东)、到商圈(陆家嘴)、到热门区域(传奇广场),这是一个个往下钻的,做的越细致,用户的需求更容易定位,还有地铁沿线,这都是地域维度要考虑的,第三个维度是菜谱,如水煮鱼、米线、水饺、剁椒炒鸡蛋,这是从另外一个维度来看用户需求,也能覆盖一部分的真实需求;当然最基础的检索,还是基于字面的检索,比如搜小南国、外婆家,但是在业务搜索中,字面检索只是其中的一个组成部分,并不是最重要的组成部分了;所以在召回的时候,应该尽可能多的找到用户感兴趣的纬度,然后将其体系化,这样每做一次就意味着一类新query召回,可以极大的提升召回率;

o2o还有一个问题就是距离,要做附近,要做场景化,这是另外一个话题,不在这里讨论了;

2.精确

精确是另外一个维度,帮用户找到心中所求,而不仅仅是找到数据;而这个问题也是涉及两点,第一是排序,第二是过滤:

2.1 排序

先说排序,排序说的是在召回的一堆数据中,设计一种方案,对商品进行合适的排序,将用户想要的放在前面;这个事情从用户的纬度可以分为通用和个性化两个方面,从技术的纬度可以分为规则和预估两种方法;

2.1.1 通用排序和个性化

通用排序顾名思义就是我搜这个词和你搜这个词出来的结果是一样的,这种排序方式是通用的;他是基于统计的方法来做的,通过统计出具有什么特征的人更加容易去做什么事情,给出一个规则或者一个预估;举个例子:当我们发现搜索耐克的同学往往都会去看adidas的商品,或者搜火锅的人基本上都喜欢点海底捞,在上述这种前提下,我们会把adidas做为推荐,会把海底捞权重提高,这就是通用的排序,是基于历史做出的规则或预测;

而另外一种就是个性化,是在通用的基础上加上一些个性化的东西,比如同样是搜火锅,如果我们发现其中一个人多次在呷哺呷哺交易,这时候应该把呷哺呷哺的数据往上拉;同样是在张江,发现一个人经常在御桥吃火锅,就可以把御桥的火锅店排在龙阳路的火锅店前面;这就是个性化的东西,完全取决这个用户之前做过什么;

两者的区别是什么,就是两个第一次接触互联网的同学都站在张江地铁站,搜火锅他们出来的东西应该是一样的,这是通用搜索;而当一个人搜索火锅,买了海底捞的团购,另外一个人去了小辣椒吃川菜,在下一次他们都搜索美食的时候,出来的东西就会有所区别,这就是个性化;

 2.1.2规则和预估

排序的方案分为两种,一种是规则,一种是预估,很好理解,我比较喜欢用规则的方式,观察加一些统计的方式来解决问题,简单粗暴,预估在做到一定规模之后会有用,是好中取优的方案,但是一般具有比较多的限制条件,方法就不在这里提了;另外说一点的时候,在做业务搜索的时候,业务属性其实往往会比搜索字面更重要,所以很多时候会把业务属性单独拉出来做排序,比如美食:价格、折扣、口味、环境、服务、距离,这些在业务搜索上,往往更加重要,因为很少人找美食,会直接不点筛选或者排序就下单的;

2.2过滤

第二个问题是过滤:我们自己做业务搜索搜商品,和在公司网页搜索搜商品,最大的区别在于网页搜索肯定能给你相关的结果,而业务搜索不一定;比如搜国美,可能会出国美的电器,也可能会出韩国美女,但是通过排序的方式,依据网民历史数据的统计,总能把国美的数据放在韩国美女的前面,而且能填满前面几页,因为他候选集多;但是业务搜索不一样,受制于数据采集,往往有可能我们只有韩国美女整容院的数据,而没有国美电器的数据,所以只能出韩国美女的结果了,这种case比比皆是;因为我们的候选集是有限的,而网页搜索的候选集是无限的,我简单抓一个点评的商铺页,就有2亿多条,更何况全网的数据,而比如糯米的团购、点评的团购,满打满算也就是几十万条,撑死几百万条,一旦细分,肯定会出现召回不了国美只能召回韩国美女的badcase了,这就涉及到过滤,一半的过滤方案是设置一个相关性,而我这里的方案更简单,就是只做精准匹配,也就是直接把切的全部干掉了;

3.总结

随随便便讲了好一些,大的方面就是两点,召回和准确,细的方面就是去做pattern挖掘、细化数据建新维度索引、根据业务和点击进行排序,往装逼的方向来说,就是事情做到极致,就是不管用户输入啥,能根据他的输入、历史信息、所处场景、个人信息给出他最想要的东西,这需要静下心来细细的准备数据,清洗,整理,是件辛苦活,嘿嘿,当然也可以做成装逼范,来百度的第五年,得出的结论是升级和你做什么事情没啥关系,升级无非是看你从哪个切入点来讲故事;而对我来说,最重要的是这个故事我觉得有意思;

 

9.17

行胜于言,不知不觉,来新部门也快4个月了,从不熟悉到熟悉,又开始在挖新的坑在埋自己了,不算太好,但也不算坏,有挑战的是新的东西量更大,也更有挑战性,当然这个事情还做得不够细,还在想一出是一出的做,没有计划,没有整理,但是能学到新的东西,也面临更大的挑战,之后只要把条理梳理好,做个半年下来还是会收获满满;像那个谁说的话一样,人,最重要的是站对位置,如果生活在风口中,即使是猪也能飞起来;不过向来新部门升职都比较麻烦,原因自然是你懂的,新的东西大家都把这个事情做得特别认真,不会放水,而且喜欢自己卡自己指标,什么问题一旦把问题引申为内部竞争,而不是外部竞争,就会自己卡自己呢;

 

最近半年都没有怎么做计划,也没有怎么做总结,所以最直观的感觉就是时间刷刷过得飞快,但是书呀什么的都没有看,感觉时间都是虚度了的样子,我总是认真一段时间,然后就懒更长的一段时间,这样很不好,从本周开始,还是要把日表和周计划和总结做起来,我的问题还是一如既往,就是容易分心,容易被相关的事情所吸引,直接就导致了效率不行,从能力来看,当然是不怕任何人,但是缺乏目的,会让可能半个小时我就能搞定的事情,变成2个小时甚至更久;

 

另外一个事情,技术博客还是要继续写起来,人过了一段时间就要总结一下嘛,又不是没有做事情,我觉得吐槽大会挺有必要,我平常修改策略都是用一个改一个,没有计划性,一周或者两周做一次吐槽,然后对bug或者改进的地方一起处理,并整理出来长期的规划,有利于整个事情往前推进;

 

最近又有老熟人叫我去创业去了,我有时又真是纠结,人总是想等到一个最合适的时机去做一件对的事情,其实有可能最后等万事俱备了,东风早就飞走了,我现在总觉得自己再重复这个过程,我确实是在不停的学习,而且学到的东西看到视野也确实比之前宽,但是其实很多要学的东西,真的需要学习和储备么?有时候挺迷茫的,不是说那些东西没有用,只是回头看看,时机对不对哎;晚上有时在想,人的选择往往很难正确,因为都在局部的位置看待事情的发展,最近几年无非就是自己太多可以做的事情了,所以一直在等,等的蛋疼。。。