<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux kernel, Android, Golang &#38; Recsys</title>
	<atom:link href="http://wifihack.net/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://wifihack.net/blog</link>
	<description>simple is powerful</description>
	<lastBuildDate>Tue, 17 Jan 2012 08:00:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>招商证券股票day数据格式分析</title>
		<link>http://wifihack.net/blog/2012/01/newone-stock-data-day-format-analytics/</link>
		<comments>http://wifihack.net/blog/2012/01/newone-stock-data-day-format-analytics/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 15:33:15 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[golang]]></category>
		<category><![CDATA[Tech.Notes]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[newone]]></category>
		<category><![CDATA[stock]]></category>
		<category><![CDATA[招商证券]]></category>
		<category><![CDATA[股票]]></category>
		<category><![CDATA[通达信]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=689</guid>
		<description><![CDATA[今天没事想把招商证券保存的股票数据提取出来, 后来发现招商证券的软件是采用是通达信做的, 这样直接通过查找通达信的数据格式就搞定了. 主要参考: http://alantop.5166.info/gpdatasoft/gpformat/gpformat.htm#_Toc224993378 通达信日线 每条数据文件占32个字节。每四个字节代表一个变量。如下所示： &#160; struct stockDay { uint32_t date; //日期 uint32_t open; //开盘价，单位：分 uint32_t high; //最高价，单位：分 uint32_t low; //最低价，单位：分 uint32_t close; //收盘价，单位：分 float amount; //交易金额，单位：元 uint32_t vol; //成交量，单位：股 int32_t reserv; //保留，有时用来保存上一交易日收盘价 }; 我分别使用C和Go写了个简单的提取程序. C代码: #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #include &#60;stdint.h&#62; #include &#60;string.h&#62; struct stockDay { uint32_t date; //日期 uint32_t open; //开盘价，单位：分 uint32_t [...]]]></description>
			<content:encoded><![CDATA[<p>今天没事想把招商证券保存的股票数据提取出来, 后来发现招商证券的软件是采用是通达信做的, 这样直接通过查找通达信的数据格式就搞定了.</p>
<p>主要参考: <a href="http://alantop.5166.info/gpdatasoft/gpformat/gpformat.htm#_Toc224993378">http://alantop.5166.info/gpdatasoft/gpformat/gpformat.htm#_Toc224993378</a></p>
<h3>通达信日线</h3>
<p>每条数据文件占32个字节。每四个字节代表一个变量。如下所示：</p>
<p>&nbsp;</p>
<blockquote><p>struct stockDay<br />
{<br />
uint32_t date; //日期<br />
uint32_t open; //开盘价，单位：分<br />
uint32_t high; //最高价，单位：分<br />
uint32_t low; //最低价，单位：分<br />
uint32_t close; //收盘价，单位：分<br />
float amount; //交易金额，单位：元<br />
uint32_t vol; //成交量，单位：股<br />
int32_t reserv; //保留，有时用来保存上一交易日收盘价<br />
};</p></blockquote>
<p>我分别使用C和Go写了个简单的提取程序.</p>
<p>C代码:</p>
<div>
<blockquote><p>#include &lt;stdio.h&gt;<br />
#include &lt;stdlib.h&gt;<br />
#include &lt;stdint.h&gt;<br />
#include &lt;string.h&gt;<br />
struct stockDay<br />
{<br />
uint32_t date; //日期<br />
uint32_t open; //开盘价，单位：分<br />
uint32_t high; //最高价，单位：分<br />
uint32_t low; //最低价，单位：分<br />
uint32_t close; //收盘价，单位：分<br />
float amount; //交易金额，单位：元<br />
uint32_t vol; //成交量，单位：股<br />
int32_t reserv; //保留，有时用来保存上一交易日收盘价<br />
};</p>
<p>void printDay(struct stockDay *day)<br />
{<br />
printf(&#8220;日期: %d, &#8220;, day-&gt;date);<br />
printf(&#8220;开盘价: %.2f, 最高价: %.2f, 最低价: %.2f, 收盘价: %.2f, &#8220;, day-&gt;open/100.0, day-&gt;high/100.0, day-&gt;low/100.0, day-&gt;close/100.0);<br />
printf(&#8220;交易金额: %f, 交易量: %d\n&#8221;, day-&gt;amount, day-&gt;vol);<br />
}</p>
<p>int main()<br />
{<br />
FILE *p;<br />
int i = 0;<br />
char *file = &#8220;./sh600529.day&#8221;;<br />
struct stockDay *day = malloc(sizeof(struct stockDay));</p>
<p>p = fopen(file, &#8220;r&#8221;);<br />
if (p) {<br />
fseek(p, 0, SEEK_END);<br />
uint64_t iFileLen = ftell(p)/(sizeof(struct stockDay));<br />
rewind(p);<br />
for (i = 0; i &lt; iFileLen; i++) {<br />
memset(day, 0, sizeof(struct stockDay));<br />
fread(day, sizeof(struct stockDay), 1, p);<br />
printDay(day);<br />
}</p>
<p>} else {<br />
printf(&#8220;Read File: %s Error!\n&#8221;, file);<br />
}</p>
<p>free(day);<br />
fclose(p);<br />
return 0;<br />
}</p></blockquote>
</div>
<div></div>
<div>Go的代码:</div>
<div></div>
<div>
<div id="LC1">
<blockquote><p>package main</p>
<p>import (<br />
&#8220;bytes&#8221;<br />
&#8220;encoding/binary&#8221;<br />
&#8220;fmt&#8221;<br />
&#8220;io/ioutil&#8221;<br />
&#8220;unsafe&#8221;<br />
)</p>
<p>type StockDay struct {<br />
date uint32 //日期<br />
open uint32 //开盘价，单位：分<br />
high uint32 //最高价，单位：分<br />
low uint32 //最低价，单位：分<br />
cls uint32 //收盘价，单位：分<br />
amount float32 //交易金额，单位：元<br />
vol uint32 //成交量，单位：股<br />
reserv int32 //保留，有时用来保存上一交易日收盘价<br />
}</p>
<p>func main() {<br />
contents, _ := ioutil.ReadFile(&#8220;./sh887001.day&#8221;)<br />
//println(string(contents));<br />
var day StockDay<br />
size := int(unsafe.Sizeof(day))<br />
fmt.Printf(&#8220;sizeof: %d, days: %d\n&#8221;, size, len(contents)/size)<br />
for i := 0; i &lt; len(contents); i += 32 {<br />
buf := bytes.NewBuffer(contents[i : i+4])<br />
err := binary.Read(buf, binary.LittleEndian, &amp;day.date)<br />
if err != nil {<br />
fmt.Println(&#8220;binary.Read failed: &#8220;, err)<br />
}<br />
buf = bytes.NewBuffer(contents[i+4 : i+8])<br />
err = binary.Read(buf, binary.LittleEndian, &amp;day.open)</p>
<p>buf = bytes.NewBuffer(contents[i+8 : i+12])<br />
err = binary.Read(buf, binary.LittleEndian, &amp;day.high)</p>
<p>buf = bytes.NewBuffer(contents[i+12 : i+16])<br />
err = binary.Read(buf, binary.LittleEndian, &amp;day.low)</p>
<p>buf = bytes.NewBuffer(contents[i+16 : i+20])<br />
err = binary.Read(buf, binary.LittleEndian, &amp;day.cls)</p>
<p>buf = bytes.NewBuffer(contents[i+20 : i+24])<br />
err = binary.Read(buf, binary.LittleEndian, &amp;day.amount)</p>
<p>buf = bytes.NewBuffer(contents[i+24 : i+28])<br />
err = binary.Read(buf, binary.LittleEndian, &amp;day.vol)</p>
<p>fmt.Printf(&#8220;%v\n&#8221;, day)<br />
}<br />
}</p></blockquote>
<p>&nbsp;</p>
</div>
</div>
<p>代码也贴在Github上: <a href="https://gist.github.com/1578661">https://gist.github.com/1578661</a></p>
<p>ps: 目前5分钟线的月份和日期对不上, 不知道哪位高手搞过?</p>
<p>&#8211;EOF&#8211;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2012/01/newone-stock-data-day-format-analytics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>golang Byte数组转换为浮点数</title>
		<link>http://wifihack.net/blog/2012/01/golang-byte-array-convert-to-float64/</link>
		<comments>http://wifihack.net/blog/2012/01/golang-byte-array-convert-to-float64/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 02:53:00 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[golang]]></category>
		<category><![CDATA[Tech.Notes]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[bigendian]]></category>
		<category><![CDATA[binary]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[godoc]]></category>
		<category><![CDATA[littleendian]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=685</guid>
		<description><![CDATA[今天没事想用go从文件中提取些二进制数据，并把数据转换为相关的数据类型， 就找到一个把数组转换为float类型的数据。主要用到了encoding/binary包里面的read函数， 它可以根据你数据的大小端得到相关的数据类型。 主要代码如下: package main import ( &#8220;bytes&#8221; &#8220;encoding/binary&#8221; &#8220;fmt&#8221; ) func main() { var pi float64 b := []byte{0&#215;18, 0x2d, 0&#215;44, 0&#215;54, 0xfb, 0&#215;21, 0&#215;09, 0&#215;40} buf := bytes.NewBuffer(b) err := binary.Read(buf, binary.LittleEndian, &#38;pi) if err != nil { fmt.Println(&#8220;binary.Read failed:&#8221;, err) } fmt.Println(pi) } 下面是go里面uint32在大小端的分别实现: bvcom@bvcomtv:~$ godoc -src encoding/binary Uint32 // A [...]]]></description>
			<content:encoded><![CDATA[<p>今天没事想用go从文件中提取些二进制数据，并把数据转换为相关的数据类型， 就找到一个把数组转换为float类型的数据。主要用到了encoding/binary包里面的read函数， 它可以根据你数据的大小端得到相关的数据类型。</p>
<p>主要代码如下:</p>
<blockquote><p>package main</p>
<p>import (<br />
&#8220;bytes&#8221;<br />
&#8220;encoding/binary&#8221;<br />
&#8220;fmt&#8221;<br />
)</p>
<p>func main() {<br />
var pi float64<br />
b := []byte{0&#215;18, 0x2d, 0&#215;44, 0&#215;54, 0xfb, 0&#215;21, 0&#215;09, 0&#215;40}<br />
buf := bytes.NewBuffer(b)<br />
err := binary.Read(buf, binary.LittleEndian, &amp;pi)<br />
if err != nil {<br />
fmt.Println(&#8220;binary.Read failed:&#8221;, err)<br />
}<br />
fmt.Println(pi)<br />
}</p></blockquote>
<p>下面是go里面uint32在大小端的分别实现:</p>
<blockquote><p>bvcom@bvcomtv:~$ godoc -src encoding/binary Uint32<br />
// A ByteOrder specifies how to convert byte sequences into<br />
// 16-, 32-, or 64-bit unsigned integers.<br />
type ByteOrder interface {<br />
Uint32([]byte) uint32<br />
// contains filtered or unexported methods<br />
}</p>
<p>func (littleEndian) Uint32(b []byte) uint32 {<br />
return uint32(b[0]) | uint32(b[1])&lt;&lt;8 | uint32(b[2])&lt;&lt;16 | uint32(b[3])&lt;&lt;24<br />
}</p>
<p>func (bigEndian) Uint32(b []byte) uint32 {<br />
return uint32(b[3]) | uint32(b[2])&lt;&lt;8 | uint32(b[1])&lt;&lt;16 | uint32(b[0])&lt;&lt;24<br />
}</p></blockquote>
<p>参考:<br />
Convert 8 byte array to int64? Options:  http://groups.google.com/group/golang-nuts/browse_thread/thread/7f541090fd7d1bd4</p>
<p>Reading byte array as another datatype Options: http://groups.google.com/group/golang-nuts/browse_thread/thread/fc00115bf5b35757</p>
<p>http://golang.org/src/pkg/encoding/binary/binary.go?s=3435:3501#L117</p>
<p>&#8211;EOF&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2012/01/golang-byte-array-convert-to-float64/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go 1 will be</title>
		<link>http://wifihack.net/blog/2012/01/go-1-will-be/</link>
		<comments>http://wifihack.net/blog/2012/01/go-1-will-be/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 02:37:17 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[golang]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[go1]]></category>
		<category><![CDATA[golang-china]]></category>
		<category><![CDATA[golangchina]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=675</guid>
		<description><![CDATA[在golang-nuts邮件列表里面, 有人问了有关Go 1的情况, golang的主要开发者Brad Fitzpatrick说: Go 1 相关的库和包, 都已经完成, 节后只修复相关的Bug, 修复完后就会发布Go 1. 如果你想使用可以使用最新Weekly版本2011-12-22, 这个基本上就是Go1 版本. 原文如下: All the major Go 1 language &#38; library changes are now in. Bug fixing &#38; polish begins after the holidays, then some release candidates will start going out. The latest weekly, 2011-12-22 is basically what Go 1 will be, [...]]]></description>
			<content:encoded><![CDATA[<p>在golang-nuts邮件列表里面, 有人问了有关Go 1的情况, golang的主要开发者Brad Fitzpatrick说: Go 1 相关的库和包, 都已经完成, 节后只修复相关的Bug, 修复完后就会发布Go 1.<br />
如果你想使用可以使用最新Weekly版本2011-12-22, 这个基本上就是Go1 版本.</p>
<p>原文如下:<br />
All the major Go 1 language &amp; library changes are now in. Bug fixing &amp;<br />
polish begins after the holidays, then some release candidates will start<br />
going out. The latest weekly, 2011-12-22 is basically what Go 1 will be,<br />
if you want to start playing.</p>
<p>参考: <a href="http://groups.google.com/group/golang-nuts/browse_thread/thread/b768e33abf4b868b">http://groups.google.com/group/golang-n &#8230; 3abf4b868b</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2012/01/go-1-will-be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reaver在10小时之内破解WPA密码</title>
		<link>http://wifihack.net/blog/2011/12/cracking-wpa-in-10-hours-or-less/</link>
		<comments>http://wifihack.net/blog/2011/12/cracking-wpa-in-10-hours-or-less/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 05:07:04 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[attacker]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[reaver]]></category>
		<category><![CDATA[wifi]]></category>
		<category><![CDATA[wpa]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=670</guid>
		<description><![CDATA[从Hacker News看到一个WPA破解的工具Reaver,  号称能在10小时之内破解WPA,  晚上回去试试看. The WiFi Protected Setup protocol is vulnerable to a brute force attack that allows an attacker to recover an access point’s WPS pin, and subsequently the WPA/WPA2 passphrase, in just a matter of hours. This is something that I’ve been testing and using for a while now, but Stefan over at.braindump beat [...]]]></description>
			<content:encoded><![CDATA[<p>从Hacker News看到一个WPA破解的工具<a href="http://www.tacnetsol.com/products/">Reaver</a>,  号称能在10小时之内破解WPA,  晚上回去试试看.</p>
<p>The WiFi Protected Setup protocol is vulnerable to a brute force attack that allows an attacker to recover an access point’s WPS pin, and subsequently the WPA/WPA2 passphrase, in just a matter of hours.</p>
<p>This is something that I’ve been testing and using for a while now, but Stefan over at<a href="http://sviehb.wordpress.com/2011/12/27/wi-fi-protected-setup-pin-brute-force-vulnerability/">.braindump</a> beat me to publication. Such is life. <img src="http://www.devttys0.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" /></p>
<p>Stefan’s code isn’t quite ready for release yet, so I’ve open-sourced <a href="http://www.tacnetsol.com/products/">Reaver</a>, my WPS attack tool. Reaver is stable and has been tested against a variety of access points and WPS implementations.</p>
<p>Usage is simple; just specify the target BSSID and the monitor mode interface to use:</p>
<p>&nbsp;</p>
<pre><code># reaver -i mon0 -b 00:01:02:03:04:05</code></pre>
<p>&nbsp;</p>
<p>For those interested, there is also a commercial version available with more features and speed improvements.</p>
<p>原文参考: <a href="http://www.devttys0.com/2011/12/cracking-wpa-in-10-hours-or-less/">http://www.devttys0.com/2011/12/cracking-wpa-in-10-hours-or-less/</a></p>
<p>&#8211;EOF&#8211;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/12/cracking-wpa-in-10-hours-or-less/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>buildroot编译出错信息</title>
		<link>http://wifihack.net/blog/2011/12/buildroot-compile-erro/</link>
		<comments>http://wifihack.net/blog/2011/12/buildroot-compile-erro/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 11:03:46 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Tech.Notes]]></category>
		<category><![CDATA[A10]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[buildroot]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[error]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=651</guid>
		<description><![CDATA[1. PATH环境变量有当前目录 错误信息: border@b0rder:/work/tss/src/lichee/buildroot$ ./build.sh -p sun4i -m buildroot You seem to have the current working directory in your PATH environment variable. This doesn&#8217;t work. make: *** [dependencies] 错误 1 解决方法, border@b0rder:/work/tss/src/lichee/buildroot$ echo $PATH .:/home/border/bin/jdk1.6.0_26/bin:.:.:/home/border/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/arm-2010.09/bin:/home/border/go/bin://home/border/bin:/usr/local/arm/arm-2009q3/bin:/home/border/bin:/work/vc1000/src/android-vc1000/out/host/linux-x86/bin:/home/border/bin:/home/border/work/depot_tools:/home/border/work/app/google_appengine:/work/vc1000/src/android-vc1000/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:/home/border/work/android/eclipse-x64:/home/border/work/ai/python/:/home/border/work/ai/python/tools 上面的.表示当前目录信息， 去掉. 后才能正常编译。 border@b0rder:/work/tss/src/lichee/buildroot$ export PATH=/home/border/bin/jdk1.6.0_26/bin:/home/border/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/arm-2010.09/bin:/home/border/go/bin://home/border/bin:/usr/local/arm/arm-2009q3/bin:/home/border/bin:/work/vc1000/src/android-vc1000/out/host/linux-x86/bin:/home/border/bin:/home/border/work/depot_tools:/home/border/work/app/google_appengine:/work/vc1000/src/android-vc1000/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:/home/border/work/android/eclipse-x64:/home/border/work/ai/python/:/home/border/work/ai/python/tools border@b0rder:/work/tss/src/lichee/buildroot$ echo $PATH /home/border/bin/jdk1.6.0_26/bin:/home/border/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/arm-2010.09/bin:/home/border/go/bin://home/border/bin:/usr/local/arm/arm-2009q3/bin:/home/border/bin:/work/vc1000/src/android-vc1000/out/host/linux-x86/bin:/home/border/bin:/home/border/work/depot_tools:/home/border/work/app/google_appengine:/work/vc1000/src/android-vc1000/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:/home/border/work/android/eclipse-x64:/home/border/work/ai/python/:/home/border/work/ai/python/tools 2. makeinfo 错误信息: border@b0rder:/mnt/ubuntu32/work/tss/src/lichee$ ./build.sh -p sun4i -m buildroot You [...]]]></description>
			<content:encoded><![CDATA[<p>1. PATH环境变量有当前目录<br />
错误信息:</p>
<blockquote><p>border@b0rder:/work/tss/src/lichee/buildroot$ ./build.sh -p sun4i -m buildroot</p>
<p>You seem to have the current working directory in your PATH environment variable. This doesn&#8217;t work.</p>
<p>make: *** [dependencies] 错误 1</p></blockquote>
<p>解决方法,</p>
<blockquote><p>border@b0rder:/work/tss/src/lichee/buildroot$ echo $PATH .:/home/border/bin/jdk1.6.0_26/bin:.:.:/home/border/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/arm-2010.09/bin:/home/border/go/bin://home/border/bin:/usr/local/arm/arm-2009q3/bin:/home/border/bin:/work/vc1000/src/android-vc1000/out/host/linux-x86/bin:/home/border/bin:/home/border/work/depot_tools:/home/border/work/app/google_appengine:/work/vc1000/src/android-vc1000/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:/home/border/work/android/eclipse-x64:/home/border/work/ai/python/:/home/border/work/ai/python/tools</p></blockquote>
<p>上面的.表示当前目录信息， 去掉. 后才能正常编译。</p>
<blockquote><p>border@b0rder:/work/tss/src/lichee/buildroot$ export PATH=/home/border/bin/jdk1.6.0_26/bin:/home/border/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/arm-2010.09/bin:/home/border/go/bin://home/border/bin:/usr/local/arm/arm-2009q3/bin:/home/border/bin:/work/vc1000/src/android-vc1000/out/host/linux-x86/bin:/home/border/bin:/home/border/work/depot_tools:/home/border/work/app/google_appengine:/work/vc1000/src/android-vc1000/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:/home/border/work/android/eclipse-x64:/home/border/work/ai/python/:/home/border/work/ai/python/tools border@b0rder:/work/tss/src/lichee/buildroot$ echo $PATH /home/border/bin/jdk1.6.0_26/bin:/home/border/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/arm-2010.09/bin:/home/border/go/bin://home/border/bin:/usr/local/arm/arm-2009q3/bin:/home/border/bin:/work/vc1000/src/android-vc1000/out/host/linux-x86/bin:/home/border/bin:/home/border/work/depot_tools:/home/border/work/app/google_appengine:/work/vc1000/src/android-vc1000/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:/home/border/work/android/eclipse-x64:/home/border/work/ai/python/:/home/border/work/ai/python/tools</p></blockquote>
<p>2. makeinfo<br />
错误信息:</p>
<blockquote><p>border@b0rder:/mnt/ubuntu32/work/tss/src/lichee$ ./build.sh -p sun4i -m buildroot</p>
<p>You must install &#8216;makeinfo&#8217; on your build machine makeinfo is usually part of the texinfo package in your distribution</p>
<p>make: *** [dependencies] 错误 1</p></blockquote>
<p>解决方法:</p>
<blockquote><p>sudo apt-get install texinfo</p></blockquote>
<p>&#8211;EOF&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/12/buildroot-compile-erro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android 4.0 (Ice Cream Sandwich) 源码发布了</title>
		<link>http://wifihack.net/blog/2011/11/android-4-0-ice-cream-sandwich-release/</link>
		<comments>http://wifihack.net/blog/2011/11/android-4-0-ice-cream-sandwich-release/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 01:47:15 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[icecreamsandwich]]></category>
		<category><![CDATA[ICS]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=646</guid>
		<description><![CDATA[From: http://groups.google.com/group/android-building/browse_thread/thread/4f85d9242667a85f?pli=1 Hi! We just released a bit of code we thought this group might be interested in. Over at our Android Open-Source Project git servers, the source code for Android version 4.0 (Ice Cream Sandwich) is now available. Here&#8217;s how to get it:Follow the instructions at http://source.android.com/source/downloading.html Check out the &#8216;ics-release&#8217; branch:repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1 [...]]]></description>
			<content:encoded><![CDATA[<p>From: <a href="http://groups.google.com/group/android-building/browse_thread/thread/4f85d9242667a85f?pli=1">http://groups.google.com/group/android-building/browse_thread/thread/4f85d9242667a85f?pli=1</a></p>
<p>Hi! We just released a bit of code we thought this group might be interested in.<br />
Over at our Android Open-Source Project git servers, the source code<br />
for Android version 4.0 (Ice Cream Sandwich) is now available.<br />
Here&#8217;s how to get it:Follow the instructions at<br />
<a href="http://source.android.com/source/downloading.html" rel="nofollow" target="_blank">http://source.android.com/source/downloading.html </a>Check out the<br />
&#8216;ics-release&#8217; branch:repo init -u<br />
<a href="http://www.google.com/url?sa=D&amp;q=https://android.googlesource.com/platform/manifest&amp;usg=AFQjCNHxtjISMYOI0KdhckKjZYtDvxZLiw" rel="nofollow" target="_blank">https://android.googlesource.com/platform/manifest</a> -b android-4.0.1_r1<br />
That&#8217;s it! However since this is a large push, please be aware that it<br />
will take some time to complete. If you sync before it&#8217;s done, you&#8217;ll<br />
get an incomplete copy that you won&#8217;t be able to use, so please wait<br />
for us to give the all-clear before you sync.<br />
This is actually the source code for version 4.0.1 of Android, which<br />
is the specific version that will ship on the Galaxy Nexus, the first<br />
Android 4.0 device. In the source tree, you will find a device build<br />
target named &#8220;full_maguro&#8221; that you can use to build a system image<br />
for Galaxy Nexus. Build configurations for other devices will come<br />
later.<br />
Unfortunately we still don&#8217;t have our Gerrit code review servers back<br />
online. That remains our top priority though, and we hope to have them<br />
back soon.<br />
This release includes the full history of the Android source code<br />
tree, which naturally includes all the source code for the Honeycomb<br />
releases. However, since Honeycomb was a little incomplete, we want<br />
everyone to focus on Ice Cream Sandwich. So, we haven&#8217;t created any<br />
tags that correspond to the Honeycomb releases (even though the<br />
changes are present in the history.)</p>
<p>JBQ, on behalf of the AOSP team.<br />
&#8211;<br />
Jean-Baptiste M. &#8220;JBQ&#8221; Queru<br />
Software Engineer, Android Open-Source Project, Google.</p>
<p>Questions sent directly to me that have no reason for being private<br />
will likely get ignored or forwarded to a public forum with no further<br />
warning.</p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/11/android-4-0-ice-cream-sandwich-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kernel debug with kgtp on android</title>
		<link>http://wifihack.net/blog/2011/11/kernel-debug-with-kgtp-on-android/</link>
		<comments>http://wifihack.net/blog/2011/11/kernel-debug-with-kgtp-on-android/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 15:31:04 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Tech.Notes]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[gdb]]></category>
		<category><![CDATA[kgtp]]></category>
		<category><![CDATA[tracepoints]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=640</guid>
		<description><![CDATA[KGTP is a realtime and lightweight Linux Kernel GDB debugger and tracer. It makes Linux Kernel supply a GDB remote debug interface. Then GDB in current machine or remote machine can debug and trace Linux through GDB tracepoint without stopping the Linux Kernel. And even if the board doesn’t have GDB on it and doesn’t [...]]]></description>
			<content:encoded><![CDATA[<p>KGTP is a realtime and lightweight Linux Kernel GDB debugger and tracer. It makes Linux Kernel supply a GDB remote debug interface. Then GDB in current machine or remote machine can debug and trace Linux through GDB tracepoint without stopping the Linux Kernel. And even if the board doesn’t have GDB on it and doesn’t have interface for remote debug. It can debug the Linux Kernel using offline debug. Now, it supports X86-32, X86-64, MIPS and ARM.</p>
<p>This article describes how to use kgtp debug linux kernel on android.</p>
<h1>Kernel Building</h1>
<pre> General setup  ---&gt;
     [ * ] Prompt for development and/or incomplete code/drivers
     [ * ] Kprobe
Kernel hacking  ---&gt;
     [ * ] Compile the kernel with debug info
     [ * ] Compile the kernel with frame pointers</pre>
<h1>Building KGTP</h1>
<h2>Config KGTP Makefile</h2>
<pre>KERNELDIR := /work/vc1000/src/kernel-vc1000-2.3
ARCH=arm
CROSS_COMPILE=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-</pre>
<h2>error: ‘GTP_VAR_RDTSC_ID’ undeclared(latest version fixed By: <a href="http://twitter.com/teawater">teawater</a> )</h2>
<pre>  CC [M]  /home/border/work/kernel/kgtp/trunk/gtp.o
/home/border/work/kernel/kgtp/trunk/gtp.c: In function 'gtp_gdbrsp_qtv':
/home/border/work/kernel/kgtp/trunk/gtp.c:6318: error: 'GTP_VAR_RDTSC_ID' undeclared (first use in this function)
/home/border/work/kernel/kgtp/trunk/gtp.c:6318: error: (Each undeclared identifier is reported only once
/home/border/work/kernel/kgtp/trunk/gtp.c:6318: error: for each function it appears in.)
/home/border/work/kernel/kgtp/trunk/gtp.c:6320: error: implicit declaration of function 'rdtscll'</pre>
<p>* solution:</p>
<pre>diff --git a/trunk/gtp.c b/trunk/gtp.c
index 4d0c9a2..75c145e 100644
--- a/trunk/gtp.c
+++ b/trunk/gtp.c
@@ -6315,11 +6315,13 @@ gtp_gdbrsp_qtv(char *pkg)
                if (num == GTP_VAR_CLOCK_ID) {
                        val = (uint64_t)GTP_LOCAL_CLOCK;
                        goto output_value;
+#ifdef CONFIG_X86
                } else if (num == GTP_VAR_RDTSC_ID) {
                        unsigned long long a;
                        rdtscll(a);
                        val = (uint64_t)a;
                        goto output_value;
+#endif
                } else if (num == GTP_VAR_XTIME_SEC_ID
                           || num == GTP_VAR_XTIME_NSEC_ID) {
                        struct timespec time</pre>
<h1>Complie and Install KGTP</h1>
<pre>make
sudo su
adb push gtp.ko /system/vendor/lib
exit</pre>
<h1>KGTP Running On Android</h1>
<pre>#Open the KGTP interface in current machine.
su
cd /system/vendor/lib
insmod gtp.ko
lsmod
nc -l -p 1234 &lt; /sys/kernel/debug/gtp &gt; /sys/kernel/debug/gtp</pre>
<h1>Host PC</h1>
<pre>cd /work/vc1000/src/kernel-vc1000-2.3
make -j8</pre>
<h2>Network connect to gtp</h2>
<pre># symbian use "set gnutarget elf32-littlearm-symbian"
# vxworks use "set gnutarget elf32-littlearm-vxworks"
gdb-release -ex "set gnutarget elf32-littlearm" -ex "file ./vmlinux"

# if you want see the debug info
(gdb) set debug remote 1

# connection your remote device
(gdb) target remote 192.168.2.213:1234</pre>
<h2>USB connect to gtp</h2>
<pre>sudo su
# forward socket(adb forward &lt;local&gt; &lt;remote&gt;)
adb forward tcp:1234 tcp:1234
exit
gdb-release -ex "set gnutarget elf32-littlearm" -ex "file ./vmlinux"
# connection your remote device
(gdb) target remote 127.0.0.1:1234</pre>
<h2>Debugging with gtp</h2>
<pre>(gdb) trace vfs_readdir
Tracepoint 1 at 0xc02289f0: file /build/buildd/linux-2.6.35/fs/readdir.c, line 23.
(gdb) actions
Enter actions for tracepoint 1, one per line.
End with a line saying just "end".
&gt;collect $reg
&gt;end
(gdb) tstart</pre>
<p><strong>Change To Android Device Shell And Run ls Command</strong> * Android Device</p>
<pre>$ ls</pre>
<p><strong>Back To Host PC GDB Shell</strong> * Host PC</p>
<pre>(gdb) shell ls
vmlinux-2.6.35-30-generic
(gdb) tstop
(gdb) tfind
Found trace frame 0, tracepoint 1
#0  vfs_readdir (file=0x0, filler=0x163d8ae3, buf=0x18c0) at /build/buildd/linux-2.6.35/fs/readdir.c:23
23      {</pre>
<h1>Good luck, Happy Hacking…</h1>
<p>&nbsp;</p>
<h1>Very grateful for <a href="http://twitter.com/teawater">teawater</a></h1>
<h1></h1>
<h1>References</h1>
<p>* <a href="http://code.google.com/p/kgtp/">kgtp Linux Kernel GDB Tracepoint module</a></p>
<p>* <a href="http://code.google.com/p/kgtp/wiki/Quickstart">kgtp Quick start</a></p>
<p>* <a href="http://code.google.com/p/kgtp/wiki/HOWTO">kgtp How to</a></p>
<p>* <a href="http://code.google.com/p/kgtp/wiki/HowToUseKGTPinAndroid">How To Use KGTP In Android</a></p>
<p>* <a href="http://sourceware.org/gdb/onlinedocs/gdb/Tracepoints.html#Tracepoints">GDB Tracepoints</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/11/kernel-debug-with-kgtp-on-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AOSP source code back online</title>
		<link>http://wifihack.net/blog/2011/10/aosp-source-code-back-online/</link>
		<comments>http://wifihack.net/blog/2011/10/aosp-source-code-back-online/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 01:26:36 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=636</guid>
		<description><![CDATA[Hi! As you know, like many other projects the Android Open-Source Project was affected by the recent kernel.org downtime. So, we’re pleased to let you know that the Gingerbread source code is now available again, and AOSP git servers are back online. Even before the kernel.org downtime, it was clear that AOSP was sometimes taxing kernel.org’s git infrastructure. When we [...]]]></description>
			<content:encoded><![CDATA[<div>Hi!</div>
<div>As you know, like many other projects the Android Open-Source Project was affected by the recent <a href="http://kernel.org/" target="_blank">kernel.org</a> downtime. So, we’re pleased to let you know that the Gingerbread source code is now available again, and AOSP git servers are back online.</div>
<div>Even before the <a href="http://kernel.org/" target="_blank">kernel.org</a> downtime, it was clear that AOSP was sometimes taxing <a href="http://kernel.org/" target="_blank">kernel.org</a>’s git infrastructure. When we did the Gingerbread source release, for example, load due to AOSP made part of <a href="http://kernel.org/" target="_blank">kernel.org</a> unusable for several days. This isn’t fair to <a href="http://kernel.org/" target="_blank">kernel.org</a>’s staff or the community, so for some time we’ve been preparing our own git hosting on Google servers.</div>
<div>We were finishing up just as <a href="http://kernel.org/" target="_blank">kernel.org</a> experienced their downtime, so the Gingerbread source is now available on Google’s servers. Accordingly, the git URLs have changed.</div>
<div>Here are the instructions to access the new git servers:</div>
<div>
<ul>
<li>You need to get the latest version of the repo tool:<br />
curl <a href="https://dl-ssl.google.com/dl/googlesource/git-repo/repo" target="_blank">https://dl-ssl.google.com/dl/<wbr>googlesource/git-repo/repo</wbr></a> &gt; ~/bin/repo</li>
<li>You need to initialize a new repository:<br />
repo init -u <a href="https://android.googlesource.com/platform/manifest" target="_blank">https://android.googlesource.<wbr>com/platform/manifest</wbr></a> -b android-2.3.7_r1</li>
<li>The full instructions are at <a href="http://source.android.com/source/downloading.html" target="_blank">http://source.android.com/<wbr>source/downloading.html</wbr></a></li>
</ul>
</div>
<div>There are a few limitations to be aware of:</div>
<div>
<ul>
<li>Our priority has been getting the main source code mirrors back online, so for the moment gitweb source browsing and Gerrit Code Review are still unavailable.</li>
<li>We are now working on bringing AOSP’s Gerrit Code Review site back up, and hope to be able to say something here soon.</li>
<li>It might be a little while longer before gitweb comes back, unfortunately, since Gerrit Code Review is the next priority.</li>
<li>To reiterate, these servers contain only the ‘gingerbread’ and ‘master’ branches from the old AOSP servers. We plan to release the source for the recently-announced Ice Cream Sandwich soon, once it’s available on devices.</li>
<li>As these new servers are, well, new, there may be hiccups if we encounter unexpected issues. However we’re keeping a close eye on them and will respond to any issues as quickly as possible.</li>
</ul>
</div>
<div>Finally, we’d like to send a huge “thank-you” to the <a href="http://kernel.org/" target="_blank">kernel.org</a> community and Oregon State University Open-Source Lab staff. They’ve done an incredible job hosting the AOSP source code mirror and Gerrit Code Review for nearly 3 years. Without them, it’s safe to say that AOSP would not be where we are today.</div>
<div>Thanks, and happy coding!</div>
<div>- Dan</div>
<div>From: <a href="https://groups.google.com/forum/#!msg/android-building/IwlEJtE1LsI/WtHcsPkUPMcJ">https://groups.google.com/forum/#!msg/android-building/IwlEJtE1LsI/WtHcsPkUPMcJ</a></div>
<div>&#8211; EOF &#8211;</div>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/10/aosp-source-code-back-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Two Go Talks: &#8220;Lexical Scanning in Go&#8221; and &#8220;Cuddle: an App Engine Demo&#8221;</title>
		<link>http://wifihack.net/blog/2011/09/two-go-talks-lexical-scanning-in-go-and-cuddle-an-app-engine-demo/</link>
		<comments>http://wifihack.net/blog/2011/09/two-go-talks-lexical-scanning-in-go-and-cuddle-an-app-engine-demo/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 02:55:52 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[golang]]></category>
		<category><![CDATA[andrew]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[cuddle]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[rob]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[topic]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=628</guid>
		<description><![CDATA[Rob&#8217;s talk, &#8220;Lexical Scanning in Go&#8220;, discusses the design of a particularly interesting and idiomatic piece of Go code, the lexer component of the new template package. Lexical Scanning in Go &#8211; Rob Pike The slides are available here. The new template package is available as exp/template in Go release r59. In a future release it will replace the [...]]]></description>
			<content:encoded><![CDATA[<p>Rob&#8217;s talk, &#8220;<a href="http://www.youtube.com/watch?v=HxaD_trXwRE">Lexical Scanning in Go</a>&#8220;, discusses the design of a particularly interesting and idiomatic piece of Go code, the lexer component of the new <a href="http://golang.org/pkg/exp/template/">template package.</a><br />
<a href="http://v.youku.com/v_show/id_XMzAwODIzOTk2.html">Lexical Scanning in Go &#8211; Rob Pike</a><br />
<div class="myvideotag" style="width: 640px;"><embed src="http://player.youku.com/player.php/sid/XMzAwODIzOTk2/v.swf" quality="high" width="640" height="390" align="middle" allowScriptAccess="sameDomain" wmode="transparent" type="application/x-shockwave-flash"></embed></div></p>
<p>The slides are <a href="http://cuddle.googlecode.com/hg/talk/lex.html">available here</a>. The new template package is available as <a href="http://golang.org/pkg/exp/template/">exp/template</a> in Go release r59. In a future release it will replace the old template package.</p>
<p>Andrew&#8217;s talk, &#8220;<a href="http://www.youtube.com/watch?v=HQtLRqqB-Kk">Cuddle: an App Engine Demo</a>&#8220;, describes the construction of a simple real-time chat application that uses App Engine&#8217;s <a href="http://code.google.com/appengine/docs/go/datastore/overview.html">Datastore</a>, <a href="http://code.google.com/appengine/docs/go/channel/overview.html">Channel</a>, and <a href="http://code.google.com/appengine/docs/go/datastore/memcache.html">Memcache</a> APIs. It also includes a question and answer session that covers <a href="http://code.google.com/appengine/docs/go/gettingstarted/">Go for App Engine</a> and Go more generally.</p>
<p><a href="http://v.youku.com/v_show/id_XMzAwNzYyMTgw.html"> Cuddle, A go AppEngine Demo &#8211; Andrew Gerrand</a><br />
<div class="myvideotag" style="width: 640px;"><embed src="http://player.youku.com/player.php/sid/XMzAwNzYyMTgw/v.swf" quality="high" width="640" height="390" align="middle" allowScriptAccess="sameDomain" wmode="transparent" type="application/x-shockwave-flash"></embed></div></p>
<p>The slides are <a href="http://cuddle.googlecode.com/hg/talk/index.html">available here</a>. The code is available at the <a href="http://code.google.com/p/cuddle/">cuddle Google Code project</a>.<br />
From: <a href="http://blog.golang.org/2011/09/two-go-talks-lexical-scanning-in-go-and.html">http://blog.golang.org/2011/09/two-go-talks-lexical-scanning-in-go-and.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/09/two-go-talks-lexical-scanning-in-go-and-cuddle-an-app-engine-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android 2.3系统彩蛋(Zombie art by Jack Larson)相关代码</title>
		<link>http://wifihack.net/blog/2011/08/android-2-3-zombie-art-by-jack-larson/</link>
		<comments>http://wifihack.net/blog/2011/08/android-2-3-zombie-art-by-jack-larson/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 07:08:57 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[zombiz]]></category>
		<category><![CDATA[彩蛋]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=621</guid>
		<description><![CDATA[Android 2.3系统彩蛋(Zombie art by Jack Larson)相关代码: 在网上看到Android2.3有个“Zombie art by Jack Larson”（Jack Larson 的僵尸艺术）的彩蛋, 没事的时候找了一下相关代码的实现. packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java onPreferenceTreeClick 点击Android version相关代码实现: @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference.getKey().equals("firmware_version")) { System.arraycopy(mHits, 1, mHits, 0, mHits.length-1); mHits[mHits.length-1] = SystemClock.uptimeMillis(); if (mHits[0] &#62;= (SystemClock.uptimeMillis()-500)) { Intent intent = new Intent(Intent.ACTION_MAIN); intent.setClassName("android", com.android.internal.app.PlatLogoActivity.class.getName()); try { startActivity(intent); } catch (Exception [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wifihack.net/blog/wp-content/uploads/2011/08/platlogo.jpg"><img class="alignleft size-medium wp-image-622" title="platlogo" src="http://wifihack.net/blog/wp-content/uploads/2011/08/platlogo-300x200.jpg" alt="Zombie art by Jack Larson" width="200" height="100" /></a><br />
Android 2.3系统彩蛋(Zombie art by Jack Larson)相关代码:</p>
<p>在<a title="Android 2.3系统隐藏的彩蛋 你信不信？" href="http://www.app43.com/thread-26852-1-1.html" target="_blank">网上</a>看到Android2.3有个“Zombie art by Jack Larson”（Jack Larson 的僵尸艺术）的彩蛋, 没事的时候找了一下相关代码的实现.</p>
<p>packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java onPreferenceTreeClick<br />
点击Android version相关代码实现:</p>
<pre class="brush: java">@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference.getKey().equals("firmware_version")) {
System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
mHits[mHits.length-1] = SystemClock.uptimeMillis();
if (mHits[0] &gt;= (SystemClock.uptimeMillis()-500)) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("android",
com.android.internal.app.PlatLogoActivity.class.getName());
try {
startActivity(intent);
} catch (Exception e) {
}
}
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
}</pre>
<p>实现代码:</p>
<p>frameworks/base/core/java/com/android/internal/app/PlatLogoActivity.java</p>
<pre class="brush: java">public class PlatLogoActivity extends Activity {
Toast mToast;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

mToast = Toast.makeText(this, "Zombie art by Jack Larson", Toast.LENGTH_SHORT);

ImageView content = new ImageView(this);
content.setImageResource(com.android.internal.R.drawable.platlogo);
content.setScaleType(ImageView.ScaleType.FIT_CENTER);

setContentView(content);
}

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_UP) {
mToast.show();
}
return super.dispatchTouchEvent(ev);
}
}</pre>
<p>僵尸图片保存在这里:</p>
<p>frameworks/base/core/res/res/drawable-nodpi/platlogo.jpg<br />
<a href="http://wifihack.net/blog/wp-content/uploads/2011/08/platlogo.jpg"><img class="alignleft size-medium wp-image-622" title="platlogo" src="http://wifihack.net/blog/wp-content/uploads/2011/08/platlogo-300x200.jpg" alt="Zombie art by Jack Larson"/></a><br />
参考: <a href="http://www.app43.com/thread-26852-1-1.html" target="_blank">Android 2.3系统隐藏的彩蛋 你信不信？</a>  </p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/08/android-2-3-zombie-art-by-jack-larson/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>移植有线网络到Android2.3</title>
		<link>http://wifihack.net/blog/2011/08/portethernet-patch-for-android-gingerbread/</link>
		<comments>http://wifihack.net/blog/2011/08/portethernet-patch-for-android-gingerbread/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 14:43:09 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tech.Notes]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[android-x86]]></category>
		<category><![CDATA[android2.3]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[gingerbread]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[service]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=613</guid>
		<description><![CDATA[  近来做Android有线网络移植，主要参考了Nicu Pavel的Ethernet patch for Android Gingerbread 按照Nicu Pavel 的方法在我的板子上死活运行不起来， 在“设置”里面点击“有线网络配置”，通过logcat 查看一直显示我的&#8221;ethernet&#8221;服务没有起来(I/EthernetManager( 648): Init Ethernet Manager, service: null)。 又仔细检查了一下patch，确定打的补丁没有问题，只能在深入的分析logcat日志。 在日志中发现有几处可能和ethernet相关的地方。 I/ethernet( 2060): Loading ethernet jni class I/SystemServer( 2136): NetStat Service I/SystemServer( 2136): NetworkManagement Service I/SystemServer( 2136): Connectivity Service 分别查看了这几个文件和相关的服务， 排除了前三个的可能，就拿“Connectivity Service”开始， 打开frameworks/base/services/java/com/android/server/ConnectivityService.java文件: 打开dbg信息: private static final boolean DBG = true; 在ConnectivityService构造函数里面加了几句打印信息 String[] naStrings = context.getResources().getStringArray( com.android.internal.R.array.networkAttributes); [...]]]></description>
			<content:encoded><![CDATA[<div id="outline-container-1">
<div id="text-1">
<p>  近来做Android有线网络移植，主要参考了<a href="http://blog.linuxconsulting.ro">Nicu Pavel</a>的<a href="http://blog.linuxconsulting.ro/2011/06/ethernet-patch-for-android-gingerbread.html">Ethernet patch for Android Gingerbread</a> 按照<a href="http://blog.linuxconsulting.ro">Nicu Pavel</a> 的方法在我的板子上死活运行不起来， 在“设置”里面点击“有线网络配置”，通过logcat 查看一直显示我的&#8221;ethernet&#8221;服务没有起来(I/EthernetManager( 648): Init Ethernet Manager, service: null)。</p>
<p>又仔细检查了一下patch，确定打的补丁没有问题，只能在深入的分析logcat日志。</p>
<p>在日志中发现有几处可能和ethernet相关的地方。</p>
<ul>
<li>I/ethernet( 2060): Loading ethernet jni class</li>
<li>I/SystemServer( 2136): NetStat Service</li>
<li>I/SystemServer( 2136): NetworkManagement Service</li>
<li>I/SystemServer( 2136): Connectivity Service</li>
</ul>
<p>分别查看了这几个文件和相关的服务， 排除了前三个的可能，就拿“Connectivity Service”开始， 打开frameworks/base/services/java/com/android/server/ConnectivityService.java文件:</p>
<ul>
<li>打开dbg信息: private static final boolean DBG = true;</li>
<li>在ConnectivityService构造函数里面加了几句打印信息
<pre class="brush: java">String[] naStrings = context.getResources().getStringArray(
        com.android.internal.R.array.networkAttributes);
for (String naString : naStrings) {
    try {
        NetworkAttributes n = new NetworkAttributes(naString);
        // Add Debug Info
        Slog.v(TAG, "[ConnectivityService.java] NetworkAttributes naString: " + naString  + "  type: " + n.mType);
        if (n.mType &gt; ConnectivityManager.MAX_NETWORK_TYPE) {
            Slog.e(TAG, "Error in networkAttributes - ignoring attempt to define type " +
                    n.mType);
            continue;
        }
        if (mNetAttributes[n.mType] != null) {
            Slog.e(TAG, "Error in networkAttributes - ignoring attempt to redefine type " +
                    n.mType);
            continue;
        }
        if ((n.mType != ConnectivityManager.TYPE_ETHERNET) &amp;&amp; (mRadioAttributes[n.mRadio] == null)) {
            Slog.e(TAG, "Error in networkAttributes - ignoring attempt to use undefined " +
                    "radio " + n.mRadio + " in network type " + n.mType);
            continue;
        }
        mNetAttributes[n.mType] = n;
        mNetworksDefined++;
    } catch(Exception e) {
        Slog.e(TAG, "wrong dev exception " + e);
        // ignore it - leave the entry null
    }
}</pre>
</li>
</ul>
<p>得到相关的打印信息如下:</p>
<pre class="brush: bash">I/SystemServer( 2136): NetStat Service
I/SystemServer( 2136): NetworkManagement Service
I/SystemServer( 2136): Connectivity Service
V/ConnectivityService( 2136): ConnectivityService starting up
V/ConnectivityService( 2136): [ConnectivityService.java] NetworkAttributes naString: wifi,1,1,1  type: 1
V/ConnectivityService( 2136): [ConnectivityService.java] NetworkAttributes naString: mobile,0,0,0  type: 0
V/ConnectivityService( 2136): [ConnectivityService.java] NetworkAttributes naString: mobile_mms,2,0,2  type: 2
V/ConnectivityService( 2136): [ConnectivityService.java] NetworkAttributes naString: mobile_supl,3,0,2  type: 3
V/ConnectivityService( 2136): [ConnectivityService.java] NetworkAttributes naString: mobile_hipri,5,0,3  type: 5</pre>
<p>除了ethernet其他的信息都有，这个比较奇怪，但是开头的那句, 就是去掉网络的配置信息，应该没有什么问题。</p>
<pre>String[] naStrings = context.getResources().getStringArray(
        com.android.internal.R.array.networkAttributes);</pre>
<p>又去仔细检测了一遍frameworks/base/core/res/res/values/config.xml文件中的配置信息, 没有问题。</p>
<pre>&lt;string-array translatable="false" name="networkAttributes"&gt;
&lt;item&gt;"wifi,1,1,1"&lt;/item&gt;
&lt;item&gt;"mobile,0,0,0"&lt;/item&gt;
&lt;item&gt;"mobile_mms,2,0,2"&lt;/item&gt;
&lt;item&gt;"mobile_supl,3,0,2"&lt;/item&gt;
&lt;item&gt;"mobile_hipri,5,0,3"&lt;/item&gt;
&lt;item&gt;"ethernet,9,9,1"&lt;/item&gt;
&lt;/string-array&gt;</pre>
<p>看到这里就比较比较奇怪了，配置文件中明明有ethernet但是，通过context去得的数据就偏偏没有ethernet, 再去ConnectivityManager.java中检查了一下 TYPE_ETHERNET的值，的确和配置文件中的数值一样，MAX_RADIO_TYPE和MAX_NETWORK_TYPE也都是TYPE_ETHERNET.</p>
<p>郁闷了半天也想不出来咋搞，习惯性的永grep -Rw 搜索了一下networkAttributes。 在搜索的结果中发现了&#8221;device/samsung/smdkv210/overlay/frameworks/base/core/res/res/values/config.xml&#8221;这个地址。</p>
<p>打开文件，发现这个配置里面的networkAttributes没有相关ethernet信息，可能是把framework里面的配置信息覆盖掉了.</p>
<p>在config.xml中增加ethernet相关的信息，编译，运行。OK，果真是这个问题引起的， 唉。</p>
</div>
</div>
<div id="outline-container-2">
<h2 id="sec-2">参考</h2>
<div id="text-2">
<ul>
<li><a href="http://blog.linuxconsulting.ro/2011/06/ethernet-patch-for-android-gingerbread.html">Ethernet patch for Android Gingerbread</a></li>
<li><a href="http://git.android-x86.org/?p=platform/frameworks/base.git;a=commit;h=222f1957ea21eeaa71f5d34ec1907eb5de2bb580">Added ethernet patch based on Yi Sun from android-x86.org</a></li>
</ul>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/08/portethernet-patch-for-android-gingerbread/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>libusb must be mounted usbfs</title>
		<link>http://wifihack.net/blog/2011/07/libusb-must-be-mounted-usbfs/</link>
		<comments>http://wifihack.net/blog/2011/07/libusb-must-be-mounted-usbfs/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 14:00:55 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Tech.Notes]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[hid]]></category>
		<category><![CDATA[ioctl]]></category>
		<category><![CDATA[mount]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[usbfs]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=609</guid>
		<description><![CDATA[今天通过libusb访问一个HID的设备，一调用USBDEVFSCLAIMINTERFACE ioctl就返回-1设备忙, 找了一下午原因也没有找到， 快到下班的时候， 发现了一篇文章Porting Libusb for Android on the Beagleboard in 5 steps 提到 需要把设备加载到usbfs上，结果加载了usbfs设备就能正常访问了。 在网上搜了一圈，发现libusb就是通过usbfs或usbdevfs来链接USB设备，所以在使用之前 必须加载usbfs到/dev/bus/usb或/proc/bus/usb目录. 原文如下: libusb uses a pseudo-filesystem known as &#8216;usbdevfs` or &#8216;usbfs` to access the USB devices connected to your machine. This filesystem must be mounted under /proc/bus/usb for libusb to work. libusb移植到Android具体可以参考Porting Libusb for Android on the Beagleboard in 5 [...]]]></description>
			<content:encoded><![CDATA[<p>今天通过libusb访问一个HID的设备，一调用USBDEVFS<sub>CLAIMINTERFACE</sub> ioctl就返回-1设备忙, 找了一下午原因也没有找到， 快到下班的时候， 发现了一篇文章<a href="http://android.serverbox.ch/?p=151">Porting Libusb for Android on the Beagleboard in 5 steps</a> 提到 需要把设备加载到usbfs上，结果加载了usbfs设备就能正常访问了。</p>
<p>在网上搜了一圈，发现libusb就是通过usbfs或usbdevfs来链接USB设备，所以在使用之前 必须加载usbfs到/dev/bus/usb或/proc/bus/usb目录. 原文如下:</p>
<blockquote><p>libusb uses a pseudo-filesystem known as &#8216;usbdevfs` or &#8216;usbfs` to access<br />
the USB devices connected to your machine. This filesystem must be mounted<br />
under /proc/bus/usb for libusb to work.</p></blockquote>
<p>libusb移植到Android具体可以参考<a href="#Porting--Libusb--for--Android--on--the--Beagleboard--in--5--steps">Porting Libusb for Android on the Beagleboard in 5 steps</a></p>
<p>需要注意的是:</p>
<ul>
<li>在命令行加载sysfs需要执行:
<ul>
<li>mount -t usbfs -o devmode=666 none /proc/bus/usb</li>
</ul>
</li>
<li>在init.rc中需要使用:
<ul>
<li>mount usbfs none /proc/bus/usb -o devmode=0666</li>
</ul>
</li>
</ul>
<p>参考</p>
<ul>
<li><a href="http://www.libusb.org/">libusb</a></li>
<li><a href="https://github.com/monaka/libusb-android">libusb-android</a></li>
<li><a href="http://android.serverbox.ch/?p=151">Porting Libusb for Android on the Beagleboard in 5 steps</a></li>
<li><a href="http://groups.google.com/group/beagleboard/browse_thread/thread/cd6707ab3d4bdb95">can&#8217;t mount usbfs in Android 2.2</a></li>
<li><a href="http://blog.chinaunix.net/space.php?uid=20564848&amp;do=blog&amp;id=73832">libusb和HID设备</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/07/libusb-must-be-mounted-usbfs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>修改Hosts访问Google+和Youtube</title>
		<link>http://wifihack.net/blog/2011/07/anti-gfw-hosts-google-plus-youtube/</link>
		<comments>http://wifihack.net/blog/2011/07/anti-gfw-hosts-google-plus-youtube/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 04:50:40 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Others]]></category>
		<category><![CDATA[Tech.Notes]]></category>
		<category><![CDATA[antigfw]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[fuckgfw]]></category>
		<category><![CDATA[GFW]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[googleplus]]></category>
		<category><![CDATA[hosts]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=603</guid>
		<description><![CDATA[windows: hosts文件在C:\WINDOWS\system32\drivers\etc目录下 hosts文件 Linux: sudo vi /etc/hosts 下面包含Google+和Youtube 203.208.46.29 plus.Google.com 203.208.46.29 talkgadget.google.com 203.208.46.29 picadaweb.google.com 203.208.46.29 lh1.ggpht.com 203.208.46.29 lh2.ggpht.com 203.208.46.29 lh3.ggpht.com 203.208.46.29 lh4.ggpht.com 203.208.46.29 lh5.ggpht.com 203.208.46.29 lh6.ggpht.com 203.208.46.29 lh6.googleusercontent.com 203.208.46.29 lh5.googleusercontent.com 203.208.46.29 lh4.googleusercontent.com 203.208.46.29 lh3.googleusercontent.com 203.208.46.29 lh2.googleusercontent.com 203.208.46.29 lh1.googleusercontent.com 203.208.46.29 spreadsheets.google.com 203.208.46.29 maps-api-ssl.google.com 203.208.46.29 translate.google.com 203.208.46.29 0-focus-opensocial.googleusercontent.com 203.208.46.29 images6-focus-opensocial.googleusercontent.com 203.208.46.29 images5-focus-opensocial.googleusercontent.com 203.208.46.29 images4-focus-opensocial.googleusercontent.com 203.208.46.29 images3-focus-opensocial.googleusercontent.com 203.208.46.29 [...]]]></description>
			<content:encoded><![CDATA[<p>windows: hosts文件在C:\WINDOWS\system32\drivers\etc目录下 hosts文件<br />
Linux: sudo vi /etc/hosts</p>
<p>下面包含Google+和Youtube</p>
<blockquote><p>
203.208.46.29 plus.Google.com<br />
203.208.46.29 talkgadget.google.com</p>
<p>203.208.46.29 picadaweb.google.com<br />
203.208.46.29 lh1.ggpht.com<br />
203.208.46.29 lh2.ggpht.com<br />
203.208.46.29 lh3.ggpht.com<br />
203.208.46.29 lh4.ggpht.com<br />
203.208.46.29 lh5.ggpht.com<br />
203.208.46.29 lh6.ggpht.com<br />
203.208.46.29 lh6.googleusercontent.com<br />
203.208.46.29 lh5.googleusercontent.com<br />
203.208.46.29 lh4.googleusercontent.com<br />
203.208.46.29 lh3.googleusercontent.com<br />
203.208.46.29 lh2.googleusercontent.com<br />
203.208.46.29 lh1.googleusercontent.com</p>
<p>203.208.46.29 spreadsheets.google.com<br />
203.208.46.29 maps-api-ssl.google.com<br />
203.208.46.29 translate.google.com<br />
203.208.46.29 0-focus-opensocial.googleusercontent.com<br />
203.208.46.29 images6-focus-opensocial.googleusercontent.com<br />
203.208.46.29 images5-focus-opensocial.googleusercontent.com<br />
203.208.46.29 images4-focus-opensocial.googleusercontent.com<br />
203.208.46.29 images3-focus-opensocial.googleusercontent.com<br />
203.208.46.29 images2-focus-opensocial.googleusercontent.com<br />
203.208.46.29 images1-focus-opensocial.googleusercontent.com<br />
203.208.46.29 lh6.googleusercontent.com<br />
203.208.46.29 lh5.googleusercontent.com<br />
203.208.46.29 lh3.googleusercontent.com<br />
203.208.46.29 lh2.googleusercontent.com<br />
203.208.46.29 lh1.googleusercontent.com<br />
203.208.46.29 lh4.googleusercontent.com<br />
203.208.46.29 webcache.googleusercontent.com<br />
203.208.46.29 mail.google.com<br />
203.208.46.29 www.google.com.hk<br />
203.208.46.29 www.google.com<br />
203.208.46.29 picasaweb.google.com<br />
203.208.46.29 labs.google.com<br />
203.208.46.29 www.googlelabs.com<br />
203.208.46.29 docs.google.com<br />
203.208.46.29 plus.google.com<br />
203.208.46.29 profiles.google.com<br />
203.208.46.29 services.google.com<br />
203.208.46.29 clients4.google.com<br />
203.208.46.29 clients2.google.com<br />
203.208.46.29 chrome.google.com<br />
203.208.46.29 tools.google.com<br />
203.208.46.29 talkgadget.google.com<br />
203.208.46.29 ssl.gstatic.com<br />
203.208.46.29 clients2.googleusercontent.com<br />
203.208.46.29 clients1.googleusercontent.com<br />
203.208.46.29 clients3.googleusercontent.com<br />
203.208.46.29 clients4.googleusercontent.com</p>
<p>203.208.46.30 www.google.com<br />
203.208.46.30 http://www.google.com.hk<br />
203.208.46.30 picadaweb.google.com</p>
<p>203.208.46.30 s6.googleusercontent.com<br />
203.208.46.30 s5.googleusercontent.com<br />
203.208.46.30 s4.googleusercontent.com<br />
203.208.46.30 s3.googleusercontent.com<br />
203.208.46.30 s2.googleusercontent.com<br />
203.208.46.30 s1.googleusercontent.com</p>
<p>203.208.46.30 plus.google.com<br />
203.208.46.30 talkgadget.google.com<br />
203.208.46.30 ditu.google.com<br />
203.208.46.30 maps-api-ssl.google.com<br />
203.208.46.30 mail.google.com<br />
203.208.46.30 docs.google.com<br />
203.208.46.30 pop.gmail.com<br />
203.208.46.30 scholar.l.google.com<br />
203.208.46.30 news.google.com<br />
203.208.46.30 video.google.com<br />
203.208.46.29 translate.google.com</p>
<p>203.208.46.30 profiles.google.com</p>
<p>203.208.46.29 youtube.com<br />
203.208.46.29 www.youtube.com<br />
203.208.46.29 gdata.youtube.com<br />
203.208.46.29 m.youtube.com<br />
203.208.46.29 help.youtube.com<br />
74.125.71.116 upload.youtube.com<br />
203.208.46.29 accounts.youtube.com<br />
203.208.46.29 insight.youtube.com<br />
203.208.46.29 apiblog.youtube.com<br />
203.208.46.29 clients1.youtube.com<br />
203.208.46.29 s.youtube.com<br />
203.208.46.29 s2.youtube.com<br />
203.208.46.29 s.ytimg.com<br />
203.208.46.29 i1.ytimg.com<br />
203.208.46.29 i2.ytimg.com<br />
203.208.46.29 i3.ytimg.com<br />
203.208.46.29 i4.ytimg.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v1.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v2.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v3.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v4.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v5.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v6.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v7.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v8.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v9.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v10.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v11.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v12.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v13.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v14.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v15.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v16.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v17.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v18.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v19.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v20.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v21.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v22.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v23.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v24.lscache1.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v1.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v2.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v3.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v4.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v5.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v6.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v7.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v8.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v9.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v10.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v11.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v12.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v13.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v14.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v15.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v16.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v17.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v18.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v19.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v20.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v21.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v22.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v23.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v24.lscache2.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v1.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v2.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v3.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v4.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v5.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v6.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v7.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v8.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v9.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v10.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v11.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v12.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v13.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v14.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v15.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v16.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v17.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v18.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v19.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v20.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v21.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v22.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v23.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v24.lscache3.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v1.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v2.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v3.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v4.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v5.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v6.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v7.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v8.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v9.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v10.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v11.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v12.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v13.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v14.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v15.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v16.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v17.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v18.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v19.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v20.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v21.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v22.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v23.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v24.lscache4.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v1.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v2.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v3.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v4.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v5.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v6.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v7.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v8.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v9.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v10.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v11.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v12.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v13.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v14.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v15.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v16.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v17.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v18.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v19.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v20.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v21.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v22.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v23.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v24.lscache5.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v1.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v2.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v3.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v4.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v5.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v6.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v7.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v8.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v9.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v10.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v11.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v12.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v13.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v14.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v15.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v16.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v17.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v18.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v19.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v20.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v21.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v22.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v23.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v24.lscache6.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v1.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v2.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v3.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v4.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v5.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v6.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v7.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v8.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v9.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v10.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v11.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v12.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v13.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v14.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v15.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v16.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v17.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v18.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v19.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v20.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v21.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v22.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v23.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v24.lscache7.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v1.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v2.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v3.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v4.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v5.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v6.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v7.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v8.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v9.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v10.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v11.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v12.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v13.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v14.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v15.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v16.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v17.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v18.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v19.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v20.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v21.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v22.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v23.lscache8.c.youtube.com<br />
203.208.46.29 o-o.preferred.sjc07s15.v24.lscache8.c.youtube.com<br />
203.208.46.29 r1.pek01s01.c.youtube.com<br />
203.208.46.29 r2.pek01s01.c.youtube.com<br />
203.208.46.29 r3.pek01s01.c.youtube.com<br />
203.208.46.29 r4.pek01s01.c.youtube.com<br />
203.208.46.29 r5.pek01s01.c.youtube.com<br />
203.208.46.29 r6.pek01s01.c.youtube.com<br />
203.208.46.29 r7.pek01s01.c.youtube.com<br />
203.208.46.29 r8.pek01s01.c.youtube.com<br />
203.208.46.29 r9.pek01s01.c.youtube.com<br />
203.208.46.29 r10.pek01s01.c.youtube.com<br />
203.208.46.29 r11.pek01s01.c.youtube.com<br />
203.208.46.29 r12.pek01s01.c.youtube.com<br />
203.208.46.29 r13.pek01s01.c.youtube.com<br />
203.208.46.29 r14.pek01s01.c.youtube.com<br />
203.208.46.29 r15.pek01s01.c.youtube.com<br />
203.208.46.29 r16.pek01s01.c.youtube.com<br />
203.208.46.29 r17.pek01s01.c.youtube.com<br />
203.208.46.29 r18.pek01s01.c.youtube.com<br />
203.208.46.29 r19.pek01s01.c.youtube.com<br />
203.208.46.29 r20.pek01s01.c.youtube.com<br />
203.208.46.29 r21.pek01s01.c.youtube.com<br />
203.208.46.29 r22.pek01s01.c.youtube.com<br />
203.208.46.29 r23.pek01s01.c.youtube.com<br />
203.208.46.29 r24.pek01s01.c.youtube.com<br />
203.208.46.29 tc.v1.cache1.c.youtube.com<br />
203.208.46.29 tc.v2.cache1.c.youtube.com<br />
203.208.46.29 tc.v3.cache1.c.youtube.com<br />
203.208.46.29 tc.v4.cache1.c.youtube.com<br />
203.208.46.29 tc.v5.cache1.c.youtube.com<br />
203.208.46.29 tc.v6.cache1.c.youtube.com<br />
203.208.46.29 tc.v7.cache1.c.youtube.com<br />
203.208.46.29 tc.v8.cache1.c.youtube.com<br />
203.208.46.29 tc.v9.cache1.c.youtube.com<br />
203.208.46.29 tc.v10.cache1.c.youtube.com<br />
203.208.46.29 tc.v11.cache1.c.youtube.com<br />
203.208.46.29 tc.v12.cache1.c.youtube.com<br />
203.208.46.29 tc.v13.cache1.c.youtube.com<br />
203.208.46.29 tc.v14.cache1.c.youtube.com<br />
203.208.46.29 tc.v15.cache1.c.youtube.com<br />
203.208.46.29 tc.v16.cache1.c.youtube.com<br />
203.208.46.29 tc.v17.cache1.c.youtube.com<br />
203.208.46.29 tc.v18.cache1.c.youtube.com<br />
203.208.46.29 tc.v19.cache1.c.youtube.com<br />
203.208.46.29 tc.v20.cache1.c.youtube.com<br />
203.208.46.29 tc.v21.cache1.c.youtube.com<br />
203.208.46.29 tc.v22.cache1.c.youtube.com<br />
203.208.46.29 tc.v23.cache1.c.youtube.com<br />
203.208.46.29 tc.v24.cache1.c.youtube.com<br />
203.208.46.29 tc.v1.cache2.c.youtube.com<br />
203.208.46.29 tc.v2.cache2.c.youtube.com<br />
203.208.46.29 tc.v3.cache2.c.youtube.com<br />
203.208.46.29 tc.v4.cache2.c.youtube.com<br />
203.208.46.29 tc.v5.cache2.c.youtube.com<br />
203.208.46.29 tc.v6.cache2.c.youtube.com<br />
203.208.46.29 tc.v7.cache2.c.youtube.com<br />
203.208.46.29 tc.v8.cache2.c.youtube.com<br />
203.208.46.29 tc.v9.cache2.c.youtube.com<br />
203.208.46.29 tc.v10.cache2.c.youtube.com<br />
203.208.46.29 tc.v11.cache2.c.youtube.com<br />
203.208.46.29 tc.v12.cache2.c.youtube.com<br />
203.208.46.29 tc.v13.cache2.c.youtube.com<br />
203.208.46.29 tc.v14.cache2.c.youtube.com<br />
203.208.46.29 tc.v15.cache2.c.youtube.com<br />
203.208.46.29 tc.v16.cache2.c.youtube.com<br />
203.208.46.29 tc.v17.cache2.c.youtube.com<br />
203.208.46.29 tc.v18.cache2.c.youtube.com<br />
203.208.46.29 tc.v19.cache2.c.youtube.com<br />
203.208.46.29 tc.v20.cache2.c.youtube.com<br />
203.208.46.29 tc.v21.cache2.c.youtube.com<br />
203.208.46.29 tc.v22.cache2.c.youtube.com<br />
203.208.46.29 tc.v23.cache2.c.youtube.com<br />
203.208.46.29 tc.v24.cache2.c.youtube.com<br />
203.208.46.29 tc.v1.cache3.c.youtube.com<br />
203.208.46.29 tc.v2.cache3.c.youtube.com<br />
203.208.46.29 tc.v3.cache3.c.youtube.com<br />
203.208.46.29 tc.v4.cache3.c.youtube.com<br />
203.208.46.29 tc.v5.cache3.c.youtube.com<br />
203.208.46.29 tc.v6.cache3.c.youtube.com<br />
203.208.46.29 tc.v7.cache3.c.youtube.com<br />
203.208.46.29 tc.v8.cache3.c.youtube.com<br />
203.208.46.29 tc.v9.cache3.c.youtube.com<br />
203.208.46.29 tc.v10.cache3.c.youtube.com<br />
203.208.46.29 tc.v11.cache3.c.youtube.com<br />
203.208.46.29 tc.v12.cache3.c.youtube.com<br />
203.208.46.29 tc.v13.cache3.c.youtube.com<br />
203.208.46.29 tc.v14.cache3.c.youtube.com<br />
203.208.46.29 tc.v15.cache3.c.youtube.com<br />
203.208.46.29 tc.v16.cache3.c.youtube.com<br />
203.208.46.29 tc.v17.cache3.c.youtube.com<br />
203.208.46.29 tc.v18.cache3.c.youtube.com<br />
203.208.46.29 tc.v19.cache3.c.youtube.com<br />
203.208.46.29 tc.v20.cache3.c.youtube.com<br />
203.208.46.29 tc.v21.cache3.c.youtube.com<br />
203.208.46.29 tc.v22.cache3.c.youtube.com<br />
203.208.46.29 tc.v23.cache3.c.youtube.com<br />
203.208.46.29 tc.v24.cache3.c.youtube.com<br />
203.208.46.29 tc.v1.cache4.c.youtube.com<br />
203.208.46.29 tc.v2.cache4.c.youtube.com<br />
203.208.46.29 tc.v3.cache4.c.youtube.com<br />
203.208.46.29 tc.v4.cache4.c.youtube.com<br />
203.208.46.29 tc.v5.cache4.c.youtube.com<br />
203.208.46.29 tc.v6.cache4.c.youtube.com<br />
203.208.46.29 tc.v7.cache4.c.youtube.com<br />
203.208.46.29 tc.v8.cache4.c.youtube.com<br />
203.208.46.29 tc.v9.cache4.c.youtube.com<br />
203.208.46.29 tc.v10.cache4.c.youtube.com<br />
203.208.46.29 tc.v11.cache4.c.youtube.com<br />
203.208.46.29 tc.v12.cache4.c.youtube.com<br />
203.208.46.29 tc.v13.cache4.c.youtube.com<br />
203.208.46.29 tc.v14.cache4.c.youtube.com<br />
203.208.46.29 tc.v15.cache4.c.youtube.com<br />
203.208.46.29 tc.v16.cache4.c.youtube.com<br />
203.208.46.29 tc.v17.cache4.c.youtube.com<br />
203.208.46.29 tc.v18.cache4.c.youtube.com<br />
203.208.46.29 tc.v19.cache4.c.youtube.com<br />
203.208.46.29 tc.v20.cache4.c.youtube.com<br />
203.208.46.29 tc.v21.cache4.c.youtube.com<br />
203.208.46.29 tc.v22.cache4.c.youtube.com<br />
203.208.46.29 tc.v23.cache4.c.youtube.com<br />
203.208.46.29 tc.v24.cache4.c.youtube.com<br />
203.208.46.29 tc.v1.cache5.c.youtube.com<br />
203.208.46.29 tc.v2.cache5.c.youtube.com<br />
203.208.46.29 tc.v3.cache5.c.youtube.com<br />
203.208.46.29 tc.v4.cache5.c.youtube.com<br />
203.208.46.29 tc.v5.cache5.c.youtube.com<br />
203.208.46.29 tc.v6.cache5.c.youtube.com<br />
203.208.46.29 tc.v7.cache5.c.youtube.com<br />
203.208.46.29 tc.v8.cache5.c.youtube.com<br />
203.208.46.29 tc.v9.cache5.c.youtube.com<br />
203.208.46.29 tc.v10.cache5.c.youtube.com<br />
203.208.46.29 tc.v11.cache5.c.youtube.com<br />
203.208.46.29 tc.v12.cache5.c.youtube.com<br />
203.208.46.29 tc.v13.cache5.c.youtube.com<br />
203.208.46.29 tc.v14.cache5.c.youtube.com<br />
203.208.46.29 tc.v15.cache5.c.youtube.com<br />
203.208.46.29 tc.v16.cache5.c.youtube.com<br />
203.208.46.29 tc.v17.cache5.c.youtube.com<br />
203.208.46.29 tc.v18.cache5.c.youtube.com<br />
203.208.46.29 tc.v19.cache5.c.youtube.com<br />
203.208.46.29 tc.v20.cache5.c.youtube.com<br />
203.208.46.29 tc.v21.cache5.c.youtube.com<br />
203.208.46.29 tc.v22.cache5.c.youtube.com<br />
203.208.46.29 tc.v23.cache5.c.youtube.com<br />
203.208.46.29 tc.v24.cache5.c.youtube.com<br />
203.208.46.29 tc.v1.cache6.c.youtube.com<br />
203.208.46.29 tc.v2.cache6.c.youtube.com<br />
203.208.46.29 tc.v3.cache6.c.youtube.com<br />
203.208.46.29 tc.v4.cache6.c.youtube.com<br />
203.208.46.29 tc.v5.cache6.c.youtube.com<br />
203.208.46.29 tc.v6.cache6.c.youtube.com<br />
203.208.46.29 tc.v7.cache6.c.youtube.com<br />
203.208.46.29 tc.v8.cache6.c.youtube.com<br />
203.208.46.29 tc.v9.cache6.c.youtube.com<br />
203.208.46.29 tc.v10.cache6.c.youtube.com<br />
203.208.46.29 tc.v11.cache6.c.youtube.com<br />
203.208.46.29 tc.v12.cache6.c.youtube.com<br />
203.208.46.29 tc.v13.cache6.c.youtube.com<br />
203.208.46.29 tc.v14.cache6.c.youtube.com<br />
203.208.46.29 tc.v15.cache6.c.youtube.com<br />
203.208.46.29 tc.v16.cache6.c.youtube.com<br />
203.208.46.29 tc.v17.cache6.c.youtube.com<br />
203.208.46.29 tc.v18.cache6.c.youtube.com<br />
203.208.46.29 tc.v19.cache6.c.youtube.com<br />
203.208.46.29 tc.v20.cache6.c.youtube.com<br />
203.208.46.29 tc.v21.cache6.c.youtube.com<br />
203.208.46.29 tc.v22.cache6.c.youtube.com<br />
203.208.46.29 tc.v23.cache6.c.youtube.com<br />
203.208.46.29 tc.v24.cache6.c.youtube.com<br />
203.208.46.29 tc.v1.cache7.c.youtube.com<br />
203.208.46.29 tc.v2.cache7.c.youtube.com<br />
203.208.46.29 tc.v3.cache7.c.youtube.com<br />
203.208.46.29 tc.v4.cache7.c.youtube.com<br />
203.208.46.29 tc.v5.cache7.c.youtube.com<br />
203.208.46.29 tc.v6.cache7.c.youtube.com<br />
203.208.46.29 tc.v7.cache7.c.youtube.com<br />
203.208.46.29 tc.v8.cache7.c.youtube.com<br />
203.208.46.29 tc.v9.cache7.c.youtube.com<br />
203.208.46.29 tc.v10.cache7.c.youtube.com<br />
203.208.46.29 tc.v11.cache7.c.youtube.com<br />
203.208.46.29 tc.v12.cache7.c.youtube.com<br />
203.208.46.29 tc.v13.cache7.c.youtube.com<br />
203.208.46.29 tc.v14.cache7.c.youtube.com<br />
203.208.46.29 tc.v15.cache7.c.youtube.com<br />
203.208.46.29 tc.v16.cache7.c.youtube.com<br />
203.208.46.29 tc.v17.cache7.c.youtube.com<br />
203.208.46.29 tc.v18.cache7.c.youtube.com<br />
203.208.46.29 tc.v19.cache7.c.youtube.com<br />
203.208.46.29 tc.v20.cache7.c.youtube.com<br />
203.208.46.29 tc.v21.cache7.c.youtube.com<br />
203.208.46.29 tc.v22.cache7.c.youtube.com<br />
203.208.46.29 tc.v23.cache7.c.youtube.com<br />
203.208.46.29 tc.v24.cache7.c.youtube.com<br />
203.208.46.29 tc.v1.cache8.c.youtube.com<br />
203.208.46.29 tc.v2.cache8.c.youtube.com<br />
203.208.46.29 tc.v3.cache8.c.youtube.com<br />
203.208.46.29 tc.v4.cache8.c.youtube.com<br />
203.208.46.29 tc.v5.cache8.c.youtube.com<br />
203.208.46.29 tc.v6.cache8.c.youtube.com<br />
203.208.46.29 tc.v7.cache8.c.youtube.com<br />
203.208.46.29 tc.v8.cache8.c.youtube.com<br />
203.208.46.29 tc.v9.cache8.c.youtube.com<br />
203.208.46.29 tc.v10.cache8.c.youtube.com<br />
203.208.46.29 tc.v11.cache8.c.youtube.com<br />
203.208.46.29 tc.v12.cache8.c.youtube.com<br />
203.208.46.29 tc.v13.cache8.c.youtube.com<br />
203.208.46.29 tc.v14.cache8.c.youtube.com<br />
203.208.46.29 tc.v15.cache8.c.youtube.com<br />
203.208.46.29 tc.v16.cache8.c.youtube.com<br />
203.208.46.29 tc.v17.cache8.c.youtube.com<br />
203.208.46.29 tc.v18.cache8.c.youtube.com<br />
203.208.46.29 tc.v19.cache8.c.youtube.com<br />
203.208.46.29 tc.v20.cache8.c.youtube.com<br />
203.208.46.29 tc.v21.cache8.c.youtube.com<br />
203.208.46.29 tc.v22.cache8.c.youtube.com<br />
203.208.46.29 tc.v23.cache8.c.youtube.com<br />
203.208.46.29 tc.v24.cache8.c.youtube.com<br />
203.208.46.29 v1.lscache1.c.youtube.com<br />
203.208.46.29 v2.lscache1.c.youtube.com<br />
203.208.46.29 v3.lscache1.c.youtube.com<br />
203.208.46.29 v4.lscache1.c.youtube.com<br />
203.208.46.29 v5.lscache1.c.youtube.com<br />
203.208.46.29 v6.lscache1.c.youtube.com<br />
203.208.46.29 v7.lscache1.c.youtube.com<br />
203.208.46.29 v8.lscache1.c.youtube.com<br />
203.208.46.29 v9.lscache1.c.youtube.com<br />
203.208.46.29 v10.lscache1.c.youtube.com<br />
203.208.46.29 v11.lscache1.c.youtube.com<br />
203.208.46.29 v12.lscache1.c.youtube.com<br />
203.208.46.29 v13.lscache1.c.youtube.com<br />
203.208.46.29 v14.lscache1.c.youtube.com<br />
203.208.46.29 v15.lscache1.c.youtube.com<br />
203.208.46.29 v16.lscache1.c.youtube.com<br />
203.208.46.29 v17.lscache1.c.youtube.com<br />
203.208.46.29 v18.lscache1.c.youtube.com<br />
203.208.46.29 v19.lscache1.c.youtube.com<br />
203.208.46.29 v20.lscache1.c.youtube.com<br />
203.208.46.29 v21.lscache1.c.youtube.com<br />
203.208.46.29 v22.lscache1.c.youtube.com<br />
203.208.46.29 v23.lscache1.c.youtube.com<br />
203.208.46.29 v24.lscache1.c.youtube.com<br />
203.208.46.29 v1.lscache2.c.youtube.com<br />
203.208.46.29 v2.lscache2.c.youtube.com<br />
203.208.46.29 v3.lscache2.c.youtube.com<br />
203.208.46.29 v4.lscache2.c.youtube.com<br />
203.208.46.29 v5.lscache2.c.youtube.com<br />
203.208.46.29 v6.lscache2.c.youtube.com<br />
203.208.46.29 v7.lscache2.c.youtube.com<br />
203.208.46.29 v8.lscache2.c.youtube.com<br />
203.208.46.29 v9.lscache2.c.youtube.com<br />
203.208.46.29 v10.lscache2.c.youtube.com<br />
203.208.46.29 v11.lscache2.c.youtube.com<br />
203.208.46.29 v12.lscache2.c.youtube.com<br />
203.208.46.29 v13.lscache2.c.youtube.com<br />
203.208.46.29 v14.lscache2.c.youtube.com<br />
203.208.46.29 v15.lscache2.c.youtube.com<br />
203.208.46.29 v16.lscache2.c.youtube.com<br />
203.208.46.29 v17.lscache2.c.youtube.com<br />
203.208.46.29 v18.lscache2.c.youtube.com<br />
203.208.46.29 v19.lscache2.c.youtube.com<br />
203.208.46.29 v20.lscache2.c.youtube.com<br />
203.208.46.29 v21.lscache2.c.youtube.com<br />
203.208.46.29 v22.lscache2.c.youtube.com<br />
203.208.46.29 v23.lscache2.c.youtube.com<br />
203.208.46.29 v24.lscache2.c.youtube.com<br />
203.208.46.29 v1.lscache3.c.youtube.com<br />
203.208.46.29 v2.lscache3.c.youtube.com<br />
203.208.46.29 v3.lscache3.c.youtube.com<br />
203.208.46.29 v4.lscache3.c.youtube.com<br />
203.208.46.29 v5.lscache3.c.youtube.com<br />
203.208.46.29 v6.lscache3.c.youtube.com<br />
203.208.46.29 v7.lscache3.c.youtube.com<br />
203.208.46.29 v8.lscache3.c.youtube.com<br />
203.208.46.29 v9.lscache3.c.youtube.com<br />
203.208.46.29 v10.lscache3.c.youtube.com<br />
203.208.46.29 v11.lscache3.c.youtube.com<br />
203.208.46.29 v12.lscache3.c.youtube.com<br />
203.208.46.29 v13.lscache3.c.youtube.com<br />
203.208.46.29 v14.lscache3.c.youtube.com<br />
203.208.46.29 v15.lscache3.c.youtube.com<br />
203.208.46.29 v16.lscache3.c.youtube.com<br />
203.208.46.29 v17.lscache3.c.youtube.com<br />
203.208.46.29 v18.lscache3.c.youtube.com<br />
203.208.46.29 v19.lscache3.c.youtube.com<br />
203.208.46.29 v20.lscache3.c.youtube.com<br />
203.208.46.29 v21.lscache3.c.youtube.com<br />
203.208.46.29 v22.lscache3.c.youtube.com<br />
203.208.46.29 v23.lscache3.c.youtube.com<br />
203.208.46.29 v24.lscache3.c.youtube.com<br />
203.208.46.29 v1.lscache4.c.youtube.com<br />
203.208.46.29 v2.lscache4.c.youtube.com<br />
203.208.46.29 v3.lscache4.c.youtube.com<br />
203.208.46.29 v4.lscache4.c.youtube.com<br />
203.208.46.29 v5.lscache4.c.youtube.com<br />
203.208.46.29 v6.lscache4.c.youtube.com<br />
203.208.46.29 v7.lscache4.c.youtube.com<br />
203.208.46.29 v8.lscache4.c.youtube.com<br />
203.208.46.29 v9.lscache4.c.youtube.com<br />
203.208.46.29 v10.lscache4.c.youtube.com<br />
203.208.46.29 v11.lscache4.c.youtube.com<br />
203.208.46.29 v12.lscache4.c.youtube.com<br />
203.208.46.29 v13.lscache4.c.youtube.com<br />
203.208.46.29 v14.lscache4.c.youtube.com<br />
203.208.46.29 v15.lscache4.c.youtube.com<br />
203.208.46.29 v16.lscache4.c.youtube.com<br />
203.208.46.29 v17.lscache4.c.youtube.com<br />
203.208.46.29 v18.lscache4.c.youtube.com<br />
203.208.46.29 v19.lscache4.c.youtube.com<br />
203.208.46.29 v20.lscache4.c.youtube.com<br />
203.208.46.29 v21.lscache4.c.youtube.com<br />
203.208.46.29 v22.lscache4.c.youtube.com<br />
203.208.46.29 v23.lscache4.c.youtube.com<br />
203.208.46.29 v24.lscache4.c.youtube.com<br />
203.208.46.29 v1.lscache5.c.youtube.com<br />
203.208.46.29 v2.lscache5.c.youtube.com<br />
203.208.46.29 v3.lscache5.c.youtube.com<br />
203.208.46.29 v4.lscache5.c.youtube.com<br />
203.208.46.29 v5.lscache5.c.youtube.com<br />
203.208.46.29 v6.lscache5.c.youtube.com<br />
203.208.46.29 v7.lscache5.c.youtube.com<br />
203.208.46.29 v8.lscache5.c.youtube.com<br />
203.208.46.29 v9.lscache5.c.youtube.com<br />
203.208.46.29 v10.lscache5.c.youtube.com<br />
203.208.46.29 v11.lscache5.c.youtube.com<br />
203.208.46.29 v12.lscache5.c.youtube.com<br />
203.208.46.29 v13.lscache5.c.youtube.com<br />
203.208.46.29 v14.lscache5.c.youtube.com<br />
203.208.46.29 v15.lscache5.c.youtube.com<br />
203.208.46.29 v16.lscache5.c.youtube.com<br />
203.208.46.29 v17.lscache5.c.youtube.com<br />
203.208.46.29 v18.lscache5.c.youtube.com<br />
203.208.46.29 v19.lscache5.c.youtube.com<br />
203.208.46.29 v20.lscache5.c.youtube.com<br />
203.208.46.29 v21.lscache5.c.youtube.com<br />
203.208.46.29 v22.lscache5.c.youtube.com<br />
203.208.46.29 v23.lscache5.c.youtube.com<br />
203.208.46.29 v24.lscache5.c.youtube.com<br />
203.208.46.29 v1.lscache6.c.youtube.com<br />
203.208.46.29 v2.lscache6.c.youtube.com<br />
203.208.46.29 v3.lscache6.c.youtube.com<br />
203.208.46.29 v4.lscache6.c.youtube.com<br />
203.208.46.29 v5.lscache6.c.youtube.com<br />
203.208.46.29 v6.lscache6.c.youtube.com<br />
203.208.46.29 v7.lscache6.c.youtube.com<br />
203.208.46.29 v8.lscache6.c.youtube.com<br />
203.208.46.29 v9.lscache6.c.youtube.com<br />
203.208.46.29 v10.lscache6.c.youtube.com<br />
203.208.46.29 v11.lscache6.c.youtube.com<br />
203.208.46.29 v12.lscache6.c.youtube.com<br />
203.208.46.29 v13.lscache6.c.youtube.com<br />
203.208.46.29 v14.lscache6.c.youtube.com<br />
203.208.46.29 v15.lscache6.c.youtube.com<br />
203.208.46.29 v16.lscache6.c.youtube.com<br />
203.208.46.29 v17.lscache6.c.youtube.com<br />
203.208.46.29 v18.lscache6.c.youtube.com<br />
203.208.46.29 v19.lscache6.c.youtube.com<br />
203.208.46.29 v20.lscache6.c.youtube.com<br />
203.208.46.29 v21.lscache6.c.youtube.com<br />
203.208.46.29 v22.lscache6.c.youtube.com<br />
203.208.46.29 v23.lscache6.c.youtube.com<br />
203.208.46.29 v24.lscache6.c.youtube.com<br />
203.208.46.29 v1.lscache7.c.youtube.com<br />
203.208.46.29 v2.lscache7.c.youtube.com<br />
203.208.46.29 v3.lscache7.c.youtube.com<br />
203.208.46.29 v4.lscache7.c.youtube.com<br />
203.208.46.29 v5.lscache7.c.youtube.com<br />
203.208.46.29 v6.lscache7.c.youtube.com<br />
203.208.46.29 v7.lscache7.c.youtube.com<br />
203.208.46.29 v8.lscache7.c.youtube.com<br />
203.208.46.29 v9.lscache7.c.youtube.com<br />
203.208.46.29 v10.lscache7.c.youtube.com<br />
203.208.46.29 v11.lscache7.c.youtube.com<br />
203.208.46.29 v12.lscache7.c.youtube.com<br />
203.208.46.29 v13.lscache7.c.youtube.com<br />
203.208.46.29 v14.lscache7.c.youtube.com<br />
203.208.46.29 v15.lscache7.c.youtube.com<br />
203.208.46.29 v16.lscache7.c.youtube.com<br />
203.208.46.29 v17.lscache7.c.youtube.com<br />
203.208.46.29 v18.lscache7.c.youtube.com<br />
203.208.46.29 v19.lscache7.c.youtube.com<br />
203.208.46.29 v20.lscache7.c.youtube.com<br />
203.208.46.29 v21.lscache7.c.youtube.com<br />
203.208.46.29 v22.lscache7.c.youtube.com<br />
203.208.46.29 v23.lscache7.c.youtube.com<br />
203.208.46.29 v24.lscache7.c.youtube.com<br />
203.208.46.29 v1.lscache8.c.youtube.com<br />
203.208.46.29 v2.lscache8.c.youtube.com<br />
203.208.46.29 v3.lscache8.c.youtube.com<br />
203.208.46.29 v4.lscache8.c.youtube.com<br />
203.208.46.29 v5.lscache8.c.youtube.com<br />
203.208.46.29 v6.lscache8.c.youtube.com<br />
203.208.46.29 v7.lscache8.c.youtube.com<br />
203.208.46.29 v8.lscache8.c.youtube.com<br />
203.208.46.29 v9.lscache8.c.youtube.com<br />
203.208.46.29 v10.lscache8.c.youtube.com<br />
203.208.46.29 v11.lscache8.c.youtube.com<br />
203.208.46.29 v12.lscache8.c.youtube.com<br />
203.208.46.29 v13.lscache8.c.youtube.com<br />
203.208.46.29 v14.lscache8.c.youtube.com<br />
203.208.46.29 v15.lscache8.c.youtube.com<br />
203.208.46.29 v16.lscache8.c.youtube.com<br />
203.208.46.29 v17.lscache8.c.youtube.com<br />
203.208.46.29 v18.lscache8.c.youtube.com<br />
203.208.46.29 v19.lscache8.c.youtube.com<br />
203.208.46.29 v20.lscache8.c.youtube.com<br />
203.208.46.29 v21.lscache8.c.youtube.com<br />
203.208.46.29 v22.lscache8.c.youtube.com<br />
203.208.46.29 v23.lscache8.c.youtube.com<br />
203.208.46.29 v24.lscache8.c.youtube.com
</p></blockquote>
<p>参考:<br />
 1. <a href="http://blog.xiaohai.co/archives/youtube-gfw-hosts/">修改hosts看youtube</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/07/anti-gfw-hosts-google-plus-youtube/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>优化gitk字体显示</title>
		<link>http://wifihack.net/blog/2011/06/gitk-font/</link>
		<comments>http://wifihack.net/blog/2011/06/gitk-font/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 12:29:59 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Tech.Notes]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[gitk]]></category>
		<category><![CDATA[tk]]></category>
		<category><![CDATA[tk8.5]]></category>
		<category><![CDATA[wish]]></category>
		<category><![CDATA[wish8.5]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=598</guid>
		<description><![CDATA[gitk图形界面对于中文不友好，中文显示字体怪怪的， 由于gitk是用Tcl/Tk写的工具，默认使用Tk 8.4，不支持抗锯齿，因此字体显示很难看。在Tk 8.5支持了部分抗锯齿字体，修改gitk使用Tk 8.5后显示效果会好一点。 解决方案， 安装Tk8.5，并选为默认： sudo apt-get install tk8.5 sudo update-alternatives &#8211;config wish 选择 &#8220;–&#62; select /usr/bin/wish8.5&#8243;. 这样gitk的字体就会好看很多，一般习惯吧字体设置为&#8221;DejaVu Sans Mono&#8221;. 修改 ~/.gitk文件替换原来的字体: set mainfont    {{DejaVu Sans Mono} 9} set textfont    {{DejaVu Sans Mono} 9} set uifont      {{DejaVu Sans Mono} 9 bold} 如果想使用&#8221;文泉驿&#8221;字体也可以在~/.gitk里面配置，前提是你需要安装相关的字体。 sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy vim [...]]]></description>
			<content:encoded><![CDATA[<p>gitk图形界面对于中文不友好，中文显示字体怪怪的， 由于gitk是用Tcl/Tk写的工具，默认使用Tk 8.4，不支持抗锯齿，因此字体显示很难看。在Tk 8.5支持了部分抗锯齿字体，修改gitk使用Tk 8.5后显示效果会好一点。</p>
<p>解决方案， 安装Tk8.5，并选为默认：</p>
<blockquote><p>sudo apt-get install tk8.5<br />
sudo update-alternatives &#8211;config wish</p></blockquote>
<p>选择 &#8220;–&gt; select /usr/bin/wish8.5&#8243;.</p>
<p>这样gitk的字体就会好看很多，一般习惯吧字体设置为&#8221;DejaVu Sans Mono&#8221;. 修改 ~/.gitk文件替换原来的字体:</p>
<blockquote><p>
set mainfont    {{DejaVu Sans Mono} 9}<br />
set textfont    {{DejaVu Sans Mono} 9}<br />
set uifont      {{DejaVu Sans Mono} 9 bold}
</p></blockquote>
<p>如果想使用&#8221;文泉驿&#8221;字体也可以在~/.gitk里面配置，前提是你需要安装相关的字体。</p>
<blockquote><p>sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy<br />
vim ~/.gitk<br />
set mainfont {文泉驿等宽正黑 9}<br />
set textfont {文泉驿等宽正黑 9}<br />
set uifont {文泉驿等宽正黑 9 bold}</p></blockquote>
<p>&#8211; EOF &#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/06/gitk-font/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>git failed to push some refs</title>
		<link>http://wifihack.net/blog/2011/06/git-failed-to-push-some-refs/</link>
		<comments>http://wifihack.net/blog/2011/06/git-failed-to-push-some-refs/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 04:27:35 +0000</pubDate>
		<dc:creator>BianJiang</dc:creator>
				<category><![CDATA[Tech.Notes]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[pull]]></category>
		<category><![CDATA[push]]></category>

		<guid isPermaLink="false">http://wifihack.net/blog/?p=596</guid>
		<description><![CDATA[错误信息: bvcom@ubuntu:~/tmp/AR6kSDK.2.2.1.180$ git push Counting objects: 29, done. Delta compression using up to 4 threads. Compressing objects: 100% (12/12), done. Writing objects: 100% (15/15), 1.53 KiB, done. Total 15 (delta 7), reused 0 (delta 0) remote: error: refusing to update checked out branch: refs/heads/master remote: error: By default, updating the current branch in a non-bare [...]]]></description>
			<content:encoded><![CDATA[<p>错误信息:</p>
<blockquote><p>
bvcom@ubuntu:~/tmp/AR6kSDK.2.2.1.180$ git push<br />
Counting objects: 29, done.<br />
Delta compression using up to 4 threads.<br />
Compressing objects: 100% (12/12), done.<br />
Writing objects: 100% (15/15), 1.53 KiB, done.<br />
Total 15 (delta 7), reused 0 (delta 0)<br />
remote: error: refusing to update checked out branch: refs/heads/master<br />
remote: error: By default, updating the current branch in a non-bare repository<br />
remote: error: is denied, because it will make the index and work tree inconsistent<br />
remote: error: with what you pushed, and will require &#8216;git reset &#8211;hard&#8217; to match<br />
remote: error: the work tree to HEAD.<br />
remote: error:<br />
remote: error: You can set &#8216;receive.denyCurrentBranch&#8217; configuration variable to<br />
remote: error: &#8216;ignore&#8217; or &#8216;warn&#8217; in the remote repository to allow pushing into<br />
remote: error: its current branch; however, this is not recommended unless you<br />
remote: error: arranged to update its work tree to match what you pushed in some<br />
remote: error: other way.<br />
remote: error:<br />
remote: error: To squelch this message and still keep the default behaviour, set<br />
remote: error: &#8216;receive.denyCurrentBranch&#8217; configuration variable to &#8216;refuse&#8217;.<br />
To git://192.168.2.212/AR6kSDK.2.2.1.180/.git<br />
! [remote rejected] master -&gt; master (branch is currently checked out)<br />
error: failed to push some refs to &#8216;git://192.168.2.212/AR6kSDK.2.2.1.180/.git&#8217;
</p></blockquote>
<p>解决方法:<br />
这是由于git默认拒绝了push操作，需要进行设置，修改.git/config添加如下代码：</p>
<blockquote><p>
[receive]<br />
denyCurrentBranch = ignore
</p></blockquote>
<p>在初始化远程仓库时最好使用 git &#8211;bare init   而不要使用：git init<br />
如果使用了git init初始化，则远程仓库的目录下，也包含work tree，当本地仓库向远程仓库push时,   如果远程仓库正在push的分支上（如果当时不在push的分支，就没有问题）, 那么push后的结果不会反应在work tree上,  也即在远程仓库的目录下对应的文件还是之前的内容，必须得使用git reset &#8211;hard才能看到push后的内容.</p>
<p>1. http://hi.baidu.com/wbo4958/blog/item/8613d68619b0522666096eff.html<br />
2. http://hi.baidu.com/zkfarmer/blog/item/4a4bfd0899db95336a60fb42.html</p>
<p>&#8211;EOF&#8211;</p>
]]></content:encoded>
			<wfw:commentRss>http://wifihack.net/blog/2011/06/git-failed-to-push-some-refs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

