2007年12月 存档

[hot!]geeky程度测试题 - 2007版

2007年12月31日,星期一

Infoworld.com出了一到Test Your Geek IQ - 2007 IQ Test,偶把转过来跟大家分享,老外也不乏BT精神啊 ^_^

Sure, you may have scored more than 150 on the standardized IQ test, you may party hearty with Mensa Mommas -- but what's that actually worth in the real world? Diddly. If you truly want to know how smart you are when it counts, then InfoWorld's Geek IQ test is the puzzler for you. Answer the 20 questions below, and we'll add up your score and let you know how you measure up. Even a suit can follow those directions. And remember: Googling every question will not give you an accurate score. Got a beef or want to brag? Take it out on the comments section of the Answer Key page at the end of the test.

-- Oliver Rist

1. What's the first universal question of telephone help desk support?

a. Is the power cable plugged in?
b. Have you tried turning it on and off again?
c. Has it burst into flames?
d. All of the above

2. What's the quickest way to derail a small IT project?

a. Involve a project manager
b. Involve a certified project manager
c. Allow frequent progress meetings with creative senior management types
d. b and c

3. What celebrity on this list co-founded a still-functioning Internet business?

a. William Shatner
b. Al Gore
c. Alyssa Milano
d. All of the above

4. How many sockets/ports does the TCP/IP protocol support in total?

a. 64,256
b. 65,764
c. 68,512
d. 65,536

5. What's the first thing a SOX auditor will ask for?

a. Coffee
b. Audit logs and policy documentation
c. An envelope full of cash
d. All of the above

6. Under linux, which command will kill all processes whose process name contains the string "killme"?

a. ps auxww | grep killme | awk '{print$2}' | xargs kill
b. ps auxww | grep killme | awk {'print$2'} | xargs kill
c. ps auffq | grep killme | awk '{print$1}' | xargs kill
d. ps auxwf | grep -v killme | awk '{print$2}' | xargs kill

7. Why do so many Linux geeks prefer to operate the system in console mode?

a. It's faster -- people who get little sex have faster fingers
b. It's faster -- it's Where we learned so we know how to get everything done
c. It's more impressive to the opposite sex
d. It's more impressive to managers, thus providing job security

8. Why is Cisco no longer the undisputed leader in the switch and network infrastructure categories?

a. They blew off getting their 10-gig switches tested by InfoWorld so how bright can they be?
b. IOS will never be as cool as embedded Linux switch OSes
c. They cost too much
d. Their boxes don't come in pretty colors

9. Why has Linux still not become a dominant factor on the business desktop?

a. Because the real power on the corporate desktop is Microsoft Office
b. It costs too much
c. Penguins frighten administrative assistants
d. Because Microsoft is holding 235 open source patent violations and we're all desperately scared

10. The Programmer's Math Question: Given two water faucets, one hot and one cold, and one bucket. The hot water fills the empty bucket in eight minutes. The cold water fills the bucket in seven minutes. Then I make a hole in the bucket such that the full bucket drains in four minutes. Now take the empty bucket, with the hole, and place under both faucets together. Turn on the hot and cold water at the same time. How long does it take to fill the bucket halfway?

a. It'll never fill up. The water is draining too fast
b. 41.667 minutes
c. 28 minutes
d. 4 minutes

11. The Network Administrator's Math Question: What is the sum of the number of bits in the netmask of half a Class B network plus the length in bits of a TCP header, divided by the speed in megabits per second of the first Token Ring networks?

a. 9.75
b. 34.22
c. 8
d. 192.6

12. The Suit-Clad Supervisor's Math Question: If you have 10 IT staffers doing an adequate job and you subtract eight IT staffers you have:

a. Two IT staffers suffering, but who cares about that?
b. Three IT staffers … wait, what was the question?
c. Better support service due to more privacy and desk space in the IT department's offices
d. Salary bonus due to cost-saving genius

