以下大概还是一些笑话.
本来打算三不管了的证金忽然又借钱打算入市了.
这个一开始觉得略匪夷所思.
毕竟,这个是被事实证明了于市场和预期均无效的方法.
上周的几件事.
一个是双降.
直接结果自然是利率的降低和流动性的增加.
考虑到最近几天央行还有比较频繁的SLO.
那么一个直接的观察结果就是央行主要是释放流动性.
目的呢?
思考广一下.
证金从银行再借款卷土重来.
假设数额上跟以上两个流动性手段有一定吻合.
那么,综合的结果就是实际上并没有对实际流通造成实际上的影响.
因为这笔钱实际上通过银行转到证金的手上.
而并没有经过传统的诸如普通贷款等流向常规的流通领域.
于是,剩下的实际影响就只有利率的降低.
特别的是贷款利率的降低.
所以,某种程度上来说,这是一个空手套白狼的降息手段.
降息的目的自然是常规的促进企业负债和融资成本的降低,促进实体经济.
第二个是养老金入市的消息.
一个普遍的玩笑话就是,等什么时候养老金入市了,就是A股阶段性底部的时候,毕竟没人能占国家的便宜.
抛开这个段子,不管具体以及以什么样的方式节奏进入市场,至少,从长期来看是补充了一定的市场活跃度的.
毕竟,现在的A股波动性过大的一个因素是交易不够活跃和多样化.
伴随这个的就是连续几天的沪港通资金北上"抄底"的行为.
这个一方面可以理解为对人民币升值的投机和避险行为.
另一个方面也至少说明,A股的不确定风险较至于汇率变化风险来说,要相对平稳地多,或者预期要好.
不然就没有避险和投机的余地了.
对于现在的市场而言,一方面是包括证金和养老金在内的政策性资金.
一方面是避险和投机的外部资金.
考虑一个老问题.
国企改革,或者更general的,企业融资渠道/方式的问题.
原则上来说,通过市场化渠道募集资金是相对有效益和容易得到正反馈的一种方式.
毕竟,无论如何,交易代表着某种程度的认可.
但就目前的状况而言,市场总体是向下的,而且总体情绪算不上乐观.
完全的市场化行为很难让理想中的改革方式得到展开.
这一点,也是第一阶段救市的原因.
考虑到上周的另外一个事是证金和中信的利益输送的问题.
权且把第一阶段救市失败的原因归咎于人性的话.
那么,实际上来说,方案可能并没有错.
只是执行上面出了问题.
那么二次救市,恢复市场信心也不是不可预期.
考虑到前次完全市场化操作带来的道德风险问题,所以这次以限制期货交易等管制手段的姿态重回也不是不能理解.
然后考虑到市场并不太可能因为这些就马上恢复活跃度和繁荣.
甚至于基于之前的经验可能只会做适度投机,并不会如原预期般地让企业融资市场改革顺利展开.
所以,在一个萎缩市场的预期下,如何推进资本改革呢?
从二级市场投入,换个角度理解为间接注资的话,在不理想的情况下,也勉强能相当于之前以各种方式直接国资注资的方式.
所以,政策性资金在二级市场的操作,从一般情况下来说,并不是一个比现有策略差的选择.
好的情况自然是市场恢复,如预期般地展开资本改革.
坏的情况是市场继续恶化.
那么如何尽量减少最坏情况下的损失呢?
考虑政策性资金在市场的操作是对企业直接的类似股权置换的行为.
也即是说,以企业持股置换国资.
某种形式上的变现行为.
而作为变现行为考虑的话,则存在一个套利方式就是股价的差额部分.
也就是说,存在企业以一个相对较低水平的价格回购/持有自身股份,然后再以一个较高的价格置换国资.
即是某种形式上,在市场不理想的情况下,还有一定的概率是可以杠杆一部分资金的.
这样的话,从总体上来说,总的投资期望就有可能规避掉市场不理想状况下的损失.
也就是说,最坏的情况下,可以通过鼓励企业以某个相对低的价格来以某种远期套保的方式.
或者说,是得到了某种形式的无偿贷款,然后由政策性资金在未来的某个时期择机兑现风险.
而由于这个资金的性质是国家侧面的,也就是投资周期可以认为是无限的,按年限展开一下的话,风险系数可以降到很低.
所以,实际上来说,如果执行上没有什么偏差的话,这是某种万全之策.
那么对于在市场内的这部分政策性资金而言,盈利或亏损其实并不是关心的主要问题.
因为目的不在于常规的市场内套利,而是带有市场化操作的政策性扶持.
所以,对市场本身的影响,从长远看应该是中立的.
对于具体企业来说,则是跟不跟的问题了.
市场内的另一部分外部的套利和避险资金而言呢?
短期内套利和避险的目的主要是人民币的汇率波动.
所以,如果这个波动风险不存在了或者预期改变,那么就这方面而言,也就没有继续留存的必要.
加上,另一方面还需要考虑在A股侧的波动利差是否还成立.
这样的话,一般的思路应该就是合理的分级获利了结,以及市场向下时的推波助澜了.
所以,本质上来说,不过是各方各自的既有逻辑的延续而已.
原本做什么的继续做什么.
所谓原则问题.
2015-08-31
2015-08-25
空谈
以下大概是一些笑话.
毕竟只是个连基本经济金融素质都没有的前互联网工程师的一些联想.
从今年5,6月开始,A股市场开始清查两融.
原因大概是过高的杠杆率已经使得原本就不健康理性的市场变得更加不稳定.
当时普遍的一个预期是市场迎来一个长期向上的趋势.
不管这个趋势是冠以什么名号,毕竟沪深从来不缺乏概念创新.
所以在这样一个普遍的预期下,自然会吸引资金关注.
加上从去年开始的创业板在各种概念催动下,动则翻倍的行情,乐观情绪驱使下自然众人拾柴火焰高.
那么,在这样一个和谐氛围中,动用正规非正规的杠杆最大化收益就是非常自然而然的想法.
毕竟市场的预期使得风险偏好会偏向积极.
加上实体经济不算景气,于是进入市场的资金构成就更复杂一些了.
从部分公司的季报年报里可以看出,有相当部分的业绩增长来自于金融资产的增值.
所以这里过于乐观的情绪带来的第一个问题就是社会资产结构的配置出现的病态.
本应该流向实体的也进入了金融领域,不能变成实际的增长环节.
随之而来的问题就是,既然繁荣的市场是由于不断的资金注入造就的,而非正常的双向交易促成.
那么很明显的一个问题就是,当资金断流的时候,这就变成了实际上的击鼓传花.
所以,即使没有清查两融造成的抛售,迟早也会因为没有后续资金的进入而崩盘.
而且到时是因为社会总体资金的流动性匮乏造成的崩盘,连带的效果可能更绝望.
从这个角度来说,清查本身倒是个长痛不如短痛的措施.
既然这个做法是正确的,那么为何还要救世呢?
因为市场的初始预期和乐观点是国企改革.
也即是预期市场化资本操作国企一个改革尝试.
隐含的意思就是,如果市场崩溃了.
那么这个改革尝试即使不算失败,也是没有意义了.
所以救市的目的是稳定市场.
而刚好由于大批国企参与了指数成分构成.
所以某种程度上来说,一个简单直接的方案就是指数维稳.
一个本来皆大欢喜的局面就是接受招安,共同维护市场繁荣的初衷.
但是作为腰斩的投机资金部分,考虑的是如何尽可能地减少损失.
其策略还是会走比较积极的杠杆路线.
这便是矛盾和冲突点.
尽管后来双方有一定的利益契合点.
但由于救市资金有限,且有各种操作上规约约束,到后面已经是有些无能为力了.
而且原则上来说,继续救市也并不一定能把市场情绪带回市场化改革的路线上.
所以后面如果放弃任由指数下跌到稳定点也是合情合理的.
毕竟,一个改革失败,至少比整个经济系统紊乱更划得来.
然而,一个新问题是救市资金的缺口.
这部分是由央行提供担保的.
也就是是,如果不能够及时回收,那么就相当于基础货币的投放.
通货的增加就意味着一定时期内通胀可能性的增大.
而央行的一般职责就是控制通货膨胀率.
所以这个问题怎么解决呢.
最近央行的一个措施是人民币的主动贬值.
一方面,这个可以看作是人民币汇率市场化的一个尝试.
另一方面,如果跟救市的资金缺口结合在一起考虑呢?
由于人民币的特殊性,以及流向境外的渠道的多样性,近年来离岸人民币的数量大致是增长比较快的.
因为各种不明的流出渠道,以及大量境外游带来的离散人民币交易,所以离岸人民币的回流一直是个问题.
毕竟进出口也大多不是人民币结算,金融渠道也有着各种限制.
一方面央行需要把这部分没有什么流动性的人民币纳入到基础货币的考量当中,调整国内市场的货币流通量.
这个造成的一个结果就是因为流动性缺失造成的额外通胀压力.
因为实际上就数量来说可能是足够的,但由于缺乏流动性,所以需要额外的部分补充这部分死货币.
另一方面,因为要维护对美元的汇率,所以对于这部分人民币就需要持有/买入"等值"的"美元"以维护比较稳定的国际汇率.
所以离岸人民币的回流问题造成的结果就是持有的美国国债越来越多,国内发钞也越来越多.
那么,现在人民币主动贬值的影响呢?
一个直接的市场反应就是通过离岸市场,由央行主动购买抛售的离岸人民币.
这样就间接地实现了回流,以及汇率的市场化试探.
这样的话,至少回流的人民币可以补充救市资金带来的发钞压力.
代价是暂时性的人民币贬值.
而实际上,如果把主动贬值前的汇率价格看作是实际稳定价值的话.
那么长期来来看,美元应该也跟着贬值以维持原有的汇率关系.
连带的就是在人民币贬值带来的对国际贸易的影响,以及美元跟随贬值的压力预期.
于是,再看近期周边经济的动荡,和美国市场的情绪.
其实也不是很难理解.
这样话,央行的主动贬值,至少从这个侧面来看的话,是一箭双雕的策略.
那么,如果这个思路是对的.
也就是说存在一个人民币跟美元汇率回升的预期的话,资金会流向人民币资产和渠道也不是不能理解.
当然,其实并不清楚玩法规则,也没有数据.
所谓空谈.
毕竟只是个连基本经济金融素质都没有的前互联网工程师的一些联想.
从今年5,6月开始,A股市场开始清查两融.
原因大概是过高的杠杆率已经使得原本就不健康理性的市场变得更加不稳定.
当时普遍的一个预期是市场迎来一个长期向上的趋势.
不管这个趋势是冠以什么名号,毕竟沪深从来不缺乏概念创新.
所以在这样一个普遍的预期下,自然会吸引资金关注.
加上从去年开始的创业板在各种概念催动下,动则翻倍的行情,乐观情绪驱使下自然众人拾柴火焰高.
那么,在这样一个和谐氛围中,动用正规非正规的杠杆最大化收益就是非常自然而然的想法.
毕竟市场的预期使得风险偏好会偏向积极.
加上实体经济不算景气,于是进入市场的资金构成就更复杂一些了.
从部分公司的季报年报里可以看出,有相当部分的业绩增长来自于金融资产的增值.
所以这里过于乐观的情绪带来的第一个问题就是社会资产结构的配置出现的病态.
本应该流向实体的也进入了金融领域,不能变成实际的增长环节.
随之而来的问题就是,既然繁荣的市场是由于不断的资金注入造就的,而非正常的双向交易促成.
那么很明显的一个问题就是,当资金断流的时候,这就变成了实际上的击鼓传花.
所以,即使没有清查两融造成的抛售,迟早也会因为没有后续资金的进入而崩盘.
而且到时是因为社会总体资金的流动性匮乏造成的崩盘,连带的效果可能更绝望.
从这个角度来说,清查本身倒是个长痛不如短痛的措施.
既然这个做法是正确的,那么为何还要救世呢?
因为市场的初始预期和乐观点是国企改革.
也即是预期市场化资本操作国企一个改革尝试.
隐含的意思就是,如果市场崩溃了.
那么这个改革尝试即使不算失败,也是没有意义了.
所以救市的目的是稳定市场.
而刚好由于大批国企参与了指数成分构成.
所以某种程度上来说,一个简单直接的方案就是指数维稳.
一个本来皆大欢喜的局面就是接受招安,共同维护市场繁荣的初衷.
但是作为腰斩的投机资金部分,考虑的是如何尽可能地减少损失.
其策略还是会走比较积极的杠杆路线.
这便是矛盾和冲突点.
尽管后来双方有一定的利益契合点.
但由于救市资金有限,且有各种操作上规约约束,到后面已经是有些无能为力了.
而且原则上来说,继续救市也并不一定能把市场情绪带回市场化改革的路线上.
所以后面如果放弃任由指数下跌到稳定点也是合情合理的.
毕竟,一个改革失败,至少比整个经济系统紊乱更划得来.
然而,一个新问题是救市资金的缺口.
这部分是由央行提供担保的.
也就是是,如果不能够及时回收,那么就相当于基础货币的投放.
通货的增加就意味着一定时期内通胀可能性的增大.
而央行的一般职责就是控制通货膨胀率.
所以这个问题怎么解决呢.
最近央行的一个措施是人民币的主动贬值.
一方面,这个可以看作是人民币汇率市场化的一个尝试.
另一方面,如果跟救市的资金缺口结合在一起考虑呢?
由于人民币的特殊性,以及流向境外的渠道的多样性,近年来离岸人民币的数量大致是增长比较快的.
因为各种不明的流出渠道,以及大量境外游带来的离散人民币交易,所以离岸人民币的回流一直是个问题.
毕竟进出口也大多不是人民币结算,金融渠道也有着各种限制.
一方面央行需要把这部分没有什么流动性的人民币纳入到基础货币的考量当中,调整国内市场的货币流通量.
这个造成的一个结果就是因为流动性缺失造成的额外通胀压力.
因为实际上就数量来说可能是足够的,但由于缺乏流动性,所以需要额外的部分补充这部分死货币.
另一方面,因为要维护对美元的汇率,所以对于这部分人民币就需要持有/买入"等值"的"美元"以维护比较稳定的国际汇率.
所以离岸人民币的回流问题造成的结果就是持有的美国国债越来越多,国内发钞也越来越多.
那么,现在人民币主动贬值的影响呢?
一个直接的市场反应就是通过离岸市场,由央行主动购买抛售的离岸人民币.
这样就间接地实现了回流,以及汇率的市场化试探.
这样的话,至少回流的人民币可以补充救市资金带来的发钞压力.
代价是暂时性的人民币贬值.
而实际上,如果把主动贬值前的汇率价格看作是实际稳定价值的话.
那么长期来来看,美元应该也跟着贬值以维持原有的汇率关系.
连带的就是在人民币贬值带来的对国际贸易的影响,以及美元跟随贬值的压力预期.
于是,再看近期周边经济的动荡,和美国市场的情绪.
其实也不是很难理解.
这样话,央行的主动贬值,至少从这个侧面来看的话,是一箭双雕的策略.
那么,如果这个思路是对的.
也就是说存在一个人民币跟美元汇率回升的预期的话,资金会流向人民币资产和渠道也不是不能理解.
当然,其实并不清楚玩法规则,也没有数据.
所谓空谈.
2015-08-22
关于Polymer的一点琐事
最近又把某Chrome扩展翻出来重写了一下.
原因大概一是依赖的某Polymer也到底1.0版本了,该切换下了.
二来,也是原来Proxy逻辑部分的kernel的有些华而不实的地方,用了比较多functional的形式写法.
其实早前也有过这个打算的.
当时Polymer的版本还是0.5吧.
简单bower了下,然后发现有些component的行为改了.
主要是当时用了个core-list吧.
最初的版本是不要求parent元素有height的,后来的版本要求了,于是一些地方就broken了.
然后简单翻了下,要fix的话,最简单的就是做个height限定.
不过这个终究不算是一个优雅的解决方法,毕竟分辨率这个是不定因素.
于是也就算了.
当时觉得这个改动还是挺儿戏的.
毕竟作为一个公共library,随意改行为终究不算什么太有原则的事情.
后来,当再npm update一下的时候,就觉得,这些其实不算什么.
毕竟,比起Node社区的某些工具链来说,至少core-list还保持了接口不变.
再后来,就是Polymer的1.x版本了.
也算正式版了.
看了下,基本上改动还是比较大的.
至少core-*的component基本上都改叫iron-*了.
倒是衍生的material design的paper-* component名字没怎么变.
虽然说实现也是基本改了.
毕竟,跟0.5甚至0.x时代来说,整个项目和某些哲学上的变化还是挺大的.
最明显的就是webcompoment这个东西算是独立出来了.
毕竟,当初还算是比较初级的阶段,浏览器支持不多.
基本是polyfill而非native的支持.
现在shadow dom基本算是常识了.
于是虽然保留了polyfill的部分,但至少从项目结构上来说,webcomponent不再是Polymer独有的东西.
对应的某些Polymer的某些template的语法变更了.
比如原来的custom-element改叫dom-module了.
template的functional的registration也由原来的Polymer(name,config)改为没那么多余的Polymer({is:name})了.
不过一个比较重要的改变应该是对templates的data binding部分吧.
开始的版本是可以随意bind对应model的某个attribute的,现在倒是限定了只能bind properties下面的东西.
而且在property的定义是一种显示的声明,得提供binding的一些行为和本身的类型之类的.
相对来说,这个改动使得binding的灵活性大为降低.
但原则上来说,倒是比较符合webcomponent的隔离哲学的.
毕竟,如果以component的思维和角度去看待这些templates的话,这种黑盒思路还是很有必要的.
不然的话,由于javascript本身语言比较随意,所以hack也能比较随意,带来的结果自然是component行为预期的不确定性了.
另外一个比较明显的改变是貌似取消了component的extends方式.
也就是说,component是没有父子继承关系了.
这点也不难理解,终究是黑盒的思路.
所以,要关掉一些可能更改行为的可能.
代价当然是灵活和所谓的复用性.
而所谓的"灵活"也只是特定条件下的术语.
毕竟,不能extends还能composite嘛.
所以并不算是一个实际的牺牲.
而复用性,在UI方面的话,composite就是解决方案.
有待解决的只是一些功能性的东西.
所以,这里就是behavior的mixin思路了.
这点其实是有些类似go之类语言的fucntion set的概念的.
实际上,这种设计很多地方确实就叫behavior.
就像某句著名的话.
"程序就是数据结构和算法".
其他一些改动就是对inline expression的evaluation.
这个也是比之前的较为严格了.
不再各种操作符.
原则上就是直接的property的direct mapping.
no more magic.
当然,也不是说现在的Polymer就是完全不能做hack做侵入的.
最简单的就是event/listener机制.
结合behavior的话,还是能够模拟一套能让外部侵入现有component,改变其行为的方法的.
只不过得考虑下怎么处理event driven的状态机而已.
还有一点改进是web-animation的部分.
之前的paper-* component系列的animation部分也是用这个重写了的.
特效部分也拆分为独立的neon-animation了.
也是顺应时代进步了的一个改动吧.
不过大体看了下,基本就是css3的transform的一些应用吧.
毕竟说到底material design的一个思路还是"平面UI立体交互吧".
所谓的paper和ink的关系.
所以基本上来说,paper也就是静态展示的部分基本上就是Google一贯风格的简约加上从微软metro吸收过来的视觉分块思路.
至于ink的动态部分.
一方面是分为UI状态变化.
一方面是用户交互的反馈.
前者的状态变化比较突出的就是hero这种联动的视觉块大小变化效果了.
通过变化做某种直觉引导的作用.
后者典型的就是ripple效果.
原则上来说,ripple类的效果也是做直觉引导的.
不过侧重点在于告诉用户交互已经发生.
而不是交互的变化结果.
这点大概就是material design为什么要用paper和ink来描述的原因了.
paper是书写/painting的效果/结果,ink是书写painting的动作及反馈.
所以Polymer的其中一个价值,至少是比较方便地自带material design的东西,可以直接用.
尤其考虑一些paper-style里的配色方案typography的话.
当然,除了这些算是比较好的点之外,1.x的Polymer用起来也还是有些地方比较tricky的.
不过,应该多数有two-way databing的都有这个问题.
即使bind的value update和paint的时间差的问题.
具体到Polymer来说,data change的observer的diff是在一个microtask或者说一个tick的最后,从一个pending的queue里取出来执行的.
因为Polymer实际上来说,还是以原则上300ms做一次check和update的.
所以,在每个300ms的time slice之后,是pop一些async/debounce的东西出来执行.
而pop的源里面其实至少包含了一个是data diff/change的处理,以及对应的dom modify.
所以,这里一个可能的案例就是,bind了一个array,然后array增加或者删除了元素.
然后,直觉上,应该是对应的dom节点应该也在这个function invoke的处理context/现场变更了.
而实际上是没有.
因为对dom的修改是在这个context之后.
更确切地说是在当前tick的microtask的lifecycle的最后才发生.
因此,该context的内容还是原来的.
要怎么解决呢?
一个解决方法就是去hack这个pending的queue.
假设实现不变的话,那么这里就只有一个queue.
而且dom changed应该是在queue的比较靠前的部分.
于是,既然有一个确定的position了,那么剩下的问题就是hack的点是需要在dom change前还是change后了.
对应的就是是在处理queue之前还是push到queue后面的地方.
当然,这算不上一个完美的解决方案.
毕竟这个依赖于Polymer的实现.
就像最近Go 1.5的某个更改一样.
原来的goroutine的scheudle的顺序是可估计的.
1.5之后,这个assumption不存在了,那自然要broken依赖于这个的很多东西.
不过无论怎么改,都解决不了实际上的bind value change和dom change是两个操作的事实,而不是一个atomic operraion.
除非就是什么时候浏览器暴露一个atomic的render hook了.
不过即使有,底层估计也还是会做一些batch或者类似tick的东西.
毕竟,这个世界很多时候其实是离散的.
instant是个很理想化的东西.
所以很多时候,很多东西其实是按照某种tick来计划安排的.
如人的秒.
如distributed system的versioning.
剩下的kernel方面的改动,其实多数是一些map/reduce/foreach等当时觉得好玩的写法的该写.
虽然这种functional的写法看起来可能阅读效果不错.
但实际上可能做的事情比较多余.
有些可以fast path的地方变得不太方便.
就像前段时间写Java 9的stram和lambda.
能用stream的地方就用stream,能写lambda就写lambda.
甚至还考虑写个基于Yarn的stream实现,写个基于socket的classloader基本就是分布式计算了.
不过后来想想,其实是种拿到新玩具的炫技心理吧.
有了新锤子,看什么都是钉子.
所谓的喜新厌旧.
原因大概一是依赖的某Polymer也到底1.0版本了,该切换下了.
二来,也是原来Proxy逻辑部分的kernel的有些华而不实的地方,用了比较多functional的形式写法.
其实早前也有过这个打算的.
当时Polymer的版本还是0.5吧.
简单bower了下,然后发现有些component的行为改了.
主要是当时用了个core-list吧.
最初的版本是不要求parent元素有height的,后来的版本要求了,于是一些地方就broken了.
然后简单翻了下,要fix的话,最简单的就是做个height限定.
不过这个终究不算是一个优雅的解决方法,毕竟分辨率这个是不定因素.
于是也就算了.
当时觉得这个改动还是挺儿戏的.
毕竟作为一个公共library,随意改行为终究不算什么太有原则的事情.
后来,当再npm update一下的时候,就觉得,这些其实不算什么.
毕竟,比起Node社区的某些工具链来说,至少core-list还保持了接口不变.
再后来,就是Polymer的1.x版本了.
也算正式版了.
看了下,基本上改动还是比较大的.
至少core-*的component基本上都改叫iron-*了.
倒是衍生的material design的paper-* component名字没怎么变.
虽然说实现也是基本改了.
毕竟,跟0.5甚至0.x时代来说,整个项目和某些哲学上的变化还是挺大的.
最明显的就是webcompoment这个东西算是独立出来了.
毕竟,当初还算是比较初级的阶段,浏览器支持不多.
基本是polyfill而非native的支持.
现在shadow dom基本算是常识了.
于是虽然保留了polyfill的部分,但至少从项目结构上来说,webcomponent不再是Polymer独有的东西.
对应的某些Polymer的某些template的语法变更了.
比如原来的custom-element改叫dom-module了.
template的functional的registration也由原来的Polymer(name,config)改为没那么多余的Polymer({is:name})了.
不过一个比较重要的改变应该是对templates的data binding部分吧.
开始的版本是可以随意bind对应model的某个attribute的,现在倒是限定了只能bind properties下面的东西.
而且在property的定义是一种显示的声明,得提供binding的一些行为和本身的类型之类的.
相对来说,这个改动使得binding的灵活性大为降低.
但原则上来说,倒是比较符合webcomponent的隔离哲学的.
毕竟,如果以component的思维和角度去看待这些templates的话,这种黑盒思路还是很有必要的.
不然的话,由于javascript本身语言比较随意,所以hack也能比较随意,带来的结果自然是component行为预期的不确定性了.
另外一个比较明显的改变是貌似取消了component的extends方式.
也就是说,component是没有父子继承关系了.
这点也不难理解,终究是黑盒的思路.
所以,要关掉一些可能更改行为的可能.
代价当然是灵活和所谓的复用性.
而所谓的"灵活"也只是特定条件下的术语.
毕竟,不能extends还能composite嘛.
所以并不算是一个实际的牺牲.
而复用性,在UI方面的话,composite就是解决方案.
有待解决的只是一些功能性的东西.
所以,这里就是behavior的mixin思路了.
这点其实是有些类似go之类语言的fucntion set的概念的.
实际上,这种设计很多地方确实就叫behavior.
就像某句著名的话.
"程序就是数据结构和算法".
其他一些改动就是对inline expression的evaluation.
这个也是比之前的较为严格了.
不再各种操作符.
原则上就是直接的property的direct mapping.
no more magic.
当然,也不是说现在的Polymer就是完全不能做hack做侵入的.
最简单的就是event/listener机制.
结合behavior的话,还是能够模拟一套能让外部侵入现有component,改变其行为的方法的.
只不过得考虑下怎么处理event driven的状态机而已.
还有一点改进是web-animation的部分.
之前的paper-* component系列的animation部分也是用这个重写了的.
特效部分也拆分为独立的neon-animation了.
也是顺应时代进步了的一个改动吧.
不过大体看了下,基本就是css3的transform的一些应用吧.
毕竟说到底material design的一个思路还是"平面UI立体交互吧".
所谓的paper和ink的关系.
所以基本上来说,paper也就是静态展示的部分基本上就是Google一贯风格的简约加上从微软metro吸收过来的视觉分块思路.
至于ink的动态部分.
一方面是分为UI状态变化.
一方面是用户交互的反馈.
前者的状态变化比较突出的就是hero这种联动的视觉块大小变化效果了.
通过变化做某种直觉引导的作用.
后者典型的就是ripple效果.
原则上来说,ripple类的效果也是做直觉引导的.
不过侧重点在于告诉用户交互已经发生.
而不是交互的变化结果.
这点大概就是material design为什么要用paper和ink来描述的原因了.
paper是书写/painting的效果/结果,ink是书写painting的动作及反馈.
所以Polymer的其中一个价值,至少是比较方便地自带material design的东西,可以直接用.
尤其考虑一些paper-style里的配色方案typography的话.
当然,除了这些算是比较好的点之外,1.x的Polymer用起来也还是有些地方比较tricky的.
不过,应该多数有two-way databing的都有这个问题.
即使bind的value update和paint的时间差的问题.
具体到Polymer来说,data change的observer的diff是在一个microtask或者说一个tick的最后,从一个pending的queue里取出来执行的.
因为Polymer实际上来说,还是以原则上300ms做一次check和update的.
所以,在每个300ms的time slice之后,是pop一些async/debounce的东西出来执行.
而pop的源里面其实至少包含了一个是data diff/change的处理,以及对应的dom modify.
所以,这里一个可能的案例就是,bind了一个array,然后array增加或者删除了元素.
然后,直觉上,应该是对应的dom节点应该也在这个function invoke的处理context/现场变更了.
而实际上是没有.
因为对dom的修改是在这个context之后.
更确切地说是在当前tick的microtask的lifecycle的最后才发生.
因此,该context的内容还是原来的.
要怎么解决呢?
一个解决方法就是去hack这个pending的queue.
假设实现不变的话,那么这里就只有一个queue.
而且dom changed应该是在queue的比较靠前的部分.
于是,既然有一个确定的position了,那么剩下的问题就是hack的点是需要在dom change前还是change后了.
对应的就是是在处理queue之前还是push到queue后面的地方.
当然,这算不上一个完美的解决方案.
毕竟这个依赖于Polymer的实现.
就像最近Go 1.5的某个更改一样.
原来的goroutine的scheudle的顺序是可估计的.
1.5之后,这个assumption不存在了,那自然要broken依赖于这个的很多东西.
不过无论怎么改,都解决不了实际上的bind value change和dom change是两个操作的事实,而不是一个atomic operraion.
除非就是什么时候浏览器暴露一个atomic的render hook了.
不过即使有,底层估计也还是会做一些batch或者类似tick的东西.
毕竟,这个世界很多时候其实是离散的.
instant是个很理想化的东西.
所以很多时候,很多东西其实是按照某种tick来计划安排的.
如人的秒.
如distributed system的versioning.
剩下的kernel方面的改动,其实多数是一些map/reduce/foreach等当时觉得好玩的写法的该写.
虽然这种functional的写法看起来可能阅读效果不错.
但实际上可能做的事情比较多余.
有些可以fast path的地方变得不太方便.
就像前段时间写Java 9的stram和lambda.
能用stream的地方就用stream,能写lambda就写lambda.
甚至还考虑写个基于Yarn的stream实现,写个基于socket的classloader基本就是分布式计算了.
不过后来想想,其实是种拿到新玩具的炫技心理吧.
有了新锤子,看什么都是钉子.
所谓的喜新厌旧.
2015-08-03
销售为王
早上,或者说中午过马路的时候,顺手收了张传单.
然后冒出一个问题.
怎么去追踪这些传单的转化率,或者说评估效果呢?
像互联网上的话,追踪手段其实很多.
但是这种线下的方式的话,如果按照线上的思维思考的话,可能不太容易.
对于传单本身来说,不像线上可以对访问者/接受者做各种annotation.
也很难从其他地方infer出一个人的identity.
所以,依照常理来想的话,貌似是个很难解决的问题.
但有人提到了一点,传单上的返点/优惠券.
作为一个promotion,最根本的目的还是提高营收.
或者说提高转化率.
所以这里要追踪效果其实很简单,统计下使用情况就可以了.
而且衍生的计算边际效益/成本等问题也就自然而然了.
于是,到这里发觉自己的想法还是比较幼稚的.
或者说不切实际.
没有根据实际的商家情况却考虑估计的问题.
开始的思路是把宣传的"收益期"过度扩展了.
纳入了诸如接受了传单,但是没有在当期宣传期转化,而是在以后被转化成店里客人的情况.
即是考虑宣传的目的是"知名度"/"流量标的"这种可能不太适合的思路.
毕竟,在一个以浮夸著称的互联网行业待久了,视野总是被类似"流量为王"/"用户基数"这种东西所困惑.
对于实际的商家这种程度的scale来说,关注的点可能是实际的营收波动变化,而不是这种long term和huge scale的问题.
所谓小本经营.
所以,回过头来看派发传单这种行为的话,其实它关心的并不是转化率之类的问题.
而是实际的销售提升.
或者说,"打折促销"这个词语组合的本质目的在于后者的 促销.
因此,评估这种行为的工具就不需要是追踪或者可追溯性,而是直接的绩效或者KPI指导.
也就是,这是一个可以直接量化观测的东西,就没必要做一些准量化的时期,去曲折地观测结果了.
某种程度上来说,这种把简单问题复杂的化的原因还是在于个人的局限性上面.
就像经常用来嘲笑工程师的那句话一样,手里拿着锤子就看什么都是钉子.
对于一个普通的小店铺商家来说,只需要评估传单带来的边际营收效果即可了.
不用考虑那么多.
那么,如果换个角度.
给定一定数量的传单,如何最大化营收效果的提升的?
比如不同地段派发效果带来的转化率.
如果存在区别的话,那么如何均衡分配才能最大化收益呢?
如果是常规思路,自然是不同传单,然后通过不同的样式来区分转化来源了.
但是,这对于商家来说其实是不太现实的.
毕竟不同样式也就因为这一定的印刷成本增加.
而且小规模的来说,即使提升了,最终的效果可能还cover不掉增加的成本.
所以,一个能想到的办法就是分期不同地点派发.
这样实际上就是把一个稳定可预测的收入方程拆分成一个加权的线性组合收入.
把区分转化率的"投入成本"变做概率性风险散落到各个地点的转化系数/权重上面了而已.
于是,这里其实可以看出为什么线上思维不符合线下思路了.
本质上来说,线上的追踪成本某种程度上来说很低廉.
所以很容易多样化.
而且通常来说,追踪的周期理论上是无限延长的.
但是线下不同.
线下要考虑一定的投入成本以及时效性.
线下的促销本质决定了它关注的周期很短.
而线上可能更关注的是engagement.
如果考虑大型线下连锁的呢?
其实没什么太多变化.
因为区域性决定,效果和观测方法都不会有太大的不同.
只不过从连锁规模的角度看的话,需要一级级往上汇总区分.
所以,拆开来看的话,不过是简单的层别关系而已.
然后考虑网上销售/零售的方面.
或者说电商的促销广告.
某种程度上来说,电商的促销目的也是为了提升销售额.
所以,原则上来说,对于来源追踪并不需要太关心.
把广告成本也考虑进来的话呢?
其实就是类似线下的地区转化率区别.
这个依赖的是前期数据.
所以,电商在这一块跟线下的策略其实是没什么区别的.
甚至在成本控制和收益目标方面,也是没什么差别的.
电商有限的优势之一在于点对点的物流.
而随着目前电商的自提以及线下已有的就近送货来说,能拉开的空间其实不太多了.
当然,C2C是另外一回事.
但是C2C的处境可能更尴尬.
因为客户分布地理上和网络上都可能更稀疏,于是带来的就是通过优化"投放"的可能收效微乎其微.
尤其是在一些平台型的地方.
而对于像Tmall之类的大中型C来说,其实已经是某种程度的B2C了.
这个跟线下的区别只是"销售地点"的不同.
就如同一家线下零售提供了一个在线订单的服务一样.
本质上来说,还是线下的那套成本/利润模式.
因为最终关注点都是销售.
所以,抛开C2C的部分.
所谓电商,只不过是一家开在互联网的分店而已.
游戏规则和侧重点并没有太多的不同.
于是,把互联网其他地方的玩法搬过来用,其实就显得有些无谓和多余了.
毕竟,这是销售为王的地方.
然后冒出一个问题.
怎么去追踪这些传单的转化率,或者说评估效果呢?
像互联网上的话,追踪手段其实很多.
但是这种线下的方式的话,如果按照线上的思维思考的话,可能不太容易.
对于传单本身来说,不像线上可以对访问者/接受者做各种annotation.
也很难从其他地方infer出一个人的identity.
所以,依照常理来想的话,貌似是个很难解决的问题.
但有人提到了一点,传单上的返点/优惠券.
作为一个promotion,最根本的目的还是提高营收.
或者说提高转化率.
所以这里要追踪效果其实很简单,统计下使用情况就可以了.
而且衍生的计算边际效益/成本等问题也就自然而然了.
于是,到这里发觉自己的想法还是比较幼稚的.
或者说不切实际.
没有根据实际的商家情况却考虑估计的问题.
开始的思路是把宣传的"收益期"过度扩展了.
纳入了诸如接受了传单,但是没有在当期宣传期转化,而是在以后被转化成店里客人的情况.
即是考虑宣传的目的是"知名度"/"流量标的"这种可能不太适合的思路.
毕竟,在一个以浮夸著称的互联网行业待久了,视野总是被类似"流量为王"/"用户基数"这种东西所困惑.
对于实际的商家这种程度的scale来说,关注的点可能是实际的营收波动变化,而不是这种long term和huge scale的问题.
所谓小本经营.
所以,回过头来看派发传单这种行为的话,其实它关心的并不是转化率之类的问题.
而是实际的销售提升.
或者说,"打折促销"这个词语组合的本质目的在于后者的 促销.
因此,评估这种行为的工具就不需要是追踪或者可追溯性,而是直接的绩效或者KPI指导.
也就是,这是一个可以直接量化观测的东西,就没必要做一些准量化的时期,去曲折地观测结果了.
某种程度上来说,这种把简单问题复杂的化的原因还是在于个人的局限性上面.
就像经常用来嘲笑工程师的那句话一样,手里拿着锤子就看什么都是钉子.
对于一个普通的小店铺商家来说,只需要评估传单带来的边际营收效果即可了.
不用考虑那么多.
那么,如果换个角度.
给定一定数量的传单,如何最大化营收效果的提升的?
比如不同地段派发效果带来的转化率.
如果存在区别的话,那么如何均衡分配才能最大化收益呢?
如果是常规思路,自然是不同传单,然后通过不同的样式来区分转化来源了.
但是,这对于商家来说其实是不太现实的.
毕竟不同样式也就因为这一定的印刷成本增加.
而且小规模的来说,即使提升了,最终的效果可能还cover不掉增加的成本.
所以,一个能想到的办法就是分期不同地点派发.
这样实际上就是把一个稳定可预测的收入方程拆分成一个加权的线性组合收入.
把区分转化率的"投入成本"变做概率性风险散落到各个地点的转化系数/权重上面了而已.
于是,这里其实可以看出为什么线上思维不符合线下思路了.
本质上来说,线上的追踪成本某种程度上来说很低廉.
所以很容易多样化.
而且通常来说,追踪的周期理论上是无限延长的.
但是线下不同.
线下要考虑一定的投入成本以及时效性.
线下的促销本质决定了它关注的周期很短.
而线上可能更关注的是engagement.
如果考虑大型线下连锁的呢?
其实没什么太多变化.
因为区域性决定,效果和观测方法都不会有太大的不同.
只不过从连锁规模的角度看的话,需要一级级往上汇总区分.
所以,拆开来看的话,不过是简单的层别关系而已.
然后考虑网上销售/零售的方面.
或者说电商的促销广告.
某种程度上来说,电商的促销目的也是为了提升销售额.
所以,原则上来说,对于来源追踪并不需要太关心.
把广告成本也考虑进来的话呢?
其实就是类似线下的地区转化率区别.
这个依赖的是前期数据.
所以,电商在这一块跟线下的策略其实是没什么区别的.
甚至在成本控制和收益目标方面,也是没什么差别的.
电商有限的优势之一在于点对点的物流.
而随着目前电商的自提以及线下已有的就近送货来说,能拉开的空间其实不太多了.
当然,C2C是另外一回事.
但是C2C的处境可能更尴尬.
因为客户分布地理上和网络上都可能更稀疏,于是带来的就是通过优化"投放"的可能收效微乎其微.
尤其是在一些平台型的地方.
而对于像Tmall之类的大中型C来说,其实已经是某种程度的B2C了.
这个跟线下的区别只是"销售地点"的不同.
就如同一家线下零售提供了一个在线订单的服务一样.
本质上来说,还是线下的那套成本/利润模式.
因为最终关注点都是销售.
所以,抛开C2C的部分.
所谓电商,只不过是一家开在互联网的分店而已.
游戏规则和侧重点并没有太多的不同.
于是,把互联网其他地方的玩法搬过来用,其实就显得有些无谓和多余了.
毕竟,这是销售为王的地方.
订阅:
博文 (Atom)
爽文
去看了好东西. 坦白说,多少是带着点挑刺的味道去的. 毕竟打着爱情神话和女性题材的气质,多多少少是热度为先了. 看完之后倒是有些新的想法. 某种程度上来说,现在的年轻人或者说声音就像小叶. 只要说点贴心的话就能哄好. 也是那种可以不用很努力了. 留在自己的舒适区避难所小圈子抱团就...
-
最近尝试了下海淘. 当然,方向上来说是从国内到新加坡. 先是买了个iPhone,算上运费和双重征税,到手比官方还是便宜个一两百新的. 换算回来也不多事10%的纯粹价格因素差异. 当然,之类有电商促销的因素. 也有比较基准是新加坡Apple Store售价的原因. 但如果同样比较A...
-
这两天看完了Netflix版的三体. 某种程度上来说,完成度还是不错的. 尽管开始的时候对于第一集片头有些争论,但整体如果带入当下去看的话,还是有些梗的. 比如三体对于地球科技的发展速率的担忧,由此衍生的智子. 以及现有力量对比上的压倒性优势. 如果带入中美关系以及各自的历史阶段...
-
前几天Sora出来后才仔细看了下diffusion,发觉确实算挺取巧的. 按照naive的intuition或者说不那么现代的方式的话,可能需要segmentaion为基础的composite的方式去生成图片,即使扯点deep learning/network的,可能也是类似一些...