Other articles


  1. User-defined literal in C++

    平时的开发中经常要用到json,长久以来我们的C++项目中一直在使用jsoncpp这么一个比较古老的json库。由于还是基于C++03标准的库,API的设计上保留着非常原始的风味。 譬如你要构建一个{"foo": "bar"}这样的json对象。你得这么写

    Json::Value root;
    root["foo"] = "bar";
    

    经常用javascript的同学一定觉得这样的构造方式傻爆了。的确,在javascript中可以轻松的“字面意义上的(literally)”创建一个json对象

    var root = {
        foo: "bar"
    };
    

    在python中你也可以“字面意义上的”创建一个json(list)

    root = {
        "foo": "bar"
    }
    

    当然,python这样创建的只是list对象,你可以近似当作json对象来使用。

    那么,以偷懒为进步原动力的工程师们自然就会想,在C++中能不能也实现这样的构造方式。

    答案是肯定的。

    C++11的标准在今天已经不是什么新鲜事物了,虽然有海量的历史项目仍旧没有或者无法迁移到新的C++标准。但是我们仍然可以一窥新标准给工程师们带来的便利,在初始化对象上,新标准就给我们提供的完美的解决办法。

    我们先来看从一个 …

    read more
  2. React试用

    最近公司需要弄一个统计分析系统来收集和展示产品中的一些关键数据。因为数据采集和聚合分析部分我之前已经做好了并且提供了REST接口,实际上剩下的工作只需要做一个web前端来方便使用即可。 如果仅仅从快速撸一个能用的前端出发,那么我可能会沿用之前的后端模版动态渲染+bootstrap前端布局+jquery等js库操作前端交互的方法。但这种方法的问题在于后端已经有现成的数据接口了,没有必要改动后端服务从而污染API。 那么自然而然的就考虑完全抛弃后端动态渲染仅用AJAX调用来获取数据来分离前后端功能,这样能完全不改动后端代码的情况下完成这个服务。于是问题收纳为用bootstrap和jquery做一个单页应用。 但是这种传统的方法存在另外一些问题。

    1. 页面或者组件的模块化程度很低,难以复用。
    2. 视图和控制部分分离,css控制式样,js控制逻辑,业务复杂以后代码难以扩展和维护。

    于是自然想去寻找一些新的前端解决方案。事实上,经过这几年来移动互联网行业的发展,前端的工程化探索已经取得了一些显著的成果了,各种前端MVC,MVVM等前端框架层出不穷,新的设计思路如雨后春笋。 经过基本的探索,我主要考察了angular.js,backbone.js,react和vue.js这几种相对主流和热门的前端技术。 作为一名非专业的前端开发者,我无法深入的研究每一种流行框架或技术并总结出最佳实践,比较优劣,只能根据有限的前端开发经验和项目需求来选择适合当前环境的工具,框架的对比网上已有很多文章,在此不再赘述。 最后选择了react作为新的尝试来完成手头的工作。本文便是对react的一些实践总结。

    首先react的定位是一个view层,这点与backbone,angular这样的前端mvvm框架有很大的区别。简单来说react制定了一套只用javascript来构建视图组件的规则,利用这个规则你可以写出模块化程度高,耦合度低,复用性好的前端组件。 为了理解react的设计目标,我们首先要理解三个react的概念 …

    read more

links