13. Define SLI, and name the company that invented it and the year it was introduced.

a. Scan-Line Interconnect, 3dfx, 1998
b. Super-Linear Interconnect, NVIDIA, 2004
c. Screen-Linear Interconnect, ATI, 2003
d. Split Leg Interviewing, Paris Hilton Inc., 2006

14. What's the best description of the difference between a Layer 3 switch and a router?

a. Nothing
b. Switches and routers perform completely separate functions
c. Layer 3 switches are bridges with multiple ports that route packets based on routing table destinations stored in fast memory caches that also contain source-destination and next-hop entries. This makes Layer 3 switches much faster than routers at routing. However, routers have more advanced routing abilities making them more appropriate for external routing chores.
d. Routers are bridges with multiple ports that route packets based on routing table destinations stored in fast memory caches that also contain source-destination and next-hop entries. This makes routers much faster than Layer 3 switches at routing. However, Layer 3 switches have more advanced routing abilities making them more appropriate for internal routing chores.

15. How do you combat process starvation?

a. Hot dogs and beer; you can combat anything with hot dogs and beer
b. Define a process request delimiter within the sub-process \\root/bin/BS
c. Add an aging factor to the priority of each process request in the scheduling system
d. Food stamps

16. Is EVDO based on CDMA or GSM; what's the acronym stand for (best definition); and what's its maximum possible speed?

a. CDMA; Enhanced Virtual Data Output, 1.5Mbps
b. GSM; EVolution DOwnstream; 768Kbps
c. CDMA; EVolution Data-Only; 2.4Mbps
d. GSM; Extra Virgin Ducati Owner; 145mph

17. How many standard RAID levels are there?

a. 4
b. 5
c. 7
d. Only digital Sherpa's really know

18. Server-side, Java servlets have done a lot for Web server and application server functionality. However, which of the following processing methods are they not designed to replace?

a. Active Server Pages
b. CGI scripts
c. Various C/C++ proprietary plug-ins
d. Cookies

19. What's a "beamer"?

a. That silver 535 driven by the sales manager who always calls you "Sport"
b. A basic collaboration page template within SharePoint Designer 2007
c. A window in StarOffice that showed the contents of elements selected in Explorer
d. What the crew called it when Scotty got lucky in the transporter room

20. What exactly is a deflector shield?

a. An energy shield that surrounds space-going vessels to protect them From physical damage
b. Ceramic tiles used to shield the space shuttle From the heat of re-entry
c. The language and mannerisms used by most male computer professionals to keep females at bay
d. A charged plasma field under development that will protect space travelers From space-going health risks

我得到的分数是:

Congrats on finishing the test. Your score: 55

There is brain wave activity, but you might want to consider putting your affairs in order and pulling the plugM

看来偶不够geeky ^_^

做完了可以看看答案

那啥,CCTV5改名为CCTV250事件之youtube经典语录

2007年12月29日,星期六

据说CCTV5要改名为CCTV250了,但是出了水产事件[youtube视频]我才晓得这个事情的

摘录一点精辟语录,娱乐娱乐

  • 女人!女人!女人!xx薇立功了!不要给张斌任何的机会。伟大的中国的女人!他继承了中国妇女的光荣的传统。苗翠花、樊梨花、吴 琼花在这一刻灵魂附体,xx薇一个人她代表了中国妇女悠久的历史和传统,在这一刻她不是一个人在战斗,她不是一个人!
  • 胡紫薇太牛了,这种情况下依旧字正腔圆,神色不变,不愧是主播出身
  • 很高兴看到皇家电视台有这种人性坦露的事件发生
  • 我知道她为什么给开除的,就是因为那纸包子新闻!!
  • Could someone provide some commmentary in English as to what is going on here.
  • What is she talking about? conscience
  • 应该尽快搞个英文字幕出来
  • 南京大屠宰。。。。。。。。。今天我听到的最冷的冷笑话
  • 已经有"外国友人"用google翻译出现啦!
  • whatever

