Wednesday, December 17, 2008

Ubuntu Server(8.10)安装X windows桌面环境

1. 安装X窗口系统:
    # sudo apt-get install x-window-system-core
2. 安装登录管理器:
    # sudo apt-get install gdm
    或
    # sudo apt-get install kdm
    或
    # sudo apt-get install xdm
3. 安装桌面环境:
    # sudo apt-get install ubuntu-desktop
    或
    # sudo apt-get install kubuntu-desktop
    或
    # sudo apt-get install xubuntu-desktop

Monday, October 13, 2008

GUI code quality meeting minutes

今天进行了开了一个关于如何提高GUI代码质量的会,由于时间比较短,因此只是讨论了关于GUI package和framework版本控制,最终结果还是想我去年年底和郑亦聊天时提的建议,就是对于GUI应该有自己的Road Map,应该确定每个版本的framework应该包括的feature,并且这些feature一定要finalize,不要今天这个说要加一点明天那个要加一点。因此,这样就要求在确定每个版本的framework的时候,一点要仔细分析确定每个版本的feature,千万不能像现在这样,动不动就是这个东西现在想不清,就不愿意想,什么都往后推,结果到后来弄得有些东西根本就没法做。然后对于确定下来的feature做认真的设计和实现,不要动不动就hard code,因为这些东西需要长时间的稳定,这样别人在用的时候才不会总出现需要修改framework的情况。如果当前framework不能满足需求,那要么Cut掉需求,等到下个framework在做,要么自己去做enhance(但是不能提交的Road Map中,只能做Patch使用,也许以后可以Merge到Road map中)。只有这样严格要求才能保证framework的稳定,可维护。早知道这样,早听我的就好了,也不至于现在做的这么被动。现在虽然也想这样做,但不知道最后能不能实现,因为现在GUI组从上到下都已经有了很多不好的习惯,想改哪有这么容易。我现在对在GUI组的工作也不是那么有热情,彻底找不到自己的状态,也许是对GUI彻底失望了吧。

Thursday, October 9, 2008

外国人亲吻面颊礼的由来

下午从厕所出来,看到同道中人竟然有不洗手的,这让我不由得想到为什么老外总是不辞辛苦的在见面时亲吻面颊而不向中国人一样握手,感情他们早就想到了会有人上厕所出来不洗手,这都是为了卫生,避免把别人的东西吃到自己肚子里。

完了,是不是我脑子真有问题了,难怪LG和JQ老说我现在脑子坏了。

Thursday, September 18, 2008

在Linux上挂载另一块硬盘

查看新硬盘信息,这里我的新硬盘是/dev/sdb。
# fdisk -l

添加扩展分区
# fdisk /dev/sdb
Command: n

添加逻辑分区
# fdisk /dev/sdb
Command: l

# partprobe

格式化分区
# mkfs.ext3 /dev/sdb5

Mount新硬盘
# mount /dev/sdb5 /share

添加新硬盘到/etc/fstab文件。

Monday, August 18, 2008

Windows XP上查找已安装的更新

Windows XP上查找已安装的更新
打开注册表编辑器,查找HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP下的所有项。

Friday, August 1, 2008

使用Greasemonkey插件创建自定义的YUI文档页

