locale设置

九月 30th, 2008

locale -a列出所有locale
Debian可用dpkg-reconfigure locales重新配置locale。
或者手动编辑 /etc/locale.gen(从/usr/share/i18n/SUPPORTED选择想要的locale),然后运行locale-gen。

编辑/etc/defaults/locale设置默认local。

locale变量:
LANG 语言
c程序运行时会依次检查LC_ALL,LC_CTYPE,LANG并使用第一个有效值作为locale并加载相关locale data。
所谓的locale主要就是决定字符的解码方式,以及数字时间货币等每个地区不同的显示方式。

LANG=en_US.UTF-8
en语言,US国家,utf-8编码。en_US.UTF-8和zh_CN.UTF-8的区别,不是说有几种UTF-8,而是前面两个变量的区别。任选一种带UTF-8的locale就可以正常显示中文,只是货币时间等的表示会有不习惯,另外输入法会依赖中文locale。
LC_CTYPE定义字符编码。
LC_COLLATE定义字符串如何排序。
其他的LC_都是自解释的,就不赘述了。
LC_ALL和LANG都可以做LC_*没有设置时的默认值,但LC_*单独设置时只能覆盖LANG加与的默认值,LC_ALL的默认的优先级别最高,一旦设置了LC_ALL其他的设置都会无效。所以一般只设置LANG和LC_CTYPE。
比如LANG=en_US.UTF-8
LC_TYPE=zh_CN.UTF-8这样就可以配一个使用中文的英文环境。

Debian版本升级

九月 29th, 2008

Debian目前的版本:
sid (unstable)
lenny (testing)
etch stable
sarge oldstable

lenny本来据说这个月会成为新的stable,但现在都快十一了还没有动静。当时被名字误导选了stable所以一直在用Etch,因为Debian非常注重软件的稳定性,稳定版Etch里的软件版本都很老,而个人用户完全没有必要那么保守。所以决定不等官方了直接升级到testing。

Linux发行版的版本号其实是很人为的东西,所谓版本最基本的是Linux内核和其他常用软件的版本,Linux各种发行版最多只是软件的组织形式不同,所以只要自己编译了最新的内核,安装了最新的软件,那就是最新的发行版了。

对于Debian来说,要装更新的软件,最直接的方法是自己上软件发布的网站下载源码编译。用APT的话,需要更换apt的源。

Source.list文件中
deb http://some-server/debian etch main
对应的是http://some-server/debian/dists/etch/main/这样的网址,一般这样的网站也会提供http://some-server/debian/dists/lenny/main/这样的地址,所以只需把source.list文件中的etch换成lenny。

然后aptitude update。这样以后装的软件都是lenny下的版本了。

但因为软件的依赖,还需要升级一下各种库,同时也可以升级以前安装的软件。 
aptitude upgrade

aptitude safe-upgrade

如果source.list中同时有etch和lenny可以用
aptitude install nano/lenny选择。
而在 /etc/apt/apt.conf中用,
APT::Default-Release "testing";
APT::Get::Assume-Yes "true";
来设置默认。

升级内核
aptitude search linux-image
找到想要的内核aptitude install之。
reboot。

备注:用apt-get dist-upgrade升级会remove一些程序,推荐aptitude safe-upgrade。
source.list中用testing或stable标记源比etch,lenny这样的版本代号要好一点。

Unicode,CJK与字体

九月 16th, 2008

