星期二, 十月 30, 2012

Google的多彩管道

我很愿意承认:我不喜欢大自然,倒是觉得钢筋水泥更加好看。比如,Google数据中心里这些多彩的管道。

数据中心内有数千英尺的管道,它们被涂上不同的颜色不仅仅是为了好看,更可以方便的区分出每个管道的用途。比如亮粉色的管道是从冷水机抽来的冷水,而绿色管道是送往室外冷却塔的热水。




俯瞰整个数据中心的冷却设备,其中的冷却水是来自海水。



星期日, 九月 23, 2012

回到页首 Go Top Button

对于较长的页面,非常有必要显示“回到页首”按钮,以帮助用户快速返回到页面的开头。

使用以下HTML代码,在页面底部显示“回到页首”图标:

使用以下CSS代码,让按钮浮动显示在固定位置--即使在页面滚动时也始终停留在可见范围内:

页面显示效果,如下图所示:

back_to_top

您也可以下载完整的示例文件。

星期六, 九月 22, 2012

听姚谦说文艺这回事

文艺最可贵的地方,在于它的独特、稀有却正中下怀的触动

从小我就常常想,为什么孤单、孤独不好?是负面的词?后来我发现,这是被教育出来的。

记得有个统计数据是,淡忘一个爱过的人,提起他的名字都不再波动,平均起来是需要十八个月的时间

爱情的本质只是你渴望在某个人身上的投射面,渴望变了,人还是那个人,爱情却消失了。而所有在爱情中写给对方的文字,都是跟自己的对话。

在一段时间内,两个人彼此在同一频率、平行行走、互相欣赏,你们的计划、价值和感受是那么的相同,这一段时间的情感叫做爱情。爱情是有寿命的,就像失恋、上帝给我们的躯体一样。而爱情过后,尽可能把那段时间内的感受、感激留下来,它们才是没有寿命的。

我不会期待找一个各个方面都跟我相契的灵魂伴侣,这样的人应该是不存在的。我只能希望在人生的某些时段,遇到不同的、某些方面和我相契的灵魂伴侣,相携一段时光

星期六, 九月 01, 2012

城市, 让记忆更荒芜

今天,游荡在中国的任何一个城市,总能看到拆除,总能看到快速发展的同时如何快速地遗忘。我们的记忆在哪里藏身呢?记忆可以是一首歌,可以是一个日记本,可以是一条街,可以是一座工厂,可以是一座城市,更可以是山河大地。我们必须保存我们一个又一个的记忆之盒,在这些盒子里保存的是我们成为人的依据。

--贾樟柯 《温暖的记忆

星期一, 八月 20, 2012

免费Windows字体管理软件 Font Xplorer

Font Xplorer 是一个免安装的绿色软件,用于管理Windows字体。它可以运行在 Windows 9x/Me/NT4/2000/XP 操作系统下,但不支持Windows Vista/7/8 。

在程序主界面中,可以利用树状结构,浏览已经安装和尚未安装的字体,并安装或删除选中的字体。

View_Folder

安装字体时,可以选择将字体文件保留在当前文件夹(leave where they are);将字体文件复制到系统字体目录(copy to Windows fonts folder);或者将字体文件复制到指定目录(copy to different folder)。

Install_Font

有时为了简短,字体文件的名字会变得不知所云(比如arialbi.ttf);利用Rename fonts to Full Name功能,可以将文件名改为字体的名称(Arial Bold Italic.ttf)。

Renam_Fonts_to_FullName

在字符表(Character Map)中,可以浏览所有字符或放大个别字符;可以根据字符集过滤字符;甚至能够将字符复制为格式文本或适量图像,并粘贴到其它程序中。

Preview_Font

注意:Font Xplorer 支持 TrueType 和 OpenType fonts with TrueType outlines;但不支持Adobe Type 1 fonts 和 OpenType fonts with PostScript outlines。

星期六, 八月 18, 2012

国家 / 人民

