Browse Category 编程实践

WmDog文件处理流程

最近开了一个新坑,需要做一个把美团外卖订单数据解析成单个菜品数据的工具。暂定名称WmDog。源起是一个朋友的实际需求。仔细想想,自从业以来,对于web上相关的文件系统处理仅止步于上传、保存,而这一次还需要后续的处理和下载。而且整个流程设计有一个明显的渐进过程,于是想要记录一下。

第一版的按照所需的功能进行了最简单的设计。

Continue Reading

Rust的模块系统初探

学习一门编程语言,知道如何引用外部的文件或者说模块系统是比较重要的一点,PHP用`autoload`机制,C有经典的`include`。最近写 [wslexe](https://github.com/jswh/wslexe) 的时候,因为原作者用的 rust,所以就简单学习了一下。但是 rust 的模块文档是从顶部设计开始写的,很多概念,有些复杂,这里写一个应用导向的学习笔记。

Continue Reading

中数据分析

same 在前段时间更新了数据的展示形式,数据流的方式意味着决策上将要更多地向个性化的方向发展。说到个性化,那就意味着大量的用户行为数据的收集和处理,意味着原先用 MySQL 还能支撑的统计分析将不再适用。因此,开始考虑需要一套大数据处理的工具。说到大数据,一般都会自然得想到 Hadoop 系的一系列工具,从计算引擎,到存储系统,再到查询工具。Hadoop 的这一整套东西,很好很强大,但也意味着架构的复杂。

作为一个之前没有接触过任何 Hadoop 系统地超新手,我们艰难得尝试了几天,最终还是选择了放弃。放弃的原因,除了复杂度之外,更是因为一种杀鸡用牛刀的感觉。即使是全量的记录 same 的访问日志,每天也不过数 GB,这样的数据量,要直接上动辄十数台机器(hdfs + Hadoop + 控制节点)的集群着实有些奢侈(费用和维护成本)。而且,公司里也基本没有对 Hadoop 体系熟悉的人,后续的知识传承也很成问题。放弃了 Hadoop,就要重新寻找这样一种简单又可扩展的替代品:架构简单,用少数机器甚至单机即可组建;快速的扩展能力,来应对后续可能的数据增长。

Continue Reading

一些重构体会

最近在重构多媒体服务,包括爬虫和搜索两部分。原先的代码是一个实习生 Q 同学写的,用的 python。如果抽出其中的一块代码来看, Q 同学应该是一个重实践的同学,代码质量还是很不错的,但是之前看的时候我还是很难理解他的编程思路。直到这次彻底的重构,才发现代码中的一些问题。 这里记录下来,也是对自己的提醒。

命名

这其实是一个老生常谈的问题,而且大部分人其实都有这个意识,Q 同学在对待大部分的命名上也都在尽量选择合适词汇。但是,对于工具函数却没有一视同仁。 比如

Continue Reading