2007-05
23

1. 行列转置。选择一片区域复制,然后在要粘贴的地方选择编辑->选择性粘贴, 勾选转置,你会发现行变成了列,列变成了行。记住它的快捷键:选中,Ctrl-C, 单击目的地,Alt-E, s, Alt-E,单击确定。

2. 公式转化成数值。有时使用一排公式算出结果后,想要删除原数据,但又要保留结果, 则可以先选中计算结果,复制,原地不动进行编辑->选择性粘贴,选择数值后确定。 键盘快捷方式:Ctrl-C,Alt-E,s,v,回车。

3. CSV转Excel。网页上的CSV如何快速输入到Excel中?先保存成.csv文件再用Excel打开, 不过太麻烦。应该直接复制所有内容,打开Excel,编辑->选择性粘贴,选文本,确定, 然后单击粘贴区域右下方的粘贴图标(如下图),选择使用文本导入向导, 适当选择即可。

excel-tips-02.png

4. 隐藏工作表。就像隐藏行和列一样,选择格式->工作表->隐藏,即可将当前显示的工作表隐藏起来。 一些常量值、列表数据、计算中的临时变量等,都可以放在一个临时工作表中, 制作完成后将临时工作表隐藏起来,就不会影响表格美观。 反过来,当你分析别人做的表格时发现引用了“不存在”的工作表, 试试格式->工作表->取消隐藏也许会有发现。

5. 给复杂的引用定义名称。选择你要引用的单元格或范围,然后插入->名称->定义, 即可为其定义一个简短的名称,以后在公式中就不必写成完整的“工作簿!单元格范围”的形式。

6. 多人共同编辑。选择工具->共享工作簿...,勾选其中的复选框,确定, 然后将你的Excel表格共享(通过Windows的共享功能)。别人就可以与你一同编辑表格, 每次保存时数据会自动合并。

7. 折叠部分行或列。选中你要折叠的几行,选择数据->组及分级显示->组合, 即可将选中的行折叠,如下图。

excel-tips-01.png

8. 输入提示,如下图的效果。方法是数据->有效性...,在输入信息标签页中设置。

excel-tips-03.png


2007-05
22

VMware相信大家都耳熟能详,不过估计大家用的都是价值200多刀的VMware Workstation版。 而VMware公司的另一个产品——VMware Server,不收取一分钱费用却能让你实现真正的虚拟服务器。

有关VMware Workstation版和VMware Server版的详细区别请参见 smalldust的这篇文章, 但是你需要知道的一点是,Server并不是为Workstation准备的服务器端 (这和通常意义上的Workstation和Server的概念不同), 两者是完全不同的两个产品。VMware Workstation能运行在2000、XP、Linux等各种操作系统上, 但缺点就是你无法远程控制虚拟机,因此你必须在你自己的电脑上使用它; 而VMware Server则只能运行在2000 Server、RedHat Linux Enterprise等服务器操作系统上, 但你可以远程控制虚拟机,因此你可以将安装在服务器上,虚拟出多台服务器, 以充分利用服务器资源。

我最近部署的一台服务器,单CPU志强3G,2G内存,两块75G SCSI硬盘,OS为RHEL4。 部署的目的是为了做软件测试,显然这样一台服务器仅用做软件测试太浪费了, 因此我通过VMware Server在其上虚拟了四个服务器,以便同时进行四种不同的测试任务。 请注意看下面这张图,这是VMware Server的监控程序,可以看到四台虚拟服务器 总共才消耗了23% CPU和286M内存,远未达到服务器的处理能力上限。 因此通过这个方法可以大大提高服务器利用率。

vmware-server-manager.png

通过VMware Console(下图),你可以远程控制服务器上的虚拟服务器, 就像在自己本机上使用VMware Workstation一样。

vmware-server-console.png

VMware Server可在vmware官方网站上免费下载。 注册用户后可以免费获取最多100个免费的许可证。



2007-05
14

xbeta这篇文章彻底解决了vim在utf-8模式下显示中文字符为半角字符宽度的问题。

在vim中设置 :set encoding=utf-8 后,中文的一些符号会被显示为半角宽度。这时只需

:set ambiwidth=double

即可。感谢xbeta。



2007-03
23

最近公司启用了域,并且代理服务器加上了NTLM认证,只有加入域的电脑才能够使用。 这样一来,虽然IE和Firefox能够正常通过代理上网,但是像FlashGet等不支持NTLM代理认证的 下载工具就没法使用了。

