<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>yueguangyuan</title>
    <description>喜欢研究技术、拥抱开源，更喜欢通过技术研究结识有识之士
目前学习、关注技术：Flex、Eclipse RCP、Linux、C、ROR、Ajax、WebLogic
以及众多Java开源框架技术：Struts、Spring、Hibernate、Tapestry、iBatis</description>
    <link>http://yueguangyuan.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Ubuntu8.04/Debian 4安装试用笔记 白鼠大作战</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/193501" style="color:red;">http://yueguangyuan.javaeye.com/blog/193501</a>&nbsp;
          发表时间: 2008年05月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 在使用Ubuntu7.10超过半年后，堆积了不少软件冲突，让我义无反顾的在第一时间加入Ubuntu8.04的使用大军中，Ubuntu8.04正式版的发布毫无悬念的得到了全球众多粉丝的关注，结果cn99的源第一时间硬盘损毁，导致安装进度受阻，因为升级实在太慢，所以简单的给/home目录备份了下就全新安装，恰逢失业在家，以前公司的东西也基本删除掉，适合全新安装。</p>
<p>&nbsp;&nbsp;&nbsp; 现在光盘安装是越来越简便，没什么可说的，十分顺畅，只是8.04支持的Wubi在之前我就适用过，并在Ubuntu圈子里面提出我的疑问，没人回应，看情况是我提出的问题也没有得到解决，索性也不去管，因为Wubi只是给那些不熟悉Ubuntu的朋友使用的，我不用也罢。</p>
<p>1.第一次尝试</p>
<p>&nbsp;&nbsp;&nbsp; 安装结束后问题一大堆，开机就发现了Error，使用dmesg命令查看启动命令，发现错误：</p>
<pre name="code" class="java">[   46.430898] iwl3945: Microcode SW error detected.  Restarting 0x82000008.
[   46.430979] iwl3945: Error Reply type 0x00000005 cmd REPLY_SCAN_CMD (0x80) seq 0x4418 ser 0x0000004B
[   47.424121] iwl3945: Can't stop Rx DMA.
</pre>
<p>&nbsp;网上说是无限网卡的问题，一直没来得及去解决，然后就不停的出现问题，以前版本里面的配置什么的很多都不灵。</p>
<p>2.尝试Debian</p>
<p>&nbsp; 在朋友的说服下尝试Debian，Debian4是目前的最新版本，只要100多兆，非常的小巧，Debian的好处就是不用跟着Ubuntu没完没了的升级，偶尔升级也会有良好的兼容性，这样就可以更加专注Linux的使用，而不是没完没了的更新、升级系统，而且Debian的可定执行更高，速度更快，不像Ubuntu里面预装许多影响速度的东西，于是试装了一次</p>
<p>光盘安装很简单，与Ubuntu如出一辙，没有选择Gnome桌面环境，进入系统是没有Gnome环境的需要自己安装，这样就可以最小化安装，更换到cn99的源然后执行命令:</p>
<pre name="code" class="java">sudo apt-get install gnome-core
sudo apt-get install gdm</pre>
<p>&nbsp;这样启动gdm就可以得到一个最简化的Gnome环境，这时/root目录下也就200－300M非常的节省空间，速度也是相当的快。然后更改为中文环境：</p>
<pre name="code" class="java">dpkg.reconfigure locale</pre>
<p>选择zh_CN.UTF-8为默认，注销以后就是中文界面了</p>
<p>再安装一些自己需要的软件，大体方式与Ubuntu都是一样的，一个简洁、快捷的Debian系统就装好了，装上常用的软件估计也也不会超过1G的空间，相比Ubuntu就好多了，因为在使用Ubuntu新版本的第一、二个月一般都要大规模更新几个升级包，光是升级包就要几百兆，网络不好的人就只有哭的份。Ubuntu现在频繁的升级已经让许多使用者失去了耐心，一年中有好多时间都浪费在升级、更新系统上，使得使用无形中增加了难度和浪费许多时间在琐碎的事情上。</p>
<p>但是目前Debian在国内用户群体非常的小，不会像Ubuntu那么人起高涨，支持众多，这样就要求使用者更为熟悉Debian系系统的使用。还有一个比较突出的问题导致我放弃Debian的使用：cn99源软件太老，很多软件都跟不上，而国内能用的源也就这么一个，软件源更不上简直就是要了Debian系系统的命，我曾经尝试使用Debian官方的源，但是速度实在是令我痛苦，在折腾了1，2天以后我决定放弃，重新挑战Ubuntu Hardy Heron.</p>
<p>3.慢慢适应Ubuntu 8.04</p>
<p>重新安装以后就要重新面对之前的问题：</p>
<p>A.eva无法使用</p>
<p>eva的新版本无法在Ubuntu8.04的版本上使用，会出现KDE软件崩溃的错误，云帆论坛上有很多人提出错误，但是一直没人能解决，结果google到：http://www.linuxdiyf.com/viewarticle.php?id=89166，说是QT库的冲突问题，按照说明把eva降级，然后冻结版本，eva终于可以正常登录</p>
<p>B.触摸板无法初始化关闭</p>
<p>按照之前的做法，在/etc/X11/xorg.conf里面增加</p>
<pre name="code" class="java"># 打开共享内存控制
  Option &quot;SHMConfig&quot; &quot;on&quot;
  # 触摸板初始化为关闭
  Option &quot;TouchpadOff&quot; &quot;1&quot;</pre>
<p>&nbsp;即可，但是初始化关闭失灵，至今仍没有找到问题所在 :(</p>
<p>C.Ubuntu声卡的bug</p>
<p>Ubuntu的默认声卡貌似没啥问题，其实还是有问题的，就是插上耳机，喇叭还是响，以前都是插上耳机然后静音，以为8.04会解决，结果又是白等一场，于是google得到结果：http://www.linuxdiyf.com/bbs/thread-85383-1-1.html，就是到alsa-project上面下载最新的驱动一大堆下来编译安装，搞定，这样耳机终于可以像Win下一样&ldquo;正常&ldquo;工作了。</p>
<p>D.让人揪心的Load_Cycle_Count</p>
<p>以前没注意这个问题，只是知道Ubuntu是出名的硬盘杀手，当有人告诉我这个问题的时候差点又换回Debian去，但是思来想去的不甘心，于是乎google，很多人提出问题，我总结下有几个观点：</p>
<p>(1)是有问题，改掉，搞个配置文件扔到一个地方，Load_Cycle_Count数目的确是不怎么涨，结果硬盘温度直接升5度</p>
<p>(2)不相信这是个bug，索性不理，但是Ubuntu官方已经将此列为一个bug，还就是用的上面那解决的办法，汗！</p>
<p>我有点迷糊，不知道要不要改，看着Load_Cycle_Count没小时上涨几十次，估计60w次大限没多久就要到，郁闷。</p>
<p>后来又看到很多人提出其他Linux都有这问题，但是其他版本可没谁说这是问题，Ubuntu的仇家造谣？于是乎去了大仇家WinXP下使用软件看，乖乖，比Ubuntu下涨的还快！这样明白了，就如Ubuntu Forum上大家的评论一样：这在于你是否认为这是个问题！</p>
<p>哈哈，挺搞笑的，人家XP都出来7年多了，全球数已亿记的用户也没谁说因为这个数目太大硬盘挂掉。而这个技术也是为了保护笔记本硬盘的，那个60w大限不知道是哪里听来的，有说法是老硬盘有这个限制，新的没有。就想想XP活了那么多年都没变化，为啥Ubuntu用户喜欢自寻烦恼，取消这个保护技术升温自己的硬盘也愿意。是是非非，不知道谁对谁错，呵呵。</p>
<p>E.字体 字体</p>
<p>原来的苹果黑体STHeiti不好用，字体总是觉得模糊，还有字会粘连在一起，不爽。而大家都比较推崇的文泉黑体与预期差距还是很大的，适用几种配置方法都不能令人满意，于是找到这个：http://bbs.hzau.edu.cn/redirect.php?tid=56758&amp;goto=lastpost 照做，效果有明显提升！</p>
<p>F.使用chmsee代替gnochm和kchm</p>
<p>朋友推荐chmsee，貌似是现在Linux上阅读chm格式文件比较好的选择，因为乱码少，字体也比较合适大小，安装很简单，使用时会发生一个错误：</p>
<pre name="code" class="java">chmsee: error while loading shared libraries: libxul.so: cannot open shared object file: No such file or directory</pre>
<p>&nbsp;是因为没有安装xulrunner，是Mozilla的一个包，apt安装好执行：</p>
<pre name="code" class="java">cd /usr/lib
sudo ln -s xulrunner-1.9b5/libxul.so libxul.so
sudo ln -s xulrunner-1.9b5/libxpcom.so libxpcom.so
sudo ln -s xulrunner-1.9b5/libsqlite3.so libsqlite3.so
sudo ln -s xulrunner-1.9b5/libmozjs.so libmozjs.so </pre>
<p>&nbsp;G.Opera于SCIM的冲突</p>
<p>&nbsp;Opera for linux原来是QT做的阿，难怪字体那么难看，不过这次是比较烦人的问题，浏览器地址栏输入www以后就挂</p>
<p>&nbsp;解决办法在Ubuntu forum找到：http://forum.ubuntu.org.cn/viewtopic.php?t=97520&amp;postdays=0&amp;postorder=asc&amp;start=15&amp;sid=2e87ffdcc121957a19d1a750a251ad0f</p>
<pre name="code" class="java">sudo apt-get install scim-qtimm
sudo gedit /usr/bin/opera

在第二行添加 export export QT_IM_MODULE=SCIM ，保存后重启 opera ，问题即可解决。</pre>
&nbsp;
<p>H.Eclipse 启动错误 could not initialize the application security component错误 挺奇特一个错误，直接mkdir ~/.mozilla/eclipse搞定</p>
<p>其他的问题慢慢使用积累中</p>
<p>留下一些小问题，有知道解决办法的朋友给指点下，先谢谢了：</p>
<p>1.为了节省空间，去掉菜单栏，改用Gnome主菜单，这是KDE风格的菜单，明显比原有的那个节省空间（美化界面的时候把下面的面板去掉了，空间很重要），而这个Gnome主菜单在开启Compiz的情况下，第一次点击需要反应许久，不知道该如何解决。（希望有人能看懂我的问题 -_-!!)</p>
<p>2.Firefox3 beta5能使用的插件还是太少，beta版本问题还很多，用着心慌。</p>
<p>3.Ubuntu 8.04貌似又是一个&ldquo;XX杀手&quot;的有力竞争者，电脑一开，风扇就呼呼的吹，很吓人。如果开了Fx3再开点网页啥的，本本CPU温度轻松超过60，看着揪心</p>
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/193501#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 May 2008 00:54:08 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/193501</link>
        <guid>http://yueguangyuan.javaeye.com/blog/193501</guid>
      </item>
      <item>
        <title>我的Emacs(Ubuntu下写C)</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/182239" style="color:red;">http://yueguangyuan.javaeye.com/blog/182239</a>&nbsp;
          发表时间: 2008年04月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 最近实践Ubuntu下编写C语言程序，在Emacs配置和使用上费了不少功夫，所以在这里重新整理</p>
<p>1.配置文件</p>
<p>为了方便修改（比如增加一些新插件产生冲突的情况），把配置文件分开，方便管理和修改</p>
<p>.emacs，某些实验的插件先放在主配置文件中，后期会分类出去。目前使用的插件主要有color-theme.el,cedet,linum.el,gud,gdb,yasnippet,javascript.el，插件的安装方法还算简单，但是想让它们都生效并且一起工作的很好就不那么容易，上面几乎每个插件我都折腾了好久才能正常使用。后面的部分我会记录几个容易犯错的地方</p>
<pre name="code" class="java">;;将配置文件分成多个文件
;;face.el emacs外观
;;plugin.el 插件
;;cmode.el C/C++配置

