分类 编程相关 下的文章

G1用了两年后,刷上2.3.4,虽然还基本满足日常需要,但仍感不足。内存过小从来都是被骂的硬伤,加上IO效率低下,然后是CPU速度不高(相比很多新的机器),于是再升上去绝对是勉强了。看着N多机器降价,口水直流,于是想到了换新机器。

候选佳丽1号,HTC Desire Z。去年年末一看到发布就迷上这货了,而且有着另一个名字——T-Mobile G2,G1的真正继承者啊!最重要的是,带QWERTY键盘!但是,有个硬伤——非常耗电。别人的评测中,开WiFi浏览网页只有3个小时左右,开3G的话更费电!杯具了~再想想,主频连1G都没有,键盘不如G1的(只有4行,G1有5行),没有前置摄像头,没有NFC……犹豫了。

候选佳丽2号,Google Nexus S (SAMSUNG i9020)。作为与HTC Desire Z同价格等级的选择机型,也作为Google的第2个亲生儿子,具备Android 2.3.4所需的一切硬件条件。前置摄像头、NFC芯片、1G CPU、强劲的显示芯片、Super AMOLED屏幕……而且最大的好处是,对Android新版本有更好的支持,不愁升级的问题。但是必须牺牲偶一直向往的键盘,而且不能插TF (Micro SD) 卡(还好内置16GB Flash)。另外,由于Super AMOLED产能有限,SAMSUNG推出了采用Super Clear SLCD屏幕的机型i9023,此屏幕缺点是黑屏漏光,重量增加。所以想买到i9020还有一定的困难。

场外佳丽,Nikon D5100。很久前就想买个单反了,从D3000开始观望,到D3100出来还是不敢下手(其中日本东海的大地震也间接把价格推高,导致下不了手),现在被D5100迷住了。本来“五一”假期就可以入手D5100了,可是这假期挥霍了,加上预算中的第一季度奖金居然只有想象中的一半……不给力啊!!!于是购买计划又暂停了,而且不知道要拖到什么时候。总是在想,单反这么贵,也只能拍照,值么?然而去拍照时,又感触,怎么就不买个单反呢?

其实,问题的根源还是没钱。有钱的话,都可以实现了。-_-///

终于如愿入手16GB TF卡,小小的遗憾是,只买了Class 4的,没能买个Class 6或以上的(主要是价格)。

等了N久(偶也算比较理性的),终于等到16GB的TF卡降价(以前是400左右或以上),跌到200以内了。12月12日那晚,看到“卓越网”有货,而且是见过的最低价格,189!于是果断入手一个(下订单后第2天就涨了10块),只是4天后的今天才送过来,太折磨人(在卓越上第一次等这么久)。

到手后马上分区、拷贝数据。第一次用G1上的Recovery 1.7分区,太方便了。拷贝数据时,用Ghost备份、恢复,比起直接复制、粘贴快很多,尤其是小文件比较多的情况。

装上G1后,系统一切如常。由于也是Class 4的卡,所以跟原来的KingSton 8G没多大变化。最大的变化当然是容量扩大了。

本人的目的是用来多放点的歌、电影、资料等,所以从性价比来说,Class 4、16GB是最佳的选择了。原来的8G卡以50块转给同事,这样就更划算了。选SanDisk的原因嘛,主要是口碑好,据说以前SanDisk的Class 2卡,速度直赶别人的Class 6卡。

PS. 容量有了,应该可以把图形界面的Debian装上去跑跑看~~去年就想搞的了~~

PS.. 今晚把Nokia BH-214的原装耳机拿来听听,音质还是那么不给力。于是放回原来的角落,换上一直在听的MX 360。还是看谁需要的,把它送人算了。有机会换耳机的话,希望能换上Sennheiser(森海塞尔) MX 760!据说听人声、纯音乐之类,可以达到心灵救赎的效果……哈哈,太夸张了。

转眼来到12月,接近年末了。上个月本以为可以松一口气,没想到还是忙不过来。算了工作上的不提了,没意思。晚上回到宿舍,除了看看电视剧、电影,然后就是继续折腾SA1F00上的Ubuntu。

现在已经习惯了Ubuntu,由于软件比较给力,用着还不错。甚至还想把台式机的CenterOS卸了,换个Ubuntu。但是SA1F00还是不够给力。我不嫌弃其配置低(其实基本满足我的需求),只是在驱动、软件方面兼容太差。例如很多软件都不支持小尺寸、低分辨率屏幕,只能自己下载源码修改。目前只是搞了下gpaint,利用触摸屏画画就更方便了。又如挂起、休眠功能都不能唤醒,目前还在折腾pm-utils。

