存档

文章标签 ‘网络’

代理网络使用远程桌面

2014年10月12日 没有评论

衣服自己洗在阿里云弄了一个主机, 放随便搞的一些东西。

经过一段时间的观察,发现经常有人在扫描远程桌面和SQL Server,尝试登录。阿里云的云盾似乎没有很好的过滤掉。看着每天的攻击很是担心,虽然服务器上几乎没有跑任何程序,我承认我的服务器就是个装饰。

为了安全起见,同时又可以方便使用,衣服自己洗修改了远程桌面和SQL Server的默认端口,把3389 修改为8888,过了几天再去检查服务器,发现攻击记录就少了很多了。

有一天在单位有事情需要远程访问服务器,远程桌面打开失败,突然想起来单位是使用的代理上网,服务器远程桌面使用的8888端口被代理给屏蔽了,但是系统的远程桌面又不支持代理设置,那一刻很是抓狂。

老实说,公司的代理网络有时候很不够好。

事情当时就这么过去了,可是衣服自己洗很是不甘心。凭什么呀?于是在网络上各种搜索,想找到解决方案。

要求是这样的:打开生效退出后也不对系统造成影响,功能尽量简单,满足要求即可。

过了好几个月后,终于找到了方法,就是 CCProxy + Proxifier。这2个软件网上都有单独的介绍,我也分别尝试了,都失败了,后来看到一个帖子后才有的思路,重新尝试,果然有效果。

我猜测原理是酱紫的,CCProxy提供Socket到http的转换,而Proxifier则是为不支持代理的软件提供代理的支持。网上很多失败的情况,都是单独使用了其中的一个。

首先安装2个软件,软件的安装没有先后顺序。接下来来配置CCProxy,在设置界面里勾选Socket/MMS,记住端口号 1080,下方会显示局域网地址192.168.30.1,也需要记下来后面需要使用的。然后再点击高级,切换到二级代理选项卡,选择启用二级代理,并输入办公网络上网代理的地址。然后确定即可。

对于Proxifier,先选择菜单栏的配置文件/代理服务器,然后点击添加,输入上面CCProxy里局域网地址192.168.30.1,和端口号1080。当然各位同学的IP地址可能不是这个,只要保证2个软件的IP是一样的即可。勾选Socket 5 协议,点击确定。

还差一步,选择菜单栏的配置文件/代理规则,然后点击添加,在新窗口里输入你想代理的程序,我们是要使用远程桌面,所以这里就属于远程桌面程序名称mstsc.exe,下方的动作就选择刚才设置的代理。效果如下图所示:

proxifier

点击确定,并勾选生效。界面看起来就应该是下面的样子:

mstsc_rule

到这里就配置完毕,大家可以放心使用拉。允许远程桌面,真的是可以访问了,反正衣服自己洗感觉很爽。

上面最后一步是设置需要代理访问的程序,不仅仅是远程桌面,衣服自己洗还设置了MongoVUE也访问代理,这样做是为了尽量减少干扰,毕竟办公网络其它程序例如QQ、浏览器还是可以上网的,所以这个步骤大家灵活处理好了。

win8.1清理无线网络连接信息

2014年3月15日 没有评论

从XP开始,一直到win8,都可以对本机曾经连接过的无线网络信息进行管理。以win8为例,只需要在网络连接上面点击右键,选择“忘记网络”即可。

但是win8.1居然没有,我想删除掉曾经使用过的无线网络连接,洁癖嘛你懂的。找了很久都没有找到,一个偶然的机会让我给发现了。

打开命令行,输入netsh wlan show profile,然后会显示所有的曾经连接网络连接,当然也包括现在正在使用的。一行一条记录,并且会把网络连接的名称显示出来。

接着再输入netsh wlan delete profile name=”网络连接” 回车即可。英文双引号是必须的。要知道解决了这个问题,心里很是舒坦。

分类: 日常 标签: , ,

MMHot 代码编写过程及心得

2012年10月17日 没有评论

把先前买的那本 ios 变成的书给撕了,每天在地铁上看一点点,又大致看了几个别人的代码,打算自己写一个应用出来练习下,经过一个星期的琢磨,应用 MMHot 代码部分终于完工了。本来打算花 $99 去买一个开发者帐号的,但是昨天晚上看了下水果的应用商店规范,发现 MMHot 应该不会被审核通过的,于是放弃了。$99 对我来说真心贵,不过这个不妨碍今天和大家一起分享这个应用编写的心得。

简单地说,MMHot 是一个浏览美女图片的 ios 应用。

项目使用了 2 个开源的库:EGOImage 和 ASIHttp,所以我觉得这个作为入口比较适合新手来初步了解和学习 objective-c ,既可以完成任务,又在学习的初期降低了门槛。ASIHttp  封装了网络应用中的大部分功能,可以满足常见的 get/post 例如文件下载、上传。EGOImageView 继承了 UIImageView,支持图片的异步下载。

作业的目标:1、大致了解 EGOImage 和 ASIHttp 的简单使用方法。2、代码添加视图。3、学习使用调试,了解 IDE 的功能。

应用是基于 Xcode 4.5.1 和 iOS 6 。新建项目时,我没有选择 Core Data 和 Automatic Reference Counting 。因为我看的代码都是基于用户自己手动管理内存的方式,ARC 跳跃太大,对我不合适。另外的原因是开源的库当前貌似还不支持ARC。