不过今天发现了APS这个工具,它能够帮你进行NTLM代理认证, 使得不支持NTLM认证的工具也能正常使用代理。其方法就是在本地机器上再架设一个不需要认证的代理, FlashGet使用这个代理上网,而APS接收到FlashGet的请求之后,将其加上认证信息,再转发给 真正的代理服务器。

目前最新版为 0.9.9.0.1,下载最新版解压缩即可。它用python写成,需要先安装Python才能正常使用, 推荐使用2.4以上版本。

解压之后修改里面的server.cfg文件,进行以下设置。

# 本地代理的监听端口
LISTEN_PORT:5865

# 实际的代理地址
PARENT_PROXY:172.28.14.3

# 实际的代理端口
PARENT_PROXY_PORT:8080

# 你的机器在域上的机器名
NT_HOSTNAME:<机器名>

# 你的机器加入的域的名称
NT_DOMAIN:<域名称>

# 域用户名
USER:<用户名>

# 域密码
PASSWORD:<密码>

之后打开runserver.bat,修改其中的python路径指向正确的python解释器即可。

运行runserver.bat,APS即在本机的5865端口架设一个代理,然后令FlashGet使用127.0.0.1:5865作为代理即可正常使用。



2007-02
07

Excel默认不支持Unix格式时间戳,这在导入数据时十分不便。可以用以下公式将时间戳转换成Excel格式的时间:

=(x+8*3600)/86400+70*365+19

其中x为时间戳的单元格,8*3600中的8为中国的时区。然后将公式单元格设置为日期时间格式即可。转换结果如下图:

excel-timestamp.png

这个公式的原理:Excel的日期实际上是序列值,它以1900-1-1为1,每过一天序列值加1。 而Unix时间戳是从1970-1-1 0:00:00 UTC开始到现在经过的秒数。用x表示时间戳,可得到换算公式:

x+8*3600                    当前时区的时间(秒)
(x+8*3600)/86400            转换单位为天
(x+8*3600)/86400+70*365     加上1900到1970这七十年
(x+8*3600)/86400+70*365+19  闰年多出来的天数

细心的话你会发现,1900年到1970年共是17个闰年,考虑到Excel将1900-1-1当作1,那么公式最后应该加18才对, 为什么要加19?这是Excel中的一个bug——1900年也被当作闰年,因此应当再多加一天。

另外要注意,在Excel的工具->选项->重新计算中,有个1904年日期系统,如果勾选这个选项,上面的公式应当将70改为66,即

=(x+8*3600)/86400+66*365+19


2007-02
07

今天在解决一个Excel问题时发现Excel中居然有1900年2月29日这一天。众所周知1900年是平年。没想到Excel中还会有这样的bug,真是开眼了。

来看看如何重现这个bug:首先新建一个工作表,在某个单元格输入1900/2/20,然后设置适当的日期格式,然后复制序列,即可发现序列中居然包含1900年2月29日这一天。这个问题会影响到1900/1/1到1900/3/1之间的日期计算和星期计算。

excel-bug.png

微软的官方说明中提到了这个bug,据说是为了某些程序的兼容性问题。可能这个问题是Lotus 1-2-3的bug,微软当年为了跟Lotus 1-2-3抢占市场就做了个完全兼容的Excel,从而把这个bug也一起继承了过来。



2007-01
24

或许很多人已经知道这个插件了吧,Tab Effect。它能让你的Firefox在切换标签时使用类似于Linux下的Compiz的3D效果。看看下面的截图。

tab-effect.png

装上以后感觉原来的设置切换速度有点慢,打开插件目录下 content/javascript.js,寻找这一段代码:

if(TabEffect.currentTab != gBrowser.selectedTab){
    var back = currentTabIndex > gBrowser.mTabContainer.selectedIndex || currentTabIndex == -1;
    TabEffect.xpcomObj.translateToNextTab(back, 24);
    TabEffect.currentTab = gBrowser.selectedTab;
}

将 translateToNextTab(back, 24)中的24改成12,重新启动Firefox,可以看到旋转速度快了许多。不过在切换页面时有明显的延迟,使这个插件减色不少。不过总的来说,这个插件还是值得推荐的,它带来了插件开发的一个新思路。

该最新版本为1.1,仅有Windows版,需要DirectX 8支持。

ps. 如何找到插件目录?我使用的是Mr Tech Local Install,安装该插件之后,在插件管理面板上选中想要查看的插件点右键,选择浏览安装目录就可以了。要是没有安装该插件,那就在 C:\Documents and Settings\用户名\Application Data\Mozilla\Firefox\Profiles\nnnnnn.default\extensions 目录下一个个找吧。



