3
Posted on 下午10:00:00 by Fan Zhang and filed under

前言

之前用过多台黑莓,一直都是用最便宜的机型,这次的 9000 也是要淘汰的机型了。不过我是初次详细接触 5.0 的系统。

RIM 感觉要倒闭了,但是我对黑莓有想当的好感,希望能多坚持坚持。以前我对西门子的手机也有好感,可能是和我第一个手机是西门子的有关。西门子的手机业务后来卖给了明基,明基一年后宣布放弃。

不过黑莓就是黑莓,我觉得如果单论短信和电话功能,我最喜欢黑莓,全键盘真是太棒了。但是,黑莓的软件不够丰富,系统也不是为了娱乐应用而开发的,所以在 iOS 和 Android 的打压下,似乎情况不太妙。

硬件和内存

9000 板载了一个 1G 的 TF 卡,真是神奇的设计思路。也可以再插一张。

RAM 大概 32M 左右,用 MemoryBooster 查看的应该就是这个。我的重启后在 13M 左右,有的时候也会用光。

ROM 大概 128M 左右,其中至少 70M 用来安装内核,用 Option - Memory 查看的 Application Memory 剩余大概是这个,刚安装完 ROM 剩余了 40M 左右(稍微精简了下)。因为 9000
的内存真的很小,所以需要小心翼翼地安装软件。

另外 Option - Security Options - Advanced Security Options - Memory Cleaning 应该是为了安全性擦除信息的,不是为了释放内存。

至于 200W 的摄像头,我基本不用...624MHz 的处理器也马马虎虎。

OS

5.0 OS 的中文字体感觉太好了,这是驱使我更换掉 8820 的主要原因。输入法感觉还成,就是没有快捷选字了,用轨迹球也不慢倒是。

长按黑莓键可以进入后台程序列表,这个设计比之前只能用 Alt+返回 切换程序方便多了。

短信的界面变了,变成会话模式了,习惯后感觉还不错。就是不能直接 R 回复不太习惯。通话记录的显示方式也变了,不过看起来也挺好的。

主屏幕界面的 R 本来是闹钟,取消了,但是在 Clock 的界面里面 R 可以设置闹钟。

Bug

一年多前我入手了这台 9000,当时最大的问题是铃声 bug,大概是设置铃声的时候会出现铃声和振动都失效的情况。目前 ROM 升级后修复。

重启大量掉电的问题,似乎是 5.0 OS 普遍的问题,目前还没解决。听说 4.6 OS 正常。我现在重启的时候都是插着电源。

断网问题,这个是黑莓系统普通存在的问题,网上的讨论非常多。现在有"黑莓断续膏"的软件,可以手动修复。

软件

安装软件不要太多, Application Memory 保持 10M 以上的剩余,给短信和通话记录留下地方。不然应该会出现自动删除短信的情况。

Google 放弃了 BlackBerry 上的 Gmail,但是软件还能从别的地方下到 2.0.7 版本的使用。

本文无评论墙内镜像:BlackBerry 9000

1
Posted on 下午11:00:00 by Fan Zhang and filed under , ,
因为泰国洪水,买不了硬盘,只好随便买些电子产品。

欧姆龙 HEM-7201 血压计 379

给妈妈买的,这款血压计外观比较漂亮,至于功能什么的,我觉得都差不多。所谓的礼品装就是附带了一个计步器。

Link:http://www.360buy.com/product/311292.html

SanDisk CZ33 8GB U盘 59

冲动消费的产物(其实下面每一个都是)。小巧是优势,写入速度不要指望了,大约 3.5M/s 。它作为车载或者 OTG 应用的配件倒是不错,因为插入后就很小了。

Link:http://www.360buy.com/product/526928.html

昂达 VX580T 8G MP4播放器 白色 379

给妹妹买的,以前都是台电最便宜的,但是她说总死机。其实这玩意本来就容易死机倒是,台电我觉得已经是低端中好的了。不过既然指名点姓不要台电,那就买个昂达的吧。

这款 MP4 的优势在于 800x480 的分辨率,触屏,非智能系统应该比较稳定。我简单试用了一下,触摸屏的手感当然不能要求太高,但是基本的视频播放功能还是可以用的,比较流畅。(我也没有进行极限测试,随便用了下。)

Link:http://www.360buy.com/product/418572.html

iPad2 蓝牙键盘+皮套 125

淘宝的山寨货,键盘手感一般,整体设计还不错,各个功能键齐全,和 iPad 很搭。

Link:http://detail.tmall.com/item.htm?id=13053523639

iPazzPort 迷你蓝牙键盘 KP-810-10BTT 175

压力大,所以乱买东西了。这款键盘功能齐全,有触摸板,有 iPad 的 Home 键,不过似乎没有虚拟键盘弹出的键。

使用起来触摸板有点碍事,比较好的操作方式是左手在下、右手在上得斜握。

