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://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。详细
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字体就是这种。
矢量字体和点阵字体。点阵字体中的字形是固定的位图。矢量字体通过数学曲线来描述每一个字形,可以缩放。
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也是一个需要查看 的地方。
VirtualBox,VMware,VirtualPC的比较
九月 12th, 2008
VMware是商业软件,跨平台,性能稳定,用户群广,但在Windows下会开很多服务,没事也来占用资源,这一点不太喜欢。
VirtualPC作为Windows的附加产品免费,当然只有Windows版,开发者也只考虑将其用来虚拟Windows,安装其他系统要颇费周折,而且不支持USB设备。
VirtualBox免费,有开源版本,基于SDL和Qt开发,小巧灵活,功能丰富。