念's profile牛肉面的BLOGBlogListsGuestbook Tools Help

Blog


    1/25/2008

    草4开花了

    偶得一盆百日草, 把种子放到土里浇点水, 没想到过了几天一棵小草找出来了,  更没想到接下来的几天里又先后长出来了3棵. 按长出来的时间给他们起名字草1, 草2, 草3和草4. 本来都是冬天了, 虽然福州的天气不太冷, 可看次小草柔弱的样子, 也没指望他们能活下来, 前两天突然发现, 他们4个里面长的最小的草4竟然开花了, 小小的黄花, 真不容易!

    1/13/2008

    双击直接执行PowerShell脚本文件.ps1<转>

    方法是从http://hi.baidu.com/dikex/blog/item/7a154d0e1c47cece7bcbe194.html上看到的.

    1. "开始"->"运行"->"cmd"
    2. 执行ftype Microsoft.PowerShellScript.1="C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -command ^& {".\"%1""}
    3. 执行assoc .ps1=Microsoft.PowerShellScript.1

    VPN/上网两不误

    在家里要访问公司的网络时要VPN到公司, 但是一但VPN上去后本地就不能上网了, 非要用公司的代理才行. 不过用上代理后非但网速大打折扣, 而且代理还有不少限制, 这总不是办法, 请教了请教对门的哥们, 原来只需要很简单的步骤就可以搞定.

    1. 新建一个VPN连接(如果你已经建好了自然就省了这一步了), 假设名字叫VPN_name. 选中该连接, 选"属性"->"网络"->"Internet协议"->"高级"->"常规"->去掉"在远程网络上使用默认网关"前面的勾.


    2. 先VPN到公司去. 打开cmd, 运行ipconfig, 看一下VPN的IP进去后分配的IP地址是多少. 例如在下面的图中, VPN后的IP是192.168.14.49

    3. 在cmd中运行route add命令, 为进入VPN网络后要访问的地址添加, 指定其下一跳地址为VPN后指定的IP地址.假设我VPN后要访问的网段是192.168.201.0 255.255.255.0, 则执行的命令是
    Route add 192.168.201.0 mask 255.255.255.0 192.168.14.49

    4. OK, 就这第两步. 现在就可以一边远程连接到公司的PC, 一边下BT了.

    到此为止, 已经满足"VPN/上网两不误"的目的了, 但如果你和我一样懒, 不想每次都手工输入这些命令的话, 请接着往下看.

    如果每次进入VPN后分配的IP地址是固定的的话, 只要把启动VPN拨号的命令和设置路由的命令写个BAT就行了, 但因为我的公司每次VPN进去后分配的IP是不确定的, 所以实际操作起来没这么简单. 观察一下每次VPN后分配的IP地址, 可以发现这个IP地址是192.168.14.0 255.255.255.0网段的. 那行, 有规律就可以接着搞了, 总思路是用脚本先动态得到进入VPN后分配的IP, 再用这个IP为参数运行route add命令即可.

    XP自带的cmd太弱, 它可搞不定这事, 我们找个更牛B的增强型cmd来, 它就是---PowerShell. 简单点你可以把它看成是MS移植到windows里来的的linux的shell.

    5. 先从这里下载PowerShell的安装程序, 装上. 注意, 需要"Microsoft .NET Framework"的支持才能安装.

    6. 新建一个vpn.txt文件, 把下面的内容拷进去, 并做一下必要的修改:
    rasdial VPN连接名称 VPN用户名 VPN密码 #本行需要修改成你的内容
    $a = (ipconfig | findstr ".14.").split(".") #findstr ".14."是因为我VPN进入去分配给我的IP是192.168.14.X
    $a = $a[$a.count-1] #得到主机地址
    route add 192.168.201.0 mask 255.255.255.0 192.168.14.$a #调用route add命令为VPN后要访问的网络设置下一跳
    把vpn.txt改名为vpn.ps1. (注意, 是123的1, 不是L)

    7. OK, 搞定! 运行一个这个脚本(MS出于安全的考虑, PowerShell默认情况下是不允许没有数字签名的脚本运行的, 所以要运行我们的脚本需要先在PowerShell中设置一下PowerShell的执行策略:Set-ExecutionPolicy RemoteSigned 不过这样会在一定程度上给系统带来风险, 但总体来说问题不大啦.), 它会自动的连上VPN并设置路由.
    假设vpn.ps1文件c:\下, 进入到PowerShell下执行:
    PS C:\>Set-ExecutionPolicy RemoteSigned
    PS C:\./vpn.ps1

    好了, enjoy!

    PS:
    1. 如果你不想安装PowerShell, 也可以使用VBS来完成同样的工作, 不过使用PowerShell只需要上面的4行代码, 而使用VBS的话, 差不多要50行.
    2. ps1的脚本要在PowerShell下才能运行, 无法直接双击执行, 不过通过修改也可以做到, 请参照双击直接执行PowerShell脚本文件.ps1<转>

    1/12/2008

    linux下对一个目录下的所有特定文件执行特定命令

    使用find命令可以完成这个任务。下面这个例子对当前目录下的所有*.c文件执行indent来整理格式

    find . -name "*.c" -exec indent -orig -nut -l80 -nfca -ncdb -npsl -nbc -di8 {} \;

    在pyttycyg中输入中文

    使用了让putty(puttycyg)一打开就自动连上cygwin中的方法后,你可能会发现不能在puttycyg下输入中文了,按下面的方法设置一下就OK了。

    1、首选保证在cygwin默认的shell下是可以输入和显示中文的。如果你的cygwin默认的shell下就不能输入和显示中文,请参考在Cygwin console输入、显示中文

    2、请使用让putty(puttycyg)一打开就自动连上cygwin中推荐的方法来让puttycyg自动连接cygwin。

    3、修改puttycyg中连接cygwin的配置方案,点下图中的按钮修改字体,使用中文字体,如宋体或新宋体等。

        再如下图所示,在Windows->Translation->Received data assumed to be in which character set下面的下拉列表中选中"Use font encoding"

    4、最后别忘了save一下

    OK,搞定!不足之处是和source insight中一样在删除时删除汉字时要按两次BackSpace,cygwin默认的shell也是这样,好在中文不常用。

    让putty(puttycyg)一打开就自动连上cygwin

    OS还是用的windows,但开发平台是gcc,而且有时也会用到indent、sed这些小工具,所以cygwin是少不了,但cygwin默认的shell实在是太弱了,puttycyg不错,但每次打开puttycyg都要手工去点一下cygwin使用的配置,很麻烦。研究了一下,找到了一劳永逸的方法:

    先创建一个指向puttycyg的快捷方式,假设puttycyg中连接cygwin的配置方案叫connect_cyg,右击puttycyg的快捷方式,选中“属性”,在“属性”中目标一栏的后面加上" @connect_cyg"(不包括引号)。如下图:

    不过要注意,改完后再次打开这个快捷方式的属性页是看不到" @connect_cyg"的,使用这个快捷方式只能进入cygwin了。

    有个更简单的方式是在“属性”中目标一栏的后面加上" -cygterm -"(不包括引号),不过这样不能使用自己的配置方案,也不能输入中文,不建议使用。

    PS:如果在在puttycyg中无法输入中文,请参考在pyttycyg中输入中文