存档

‘编程’ 分类的存档

IntelliJ IDEA 推广 介绍 入门

2010年2月25日 13 条评论

注:这文章写得太水了。周日和ZY的一场不太和谐的争论以后,我决定尝试一下Eclipse,结果发现Eclipse其实也有不少技巧,我只是不知道它们而已。还发现了一篇Terse Systems : Why IntelliJ IDEA sucks,是一个Eclipse的重度用户攻击IDEA不好用的文章,请关注它的评论中有不少有趣的反击。总之IDEA现在看来,是个好工具,不过并没有到艳压群芳的地步,我只是井底之蛙,发现了一片天空,以为就是一个美丽新世界而已。文章依然保留,就当是蝴蝶拍了一下小翅膀。

IntelliJ IDEA似乎还不是一个很流行的Java IDE,因为最近两年来,一直在使用它,渐渐得有了一些心得。想,也许我应该写一点东西来推广一下它。

为什么我会这么推崇IntelliJ呢?原因是,它能够做到超高效率的编码。

IntelliJ IDEA的宣传单上有一句话:“我们与其他软件不一样,我们的默认快捷键是精心设置过,如果您以前使用的其他IDE和我们的快捷键不同,请尝试一下我们的。”我想说的是,这句话并没有任何言过其实。

IntelliJ的快捷键,是一种容易上瘾的东西,花10分钟到半小时学习一下,你会发现自己从此就不需要鼠标了。

首先举一个搜索的例子:

您忘了工程里一个类位于哪个包下,很简单,ctrl + n,输入类名,IntelliJ会帮你搜索。不仅如此,它还支持星号和问号通配符。更简单的,对于ImportDataNodesQuickAction这样的类,您可以输入IDNQA(所有的大写字母),或者ImportDNQA(相当于省略了星号的通配符)。超强。

如果您想找的是个资源文件比如图片,而不是一个Java类,很简单,ctrl+shift+n,输入关键字。

如果您想找的既不是类又不是文件,而是Java类里面的一个函数名或一个全局变量,很简单ctrl +alt +shift +n,输入关键字。

JBuilder下有个强大的功能就是模板。输入数个字符就可以生成一大段代码。IntelliJ IDEA更是把这个做到极致。请让我介绍一下它的Live Template功能。

当您第一次尝试IntelliJ,第一个程序当然是HelloWorld。

那么main函数您怎么写,挨个敲入public static void main(String[] args) ?太长了太长了,在IntelliJ下您这样做:

首先按ctrl+j,出现一个下拉框,别理他,接着输入psvm,回车。怎么样,所有的代码都有了。光标还自动停在了你准备编码的位置上!

然后您一定是准备输入:System.out.println(“Hello World”); 然后再添加import java.lang.System申明 ?在IntelliJ下面您这样做:

依旧按ctrl+j,接着输入sout,回车。自动生成了代码不说,连Import都帮您自动完成了!光标还停在println(“的位置上,就等着您直接输入Hello World。

如果您坚持看到这里,毫无疑问,您是一位Java程序员,这点小伎俩当然无法让您留下哈喇子,那么我接着来点猛料。

好了,下一步,我们建一个类,让它实现Runnable接口。首先建立一个新类ThreadTest (这个貌似没有快捷键,我们不应该这么懒对不对)

第一步,当然是在类名后加上implements Runnable, 请只输入前两个字符im,然后按ctrl+空格,(唔,中文输入法出来了是不是?请您把中文输入法的快捷键改成别的或者去掉,您依然可以用ctrl+shift来切换输入法),您看自动完成了implements ,然后输入Ru,按ctrl+空格您看Runnable也自动完成了。

先别急着换行什么的去实现方法,听我号令。您看到public class ThreadTest implements Runnable下面有一道红线是不是?这时候按alt+回车,出现一个下拉框,有两个选项“Implement Methods”和“Make ThreadTest abstract”,直接回车,再回车。。。

您看到了,这工程就是全自动贵宾式服务。以上其实介绍了两个快捷键,ctrl+空格Alt+回车。。。一个是自动完成:一个是自动纠错(它不只是帮您实现方法,它还可以帮您添加异常检测,帮您Import工程库,一键式服务,搞定多种难题:难言之隐,一键了之),。总之有了这两个利器,您变成超级大懒虫指日可待。。。IntelliJ IDEA的口号是Develop with pleasure!什么意思,就是出门有人帮开车,进门有人帮拎包,开房有人帮您叫小姐。。。前面这些只是冰山一角,还有很多快捷键充当皮条客为您服务。而这些皮条客的名字绝对不会像VIM那样难记(不知道VIM是什么东东请无视这一句)。

IntelliJ IDEA,乃是杀人放火打家劫舍之利器。

当然了,对高级用户而言,特别是Eclipse用户而言,能够支持各种奇怪的需求才是王道,比如Ant,比如Maven,比如JAXB,比如UML。。。这些也没有任何问题,且听下回分解(有没有下回,就看有没有回帖了;当然不排除自己犯贱的可能性)。

最后说一句,这玩意有商业版和开源社区版。在这里下载。


IntelliJ的缺点:

1,内存占用大大的。。。在我的3G的内存的办公机上,有时候也会慢得我受不了重启IntelliJ。。。当然这个也取决你的工程有多大(公司的工程有8400多个文件,81万行代码)。我的IBM T43跑只有几个文件的小工程就从来没有慢到要重启。

2,界面设计器和JBuilder的思路不同,采用一种特有的XML方式存取界面,总之不推荐使用。因此我练就了手写GridBagLayout参数的基本功。

3,IntelliJ启动的时候会扫描工程中所有Java类的结构,然后用在它超强的搜索里面。因此如果您的工程有百万行代码的话,启动时间就至少有30秒之多。当然启动完了以后,一切都会好起来的。


关于为什么不使用EMACS

楼下回复提到EMACS,作为一个连VIM我都没能摸熟的菜鸟,我当然没用过EMACS。。。shame。。。

但是我有了一些想法,决定写下来。我有个朋友跟我说,写代码,NotePad就够了。还有一个朋友跟我说,不能依赖编译器,你得在编译器帮你检查出错误之前自己用眼睛挑出来,更进一步,你必须一边写代码一边就在查错,这样才能保证代码的正确性。我得说,这些话都是对的。但是IDE这种东西之所以存在,就是因为我这样的菜鸟程序员太多。如果程序员也有末尾淘汰制,每年一定会有一群IDE爱好者被赶出程序员队伍,并强制转行为皮条客。(只有更左没有更左,IDE爱好者被赶尽杀绝的一天,下一步就应该轮到VIM爱好者,哈哈哈。)

您看,我如果有练过EMACS,当然不屑于IntelliJ了,问题就在于EMACS至少要闭关数年,方能神功炼成天下无敌。天下无敌是爽,但是IntelliJ只要练30分钟可以出去试试能不能把比武招亲的姑娘搞定了,所以我爽在前面您爽在后面。

IntelliJ有个有趣的地方就是:它的门槛低,快捷键虽然有上百个,但是一个不会都没关系,照用。。。我就在没用快捷键的日子里度过了好长一段日子,慢慢地,发现了一些有趣的键,然后是发现另外一些,然后,你永远不知道什么时候能够发现一些你不知道的好姑娘。。。我之所以在用AutoHotKey绑定系统热键的时候专挑Win键,一个非常重要的原因就是我的IntelliJ热键知识还在不断增长中;我不喜欢某一天我在IntelliJ里面按ctrl + p试图查看函数参数时,却跳出个截图软件出来。

对EMACS,我想说的,尺有所短寸有所长,您牛人配置出ctrl + 空格这样懒人自动完成键一定是超级容易的(或者从上千个命令中秒检出一个适用命令),我的小小的不成的。这里有一篇:10个用EMACS蹬掉Java IDE的理由 ,写得真是太好了,太牛了,可是对我不管用:小子我刚刚学会开小轿车,就让我控制洲际导弹,我玩死自己是铁板钉钉。

其实我拼死抵赖,也无法改变我强词夺理的本质。人类之所以能进步,就在于能够学习。正如楼下向我推销EMACS,就如我向JBuilder用户推销IDEA一样。从这一点来说,我在狠狠地抽自己的嘴巴。


我用过的Java的IDE有这么几种:JBuilder用的时间最长,用了6年。Eclipse和NetBeans都用的时间不算太多,一共加起来可能只用了1年不到,还是为了在澳洲找工作准备的,NetBeans没啥印象,Eclipse强大的插件功能让我五体投地,有一阵子我甚至有可能成为它的忠实用户,直到IntelliJ IDEA的出现。

我用IntelliJ IDEA,最开始是被迫的,因为公司要求用,而且是花钱买的正版(公司也有人在用正版的JBuilder,但是很快这家伙也迁移到IntelliJ IDEA上来了)。一开始我并不喜欢它,慢慢得就离不开它。

作为一个JBuilder的用户,我最喜欢的几个功能是:强大的界面设计器;快速查找类的位置。其他功能我用得很少很少。

迁移到IntelliJ以后,我遇到两个问题:

1,界面设计器没了,这个很让我失望。(也不是完全没有,IntelliJ提供了一个New GUI Form/ GUI Dialog设计器,但我研究一下表明,这设计最后是保存为xml文件,也就是不通用。因此我直接忽略了这个功能。值得一提的是,IntelliJ IDEA提供了一个Ant任务包,让你可以脱离IntelliJ IDEA独立编译这些XML格式的界面文件)

2,另一个困难是:IDEA引入了模块的概念。这个在JBuilder貌似是没有的。模块的用途是让代码更清晰,模块的依赖性更明显,比如强制不允许服务器端模块去引用客户端代码否则就编译错误。这个理念对刚接触IntelliJ IDEA的我而言有点超前,过了挺长时间才明白模块的作用。

虽然不是大问题,但是实实在在地打击了我。。。但风雨过后就会有彩虹,现在的我,腰也直了,腿也不抖了,吃饭蛮香,睡觉倍棒,您瞅准了,IntelliJ牌IDE,值得一试。

原创的话痨如需转载请注明来源:http://blog.chenyi1976.com/blog/11047;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 编程 标签:

开始使用VIM

2010年1月13日 2 条评论

开始使用VIM写日记。

首先要感谢一下zhang sen朋友,此人在7月份的留言中,严肃地批评了我自甘堕落的思想,触动了我的灵魂,虽然我的传导神经太慢,但终于在5个月以后开花结果了。这个算不算蝴蝶效应?

今年,喔,应该说去年,其实是跨年度的,我体会到了键盘流的牛B之处。

虽然开始的时候感觉还是蛮痛苦的。因为需要学习的快捷键太多。

但是一旦开始体会到其中的好处以后,就再也回不去了。这个过程类似于你小车开惯了不可能再忍受挤公交一样,虽然考驾照的确痛苦。

一个简单的例子是在IntelliJ里切换光标的位置。原来我都是鼠标点来点去,或者通过上下左右键来移动光标。现在由一系列复杂的命令替换掉了,再配合搜索的热键,搜索跳转就和玩儿似的。

刚进公司的时候,看Duc调试程序的时候,手很少碰鼠标的,噼啪噼啪就跳到某函数的位置上了,崇拜不已,又不好意思问他怎么弄的,以为自己至少短时间内没这个本事。直到09年中,我终于也认识到IntelliJ的键盘流。现在我也可以冒充高手了。这玩意很容易产生一种优越感,让人恨不得把IntelliJ的口号“Develop with Pleasure”印在T恤上招摇过市,大喊我也是键盘流。

想到以前我还留恋JBuilder留恋得不行,挺可笑的。

另外,昨天发现IntelliJ IDEA 9的开源社区版已经出来了。

Eclipse没能有机会学习一下,还是有点遗憾的。现在Intellij开源,我更没理由去碰Eclipse了。

这几天又把VIM给学了一把。这玩意更复杂,而且很多命令没啥道理。完全死记硬背。因为IntelliJ给我打了底,我知道投入时间学习绝对值得。所以这次学得分外投入。

入门是通过善用佳软的这个文章入门的。标准的傻瓜式的入门指南。一步一步来就好。

做完教程的内容以后,决定通过使用过程来学习。遇到不知道的功能再查,平时看到也顺便记忆一下,不打算背诵一大堆的命令把自己搞晕。常用命令汇总到了GoogleDocs,只要是方便自己查询。

所谓的常用命令对别人的参考作用有效,因为这玩意和每个人的学习进度有关系。

一天下来,解决了好几个VIM使用上的小问题;虽然是小问题,不解决就是大麻烦,解决了就是大动力。这过程在切换到FireFox的时候体会最深了。一点点小小的好处就足够让我坚持下去,一点又一点,从此就会一条路走到黑。

中文上用起来还是不如英文爽快,英文无论是按单词前进后退或者搜索,都比重要要好用许多。

下一步是TotalCommander。这玩意配置起来据说也是超级麻烦。

一转眼已经超过30岁直奔40岁,却为了点雕虫小技兴奋,想了一下,这种情况算什么呢,大器晚成?活到老学到老?或者是驽马十驾功在不舍?

原创的话痨如需转载请注明来源:http://blog.chenyi1976.com/blog/10990;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 编程 标签:

Arduino初体验

2009年12月16日 1 条评论

周二,白天在医院补牙,晚上在二姑姑家打牙祭;回到家,抓紧最后几分钟,把Arduino的程序跑了起来。

Arduino是在淘宝上买的,很便宜,买了一个板子,面包板,线,还买了3个按钮开关一个发光二极管。一共貌似花了200多。

把USB接上电脑提示驱动安装不上。查了一下,发现Arduino下载的软件里面有个Driver目录,安装一把,搞定硬件驱动。

硬件驱动搞定以后,拿个发光二极管把13号口里面一捅,开始闪烁了,看来制造者已经按照Arduino官方要求内置了Blink程序。

然后启动Arduino编辑器,随便找了一个例子,改了一下,修改为2号口读取信号,如果为1,那么就闪烁,否则就不闪烁。编译通过,上传失败。研究了一下,发现是串口选择错误,改为COM6,上传成功,测试一切正常。

Arduino真的太简单了,硬件白丁真的上手毫无困难。

周三,一天没动窝,中午,妞妞的外公外婆过来一起吃饭。

下午试图写点东西出来,却遗憾地发现,完全没办法搞。

液晶模块12864的驱动找了半天才找到,但是硬件连线我一窍不通。

然后就想写一点PC端程序,但是Java默认没有串口驱动库,找了一下,在Arduino的目录下居然找到了一个库,问题是我不知道写这部分代码,用哪个类。

这些可以通过网络搞定的东西在没有网络的情况可谓一筹莫展。

原创的话痨如需转载请注明来源:http://blog.chenyi1976.com/blog/10932;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 编程 标签:

利其器

2009年11月17日 没有评论

找到了一本不错的书,《Killer Game Programming in Java》(12M),上传到自己的服务器上了,下载速度不知道怎么样。

看完第一章:Chapter 1. Why Java for Games Programming?  为什么使用Java开发游戏?这个问题其实很重要,我用Java写游戏,只是因为我对这个工具最熟悉,而C对我难度太大,没时间去学(实际上也是可以的,但有时间我也倾向于学第二外语,而不是第二编程语言)。这一章解释了很多很重要的细节和理由,让我能够认识到,其实Java写游戏并不是那么差。

第二章:Chapter 2. An Animation Framework,几乎和Loon引擎一模一样的设计。就这一点,我也值得把这本书看完。详细解释了不少东西,特别是一些我知其然不知其所以然的细节。

总之,好书一本,有志于写游戏的Java程序员可以看看。这书的作者的技术能力比我强。如果不是这样,我也不会喜欢上这书。

现在看起来,我的SLG项目一年都搞不完。

让我来愚公移山吧。

原创的话痨如需转载请注明来源:http://blog.chenyi1976.com/blog/10820;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 电玩, 编程 标签:

SLG开发进展(20091105)

2009年11月5日 没有评论

好几天没有写东西了,证明我很忙。

SLG开发,其实是设计,取得的进展还是蛮大的。

其实我知道写这种东西没有太大意义,也没有多少人愿意看,但是就是忍不住写。

就算是开发日志好了。

感觉自己是不是在滥用脚本语言,现在我试图用脚本语言来控制角色战斗结果的计算。。。真的觉得自己在滥用这些东西,好像一个孩子得到了一个新奇的玩具,就到处带着希望能够用上。

最大的进展是终于知道了如何整理自己的需求,在空想了好长时间以后,得到了一个很有扩展性的模块设计;但是对是不是足够灵活,依然一点底气也没有。

我不希望什么都搞得七七八八的时候,才发现没法改变哪怕一个微小的设定。比如说,我能不能把单兵作战的SLG改为魔法门英雄无敌那样的军团战,或者我能不能把军团在战场上划整为零。这样的要求,按照人的思维来说,其实很自然,但是放到代码里面,如果结构不好的话,那就是打死也没法实现的。

我担心的是,我没法发现那些潜在的需求,无论我希望做得多灵活。

现在看来,做一个炎龙骑士团并不是太难,特别是把时间长度拉长到5年的情况下。我完全可以用一年的时间来做设计。一年的时间来编码,一年的时间来测试。一年的时候来构建关卡数据。一年的时间来做美工。何况,开源项目哪个不是花了N年时间才逐渐成熟起来的?

难的其实是做一个能够满足未发现的需求的东西,以最小的改动来满足各种奇怪的需求。

目前的计划是,先把类图设计出来,然后用先有的SLG样本来检视这个设计,看是不是能够实现现有的这些需求。

这些样本是《炎龙骑士团2》/《魔法门英雄无敌3》(仅战斗场景,不含大地图场景)/《韦诺之战》/《魔兽世界》,最后一款不是SLG,不过我很喜欢它,希望能够把技能冷却时间这种设定引入到SLG里面。。。(想想看,冷却时间为30回合的大招,意味着您只要坚持到回合足够长,就可能绝地反击;反之,你得心急火燎地赶在敌人大招冷却之前干掉对方)。

做了一个列表出来:http://spreadsheets.google.com/pub?key=tnhnbry2VAMAUYN4NXBw3qw&output=html

设计文档还是持续更新:http://docs.google.com/View?id=dcsbrwrb_239c8gh4hcg

思考的过程很有趣。。。

玩游戏是为了乐趣,写游戏也是为了乐趣;如果这个过程没有乐趣,那何必去做。

我已经而立,不惑在望,不抓紧时间做点自己喜欢的东西,实现自己的梦想,人生呼啦一下就会没了。。。做这个事情,不为了钱,不为了名,相信比我牛B的技术人员多了去了,做这个事情,只为了有朝一日能够对自己说,我也做了一点东西出来。

原创的话痨如需转载请注明来源:http://blog.chenyi1976.com/blog/10772;转载的文章我会力所能及地注明来源如有疏漏请留言指正。

文章的脚注信息由WordPress的wp-posturl插件自动生成

分类: 电玩, 编程 标签: