Not a good idea to throw exceptions in destructor in C++

When using try-catch blocks in C++, it is not a good to throw exceptions in destructor. Briefly, it may cause SIGABORT at runtime since the exception thrown in destructor may not be caught.

In MAC OS, you will get a “terminate called without an active exception” error. Then cause unexpected errors further on.

In Linux and Windows, the exception thrown in destructor will be caught by system. Then the program terminates

Continue reading Not a good idea to throw exceptions in destructor in C++

Not good to crack on not pure MS-DOS

When I was trying to hack a program from my lecturer, I found a strange thing.

That is the memory block which should be “901C” turns into “3F”.

I am not sure why this happens, but I did some test on it. Hope it is helpful to you.

When you pass “901C” to an program by command line input of MS-DOS in Windows XP Chinese version, “901C” will automatically translated into “3F” which is a question mark.

However, this will not happened in the MS-DOS in Windows XP English version (original version).

I’ve tried other binary words. Finally, I found that if character A is greater than “7F”, it will be considered as a character using GB code. If this pair of characters is not a valid GB coded character, it will turns into a question mark which is “3F”.

ldd on Mac OS X

I was used to use ldd on Linux and Solaris to print out the dynamic library linkage.

However, there is no ldd on Mac OS X but a equivalent tool called otool.

Here is the usage:

Usage: otool [-fahlLDtdorSTMRIHvVcXm] <object file> ...
	-f print the fat headers
	-a print the archive header
	-h print the mach header
	-l print the load commands
	-L print shared libraries used
	-D print shared library id name
	-t print the text section (disassemble with -v)
	-p <routine name>  start dissassemble from routine name
	-s <segname> <sectname> print contents of section
	-d print the data section
	-o print the Objective-C segment
	-r print the relocation entries
	-S print the table of contents of a library
	-T print the table of contents of a dynamic shared library
	-M print the module table of a dynamic shared library
	-R print the reference table of a dynamic shared library
	-I print the indirect symbol table
	-H print the two-level hints table
	-v print verbosely (symbolically) when possible
	-V print disassembled operands symbolically
	-c print argument strings of a core file
	-X print no leading addresses or headers
	-m don't use archive(member) syntax
	-B force Thumb disassembly (ARM objects only)

 

To use it like ldd, just type

otool -L executable

For example:

$ otool -L a.out
a.out:
	/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)

unsigned long DOES NOT work on SOLARIS

When I doing an assignment of mine, I found the output of my Mac and school Solaris system is different which should be the same.

After a series of testing, I found that unsigned long does not work on solaris. It works same as unsigned int.

Look at the C code here:

/* Author Name: Need-Being
   Modification Date: 17/08/11
   File Description: Test unsigned int and unsigned long */

int main()
{
        unsigned int a = 0;
        unsigned long b;

        a = ~a; /* Make it maximun of unsigned int */
        b = a;
        b += 1;

        printf("%u\t%lu\t%s\n", a , b, (a < b)?"Works":"Does not work");
        printf("%d\t%d\n", sizeof(unsigned int), sizeof(unsigned long));

        return 0;
}

The output should be “4294967295 4294967296 Works” and “4 8”.

However, the actual output is

$ a.out
4294967295 0 Does not work
4 4

The unsigned long behaves the same as unsigned int.

Test is processed on a sparc machine in my faculty:

$ uname -a
SunOS banshee 5.10 Generic_144488-17 sun4u sparc SUNW,Sun-Fire-V240

个人认为的智能AI(拟人机器人AI)的各个发展阶段

说起机器人AI,大家应该都明了。比如电影里面的终结者,日漫中的Chobits,现实生活中也不乏有各种各样的机器人。

那么对于一台用程序来控制的机器,我们应该怎么让其变得像人一样呢?如果真的变得和人一样,那么机器人可能会统治人类么?那么,我就从现有的聊天机器人说起吧。

Continue reading 个人认为的智能AI(拟人机器人AI)的各个发展阶段

N-Area 配图

高中时候随便用PS画的…对应地有篇考试作文的来着。

现在想想感觉那篇作文写的东西从博客地角度来说还是蛮不错的…(那是我高中得分最高的作文…)