果然是年终八卦猛料啊~~~哇咔咔CCTV 250

豆瓣开放API了

2007年12月28日,星期五

引用豆瓣评论里的一句话:在中国开放API需要很大的勇气!

豆瓣API是豆瓣为第三方开发人员提供的编程接口。利用豆瓣API,你可以在你的网站或程序中使用豆瓣的数据和功能。 目前的豆瓣API支持的功能包括:

搜索并查看书籍、电影、音乐信息
搜索并查看用户信息
查看用户收藏
查看评论

欢迎使用豆瓣 API 进行应用开发,请先阅读API 使用指南以及参考手册

测试期间,API 可能进行调整,请关注 豆瓣 API 小组的讨论。。

用到了gdata,同时有方便的json输出,非常爽!

PLINK+CCProxy搭建Windows下SSH代理服务器翻人比黄花瘦

2007年12月26日,星期三

普及翻知识是一种光荣!

手动在Windows下翻人比黄花瘦墙个人推荐用PLINK,教程在这里。如果手里的SSH帐号想和朋友们分享,那么就得搭建一个代理服务器了,很简单:

首先下载Windows下的SSH客户端:PLINK.exe,

PLINK.exe是PuTTY的组件之一,这里提供一个免安装、不会改写注册表的PuTTY Portable版本下载,http://socialistsushi.com/portaputty,使用的时候把PLINK.exe单独解压出来即可。

然后新建一个快捷方式,指向PLINK.EXE -C -D 127.0.0.1:7777 -N -pw SSH密码 SSH用户名@SSH的IP地址
把快捷方式的运行方式改成:最小化,好了,双击快捷方式启动PLINK,这个时候你的电脑本地回环(Loopback)已经建立起了一个Socks5代理,地址是 127.0.0.1,端口是7777,当然我们最终目的是和朋友分享免费的SSH翻人比黄花瘦墙代理,所以127.0.0.1的IP是不能直接给朋友使用的,所以我们用CCProxy建立个标准HTTP代理服务器。

17.jpg

开启CCProxy,点击 设置 -> 高级 > 二级代理,然后设置成刚才PLINK建立的本地代理地址。

接下来是标准CCProxy代理服务器设置了,改HTTP代理端口,取消“禁止局域网以外用户访问”,添加一个用户等等,就不具体说啦,一看就懂的。
3.jpg

21.jpg

4.jpg

Linux搭建类似的服务器可以参考偶的上一篇blog:ssh+privoxy组建socks转http代理服务器,补充下我找了一个比Privoxy更好的代理服务器:TinyProxy,不过TinyProxy需要patch之后才支持Socks的二级代理服务器,但是我patch了TinyProxy源码之后,不能成功编译!这个问题正在研究中~~~

One function a day

2007年12月25日,星期二

一个关于php的“每日一个函数”网站,很好很强大

今天是圣诞节,今天的函数是:
is_chistmas()

tuesday

网站是:http://funcaday.com/

上氵每交——大内网泄露出来的"绝×密"文件

2007年12月24日,星期一

还是贴成图片好

1.bmp

取消 web.config 的继承

2007年12月24日,星期一

以往栋力无限的首页是 http://www.dormforce.net/homepage,一直很奇怪为什么不直接弄成 http://www.dormforce.net。今天才知道是根路径的 web.config “污染”了下级asp.net程序,所以跳转到一个单独的目录。

网上搜索了下,可以取消web.config的集成,方法是在编辑最顶级web.config的XML文件,把</configSections>后面的所有XML元素用
<location path="." allowOverride="false" inheritInChildApplications="false">

</location>
括起来!

注意,asp.net 1.1和asp.net 2.0不兼容!所以如果在全站asp.net 2.0跑一个 asp.net 1.1的二级路径程序,是不可能配置成功的!微软说这不是一个bug,这是一种“设计”,哈哈~~~