國家屬於人民,但並非人民屬於國家。

--黃耀明

星期六, 八月 04, 2012

VIM学习笔记 操作目录(Manipulate Directory)

工作目录

使用以下命令,可以查看Vim所在的当前工作目录:

:pwd

切换目录

如果想要切换到其它目录,可以使用以下命令:

:cd dir

注意:如果没有指定目录,那么使用:cd命令,在Linux下,将回到home用户主目录;而在Windows下,则会显示当前工作目录。

如果想要回到前一个工作目录,可以使用以下命令:

:cd -

创建目录

我们还可以使用以下命令,创建新的目录:

:!mkdir my_project

Ver: 1.0<上一篇 | 目录 下一篇>

星期五, 七月 06, 2012

VIM学习笔记 操作文件(Manipulate File)

保存文件

使用:write(可简写为:w)命令,可以保存文件或文件中指定范围的文本。

例如,使用以下命令将保存文本到文件collect.txt中:

:write collect.txt

如果这个文件已经存在,那么就会显示错误信息。如果要强行保存,可以使用!选项:

:write! collect.txt

我们也可以向已有文件中追加内容。例如,使用以下命令将正编辑的文件内容追加到collect.txt中:

:write >> collect.txt

如果这个文件不存在,那么就会显示错误信息。可以使用!选项,强行创建并保存新文件:

:write! >> collect.txt

我们还可以导出文件中的部分内容到其它文件中。首先进入可视化模式并选择内容,然后使用以下命令写入其它文件:

:'<,'> write collet.txt

使用写入命令不仅可以保存文件,而且还可以将文件重定向到其他程序。在Linux系统中,我们可以使用以下命令将文件发送到打印机:

:write !lpr

注意:命令:write! lpr:write !lpr是不同的,前者是强行保存文件,而后者则是将文件发送到打印机。

查看文件

使用:view file命令,将以只读方式打开文件。你在文件中进行的任何修改,都无法保存。当然我们也可以使用:write!命令,来强制保存文件。

新建文件

我们可以使用:vi file命令,在新建缓冲区中编辑名为file的新文件。如果当前文件没有保存,那么将会显示警告信息,此时可以输入:write命令,来保存当前文件;或者使用:vi! file命令,不保存当前文件而强制开始编辑新文件。

另存文件

使用以下命令,可以将当前文件另存为以name命名的新文件,并在当前缓冲区中开始编辑新文件:

:file name

读入文件

使用:read(可简写为:r)命令,可以读入其它文件内容并插入到当前行以下。例如,以下命令会将名为file的文件读入并且插入在line后面。如果没有指定文件,那么就会使用当前文件;如果没有指定行,那么就会使用当前行。

:line read file

我们甚至可以使用以下命令,读入外部命令的输出并插入到当前行的后面:

:line read !command

文件信息

使用以下命令,可以显示当前文件的名字及与行相关的信息:

:file

"test.txt" [Modified] 134 lines --55%--

使用以下命令,则可以显示当前文件的总行数:

:=

命令小结
:vi新建文件
:view以只读方式打开文件
:write保存文件
:read读入文件
:file查看文件信息

Ver: 1.0<上一篇 | 目录 下一篇>

星期三, 六月 27, 2012

这些天纠结的收放自如

类似常见问题(FAQ)的网页,通常都会首先显示所有问题列表,然后在用户点击某个问题时自动展开显示详细答案。收放自如的版式,既可以让读者在同一页面中查看大量信息,又不至于因为内容过多而使页面布局凌乱。

方案 1Toggle Visibility

可以使用以下代码,显示或隐藏指定区域。此方案的优势是,代码和结构都非常简单。而不足是,当区域显示后需要再次点击链接以重新隐藏内容。请查看在线实例

方案 2Simple Javascript Accordions

