结构化Web编程语言Dart 支持在浏览器上 (Chrome, Safari 5+, Firefox 4+) 和服务器上运行。在浏览器运行需使用编译器转换成JavaScript代码。 Google发布的结构化Web编程语言Dart 地址 http://www.dartlang.org/ 示例: main() { var s = 0; for (var i = 0; i < 10; i++){ s += i; } print('Total:${s}'); } 官方有提供一个名为Dartboard的工具由于在浏览器中编写和调试代码。 Dartboard http://try-dart-lang.appspot.com/(被墙) 官方示例代码: http://code.google.com/p/dart/ 貌似被墙,先转一分语言规范文档文档到墙内,没有深入学习,故不做过多介绍。 Language Spec (29) Updated: 由于Dartboard被墙无法访问,挂了个反向代理,供喜欢尝试Dart的朋友使用 http://dart.ioio.name/ Updated2: 官方Dartboard地址 http://try.dartlang.org/ (某些地区应该可以访问)

Continue

本科的《编译原理》课程依稀在我脑中留下些许映象。当初的课程大作业是写一个叫Dicuf(貌似是这么发音)的编译器,在万恶的助教的鞭策下,我们使用了Lex和Yacc成功逃离了恐怖之狱。现在又要拾起编译来,还是有些挑战性的。 善其事,利其器。在网络上一番东游西逛,我对于时兴的一些语法分析器自动生成工具有了点了解。现总结如下,以资参考。 Lex/Yacc   它生于Unix,是最经典的词法\语法分析器,是经典教材中的示例御用工具。现在它也支持在Windows上生成(安装环境),然而其所生成语法分析器的语言仅有C语言。 Flex/Bison   与前者类似,Bison与Yacc有很高的兼容性。生成语言为C、C++和Java。 CoCo/R   较早的一个语法分析器生成工具。其生成语法分析器的语言极其之多,包括C#、 Java、 C++、F#、VB.Net、Oberon等等。 ANTLR   作为翻译程序的一部分,你可以使用简单的操作符和动作来参数化你的文法,使之告诉ANTLR怎样去创建抽象语法树(AST)和怎样产生输出。ANTLR知道怎样去生成识别程序,生成语法分析器的语言包括Java,C++,C#. 语法有点麻烦。 GOLD   它是一个较为复杂的分析器,支持语言貌似最多。生成语言包括(官网说的):Assembly - Intel x86 、ANSI C、C#、D、Delphi、Java、Pascal、Python、Visual Basic、Visual Basic .NET、Visual C++、所有.NET语言、所有ActiveX语言。难以想象这居然是个免费的软件。 Grammatica   这是一个C#和Java的语法剖析器生成器(Parser Generator或叫作编译器的编译器:Compiler Complier) 。它相对于其它一些类似的工具如yacc和ANTLR有了更好的改进。这是因为Grammatica:   1.创建了更好的注释和易读的源代码.   2.拥有错误自动恢复并能够详述错误信息.   3.支持语法/词法测试与调试. JavaCC   它是用JAVA开发的最受欢迎的语法分析生成器之一。它还提供JJTree等工具来帮助我们建立语法树。它还有一个用于辅助JavaCC应用程序开发的Eclipse插件.生成语法分析器语言为java。 还有很多语法分析器生成工具,比如JFlex、SableC、Beaver、JTopas、Runcc、CUP、SJPT、Chaperon。但我实在是没精力一一介绍了,之前实在没想到这工具如此繁多。    最后我选择了Grammatica,因为我需要C#语言的语法分析器,而且要求足够简单:)   我利用Grammatica的一个示例生成了一个C#的语法分析器,并移植到Silverlight项目上(由于另一个项目需要),目前运行良好。由于.Net与Silverlight.Net非常相像,这个移植工作比想象中要容易。不过,我不太赞成将语法分析器放到Web上,这样会使客户端明显增大,一种可以考虑的做法就是将用于验证功能的语法分析器封装成Web服务放到服务器端。

Continue

关于“PHP彩蛋”的说法也许很多老PHPer已经都知道或听说了,好像是早在PHP4版本的时候就有彩蛋了,挺好玩儿的,可能近年来逐渐被人们遗忘了,其实彩蛋功能在PHP脚本引擎默认情况下是开启。 http://www.discuz.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 http://www.discuz.net/?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 http://www.discuz.net/?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 http://www.discuz.net/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000 如上4个链接加红色的部分是PHP源码/ext/standard/info.h中定义的GUID值,如下图所示 点击查看原图 关于PHP彩蛋这个玩法已经被国外的某些Web漏洞扫描器(例如:HP WebInspect)所使用了,用其来探测被扫描的网站使用的是何种Web开发语言。其实在渗透测试过程中经常遇见某些网站难以辨别出使用了何种Web开发语言,因为有些网站采用动态脚本生成纯静态HTML页或者是采用URL重写实现伪静态页面,如果网站使用的是PHP开发的话,可以尝试使用彩蛋的探测法,在很多情况下可以一针见血的鉴定出来,因为默认情况下彩蛋的功能在php.ini中是开启的,当然如果不想让别人通过彩蛋的方式来获取网站的敏感信息的话,那就在php.ini中将expose_php = Off即可! 看完上面这些可能有些人会说既然php.ini中的expose_php = On,那么直接抓包看看http头信息不就OK了,可是某些大站点Web服务器的前面都是有反向代理服务器的,所以还不能完全依赖于捕获http头中的信息。

