Wine的字体调整



wine的中文显示解决:
乱码的只要原因是系统的tohama字体没有中文部分引起,不采用那个中文补丁可以采用如下方法可以解决大部分的中文乱码问题:

中文字体复制到系统的/usr/fonts相应的目录下,比如用ms字体,可以复制到/usr/share/fonts/truetype
/msfonts下,该方法是系统也可以使用该部分字体; 也可以直接复制到/.wine/drive_c/windows/Fonts下面。
注册表里HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink添加相关字体的健值。
如Tohama添加Tohama="SimSun.ttc,SimSun",其他字体也如此办法添加对应,Tohama的注册表如下:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
"Tahoma"=hex(7):53,69,6d,53,75,6e,2e,74,74,63,2c,53,69,6d,53,75,6e,00,00

如果在英文环境下使用wine,用env LANG=zh_CN.UTF-8 wine "运行的程序"。
(将下列内容保存为XXX.reg,并使用wine regedit XXX.reg运行之即可)

;wine的字体美化:

;打开字体的防锯齿:
REGEDIT4
[HKEY_CURRENT_USER\Software\Wine\X11 Driver]
"ClientSideAntiAliasWithCore"="Y"
"ClientSideAntiAliasWithRender"="Y"
"ClientSideWithRender"="Y"

;打开字体的平滑功能:
;REGEDIT4
[HKEY_CURRENT_USER\Control Panel\Desktop]
"FontSmoothing"="2"
"FontSmoothingType"=dword:00000002
"FontSmoothingGamma"=dword:00000578
"FontSmoothingOrientation"=dword:00000001

;较完整的字体Link
;REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink]
"FontLinkControl"=dword:00004000
"FontLinkDefaultChar"=dword:00003000

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
"Lucida Sans Unicode"=hex(7):4d,53,47,4f,54,48,49,43,2e,54,54,43,00,4d,53,55,\
49,00,47,6f,74,68,69,63,00,00
"Microsoft Sans Serif"=hex(7):53,69,6d,53,75,6e,2e,54,54,43,00,53,69,6d,53,75,\
6e,00,00
"SimSun"=hex(7):67,75,6c,69,6d,2e,74,74,63,00,67,75,6c,69,6d,00,00
"Tahoma"=hex(7):53,69,6d,53,75,6e,2e,54,54,43,00,53,69,6d,53,75,6e,00,00

J2EE中的名词



IOC:Spring之核心,即反转控制(Inversion of Control),亦称之为依赖注入。
IOC模式,系统中通
过引入实现了IOC模式的IOC容器,即可由IOC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实
际的应用程序代码分开。其中一个特点就是通过文本的配件文件进行应用程序组件间相互关系的配置,而不用重新修改并编译具体的代码。
当前比较知名的IOC容器有:Pico Container、Avalon 、Spring、JBoss、HiveMind、EJB等。
在上面的几个IOC容器中,轻量级的有Pico Container、Avalon、Spring、HiveMind等,超重量级的有EJB,而半轻半重的有容器有JBoss,Jdon等。

可以把IoC模式看做是工厂模式的升华,可以把IoC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java
的“反射”编程,根据XML中给出的类名生成相应的对象。从实现来看,IoC是把以前在工厂方法里写死的对象生成代码,改变为由XML文件来定义,也就是
把工厂和对象生成这两者独立分隔开来,目的就是提高灵活性和可维护性。
由于使用XML进行工厂方法的实现,实际上达到了一种松耦合设计。当需要对工程进行修改升级,或添加新功能时,不需要对代码进行大量的修改,而能通过对XML文件的重配置达到目的。
反射:一个生涩的名词,通俗的说反射就是根据给出的类名(字符串)来生成对象。这种编程方式可以让对象在生成时才决定要生成哪一种对象。反射的应用是很广泛的,象Hibernate、String中都是用“反射”做为最基本的技术手段。
在过去,反射编程方式相对于正常的对象生成方式要慢10几倍,这也许也是当时为什么反射技术没有普通应用开来的原因。但经SUN改良优化后,反射方式生成对象和通常对象生成方式,速度已经相差不大了(但依然有一倍以上的差距)。
JNDI:Java Naming and Directory Interface,是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI
SPI的实现,由管理者将JNDI
API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。集群JNDI实现了高可靠性JNDI[8],通
过服务器的集群,保证了JNDI的负载平衡和错误恢复。在全局共享的方式下,集群中的一个应用服务器保证本地JNDI树的独立性,并拥有全局的JNDI
树。每个应用服务器在把部署的服务对象绑定到自己本地的JNDI树的同时,还绑定到一个共享的全局JNDI树,实现全局JNDI和自身JNDI的联系。
JNDI可访问的现有的目录及服务有:

DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol
轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML
v1&v2、NIS。
JNDI优点:

包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务;

可以同时连接到多个命名或目录服务上;

建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必指导对象或资源的物理ID。
JTA:Java Transaction API,为 J2EE 平台提供了分布式事务服务。
JMS:Java Messaging Service,Java平台上有关面向消息中间件的技术规范,翻译为Java消息服务。JMS支持点对点和发布/订阅两种消息模型。

JMS基本概念

1. JMS(Java Message Service)是访问企业消息系统的标准API,它便于消息系
统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。2. JMS基本功能
JMS是用于和面向消息的中间件相互通信的应用程序接口。它既支持点对点(point-to-point)的域,又支持发布/订阅(publish
/subscribe)类型的域,并且提供对下列类型的支持:经认可的消息传递,事务型消息的传递,一致性消息和具有持久性的订阅者支持。JMS还提供了
另一种方式来对您的应用与旧的后台系统相集成。3. WebLogic JMS Server介绍
WebLogic Server8.1符合JAVA规范,并通过Sun Microsystems J2EE 1.3认证.作为WebLogic的一部分,当然WebLogic JMS
Server也完全遵从JMS规范,还支持集群,并可以应用于实际企业系统.下图是WebLogic JMS
Server体系结构.图中可以看到WebLogic JMS Server主要组件有: WebLogic JMS
servers(用于消息通信),Java客户端,JNDI(用于域名查找), 后备存储(用于持久消息存储,基于文件或者JDBC数据库).
AOP:AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。

  举例:假设有在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data Class,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据对象。

  为了完成上述并发访问同一资源的功能,需要引入锁Lock的概念,也就是说,某个时刻,当有一个访问类访问这个数据对象时,这个数据对象必须上锁Locked,用完后就立即解锁unLocked,再供其它访问类访问。

  使用传统的编程习惯,我们会创建一个抽象类,所有的访问类继承这个抽象父类,如下:





abstract class Worker{

  abstract void locked();

  abstract void accessDataObject();

  abstract void unlocked();

}


缺点:

accessDataObject()方法需要有“锁”状态之类的相关代码。 Java只提供了单继承,因此具体访问类只能继承这个父类,如果具体访问类还要继承其它父类,比如另外一个如Worker的父类,将无法方便实现。
重用被打折扣,具体访问类因为也包含“锁”状态之类的相关代码,只能被重用在相关有“锁”的场合,重用范围很窄。

仔细研究这个应用的“锁”,它其实有下列特性:
“锁”功能不是具体访问类的首要或主要功能,访问类主要功能是访问数据对象,例如读取数据或更改动作。
“锁”行为其实是和具体访问类的主要功能可以独立、区分开来的。 “锁”功能其实是这个系统的一个纵向切面,涉及许多类、许多类的方法。如下图:
因此,一个新的程序结构应该是关注系统的纵向切面,例如这个应用的“锁”功能,这个新的程序结构就是aspect(方面)
在这个应用中,“锁”方面(aspect)应该有以下职责:
提供一些必备的功能,对被访问对象实现加锁或解锁功能。以保证所有在修改数据对象的操作之前能够调用lock()加锁,在它使用完成后,调用unlock()解锁。

*POJO:Plain
Old Java Object,这种叫法是Martin Fowler、Rebecca Parsons和Josh
MacKenzie在2000年的一次演讲的时候提出来的。基本意思是说POJO一个正规的Java对象(不是JavaBean,EntityBean
等),也不担当任何的特殊的角色,也不实现任何Java框架指定的接口。
则可归纳如下:POJO是一个简单的、正规Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。

