IOS7越狱已出支持7全版本,支持所有的iPhone,iPod touch,iPad,和iPad mini

更新
目前看很多人越狱没成功,建议先别急着越狱。
网传 太极助手 跟 快用 有关 又跟 360 有关。

这版本坑爹的跟国内某助手合作,越狱过程中会强装某助手。
看图标和界面和IOS6越狱是一样的,故越狱方法也差不多(本人不喜欢越狱所以没试)。已有人成功了。

win版本 下载地址
win SHA1: 8a4e1fcd7b1fc0084366c182cbcf850dfc45d59f

国内速度快的百度网盘地址 http://pan.baidu.com/s/1gdiMnmz
官方地址
https://evad3rs.box.com/s/hzapsnk73mbrs770z50y
https://mega.co.nz/#!Al0lEAzA!CE ... MYAKFy8qu0K3Z6mjShA

使用须知
越狱过程会占用你约5分钟的时间!
一台系统至少在Windows XP以上的PC,或系统至少在OS X(10.6)、Linux(x86/86 64)之上的MAC
如果你用的是Windows电脑,请确保iTunes已正确安装
一台IOS 7.0-7.0.4版本之间的iPhone,iPad,或iPod
一条将设备连接至电脑的苹果数据线

重要须知,必读
在使用evasi0n越狱前,使用iTunes或iCloud备份你的设备数据,即使越狱过程中出现异常情况,你仍可以恢复你的数据。
请在使用evasi0n越狱前,请在设备“设置-通用-密码锁定”中,暂时关闭你的设备密码锁功能,因为它可能会在越狱过程中导致一些问题。
使用evasi0n的过程中,请避免运行一切和苹果设备及iTunes相关的任务,何不先离开电脑,去短暂的休息一下呢?
如果越狱过程在某个流程卡住了,可以进行以下操作让程序继续运行:重启evasi0n程序,并重启设备(如果有必要的话,可以同时按住Home键和电源键,直到设备停止运行)。
如果你遇到在OS X 10.8系统下“无法打开”的错误情况,单击(或点右键)evasi0n程序快捷菜单中的“打开”选项, 在接下来的对话框中,同样也选择“打开”。

go语言的:=运算符

[cpp]
// xxxxxxxxxxxxxxxxxxxxxx project main.go
package main

import (
"fmt"
)

func test() (int, int) {
return 1, 2
}

func main() {

i, j := test()
i, j := test()
fmt.Println("%d %d", i, j)
}
[/cpp]
报错 :15: no new variables on left side of :=
[cpp]
package main

import (
"fmt"
)

func test() (int, int) {
return 1, 2
}

func main() {

i, j := test()
k, j := test()
fmt.Println("%d %d %d", i, j, k)
}
[/cpp]
不报错
貌似说明用了:=后 至少得有一个变量是未知类型的,否则提示没有新的变量在:=的左侧。
//////////////////////////////////////////////////////////////////////////////////////////////////////////
[cpp]
// xxxxxxxxxxxxxxxxxxxxxx project main.go
package main

import (
"fmt"
)

type st struct {
d int
}

func test() (int, int) {
return 1, 2
}

func main() {

var x st
i, j := test()
x.d, j := test()

fmt.Println("%d %d %d", i, j, x.d)
}
[/cpp]
报错 :20: non-name x.d on left side of :=
[cpp]
// xxxxxxxxxxxxxxxxxxxxxx project main.go
package main

import (
"fmt"
)

type st struct {
d int
}

func test() (int, int) {
return 1, 2
}

func main() {

var x st
i, j := test()
x.d, k := test()

fmt.Println("%d %d %d %d", i, j, x.d, k)
}
[/cpp]
报错 :20: non-name x.d on left side of :=
这说明 := 不能给结构体成员赋值?
[cpp]
package main

import (
"fmt"
)

type st struct {
d int
}

func test() (int, int) {
return 1, 2
}

func main() {

var x st
i, j := test()
x.d, j = test()

fmt.Println("%d %d %d", i, j, x.d)
}
[/cpp]
不报错

官方解释 http://golang.org/ref/spec#Short_variable_declarations
Short variable declarations

A short variable declaration uses the syntax:
ShortVarDecl = IdentifierList ":=" ExpressionList .

It is a shorthand for a regular variable declaration with initializer expressions but no types:
"var" IdentifierList = ExpressionList .

i, j := 0, 10
f := func() int { return 7 }
ch := make(chan int)
r, w := os.Pipe(fd) // os.Pipe() returns two values
_, y, _ := coord(p) // coord() returns three values; only interested in y coordinate

Unlike regular variable declarations, a short variable declaration may redeclare variables provided they were originally declared earlier in the same block with the same type, and at least one of the non-blank variables is new. As a consequence, redeclaration can only appear in a multi-variable short declaration. Redeclaration does not introduce a new variable; it just assigns a new value to the original.
field1, offset := nextField(str, 0)
field2, offset := nextField(str, offset) // redeclares offset
a, a := 1, 2 // illegal: double declaration of a or no new variable if a was declared elsewhere

Short variable declarations may appear only inside functions. In some contexts such as the initializers for "if", "for", or "switch" statements, they can be used to declare local temporary variables.

第三四个例子网上也有人讨论 https://groups.google.com/forum/#!msg/golang-nuts/ItYSNKqt_kA/OLGaOoDtCHgJ
感谢 http://v2ex.com/t/87324 里的 wwwjfy

unzip.cpp的一个问题

unzip.cpp是一个老外写的代码,用于解压zip文件的一个cpp文件,最近遇到zip内部文件路径大于MAX_PATH长度时会导致程序奔溃,单步调试发现在 ZRESULT TUnzip::Get(int index,ZIPENTRY *ze) 函数里 使用了strcpy 导致奔溃。
[cpp]

unsigned char *extra = new unsigned char[extralen];
if (lufread(extra,1,(uInt)extralen,uf->file)!=extralen)
{delete[] extra; return ZR_READ;}
ze->index=uf->num_file;
TCHAR tfn[MAX_PATH];
strcpy(tfn,fn);

[/cpp]
fn长度大于tfn长度时,strcpy 把真个tfn给填满溢出了,把上面的变量 unsigned char *extra 的值给冲掉了,导致 extra 指向了不可访问的区域。
修复方法是 用更长的值代替MAX_PATH,替换strcpy为strncpy,这样至少不会奔溃。。。

安卓设备格式化sdcard

问题现象:安卓设备上的sdcard目录ls显示没文件,写不进数据,df命令查看sdcard空间被占用完,可明明没文件空间就莫名其妙少了,想到办法就是格式化sdcard了。

1 查看挂载信息 mount

可以看见sdcard的设备路径是 /dev/block/mmcblk0p1

2 卸载 umount /mnt/sdcard

3 把busybox复制到U盘,插上U盘,调用busybox里的格式化命令。
cd /mnt/udisk
./busybox mkfs.vfat /dev/block/mmcblk0p1 这个有点慢

4 格式化后 如果不知道挂在参数 可以关机然后再开机就默认挂载了。

参考:http://windlazio.blog.163.com/blog/static/144218449201206115027123/