Dezinerfolio使用Javascript开发的Simple Javascript Accordions,提供了横向、纵向和标签页等多种形式的收放效果。此方案的优势是,利用插件减少开发成本。而不足是,需要在页面加载时启动此插件,可能与其它插件产生冲突。请查看在线实例

Simple Javascript Accordions

方案 3CSS3 Accordion Effect

CSS Ninja使用CSS3开发的Accordion Effect,提供了纯CSS并且支持多种浏览器(包括IE6+)的收放效果。此方案的优势是,CSS便于调试,并且不会与其它插件产生冲突。而不足是,收放效果在IE和非IE浏览器中稍有不同:在非IE中浏览器中,需要点击链接以展开内容;而在IE中,鼠标移动到标题行就会自动扩展显示。请查看在线实例

CSS3 Accordion Effect

注意:以上方案均需要为每段问答指定ID,代码维护成本较高。

星期一, 四月 02, 2012

VIM学习笔记 帮助信息(Help)

查看帮助

使用以下命令或直接按下F1键,可以查看帮助文件:

:help

help

使用查询命令,可以在帮助文件中查找特定主题的帮助信息。例如使用/mode命令,即可找到关于模式的帮助信息。

在帮助信息中的命令、选项或章节等链接上双击鼠标或点击ctrl-]键,就可以跳转到相关的帮助信息。点击ctrl-octrl-t则可以在查阅过的帮助信息之间进行跳转。

帮助目录

使用以下命令,可以显示用户手册的目录:

:help usr_toc

help_usr_toc

精确查找

如果你想要查看特定命令的帮助信息,那么可以直接在帮助命令中指定命令做为参数:

:help :undo

通过set wildmenu设置命令,可以在窗口底部显示菜单选项。当我们并不知道确切的命令名称时,可以只输入开头的几个字母,然后按下Tab键,就将在wildmenu中显示可能匹配的命令。继续按Tab键,可以在这些命令列表间移动,按下回车键就会显示选中命令的帮助信息。

help_wildmenu

使用:help ctrl<Tab>命令,可以列出所有和CTRL键相关的帮助主题。使用:help i_CTRL-R命令,则只显示在插入模式下CTRL-R的帮助信息;而:help c_CTRL-R命令,则显示在常规模式下CTRL-R的帮助信息。

模糊查询

如果不知道具体的命令名称,那么可以使用以下命令在所有帮助文件中查询相关信息。例如,使用此命令,将逐一显示所有与插入模式相关的帮助信息。

:helpgrep insert mode

helpgrep

可以使用:cnext命令,查看下一条帮助信息;使用:cprev命令,查看上一条帮助信息。

如果有很多相关的帮助信息,可以使用:clist命令,列示所有包含指定主题的帮助信息。

helpgrep_clist

使用:cwin命令,则可以在QuickFix窗口中列示所有相关帮助信息的条目。利用鼠标滚轴、方向键或j,k移动命令可以在条目间移动,按下回车键则可以打开当前条目的帮助信息。使用:cclose命令,可以关闭QuickFix窗口。

helpgrep_cwin

更多帮助资源

:help quickref命令,可以查看快速索引:

Help_quickref

:help tips命令,可以查看使用技巧:

Help_tips

我们还可以访问网页版的Vim帮助文件:English Version|中文版

命令小结
:help查看帮助
:helpgrep使用正则表达式模糊查询帮助信息

Ver: 1.0<上一篇 | 目录 下一篇>

星期六, 三月 03, 2012

VIM学习笔记 交换文件(swap)

在编辑文件的过程中,Vim将会在当前目录中自动生成一个以.swp结尾的临时交换文件,用于备份缓冲区中的内容,以便在意外退出时可以恢复之前编辑的内容。

启用/禁用交换文件

可以使用以下命令,设置生成交换文件:

:set swapfile

可以使用以下命令,设置Vim不产生交换文件:

:set noswapfile

注意,以上设置仅针对当前文件生效。

处理交换文件