Spring 依赖注入(控制反转)



一篇比较好的关于Spring依赖注入的文章。

来源:http://developer.51cto.com/art/200610/33311.htm

Spring能有效地组织J2EE应用各层的对象。不管是控制层的Action对象,还是业务层的Service对象,还是持久层的DAO对象,都
可在Spring的管理下有机地协调、运行。Spring将各层的对象以松耦合的方式组织在一起,Action对象无须关心Service对象的具体实
现,Service对象无须关心持久层对象的具体实现,各层对象的调用完全面向接口。当系统需要重构时,代码的改写量将大大减少。

上面所说的一切都得宜于Spring的核心机制,依赖注入。依赖注入让bean与bean之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起。

理解依赖注入

依赖注入(Dependency Injection)和控制反转(Inversion of
Control)是同一个概念。具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在
传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者
实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。

不管是依赖注入,还是控制反转,都说明Spring采用动态、灵活的方式来管理各种对象。对象与对象之间的具体实现互相透明。在理解依赖注入之前,看如下这个问题在各种社会形态里如何解决:一个人(Java实例,调用者)需要一把斧子(Java实例,被调用者)。

(1)原始社会里,几乎没有社会分工。需要斧子的人(调用者)只能自己去磨一把斧子(被调用者)。对应的情形为:Java程序里的调用者自己创建被调用者。

(2)进入工业社会,工厂出现。斧子不再由普通人完成,而在工厂里被生产出来,此时需要斧子的人(调用者)找到工厂,购买斧子,无须关心斧子的制造过程。对应Java程序的简单工厂的设计模式。

(3)进入“按需分配”社会,需要斧子的人不需要找到工厂,坐在家里发出一个简单指令:需要斧子。斧子就自然出现在他面前。对应Spring的依赖注入。

第一种情况下,Java实例的调用者创建被调用的Java实例,必然要求被调用的Java类出现在调用者的代码里。无法实现二者之间的松耦合。

第二种情况下,调用者无须关心被调用者具体实现过程,只需要找到符合某种标准(接口)的实例,即可使用。此时调用的代码面向接口编程,可以让调用者和被调用者解耦,这也是工厂模式大量使用的原因。但调用者需要自己定位工厂,调用者与特定工厂耦合在一起。

第三种情况下,调用者无须自己定位工厂,程序运行到需要被调用者时,系统自动提供被调用者实例。事实上,调用者和被调用者都处于Spring的管理下,二者之间的依赖关系由Spring提供。

所谓依赖注入,是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间依赖关系的管理。依赖注入通常有两种:

◆设值注入。

◆构造注入。

设值注入

设值注入是指通过setter方法传入被调用者的实例。这种注入方式简单、直观,因而在Spring的依赖注入里大量使用。看下面代码,是Person的接口。









//定义Person接口

public interface Person

{

 //Person接口里定义一个使用斧子的方法

 public void useAxe();

}



然后是Axe的接口









//定义Axe接口

public interface Axe

{

 //Axe接口里有个砍的方法

 public void chop();

}



Person的实现类









//Chinese实现Person接口

public class Chinese implements Person

{

 //面向Axe接口编程,而不是具体的实现类

 private Axe axe;

 //默认的构造器

 public Chinese()

 {}

 //设值注入所需的setter方法

 public void setAxe(Axe axe)

 {

this.axe = axe;

 }

 //实现Person接口的useAxe方法

 public void useAxe()

 {

System.out.println(axe.chop());

 }

}



Axe的第一个实现类









//Axe的第一个实现类 StoneAxe

public class StoneAxe implements Axe

{

 //默认构造器

 public StoneAxe()

 {}

 //实现Axe接口的chop方法

 public String chop()

 {

return "石斧砍柴好慢";

 }

}



下面采用Spring的配置文件将Person实例和Axe实例组织在一起。配置文件如下所示:









<!– 下面是标准的XML文件头 –>

<?xml version="1.0" encoding="gb2312"?>

<!– 下面一行定义Spring的XML配置文件的dtd –>

"http://www.springframework.org/dtd/spring-beans.dtd">

<!– 以上三行对所有的Spring配置文件都是相同的 –>

<!– Spring配置文件的根元素 –>

