Mongodb map-reduce实战

作者:JerryXia | 发表于 , 阅读 (0)
Aggregation pipelinemap-reduce functionsingle purpose aggregation methods第1、3种都比较好理解,因为可以类比到我们熟悉的关系型数据库。第一种类似于group by查找,第三种类似于使用使用关系型数据库中自带的如count,distinct等函数做的简单的聚合查找。
第二种其实也不复杂,让我通过最近项目中一个实际应用的例子,来向你展示mongodb map-reduce的应用,你就会发现他的强大之处,往往用来解决第1、3种聚合方式都不能解决的问题,这也是mongodb相比于传统关系型数据库在数据查找方面的过人之处。
这个项目是面向建材行业的,用MEAN实现。其中有个需求:在项目表中分页查找出每个小区的名字和里面项目的数量,最近3天新增的和修改的项目数量,最近一次修改时间,并按最近修改时间排序(项目就是小区中要装修的某套房子的信息)。
简单分析下,第三种用简单的count、distinct函数肯定处理不了这个问题,第一种方式虽然可以按照小区对项目分组,但是分组后统计近三天的新增和修改数量则无法实现,因为分组后只...阅读全文

kylin与superset集成实现数据可视化

作者:JerryXia | 发表于 , 阅读 (0)
apache kylin是一个开源分布式引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据。而superset是airbnb开源的一款数据可视化工具。
kylin在超大数据规模下仍然可以提供秒级甚至毫秒级sql响应的OLAP多维分析查询服务。而且对服务器内存的要求也不像spark sql那么高,经过多方面的优化,数据膨胀率甚至可以控制在100%以内。它利用hive做预计算,然后建立多维的数据立方体,并存在hbase中,从而提供了实时查询的能力。
superset也就是早先的caravel,提供了丰富的图表供用户配置。只要连上数据源,勾几个简单的配置,或者写点sql。用户就可以轻易的构建基于d3、nvd3、mapbox-gl等的炫酷图表。 

我厂也是选择了kylin和superset,遗憾的是superset支持多种数据源,包括druid、hive、impala、sparkSQL、presto以及多种主流关系型数据库,但是并不支持kylin。于是我们对其进行了改进。
首先观察superset的源码,它后台使用Flask App Builde...阅读全文

iOS CocoaPods组件平滑二进制化解决方案

作者:JerryXia | 发表于 , 阅读 (0)
iOS CocoaPods组件平滑二进制化方案及详细教程
感谢"fly2never_宝贝别哭"。可以使用cocoapods-packager这个插件来方便生成library(静态库,动态库都可以)。
强烈建议生成framework。
IS_SOURCE=1 pod package YTXChart.podspec --library --exclude-deps --spec-sources=http://gitlab.baidao.com/ios/ytx-pod-specs.git,https://github.com/CocoaPods/Specs.git虽然有了这个方便的工具,但是了解一下打包的过程也是好的。
后记,有人问我为什么不改用Carthage。
可以看看我写的这一篇Carthage和iOS组件二进制化
CocoaPods和Carthage设计目的不一样。
我们的现在组织架构有多个iOS team,多个App。
已经使用了CocoaPods,如果要再集成Carthage比较麻烦。我们自己team还好说,还有其他team怎么办。其他team已经用的是Coco...阅读全文

银天下CocoaPod版本规范

作者:JerryXia | 发表于 , 阅读 (0)
版本规范major.minor.patch
App主项目依赖:'~> 0.2.3'。都精确到patch版本号。pod update将会升patch。
作为Pod库开发者修改bug和一些其他不重要修改(修改README,Format等),增加patch版本号。用户可以放心升级。曾加功能并且向前兼容,增加minor版本号。用户可以考虑升级。(推荐升级)不向前兼容或重大修改或重构,增加major版本号。用户应当慎重决定是否升级。当major为0时,表示该库为beta版本。不是稳定版本,所以会经常修改,并很容易造成向前不兼容的情况。开发者需要认真评估major版本号。此时发生向前不兼容的情况,开发者应当升级minor版本号。其他同上面的规范。银天下私有Pod库依赖版本管理原则:在保证自己能正常工作的前提下,尽量降低对其他库依赖的严格程度
只精确到minor。
例外情况,当major为0时,使用者应当清楚知道,该库为beta版本。需要精确到patch版本号。因为很有可能发生minor版本号升级而无法向前兼容的情况。
Example:  
//银天下私有Pod库s.dependency...阅读全文

2016.6.24北京GMTC第一日分享上午

作者:JerryXia | 发表于 , 阅读 (0)
开发过程的动态化。基于原生开发的动态化。插件化和热补丁。热补丁iOS上的jspatch,Android上的nfix。前端开发能力是移动端开发者将来所需要具备的能力。
组件化可以使得App和组件并行开发提高开发效率。追求更好的性能和扩展性。开源化开发,组件化可以更好地开源。可以很容易地把私有的组件项目推广到开源社区。扩展开发团队的视野和开发水平。可以很容易的引入外部好的开发思想和组件。
Google提出了instant App概念。让App的一部分功能直接扩展到系统运行,直接给用户提供服务。语音交互将是未来的趋势。
王永杰(京东,Android系统架构组负责人)分享他的观点
客户端技术架构
分层设计模块化(可测试,可观测,可替换)插件化运营,活动推广越来越重要。提供了标准模板给运营人员定制活动,不需要运营人员写一行代码。体验是Native的。
奔溃率是一个重要指标。对帮助转化率。建立一个动态检测,自动对重大bug或行为异常(比如进入某个页面的数据曲线大幅降低)进行报警。
脱离业务讲技术就是刷流氓。
Facebook iOS 技术发展十年关注InfoQ公众微信号回复PPT获...阅读全文