Link:http://item.taobao.com/item.htm?id=9493852825
1
Posted on 下午9:22:00 by Fan Zhang and filed under

  今天我新买的笔记本发现一个问题,插着网线开机可以连上网络,但是如果开机后才插上网线,就连接不上。我一开始以为是没有检测到网络自动把网卡关闭了,但是后来发现不是这样,因为有的时候多插拔几次也能连上。

  在网卡中设置电源管理或者禁用网卡重新启用,也能连上,但是重启后故障依旧。

  换了网线也是如此。

  我怀疑可能是路由器问题,于是换了网线,不接路由器,就正常了。

0
Posted on 上午11:24:00 by Fan Zhang and filed under

本文在 github 中的镜像:Python 的 and-or 技巧

布尔上下文

在 Python 中,可以在布尔上下文中使用几乎所有类型的表达式。通常的数据类型的“空值”都为 False。

  • None 为假值
  • 数值 00.0 等为假值
  • 空串 "" 为假值
  • 空列表 [] 为假值
  • 空元组 () 为假值
  • ...

逻辑演算

在 Python 中,and 和 or 按照下面的规则执行布尔逻辑演算:

对于 and,从左到右运算:

  • 如果所有表达式都为真,则 and 返回最后一个表达式。
  • 否则,and 返回第一个假值。

对于 or,从左到右运算:

  • 如果有一个为真,则 or 立刻返回该值。
  • 否则,or 返回最后一个表达式。
  • or 找到第一个真值后会忽略计算剩余的表达式。

注意到:返回的并不是布尔值,而是其中某个参与比较的表达式值。

and-or 技巧

在 C 中,表达式 bool ? a : b 表示当 bool 为真时结果为 a,其它值则为 b。在 Python 中可以使用 and-or 实现类似的功能。

 
((test and [x]) or [y])[0]

在这个 Python 表达式中,如果 test 为真,则返回 x,否则返回 y。

这里使用列表将 x 和 y 括起来是为了防止 x 为空值的情况,比如想要实现:“如果 test 为真,则取 0,如果 test 为假,则取 1”,如果不将 0 括起来则为:

 
(test and 0) or 1

不论 test 是真是假,都只会返回 1。

0
Posted on 下午11:40:00 by Fan Zhang and filed under

行结束符

一个文本文件是由行组成的,本文所说的就是行与行之间用来表示新行(newline)的间隔,一般称作断行符(link break)或者行结束符(end-of-line, EOF)。

由于历史的原因,不同的操作系统用来表示换行的字符不同,这就给跨操作系统编辑文件带来不便。

操作系统中的差异

使用下面的 Unicode 标准定义的符号:

  • LF: Line Feed, U+000A, '\n'
  • CR: Carriage Return, U+000D, '\r'

不同的操作系统使用的行结束符:

  • Windows 使用 CR+LF,也就是 '\r\n'
  • Linux/Unix 系列使用 LF,也就是 '\n'

特别的,目前 Mac OS X 是基于 Unix 的,所以行结束符也是 LF。只有 v9 之前 Mac OS 才是用 '\r'。

历史

为什么对“另起一行”的处理有这样的差异,是因为早期的电传打字机(teletype)从左至右打完一行的时候,需要给打印机头重新移回左边界的时间,在一个字符的时间内,不足以让打印机头移动到正确的位置,这样会影响下一个字符的打印。所以就需要在一行结束的时候额外传递一个 CR 字符令装置 carriage 归位。

进一步阅读:Wikipedia: Newline

对不同换行符的处理

一般操作系统的运行库决定了文本文件的换行格式,在一个平台上使用另一种换行符的文件通常会有问题。大部分编辑器会自动识别换行符类型,并带有换行转换的功能。

比如某些 FTP 软件在进行文本传输的时候会对换行符进行转换(这样修改了原文件)。

Python 使用 "Universal Newline" 处理这个问题。在以文本方式 open() 的时候,会对换行符进行识别并一致处理成 '\n',在文件写入的时候,也只要 write('\n') 即可,Python 会根据操作系统自动处理。有关文档:

本文 github 中的镜像

0
Posted on 下午3:46:00 by Fan Zhang and filed under

可以访问本文镜像

为什么要引入本地存储

这个问题也是在做 Web App 的时候自然注意到,HTTP 的传输是无状态的(stateless),所以为了给用户个性化体验就必须在客户端存储一些数据。比如,网站的登录过程,事实上就是利用 Cookie 在客户端保存了用户的验证信息,在用户每一次发送 Request 的时候都会在 Header 部分加入 cookie 的信息,从而让网站服务器得知用户已经登录,并提供用户所需的信息。

Cookie 的缺点

Cookie 已经实现了在客户端储存资料,不过它有几点不足:

  • Cookie 的设计限制了大小为 4KB;
  • Cookie 每次 HTTP Request 都要传输一遍,并且通常不加密传输(可以使用 SSL 加密);
  • Cookie 通常存储了用户的浏览行为和隐私相关的信息,有可能造成安全隐患。

快速入门

如今知名的浏览器都已经支持了 HTML5 Storage,不过对国内来说 IE 的版本才是最大的问题(IE8 以上才支持)。并且包括 iPhone 和 Android 在内的手机浏览器也支持。

