ubuntu下解决netbeans、FreeMind、yEd中文问题

http://www.gaeapp.com/show.php?contentid-4301.html

ubuntu11.04安装NetBeans 7.0中文显示乱码或者方框问题的解决(JRE中文字体设置)

当我在ubuntu 11.04中安装netbeans 7.0的时候,出现一个奇怪的现象,启动netbeans中,发现很多中文字无法显示,直接显示一个方框。很显然是没有找到某些字的显示数据,但是奇怪的是有些汉字可以显示,真神奇,难道netbeans所用到的字库居然不全吗?而 ubuntu可以正常显示汉字,说明ubuntu本身的字库应该是没问题到。

那么问题出在什么地方呢?

答案是:JREnetbean是用java写的,它的运行是必须要依靠JRE的,这个大家都知道。而JRE使用的字体是依靠JRE本身的配置文件来决定在系统中和什么字体文件对应的。因此判定是这种对应出了问题。根据Java的官方文档(http://download.oracle.com/javase/1.5.0/docs/guide/intl/fontconfig.html#loading),字体对应配置文件是位于jre/lib下面,有两种形式,一种是src文件,一种是bfc文件。bfc文件是二进制的,系统预定义的,所以我们需要修改的是src文件,到这个目录,一看,
看到这些文件名,基本也明白了个大概。

看看fontconfig.OS.version.properties.src这种格式就应该明白,这是不同操作系统平台的配置文件,jre会根据操作系统的不同而自动选择对应的配置文件,因此,我打开了ubuntu 的对应文件,看第一行:allfonts.chinese-cn-iso10646=-arphic-ar pl uming cn-light-r-normal–*-%d-*-*-c-*-iso10646-1这里指定了jre用到逻辑字体和物理字体的对应关系,等号左边就是jre用的逻辑字体,而等号右边就是需要使用的物理字体了。只是这个物理字体看起来跟火星文差不多,但是这个火星文可是正宗的X logical font description (XLFD)描述方式,这里不多说了,想了解的读者可以自己去google一下即可。

然后再看配置文件# Font File Names部分,其中有一行:filename.-arphic-ar_pl_uming_cn-light-r-normal–*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/truetype/arphic/uming.ttc这是上面描述的物理字体和系统字体文件的对应描述。左边不就是上面我们看着像火星文的物理字体名称吗?正好不知道哪儿去找这个字体,这下不就有答案了。连目录都告诉你了。立刻跑到/usr/share/fonts/truetype目录去一看,不要说uming.ttc,连arphic这个目录都没有!这下就面临两个选择:1.修改配置文件,让他指向系统有的字体文件。也就是修改:/usr/share/fonts/truetype/arphic/uming.ttc这部分,修改成存在的字体文件名称即可。2.安装一个uming.tcc字体文件。由于uming.tcc字体是比较有名的,是一个高质量的中文字库。

因此我还是决定选择第二种方案。到网上一goole,立刻找到了下载地址:http://ftp.br.debian.org/debian/pool/main/t/ttf-arphic-uming/ttf-arphic-uming_0.2.20080216.1-3_all.deb下载回来之后:sudo dpkg -i ttf-arphic-uming_0.2.20080216.1-3_all.deb安装顺利完成,这个时候再跑到/usr/share/fonts/truetype目录去一看,这下有arphic这个目录了,然后打开目录一看,uming.ttc就在那里!马上打开netbeans,漫长的等待,终于看到了窗口,一切都有了,字体看着确实很美,不愧是arphic 产品啊。自此问题完美的解决了,不管版本如何变化,都可以按照这个方式去解决问题。

网上一些文章说的cp字体到jre/lib/fonts/fallback,很多人不懂原理。fallback的目录是jre字体后备目录,意思就是按照正常配置找不到字体信息,就会在这个目录下按照配置文件设定的顺序到字体文件中去寻找。

用这个方式有两个问题,

一个是效率低下。

二是字体不统一,会出现例如:文件这个词,文是楷体,件是黑体的“壮观”景象!为什么?因为文字在楷体字库找到了,但是这个字库找不到件字,于是就在fallback中到黑体字库去找,并且找到。这种现象就神奇的出现了!所以这个方式其实是属于歪打正着的方法,很多人糊里糊涂显示正常了,也没有搞懂原理。

而另外一些人就会出现字体不统一到情况。当然,上面所说的一切,在windows上均不会发生。因为windows比较统一,所以配置文件的配置一定可以正常工作,不会出现类似linux的连字体文件都可能找不到的情况。这也证明了规范,统一在软件中的重要性。

vim的tab缩进设置

终端上的tab键默认是缩进8个空格的(记住8个空格不等于一个tab, tab和空格不是一个概念)
一般设置vim的tab(制表符)的缩进的时候都这样:set tabstop=4 ” 表示让tab的宽度显示成和4个空格的宽度一样
设置完后你不要以为这时候一个tab等于4个空格了,它们不相等,那什么时候相等呢?set expandtab ” 表示将tab(制表符)变成空格
设置完后,一个4个空格长度的tab就等于4个空格了
附上vim中关于自动缩进(一般换行什么的需要自动缩进)的设置:
set autoindent ” 开启自动缩进set shiftwidth=4 ” 自动缩进4个空格set softtabstop=4 ” shiftwidth和tabstop不一样的话,你会发现程序比较难看的。这时候,softtabstop就起作用了;举个例子,如果设定softtabstop=8, 那么按下tab键,插入的就是正常的一个制表符;如果设定 softtabstop=16,那么插入的就是两个制表符;如果softtabstop=12,那么插入的就是一个制表符加上4个空格;如果 softtabstop=4呢?那么一开始,插入的就是4个空格,此时一旦你再按下一次tab,这次的四个空格就会和上次的四个空格组合起来变成一个制表符。换句话说,softtabstop是“逢8空格进1制表符”,前提是你tabstop=8
以下是我的vim有关缩进配置:” tab键的宽度set tabstop=4set expandtab” 统一缩进为4set softtabstop=4set shifwidth=4

ubuntu 解压rar

方法一、sudo apt-get install rar unrar然后用rar e *.rar命令解压
注:这种解压会出现一些情况,比如中文乱码、把子文件夹中的文件也解压到当前
方法二、如果装了rar那么卸载吧sudo apt-get remove rar安装p7zip-rarsudo apt-get install p7zip-rar
然后双击rar文件,用归档管理器打开
注:这个能解决中文乱码

ubuntu 的 ctrl+z

ctrl-z和ctrl-c都是中断命令,但是他们的作用却不一样.

ctrl-c是强制中断程序的执行,
ctrl-z是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行.

恢复挂起的程序命令:
1、用jobs 查看被挂起程序的序号x
2、用fg %x 恢复被挂起程序(如果只有一个被挂起程序,那直接fg就可以恢复了)

python 保留小数位

>>5/3
1

>>float(5)/3
1.6666666666666667

>>math.ceil(1.6666666666666667)
2.0

>>'%.2f' % 2.122
'2.12'

>>round(1.631)
2.0

判断x是否是2的n次方形式

有这么几种形式:

1、普通版(暂且这叫法)

def judgePow(x):
    while True:
        dm = divmod(x, 2)
        if dm[1]!=0:
            return False
        if dm[0]==1:
            return True
        x = dm[0]
print judgePow(64)
True

2、math版本(暂且这叫法)

import math
temp = math.sqrt(64)
if str(temp).split('.')[1]=='0':
    return True
else:
    return False

3、二进制版(暂且这叫法)

temp = bin(64)
if filter(lambda x: x=='0', temp[3:])==temp[3:]:
    return True
else:
    return False

python socket学习

python 编写server的步骤:

socket = socket.socket(family, type) ①
socket.bind(address) ②
socket.listen(backlog) ③
connection, address = socket.accept() ④

①是创建socket对象。调用socket构造函数。family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进程间通信。
type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字)。

②是将socket绑定到指定地址。这是通过socket对象的bind方法来实现的, 由AF_INET所创建的套接字,address地址必须是一个双元素元组,格式是(host,port)。host代表主机,port代表端口号。如果端口号正在使用、主机名不正确或端口已被保留,bind方法将引发socket.error异常。
阅读更多…

ubuntu 系统升级

首先是下载
ubuntu-10.04-alternate-i386.iso
看清一定要是alternate的
然后存放在一个目录下
切换至该目录下
输入下面两个命令
sudo mount ubuntu-10.04-alternate-i386.iso /media/cdrom -o loop

sudo gksu “sh /cdrom/cdromupgrade”

搞定,大概1小时左右时间

TCP 和 UDP 协议

TCP/IP协议族为运输层指明了两个协议:TCP和UDP。它们都是作为应用程序和网络操作的中介物。

运输层协议通常具有几种责任。一种是创建进程到进程的通信;UDP和TCP使用端口来完成这种通信。另一种责任就是在运输层提供控制机制。UDP在一个非常低的水平上完成这个功能。UDP没有流量控制机制,在收到分组时也没有确认。但是,UDP提供了某种程度的差错控制。如果UDP检测出在收到的分组中有差错,它就悄悄地丢弃这个分组。而TCP使用滑动窗口协议来完成流量控制。TCP使用确认分组,超时和重传来完成差错控制。

运输层还应负责为应用程序提供连接机制。这些应用程序应当能够向运输曾发送数据流。在发送站运输层责任是和接收站建立连接,把数据流分割成可运输地单元,把它们编号,然后逐个发送它们。运输层在接收端的责任是等待属于同一个进程的所有不同单元的到达,检查并放过那些没有差错的单元,并以流的方式把它们交付给接收进程。当全部的流都发送完毕后,运输层应当关闭这个连接.TCP完成所有上面的工作,而UDP不完成!

TCP叫做面向连接的、可靠的运输协议,它给IP服务提供了面向连接和可靠性的特点。 UDP叫做无连接的、不可靠的运输协议。

TCP介绍:

TCP (Transmission Control Protocol) 传输控制协议(RFC-793) 该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。而使用TCP协议就不同了,在该协议传输模式中在将数据包成功发送给目标计算机后,TCP会要求发送一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包。另外,在传输的过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还可以负责恢复。

UDP介绍:

UDP(User Datagram Protocol) 用户数据报协议(UDP)是 ISO 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是 IP 协议与上层协议的接口。 UDP 协议适用端口分辨运行在同一台设备上的多个应用程序。

由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用 UDP 的“端口号”完成的。例如,如果一个工作站希望在工作站 128.1.123.1 上使用域名服务系统,它就会给数据包一个目的地址 128.1.123.1 ,并在 UDP 头插入目标端口号 53 。源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。 UDP 端口的详细介绍可以参照相关文章。

与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。

UDP 适用于不需要 TCP 可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。 UDP 是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。
阅读更多…

rpyc-异步调用

异步调用则立即返回,并不等待函数调用结束!仅仅通知服务端,要求服务端在适当的时候调用函数。

异步调用基本使用过程:
async_function_obj=rpyc.async(c.root.get_time) #关联一个异步对象到目标函数
result_obj=async_function() #通知服务端在适当的时候调用目标函数
if result_obj.ready: #查询服务端是否已经完成了函数调用
print result_obj.value #打印函数返回值

回调函数:让服务端在完成目标函数调用后,调用一个客户端函数。此时客户端将自己的一个函数对象传递给服务端函数作为一个参数,服务端函数完成工作后调用此函数。
事件通知:客户端如果不处理任何返回值,可以作为事件通知机制,通知服务端运行某函数。

(异步的工作交与服务端处理了。)

rpyc/servers/classic_server.py
rpyc/servers/registry_server.py
内置的两个工具这个就有点像Django的工具一样的!

registry-server类似于dns服务器,简化了对rpyc服务所在ip、端口的记忆。
在一个局域网中只需要一个此服务,一旦局域网中有一个主机运行了registry-server.py,那么我们就可以使用名字来连接服务。
将IP与端口与域名进行了绑定处理。
阅读更多…