Month: September 2011

让iOS使用SSH Tunnel

为了突破局域网的限制,目前主流的方法还是SSH和VPN。
如果使用VPN的话,可以很方便的在自己的iPhone/iTouch/iPad设备上连VPN,上外网。
肯定还有不少朋友是在用SSH的。在自己的机器上一般使用以下命令来连接ssh,并且绑定到127.0.0.1:8080。

$ssh -D 8080 username@sshserver.com

之后,我们可以在设置proxy的地方指定proxy为127.0.0.1:8080。

但是在iOS上,如果不越狱的话是不能用SSH的。这样,我们必须让ssh绑定到外部IP,并且让iOS知道这个proxy。

假设本机的IP为192.168.1.2

步骤如下:

1. 不能再用上面这个命令来使用SSH了,命令如下

$ssh -g -D 192.168.1.2:8080 username@sshserver.com

这让SSH把连接转发到192.168.1.2:8080这个地址,-g让外部机器可以连到这个地址

2. 我们需要一个PAC文件。这是一个指定如何配置proxy的文件。
新建文件proxy.pac
内容如下

function FindProxyForURL(url, host)
{
    return "SOCKS 192.168.1.2:8080";
}

3. 我们还需要让本机之外的其他机器可以访问到这个pac文件。比如,我们这里用HTTP来做。
Mac本身就支持Web Sharing,其实是一个Apache的Server。
在”System Preferences”->“Sharing”里,给Web Sharing打上勾.


把上面的proxy.pac文件拷贝到~/Sites/下面,这时,我们可以在浏览器里试试这个地址
http://192.168.1.2/~username/proxy.pac
看看是不是能够看到文件内容?

在lion下,可能会出现没办法勾选Web Sharing的情况。把httpd.conf用原始版本覆盖即可

$sudo cp /etc/apache2/original/httpd.conf /etc/apache2/httpd.conf

4.万事俱备,现在只要在iOS上设置就行了。
通过”Settings”->”WLAN Networks”找到现在连上的Wifi,查看details(蓝色箭头)
在最下面有设置http proxy的地方。
选择”Auto”, 填入 http://192.168.1.2/~username/proxy.pac

5.搞定!

试着上上外网看吧 :]

参考:

[cocoa demo]从图片中选取Frame的小工具

和设计相比,开发者的好处是遇到不好用的App就可以牛B哄哄的说:
“这个不给力啊,等哪天有空的时候自己做一个吧”。
等到真正要做的时候就愣了,满脑子的按钮不知道怎么摆….

在学校的时候,做的东西对UI的要求很低,不求美观,只要基本功能有就行了。
更不要谈什么用户体验,是不是User-Friendly之类的了。
工作的时候就大不一样了,做prototype的时候界面可能很粗糙。
但是等到Designer的东西(一般管这个叫mockup)出来,感觉就完全不一样了。
作为码农,常常觉得自己没有审美观….

我认为完全重现mockup的效果是很重要的,尤其是一些细节。
功能上开发者可以发挥,但是在自己不擅长的领域还是不要胡闹了。

好了,扯远了….

其实只是因为最近想学mac上的开发,然后因为有以上需求,
所以做了一个非常简单的工具作为练习。
真的很简单….不过如果你恰好有同样的需求,我觉得它还是有帮助的。
至少作为一个cocoa入门的demo,还是挺好的。

GetFrame

就是从mockup里框取一块区域,得到经过转换坐标的Frame。
左上的Button是用来打开图片文件的,左下的是用来切换显示的。

代码在Github上: GetFrame
App下载链接: GetFrame.zip

mac下的图标格式是icns
用这个网站转换图标比较方便,推荐一下: http://iconverticons.com/