Continue

摘自C语言论坛。 写好程序,用gcc编译,带上-pg参数,然后运行以后分析gmon.out文件:

starwing@starwing-desktop:~/Work/prj$ cat test.c
#include 
#include 

int func(int i)
{
    return i <= 2 ? 1 : func(i - 1) + func(i - 2);
}

int main(void)
{

    printf("zzz: %d\n", func(20));
    return 0;
}
/* cc: cmd='' */
starwing@starwing-desktop:~/Work/prj$ gcc -o test -pg test.c
starwing@starwing-desktop:~/Work/prj$ ./test
zzz: 6765
starwing@starwing-desktop:~/Work/prj$ gprof ./test ./gmon.out
另一个C语言:
/**
*      file_name:      time_lost.c
*    description:
*
*        version:      1.0
*        created:      3:32 2009-7-21
*       revision:      none
*       compiler:      gcc 4.3.3
*
*         author:      prankmoon@gmail.com
*        company:
*/

#include 
#include 

/* just for test */
int foo(int n)
{
    int i;
    int sum = 0;
    for (i=0; i

Continue

1. 有时候我们要计算程序执行的时间.比如我们要对算法进行时间分析,这个时候可以使用下面这个函数. 精确到us。

#include  
int gettimeofday(struct timeval *tv,struct timezone *tz); 
strut timeval { 
long tv_sec; /* 秒数 */ 
long tv_usec; /* 微秒数 */ 
}; 
gettimeofday将时间保存在结构tv之中.tz一般我们使用NULL来代替. 
#include 
这个程序输出函数的执行时间,我们可以使用这个来进行系统性能的测试,或者是函数算法的效率分析.在我机器上的一个输出结果是: Used Time:0.556070

2.第二种是我自己经常用的,就是:

在执行程序前,加time,如:输入time./abc ,精确到ms。

3. clock函数(精确到1/CLOCKS_PER_SEC秒,毫秒级)
#include    
  #include    
  using   namespace   std; 
  int   max(int   x,int   y) 
  { 
        return   (x>y)?x:y; 
  } 
  int   main() 
  { 
          const   double   begin=clock(); 
  for(int   i=10000;i>0;i--) 
  for(int   j=10000;j>0;j--) 
  max(i,j); 
          const   double   end=
clock(); 

  cout   <

Continue

当程序中某一模块需要长时间重复运行时,比如这一模块被包围在很多重循环之内或是在一个被多次递归调用的函数中时,我们常常需要优化这一模块的代码以使其更高效地运行。这就需要对C语言中各种指令的执行时间有一个大致的了解。 下面是我经过研究得出的一些关于C语言中指令执行时间的粗略结论: 1。整型数除法的时间大约是整型数乘法时间的十倍左右(略多于十倍); 2。当整型数除法的除数是2的指数(如2,4,8,16)时,整型数除法所需时间和整型数乘法所需时间相当; 3。整型数的乘法所需时间大约是整型数加法的2倍左右(略多于2倍); 4。访问二维数组的操作所需时间大约为访问一维数组所需时间的2倍左右,数组的维数越高,访问其元素所需的时间就越长; 5。整型数求余(即%号)所需时间与整型数除法所需时间相当; 6。双精度型数的乘法所需时间大约是整型数乘法所需时间的2倍左右; 7。双精度型数的除法所需时间和整型数的除法所需时间差不多,前者大约为后者的3/4左右; 以上结论,如有错误,希望朋友们多多指正。

Continue

今天,又发现网上的这个50个好玩的QQ签名,一起分享一下,也算省了一些寻找和思索搞笑QQ签名的时间。 1、总有一天你的名字会出现在我家的户口本上! 2、将薪比薪的想一下,算了,不想活了。 3、活了二十多年,没能为祖国、为人民做点什么,每思及此,伤心欲绝。 4、我和脂肪做斗争,差点没牺牲 5、生活嘛,就是生下来,活下去~~ 6、再丑也要谈恋爱,谈到世界充满爱。 7、船撞桥头自然沉~~ 8、当你披上了婚纱 我也披上了袈裟~~ 9、我跟耶稣祈求踏实稳定的生活,他想了想说,咱们还是先谈谈世界和平的事吧… 10、爱我就大声地说出来吧!恨我就一辈子藏在心里吧! 11、趁着年轻把能干的坏事都干了吧,没几年了。 12、我在春天种下一堆男朋友,现在秋天到了,啧啧,居然颗粒无收~~ 13、你曾经对我说,会永远爱着我,爱情这东西我明白,但永远是什么? 14、七岁的小男孩是地球上最可怕的生物,他们有好奇心、行动力、破坏力以及《未成年人保护法》 15、人贵在言而有信——我说不还钱就不还钱! 16、夏天就是不好,穷的时候连西北风都没得喝,幸亏现在是秋天了。 17、我虽然相信海誓山盟,但是未必相信你啊~~ 18、凡我放不下的,必是因为我拥有不了的~~ 19、特别的人从来不说自己特别,比如说我。 20、我人生只会两件事 1 这也不会 2 那也不会 21、成人不自在,自在不成人~~ 22、我知道,天下无不散宴席,可是,至少,宴席上我要吃得爽! 23、解释就是掩饰,掩饰就是讲故事~~ 24、人和人不是客客气气就能相处的! 25、每当困难的时候我就念藏经:“噢嘛呢哞嘛哄”, 翻译成英文就是:All money go my home! 26、善良就是别人挨饿的时候,我吃肉不吧唧嘴~~ 27、我曾想成为一个问题少年,然而我却循规蹈矩地活了这么多年。 28.如果心情不好, 就去超市捏捏方便面。 捏捏族 29.谁耽误我一阵子,我让他后悔一辈子 。 30.关门一个月,不要叫我,因为一叫我我就会出来…… 31.出租车司机,司机中的战斗机,噢耶! 32.思想有多远,你就给我滚多远! 33.诸葛亮出山前也没带过兵啊,你们凭啥要我有工作经验!!! 34.工作的最高境界就是看着别人上班,领着别人的工资。 35.胖并憔悴着~~ 36.康夫你辞职的时候有没有考虑过哆啦A梦的感受!(去年日本首相宣布辞职时写的) 37.我风情又果敢,远目且踏实,品味上乘却又勤奋自省,缺点虽多,还望大家海涵! 38.你给我滚,马不停蹄的滚…… 39.做人一定要做一个蹦蹦跳跳的人。 40.我走我的阳光道,你过你的奈何桥。 41.人生最大的悲哀是青春不在,青春痘却还在。 42.世界是我们的,也是孩子们的,但最终是那帮孙子们的! 43.我们的宗旨是:为人民币服务! 44.好久没有人把牛皮吹的这么清新脱俗了! 45.最简单的长寿秘决————–保持呼吸,不要断气~~ 46.钱对你真的就那么重要吗?讲了3个多小时了一分钱都不降。 47.打死我也不说,你们还没使美人计呢! 48.等我有钱了,我就买一辆公交车,专门走公交专用车道,专门停在公交车站,等有人想上车了,我就说:对不起,这是私家车~~ 49.甲:人家十全十美,你怎么说也是十全八美~~ 乙:那我是缺哪两美?甲:内在美和外在美…… 乙:………… 50.钱不能带进天堂,却可以把“天堂”带到人间… 博君一笑,敬请笑纳。

Continue

记录群里:

=1;$i--){
	$t = $arr[$i];
}
$end = get_microtime();
echo 'for:'. sprintf("%s",($end - $start));
$start = get_microtime();
foreach ($arr as $t){
	$f = $arr[$t];
}
$end = get_microtime();
echo '
foreach:'.sprintf("%s",($end - $start)); ?>

Continue

在网上一搜解决了,抄下解决方法: 前提安装python和相应的Wxpython版本,我安装的是 python:Python 2.5.4 on win32 Wxpython:wxPython2.9-win32-2.9.1.1-py25.exe

>>> import wx
Traceback (most recent call last):
  File "", line 1, in 
    import wx
ImportError: No module named wx
>>> import wxversion
>>> wxversion.select('2.9')
>>> import wx
>>> 
选择相应版本就行了。

Continue

今天用到Simplejson,提示"ImportError: No module named Simplejson"。 网上看到集中安装方法,选择其中一种开工了。 windows xp环境下,总共3个步骤: 1。 下载 http://pypi.python.org/pypi/simplejson/ 2。解压 例如:下面例子解压到:D:/simplejson 3。安装 如下内容为Simplejson安装过程… D:/simplejson>python setup.py install OVER 开始提示”Python不是内部或外部命令命令“ 添加环境变量就行了。添加到path。

Continue