当完成编辑并保存退出后,临时交换文件将会被删除;但如果Vim意外退出,那么这个临时文件就会留在硬盘中。当Vim再次启动时,会检查当前目录中是否存在交换文件。如果存在,则意味着Vim正在编辑此文件,或者在上次编辑过程中意外退出,这时Vim就会给出警告信息,并要求我们在以下四个选项中做出选择:

  • Open Read-Only(以只读方式打开):如果我们想要查看文件内容或是有另一个编辑过程正在运行,那么可以选择此选项;
  • Edit anyway(编辑文件):请尽量不要选择此选项。因为如果同时有两个或是多个编辑过程同时编辑一个文件,那么只有最后一个保存的编辑过程有效;
  • Recover(恢复):如果在编辑过程中vim意外退出,那么可以选择此选项尝试从交换文件恢复文档;
  • Quit(退出):选择此选项,将取消对此文件的修改。

查看交换文件

Vim意外退出时,并不会覆盖旧的交换文件,而是会重新生成新的交换文件。例如,第一次产生的交换文件名为“.file.txt.swp”;再次意外退出后,将会产生名为“.file.txt.swo”的交换文件;而第三次产生的交换文件则为“.file.txt.swn”;依此类推。

使用以下命令,可以查看当前交换文件的名称:

:swapname

也可以在命令行中使用以下命令,列示当前目录和临时目录下的交换文件:

vim -r

命令的执行结果,如下图所示:

vim -r

交换文件选项

根据默认设置,交换文件会每隔4000毫秒(4秒)或者200个字符保存一次。我们可以使用以下命令,修改保存交换文件的频率:

:set updatetime=23000

:set updatecount=400

注意,如果我们将updatecount的值为0,那么就将不保存交换文件。

Vim默认在当前文件所处的目录下产生交换文件,我们可以通过directory选项来更改交换文件产生的目录。例如,使用以下命令将交换文件存放在/tmp目录下:

:set directory=/tmp

注意,如果我们将交换文件存储在一个指定目录,那么当编辑不同目录下相同名称的文件时,就会产生命名冲突。我们可以将directory选项设置为一个以逗号分隔的目录列表,并将当前目录(.)设为目录列表的第一个选项,这样交换文件首先会被存放在当前目录下。

:set directory=.,/tmp

保存交换文件

使用以下命令,可以保存修改到交换文件中,而原始文件则保持不变(直到使用:write或ZZ命令退出时原始文件才会被重写)。也就是说,我们可以在丢失原始文件的情况下,使用交换文件来恢复文档。

:preserve

从交换文件恢复

可以使用以下命令,来修复指定的文件:

:recover temp.txt

如果存在多个交换文件,那么可以根据屏幕提示选择从指定的交换文件恢复:

recover

如果没有指定文件名,那么将默认恢复当前缓冲区中的文件。如果试图修复的文件正处于编辑状态,那么将返回错误。如果想要放弃所做的编辑并修复文档,那么可以使用以下命令进行强制修复:

:recover! temp.txt

在命令行下使用以下命令,可以从指定的交换文件进行恢复:

vim -r file.txt.swo

你可以使用以下命令,查看关于交换文件的帮助信息:

:help swap-file

命令小结
:swapname查看当前交换文件的名称
:preserve保存修改到交换文件
:recover从交换文件恢复
:set swapfile启用交换文件
:set noswapfile禁用交换文件
:set updatetime设置保存交换文件的时间频率
:set updatecount设置保存交换文件的字数频率
:set directory设置用于保存交换文件的文件夹

Ver: 1.0<上一篇 | 目录 下一篇>

星期五, 二月 10, 2012

INVENT & KILL

I am proud of the fact that I never invented weapons to kill.

--Thomas Edison

星期二, 一月 31, 2012

VIM学习笔记 光标(Cursor)

光标显示选项

可以通过以下命令设置guicursor选项,来定义图形界面下的光标显示:

:set guicursor=mode:style[-highlight],mode:style[-highlight],...