最近在使用YUI做一些demo,在查看在线文档的时候发现YUI的文档给的格式非常不适合阅读,和Dojo,Jquery等的文档根本就没法比,于是就想到使用Greasemonkey(一个Firefox的插件)来创建符合自己使用习惯的YUI文档。

  • 首先是安装Greasemonkey插件,安装完毕重启Firefox后会在有下脚出现一个小猴子的图标。
  • 右键选择图标,在弹出菜单中选择New User Script,会弹出一个窗口,然后在弹出窗口中输入Name=YUI, Namespace=YUI, includes=http://developer.yahoo.com/yui/docs/*,然后Close窗口。
  • 如果是第一次使用,还会弹出一个窗口,让输入编辑器的路径,在Linux上就可以输入/usr/bin/gedit等自己喜欢的编辑器。当然以后也可以通过Firefox的about:config中的greasemonkey.editor来修改。
  • 接下来就是写JavaScript的代码来修改YUI文档。右键选择图标,在弹出菜单中选择Manage User Scripts,在弹出窗口左侧选中YUI,然后现在窗口底部的Edit,此时会弹出配置好的编辑器来编辑用户脚本了。


  • // ==UserScript==
    // @name YUI
    // @namespace YUI
    // @include http://developer.yahoo.com/yui/docs/*
    // ==/UserScript==

    var sFunction = "";
    sFunction += "function switchStatus(id) {";
    sFunction += " var ele = document.getElementById(id);";
    sFunction += " if (ele.getElementsByTagName('ul')[0].className == 'content') {";
    sFunction += " ele.getElementsByTagName('ul')[0].style.display = 'none';";
    sFunction += " ele.getElementsByTagName('ul')[0].className = '';";
    sFunction += " } else { ";
    sFunction += " ele.getElementsByTagName('ul')[0].style.display = '';";
    sFunction += " ele.getElementsByTagName('ul')[0].className = 'content';";
    sFunction += " }";
    sFunction += "}";

    var oHead = document.getElementsByTagName('head').item(0);
    var oScript = document.createElement("script");
    oScript.language = "javascript";
    oScript.type = "text/javascript";
    oScript.id = "myjs";
    oScript.defer = true;
    oScript.text = sFunction;
    oHead.appendChild( oScript );

    var eleDivs = document.getElementsByTagName("div");
    for(var i = 0; i < eleDivs.length; i++) {
    var eleDiv = eleDivs[i];
    if (eleDiv.className == "nav") {
    eleDiv.style.float="left";
    eleDiv.style.position="fixed";
    eleDiv.style.overflow="scroll";
    eleDiv.style.top="100px";
    eleDiv.style.left="10px";
    eleDiv.style.height="500px";
    var eleModules = eleDiv.childNodes;
    for(var j = 0; j < eleModules.length; j++) {
    var eleModule = eleModules[j];
    if (eleModule.className == "module") {
    eleModule.id = "xxx_" + eleModule.getElementsByTagName("h4")[0].innerHTML;
    if (eleModule.getElementsByTagName("h4")[0].innerHTML != "Classes") {
    eleModule.getElementsByTagName("ul")[0].className="";
    eleModule.getElementsByTagName("ul")[0].style.display="none";
    }
    var sLink = "<a href='#' onClick=\"switchStatus('"+eleModule.id+"')\">"+eleModule.getElementsByTagName("h4")[0].innerHTML+"</a>";
    eleModule.getElementsByTagName("h4")[0].innerHTML = sLink;
    }
    }
    }
    }

  • 编辑完脚本再次访问http://developer.yahoo.com/yui/docs/*,就会发现文档页上左侧长长的列表项已经可以展开/合并了。

Thursday, July 31, 2008

Yesterday, DBA version

Yesterday,
All those backups seemed a waste of pay.
Now my database has gone away.
Oh I believe in yesterday.

Suddenly,
There's not half the files there used to be,
And there's a milestone hanging over me
The system crashed so suddenly.

I pushed something wrong
What it was I could not say.
Now all my data's gone
and I long for yesterday-ay-ay-ay.

Yesterday,
The need for back-ups seemed so far away.
I knew my data was all here to stay
Now I believe in yesterday.

Wednesday, July 16, 2008

Maven不能编译Java1.5的代码的解决方法

Maven在默认情况下是不能编译Java1.5的代码的,比如说范型,此时需要修改pom.xml文件,添加一个plugin,如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.1</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
然后再次运行Maven就可以编译了。

Wednesday, July 2, 2008

SourceForge 又又又又又又又又又又上不了了

今天要从SourceForge上下载东西,发现这个网站又被不要脸的、牲口都不如的G C D给封了,哎,做一个中国人咋就这么郁闷呢?

今天同事告诉了一个好的Firefox的插件Gladder,还挺好用,上这些网站还都挺方便,不错。

Wednesday, May 21, 2008

[收藏] Creating a Theme in Struts 2

原文地址:http://www.vitarara.org/cms/struts_2_cookbook/creating_a_theme

看了《Scrum实施情况调查之案例分析》才知道Scrum名称的来历

原文地址:Scrum实施情况调查之案例分析


原来SCRUM借用了橄榄球运动中的术语——一个团队拿球向前冲。

