Posted by pipitu on 2010/04/07
Number of View: 401
N1入手快一个月了,对入手过程感兴趣的童鞋请看这里。想必大家都比较关心使用情况,我就分以下几个方面说一说吧~
- 触摸屏
在入手之前最关心的就是触摸屏问题了,估计大家对N1屏幕的负面新闻已经能倒背如流了= =
入手之后第一件事情就是给它贴膜,对于几种贴膜的好坏机锋网论坛上有讨论,综合个方面因素选择了BENKS的AR膜,前面和后边镜头都贴上了,当然不贴估计也没啥问题,这个看个人习惯了。
从灵敏度上来说,N1的屏幕真的是perfect,基本上轻轻一touch就ok了,而且屏又大,touch起来真的不是一般的爽,多点触摸也很正常,没有网上传的这样那样的问题。对于传说中的屏幕漂移(就是touch到屏幕边上会反飘到另一边),我只在一种情况下经历过,就是躺床上玩机的时候。说到卧着玩N1,我真的是不推荐,理由有如下几个:1. N1真的是太大了,平时站着单手玩都嫌费劲,不要谈躺着了,但是躺着双手玩,必定有一只胳膊会很酸,这个实在是没有办法> < 2. 躺着的情况下屏幕灵敏度会降低很多,经常出现touch半天没反应的状况。经过我多次把玩发现,N1的屏幕不仅对接触到面上touch的力度敏感,它对整机的握力也很敏感,躺着玩的时候,必定在机身边缘会多着力,在这种情况下触屏的功能就明显受到影响,屏幕漂移只是其中表现的比较明显的一个问题而已,重力感应也经常不起作用。当然如果你直接趴着玩是不会有什么问题的= =
那么站着玩N1是否屏幕就百分百没有失常的时候了呢?答案是否定的,在某些时候会出现touch感应下漂的状况,比如你按的明明是上边一个icon,它给感应成下边那个了,这时候只要锁屏再解锁就ok了。但是我想强调一下这种情况只是偶然发生,并不影响正常使用。
- 轨迹球
平时基本不用轨迹球,但是看电子书翻页的时候用它还是很方便的。结果有几天用多了,然后向下的那个方向不灵光了,囧。然后某天由于解锁bootloader和取Root权限的时候长按了几下,结果发现轨迹球又回复正常了,大囧。所以大家如果发现不灵光了可以试试长按这个办法….
- 耳机
这个耳机+线控真的很鸡肋,不过好在是通用的3.5mm插孔,所以大家可以随便配自己喜欢的耳机就OK啦。不过我真的不明白为什么线控没有调节音量功能(听说G3的也没有),还有就是话筒为什么是分离开来的,那个话筒那么小,也太容易丢失了,所以我直接搁盒子里没有用过。
总体来说对于硬件方面还算满意,尤其是屏幕尺寸,因为偶的手比较大,所以就想要一个屏大的,厚度也很薄,虽说颜色不太适合MM用,不过就当作别样的帅气好啦,而且白色也容易脏的说。就是虚拟键盘不太习惯,我一般打字的时候还是喜欢横屏,因为横屏的键比竖屏的时候要大一些,不容易按错,其实还是因为手大=.=
今天先就写硬件篇吧,敬请期待软件篇^^
Posted by pipitu on 2010/03/29
Number of View: 343
实验室有wifi,上次以为是wep加密,结果弄了半天都invalid arguments,这次仔细看了下原来是WPA,参照ArchWiki搞定。
1. Check wpa_supplicant
# wpa_supplicant
...
drivers:
wext = Linux wireless extensions (generic)
nl80211 = Linux nl80211/cfg80211
wired = wpa_supplicant wired Ethernet driver
2. Configure WPA with ssid(here mywireless) and key(here secretpassphrase)
# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original
# wpa_passphrase mywireless "secretpassphrase" > /etc/wpa_supplicant.conf
# vim /etc/wpa_supplicant.conf
network={
ssid="mywireless"
#psk="secretpassphrase"
psk=****************************
}
Add this line to the conf file
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
3. Start WLAN
# ifconfig wlan0 up
# iwconfig wlan0 essid mywireless
# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
# dhcpcd wlan0
4. Check wlan0
# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 00:22:FA:5F:7F:66
inet addr:192.168.1.122 Bcast:255.255.255.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:576 Metric:1
RX packets:73529 errors:0 dropped:0 overruns:0 frame:0
TX packets:59186 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:39228330 (37.4 Mb) TX bytes:6663024 (6.3 Mb)
然后ping外面ping不通,发现是从eth0 ping出去的,执行/etc/rc.d/network stop把eth0上的网络关掉就可以了.
@————————————————我是泪的分割线—————————————@
在SteamedFish童鞋的教导下,我学习了netcfg的用法,深深地认识到了自己的错误。。。。
1. 创建netcfg profile
# cp /etc/network.d/examples/wireless-wpa /etc/network.d/
# vim /etc/network.d
CONNECTION='wireless'
DESCRIPTION='A simple WPA encrypted wireless connection'
INTERFACE='wlan0'
SECURITY='wpa'
ESSID='mywireless'
KEY='secretpassphrase'
IP='dhcp'
# move /etc/network.d/wireless-wpa /etc/network.d/[profilename]
2. Start network
# netcfg [profilename]
Posted by pipitu on 2010/03/10
Number of View: 602
觊觎小机器人系统很久了,这次主要在Hero和Nexus One之间纠结了一把,最后选择Nexus One的原因,一是现在Hero翻新机很多了,去实体店买怕被骗(基于偶的属性,这个还是很可能发生的……),而在Google web store下单订n1就不用担心这个了,二是Nexus One整体配置比Hero高了一大截,价格上多了1K,性价比来说还是选Nexus One,看Desire的价格就知道了。虽然n1好像也爆出了很多问题,俺们本着对Google品牌的信赖和Linus大神的推介,狠狠心,咬咬牙,下手了=w=
能省则省,参照N1 DIY购买攻略,一步一步完成下单过程。
Google Checkout记录
- Feb 27 You placed an order with Google Phone Webstore on Feb 27
- Feb 28 Google Phone Webstore charged your VISA for $529.00. “GOOGLE *Nexus One” will appear on your billing statement.
- Feb 28 Google Phone Webstore has added new tracking data to your order.
- Google Phone Webstore shipped your order.
Fedex 追踪