<BEANS>

 <!—定义第一bean,该bean的id是chinese, class指定该bean实例的实现类 –>

 <BEAN class=lee.Chinese id=chinese>

 <!– property元素用来指定需要容器注入的属性,axe属性需要容器注入此处是设值注入,因此

Chinese类必须拥有setAxe方法 –>

<property name="axe">

<!– 此处将另一个bean的引用注入给chinese bean –>

<REF local="”stoneAxe”/">

</property>

</BEAN>

<!– 定义stoneAxe bean –>

<BEAN class=lee.StoneAxe id=stoneAxe />

</BEANS>



从配置文件中,可以看到Spring管理bean的灵巧性。bean与bean之间的依赖关系放在配置文件里组织,而不是写在代码里。通过配置文件
的指定,Spring能精确地为每个bean注入属性。因此,配置文件里的bean的class元素,不能仅仅是接口,而必须是真正的实现类。

Spring会自动接管每个bean定义里的property元素定义。Spring会在执行无参数的构造器后、创建默认的bean实例后,调用对
应的setter方法为程序注入属性值。property定义的属性值将不再由该bean来主动创建、管理,而改为被动接收Spring的注入。

每个bean的id属性是该bean的惟一标识,程序通过id属性访问bean,bean与bean的依赖关系也通过id属性完成。

下面看主程序部分:









public class BeanTest

{

 //主方法,程序的入口

 public static void main(String[] args)throws Exception

 {

//因为是独立的应用程序,显式地实例化Spring的上下文。

ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");

//通过Person bean的id来获取bean实例,面向接口编程,因此

//此处强制类型转换为接口类型

Person p = (Person)ctx.getBean("chinese");

//直接执行Person的userAxe()方法。

p.useAxe();

 }

}



程序的执行结果如下:

石斧砍柴好慢

主程序调用Person的useAxe()方法时,该方法的方法体内需要使用Axe的实例,但程序里没有任何地方将特定的Person实例和Axe实例
耦合在一起。或者说,程序里没有为Person实例传入Axe的实例,Axe实例由Spring在运行期间动态注入。

Person实例不仅不需要了解Axe实例的具体实现,甚至无须了解Axe的创建过程。程序在运行到需要Axe实例的时候,Spring创建了
Axe实例,然后注入给需要Axe实例的调用者。Person实例运行到需要Axe实例的地方,自然就产生了Axe实例,用来供Person实例使用。

调用者不仅无须关心被调用者的实现过程,连工厂定位都可以省略(真是按需分配啊!)。下面也给出使用Ant编译和运行该应用的简单脚本:









<?xml version="1.0"?>

<!– 定义编译该项目的基本信息–>

<PROJECT name="spring" default="." basedir=".">

<!– 定义编译和运行该项目时所需的库文件 –>

<PATH id=classpath>

 <!– 该路径下存放spring.jar和其他第三方类库 –>

 <FILESET dir=....\lib>

<INCLUDE name=".jar" />

 </FILESET>

 <!– 同时还需要引用已经编译过的class文件–>

 <PATHELEMENT path="." />

</PATH>

<!– 编译全部的java文件–>

<TARGET description="Compile all source code" name="compile">

<!– 指定编译后的class文件的存放位置 –>

<JAVAC debug="true" destdir=".">

 deprecation="false" optimize="false" failonerror="true">

 <!– 指定需要编译的源文件的存放位置 –>

 <SRC path="." />

 <!– 指定编译这些java文件需要的类库位置–>

 <CLASSPATH refid="classpath" />

</JAVAC>

</TARGET>

<!– 运行特定的主程序 –>

<TARGET description="run the main class" name="run" depends="compile">

<!– 指定运行的主程序:lee.BeanTest。–>

<JAVA failonerror="true" fork="yes" classname="lee.BeanTest">

 <!– 指定运行这些java文件需要的类库位置–>

 <CLASSPATH refid="classpath" />

</JAVA>

</TARGET>

</PROJECT>



如果需要改写Axe的实现类。或者说,提供另一个实现类给Person实例使用。Person接口、Chinese类都无须改变。只需提供另一个Axe的实现,然后对配置文件进行简单的修改即可。