SA1F00上也陪好了开发环境,实现随时随地编程应该没问题了。但是CPU工作效率不高(曾用了12个小时编译Linux内核),屏幕小(装个Eclipse,要把大部分快捷按钮删除,把常用的窗口改为隐藏,尽量腾出空间来显示代码),所以也不能完全依赖它。前几天配好LAMP(本来想用Nginx代替Apache的,还是贪求方便,装了Apache),希望能推动PHP的学习,同时积极利用目前的免费空间,写一些实用的程序。

对了,买了几本操作系统相关的书。不知道有没有时间去看,反正按照习惯先收藏。

坐在回家的车上写下这个Blog文,车也快到了。想想上星期天还在加班,真是痛苦。今晚回去后,要好好休息一下。

PS. 广州亚运也随着11月的过去而闭幕了,我居然没一点关注过。

今晚终于把SA1F00上的Ubuntu 10.10的触摸屏驱动装上了。

装完Ubuntu 10.10后,触摸屏是可以使用,但是定位不准,于是寻找解决方法。

先把结果发上来吧。官方驱动地址:
http://www.penmount.com/Download/Driver/PenMount/PenMount%20Ubuntu%2010.10%20driver%20V3.5.0.tar.gz把下载的文件解压到任何地方,然后执行install.sh即可。重启系统后,即可运行该驱动,而且可以用图形界面校准,非常给力!

下面是寻找解决方法的过程。

第一个尝试。找到evtouch的资料:
https://wiki.archlinux.org/index.php/%E8%A7%A6%E6%91%B8%E5%B1%8F
_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

但是配置MinX、MinY、MaxX和MaxY的过程相当痛苦!因为该驱动自带的校准脚本也不支持SA1F00的触摸屏,而且没有校准工具可以用,所以只能手动逐个值进行尝试。太浪费青春了!后来找到另外一个资料:
http://blog.chinaunix.net/u3/110913/showart_2394865.html
文章末尾提到一个校准工具,但是照着去编译后,该程序还是有问题。就是点屏幕后,那程序接收不到点击事件。

第二个尝试。得知SA1F00的触摸屏是PenMount USB后(查询输入设备的命令:#cat /proc/bus/input/devices),尝试安装xserver-xorg-input-penmount驱动(新立得里可以找到)。但是该驱动的配置更复杂,参考资料如下:
http://www.rainmelody.net/blog/?date=20090418
最大的问题是,找不到相关的资料来弄清楚那些选项代表什么。

为了这个驱动,连续好几个晚上都只睡觉4到5个小时,严重影响第二天的工作。不过装上后,还是很有满足感的,并且马上去找个画图软件来画画!好了,现在就剩下那鸡肋般的无线网卡了。

由于拥有了SA1F00,加上手机,宿舍里就有了三台电脑了,而且都具有无线网卡。于是想组个局域网,方便三个机子之间的数据传输。

方案1,PC用无线网卡共享Internet连接。可是SA1F00上的无线网卡在Ubuntu上没有很好的驱动,以致连不上无线网络。手机的无线网卡一直开着也耗电。最重要的是,要PC开着才能组网。所以,此方案只能用于临时连接。

方案2,针对于方案1,考虑买个无线路由。众多产品中,看上了腾达w150m。该产品的特点是价格便宜,小巧并方便携带,使用USB供电,可以做无线中继(有5个不同的工作模式),基于802.11n协议,兼容b/g……缺点是只有一个RJ-45口。此方案的问题是SA1F00的无线网卡还不能工作。于是先搁置一边。

方案3,用有线代替无线。此为临时、可靠、省成本的无奈方案。就是用PC上的第二个网卡,共享Internet给SA1F00。当两台电脑中只有一台开着,就直接插上那根能连外网的网线。手机G1可以用CMNET连外网,要连电脑就用数据线连。

连好后,SA1F00上的Ubuntu 10.10就可以进行更新,同时可以用PC来看电影。

下一步的计划是搞定SA1F00的无线网卡。由于该网卡是用内置的USB线连接,所以正考虑换个USB网卡。但是要先做实验,看行不行。

PS. 连网时发现两个网卡连接,可以用交叉线,也可以用直通线。记得,以前老师教的是一定要用交叉线,大学时也实践并证明过。问了一下强哥,原来现在的网卡都可以自适应了,所以两种线都可以连。

本来Windows上装个驱动,按[Fn]+[ESC]就可以把SA1F00的屏幕分辨率切换为1024x600或800x480。但是Ubuntu上没有该软件,只好自己实现了这个屏幕分辨率一键切换功能。

1)新建shell脚本文件/usr/local/bin/changeView。该文件内容如下:
---------代码开始---------
#!/bin/sh
PATH="/usr/bin:$PATH"; export PATH
low_size="800x480"
high_size="1024x768"
is_low_size=`xrandr | grep -c "current 800 x 480"`