以下文章可以快速了解 HTML5 Storage 的特性和用法:

localStorage 和 sessionStorage

localStorage 可以认为不主动清除则一直存在。

sessionStorage 则是和会话相关,刷新页面不会清除,但是关闭浏览器则会清除。所以浏览器崩溃后,通常 sessionStorage 还可以存在。

更多参考

1
Posted on 下午3:28:00 by Fan Zhang and filed under , ,

可以访问:本文镜像

为什么要用 VimWiki

个人 Wiki 个性化的程度比较严重,所以千挑万选总也找不到好用的。Vim 虽然学习成本很高,但是我想既然已经到使用个人 Wiki 了,应该不会在乎这点投资。

Wiki 形式的文档好处在于易于写作,纯文本的管理,即使是源文件也有很强的可读性,可以方便地导出规范的 HTML 文件。

Wiki 的格式也很多,比如 Markdown,reStructuredText 等等,这都被称作 Lightweight markup language,在这个维基词条上也有些简单的对比。Travis 的主页有文章对这些做了总结(文章提到,选择太多,很难总结完善)。我个人依照我的喜好选择了 Google Code Wiki,其实我也觉得,如果不是写书,其实哪种 Wiki 形式都一样,重要的是开始写,选一个喜欢的语法和实现,并且保证用的人比较多的就行。

说了半天还没有介绍 VimWiki,它是一个 Vim 的开源插件,采用类似 Google Code Wiki 的语法,所有的文档组织就是利用 Wiki 格式的纯文本。结合 Dropbox 可以轻松实现同步。我觉得 Wiki 就不用版本控制了,简单在文中标注下必要的更新说明就是。

Quick Start

为了快速上手,下面各种操作不多做解释,官方文档能提供所有的解答,也有中文文档。另外,这个软件的更新较快,网上的一些设置介绍可能过时,需要及时查阅官方的文档。

下载安装

方法一:下载 .vba 是 Vimball 的安装文件,打开后使用 :so % 即可。

方法二:也可以直接使用 zip 文件,解压复制到相应路径。

注意:Vim 中涉及到的路径最好不要含有比较特殊的字符(比如空格,括号等),以免出现各种错误。

配置 vimrc

安装官方文档的要求,需要确保 vimrc 文件中有如下的设置:

 
    set nocompatible
    filetype plugin on
    syntax on

另外就是要设置个人 Wiki 库的存放地址和 HTML 模板:

 
let g:vimwiki_list = [{'path': 'D:\Link\Wiki\wiki\',
      \ 'path_html': 'D:\Link\Wiki\html\',
      \ 'template_path': 'D:\Link\Wiki\templates\',
      \ 'template_default': 'def_template',
      \ 'template_ext': '.html',
      \ 'css_name': '',
      \ 'auto_export': 1,
      \ 'diary_link_count': 5}]

注意到有关模板我使用的是 Dev (2010-12-27) 版本,所以和当前的 1.1.1 的设置有所不同。 因为 VimWiki 可以定义 css,所以有一个 css_name 的设置,应该是保存在文档中定义的 css(不确定)。

使用

这部分请看VimWiki 介绍中第二节。

在 Vim 中,键入 <leader>ww 三个键即可进入第一个 Wiki 库的首页(index.wiki)。其中 <leader> 一般是 \ 字符。

在首页中就可以随意输入了,使用类似 NewPage 之类的驼峰词可以创建新页面。如果需要创建中文词条可以使用: [[中文]] 或者 [[文件名|中文描述]] 的方法。

<tab> 和 <shift> + <tab> 键可以在词条之间跳转,<enter> 可以进入词条进行编辑,<backspace> 可以返回。注意到,通常情况下 VimWiki 会自动存盘。

使用 :Vimwiki2HTML 和 :VimwikiAll2HLML 可以导出 HTML 格式的网页。

Tips

  • 可配置多个 Wiki 库。访问第二个 Wiki 库可以键入 2<leader>ww,或者通过 <leader>ws 进行选择。
  • Wiki 中的 CamelCase 会自动转换为 link,按 <enter> 即可进入编辑,按 <backspace> 回到前一页。
     
    " 不需要驼峰英文成为维基词条
    let g:vimwiki_camel_case = 0
    
  • 可以设置在存档后自动更新 HTML 文件,在 vimwiki_list 中的 auto_export 属性。
  • 可以建立 to-do list,只不过默认的快捷键 <C-space> 和中文输入法切换的热键冲突,可以重新映射。比如下面映射成 <leader>tt,
     
    :map <leader>tt <Plug>VimwikiToggleListItem
    
  • 方便的日记功能,使用 <leader>w<leader>w 就可以开启一个以今天日期命名的 diay page,还可以结合 Calendar 插件,以日历形式显示日记。

发布

通过 HTML 模板,可以把 VimWiki 当做 Blog 和个人 Wiki 的发布工具使用,而且文档编辑简单,内容和样式分离,非常省心。 目前一个选择是使用 githubPages feature。本来 github 是代码托管服务,但是允许作者发布静态的网页作为主页。

对此不再赘述,可以参考: