第一种方法(较简单,看的比较吃力):

1
EXEC Sp_msforeachtable "EXEC Sp_spaceused '?'"


第二种方法(较复杂,但看的比较清楚,原作者不详):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
IF NOT EXISTS (SELECT *
               FROM   dbo.sysobjects
               WHERE  id = Object_id(N'[dbo].[tablespaceinfo]')
                      AND Objectproperty(id, N'IsUserTable') = 1)
  CREATE TABLE tablespaceinfo --创建结果存储表
    (
       nameinfo   VARCHAR(50),
       rowsinfo   INT,
       reserved   VARCHAR(20),
       datainfo   VARCHAR(20),
       index_size VARCHAR(20),
       unused     VARCHAR(20)
    )
  
DELETE FROM tablespaceinfo --清空数据表
DECLARE @tablename VARCHAR(255) --表名称
DECLARE @cmdsql VARCHAR(500)
DECLARE Info_cursor CURSOR FOR
  SELECT o.name
  FROM   dbo.sysobjects o
  WHERE  Objectproperty(o.id, N'IsTable') = 1
         AND o.name NOT LIKE N'#%%'
  ORDER  BY o.name
  
OPEN Info_cursor
  
FETCH NEXT FROM Info_cursor INTO @tablename
  
WHILE @@FETCH_STATUS = 0
  BEGIN
      IF EXISTS (SELECT *
                 FROM   dbo.sysobjects
                 WHERE  id = Object_id(@tablename)
                        AND Objectproperty(id, N'IsUserTable') = 1)
        EXECUTE Sp_executesql
          N'insert into tablespaceinfo exec sp_spaceused @tbname',
          N'@tbname varchar(255)',
          @tbname = @tablename
  
      FETCH NEXT FROM Info_cursor INTO @tablename
  END
  
CLOSE Info_cursor
  
DEALLOCATE Info_cursor
  
GO
  
--itlearner注:显示数据库信息
Sp_spaceused @updateusage = 'TRUE'
  
--itlearner注:显示表信息
SELECT *
FROM   tablespaceinfo
ORDER  BY Cast(LEFT(Ltrim(Rtrim(reserved)), Len(Ltrim(Rtrim(reserved))) - 2) AS INT) DESC


第三种方法:

1
2
3
4
5
6
7
8
9
10
SELECT Object_name(id)                                 tablename,
       8 * reserved / 1024                             reserved_,
       Rtrim(8 * dpages / 1024) + 'Mb'                 used,
       8 * ( reserved - dpages ) / 1024                unused,
       8 * dpages / 1024 - rows / 1024 * minlen / 1024 free,
       rows,
       *
FROM   sysindexes
WHERE  indid = 1
ORDER  BY reserved_ DESC

参考:http://msdn.microsoft.com/zh-cn/library/ms188776.aspx

posted @ 2012-02-06 12:51 牛啊牛 阅读(1) 评论(0) 编辑
2005年,联想以 17.5 亿美元收购了 IBM 的 PC 业务。当时,宾夕法尼亚大学沃顿商学院的 Michael Useem 曾推测蓝色巨人为了讨好中国,因为在中国做生意的关键是政府关系。现在,《纽约时报》的一篇报导似乎印证了这一说法。文章称,IBM 董事长彭明盛(Samuel J. Palmisano)称他选择中国公司而不是戴尔和私募基金是出于战略原因:中国政府想让它的企业扩张到全球,通过帮助实现这一国家目标,在利润富厚的中国市场 IBM 能加强其地位,因为中国政府仍然操控着市场。
posted @ 2012-01-02 22:40 牛啊牛 阅读(9) 评论(0) 编辑

错误提示:“ sql server 复制需要有实际的服务器名称才能连接到服务器,不支持通过别名、ip地址或其他任何备用名称进行连接。请指定实际的服务器名称“xxxx”(Replication Utlities)” 在安装完sql server 后修改过机器名称,运行下面两条语句既可以看出来:    

   use master     

   go   select @@servername   

    select serverproperty('servername')

如果这两个结果不一致,说明机器改过名字,在配置复制的时候就会报上面的错误。      --要修复此问题        --执行下面的语句,完成后重新启动SQL服务  
  if   serverproperty('servername')   <>   @@servername    

    begin   declare   @server   sysname            

    set   @server   =   @@servername              

    exec   sp_dropserver   @server   =   @server           

    set   @server   =   cast(serverproperty('servername')   as   sysname)          

    exec   sp_addserver   @server   =   @server   ,   @local   =   'LOCAL'          