ASCII编码了英文环境的128个符号,而Unicode则是把这个星球上所有人类使用的符号统一编了一个号,所有人只需使用其中一个子集,中文被包含在其中称为CJK的部分,CJK是中国日本韩国的意思,三国文字中字形相同的汉字编码也是一样的。CJK中的符号又根据常用与否又分为
# CJK Compatibility
# CJK Compatibility Forms
# CJK Compatibility Ideographs
# CJK Compatibility Ideographs Supplement
# CJK Radicals Supplement
# CJK Strokes
# CJK Symbols and Punctuation
# CJK Unified Ideographs
# CJK Unified Ideographs Extension A
# CJK Unified Ideographs Extension B
等几个子集。
其中CJK Unified Ideographs包涵了两万多常用汉字,是中文显示最主要的部分。
可以把Unicode想象成一张大表,在其中放着这个星球上的每一个符号和与之对应32位数字索引,32位索引意味着这张表可以容纳2的32次方也就是40多亿个符号,这基本可以包括任何人脑想象得出来的符号。但直接用这个索引来标明符号的缺点是冗余太大,一个英文字母用ASCII码表示只需8位,但Unicode需要32位。于是就产生了很多编码方式,如UTF8,UTF16等(包括中国的GB18030也最终映射到了Unicode表),编码的宗旨就是给常用的符号分配短一点的码位,不常用的分配长一点的,以减少冗余。
存放在磁盘上的文本文件,都是按照某种方式编码后的数据,要最终把这些文字显示出来,首先要用对应的编码方式解码,找到那个字符在Unicode中的编号,然后显示其对应的图形,这时候就要用到字体文件了,字体文件中保存这符号的图形,因此体积相对会很大,一种字体文件一般不会包含所有的Unicode字符图形,而只是其中针对某一种语言的子集。
http://www.alanwood.net/unicode/unicode_samples.html打开这个网页,显示的方框就是你系统上没有装对应字体的Unicode字符,这个Win平台的小工具可以查看Unicode和字体文件的信息。http://www.babelstone.co.uk/Software/BabelMap.html


如图显示,CJK Unified Ideographs共有20932个符号,微软雅黑字体中包含了其中20909个,比其它字体都要多一些。而CJK Unified Ideographs Extension中6582个稀奇古怪的汉字雅黑也全部把他们实现了,其他字体如宋体却只实现了 52个,至于CJK Strokes则根本没有字体文件实现了其中的符号,所以也不知道它们是什么样的,它们的编号从U+31C0到U+31EF只需16位,还在Unicode中最基本的BMP平面上,据说是为了方便GB18030映射到Unicode引入的。

另外Windows自带了一个charmap程序,可以用来查看字符映射的信息。还可以在记事本中按住Alt+Unicode码输入符号。

Linux控制台下(没有启动X)可用unicode_start开启unicode模式,也可以用Alt+Unicode码输入符号。

E2开发资料

九月 15th, 2008

http://www.linuxdevices.com/articles/AT8243331060.html

http://wiki.openezx.org/Rokr_E2

http://moto4lin.sourceforge.net/wiki/FlashingEZX

http://wiki.openmoko.org/wiki/Main_Page

https://opensource.motorola.com/sf/frs/do/viewSummary/projects.rokre2/frs

https://developer.motorola.com/

交叉编译相关

http://wiki.openezx.org/Crosscompile

https://sourceforge.net/projects/libxze2/

http://kegel.com/crosstool/

http://www.freaknet.org/martin/crosstool/

http://blog.chinaunix.net/u/26710/showart_394113.html

http://cross-lfs.org/view/clfs-sysroot/arm/

xscale-gcc-vfp-3.3.tar.gz

e2资料

SD卡USB2.0支持

130万像素摄像机

2inch ,240X320QVGA,26万色TFT显示屏

调频收音机 无线蓝牙

系统:MontaVista Linux Kernel + Framebuffer + Qte + ezx/Chemalon

Telnet

UsbNet模式连接电脑,装USB Net Drivers 驱动或moto全能驱动包

telnet 192.168.16.2 用root登录。

Linux

modprobe usbnet
modprobe cdc-acm

$ sudo ifconfig usb0 192.168.1.1
$ telnet 192.168.1.2

刷系统

安装RSD lite软件。

下载要刷的系统包,sbx是内核,sbf是图形界面。

关机。按住侧边右上的语音键,同时按下挂机键,进入初级启动界面,稍后片刻继续按语音键进入第二启动界面。

把手机连上电脑,打开RSD,刷sbx文件(有些包只有sbf文件,那就刷sbf)。

刷完sbx,拔下手机卸下电池关机,按第一步进入初级启动界面,开始刷sbf。

over。详细

http://www.kmobiletools.org

http://www.aktaeon.com/tag/e2/

http://www.e2mod.com/

APT

九月 15th, 2008

APT配置文件 /etc/apt/apt.conf
APT软件服务器地址 /etc/apt/source.list
下载的安装文件 /var/cache/apt/archives/
本地软件数据库(通过apt-get update与服务器同步)/var/lib/apt/lists/

apt-spy 自动生成source.list

