More servicesWindows Live
HomeHotmailSpacesOneCare
 
MSN
Sign in
 
 
Spaces home  /tmpProfileFriendsFilesBlog Tools Explore the Spaces community

Blog

August 03

HOWTO: 通过SSH Tunnel反向连接控制局域网内Window电脑

主控端:一台有公网IP,开放了SSH服务的Linux/Windows主机(Windows安装OpenSSH可参见http://pigtail.net/LRP/printsrv/cygwin-sshd.html)。
被控端:局域网内一台开放了远程桌面管理(3389端口)的Windows主机。
 
被控端的局域网不能在防火墙上开放端口映射,装上Hamachi之类的免费VPN也不能穿墙,只好用反向连接的方法:
1. 被控端Windows下载Tunnelier(http://dl.bitvise.com/Tunnelier-Inst.exe)并安装运行。Putty也可以,但是没有断线重连功能,参见http://www.megasecurity.org/papers/How to Bypass Your Corporate Firewall Using SSH Tunneling.pdf
2. 在Login标签栏中,Host填写主控端的公网IP或域名如xxx.3322.org,Username、Initial method(登录授权方式)根据具体情况填写。

3. 在S2C Fwding标签栏中,Add一个记录,Listen Interface填写0.0.0.0,即本机IP。List. Port填写3389。Destination Host是要将对监听IP的访问转发到的目标主机IP,因为我只想控制本台Windows主机,所以填写localhost。Dest. Port填写3389,即转发到目标Windows主机的3389端口。
勾选上Accept server-side port forwading。


4. 点击Save Profile As,保存配置。
5. 点击Login,输入密码。连接成功的话SSH Tunnel就建立起来了。
6. 在主控端上,用Linux的Terminal Server Client或Windows的远程桌面连接localhost,就可以控制远程的Windows主机了。

** Tunnelier可以设置如果断线自动重连,不过还是不太保险。研究研究Putty的代码,加上用MSN机器人或IRC bot来远程控制的功能,会更靠谱。

July 17

HOWTO: 在Linux下查看glibc的版本

安装了GCC的话,执行:
strings /lib/libc.so.6 | grep 'release version'
否则
strings /lib/libc.so.6 | grep '[0-9]\.[0-9]'
June 05

11111 && 111

hoho,纯属巧合。

June 01

承德坝上/避暑山庄

5.29-6.1公司组织去承德坝上避暑山庄玩,本哈手持老土的Nokia 3230,用自带的可怜的16MB存储卡,拍下了103张照片。一路上左手PDA,右手手机,拍几张就用蓝牙传到Dell X51v里去,着实辛苦。选了几张还算得意的照片传到了Google Picasa上。本哈的flickr相册已经空了好久,现在终于想败个单反了。

May 14

捐款

本想周末到红十字会去捐,本哈多疑,对网上公布的捐款账号不信任。
今天在网上买手机卡和计算机书,看到招商银行的网站上有捐款链接,对招行印象很好,于是点了过去,取消了两个订单,凑了个整儿,把钱全捐了。
May 11

I'm back

JUST REMIND MYSELF NOT TO FORGET TO GET REVENGE ALL THE TIME!

March 07

Rails - Uninitialized Constant Gem::GemRunner Error

I'm using Gem 1.0.1 and Rails 1.2.6 that pre-installed by Mac OS X 10.5.2 (AKA Leopard). When I attempted to run rake rails:freeze:gems, I got this error:

uninitialized constant Gem::GemRunner

Since Gem version 0.9.5, gem_runner is not required automatically for the rake tasks. To solve this problem, just edit framework.rake file(For me, it is located in 'usr/lib/ruby/gems/1.8/gems/rails-1.2.6/lib/tasks'.), and add the required line in the rails:freeze:gems task.

namespace :rails do
  namespace :freeze do
    desc "Lock this application to the current gems (by unpacking them into vendor/rails)"
    task :gems do
      deps = %w(actionpack activerecord actionmailer activesupport activeresource)
      require 'rubygems'
      require 'rubygems/gem_runner' #<---insert here
      Gem.manage_gems

After that, *DO NOT* forget to remove the directory 'rails' in your project_dicectory/vendor/ before you try to freeze the rails again.

rm -rf project_directory/vendor/rails

Even when you finished all of these steps, you may still get error:

Freezing to the gems for Rails 1.2.6
ERROR:  While executing gem ... (Gem::Exception)
    Cannot load gem at [/Library/Ruby/Gems/1.8/cache/activesupport-1.4.4.gem]

This is because your Rails 1.2.6 was shipped with Leopard instead of installing it by gems, so there're no rails files in the cache directory. I didn't want to reinstall or upgrade the Rails, so my solution was use rake rails:freeze:edge like so:

rake rails:freeze:edge TAG=rel_1-2-6

The command will checkout the rails 1.2.6 from the remote repository to your local machine.

March 04

Access Flickr!插件

Firefox在我的Mac里存在的理由一是为了Firebug,二就是用Access Flickr!这个插件逛Flickr。这一段时间小红叉不断,看了看,原来Flickr又上线了新的图片服务器farm4,被墙挡住了。于是试试升级插件,没动静,干脆自己动手改了,顺便把Firefox支持版本号上限改成了Firefox3b4(nightly buid:http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/)^_^

下载

btw, 其它浏览器比如Safari,能够通过Proxy Auto-Config(*.pac文件)来设定代理规则,也可以把Flickr服务器URL的替换规则写在里面,我长长的pac文件在全新安装Leopard时忘了备份T_T懒得重新写了。

February 11

辞旧迎新

想想去年,没什么亮点可以总结,不过好歹浑浑噩噩的一年终于结束了,本哈脑容量有限,索性把零零散散的都写下来。

http://messenger.yahoo.com/windowsvista.php WPF做的Yahoo Messenger,很炫。

  • 算法、图形学...头疼。英语有进步,小语种的计划搁浅中。翻山越岭,继续加油。

8g部分:

  • 今天在VMware Fusion里安装了Windows Vista SP1 RTM英文版,运行速度不错...蓝屏一次。WPF程序包括Yahoo Messenger,组件定位和overlap全都错乱。默认情况下,运行个程序都要确认再确认,Ubuntu没学好,比Leopard差得太多。
  • 每年拜年都被催结婚,不知明年翻这篇blog的哈士奇会是怎样,结婚了?恋爱中?单身游戏人间呢?
  • Linkin Park今年在北京如果有演唱会的话,一定要去。
  • 计划叼到饭盆里的东西:MBP加到4GB内存,24" Ultrasharp的Dell液晶显示器,1TB的Time Capsule,Nokia的E71或者Apple的iPhone
  • 写完了,检查一下......真乱,yuki、吉木老师等肯定不会坚持看到这里。
  • 祝今年本哈和朋友们Good Luck!
January 08

HOWTO: 在Debian stable上安装testing包

最近被问了好几次这个问题,其实Debian官方文档 《APT HOWTO - 软件包管理》中,3.8节“如何保持一个混合系统”就有说明。

以安装支持BT、eDonkey等多种P2P协议的mldonkey-server为例:

  • 创建或修改/etc/apt/apt.conf,添加

#指定默认发行版为stable

APT::Default-Release "stable";

  • 修改/etc/apt/sources.list,添加testing源在stable源的后面,比如:

deb http://ftp.us.debian.org/debian/ etch main contrib
deb-src
http://ftp.us.debian.org/debian/ etch main contrib

deb http://security.debian.org/ etch/updates main contrib
deb-src
http://security.debian.org/ etch/updates main contrib

deb http://ftp.us.debian.org/debian/ testing main contrib
deb-src
http://ftp.us.debian.org/debian/ testing main contrib

deb http://security.debian.org/ testing/updates main contrib
deb-src
http://security.debian.org/ testing/updates main contrib

  • 执行apt-get update
  • 执行apt-get -t testing install mldonkey-server

注意,混合使用stable和testing存在一定风险,可能会将很多包依赖的公共base包版本搞乱,可以编辑/etc/apt/preferences来指定/保持特定软件包的版本。如果要在生产服务器的Debian stable上使用较新版本软件,最好还是到backport(http://backports.org/dokuwiki/doku.php)上找或自己build deb包。如果只是想对stable里的包apply一个patch,可以参考《Debian way to make tiny change to package》一文。

September 24

逗猫记

话说搬到新地盘后,老式防盗门上的纱窗坏了,没当回事,反正本哈不怕老鼠。上周六晚上,听见楼道里一阵猫叫,再过一会儿,一只黄色小猫出现在我桌子旁边,ft,这家伙肯定是顺着防盗门的镂空钻进来的。开始它还害怕,尾巴哆哆嗦嗦。于是,拿来火腿肠、纯净水喂它,嗅嗅不理。可尾巴开始竖起来做小旗状,在屋里巡视。并且一追就或者钻茶几底下、或者倒地撒赖,晓之以理、动之以情无效后,拿个贝壳项链勉强把它骗回楼道里去了。我等会儿出去看它时还在后面跟着我。问了问同楼层的一位阿姨这猫是不是谁家丢的,阿姨说这猫在两层楼道里来回溜达好几天了,不知道是家猫还是野猫。

次日上午,一开门,小黄猫嗖的一下就窜了进来,并且又竖起尾巴巡视,看来是把本哈狗窝当成它的地盘了。心里动摇,该不该收养它。可要不着戴着手套,我早就被它抓伤咬伤好几次了,在小屋里收养这种已经长大的猫,本哈早晚会被打狂犬疫苗和破伤风,再说房东也不会让我养,最后铁了心将它哄走。一时找不到修纱窗的,就拿上个房客留下的废旧电话线,在防盗门的镂空缠了几道。没想到过了一会儿,小黄猫自己打着旗跑回来,试图从电话线间的狭小空隙钻进来。无奈,顾不得一居室不通风,将木门关上。

今儿早上开门正准备上班,这猫又以迅雷不及掩耳盗铃之势钻入房中,一番搏斗才把它抓出去,可还是在床上踩了一圈儿T_T。晚上到家后,本哈盛怒之下接了一大盆水放到防盗门前,这下笨猫不敢进来了,在楼道里边溜达边喵喵叫。最后吵得邻居出来学老虎叫想把它吓走^0^无奈,本哈只得拿了个大塑料袋,戴着手套把猫抓进塑料袋,准备交给物业或放养到海淀公园去。就在一层走出电梯时,猫咪在袋子里开始折腾,于是进电梯的一行人问什么东西,我向大家解释后,一位中年男子说是不是我家跑走的猫啊?是不是黄颜色的?他看了塑料袋里的猫说就是他的。本哈多疑,这么巧的事让我赶上,不会遇到做猫肉串的吧。于是盘问了半天,看小猫温顺的任由他摸(我一碰就抓我),觉得应该是他家的猫才将猫交给它。

回家后,安静的楼道反而让我有几分落寂了,以后有空去猫家看看它。本哈的理想之一是,如果能有钱,就在北京圈块地修个院子,收养流浪的猫猫狗狗等。得到小动物的认同和信任,像朋友一样在人身边转圈,那感觉妙不可言。

August 16

让Mac下的终端和iTerm显示颜色及其问题修正

按照color terminal bash on the Mac (iTerm included)一文,编辑~/.bash_profile,添加如下内容(原文里的’会报错,应该是'):

#Note: The following code was shamelessly copied by me (Yuri Cheung)

#from http://blog.jadecell.org/wp/ 's excellent code , and was modified

#slightly by me to enable it to run on my Macbook Pro. All the bugs belong to me.

#-----copy begin-----

#enables color in the terminal bash shell

export CLICOLOR=1

#sets up the color scheme for list

export LSCOLORS=gxfxcxdxbxegedabagacad

#sets up the prompt color (currently a green similar to linux terminal)

export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$'

#enables color for iTerm

export TERM=xterm-color

#sets up proper alias commands when called

alias ls='ls -G'

alias ll='ls -hl'

alias l='ls -hla'

#-----copy end-----

关掉终端重新打开使之生效,然后会发现,虽然终端五颜六色了,但$PATH却很奇怪的被改变了。Textmate的mate命令、Macports的port命令都找不到了,WEBrick/Mongrel更是或者僵死无法启动(ruby源码编译安装方式),或者require rubygems失败(Macports安装方式)。搜了半天好多老外比我还晕,都把PATH加到~/.bash_profile或~/.bash_login里。最后还是按照以前鼓捣Debian的习惯,修改/etc/profile搞定(我用的是Macports安装的ruby,自己编译安装的可能不在/opt/local/bin下):

#-----copy begin-----

# System-wide .profile for sh(1)

PATH="/opt/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/mysql/bin"

export PATH

JAVA_HOME="/Library/Java/Home"

export JAVA_HOME

if [ "${BASH-no}" != "no" ];

  then [ -r /etc/bashrc ] && . /etc/bashrc

fi

#-----copy end-----

执行. /etc/profile生效。

July 31

卤水鸡翅

味道很好,步骤超简单。

1. 锅里加水、姜片,烧开,鸡翅过水,捞出备用。

2. 将一碗李锦记卤水汁和4碗冷水,放入砂锅,加入适量冰糖和花椒、两个干辣椒、以及上色用的生抽,搅匀后烧开,放入鸡翅,再次烧开,改小火两个小时后出锅。

3. 将去皮的熟鸡蛋放入剩下的卤水汁里,中火煮20分钟,就是传说中的卤鸡蛋了。

July 29

Live Spaces Toolkit POC

上午把C#当Java使,就着MSDN,做了个Live Spaces Export,可以把Live Spaces的日志导出到一个XML文件里。期间还遇到了MSDNCode Samples里的错误,导出的blog的创建日期全都是"0001-1-1 12:00:00 AM",MSDN论坛有几位也遇到了这个问题,但没人回答如何解决。于是自己动手,一路跟踪调试,原来是Live Spaces的MetaWeblogAPI没有完全遵守XML-RPC的规范,dateCreated是"yyyy-MM-ddThh:mm:ssZ"格式而非标准的"yyyyMMddTHH:mm:ss"。解决方法就是在getRecentPosts()和getPost()里,调用this.Invoke以前添加this.NonStandard = XmlRpcNonStandard.AllowNonStandardDateTime;语句就好了。

Google Code申请了个Project - http://code.google.com/p/live-spaces-toolkit/

标题党,POC。在CRL学到的光辉传统,把一切东东都搞成XML,接二连三没完没了东一锤子西一杠子的POC。

C#的好处,类Java的啰嗦语法,编译出来人见人爱的exe文件。大神Anders Hejlsberg不知怎么想的,才做到C# 2.0,语法啰嗦程度就比Java 6有过之无不及,难道他也人在江湖身不由己,被Big Guys逼的上房。

下午例行去家乐福趣宠调戏猫,本哈用那个颜色鲜艳的逗猫球惹得全体猫咪一起暴走,o(∩_∩)o

June 28

HOWTO: Fix the problem of Ridiculous 0.5 on Debian etch

Ridiculous is a simple wrapper for del.icio.us API writing in Ruby, but I met a problem after I installed it by RubyGems on my Debian etch box. When I run the tests.rb, it reported an error:

/usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- ridiculous (LoadError)
from /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'
from tests.rb:3

The problem was caused by putting the ridiculous.rb file in a wrong position, it should be placed in the directory named lib to let the RubyGems find it(or specify the value of require_path in gemspec file if you wanna use the other directory instead of lib). The simplest way to fix this is just run the following instructions:

$ cd /var/lib/gems/1.8/gems/Ridiculous-0.5

$ su root -c "mkdir lib"

$ su root -c "cp ridiculous.rb lib/"

June 01

一年了

今天六一儿童节,在CRL工作整一年。从试用期时就想闪,居然能坚持到现在,看来我的脾气变了不少。

新的Macbook Pro可能会在6月5日发布。买个MBP,把自己reboot,开始图书馆和星巴克的自由生活。

Updated, 居然又加班了。-_-#

等待了两个月后,终于申请到了Demonoid的帐号,不错不错,6月终于有了一个好的开始。

我的flickr的Contacts里又增加了一位新朋友,定居Toronto, Canada的米死米(MSM),他拍的这张相片,让我想起了当初在上海下班时,拎着笔记本,走在南京西路,华灯初上,周围行人熙熙攘攘,心里却涌起身在异乡的强烈孤独感。:P

0J6R4460

May 28

HOWTO: 将^M删掉

在DOS/Windows里,文本文件的换行符为\r\n,而在*nix系统里则为\n,所以DOS/Windows里编辑过的文本文件到了*nix里,每一行都多了个^M。删掉该字符可以在VI里用:%s/\r//g,或者终端下执行dos2unix命令。

May 02

HOWTO: Ubuntu/Debian下使用3322.org动态域名

www.3322.org网站上介绍的是用lynx,而Ubuntu/Debian默认带的是w3m,所以要将命令改成:
w3m -no-cookie -dump http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=your_domain.3322.org
把这条命令放在crontab里15分钟执行一次就能定时更新了。
*/15 * * * * w3m -no-cookie -dump 'http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=your_domain.3322.org'>/dev/null
顺便,使用w3m查询自己公网IP的方法:
w3m -no-cookie -dump www.ip138.com|grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"

April 20

Ubuntu各版本开发代号一览

大家都知道Debian的开发代号来源于电影《玩具总动员》,而脱胎于DebianUbuntu,其开发代号同样很有意思:

Ubuntu 4.10 - Warty Warthog(长疣的疣猪),发布日期:2004年10月20日。

01_Warty_Warthog

Ubuntu 5.04 - Hoary Hedgehog(灰白的刺猬),发布日期:2005年4月8日

02_Hoary_Hedgehog

Ubuntu 5.10 - Breezy Badger(活泼的獾),发布日期:2005年10月13日

03_Breezy_Badger

Ubuntu 6.06 - Dapper Drake(整洁的公鸭),发布日期:2006年6月1日

04_Dapper_Drake

Ubuntu 6.10 - Edgy Eft(急躁的水蜥),发布日期:2006年10月6日

05_Edgy_Eft

Ubuntu 7.04 - Feisty Fawn(坏脾气的小鹿),发布日期:2007年4月19日

06_Feisty_Fawn

Ubuntu 7.10 - Gutsy Gibbon(勇敢的长臂猿),发布日期:2007年10月18日

07_Gutsy_Gibbon

-----------------------------------以下为yy-----------------------------------

Ubuntu 8.06 - Haughty Husky(骄傲的哈士奇),发布日期:2008年6月7日

08_Complacent_Husky

-----------------------------------Updated-----------------------------------

Ubuntu 8.06 - Hardy Heron(勇敢的苍鹭),发布日期:2008年4月24日

10_Hardy_Heron.jpg