自我感觉Scrum就是又一个新概念,就是一炒作。看看原来的软件开发方法,瀑布,迭代,到后来的敏捷开发(包括极限编程(XP)、特征驱动软件开发(FDD)还有SCRUM开发方法 )每个新方法出现的时候,都是一通鼓吹说多么多么好,旧得开发方法是多么不好。就像当年XP刚出现的时候,一窝蜂的上,最后该失败的项目的还是失败,现在Scrum又开始出来骗人了。过两年当又有一新软件开发方法出现的时候,Scrum又该过时了。其实仔细想想,不管哪种开发,如果真正领会了他的精髓,都是可以在合适的项目上取得成功的。现在有些公司在用Scrum,其实就是两件事,每天一个会,每天填个表,感觉就是一Manager对Developer不信任,天天检查进度一样,经常是把developer弄得天天忙的狠,天天在赶进度,所以此时developer就彻底变成Coder了,每天就是编码,没有思考,也不用思考。然而在真正的软件开发过程中,developer每天思考的时间应该是远大于写代码的时间的,这可以从一个完整的软件项目或产品最终的开发统计结果可以看出,其实每个developer每天真正要写的代码并没有多少,这就是说developer每天应该花很多时间在思考上。哎,这样的Scrum不用也罢。

Wednesday, May 14, 2008

他娘的小日本

终于等到Fedora9 release,使用Fedora官方网站的默认下载地址,然后被重定向到一个小日本的网站,紧接着命令行给出了链接被拒绝的提示。原来听同事说过很多小日本网站拒绝来自中国的IP,开始还不信,这次相信了。没办法,只能换一个BT的下载地址下载了。

Friday, May 9, 2008

[收藏] 在Ubuntu中设置samba共享可读写文件夹[菜鸟写给菜鸟]

原文地址: 在Ubuntu中设置samba共享可读写文件夹[菜鸟写给菜鸟]

首先当然是要安装samba了,呵呵:
代码:
sudo apt-get install samba
sudo apt-get install smbfs

下面我们来共享群组可读写文件夹,假设你要共享的文件夹为: /home/kongxx/share

首先创建这个文件夹
代码:
mkdir /home/kongxx/share
chmod 755 /home/kongxx/share

备份并编辑smb.conf允许网络用户访问
代码:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo gedit /etc/samba/smb.conf

搜寻这一行文字
代码:
; security = user

用下面这几行取代
代码:
security = user
username map = /etc/samba/smbusers

将下列几行新增到文件的最后面,假设允许访问的用户为:kongxx。而文件夹的共享名为 Share

代码:
[Share]
comment = Shared Folder with username and password
path = /home/kongxx/share
public = yes
writable = yes
valid users = kongxx
create mask = 0700
directory mask = 0700
force user = kongxx
force group = root
available = yes
browseable = yes

然后顺便把这里改一下,找到[global]把 workgroup = MSHOME 改成
代码:
workgroup = WORKGROUP
display charset = UTF-8
unix charset = UTF-8
dos charset = cp936

后面的三行是为了防止出现中文目录乱码的情况。其中根据你的local,UTF-8 有可能需要改成 cp936。自己看着办吧。

现在要添加kongxx这个网络访问帐户。如果系统中当前没有这个帐户,那么
代码:
sudo useradd kongxx

要注意,上面只是增加了kongxx这个用户,却没有给用户赋予本机登录密码。所以这个用户将只能从远程访问,不能从本机登录。而且samba的登录密码可以和本机登录密码不一样。

现在要新增网络使用者的帐号:
代码:
sudo smbpasswd -a kongxx
sudo gedit /etc/samba/smbusers

在新建立的文件内加入下面这一行并保存
代码:
kongxx= "network username"

如果将来需要更改kongxx的网络访问密码,也用这个命令更改
代码:
sudo smbpasswd -a kongxx

删除网络使用者的帐号的命令把上面的 -a 改成 -x
代码:
sudo testparm
sudo /etc/init.d/samba restart

最后退出重新登录或者重新启动一下机器。

Sunday, March 30, 2008

Grails: errors.GrailsExceptionResolver org.hibernate.exception.SQLGrammarException: could not execute query解决办法

