Windows / Linux 下使用符号链接完全指南

目录 技术

在 Windows 下“创建快捷方式”是很常用的一个功能,快捷方式是一个后缀为 .lnk 的特殊文件,其实这跟 *nix 环境下的符号链接根本不是一回事情。

如果不明白什么是符号链接的话,可以参考这篇文章。另外,符号链接有软硬之分,区别可以参考这篇文章

这里有篇文章: Complete Guide to Symbolic Links(symlinks) on Windows or Linux,讲了如何在 Windows 和 Linux 使用符号链接。

简单翻译归纳如下:

在任意版本的 Windows 资源管理器中创建符号链接

用一个免费的工具 Link Shell Extension可以很方便的创建符号链接,不过在安装这个工具之前,还要先安装 Visual Studio 2005 Redistributable:
Visual Studio 2005 Redistributable

然后再安装 Link Shell Extension:

要创建符号链接,首先在资源管理器中定位到创建符号链接的源文件或是文件夹,然后点击右键,选择“Pick Link Source”:

再换目录到想要创建符号链接到的目标文件夹,在空白处单击右键,选择“Drop as…”,然后再选择一个符号链接方式:

Windows XP 下也一样可以创建:

通过命令行创建符号链接:
Windows Vista/7 终于提供了命令行 mklink 创建真正意义上的符号链接, 不过运行这个命令还需要管理员权限:

然后在命令行里面就可以用 mklink 命令创建符号链接了,不过遗憾的是,这个命令所需的参数格式跟 *nix 下的不同,而且傻傻的还需要用户来指定不同参数来决定创建文件还是文件夹的符号链接。mklink 命令行参数为:

现在也有另外一个开源的工具 ln 可以下载,提供了跟 *nix 下一样的命令行方式创建符号链接,而且也不用再指定文件还是文件夹了。使用方法比较简单,就不赘述了。

Windows XP 可以用 Junction 这个免费工具,把放到 PATH 中去以后,在命令行中如下运行命令就可以了:

*NIX 下创建符号链接:
这个简单,用 ln 命令来搞定了:

如何修改浏览器Cookie

目录 技术

网站通过 Cookie 保存了我们访问网站的信息,在不同的浏览器中修改 Cookie 可以如下操作:

Firefox:
安装 Web Developer 插件,装完重启之后会出现一排新的工具栏,点击 Cookies -> Add Cookie… 即可增加/修改一个Cookie了。

Opera:
Opera 可以在 菜单 -> 工具 -> 高级 -> Cookie… 对话框中找到当前的页面的 Cookie 项,选中以后点“编辑…”即可修改。如果修改不成功的话,有可能是因为启用了 Opera Turbo 加速器导致的,可以检查 菜单 -> 工具 -> 快速参数(F12) -> 启动Opera Turbo 是否开启,如开启着的话,把它关闭以后再试试是不是可以了。

Chrome:
安装 Edit This Cookie 插件,之后点击插件图标即可操作 Cookie。

IE:
可以用 IECookiesView 碰碰运气,如果有其他更好的办法也请告知。

除上述工具之外,免费工具Fiddler 和商业软件 HttpWatch 可以通过设置断点,跨浏览器调试所有的 HTTP(S)流量,很好很强大。只是需要写脚本,就改 Cookie 这个功能没有上述专门的工具来的方便,有杀鸡用牛刀之嫌。

常用软件

目录 技术

Windows:

Notepad++: Windows 开源下的文本编辑器,另外也可以给 Notepad++ 换主题
Process Hacker: Windows 平台下的开源进程查看工具。
Sysinternals Suite: Windows 平台下的一些实用工具集合,已被 Microsoft 收购。
Cygwin: 许多 POSIX 系统(Linux, BSD, 等) 下自由软件移植到 Windows 上的集合,国内更新源推荐: http://mirrors.163.com/cygwin。
eMule: 开源的电驴版本,非 VeryCD 的 easyMule,推荐使用 eMule Mod 版本。
FastCopy: 日本人开发的一款 Windows 平台下的快速拷贝/删除的程序,开源。
FileZilla: 开源的 FTP 工具,支持 Windows, Mac OS X 及 Linux。
Search Everything: 可用来查找定位 Windows 机器上的文件/文件夹,体积小,速度快,免费。
TrueCrypt: 硬盘加密工具,支持 Windows, Mac OS X 及 Linux。


Linux (Ubuntu):

