356 评论

开源项目:【自动】绘图工具 Graphviz——《太子党关系网络》就是用它制作

★先插播一个安全通告


  一星期前(2月16日)曝光了一个高危漏洞。该漏洞存在于广泛使用的 glibc(GNU C Library)。Linux 和 BSD 上面有非常多的软件依赖了这个库。而且出漏洞的函数是 getaddrinfo——该函数被很多软件(比如:各种脚本语言引擎、SSH、cURL ......)用于 DNS 相关的功能。
  这个漏洞是可以被远程利用的。攻击者可以通过好几种方式来利用该漏洞,俺认为可能性比较大的方式是“中间人攻击”。具体的技术细节就不多谈了,感兴趣的同学可以参见 Google 官方的安全博客(链接在“这里”)。
  值得一提的是:
  这个高危漏洞,又是 Google 的研究人员披露的。为啥俺要说【又】?因为最近几年,已经有好多个影响很广泛的高危漏洞是 Google 安全研究团队曝光的(还记得前些年那个“心脏出血”漏洞吗)。所以,俺把博客架设在 Google 的 Blogspot 平台上还是比较放心的。虽然 Blogspot 博客平台在全球博客市场排名老二,但是份额最大的 Wordpress 平台,出了太多的安全漏洞,令人实在不敢恭维——据说前几天 Linux Mint 官网被入侵,就是因为 WordPress 的漏洞。

  当某个高危漏洞曝光之后,到相关软件提供补丁,这中间有一个很危险的窗口期。
  由于俺是高危险人士,所以前几天先保持静默——暂不使用“编程随想”这个身份进行网络活动。


★引子


  前段时间俺承诺把《太子党关系网络》开源到俺的 GitHub 帐号下。
  对这个项目而言,“开源”只是一种手段而不是目的,开源的目的是:让更多人能够参与到其中,一起曝光天朝的权贵。
  为了更好的达成此目的,今天发一篇博文,扫盲一下 Graphviz 这个牛逼的绘图工具。俺制作的《太子党关系网络》就是用它来【自动】生成各种复杂的网状关系图。

★Graphviz 是啥?


  Graphviz 是洋文“Graph Visualization”的缩略词,是一个开源的,跨平台的自动绘图工具,其官网在“这里”,维基百科的介绍在“这里”。
  这玩意儿诞生于上个世纪末,来自 AT&T 的实验室,属于名门正派出身。十多年来,它已经被广泛使用于各个领域。其 Mac OS 版本甚至还获得了2004年的苹果设计奖。
  Graphviz 不但是开源软件,而且是自由软件。使用它完全【无需】付费,也【没有】任何注册码之类的恶心东西。

(下图是 UNIX 操作系统的全家福,基于 Graphviz 绘制)
不见图 请翻墙

★Graphviz 能干啥?


  “绘图工具”有很多种,Graphviz 主要是用来绘制【关系图】。所以它更类似于微软的 Visio。但是它与 Visio 有一个【本质上】的差异:
用 Visio 画图是【手动】的——你需要动用你的肉眼和手指头。
而用 Graphviz 画图是【自动】的——你只需要告诉 Graphviz 这张图包含哪些元素,元素之间有啥关系,然后 Graphviz 可以【自动】帮你画出来。
  那么,你如何告诉 Graphviz 你要画的图形包含哪些元素捏?这就需要用到一个名叫 DOT 的描述语言(待会儿俺会简单介绍 DOT 语言)。

★为啥用 Graphviz 而不用 Visio 或类似的工具?


  客观地讲,Graphviz 和 Visio 之类的工具,各有各的特长。因为本文介绍的是 Graphviz,所以下面聊一下:哪些场景是 Graphviz 胜过 Visio 类工具的。
  简而言之,Graphviz 胜过 Visio 这类工具的关键在于【自动布局】。如果你要绘制的关系图非常复杂,这时候【手动】布局就变得极其繁琐。而 Graphviz 的自动布局功能,再复杂的关系图,也可以自动搞定。
  请看下面几个例子(都是用 Graphviz 自动绘制的)

下图是美国本土48个州的比邻关系(不含2个海外的州)
不见图 请翻墙
  可能有读者此图不以为然,觉得48个节点不算多。这张图如果【手工】绘制,难点之一在于:如何让所有联线的交叉最少(图中只有一处交叉)。单单这点就足够伤脑筋了。
  而 Graphviz 的自动布局功能,无需人为干预就可以做到“最小化连线交叉”。

下图是俺整理的《太子党关系网络》其中一幅图(原图太大,缩小4倍之后裁剪其中一部分)
不见图 请翻墙

  如果你想看更复杂的关系图,可以去 Graphviz 官网。那上面收集了一些超级复杂的关系图(链接在“这里”)。

★Graphviz 软件的使用


◇下载、安装


  对于用 Windows 的同学,直接上官网的这个页面,可以下载到 Windows 的二进制软件包;
  对于用 Linux 的同学,主流的发行版的“软件仓库”应该都包含了 graphviz,你只需用发行版内置的软件包管理器,就可以把 graphviz 装好;
  对于用 Mac OS 的同学,到官网的“这个页面”下载软件包。

◇DOT 命令行的使用


  (如果你从来没有用过命令行,建议先了解“命令行”相关的基本概念,再来本看小节)
  假设你已经用 DOT 语言写好了一个关系图的描述文件,假设这个文件名是 test.gv 那么你可以进入 test.gv 所在的目录,然后用如下命令生成【png图片】
dot -Tpng -O test.gv
  对于 Windows 用户的说明:
  你可以把 graphviz 安装目录下的 bin 目录设置到 PATH 环境变量中,就可以在命令行中直接使用 dot 命令。否则的话,你需要用【全路径】方式来启动 dot 命令。

◇支持的输出格式


  上述命令行中的 -Tpng 表示生成的文件类型是png图片。如果你需要生成其它格式,也可以。目前 Graphviz 支持很多种格式,
图片格式【至少】支持:png、jpg、gif、bmp、tiff、ico、svg
文档格式【至少】支持:pdf、ps/eps
  完全的输出格式说明参见官网这个页面

◇关于扩展名的说明


  DOT 的描述文件有好几种扩展名,用得比较多的就是 .dot
  但是这个扩展名与微软的 Word 模板的扩展名冲突了。所以俺在本文的示例,用的都是 .gv 这个扩展名。

★DOT 语言入门


◇概述


  前面提到,你需要通过 DOT 语言来描述一个关系图,然后 Graphviz 根据这个 DOT 语言的描述来自动生成图形。
  很多读者一听到“语言”就先望而生畏,其实这个 DOT 并不复杂。从原则上讲,它只描述三种东西,分别是:点(node)、线(edge)、图形(graph)。你可以通过 DOT 语言定义这三种东西的属性(比如:颜色、形状)。

◇两种图:有向图(digraph) VS 无向图(graph)


  DOT 语言支持两种图形,分别是“有向图 和 无向图”。通俗地说,“有向图”里面的连线是有箭头(比如前面给出的那张“太子党关系图”);反之,“无向图”里面的连线是没有箭头的,比如前面那张“48州的比邻关系图”。

  定义一个无向图很简单,先看下面这段代码。
graph simple
{
    a -- b -- c;
    b -- d;
}
// 这是个无向图

  上述代码的效果图如下:
不见图 请翻墙

  要定义一个有向图,也很简单,代码如下:
digraph simple
{
    a -> b -> c;
    b -> d;
}
/* 这是个有向图 */

  上述代码的效果图如下:
不见图 请翻墙

  这2段代码中,graph 用来表示一个无向图;digraph 用来表示一个有向图。
  示例中的 simple 表示图的名称。图的名称可以是【英文字母、下划线、数字、中文】。最好【不要包含】其它英文的标点符号(也就是【半角符号】),可能会导致一些语法错误。但是中文标点符号(也就【全角符号】)没有关系。
  花括号/大括号 里面的语句表示【图的定义】——这张图包含哪些内容。每一条语句以【分号】结尾(类似于 C、C++、Java 的语法)。
  顺便提一下 DOT 语言的注释(其注释的语法与 C、C++、Java 类似),包括如下两种:
【单行注释】——以 // 表示:【该行】后续的内容为注释
【多行注释】——以 /**/ 包含起来的内容为注释

◇节点(node)


  通过上面两个例子,你应该已经获得了感性的认识。OK,下面来讨论“节点”(node)的概念。
  在上面两个例子中, a b c d 都是【节点名】,分别代表节点。在图的定义中,相同名称就代表同一个节点。当 DOT 编译器碰到一个新的名称,就认为这是一个新的节点。
  节点的命名规范类似于图的命名规范,此次不再罗嗦。如果某个节点没有设置 label 属性(关于【属性】,下面会聊到),那么图形中就用节点名作为该节点的标题——就好比前面两幅简单的示意图。

◇节点(node)的属性


  在节点名之后可以使用 方括号/中括号 来定义该节点的属性,属性之间用半角逗号分隔。
  属性的定义采用如下形式:
属性名 半角等于号 属性值
(如果属性值会包含空格,需用引号把属性值引用起来)

  常用的【属性名】包括如下:
label——标题
color——颜色
style——样式
shape——形状
(还有更多属性,可以参见官网“这个链接”)

  给一个示例代码及效果图,你一看就明白了:
digraph node_attr
{
    shape1 [shape=box, label="编程随想注:\n矩形节点"];
    shape2 [shape=circle, label="编程随想注:\n圆形节点"];
    shape3 [shape=ellipse, label="编程随想注:\n椭圆形节点"];
    shape4 [shape=polygon, sides=4, skew=0.4, label="编程随想注:\n平行四边形节点"];
    shape5 [shape=none, label="编程随想注:\n无边框节点"];
    shape1 -> shape2 -> shape3 -> shape4 -> shape5

    color1 [color="blue", label="编程随想注:\n蓝色边框"]
    color2 [color="green", style=filled, label="编程随想注:\n绿色填充"]
    color3 [color="#ff0000", style=filled, fillcolor="yellow", label="编程随想注:\n红色边框+黄色填充"]
    color4 [color="#0000FF" style=filled, fillcolor="green:red", label="编程随想注:\n蓝色边框+从绿色到红色渐变填充"]
    /* 上面两个节点采用 HTML 的颜色语法,dot 支持 这种语法 */
    color1 -> color2 -> color3 -> color4

    text1 [shape=box, fontsize=12, label="编程随想注:\n小字体"]
    text2 [shape=box, fontsize=24, label="编程随想注:\n大字体"]
    text3 [shape=box, fontcolor="blue", label="编程随想注:\n蓝色文字"]
    text4 [shape=box, label=<编程随想注:<br/><b>粗体</b> <i>斜体</i><u>下划线</u>>]
    // 注意:text4 使用 HTML 风格的 label,无需引号,但必须用尖括号
    text1 -> text2 -> text3 -> text4
}
不见图 请翻墙

  补充说明:
  在上述示例,俺刻意用到了 HTML 的颜色语法。关于这种语法的说明可以参见维基百科的这个链接

◇连线(edge)


  聊完【节点/node】,再来聊【连线/edge】。
  如前面所示,无向图的连线用 -- 表示,有向图的连线用 -> 表示,非常形象。定义连线的语句也是以分号结尾。
  连线与节点的关键差异之处在于——节点有名称而【连线没有名称】。

◇连线(edge)的属性


  连线也可以设置属性,其属性写在定义连线的语句末尾,语法类似节点属性。
  常用的【属性名】包括如下:
label——标题
color——颜色
style——线条的样式
dir——连线的方向(仅用于有向图,可设置:正向箭头、反向箭头、双向箭头)
arrowhead——前端的样式
arrowtail——末端的样式
(还有更多属性,可以参见官网“这个链接”)

  下面给几个示例,你自己去揣摩(以【有向图】作示范)
digraph edge_attr
{
    style0[label="编程随想注:\n以下是样式的示例"];
    style1[label=""] style2[label=""] style3[label=""] style4[label=""];

    style0 -> style1 [style=solid, label="实线"];
    style1 -> style2 [style=bold, label="粗线"];
    style2 -> style3 [style=dashed, label="短划线"];
    style3 -> style4 [style=dotted, label="虚线"];

    arrow0[label="编程随想注:\n以下是箭头的示例"];
    arrow1[label=""] arrow2[label=""] arrow3[label=""] arrow4[label=""] arrow5[label=""] arrow6[label=""];
    arrow0 -> arrow1 [dir=both, label="双向箭头"];
    arrow1 -> arrow2 [arrowsize=2.0, label="大箭头"];
    arrow2 -> arrow3 [arrowhead="open", label="带倒钩的箭头"];
    arrow3 -> arrow4 [arrowhead="halfopen", label="单边倒钩"];
    arrow4 -> arrow5 [arrowhead="ediamond", label="菱形箭头"];
    arrow5 -> arrow6 [arrowhead="dot", label="圆形箭头"];

    color0[label="编程随想注:\n以下是颜色的示例"];
    color1[label=""] color2[label=""] color3[label=""];
    color0 -> color1 [color="blue", label="蓝色"];
    color1 -> color2 [color="red:blue", label="双色"];
    color2 -> color3 [color="green:red;0.4:blue", label="颜色分段"];
}
不见图 请翻墙

◇图的属性


  说完了“节点”和“连线”,最后稍微聊一下“图”本身的属性。
  常用的【属性名】包括如下:
label——标题
bgcolor——颜色
fontname——字体名称(【不】影响节点和连线)
fontsize——字体大小(【不】影响节点和连线)
fontcolor——字体颜色(【不】影响节点和连线)
center——是否居中绘制
(还有更多属性,可以参见官网“这个链接”)

digraph graph_attr
{
    graph[bgcolor="cadetblue" label="图的标题" fontsize=24 fontcolor="green"];

    node0 -> node1;
    node0 -> node2;
}
不见图 请翻墙

◇进阶


  前面俺讲的都是 DOT 最基本的概念和使用。DOT 语言还有一些更高级的用法,感兴趣的同学可以参考下一个章节(★相关资源)给出的“dotguide.pdf”。


★相关资源


◇官网的资源


以下是官网上的若干在线文档:
http://www.graphviz.org/doc/Dot.ref
http://www.graphviz.org/doc/info/attrs.html
http://www.graphviz.org/doc/info/shapes.html
http://www.graphviz.org/doc/info/arrows.html
http://www.graphviz.org/doc/info/colors.html

官方提供的 DOT 语言完整的指南(pdf)

Graphviz 官方的 GitHub 帐号

◇编辑器


  自带的编辑器

Graphviz 软件包中自带了 gvedit 和 vimdot。

  Emacs 的 mode

https://github.com/ppareit/graphviz-dot-mode
俺平时用这个 mode 来编辑 dot 数据文件。它可以实现“所见即所得”——每次修改完,直接在 Emacs 另一个窗口预览图片。
其作者提供的效果图如下:
不见图 请翻墙

  VI/VIM 的插件

https://github.com/wannesm/wmgraphviz.vim

◇编程语言的整合


  JavaScript

https://github.com/mdaines/viz.js

https://github.com/gyuque/livizjs

  Python

https://pypi.python.org/pypi/graphviz

  Ruby

https://github.com/glejeune/Ruby-Graphviz

  Java

http://jgraphviz.sourceforge.net/


俺博客上,和本文相关的帖子(需翻墙)
如何选择开源项目
曝光天朝权贵——《太子党关系网络》2.2 版本发布
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.de/2016/02/opensource-review-graphviz.html

356 条评论

  1. 难得一见的技术博文。

    回复删除
    回复
    1. 技术盲问:color="#ff0000"是什么意思?为什么不是color=red?

      删除
    2. ff0000 = red
      00ff00 = green
      0000ff = blue

      删除
    3. TO 1楼的网友
      多谢捧场 :)
      “技术文章”的范围很广。俺经常写的“信息安全”和“翻墙教程”,也可以算是技术文章

      删除
    4. TO 2单元的网友
      这个问题问得好,刚才俺已经在博文的示例代码中补充了注释。

      color="#ff0000"
      用的是 HTML 的颜色语法。这种语法采用 RGB 方式来表示颜色。
      6个数字都是 十六进制(0到F),每两个一组。

      删除
    5. (接上一单元)
      刚才俺在本文中补充了一个维基百科链接,用来说明 HTML 使用的颜色语法。

      删除
    6. TO Zeroth Posclegomer
      多谢老熟人替俺回答读者提问 :)

      删除
    7. to 编程随想
      对于Google董事长说:互联网将会“消失”。未来将由物联网来取代,互联网将会合并入物联网,人工智能将会进入人类生活的各个领域。

      中文版地址:
      http://tech.163.com/15/0126/15/AGT5MAOD00094ODU.html

      英文版地址:
      http://www.hollywoodreporter.com/news/google-chairman-eric-schmidt-internet-765989

      编程君怎么看呢?

      删除
    8. TO 三轮
      这样一来,信息安全就更重要了,泄露隐私被入侵的话,就不再只是有限度的受损,甚至可能危害生命了。

      删除
    9. 知乎用多了吧,什么都是怎么看怎么看。
      你怎么看?先思考然后分享你的观点再讨论。

      删除
    10. TO 三轮
      2016-6-6 “666” :-)

      删除
    11. 这篇博文让人感觉很奇怪。博主之前说“dot 这么复杂的格式,会把很多人吓跑”,如今却大力气科普DOT。博主之前说“俺计划用 yaml 来组织数据”,这篇博文没提到yaml,更没提到在github开源《太子党关系网络》的数据形式。

      删除
    12. meek兄,不要纠结于细节。只要编程兄最后能把太子党关系网络公布到GitHub上就行了。很多事情随着编程兄的进一步折腾,是会变的。

      删除
    13. Graphviz虽有一定好处,但是毕竟是上个世纪的东西,复杂的关系会得到一个巨大的平面的图,就像之前的《太子党关系网络》一样,普通电脑上需要上下滚动+左右滚动才能看完一个分支,体验非常差,在移动设备上也有类似问题。反观路透社的ConnectedPRC,用HTML5技术(如果我没记错的话),体验不知高到哪里去了。那么问题来了,博主一定会说“web技术不是俺擅长滴”,各位同学谁比较精通web技术?或许博主可以在下一篇博文里发英雄帖,找找合适的人。

      删除
    14. 这楼里我有一段较长的留言被吞了,等恢复。我之前提到ConnectedPRC的一些信息,建议博主联系ConnectedPRC的人获取一些帮助。参见:
      https://program-think.blogspot.com/2016/01/Taiwan-Political-Movements.html?comment=1454392567081

      删除
    15. TO meek
      老熟人,你好:
      其实两者不矛盾。

      1、
      用 yaml 格式来组织结构化数据,有利于普通的网友直接编辑 yaml 格式的文件(此时无需了解 dot 的语法)。

      2、
      俺之前说:
      “dot 这么复杂的格式,会把很多人吓跑”
      这个《太子党关系网络》对应的的 dot 文件太大了,如果某个不太懂技术的网友打开这么大的一个文件,估计会晕。

      3、
      普及一下 dot 也有好处。
      毕竟俺本人对 dot 语言也是现学现卖。俺算不上精通。
      这篇普及的教程,或许能引发某些技术人士的兴趣。说不定还可以给俺提一些(dot 方面的)建议

      删除
    16. TO meek
      关于 web 的建议
      (俺在上上篇博文中,有提到 web 版)
      github 本身支持 web 功能,可以针对某个项目架设一个 web 站点(位于 github.io 的二级域名)
      初步想法是:
      同时提供《太子党关系网络》的离线和在线版本
      离线版本跟原来一样,做成 pdf 电子书,有利于线下传播。
      在线版本方便直接浏览。

      关于内容形式
      既可以呈现图片,也可以呈现纯文字的内容(比如把每个家族做成一个表格)


      至于相关的文档说明(比如 yaml 格式的说明),俺考虑放到 github 上,而不是放到博客上。
      等到上线的时候,访问 github 项目就可以看到了

      删除
    17. TO meek
      你被 Google 误判的留言,俺已经帮你恢复出来了。

      之前你那个留言(关于 ConnectedPRC),俺看了。
      近期俺想尽快把 《太子党关系网络》开源的事情搞定。
      搞定之后,再来考虑如何丰富数据资料。
      到时候就可以群策群力,而不是俺一个人单干 :)

      删除
    18. TO 三轮
      多谢分享网文 :)

      俺觉得:下一个颠覆性的东西应该是【强AI】
      与之相比,“物联网、可穿戴设备、基因工程、等等”,都相形见拙

      删除
    19. 我的意思是离线版本也做成web,就像你的离线版博客。Graphviz这种不合时宜的东西就不要用了。ConnectedPRC的启示不仅仅是丰富数据,其展现形式也是非常值得借鉴的。读者通过交互来浏览(HTML5),而不是频繁地上下滚动+左右滚动来看一个巨大的静态的图片。

      删除
    20. 完全赞同编程兄所说!强AI万岁!

      删除
    21. 男性的经验和技巧是不可能与生俱来的。。。

      删除
    22. 20单元发错楼了 楼主处理一下

      删除
  2. 回复
    1. 假如把wordpress用于内网的web知识管理,会遭漏洞威胁吗?

      删除
    2. TO 2单元的网友
      你这个问题,无法一概而论地回答。
      关键要看你所说的“内网”是怎样一种环境。
      个人家庭网络是一种内网。
      一家跨国大公司的企业内部网络,也是内网。
      但是这种【内网】的安全风险是完全不同的。

      删除
    3. to 随想
      之前大家讨论的论坛问题,为什么不去xiaolan的1984.city?现在文章评论有点乱啊。博文评论与事件讨论混在一起。。。

      删除
    4. to 4单元
      1984.city 毕竟不是Google。而且接入商可不可信还未知,网站有没有漏洞也未知。
      对于高匿人士,还是小心为上!

      删除
    5. to 5单元
      该站站长使用了CloudFlare的CDN。要攻击主站先得绕过CDN才行

      删除
    6. to 编程随想
      三楼有一篇我转载的git诞生简介文章被吞,坐等博主恢复啊

      删除
    7. 知识管理不用wiki么?风险总是有的 请自行衡量

      删除
    8. TO 三轮
      刚才俺已经把今天被误判的评论都恢复出来了,也包括你的。

      删除
    9. TO Haven Smith
      俺也比较喜欢 wiki,尤其是多人协作的知识管理,wiki 是比较爽的。
      维基百科是最好的成功案例

      删除
    10. TO 4单元的网友
      论坛的事情,几年前就有读者提建议了。
      但这事儿一直没着落。

      这几年俺观察下来,大部分在这里留言的读者,之所以选择博客评论来发表言论,有如下几个原因:

      1、
      懒惰/嫌麻烦。
      看完博客,直接发评论,最省事儿
      就算有一个现成的论坛,这类人估计也懒得打开另一个页面
      2、
      喜欢匿名。
      尤其是经过俺普及了“隐匿性”之后,喜欢匿名的读者应该是有增无减。
      而几乎所有的论坛,都是需要注册/登录的。
      3、
      安全考虑。
      还有一些人担心其它的系统在安全性方面是否靠谱。
      相比之下,Blogspot 是 Google 运营的,比较令人放心(俺在本文开头也提及了这点)

      删除
  3. 回复
    1. 恭喜编程兄!贺喜编程兄!编程兄辛苦了!望编程兄有空查看一下后来愚弟给兄发的邮件,主题是"一个重要的时刻"以及"愚弟折腾的免翻墙镜像"的后续邮件。谢谢!

      删除
    2. 编程兄可以在本文安全通告末尾提及Wordpress平台的地方顺便提一下昨天大名鼎鼎的Linux Mint网站由于使用Wordpress被黑,下载链接被置换成了保加利亚FTP服务器上被加入后门的Linux Mint版本。

      删除
    3. 不得不说一句,由于这两个星期折腾兄的免翻墙镜像,愚弟都差不多成了兄博客离线版的专家了。对于离线版的结构可谓一清二楚。同时折腾留言抓取让愚弟对于Blogger上的留言系统的实现和结构又有了更深一层的了解,这也许就是兄为什么喜欢折腾的原因之一吧,很多东西自己不亲自折腾,永远都不会知道背后的奥妙,也永远不可能对之产生深刻的理解。

      删除
    4. TO Zeroth Posclegomer
      多谢补充 :)
      刚才已经在本文开头吐槽 Wordpress 的地方,补充了“Linux Mint 官网被入侵”一事。

      俺先处理一下博客评论,待会儿去 Gmail 回复你的来信。

      删除
    5. 同时也非常感谢兄的免翻墙镜像让愚弟第一次真正使用了GitHub,果然非同凡响。愚弟push了十五次,现在上瘾了。

      删除
    6. TO Zeroth Posclegomer
      对你所说,深有同感 :)

      说到【折腾】
      俺在前几年关于 Linux 的教程中好像有提到【折腾技术的好处】。
      折腾的过程也就是学习的过程。
      而且善于折腾技术的人,通常也有很强的【解决问题的能力】。
      这种能力,对大部分人而言,都可以构成【核心竞争力】。
      以软件行业为例:
      俺碰到很多优秀的程序员、优秀的测试人员、优秀的系统管理员,他们的共性是:具有很强的解决问题的能力。

      删除
    7. TO Zeroth Posclegomer
      说到 GitHub
      俺前几天还在考虑,说不定另写一篇博文,推广一下 GitHub
      在如今天朝,用 GitHub 的基本上都是程序员。不懂编程的人,很可能从来没有听说过它。
      其实,GitHub 是一个很强大的【众包平台】,可以充分发挥多人协作的力量。而不仅仅是用来搞开源软件项目。

      删除
    8. 深深赞同兄所言。需要科普GitHub,它是下一个disruptive technology。

      删除
    9. to Zeroth Posclegomer

      要了解GitHub,先了解git

      我在这里转载一篇git是如何诞生的,供各位参考:

      《Git的诞生》

      很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

      Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

      事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

      你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

      不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

      安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

      Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

      Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

      Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

      历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

      文章来源:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137402760310626208b4f695940a49e5348b689d095fc000

      删除
    10. 非常赞同随想和Zeroth所言,同时建议不仅是将赵家人关系进行整理,非暴力抵抗的其中一环是针对整个体制的运作原理进行掌握和分析,希望随想君或者xiaolan可以技术上支持一个多人协作的中国版维基解密:)

      删除
    11. to 楼主:想问下编程菌指的github上的“众包”具体是什么?集中一批人写教程的已经有见过(比如:[url=https://github.com/FiveYellowMice/how-to-convert-videos-with-ffmpeg-zh/blob/master/index.md]github“众包”模式写教程[/url]),但可惜写的教程也是关于计算机的,其余的众包好像还真没见过。。。

      删除
    12. angleandlove.2011
      “外包”听说过吧。“众包”就是把“外包”项目分摊给互联网上有意愿协作开发的每个人。

      删除
    13. 编程菌,好吃吗

      删除
    14. 例如游戏公司要进行语言本地化的时候,可以选择众包给当地的玩家社群,分摊到人只有很少钱或者无偿工作,就是这样。

      删除
    15. 我觉得今年可以去买彩票了,
      正好下了这个有问题的Linux Mint 17.3 还安装在实体机上。

      删除
    16. TO 三轮
      多谢分享 《Git的诞生》

      (你这条留言因为太长,被 Google 误判为垃圾广告,刚才已经被俺恢复出来了)

      删除
    17. TO angleandlove.2011
      国外已经有一些【非】IT领域的众包。
      至于俺
      企图用 Github 来尝试《太子党关系网络》的众包。
      这也算是一次尝试吧
      希望能有更多人参与,也希望能有更多人看到权贵家族的嘴脸

      删除
  4. 随想君您好,俺有三个问题。
    1 你说你平时不使用微信,不会造成沟通不方便和麻烦吗吗?我现在是大学生,我们很多活动都是用微信群来组织的,而且平时大家也都用微信而很少打电话来联系。请问你在工作的时候会不会有类似的问题,要怎么解决呢?
    2 请问如果你在不得不用微信的时候使用的是什么方式呢,除了智能手机以外?我试过bluestacks,可是用没多久就被封号了。
    3 你不用微信也不用智能手机,也应该不怎么使用智能手机上的app,在大家都使用这些东西的情况下,有一种突出的感觉,会不会大家在形容你的时候都会加上一个“不用微信的人/不玩手机的人”,而我觉得你应该保持低调而减少被社工的风险,各方面都保持和平常人一样,对此,你怎么看呢?
    谢谢!

    回复删除
    回复
    1. TO 爱国不忠党
      (你的这条留言被 Google 误判为垃圾广告,刚才被俺恢复出来了)
      针对你的几个问题,俺逐一回复如下:
      1、
      对于在校大学生,碰到你说的这种情况,可能迫使你不得不用微信。
      但是,你完全可以做到:只在必须用的地方才用。
      如果你对安全方面(包括隐私方面)很注重,还有个办法:用两个手机,只在其中一个装微信。平时主要用没微信的另一个手机。
      (如今智能手机很便宜,买两个手机的压力应该不算太大)

      至于俺本人的沟通方式
      不论是工作中的身份,还是“编程随想”身份,亦或者其它虚拟身份,俺主要的【一对一】沟通方式都是依赖邮件,俺对 IM 很反感,对 microblog(比如:新浪微博和微信)也很反感。
      前些年写过一篇《[url=https://program-think.blogspot.com/2012/02/microblog-and-time-management.html]为啥俺不常用微博——兼谈时间管理心得[/url]》
      有空的话,或许可以再写一篇——《为啥俺不常用聊天工具》

      2、
      到目前为止,俺没有碰到你所说的——【不得不用微信】这种情况。

      3、
      你说得这点,有一定的道理。
      不过在安全圈内,注重个人安全和隐私的比例,会比普通网民大很多。
      所以,像俺这种习惯,就显得不那么突出了。
      另外,
      在俺接触过的技术高手中,有这类习惯的比例,也会高很多。

      删除
    2. TO 编程兄
      谢谢博主的耐心回答,支持博主!
      原来在安全圈有这种情况,觉得很厉害,受教了!

      删除
    3. TO 爱国不忠党
      多谢对俺的支持 :)

      删除
    4. 俺不是搞信息安全的,但俺的习惯怎么跟编程随想那么像?!难道这是做技术的“通病”?

      删除
    5. 我也是“不用微信的人/不玩手机的人”,会不会被当成编程随想?

      删除
    6. To 三轮
      你只需要对问你的人说:我就是编程随想!

      删除
    7. 最近Android版支付宝被爆会偷拍和录音,不论是否为真,就算物理机隔离,用国产软件还是很危险的!一不小心你的裸照就被马云拍到了!

      删除
    8. to 边城穗香
      我还不想作死。

      删除
    9. to 边城穗香
      还好,我不用智能机

      删除
    10. 大家都自称编程随想,博主就安全了:)

      俺是提醒楼主要理解国产软件风险!

      删除
    11. 1.我觉得博主说的很清楚了。这里需要提醒的重要事情是微信现在基本是实名的,手机、银行卡我不说了。而且再加上你的同学人际关系网络,你在使用微信时必须要处于一种自我审查的状态。Android机由于权限开放应用基本上可以获取到各种权限 见到支付宝那个样我都学会xposed治理了 有必要的话就双机吧,不过只是上网你要随意也无妨。

      2.telegram或者传统的Gmail之类的国际邮箱 PGP加密之类的 不过对那些不敏感的 不那么懂计算机的同学 可能需要学习 你要看你联系的对象以及敏感程度决定 当然一定要注意是墙外身份和墙内身份尽量不要太多联系 否则一社工马上完蛋(比如开发ss的那位)

      3.我个人不评价 PS:我的大学都是用QQ而不是微信 因为微信在PC上比较残废分享群文件不方便

      删除
    12. 回复10单元:也不是这样说。国产软件风险博主已经提到过。大家都自称 但是我觉得各位都是认准这个域名的 应该不会错吧

      删除
  5. 【由于俺是高危险人士,所以前几天先保持静默——暂不使用“编程随想”这个身份进行网络活动。】
    没什么知识储备,一直想问您,建博客之初、没抹黑的时候,您也是使用匿名身份的吗?
    如果之前没有使用匿名身份,后来某天开始使用了匿名身份,之前暴露在阳光下的线索,会不会延伸到现在的匿名身份处,从而有暴露的危险?
    谢谢!

    回复删除
    回复
    1. TO Wake
      (你的这条留言被 Google 误判为垃圾广告,刚才被俺恢复出来了)

      俺开博的头半年,完全没有谈过政治,但是那时候俺就已经是匿名了。
      主要是因为俺这个人比较低调,不喜欢张扬。
      (在安全圈混了这么多年,养成了这个习惯)
      后来俺这么放肆地抹黑党国领导人,也是因为俺之前没有暴露过真实身份。

      删除
    2. (接上一单元)
      从事高风险的活动,一定要从一开始就做好身份隐匿工作。
      你后面提到的那种情况,确实在某些人身上发生过。
      因为很多人不是信息安全行业的人员,非常缺乏这方面意识。
      所以俺才专门写了《[url=https://program-think.blogspot.com/2010/04/howto-cover-your-tracks-0.html]如何隐藏你的踪迹,避免跨省追捕[/url]》系列

      删除
    3. 此类事件可以参考本博常客——张召忠先生

      删除
    4. 暂不使用“编程随想”这个身份进行网络活动。

      “这个”身份,说明博主还有其他网络活动的身份嘛。

      删除
    5. to 4单元
      你真以为博主身份证上的名字印着“编程随想”四个大字啊?
      当然,有其他网络活动的身份了。这其中包括真实身份!

      删除
    6. TO 4单元
      如 5单元 所说,俺的真实身份当然要继续进行网络活动啦。
      另外,
      你觉得像俺这种人,难道会只有一个网络身份吗?

      删除
    7. (接上一单元)
      顺便再唠叨一下俺多次提及的一个技术话题。

      如果有多个身份(不论是网络身份还是真实身份),并且要进行比较彻底的隔离,建议用【操作系统虚拟机】
      每一个身份只在一个虚拟系统中操作,并且每一个虚拟系统只使用一个身份。
      即使某个系统被入侵,也不会殃及其它身份

      删除
  6. 原教旨自由主义者2016年2月23日 下午10:24:00

    看起来美帝那个图唯一一条交线也是可以除掉的。把「罗德岛」放到「纽约」「麻省」「康州」三角形中间就可以了。

    是算法的 Bug 吗?

    回复删除
    回复
    1. 不是bug,只是软件还没能像楼主那么聪明而已;-)

      删除
    2. TO 原教旨自由主义者
      你对拓扑的观察,很敏锐啊 :)

      这张图来自维基百科,有可能是比较早的 Graphviz 生成的。
      最新版本的 Graphviz 或许能优化你所说的那个交叉点。
      (仅仅是猜测——因为俺没有这张图的 dot 文件,无法验证)

      删除
    3. 所以最好的解决方法就是人机结合。GraphViz首先解决绝大部分的交线问题,然后楼主再解决最后的那个交线问题(GraphViz不具备人类"一眼看出"的能力)。其实强人工智能的一个实现之道就是人机结合。所谓Cyborg是也!

      删除
    4. 早先Amazon云计算把需要整理归类的照片加入魔兽世界WoW作为游戏让玩家整理,走的就是这种人机结合的路线,还有是亚马逊的Mechanical Turk网络服务。

      删除
    5. TO Zeroth Posclegomer
      48州 的那张关系图,应该是可以通过拓扑学的相关算法,找出最优的(交叉最少)的布局。
      这个问题经过抽象之后,就是个纯粹的拓扑学算法问题。
      (俺没看过 Graphviz 的布局算法,不知道它内部是咋整的)

      删除
    6. 除了思维、技术、政治,博主能不能谈点别的话题呢?(比如“性、婚姻”、“人生”)

      删除
    7. 基本上算法应该就是Kruskal或者Prim算法的某一类变种吧。

      删除
    8. TO Zeroth Posclegomer
      有些需要深度思考的问题,确实还要靠你所说的【人机结合】才能搞定。
      不过随着 AI 技术的发展(比如机器学习),【人】所占的比重正在快速变小。

      删除
    9. "【人】所占的比重正在快速变小。" ---- 是的,Keith的那本书"失控--人类最终的命运"

      删除
    10. 出门左转找婚姻中介吧。。。
      什么都谈,这博客就杂了,而且万一说不好还给社工了。。。

      删除
    11. 男性的经验和技巧是不可能与生俱来的,它是需要一段时间的摸索和练习才能够掌握的,就象是游泳,一个不会游泳的人,在深水中就会被水淹没。无论你的身体是如何健壮,你没有学会游泳,就会不知所措,就会被水淹没;而你学会了游泳,在水中你就能轻松自如,如鱼得水。

      删除
    12. TO 张召忠
      你是原先那个张召忠吗?
      如果是的话,欢迎老熟人来捧场 :)

      删除
    13. 男性的经验和技巧是不可能与生俱来的。。。

      删除
  7. 楼主以后你应该发一些关于元清两大殖民王朝历史的帖子激发民族主义。当年辛亥革命原因之一,就是激发了民族主义清廷因此而垮台的。

    回复删除
    回复
    1. 如果愚弟没猜错的话,兄会说"民族主义是一把危险的双叉剑,不利于非暴力革命,还是要从普及全民民主自由素质做起"

      删除
    2. TO 孙中正
      老实说,俺对“民族主义”的印象不太好。
      尤其是如今的天朝,民族主义反而成为朝廷手中的工具,用来转移国内矛盾。
      比如最近10到20年,真理部不断煽动【仇日情绪】,主要目的是:转移民众对朝廷和权贵的仇视。

      专制政权有几个惯用的伎俩,一个“诉诸仇恨”,一个是“诉诸恐惧”。
      每当国内矛盾激化,朝廷就使劲用这两招

      删除
    3. 如果是按现在定义的“中华民族”的民族主义,也就是国民党和共产党的定义,那么现在共产党就正在玩这一套呢,煽的小粉红激动得很:(
      如果按照辛亥的汉族主义,那么满洲蒙古新疆西藏是应该独立的,而且还得把外族人赶走。
      重回辛亥的话楼主是想走泛亚主义路线还是联俄联共路线还是列强协调路线呢。。

      删除
    4. 咱不玩主义,主义坑死人

      删除
    5. 民族主义还是不要乱玩。都被玩坏了。说起来我国的民族问题可真不少 有时间介绍下?

      删除
  8. 评论被吃了

    回复删除
    回复
    1. TO 忠党不爱国
      你的这条留言被 Google 误判为垃圾广告,刚才被俺恢复出来了(在 4楼)

      删除
  9. 'Graphviz 不但是开源软件,而且是自由软件。使用它完全【无需】付费,也【没有】任何注册码之类的恶心东西。'
    只是国人不习惯付钱买软件罢了,并不恶心

    回复删除
    回复
    1. "国人不习惯付钱买软件罢了," -- 发扬共产主义优良传统!;-)

      删除
    2. TO 9楼的网友
      关于俺在博文中提到“恶心的注册码”,补充说明如下:
      俺这是有所指的,主要是指某些商业软件做得很烂,在各个方面都同类的开源软件要差。
      竟然还有脸收钱,竟然还有脸在软件上放广告。
      太不知羞耻了。

      具体的例子太多了,俺就不列举了。

      删除
    3. 国人喜欢用盗版软件和共产主义还真就搭不上边,海盗党本来就是政治诉求中的一种,半个海盗党支持者路过

      删除
    4. 应该说版权改革是诉求的一种,不是海盗党是诉求的一种。。

      删除
    5. to 边城穗香:多谢指正,应该说海盗党是一种政党,政治诉求是版权改革

      删除
    6. 谁说搭不上边,我非要强行勾搭

      删除
    7. 不是没有付费的习惯,但是有时候付费的时候总有一种“恶心”的感觉,就是觉得不值。尤其是不是非用不可 明明有更好更免费你非用盗版那也不好啊 不过我还是觉得直接定性恶心可能会让部分正版党不适。但是自有市场就是你有用不用的权利 有免费开源的能完全代替大家就不会乖乖交钱嘛。开源软件要钱诸如那些Linux发行版都是卖的付费支持服务

      删除
  10. 听说 Linux 包管理器安装的软件,性能没有手工编译的好,是真的吗?

    回复删除
    回复
    1. apt-get个人觉得用的挺爽。纯手工编译建议使用Slackware。Ubuntu基本全是包管理器安装的软件。

      删除
    2. TO 10楼的网友
      软件仓库中的二进制软件,需要面向各种不同的用户
      (比如同样是针对 x86 架构,还有 486、586、686 之类的差异)
      因此,软件包的二进制都是比较通用的,【没有】针对特定的芯片类型进行优化。
      而如果自己编译,就可以设置某些编译选项,进行特定的优化。

      从这点而言,自己编译确实会比通用的二进制软件,性能更好。
      [b]但是有个前提:要懂行[/b]
      如果不懂行,说不定自己编译出来的,反而性能更差。

      俺觉得:
      如今硬件都很牛B,这点性能差异,其实无所谓。
      自己编译的主要好处在于——可以强化安全性。

      删除
    3. (接上一单元)
      大部分的GNU/Linux发行版的软件包都是编译好的二进制文件,这些软件中的某些地址偏移是固定的(而且是公开的)。
      大约一年前,某个安全研究人员提出过一种 offset2lib 攻击,可以利用上述固化的地址偏移,进行某些特定的攻击。
      对于大部分发行版,这种攻击可以绕过 Linux 内核常见的防护措施——ASLR(地址随机化) 或 PIE(代码段随机化)
      但是这种攻击对 Gentoo 是无效的。
      因为 Gentoo 的特点是,软件包只有源代码,需要用户自己编译成二进制。
      因此,对同一个应用软件,每一个 Gentoo 用户的二进制环境(地址偏移)都可能不同。
      这种情况下,攻击者无法进行 offset2lib 攻击

      删除
    4. TO Zeroth Posclegomer
      要玩“手工编译”,应该是 Gentoo 这个发行版

      删除
    5. 按随想兄的说法,offset2lib这种干法,应该最适合windows

      删除
    6. TO 10楼
      编译的性能一般来说会比二进制安装的要好些。就好比“量体裁衣”定制的,总比超市买的那种“大众版”穿起来要合身些。
      但是,很多人选择编译的方法安装并非因为这个原因。
      Linux上有很多开源软件是没有二进制安装包的,只有源码,所以这些软件需要编译安装。
      而有二进制包的那些软件,有些版本太低,不合要求。也是需要编译安装新版的

      删除
    7. 说道安全圈,国内有名的比如360,乌云这些。
      莫非博主是360的人,而且还跟朝廷的人有来往。八成是360的了

      删除
    8. to 楼主:关于“自己编译性能更好”的前提好像你还忽略了一点,就是用来编译的硬件平台性能的问题,话说如果在老机器上跑gentoo的emerge的话,某些复杂的软件估计就要做好编译数个小时的准备了,而这一点也足以导致使用者效用降低吧

      删除
    9. angleandlove.2011
      要说机器的话,你怎么不用打孔机来扯

      删除
    10. 什么叫做机器不用打孔机来扯?事实就是gentoo在稍微低一些的个人电脑上安装都是要花费很多时间的,你以为每个人都像你一样有钱,买的起顶配电脑,我压根就没想着来扯,只不过是说说gentoo编译需要很强的cpu这个事实罢了

      删除
    11. 编译都要花时间的,软件越大时间越长。
      编译个gentoo系统,PC再快都要一天多的时间。
      “gentoo编译需要很强的cpu这个事实罢了”?
      光CPU吗?内存,和IO更是关键的影响因素,好吧
      对于,懒得解释

      删除
    12. TO angleandlove.2011
      用 Gentoo 确实很考验 PC 的硬件能力。
      不过捏,如果从另一个角度来看,或许有好处。
      因为编译很耗时,所以当用 Gentoo 的时候,就尽可能只装那些必需品,可用可不用的,通常就舍弃了。
      如此一来,让系统尽可能精简。
      系统精简之后,出安全漏洞的概率自然也降低了

      删除
    13. TO 8单元的网友
      看来你对国内安全公司了解不多。
      国内的安全公司,一大半都需要跟朝廷方面打交道。

      删除
  11. 希望今年能看到博主写更多信息安全和linux方面的东西!谢谢!

    回复删除
    回复
    1. TO 11楼的网友
      多谢提建议 :)

      (俺通常会根据大伙儿的反馈,来决定优先写那些方面的博文)

      删除
    2. to 编程随想
      继续您安全方面的填坑向吧。坑不能总是放着不填啊

      删除
    3. 来自风平浪静的明天2016年2月24日 下午1:56:00

      已入坑,就等博主您填土了

      删除
    4. TO 2单元的网友
      多谢反馈 :)

      删除
  12. 希望随想能讲一讲假设中国国内断网了如何使用短波收音机的文章
    顺便建议随想把"伟光正"改成"赵家人"来正视听(因为党有80%没有政治权力的P民党员和10%的干活的小吏,把他们扯进来有点不公)

    回复删除
    回复
    1. 编程兄说过了,断网后使用拨号上网。

      删除
    2. TO 赵爱党
      俺觉得【物理断网】的风险目前还不是很大。
      另外,
      如 Zeroth Posclegomer 所说,物理断网后还可以搞“电话线路拨号”。

      关于你的另一个提议,俺觉得有道理 :)
      以前俺经常用“伟光正”,主要是一种反讽,与基层党员无关。
      (就如同“真理部”,也是反讽)

      删除
    3. Google正在搞空间数据传输技术,貌似还是全球版的

      删除
    4. 民科正在搞引力波传播社会主义价值观,貌似还是宇宙版的

      删除
    5. 我在春节的那个文章见到有人说过outernet和拨号上网。拨号上网不可行 因为国际长途同样可以拦截监听 随时断!但是国内局部管控的话有效用。短波收音机的话现在能听的电台少了 好像某些国外媒体都取消了所以我觉得卫星电视或者是那个outernet(类似卫星电视的技术单向传输数据文件但是不能发送内容)的技术能帮助特殊环境下的群众获取资讯 交流?成本高了 但是我就知道朝廷沦落到互联网+都+不了的事后国家会变成什么X样 该XXXX了么?

      删除
    6. TO Haven Smith
      说到“应对物理断网”
      上面几楼聊得都是“如何与外部链接”,还有一个思路是“如何在墙内进行不受监控的互联”。
      如果能做到,效果同样好。
      一些 P2P 的,去中心化的技术,可以做到这点。
      比如俺用来分享电子书的 BT sync,可以在【墙内】进行数据分享,无需中央服务器,而且比较难彻底封杀。
      像这类工具,在【物理断网】期间依然可用。

      删除
  13. 终于有机会坐前排了,编程兄,关注你两年多了,从你平台上获益匪浅,一直非常敬佩你的学术和为人!!!

    回复删除
    回复
    1. TO 13楼的网友
      多谢老读者捧场 :)
      多谢对俺的认可 :)

      删除
  14. 谢谢分享!有几处英文拼写小错:dege应该是edge.

    回复删除
    回复
    1. TO Unknown
      非常感谢提醒笔误,已经更正

      删除
  15. 老司机总算带来些干货了。。。感谢感谢。

    回复删除
    回复
    1. TO 15楼的网友
      多谢捧场 :)

      删除
    2. 编程随想成功变身“老司机”
      233333

      删除
  16. 楼主为何不用思维导图软件?

    回复删除
    回复
    1. TO 16楼的网友
      俺在本文中已经说了——Graphviz 相对于 Visio 的优势。
      同样的,这也是它相对于思维导图软件的优势?

      如果俺的《太子党关系网络》用思维导图类软件来绘制,工作量太大了。
      而且随着收集的权贵家族越来越多,手工绘图的工作量会越来越大

      删除
  17. “六四”系列,什么时候更新完?

    回复删除
    回复
    1. 还没到 5.4 ,一年一更,大概需要10年。

      删除
    2. TO 17楼的网友
      这几年读者多了之后,俺同时要写几个不同领域的博文(比如:政治、信息安全、翻墙、思维能力...),另外还要整理电子书进行分享
      结果导致《回顾六四》系列更新变得很慢。
      实在惭愧 :(

      删除
  18. 这个挺有用的,感觉非编程人员对于这些代码有一种看完就忘,用完就忘的症状。。。。。

    回复删除
  19. 原教旨自由主义者2016年2月24日 上午1:14:00

    编程君,
    当心「社工」啊!
    「安全圈」+「某企业技术的头」+ 「生活在帝都」
    甚至「上班路上可看到「锤子」广告牌」
    ......包子要真的想搜查,好像也不是很难啊

    回复删除
    回复
    1. 暴露的有点多啦,博主可以适当加上一些虚假的个人信息防社工,因为博客读者中不乏tg走狗甚至国安。
      同时也建议博主可以再多写一点对社会工程学的应对之道,这种攻击方式简单而不需要太多计算机技术(但对心理学之类的要求比较高),但攻击力可不低。

      删除
    2. 假作真时真亦假,编程兄在很早之前就已经说过他给出的信息有一些是对的,有一些是错的。试想一下,连使用编程随想这个身份都需经过至少虚拟机,VPN,和TOR三板斧,防范之严由此可见一斑。人肉真身哪里是尔等小辈(包括习包在内)能查到的?!

      删除
    3. 编程随想其实很可能是方校长本人,也未可知啊

      删除
    4. 如果是真的,方校长真是个精分。。

      删除
    5. 方校长,高级黑中的战斗机!

      删除
    6. TO Zeroth Posclegomer
      多谢老熟人替俺回答 :)
      你对俺的言论很熟悉嘛——俺多次在评论区引用过《红楼梦》的这句名言

      删除
  20. 用docker一类的容器来做虚拟化保护隐私,类似操作系统虚拟机的方式,前景如何?
    不过目前都是服务器在使用。
    https://zh.wikipedia.org/wiki/Docker_(%E8%BB%9F%E9%AB%94)

    回复删除
    回复
    1. 这个使用难度太大,虽然功能很好,非专业计算机人员表示真的不会用。。。。

      删除
    2. to angleandlove.2011
      非专业计算机人员表示真的没什么难度。。。。

      删除
    3. to 楼上:口说无凭,你光是把docker打包一个软件从win移植到linux的过程给一个非计算机专业的去听,他要是能一次学会这个才怪,光是要背的命令就很多了,还没有说每个软件的打包方式不同呢

      删除
    4. angleandlove.2011
      因为我的日常用系统是Debian。用惯了,不觉得难。
      但是我的确不是专业计算机人员
      要记啥命令,用惯了后,肌肉记忆

      删除
    5. 匿名为何都这么屌

      删除
    6. to 4单元
      这不废话么,每日挥刀500下,坚持个10年。我也会成为武林高手的

      删除
    7. to 6单元
      然后武林高手被乱枪打死

      删除
    8. to 7单元
      蛤蛤蛤

      删除
  21. vof...请教tor expert bundle如何安装启动,以及如何与vpn捆绑等等。gmail里。

    回复删除
    回复
    1. TO Mr. V
      TOR 与 VPN 搭配,俺称之为“双重代理”。
      之前写过一个《[url=https://program-think.blogspot.com/2010/04/howto-cover-your-tracks-0.html]如何隐藏你的踪迹,避免跨省追捕[/url]》系列,里面有“双重代理”的配置教程

      删除
  22. 这个东西确实不错,可以帮助理清思路,比如构建网站架构等等

    回复删除
  23. 随想君对于用tunnelbroker ipv6隧道翻墙怎么看? 速度很快稳定性也很好 还可以家庭共享 不过就是不知道在天朝这段保密性如何
    还有一个问题就是如何在windows下把获得的ipv6地址段广播出去实现家庭的设备都能获得地址?

    回复删除
  24. 虽然不太用得上,但是这个软件看来很有用。
    前不久有个欧洲的一个根据DNA推测并绘制生物的遗传关系的软件,因为作者反对德国的难民政策收回了对某些国家的许可,很多国家的研究人员都没法用。我估计如果能把推测算法搞定,配合这个工具,就可以取代它。

    关于glibc的漏洞:我在用OpenDNS+dnscrypt,虽然系统本身仍然有漏洞存在,但是我想这样被攻击的可能性会小些吧?
    已经更新了系统(Debian),确实看到了glibc的升级。

    回复删除
  25. 1有没有办法提高网速?现在的多重代理网速实在太慢,就算我能等,可有些网站速度太慢会超时不能登陆的,最起码也要保证网速在100多KB以上吧

    2我发现博主很多时候看别人的回复都不认真,我的第1个问题在你的台湾民主运动那篇文章里就提到了,而且不止一次,你回答我的其他几个问题没回答这个,不是没时间回答。

    3还有博主别老敷衍读者好吗?给你提过很多次建议(劝你写XX方面的文章,具体不多说了),没见你真正实践过。之前说春节要搞的FAQ也没搞。

    4你有没有发现你的有些文章包括这篇文章下很多读者说的内容都跟主题无关,在歪楼。说明他们对你写的那篇文章不感兴趣,这种现象频繁发生,说明博主老写无关紧要的文章。,当然和其他人的文章相比你的博文质量是很高的,但和你以前的一些文章相比实在是令人没有看的欲望

    5就是这篇文章说介绍绘图工具吧,这不就是ps方面的东西吗?还专门写篇文章来介绍这个,小题大作了吧,还一大堆代码,感觉是在把简单的东西搞复杂

    回复删除
    回复
    1. 1. 多重代理网速受制于每个节点之间网网络连接质量。而且人家做tor之类的网站虽说无私但也不可能说多线程给你几百M这样的带宽 不过1-2Mbps应该是可以 目的是让你做到匿名浏览 但你要看1080p 4k视频 不好意思 别想了

      ........

      删除
  26. 不错的软件,正在用他给自己家族画族谱,哈哈,不知道算不算大材小用了

    回复删除
  27. 官网 好像打不开了。

    另外博主不怕 Google 哪天再把Blogspot 给关了吗?

    回复删除
    回复
    1. 就算Google 把Blogspot 给关了。
      Blogspot是支持数据导出的。再说Blogspot用户群也很大,本身也能为Google带来收入(起码不会亏损)。Google为什么要关她?
      再者,博主自己也是有多处数据备份的。

      删除
    2. 来自风平浪静的明天2016年2月24日 下午2:36:00

      当然有备份了,别忘了博主是用emacs编辑后再放上来的。原件都是加密后在博主的磁盘里存着呢!

      删除
    3. to 来自风平浪静的明天
      但是假如关了的话,博客下方的论坛就要完蛋了吧?
      论坛哪里有备份?

      删除
    4. 1984.city有人备份评论区

      删除
    5. Graphviz官网确实打不开了。
      以前随想一介绍GitHub的事迹就被DDoS了。
      这次怎么也那么快。。

      删除
    6. to 边城穗香
      那首先被D的应该是万恶之源github呀,代码都在github上。
      做这件事的人目地何在,智商何在?

      删除
    7. 东方出了个张召忠2016年2月24日 下午7:05:00

      TO 6单元
      因为智商都让张召忠给吃了

      删除
    8. 我觉的Google短期应该是没这个意思 你觉得YouTube和Blogspot Google会关么?我倒是觉得不会 不搞什么wordpress之类的东西估计就是防止DDoS把 Google自己拥有世界各地的网络带宽接入 还有一个经常用来防止中小网站打趴的就是cloudflare 我看到一些直接打的开的网站都用过 Github那主要是人太多了不过上次“压力测试”之后 应该也有升级。但看看现在国内的媒体环境(习XX)保不准Github也要强行wall掉

      删除
  28. "图片格式【至少】支持:png、jgp" 这里的 jgp 貌似是 jpg 之误?

    回复删除
    回复
    1. 别纠结,这是博主发明的新格式

      删除
  29. 哈哈, 随想君也是emacs党, 握爪
    看了几年的博客, 这是第一次留言, 居然是因为这个😓

    回复删除
    回复
    1. VIM党表示不服

      删除
    2. 同vim,这个不重要吧。反正都是工具 自己能用好自己的工具就行了 记得一流 二流 三流的程序员怎么样么?

      删除
  30. 求教 tails系统里面无法用全拼输入 怎么办?

    回复删除
  31. 你们都错了,编程随想其实是周鸿祎!不要问我怎么知道的,请叫我红领巾!

    回复删除
  32. 感谢博主分享工具,问一下有没有更多方面的信息可视化工具,graphviz是专门画复杂的关系图的,有没有画结构图之类的?

    回复删除
  33. 随想兄,我个人觉得对习包子的评价似乎有些不客观。
    不可否认,习包子做了很多很过分的事,比如延迟退休、个人崇拜、舆论封杀、控制媒体、控制司法、借反腐之名党同伐异,我觉得集权程度要比毛腊肉有过之而无不及。
    不过习包子好像也做了不少事,比如亚投行、一带一路、去年全球旅行也签了不少单子、要加快步伐淘汰落后的产业

    个人觉得习包子既要学毛腊肉那一套,又要学邓小平那一套,但是又学了个四不像
    但包子提出的这些改革,也是去年才开始的吧,还没见到什么成果。
    所以我觉得等过几年再来评价习包子才会客观一些。

    回复删除
  34. 后来的支持楼主,话说这个感觉和latex的tikz宏包差不多,另:听说楼主你的网盘空间问题解决了,我过年以前早就发给你的那个扫描版的书是不是也可以分享一下了?

    回复删除
  35. 随想君,有向图与无向图这地方是不是写错了?

    两种图:有向图(graph) VS 无向图(digraph)


      DOT 语言支持两种图形,分别是“有向图 和 无向图”。通俗地说,“有向图”里面的连线是有箭头(比如前面给出的那张“太子党关系图”);反之,“无向图”里面的连线是没有箭头的,比如前面那张“48州的比邻关系图”。

      定义一个无向图很简单,先看下面这段代码。

    graph simple
    {
    a -- b -- c;
    b -- d;
    }
    // 这是个无向图

      上述代码的效果图如下:
    不见图 请翻墙

      要定义一个有向图,也很简单,代码如下:

    digraph simple
    {
    a -> b -> c;
    b -> d;
    }
    /* 这是个有向图 */

      上述代码的效果图如下:
    不见图 请翻墙

    回复删除
  36. 可疑的空谈者、伦理和基本不对称性
    https://iyouport.com/archives/67747

    不确定性能带来机遇 波动毁掉的只有惧怕它的人
    https://iyouport.com/archives/67170

    少说多做,审慎,勇敢面对未来!

    回复删除
  37. 方校长精分哈哈哈...
    linux mint 那事充分证明了一个道理,https网页提供sha1校验码,用户下载后校验,记得踢出CNNIC那类的...然后就又充分证明了某系列博文要写要写...

    回复删除
  38. 我过来留言支持一下编博主 清晰的资料对于教育人民是大有裨益的

    回复删除
  39. 原教旨自由主义者2016年2月24日 下午8:50:00

    「拆围墙」事件充分显示了朝廷已陷入「塔西佗陷阱」陷阱。

    回复删除
  40. 博主你好!请教一个问题,本人对编程零基础,听说只要考出PAT的证书,就可以去互联网公司面试了,请教下博主,需要哪些书籍资料?

    回复删除
  41. 我是电脑小白,2个问题请教编程兄:
    1.用BitTorrent Sync同步文件的时候,查看活动节点可以看到很多节点的IP地址,请问这些IP地址有暴露行踪风险的可能吗?
    2.现在注册GMAIL邮箱,FACEBOOK,必须要用手机验证才能注册一个号,尤其是国内的网站,这样无疑就增加了风险。我想编程兄能否写一篇“如何匿名注册”的文章。

    回复删除