[地球上最全面]Google Toolbar、Update、Google Gear接口

2007年12月23日,星期日


UserBrokerLib; // UserBroker library

Class UserBroker; // UserBroker coclass object
GUID={44295CB8-D71B-11DA-8750-001185653D78};
function RegCreateOrOpenKey(key_root:ULONG_PTR; key_path:BSTR; key_access:UI4; allow_create:I4; process_id:UI4; out key_handle:^ULONG_PTR): HResult;
function RegDeleteKey(key_root:ULONG_PTR; key_path:BSTR): HResult;
function CreatePath(path:BSTR): HResult;
function CreateFile(file_name:BSTR; desired_access:UI4; share_mode:UI4; creation_disposition:UI4; flags_attributes:UI4; process_id:UI4; out file_handle:^ULONG_PTR): HResult;
function DeleteFile(file_name:BSTR; even_if_in_use:I4): HResult;
function RemoveDirectory(path:BSTR): HResult;
function MoveFileEx(file_name:BSTR; new_name:BSTR; flags:UI4): HResult;
function CopyFile(file_name:BSTR; new_name:BSTR; fail_if_exists:I4): HResult;
function ApplyPatch(patch:BSTR; process_id:UI4; out thread_handle:^ULONG_PTR): HResult;
function FixMenus: HResult;
function SetDefaultSearchToGoogle: HResult;
function Uninstall: HResult;
function CleanVirtualizedPaths: HResult;
function EnableGoogleToolbar: HResult;
function VerifyGoogleSignature(key_res_id:I4; file_path:BSTR): HResult;
function ExecuteGoogleSignedExeElevated(exe:BSTR; args:BSTR; process_id:UI4; out process_handle:^ULONG_PTR): HResult;
function EnsureBrandingParameters: HResult;
function IsUpdaterServiceAvailable: HResult;

Interface IUserBroker; // IUserBroker interface
GUID={45295CB8-D71B-11DA-8750-001185653D78};
function RegCreateOrOpenKey(key_root:ULONG_PTR; key_path:BSTR; key_access:UI4; allow_create:I4; process_id:UI4; out key_handle:^ULONG_PTR): HResult;
function RegDeleteKey(key_root:ULONG_PTR; key_path:BSTR): HResult;
function CreatePath(path:BSTR): HResult;
function CreateFile(file_name:BSTR; desired_access:UI4; share_mode:UI4; creation_disposition:UI4; flags_attributes:UI4; process_id:UI4; out file_handle:^ULONG_PTR): HResult;
function DeleteFile(file_name:BSTR; even_if_in_use:I4): HResult;
function RemoveDirectory(path:BSTR): HResult;
function MoveFileEx(file_name:BSTR; new_name:BSTR; flags:UI4): HResult;
function CopyFile(file_name:BSTR; new_name:BSTR; fail_if_exists:I4): HResult;
function ApplyPatch(patch:BSTR; process_id:UI4; out thread_handle:^ULONG_PTR): HResult;
function FixMenus: HResult;
function SetDefaultSearchToGoogle: HResult;
function Uninstall: HResult;
function CleanVirtualizedPaths: HResult;
function EnableGoogleToolbar: HResult;
function VerifyGoogleSignature(key_res_id:I4; file_path:BSTR): HResult;
function ExecuteGoogleSignedExeElevated(exe:BSTR; args:BSTR; process_id:UI4; out process_handle:^ULONG_PTR): HResult;
function EnsureBrandingParameters: HResult;
function IsUpdaterServiceAvailable: HResult;

Alias ULONG_PTR;
UI4

GUServiceLib; // Google Updater Service 1.0 Type Library

Class GUServiceCtl; // GUServiceCtl Class
GUID={89DAE4CD-9F17-4980-902A-99BA84A8F5C8};
function Execute(file_name:LPWSTR; args:LPWSTR; caller_proc_id:UI4; out proc_handle:^ULONG_PTR): HResult;