Axe的另一个实现如下:









//Axe的另一个实现类 SteelAxe

public class SteelAxe implements Axe

{

 //默认构造器

 public SteelAxe()

 {}

 //实现Axe接口的chop方法

 public String chop()

 {

return "钢斧砍柴真快";

 }

}



然后,修改原来的Spring配置文件,在其中增加如下一行:









<!– 定义一个steelAxe bean–>

<BEAN class=lee.SteelAxe id=steelAxe />



该行重新定义了一个Axe的实现:SteelAxe。然后修改chinese bean的配置,将原来传入stoneAxe的地方改为传入steelAxe。也就是将









<REF local="”stoneAxe”/">



改成









<REF local="”steelAxe”/">



此时再次执行程序,将得到如下结果:

钢斧砍柴真快

Person与Axe之间没有任何代码耦合关系,bean与bean之间的依赖关系由Spring管理。采用setter方法为目标bean注入属性的方式,称为设值注入。

业务对象的更换变得相当简单,对象与对象之间的依赖关系从代码里分离出来,通过配置文件动态管理。

*构造注入

所谓构造注入,指通过构造函数来完成依赖关系的设定,而不是通过setter方法。对前面代码Chinese类做简单的修改,修改后的代码如下:









//Chinese实现Person接口

public class Chinese implements Person

{

 //面向Axe接口编程,而不是具体的实现类

 private Axe axe;

 //默认的构造器

 public Chinese()

 {}

 //构造注入所需的带参数的构造器

 public Chinse(Axe axe)

 {

this.axe = axe;

 }

 //实现Person接口的useAxe方法

 public void useAxe()

 {

System.out.println(axe.chop());

 }

}



此时无须Chinese类里的setAxe方法,构造Person实例时,Spring为Person实例注入所依赖的Axe实例。构造注入的配置文件也需做简单的修改,修改后的配置文件如下:









<!– 下面是标准的XML文件头 –>

<xml version="1.0" encoding="gb2312"?>

<!– 下面一行定义Spring的XML配置文件的dtd –>

 "http://www.springframework.org/dtd/spring-beans.dtd">

<!– 以上三行对所有的Spring配置文件都是相同的 –>

<!– Spring配置文件的根元素 –>

<BEANS>

 <!—定义第一个bean,该bean的id是chinese, class指定该bean实例的实现类 –>

 <BEAN class=lee.Chinese id=chinese>

</BEAN>

<!– 定义stoneAxe bean –>

<BEAN class=lee.SteelAxe id=steelAxe />

</BEANS>



执行效果与使用steelAxe设值注入时的执行效果完全一样。区别在于:创建Person实例中Axe属性的时机不同——设值注入是现创建一个默认的
bean实例,然后调用对应的构造方法注入依赖关系。而构造注入则在创建bean实例时,已经完成了依赖关系的设置。

如何在 Linux AMD64(X86-64) 环境下安装Oracle XE

Oracle XE对于应用开发人员来说具有其优势:不易损坏,方便管理,占用资源极低。

Oracle官方并未提供Oracle XE for Linux x86-64的deb或rpm包。则依据如下步骤进行Linux 64上的Oracle XE安装。以Ubuntu 9.04 amd64作为示例。

1. 安装32位库

sudo apt-get install libc6-i386


2. 下载libaio_0.3.104-1_i386.deboracle-xe-universal_10.2.0.1-1.1_i386.deb,可以在Oracle的网站中找到。

3. 安装BC语言的支持

sudo apt-get install bc


4. 强制安装libaio 0.3.104-1 i386.deb以及oracle-xe-universal 10.2.0.1-1.1 i386.deb

dpkg -i –force-architecture libaio_0.3.104-1_i386.deb


dpkg -i –force-architecture oracle-xe-universal_10.2.0.1-1.1_i386.deb


5. 对Oracle XE进行初始化配置。执行

sudo /etc/init.d/oracle-xe configure


如果提示已经进行过configure,则可尝试启动数据库,若无法启动则可将 ‘/etc/default/oracle-xe’ 中的 ‘CONFIGURE_RUN=true’ 改为false,并重新执行configure

注意最好不要将端口设置为8080。

