zoukankan      html  css  js  c++  java
  • ibmm,让思维导图回归本质

    赖勇浩(http://laiyonghao.com)

    缘起

    你想用思维导图来分析问题,然后,你就有两个问题了。——无名氏
    许多朋友都听说过思维导图(又称脑图),它是用来理清思路的好办法。同时我也相信许多朋友在使用思维导图的过程中遇到了许多问题,比如:
    • 搜索了一下,发现思维导图的编辑器都好几十 MB;
    • 下载安装发现这些 java 写的程序启动巨慢,还占内存;
    • 编辑了三五十个节点发现自己不停地要调整位置,还调不好看;
    • 调好看了发现自己都忘了要分析的问题;
    • 保存的文件非得用专门编辑器才能看和改,说是 xml 文本格式打开发现根本看不懂改不得;
    • 把文件放到版本控制系统里,版本比对的时候一团乱像,理不清来龙去脉;
    • 号称跨平台,手机一般看不了,更别提编辑了。
    是的,我也遇到了这些问题,然后我就开始去找一些更轻量级的编辑器,希望能够方便地使用思维导图,因为我觉得这东西不应该这么复杂,之前找到的编辑器都没有抓住思维导图的本质。
    我找到的最有启发的东西是一个网站:Text 2 Mind Map(http://www.text2mindmap.com/),它提出了使用基于缩进的文本来描述思维导图,然后再由软件渲染出来!是的,就是像 Python 那样的缩进语法,多一层缩进就是上一层的子节点。是的,我们再也不需要去调整各个节点的位置了,软件会自动帮我们计算最好看的渲染方案!下面来一个例子,文本是这样的:
    Months of the year
        Spring
            March
            April
            May
        Summer
            June
            July
            August
        Autumn
            September
            October
            November
        Winter
            December
            January
            February

    渲染出来的图片是这样的:


    漂亮吧?是的!太漂亮了。但是我在使用的过程中发现如果有一两百个节点,这个 Flash 开发的应用程序极易崩溃!除此之前我也没有办法让它跟其它软件或网络应用结合起来。所以我开始以此为出发点,去想一些自己的方案。最后结合我自己曾用过一下 graphviz 和 python 的特点,我决定自己写一个脚本来做基于缩进的思维导图的文本与 graphviz 的 dot 语言之间的转换。这就是 ibmm2gv,考虑到日后可能会有 ibmm2any 的可能,我就把它放进了一个叫 ibmm(indentation-based mind map)的项目里,并托管到 google code(http://code.google.com/p/ibmm/)。

    安装

    安装 ibmm2gv 非常简单,因为它已经托管到了 pypi,只要你安装了 python 和 pip,然后在命令行执行:
    pip install -U ibmm2gv
    就安装成功了。ibmm2gv 是遵循 unix 哲学的小应用,默认情况下它从标准输入里读取输入,然后把输出放到标准输出,你可以使用管道把它跟 graphviz 的生成程序 neato(也可以是别的渲染引擎,比如 dot)连接起来。下面举个例子,把上文中的文本保存到一个文件中,取名为 season.ibmm,然后在其目录执行:
    cat season.ibmm | ibmm2gv | neato -Tpng -oseason.png

    你可以看到生成的 season.png 图片了。见下图:


    怎么样?跟 Text 2 Mind Map 生成的图片也差不太多吧?好嘛好嘛,我知道这是黑白的风格好像有点逊色,但你要理解啊,这是我用两天业余时间做的 0.0.1 版本,接下来我研究一下 graphviz,生成漂亮的真彩图片不是问题。
    重点是有了 ibmm2gv,以后只要打开记事本就可以写脑图了,手机平板都不成问题啊!保存到 svn/hg/git 都可以,版本一比对,一目了然!哪怕有时候 SSH 连接到服务器上,虽然看不到图,但看到树状的纯文本基本上也可以脑补完全了!

    关于中文

    graphviz 是支持中文的,需要指定 -Nfontname 参数,不然默认情况下找不到中文字体来渲染就乱码了,在 windows 上可以试一下 -Nfontname="Microsoft YaHei",这表示使用微软雅黑,在 linux 下可以使用 -Nfontname="WenQuanYi Micro Hei Mono",这表示使用文泉驿微米黑。在 linux 下可以用 fc-list 来看一下安装了哪些字体,如果没有文泉驿微米黑可以使用命令 aptitude install ttf-wqy-microhei 安装。下面是一个例子:
    一年 12 个月
        春
            三月
            四月
            五月
        夏
            六月
            七月
            八月
        秋
            九月
            十月
            十一月
        冬
            十二月
            一月
            二月

    把上述文本保存为 season-zh.ibmm,执行命令:

    ibmm2gv --infile=season-zh.ibmm | neato -Tpng -oseason-zh.png -Nfontname="WenQuanYi Micro Hei Mono"

    就可以看到使用文泉驿微米黑字体在 linux 下渲染出来的图片了:


    准实时看到最后效果

    很多急性子,希望随时能够看到最后的效果,这里有一个还算过得去的方案,需要你使用 windows 7 系统。

    1. 打开一个命令行界面,在你保存 ibmm 文件的路径下执行:python -m SimpleHTTPServer ,这样你就开了一个本地的 HTTP 服务器。
    2. 然后把你的文本编辑器打开,按下 windows 键和左方向键把它放在左半屏,编辑、保存,
    3. 然后在一个新的命令行窗口中执行生成脑图的命令;
    4. 然后再打开一个浏览器,按下 windows 键和右方向键把它放在右半屏,在地址栏输入 http://127.0.0.1:8000,就可以看到生成的脑图的文件名,点开即可查看。在后续的编辑过程中,只需要保存、生成、在浏览器按 F5 刷新即可。

    后续开发

    1. 首要的肯定是更漂亮的效果。
    2. 其次是类似 restview 的方便的预览方案。
    3. 然后是各种 wiki 的相应的插件的开发,敬请期待吧!
  • 相关阅读:
    javascript-事件
    javascript-数组简单的认识
    javascript-dom操作
    JavaScript入门
    python语言程序设计?
    4,14
    python第二周。2019.4.13
    python第二周
    python语言程序设计9
    python语言程序设计8
  • 原文地址:https://www.cnblogs.com/aiwz/p/6154306.html
Copyright © 2011-2022 走看看