博文

目前显示的是 二月, 2008的博文

为System.out指定字符编码

System.out是PrintStream类型的,它是一个Stream,是面向字节的,所以无编码一说。那么怎么办呢?方法就是利用 OutputStreamWriter 这个类,把Stream转换成WriterPrintWriter fileout; try { fileout = new PrintWriter(new OutputStreamWriter(System.out, destEncoding)); } catch (UnsupportedEncodingException ex) { logger.error("不支持编码" + destEncoding + "\n" + ex.getLocalizedMessage()); return; } 嗯,还有,java中一定要去显式的关闭Stream等等。拿PrintWriter来说,用write输出的东西,并不一定会立刻输出到设备上,所以在执行完最后一次输出后一定要调用一次flush。而close方法会去调用flush,所以每次用完后不要偷懒忘记close。
而C++标准库中的stream不是这样,用完了就用完了,不用理会它。

opera从9.50b开始支持amd64

最近一时兴起,装了一个64bit的ubuntu,然后发现找不到opera。然后发现,目前opera的稳定版还不支持64位的linux,只能使用测试版9.50 Beta 1。这个版本很不稳定,经常crash。
怎么办?

在ubuntu/Xen中启动现有的windows

是这样的,我机器上本来装了一个windowsXP,但是我不喜欢,于是就安装了ubuntu。(本来打算装 opensolaris, 但是没有光驱,在使用硬盘安装opensolaris 1/08的时候失败了)
但是有很多软件是必须在windows下运行的,并且还有很多网页是只有在ie下才能正常显示。
嗯,动手之前先做个自我介绍
分区情况:
三个主分区。
第一个主分区是windows的C盘,第二个是windows的扩展分区,然后下面是windows的d盘。第三个主分区是ubuntu.
C盘对应linux下的/dev/sda1,D盘对应/dev/sda5
CPU是Intel Core 2 E6550.
ubuntu用的是7.10 AMD 64,刚做完更新。然后安装了xen 3.1,Dom0是 Ubuntu 7.10, kernel 2.6.22-14-xen。xen是通过图形界面的“新立得”软件包管理器安装的。
没有采用amd 64的ubuntu作为dom0,因为没有启动起来。
安装xen然后重启。在grub中选择“Xen 3.1 / Ubuntu 7.10, kernel 2.6.22-14-xen”。进入后切换到root,开始想办法启动win。
首先,确定bios中是否打开了vmx的支持。
# xm dmesg |grep VM
VMX disabled by Feature Control MSR
我的主板默认是不打开的。
在bios中启用cpu的vt和vt-d后,得到的是这样的结果
# xm dmesg | grep VM
(XEN) HVM: VMX enabled
(XEN) VMX: MSR intercept bitmap enabled
然后对xend的配置做一点点小修改:
打开 /etc/xen/xend-config.sxp,
找到行“#(vnc-listen '127.0.0.1')”修改为
(vnc-listen '0.0.0.0')
这个不是必须的。如果只让它在127.0.0.1监听,要安全些,但是我,喜欢方便。反正是在内网嘛,无所谓。
修改完后要这样重启xen
#/etc/init.d/xend restart
每个DomU需要对应一个配置文件,我的配置文件如下:
kernel="/usr/lib/xen-ioemu-3.1/boot/hvmloade…

Java中的多线程