不扯了…就把这张图拿出来当《N之国度》的封面图吧…

图片大小是: 1680*1050的,需要的话,可以自己裁减。

另外附上 《N之国度》第一话 的链接。

N之国度

[原创][连载]N之国度(最终话)

发布时间: 2011年08月03日 23:27

第五话 《超可爱的异变》 回顾:
超可爱党的首领“菠萝包”原来是来自21XX科学都市的失败试验体,拥有着超过Level-5的时空操控能力。爱好:萝莉。能力:把人变成萝莉。
由于不完全的时空操纵,结果出现在19XX年,包子在召唤出自己的空间的时候,同时也召唤出了N之国度,并为了满足自己的嗜好,把人变成萝莉。而这一切被HB所发现,因此HB被OOXX了。追寻异变的NB黑化后,把HB解救下来,然而HB仍在昏迷中⋯⋯

 

最终话 《「决战」 〜Final Rhapsody〜》

 

“HB,朕以科学之名呼唤汝!”NB正在超载着治疗HB的科学阵的运转,期待着HB快点醒来。
“⋯⋯”HB似乎醒来了!
“似乎治疗效果很好,不仅仅体力恢复了,连能力都恢复了。能战斗吧,HB!作为神之右手,把包子的幻想抹杀!”NB的双眼中显现出了怒火。
“HB, そんな装備で大丈夫か(这样的装备没问题吗)?”NB看着女装穿着的HB表示担心。
“大丈夫だ、問題ない(没问题)!”HB自信地回答道。
“作为人类的话,我可能不是你的对手。但,作为革新者的话,你并不是我的对手!”HB举起右手猛地向着BLB冲去。
“亡死来招,人迷爱可!女少法魔,有还,师酱是我”由于HB自身地魔法的发散,加上BLB超可爱空间内的加成,使得HB越来越可爱了。“1000%!你的幻想由我来破灭!!!”
神之一掌重重地击中了菠萝包,然而菠萝包却一点防御的姿势都没有,硬生生地吃了一套HB的大招。
“干掉了么?”HB筋疲力尽地问着NB。然而NB的脸上并没有喜悦,而是一片苍白,“HB……菠萝包巨大化了……”。

菠萝包之所以不防御,是因为它知道,用这么可爱的萝莉打扮来攻击自己,并不能造成任何伤害。反而因为可爱的力量最大化自己的各项能力。BLB的时间操控能力似乎也增强了。但由于受到Virus的影响,这股力量开始出现了溢出。超可爱空间内开始召唤出各种神奇的生物。
“HB,振作点!你不能在里体力不支。前面的菠萝包还需要我们去消灭,这么多生命正在等着我们去拯救。醒醒!!”NB对于这样突发情况,不知所措。
“NB,我刚才好像听到了有生物对请求:和我定下契约,成为魔法少年吧!”HB似乎有点犹豫,但是看到NB绝望的姿态,他觉定了,“赐予我打败菠萝包的力量,我接受契约!”
此时获得巨大魔力的HB,信心倍增,“一起上吧,NB。”
“我负责左翼,你负责右翼”NB指挥到,“3…2…1…GO!”
黑化了的NB以5倍速,从左翼突破众多萝莉,前往BLB本体。与此同时,HB以他的超强能力,从右翼突破,前往BLB本体。在两个人交汇的同时,划出了炫彩地十字。随着一声巨响,巨大化的菠萝包消失了。(同时2011年在地面上的11区附近发生了巨大地地震…)

“终于干掉了BLB了,HB。”NB欢喜道。
“是啊…”HB却回眸一笑,“N之国度公主Sophia就交给你了…我先走一步了…”
“HB,这是什么意思?HB!!!”NB非常不解为什么HB在胜利之后却放出了死亡Flag。正在此时,HB正在变成粒子,消失在了空气中,留下了一个混浊的黑核。”
“超可爱…超可爱…”一个个不明物体正在接近HB留下的黑核。NB猛然一看,这些不明物体正是菠萝包!!!
“难道没有消灭么?!”NB思索着,而他的装甲却提示着NB:这并不是使魔,而是菠萝包的幼体。NB似乎忘了一个细节,刚才战斗中HB是以可爱的形式去攻击的(毕竟是魔法少女),所以再一次大幅增强了菠萝包的能力。如果这些幼体在接下去的时间内发动时间操控能力,到各个空间长大成成体,那么整个世界就结束了。

“错的不是我,是世界!错的不是我,是世界!错的不是我,是世界。”NB开始绝望了…

“看剑!”一把冰剑从NB地脸颊边上划过,留下了血痕。
NB猛然地从绝望中惊醒,也因为一丝冰凉,让NB镇定下来了。眼前站着的是——N之国度公主Sophia…

“NB,你最差劲了。”冰女眼中渗出了一丝眼泪。

NB从冰女那里了解到,当初冰女来刺杀NB,并不是为了其他,而是认为这场异变是由NB这个Mad Scientist造成的。前去消除异变的HB久久不能归来,由此冰女就怀疑是NB的原因,认为是NB杀了HB,所以就去刺杀NB。然而她现在却看到了这一幕…她错了,我也错了…
“你不是狂气的Mad Scientist么?!”冰女把希望寄托到了NB身上,“做点什么!”

NB突然意识到,因为菠萝包时间操控能力地溢出,自己久久不能实验成功的时间机器说不定在这样的情况下可以成功跳往过去。
“紧急事态,瞬间把实验机NB204 ver3.14传送过来”只见NB双手一合,对手中的胶囊发动炼金术,把其编程通讯工具和NBG进行联系。
“NBG,接受请求。实验机将在5秒内传送到…”NBG机械回答道。
“冰女,对不起…”NB看着这最后一丝希望,启动了时间机器…

 

…………<<<<<…………

 

“大丈夫だ、問題ない(没问题)!”HB自信地回答道。
“时间跳跃成功了么…”NB自言自语道,“必须阻止HB在可爱状态下发动攻击!”
“HB,你作为革新者,这样的装备真的没问题么?”NB指了指HB身上的少女装扮。
HB似乎刚刚才发现这一点(估计是刚复活,太热血了),瞬间面红耳赤。
NB再次问到:“そんな装備で大丈夫か(这样的装备没问题吗)?”
“一番いいのを頼む(请给我最好的装备)。”HB请求道。
“紧急事态,瞬间把试验机NB400 Gundam ver.传送过来”NB很熟练地进行乐通讯炼成。
“NBG,接受请求。试验机将在5秒内传送到…”NBG机械回答道。
HB惊讶不已:“NB你竟然连高达都造出来了…果然是技术宅。”
“这样才是革新者需要的机体嘛。”NB笑道。

“我负责左翼,你负责右翼”NB指挥到,“3…2…1…GO!”

“おれは男だ!”HB从右翼突破重围,来到了菠萝包面前。此时NB正好从左翼过来。空间内绚丽地出现了一个双十字…

“HB,机体合体准备,黑魔法全开” <- NB | HB -> “NB,机体合体准备,GN粒子全开”

“秘技「NxH Rhapsody Boost!!!」发动!!!” NB&HB两人成为了一道黑色和亮绿色相容的光束贯穿了菠萝包。

 

“不可能!!喜欢萝莉的我,怎么整场一句话都没说就死去了…”菠萝包在说出“我还会再回来的”之前被彻底消灭了。

 

此时刚刚赶到的冰女,流泪奔向HB…随着超可爱空间的坍塌,NB启动了NB400内部空间转移装置,带着HB和冰女,还有依然沉睡的约束离开了这个空间,回到了N之领域。

 

“NB,谢谢了”,HB感谢NB。“我…我才不是因为你帮助了HB才来感谢你的呢!”冰女随着HB一起感谢着NB。NB只是笑了一笑,因为他知道,在数小时之前,HB已经从某个世界线上离去了,因为自己的错。所以他要珍惜现在的这一切。NB挥了挥手,开启了通往NBG的实验室(住所)的传送门…………

Data:
Name:          NB
Full Name: Need-Being
Weapon:     Power of science (科学之力)
level:             Wizard Level (魔术师级)
Other Information: Unknown (不明)

 

最终话 《「决战」 〜Final Rhapsody〜》 完结

P.S. 至此,原创小说(应该可以称之为小说)《N之国度》正式完结!感谢大家的2年来的支持…因为坑了两年,所以最终话的内容并不是从群聊天记录里提取出来的。所以…这纯粹是脑补。望大家能够多多吐槽。

[原创][连载]N之国度(第五话)

发布时间: 2010年02月06日 22:30

第四话 《包子?能吃吗?》 回顾:
NB在逃离实验室的过程中被一种特殊的力量传送到了异界——萝莉幻想乡。在那里发现了被包子绑在十字架上的HB,NB瞬间黑化并把HB救下来了。然而HB仍在昏迷中……

 

第五话 《超可爱的异变》

 

21XX年,实验代号为BLB的克隆体在日本的科学都市培育着。作为政府最高机密行动计划,BZB的存在并不为人知。他被制作出来的理由是——世界征服,为了第五次世界大战的胜利。
“Bloody Lecherous Blade,BLB么。日本的未来就看你的了……”秘密实验科学家寄希望于在他身前的克隆生命体。
“博士,这就是新完成的实验体,如您所听到的,代号为BLB。”科学家的助手报告道,“如果这次实验成功,我们所培养的实验体讲获得神的力量——时空控制。”
“拥有了时空控制能力,这样世界就可以为我们服务了,就像是A(哔——)V里女(哔——)优一样,”助手邪恶地补充到。
“哈哈哈哈哈……这并不可笑嘛,”博士哈哈大笑,“现在准备注入浓缩改良基因因子”。

系统音:

Prepare to inject Concentrated Advanced Genetic Factor (GAGF)…“准备注入浓缩改良基因因子……”
Permission of administrator required.“管理员权限请求”
Operation Authorized.“获得管理员权限”
Inject in 5 seconds. “5秒中内注射准备”
5.
4.
3.
2.
1.
Inject! “注射!”

BLB in progress… “BLB进行中……”

“好いですよね、このテスト。”(实验似乎不错的样子)两人同乐到。

系统音:

System Error! “系统错误!”
Unknown virus detected! “受到不明攻击”
Level-1 Firewall hacked! “第一层防御系统 突破ましだ!”
…………
Last Firewall hacked! “最终防御系统 突破!”
Creature is out of control! “生命体 暴走 しましだ!”

“实验失败了吗?”博士惊慌到,“大家快速撤离!实验体周围时空正在出现异变!”
啊啊啊!

 

异变的开始:

 

BLB在受到攻击之后不规则执行了时空穿越,穿越到了19XX年。由于自身没有成熟时空操控能力,周围的特定时空将实验体BLB变成了一个 菠萝包(BLB)。 但是一个菠萝包在人类时空是无法拥有人格意识,即使出现也会因非在化而消失。所以它召唤出来了一个新的时空——包子的幻想乡。同时因不熟练的时空操作,召唤出了「N之国度」。

受到诞生时的Virus影响,包子的人格趋向于宅向。(难道说入侵这个计划的人是技术宅?并且还传输的是宅病毒? 技术宅真可怕,技术宅拯救全世界。)被定义为 萝莉控。

包子并不满足于现有的 二次元 和 三次元萝莉。 (当然做为时空的控制者,四次元到N次元的萝莉都不于满足。)
因此,包子开始不断地将地球上的人类骗入自己的 幻想乡(超可爱党),在该时空规则下,所有人人类都会萝莉化(Lolizing)。而且萝莉化(Lolized)的人类不能回到原有状态,除非脱离这个时空。包子的萝莉化(Lolization)能力如果还存在于原有21XX年空间,这种能力已经超过Level-5了。

就当包子不断招收后宫的时候,被HB所发觉并受到阻止。而包子毫不犹豫的使用了时空操作,直接把HB困在十字架上。
然后…这一次是 NB 了…

Data:
Name:    菠萝包
ID:      BLB
Nickname:包子
Party:   超可爱党
Aim:     把所有人变成小萝莉,变成超可爱党的一份子。
Ability: Over Level-5 时空操控
Others:  出身于21XX年,科学都市。活动于19XX。

 

第五话 《超可爱的异变》 完结

下集预告:
NB+HB>BLB

请看下集 《N之国度》最终话 《「决战」 ~Final Rhapsody~》