end
最后重新启动服务,启动完后,再运行:  

 use master       go      

 select @@servername      

 select serverproperty('servername')          

posted @ 2012-01-01 21:00 牛啊牛 阅读(9) 评论(0) 编辑

此时此刻,也许很多人都很激动,都在等待着2012年钟声的敲响,2012这个数字自从《2012》这部电影推出以后就变得炙手可热,大街小巷老幼皆知。当时看过这个电影后,甚至有的人开始恐慌,2012年真的会是世界末日吗?我不知道,就算是真的,我如此用心的去关注它又有什么用呢?如果真的是世界末日,像我这样的人还有必要去担心自己的生死吗?也许是看了《2012》这部电影的原因吧,让我觉得如果真的世界末日来了,像我这样的人就不用再想着明天是什么样子了吧, 我不是政要,“诺亚方舟”的船票我也买不起,所以当那一天真的发生的时候,还是欣赏一下那最后的壮观景象吧!

 

刚刚屏幕右下角弹出TX的消息窗口,说TX视频正联合全国13家卫视直播明星跨年演唱会,今天刚好又是周六,湖南卫视正直播着《快乐大本营》,当然主题还是明星跨年演唱会,也许今晚会有很多的人会守在电视机前陪着明星们度过,也会有很多人在另一些地方high,以各种方式来度过2011年的最后一个夜晚,但不管以什么方式,今晚注定都是一个值得记得的夜晚。

 

我的2011没有什么特殊的,毕业工作2年以来,也没有太大的事情发生,现在回想起来还真没有太多能让我记起来的事情。说是没有,其实细想起来,也有挺多的,只是一时想不起来,最主要的原因是我没有写日志的习惯吧!当年在学校的时候还经常写些日志,发表在QQ空间里,这也算是我第一次接触博客系统吧,其实QQ空间算不上真正意义上的博客系统,现在看来更像一个SNS系统,里面的东西太多了,但那时候刚刚接触网络,最多的时间也是用在这些上面了,现在想想真的挺后悔的,那时候写日志还是很认真的写,从开始的大量转载到后来的自己原创,也写过不少,但现在都已经成为了历史。还记得当时是在2007年的最后一天,大概也是这个时间吧,也写下了一篇日志《再见了,我的2007》,四年过去了,现在写这篇随笔,还真有点当年的感觉。2008年以后,上大三了,就很少再写日志了,因为2008年也发生了很多事,大家都知道。一段时间以后,觉得玩QQ也没什么意思,就关闭了QQ上的很多服务,包括QQ空间,从此就更少的写日志了,但是还是会经常看别人写的。后来也先后用过网易博客、新浪博客,也用过51,校内(现在的人人网)等,但最后都因为没写过什么文章而让其不了了之,现在账号也都忘记了,汗颜!

 

现在想来,大学几年过的真的挺没意思的,可能真的跟性格有关吧,很多人在大学里玩游戏玩的很厉害,我们寝室的2哥们就是,但这也没影响到我,我是真的不爱玩游戏,玩也是偶尔玩玩斗地主、打打桌球,其他的网游我是真不喜欢,觉得打打杀杀、升级打怪没什么意思,还要花钱买装备,逃课熬夜,这些我真的受不了。如果不玩游戏,就恋爱吧,可是大学四年中,我也没有恋爱过,唯一一个我喜欢过的女生也在大三的时候成了别人的女朋友,因为一直认为别人会看不上自己,因为她很优秀,所以即使在心里有多么的喜欢她,也不敢去追,呵呵!我想现实生活中也会有不少我这样的人吧!如果说没有玩游戏,没有恋爱,那该是好好学习了吧,可我很惭愧的说大学学也没有学好,只是毕业时顺利拿到毕业证,因为有一门课差1分没有达到学位课的成绩标准,所以没有拿到学位证,至今还很遗憾,也许当年多去听几次这门课,和老师关系搞好点,也许就会过了吧,YY一下,呵呵!

 

毕业后最大的变化,一个就是我已不再是单身,有了自己去守候的人,感谢上苍让我遇见了她;另一个就是换了一次工作,其实说真的,我不太爱频繁的换工作,才走出校门不久,很多都不懂,需要学习,所以频繁的跳来跳去,对自己、对企业都是不好的。但我还是在第一家公司做了近一年之后离开了,来到现在的这家公司,相比在第一家,我在这家公司学到很多,进步了很多,来年我会继续努力工作,努力学习。在此感谢我的2个雇主,还有在公司一起工作的同事们,最多的时间都和你们在一起工作、一起吃饭、一起出去high;当然,还有最重要的是身边结交的一群朋友,大家相识相知,互相帮助,这让我很感动,真正的朋友是我们每个人一辈子的财富,在此祝愿我们的友谊更长久;

 