6. 添加环境变量,修改~/.bashrc,在文件最后添加如下语句

**
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID=XE
export PATH

进入oracle用户 su - oracle

创建.profile以及.bashrc用于设置环境变量
.profile内容

# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi

# set PATH so it includes user’s private bin if it exists
if [ -d "$HOME/app/oracle/product/10.2.0/server/bin" ] ; then
PATH="$HOME/app/oracle/product/10.2.0/server/bin:$PATH"
fi

.bashrc内容
#!/bin/sh

export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server**


7. 启动Oracle XE

su - oracle

/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/startdb.sh


参考资料:How To Install Oracle XE in Ubuntu 64 Bit

从Blogspot搬家到Wordpress



Blogspot在5月17日被伟大的W.A.L.L掉,时至今日仍无解封的迹象。因此计划Blog搬家。慎重考虑后决定使用Yo2托管的Wordpress服务作为新的Blog空间,将原Blogspot中的所有内容导出,导入至新的Wordpress Blog。

由于Blogspot在墙外,需要翻墙先将Blogspot内容以XML文件形式导出。这里推荐德国的免费VPN服务CyberGhost VPN,每个月提供10GB的免费流量供用户使用。首先至CyberGhost网站下载安装程序,该安装程序是在线安装包,会联机下载.net framework 3.0及CyberGhost VPN程序并自动安装。建议使用其他工具下载安装.net framework 3.x以减少在线安装时间。
安装完成后即可注册,注意填写正确的邮箱地址,系统会发送激活码至邮箱以供激活。
激活后即可登录并使用免费的VPN服务,截图如下:


Connect后即可直接访问Blogspot,在Blogspot控制台中选择导出,导出成XML文件


从blogspot导出的XML文件不符合Wordpress的规范,不能直接进行导入,因此首先需要进行转换。这里建议在blogger2wordpress进行在线转换


转换完成后,即可将XML文件上传至Wordpress导入

至此,搬家完成。欢迎访问我的GeekerDever 2#,地址geekerdever.yo2.cn

Ubuntu 控制台分辨率设置(含宽屏)



(本文使用环境为 Ubuntu 9.04 AMD64 版)

使用Linux作为操作系统,或多或少会接触到Console,特别是使用Server版本的情况下。当前计算机基本均具备宽屏显示器,若不针对宽屏监视器对控制台分辨率进行设置,则会造成控制台字体变形、显示的命令行数过少等缺陷。

修正的方法为:修改grub的menu.lst(路径通常为 /boot/grub/menu.lst),在需使用的
kernel /boot/vmlinuz-2.6.28-13-generic root=UUID=1382bf9f-963d-4cf3-af2a-92beff6b9e03 ro locale=zh_CN quiet splash
语句后面加入 vga=

通常
可以通过查阅下表得出

Reference value for x 640×480 800×600 1024×768 1280×1024 1152×864 1600×1200
8 bit 769 771 773 775 353 800
15 bit 784 787 790 793 354 801
16 bit 785 788 791 794 355 802
24 bit 786 789 792 795 803

上表不包含宽屏分辨率,其他网站介绍使用lrmi中的vbetest进行查询,但lrmi不包含在Ubuntu的库中,在此可使用hwinfo代替。

安装hwinfo
sudo apt-get install hwinfo

使用hwinfo查看分辨率信息
sudo hwinfo –framebuffer