新建项目后,会自动包含 appDelegate 文件。这块需要注意的是 -(void)application:(UIApplication *) application didFinishLaunchingWithOptions:(NSDictionary *) launchOptions 方法。这个方法里用来设置需要第一个显示的视图。我们在很多应用中都看到当应用第一次运行的时候,会给出引导界面让用户了解大致的流程,第二次运行时就不显示引导界面了,为了实现这样的效果,也可以在这个方法里去实现。

在该方法里,包含下面的语句:

self.window=[[[UIWindow alloc] initWithFram:[[UIScreen mainScreen] bounds]] autorelease];
self.viewController=[[[MainViewController alloc] initWithNibName:@”MainViewController” bundle:nil] autorelease];
self.window.rootViewController=self.viewController;
[self.window makeKeyAndVisible];
return YES;
第一行代码是设置界面的window,由 IDE 自动生成,第二行代码是设置程序显示的第一个界面 MainViewController.xib ,第三回是设置窗体的根视图,对于 ios6 系统,要求每个窗体都必须有根视图。由旧系统转换的时候,如果没有添加的话,IDE 也会给出一个警告。第四、五也是自动生成的,很明了。

接下来,我们转到 MainViewController.h 文件。由于我们使用了前面说的2个开源库,所以需要引用进来。另外,由于应用中使用了手势和图片回调,所以还需要添加对应的 delegate:EGOImageViewDelegate 、UIGestureRecognizerDelegate 。该类有 3个变量和一个属性。

EGOImageView *imageView;
ASIHttpRequest *req;
NSMutableArray *list

@property (nonatomic,retain) EGOImageView *imageView;

然后就是具体的实现了。我们在 viewDidLoad 添加初始化代码,图片浏览嘛,当然要把顶部的任务栏给隐藏掉,所以我首先来隐藏任务栏:[[UIApplication sharedApplication] setStatusBarHidden:YES];

UIImage *image=[UIImage imageNamed:@”1.jpg”];
imageView=[[EGOImageView alloc]initWithImage:image];
[imageView setFrame:CGRectMake(0,0,[UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height)];
imageView.delegate=self;
[self.view.assSubview:imageView];

//添加手势识别
UISwipGestureRecognizer *swipLeft=[[UISwipGestureRecognizer alloc] initWithtarget:self action:@selector(handleSwipGesture:)];
swipLeft.direction=UISwipGuestureRecognizerDirectionLeft;
[self.view addGuestureRecognizer:swipLeft]; //为了防止图片旋转后,手势也跟随变化,所以把手势添加到根视图中,而非 imageView
[swipLeft release];

//发送请求
req=[ASIHttpRequest requestWithURL:[NSURL URLWithString:@”http://www.withonly.com”]];
[req setDelegate:self];
[req setDidFinishSelector:@selector(ASIHttpRequestFinished:)];
[req setDidFailSelector:@selector(ASIHtppRequestFailed:)];
[req startAsynchronous];

视图在显示的时候,首先显示一个本地图片文件 1.jpg ,这样的话可以避免网络延迟带来的视觉等待,然后将视图添加到窗体视图中。手势识别没有什么好说的,都一样。最后是发送请求,请求成功时执行ASIHttpRequestFinished,失败时执行ASIHtppRequestFailed。需要提醒大家的是第 4 行,我3天晚上没有睡好觉就是因为少了这一行代码。

-(void) ASIHttpRequestFinished:(ASIHttpRequest *) request{
NSString *info=[request responseString];
NSMutableString *str=[[NSMutalbeString stringWithString:info];
NSError *error;
NSRegularExpression *regex=[NSRegularExpression regularExpressionWithPattern:@”img src=\”(.*?)\”” options:NSRegularExpressionCaseInsensitive| NSRegularExpressionDotMatchesLineSeparators error:&error];
NSArray *matches=[regex matchesInString:str options:NSMatchingCompleted range:NSMakeRange(0,[str length])];
if([matches count]>0){
[list removeAllObjects];
}

for(NSTextCheckingResult *match in matches){
NSRange range=[match rangeAtIndex:1];
[list addObject:[str substringWithRange:range]];
}
if([list count]>0){
[imageView setImageURL:[NSURL URLWithString:[list objectAtIndex:0]]];
[self ResizeImage]; //图片缩放
}

}

当请求成功后,通过正则提取返回结果里的图片 url 地址,并且保存在 list 变量里。最开始的时候是打算使用xml 来解析的。可是网上搜索了下2种关于xml解析的思路,和 java 是一个味道,擦的,难道没有net 风格的么。于是换做正则来提取。解析完了后,如果 list 里有记录,则显示第一条记录里放的图片。其它的方法都差不多了,没有啥好说的。

在文章的最后,我说一说那个让我好几天没有睡好觉的问题。因为在加载图片后,还需要对图片进行缩放。但是由于图片的下载过程是一个异步的操作,最开始的缩放代码里总是会崩溃,因为那时图片都没有下载回来。我很期待有一个类似图片加载完的回调方法。

后来,查看了EGOImageView 的源文件,发现里面有 imageViewLoadedImage 方法,然后添加到文件里,发现没有效果,后来又发现了imageButtonLoadedImage ,添加进去还是没有效果。很崩溃,于是在网上看到有用 NSNotification  来解决的。赶紧添加进去,还是不行。弄了几个晚上都没有有效的方法。

最后才发现,其实 EGOImageView 已经内部实现了 NSNotification 的相关方法了,只需要在代码里添加 imageView.delegate=self ,然后在 imageViewLoadedImage 实现回调例如图片的缩放就可以了。

分类: iOS, 日常 标签: , , , ,