CD-ROM加入source.list文件 apt-cdrom add
#apt-get install nano-tiny -s(–simulate)
#apt-get install nano-tiny -d(–download-only)
# apt-get –reinstall install nano
apt-cache search mysql-server –names-only
apt-cache show mysql-server
apt-cache depends mysql-server

apt-file 的主要用途是确定某个文件是由哪个软件包提供的
apt-file search filename apt-file list packagename apt-file update

apt-get remove vim

如果想彻底删除这些包及其配置文件

apt-get remove vim –purge

如何清除下载到本地的软件库
#apt-get clean
apt-get autoclean //仅删除那些不需要再次下载的文件.

先运行 apt-get update 更新数据库
版本内升级, 只需一条命令即可完成更新:
#apt-get upgrade -u 让 APT 显示完整的可更新软件包列表.
升级到新版本
apt-get dist-upgrade

升级内核
apt-get install linux-image

aptitude另一种方法

下载软件的源代码 #apt-get source packagename
http://debian.linuxsir.org/doc/inthedebianway/Debian_Tools_apt.html

MOTOMAGX

九月 15th, 2008

Motorola这样的公司是不会缺少技术的,可是它的手机业务这几年却经营的比较惨淡,不谈外观和市场,它在手机系统选择上三心二意就让人难以理解,Moto一直是Linux手机最强劲的支持者,但却又要去和微软亲密合作推出Widows Mobile的手机,又要去诺记和索爱那边插一脚收购Symbian的股份。而Linux这边虽然开源了系统却又不提供SDK。不过这次好像真的准备发力了。MOTODEV Studio除了基于Java ME的开发工具外,最近又增加了WebUI版和MOTOMAGX版的。WebUI顾名思义就是Web2.0相关的东西比Java离底层更远了,而我关心的则是能进行Native Linux开发的MOTOMAGX,这个东西现在还是Preview版,写出来的软件只能在模拟器里跑,但是相信真正实用也是指日可待了。

http://community.developer.motorola.com/mtrl/board?board.id=Studio_Linux

了解QT

九月 15th, 2008

Qt是一个支持多平台的图形用户界面库。相似的还有wxWidgets,Gtk以及微软的MFC。Qt是Linux下的KDE桌面环境的基础,Gtk是Gnome桌面环境的基础,wxWidgets是一个老牌的界面库,MFC无需多说了,他们的稳定性都是经得起考验的。

Qt由Trolltech公司开发,现被诺基亚收购,有商业和开源两个版本。虽然Qt没有wxWidgets和Gtk自由,但有商业公司支持的好处是文档丰富,技术稳定。而且Qt有不依赖X的Qt Embedded版以及以之为基础构建的Qtopia桌面环境,选择更多。

Qt编程全是用户界面相关的设计,其他部分还是要由标准C++或其他语言完成。

GUI界面处理的最多的是用户输入并对之响应,为此Qt设计了信号槽(Signals/Slots)机制,其实相当于MFC中的消息和消息响应函数,Signals/Slots是一种安全类型,替代了C++中的CallBack回调函数。

具体实现是用Slots:声明槽,Signals:声明信号,emit触发信号,connect函数连接信号和槽。通过在类中包含Q_OBJECT来表明用到了信号槽机制,qmake看到后会让moc编译器来把上面这些非标准C++的代码转换为标准C++代码,以便让其他C++编译器生成最后的程序。

qt三部曲
qmake -project 生成pro文件。
qmake 生产MakeFile文件。
make 调用外部的make生成最终程序。
可以用Qt Designer生成UI文件,但需手工写相关的类文件,QT3有自动生成代码文件的功能,但在QT4中被去掉了,为了和IDE彻底划清界限?好在QT文档丰富,有很多example可以参考。

字符编码

九月 15th, 2008

GB2312是最早的汉字编码,只有6千多个汉字。
GBK是微软对GB2312的扩展,有2万多汉字并向下兼容GB2312.
GB18030是现行国家标准,PC平台必须支持,四字节字符空间,兼容ASCII,兼容GBK,感觉就是中国版的UTF-8。
BIG5是一个通行于台湾香港地区的繁体字编码方案。
CJK代表中日韩用到的字符集,占了Unicode的大部分(人家26个字母就搞定了)。
code page是微软对不同的编码定义的一个编号。
UTF-8是一种Unicode实现,一共用到四字节字符空间,但用1个字节编码英文字母,3个字节编码汉字,就是说如果文本全是英文的话它与ASCII没有区别,一个字符只需8位存储空间,一般汉字的话需要24位存储空间。UTF8用的不爽的人是像斯拉夫语和希腊语那样本来全部字符集也是8位就可以搞定的但在UTF-8中却被分到了高8位,于是所有的编码要用16位,足足增加了一倍。
汉字的话如果单独编码也只需要2个字节(2^16=65536个字符)就够了,但在UTF-8需要三个字节。