ubuntu-tweak: 国人开发的 Ubuntu 优化大师。
NoMachine NX: Linux 平台下的远程控制软件,速度优于VNC,开源的版本为:FreeNX
aMule: Linux 平台下的电驴。


软件开发 (Java及其他):

JD-GUI: Java 反编译工具,支持 Windows, Mac OS X 及 Linux。
Memory Analyzer(MAT): Java heap 分析工具,可用来查找内存泄露。
Squirrel SQL Client: 通过 JDBC 连接数据库的客户端软件。


查看占用端口的是什么程序

目录 技术

Windows XP 下,可以用 Fport 这个命令行程序来查看都是有哪些程序/进程占用了端口。原先这个工具是 Foundstone 公司开发的,后来 Foundstone 被 McAfee 收购之后,还是由后者提供免费下载,不过没有再继续开发了。所以最后的版本就是 v2.0,并不支持 Vista / Win7。 具体使用可以看这篇文章。程序界面如下:

fport command line interface


Windows 7 下,可以用 NirSoft 公司的免费工具 cports。 这是一个图形工具,可以定义过滤条件,使用很方便。 界面如下:

nirsoft - cports


Linux下,则可以用 netstat 和 lsof 命令。lsof 命令事实上不仅仅可以列出端口,它是 “list open file” 的缩写,而在 Linux 下,网络 Socket 也可以看作一种文件的,所以用 lsof 可以查看端口,同样也可以查看是哪些程序/进程打开了某一个硬盘文件,或是查看某个进程打开了哪些文件。具体命令的使用,查 man lsof 就行了,也可以参考这篇文章。另类的用法还可以用来lsof恢复删除的文件,说不定什么时候还真可以救救急的。

netstat vs lsof



Chrome 下重载 pac 代理设置

目录 技术

Chrome 浏览器中设置 socks 代理前面介绍过了。如果修改代理的方式,比如换成“直接连接”等,Chrome 是能马上探测到这种变化从而用新的代理设置的;但是如果修改了 pac 文件中的内容,不重启 Chrome 的话,是不会重新加载最新的 pac 代理设置的,每次都要重启的话那还是太不方便了。

其实这个问题是可以解决的,也很简单,进入 chrome://net-internals 或是 about:net-internals, 会出现一个很多 Tab 页的配置,选中 Proxy,然后点 “Re-apply settings”,就可以立即让改动的代理生效了。

关于 chrome://net-internals 的文档在此,还是挺有意思的。有人说这是 Chrome 自带的抓包工具。一个浏览器带抓包的功能,似乎有点越俎代庖,但是如果从 Chrome OS 的角度来看,则顺理成章了。

通过 http 代理使用 subversion

目录 技术

在公司的环境下,因为种种限制,往往不能很顺利的直接使用 subversion 访问外面的资源,需要用代理,解决之道通常有两种,记录一下。

1. repository 是 http:// 协议的,比如 google code 上的项目

在 Windows 上的话,可以打开 %APPDATA%\Subversion\servers 文件,找到最后的 [global] 部分,添加 http-proxy-host, http-proxy-port 等来添加代理,其他也有一些参数,如 http-proxy-username, http-proxy-password, http-compression, 需要的话也可以添加上。配置如下:

http-proxy-host = xxx.xxx.xxx.xxx
http-proxy-port = xxxx

Linux 也同理,可以修改 ~/.subversion/servers 文件来添加代理。

2. repository 是 svn:// 协议的

这时候用上面的方法在 servers 文件中添加的参数是没有用的,而办法可以参考这篇文章

Ubuntu 的话,可以先运行 apt-get install libnet-proxy-perl 安装代理脚本,然后运行下面的命令:

connect-tunnel -P proxy.company.com:8080 -T 10234:svn.example.com:3690 &
svn checkout svn://localhost:10234/path/to/trunk

另外也可以参考 apache 网站上的这篇文章

Windows .bat 文件中执行 Groovy 脚本

目录 技术

在 Windows 脚本中执行 Groovy 代码有时候还是很方便的,调用的方式可以参考这篇文档
如想得到uuid,可以用:

groovy -e "println(UUID.randomUUID().toString())"
echo "groovy execution finished!"

但如果安装的 Groovy 版本不是 Windows-Installer 的话,在 .bat 里面调用 Groovy 脚本会碰到麻烦,就是执行到上面的脚本之后,接下去的脚本 echo 就不会被执行,.bat 就直接退出了。

查了下,找到了原因 (参考)。原来是 Windows-Installer 安装的是 groovy.exe,而 zip release 的版本是 groovy.bat,就是另一个bat脚本,如果不用 call 的话,就会导致程序的控制权到了 groovy.bat 中,从而 Groovy 脚本执行结束了就直接退出了。

"The 'groovy' command actually is a batch file whose full name is 'groovy.bat' but under the Windows command prompt it's OK to not specify the '.bat' part. When you don't use 'call' to transfer control to another batch file but just use the name of the file then there's no way to return..."

参考的文章,解决这个问题的办法有2个:

1. 安装 Windows-Installer 版本的 Groovy,而不是 zip 版本的,因为前者有 Native Launcher

2. 把上面的脚本改为:

call groovy -e "println(UUID.randomUUID().toString())"
echo "groovy execution finished!"

MyEnTunnel 代理共享

目录 技术

MyEnTunnel 这款软件很不错,但是默认只支持本机使用。

其实要想让其他机器也可以使用这个代理也很简单,只要把端口改成成 0.0.0.0: <Port> 的形式就可以了。

原理是让传给 plink 的参数从 -D <Port> 改为 -D 0.0.0.0:<Port>。

(参考阅读:A short guide to SSH port forwarding)

MyEtunnel 代理设置


p.s.

网上有很多文章说 Tunnelier 的速度比 MyEnTunnel 更快,其实是因为 MyEnTunnel 所用的 0.60 版的 plink 问题,现在最新版本的 plink 速度并不比 Tunnelier 慢,只要去官方网站下载一个最新的 plink,然后替换 MyEnTunnel 安装目录下的相应文件就可以了。

我实验的结果是比之前要快一些,具体快多少可能因人而异了。plink 的另一个好处是用其做代理, IE 里面也可以用,而 Tunnelier 则不行。虽然问题不大,IE 平时用的也不多,但有些时候还是会觉得不便的。

相关文章参考: 提高你的ssh翻墙速度之MyEnTunnel/PuTTY/Plink速度之谜MyEnTunnel 官方网站声明



Windows7 优化两则

目录 技术

一、解除32位 Windows 7 的4G内存限制

微软官方有关于各个不同版本 Windows 内存限制(链接)的说明,其中 32 位 Windows 7 最多也就支持 4G 的内存(链接)。这个对于目前内存白菜价,4G 及以上内存很普遍的情况下,无疑是一个很大的遗憾。好比一个人力气很大,但就是使不上劲。但是我们都知道 32 位的 Linux 可以通过 PAE (Physical Address Extension) 的技术使用 4G 以上的内存,那 Windows 7 是不是也可以呢?答案是肯定的(链接),貌似是俄罗斯的黑客提供了破解(感谢伟大的俄罗斯国家及政府),在网上用 “ReadyFor4GB Windows 7” 作为关键字,能找到很多的结果。应用这个 Patch 以后,就可以使用4G以上的内存了,经本人试用完全可行。这个很 NB 的 patch 说是可以使用高达 128G 的内存,这个我就没有条件试验是否属实了。以下为打上 patch 以后机器的截屏:

4G memory - Windows 7

这里给出 patch 的下载链接,解压缩以后右键 AddBootMenu.cmd,然后“以管理员的身份运行”,结束以后重启就可以了。

其他相关的文章推荐阅读:The 4GB Windows Memory Limit: What does it really mean?, 为何系统不识别4GB内存终极解迷

 

二、允许多个用户同时使用同一台 Windows 7 机器

*nix 系统一直都是多用户多任务操作系统,而 Windows 虽然也是号称多用户多任务,但一直都不能允许多个用户登录同时使用同一台机器。这个限制也被突破了(链接),从前面链接的文章来看,这个破解最早由一个叫 sunmorgus 的黑客在 thegreenbutton.com 的论坛一篇帖子里提出的,对象是 Windows Vista。这个破解是可以让用户在其他的机器上用 RDP 远程登录本机的 Windows 7 系统,而不会导致本机正在登录的用户被强制退出。这样,同一台 Windows 7 的机器也能实现真正的多用户多任务啦!

这里也给出这个patch的下载链接,解压缩以后右键 install.cmd,然后“以管理员的身份运行”,耐心的等待几分钟直到结束,然后重启机器应该就可以了。

20120505 更新:

以上的链接都已失效,而且其中的脚本在 Windows 7 SP1 下也已经失效。Win7 SP1 下也有脚本可以开启多用户同时登录,访问这个链接下载即可。