摘要: 今天上完课回来继续把昨天晚上身下的using字句完成。使用Syngram写编译器真是舒服啊,直接在代码里面加两条推导式就完成了。昨天发现了InsertEnv指令的bug以后,改过来了。不过InsertEnv不能用在using身上,只好另外写了一个UsingEnv指令,把环境以及上游的链表而不是多个环境插进当前的环境中。这里展示了class和namespace是如何通过闭包(函数)来实现的,以及他们的构造过程。
class以及namespace都是通过在return的跳转目标后添加指令而保证return结束但是不修改class和namespace表达式的返回值。
class函数的参数是父类的构造子,class函数在所有代码之前首先构造好一个父类的链表,然后通过InsertEnv将这个表引用到自己身上,从而实现了正确的scope。然后让constructor为空函数。ClassName.new()的时候首先运行class函数(使用callctor而不是invoke来自动找到父类并添加到参数中),然后复制堆栈,获取construct 阅读全文
摘要: 今天抓到了一个隐藏了3个月的bug。这个bug以前一直没有被找到,因为以前写的用于测试脚本的代码都没有出现类成员函数使用非全局的外部对象的情况。Vampire.Kiss用我的Vczh Free Script代替PHP开发了一个网站,过程中也向我提了不少要求。其中有一套就是想在脚本中加入namespace。其实这是相当合理的,只是我没想到脚本第一次应用就会被用来开发库。因此今晚就加上了namespace。
实际上在目前的结构中添加namespace并不复杂,因为namespace也可以用闭包来模拟。其实闭包不仅仅是函数,而是一段带了上下文的指令表。因为namespace本身也是用于控制符号在上下文中解释方法工具,因此使用闭包来做也就是十分合适的了。想到以前是用闭包模拟class的时候,曾经实现了一个把一堆环境链接到上下文中的指令。类的继承实际上也是控制符号在类成员函数的符号在上下文解释方法的工具,因此我使用了如下方法来让闭包可以顺利地模拟class的继承: 阅读全文
比如我开了2个终端,ttyp1空着,在ttyp2上gdb loginserver跑起来之后,who看有ttyp1和ttyp2,ttyp1上有bash,sshd,ttyp2上有bash,sshd,gdb,loginserver。
我关了ttyp2,再看who只有ttyp1了,ttyp2上的bash和sshd没了,但是gdb和loginserver还在,假如我kill掉loginserver,gdb也会跟着关掉,我现在想要gdb和loginserver重新回到ttyp1的控制里,感觉上就是从ttyp1的STDIN里读,往ttyp2的STDOUT里写,怎么做?
gettty貌似有这个功能,但是他不算是一个utility tools,watch可以,带-W参数还可以写,但是需要root权限,而且还是和接管这种感觉差了一点,因为我对服务器管理实在很差,哪位看到了知道怎么做可以留言给我,不甚感激。
看待事物的最重要的立场问题?
1)动手去解决问题之前,好好想想问题的来源;2)
如何站在各个角度来看待面临的问题,以能够知道其真正所在;如何去尝试那个最能解决真
正问题的方法,并且时刻保持警惕心;3)为什么不要把人们的解决方法误认为是问题的定义,
更不要把某个问题的解决方法误认为是问题的定义,特别是这个解决方法是你自己所使用
的;4)永远都不要肯定自己已经有了一个正确的定义,即使是在问题好像已经解决之后。
该开始解决问题?
5)每一种解决方法都会带来新的问题;6)问题最难以处理的
部分恰恰是去意识到它们的存在;7)在理解问题之前,至少要做好准备接受三种可能的出错
情况;8)或许还可以改变问题的表述来获得不同的解决方法;9)当你沉迷于寻找问题定义和
解决方法时,不要忘记随时都回头看看,看看自己是不是已经迷路了⋯⋯
人多变,动物也多变,这是我们该怎么办?
10)当别人能够很好地解决自己问题的时候,千万不要越
俎代庖;11)如果某人能够解决这个问题,但是他本人却并不会遇到这一问题时,那么你首
先要做的就是让他也感受到这一问题;12)不管看上去如何,人们很少知道他们要什么,直
到你给了他们所需要的东西;13)甚至,事实上,并没有多少人真的希望他们的问题被解决。
摘要: "Designing Qt-Style C++ APIs" by Matthias Ettrich
http://doc.trolltech.com/qq/qq13-apis.html
翻译这篇文章的目的不是让人了解Qt,而是让人试着学习点C++编程的软技能。我从原文中得到的一些风格上的体会,也希望你能从中有所收获.(译者注)
... 阅读全文
自己写的俄罗斯方块 ,希望高手多指点 russia
摘要: 写的太杂,实在没法写题目,就用这一周的签名吧,很合现在的心境。
Kevin眼中的我,大概是个重视理论算法胜过编程实践的人,而我的算法和理论基础尚差的出奇(可能这就是知耻而后勇吧:D),可见我的编程实践又会多么的差了。Bugs更是对我整日沉浸于这些不着边际的“空中楼阁”颇有微词,甚至嗤之以鼻。今日若不是要把自己前段时间的豆腐渣粉饰一番,我依然不愿去考虑多线程的具体实现,或者... 阅读全文
摘要: 前几天发了这篇《用fstream对二进制文件的读写》,有朋友指出了VS2005的fstream对于中文路径支持不好的bug。我想大概是因为VS2005更加重视了对字符串的全球化支持,所以鼓励我们使用unicode编码的字符串,对于MBCS之类的支持可能就疏忽了吧。
我搜索了一下这个问题的解决,参考了如下资料写了演示代码。
fstr... 阅读全文
摘要: 准备: 在这里本文将遵循上一篇文章的风格,只提TCP协议中的要点,这样我觉得可以更容易地掌握TCP。或者根本谈不上掌握,对于这种纯理论的东西,即使你现在掌握了再多的细节,一段时间后也会淡忘。 在以后各种细节中,因为我们会涉及到分析一些TCP中的数据报,因此一个协议包截获工具必不可少。在<TCP/IP详解>中一直使用tcpdump。这里因为我的系统是windows,所以只好使用win... 阅读全文
摘要: 1/**//* (MST: minimum spanning tree) 2 * 描述: 设G = (V, E)是无向图,求最小生成树T(U, E')。 3 * 4 * ... 阅读全文
了解了一些CEGUI 基础的东西,觉得确实是个好东西,咋以前没早用她呢
cegui的widget一般都是texture绘制吧,也就是将 raster-image render到widget面。
之前正好把librsvg移植到wince上,看看是否能将svg扩展为cegui::drawable 对象, backend就采用 opengl
准备cegui到wince的移植工作
摘要: 实现应用程序的图标隐藏,2nd和S60的3rd差别很大,相对来说3rd因为有一个[appname]_reg.rss文件,所以显得很简单,默认的在APP_REGISTRATION_INFO中有一个属性值:
BYTE hidden = KAppNotHidden;
我们要实现图标隐藏,只需将其值赋为KAppIsHidden即可。具体示例代码如下:
RESOURCE APP_REGISTRATIO... 阅读全文
摘要: 第二版的开机自启动比较麻烦,需要涉及到创建mdl文件并且需要在mdl中将另一程序开启,所以略过。至于第三版的开机自启动相对来说更加简单些:
假设你的应用ID为:ef37946b
1)在data下新建一个文件, [ef37946b].rss(注意加上[])文件具体代码如下
#include <startupitem.rh>
RESOURCE STARTUP_ITEM_INFO d... 阅读全文
摘要: 首先,需要使程序有获知焦点变化的能力。具体通过在AppUI类中重载CAknAppUi:: HandleForegroundEventL(TBool aForeground )函数来实现。
其次,在获知焦点变化的同时,改变应用程序的焦点,通过TApaTask::SendToBackground()和TApaTask::BringToForeground()两个函数来实现。由于这里用到的TApaTa... 阅读全文
摘要:
TCP是TCP/IP协议簇中传输层上的一种网络协议,它是一种面向连接的、可靠的协议。为了提供这种可靠性,TCP实现了各种有效的机制、算法。为了从一种宏观的角度去了解这个协议,这里先大致地提一下与之相关的概念。
1. 什么是‘面向连接的’? 引用<TCP/IP协议详解>中的概念: 面向连接意味着两个... 阅读全文
摘要: 这里介绍使用fstream这个类完成这个任务,fstream在输入输出方面比较全能。
操作系统通过二进制文件格式存储大量文件。一般不指定二进制文件操作的I/O操作是面向文本的,用来读写特定编码的文本。本文介绍用C++的fstream类读写二进制文件。
读写数据以这个WebSite结构体为例
// S... 阅读全文
摘要: CEGUI有背景图片的BUTTON:
昨天听到刀哥问我对Looknfeel写东西有没有什么心德体会.说实话,我还真正的写过一个wideget.然后突然就有一个冲动想法.很多东西不写是不会熟悉的.我就参考刀哥的方法写了一个BUTTON
有两种方法可以实现,一为在Looknfeel文件中直接修改 阅读全文
摘要: 有个同学近来一直在做一个魔兽世界战况分析(名字好像叫DeusCraft),说是很火。只是用C#觉得不是很爽,想移植到C++上面来。但是那个东西在分析的时候用了好多正则表达式,于是只好找了些正则表达式引擎来测。
测试的文件一共有27万多行,首先通过一个检查时间的正则表达式。如果成功,则在接下来的20几条正则表达式中验证字符串命中哪一条,然后开始做剩余的工作。原先在C#上花了12秒分析,后来换了boost的正则表达式花费40秒,然后从MSR上找了一个号称比boost快4倍的正则表达式引擎,结果还是40秒(都是微软的,咋差距这么大……)。于是同学用他自己做的正则表达式引擎花了23秒(此数据不太记得),我用我以前那个东西花费108秒(-_-|||)。
于是我们这几天就在优化正则表达式引擎,到了今天同学那个花费13秒,我那个12秒。Visual Studio 2008 Team System上有一个Performance Wizard,用于在程序执行的过程中统计各个函数所占用的时间,可以方便定位,看出效率瓶颈,非常好用。
阅读全文
摘要: 以前在学习非数值算法的时候,曾经了解过动态规划算法(Dynamic programming),以下是对Wikipedia上动态规划的翻译,图也是Wikipedia上的,仓促行文,不到之处,请方家指正。 这篇文章的术语实在是太多了,所以我在文中加入了少量注释,一律以粗斜体注明。 本文的不足之处将随时修正,MIT的《Introduction to Algorithms》第15章是专门讲动态规划的。 _... 阅读全文
摘要: 代码很容易阅读,以前做蓝牙项目时用户电话本搜索只用
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->static public string GetChineseSpell(string strText){in... 阅读全文
摘要: 昨天接到the9的人事mm的电话通知今天去公司面试,职位大概是开发岗位这些年来也一直没有面试的经历,闲在家里没事所以今天就去看看。the9.com =>张江高科技园区碧波路690号3号楼,google了一下具体位置,带了个导航仪开着桑哥走了。外环比较拥挤,25公里开了45分钟便到了碧波路,一个大拐就进了690号,接着一个小拐又一个大拐,直接将车停就进了车... 阅读全文
预计新项目会选择lua或python之一作为游戏的脚本语言。以前草草地接触过这两门语言,对于语法,以及嵌入进C/C++程序都有点感性上的认识。可能是受《UNIX编程艺术》中KISS原则的影响,现在总喜欢简洁的东西。所以我个人比较偏向于使用lua。
这两天翻了下网络上的资料,在lua的wiki上看到一篇比较lua和python的文章,草草地翻译出要点:
Python:
1. 扩展库很多,资料很多
2. 数值计算比较强大,支持多维数组,而lua没有数组类型
3. 本身带的c类型(?)支持处理动态链接库,不需要进行C封装(C扩展)
4. 远程调试器,似乎lua扩展工具支持
5. 自然语言似的语法
6. 对于string和list的支持,lua可以通过扩展库实现
7. 对unicode的支持
8. 空格敏感(代码不忽略空格),这其实可以使python的代码风格看起来更好一点
9. 内建位操作,lua可以通过扩展库支持
10.语言本身对错误的处理要好些,可以有效减少程序错误
11.初级文档比lua多
12.对面向对象支持更好
Lua:
1. 比python小巧很多(包括编译出来的运行时库)
2. 占用更小的内存
3. 解释器速度更快
4. 比python更容易集成到C语言中
5. 对于对象不使用引用计数(引用计数会导致更多的问题?)
6. lua早期定位于一种配置语言(作为配置文件),因此比起python来更容易配置数据
7. 语言更漂亮(nice)、简单(simple)、强大(powerful)。
8. lua支持多线程,每个线程可以配置独立的解释器,因此lua更适合于集成进多线程程序
9. 对空格不敏感,不用担心编辑器会将tab替换成空格
Useful Comments:
1. Everything is an object allocated on the heap in Python, including numbers. (So 123+456 creates a new heap object).
2. lua对于coroutine的支持更适用于嵌入进游戏,虽然python也有,但是并没有包含进核心模块
3.Python was a language better suited to Game AI
本来想去找点对于python的正面资料(嵌入进游戏这方面),但是居然没找到。客观地说如果单独用python做应用,python还是很有优势。现在心意已决,应该向leader推荐lua。
ps,希望能补充以上两种语言的特点。
摘要: 做了个DNS查询有关的程序,用到了DnsQuery和DnsRecordListFree这2个函数,拿到导师那里一用,竟然出现一个对话框,“无法将函数DnsFree定位于动态连接库Dnsapi.dll上”... 阅读全文
摘要: Accumulation Degree
Time Limit: 5000MS
Memory Limit: 65536K
Total Submissions: 248
... 阅读全文
摘要: CEGUI的中文输入:
目前为止为我解决的也是参考别人的方法改的代码,不知道哪位兄台有更好的解决方案?
源码如下: 阅读全文
摘要: return true if equal
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 bool strcmp( char* d,char * s){ 2&nbs... 阅读全文
摘要: 经常会在编写流驱动接口的时候必须实现一系列的接口,诸如 xxx_init,xxx_open,xxx_write等等,某些接口函数虽然无需功能的实现但也必须定义一个空的函数接口。由于多年的c++思路,利用虚函数(virtual)和重载(override)把这些驱动的实现封装起来,来简化代码量。程序的实现,采用了两种方式: 宏定义和类继承希望对编写wince 流驱动的开发人员有所帮助
Code hi... 阅读全文
摘要: 前几天的练习赛有一道计算几何题,一向讨厌计算几何的我推了一下之后就没做了。后来比赛结束的时候发现他们都过了,后悔不已。故做了一下,求三角形外接圆圆心那个我使用垂直平分线相交的那个做的。上次他们说有公式,我在书上找了个圆心公式,可是代进去不对。估计是书上公式写错了...
Bounding box
Time Limit: 1.0 Seconds Memory L... 阅读全文
本源码是对著名的开源代码CoolPlayer的扩充,其中有些来自于其它的开源代码,一切的版权属原机构或原作者。
在此对原作者致敬!
包含的功能:
1、支持mp3种格式的音乐文件播放。
2、通过插件支持其它格式的音乐文件播放。
3、支持换肤功能。
4、进行了汉化。
5、增加了mp3歌词显示功能。
6、增加了音乐搜索功能,要有网站和数据库支持。
7、增加了多文件,多线程的下载功能。
8、增加了编辑mp3标记功能。
9、支持网络播放功能。
10、改善原来的网络播放功能。
11、其它的改善。
技术应用:
1、mp3解码技术。
2、插件技术。
3、换肤技术。
4、C调用WebService技术。
5、多线程技术。
6、多文件,多线程的下载技术。
7、C读写XML文件技术。
8、还有很多。:)
欢迎联系探讨!
http://www.cnblogs.com/Files/wantfly/Src.rar
摘要: 华南理工大学软件学院本科05级3班,陈梓瀚(vczh)
游戏规则:
1:地图上可以建立三种炮塔塔,游戏有上、左两个敌人的起始点,两个起始点的敌人分别到下、右两个终止点。
2:每一盘有1000个等级分别从1-200的敌人从起始点出发自动寻路前往终止点。如果有10个敌人到达了终止点的话则游戏结束,玩家输。如果所有的敌人都被消灭或到达终止点之后,到达终止点的敌人没有10个的话则游戏结束,玩家赢。
3:建立炮塔的方格敌人不能通过。在建立一个炮塔的时候,如果程序发现这个炮塔的建立会导致敌人找不到任何路径前往各自的终止点的话,则建立被禁止。
4:炮塔可以是用金钱建立或升级,可以卖出货的金钱。消灭敌人能够获得金钱。
5:三种炮塔分别是
·升级后数量变多,射程变长,攻击力变强
·升级后速度变快,射程变长,攻击力变强
·升级后一次爆炸伤害的范围变大,射程变长,攻击力变强
·升级一次后减速范围变大,减速因子变大
6:炮弹在 阅读全文