最近把我的Grails应用从0.4升级到1.0,发现我原来的domain对象的访问出现了一些问题,在执行查询的时候总是报errors.GrailsExceptionResolver org.hibernate.exception.SQLGrammarException: could not execute query错误,以前我的domain内容如下:
class User {
static withTable = "XX_USER"
String username
String password
static constraints = {
username(length:1..20,blank:false,unique:true)
password(length:1..20,blank:false)
}
}
后来我将static withTable = "XX_USER"改为
static mapping = {
table 'XX_USER'
}
然后重新启动grails,就OK了。

Thursday, February 21, 2008

[收藏] 我靠~~!!!(靠不住....终结版!!!)

看完《苹果》发现,男人靠不住
看完《色戒》 发现,女人靠不住
看完《投名状》发现,兄弟靠不住
看完《集结号》发现,组织靠不住
看完《妈妈再爱我一次》发现,老爸靠不住
看完《新警察故事》发现,儿子靠不住
看完《满城尽带黄金甲》发现,老婆老公靠不住
看完《红楼梦》发现,祖母和嫂子也靠不住
看完《西游记》发现,师傅靠不住
看完《霍元甲》发现,徒弟靠不住
看完《无间道》发现,警察靠不住
看完《水浒》发现,领导靠不住
看完《肖申克的救赎》发现,出纳靠不住
看完《史密斯夫妇》发现,公司也是靠不住的
看完《无极》发现,馒头靠不住
看完《青蛇》发现,动物靠不住
看完《越狱》发现,牢房靠不住
看完《阳光灿烂的日子》发现,避孕套靠不住
看完《午夜凶铃》发现,电话靠不住,电视更靠不住
看完《疯狂的石头》发现,国际高手是靠不住滴
看完《长江7号》发现,地球人靠不住
看完《变形金刚》发现,外星人也靠不住
看完《黑客帝国》发现,一切现实都靠不住
结论:只有“我”靠得住 简称:我靠

[收藏] 恒源祥广告(中国男足版)

中国男足的目光–鼠鼠鼠
中国男足的脾气–牛牛牛
中国男足的口号–虎虎虎
中国男足的球风–兔兔兔
中国男足的投入–龙龙龙
中国男足的产出–蛇蛇蛇
中国男足的座驾–马马马
中国男足的服装–羊羊羊
中国男足的脸皮–猴猴猴
中国男足的需求–鸡鸡鸡
中国男足的精神–狗狗狗
中国男足的智商–猪猪猪

Saturday, February 16, 2008

运行Groovy出现java.lang.SecurityException: Prohibited package name: java.lang解决办法

昨天安装了新版本的Groovy V1.5.4,当运行groovy命令的时候出现以下错误:

java.lang.SecurityException: Prohibited package name: java.lang
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:479)
at java.lang.ClassLoader.defineClass(ClassLoader.java:713)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:160)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:254)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at org.codehaus.groovy.tools.RootLoader.oldFindClass(RootLoader.java:142)
at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:114)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at org.codehaus.groovy.tools.RootLoader.oldFindClass(RootLoader.java:142)
at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:114)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:91)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130)
Exit 1

后来检查了环境变量,发现问题出在CLASSPATH环境变量上,我的环境变量里CLASSPATH是 “.:/pcc/app/jdk1.5.0_04_x86/jre/lib/rt.jar”,是环境变量和Groovy的有冲突,后来我把CLASSPATH环境变量给删除了,然后再运行groovy,问题就解决了。

Thursday, February 14, 2008

Groovy为什么频繁release新版本

最近Groovy频繁release新版本,这说明了Groovy目前非常活跃,但是像这样频繁release新版本,是不是也说明了现在它还不稳定呢?让使用者多少有点顾及。继续观望中...

Tuesday, January 29, 2008

[收藏] 配置VirtualBox访问局域网

原文地址:http://www.xxlinux.com/linux/article/network/app/20070516/8442.html

1、首先要下载几个软件包
sudo apt-get install uml-utilities bridge-utils

2、新建名为tap.sh的文件,将以下内容复制到其中

#!/bin/sh
sudo tunctl -t tap0 -u kongxx #建立一个tap设备, 名字为tap0 所有者为kongxx
sudo brctl addbr br0 #创建一个网桥
sudo ifconfig eth0 0.0.0.0 promisc #使eth0进入promiscuous模式
sudo brctl addif br0 eth0 #将eth0加入br0