毕业这2年,也经历了很多在学校时候不会想到的事情。越来越多的同学结婚了,买房子了,生孩子了。去参加同学婚礼,看着越来越多同龄的人,还有很多比自己小的人,都开始结婚生子,这些以前根本不会想的事情现在也会经常的在自己的内心浮现,也渐渐摆上了自己的人生计划日程。现在大家见面谈到最多的话题也不在是游戏、八卦,更多的是房子、结婚、工作;这也是大多数毕业工作2年以后的人谈论最多的话题。每天早上挤在地铁上,想着这么多的人都在为生活奔波着,大家为的只是想有一个安定的家、稳定的生活,可是在GD的TC这样的大环境下,这样的一个目标实现起来却是这么的困难,都说社会在进步,但我没有看到真正的进步在哪里,如果是说建立了多少大楼、举办了多少国际盛会、修了多少公里的高铁、GDP增加多少、每年税收增加多少,这些指标看作是社会进步的话,那我不能说什么,因为GD在这方面做的很好。我能看到的,相信大家也都看到了,近些年接二连三发生的事情已经让我们变得麻木了,所以我也从当初的愤青变得接受、妥协,不是说接受妥协,只是不论你再怎么愤,也不能改变什么。近些年发生的这么多事,尤其是2011年,什么事情我不在这里赘述。这些事件已经让不少我这样的人看清了一个事实,那就是生在TC,你是没有多少希望能过上你想要的日子的(我说的只是一部分,因为有一部分人还是对自己的生活很满意的),所以还是安心做自己的事吧,活在TC,你都不知道明天会发生什么,明早出去,明晚是否还能回家都是不确定的(可能说的有点严重),这样的事情在TC太多太普遍了,所以还是祈求上苍吧!

 

语无伦次的扯淡用了一个小时,下面说说2012年,先不管2012年是不是世界末日,就算是,到2012年12月21号不早呢,还是想想我的2012怎么过吧,前天看了itwritter在园子里发的 2012年开发者该做的11件事,看过之后感触很深,其中的每一点都说到了我的心里深处,下面引用原文针对每一点说一下:


1. 使用 Twitter - 如果你是一名程序员,如果你还没有使用 Twitter,你就 out 了。不是说你有多少粉丝,而是在 Twitter 上你可以更快的得到问题的答案,获取你关注的话题的最新资讯。 (作者没有考虑到天朝的程序员们)

其实在TC也有不少人用twitter,园子里就不少人在用,只是目前大家大多都是用VPN,或者是通过工具翻过去,我也follow了一些人,目前大多是NBA球星,因为对NBA比较感兴趣,还有一些重要的组织或NB的企业,2012年,将会从我follow的名单中unfollow一些没什么实际意义的人,重点关注一下园子里的人,向他们学习。另外我个人不太爱在twitter上说话,上去也就是看看别人在说什么,因为英文水平烂,又不太用爱用中文在twitter上说话,感觉用中文发推有点别扭,只能看懂一些简单的英文东西,至于说是上面说的可以更快的得到问题的答案,对于英文水平烂的我来说,还是多在园子里吧!


2. 经常阅读 StatckOverflow - StackOverflow 是提问编程问题最好的地方。即使你没有账号,它也值得你去浏览,学习。(良好的英文阅读能力是程序员的必要素质,哈哈!)

我先不评论StackOverflow 是不是提问编程问题最好的地方,因为我没有上过,英文水平也有限,提的问题也可能会很初级,提了问也不一定会有人回答,但是这个还是要开始,并坚持,不光是这个网站,其他的相关有用的英文网站,也还是多浏览一些吧,就当是练习英文阅读能力吧,当然能解决实际问题最好了,期待一下。

 

3. 开始写博客 - 我认为每一位开发者都应该写博客!因为博客可以记录我们学习进步的轨迹,可以让别的开发者参考。写博客让你和别人更多的交流。还有,写博客可以提高你的技术社区的知名度。