Interface ISilentUpdater; // Google Updater ISilentUpdater Interface
GUID={C07A89E4-82A3-4A29-9908-DFC9DEBF8267};
function Execute(file_name:LPWSTR; args:LPWSTR; caller_proc_id:UI4; out proc_handle:^ULONG_PTR): HResult;

Alias ULONG_PTR;
UI4

Class GUSchedulerCtl; // GUSchedulerCtl Class
GUID={B53B7061-6584-46AA-A033-D610EB10BD9B};
function RegisterEvent(app_id:LPWSTR; event_id:LPWSTR; file_name:LPWSTR; args:LPWSTR): HResult;
function UnregisterEvent(app_id:LPWSTR; event_id:LPWSTR): HResult;
function ScheduleEvent(app_id:LPWSTR; event_id:LPWSTR; interval:UI4): HResult;
function CancelEvent(app_id:LPWSTR; event_id:LPWSTR): HResult;
function ScheduleEventNow(app_id:LPWSTR; event_id:LPWSTR; caller_proc_id:UI4; out proc_handle:^ULONG_PTR): HResult;

Interface IUpdaterScheduler; // Google Updater IUpdaterScheduler Interface
GUID={5C8CE0B5-6DA0-49A1-B675-78FD03EA3224};
function RegisterEvent(app_id:LPWSTR; event_id:LPWSTR; file_name:LPWSTR; args:LPWSTR): HResult;
function UnregisterEvent(app_id:LPWSTR; event_id:LPWSTR): HResult;
function ScheduleEvent(app_id:LPWSTR; event_id:LPWSTR; interval:UI4): HResult;
function CancelEvent(app_id:LPWSTR; event_id:LPWSTR): HResult;
function ScheduleEventNow(app_id:LPWSTR; event_id:LPWSTR; caller_proc_id:UI4; out proc_handle:^ULONG_PTR): HResult;

GearsTypelib;

Class BrowserHelperObject;
GUID={E0FEFE40-FBF9-42AE-BA58-794CA7E3FB53};
function QueryInterface(riid:^GUID; out ppvObj:^^void): HResult;
function AddRef: UI4;
function Release: UI4;

Class HtmlDialogHost;
GUID={619C4FDA-4D52-4C7C-BAF2-5654DA16E675};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function GetDialogArguments: BSTR;
function CloseDialog(result_string:BSTR);

Dispatch HtmlDialogHostInterface;
GUID={5D437BB7-8634-46D2-AB33-F854034C73D6};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function GetDialogArguments: BSTR;
function CloseDialog(result_string:BSTR);

Class ToolsMenuItem;
GUID={0B4350D1-055F-47A3-B112-5F2F2B0D6F08};
function QueryInterface(riid:^GUID; out ppvObj:^^void): HResult;
function AddRef: UI4;
function Release: UI4;

Class GearsFactory;
GUID={C93A7319-17B3-4504-87CD-03EFC6103E6E};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function create(class_name:BSTR; class_version:BSTR): IDispatch;
function getBuildInfo: BSTR;

Dispatch GearsFactoryInterface;
GUID={CADD7DF9-B7AF-426D-AE24-5E00CB8CF982};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function create(class_name:BSTR; class_version:BSTR): IDispatch;
function getBuildInfo: BSTR;

Class GearsDatabase;
GUID={B09AFBD8-FBEE-4E91-AA27-7DC433C978AB};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function open([database_name:^variant]);
function execute(expression:BSTR; [arg_array:^variant]): ^GearsResultSetInterface;
function close;
property-get lastInsertRowId: variant;

Dispatch GearsDatabaseInterface;
GUID={DFCF5BD9-9C89-46EC-BC01-8A5E31E6DD3A};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function open([database_name:^variant]);
function execute(expression:BSTR; [arg_array:^variant]): ^GearsResultSetInterface;
function close;
property-get lastInsertRowId: variant;

