zoukankan      html  css  js  c++  java
  • SolidMCP开篇

    来龙去脉:

    何为SolidMCP?

    Solid+Maode+Chengzi+Piaopiao.

    为何SolidMCP?

    博客名,邮箱名;

    还是代码农夫Piaoger的试验田;

    试验田内,会有我重造或仿造的轮子,也会有可以收获的成果。

    对于SolidMCP这块试验田,有一些初步的想法:

    >Revisiting SolidMCP

    做一个Revisiting,轮子不管是自造的还是仿造的,都应该有些文字来解释它的工艺。

    感觉无论是C2C(Copy to China, or Shanzhai)还是Revent,都能接触和学习更多的东西,绝对善哉。

    至于Revisiting的方式,Blog、docbook、TiddyWiki、Comment in Doxygen Style甚至更多的Unit Test Cases的形式,皆可。

    > 重构

    经过长期积累,SolidMCP已经是一块不小的试验田,但田大了,阡陌交通,一定是需要一些重构的。

    不少东西,都还只是一个Dummy implemetantion或者说Placeholder,需要填充。

    有些东西属于急就的产物,需要“被和谐”;几乎所有的工程都只有Win32-Debug Configuratoin。

    Modularity、Pluggability、Extensibility、Implementation Hidden甚至Code Style都需要Revisiting。

    > 增强TDD或者ATDD的思维方式

    此前的SolidMCP,尽管用TUT写了一些Test Cases,但究其目的,并非Unit Test,更谈不上TDD。

    说白了,是利用TUT便于注册Test Case的功能,做了些Coding First and Having some simple tests的事情罢了。

    即便只是剽窃了Unit Test的名头,终究无需为每次的小小测试和学习的Tips写一些名字类似“qesdf”或者“adfs”之类的的工程了,并且能把这些小东西很规整的保存下来,大有裨益。

    成果就是:

    在我的SolidMCP Solution中,每个模块内都有一个iTest和iTry文件夹,iTest用于类级别的Test Cases,而iTry则是该模块相关的一些Try Cases。

    -------------------------------

    -------------------------------

    在Network模块中,我仿造CURLPP用C++封装了一把LibcURL,然后在此基础上写了一个OAuth客户端的东西。

    iTest/OAuth/Test_OAuth.cpp包含了SolidMCP OAuth的一些基本的Test Cases,基本能访问了公司的OAuth服务还有http://term.ie/oauth/example。

    iTry/LIBOAuth/Try_OAuth则是把liboauth弄进来,并把它本来的一些例子弄成一些TUT支持的Test Cases,搞成Try Case了。

    JSON也是如此。我甚至有一个专门的iSurfing/Booster用来玩boost内的一些玩意儿。

    > Domain-specific

    Framework最终总是要为Application服务的,所以随着Framework的不断丰满,Domain-specific Applications也需要多起来。

    最终SolidMCP应该是一个集Networking、CAGD、Graphics一体加上N多Utilities的Application大杂烩,至少要有一个朝这个方向发展的Application。

    也许永远等不到那一天,那时候一定是心累了,疲了。


    > Build system

    从一开始,SolidMCP就考虑了Cross Platform。尽管它现在还只是Windows Spcific,但并不排除某天高兴了,也去玩玩iApps。

    支持Cross Platform自然需要有Cross Platform的Build System,否则维护代码将成为恶魔。

    现在我可能考虑的Build System有三个,各有所长:

    CMake: http://www.cmake.org/

    SConscript: http://www.scons.org

    Premake :http://premake.sourceforge.net/

    说实话,我现在比较偏向于基本Python的SConscript,定制能力超强,但不能产生VS或XCode的Project/Solution,对我习惯了VS的人来说,很有些不适应。

    CMake呢,虽能生成VS或XCode的Project/Solution,搞一堆ALL_BUILD和ZERO_CHECK之类的,也太难看了些。

    倒是premake,在这方面倒是很照顾广大人民群众,搞一个lua脚本,就可以帮你搞定,包你清爽。

    其实这三个东西用得都不少,据我所知,SConscript有Google Chrumium, CMake有Blender/KDE, Premake有ODE。

    而且,KDE在迈向CMake的过程中,还宠幸过Scons,但最终放弃。>>

    > Source Control

    至于Source Contorl,自己搞的Perforce Serve早已名存实亡。重装电脑,把之前的P4 Server整没了,所以现在基本上还是Backup with Copy的作坊式方式。为了保险起见,隔段时间还得在家里的大硬盘上Backup一把。之后应该会考虑一下基于Python的hg(Mercurial)的分布式SCM工具,它的IDE叫龟公TortoiseHg

    此外,对于代码的托管,有5种选择Google Code、 sourceforge、Monotone、bitbucket和GitHub。现在我比较倾向于bitbucket,毕竟它是基于HG,在被JIRA/ConfluenceWiki它爹收购之后,前景更明朗一些。至于Google Code,实在是怕被封,还有GitHub,其实老早就申请了帐号,但考虑到以后会在建立加一个基于HG的资源管理环境,那暂时还是考虑HG吧。

    不过这些都是后话了。当然了,也许可以把Blog一些代码附件放在上面。

    不过从另外一方面来讲,这些东西的离线应用是不错的,比如:

    Monotone is implemented in modern-dialect C++ on top of the Boost library, the Botan cryptography library, and the SQLite database library.

    > Scripting support

    Binding:

    一直梦想着SolidMCP有自己的Python绑定,这样的话,核心代码用C++写,其他就用Python代劳了。

    另外一种比较好的Scripting语言是Lua,在游戏引擎中用的很多,号称Apple App Store几个卖的比较好的都用Lua来做Logic。

    另外还有可能在一部分场合会用到JNI,便于创建Scala(JVM) & C++的Hybrid Mode。

    现在看来还是个梦,不过之后的重构或新写的东西要朝着Easy of Binding方向前进。

    Development Environment:

    现在的Development Environment还是BAT为主,另外有一些Python;

    之后应该以Python为主,为基于Python做一些小的工具。

    > Align with New Stardard

    SolidMCP的一大部分都是C++的,随着C++ Next Standard的发布,需要做一些相应调整。

    后记:

    刚才在FeedDemon收Feeds的时候,发现Codenow.com发了一篇《如果从头开发新的3d Engine》,有些感触。

    不过,遨游在技术的海洋,总是没错的。

  • 相关阅读:
    BeautifulSoup的基本用法
    打印实例
    webservice和一般处理程序
    C# 后台调用存储过程
    表格增加删除
    asp.net C# 获得配置文件AppSettings 的值
    深入浅出zookeeper(一)
    resource下的excel文件下载被损害
    csdn添加目录
    spring面试题,求求你别问我spring了!
  • 原文地址:https://www.cnblogs.com/piaoger/p/2012262.html
Copyright © 2011-2022 走看看