这个是2012年必须要坚持的,说到博客就再多说一点,之前还在上学的时候,偶然的一个机会也注册了CSDN账号,但也很少写过博客,前段时间CSDN用户资料泄露,还好我的账号幸免,因为密码设置的比较可靠,但是还是痛恨这种以明文保存用户密码的无耻行为;现在也经常浏览CSDN,但越来越觉得那就是个广告网站了,就像之前有人说的就差没把丰胸人流的广告放上去了,不像是纯粹的技术社区。所以选择博客园,开通1年多以来,也没有好好写过,仅有的几篇随笔也是拼凑、随便放的,有点汗颜,以后会好好写,并把之前写过的几篇好好整理一下。说实话,看了园子里很多大6的博客后,有点心虚,有点不敢在博客园发表自己写的东西,但最终我还是战胜了自己,决定开始在博客园写博客了,我已经认识到开博客、写文章是真的很重要,像我等草民,写博客为的不是点击率,为的不是要有多少fans跟帖、回帖,博客等级有多么靠前。重要的是总结、记录自己的学习、成长历程,也可以记录自己解决问题的方法,在下次遇到同样的问题时候可以很快的找到解决方案,也有可能会对别人有所帮助。也可以在以后的某个时间可以知道自己当初有什么样的想法,做过什么样的事情,所以,就从这篇开始吧,就当是记录自己的学习轨迹,与园友们交流,在这里希望园友们多指导。

 

4. 参加线下活动 - 从你的“shell”里面走出来吧,多参加线下的沙龙、活动、会议。和别的开发者交流可以让你在这个领域建立自己的人脉网络,这对你在这个领域的成长很有好处!

这个可能有点难,因为一直认为自己技术水平有限,所以不敢走出去,在园子里看到不少6人们写的博客,也在webcast上看了不少6人们讲的东西,觉得自己与别人的差距很大,所以要每天不断的学习。当然,以后有机会,对自己感觉兴趣的技术,还是尝试着参加,在这里期待一下。


5. 使用现代化的智能手机 - 作为一名开发者如果你还在使用老土的山寨机,你得赶紧升级了。我还记得有一次跟一个经理聊天的时候,他得走回作为才能给我发邮件,我就在想“这哥哥是做 IT 的吗?”。正如有些行业你必须开好车,穿亮丽的衣服一样,我们干 IT 的就应该站在技术、硬件的前列!

这个说起来也有点汗颜,我是个不太爱折腾手机的人,从心里上认为手机就是一个打电话的工具,没什么好折腾的。上一个手机从自己买到手到后来被小偷偷走,都没怎么好好去“玩过”,里面的有些功能都没怎么用过,是个不错的机子,我用了几年一直舍不得换,但最终送给了小偷。目前用的Android系统手机,只是刚买回来的那几天有兴趣把玩一下,现在也没怎么折腾了,以后还是多折腾折腾,让自己给折腾坏也比被小偷偷走了强。

 

6. 拥抱移动互联网 - 移动互联网的大潮才刚刚开始。你不仅需要知道如何为 iPhone, WP7, Android 开发应用,你也需要学习如何创建可以在任何一台移动设备上运行的网页程序。

虽然都知道这些应用,除了WP7程序,其他的两个平台的都用过,iPhone太贵买不起,开发起来要从头学 Objective-C,Android开发要从头学Java,开发WP7可以直接使用现在自己会的的知识,开发起来会容易上手些,当然学 Objective-C和Java也在计划之中,也是目标,现在正在学习WP7的开发,先把这个平台下的学好,然后再向其他的平台延伸。


7. 学习至少一种设计模式 - 我无法告诉你应该学习哪个设计模式,但是你至少得学习一种。我个人倾向于 MVVM,因为我是 Sliverlight/WPF/WP7开发者。

对于设计模式,对于一个没有丰富的编程经验的人来说,直接学习是一个错误的尝试,还是要多做免费发布供求信息基本功,当然也可以尝试从简单的模式开始,我也喜欢 Sliverlight/WPF/WP7开发,所以MVVM这个模式,也是我正在学习的,继续努力,


8. 每年设定可行的目标 - 创建一个简短的列表,记录你下一年想要完成的目标。同时你也应该按照季度来检查目标的完成情况。你可以用 Gmail Reminder 来提醒你自己~

这个也是要做的,没有计划,没有目标的盲目生活是一件非常可怕的事情。我已不在年轻,需要对自己有一个清晰的认识和规划,虽然说2012年可能是世界末日,但这不能成为没有目标的生活的理由,2012年,我要有计划,有目标的度过。

 

9. 学习不同的编程语言 - 简单来说,学习新的语言可以拓宽你的视野,可以让你对计算机和编程语言是如何工作的有更深的了解。“如果你只有锤子,那么所有的问题在你看来都只是钉子”。

这个是要的,当然是在完成每天的工作,在学好WP7的基础之上的,就是第6点里面说的 Objective-C和Java。


10. 增强自信 - 很少有程序员对自己很自信。如果你觉得你哪里弱,那你就去增强那里。互联网上有大量免费的资源可以让你学习各种只是,弥补你的弱项。

