<?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>Zen Space &#187; 未分类</title>
	<atom:link href="http://reeze.cn/category/uncatagory/feed/" rel="self" type="application/rss+xml" />
	<link>http://reeze.cn</link>
	<description>php erlang javascript ruby python web linux mac os x</description>
	<lastBuildDate>Fri, 02 Jul 2010 07:19:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>让你的网站也像Gmail一样支持文件拖放上传-HTML5之File API</title>
		<link>http://reeze.cn/2010/04/25/make-your-site-drop-uploadable-with-html5s-file-api-like-gmail-does/</link>
		<comments>http://reeze.cn/2010/04/25/make-your-site-drop-uploadable-with-html5s-file-api-like-gmail-does/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 16:14:29 +0000</pubDate>
		<dc:creator>reeze</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[未分类]]></category>
		<category><![CDATA[File API]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[托放上传]]></category>

		<guid isPermaLink="false">http://reeze.cn/?p=175</guid>
		<description><![CDATA[如果你比较好奇，可以先从这里下载所有代码，也可以点击这里查看chrome下上传的demo，点这里查看firefox下的demo
前不久Gmail推出了支持拖拽的附件上传功能，试用了下还真不错，其实很久以前就在想能有直接拖拽附件的功能，多亏有了HTML5，Web应用越来越像客户端的应用了。
在好奇心驱使下，想了解一下Gmail到底是怎么做到的，了解了一下最新的HTML5 File API草案，这个接口主要提供的就是提供对文件对象的访问，别想歪了，这个接口是无法随意的访问系统里的文件的。他能做的就是访问&#60;input type=&#8221;file&#8221; /&#62;标签里所选择的文件，这些文件可以通过用户手动选择，或者是HTML5的拖放接口选中的文件。有兴趣的童鞋可以看看这个规范，还算比较简单。
下面简单看看接口定义几个对象。
FileList、File对象。
在HTML5中的&#60;input type=&#8221;file&#8221;  /&#62;标签中增加了mutilple属性，允许进行多文件选择。大家应该都知道一般上传标签中是不允许选择多个文件的。 新增的这个属性就是允许进行多个文件的选择（这个在桌面应用中也很常见）。&#60;input type=&#8221;file&#8221; multiple=&#8221;multiple&#8221; id=&#8221;file&#8221; /&#62;
下面是在Firebug中的输出
12345&#62;&#62;&#62; var f = document.getElementById&#40;&#34;file&#34;&#41;
&#62;&#62;&#62; f.files
FileList0=File length=1 // 选中的文件数量
&#62;&#62;&#62; f.files&#91;0&#93;
FilefileName=es.dll fileSize=271360
FileList对象就是用户选择的所有文件的对象表示，如果是通过input标签选择的，就可以通过上面代码所示的方法进行访问，File对象就可以刚才选择的某个文件的信息，如上面的代码所示，主要可以得到所选中的文件名以及文件大小信息。
你可能在想只能得到这些信息到底有什么用呢？都没有办法读取文件内容，这就得提到规范中的FileReader接口了，这个接口就是用来读取File对象文件的。
在File API规范中提到File API主要是和其他的接口协同合作。比如XMLHttpRequest (这个新接口支持通过xhr的send()方法发送File对象)， DataTransfer(也就是HTML5中的拖拽接口 )， 以及Web Worksers(这个主要是异步脚本执行，相当于给JS提供了“多线程”脚本执行能力，并且支持通过postMessage()进行“线程间通信”)，感兴趣的，可以看看这篇日志，以及这篇。
目前能实现这样的效果的方式主要有如下几种：

Gmail中提到的这两个浏览器都支持拖放接口，托放以后可以直接通过托放事件的DataTransfer属性访问到本次托放是关联的文件对象列表FileList,然后通过XMLHttpRequest的send方法将File对象发送到服务器
在Chrome下支持直接将文件拖放到文件选择控件上，就相当于直接选择了文件。这时可以通过&#60;input type=&#8221;file&#8221; /&#62;DOM对象的files属性访问到被托放进来的文件列表对象，然后也可以通过Ajax将文件对象发送到服务器，通过将文件选择控件透明度降低也可以实现Gmail类似的效果。 在Chrome因为可以直接通过托拽的方式让文件选择控件“赋值”，此时也可以通过一个iframe加表单的方式将数据发送到服务器。
在Firefox3.6下可以通过FileReader直接读取到文件的内容，然后直接将文件内容发送到服务器端(可以参考这个例子，这是个不完整的例子，直接浏览是看不到效果的，查看源代码你就会懂的。）

下面就来看看Gmail到底是怎么做到的吧。
本来想通过Firebug的概况功能来捕捉到在托拽期间的脚本执行情况，比如：


但是脚本执行里压根没有找到ajax相关的函数调用，可能是因为firebug还不支持监控页面里嵌入的iframe中的脚本执行跟踪，这也说明本次上传肯定是在某个iframe中完成的。，那就直接监听网络吧，托拽上传一个附件时查看网络情况，发现附件是通过下面的ajax post过去的：

大家注意看，是通过ajax post方式将附件POST到服务器的，



可以看出Gmail在firefox下不是通过表单直接提交实现的。在chrome下的开发人员工具有点简单，无法看到网络情况，我也懒的再去抓包看了，估计是使用透明&#60;input type=&#8221;file&#8221; /&#62;+ajax方式实现的。
在Gmail支持托拽的声明中提到目前只支持Chrome 2+以及FireFox3.6+。虽然这两个浏览器都支持HTML5，但是对于所有规范的支持程度都是不一样的，并且规范也还不是正式规范。在Firefox3.6的release note中提到：
Support for new DOM and HTML5 specifications including the Drag &#38; Drop API and the File API, [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>如果你比较好奇，可以先从<a href="http://labs.reeze.cn/labs/HTML5/FileAPI/FileAPI_Test.zip">这里下载所有代码</a>，也可以点击这里<a href="http://labs.reeze.cn/labs/HTML5/FileAPI/chrome_drop_upload.html">查看chrome下上传的demo</a>，点这里<a href="http://labs.reeze.cn/labs/HTML5/FileAPI/firefox36_drop_upload.html">查看firefox下的demo</a></p></blockquote>
<p>前不久<a href="http://net.chinabyte.com/395/11221395.shtml">Gmail推出了支持拖拽的附件上传功能</a>，试用了下还真不错，其实很久以前就在想能有直接拖拽附件的功能，多亏有了HTML5，Web应用越来越像客户端的应用了。</p>
<p>在好奇心驱使下，想了解一下Gmail到底是怎么做到的，了解了一下最新的<a href="http://www.w3.org/TR/FileAPI">HTML5 File API草案</a>，这个接口主要提供的就是提供对文件对象的访问，别想歪了，这个接口是无法随意的访问系统里的文件的。他能做的就是访问&lt;input type=&#8221;file&#8221; /&gt;标签里所选择的文件，这些文件可以通过用户手动选择，或者是HTML5的拖放接口选中的文件。有兴趣的童鞋可以看看这个规范，还算比较简单。</p>
<p>下面简单看看接口定义几个对象。</p>
<p>FileList、File对象。</p>
<p>在HTML5中的&lt;input type=&#8221;file&#8221;  /&gt;标签中增加了mutilple属性，允许进行多文件选择。大家应该都知道一般上传标签中是不允许选择多个文件的。 新增的这个属性就是允许进行多个文件的选择（这个在桌面应用中也很常见）。&lt;input type=&#8221;file&#8221; <strong>multiple=&#8221;multiple&#8221;</strong> id=&#8221;file&#8221; /&gt;</p>
<p>下面是在Firebug中的输出</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:97%;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&gt;&gt;&gt;</span> <span style="color: #003366; font-weight: bold;">var</span> f <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;file&quot;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #339933;">&gt;&gt;&gt;</span> f.<span style="color: #660066;">files</span><br />
FileList0<span style="color: #339933;">=</span>File length<span style="color: #339933;">=</span><span style="color: #CC0000;">1</span> <span style="color: #006600; font-style: italic;">// 选中的文件数量</span><br />
<span style="color: #339933;">&gt;&gt;&gt;</span> f.<span style="color: #660066;">files</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><br />
FilefileName<span style="color: #339933;">=</span>es.<span style="color: #660066;">dll</span> fileSize<span style="color: #339933;">=</span><span style="color: #CC0000;">271360</span></div></td></tr></tbody></table></div>
<p>FileList对象就是用户选择的所有文件的对象表示，如果是通过input标签选择的，就可以通过上面代码所示的方法进行访问，File对象就可以刚才选择的某个文件的信息，如上面的代码所示，主要可以得到所选中的文件名以及文件大小信息。</p>
<p>你可能在想只能得到这些信息到底有什么用呢？都没有办法读取文件内容，这就得提到规范中的FileReader接口了，这个接口就是用来读取File对象文件的。</p>
<p>在<a href="http://www.w3.org/TR/FileAPI">File API规范</a>中提到File API主要是和其他的接口协同合作。比如XMLHttpRequest (这个新接口支持通过xhr的send()方法发送File对象)， DataTransfer(也就是HTML5中的拖拽接口 )， 以及<a href="http://dev.w3.org/html5/workers">Web Worksers</a>(这个主要是异步脚本执行，相当于给JS提供了“多线程”脚本执行能力，并且支持通过postMessage()进行“线程间通信”)，感兴趣的，可以看看<a href="http://www.v-ec.com/dh20156/article.asp?id=242">这篇日志</a>，以及<a href="http://feedproxy.google.com/~r/webbang/~3/_usD4yheDqI">这篇</a>。</p>
<p>目前能实现这样的效果的方式主要有如下几种：</p>
<ul>
<li>Gmail中提到的这两个浏览器都支持拖放接口，托放以后可以直接通过托放事件的DataTransfer属性访问到本次托放是关联的文件对象列表FileList,然后通过XMLHttpRequest的send方法将File对象发送到服务器</li>
<li>在Chrome下支持直接将文件拖放到文件选择控件上，就相当于直接选择了文件。这时可以通过&lt;input type=&#8221;file&#8221; /&gt;DOM对象的files属性访问到被托放进来的文件列表对象，然后也可以通过Ajax将文件对象发送到服务器，通过将文件选择控件透明度降低也可以实现Gmail类似的效果。 在Chrome因为可以直接通过托拽的方式让文件选择控件“赋值”，此时也可以通过一个iframe加表单的方式将数据发送到服务器。</li>
<li>在Firefox3.6下可以通过FileReader直接读取到文件的内容，然后直接将文件内容发送到服务器端(可以参考<a href="http://labs.reeze.cn/labs/HTML5/FileAPI/index.html">这个例子</a>，这是个不完整的例子，直接浏览是看不到效果的，查看源代码你就会懂的。）</li>
</ul>
<p>下面就来看看Gmail到底是怎么做到的吧。</p>
<p>本来想通过Firebug的概况功能来捕捉到在托拽期间的脚本执行情况，比如：</p>
<p><a href="http://reeze.cn/wp-content/uploads/2010/04/screenshot1.png"><img class="aligncenter size-full wp-image-192" title="screenshot" src="http://reeze.cn/wp-content/uploads/2010/04/screenshot1.png" alt="" width="309" height="307" /></a><a href="http://reeze.cn/wp-content/uploads/2010/04/screenshot.png"><br />
</a></p>
<p>但是脚本执行里压根没有找到ajax相关的函数调用，可能是因为firebug还不支持监控页面里嵌入的iframe中的脚本执行跟踪，这也说明本次上传肯定是在某个iframe中完成的。，那就直接监听网络吧，托拽上传一个附件时查看网络情况，发现附件是通过下面的ajax post过去的：</p>
<p style="text-align: center;"><a href="http://reeze.cn/wp-content/uploads/2010/04/Compose-Mail-reeze.xia@gmail.com-Gmail1.jpg"><img class="aligncenter size-full wp-image-191" title="Compose Mail - reeze.xia@gmail.com - Gmail" src="http://reeze.cn/wp-content/uploads/2010/04/Compose-Mail-reeze.xia@gmail.com-Gmail1.jpg" alt="" width="472" height="474" /></a></p>
<p>大家注意看，是通过ajax post方式将附件POST到服务器的，</p>
<p><a href="http://reeze.cn/wp-content/uploads/2010/04/Gmail-11.jpg"><img class="aligncenter size-full wp-image-190" title="Gmail-1" src="http://reeze.cn/wp-content/uploads/2010/04/Gmail-11.jpg" alt="" width="368" height="322" /></a></p>
<p><a href="http://reeze.cn/wp-content/uploads/2010/04/Compose-Mail-reeze.xia@gmail.com-Gmail-31.jpg"><img class="aligncenter size-full wp-image-189" title="Compose Mail - reeze.xia@gmail.com - Gmail-3" src="http://reeze.cn/wp-content/uploads/2010/04/Compose-Mail-reeze.xia@gmail.com-Gmail-31.jpg" alt="" width="337" height="277" /></a><a href="http://reeze.cn/wp-content/uploads/2010/04/Compose-Mail-reeze.xia@gmail.com-Gmail-3.jpg"><br />
</a></p>
<p>可以看出Gmail在firefox下不是通过表单直接提交实现的。在chrome下的开发人员工具有点简单，无法看到网络情况，我也懒的再去抓包看了，估计是使用透明&lt;input type=&#8221;file&#8221; /&gt;+ajax方式实现的。</p>
<p>在Gmail支持托拽的声明中提到目前只支持Chrome 2+以及FireFox3.6+。虽然这两个浏览器都支持HTML5，但是对于所有规范的支持程度都是不一样的，并且规范也还不是正式规范。在Firefox3.6的release note中提到：</p>
<p>Support for new DOM and HTML5 specifications including the Drag &amp; Drop API and the File API, which allow for more interactive web pages.</p>
<p>开始支持了HTML5的拖拽接口以及File API。</p>
<hr />下面根据浏览器以及HTML5的规范整理出两个浏览器下实现类似Gmail 上传附件的代码。</p>
<p><a href="http://reeze.cn/wp-content/uploads/2010/04/14.jpg"><img class="aligncenter size-full wp-image-188" title="14" src="http://reeze.cn/wp-content/uploads/2010/04/14.jpg" alt="" width="569" height="319" /></a></p>
<p>点击<a style="font-size: 1.3em;" href="http://labs.reeze.cn/labs/HTML5/FileAPI/FileAPI_Test.zip">这里下载所有代码</a>，有兴趣的童鞋查看源代码就知道怎么回事了，有一定的注释：）</p>
<p>也可以点击这里<a href="http://labs.reeze.cn/labs/HTML5/FileAPI/chrome_drop_upload.html">查看chrome下上传的demo</a>，点这里<a href="http://labs.reeze.cn/labs/HTML5/FileAPI/firefox36_drop_upload.html">查看firefox下的demo</a>，之所以分开是为了简单起见，当然你真的想要给你的网站提供托拽上传功能，你就得自己去同时兼容这两个浏览器啦，相信这也不是件困难的事情：）</p>
]]></content:encoded>
			<wfw:commentRss>http://reeze.cn/2010/04/25/make-your-site-drop-uploadable-with-html5s-file-api-like-gmail-does/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>开启Mac OS X Snow Leopard的NTFS原生读写</title>
		<link>http://reeze.cn/2010/01/24/guide-enable-native-ntfs-readwrite-in-snow-leopard/</link>
		<comments>http://reeze.cn/2010/01/24/guide-enable-native-ntfs-readwrite-in-snow-leopard/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 10:19:31 +0000</pubDate>
		<dc:creator>reeze</dc:creator>
				<category><![CDATA[Hackintosh]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[未分类]]></category>
		<category><![CDATA[MacFUSE]]></category>
		<category><![CDATA[NTFS]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Snow Leopard]]></category>

		<guid isPermaLink="false">http://reeze.cn/?p=165</guid>
		<description><![CDATA[在Mac OS X下一直使用MacFUSE和NTFS-3G来访问ntfs分区，这次装了Snow leopard 10.6.2之后出现fusefs.kext can&#8217;t load的错误，从官方得知目前macfuse在snow leopard下有问题，在网上看到这篇贴子提到Snow Leopard其实原生就支持NTFS分区的读写，真是个好消息。
开启的方法有两种：
一种是在/etc/fstab文件里增加挂载选项，基本步骤是：
1，卸载NTFS-3G或者其他读写ntfs分区的软件
2，打开终端$ diskutil info /Volumes/分区名 或者使用磁盘工具获得分区的UUID
3，编辑/etc/fstab文件，增加一行 UUID=分区的UUID none ntfs rw
4，如果还有其他的分区要挂载，则继续上面的步骤2－3增加其他分区
这种方式比较烦琐，第二种方法就比较简单。
大家应该都注意过系统已启动就会自动挂载所有的ntfs分区，这个命令在/sbin/mount_ntfs
这个方法所要做的就是给这个默认的挂载命令增加可读写参数，按如下步骤在终端命令行操作：
$ sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig
$ sudo vim /sbin/mount_ntfs
编辑这个文件，加入如下内容：
#!/bin/sh
/sbin/mount_ntfs.orig -o rw &#8220;$@“ ＃这里调用默认的挂载命令，不过增加了 rw参数，开启读写
保存这个文件，然后：
$ sudo chown root:wheel /sbin/mount_ntfs
$ sudo chmod 755 /sbin/mount_ntfs
然后重启，启动后，你应该就能得到一个可以自由读写的ntfs分区了。不过声明一点，这个功能据说不稳定，不知道是因为版权原因还是真的很不稳定，苹果默认没有开启这个功能。不过我更相信苹果。
＝＝＝＝＝＝＝＝
后话：刚好公司配了一台Dell E6400,偶尔看到有人在上面装了一个Leopard,于是手痒也在上面装了一个，如果有人也有这台笔记本也可以试试看，不过我装好的系统还是有问题：
1，触摸屏一碰就乱跑，我直接禁用就好了，反正也不喜欢用。
2，关机和重启不断电，每天关机的次数也有限，也就无所谓了。
3，声音控制不了，只能在具体的应用程序里控制。
其实问题还是挺多的，不过基本上的使用我觉得还是没什么问题的，触摸屏的问题比较烦人，还好我不喜欢用触摸屏。如果有人也想尝试可以试试看。我用的安装文件是 Snow_Leopard_10.6.1-10.6.2_SSE2_SSE3_Intel_AMD_by_Hazard.iso, 至于安装方法PCbeta上有很多的教程可以参考，摸索一下大概都没有什么问题，安装的时候一定要做好备份，因为我到目前已经因为装Mac OS X丢失了不下10次数据了，大部分情况下都是分区被合并。所以一定要小心一点。
]]></description>
			<content:encoded><![CDATA[<p>在Mac OS X下一直使用MacFUSE和NTFS-3G来访问ntfs分区，这次装了Snow leopard 10.6.2之后出现fusefs.kext can&#8217;t load的错误，从官方得知目前macfuse在snow leopard下有问题，在网上看到<a href="http://forums.macrumors.com/showthread.php?t=785376">这篇贴子</a>提到Snow Leopard其实原生就支持NTFS分区的读写，真是个好消息。</p>
<p>开启的方法有两种：<br />
一种是在/etc/fstab文件里增加挂载选项，基本步骤是：<br />
1，卸载NTFS-3G或者其他读写ntfs分区的软件<br />
2，打开终端$ diskutil info /Volumes/分区名 或者使用磁盘工具获得分区的UUID<br />
3，编辑/etc/fstab文件，增加一行 UUID=分区的UUID none ntfs rw<br />
4，如果还有其他的分区要挂载，则继续上面的步骤2－3增加其他分区</p>
<p>这种方式比较烦琐，第二种方法就比较简单。<br />
大家应该都注意过系统已启动就会自动挂载所有的ntfs分区，这个命令在/sbin/mount_ntfs<br />
这个方法所要做的就是给这个默认的挂载命令增加可读写参数，按如下步骤在终端命令行操作：<br />
$ sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig<br />
$ sudo vim /sbin/mount_ntfs<br />
编辑这个文件，加入如下内容：<br />
#!/bin/sh<br />
/sbin/mount_ntfs.orig -o rw &#8220;$@“ ＃这里调用默认的挂载命令，不过增加了 rw参数，开启读写</p>
<p>保存这个文件，然后：<br />
$ sudo chown root:wheel /sbin/mount_ntfs<br />
$ sudo chmod 755 /sbin/mount_ntfs</p>
<p>然后重启，启动后，你应该就能得到一个可以自由读写的ntfs分区了。不过声明一点，这个功能据说不稳定，不知道是因为版权原因还是真的很不稳定，苹果默认没有开启这个功能。不过我更相信苹果。</p>
<p>＝＝＝＝＝＝＝＝<br />
后话：刚好公司配了一台Dell E6400,偶尔看到有人在上面<a href="http://bbs.pcbeta.com/archiver/tid-625920.html">装了一个Leopard</a>,于是手痒也在上面装了一个，如果有人也有这台笔记本也可以试试看，不过我装好的系统还是有问题：</p>
<p>1，触摸屏一碰就乱跑，我直接禁用就好了，反正也不喜欢用。<br />
2，关机和重启不断电，每天关机的次数也有限，也就无所谓了。<br />
3，声音控制不了，只能在具体的应用程序里控制。<br />
其实问题还是挺多的，不过基本上的使用我觉得还是没什么问题的，触摸屏的问题比较烦人，还好我不喜欢用触摸屏。如果有人也想尝试可以试试看。我用的安装文件是 Snow_Leopard_10.6.1-10.6.2_SSE2_SSE3_Intel_AMD_by_Hazard.iso, 至于安装方法<a href="http://bbs.pcbeta.com/forum-185-1.html">PCbeta</a>上有很多的教程可以参考，摸索一下大概都没有什么问题，安装的时候一定要做好备份，因为我到目前已经因为装Mac OS X丢失了不下10次数据了，大部分情况下都是分区被合并。所以一定要小心一点。</p>
]]></content:encoded>
			<wfw:commentRss>http://reeze.cn/2010/01/24/guide-enable-native-ntfs-readwrite-in-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在2009的尾巴上</title>
		<link>http://reeze.cn/2009/12/31/at-the-tail-of-2009/</link>
		<comments>http://reeze.cn/2009/12/31/at-the-tail-of-2009/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 15:59:06 +0000</pubDate>
		<dc:creator>reeze</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[2009]]></category>

		<guid isPermaLink="false">http://reeze.cn/?p=157</guid>
		<description><![CDATA[09年最后一篇日志，充个数吧：）
哈哈，刚买了本《Orange S: 一个操作系统的实现》，这一年下来买了挺多的书，也从图书馆借了很多的书（马上就要毕业了，再也享受不到学校图书馆丰富及时的藏书了，计划以后每个月发工资都买一本自己喜欢的书），发现我读书最大的问题是多而不精，拿一本好书就使劲的翻，很多书都是花几天就翻完了，但是读下来之后总觉得收获不够，一些很需要实践的部分也没有及时联系，总感觉自己浮在表面上，只知其然。所以呢，这个2010年争取多读好书，踏踏实实的啃几本好书，然后就是要多动手啦。
计划2010年呢，能把耽搁很久的想法付诸行动，做出点东西来。希望有个好的开始吧！
Happy New Year!!!
]]></description>
			<content:encoded><![CDATA[<p>09年最后一篇日志，充个数吧：）</p>
<p>哈哈，刚买了本《<a href="http://www.douban.com/subject/3735649/">Orange S: 一个操作系统的实现</a>》，这一年下来买了挺多的书，也从图书馆借了很多的书（马上就要毕业了，再也享受不到学校图书馆丰富及时的藏书了，计划以后每个月发工资都买一本自己喜欢的书），发现我读书最大的问题是多而不精，拿一本好书就使劲的翻，很多书都是花几天就翻完了，但是读下来之后总觉得收获不够，一些很需要实践的部分也没有及时联系，总感觉自己浮在表面上，只知其然。所以呢，这个2010年争取多读好书，踏踏实实的啃几本好书，然后就是要多动手啦。</p>
<p>计划2010年呢，能把耽搁很久的想法付诸行动，做出点东西来。希望有个好的开始吧！</p>
<p>Happy New Year!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://reeze.cn/2009/12/31/at-the-tail-of-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>支持IPv6的Tunnelblick For Mac OS X OpenVPN客户端</title>
		<link>http://reeze.cn/2009/12/30/ipv6-enabled-tunnelblick-for-mac-os-x/</link>
		<comments>http://reeze.cn/2009/12/30/ipv6-enabled-tunnelblick-for-mac-os-x/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 05:20:15 +0000</pubDate>
		<dc:creator>reeze</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[未分类]]></category>
		<category><![CDATA[MacOSX]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://reeze.cn/?p=147</guid>
		<description><![CDATA[在yegle那里买了OpenVPN服务 ，用着还挺不错，我也在教育网，所以只能使用支持IPv6版的客户端，openvpn默认不支持IPv6,不过yegle提供了相应的IPv6补丁，在Linux下以及Windows下使用的都挺好，最近又在折腾电脑，装了个Snow Leopard，基本没什么问题了，除了我的ATI 2600 XT硬件加速暂时无解外其他的都挺爽，使用了yegle推荐的Tunnelblick, 总是连接不上，它提示让我查看日志，但是根本就找不到地方看日志，直接cd 到 Tunnelblick的包里面直接执行openvpn命令，提示不支持udp6 ，又是不支持 Ipv6，本想直接自己编译一个openvpn，但是想想那样就太不clean了，编译成app的话可以通用，还能共享给有需要的人多好啊，去google code checkout了一份代码，直接编译，错误百出，我是在Snow Leopard上编译的，仔细查看原来需要MacOSX10.4u的SDK 重新安装10.4的SDK还是未果，后来发现SDK的安装目录居然不一样。。自己手动拷贝过去也不行。。 切换到傲Leopard下安装，折腾了好久终于编译成功，废话太多了。呵呵，共享出来给需要的人吧：）
猛击这个连接 下载http://code.google.com/p/tunnelblick-ipv6/downloads/list
可惜的是yegle不再提供IPv6用户的续费了，不过我到期之后差不多也要从学校滚蛋了。
我提供的这个版本的tunnelblick的配置文件位置是  ~/Library/openvpn  最新版的配置放在 ~/Library/Application Support/Tunnelblick/Configuration目录里面。
马上2009年就要过去了。最近很久都没有更新日志了，其实之间也想写一些东西，但是都丢在草稿箱里没写完。论文还有很多没有写完，马上就要交了，要抵制住诱惑乖乖写论文。
]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://yegle.net" target="_blank">yegle</a>那里买了OpenVPN服务 ，用着还挺不错，我也在教育网，所以只能使用支持IPv6版的客户端，openvpn默认不支持IPv6,不过yegle提供了相应的<a href="http://github.com/jjo/openvpn-ipv6">IPv6补丁</a>，在Linux下以及Windows下使用的都挺好，最近又在折腾电脑，装了个Snow Leopard，基本没什么问题了，除了我的ATI 2600 XT硬件加速暂时无解外其他的都挺爽，使用了yegle推荐的<a href="http://code.google.com/p/tunnelblick/downloads/list">Tunnelblick</a>, 总是连接不上，它提示让我查看日志，但是根本就找不到地方看日志，直接cd 到 Tunnelblick的包里面直接执行openvpn命令，提示不支持udp6 ，又是不支持 Ipv6，本想直接自己编译一个openvpn，但是想想那样就太不clean了，编译成app的话可以通用，还能共享给有需要的人多好啊，去google code checkout了一份代码，直接编译，错误百出，我是在Snow Leopard上编译的，仔细查看原来需要MacOSX10.4u的SDK 重新安装10.4的SDK还是未果，后来发现SDK的安装目录居然不一样。。自己手动拷贝过去也不行。。 切换到傲Leopard下安装，折腾了好久终于编译成功，废话太多了。呵呵，共享出来给需要的人吧：）</p>
<p>猛击这个连接 下载<a href="http://code.google.com/p/tunnelblick-ipv6/downloads/list">http://code.google.com/p/tunnelblick-ipv6/downloads/list</a><br />
可惜的是yegle不再提供IPv6用户的续费了，不过我到期之后差不多也要从学校滚蛋了。<br />
我提供的这个版本的tunnelblick的配置文件位置是  ~/Library/openvpn  最新版的配置放在 ~/Library/Application Support/Tunnelblick/Configuration目录里面。</p>
<p>马上2009年就要过去了。最近很久都没有更新日志了，其实之间也想写一些东西，但是都丢在草稿箱里没写完。论文还有很多没有写完，马上就要交了，要抵制住诱惑乖乖写论文。</p>
]]></content:encoded>
			<wfw:commentRss>http://reeze.cn/2009/12/30/ipv6-enabled-tunnelblick-for-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lockerz邀请</title>
		<link>http://reeze.cn/2009/12/05/lockerz-invitation/</link>
		<comments>http://reeze.cn/2009/12/05/lockerz-invitation/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 03:44:09 +0000</pubDate>
		<dc:creator>reeze</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://reeze.cn/?p=121</guid>
		<description><![CDATA[刚上论坛发现Locker这个好玩的东西
Lockerz （http://www.lockerz.com/）是一个新型态的网站，它成立于09年3月，由美国最大的媒体公司之一美国有线电视公司Liberty Media投资建立，目标是整合影音、游戏、购物等多项服务。 网站为免费注册，但是现阶段只有被邀请的人才可以注册。
Lockerz怎么玩儿？
lockerz的积分点数叫做PTZ，好吧，你可以把它理解为何Q币是一类的东西
使用者只要每天登入(2PTZ) 、回答当日的问题(2PTZ以上,有时会加倍放送)
或邀请朋友加入(2PTZ) ，就可以赚取积分点数
这些点数是可以拿来换一些不错的东西，
例如Apple MacBook、Ipod nano、Ipodshuffle，甚至还有motocycle
依奖品本身价值，换取点数也不同。
目前2PTZ大约可以换取相当于1美金的东西，
例如旧版ipod shuffle(价值$50)100PTZ、ipodnano(价值$150)300PTZ等，
所以奖品并不难换。
刚加入的使用者，
会让你玩一个接方块的游戏，等于白送你美元的
在限定时间内,方块会一直掉下来,价值1PTZ至3PTZ，方块越小越值钱！
另外右下角还有一个DAILIES按钮，
点进去可以回答当日的问题。
每天都是一题随便可以回答的问题，
回答完就可以拿2~10PTZ。
更多的服务和功能还在完善之中……
如何加入Lockerz？
目前Lockerz只有通过邀请才能加入。需要的同学可以在下面留言，留下你的Email，目前已知QQ邮箱接收到邀请最快。
或者可以直接用留言时填写的Email。长时间没有收到的请告诉我一声，我会重新发送。
另外，邀请函有可能在你的垃圾邮件里。
接收到邀请的同学注册后可以再邀请他人，每邀请1位朋友可以获得2个PTZ，这也是获得PTZ的一种方式。
来看段视频吧：


]]></description>
			<content:encoded><![CDATA[<p>刚上论坛发现Locker这个好玩的东西</p>
<p>Lockerz （http://www.lockerz.com/）是一个新型态的网站，它成立于09年3月，由美国最大的媒体公司之一美国有线电视公司Liberty Media投资建立，目标是整合影音、游戏、购物等多项服务。 网站为免费注册，但是现阶段只有被邀请的人才可以注册。</p>
<p><span style="color: #993300;"><strong>Lockerz怎么玩儿？</strong></span></p>
<p>lockerz的积分点数叫做PTZ，好吧，你可以把它理解为何Q币是一类的东西<br />
使用者只要每天登入(2PTZ) 、回答当日的问题(2PTZ以上,有时会加倍放送)<br />
或邀请朋友加入(2PTZ) ，就可以赚取积分点数</p>
<p>这些点数是可以拿来换一些不错的东西，<br />
例如Apple MacBook、Ipod nano、Ipodshuffle，甚至还有motocycle<br />
依奖品本身价值，换取点数也不同。<br />
目前2PTZ大约可以换取相当于1美金的东西，<br />
例如旧版ipod shuffle(价值$50)100PTZ、ipodnano(价值$150)300PTZ等，<br />
所以奖品并不难换。<br />
刚加入的使用者，<br />
会让你玩一个接方块的游戏，等于白送你美元的<br />
在限定时间内,方块会一直掉下来,价值1PTZ至3PTZ，方块越小越值钱！</p>
<p>另外右下角还有一个DAILIES按钮，<br />
点进去可以回答当日的问题。<br />
每天都是一题随便可以回答的问题，<br />
回答完就可以拿2~10PTZ。</p>
<p>更多的服务和功能还在完善之中……</p>
<p><span style="color: #993300;"><strong>如何加入Lockerz？</strong></span></p>
<p>目前Lockerz只有通过邀请才能加入。需要的同学可以在下面留言，留下你的Email，目前已知QQ邮箱接收到邀请最快。<br />
或者可以直接用留言时填写的Email。长时间没有收到的请告诉我一声，我会重新发送。</p>
<p>另外，邀请函有可能在你的垃圾邮件里。</p>
<p>接收到邀请的同学注册后可以再邀请他人，每邀请1位朋友可以获得2个PTZ，这也是获得PTZ的一种方式。</p>
<p>来看段视频吧：</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="src" value="http://player.youku.com/player.php/sid/XMTM1NDMzMDY4/v.swf" /><param name="quality" value="high" /><embed type="application/x-shockwave-flash" width="480" height="400" src="http://player.youku.com/player.php/sid/XMTM1NDMzMDY4/v.swf" quality="high" align="middle"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="363" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="wmode" value="opaque" /><param name="src" value="http://www.tudou.com/v/p-eqropoLAE" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="363" src="http://www.tudou.com/v/p-eqropoLAE" wmode="opaque" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://reeze.cn/2009/12/05/lockerz-invitation/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->