RSS 2.0 Feed
2004-05 Entries
摘要:http://blog.joycode.com/roboo/gallery/780.aspx 胡乱贴的,大家别生气呀。 这个是今年五一在自己家的一亩三分地上照的...[阅读全文]

posted @ | Feedback (8) |

摘要:其实Visual Studio的IDE环境是我见到的最好的编程环境了。 聪明的智能感知,老实讲,这样的功能实现起来并不是多么的深奥,但是细致的考虑真的不得不PF一下。 在一定程度上来讲,如果使用Visual Studio .net 或者(Visual Stuio6)进行一种特定语言的开发也真的是没有多大的必要进行再一次的开发,因为VS本身就支持这样的功能,就拿我们现在要用到的atlas语言来说吧,首先只要定义了atlas的语法文件,就有办法让Vs.net 2003 来支持。 http://udn.epicgames.com/Two/UnrealScriptHighlighting 有比较详细的讲解。   但是有的时候,这样使不够的。我们的这个应用必须显式的支持多种语言,尤其是这个atlas语言。 另外,VS仅仅做到了关键字加亮的程度,有的时候我们需要做到Visual Assist 这么智能的感知,包括对于变量名称,函数名称的提示。   1.代码加亮 因此,决定自己来做语法加亮引擎,同时在制作加亮引擎的同时,留出编程接口,以便第三方开发出更好的加亮引擎。坦白讲,这样做也有逃避劳动的嫌疑,因为自认为语法加亮本人无法做到特别的好。 2.design window 由于项目应用的特殊性,不能使用我们常见的按钮,输入框这些控件,必须使用元器件类似的控件,因此design window需要用VC来开发,并预留开发接口,以便将来更多的元器件库的加入。其实这里的所谓接口是很简单的,也没有必要做成ActiveX那么复杂的。只要是包含指定API函数和指定类型的dialog的DLL文件即可,复制到软件运行的control目录即可。 3.编译,链接 我们这样的小公司不可能自己做编译器了,所以我们的编译是调用语言自己本身提供的编译器来实现的,事实上VS本身也是这样实现的,不过按照标准,首先声称make文件,然后再进行编译,以便将来这个开发软件也可以运行在非windows平台。 moslem提供的方法自然也是可以的,不过我采用的办法是利用管道,这样用户在编译的同时就可以看到输出的结果,而不是等到最终。 此外,由于需要支持多种语言,而不同语言的编译器的输出文本格式是不一样的,因此需要将对编译器的文本输出的分析单独做成一个DLL,以实现错误定位的功能。 4.调试 为实现调试的功能,编译器首先是必须支持Debug开关的,否则即使可以用SoftIce设置断点,意义也不是很大,小马哥给我介绍的PCH 和PDB文件的方法我现在还没有时间进行。 整个这个编辑器的开发,我对调试这一块是最没有底的,大家有什么好办法呀。...[阅读全文]

posted @ | Feedback (10) |

摘要:  最近打算做一个支持多种语言的编辑器软件,思路是不仅要支持C/C++,Basic这些基本的通用语言,还要支持一些大家都不是很了解的语言,比如atlas语言 为此要求对于语法加亮,编译,链接,调试都需要用接口来实现。share一些信息大家共勉。 Scintilla is a free source code editing component. It comes with complete source code and a license that permits use in any free project or commercial product. 一些基于Scintilla 的软件 jEdit is a good Open Source syntax colouring editor written in and for Java. SynEdit is a Win32 edit control written in Delphi. 现在也已经有了基于Scintilla 的支持.Net的版本 ScintillaNet is an encapsulation of Scintilla for use within the .NET framework.  ...[阅读全文]

posted @ | Feedback (8) |

摘要:一直以来,.Net平台被人们在各个角度来和Java平台进行比较。大家得到的一个共识是.Net很好,但是.Net阵营的厂商太少。但是所有的一切现在都改变了,先是IBM和SAP,后来是SUN,现在Oracle也加入到了这个阵营来了。 现在的这个合作似乎是MS的develop partner级别的合作,将来应该会有更紧密地合作。估计就是类似VSIP这样的开发伙伴。 不得不佩服MS,这个绝对是一个多赢得结果。MS通过这样的合作使得众多的Oracle的开发者更加喜欢Visual Studio,Oracle则可以增加自己的占有率,象我这样适用Oracle进行开发的开发者可以更方便的适用VS来开发。如果说冲击,那就是对于SQL Server的冲击,不过这样也好,SQL在没有平台的保护下,可以尽可能的和Oracle竞争,得益的还是大家,包括MS和Oracle. 不再怀疑.Net的未来,不再犹豫基于.Net的应用。恰逢我的第100篇Blog盛事。。。。。。 Oracle joins Microsoft developer program...[阅读全文]

posted @ | Feedback (8) |

摘要:试想如果另外一个城市的消防车去邻近的城市救火,却发现无法和这个城市的消防栓对接,这是多么可怕的灾难?美国人在上个世纪初就有了下了统一接口的思想,现在再强调这个也不为过。而那个时候的山西王却在专门修建不兼容的铁路。 不知道大家有没有听说过IVI,关于IVI的详细信息可以去这里察看:http://www.ivifoundation.org/ 其目的就是实现在测量系统中,不修改任何的软件代码,就可以换上其他规格甚至其他厂家的同类型产品。无论如何,美国人的这个近乎异想天开的想法,现在正在慢慢的转变成为现实。 没有PC兼容的规范,没有API接口,很难想象微软的软件可以象现在这样的大行其道。软件产品市场的细分,注定不可能由一家将软件市场做大做强,因此国内的软件厂商或者说IT厂商应该将眼光放得长远一些,不要在意一时的得失。只有市场产生了足够的需求,联盟厂商足够多,符合规范的产品覆盖面足够宽,这个市场的春天才真正来到。因此往大的说,大唐完全没有必要紧抱着所谓的3G标准不放,将其看成是自己的最后一根救命稻草,往小的说,做共享软件的软件工作者们,也真的没有必要各自开发一套自己的数据包,将本来没有任何意义的数据作为自己的敛财之道。 这几天准备驾照的理论考试,下载了几个驾照理论考试的软件,这几个软件的内容都一样,但是所选用的数据源都不一致,有SQL Anywhere的,有DBF的,甚至还有自定义数据文件的,真的是被打败了。...[阅读全文]

posted @ | Feedback (4) |

摘要:help.net 上刚刚贴了一个 viewstate decoder ,记得以前sam似乎也讨论过这个问题,不知道最后结果如何了。 MVM 又提到了让程序员伤心不已的问题,给大家介绍一本书,仁者见仁。真正的问题是我们如何由coder的身份转换成为developer的身份。http://www.codertodeveloper.com/ 前段时间,花时间将一个程序的执行时间从1小时减少到40秒,可见程序代码的优化是多么的重要。MSDN上有一篇文章,值得一读。Write Faster Code with the Modern Language Features of Visual C++ 2005 想起去年TechEd 2003的一个问题(印象中好像就是 展播兄提问的),managed code faster or native code faster? 我现在觉得当时给的答案也不对,因为代码的执行效率应该和平台没有关系,关键在你的算法和程序结构。。。...[阅读全文]

posted @ | Feedback (5) |

摘要:一般来讲,应用程序申请的内存是虚拟内存。这种情况下申请到的内存有可能被操作系统Swap到内存景象文件中,操作系统会根据系统中运行的所有程序对内存的需求来判断哪些内存数据会被Swap Out/In 有些应用程序处于时效性的考虑,希望内存被时刻保留在物理内存中,程序只要不退出,数据就永远在物理内存中,为确保这样的应用,一般来讲有两种方法: 1.Platform SDK: Memory Management 中有一系列的函数可以来实现这样的功能。其中VirtualLock 当仁不让。 2.Windows DDK 中的一些列函数  IoAllocateMdlMmInitializeMdlMmProbeAndLockPages 但是似乎大家对于Platform SDK 提供的函数没有足够的信心,在www.ntdev.org 上大家就此问题争论不休,甚至有的人公开怀疑MSDN 文档的准确性。 就我个人认为,我觉得DDK的方法肯定是最为保险的,VirtualLock会不会被swap out了真的很怀疑。如果申请VirtualAlloc的程序长时间不去access这段内存,操作系统仍然会为他保存吗? 不过,今天写这个blog的真正原因是有一个朋友希望用 占用内存的方法来曲线修复自己的内存。我这个朋友的笔记本内存使用docmem检查到有一段内存有问题,为了这区区几M的内存重新买一条又觉得不合适,因此决定采取 首先启动一个程序占用这些内存的方法让操作系统不要为系统中其他的应用分配这段内存,避免出现死机的情况,无论能否成功,这个思想确实是匪夷所思。 BTW: docmem 可以得到物理内存的实际地址...[阅读全文]

posted @ | Feedback (15) |