class Thread 实现了interface Runnable。可以使用一个实现了interface Runnable的对象来初始化一个Thread。
所以在java中创建一个Thread有两种方式从class Thread继承,并重写run方法实现interface Runnable,然后创建这样一个对象,然后用它初始化一个Thread对象。 (preferred)classTaskimplementsRunnable{ publicvoidrun(){ for(;;){ System.out.println("Thread 2"); try{ Thread.sleep(1000); } catch(java.lang.InterruptedException ex){ return;///thread end; } } } }; classTest{ publicstaticvoidmain(String[] args){ new Thread(new Task()).start(); } }; 默认情况下,只有在所有子线程都完成后 ,主线程的main才会退出,然后主线程才会结束。然后主进程结束。

Windows Media Player 11怎么在Linux上跑起来的

好奇。据说motorala RAZR2 V8尽管是Linux操作系统,但是可以运行windows player 11?
http://tech.sina.com.cn/mobile/n/2008-02-26/07242041856.shtml
V8 采用了Linux智能操作系统和拥有500MHz的AMR11处理器,提供更流畅的操作速度。其内置了420M的超大内存空间,另外该机拥200万像素摄 像头,并支持120分钟视频摄录,并支持暂停续录功能。借助内置的Windows Media Player 11播放器,兼容多种格式的多媒体文件,数据传输方面则提供了蓝牙以及数据线两种方式
我想这其中必定有些误解。过年的时候遇见卢习,他超喜欢这款手机,下次遇见他的时候我再问问。有达人知道详情吗?

Java基础数据类型的Boxing转换

staticbooleansameArgs(Integer a, Integer b){ return a==b; } publicstaticvoidmain(String[] args){ System.out.println(sameArgs(3,3)); ///true System.out.println(sameArgs(3,new Integer(3))); ///false System.out.println(sameArgs(3,Integer.valueOf(3))); ///true } sameArgs函数判断a,b是否指向同一对象,如果是,那么返回true,否则,返回false。因为它自身接收的是Integer类型的参数,所以在把一个字符整数3(它默认是int类型),传递给sameArgs的时候,会发生boxing行为。
如果使用new Integer的方式调用构造函数从一个int构造一个Integer,因为采用了new,这就将导致生成一个新的对象实例,而如果是使用Integer.valueOf这样的方式,可能会“重用"现有的已创建但是还没销毁的对象。boxing默认是采用valueOf这样的方式进行的。

unicode2成为emacs的主干分支

今天从cvs中获取emacs23的代码然后./configure的时候,被告知unicode-2分支已经被移动到主干分支中了.
恩,emacs22已经发布,emacs23也该被扶正了

今天又买了两本书,《纯粹理性批判》和《逻辑学导论》

今天去了趟万圣,主要是想把上次看见那本打折的《纯粹理性批判》买回来。
五折,厚厚的一摞,放在那里貌似没有多少人关心,因为剩的比较多,所以挑到本品相比较让人满意的。
然后顺便上楼去转悠了下,看见一本《逻辑学导论》不错,就买了。
回来在豆瓣一查,亏哦。万圣是九折,导致我多花了10多块钱。
也许,买书如买衣服,只在于挑选时的心情。逛网店,太没质感了。

《哲学概论》看完了

图片
虽说读之前已经有了些心理准备,但是……触动还是太大了。里面,各种各样的观点,总之,就是对自出生到现在,先前这20多年的所学所持有的哲学、伦理、逻辑观点进行了一次全方位的洗礼。触动太大了。(具体内容,容以后细述)
这本书精彩之处在于它的观点很中立,它提出很多问题引人思考,而不是中国的哲学书那样教导你必须做什么,必须认为什么什么。他引文非常多,以至于让我怀疑是不是作者为了凑页码而在偷懒。不过作为一本概论,这样也很合适,这样引得我去读那些原著。
他在每章的末尾都有一个比较“时髦 ”的话题引出来争论,题目如堕胎、“邪教”、中医、同性恋婚姻、安乐死、少数民族保护法案等等,选取正方、反方论文若干,全文附于每章末尾。这些文章都很精彩,立场明确,言语犀利,论证很有力。引的我很想去看它们的英文原文。
作者很推崇Kant。但是直到读到末尾,我才发现几乎没有出现过黑格尔的名字。另外,最后一章也很滑稽。尽管作者一改之前的语气,以非常庄重严肃的言语来讨论哲学中的宗教问题,来讨论上帝的存在性,但是,毕竟他是一个无神论者,所以,我觉得最后一章,完全可以用“蛇尾”来评价。

新RSS阅读器:Snarfer

以前一直在用rssowl,一个java写的程序,与其它java程序相比,界面很漂亮(很愤恨那些说java不适合开发桌面应用程序的人)。但是有一个小小的缺点,显示图片有问题。它在下载图片,发出http请求的时候,没有在reference字段填入正确的值,导致被很多网站认为是盗链而不予以显示。
我改天要做个浏览器插件,或者写一个防火墙规则。将所有向外发出的请求图片的http请求填上reference字段,如果它之前没有的话。
回正题,这本只是一个很小的缺陷,但是Snarfer没有这个缺陷。然后我把rssowl的纪录用opml格式导出,然后导入到snarfer中。转换的好顺利啊

Linux kernel又爆一个重大安全漏洞

今天在cn.bbs.admin看到czz转来的一篇文章,然后跟过去。一看是linux kernel的mmap又出了一个本地的安全漏洞。可使得普通用户获取root权限执行任意代码。这个漏洞貌似最先在debian上被发现的,http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=464953
附,探测代码:aaa.c (保存成aaa.c,然后编译 gcc -o aaa -static -Wno-format aaa.c ,然后执行./aaa即可。如果成功,则可得到一个root shell。)
有兴趣的可以拿unix-center.net的ubuntu主机做测试。