搞定梦幻手机 - Palm Pre
Palm Pre 是继 iPhone 之后唯一一个让我心动的手机,Android 虽然也让我感到很兴奋,但是因为它缺乏中心设计,也没有什么特别的创意,对它始终缺乏购买的欲望。
但是 Palm Pre 基于 Linux,全新的卡片式操作系统,实体键盘,手势操作,对云(主要是 Google)的全面支持,以及对苹果 iTunes 的支持,非常方便而且跨平台的 SDK,让我实在不能不趁着现在低价(2000+)赶紧入手一台。
大概就是这样了,办下天翼手机卡,找人去电信机房查号,刷 1.0.3 激活手机并写入 MEID/ESN,升级 1.1 写入 AKEY/HOME SID/NID 搞定童话,写入 AN/AAA 搞定 EVDO。
现在有 qinray 的 1.1 ROM,刷机写号更方便了,而且不用担心激活的问题了,但是写入 MEID/ESN 这步最好还是在 1.0.x 里做,因为 1.1 里的地址有所变化,反正我是写入后无效,重启后会自动复原。
Treo8 是个很好的 Palm 论坛,如果有兴趣可以去看一下:http://www.treo8.com/bbs/forum-33-1.html
现在还缺好用的中文输入法,无法发中文短信,但这都不是问题,因为"LInux 无限可能"。
root@castle: /var/home/root # uname -a Linux castle 2.6.24-palm-joplin-3430 #1 175.1.23 armv71 unknown
Opera 10 Beta 1 running on Fedora 10
刚刚试了一下 Opera 10 beta 1,深深被这个界面漂亮,性能出色的浏览器吸引了,以后它就是我的主力浏览器了。
虽然之前也用过早期版本的 Opera,但是一直觉得 Opera 的界面太过于复杂,菜单太长,而且 Javascript 解释有问题,所以一直只是装完了试试就删除了。
今天装版本 10 beta 1,菜单被极度精简化了,设置选项也简单很多,简单设置一下,字体也变得和 Firefox 一样优秀,只是虽然通过了 ACID 3 测试,但是 Javascript 在 Flickr 的的上传页面依然除了些不兼容的现象 - 选择文件对话框无法打开。
不过依然是个出色的浏览器。
关于字体的设置,其实很简单,编译一下 /usr/share/opera/defaults/font.ini,禁用掉 X Core Fonts 支持:
;engine:xft=blacklist
engine:x11=blacklist
并且把对应语言的中文字体改掉,我这里是文泉驿的微米黑:
; family:mincho|gothic=japanese good try-first
; family:kochi*=japanese good try-first
family:WenQuanYi Micro Hei|WenQuanYi Micro Hei Mono*=chinese-s try-first
; family:baekmuk*=korean good try-first
OK, enjoy your opera,我要去折腾我的 ibus 光标跟随了,希望能有 sci-qtimm 之类的 ibus 模块。
最后差点忘了要说一句:RnVja0dGV++8jOiuqeS9oOW7uuaIkOWFqOS4lueVjOacgOWkp+eahOWxgOWfn+e9kQo=
图片需要翻墙。
简单办法搞定 Linux 上蓝牙和 USB 线 GPRS 拨号上网。
移动 TD-SCDMA 测试用的话费积攒到了 4000 多元了,女朋友消化得实在太慢,怎么办呢。
刚好趁着外出,把测试的 3G USIM 卡插上 Nokia E71(因为附送的熊猫山寨机太差了。。。-_-#),拿来给笔记本 GPRS 无线上网。
首先安装好 pppd 和 wvdial,把手机的 USB 连接模式改成 PC Suite,这样才能把手机当猫用,如果使用 Connect PC to Web 的话,屏幕上会出现 Nokia Connect to Internet 的盘符。
然后在 /etc/wvdial.conf 里写下如下代码,不用对 cmnet 接入点做特别设置,直接就会连接好了。
Modem = /dev/ttyACM0
Baud = 3600000
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Init3 =
Modem Type = USB Modem
Area Code =
Phone = *99#
Username = ppp
Password = ppp
Ask Password = 0
Dial Command = ATDT
Stupid Mode = 1
Compuserve = 0
Force Address =
Idle Seconds = 0
DialMessage1 =
DialMessage2 =
ISDN = 0
Auto DNS = 1
New PPPD = yes
[Dialer nokia-bluetooth]
Modem = /dev/rfcomm0
Baud = 3600000
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Init3 =
Area Code =
Phone = *99#
Username = ppp
Password = ppp
Ask Password = 0
Dial Command = ATDT
Stupid Mode = 1
Compuserve = 0
Force Address =
Idle Seconds = 0
DialMessage1 =
DialMessage2 =
ISDN = 0
Auto DNS = 1
New PPPD = yes
写好后用 root 运行:
应该就可以上网了。
如果要用蓝牙的话,需要先安装 bluez,建立 /dev/rfcomm0 设备,我是在 Fedora 10 上测试的,很奇怪改好 /etc/bluetooth/rfcomm.conf 后,重启蓝牙服务无效,所以还是手工绑定那个设备吧。
用下面命令绑定设别:
如果不知道蓝牙的 MAC 地址的话,可以用下面命令进行搜索。
如果不知道 Internet Dialer Channel 的话,可以用下面命令查找:
然后再执行上面的 rfcomm 命令,然后用下面命令拨号。
方法应该说比较简单了,Enjoy your wireless life 吧 :-)
Python 技巧:@classmethod 修饰符
通常情况下,如果我们要使用一个类的方法,那我们只能将一个类实体化成一个对象,进而调用对象使用方法。
比如:
def __init__:
...
def print_hello(self):
print "Hello"
要用 print_hello() 就得:
hlo.print_hello()
Hello
如果用了 @classmethod 就简单了。
日版 D2C Key Wii 改版美版完美教程(持续更新)
前两天在逛 Wii 论坛上看到了目前市场上有很多韩版 Wii 改美版后进行销售的帖子,遂看到了居然有改区一说,于是乎想在自己的日版(已经加了 D2C 直读)的情况下尝试一下改区,没想到因为之前已经升级到 3.4J,降级后改版反而效果更好(Photo、Wii Shop Channel 都可以直接使用),后又去兔子那里改了下 D2C 直读的跳线,使原本只用 Starfall 的全区支持也更加完善。
现放出方法。
概况是:
- 通过网络升级到 3.4J
- 通过 这篇教程 进行降级,降级后进系统查看就应该已经是 3.2J,不过这个教程耗时稍长,但是确实完美。
- 使用 AnyRegion Changer 改区,并且安装 3.2U 系统。
- 找个 JS 帮你焊掉 D2C 芯片的 JP2 跳线(JP1 是美版,JP1 + JP2 是日版),或者先用 Starfall 顶着。
- 删掉 News 和 Weather 频道,并且用美版的替换(我还没做)。
- 用 Starfaill 开启频道全区支持并去掉光盘自动更新检查。
如果不出问题,改区之后原本系统里的 WII Shop Channel 已经是 49(美国),而且可以正常使用。
而我后来为了删帐号又改成了 1(日本),进去后也无恙,结果又改成 49 后进入报了 205958 错,改成 1 后,尝试删除帐号,输入序列号后又出现了 206651 错误,现在依然在尝试解决。所以在改区后如果 Wii Shop Channel 可以使用的话,建议不用删除帐号。
待续(晚上贴图,上传改版软件,贴具体办法)。。。
Django 的 Form 真的很好用。
Django 的 Form 表单真的很好用,完全把以往繁琐的表单操作完全抽象出来,成了一个独立的组件。
该系统的最大特色就是与模板无关,表单元素完全在一个文件里就可以定义好,以后也可以随时扩充,修改,很方便。
为了使用富文本编辑器我还使用了 InPlaceEditor,之所以用它是因为它基于强大的 TinyMCE 编辑器,同时提供了很好的 Ajax 支持,为了使用它我还使用了 django-tinymce,这个东西理论上应该找不到编译好的包,可以用 easy_install 安装(在 Fedora 10 里的 python-setuptools-devel 包里),总之就是怎么方便怎么来啦。 :-)
OK, Let's get start it.
在 app 目录里建立一个 forms 的目录,touch 一个 __init__.py,然后在其中写下 newapp.py 文件,如下内容:
from django import forms
from tinymce.widgets import TinyMCE
TYPE_CHOICES = [
[1, 'Desktop Computer'],
[2, 'Laptop'],
]
class NewProduct(forms.Form):
name = forms.CharField()
type_id = forms.ChoiceField(choices=TYPE_CHOICES)
description = forms.CharField(widget=TinyMCE(mce_attrs={})
添加 View 里某个方法(比如 index)填上:
def index(request):
from testproject.app.forms.newapp import NewProduct
new_form = NewProduct()
return render_to_response('testform.html', { 'new_form' : new_form })
然后改模板,类似如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.01//EN"> <html lang="en"> <head> <title>New Product</title> </head> <body> <h1>New Product</h1> <form action="." method="POST"> {{ new_form.as_table }} <p><input type="submit" value="Submit"></p> </form> </body> </html>
够好用吧?一个 form 定义好以后直接使用 as_table 方法就可以转换成表格。
如果需要更多自定义参数,也可以像访问数据库一样直接调用 form class 里的属性,如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.01//EN"> <html lang="en"> <head> <title>New Product</title> </head> <body> <h1>New Product</h1> <form action="." method="POST"> {{ new_form.name }} {{ new_form.type_id }} {{ new_form.description }} <p><input type="submit" value="Submit"></p> </form> </body> </html>
在 Django 的官方教程里,设计一个 form class 的 ChoiceField 使用的是 Tuple,而我这里经过试验,List 也是可以的,而之所以使用 List,是因为这样可以通过数据库,向 ChoiceField 里添加数据,如:
from django import forms
from tinymce.widgets import TinyMCE
from testproject.app.models import ProductTypes
types = ProductTypes.objects.all()
TYPE_CHOICES = []
for type in types:
TYPE_CHOICES.append([type.id, type.name])
class NewProduct(forms.Form):
name = forms.CharField()
type_id = forms.ChoiceField(choices=TYPE_CHOICES)
description = forms.CharField(widget=TinyMCE(mce_attrs={})
嘿嘿,基本到此,还是比较简单的,附带一个我的 TinyMCE 的设置作为结尾好了。
from django import forms
from tinymce.widgets import TinyMCE
from testproject.app.models import ProductTypes
types = ProductTypes.objects.all()
TYPE_CHOICES = []
for type in types:
TYPE_CHOICES.append([type.id, type.name])
class NewProduct(forms.Form):
name = forms.CharField()
type_id = forms.ChoiceField(choices=TYPE_CHOICES)
description = forms.CharField(widget=TinyMCE(mce_attrs={'theme' : "advanced",
'skin' : "o2k7",
'skin_variant' : "silver",
'elements' : 'elm3',
'mode' : 'textareas',
'theme_advanced_toolbar_location' : "top",
'theme_advanced_toolbar_align' : "left",
'theme_advanced_resizing' : 'true',
'plugins' : "safari,pagebreak,style,layer,save,iespell,xhtmlxtras",
'theme_advanced_buttons1' : "fontselect,fontsizeselect,|,cut,copy,paste,pastetext,|,bullist,numlist,|,undo,redo,|,link,unlink",
'theme_advanced_buttons2' : "",
'theme_advanced_buttons3' : "",
})
不知道 Rails 或者其它 Web Framework 是否也有比较优秀的特色功能,希望也能有人能够介绍一下。
一不小心,看到 Mac OS X 10.5.6 里的新东东。
今天打开 System Preference 发现 OS X 10.5.6 里多了个新的 Trackpad 选项,还有视频图解如何使用 Multi-Touch,我火星了?!
===========================================
附记:刚才在一班上看到可以在经典的铝外壳本上(最后一代非 Unibody)可以开启四指 Multi-Touch 的 kext 内核模块,
上传到了这里:http://www.box.net/shared/kp8jsregu2
经过测试,可用。
苹果净干些非能力不可为而不为之的事情。 -_-#
JavaScript 加密器
给软件写个彩蛋,但是又不想随便被别人看见,于是乎给脚本加下密就成了必须的了,不是为了 Property software,而是来个 Easter egg 来取乐 :-)
找来找去,找到一个 JavaScript Compiler 还不错,经过测试可以在 Firefox 和 Safari 上正常使用(IE 就不考虑了,手头也没机器测试),普通的 Encrypt 工具可能可以支持 Safari,但是对 Firefox 的支持可真的是非常一般。
地址在:http://www.virtualpromote.com/tools/javascript-encrypt/
比如经典的 Hello World:
被加密后就成了:
看不懂了吧? ;-)
不过使用 JavaScript Compiler 有限制,生成的代码必须以单独的文件存放,而且文件还得写上 JavaScript 的标记段,因为其实它的原理是将加密的内容,解密后直接插入 DOM 树里形成的,如果不这样做,将会在浏览器窗口中直接看到解密后的 JavaScript 代码,从这种意义上说,它就不仅仅是 JavaScript 的 Compiler 了,HTML、CSS 一类也可以用它加密。
而且为了让加密后的代码能够更加容易地调用,我们最好还能够写成 Function 的模式。
这里是可供调用的完整的代码:
function helloworld() {
alert("Hello World");
}
</script>
加密后的代码就成了:
把它单独存成一个文件(比如 foo.js),然后引用它:
以后,只要在程序中调用 helloworld 函数就可以显示 Hello World 了。 :-)
用 Synergy 共享两台电脑的键盘鼠标
情况:
因为公司另有一台性能很强劲的 Linux 工作站,自己有台 mac 笔记本,在两台电脑间来回切换让人很郁闷,所以就想让一套键盘鼠标在两个系统上都能使用上,把两台电脑当成一台电脑用。
之前用过 Synergy,所以又重新打起了它的主意,唯一和以前不同的是,现在我懒了很多,都不愿意用命令行来做这种配置工作了。。。 -_-#
安装:
Mac 从 http://sourceforge.net/projects/synergykm 上下载 SynergyKM,并且安装,会在 System Preferences 里增加 SynergyKM 一项。
Fedora 9 用 yum install quicksynergy synergy 来安装 Synergy 程序,然后会在 GNOME 菜单下的 internet 项下增加 QuickSynergy 一项。
配置:
我这里是把 Fedora 工作站当成服务器,共享它的键盘鼠标,而我的笔记本放在工作站的左边,所以在 QuickSynergy 的 Share 标签页左边写上 Macbook Pro 的主机名,然后点击 Execute。
如图:
然后在 Mac OS X 的 System Preferences 里启动 SynergyKM,选择 Connect to shared keyboard and mouse,然后在 Client Configuration 里写上服务器的主机名或者 IP 地址,点上 Apply Now,然后再回到 General 标签页里,点击 Turn Synergy On,如果下面的 Status 显示了 Connected 则连接成功。
如图:
好了,现在可以试试把台式机的鼠标指针“跨过”屏幕左边,直接挪到左边的 Mac 上进行操作了。
不仅如此,Synergy 还能在两台电脑间共享剪贴板,真正是把两台电脑当成一台用。
不过好像有点 Bug,在 Fedora 机器上开着一个菜单的时候,鼠标是被局限在 Fedora 的机器上的。
在博客上加上 Fedora 10 发布计时器
Fedora Project 提供了 Fedora 10 的发布倒计时器,只要在自己的博客边栏里加上下面的 HTML 代码,效果看我的博客旁边。
-
<script id="fedora-banner" type="text/javascript"
-
src="http://fedoraproject.org/static/js/release-counter-ext.js?
-
lang=en_US"></script>