这个是要努力提高的,一直都对自己不自信,觉得自己很多地方都弱,所以有很多的地方需要提高,来年在这方面要多做努力,自信不是说有就有的,要肚子里有货,货从哪来,就是不断的学习、总结、研究!


11. 阅读博客,技术书籍、杂志 - 你读过几本编程书籍?杂志呢?我相信一名好的程序员每年至少阅读 5 本编程书籍。不读书怎么进步呢?

说来汗颜,没有阅读到5本,虽然也买过几本,案头放的也多于5本,但都太没认真好好的看,真的很惭愧,来年,我知道怎么做!

 

说完了上面11条,我加一点自己补充的:

12. 积极锻炼身体,保持健康,充满活力。

身体是革命的本钱,工作的目的也是让生活更好,所以所有的一切都要建立在有一个好的身体上,身体跨了,什么都没了。而且现在的医院那是不能去的啊,尤其是我这样的穷人,直的是不敢生病啊,小小的一个感冒,去趟医院就有可能花个几百甚至上千。让我这样的人根本承受不起。所以平时要加强锻炼,尤其是我等做编程的,一天坐到晚,一周下来也活动不了几次,所以要坚持锻炼,保持健康的体魄,减少生病的机率,预防甚于治疗。


13.开始理财,“你不理财,财不理你”。

这句话说的太对了,收入本来就少,就更要懂得打理,现在很多跟我一样的人都面临着要结婚、要买房子,压力可想而知,所以对自己的收支要有合理的安排,学会理财,学会投资,尽量少用信用卡,除非是很急的时候,用过的人都知道这里面的事情,要有理财的意识,要有这样一个习惯,不然一年下来,不知道自己挣了多少钱,不知道自己的钱花了哪去了,都做什么了,反正就是手上没钱,这样就不好了。

 

看看时间,还有几分钟就到2012年了,语无伦次、乱七八糟的说了这么多,就当是个开始,希望读者不要介意,以后努力要提高写博客的水平。
最后,祝大家在新的一年里工作顺利,身体健康,生活幸福!

 

posted @ 2012-01-01 20:59 牛啊牛 阅读(11) 评论(0) 编辑

在平时工作中时常需要对网站进行自动化测试,虽然一些简单的测试可以通过爬虫的方式来做,但是如果涉及到比较复杂的js和CSS渲染的话,就必须使用真正的浏览器了。毕竟自己实现HTML DOM解析还相对容易,但是如果做上述工作就太麻烦了。

由于我们网站90%以上的用户用的都是IE,而有一些代码也是特定于IE的,因此在测试的时候,必须要对IE进行自动化测试。当然,大部分代码对各个浏览器都是兼容的,因此也可以采用其他更自动化,兼容性更广的方法来进行Web测试。

在Windows下进行自动化测试,个人觉得最合适的方法就是WSH+javascript了,可以使用WScript对象和众多ActiveX组件来完成诸多功能,而且语法和普通javascript都一样,主要需要熟悉的就是各个组件的接口。

使用js进行IE测试的流程是:

通过WScript.createObject创建一个IE对象,并绑定它的事件回调(Event Callback/Sink)
调用IE对象的navigate2方法,打开指定的网页,并将其Visible属性设置为true
在IE对象的OnDocumentComplete事件中,检查网页是否已经完全载入(不然访问document对象会有问题)
通过document对象访问各个HTML对象以及其计算出来的CSS属性,并模拟用户输入进行功能性测试
在最后调用IE对象的quit方法关闭IE,如果为了保险,可以找到所有的IE窗口,向其发送Alt+F4按键将其关闭
将得到的测试信息通过SMS(例如定制的HTTP接口)或者电子邮件(通过CDO.Message对象)发送到对应人员
上面是大致的流程,具体在设计和编码的时候,会遇到一些其他的问题:

JS中如何创建与绑定事件回调
如何在测试中绕过IE的阻止自动弹窗的设置,使得可以进行用户模拟点击打开新窗口的免费发布信息测试(不然弹窗会被阻止)
其实在创建一个ActiveX组件的时候,WScript.createObject方法第一个参数是组件名,第二个参数就是事件回调函数的前缀了。例如对于IE对象来说,它的组件名是InternetExplorer.Application,对应的事件有DocumentComplete、OnQuit等(参见DWebBrowserEvents2),假设我希望收到DocumentComplete事件通知,可以这样写代码:

var shouldQuit = false;function _eventsDocumentComplete(obj, url) {  复制代码
在上面的代码中需要加入一个while循环,这样才能不退出程序,继而收到事件响应。

在HTML文档都已经载入完毕以后,就可以访问browser的document对象获取DOM树,进行一系列操作和测试了,例如通过document.getElementById('btnSumbit').click()模拟form提交之类的。

另外,在IE中,如果通过代码模拟点击想产生一个新窗口,往往会被IE自动弹窗阻拦功能挡住,就是平时常见的顶部提示阻止了一个弹窗的细黄条。在测试过程中,我们往往需要模拟用户输入产生自动弹窗,这时候,需要在测试的时候去掉这个功能,然后在测试结束的时候再打开这个设置。要做到这一点,只需要修改注册表的HKEY_CURRENT_USER下的\Software\Microsoft\Internet Explorer\New Windows\Allow项,添加上对应的域名即可。在JS里可以这样写:

//对host这个域名允许自动弹窗var shell = WScript.CreateObject("WScript.Shell");var regKey = "HKCU\\Software\\Microsoft\\Internet Explorer\\New Windows\\Allow\\" + host;shell.RegWrite(regKey, 0, "REG_BINARY");    //测试代码//...//恢复自动弹窗阻止    shell.RegDelete(regKey);
复制代码
另外,进行IE测试需要打开Windows桌面才行,因此它有一个比较郁闷的要求,就是不能是未登录状态,我们为了解决这个问题,是开了一个Windows虚拟机,在虚拟机里面专门设置了计划任务运行相关这个测试js的。

因为IE测试限制很多,因此我们平时也可以采用phantomjs进行测试。phantomjs是一个内嵌了Webkit的无界面浏览器(headless browser)。通过phantomjs定义的一系列接口,我们可以实现很多Web自动化的测试,例如打开网页,监控每个访问,并生成HAR格式的图形,给网页生成截图,打开新浪微博模拟登陆获取微博信息等。在phantomjs的examples目录中有很多例子可以学习,例如生成HAR流量图的netsniff.js等。下面是一个生成网站截图的例子:

var page = new WebPage();page.open(encodeURIfunction (status) {    if (status !== 'success') {        console.log('Unable to load page!');    } else {        window.setTimeout(function () {            page.render('snapshot.png');            phantom.exit();        }, 200);    }});
复制代码
另外,如果需要将查看HAR流量图自动化嵌入自己网站的,网上也有开源的程序可以使用。

上面的两种测试方法都是通过javascript做的,其实,平时在windows下熊猫写了不少javascript的实用程序给自己和朋友们用,尤其是那些不懂程序的朋友。例如生成费用分摊Excel表的功能,把图片转化为文字的功能,分析一些格式文件生成其他文件的功能等。

因为Windows环境上缺省就可以通过WSH运行javascript,而IE/Word/Excel/PowerPoint/WMI等都可以通过js来操作,因此对windows来说,WSH+js是一个非常实用的工具。

标签: javascript, Web测试

posted @ 2012-01-01 20:58 牛啊牛 阅读(13) 评论(0) 编辑

相关说明:

1.课程视频,音频,代码,讲义版权归微软所有。

2.桌面版的iReaper并非本人开发,本人是参考iReaper相关功能开发了web版本。

posted @ 2012-01-01 20:57 牛啊牛 阅读(17) 评论(0) 编辑

看到大家的新年的祝福,新年的愿望,新年的目标,我想我是否在新的一年里留下点什么...
好事多磨,好记性比笔不过乱笔头,需要做的事情有很多,但是有很多,我们没有坚持下去...
我想我需要表达一下我应该表达一下自己需要做的事情还有哪些,至少哪些已经做到了...
一份好的计划书可以成就一个项目,可以造就一个新思想,更有可能让你的人生从些发生改变。新年了你还在等侍什么,那就让你列出你的计划书,对自己有一个新的认识...

1、做程序员的钱有点少了,想换个行业去行走了...   
今年是毕业后的第三个年头了,时间真是不好掌握,听到更多的是叹惜声。简从自已毕业经历来看做程序做成我这样也是挺悲的,多个目标,一个都不曾拥有,倒头来落个里外不是。失去什么,或者没有得到什么,只要他不是将来时,就一定把他拥有成现代时。我想了很久的计划,也结合自己的想法,到现在我还是比较喜欢程序员这个行业的,可是要有更大的成就,在这个上面我是成就不了什么大事了,因为我只能把程序去开发,还不是重新创造得到新的成果。所以我决定换个行为试试,只要这个行业能有新型发展能力,当然了,赚钱是最重要的,我就去做了。

2、语言是成功基石,至少在只有你一个人走的情况下  
也许我们老是只会一种语言不是一个很值得去光荣的事情,至少你要成功必须会两种国外语言,要不怎么国际化接轨,不要认为自己离世界很遥远,我们每天都在改变,也许哪天有个机遇,你遇到了,你把握了,你就成功了。 

3、会计是资本的灵魂,掌握它,才能激发潜能
     一直以来觉得财务是很深奥的一门学问,神秘而又不得不无法接近他。没有办法,知识学的少了,我的财务理论也就一直被束缚着。曾经为了一个借贷问题,我问了我们经理好久,也就知道了个大概,到后来,自己去学习,才知道原来真的是自己理解有差异。财务没有那么的深奥,你需要的理解他,灵活使用它才是它真正存在的本质,我是决定了,我要活学活用财务,为自己铺垫。

4、所有事情都需要去尝试,然后得出自己的经验,至少事前是预测,事后是总结
    生活中有好些事情你不去了解,当然就不会得到一个好的结论,遇到事情也先别急着反驳它,表现的是冷静,冷静,再冷静,说出的答案往往才是你所需要和得到了,我的生活中可以最好的喜欢是随身携带纸笔,这样可以让我好好记住很多东西,或者是可以好好规划和总结。尝试了,才不会后悔,才知道自己可以有没三两三,上不得上的梁山。喜欢一句话,生活成功的两个条件,遇到什么样的人,读过什么的书,多读书,多学习,这样的成功才是捷径,别瞎想,那是不会成功的。

5、生活不必在于有多么丰富,应该是你生活的多么简练
    丰富的生活不是在于物资的多少,而是在于你要学会的是取舍之间要精炼,该舍弃的,该拒绝的,该走的,一切都要放弃,然而是应该得到的,拥有的,握住的,你想丢,都不应该放手,至少坚持一件事情是多么的不容易。如果可以做到,你又有何理由需要不把她捧在心口呢?

想表达或许是有很多,但是我能把这些都能做到了,那么,成功离你我不会在那么远了...

http://www.cnblogs.com/zphck/archive/2012/01/01/2309337.html
posted @ 2012-01-01 20:56 牛啊牛 阅读(63) 评论(0) 编辑

1 快速排序
介绍:

  快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。

步骤:

•从数列中挑出一个元素,称为 "基准"(pivot),
•重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
•递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
排序效果:

 

详细过程:

 

 

2 归并排序
介绍:

  归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用

步骤:

•申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
•设定两个指针,最初位置分别为两个已经排序序列的起始位置
•比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
•重复步骤3直到某一指针达到序列尾
•将另一序列剩下的所有元素直接复制到合并序列尾
排序效果:

 

详细过程:

 

 

3 堆排序
介绍:

  堆积排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

步骤:

(比较复杂,自己上网查吧)

排序效果:

 

详细过程:

(暂无)

4 选择排序
介绍:

  选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。

排序效果:

 

详细过程:

 

 

5 冒泡排序
介绍:

  冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

步骤:

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
排序效果:

 

详细过程:

 

 

6 插入排序
介绍:

  插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

步骤:

•从第一个元素开始,该元素可以认为已经被排序
•取出下一个元素,在已经排序的元素序列中从后向前扫描
•如果该元素(已排序)大于新元素,将该元素移到下一位置
•重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
•将新元素插入到该位置中
•重复步骤2
排序效果:

 (暂无)

详细过程:

 

 

7 希尔排序
介绍:

  希尔排序,也称递减增量排序算法,是插入排序的一种高速而稳定的改进版本。

  希尔排序是基于插入排序的以下两点性质而提出改进方法的:

•插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率
•但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位
排序效果:

 

详细过程:

 

 

----------------------------------------------------------------------------------------------------------------------

Over!

希望对大家有帮助免费发布信息

posted @ 2011-12-26 16:21 牛啊牛 阅读(3) 评论(0) 编辑

一 Webx的概括

WEBX是阿里巴巴的部框架,“就是把页面与Service之间的一些Servlet等公共的东西抽象出,提供相的服务以提高发效率(《接口之Webx介》—何晓峰 )”,可以看出,webx和统的servlet-action模式的HettpServlet基,其中的公用的抽象整理后,得到一个量的web发框架。

webx页面使用了velocity模板,WEB使用的是WEBX框架里面的TemplateAction,TemplateScreen,AbstractModule,TemplateControl,解决了操作和页面的跳。持久使用ibatis,Bean容器使用的是Spring。二 Webx的目构及重要的文件

由于webx是基于准的JavaEE Web用范,因此它的目构是我熟悉的B/S构。如:

 

其中,有个目是主要的;

1 src/main/java

2 src/main/webapp

先看src/main/webapp

里面主要放置了配置文件和模板文件。

所有配置文件都放在WEB-INF目下。除了准的web.xml以外,有了webx.xml、pipeline.xml和log4j.xml等几个文件。随着用变得复,会建其它的配置文件 。(也会用文件夹将配置文件管理起来,common文件夹)

web.xml:几乎是每一个web目都会有的配置文件,在webx框架下,只定义了一个核心的servlet:WebxController

    <filter>        <filter-name>mdc</filter-name>        <filter-class>com.alibaba.citrus.webx.servlet.SetLoggingContextFilter</filter-class>    </filter>    <filter>        <filter-name>webx</filter-name>        <filter-class>com.alibaba.citrus.webx.servlet.WebxFrameworkFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>mdc</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>    <filter-mapping>        <filter-name>webx</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>复制代码webx.xml:每个webx用,都需要有一个webx.xml配置文件。个文件定义了Webx所用到的所有services的配置。

pipeline.xml:即管道,它是由一个或多个“门Valve”构成的。可以看做webx框架的总控文件。

log4j.xml:日志系统配置文件。于程序的排错至关重要。

所有和前台展示有的文件,即模板,放在(webapp/)templates目下,vm后缀的Velocity的模板。

 

上面的文件下的文件和我的接口没有太大系,接口要的地方在下面的目中:

 

src/main/java/…/module。

Modules是基本程模块:包括screen,control,actionScreen — 用处理页面示的module,主要功能就是示一个页面Control — 和screen类似,但可以被的screen或layout引用,甚至可以跨越car用Action — 处理用户提交表的module复制代码Webx的页面布局以screen主,通screen查找其余的页面元素,然后通一系列查找查找页面元素Screen和control都可以有java类动,但不是必的,也就是可以先模板,后类 ,也可以只模板,不用构造类。。

三 Webx行的流程

在器里敲入http://localhost:8080/fuwuxian/login.htm,在Webx中发生了哪些事呢?

Webx按照以下流程行个求,得到求的页面。

•分析URL的成分,取得target:/login.vm
具体如下:

1)fuwuxianContext Path。服务器把个求交fuwuxian用接管。