2006-12
05

这篇文章的内容是从一个同事那里学到的,先谢谢他啦。

putty可以很轻易地建立ssh隧道,实现加密代理。 这个方法你需要有一台外部的 sshd 服务器。在自己的电脑上利用 putty 连接 sshd 服务器,建立ssh隧道。

在putty中设置连接时选择左侧的 SSH -> Tunnel,Source port为隧道的本地端口,例如填写1080, Destination留空,下方选择Dynamic,点Add按钮。设置如下图所示。然后连接 sshd 服务器即可建立隧道。

tunnel-setting.png

实际试验时发现0.54版(?)似乎不能正常建立隧道,换成最新的0.58版就没问题了。

然后在浏览器等软件上设置使用 Socks: 127.0.0.7:1080 作为代理就可以了。

整个连接中,(1) 浏览器→putty是非加密的,(2) putty→sshd是加密的,(3) sshd→目的地是非加密的。 (1)是本机连接,不加密也没有问题。(2)的加密会将整个请求加密,也就是说,如果你用浏览器上网, 那么不仅请求的内容,就连请求URL都会被加密。因此关键在于(3)上,只要(3)是一个畅通无阻的连接, 整个连接就是安全的。

具体的使用方法,大家自己慢慢研究吧。



2006-11
22

VMware支持三种类型的网络:NAT,Bridged,Host-only。

NAT

这种方式下,虚拟机的网卡连接到宿主的 VMnet8 上。此时系统的 VMWare NAT Service 服务就充当了路由器的作用,负责将虚拟机发到 VMnet8 的包进行地址转换之后发到实际的网络上,再将实际网络上返回的包进行地址转换后通过 VMnet8 发送给虚拟机。VMWare DHCP Service 负责为虚拟机提供 DHCP 服务。

vmware-network-nat.png

Bridged

这种方式下,虚拟机就像一台真正的计算机一样,直接连接到实际的网络上,与宿主机没有任何联系。

vmware-network-bridged.png

Host-only

这种方式下,虚拟机的网卡连接到宿主的 VMnet1 上,但系统并不为虚拟机提供任何路由服务,因此虚拟机只能和宿主机进行通信,而不能连接到实际网络上。

vmware-network-hostonly.png


2006-11
20

本文参考了这篇文章

VMware是一个简单易用而且十分稳定的虚拟机软件。VMware公司最近公布了免费的 VMware Player, 它能够运行 VMware 制作的虚拟机,但是制作虚拟机就需要花费数千元购买 VMware Workstation。 (当然,破解不在本文讨论范围之内。)好在我们可以运用另一款免费的软件 QEmu 来制作虚拟机, 这样就能够做到完全免费了。

  1. 首先下载 VMware Player并安装。
  2. 下载 QEmu for Windows,并将其解压。
  3. 运行命令行,进入 QEmu 所在的目录,执行以下命令。
    qemu-img create -f vmdk image.vmdk 10G
    create建立虚拟硬盘
    -f vmdk指定虚拟硬盘的格式为VMware
    image.vmdk虚拟硬盘的文件名
    10G虚拟硬盘的大小
  4. 制作配置文件。用文本编辑器编辑一个 image.vmx 文件,内容如下。
    config.version = "8"
    virtualHW.version = "3"
    memsize = "256"
    ide0:0.present = "true"
    ide0:0.fileName = "image.vmdk"
    ide1:0.present = "true"
    
    # CD-ROM配置
    ide1:0.fileName = "auto detect"
    ide1:0.deviceType = "atapi-cdrom"
    # 如果使用光盘镜像,则用以下两行代替上面的两行
    # ide1:0.fileName = "/path/to/foo.iso"
    # ide1:0.deviceType = "cdrom-image"
    
    # 网络配置
    ethernet0.present = "true"
    ethernet0.connectionType = "nat"
    guestOS = "otherlinux"
  5. guestOS的值可按以下方法来配置。
    Windows Server 2003 Standard Editionwinnetstandard
    Windows XP Professionalwinxppro
    Windows 2000 Professionalwin2000Pro
    Red Hat Linux (generic)redhat
    SuSE Linux (generic)suse
    Netware 5netware5
    Netware 6netware6
    Solaris 9solaris9
    Solaris 10 (experimental)solaris10
    FreeBSD (generic)freebsd
    Other Linuxotherlinux
    Other Linux 2.4x kernelother24xlinux
    Other Linux 2.6x kernelother26xlinux
  6. 双击建立好的 image.vmx 即可启动虚拟机。