2011年6月20日
无可否认,现在手机越来越像电脑,电脑越来越像手机.当两种系统越走越近的时候,开发者当然希望为电脑写的程序可以不用改动(或改动很少)就可以在手机上运行.就这一点,非常看好Windows phone7.5.这将是微软翻身的最好机会. 坐等芒果系统,学习WTL.
很多人认为C++过时了,不愿意再花时间学习.我不这样认为,C++能在移动设备开发上,能唤起第二春. 在windows上用VS用久了,要换个系统,换个环境,学习代价太高了.
一条路走到黑得了...
2010年12月23日
“开闭”原则是指软件实体应当
对添加开放,
对修改关闭。即软件实体应该在不修改的前提下扩展,这个原则实际上为软件设计指明了目标。我们知道软件设计应当充分考虑软件的可维护性,即需求发生变化的时候软件结构能够灵活地适应这种变化。就评价软件的可维护性而言,“开闭”原则提供了一个依据。
我们的模块众多真的是因为这个原因吗? 我不赞同.
一个优秀的软件首先应该是易于测试的.只有方便测试,才能快速的定位问题.
2008年10月26日
为什么写这个:
1,像我这么爱干净的人,当然不能容忍和MM聊天的时候,看到一个内衣广告在上面一闪一闪,这不引诱老纳么;
2,为什么不用其它外挂?珊瑚虫已S,再没用过其它。现有的外挂实现了一些我不想要的功能,看IP也没必要,聊天的都是熟人。另外,不知道它做了些什么事情;
3,打发这个无聊的周末。
怎样实现:
1,万能的HOOK
现在用到的是全局的SHELL HOOK,Hook的是窗口创建完成的消息;
g_hShellHook = SetWindowsHookEx( WH_SHELL,
(HOOKPROC)ShellHook,
g_hInstance,
0);
ShellHook 的实现如下:
static LRESULT CALLBACK ShellHook(UINT nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode < 0)
goto CallOrg;
if( HSHELL_WINDOWCREATED == nCode )
{
if( !isQQWnd( (HWND)wParam ) )
goto CallOrg;
EnumChildWindows( (HWND)wParam, EnumChildProc, (LPARAM)0 );
}
CallOrg:
return CallNextHookEx( g_hShellHook, nCode, wParam, lParam);
}
在收到窗口创建后的消息时,就判断这个窗口是不是QQ的,这里用到了 GetWindowThreadProcessId ,它返回窗口相关的进程ID
BOOL isQQWnd(HWND hWnd)
{
if( g_pContext == NULL )
return FALSE;
if( g_dwQQProcessID == 0 )
g_dwQQProcessID = GetQQProcessID();
DWORD dwWndProcessID;
if( GetWindowThreadProcessId( hWnd, &dwWndProcessID ) == 0 )
return FALSE;
return dwWndProcessID == g_dwQQProcessID;
}
然后枚举它的子窗口,看它的子窗口有没有广告控件,有的话就给子控件发送个WM_CLOSE的消息.
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam )
{
DWORD dwID = GetDlgCtrlID( hwnd );
if( dwID == 0x3e9 )
{
HWND hPrarent = GetParent( hwnd );
PostMessage(hwnd, WM_CLOSE, 0, 0 );
Sleep( 10 );
PostMessage(hPrarent, WM_PAINT, 0, 0 );
}
else if( dwID == 0x643f )
{
PostMessage(hwnd, WM_CLOSE, 0, 0 );
}
return TRUE;
}
其中的两个硬编码是用 spy++ 分析出来的,可能因为版本的不同,会有差异。所以我不确定能不能关闭其它版本的QQ广告。我使用的版本是QQ2008贺岁版。
--------------------------------------------------------------------------
后记:
尽管实现的技术很简单,但还是花了我大半天的时间. 写完之后觉得枚举子窗口的方式太低效, 或者还有其它高效点的方式。另外还有全局钩子,可能没有必要。如果下午周末持续无聊,我会尝试改进一下。
QQ的聊天对话框很简单,不像MSN的对话框,铁板一块,用spy++啥都看不到.但是可以用 AccExplorer 分析.想在MSN的对话框上加点东西进去,实现起来很困难。对这方面有研究的同学不妨与我讨论一下实现,一起学习、进步。
代码的行数没数,有效代码估计也就百把行吧,呵呵,我承认我是标题党。
附: 源代码 + bin
2008年2月19日
# -*- coding: cp936 -*-
import re
from os.path import dirname
import shutil
import os
pattern = '^#\s*include\s+(<)(.+)(>)(.*)$'
prog = re.compile(pattern)
find_sets = []
def create_dir(file_dir):
#print dirname(_dir);
_dir = dirname(file_dir)
if not os.path.exists(_dir):
os.makedirs(_dir)
def copyHeadFile(root_dir, src_path, des_path, deep = 0):
if((root_dir + src_path) in find_sets):
return
if( not os.path.exists(root_dir + src_path) ):
return
create_dir(des_path + src_path)
shutil.copyfile(root_dir + src_path, des_path + src_path);
find_sets.append(root_dir + src_path)
src_file = open(root_dir + src_path, 'r')
print ''.rjust(deep) + des_path + src_path
for line in src_file:
if prog.search(line):
line = re.sub('(^#\s*include\s+(<))|(>)(.*)$', '', line)
line = line.replace('/', '\\')
line = line.rstrip('\n')
copyHeadFile( root_dir, line, des_path, (deep + 4))
copyHeadFile("D:\\Program Files\\Microsoft Visual Studio 8\\VC\\include\\", "stdafx.h", "d:\\need_hpp\\" )
Python偶而玩玩也很爽。 这个脚本的来例:我写的demo用到了不少boost的东西,代码交给领导检查的时候,又不能把整个boost 都拷贝给他,这个脚本能把引用到的头文件导出到指定的目录里面。
2007年11月23日
2007年11月22日星期四 下午7时29分
外面已经一片7黑。室友H君还没回来,他怕一回来就玩游戏。我不怕玩游戏,一个人,在哪都一样,只喜欢安静。
一段音乐,一杯咖啡,一本书,一段代码,一个晚上。有点喜欢这种感觉了。
乐心说得对,要对生活有要求。呵呵。 看来我的要求也不高。
上次星期公司新员工培训,内容是“我的五样”,“七个习惯”。我的五样,就是先写下自己最在乎的五样东西,然后在忧怨的音乐声中,一个一个的划去,只留下最后一个,以期帮你找到自己的目标。 我只写了三样,而且一样都没有划去,我觉得它们并不矛盾,而且那就是我生命的意义。想知道是哪三样吗? 嘿嘿,我可不告诉你。 接着就是《高效能人士的七个习惯》,这本书我早就看过电子版的,当时一边看一边想:这不就是说我的习惯吗?kao。 讲课的老师水平一般,很能忽悠,还不如给我们放陈安之老师的成功学。一堂培训下来,也没什么长进,浪费我一下午的时间。完了之后,集体去楼下的西餐厅吃蛋炒饭,味道还不错。这个星期又有培训,也不知道能不能吃到好吃的蛋炒饭。
想想最近还有什么有趣的事。前天项目组搞每月一次的聚餐,我们一行八人,去了附近的一家小肥羊。涮涮涮,很开心。喝了白酒+啤酒。回到宿舍,晕呼呼的睡着了,没盖被子,结果睡着睡着,半夜里两鼻孔被堵起来了,难受,翻出一粒感康,服下,半梦半醒到天亮。
2007年11月14日
今天是星期五,来广州那天是星期二,离开TW是上个星期五,离开SPL是上个星期二。离开SPL的时候,实在没有想到自己会在这个陌生的地方开始谋生。短短的十来天,变化的东西很多,而不变的只有一心想成为优秀的程序员的理想(我想,这也是变化的原因)。
为什么离开SPL:
一、 呆了两年多,对外面的事物很好奇,有些东西,如果不身临其境的去体会,永远无法知道;
二、 真的想知道,一个大的项目是怎么被分割成很多小部分,然后有条不紊被执行,然后一次交付,然后有计划的升级、维护;
三、 不喜欢三天两头的为程序加新功能;
四、 不喜欢一个星期上六天班;
五、 不喜欢宿舍太吵,一两点钟还被关门的声音震醒;
六、 不喜欢技术没有进步,整天干同样的活(一个游戏天天玩通关,你还喜欢玩吗?);
七、 不喜欢一个人在战斗的时候,看着旁边的胖子偷懒,而且工资比你还高。
为什么离开TW:
一、对烟厂的业务实在没有兴趣,做得好还好,做得不好,被开除了,我应该去干嘛?我可以去干嘛?当初花那么多时间去学习的东西,然后离开的时候,一无是处,是不是浪费自己的时间;
二、对工控不感兴趣;看着那些电气设备,我想自己如果在这行发展,不会比那个有电子和计算机双学位的同学更牛;
三、对带头大哥的技术水平感到失望,尤其是看了他写的代码之后,本来一个很简单的东西,经过他的手就变得异常复杂,还故作高深。整个程序充满了硬编码,而且把逻辑和界面混淆在一起;可能他做为带头大哥,在别的地方,如业务、工控方面有所建树,但是我对那些一点兴趣都没,我怎能强迫自己跟着你?
四、感觉不会有太大的长进,我一向认为写低级界面是体力活;
五、不喜欢在烟厂职工面前装孙子讨好他们,凭什么?我在SPL还是爷呢。
够了,做自己不喜欢的工作,就像出卖自己的灵魂。不如早点结束,趁自己有选择的能力。
辗转来到广州:
只所以在这待着是因为:
一、我喜欢系统底层,我以前就喜欢,只是没有时间去了解;
二、项目组的同事相处起来不错,没什么架子,很好交流;
三、广州和长沙的消费似乎差不多,而且这公司还答应包住,所以,每月能剩下的钱就多点了。
四、即便是被开除了,在广州这地,混个饭似乎也不难,如果没有虚度时光的话。这边IT公司挺多的;
五、趁着年轻,想出来见见世面(如果这也是理由的话);
自己做出的这些决定,放了一些人的鸽子,我向你们道歉,你们都是好人,我辜负了你们对我的信任,那是因为我的优柔寡断和性格上的其它缺陷引起的。这里提到的一些人被定义为:TW的HR和YM大哥,还有雨花亭的杨大哥。
HR在给我办入职的时候和我说:你不会做两三天就走人吧?我说:应该不会吧。可是我走了,为了我所谓的理想,我对不起你;
YM:我们最后一次分开时,我对你说:做这个主要是对业务的理解吧?你拍拍我的肩膀对我说:所以你要每天下车间去看看。我知道你是为我好,如你所说,在长沙找个这样的工作不容易。可这并不是我想要的生活,也许在将来的某天,我会后悔自己失去了一次稳定的机会,但,决不是现在。再次向你说声对不起。
雨花亭的杨大哥:准备和你合租房子的前一天,我离开长沙了,所以你的鸽子不得不放。
想起来是自己的不对,就觉得挺难过,而且从心里开始BS自己,如果你看到这些,也请BS一下我,让我能在你BS的眼神中吸取教训,如果下次有类似的事情,会处理得好。 写着写着就觉得有些压抑,而我也不知道怎样才能不压抑些。
放一些图片吧,作为记录,而这一切,都已经是回忆。
2007年8月9日
今天发生一件有趣的事情,我要为程序换个图标..
程序有很多ICO资源,例如 ICO_1,ICO_2,ICO_3,ICO_4....
我新增了一个APP_ICO(程序图标要换成这个). 我把以前的图标删了,然后ID改为以前那个,可是ReBuild之后,程序图标竟然是 ICO_1。很奇怪。
找了半天,发现ICO_1的ID值是最小的。于是我把APP_ICO的ID值改为最小。Rebuild.终于把程序图标给换了过来。
2006年12月13日
这样的帖子,不知道可不可以放到首页..如果不行,麻烦管理员清理. 谢谢.
HANDLE GetQQProcess();
bool
SeachQQNumber(HANDLE _hProcess,
string
&
strQQ);
int
_tmain(
int
argc, _TCHAR
*
argv[])
{
HANDLE hProces
=
GetQQProcess() ;
if
(hProces
==
NULL)
cout
<<
"
No run QQ!
"
<<
endl;
string
strQQ;
SeachQQNumber(hProces,strQQ);
cout
<<
strQQ
<<
endl;
system(
"
pause
"
);
return
0
;
}
bool
SeachQQNumber(HANDLE _hProcess,
string
&
strQQ)
{
SuspendThread(_hProcess);
DWORD dwBaseAddress;
MEMORY_BASIC_INFORMATION mbi;
char
process_mem[
4096
]
=
{
0
}
;
DWORD number_of_bytes_read
=
0
;
SYSTEM_INFO si;
GetSystemInfo(
&
si);
dwBaseAddress
=
(DWORD)si.lpMinimumApplicationAddress;
while
(dwBaseAddress
<
(DWORD)si.lpMaximumApplicationAddress)
{
mbi.BaseAddress
=
(LPVOID)dwBaseAddress;
VirtualQueryEx(_hProcess, (LPVOID)dwBaseAddress,
&
mbi,
sizeof
(mbi));
dwBaseAddress
=
(DWORD)mbi.BaseAddress
+
mbi.RegionSize;
if
(mbi.State
!=
MEM_COMMIT
||
mbi.AllocationProtect
!=
PAGE_READWRITE)
//
跳过未分配或不可读写的区域
{
continue
;
}
//
搜索
for
(DWORD i
=
(DWORD)mbi.BaseAddress; i
<
dwBaseAddress; i
+=
4096
)
{
if
(
!
ReadProcessMemory(_hProcess,LPCVOID(i),process_mem,
4096
,
&
number_of_bytes_read))
break
;
for
(
int
j
=
0
;j
<
4096
-
9
;j
++
)
{
if
(
!
memcmp(
&
process_mem[j],
"
\\MsgEx.db
"
,
9
) )
{
//
printf("begin\n");
for
(
int
k
=
j
-
1
; k
>
j
-
12
; k
--
)
{
if
(process_mem[k]
>=
'
0
'
&&
process_mem[k]
<=
'
9
'
)
{
strQQ
=
process_mem[k]
+
strQQ;
}
else
break
;
}
if
(strQQ.length())
{
ResumeThread(_hProcess);
return
true
;
}
}
}
}
}
ResumeThread(_hProcess);
return
false
;
}
HANDLE GetQQProcess()
{
PROCESSENTRY32 pe;
pe.dwSize
=
sizeof
(PROCESSENTRY32);
HANDLE hSnapshot
=
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,
0
);
Process32First(hSnapshot,
&
pe);
do
{
if
(
!
_tcsicmp(pe.szExeFile,_T(
"
qq.exe
"
)))
{
CloseHandle(hSnapshot);
return
OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID);
}
pe.dwSize
=
sizeof
(PROCESSENTRY32);
}
while
(Process32Next(hSnapshot,
&
pe));
CloseHandle(hSnapshot);
return
NULL;
}
摘要: #include
"
stdafx.h
"
#include
<
iostream
>
#include
"
ace/INET_Addr.h
"
#include
...
阅读全文
2006年11月22日
最近工作比较闲. 因此看了一些书,一些电影.
<设计模式>开始看第二遍.. 感觉实际开发中用不着.. 来公司一年多,项目实在少.真想找个高人带着我乘风破浪..不说乘风破浪,平时有个人讨论都好.
看了一会儿<wxWidgets>. 随便一个对话框程序都占了几M内存,文件牛大..算了. 跨平台现在还用不着,放弃.
看了一会儿<病毒入门>.汇编看得想死..罗云彬老师的Win32汇编书写得像个<Window程序设计>的翻版.
看了一会儿<Python>. .现在的开发用不着.. 屠龙之技.
昨天发现用Flash做界面真是好. 又漂亮又简单, 现在的Flash8.0可以很好的和本地程序交互了. 感觉是黑暗中的明灯.
看名字叫<越狱>的电影. 觉得外国连续剧可看性很高..T-Bag是只打不死的小强. 麦克.Scofield真牛. 外国政治也黑暗. 外国监狱真好. 司法制度真体帖.
觉得自己会用的形容词很少.尽是些 "真","很","好"
哈哈.
这周末王斌和周芬结婚了. 我要回家参加他们的婚礼. 心情有些许复杂. 难以名状. . 尽管如此,我还是要给他们献上杨某人最诚挚的祝福. 无论如何,一定要幸福.
2006年11月7日
如果我能存时间入瓶 我最想做的事情 就是保存每个日子 直到我们老去
只为能与你再次共度 如果我能让时光永驻 我会珍藏每个日子 然后 再一次 与你共度
你找到你想做的事情时 却总是发现 已没有足够时间 我历经寻寻觅觅 才发现
你就是那个 我愿共度一生的人 如果我有盒子 盛着从未实现的梦与希望
那么它将会空荡荡 除了那些 你为我圆梦的记忆
2006年10月27日
一大早醒来,想了很多. 睡不着.
不能再玩游戏了.希望部门的技术氛围能浓一些, 在一起,不是讨论游戏,而是讨论技术.
玩了这么些年游戏,得到了什么,失去了什么.不想再作追究.只是不想再为了它失去一些宝贵的东西,譬如时间.
2006年10月25日
例 7.14. 处理开始字符
...
>>> phonePattern = re.compile(r'^\D*(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)$') 1
>>> phonePattern.search('(800)5551212 ext. 1234').groups() 2
('800', '555', '1212', '1234')
>>> phonePattern.search('800-555-1212').groups() 3
('800', '555', '1212', '')
>>> phonePattern.search('work 1-(800) 555.1212 #1234') 4
>>>
1 |
这个正则表达式和前面的几乎相同,除了在第一个记忆组(区号)前面匹配\D*,0或者多个非数字字符。注意,此处你没有记忆这些非数字字符(他们没有被括号括起来)。如果你发现他们,只是跳过他们,接着只要匹配上就开始记忆区号。
|
2 |
你可以成功的解析电话号码,即使在区号前面有一个左括号。(在区号后面的右括号也已经被处理,它被看成非数字字符分隔符,由第一个记忆组后面的 \D*匹配。)
|
3 |
进行仔细的检查,保证你没有破坏前面能够匹配的任何情况。由于首字符是完全可选的,这个模式匹配字符串的开始,接着是0个非数字字符,接着是一个有三个数字字符的记忆组(800),接着是1个非数字字符(连字符),接着是一个有三个数字字符的记忆组(555),接着是1个非数字字符(连字符),接着是一个有四个数字字符的记忆组(1212),接着是0个非数字字符,接着是一个有0个数字位的记忆组,最后是字符串的结尾。
|
4 |
此处是正则表达式让我产生了找一个硬东西挖出自己的眼睛的冲动。为什么这个电话号码没有匹配上?因为在它的区号前面有一个 1,但是你认为在区号前面的所有字符都是非数字字符(\D*)。 Aargh. |
2006年10月24日
<载自:Dive Into Python>
你可能经常看到罗马数字,即使你没有意识到他们。你可能曾经在老电影或者电视中看到他们(“版权所有 MCMXLVI” 而不是 “版权所有1946”),或者在某图书馆或某大学的贡献墙上看到他们(“成立于 MDCCCLXXXVIII”而不是“成立于1888”)。你也可能在某些文献的大纲或者目录上看到他们。这是一个表示数字的系统,他能够真正回溯到远古的罗马帝国(因此而得名)。
在罗马数字中,利用7个不同字母进行重复或者组合来表达各式各样的数字。
-
I = 1
-
V = 5
-
X = 10
-
L = 50
-
C = 100
-
D = 500
-
M = 1000
下面是关于构造罗马数字的一些通用的规则的介绍:
- 字符是叠加的。 I表示1, II表示2, 而III表示3. VI 表示 6 (字面上为逐字符相加, “5 加 1”), VII 表示 7, VIII 表示 8.
- 能够被10整除的字符(I, X, C, 和 M)至多可以重复三次. 对于4, 你则需要利用下一个最大的能够被5整除的字符进行减操作得到,你不能把4 表示成 IIII; 而应表示为 IV (比“5小 1”)。数字40写成XL (比50小10), 41 写成 XLI, 42 写成 XLII, 43 写成 XLIII, 而 44 写成 XLIV (比50 小10, 然后比5小1).
- 类似的,对于数字 9,你必须利用下一个能够被10整除的字符进行减操作得到: 8 表示为 VIII, 而 9 则表示为 IX (比10 小1), 而不是 VIIII (因为字符I 不能连续重复四次)。数字90 表示为 XC, 900 表示为 CM.
- 被5整除的字符不能重复。数字10 常表示为X, 而从来不用VV来表示。数字100常表示为C, 也从来不表示为 LL.
- 罗马数字经常从高位到低位书写,从左到右阅读,因此不同顺序的字符意义大不相同。DC 表示 600; 而CD 是一个完全不同的数字(为400, 也就是比500 小100). CI 表示 101; 而IC 甚至不是一个合法的罗马字母(因为你不能直接从数字100减去1; 比需要写成XCIX, 意思是 比100 小10, 然后加上数字9,也就是比 10小1的数字).
|
本章译者注:“被5整除的数”这个译法并不严谨,因为所有被10整除的数也能够被5整除,此处表达的含义是:那些包含有5的含义的罗马数字字符。 |
2006年10月20日
#include
"
stdafx.h
"
#include
"
ace/OS_NS_time.h
"
#include
"
ace/Log_Msg.h
"
#include
"
ace/Reactor.h
"
#include
"
ace/Event_Handler.h
"
#include
"
ace/INET_Addr.h
"
#include
"
ace/SOCK_Dgram.h
"
#include
"
ace/TP_Reactor.h
"
#include
"
ace/WFMO_Reactor.h
"
class
ClientRecv :
public
ACE_Event_Handler
{
public
:
virtual
~
ClientRecv ()
{}
int
open (
const
ACE_INET_Addr
&
bind_addr);
//
Get this handler's I/O handle.
virtual
ACE_HANDLE get_handle (
void
)
const
{
return
this
->
udp.get_handle(); }
virtual
int
handle_input (ACE_HANDLE fd
=
ACE_INVALID_HANDLE);
//
Called when this handler is removed from the ACE_Reactor.
virtual
int
handle_close (ACE_HANDLE handle,
ACE_Reactor_Mask close_mask);
ACE_SOCK_Dgram udp;
}
;
int
ClientRecv::open (
const
ACE_INET_Addr
&
bind_addr)
{
if
(
this
->
udp.open (bind_addr,
1
)
==
-
1
)
ACE_ERROR_RETURN ((LM_ERROR,
ACE_TEXT (
"
%p\n
"
),
ACE_TEXT (
"
udp.open
"
)),
-
1
);
return
this
->
reactor ()
->
register_handler
(
this
, ACE_Event_Handler::READ_MASK );
}
int
ClientRecv::handle_close (ACE_HANDLE handle,
ACE_Reactor_Mask close_mask)
{
if
(close_mask
==
ACE_Event_Handler::WRITE_MASK)
return
0
;
close_mask
=
ACE_Event_Handler::ALL_EVENTS_MASK
|
ACE_Event_Handler::DONT_CALL;
this
->
reactor ()
->
remove_handler (
this
, close_mask);
this
->
udp.close();
delete
this
;
return
0
;
}
int
ClientRecv::handle_input (ACE_HANDLE fd )
{
char
buffer[
8192
]
=
{
0
}
;
ACE_INET_Addr peer_addr;
if
(
-
1
==
this
->
udp.recv(buffer,
8192
,peer_addr))
ACE_ERROR_RETURN ((LM_ERROR,
ACE_TEXT (
"
%p\n
"
),
ACE_TEXT (
"
udp.recv
"
)),
-
1
);
ACE_DEBUG((LM_INFO,
"
%s\n
"
,peer_addr.get_host_addr()));
return
0
;
}
DWORD WINAPI LoopThread(LPVOID lparam)
{
ACE_Reactor::instance ()
->
run_reactor_event_loop ();
return
0
;
}
int
_tmain(
int
argc, _TCHAR
*
argv[])
{
ACE_INET_Addr bind_addr(
10703
);
ClientRecv client;
client.reactor(ACE_Reactor::instance ());
if
(
-
1
==
client.open(bind_addr))
{
return
-
1
;
}
CreateThread(NULL,NULL,LoopThread,
0
,
0
,
0
);
ACE_INET_Addr send_addr;
for
(
int
i
=
1024
;i
<
3333
;i
++
)
{
ACE_DEBUG((LM_INFO,
"
%d \n
"
,i));
send_addr.
set
(i,
"
192.168.3.147
"
);
Sleep(
5000
);
if
(client.udp.send(
"
ttt
"
,
3
,send_addr)
==
-
1
)
{
ACE_DEBUG((LM_INFO,
"
%p
"
));
break
;
}
}
system(
"
pause
"
);
ACE_Reactor::instance ()
->
end_reactor_event_loop ();
return
0
;
}
报错:
udp.recv: connection reset
p?: handle is not a socket
莫非反应器只能用于TCP? , 没办法,先用WSAAsyncSelect吧。
2006年10月9日
火车慢慢地往前
烟雾弥漫着思念
缠绕一圈又一圈
沉默的我睁开眼
看着窗外的蓝天
窗中的我在流泪
越过你曾说的田
种满了向日葵
突然哽咽一切一切
我多想回你身边
乘坐着旋转木马的乐园
看幸福转动得多么甜
我多想回你身边
走过最初相遇的地点
好让我再从头复习一遍
我早已没有感觉
如果想你多一天
就会伤我多一些
抛开了所有时间
让自己心情沉淀
好能飞出这世界
越过你曾说的田
种满了向日葵
我的眼泪抵不去从前
no
2006年10月8日
稀里糊涂的过完了七天。今天下午杰毛粒和他们家的香客发生争执,生猛的香客把杰毛粒的眼睛踢伤了;文鸡上午摩托车被撞了。害我晚上提心吊胆,生怕自己会有什么不测(我们三个同年同月同日生)。还好,现在能写下这些文字,就证明我什么事都没有。
晚上去吃铁板烧,王斌和个蒙古大夫一样,点了很多东西,吃又吃不完。
因为帮侄女配电脑,认识了一个叫刘昕的可爱小MM。
2006年10月5日
今天7点半起床,到火车站8点,坐车到南站9点。南站人山人海。估计了一下, 排队要排半个小时,然后买张下午的票,再然后傍晚的时候回家。一天就毁了。毅然离开,坐了到暮云的车,在大托收费站下车,等了一会儿,就有一辆到南岳的中巴过来了。好happy的上了车。到家12点。
下午去见了几个朋友:杰毛粒做生意,忙得不行。灰老鼠在家砌房子。然后,我们一起去了自由地带吃东西。王斌过了一会儿也来了。吃完东西,帮灰老鼠的哥哥看电脑,原来电脑被流氓强X了,下了个超级兔子,解决问题,闪人。去伯伯家看爷爷。爷爷不在家,帮小红姐看电脑,电脑被流氓强X了,下了个超级兔子,除了中文上网,雅虎助手两个大流氓没赶跑,其它的都赶跑了。闪人。。。不知道闪到哪去,回家补睡。
晚上睡醒,去莉施剪了个头发。看到赵尉和她同学竟然也在洗头发,还带了个很PP的洋妞。剪完头发,打了个电话给猴子,喝了一厅可乐,看了一会儿街,我们决定去吃烤鱼。打了电话给徒弟,徒弟跟个精武馆的弟子约会,接了徒弟过来吃东西。转眼到十点。吃完东西,我决定去上网,在网上和希希讨论什么是BF。下线。吃了碗饺子,饺子店老板很面熟,名字好像叫荷花。
骑着小绵羊转了几圈,冷,回家。听了无数次《全世界失眠》,打开电脑,记下今天做了什么事情。万一失忆了,凭着这些,兴许会记起点什么。
2006年9月19日
《El condor pasa》 是一首反抗西班牙殖民者的南美秘鲁民歌,后被Paul Simon重唱组改编,用英文翻唱。这首旋律已经被列入联合国世界文化遗产了.宁静,深邃,高远. 让人心境明澈,是不可多的的优秀作品.
El Condor Pasa的原版据传是基于秘鲁自由战士Tupac Amaro的故事。1780年,他在领导一场反抗西班牙人的起义中被害,死后变成一只Condor,永远翱翔于安第斯山上。秘鲁人民暨此体现对自由的追求不息,而歌名的直译就是"雄鹰在飞"。
I\'d rather be a sparrow than a snail
Yes I would, if I could, I surely would, hm-m
I\'d rather be a hammer than a nail
Yes I would, if I only could, I surely would, hm-m
Away, I\'d rather sail away
Like a swan that\'s here and gone
A man gets tied up to the ground
He gives the world its saddest sound
Its saddest sound
I\'d rather be a forest than a street
Yes I would, if I could, I surely would
I\'d rather feel the earth beneath my feet
Yes I would, if I only could, I surely wou
下载
2006年9月17日
找男朋友了.
今天在步行街吃了一碗酸辣粉+两串鱿鱼, 麻得不行, 好像是胃在疼了. 我亲爱的胃,我向你保证,下次再也不吃 酸辣粉+两串鱿鱼了.
2006年9月13日
A:
t _tmain(int argc, _TCHAR* argv[])
{
typedef int (WINAPI *myMsg)( IN HWND hWnd,IN LPCSTR lpText, IN LPCSTR lpCaption,IN UINT uType);
HANDLE m_hDLL = ::LoadLibrary("user32.dll");
myMsg msg = (myMsg)GetProcAddress((HMODULE)m_hDLL, "MessageBoxA");
(*msg)(NULL,"TEST","TEST",0);
return 0;
} B:
int _tmain(int argc, _TCHAR* argv[])
{
MessageBoxA(NULL,"test","test",0);
return 0;
}
A生成的exe 的大小 < B
2006年9月8日
韩片.
想起男主角用鞋带将女主角绑在凳腿上的那幕,就差没感动得掉眼泪.
2006年9月6日
今天我生病了,好像是吃了什么坏东西,肚子不舒服。请了半天假在寝室睡觉。回想吃过的东西,早上面包,昨晚盒饭。前几天还开玩笑说,肚子疼不是我疼,我爱吃什么就吃什么。现在可好。
不喜欢住宿舍。一是因为没有自己的空间,二是因为最近又不能上网了。 隔壁宿舍把电脑当二手卖了,所以,他们也不关心能不能上网。可苦了我。
因为肚子不舒服,把我塞给它的东西都留着不消化,呕吐完,纳闷:我中午没吃什么呀,怎么能吐这么多。肚子呀肚子,你可真历害。
睡了一觉起来,头晕晕的。我应该去吃点容易消化的东西。
... ...
2006年8月31日
#include
"
ace/Singleton.h
"
#include
"
ace/Mutex.h
"
#include
"
ace/Event_Handler.h
"
#include
<
ace
/
NT_Service.h
>
#include
<
ace
/
Log_Msg.h
>
#include
<
iostream
>
using
namespace
std;
class
MYService:
public
ACE_NT_Service
{
bool
m_stop;
public
:
MYService():ACE_NT_Service(
"
MyACEService_4
"
,
0
,ACE_NT_SERVICE_START_TIMEOUT,
SERVICE_WIN32_OWN_PROCESS
|
SERVICE_INTERACTIVE_PROCESS),m_stop(
false
)
{
}
virtual
int
svc (
void
);
virtual
void
handle_control (DWORD control_code);
virtual
~
MYService()
{}
}
;
typedef ACE_Singleton
<
MYService, ACE_Mutex
>
SERVICE;
int
MYService::svc (
void
)
{
report_status (SERVICE_RUNNING);
while
(
!
m_stop)
{
Sleep(
2000
);
MessageBox(NULL,
"
aaa
"
,
"
error
"
,
0
);
}
return
0
;
}
void
MYService::handle_control (DWORD control_code)
{
if
(control_code
==
SERVICE_CONTROL_SHUTDOWN
||
control_code
==
SERVICE_CONTROL_STOP)
{
report_status (SERVICE_STOP_PENDING);
m_stop
=
true
;
}
ACE_NT_Service::handle_control (control_code);
}
ACE_NT_SERVICE_DEFINE (MyACEService_4,
MYService,
ACE_TEXT (
"
MyACEService_4
"
));
int
main(
int
argc, _TCHAR
*
argv[])
{
ACE::init ();
ACE_NT_SERVICE_RUN (MyACEService_4,
SERVICE::instance (),
ret);
ACE::fini ();
/**/
/*
安装服务
ACE::init ();
SERVICE::instance()->insert();
ACE::fini ();
*/
return
0
;
}
2006年8月30日
摘要: 分配器 描述
ACE_Allocator ACE中的分配器类的接口类。这些类使用继承和动态绑定来提供灵活性。
ACE_Static_Allocator 该分配器管理固定大小的内存。每当收到分配内存的请求时,它就移动内部指针、以返回内存chunk(“大块”)。它还假定内存一旦被分配,就再也不会被释放。
ACE_Cached_Allocator 该分配器预先分配内存池,其中含有特定数...
阅读全文
2006年8月21日
《设计模式》
《ACE卷二》
《OOD》
《Effectivec++》第三版
早一段时候看《道法自然-面向对像》,看到后面几章看不下去了,通篇的设计模式。没折,我得好好补上这珍贵的一课。 今天看到第一个模式,抽象工厂。
星际不玩了,每天中午和同事打帝国时代。:)很多人哦。
晚上也不知道玩什么才好。玩了一会极品飞车,老是最后一名,真没劲。
最近没有IE了,换了一个新的浏览器. "Opera", 挺方便的,看起来也大方. 按住右键摇两下,页面就关闭了,很适合我这样的懒人.你不知道每天找小XX,关闭窗口,得浪费我多大力气. 真方便呀真方便.
“咦?兄台,在下有一事不知道当问不当问?”
“嗯……有什么事,老兄你尽管说。咱们江湖兄弟不必那么文绉绉的,直接点。”
“好!兄台果然是爽快之人!我想问的是:兄台是不是河北神腿门的弟子?”
“嗯……正是!不知道老兄怎么知道的?”
“呵呵,我看兄台这蹲马步的姿势--双脚脚尖微微向内,双腿的膝盖却向外,小腿与大腿之间的角度成一直角,上身前倾,这便是河北神腿门的基本功嘛。”
“哈哈,老兄好眼力!嗯……不知道老兄是哪个门派的啊?”
“说起来咱们算是本家。”
“哦?”
“我是唐山地趟门的。三十年前,咱们本是一家,都属于神腿门。后来你们神腿门的老掌门沈半城过世之后,他的儿子接管了神腿门,他的侄子沈公子离开神腿门开创了唐山地趟门。”
“嗯……原来如此,怪不得看老兄你蹲马步的姿势跟我差不多呢。嗯……”
“呵呵,我蹲的姿势和兄台还是有些区别的。神腿门注重的练腿的力量,我们地趟门练的是轻巧,所以我们蹲马步和你们有一点不同,我们的双脚不是平行的,而是一脚微微在前,一脚微微在后,为以后的[急行花步]打基础。”
“哈哈,看来老兄是悟性很高的高手啊。嗯……俺是个粗人,不管这些,只管苦练。嗯……”
“呵呵,兄台过奖了!悟性是一方面,苦练才是最重要的啊!”
“嗯……”
“嗯……嗯……”
“蹲茅房能遇你这样一个知已,真的很开心!……嗯……”
“我也是……嗯……”
2006年8月4日
一年一度的鬼节,按我们家乡的说法,每年这个时候,先人就会趁着鬼门关开着,来家里做客. 而我们这些后人就准备好香火纸钱供奉. 今年我在长沙,离家不是很远.家人打电话要我回家,就为这事.
我要请两天假. 当时BOSS正在看SOFTICE,看都没看请假条,签了名,啥也没问,以至于准备好的请假词汇打了水漂.
在看电影的时候收到一个短信,来自康荣,内容触目惊心,原文如下:
杨其屋里跟别个打架,杨某给别人砍了!现在在派出所. 你姐夫肖军也来了.我还不懂为什么事打架.
随即回了个电话,他说杨旗在医院,我说明天上午回去.
回去再看看是怎么回事.
往昔与他共渡的日子,历历在目.上次见他是刘杰结婚,他喝了个烂醉,抓住刘杰乱说胡话.现在他在医院.. 我应该怎么办? 上次打架都是三年前的事情了. 小时候天不怕地不怕,一个混混欺负我, 我回家拿了菜刀,用报纸包着,插在腰间.. 现在的我,每天坐在电脑前码字的我,还能回去吗? 我不知道.
一晚吧,明天早班车回家.
2006年7月18日
在编绎BOOST::Serialization 例子的时候,遇到的错误.
// if your program traps here, it indicates taht your doing one of the following:
// a) serializing an object of a type marked "track_never" through a pointer.
// b) saving an non-const object of a type not markd "track_never)
// Either of these conditions may be an indicator of an error usage of the
// serialization library and should be double checked. See documentation on
// object tracking.
解决:
BOOST_CLASS_TRACKING(MyClass, boost::serialization::track_never)
2006年7月5日
2006年6月29日
乐心真是个才女,还会呤诗
无题
|
|
昨夜又去互动,
盒饭基本没动。
坐好不许乱动,
累得不想再动。
|
好诗,好诗..
我决定好好向她学习.
2006年6月28日
因为宿舍停电,热得要S,又要爬十七楼.所以昨天留在公司里了.
发哥和石英男在玩魔兽,我本来是等他们玩完,再一块回去的.没想到他们玩到两点钟.于是我就躺在沙发上睡着了.
因为没有枕头,所以一起来,脖子有点不舒服..酸酸的. 加上一晚上冷气都开着,一晚上都觉得冷,一晚上都没睡好.
下楼去买早餐了. ..
2006年6月27日
2006年6月26日
今天白天只睡一小会阿. 怎么又睡不着了.
晚上的菜好像放了不少盐,睡着睡着爬起来喝水. 一点睡意都没阿. 明天上班又要犯困了. 决定明天去买个牛奶. 睡前给喝一杯,也不知道管不管用.
临睡前吼一声: 让我的健美的身材都长满肥肉吧!!!(,减肥计划失败,,泡不到妞了)
啥P事都没有. 也不知道写些什么..
认真睡觉才是王道阿.. 不JJYY了. .
摘要: 因为进浩方玩星际,每次都要挤房间,所以做了一个挤房间的小工具.VC7.1 工程下载关键代码如下:
1
typedef
struct
_remoteparameter
2
{
...
阅读全文
2006年6月22日
暖和的春天来了,万物都苏醒了。苍蝇妈妈睡了一个冬天,也醒来了。她从泥洞里爬出来,嗡嗡的飞到厕所里,在大便上生下了很多黑黑的、圆圆的卵。
春风轻轻地吹过,太阳光照着。厕所里的粪水越来越暖和了。苍蝇妈妈下的卵慢慢地都活动起来,变成一群又白又胖的蛆,它们在粪水里游来游去,非常快乐。
有一天,蛲虫妈妈带着她的孩子到化粪池中来游水。小蛆们看见小蛲虫跟着妈妈在水里划来划去,它们一起游到蛲虫妈妈身边,喊: “妈妈!妈妈!”
蛲虫妈妈说道:“我不是你们的妈妈。我是小蛲虫的妈妈。”小蛆们问蛲虫妈妈:“蛲虫妈妈,蛲虫妈妈,您看见过我们的妈妈吗?请您告诉我们,我们的妈妈是什么样的呀?”
蛲虫妈妈回答说:“看见过。你们的妈妈和你们长得不一样,你们自己去找吧。”说着,急急忙忙地和它的孩子们游走了。
“谢谢您,蛲虫妈妈!”小蛆们高高兴兴地向前游去。
这时,一条蛔虫游过来了。小蛆们看见蛔虫和它们长得不像,它们想一定是妈妈来了,追上去喊妈妈:“妈妈!妈妈!”
蛔虫笑着说:“我不是你们的妈妈。我是小蛔虫的妈妈。你们的妈妈有六条腿,到前面去找吧!”
“谢谢您啦!蛔虫妈妈!”小蛆们再向前游去。
一只蚊子飞过来了。小蛆们看见蚊子有六条腿,心里想:这回真的是妈妈来了。就追上去喊:“妈妈!妈妈!”
蚊子笑着说:“我不是你们的妈妈。我是小蚊子的妈妈。你们的妈妈长的胖胖的,到前面去找吧。”
“谢谢您啦!蚊子妈妈!”小蛆们再向前游去。
蹲坑边一只屎壳郎“哼哼”地叫着,推着粪走了过来。小蛆们看见屎壳郎长的胖胖的也长着六只脚,高兴地想:这回可真的找到妈妈了。追了上去,连声大喊:“妈妈!妈妈!”
屎壳郎笑着说:“小朋友,你们认错了。我不是你们的妈妈,我是小屎壳郎的妈妈。你们的妈妈头顶上有两只大眼睛,穿着黑衣服在空中飞,唱起歌来‘嗡嗡嗡’的,你们到前面去找找吧!”
“谢谢您啦!屎壳郎妈妈!”小蛆们再向前游去。
小蛆们游呀、游呀,游到一泡稀屎边,看见一只苍蝇坐在黄黄的大便上“嗡嗡嗡”地唱歌,它们赶快游过去,小声地问:“请问您:您看见了我们的妈妈吗?她胖胖的,和我们长得一点都不像,头顶上有两只大眼睛,有六条腿,穿着黑衣服,唱起歌来‘嗡嗡嗡’的………”
苍蝇听了“嗡嗡嗡”地笑起来,她说“唉!傻孩子,我就是你们的妈妈呀!”
小蛆们听了,一齐摇摇尾巴说:“奇怪!奇怪!我们的样子为什么跟您不一样呢?”
苍蝇妈妈笑着说:“你们还小呢。过几天你们会变成蛹;再过几天,你们又会长出六条腿来,等腿长齐了,就跟妈妈一样了,就可以飞到任何大便上细细地品尝了。”
小蛆们听了,高兴地在水里翻起跟头来:“啊!我们找到妈妈了!我们找到妈妈了!好妈妈,好妈妈,您快到我们这儿来吧!您快到我们这儿来吧!”
苍蝇妈妈在小蛆们的旁边飞来飞去,和她的蛆孩子们一块儿游玩去了。
在天涯看到这个奇恶心的帖子! 我决定转过来.
实在想不出有什么好的标题.就写了个日期了. :)
再过两个星期,我就上了一年班了.去年7月4号第一天上班.整整一年. 一年里,成长了!成熟了? 或者还有其它变化.. 想不出个所以然来.
2006年6月12日
这一觉睡得可真爽。睡足之后打星际也特别带状况,这不,一回都没输。 呵呵,尽选菜鸟揉阿。
晚上去赵尉MM去堕落街吃口味虾,味道美美的,我决定下个星期再去。
花花最近上班很忙
李国帅最近在泡杨小荣
虫子最近要考英语
赵尉要考四级
刘杰在家忙着生孩子
王斌在家和周芬甜密
何康在家混日子
婷婷在干嘛呢
还有眼镜妹,放暑假不知道会不会回来
小谭新泡一妞,成天在家ML
... ...
2006年6月11日
明天星期天,现在是凌晨三点多. 打算睡一整天的,所以,现在无论如何都不能睡.
最近一个星期,几乎每天都是2,3点睡.早上8点半起床..咚咚咚跑到公司.持续一天脑力的消耗.还不觉得累.很久没有像现在这样不受打扰的写下一些文字,记下心情,发发牢骚. 大多数的时候,宿舍会冷不丁的冒出来一个人,对着你的屏幕看两眼,感到无趣之后,旋即离开.住集体宿舍就是这样吧.
当我同时想说几句话的时候,往往一句话也说不出来. 因为不知道先说哪一句才好. 就像载波侦听协议,一个总线,但要几台机器要使用.. 还是要分个条理出来.
现就以下几点说明近况.
生活:
衣:因为夏天来了,所以买了两背心. :) 坦胸露背的,不敢穿去上班.虽然我挺喜欢的.凉快嘛.
食:我姐说我再胖,就看不得了. 我也这样想. 所以决定少吃点.早餐就吃一麦片,好容易捱到中午,中午的饭菜比起学校来,要丰富很多.厨师也很到位的搞点有营养的菜色,只是味道嘛.. 不敢恭维. 晕. 这半夜三更说得吃的,还真有点馋了.晚上没有公司的吃了. 所以,形式多样化. 一,去菜市场买菜,自己DIY一顿晚饭(当然大多数时候是室友动手,我负责发表赞美或批评的言论,当然啦,大部分是赞美). 二,去"一家面馆"吃面.我喜欢面食 > 喜欢米粉. 三,回到宿舍,打电话叫盒饭. 四,去朋友那蹭饭.五, 去西饼屋买面包,饼干充饥.
住:住宿舍.有蚊子咬我,蚊子傻B,放着O型血不吸,专吸我这AB型的.怕是想换换口味.如果真是这样,我就原谅它们.
行:奔波于宿舍与公司之间,倒也不远, 步行<10分钟.
工作:
感情:
未完成.. 4点了. 困了,睡了..