若安装正确,该命令显示结果类似下述:
02: None 00.0: 11001 VESA Framebuffer
[Created at bios.450]
Unique ID: rdCR.sbqupgMqM7F
Hardware Class: framebuffer
Model: "NVIDIA G96 Board - kl1_n10p"
Vendor: "NVIDIA Corporation"
Device: "G96 Board - kl1_n10p"
SubVendor: "NVIDIA"
SubDevice:
Revision: "Chip Rev"
Memory Size: 14 MB
Memory Range: 0xcd000000-0xcddfffff (rw)
Mode 0x0300: 640x400 (+640), 8 bits
Mode 0x0301: 640x480 (+640), 8 bits
Mode 0x0303: 800x600 (+800), 8 bits
Mode 0x0305: 1024x768 (+1024), 8 bits
Mode 0x0307: 1280x1024 (+1280), 8 bits
Mode 0x030e: 320x200 (+640), 16 bits
Mode 0x030f: 320x200 (+1280), 24 bits
Mode 0x0311: 640x480 (+1280), 16 bits
Mode 0x0312: 640x480 (+2560), 24 bits
Mode 0x0314: 800x600 (+1600), 16 bits
Mode 0x0315: 800x600 (+3200), 24 bits
Mode 0x0317: 1024x768 (+2048), 16 bits
Mode 0x0318: 1024x768 (+4096), 24 bits
Mode 0x031a: 1280x1024 (+2560), 16 bits
Mode 0x031b: 1280x1024 (+5120), 24 bits
Mode 0x0330: 320x200 (+320), 8 bits
Mode 0x0331: 320x400 (+320), 8 bits
Mode 0x0332: 320x400 (+640), 16 bits
Mode 0x0333: 320x400 (+1280), 24 bits
Mode 0x0334: 320x240 (+320), 8 bits
Mode 0x0335: 320x240 (+640), 16 bits
Mode 0x0336: 320x240 (+1280), 24 bits
Mode 0x033d: 640x400 (+1280), 16 bits
Mode 0x033e: 640x400 (+2560), 24 bits
Mode 0x0345: 1600x1200 (+1600), 8 bits
Mode 0x0346: 1600x1200 (+3200), 16 bits
Mode 0x0347: 1400x1050 (+1400), 8 bits
Mode 0x0348: 1400x1050 (+2800), 16 bits
Mode 0x0349: 1400x1050 (+5600), 24 bits
Mode 0x034a: 1600x1200 (+6400), 24 bits
Mode 0x0352: 2048x1536 (+8192), 24 bits
Mode 0x0360: 1280x800 (+1280), 8 bits
Mode 0x0361: 1280x800 (+5120), 24 bits
Mode 0x0362: 768x480 (+768), 8 bits
Mode 0x0364: 1440x900 (+1440), 8 bits
Mode 0x0365: 1440x900 (+5760), 24 bits
Mode 0x0368: 1680x1050 (+1680), 8 bits
Mode 0x0369: 1680x1050 (+6720), 24 bits
Mode 0x037b: 1280x720 (+5120), 24 bits
Mode 0x037c: 1920x1200 (+1920), 8 bits
Mode 0x037d: 1920x1200 (+7680), 24 bits
Config Status: cfg=new, avail=yes, need=no, active=unknown

此处Mode 为16进制,换算为10进制即为对应值。如我选择Mode 0x037b: 1280x720 (+5120), 24 bits这一项,则应将设置为891(0x037b换算为10进制)

好像忽然闲下来了



回到学校就开始写毕业论文,一个论文还那么多事,又不能写框架,要写“自己的东西”,又要劳什子的理论高度……囧。其间还参杂着办各种手续,毕竟快毕业了;加上公司又过来招聘,在校本部和杨浦之间来来回回跑了几次……

总算把毕设论文初稿交了,可以停下来总结一下了。

嘛,以上。

Linux 常用软件 [持续更新ing]



Ubuntu 配置笔记整理[14]
Ubuntu 9.04
输入法
安装scim-pinyin或者ibus
看漫画
Comix
linux虚拟光驱
mount -t iso9660 -o loop /XXX/XX/XXX.iso /cdrom
apt-get命令
用来从源安装/删除软件/升级
音乐播放
songbird
屏幕截图
Gscrot 更名为 Shutter
Skype 摄像头/声音支持
摄像头:使用命令 LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so skype 启动Skype
声音:选择输出设备为 pulse
快捷搜索/运行
GNOME Go
ssh登录方法
ssh [username]@59.77.7.221

Ubuntu 屏幕保护死机的解决



Ubuntu 配置笔记整理[13]
Ubuntu 8.10 & 9.04
去掉屏保:
sudo mv /usr/lib/xscreensaver /usr/lib/xscreensaver1
然后打开主菜单System/Preferences/Screensaver,
现在能进来了,把屏保设定为Blank Screen,按OK退出即可。
再执行sudo mv /usr/lib/xscreensaver1 /usr/lib/xscreensaver
Ok,搞定.