Dispatch GearsResultSetInterface;
GUID={B8A9C568-C1C1-49BD-A752-FDC3A4022825};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function field(index:INT): variant;
function fieldByName(field_name:BSTR): variant;
function fieldName(index:INT): variant;
function fieldCount: INT;
function close;
function next;
function isValidRow: bool;

Class GearsWorkerPool;
GUID={B76AFB62-9BA2-43E8-B27F-9F1CAC8148B7};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function createWorker(full_script:^BSTR): INT;
function sendMessage(message_string:^BSTR; dest_worker_id:INT);
property-put onmessage(IDispatch);

Dispatch GearsWorkerPoolInterface;
GUID={D9583548-7181-4F86-8C19-C02154D5256F};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function createWorker(full_script:^BSTR): INT;
function sendMessage(message_string:^BSTR; dest_worker_id:INT);
property-put onmessage(IDispatch);

Class GearsLocalServer;
GUID={3A826505-92E3-486A-9FB5-37FE89E971F9};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function canServeLocally(url:BSTR): bool;
function createManagedStore(name:BSTR; [required_cookie:^variant]): ^GearsManagedResourceStoreInterface;
function openManagedStore(name:BSTR; [required_cookie:^variant]): ^GearsManagedResourceStoreInterface;
function removeManagedStore(name:BSTR; [required_cookie:^variant]);
function createStore(name:BSTR; [required_cookie:^variant]): ^GearsResourceStoreInterface;
function openStore(name:BSTR; [required_cookie:^variant]): ^GearsResourceStoreInterface;
function removeStore(name:BSTR; [required_cookie:^variant]);

Dispatch GearsLocalServerInterface;
GUID={A207BB88-9F3B-4B5E-A267-234C4DDDB331};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function canServeLocally(url:BSTR): bool;
function createManagedStore(name:BSTR; [required_cookie:^variant]): ^GearsManagedResourceStoreInterface;
function openManagedStore(name:BSTR; [required_cookie:^variant]): ^GearsManagedResourceStoreInterface;
function removeManagedStore(name:BSTR; [required_cookie:^variant]);
function createStore(name:BSTR; [required_cookie:^variant]): ^GearsResourceStoreInterface;
function openStore(name:BSTR; [required_cookie:^variant]): ^GearsResourceStoreInterface;
function removeStore(name:BSTR; [required_cookie:^variant]);

Dispatch GearsManagedResourceStoreInterface;
GUID={990DC8DD-A97D-4701-962A-53721251821C};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
property-get name: BSTR;
property-get requiredCookie: BSTR;
property-get enabled: bool;
property-put enabled(bool);
property-get manifestUrl: BSTR;
property-put manifestUrl(BSTR);
property-get lastUpdateCheckTime: I4;
property-get updateStatus: INT;
property-get lastErrorMessage: BSTR;
function checkForUpdate;
property-get currentVersion: BSTR;

Dispatch GearsResourceStoreInterface;
GUID={3F84AC4C-F26D-4A75-9E22-6695F6953EDD};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
property-get name: BSTR;
property-get requiredCookie: BSTR;
property-get enabled: bool;
property-put enabled(bool);
function capture(urls:^variant; completion_callback:IDispatch): I4;
function abortCapture(capture_id:I4);
function isCaptured(url:BSTR): bool;
function remove(url:BSTR);
function rename(src_url:BSTR; dst_url:BSTR);
function copy(src_url:BSTR; dst_url:BSTR);
function getHeader(url:BSTR; header:BSTR): BSTR;
function getAllHeaders(url:BSTR): BSTR;
function captureFile(file_input_element:IDispatch; url:BSTR);
function getCapturedFileName(url:BSTR): BSTR;
function createFileSubmitter: ^GearsFileSubmitterInterface;