2) login.htmServlet Path。在web.xml中把*.htm映射到Webx Controller Servlet,所以Webx Controller Servlet就接管了这个请求。

3) Webx Controller Servlet激活pipeline,而用AnalyzeURLValve分析/ login.htm是什么意思。根据webx默人的映射,/ login.htm被成/ login.vm。

2 根据target查找screen模板:/screen/login.vm

假如target的值:/xxx/yyy/ login.vm,那么,valve会:

1) 在/templates/screen目下,找到/xxx/yyy/login.vm模板。

2)依次查找screen类:

xxx.yyy. Login (如果找不到,下一个)

xxx.yyy.Default (如果找不到,下一个)

xxx.Default (如果找不到,下一个)

Default (如果找不到,下一个)

TemplateScreen (系统默screen,不可能找不到的)

3 行screen类,并渲染screen模板。

1) 如果存在layout布局,渲染layout,行screen类,并渲染screen模板

2) 根据target查找layout模板

4 渲染layout模板

5 渲染在layout模板中引用的两个control:

head.vm : 在head.car中查找/control/head.vm

bottom.vm :在bottom.car中查找/control/bottom.vm

通上面的步,一个求就得到响。

以上是webx的成构,页面布局,目构,以及行流程的介,希望正在珠联璧合的朋友有所帮助。不足或之处,敬批指正。

Webx的接口,参晓峰的《接口之Webx介》

posted @ 2011-12-26 16:20 牛啊牛 阅读(10) 评论(0) 编辑

Apple Mac OS X每日一技巧029:查询iPhone/iPad的序列号(Serial Number)和标识符(UDID/Identifier) 1.序列号比较好查,不用连电脑也可以,打开iOS设备的设置->通用->关于本机 里边就有

2.通过电脑查看的话可以打开iTunes,插上iOS设备,该设备的摘要里边有序列号,点击一下这一行就变成了标识符(UDID),Apple总是有些这些变态的查看方法。这个地方没法复制,序列号还好,UDID会抄死人的。

 

 


3.如果安装了XCode,可以看Windows->Organizer,这里边序列号和标识符都有,还可以复制,还有个优点是只要曾经连接过的设备这里都看的到,只要不删除就一直在里边。

 

posted @ 2011-12-26 16:19 牛啊牛 阅读(4) 评论(0) 编辑