Nexus One入手一月小记——硬件篇

Number of View: 401

N1入手快一个月了,对入手过程感兴趣的童鞋请看这里。想必大家都比较关心使用情况,我就分以下几个方面说一说吧~

  1. 触摸屏
    在入手之前最关心的就是触摸屏问题了,估计大家对N1屏幕的负面新闻已经能倒背如流了= =
    入手之后第一件事情就是给它贴膜,对于几种贴膜的好坏机锋网论坛上有讨论,综合个方面因素选择了BENKS的AR膜,前面和后边镜头都贴上了,当然不贴估计也没啥问题,这个看个人习惯了。
    从灵敏度上来说,N1的屏幕真的是perfect,基本上轻轻一touch就ok了,而且屏又大,touch起来真的不是一般的爽,多点触摸也很正常,没有网上传的这样那样的问题。对于传说中的屏幕漂移(就是touch到屏幕边上会反飘到另一边),我只在一种情况下经历过,就是躺床上玩机的时候。说到卧着玩N1,我真的是不推荐,理由有如下几个:1. N1真的是太大了,平时站着单手玩都嫌费劲,不要谈躺着了,但是躺着双手玩,必定有一只胳膊会很酸,这个实在是没有办法> < 2. 躺着的情况下屏幕灵敏度会降低很多,经常出现touch半天没反应的状况。经过我多次把玩发现,N1的屏幕不仅对接触到面上touch的力度敏感,它对整机的握力也很敏感,躺着玩的时候,必定在机身边缘会多着力,在这种情况下触屏的功能就明显受到影响,屏幕漂移只是其中表现的比较明显的一个问题而已,重力感应也经常不起作用。当然如果你直接趴着玩是不会有什么问题的= =
    那么站着玩N1是否屏幕就百分百没有失常的时候了呢?答案是否定的,在某些时候会出现touch感应下漂的状况,比如你按的明明是上边一个icon,它给感应成下边那个了,这时候只要锁屏再解锁就ok了。但是我想强调一下这种情况只是偶然发生,并不影响正常使用。
  2. 轨迹球
    平时基本不用轨迹球,但是看电子书翻页的时候用它还是很方便的。结果有几天用多了,然后向下的那个方向不灵光了,囧。然后某天由于解锁bootloader和取Root权限的时候长按了几下,结果发现轨迹球又回复正常了,大囧。所以大家如果发现不灵光了可以试试长按这个办法….
  3. 耳机
    这个耳机+线控真的很鸡肋,不过好在是通用的3.5mm插孔,所以大家可以随便配自己喜欢的耳机就OK啦。不过我真的不明白为什么线控没有调节音量功能(听说G3的也没有),还有就是话筒为什么是分离开来的,那个话筒那么小,也太容易丢失了,所以我直接搁盒子里没有用过。

总体来说对于硬件方面还算满意,尤其是屏幕尺寸,因为偶的手比较大,所以就想要一个屏大的,厚度也很薄,虽说颜色不太适合MM用,不过就当作别样的帅气好啦,而且白色也容易脏的说。就是虚拟键盘不太习惯,我一般打字的时候还是喜欢横屏,因为横屏的键比竖屏的时候要大一些,不容易按错,其实还是因为手大=.=

今天先就写硬件篇吧,敬请期待软件篇^^

  • Share/Bookmark

Wifi Setup under Archlinux

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]
  • Share/Bookmark

Nexus One 飘洋过海入手记

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 追踪
fedex tracking

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多一点。就是这样还是比代购要便宜的。
今天早上九点多拿到手,刚刚充电完毕,哈哈。下面奉送开箱照数枚~
图像0220图像0219
图像0215图像0216
图像0217图像0218

  • Share/Bookmark

Linux下教育网访问国外网站

Number of View: 386

开学了,又回到了教育网,访问国外网站的问题依然头疼。下面介绍几种在Linux下轻松访问国外网的方法。

  1. 搜狗浏览器

    最广为使用的就是搜狗浏览器的全网加速功能了,当然,在Linux下必须要使用wine运行搜狗浏览器。然后设置代理服务器为127.0.0.1:8081就可以使用搜狗浏览器的教育网代理来访问国外网站了。
    该方法的优点是支持https加密连接,缺点是速度慢,天生不兼容于Linux环境,容易死机等等。

  2. ipv6 + google cache

    教育网默认是开通了ipv6的,Linux下ipv6配置见 Linux IPV6 HowTo。使用http://ipv6.google.com访问google,搜索结果的页面可以直接从网页快照中读取,在搜索一些问题的答案时十分方便。

  3. ipv6 gateway — sixxs.org

    配置好ipv6后即可直接访问sixxs.net/gateway,找到How to use IPV6 gateway,在此处
    sixxs ipv6 gateway
    输入要访问的网址即可。需要注意的是该方法并不支持https。

  4. Opera Turbo

    Opera10.10及以后版本开始提供Opera Turbo功能。 无论是教育网还是联通电信,Opera Turbo 都通过服务器压缩提速,加快网络体验。由于国内有Opera Turbo服务器,因此开启Turbo之后可以直接访问国外网站。开启方法是点击左下方的Opera Turbo图标,设置Turbo状态为On。
    opera turbo
    由于对图片进行压缩,因此在加快浏览速度的同时图片分辨率会变小,此时右击图片,选择Reload Image in Full Quality即可浏览原始图片了。
    此方法由于采用Turbo技术压缩数据,访问速度非常快,但遗憾的是也不支持https。

  • Share/Bookmark

List performance: Python vs Java

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];

结果对比如下:

sizePython(ms)Java(ms)
100.0120.002
1000.0450.002
10000.3470.005
100004.0110.034
10000034.5410.304
1000000353.4203.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) ]
sizeappend(ms)list comprehension(ms)
100.0120.009
1000.0450.026
10000.3470.214
100004.0112.228
10000034.54121.701
1000000353.420221.127

Python list vs Java Vector

Python的list与Java的Vector有些类似,再做一个对比:

Vector list = new Vector();
for(int i=0;i<size;i++)
    list.add(i)

sizePython list(ms)Java Vector(ms)
100.0120.741
1000.0450.778
10000.3471.1108
100004.0113.6601
10000034.54121.008
1000000353.42081.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

  • Share/Bookmark
Page 2 of 3123