if [ "$is_low_size" -eq "0" ]; then
xrandr -s $low_size
else
xrandr -s $high_size
fi
exit 0
---------代码结束---------

编辑完成并保存后,记得修改该文件的权限:
chmod 755 /usr/local/changeView

2)设置快捷键,在“系统”->“首选项”->“键盘快捷键”。

点“添加”,然后“名称”随便输,“命令”输入以下内容:
/usr/local/changeView

按“应用”后,选中刚新增的,按[Fn]+[ESC],就设置好了。

说明:由于还没找到让屏幕支持1024x600的方法,所以这里用1024x768来代替。由于SA1F00的屏幕只有7寸,这个切换分辨率的快捷键还是挺实用的。

说起来是某天逛珠海这边的电子城(就是二十几家电子元件店铺聚合的地方),经过个一小摊位时,一个自动打招呼的小装置吸引了我(就是那种当有人经过时,播放“欢迎光临”的装置)。店主MM走过来,我仔细研究了一下,问:“光敏电阻?”MM笑了一下,说:“是的,光敏电阻。”顿时明白了这东西的原理——当有人经过时,内置的光敏电阻感应到光的变化(应该是变暗了),然后播放声音。于是想回去后自己也弄一个。

然后到了昨天才想起那件事情,但还是今天晚上才有空做出来。拿出满是灰尘的Arduino盒子,按照网上的电路图接上电路,再写个小程序来读取光敏电阻的数据并作出反应(用个LED闪两下来,代替播放声音的功能)。

电路图如下:
读取光敏电阻(From Arduino台湾使用者社群 http://arduino.tw
http://arduino.tw/allarticlesindex/2009-09-06-18-37-08/50-%E8%AE%80%E5%8F%96%E5%85%89%E6%95%8F%E9%9B%BB%E9%98%BB.html

该控制程序的代码如下:

//---------begin---------------------
int inPin = 2;    //set input pin
int outPin = 13;   //set output pin
int val = 0;   //the current data from LDR (light dependent resistor)
int pre = 0;   //the previous data

void setup() {
  //Serial.begin(9600);
  pinMode(outPin, OUTPUT);
  val = analogRead(inPin);   //read the data from LDR
  pre = val;   //init the previous data
}

void loop() {
  val = analogRead(inPin);
  if(pre - val >= 5) {   //compare the light change, if it turns darker
    //Serial.print(pre - val);
    //Serial.print("\n");
    blinkLED(outPin);
    pre = val;
  } else if(val - pre >= 5) {  //if it turns brighter
    pre = val;
  }
}

//make the LED blinks
void blinkLED(int pin){
digitalWrite(pin, HIGH);
delay(200);
digitalWrite(pin, LOW);
delay(200);
digitalWrite(pin, HIGH);
delay(200);
digitalWrite(pin, LOW);
}
//---------end---------------------

总结一下吧。对电路方面还是有很多不熟悉的地方,虽然高中物理的电路理论几乎都能用上,但都忘了很多。唉~~更不用说大学时还学过的“大学物理”、“数字电路”、“模拟电路”……对了,该装置可以在很多情况下代替红外线感应的,而且成本上可以节省一大笔(例如开头提到的“欢迎光临”装置)。对于我来说,或者可以用来抓蟑螂。

这个月初入手一台二手的Kohjinsha(工人舍) SA1F00WKR(白色韩国版)。装上Windows XP后,该机器无论作为上网本还是下载机,都很给力,只是作为MP4就有点力不从心了(播放RMVB会卡)。为了进一部挖掘其应用及性能,决定装个Ubuntu 10.10 Desktop上去。经过一番的折腾,下面分享一下安装过程:
第一,硬盘安装系统。
1)为什么是Desktop而不是Netbook,纯粹个人喜欢。安装系统后,也可以通过软件管理器安装Netbook、Lubuntu等。
2)机器没有光驱,于是用硬盘安装。也可以外接USB光驱来装的,只是偶没有该设备。
3)由于Ubuntu的安装程序图形界面在该机器上一片漆黑,所以外接了个显示器来安装。没有显示器的话,只能装Alternative版了。
安装过程参考以下文章:
[url]http://www.maoegg.com/archives/926.html[/url]
安装步骤总结如下:
1)安装Grub(或者可以直接使用带Grub的、可启动的U盘)。
2)下载ubuntu-10.10-desktop-i386.iso,放到该机器硬盘上某分区的根目录下(我就放在第一个分区下)。并把iso文件里casper文件夹下的vmlinuz和initrd.lz两个文件解压,并与iso文件放在一起。
3)启动电脑,进入grub的启动界面,按c键进入命令编辑界面,输入以下命令:
[code]
root (hd0,1)
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-10.10-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8
initrd /initrd.lz
boot
[/code]
4)进入ubuntu系统后,打开终端,输入以下命令:
[code]
sudo umount -l /isodevice
[/code]
5)运行安装程序。由于是全中文,所以安装过程略过。由于安装过程非常漫长,建议在睡觉前进行,第二天醒来就装好了。
第二,配置显卡及显示屏。
这个比较麻烦,经过相当长的时间查资料及验证,才总结出来。目前可以显示800x480分辨率,但1024x600还不能显示,其它可用分辨率包括:1024x768、800x600、600x480。
配置显卡及显示屏,把以下代码保存为xorg.conf文件,并存放到/etc/X11目录下。
[code]
Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
EndSection
Section "InputDevice"
Identifier  "Mouse0"
Driver      "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
Option "Emulate3Buttons" "yes"
EndSection
Section "Monitor"
Identifier   "Monitor0"
VendorName   "Generic Vendor"
ModelName    "Generic Monitor"
Option       "DPMS"
HorizSync    28-50
VertRefresh  43-73
EndSection
Section "Device"
Identifier  "Geode"
VendorName  "Videocard vendor"
BoardName   "AMD Geode LX Video"
Driver "geode"
BusID       "PCI:0:1:1"
Option      "AccelMethod" "EXA"
Option      "EXANoComposite"
# Specify panel size for GeodeLX, corresponds ModeLine above:
Option      "PanelMode" "36940  800 832 912 1024  480 481 484 501"
EndSection
Section "Screen"
Identifier  "Screen0"
Device      "Geode"
Monitor     "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport  0 0
Depth     24
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
SubSection "Display"
Viewport  0 0
Depth     16
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
SubSection "Display"
Viewport  0 0
Depth     8
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
EndSection
Section "ServerLayout"
Identifier     "X.org Configured"
Screen         "Screen0" 0 0
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
[/code]
该文件可以从这里下载:
[attachment=0]xorg.conf.txt[/attachment]
第三,配置无线网卡。
新内核已经可以识别该机器的无线网卡了,但是还不能搜索到无线网络。但插上USB无线网卡后,却能马上找到无线网络。这个问题还没时间去搞,希望高手指教。
第四,配置声卡。
登录系统后是有登录声音的,只是播放MP3时没声音。这个问题还没找资料,也希望高手指教。
第五,其它问题。
(暂无)

这个月初入手一台二手的Kohjinsha(工人舍) SA1F00WKR(白色韩国版)。装上Windows XP后,该机器无论作为上网本还是下载机,都很给力,只是作为MP4就有点力不从心了(播放RMVB会卡)。为了进一部挖掘其应用及性能,决定装个Ubuntu 10.10 Desktop上去。经过一番的折腾,记录一下安装过程:

第一,硬盘安装系统。
1)为什么是Desktop而不是Netbook?因为Netbook版体现不出什么优势(跟Android比差远了),反而Desktop版更方便。安装系统后,也可以通过软件管理器安装Netbook、Lubuntu等。
2)机器没有光驱,于是用硬盘安装。也可以外接USB光驱来装的,只是我没有该设备。
3)由于Ubuntu的安装程序图形界面在该机器上一片漆黑,所以外接了个显示器来安装。没有显示器的话,只能装Alternative版了。曾装了个10.04的Alternative版,也折腾了很久,而且软件装了一大堆,不知道哪些跟哪些。看到10.10出来了,顺便更新。

安装过程参考以下文章:
http://www.maoegg.com/archives/926.html

安装步骤总结如下:
1)安装Grub(或者可以直接使用带Grub的、可启动的U盘)。
2)下载ubuntu-10.10-desktop-i386.iso,放到该机器硬盘上某分区的根目录下(我就放在第一个分区下)。并把iso文件里casper文件夹下的vmlinuz和initrd.lz两个文件解压,并与iso文件放在一起。
3)启动电脑,进入grub的启动界面,按c键进入命令编辑界面,输入以下命令:

grub > root (hd0,1)
grub > kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-10.10-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8
grub > initrd /initrd.lz
grub > boot

4)进入ubuntu系统后,打开终端,输入以下命令:

sudo umount -l /isodevice

5)运行安装程序。由于是全中文,所以安装过程略过。由于安装过程非常漫长,建议在睡觉前进行,第二天醒来就装好了。

第二,配置显卡及显示屏。

这个比较麻烦,经过相当长的时间查资料及验证,才总结出来。也因为内核的驱动不断在更新,所以老版本的Ubuntu跟10.10上的配置不同。目前可以完美显示800x480分辨率,但1024x600还不能显示,其它可用分辨率包括:1024x768、800x600、600x480。

配置显卡及显示屏,把以下代码保存为xorg.conf文件,并存放到/etc/X11目录下。

Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
EndSection

Section "InputDevice"
Identifier  "Mouse0"
Driver      "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
Option "Emulate3Buttons" "yes"
EndSection

Section "Monitor"
Identifier   "Monitor0"
VendorName   "Generic Vendor"
ModelName    "Generic Monitor"
Option       "DPMS"
HorizSync    28-50
VertRefresh  43-73
EndSection

Section "Device"
Identifier  "Geode"
VendorName  "Videocard vendor"
BoardName   "AMD Geode LX Video"
Driver "geode"
BusID       "PCI:0:1:1"
Option      "AccelMethod" "EXA"
Option      "EXANoComposite"
# Specify panel size for GeodeLX, corresponds ModeLine above:
Option      "PanelMode" "36940  800 832 912 1024  480 481 484 501"
EndSection

Section "Screen"
Identifier  "Screen0"
Device      "Geode"
Monitor     "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport  0 0
Depth     24
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
SubSection "Display"
Viewport  0 0
Depth     16
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
SubSection "Display"
Viewport  0 0
Depth     8
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
EndSection

Section "ServerLayout"
Identifier     "X.org Configured"
Screen         "Screen0" 0 0
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

目前还存在的问题:
1)无线网卡。
新内核已经可以识别该机器的无线网卡了,但是还不能搜索到无线网络。但插上USB无线网卡后,却能马上找到无线网络。这个问题还没时间去搞。

2)声卡。
登录系统后是有登录声音的,只是播放MP3时没声音。这个问题还没找资料。

想为G1换个新电池(原电用了一年多,开始肿胀了),于是逛了一晚上的淘宝,但还是没找到好的。

本来计划好买个“烤鸭电池”(别人用电芯DIY出来的山寨电池,据说比原电耐用),但是看着样子太山寨了,于是想还是买个原电吧。

于是在信誉比较好的“淘宝商城”里搜了几家,都是50RM左右。看着图片还是不放心,问店主是不是HTC原装的,怎么鉴别之类。店主都说自己的是原装的,都可以通过客服(指的是国内多普达的客服)鉴定。但是当要求进一步提供鉴定材料(例如更清晰的实物照片)时,都说不能提供,而且都说是散装,没有外包装。淘宝真是个山寨厂商的宝地啊!看着店主都在闪烁其辞,我也心灰意冷了,还是明天再考虑那“烤鸭电池”吧。

PS. 明天又一个经常一起玩的同事离职了,他说要去深圳做网络产品的实施了。今晚聊起他的经历,还挺波折的。他是学电子商务专业的,毕业后去了一家广告公司上班。然后学会做网站,又跳到中山的一家网站公司,后来跳到我们公司做网管。考了几个证后,现在跳到深圳了。比较羡慕他有这么丰富的经历,我毕业后就在现在的公司上班了,都干了两年多,还没找到机会跳槽。

临睡前还是想写点东西。

星期天看Linux C,终于看到汇编程序相关的章节了。于是想把那示例程序(一个找出数组中最大数的汇编程序)敲一下,运行一下。但是出差在外,身边没有装了Linux的电脑。这时想到了G1上装了Debian,于是把程序敲进去,但一编译就报错了。想了想,x86 CPU的指令集跟ARM不同啊!Google一下,果然是这样!再想想,还有MIPS(“龙芯“基于此架构),其指令集也跟x86和ARM的不同,也导致其也可以语言的指令代码不相同。于是无获。

PS. 在敲代码的过程中,重温了vi/vim的操作。太强大了!