其中,mode是以下选项的组合:

n常规模式
v可视模式
ve可视模式但不包括selection
o操作符等待模式
i插入模式
r替换模式
c 命令行常规模式
ci命令行插入模式
cr命令行替换模式
sm插入模式下的显示匹配
a所有模式

其中,style如下:

horN水平栏,字符高度的N个百分比
verN垂直栏,字符宽度的N个百分比
block光标块,覆盖整个字符
blinkwaitN光标开始闪烁前的延迟
blinkonN光标显示的时间
blinkoffN光标不显示的时间

例如,以下命令会在常规、命令和插入模式下,将光标设置为相当于当前字符50%宽度的方块,并使用ncvCursor组高亮显示:

:set guicursor=n-c-v:ver50-ncvCursor

而以下命令则启用不闪烁的方块光标,在插入模式下,使用iCursor组高亮显示,而在可视化模式下,则使用vCursor高亮显示组。

:set guicursor=i:block-iCursor-blinkon0,v:block-vCursor

关于光标显示的更多信息,请使用以下命令查看帮助文档:

:help guicursor

光标颜色

利用以下命令,可以改变光标的前景色和背景色:

:highlight Cursor guifg=white guibg=black

:highlight iCursor guifg=white guibg=steelblue

光标行/列

利用以下命令,使用CursorLine组高亮显示光标所在的屏幕行:

:set cursorline

而利用以下命令,则使用CursorColumn组高亮显示光标所在的屏幕列:

:set cursorcolumn

使用以下命令同时启用光标行和光标列,将显示“十字架”光标,可以准确定位当前位置:

:set cursorline cursorcolumn

cursorline cursorcolumn

利用以下命令,可以改变光标所在行的颜色:

:highlight CursorLine guibg=lightblue ctermbg=lightgray

可以使用以下命令,取消高亮显示光标所在的行和列:

:set nocursorline nocursorcolumn

命令小结
:set guicursor设置光标选项
:set cursorline高亮光标所在的屏幕行
:set cursorcolumn高亮光标所在的屏幕列

Ver: 1.0<上一篇 | 目录 下一篇>

星期六, 一月 14, 2012

VIM学习笔记 配置文件(vimrc)

在vim启动过程中,首先将查找配置文件并执行其中的命令。而这些初始化文件一般有vimrc、gvimrc和exrc三种。

利用:version命令,可以得到配置文件的详细信息。

version-vimrc

注意:如果执行gvim,那么$VIMRUNTIME/menu.vim也会被执行。

配置文件位置

vimrc是主配置文件,它有全局和用户两种版本。

全局vimrc文件,存放在Vim的安装目录中。可以使用以下命令,确定Vim的安装目录:

:echo $VIM

默认情况下,系统vimrc存放在以下位置:

Linux: /usr/share/vim/vimrc

Windows: c:\program files\vimrc

用户vimrc文件,存放在用户主目录中。可以使用以下命令,确定用户主目录:

:echo $HOME

默认情况下,用户vimrc存放在以下位置:

Linux: /home/username/.vimrc

Windows: c:\documents and settings\username\_vimrc

注意:用户配置文件优先于系统配置文件。

gvimrc是GVIM的配置文件,它也有全局和用户两种版本,并且存放在与vimrc相同的目录中。

默认情况下,系统gvimrc存放在以下位置:

Linux: /usr/share/vim/gvimrc

Windows: c:\program files\vim\_gvimrc

默认情况下,用户gvimrc存放在以下位置:

Linux: /home/username/.gvimrc

Windows: c:\documents and settings\username\_gvimrc

exrc文件,仅用于向后兼容olvi/ex,它的全局和用户两种版本也放置于vimrc相同的目录里。除非你使用vi-compatible模式,否则不需要关注exrc配置文件。

注意:在Unix和Linux下,vim的配置文件被命名为以点开头的隐藏文件;而在Windows下,配置文件则以下划线开头命名。