Dispatch GearsFileSubmitterInterface;
GUID={0747A88C-5033-44F7-94B4-2E2823925996};
function QueryInterface(riid:^GUID; out ppvObj:^^void);
function AddRef: UI4;
function Release: UI4;
function GetTypeInfoCount(out pctinfo:^UINT);
function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
function setFileInputElement(file_input_element:IDispatch; resource_url:BSTR);

ProtectorExeLib; // ProtectorExe 2.0 Type Library

Class ProtectorHost; // ProtectorHost Class
GUID={FBA44040-BD27-4A09-ACC8-C08B7C723DCD};
function Uninstall2(client:BSTR; sid:BSTR; keep_reg_settings:I4): HResult;

Interface IProtectorHost2;
GUID={91959FBB-853A-4AC7-A082-2DDF787F4CA9};
function Uninstall2(client:BSTR; sid:BSTR; keep_reg_settings:I4): HResult;

Interface IProtectorHost;
GUID={DA69D3CC-7676-4A65-889F-C052977F1AA9};
function GetProtector(out protector:^IUnknown): HResult;
function LockProtector(lock:I4): HResult;
function Uninstall(client:BSTR): HResult;

protector_dllLib;

Class Protector;
GUID={6134CEA9-DD6E-495C-A0D1-4F232027D7D7};
function SetSID(sid:BSTR): HResult;

Interface IProtector3;
GUID={91F39C2A-95E7-497A-A539-0AC715DC66D2};
function SetSID(sid:BSTR): HResult;

Interface IProtector2;
GUID={2212951C-1623-4095-906B-AC50B8F91016};
function SignalToShutdown: HResult;

Interface IProtector;
GUID={2351B346-00E8-4EAC-9B75-B138B465D659};
function Init: HResult;
function EnableProtection(enable:I4): HResult;
function IsProtectionOn(out enabled:^I4): HResult;
function SetNotify(notify:I4): HResult;
function GetNotify(out notify:^I4): HResult;
function SetHostPriority(host_priority:I4): HResult;
function GetHostPriority(out host_priority:^I4): HResult;
function GetVersion(out major:^INT; out minor:^INT; out build:^INT; out revision:^INT): HResult;
function SetOffered(offered:I4): HResult;
function GetOffered(out offered:^I4): HResult;
function SetSearchDomain(domain:BSTR): HResult;
function GetSearchDomain(out domain:^BSTR): HResult;
function IsGoogleDefaultSearch(out is_google:^I4): HResult;
function EnableUsageStat(enable:I4): HResult;

Vista Easter Egg

2007年12月23日,星期日

Vista users, simply click this link: Vista Easter Egg

Or Win+R run this script:
about:<bgsound src="res://%WINDIR%\System32\Speech\SpeechUX\SpeechUX.dll/WAVE/WELCOMESEQUENCE.WAV">
16.jpg

让Vista的屏保在桌面运行!Cool!

2007年12月23日,星期日

来源 http://jsbi.blogspot.com/2006/10/make-any-screensaver-as-your-desktop.html

Windows闭源的最大乐趣就是reverse engineering和hacking,这不,一个华人研究出了一个Vista下非常好玩的东东,在桌面运行屏保,不影响工作。

首先打开Spy++,这个工具是人手一份吧?好,找到你桌面的 hwnd ID,如图

15.jpg

然后Win+R运行 calc 计算器,选择 科学计算器,切换到 十六进制,Ctrl+V,切换到十进制,好啦,我们得到了桌面窗体的hwnd十进制ID,这里我得到的是 262216。

2.jpg

Win+R运行CMD,输入 C:\WINDOWS\System32\Ribbons.scr /p 262216,回车。注意这里必须在CMD里运行,在Win+R里运行是没有效果滴(我也很好奇为什么??)

切换到桌面,看看??哇咔咔,漂亮吧??Vista的图形内核Avalon看来是很强大的!mystify.scr, ribbons.scr, aurora.scr 和 SSBranded.scr 同理!

说不定,我们很多程序可以实现免费的DreamScene!