2009-11-27 22:51:47
/Microsoft/Gdiplus
The online MSDN document is here:
http://msdn.microsoft.com/en-us/library/ms536298(VS.85).aspx
简而言之,对Bitmap的操作是通过BitmapData实现的。
- 设置模式为ImageLockModeRead,调用LockBits方法,而后可通过BitmapData:Scan0读取像素信息;
- 设置模式为ImageLockModeWrite,调用LockBits方法,而后可通过BitmapData:Scan0写入像素信息。但此时只是写入缓存,在调用UnlockBits方法后才正式写入Bitmap;
- 设置模式为ImageLockModeWrite|ImageLockModeUserInputBuf,预先设置好一个BitmapData,保证Scan0指向要写入Bitmap的信息的缓存。在调用LockBits和UnlockBits方法后这些信息写入Bitmap。
posted by Cyker Way
2009-11-26 19:20:10
/Microsoft/Gdiplus
#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
INT main()
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Image* image = new Image(L”FakePhoto.jpg”);
printf(“The width of the image is %u.\n”, image->GetWidth());
printf(“The height of the image is %u.\n”, image->GetHeight());
delete image;
GdiplusShutdown(gdiplusToken);
return 0;
}
posted by Cyker Way
2009-11-21 17:28:12
/network/HTTP
近日批量下载的时候不幸遇到了反盗链,最可恨的是用了改Referer的方法之后对方呈递给一些带有鄙视性的东西,忍无可忍。
现下了Firefox,装LiveHTTPHeaders,把Header里各个元素试了一遍,发现对面是用User-Agent判的,直接秒杀到被封IP,哈哈。
具体方法是对JAVA的HttpURLConnection连接前设置属性:
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5");
这样对面会以为你是Windows下的Mozilla Firefox,哪怕你的HTTP请求都是用JAVA跑的。
posted by Cyker Way
2009-11-04 00:30:26
/others
引用搜狗官方说明:
云输入法是依托于云计算技术的输入法,其与一般输入法最明显的区别在于,没有本地输入法文件,完全靠服务器支持。
搜狗云输入法是基于JavaScript技术,利用Ajax通信原理,采用B/S架构。具有免安装,跨平台的优点,兼容Windows,Linux,Mac等各个操作系统,兼容各个主流浏览器(IE,搜狗浏览器,Firefox )。实现了随时随地享受搜狗输入法的流畅输入体验。
——
亲自试了一下,发现有的地方还不是很完善,比如写这篇BLOG标题的时候可以用,写正文的时候就不起作用了。不过总的来说还是很爽的~
网址:http://pinyin.sogou.com/cloud/
posted by Cyker Way
2009-10-24 01:41:52
/others
posted by Cyker Way
2009-10-22 17:21:48
/others
目前的网站,比如Google,基本都是单用户模式,即一个用户名对应一个服务集合。
这样做的一个弊端在于,无法实现对权限的精细控制。没有密码就什么也看不到,有了密码就什么都能看到。如果用户需要在不同安全性的设备上操作是非常不方便的。
比如我有一个主邮箱,叫main-gmail.com。对于Google这种一体化整合得非常好的服务来说,这意味着这个账号可以访问Google的各种服务,例如Reader,Calendar,Docs,Youtube等等。并且你可以选择从电脑上登录,MID上登录,或者手机上登录。单从娱乐和生活方式的角度来说,这样确实很方便。
然而,当安全性问题介入时,这就成了一个问题。比如main-gmail.com这个邮箱里可能存了你银行账户的密码或者其他一些你不想给别人看的东西。所以你不愿意把这个主邮箱的密码告诉别人。但是同时这个主邮箱的密码也是一系列Google服务的密码。所以你不得不冒着泄露重要信息的风险哪怕去Reader里看一条新闻。另一方面,你可能需要在移动设备上访问这些服务。为了方便,有大量第三方的应用可以使用。但是这些第三方应用的来源并非都是可靠的。比如你用一个第三方的RSS阅读器访问Google Reader的feed,这个时候它会索要你的账户密码。然而你不能保证这个阅读器没有私下留存一份以作他用。如果这个第三方应用碰巧是邪恶的,那么很可能你的银行账户密码就泄露了。
另一方面,你平时可能只需要阅读权限而不需要写入权限。比如你可能只想知道新邮件的信息而不是必须回复。这个时候就没有必要获得写权限。但是目前显然无法做到,这又是一个不必要的安全性降级。可能的后果就是有人用你的邮箱发了不适当的邮件,如果他只有读权限的话就不会有这个问题。
这就是方便性和安全性之间的一个trade-off。遗憾的是,目前为止没看到什么好的解决方案。
其实一个最简单的办法就是多用户设置,分为管理员和普通用户。管理员身份有所有权限,普通用户身份则只能使用管理员指定的服务。如此你便可以在安全的环境下使用管理员身份登录,管理重要信息;在不安全的移动设备第三方应用等使用普通用户身份登录,满足日常需求。当然,这需要各项服务的权限可以控制。
这样我们可以用静态的方法把一些重要的服务和不重要的服务区分开来。但是还有一个问题,就是重要与不重要并非能用服务区分开来。也许你认为博客是比较重要的,阅读器是不重要的,但是对于邮箱呢?可能既有重要的信息,也有不重要的信息,怎么管理权限?其实这个问题也好解决。Gmail的转发控制里的过滤器功能照搬过来就可以了,只不过这次不是转发,而是访问权限控制。于是用动态识别的方法解决了这个问题。
总之这些方面可以很好地从操作系统上得到借鉴。想想你是怎么管理本地文件的,你一样可以这样管理网络服务。只是我们的观念需要有一个转变:目前的一个账号并非是对应一个最终用户,而是一个服务集合,类比于一台具有各种资源的计算机。它具有多个用户名和密码,其中管理员可以定制这个服务集合和用户权限。普通用户可以根据管理员的定制进行相应的访问——这里的多用户可以是你和不同的人,也可以是你在不同设备上的身份。如果需要,其实我们还可以定制用户组,实现更精细方便的控制。
Update. 貌似OAuth就是为了解决这个需要诞生的。和我的想法不完全相同,但是很类似。OAuth不需要用户名和口令,而是采用授予token的方式。而token相当于用户名,client的密钥相当于口令,到底还是一回事。
posted by Cyker Way
2009-10-20 20:12:12
/TCS/automata
posted by Cyker Way
2009-10-20 12:52:52
/Google/Google Talk
默认情况下,一个桌面只能打开一个Google Talk客户端,若要同时打开多个客户端,可以先建立一个快捷方式,在Shortcut的Target一栏最后加上/nomutex就行了。
posted by Cyker Way
2009-10-19 14:59:07
/Google/Google Maps
posted by Cyker Way