;插件路径
(add-to-list 'load-path &quot;~/.emacs.d&quot;)
;; 导入配置的文件
(load &quot;face.el&quot;)
(load &quot;plugin.el&quot;)
(load &quot;cmode.el&quot;)

;;gdb配置
(setq gdb-many-windows t)
(load-library &quot;multi-gud.el&quot;)</pre>
<p>&nbsp; cmode.el(参考http://www.caole.net/diary/emacs_write_cpp.html）</p>
<pre name="code" class="java">;;;; CC-mode配置  http://cc-mode.sourceforge.net/
(require 'cc-mode)
(c-set-offset 'inline-open 0)
(c-set-offset 'friend '-)
(c-set-offset 'substatement-open 0)

;;cscope
;;2008422增加
(add-hook 'c-mode-common-hook
           '(lambda()
                   (require 'xcscope)))
(setq cscope-do-not-update-database t)

;;;;C/C++语言编辑策略
(defun my-c-mode-common-hook()
  (setq tab-width 4 indent-tabs-mode nil)
  ;;; hungry-delete and auto-newline
  (c-toggle-auto-hungry-state 1)
  ;;按键定义
  (define-key c-mode-base-map [(control \`)] 'hs-toggle-hiding)
  (define-key c-mode-base-map [(return)] 'newline-and-indent)
  (define-key c-mode-base-map [(f7)] '(compile-command &quot;make&quot;))
  (define-key c-mode-base-map [(meta \`)] 'c-indent-command)
  ;;(define-key c-mode-base-map [(tab)] 'hippie-expand)
  ;;(define-key c-mode-base-map [(tab)] 'my-indent-or-complete)
  (define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)

  ;;预处理设置
  (setq c-macro-shrink-window-flag t)
  (setq c-macro-preprocessor &quot;cpp&quot;)
  (setq c-macro-cppflags &quot; &quot;)
  (setq c-macro-prompt-flag t)
  (setq hs-minor-mode t)
  (setq abbrev-mode t)
)

(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)

;;;;我的C++语言编辑策略
(defun my-c++-mode-hook()
  (setq tab-width 4 indent-tabs-mode nil)
    (c-set-style &quot;stroustrup&quot;)
  ;;  (define-key c++-mode-map [f3] 'replace-regexp)
)

;载入cedet插件
(load-file &quot;~/.emacs.d/cedet-1.0pre4/common/cedet.el&quot;)
;配置Semantic的检索范围
(setq semanticdb-project-roots 
 	  (list
	           (expand-file-name &quot;/&quot;)))
;自定义自动补齐命令
(defun my-indent-or-complete ()
    (interactive)
       (if (looking-at &quot;\\&gt;&quot;)
	 	  (hippie-expand nil)
		   	  (indent-for-tab-command))
        )

(global-set-key [(control tab)] 'my-indent-or-complete)

;hippie的自动补齐策略
(autoload 'senator-try-expand-semantic &quot;senator&quot;)
(setq hippie-expand-try-functions-list
  	  '(
		  senator-try-expand-semantic
		try-expand-dabbrev
		try-expand-dabbrev-visible
		try-expand-dabbrev-all-buffers
		try-expand-dabbrev-from-kill
		try-expand-list
		try-expand-list-all-buffers
		try-expand-line
	        try-expand-line-all-buffers
	        try-complete-file-name-partially
	        try-complete-file-name
	        try-expand-whole-kill
          )
)</pre>
<p>&nbsp;face.el，设置界面、主题，可以看附件中的截图，黑色主题、最大化和一些习惯设置</p>
<pre name="code" class="java">;------------------------------- 设置界面-------------------------------
;最大化
(defun my-maximized ()
  (interactive)
  (x-send-client-message
   nil 0 nil &quot;_NET_WM_STATE&quot; 32
   '(2 &quot;_NET_WM_STATE_MAXIMIZED_HORZ&quot; 0))
  (x-send-client-message
   nil 0 nil &quot;_NET_WM_STATE&quot; 32
   '(2 &quot;_NET_WM_STATE_MAXIMIZED_VERT&quot; 0))
)

;启动时最大化
(my-maximized)

(setq inhibit-startup-message t);启动不出现闪屏  
(setq visible-bell t);关闭出错提示声
(setq make-backup-files nil);不产生备份文件 
(global-font-lock-mode t);语法高亮
(auto-image-file-mode t);打开图片显示功能
(column-number-mode t);显示列号
(tool-bar-mode nil);去掉那个大大的工具栏
(scroll-bar-mode nil);去掉滚动条 
(setq x-select-enable-clipboard t);允许和clipboard交互
(transient-mark-mode t);加亮选中部分
(require 'linum)
(global-linum-mode t);显示行号

(require 'color-theme)
;;(color-theme-initialize)
;;(color-theme-tty-dark)
(color-theme-comidia)
;-----------------------------end of 设置界面--------------------------
;------------------------------- 设置显示时间---------------------------
(display-time-mode 1)
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
;--------------------------------endof 设置显示时间---------------------
(global-set-key [f11] 'my-fullscreen)
;------------------------------- 设置屏幕初始大小---------------------------

;全屏
(defun my-fullscreen ()
  (interactive)
  (x-send-client-message
   nil 0 nil &quot;_NET_WM_STATE&quot; 32
   '(2 &quot;_NET_WM_STATE_FULLSCREEN&quot; 0))
)</pre>
<p>&nbsp;plugin.el(http://code.google.com/p/yasnippet/)，一个模拟TextMate的东西，可以自定义snippet，目前用用感觉不是特别好，希望后期版本能有提高，还与其他插件有冲突，这个就比较头疼</p>
<pre name="code" class="java">(require 'yasnippet-bundle)
(autoload 'javascript-mode &quot;javascript&quot; nil t
(add-to-list 'auto-mode-alist '(&quot;\\.js\\'&quot; . javascript-mode))</pre>
<p>2.使用gdb插件进行调试</p>
<p>算是一个插件的使用了，但是说起来还是挺烦的，搞了很久才运行的差不多，参考好多网站，安装的话看这个：http://blog.csdn.net/nhczp/archive/2007/11/02/1862695.aspx，安装很容易，然后就可以打开编辑器调试了，我用的时候一直无法手动添加断点，提示是Current buffer has no process，不知道是啥问题，索性每次都是命令行敲命令(b main或者break (line)，挺郁闷。还有一个比较容易出错的地方是编译的文件需要加上-g的选项，确保每个文件都可以进入调试模式，否则将无法出现在调试界面里面。</p>
<p>gdb在Emacs里面使用很方便，提供了很多命令的快捷键绑定，我目前常用三个，为了形象起见，对比Eclipse Debug mode快捷键说明：</p>
<pre name="code" class="java">C-c C-N 单行执行   对应Eclipse的F6

C-c C-s 单步执行  对应Eclipse的F5

C-c C-r  continue命令，执行到下一断点  对应Eclipse的F8
</pre>
<p>&nbsp;另外还有一些常用的命令行命令</p>
<pre name="code" class="java">run (args)   启动程序，如果程序包含参数，直接在后面写

b (method_name) 为指定方法加断点  （还不知道怎么为某个文件某行加断点怎么做)

break (line_number) 为当前视图中的文件指定行增加断点

quit 退出gdb

print （args）  打印变量   如果args是$1这种形式，则可以打印历史变量，它是GDB按照顺序记录的

whatis (args)  打印变量的类型</pre>
&nbsp;
<p>&nbsp;</p>
<p>3.日积月累的快捷键</p>
<p>用Emacs已经有半年多，写Java的时候主要是在Eclipse里面用Emacs Mode，感觉还是不错的，而且还能郁闷其他想用你电脑的同事:P。</p>
<p>Emacs快捷键实在是太多了，所以只能列点比较常用的，虐待自己手指头哇</p>
<pre name="code" class="java">C/M-F B N P  C/M-V M-&lt; &gt; C-a C-e经典Emacs位移快捷键，没啥好说的
C-x o / C-x 1,2...   窗口移动  数量控制
C-x b/ C-x C-b  切换buffe
C-x k 关闭当前buffer
C-o 创建新行 光标不动
C-j  创建新行 光标到新行并缩进（类似于Vim的o)
C-s r /C-M-s r   增量搜索和正则搜索 C-%/M-% 替换
C-M-2 Mark Set(超级不爽的快捷键，除非你愿意损失C-Spc)
C-x h  全选    配合 C-M-\  格式化整个文本
C-x C-c 关闭Emacs C-z 最小化
C-x C-s 保存当前文本
C-h m 打开帮助文档
C-h k  查看快捷键锁定（看看你设定的快捷键是否正确绑定功能）
C/M-w 复制、剪切
C-y 将killing-ring中的东西粘贴
C-k 删除光标以后到行尾
C/M-d 删除光标后单字或单词
C-c C-c 格式化
C-x C-f 打开文件
</pre>
<p>&nbsp;
4.在emacs中使用cscope对C/C++代码管理</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 参考http://pluskid.lifegoo.com/wiki/EmacsCscope.html</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 安装cscope，然后将安装包中自带的xcscope.el加载到emacs配置文件中即可使用，可以方便查看源代码</p>
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/182239#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 13 Apr 2008 03:23:01 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/182239</link>
        <guid>http://yueguangyuan.javaeye.com/blog/182239</guid>
      </item>
      <item>
        <title>Socket、Thread的使用记录</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/179314" style="color:red;">http://yueguangyuan.javaeye.com/blog/179314</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>做了太多时候的Web项目，Socket这么基础而又重要的接口都快忘掉了，虽然偶尔做做，但是都不大深入，刚好前段时间又做了点Socket类的应用，又对Socket接口有一些新的认识，先记下来</p><p>&nbsp;</p><p>放在blog上马上就有人指出了我的错误，特此感谢，所以又拿到论坛上来等着大家拍，如有错误，欢迎指正&nbsp;</p><p>&nbsp;</p><p>1.SocketStream截断字符</p><p>在FileStream里面最后一位截断字符是-1，这样在操作文件的时候就可以使用如下的判断:</p><pre name="code" class="java">BufferedReader buffer = new BufferedReader(new InputStreamReader(socket
		 .getInputStream(), &quot;UTF-8&quot;));
DataInputStream in = new DataInputStream(connection.getInputStream());
while ((count = in.read(buffer)) &gt; 0) {
        out.write(buffer, 0, count);
}</pre><p>而这招在Socket里面是不灵的，因为如果这个判断要成立，需要对方Socket主动关闭，客户端收到EOF以后才能使得这个判断成立，否则对方不关，count永远得不到-1，就会一直阻塞在那里。<br />&nbsp;</p><p>因为Socket接口能互相传送的东西是双方协议规定好的，什么字符都可能出现，这样只用-1来做截断判断是不对的，如果双方认定-1或者某些特殊字符可以作为截断标识那也可以，这样做只有当已知传递文件不会出现－1的时候才行，这种判断的习惯可能是来自于C语言，但是C语言是有一个EOF，而Java里面没有提供。</p><p>解决这个问题的办法，经过朋友指点变成了这样：</p><br /><pre name="code" class="java">int BS=100,count=0;
byte[]buffer=new byte[BS];
int has_readed=0;
DataInputStream in = new DataInputStream(connection.getInputStream());  
while ((count = in.read(buffer)) &gt; 0 &amp;&amp; has_readed &lt; BS) {  
     int left=BS-has_readed;
     out.write(buffer, 0, count&gt;left?left:count);  
     has_readed+=count;
    }</pre><p>&nbsp;上面的代码变得复杂了许多，思路是这样的：</p><p>A.每次读取都是读指定长度的byte流，这样在协议里面写好长度，读取指定的内容，读取精确，无需阻塞，效率也高。</p><p>B.采用一个has_readed作为计数器，防止网络阻塞的情况下不能读到数据，增强程序的健壮性。</p><p>&nbsp;</p><p>2.count = in.read(buffer)</p><p>这个东西看起来再普通不过，但以前没有仔细去想，也没有什么资料去分析过，这里让我们仔细看看，C语言里面允许一个方法返回两个参数，但是Java里面是非法的，然后这个in.read(byte b[])这个方法也做了类似的事情：</p><p>A.为read方法读到的buffer的个数，如果读不到值会返回－1。</p><p>B.read方法将读到的东西附给了buffer这个byte数组，这样就达到了返回两个参数的效果，因为数组是Object对象，这样将它作为参数传进去就可以将其赋值，基本类型是做不到这点，只有对象可以（大家用的多的是List,Map之类）。</p><p>&nbsp;</p><p>3.byte还是String</p><p>最早接触Java的时候做Socket，就是用String类型来传输，很方便，双方接口处理起来都很简单而且更直观，这次接口传输的却是byte[]，搞的我很郁闷，可能是我的Java基础并不够扎实（后来同事给的评语是你肯定是没怎么写过C&hellip;&hellip;），byte[]就不爽了，就是一大堆莫名其妙的数字还要对各种类型做转化控制数位什么的，稍不小心就会出错。起初一直以为是客户那边有技术上的风格习惯，后来想想，这Socket可是语言之间的沟通桥梁，又不是单为你Java做的，像C语言这种没给你准备String这个类型啊。其实String类型还好，怎么说还能变通一下实现，有人说在Socket里面传递序列化的对象可就更麻烦拉。用byte[]数组对类型转换啥的也能更熟悉一些。</p><p>&nbsp;</p><p>4.使用Excutor来代替Thread（内容源自Java Concurrency in Practice，如果需要找到详细内容，请参看原书第六章）</p><p>一道经典的面试题：Java有哪几种方式来实现线程？答:继承Thread和实现Runnable接口，但是1.5以后就不能这么回答，应该再加上java.util.concurrent,套用《Java并发编程实践》中的一句话：</p><pre name="code" class="java">无论何时当你看到这种形式的代码：

    new Thread(runnable).start()

    并且你可能最终希望获得一个更加灵活的执行策略时，请认真考虑使用Executor代替Thread</pre><p>&nbsp;在使用Socket的时候我们经常会这样写：</p><pre name="code" class="java">ServerSocket socket = new ServerSocket(7001);
While(true){
     final Socket connection = socket.accept();
    Runnable task = new Runnable(){
              public void run(){
                      //hanld reuqust code
              }
    };
    new Thread(task).start();
}
</pre>&nbsp;这看上去似乎没问题，而且所有的教科书里面都这样写的，一个请求一个线程，无限制创建线程，在原型和产品开发的时候都表现良好，但是这种每任务每线程（thread-per-task) 方法存在实际的缺陷，特别是需要创建大量线程的时候会更加突出：<br /><p>A.线程生命周期的开销</p><p>B.资源消耗量</p><p>C.稳定性</p><p>具体描述可以参看原书，所出现的问题是很容易理解的，所以即便你的程序还在使用1.4版本（Third party)，如果大量依赖线程，特别是需要处理大量并发的情况下，应该采用java.util.concurrent提供的线程池，concurrent相对Thread更加稳定且功能丰富，可以使多线程并发程序有更为稳定的表现。</p><p> 我们原来的接口程序就是采用原始的Thread，并发量要求达到500个，使我异常的头痛，那么如果采用Concurrent线程池的就能获得更好的并发性能并确保服务器的稳定性（可惜暂时没有机会实践）。&nbsp;</p><p>&nbsp;</p><p>5.期待JDK7</p><p>JDK7现在正在开发阶段，目前的趋势是SUN将为JDK7添加对多核开发提供更好的支持，那么主要就是体现在java.util.concurrent上面，我目前正在阅读《Java并发编程实践》，争取有时间写个读书笔记什么的，要对并发开发保持持续的跟进学习。</p><p>前几天看到JavaEye新闻里面有一个人写的有关JDK7对多核开发的支持的疑问，也值得我们去思考一下：</p><p>第一点是java不能仅仅是提供支持线程开发包这么简单，而应该是像Scala、Erlang这种在语言级别就支持多核</p><p>第二点是面对即将到来的多核时代，如何利用好8核、16核这种处理器不仅仅是如何更好的发挥CPU的性能，因为即便你能发挥多核的潜力，但是你将不得不面对大量I/O操作的处理，I/O处理将会成为更为难缠的瓶颈，因为这种I/O资源是只能使用锁策略。</p><p>貌似这些东西还挺远，但是很有趣，还有一些Java想加入的语法糖，和对动态语言支持的大量的争论，真不知道JDK7会是个什么样子，总之Java已经越来越复杂越来越受软件界关注。</p><p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/179314#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 16:35:27 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/179314</link>
        <guid>http://yueguangyuan.javaeye.com/blog/179314</guid>
      </item>
      <item>
        <title>Skype 大家一起来</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/178619" style="color:red;">http://yueguangyuan.javaeye.com/blog/178619</a>&nbsp;
          发表时间: 2008年04月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp; Skype又一次走到了竞争激烈的IM市场上先行了一步，Skype2.0版本采用了QT4.1版本，真正的开始支持跨平台，使得我们Ubuntu用户也可以参与语音视频会议，除此之外对主流的Linux发行版都提供了很好的支持，让我们大家一起Skype起来吧！<img title="lol" src="../../images/smiles/icon_lol.gif" border="0" alt="lol" /></p><p> 首先访问http://www.skype.com/download/skype/linux/choose 下载对应的版本，但是没有提供7.10的版本，下载这个版本安装会有错误。找到一个源来解决这个问题，http://www.linuxidc.com/Linux/2007-10/8562.htm，按照里面的做法，从源里安装即可。</p><p>&nbsp;</p><p>然后可以对Skype进行美化，方法参照http://ilovemac.cn/articles/skype-1_4-beta-in-ubuntu-feisty.html，但是他是1.4版本，有点区别，主要是改改字体，因为我没找到里面的card0，实际上不要修改就可以使用。</p><p>&nbsp;</p><p>然后使用起来就和其他系统上没啥区别了，注意Ubuntu里面默认的是把Mic关闭掉的，所以需要去打开</p><p>终于可以语音会议了，Linux爱好者可以更好的放弃QQ咯&nbsp; <br /> </p>
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/178619#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 02 Apr 2008 00:23:07 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/178619</link>
        <guid>http://yueguangyuan.javaeye.com/blog/178619</guid>
      </item>
      <item>
        <title>MyEclipse你搞什么</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/149934" style="color:red;">http://yueguangyuan.javaeye.com/blog/149934</a>&nbsp;
          发表时间: 2007年12月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp; 如果做个民意调查，你用的最多的IDE是什么？假设把MyEclipse算一个选项，我想肯定很多人都选它。我不知道有多少人思考过这个问题，MyEclipse在国产程序员中有多大市场？我是想了很久，可能你会说这个问题没意义，但是我仍旧忍不住抛出自己的想法，因为总会有人问如果在MyEclipse下XXX这种问题。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 想必用过Eclipse的人都多少会使用过MyEclipse，我也说不出比大家多的东西，就直接说我的观点：少用MyEclipse，OK？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; A.没人抵制的盗版<br />
&nbsp;&nbsp;&nbsp;&nbsp; 说抵制盗版可能有点土，在国人漠视盗版的大环境下，可以说谁都不干净，就Java IDE这一小块，想想JBuilder红火的日子能有多少人去购买License，但是现在不同拉，Eclipse、NetBeans争得头破血流，少用点盗版软件总对得起自己的辛劳吧？Java反盗版工作的确难做，难道MyEclipse也想复制一下微软的盗版策略？<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; B.MyEclipse?好大<br />
&nbsp;&nbsp;&nbsp;&nbsp; Eclipse本就比较大，然后MyEclipse则更将其发扬光大，但是一个启动，安装MyEclipse就可以增加20％左右的启动时间，使用中就更不必说，一个JSP Editor足以让人崩溃，更有甚者还会用到JSP的调试工具，充分体现了程序员的耐性，那种慢如龟爬的速度也能忍耐的住。本来Eclipse-Europa发布以后，很多MyEclipse里面选用的插件已经直接集成了，结果MyEclipse6.0应声出现，升级到Eclipse-JEE-Europa以后就没尝试过MyEclipse，我电脑慢 :(。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; B.Eclipse MyEclipse <br />
&nbsp;&nbsp;&nbsp;&nbsp; 我最最郁闷的就是听到一些人说不用MyEclipse怎么写Java？连Debug都没有&hellip;&hellip;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在我周围有这种误解的人太多，比如我公司新来的5个员工，居然无一例外的在第一时间下载安装了MyEclipse插件，我很好奇的问：装MyEclipse干什么？回答：不知道，反正一直用的&hellip;&hellip;这只是我身边的，到网上，随便搜搜MyEclipse，就有接近百万搜索结果，很多做软件的朋友也经常提出有关MyEclipse的问题，甚至很多人都会达到没有MyEclipse，J2EE上的一些很基础应用就无从下手的境地。<br />
&nbsp;&nbsp;&nbsp;&nbsp; MyEclipse是干啥的？引用MyEclipse官方的：&ldquo;MyEclipse是Eclipse的插件，也是一款功能强大的J2EE集成开发环境，支持代码编写、配置、测试以及除错。&rdquo;就我个人来说，我使用过MyEclipse的Hibernate映射文件生成工具，JSP格式化（现在直接使用Eclipse-JEE-Europa中的WTP插件就可以做到），就没了，我想不出还有什么一定要用MyEclipse的地方，然后就是其带来的巨大性能影响。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 很多人都会习惯于MyEclipse对于Struts、Spring之类框架的支持，WYSIWYG的开发模式终于在Java开发中有了落脚点。的确，把这么多配置文件的插件都用熟可能会提高开发速度，但是这种开发却完全违背了Java这种开放性语言的开发哲学，面对众多优秀的开源框架，有不计其数的程序员就只甘愿束缚在工具之上也不愿自己手写几行简单的代码或者更深层次的了解他自己为什么要这么做，结果就是离开MyEclipse，那些所谓精通、熟练Spring、Hibernate的人就乱了马脚。本身插件没有错，错的是使用它的人。<br />
<br />
<span style="font-weight: 400;"><font size="3"><span lang="zh-cn"></span></font></span>&nbsp;&nbsp;&nbsp;&nbsp; 于是我倡议：远离MyEclipse，珍爱生命，减少盗版，顺带提升自己买软件的底气；为了你的电脑、你喝咖啡的时间，顺带提高自己的编码水平；拉近与开源的距离，深入挖掘技术，顺带提高自己的薪水；多动手，多动脑，想要的插件自己配，顺带学习Eclipse RCP和OSGi。
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/149934#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 21 Dec 2007 13:05:24 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/149934</link>
        <guid>http://yueguangyuan.javaeye.com/blog/149934</guid>
      </item>
      <item>
        <title>我的Ubuntu Gutsy 软件类表</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/137842" style="color:red;">http://yueguangyuan.javaeye.com/blog/137842</a>&nbsp;
          发表时间: 2007年11月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          已经开始使用Ubuntu Gutsy Gibbon有一段时间，Ubuntu升级比较快，用升级管理器升级几次，发现的bug就能得到很好的解决，这样已经算是顺利平移到新的版本上，所以在这里把自己常用的软件都列出来，方便自己，也希望能帮助大家。<br />
<br />
虽然Ubuntu频繁的升级已经让它很是不像Linux的作为，但是这的确是对开发者和使用者都很有益的事情，开发者可以尽情发挥其创造力将自己的想法实 施于新的软件中，而差不多一个星期就会有一次版本升级也可以及时修正许多bug，这比旧有的模式要灵活的多。而debian系提供的令人信服的apt- get更是使得用户可以更多的享受优秀系统的优点，而不是把过多的时间放在烦人的编译、安装和升级上。可以说只要你网络速度跟的上，Ubuntu怎么折腾 我们都可以跟进的很快。<br />
<br />
现在用Ubuntu可以说是相当简便，用了整整一个星期都没编译安装过什么东西，这样大大节省时间也减少错误。所以下面的软件如果没有特别说明默认是直接 使用sudo apt-get install 安装的。软件列表会随着我的使用而不断扩充，目前我只是使用Java做开发，但是平时会关注很多其他的东西，比如GTK、QT、Ruby on Rails、Python等等。软件用的比较少的是有关娱乐方面的，因为大多数时间游戏、娱乐我都是用自己的台式机，Ubuntu主攻工作、学习方面的东 西 :P<br />
<br />
一、常用软件<br />
1.eva<br />
源里的eva是0.4.1版本，有点老，但是还勉强能用，以前都是编译安装的，但是难免出状况，经常登录不上去，现在学乖了，一直使用源里或者网上现成的deb包，相对稳定很多。<br />
2.星际译王  <br />
优秀的国产开源软件，现在Win下也能用，速度比盗版的金山词霸快，关键是不会背负盗版之名，呵呵。<br />
3.gFTP<br />
很便捷的上传下载工具，而且兼容很多协议ftp ssh2偶比较常用<br />
4.Avant Windows Manager<br />
很不错的Dock工具，模拟Mac上面经典的效果，对我来说最关键的问题是宽屏的笔记本上下宽度小，需要珍惜，所以默认的下方工具条直接移除 :P<br />
安装也很简单
<div class="dp-highlighter">
<div class="bar"> </div>
<ol class="dp-j">
    <li class="alt"><strike><span><span class="number">1</span><span>. 将下列源添加到 /etc/apt/sources.list：  </span></span></strike></li>
    <li><strike><span>   deb http:<span class="comment">//apt.schmidtke-hb.de/ feisty main</span><span>  </span></span></strike></li>
    <li class="alt"><strike><span><span class="number">2</span><span>. 下载并添加密钥：<br />
    </span></span></strike></li>
    <li class="alt"><strike><span>   wget http:<span class="comment">//ubuntu.schmidtke-hb.de/aptrepository.asc</span><span>  </span></span></strike></li>
    <li><strike><span>   sudo apt-key add aptrepository.asc  </span></strike></li>
    <li class="alt"><strike><span><span class="number">3</span><span>. 更新源：  </span></span></strike></li>
    <li><strike><span>   sudo apt-get update  </span></strike></li>
    <li class="alt"><strike><span><span class="number">4</span><span>. 安装 Awn：  </span></span></strike></li>
    <li><span><strike>   sudo apt-get install avant-window-navigator</strike>  </span></li>
</ol>
</div>
2007.12.18补充，AWN0.2版已经在10月份发布（http://linuxtoy.org/archives/awn-02-released.html），看上去会比之前版本稳定，所以上面的安装方法可以废弃，同样有apt-get这种省心的安装方法：<br />
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt"><span><span>deb http:</span><span class="comment">//download.tuxfamily.org/syzygy42 gutsy avant-window-navigator</span><span>  </span></span></li>
    <li><span>deb-src http:<span class="comment">//download.tuxfamily.org/syzygy42 gutsy avant-window-navigator</span><span>  </span></span></li>
    <li class="alt"><span>  </span></li>
    <li><span>wget http:<span class="comment">//download.tuxfamily.org/syzygy42/8434D43A.gp g</span><span>  </span></span></li>
    <li class="alt"><span>sudo apt-key add 8434D43A.gpg  </span></li>
    <li><span>rm 8434D43A.gpg  </span></li>
    <li class="alt"><span>sudo apt-get update  </span></li>
    <li><span>  </span></li>
    <li class="alt"><span>sudo apt-get install avant-window-navigator-bzr awn-core-applets-bzr  </span></li>
</ol>
</div><p>
装好以后发现比原来的多了些特效，不过最希望的就是能更稳定些。<br />
有很多朋友安装了新版本之后会出现一条白线，搜索一些论坛以后发现，这个是由于原有的一些插件没有找到的原因，所以只要把原来的一些插件移除，白线就会消失，enjoy it.<br />
5.ThunderBird<br />
替代了默认的evolution，好在哪我也说不清楚，就那么用着<br />
6.AutoMatix<br />
Ubuntu上一个软件管理工具，可以帮你一键式安装一些常用软件，因为某些软件源里没有，自己安装比较繁琐，这个时候AutoMatix就派上了用场， 缺点是比较慢，因为附加软件源都是官方的源，但是用起来发现Gutsy版比Feisty少了不少软件，现在又有台湾的软件爱好者搞了一个 LazyUbuntu的包，也是类似功能，好像软件也满多的，随着Ubuntu的普及度，以后ubuntu会越来越好用，呵呵。<br />
7.Mac4lin<br />
默认的Ubuntu界面比较朴素，在704的时候我使用了UbuntuStudio提供的主题包，因为使用起来非常简单，所以主题、界面之类都比较搭配， 但是那个黑色系在开发时很是郁闷（Eclipse界面都花掉），所以710里面做了新的尝试，就是改用还在beta阶段的Mac4lin，一个比较新的开 源项目，目的就是在Linux上使用Mac效果，不知是否有很多版权问题，HOHO。但是配置起来还是挺麻烦的，而且还不稳定，无质保，有兴趣的朋友可以 去尝试下 :P。<br />
8.Pidgin MSN插件补丁<br />
这个就不算一个单独软件了，只是一个MSN Group的插件，默认的里面所有Group成员都是一个名字，相当郁闷，于是乎有了这个：http://forum.ubuntu.org.cn/viewtopic.php?t=80877&amp;sid=a34d80f1acdb7164f20340d349279294，按照那个做就可以，估计后续版本会修正。</p><p>9.Chm Reader</p><p>本来使用Firefox的插件阅读就可以，但是经常会需要很多网页和chm一起看的情况，切换不方便，而且还得用chm的导航窗口，所以还是用回独立的阅读器，比较流行的算上GnoCHM，但是有一些编码和字体上的问题，有的chm文件还会打不开，于是又找到一个基于QT的KChmReader，挺好用，两个阅读器都可以在源里直接安装，很方便</p><p>&nbsp;</p><p>二、开发工具/环境<br />
1.Eclipse<br />
Eclipse源里的是3.2，偶尔要用到MyEclipse功能的时候会用，但是鉴于MyEclipse慢还是盗版的问题，我直接使用Eclipse- JEE-Europa，去官网上直接下载www.eclipse.org，不过JEE-Europa还是有点慢。<br />
2.Emacs<br />
Emacs是用源里的，插件仅仅用了color-theme，如果今后有机会写写Java以后的代码会用的更多，现在Eclipse里面一直在使用Emacs Mode快捷键，开发效率有小副提高<br />
3.Oracle SQL Developer<br />
这是由Oracle开发的工具，是基于Swing的免费数据库管理工具，虽然功能上比PLSQL差很多，但是有总比没有好，它还顺便支持了MSSQL和MySQL，不过你得自己提供JDBC驱动。直接去Oracle网站上下载安装就可以。<br />
4.Vmware Server 1.0.4<br />
在Feisty上一直使用VirtualBox，VB的好处就是占用空间小，速度快，它提供的动态硬盘空间的技术非常的适合装双系统又不舍的给 Ubuntu分配多大硬盘的人，VB的缺点就是缺乏稳定性，搞不好就直接Core Dump。现在用Vmware主要是我改为模拟Win2k的精简版，用到的功能都有，而且很小，装好才1G多，但是我的ISO不知道为什么VB不支持，所 以就一直用Vmware了，Vmware比较讨人喜欢的一点就是它的WorkStation收费，Server版免费，商业软件毕竟稳定些，适合工作时候 用。VmwareServer相比WorkStation有一定的限制，但是不影响我们使用，具体的差别可以去网上搜，有大部分都是有关容量方面的限制， 而这种限制对于我们单机模拟的没有任何影响。直接去官方网站上下载最新版，VmwareServer for Linux目前最新的版本是1.0.4，已经解决了前面版本内核不规范的bug，直接安装即可使用，非常的方便。www.vmware.com<br />
<br />
三、Firefox插件系列<br />
在用Feisty的时候一直使用SwiftFox，因为当时Firefox非常慢，到Gutsy上Ubuntu对Fx支持更好一点，目前还没有换，现在 Automatix上提供的一个叫Swiftweasel的，好像还是SwiftFox，实际上Fx慢主要是遇到那种不兼容fx的网站太慢，所以再怎么针 对cpu和系统优化貌似效果都不是非常好。<br />
比较失望的一点是Firefox和Thunderbird没有提供最小化到托盘这一Win上看似很平常的功能，虽然有插件提供这一功能，居然说不支持Linux，压抑ing&hellip;&hellip;<br />
1.Firebug<br />
用过的朋友都知道，基本上是做Ajax的人都会用Firefox+Firebug来调试，先兼容Fx然后再考虑IE, V_V。Firebug的确是JS开发者贴身伴侣，准确的错误定位、难能可贵的JS Debug支持和DOM Inspector都是非常的好用。Firebug的一个缺点就是打开有错误的网站会很恐怖，比如打开www.qq.com，错误超过1w的时候Fx就会 慢得要命。<br />
2.DownThemAll<br />
Linux上比较头疼的就是缺乏像迅雷这种聚合下载工具的支持，使用国其他一些多线程下载器都不是很理想，最后发现了DownThemAll插件，Linux上多数的下载就都由它搞定，速度很快，缺点是断点支持差强人意。<br />
3.ChmReader<br />
CHM这种W上专有的格式一直都是我们开发者离不开的阅读工具，因为有太多英文资料都是chm格式，虽然阿有很多软件，但是对中文的支持都很差，而 chmreader插件却很方便，效果很好，而且几乎没有乱码的问题（可能是得意于Fx多语言的支持)。缺点是某些不够规范的chm可能会有显示错误。<br />
4.Noia<br />
一直都很喜欢Noia这个优雅的主题，它曾经一度是fx下载量最大的一个组件（包括主题、插件等），非常的赏心悦目，不像现在满眼都是类Vista风格的主题，看着用着都难受，原来老外也是多Windows Fans哦，HOHO。<br />
<br />
四、媒体<br />
虽然很少在Ubuntu上看电影、听歌，但是这仍然是不能忽略的东西，尽管现在很多东西还不方便，但是已经看到Ubuntu的努力，越来越方便。<br />
1.Amarok  非常优秀的流媒体播放器<br />
源里就有，而且已经用到1.4.7的稳定版，默认就是中文，很不错，Rthymbox还得在冷宫呆着，呵呵。<br />
2.播放各种视频<br />
A.<span class="postbody">w32codecs  为了能播放rm rmvb等格式，需要</span><span class="postbody">w32codecs，以往源里是没有的，但是cn99却提供了这一编码，安装方法：<br />
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt"><span><span>sudo apt-cache search w32codecs  </span></span></li>
    <li><span>sudo apt-get install w32codecs   </span></li>
</ol>
</div>
B.Gstreamer<br />
参考http://www.wmfield.idv.tw/424，在应用程序-&gt;添加/删除软件里面寻找
<div class="dp-highlighter">
<div class="bar"> </div>
<ol class="dp-j">
    <li class="alt"><span><span class="string">&quot;GStreamer extra plugins&quot;</span><span>  </span></span></li>
    <li><span><span class="string">&quot;GStreamer ffmpeg video plugin&quot;</span><span>  </span></span></li>
    <li class="alt"><span><span class="string">&quot;GStreamer plugins for aac, xvid, mpeg2, faad&quot;</span><span>  </span></span></li>
    <li><span><span> </span><span class="string">&quot;GStreamer plugins for mms, wavpack, quicktime, musepack&quot;</span><span>  </span></span></li>
</ol>
</div>
安装好。 </span></p>
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/137842#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 Nov 2007 00:54:52 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/137842</link>
        <guid>http://yueguangyuan.javaeye.com/blog/137842</guid>
      </item>
      <item>
        <title>继续做小白鼠 －－Ubuntu7.10安装体验</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/136149" style="color:red;">http://yueguangyuan.javaeye.com/blog/136149</a>&nbsp;
          发表时间: 2007年10月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp; 虽然强烈抑制自己的冲动，但最终还是失败，本来想一个月以后升级的，但是没忍住，下载了710刻录好升级，结果如预想的一样，升级崩溃。问题是出现在JDK6上，结果用网上的方法，最后搞的连dpkg-configure都完全乱套，无奈重新装，不知道Ubuntu啥时候能达到安装版本升级，虽然这个问题不是Ubuntu本身的问题，但是每次升级都会多多少少有致命错误，这样跟进的用户非常痛苦，据我所知已经有不少朋友由于Ubuntu升级的频繁和不稳定选择放弃Ubuntu而使用其他更为稳定的发行版，毕竟用操作系统是用来工作和学习的，老是无谓的将时间浪费在升级上显然是不现实的，也希望Ubuntu接下来能更加稳定。还有我升级的时候居然要下载1G多的内容，本来就很痛苦，再升级失败，更痛苦 <img src="../../../javascripts/fckeditor/editor/images/smiley/msn/cry_smile.gif" alt="" /><br />
<br />
&nbsp;&nbsp;&nbsp; 1.初次体验印象<br />
&nbsp;&nbsp;&nbsp;&nbsp; 其实这次重装也是有心里准备的，因为原来分配给Ubuntu的硬盘太小，这次顺便给加了15G的空间，我会将更多时间放在Linux系统的学习上。<br />
&nbsp;&nbsp;&nbsp;&nbsp; Gutsy Gibbon相比Feisty Fawn增加的特性大概有十几条，其中最显著的变化就是默认的Compiz桌面管理器、桌面搜索和用户快速切换。对我最有意义的改变就是Compiz，Compiz在Ubuntu上出现一年以后终于变得稳定起来，这样用户基本不需要安装Beryl，其实在Gutsy中Compiz已经和Beryl合并，在自定义Compiz时候，我们可以一眼就看出Compiz的特性几乎和Beryl一样。默认就集成了Compiz说明Compiz已经相当的稳定易用，不会像7.04里面功能弱还容易出错，而且这个Compiz明显比Beryl速度快，以前用Beryl的时候如果想显示桌面，肯定会有个明显的延迟，用了Compiz明显速度快，用户体验提升也是非常的明显。个人非常喜欢Ubuntu对Compiz的支持，因为这样的默认选项使得Ubuntu更具备与Vista竞争的资格。每个看到我本本的朋友第一感觉都会说你的操作系统真漂亮，装的Vista?（不过昨天看到一条消息说微软股价本周大涨就是因为Vista和光晕3的热卖）<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2.放弃Kiba-dock改用<span>Avant Window Navigator<br />
&nbsp;&nbsp;&nbsp;&nbsp; 由于Kiba-dock需要与beryl一起使用（这也是我一直在Feisty里面把着Beryl不放的一个无奈原因），现在终于可以放手了，Kiba-dock bug多多，而且还有那限制，所以这次决定改用</span><span>Avant Window Navigator，虽然同样也是个问题软件，但是它的很多特性都要好于Kiba-dock，安装参考：http://forum.ubuntu.org.cn/viewtopic.php?t=48369，安装很简单：
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j"><span>
    <li class="alt"><span><span>deb&nbsp;http:</span><span class="comment">//download.tuxfamily.org/syzygy42&nbsp;gutsy&nbsp;avant-window-navigator</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>deb-src&nbsp;http:<span class="comment">//download.tuxfamily.org/syzygy42&nbsp;gutsy&nbsp;avant-window-navigator</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>wget&nbsp;http:<span class="comment">//download.tuxfamily.org/syzygy42/reacocard.asc</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>sudo&nbsp;apt-key&nbsp;add&nbsp;reacocard.asc&nbsp;&nbsp;</span></li>
    <li><span>rm&nbsp;reacocard.asc&nbsp;&nbsp;</span></li>
    <li class="alt"><span>sudo&nbsp;apt-get&nbsp;update&nbsp;&nbsp;</span></li>
    <li><span>sudo&nbsp;apt-get&nbsp;install&nbsp;avant-window-navigator-bzr&nbsp;awn-core-applets-bzr&nbsp;&nbsp;</span></li>
    </span></ol>
    </div>
    装好以后做一些简单的配置就可以使用，很不错的说，至少不会像Kiba-dock那样去挤压最大化窗口，而且外观也比Kiba-dock漂亮。<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目前为止我用过gDesklets、Kiba-dock、Avant Windows Navigator三个Dock，就写这个帖子的情况来看推荐使用最后一个，前面的两个超级难用，但是AWN也是最年轻的一个，使用问题多多也在情理之中。<br />
    </span>&nbsp;&nbsp;&nbsp;&nbsp; 3.一些习惯性操作<br />
    &nbsp;&nbsp;&nbsp;&nbsp; Gutsy里面提供了一个奇怪的特性，就是会根据客户的首选操作语言来修改你的Home文件夹的名字，这个如果你改了就会很不方便，因为要是把Desktop文件夹名改成桌面，那你在终端操作的时候就会很麻烦，所以不推荐在更改首选语言的时候同时修改这些文件夹的名字。<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还是字体，每次更换版本都不得不提的问题，这次修改的比较顺畅，因为也不是第一次，只是有一点改变，就是等宽字体选择Lucida Console这款OSX上的经典字体，本来想全部采用的，但是它并没有提供对中文的支持，所以其他字体我仍然采用STHeiti，这样，我就避免了以前使用STHeiti的时候英文字母不会加粗的情况，看起来更为统一。<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Compiz中提供一个SuperKey+Tab的切换方法，和Beryl里面的很类似，但是效果更为漂亮，切换效率会高于Alt+tab，使用IBM而缺乏SuperKey支持的朋友掠过此段 :P<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenOffice再次升级，已经到2.3版，速度还真快，使用不到一年Ubuntu，OpenOffice已经升级3次，这次Splash颜色还算是比较漂亮，启动速度感觉上又所提升，但是实际用起来怎么样，还有待考察。<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 710中一个新特性就是增加了桌面搜索，虽然我没用上，但是这些信息对大家可能有用：是一个叫trackerd的进程，快捷键Alt+F3，这样就可以根据关键字搜索东西，包括两方面搜索，一个是网站里面提供的搜索，点击一个就会在Firefox里面搜索你要的东西，还有一个功能是动作搜索，就是你之前执行过什么动作，这样会比你打开Alt+F2更快<br />
    &nbsp;&nbsp;&nbsp; <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.目前发现的一些问题：<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A,SCIM Compiz貌似有很大的冲突，或许是我用Avant Window Navigator的缘故，很多程序都会假死，而且这种假死好像无法回复，直接导致除了Ctrl+Alt+BackSpace有效，其他都无效&hellip;&hellip;直接导致第一天使用新版本就死机3次&hellip;&hellip;<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.又一次无法在Nautilus里面修改文件名，这个在刚安装710的时候也有过，看来要等等Ubuntu升级一些东西才可以咯。<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.Compiz仍然不够稳定，拖动窗口有时候会出错。<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D.有个朋友也升级到710，升级虽然成功，但是有个问题就是ATI显卡不能支持高分辨率，现在一直在用800＊600郁闷着，以上问题谁遇到过就麻烦指点下哈，谢谢。<br />
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E.11月1日发现一个严重的问题：trackerd也就是桌面搜索有严重的内存泄露并且将CPU耗掉，基本上是用几个小时，我的硬盘和CPU就滚烫，打开系统监视发现一个什么都没做的trackerd居然吃了50％的CPU，我晕！这个bug已经有人提交了，不过平时我也不用，不知道啥时候会解决。关掉就可以，但是很多朋友用久了就会发现硬盘也被吃的厉害，原因是Trackerd会将搜索内容放在～/.cached 和~/.local下面，网上居然有人说已经超过1G，真是厉害，呵呵。<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/136149#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 28 Oct 2007 15:05:18 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/136149</link>
        <guid>http://yueguangyuan.javaeye.com/blog/136149</guid>
      </item>
      <item>
        <title>Ubuntu Feisty 上使用Eclipse Europa和NetBeans 6 M10手记</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/123151" style="color:red;">http://yueguangyuan.javaeye.com/blog/123151</a>&nbsp;
          发表时间: 2007年09月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 随着Eclipse Europa强势发布，预示着从去年开始就炒的沸沸扬扬的IDE大战Eclipse一方再次占得先机，遥遥无期的NetBeans6正式版已经让我们等得 不耐烦，跟着用过M7 M9 M10，都是很失望的结果，像我这种离开Eclipse就歇菜的选手（现在大多数开发者都是这个情况），则一直关注着热闹的开源IDE市场的发展动向，所 以Europa NetBeans6 M10我都是第一时间抢鲜试用的。由于我是使用Ubuntu Feisty作为操作系统，所以以下的开发手记都是针对两款IDE在Ubuntu上的表现。<br />
<br />
&nbsp;&nbsp;&nbsp; 1.Eclipse Europa JEE<br />
&nbsp;&nbsp;&nbsp; A.由于工作的需要，在使用Eclipse 3.1和Eclipse 3.2的时候都会用到MyEclipse的某些功能（Hibernate映射文件和JSP代码格式化),导致Eclipse的运行速度受到很大的拖累，一 直都不推荐大家使用MyEclipse，目前在视盗版于无物的国内MyEclipse俨然成为一个全新的IDE，很多人甚至认为Debbuger功能是 MyEclipse提供的！所以在拿到Europa的第一时间我就发现了WTP的支持，一直以来JSP Editor都是IDE不太支持的东西（MyEclipse那个龟爬一样的JSP Editor我都是不用的），其实我们要求也不高，只要语法高量、格式化等简单的功能我就很满足了，WTP应该是非常的胜任这项工作（WTP还有更多功 能，不知道有谁体验过）。<br />
&nbsp;&nbsp;&nbsp; B.接下来看看Europa里面带来的21个令人兴奋的子项目（http://www.eclipse.org/projects/），BIRT、 Equinox、SOA，每个都是重量级的东西哦，还包括一些可能是规模略小的东西，但是仍然可能会成为我们日常开发中不可缺少的工具，BiRT 2.0的发布以及Equinox开发的流行都会对今后的软件开发产生非常大的影响，有IBM和Eclipse 基金会的强大支持，BIRT足以令人期待，而Equinox在Eclipse上的成功也将为OSGi标准在Java业界的推广带来足够的推动力，前几天在 Spring官方网站(www.springframework.org)的主页上看到了Spring在新版本中提供了对OSGi的支持，Adrien大 叔超过1个小时的激情讲述都在为我们描绘OSGi的美好蓝图，让我们一起关注OSGi(http: //neilbartlett.name/blog/osgi-articles/)，也许Eclipse下的21个子项目会创造出10个以上的专职开发 工种呢。<br />
&nbsp;&nbsp;&nbsp; C.Eclipse Linux gtk的计划使广大Linux用户受到了最实实在在的好处，它让Linux上的Java程序员可以和Windows上具有一样的开发效率，也展现着IBM 对Linux的野心，在比较 试用Eclipse和netbeans的时候心里就会有这样一个想法：如果java的老爸不是SUN而是IBM，世界会是个啥样子？<br />
&nbsp;&nbsp;&nbsp; D.说些Eclipse目前不大好的地方。Eclipse肥了，而且是越来越肥，Eclipse3.2在我的机子上跑要吃掉200M内存，而 Eclipse-Europa就要300M，我用的Eclipse-Europa-JEE居然创纪录的达到500M，为了能正常使用它，我被迫给本本升级 到2G内存，这招数怎么和Vista促进硬件销售很相像呢？Eclipse SWT Designer，是商业软件，这个令偶很不爽，尽管有免费版，但是阉割的也太厉害了，连TextArea都不支持（还有很多不支持的东西），没天理呀！ 不知道Europa Nebula项目能不能满足我们对SWT开发的需求，估计以后就要靠它了。</p>
<p>&nbsp;&nbsp;&nbsp; 2.NetBeans 6.0 M10</p>
<p>&nbsp;&nbsp;&nbsp; 虽然离NetBeans 6正式版发布还有段日子，但是都已经Milestone10了，不会再在接下来有什么翻天覆地的变化吧？不过我还真希望它能有什么脱胎换骨的变化，否则在Eclipse强大的用户基础面前，NetBeans想突出重围想必是非常困难。用NetBeans目前仅仅停留在Swing的使用上，因为它有还能勉强用的可视化编辑器，至于成熟度实在不敢恭维，再有它的的各种组件都会让人有撞墙的冲动，特别是对Eclipse过来的用户，CVS、快捷键（虽然我都使用Emacs Mode，但是很多时候NB的快捷键多比较脑子进水）、包管理还有Swing那别扭的界面，都足以令人压抑。</p>
<p>&nbsp;&nbsp;&nbsp; A.终于是支持UTF-8编码了，而且是默认的，也不用像在M9一样要手动去改配置文件，但是确有更多隐藏的编码问题。做了一个很简单的桌面程序，但是发现原本在M9时好用的东西跑到M10里面不好用了，界面一出来就是乱码，而且是在编译好的jar文件运行时出现，平时调试的时候不会有乱码&hellip;&hellip;这个真是超级烦躁，每次编译的时候控制台都会出现warn,</p>
<p>&nbsp;</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j">
    <li class="alt"><span><span>Warning:&nbsp;Cannot&nbsp;convert&nbsp;string&nbsp;</span><span class="string">&quot;-b&amp;h-luxi&nbsp;sans-medium-r-normal--*-140-*-*-p-*-iso8859-1&quot;</span><span>&nbsp;to&nbsp;type&nbsp;FontStruct&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>Warning:&nbsp;Cannot&nbsp;convert&nbsp;string&nbsp;<span class="string">&quot;-misc-ar&nbsp;pl&nbsp;shanheisun&nbsp;uni-medium-r-normal--*-*-*-*-p-*-iso10646-1&quot;</span><span>&nbsp;to&nbsp;type&nbsp;FontStruct&nbsp;&nbsp;</span></span> </li>
</ol>
</div>
<br />
<p>&nbsp;</p>
<p>搜了很多地方，但是并没有找到满意的结果，主要就是JVM中缺乏映射字符集，改起来也满麻烦的，需要改jvm下一个fontproperties的配置，无奈之下，把所有的控件的字符都换成了微软雅黑才搞定，但是字体就比较难看了，没办法。</p>
<p>&nbsp;&nbsp; B.令人疯掉的GroupLayout，M10中与前面的版本又有了新的变化，开始使用一个新的GroupLayout来做设计器的布局管理器，同样是在调试的时候可以运行，然后运行编译好的jar文件就会出现 的异常。十分的可恶，搞了我好久，到网上找，多是说NetBeans5.5的问题，回答是将Swing扩展库加进去就可以，但是怎么搞都不行，手动添加也不成。后来在反复的寻找和尝试中，终于找到了问题：选定JFrame文件，然后进入Inspector视图，再进入Properties，然后找到Layout Generation Style，选择Swing Layout Extention Library,真的不是一般的绕&hellip;&hellip;</p>
<p>&nbsp;&nbsp; C.郁闷的Swing，Swing走到今天，感觉已经在逐渐走上AWT的老路，虽然SUN仍然在力挺，但是已经感觉没有以前那么坚决，在M10发布的同时也开始不再推荐使用NetBeans来做Swing的编辑器，而Swing缓慢的速度、别扭的界面都不怎么讨人好，NetBeans就是第一个受害者，启动速度慢，而且怎么看怎么别扭，严重降低开发体验。还有一个在Linux上使用令人诟病的地方，就是Swing同Beryl、SCIM输入法的冲突问题，尽管修改一些配置可以避免，但是它仍然会时不时的出现错误，经常都是在做了一个略微大一点的动作之后再打字就死活都打不进去，十分的令人气愤！真是不知道Swing怎么来顶起Java的桌面市场呢？</p>
<p>&nbsp;&nbsp; D.性能方面，NetBeans有一个好处，就是直接继承了Profiler,但是有点搬起石头砸自己的脚的意思，启动后的NetBeans是40M左右，但是在工作一段时间以后，就会一直增加，我用到多的时候能到200M，但是我只是跑一个连数据库都不要连的Swing小程序哦&hellip;&hellip;这可能也是我用Eclipse的习惯问题？Eclipse是加载起来就300－500M，然后就停在那里不动，结果感觉NetBeans是在内存泄露，HOHO。还有就是M10变得更肥了，集成的glassfish很少听说有人在用，一个完整版下来要装500多M，我可怜的硬盘那&hellip;&hellip;<br />
</p>
<p>&nbsp;&nbsp;&nbsp; 由于本人不是做桌面程序开发的，更不是用NetBeans的熟手，只能凭借自己的浅薄体验来说事，但是个人感觉NetBeans实在不会讨人喜欢，虽然M9发布时JRuby的支持曾经一度引起大家的广泛关注，但是脚本语言用不用这种重量级的IDE都还是有商量的，何况NetBeans最该力挺的是它自己的Java、JSF、Swing产品线呀。M10里面有了很多的改进，比如终于支持不区分大小写的代码助手、默认UTF-8编码等积极的改进，但是还莫名其妙的修改了不少配置，这不是给大家找麻烦么？果然应验了那句&ldquo;SUN的理论天下无敌、但是工具用着却让人撞墙&rdquo;的言论，居然可以一直保有这样的风格，还真是有个性&hellip;&hellip;至此我的NetBeans6 M10和Europa的试用告一段落，我会继续使用eclipse3.2了，但就目前的情形来看，Europa足以引领Java界的新潮流，而NetBeans就得继续举办各种赠送iPod的大赛（详见CSDN）来提升人气了。</p>
<p>&nbsp;&nbsp;&nbsp; 在朋友的提醒下最近开始学习OSGi、Eclipse plug-ins、Eclipse RCP这方面的知识，随着RIA的火爆，富客户端应用带动Eclipse RCP再次成了开发技术的热门，随着IBM几条重要的产品线Lotus、Rational等都开始采用Eclipse RCP作为开发平台，还有许多知名厂商也逐渐向Eclipse靠拢，其中就包括Weblogic Workshop，Eclipse已经不再是一个简单的Java IDE，而是一个平台，一个标准，随着Eclipse的成功也会带动其基础架构OSGi的普及，两个强强联手的东西一定会给我们带来更多的惊喜，那么现在正是时候补充自己OSGi、Eclipse plug-ins的时候！</p>
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/123151#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 13 Sep 2007 21:58:00 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/123151</link>
        <guid>http://yueguangyuan.javaeye.com/blog/123151</guid>
      </item>
      <item>
        <title>PropertiesUtil</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/122941" style="color:red;">http://yueguangyuan.javaeye.com/blog/122941</a>&nbsp;
          发表时间: 2007年09月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp; java里面提供了对Properties文件的基本操作，但是太弱了，在网上找到一个封装类，原出处找不到了
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/122941#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 11 Sep 2007 17:03:00 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/122941</link>
        <guid>http://yueguangyuan.javaeye.com/blog/122941</guid>
      </item>
      <item>
        <title>项目积累：Weblogic</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/115330" style="color:red;">http://yueguangyuan.javaeye.com/blog/115330</a>&nbsp;
          发表时间: 2007年08月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          新项目中最大的收获就是Weblogic的使用和管理，由于客户的要求，使用的是Weblogic10，而且必须使用Ant进行全程的部署工作，还有一些使用Weblogic WebService开发的东西，也算是学习了不少东西，这里做一些总结<br />
<br />
1.JDK的一个bug(运气好，遇到系统级的bug)<br />
&nbsp;&nbsp; 在使用Ant发布项目到服务器上的时候一直是正常的，但是由于开发WebService遇到一些问题，不得不将Weblogic装一个在我的本地电脑上，于是出现了问题，原本好好的Ant脚本在执行deploy任务的时候死活都找不到地址，这个问题折磨我两天时间，后来有朋友说找到了一个bug：<strong> Serialization error when client app on JDK1.6  access WebLogic on JDK1.5 ，</strong>具体描述：http://forum.java.sun.com/thread.jspa?threadID=5195504&amp;tstart=15<br />
<br />
&nbsp;&nbsp; 原来是因为JDK6中ClassLoader做了一些修改，而我的Ubuntu上apt-get默认安装的是JDK6，而Weblogic10是使用的JDK1.5，结果不幸中标，遇到这个bug，这个帖子中提出的解决方式我试了但是不好用，不知道是不是我写错了，索性在执行ANT任务前直接export JAVA_HOME 到bea提供的jdk1.5，这样问题就解决了，这个真的好玄妙哦，怎么也没想到是因为JDK跨版本出现了系统级的bug，目前SUN好像还没有修复该bug。
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/115330#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 22 Aug 2007 17:54:00 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/115330</link>
        <guid>http://yueguangyuan.javaeye.com/blog/115330</guid>
      </item>
      <item>
        <title>CVS从Windows上移植到Linux上的问题</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/111816" style="color:red;">http://yueguangyuan.javaeye.com/blog/111816</a>&nbsp;
          发表时间: 2007年08月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp; 老板决定将CVS服务器从旧有的的WindowsServer上移到Linux上，原因是用户太多，而且服务器还中毒了，速度非常慢，并且随时有数据丢失的风险。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 主要的操作不是我做的，服务器是Redhat AS，大体上是安装一个CVSServer，然后新建一个新的repository，然后把原有的东西拷贝过去。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 这里面就遇到了http://www.blogjava.net/sean/archive/2007/04/14/110640.html上面提到的问题，这些问题都是出现在Windows用户上，使用Linux就没有这问题 ，小开心一下:P。就是原本Binary的文件都变成了ACSII-kkv，这样会导致Windows用户无法识别这些文件的问题，比如jar文件和图片文件。还有就是原来Windows用户的路径格式都有错了。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 路径的问题，没办法，Eclipse的CVS上并没有提供修改checkout代码的地方，估计修改一些后台的文件可行，但是没有试验。只是一些使用乌龟CVS的人改改配置就可以直接checkout了。用EclipseCVS就有点麻烦，因为原来使用的反斜杠、大小写不加区分和中文文件名的路径都会出问题，索性都要重新checkout出来。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 比较麻烦的是码制的问题，如果重新checkout下来的代码，windows上eclipse根本无法识别，必须用Binary格式替换掉，这样就会比较麻烦。于是想到将服务器上文件删除掉，但是服务器上的文件实际上是包含版本信息的一些记录文件，都是一&quot;,V&quot;结尾的文件，被删除以后，所有的CVS upadate都会出现问题，因为服务器认为这个文件已经处于锁定状态，会报没有权限的问题，说是什么#cvs.lock文件存在。这下可是麻烦了，到服务器上怎么都找不到这个锁文件。然后去网上搜索，很多人都说把这个锁文件删除，但是找不到怎么删除呢？通过查询也多了解了一些CVS的机制，一般每个操作都会先创建一个主锁cvs.lock，然后进行操作，之后还包含了很多锁操作，具体可以参考网上的CVS文档，还有中文的。没办法，郁闷了很久。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果我联系到那篇帖子的主人 Sean Gao，得到了答案：将服务器上码制有问题的文件都删除掉，然后更新本地文件，可以更新了，更新以后相当于把本地文件都删除。接下来将服务器上需要修改的路径修改权限为770，然后将本地加上正确的文件，再提交，搞定。<br />
<br />
&nbsp;&nbsp;&nbsp; 在此特别感谢Sean Gao。www.blogjava.net/sean<br />
<br />
<br />
&nbsp;&nbsp;&nbsp; 在这个问题解决之后又出现新的问题，就是Windows用户访问起来超级慢（而我用Linux访问的速度那就是爽就一个字），特别是提交的时候，速度简直令人难以忍受，网上也有很多人遇到这个问题，但是没有人提出好的解决办法，有人说可能和Windows上的流量监控软件或者反病毒软件的使用有关系,请问有人知道这个问题怎么解决吗？</p>
<p>&nbsp;&nbsp;&nbsp; 1个月后终于发现了解决办法：Windows上的防火墙是罪魁祸首，解决很简单，使用CVS的时候关掉防火墙，速度估计以百倍计！</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 所以在这里给这次Linux CVS移植总结一下：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 1.强烈推荐将CVS安装到Linux上，无毒、速度快，毕竟是在Unix上诞生的东西，自然是亲生的好（最典型的例子就是ruby），我这里刚好有一个简单的统计数字：原来我在服务器（RHAS）上checkout Windows上的代码需要2分钟，现在是Linux对Linux，只需要10秒，同样Windows系统checkout也一样是飞快。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2.权限管理灵活，在Windows上我们只知道使用系统帐号来控制权限，一直没找到其他办法，不知道谁知道其他方法，而Linux上CVS是专门的帐号，更安全，权限更好控制。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.Linux CVS管理略微比Windows上麻烦，尤其是锁文件的问题，上面已经给出了一些解决办法</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 4.Windows防火墙的问题，很多时候Windows防火墙都是Win与Linux交流的一道巨大屏障，经常想着点就好。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.这点有点不一样，是我以前的问题，就是CVS服务器上文件夹命名尽量使用英文，而且不要加空格，这个对于Linux用户来说很熟悉，但是对于配制管理员来说就不一定是那么回事了，所以如果你看到CVS服务器的文件夹有问题，坚决地址这种低级错误，否则出了问题损失巨大（我们Linux的服务器就无法定位到WIn上中文乱码和带空格的文件夹）</p>
<p>&nbsp;&nbsp;&nbsp; </p>
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/111816#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Aug 2007 20:09:07 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/111816</link>
        <guid>http://yueguangyuan.javaeye.com/blog/111816</guid>
      </item>
      <item>
        <title>Ubuntu 7.04上安装Mantis</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/107051" style="color:red;">http://yueguangyuan.javaeye.com/blog/107051</a>&nbsp;
          发表时间: 2007年07月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          参考：http://www.linuxdiyf.com/bbs/thread-47085-1-10.html<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.linuxdiyf.com/bbs/thread-47085-1-11.html<br />
<br />
<br />
1.sudo apt-get install apache2 libapache2-mod-php5 php5 php5-gd mysql-server php5-mysql phpmyadmin<br />
2.修改Mysql root用户密码<br />
3.配置php5<br />
4.配置mysql<br />
5.安装Mantis<br />
&nbsp;&nbsp;&nbsp; 将下载好的Mantis改名为mantis 移到/var/www/下面&nbsp; sudo chmod -R 777 mantis/<br />
&nbsp;&nbsp;&nbsp; 修改apache2配置文件<br />
&nbsp;&nbsp;&nbsp; 修改Mantis配置文件 cp config_inc.php.sample config_inc.php vi /var/www/mantis/config_inc.php<br />
&nbsp;&nbsp;&nbsp; 配置用户名 密码&nbsp; 邮件<br />
&nbsp;&nbsp;&nbsp; 导入数据库文件&nbsp; http://localhost/mantis/admin/install.php<br />
<br />
&nbsp;&nbsp;&nbsp; 然后使用&nbsp; 用户名:administrator 密码root<br />
<br />
<br />
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/107051#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 30 Jul 2007 18:45:23 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/107051</link>
        <guid>http://yueguangyuan.javaeye.com/blog/107051</guid>
      </item>
      <item>
        <title>Emacs 技巧积累</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/101039" style="color:red;">http://yueguangyuan.javaeye.com/blog/101039</a>&nbsp;
          发表时间: 2007年07月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp; 慢慢开始学习Emacs，实在是个超牛的东西，但是它包含的东西也太多，需要积累很久。<br />
<br />
1.寻找快捷键：如果知道一个lisp命令，但是不知道其快捷键，那么输入M-x method&nbsp; 执行一下就能看到这个命令是否被绑定到某个快捷键上<br />
2.Mode 快捷键查询 C-h m<br />
&nbsp; 不退出emacs就让配置文件生效&nbsp; M-x eval-buffer<br />
3.一些有用的快捷键<br />
&nbsp; C+left C+right/M+left M+right&nbsp;&nbsp; 移动到前后一个单词&nbsp; 一句话<br />
<br />
Lisp 代码 <br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span>(setq&nbsp;inhibit-startup-message&nbsp;t);启动不出现闪屏&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>(setq&nbsp;visible-bell&nbsp;t);关闭出错提示声&nbsp;&nbsp;</span></li>
    <li class="alt"><span>(setq&nbsp;make-backup-files&nbsp;nil);不产生备份文件&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>(global-font-lock-mode&nbsp;t);语法高亮&nbsp;&nbsp;</span></li>
    <li class="alt"><span>(auto-image-file-mode&nbsp;t);打开图片显示功能&nbsp;&nbsp;</span></li>
    <li class=""><span>(column-number-mode&nbsp;t);显示列号&nbsp;&nbsp;</span></li>
    <li class="alt"><span>(tool-bar-mode&nbsp;nil);去掉那个大大的工具栏&nbsp;&nbsp;</span></li>
    <li class=""><span>(scroll-bar-mode&nbsp;nil);去掉滚动条&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>(setq&nbsp;x-select-enable-clipboard&nbsp;t);允许和clipboard交互&nbsp;&nbsp;</span></li>
    <li class=""><span>(<span class="keyword">transient</span><span>-mark-mode&nbsp;t);加亮选中部分&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>;插件路径&nbsp;&nbsp;</span></li>
    <li class="alt"><span>(add-to-list&nbsp;'load-path&nbsp;<span class="string">&quot;/home/newjava2/theme&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>;-------------------------------&nbsp;设置界面-------------------------------&nbsp;&nbsp;</span></li>
    <li class="alt"><span>(require&nbsp;'color-theme)&nbsp;&nbsp;</span></li>
    <li class=""><span>;;(color-theme-initialize)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>;;(color-theme-tty-dark)&nbsp;&nbsp;</span></li>
    <li class=""><span>(color-theme-comidia)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>;-----------------------------end&nbsp;of&nbsp;设置界面--------------------------&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>;-------------------------------&nbsp;设置显示时间---------------------------&nbsp;&nbsp;</span></li>
    <li class="alt"><span>(display-time-mode&nbsp;<span class="number">1</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>(setq&nbsp;display-time-24hr-format&nbsp;t)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>(setq&nbsp;display-time-day-and-date&nbsp;t)&nbsp;&nbsp;</span></li>
    <li class=""><span>;--------------------------------endof&nbsp;设置显示时间---------------------&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>(global-set-key&nbsp;[f11]&nbsp;'my-fullscreen)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>;全屏&nbsp;&nbsp;</span></li>
    <li class="alt"><span>(defun&nbsp;my-fullscreen&nbsp;()&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;(interactive)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;(x-send-client-message&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;nil&nbsp;<span class="number">0</span><span>&nbsp;nil&nbsp;</span><span class="string">&quot;_NET_WM_STATE&quot;</span><span>&nbsp;</span><span class="number">32</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;'(<span class="number">2</span><span>&nbsp;</span><span class="string">&quot;_NET_WM_STATE_FULLSCREEN&quot;</span><span>&nbsp;</span><span class="number">0</span><span>))&nbsp;&nbsp;</span></span></li>
    <li class=""><span>)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>;最大化&nbsp;&nbsp;</span></li>
    <li class="alt"><span>(defun&nbsp;my-maximized&nbsp;()&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;(interactive)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;(x-send-client-message&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;nil&nbsp;<span class="number">0</span><span>&nbsp;nil&nbsp;</span><span class="string">&quot;_NET_WM_STATE&quot;</span><span>&nbsp;</span><span class="number">32</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;'(<span class="number">2</span><span>&nbsp;</span><span class="string">&quot;_NET_WM_STATE_MAXIMIZED_HORZ&quot;</span><span>&nbsp;</span><span class="number">0</span><span>))&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;(x-send-client-message&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;nil&nbsp;<span class="number">0</span><span>&nbsp;nil&nbsp;</span><span class="string">&quot;_NET_WM_STATE&quot;</span><span>&nbsp;</span><span class="number">32</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;'(<span class="number">2</span><span>&nbsp;</span><span class="string">&quot;_NET_WM_STATE_MAXIMIZED_VERT&quot;</span><span>&nbsp;</span><span class="number">0</span><span>))&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>)&nbsp;&nbsp;</span></li>
    <li class=""><span>;启动时最大化&nbsp;&nbsp;</span></li>
    <li class="alt"><span>;(my-maximized)&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/101039#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 17 Jul 2007 10:02:00 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/101039</link>
        <guid>http://yueguangyuan.javaeye.com/blog/101039</guid>
      </item>
      <item>
        <title>Ubuntu的用户们Show下你的桌面吧</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/101305" style="color:red;">http://yueguangyuan.javaeye.com/blog/101305</a>&nbsp;
          发表时间: 2007年07月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Ubuntu 7.04可是用来与Vista做比较的，现在已经有了什么Ubuntu<font size="-1"> Christmas Edition</font>的出现，也是为了与Vista <font size="-1">Ultimate，而Vista的一个卖点就是桌面效果，Ubuntu当然不能逊色，不知道各位Ubuntu的用户的桌面都是什么样的呢？拿出来show下吧，顺便征集更好的桌面设置方案<br />
我的桌面方案比较简单，采用的gDesklets，http://yueguangyuan.javaeye.com/blog/99497</font>
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/101305#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 15 Jul 2007 17:30:00 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/101305</link>
        <guid>http://yueguangyuan.javaeye.com/blog/101305</guid>
      </item>
      <item>
        <title>Firefox快捷键</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/101288" style="color:red;">http://yueguangyuan.javaeye.com/blog/101288</a>&nbsp;
          发表时间: 2007年07月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 来到Ubuntu的世界，就不能没有快捷键，Firefox这么重要的软件更不能没有快捷键，oh yeah!查看快捷键完整版本：http://www.xxlinux.com/linux/article/accidence/technique/20070109/6864.html<br />
<br />
这里写几个常用的：<br />
1.M+&lt;-(-&gt;) 浏览历史后退、前进<br />
2.Esc&nbsp; 停止加载页面<br />
3.C+u 查看页面源码<br />
4.C+w C+F4 关闭当前标签<br />
5.C+f 查找&nbsp;&nbsp; F3再次查找&nbsp; （Editplus经典快捷键)<br />
6.C+Tab/C+Shift+Tab 下/上一个标签<br />
7.Home/End 页面的顶端/底端<br />
8.C+L/M＋D 快速定位光标到地址栏&nbsp; （这个快捷键相当有用）</p><p>&nbsp;</p><p>9.C+K 定位到搜索拦</p>
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/101288#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 15 Jul 2007 14:42:01 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/101288</link>
        <guid>http://yueguangyuan.javaeye.com/blog/101288</guid>
      </item>
      <item>
        <title>项目反思：DetachedCriteria需要吗？不需要吗？</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/99519" style="color:red;">http://yueguangyuan.javaeye.com/blog/99519</a>&nbsp;
          发表时间: 2007年07月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hibernate3中提供了DetachedCriteria的支持，使得开发的时候可以脱离Hibernate Session来构造查询，特别是可以将查询条件直接在Web层构造，但是在使用中一直存在着很大的争议：DetachedCriteria Bug明显，使用DetachedCriteria使得原本层次分明的结构又变得焦灼起来。而我在新的项目中使用真的是冒了比较大的风险，比起HQL、QBC来说，DC就显得非常的年轻，没有很多的成功范例让使用变得非常的危险。所以在这里说说自己的使用心得，DetachedCriteria是否有必要使用？<br />
&nbsp;&nbsp;&nbsp;&nbsp; 代码部分参考Robbin的帖子：http://www.javaeye.com/post/86781。相对以往Hibernate的查询方法HQL、QBC，DetachedCriteria优势明显，它可以像HQL一样脱离Session构造查询条件，也可以像QBC一样采用完全面向对象的方式查询，这给Hibernate更多的自由发挥空间。<br />
<br />
1.使用DC的时候，可以在Web层构造查询条件，而不用再在Dao层才去做烦乱的判断和Criteria.add()，让Dao更加的稳固的只尽其访问数据库的职责。<br />
2.使用DC还能更多的节省代码，以往Dao的开发习惯都是将Dao与指定的Model进行绑定，而DC本身脱离了Dao，没有必要再对某个Dao单独去指定findAllByDc这样的方法，这样写一个公用的接口，每个需要使用DC查询的上层类直接访问这个公共借口就可以，使得相同的代码省了不少，减少Dao层代码的负担，不都说减少代码意味着减少测试和出现bug的几率么。<br />
&nbsp;&nbsp;&nbsp;&nbsp; &ldquo;成也萧何、败也萧何&rdquo;，为了能得到上面的这些好处，你就很可能和我一样遇到下面的麻烦：<br />
1.查询代码又一次充斥在框架的各个层面上。可能有人会说使用DC的时候都是面向对象的构造查询条件，根本没有select from这样的字样，不算数据库操作，但是某天我一个昏头就将不能用DC实现的一个查询改成了HQL查询来做，也写了个类似的接口，可以接受各种构造好的HQL查询语句，然后再看看呢，猛然发现这不就是MVC没成型的时候到处都是SQL那种样子么？由于DC的自由度，项目中的DC马上就充斥了MVC各个层面，就好像我们刚使用Rails的时候（Rails更爽，页面上偷偷写写也还是满爽的，你没写过？Think about select_tag..<br />
2.bug（应该叫待解决问题，小弟不才 <img src="/javascripts/fckeditor/editor/images/smiley/msn/sad_smile.gif" alt="" />）。就单从这个项目里需要解决的bug就够我烦的，目前还有3个郁闷的bug悬在那里。<br />
&nbsp;&nbsp; A.left join查询，双向一对多，通过父方查询的时候，在子方添加查询条件就怎么都配写不好，反复去网上找答案，大家也反复各种组合，最终还是没能解决，其他left join都正常，就到ont-to-many在子方添加条件，left join 突然失灵，打印出的SQL居然不是left join查询，大家郁闷至极，为了赶项目，无奈又拿起HQL（这就是我为什么在Action里面构造HQL，那的确是相当的没辙）。<br />
&nbsp;&nbsp; B.order by问题，这个问题好像是伴随DC上镜率最高的问题，就在我参考的robbin的这个帖子里面大家也是尽其所能的想办法，但好像没有什么结果，所以我现在的查询就是这个样子：翻页查询的时候前10条记录和10－20条记录里面居然有重复&hellip;&hellip;<br />
&nbsp;&nbsp; C.在分页查询的时候，如果查询结果集还关联set，那么就会有重复记录，尽管你可以通过LinkedSet过滤，但是分页的时候在结果集查出来之前没过滤，这结果显然是错误的，而Hibernate3中将returnMap()的过滤方法已经被移出&hellip;&hellip;<br />
&nbsp;&nbsp;&nbsp; 上面的问题很多是处在ont-to-many一方，可能有人会笑我的方法有问题，但是我用one-to-many是因为将many-to-many拆分处理的，我也没办法呀。<br />
3.难于测试。这个问题我已经在版上提问过了：http://www.javaeye.com/topic/98026，如果想对Service层DC这种东西测试，就需要将它做成接口，然后Mock，这种大规模明显是为了测试而测试，时间上也不允许，老板也不同意，索性继续使用Spring-mock那种测试方案，不脱离Dao进行测试。<br />
<br />
以上是我对DC在实际使用中的一点见解，其中有很多不成熟的地方，因为时间仓促，很多地方准备不足，而且现在还有一些问题无法解决，希望大家能给予自己的看法或者就我的问题提出解决方案 ：P。<br />
<br />
&nbsp;&nbsp;&nbsp; 目前看，DC还是要用的，仅仅限制于Web层构造查询条件的时候使用，而其他情况的数据库操作仍然放回到Dao层去做，而对于DC中存在的Bug，不知道大家有啥想法，是等着Gavin哪天高兴了去解决呢还是我们自行了断，重构代码？
          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/99519#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 09 Jul 2007 23:16:44 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/99519</link>
        <guid>http://yueguangyuan.javaeye.com/blog/99519</guid>
      </item>
      <item>
        <title>Ubuntu  继续积累软件</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/99497" style="color:red;">http://yueguangyuan.javaeye.com/blog/99497</a>&nbsp;
          发表时间: 2007年07月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp; 在Ubuntu上软件的使用太重要了，只能慢慢的积累。<br />
<br />
一.改头换面Gnome桌面<br />
&nbsp;&nbsp;&nbsp; 默认的Gnome桌面太傻，上下各一个面板，桌面上一大堆Volume，顶面板过于拥挤，于是决定整体改造一下。<br />
&nbsp;&nbsp;&nbsp; 其实有多种选择改变桌面风格，可以选择Fluebox那东西而启用Gnome，不过工程量好像很大，也比较麻烦，这次选择的是gdesklets来修改， 有点像苹果的桌面效果。这里顺便说一下，gDesklets和beryl有冲突，就是在启动Beryl后会使得现有的gDesklets display消失（重启beryl后可以搞定)，这个问题有点郁闷了。<br />
<br />
A.去掉桌面Volume图标<br />
&nbsp;&nbsp;&nbsp; Windows的硬盘一直在桌面上，十分的影响桌面视觉效果，移除无商量。<br />
&nbsp;&nbsp;&nbsp; http://www.xlhsq.com/bbs/simple/index.php?t177413.html&nbsp; 运行gconf-editor，修改/apps/nautilus/desktop/... volumes_visible的钩选，搞定。<br />
B.其实下面的字体也算是这个改造的一部分，字体真的比较关键。<br />
C.做个Mac风格的启动条。<br />
&nbsp;&nbsp; 苹果的启动条的确很爽，Windows、Linux都有模拟效果的软件，Gnome上有好几个，这里采用gdesklets，<br />
&nbsp;&nbsp; 安装：sudo apt-get install gdesklets&nbsp; sudo apt-get install gdesklets-data<br />
&nbsp;&nbsp; 然后就可以根据自己的需要选择。可以选择启动器、日历等方便的工具。<br />
D.现在简单了，换个壁纸吧，当然是Ubuntu主题，呵呵：http://www.zhuoku.com/zhuomianbizhi/computer-hardware/20061224044119.htm<br />
<br />
二、媒体软件<br />
&nbsp;&nbsp;&nbsp; 1.Ubuntu 7.04对各个格式的媒体都有更好的支持，在网上找到了这个：http://www.wmfield.idv.tw/424，完成一系列的搜索、安装。安装完以后大多数媒体格式都可以正常播放了，比前面的版本都要简单许多<br />
&nbsp;&nbsp;&nbsp; 这里面提供的安装软件的方法我以前一直是忽略的，就是应用程序－&gt;添加/删除软件，寻找gstreamer编码就是在这里面搜索俄，注意要选择所有可以安装的程序。这个动作也可以直接用命令装<br />
&nbsp;&nbsp;&nbsp; 2.安装万能播放器MPlayer，直接sudo apt-get install mplayer-fonts mplayer mplayer-skins mozilla-mplayer，然后修改设置才能正常播放，打开MPlayer，右键打开Preferances-&gt;Video-&gt;选择驱 动，我选的是gl2，但是这个好像和具体的机子、显卡有关系，要一个一个试下来。这样就可以正常使用各种媒体软件，包括DVD（但是第一次寻找非常的 慢），oh yeah!</p><p>
<br />
三、字体<br />
&nbsp;&nbsp;&nbsp; 刚刚装Ubuntu的时候曾经修改过字体，但是效果非常的差，索性就不做修改了，一直在用默认的字体，其实也还说得过去，但是用了几个月过来，渐渐感觉使 用Ubuntu默认的字体短时间没事情，看的时间长一些就有很明显的疲劳感，因为Ub的默认字体发虚，看着挺吃力，终于忍不住换上了Mac的 STHeiti，世界终于清爽了 ：P。&nbsp;&nbsp; http://www.osxcn.com/ubuntu/ubuntu-stheiti.html</p><p>&nbsp;</p><p>20080130补充 :</p><p>Firefox的字体虽然也改成了STHeiti，但是英文显示效果一直不好，eva字体
也一直很单薄，于是搜了搜，发现了这个：http://www.linux010.cn/Ubuntu/Ubuntu-Xia-Firefox-He-
EVA-DeZiBenXiuGai-stl21168.htm，把里面微软雅黑改成STHeiti就可好。</p><p>&nbsp;</p><p>20080225补充：</p><p>虽然使用了这种对中文支持比较好的字体显示中文是没问题了，但是英文就完蛋了，经常要看英文文档，那真叫一个痛苦，于是搜索得到这个：http://hi.baidu.com/avauntage/blog/item/699a8eee25ecf12a2cf534a2.html</p><p>做法就是修改~/.fonts.conf配置文件，之后英文也会好看一些。</p><p>&nbsp;</p><p>PS：文泉黑体出来了，很不错，和微软雅黑、STHeiti有一拼，希望Ubuntu今后的版本就可以用上这个字体来支持中文系统，那样就不用每次装好电脑先跟字体死磕那么长时间，还有使用盗版字体的后患 :P 。</p><p>&nbsp;</p><p>个人使用下来微软雅黑和STHeiti比较起来还是微软雅黑对中英文的显示更好一点，但是有先入为主的影响吧，就一直用着STHeiti，也挺好的。而且Linuxer多少都会有地址微软的想法&nbsp; :P</p><p>
<br />
四、Ubuntu上运行bash的问题<br />
&nbsp;&nbsp;&nbsp; 从Ubuntu6.10开始，将dash作为默认的shell环境代替bash，这一改动引起很大反响，虽然dash比bash小而且快，而且兼容 POSIX系统，但是漫山遍野的bash脚本到这里都歇了火。解决办法：http: //linuxtoy.org/archives/restore_ubuntu_edgy_shell.html<br />
运行sudo dpkg-reconfigure dash，可以得到官方有关这个决定的解释：<br />

</p><div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt"><span><span>Bash&nbsp;is&nbsp;the&nbsp;</span><span class="keyword">default</span><span>&nbsp;/bin/sh&nbsp;on&nbsp;a&nbsp;Debian&nbsp;system.&nbsp;&nbsp;However,&nbsp;since&nbsp;the&nbsp;Debian&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>policy&nbsp;requires&nbsp;all&nbsp;shell&nbsp;scripts&nbsp;using&nbsp;/bin/sh&nbsp;to&nbsp;be&nbsp;POSIX&nbsp;compliant,&nbsp;any&nbsp;shell&nbsp;&nbsp;</span></li>
    <li class="alt"><span>that&nbsp;conforms&nbsp;to&nbsp;POSIX&nbsp;can&nbsp;serve&nbsp;as&nbsp;/bin/sh.&nbsp;&nbsp;Since&nbsp;dash&nbsp;is&nbsp;POSIX&nbsp;compliant,&nbsp;it&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>can&nbsp;be&nbsp;used&nbsp;as&nbsp;/bin/sh.&nbsp;&nbsp;You&nbsp;may&nbsp;wish&nbsp;to&nbsp;<span class="keyword">do</span><span>&nbsp;</span><span class="keyword">this</span><span>&nbsp;because&nbsp;dash&nbsp;is&nbsp;faster&nbsp;and&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>smaller&nbsp;than&nbsp;bash&nbsp;&nbsp;</span></li>
</ol>
</div>
这样就可以正常运行bash，以下的代码：<br />
<div class="code_title">shell 代码</div>
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt"><span><span>#!/bin/bash&nbsp;&nbsp;</span></span></li>
    <li><span>#&nbsp;Scriptname:&nbsp;nosy&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;echo&nbsp;-e&nbsp;<span class="string">&quot;Are&nbsp;you&nbsp;happy?&nbsp;\c&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>read&nbsp;answer&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;echo&nbsp;<span class="string">&quot;$answer&nbsp;is&nbsp;the&nbsp;right&nbsp;response.&quot;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;echo&nbsp;-e&nbsp;<span class="string">&quot;What&nbsp;is&nbsp;your&nbsp;full&nbsp;name?&nbsp;\c&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>read&nbsp;first&nbsp;middle&nbsp;last&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;echo&nbsp;<span class="string">&quot;Hello&nbsp;$first&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;echo&nbsp;-n&nbsp;<span class="string">&quot;Where&nbsp;do&nbsp;you&nbsp;work?&nbsp;&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>read&nbsp;&nbsp;</span></li>
    <li><span>echo&nbsp;I&nbsp;guess&nbsp;$REPLY&nbsp;keeps&nbsp;you&nbsp;busy!&nbsp;&nbsp;</span></li>
    <li class="alt"><span>read&nbsp;-p&nbsp;<span class="string">&quot;Enter&nbsp;your&nbsp;job&nbsp;title:&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>echo&nbsp;<span class="string">&quot;I&nbsp;thought&nbsp;you&nbsp;might&nbsp;be&nbsp;an&nbsp;$REPLY.&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>echo&nbsp;-n&nbsp;<span class="string">&quot;Who&nbsp;are&nbsp;your&nbsp;best&nbsp;friends?&nbsp;&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>read&nbsp;-a&nbsp;friends&nbsp;&nbsp;</span></li>
    <li><span>echo&nbsp;<span class="string">&quot;Say&nbsp;hi&nbsp;to&nbsp;${friends[2]}.&quot;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
这段代码在配置之前10行以后的代码都不能正常运行，而重新配置后就可以了。有人建议还是默认的使用dash，当出现不兼容bash问题的时候修改下配置运行就可以。<br />
<br />
五、使用rdesktop无缝使用Windows程序，这里是简单步骤。参考:http://linuxdesktop.cn/2007/06/11/use-rdesktop-run-windows-softwares-on-ubuntu<br />
&nbsp;A、配置VitualBox的网络，默认的VitualBox采用的上网方式无法在内网访问到。http://www.oceanboo.cn/read.php?55<br />
&nbsp;B、安装rdesktop<br />
&nbsp;C、安装seamlessrdpshell.exe <br />
&nbsp;D、rdesktop -A -s &quot;c:\seamlessrdp\seamlessrdpshell.exe c:\windows\explorer.exe&quot; IP:3389 -u xxx -p xxx<br />
&nbsp;E、设置Windows 在注册表中增加Nodesktop 值为1，将任务栏拉倒侧边，并设置为自动隐藏<br />
<br />
六、解决Swing与Beryl的冲突问题<br />
&nbsp;JDK1.6 Swing程序中有bug，导致Swing在beryl管理器使用的情况下会出现无法显示的问题，暂时可以使用这个方法解决问题：在/etc/environment文件中新增一个配置：
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j">
    <li class="alt"><span><span>AWT_TOOLKIT=</span><span class="string">&quot;MToolkit&quot;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
七、管理Ubuntung项的工具<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原来Ubuntu下还有和M$ msconfig.exe 类似的工具，安装直接使用apt-get安装bum或者sysv-rc-conf，运行的时候sudo bum或者sudo sysv-rc-conf。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bum几乎和msconfig.exe里面的运行选项一样，可以控制每个程序启动项，还有一些其他功能，比如直接启动或者关闭某个程序。而sysv-rc-conf则是一个基于perl的文字环境管理工具，但是比bum要详细的多，而且还提供分级启动，将系统比较关键的进程列为S级。<br />
<br />
<br />
<br />
<br />
<br />

          <br/>
          <span style="color:red;">
            <a href="http://yueguangyuan.javaeye.com/blog/99497#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 09 Jul 2007 20:35:47 +0800</pubDate>
        <link>http://yueguangyuan.javaeye.com/blog/99497</link>
        <guid>http://yueguangyuan.javaeye.com/blog/99497</guid>
      </item>
      <item>
        <title>IE6.0 Firefox 2 兼容问题积累</title>
        <author>yueguangyuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yueguangyuan.javaeye.com">yueguangyuan</a>&nbsp;
          链接：<a href="http://yueguangyuan.javaeye.com/blog/98647" style="color:red;">http://yueguangyuan.javaeye.com/blog/98647</a>&nbsp;
          发表时间: 2007年07月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在搞Rails网站的那段时间就一直想做个小结，一直没来得及，这里把我所遇到的IE6 和Firefox兼容性的问题做以总结，里面也涉及一些Opera的东西，但是对Opera兼容接触的少，所以只是在查资料的时候顺便提了几点。由于我对Ajax应用的使用也不是很多，以下的内容基本都是来自于我们制作的网站<a href="http://www.bocai188.com/forum">www.bocai188.com/forum</a>里面的登陆框制作碰到的问题（样式仿造的JavaEye的登陆框），没想到这个登陆框还真是麻雀虽小、五脏俱全，Firefox和IE之间的问题出现了不少常见的。具体的实现代码在我的另一篇日志中记录：<a href="http://yueguangyuan.javaeye.com/blog/41511">http://yueguangyuan.javaeye.com/blog/41511</a> 附件代码下载即可运行测试效果。</p>
<p><br />
一.屏蔽用户Enter键<br />
&nbsp;&nbsp;&nbsp; ，所 以这里就有了不同的处理方法，很多页面上需要屏蔽用户采用Enter键来执行动作，尤其是Struts中，如果对一个Text框出发Enter事件并采用 Submit提交，经常会出现问题，所以可以用以下的方式将其屏蔽掉，或者对于单独Text框做一个移动焦点的动作也可以。<br />
</p>
<div class="code_title">
<div class="code_title">js 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-c">
    <li class="alt"><span><span class="comment">//键盘Enter事件屏蔽&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="keyword">function</span><span>&nbsp;onEnterClick(event){&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;eventObj=(event==</span><span class="keyword">null</span><span>)&nbsp;?&nbsp;window.event&nbsp;:&nbsp;event;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;keyCode&nbsp;=&nbsp;(event