编辑配置文件

可以使用以下命令,新建缓冲区来编辑配置文件:

:edit $MYVIMRC

也可以使用以下命令,新建标签页来编辑配置文件:

:tabedit $MYVIMRC

例如,我们可以在配置文件中使用以下命令,来设置vim的选项:

:syntax on "打开语法加亮功能

:set shiftwidth=4 "设置缩进宽度为4个空格

其中,单引号(")为注释内容。

应用配置文件

修改配置文件后,需要重新启动Vim,或使用:source命令来应用新的设置:

:source $MYVIMRC

我们可以在配置文件中增加以下命令,在保存后自动应用配置:

autocmd bufwritepost .vimrc source $MYVIMRC

配置文件实例

以下是本人的vim配置文件内容,供各位参考:

星期日, 一月 08, 2012

柱形图(Bar Chart)

柱形图(Bar Chart),适用于显示一段时间内数据的变化或各系列之间比较。(Show data values in comparison to one another.)

BAR CHART

柱形图不仅可表现单一的数据,也可将多种数据进行并列比较。同时,我们还可以对柱形进行艺术加工,柱形本身也能采用其他的象形符号来表现。另外,当参与比较的数据差异较大时,可将柱形转变为用圆形或正方形等紧凑的图形,通过其面积的不同来进行比较。更进一步的话,还能使用立方体\球体,用体积的形式来表示。折线图只能表现数据随时间变化的过程,而柱形图兼具这个功能。此外,饼围所表示的是数据在 100%中所占的比例,使用柱形图,也能在一条柱形中表现这样的比例关系。正因为柱形图是这样一种全能的统计图,所以它是统计图中最为基础的表现形式。

BarChart-2
图片来源:《图解力》

通过为柱形图设置3D效果,可以使显示风格更为现代:

Bar Chart-3D

将柱形图横置,可以突显数据对比和排序效果,但是时间概念就会削弱甚至丧失:

Bar Chart-Horizontal

下图统计了2011年度F1比赛中各位车手受到处罚的情况。汉密尔顿毫无意外地排名榜首。图表的纵轴表示受罚的次数,并且利用不同的色彩显示了受罚的类型(比如灰色表示通过维修站)。图表的横轴列示车手头像,从受罚最多到受罚最少依次排列,车手的驾驶风格也变得一目了然。通过增加形状、色彩和图像,原本死气沉沉的柱形也可以变得生动活泼,并且体现出更多数据和含义。

Bar Chart-F1

结合使用数字和颜色,在以下横向柱形图中,同时统计了2016年F1银石站车手进站和换胎的情况。纵轴列示了各位车手的姓名;而横轴则显示在全部52圈比赛中停站换胎的节奏:其中,数字表示进站圈数,而不同颜色的横轴则代表使用不同类型的轮胎。

BarChart-PitStop

卢夫斯·西格在其著作《欧洲地图集》(Atlas of Europe)中,使用艺术化的柱形图展示了西欧的原油消耗:

BarChart-AtlasOfEurope

星期三, 一月 04, 2012

使用SQL语句查看 Hyperion Planning 维度成员的UDA

使用以下语句,可以查询某个维度下成员的UDA属性:
select
O.Object_Name as Name,
OA.OBJECT_NAME as Alias,
U.UDA_VALUE as UDA
from hsp_member_to_uda M
inner join hsp_uda U
on M.UDA_ID=U.UDA_ID
inner join hsp_object O
on M.MEMBER_ID=O.OBJECT_ID
inner join hsp_alias A
on M.MEMBER_ID=A.MEMBER_ID
inner join hsp_object OA
on A.ALIAS_ID=OA.OBJECT_ID
inner join hsp_member D
on D.Member_Id=O.Object_Id
inner join hsp_object OD
on D.Dim_Id=OD.Object_Id
-- Specify Dimension
where OD.OBJECT_NAME='Entity'
order by O.Object_Name

显示效果如下图所示: