Flotr2 - 我最喜欢的 Javascript 图形库[译文]

原文地址:Flotr2 - my favorite javascript graph library

译者:alswl


我研究了很久,得到的终极数据可视化方案是 javascript + html ,这是唯一像样又好用的。

Gnuplot 虽然看上去不错,但是不太漂亮。 一些基于 Python 的图形化工具也有同样的问题。 Mathematica 在我看来则太正式了,所以我不怎么用它。

基于 javascript 的图形化工具其中一个巨大优势是易于共享。 通过设置 Github Page、分享链接等方法,我们都可以很方便的获取最新图表数据, 甚至可以进行交互。

那些基于 javascript 的图形化工具

有很多 javascript 图形化库,从极简到复杂绚丽的风格,都极为丰富。

最流行的可能就是 d3.jsRaphael 了。 他们用起来相当麻烦,但却能实现绚丽到超越你想象的可视化效果。

more ...

想和做

一年前,我在草稿箱里面写了这篇文章的开头,那时的我正在为工作而烦闷,却一筹莫展。 最近在读《人人都是产品设计师》,其中提到了「产品经理」和「项目经理」的区别, 又引发了我一些思考,我决定把这篇文章重新写完。


这篇文章准备讨论普通程序员在工作中容易滋生的错误,以及解决的方法。

传统意义上,大家会提倡「不能光想,还要去做」,即强调行动力的重要性。 而在实际工作中,大部分人都不缺乏这个行动力,反而缺少对自己工作的思考。 比如我为什么要这么做?有没有更优美的办法?能不能通过自动化减少工作强度? 流程是否可以改善?

我和产品

在聊上面几个问题之前,我先确定一个既有现实:「每个程序员都曾经是产品经理」。 诸位是否还记得当年在学校里面学习时候,应该都做过 XX 管理系统吧, 那时候我们也许单枪匹马,也许结对组团去完成「项目」:获取需求,设计系统和 撰写代码,在这些工作中,我们首先担任的就是产品经理一职。

more ...

Vundle 和 Submodule

问题背景

Vundle 是个好东西,可以用来管理 vim 配置和 vim 插件。Vundle 会将所有插件管理在 .vim/bundle/ 中,详情可看 使用 Vundle 管理 Vim 插件

官方安装 Vundle 方法如下:

$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

我的 Vundle 的版本是 59bff0c457f68c3d52bcebbf6068ea01ac8f5dac, git 版本是 git version 1.7.10.2 。 使用 BundleInstall 可以安装 .vimrc 中配置的插件,

我使用 git 控制 .vim.vimrc 版本。在 BundleInstall 之后会导致 vundle 目录项目状态混乱,要么形成一个无法追踪的 submodule 比如 .vim/bundle/The-NERD-Commenter (untracked content) ,要么变成一个普通的文件夹 .vim/bundle/vim-markdown

more ...

服务器 Push 技术

服务器 Push 技术表示服务器可以主动推送消息给客户端浏览器。

实现方式

  • Comet
  • Ajax 轮询
  • iframe / htmlfile
  • script tag (不中断的连续请求)
  • Flash 通讯
  • WebSocket

Comet 本意是彗星,彗星尾巴痕迹很像长连接工作方式,所以 Comet 指代长连接。 在 Ajax 轮询的分类上,存在一些分歧,这里我把轮询认为一种 Comet 方式。

ps:「长连接」在一些场景下,是另外一种意义「HTTP: Keep alive」。不在本文讨论的范围中。

参考链接:

more ...

《开源和自由》幻灯片

周末回学校一趟,和几个老同学、老师聚会,然后给学弟学妹们做了一个分享。

我的主题是《开源与自由》。 为了让同学们不瞌睡,几乎是当一个故事讲的,没太多技术内容。

more ...

让 Octopress 支持 RSS2.0

土鳖人人网的 日志导入 功能仅支持 RSS2.0,而 Octopress 输出的订阅格式是 Atom1.0。 于是为了让人人网的同学能看见我那些技术宅,又或非技术宅的文章, 我只能昧着良心,给 Octopress 加上过时的 RSS2.0 输出。

source/ 下创建新文件 rss.xml ,内容如下:

---
layout: nil
---
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
    <channel>
        <description><![CDATA[{{ site ...
more ...

给 Octopress 加上标签功能

上周,我将 Log4D 由 Wordpress 转换为 Octopress,略加打理,颇为顺手。 自动分类 / 评论转移 / 代码高亮 / 图床 的问题一一解决之后, 就只剩下 tag 的问题没有搞定了。

我当时使用了YORKXIN的修改版本来处理 Wordpress 的数据迁移,这个脚本很好用,数据没有遗失,甚至是让我担心的 category / tag 都给予了保留。具体使用方法可以参见从Wordpress迁移到Octopress

只是虽然 tag 的数据保留了,但是 Octopress 仅支持 category 的分类,而完全忽略 tag。这是我不能容忍的:category 和 tag 分别代表 有序 / 无序 的知识点归纳方法。 一篇文章只能属于一个 category,但可以同时属于多个 tag。 Octopress 的设计方法显然和我长期养成的知识归纳体系冲突,我开始吭次吭次寻找插件。

more ...

《写给大家看的设计书》读后感

我读过两本关于视觉设计的书,一本是《写给程序员的Web设计书》, 这是第二本《写给大家看的设计书》

写给大家看的设计书

我对前者的评价是「作者花了大约25%的篇幅来讲述设计理念和方法,这也是我真正想看的部分。 本来想从书中获取更多布局、色彩、字体的内容,发现还是太少了。图灵系的书翻译不错。」

相对应的,《写给大家看的设计书》是我真心想看的设计入门书。作者的文字功底好,经验丰富, 范例适合,取材广泛,总之,是不可多得的一本好书。

more ...

关于 NetworkManager / PolicyKit / ConsoleKit 的那些屌事

在使用 Awesome 的过程中,我又遇到了一个老问题「NetworkManager 在非 Gnome 环境启动后,会无法 添加 / 删除 / 编辑 无线连接」。明眼人一看就知道, 这是权限的问题。

问题描述

我的环境是 ArchLinux / xmonad 0.10 / awesome v3.4.11 / GDM 3.4.1 / NetworkManager 0.9.4.0, 下面我用 awesome 做示例,其他非 Gnome WM 也应该是类似配置。

我的 WM 启动流程是: 通过 GDM 启动 xmonad / awesome,启动 xsession 是 /usr/share/xsessions/awesome.desktop, 内容如下

more ...

使用独立图床子域名

最近在将 Wordpres 切换到 OctoPress,顺便将图片统一放到Upload4D管理。

我挑选图床管理程序有下面几个需求,需求由强到弱排列:

  • 开源
  • 简单
  • 不需数据库支持
  • 支持分目录
  • 允许上传图片
  • 支持后台直接操作文件
  • 支持用户管理,不允许其他人上传
  • 页面美观
  • 不要生成缩略图等文件
  • 软件持续更新

于是我踏上了「考古之旅」,先后试用了 MiniGal Nano / MG2 / CF Image Host Script / minishowcase 等等图床软件,评测记录如下。

more ...