Recently in shared Category

前些日子从朋友那里拿了一个iPhone 3G。拿过来时候基本就是个砖头,推测是一个已经刷到3.1.3的有锁版,后来还拿去e世界的电玩巴士请帮解锁,未成功。回来查了一些资料及刷机的方法,自己也刷了几次。这次经历算是给我补了一把iPhone的课。

iPhone除了1代、3G、3GS的区别之外还有有锁版和无锁版的区别。有锁版一般是美国的和日本的,俗称美版和日版,应该也还有欧版的。国内的无锁版一般都是指港版。有锁和无锁的区别是有没有绑定了电信运营商,美版绑定的运营商是AT&T,而日版绑定的是SoftBank Mobile。正常来说绑定了运营商的iPhone只能使用绑定运营商的sim卡,然而非指定运营商的用户也想使用iPhone,于是就出现了卡贴,把一个非指定运营商的sim卡伪装成一个指定运营商的sim卡。后来有人通过软解的方式把iPhone的这一限制给破了,这个过程也就称之为解锁,但是软解的过程并不是一切顺利的,苹果也是通过更新软件的方式防止人们对iPhone进行解锁。最近的iPhone OS 3.1.3的升级就造成了iPhone 3G和3GS无法解锁的情况(我相信这只是暂时的)。目前iPhone 3G有锁版要是刷到了3.1.3并且baseband升到了05.12.01,那么得到的是一个增强版的iPod Touch。iPhone 3G升到3.1.3之后可以使用PwnageTool定制一个固件,选择不要升baseband,这样起码让iPhone 3G可以当个iPod使用。也可以刷回到3.1.2(这个过程会遇到1015的错误),再使用Blackra1n来解。

iPhone用户经常会提到的一个事情就是JailBreak,称之为越狱。越狱后就可以安装许多Apple Store之外的应用程序了。

iPhone用户经常会做同步操作,其实在同步的时候iTunes还会做备份的操作,如果你换了iPhone,那就可以使用"从备份中恢复"这一招把设置、联系人、Safari的书签等给恢复回来。但是要注意以前iPhone里的mp3、视频和买的应用程序就只能从iTunes中同步才能回来了。

在iPhone的刷机过程中要特别注意恢复模式和DFU模式的区别,最大的区别是DFU模式下屏幕是全黑的。进入DFU模式的方法是如下:

  1. 关机
  2. 同时按下Power+Home键不放,保持10秒
  3. 松开Power键,Home继续不放,保持10秒
  4. 松开Home键,进入DFU模式
这个操作我的建议是看着PwnageTool中的指导来做,非常的方便。

就iPhone刷机升级这个事来看,没事别折腾。如果要折腾有几点忠告:

  1. 无论何时都不要刷官方的新版,除非你是无锁版的,并且不想越狱。
  2. 对自己的iPhone要完全了解。是否有锁?什么型号?baseband是多少?。
  3. 熟读解锁软件的各个注意事项,一定要读,看看自己的手机是不是在可破的范围之内等等。

Automator Proxy Toggle Shell

| 2 Comments | No TrackBacks
人都是被逼出来的,为翻墙方便,用Automator写了一个Service,就执行一段shell,还设置了一个快捷键。
#!/bin/sh
STAT=`sudo networksetup -getwebproxy Ethernet | head -1 | cut -d: -f 2|sed 's/ //g'`
if [ "$STAT" == "No" ];then
	networksetup -setwebproxystate Ethernet on;
    /Users/guixing/bin/growlnotify -m "Proxy On";
else
	networksetup -setwebproxystate Ethernet off;
    /Users/guixing/bin/growlnotify -m "Proxy Off";
fi
growlnotify是Growl的一个命令行工具。

那个洞

| No Comments | No TrackBacks
在Practice of System and Network Administration中有一章是Climb out of the Hole。这个洞就是:

一个家伙掉到了一个深到他不可能出来的洞里。他听到有人来了,然后他引起了那个人的注意。那个路人听完了他的境况,想了一会儿,也跳进了那个洞。

"你为什么要这样做?现在我们都被困在这儿了。"

"呃〜至少你现在不再孤独了。"那个路人说。

最近写的一个东东要用python25和python-ldap,但是使用的那台主机是python23、ldap2.2.x和python-ldap2.0.1。安装了一个python25,python-ldap是2.3.8,编译失败,openldap2.2太老了,python-ldap2.3.8不向下兼容了。

那我就用python-ldap2.0.x,这个版本已经不提供下载了,从sf.net的cvs上拉了一份2.0.11的版本,这次倒是编过去了。用的时候出问题了

*** glibc detected *** free(): invalid pointer: 0xb7f60728 ***
Aborted

查来查去有三个文章有说这种情况

主要原因是PyMem_DEL的调用已经不被推荐了,应该用PyObject_Del。所以要对两个C文件做一些改动。

sed -i.orig 's/PyMem_DEL/PyObject_Del/g' Modules/LDAPObject.c 
sed -i.orig 's/PyMem_DEL/PyObject_Del/g' Modules/ldapcontrol.c 

然后再build,install就OK了

终端下的Spotlight

| No Comments | No TrackBacks

在终端下也可以使用spotlight----mdfind

找所有metadata包含something的东东

mdfind something

在~/Downloads里找something

mdfind -onlyin ~/Downloads something

找~/Pictures下的所有图片

mdfind -onlyin ~/Pictures "kMDItemKind == *image"

还有mdls查看文件metadata的工具

Mac OS X里菜单栏图标的顺序可以按着苹果键拖放,拖出菜单栏就删除了。

DNS的动态更新是在RFC 2136里引入的,BIND8以后就支持了这一特性。用起来还是挺不错的。

Notify机制是在RFC 1996中提出来的,也是在BIND8以后支持的,微软的DNS服务器也是支持这一特性的。

Notify的工作原理是这样的:发现一个master zone的序列号发生改变之后,向该zone的所有slave发送一个变更通知。而确定slave的方法就是查NS记录,然后去掉SOA记录中的master。

上面这个机制在一个有load balancer的环境里就有问题了,NS记录里只记录的是load balancer的一个虚拟IP,master的notify就不可能完整的送达所有的slave。BIND有一个also-notify的参数,以解决这类问题。

Jackos最近整了一个专门记录地球变化的blog--暴风地球,域名是刚刚的(www.think-earth.org)。

django m2m自包含

| No Comments | No TrackBacks
设计一个group,可以包含user也可以包含group。user和group都可以被多个group包含。
class Group(models.Model):
    users = models.ManyToManyField(User)
    groups = models.ManyToManyField('self')
update: ManyToMany对象有一个symmetrical的参数,当为True时的意思是对象间有互相拥有的关系,是双向的,反之为False时就是单向的。

按Command(⌘)和L是移动焦点到地址栏,然后再按Command(⌘)和分号(; semicolon)就是修改当前地址的各个部分了,多按几次修改的部分就不同

About this Archive

This page is an archive of recent entries in the shared category.

others is the previous category.

Find recent content on the main index or look in the archives to find all content.