OneNow 追踪
- New waybill No.:顺丰 – *********
- 2010/3/6 8:48:50 Departing from Portland warehouse
- 2010/3/9 11:57:50 Arrive Beijing, Customs clearance
- 2010/3/9 16:12:09 Out for delivery
估计他们没有小盒子了,给我弄的这个盒子比较大,算体积重量是3kg,比别人的1.5kg多了1.5kg,结果多花了20刀的运费。用的是招行young卡,总共花费人民币(529+51.74)*汇率*(1+1.5%),差不多4000多一点。就是这样还是比代购要便宜的。
今天早上九点多拿到手,刚刚充电完毕,哈哈。下面奉送开箱照数枚~






Posted by pipitu on 2010/02/28
Number of View: 386
开学了,又回到了教育网,访问国外网站的问题依然头疼。下面介绍几种在Linux下轻松访问国外网的方法。
-
最广为使用的就是搜狗浏览器的全网加速功能了,当然,在Linux下必须要使用wine运行搜狗浏览器。然后设置代理服务器为127.0.0.1:8081就可以使用搜狗浏览器的教育网代理来访问国外网站了。
该方法的优点是支持https加密连接,缺点是速度慢,天生不兼容于Linux环境,容易死机等等。
-
ipv6 + google cache
教育网默认是开通了ipv6的,Linux下ipv6配置见 Linux IPV6 HowTo。使用http://ipv6.google.com访问google,搜索结果的页面可以直接从网页快照中读取,在搜索一些问题的答案时十分方便。
-
ipv6 gateway — sixxs.org
配置好ipv6后即可直接访问sixxs.net/gateway,找到How to use IPV6 gateway,在此处

输入要访问的网址即可。需要注意的是该方法并不支持https。
-
Opera Turbo
Opera10.10及以后版本开始提供Opera Turbo功能。 无论是教育网还是联通电信,Opera Turbo 都通过服务器压缩提速,加快网络体验。由于国内有Opera Turbo服务器,因此开启Turbo之后可以直接访问国外网站。开启方法是点击左下方的Opera Turbo图标,设置Turbo状态为On。

由于对图片进行压缩,因此在加快浏览速度的同时图片分辨率会变小,此时右击图片,选择Reload Image in Full Quality即可浏览原始图片了。
此方法由于采用Turbo技术压缩数据,访问速度非常快,但遗憾的是也不支持https。
Posted by pipitu on 2010/02/20
Number of View: 514
这篇post的主要由来是某次算法作业误用Python做了无用功,性能完全达不到要求,后来换用Java才搞定。作业是一个经典的算法问题:求最近点对,要求的输入数量级达到百万。Java做出来的结果大约是5秒左右,Python的话就完全废了,原因是其中涉及到庞大的list的new操作。
Python list VS Java array
首先做一个简单的实验,分别计算用Python和Java新建一个list的时间。
Python代码:
li = []
for i in range(size):
li.append(0)
Java代码:
int[] li = new int[size];
结果对比如下:
| size | Python(ms) | Java(ms) |
| 10 | 0.012 | 0.002 |
| 100 | 0.045 | 0.002 |
| 1000 | 0.347 | 0.005 |
| 10000 | 4.011 | 0.034 |
| 100000 | 34.541 | 0.304 |
| 1000000 | 353.420 | 3.749 |
二者的时间复杂度都是O(n),但在常数上相差两个数量级。究其原因,
The time needed to append an item to the list is “amortized constant”; whenever the list needs to allocate more memory, it allocates room for a few items more than it actually needs, to avoid having to reallocate on each call (this assumes that the memory allocator is fast; for huge lists, the allocation overhead may push the behaviour towards O(n*n)).
也就是说,Python中list的append操作仅当空间不够时才另分配一块新的空间,根据平摊分析(Amortized Analysis)原理,创建一个长度为n的list的时间为c*n(c为平摊常数)。而Java的数组的new操作是一次分配一整快空间,这就不难解释为何两者的性能差异如此之大了。
For loop vs List comprehension
实际上,Python提供了另一种更快地创建list的方法:List Comprehension。List comprehensions run a bit faster than equivalent for-loops (unless you’re just going to throw away the result).
li = [ 0 for i in range(size) ]
| size | append(ms) | list comprehension(ms) |
| 10 | 0.012 | 0.009 |
| 100 | 0.045 | 0.026 |
| 1000 | 0.347 | 0.214 |
| 10000 | 4.011 | 2.228 |
| 100000 | 34.541 | 21.701 |
| 1000000 | 353.420 | 221.127 |
Python list vs Java Vector
Python的list与Java的Vector有些类似,再做一个对比:
Vector list = new Vector();
for(int i=0;i<size;i++)
list.add(i)
| size | Python list(ms) | Java Vector(ms) |
| 10 | 0.012 | 0.741 |
| 100 | 0.045 | 0.778 |
| 1000 | 0.347 | 1.1108 |
| 10000 | 4.011 | 3.6601 |
| 100000 | 34.541 | 21.008 |
| 1000000 | 353.420 | 81.820 |
在默认构造函数中,Vector的初始存储能力是10个元素,如果新元素加入时存储能力不足,则以后存储能力每次加倍。每次扩展存储能力时,所有现有的元素都要复制到新的存储空间之中。add操作有可能做了额外的优化,因为时间复杂度曲线并非纯线性的。
总之,在注重性能并需要多次创建较大的list的应用中,Python并不适用。
注:实验环境:
软件:Archlinux(Kernel2.6.32)+Python2.6.4
硬件:CPU 2Ghz*2,RAM 2GB
Refrence:
1. An Introduction to Python Lists
2. PythonSpeed/PerformanceTips