sudo ifconfig br0 172.17.18.15 up #固定IP方式
sudo route del default
sudo route add default gw 172.17.18.2 dev br0

#sudo ifconfig br0 up #DHCP方式
#sudo dhclient br0

sudo brctl addif br0 tap0 #将tap0加入br0
sudo ifconfig tap0 up #激活tap0
sudo chmod a+rw /dev/net/tun

3、设置权限
chmod u+x tap.sh

4、拷贝tap.sh到/home/kongxx/.VritualBox

5、加入启动项
sudo gedit /etc/rc.local
将 /home/kongxx/.VirtualBox/tap.sh加入到 exit 0 之前

6、在VirtualBox的VM Setting的network标签中,选择"Host interface",并在下面的Interface中填上tap0

7、重启或手动运行 tap.sh

最后要注意将宿主机与虚拟机设置在同一网段,否则无法通信。

Friday, January 25, 2008

Linux: KDE走向多平台,支持Windows和OS X

现在KDE可以运行在Windows和Mac OS上了。
KDE官方在1月22日正式宣布发布KDE windows版二进制包,可以通过自动安装程序从镜像网站下载。 Mac OS X版也已发布,可通过BitTorrent下载。
Windows版Installer:http://techbase.kde.org/Projects/KDE_on_Windows/Installation#KDE_Installer_for_Windows

最适合工作的公司列表

原文地址:http://money.cnn.com/magazines/fortune/bestcompanies/2008/full_list/index.html

今天早上到公司看到了这个新闻,报着幻想找自己所在公司在不在上面,不用说了,当然不在了。

Wednesday, January 23, 2008

[收藏] Obtaining Garbage Collection Data

原文地址:http://docs.hp.com/en/5991-6757/ch06s01.html#jm_using_xloggc

 

Thursday, January 17, 2008

ubuntu: error: stdio.h: No such file or directory

问题:
在Ubuntu7.10上编译C程序的时候出现以下错误
xxx error: stdio.h: No such file or directory
...
解决办法:
sudo apt-get install build-essential

Monday, January 14, 2008

[引用] 论什么是真正的Scrum

原文地址:http://www.infoq.com/cn/news/2008/01/jeff-sutherland-scrum-rules
这是infoq上的一篇文章,其中有一句话说的很像我们公司的情况

[引用]

Scrum、极限编程和其他敏捷过程……是基于一系列互相紧密关联的方面构建而成的。公司经常会提及的一句话是:“那好,我们用这种敏捷流程吧,因为其他的都不太好实施。我们一定会有所改进的。”可是改进的效果却并不能如他们所愿。

就像你在了解过面向对象技术之后这样说道:“嗯,我们的开发人员可以使用面向对象开发任何东西,只不过他们不太会使用继承……所以我们除了继承之外 可以使用任何编程技术。”最后产品出来了,它很脆弱,适应性很差,而且不灵活,原来期待的改进完全失去了踪影。管理层这时就会说:“你看,我们采取了面向 对象的开发方式,投入了大量资源,可最终还是没有收到多少成效。

[/引用]

太像了...

Thursday, January 10, 2008

Saturday, January 5, 2008

Ubuntu 7.10上运行有些程序时,键盘失效问题

最近在用Ubuntu 7.10,发现经常在运行eclipse,jedit等程序的时候出现键盘失效问题,但每次只要重新启动应用程序,就可以解决。后来发现这好像和输入发有关,每次出现这个情况的时候把Scim重新启动一下也可以解决,但还是麻烦的很。最后发现如果不用Scim而用fcitx就可以解决了,于是我把所有和Scim相关的东西全部给卸载了,然后装上fcitx,就一切ok了。

Linux上运行eclipse出现java.lang.OutOfMemoryError: PermGen space异常的解决办法

在linux上运行eclipse总是出现以下异常:
Error while informing user about event loop exception:
java.lang.OutOfMemoryError: PermGen space
Dialog open exception:
java.lang.OutOfMemoryError: PermGen space

解决办法如下:
修改eclipse安装目录下的eclipse.ini文件,添加如下行
-XX:PermSize=512m
-XX:MaxPermSize=512m
其中的值可以根据自己的情况设置,然后重新启动eclipse。