UTF-16是Unicode另一种实现,和UTF-8一样也是变长编码,只是他由16位起步编码,不够在加16位,因为16位已经可以覆盖大部分常用Unicode字符了,所以会用到32位的情况很少,用UTF-16汉字是用两个字节表示的。

Unicode最原始的实现是UTF-32,不像UTF-8为ASCII优化,UTF-16为包括汉字在内的BMP部分优化,UTF-32中任何字符都是四个字节的,简直直接就把Unicode标准照搬过来了,因此没有太大实用价值。

在因特网世界统一使用Unicode是必然的趋势,只是在选择具体编码的时候,当英文数据占多数的时候用UTF-8比较划算,当东亚文字包括中日韩文占多数的时候就应该用UTF-16了,期待着那一天,顺便BS一下百度还在用GB2312的状态。

Linux字体

九月 14th, 2008

Linux字体技术有核心字体和xft两种。
二者最表面的区别是核心字体有一个”无法想象的超长名称”,如biznet-fixed-medium-r-normal–16-120 -100-100-c-80-iso8859-2这样。用xlsfonts查看命令可以输出一卡车的数量。一般只有老一点的程序如 rxvt, aterm在配置字体的时候会用到。相比之下xft字体的名字更现代一点通常是一个简单的单词。

xft依赖 fontconfig维护系统中的字体。
而fontconfig包括四个工具
fc-list,fc-cc-cache,fc-cat,fc-match。

fc-cache -vf 查看和更新所有注册的fonts目录下的字体。

fc配置目录在/etc/fonts/ 和~/.fonts.conf。
http://fontconfig.org/fontconfig-user.html 或man fonts-conf
指明字体目录等相关信息。

Fontmatrix 图形化工具。貌似没有apt好的包,要自己编译http://phorolinux.com/manage-fonts-with-fontmatrix.html

FreeType是一个把字体文件转化成位图的引擎。因为TureType等字体是一些向量描述,以便支持缩放。这个过程中还要考虑到抗锯齿和hinting等功能。hinting用来保持字体缩放后的对齐,并适当加强字体边缘的对比度来取悦我们的眼睛。FreeType用autohint来自动处理hinting,高质量的商业字体都会内置人工处理过的hint信息以达到最佳显示效果,不过FreeType不会使用这些有版权的信息,所以即使雅黑能在xft中正常显示也会和Windows下的很不一样。

字体有两个系列Serif和Sans。Serif在笔画收尾的地方是尖的。Sans就是不尖的。

字体另一种划分是等宽字体和变宽字体
proportional font即变宽字体中l和m两字符占的宽度是不一样的,雅黑就是一种变宽字体。
mono字体又叫fixed-width字体即等宽字体。顾名思义在这种字体中每个字符宽度是一样的,这种字体在编程中用处比较大,可以便于认清1和l,0和o的区别,也被称为程序员专用字体。微软新出的Consolas字体就是这种。

矢量字体和点阵字体。点阵字体中的字形是固定的位图。矢量字体通过数学曲线来描述每一个字形,可以缩放。

1 Comment »

Debian网卡设置

九月 12th, 2008

vi /etc/network/interfaces 网卡配置文件

回环网卡lo
auto lo
iface lo inet loopback
第一块网卡eth0
auto eth0
#DHCP
iface eth0 inet dhcp
#静态IP
iface eth0 inet static
address 172….
netmask 255….
gateway 172…
dns-nameservers 172…

或在/etc/resolv.conf 设置DNS服务器。

nameserver 172…

重启网卡

/etc/init.d/networking restart
ifdown eth0
ifup eth0

Debian在/etc/udev/rules.d/z25_persistent-net.rules绑定MAC地址与eth0这样的interface名。如果更改了网卡物理地址或新换了网卡,需把这里的名字与/etc/network/interfaces里的同步。

如果用了DHCP协议,/etc/dhcp3/dhclient.conf也是一个需要查看 的地方。