<?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>我为峰 Kzz&#039;s Blog</title>
	<atom:link href="http://blog.k-zz.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.k-zz.com</link>
	<description>产品设计，编程，以及生活观察</description>
	<lastBuildDate>Tue, 06 Sep 2011 05:15:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>再开张</title>
		<link>http://blog.k-zz.com/reopen_2011_09/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reopen</link>
		<comments>http://blog.k-zz.com/reopen_2011_09/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 05:15:24 +0000</pubDate>
		<dc:creator>kzz</dc:creator>
				<category><![CDATA[杂谈]]></category>

		<guid isPermaLink="false">http://blog.k-zz.com/?p=73</guid>
		<description><![CDATA[关闭近两年后，终于又拿回原来的域名，重新开张。 这两年发生很多事情，我也从一个门外汉踏入了电子商务领域，做起了产品经理，收货颇丰。 在接下来的时间里，将会把所见所闻所思一一记录、分享。]]></description>
			<content:encoded><![CDATA[<p>关闭近两年后，终于又拿回原来的域名，重新开张。<br />
这两年发生很多事情，我也从一个门外汉踏入了电子商务领域，做起了产品经理，收货颇丰。<br />
在接下来的时间里，将会把所见所闻所思一一记录、分享。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.k-zz.com/reopen_2011_09/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>聚焦与移焦时改变文本域内容</title>
		<link>http://blog.k-zz.com/defaultvalue_2010_01/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=defaultvalue</link>
		<comments>http://blog.k-zz.com/defaultvalue_2010_01/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 16:07:08 +0000</pubDate>
		<dc:creator>kzz</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.k-zz.com/?p=56</guid>
		<description><![CDATA[输入框前端交互经常用到，总的来说有几个逻辑： 1、输入框显示默认字符，提供输入指引； 2、聚焦后移除默认字符，方便输入； 3、焦点转移后，若输入框没有字符，则恢复默认字符。 今天看到有同学在探讨，写个出来抛砖引玉。不知是否有更简便的。 首先想到： function clearText(field){ if (field.defaultValue == field.value) field.value = ''; else if (field.value =='') field.value = field.defaultValue; } 改良后省去几个字符，一行搞定（但牺牲了可读性） function clearText (f){ f.value = f.value == f.defaultValue ? '' : f.value &#124;&#124; f.defaultValue; } &#60;html&#62; &#60;head&#62; &#60;meta charset="utf-8"/&#62; &#60;title&#62; clearText &#60;/title&#62; &#60;meta http-equiv="X-UA-Compatible" content="IE=7"&#62; &#60;script type="text/javascript"&#62; function clearText (f){ f.value [...]]]></description>
			<content:encoded><![CDATA[<p>输入框前端交互经常用到，总的来说有几个逻辑：</p>
<p>1、输入框显示默认字符，提供输入指引；<br />
2、聚焦后移除默认字符，方便输入；<br />
3、焦点转移后，若输入框没有字符，则恢复默认字符。</p>
<p>今天看到有同学在探讨，写个出来抛砖引玉。不知是否有更简便的。</p>
<p>首先想到：<br />
<code>function clearText(field){</span><br />
   if (field.defaultValue == field.value) field.value = '';<br />
   else if (field.value =='') field.value = field.defaultValue;<br />
}</code></p>
<p>改良后省去几个字符，一行搞定（但牺牲了可读性）</p>
<p><code>function clearText (f){<br />
  f.value = f.value == f.defaultValue ? '' : f.value || f.defaultValue;<br />
}</code><br />
<span id="more-56"></span></p>
<p><code>&lt;html&gt;<br />
  &lt;head&gt;<br />
    &lt;meta charset="utf-8"/&gt;<br />
    &lt;title&gt; clearText &lt;/title&gt;<br />
    &lt;meta http-equiv="X-UA-Compatible" content="IE=7"&gt;<br />
    &lt;script type="text/javascript"&gt;<br />
    function clearText (f){<br />
      f.value = f.value == f.defaultValue ? '' : f.value || f.defaultValue;<br />
    }<br />
    &lt;/script&gt;</p>
<p>  &lt;/head&gt;<br />
  &lt;body&gt;<br />
    &lt;form&gt;<br />
      &lt;input type="text" value="默认字符" onfocus="clearText(this)" onblur="clearText(this)"/&gt;<br />
    &lt;/form&gt;<br />
  &lt;/body&gt;<br />
&lt;/html&gt;</code></p>
<p>示例：<br />
<script type="text/javascript">// <![CDATA[
        function clearText (f){f.value = f.value == f.defaultValue ? '' : f.value || f.defaultValue;}
// ]]&gt;</script></p>
<form>
<input onfocus="clearText(this)" onblur="clearText(this)" type="text" value="默认字符" /></form>
]]></content:encoded>
			<wfw:commentRss>http://blog.k-zz.com/defaultvalue_2010_01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript的奇技淫巧</title>
		<link>http://blog.k-zz.com/javascript-skill_2009_09/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=javascript-skill</link>
		<comments>http://blog.k-zz.com/javascript-skill_2009_09/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 08:35:45 +0000</pubDate>
		<dc:creator>kzz</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.k-zz.com/?p=46</guid>
		<description><![CDATA[JavaScript是一种非常灵活的脚本语言，看一些前辈的奇异代码，常常都会惊叹。举例说两个： 在需要把字符串转换为整形类型时，常用的方式是： parseInt('286') 一般的教科书都是这么教我们的，而且也鼓励这样的写法。可是还有一些好玩的方法，看起来就觉得过瘾，譬如这样： '286'&#60;&#60;0 &#60;&#60;是JavaScript的二进制位操作符。因为只有整数才能执行位移操作，对小数进行位移，JavaScript会把小数转换成整数再操作，“&#60;&#60;0”就是左移0位，相当于没移，这样就返回了相应的整数。 类似的做法还有： '286'&#124;0 这也是利用了JavaScript位操作符中的“按位或 &#124;”。 看起来很爽吧。但是这里面有些陷阱。 Javascript完全套用了Java的位运算符。这套运算符针对的是整数，但是对Javascript就“完全无用”，因为Javascript内部，所有数字都保存为双精度浮点数。如果使用它们的话，Javascript不得不将运算数先转为整数，然后再进行运算，这样就降低了速度。所以，奇技淫巧在必要的时候可以用，但不必滥用。 关于JS位操作符，可以参考一下： 位操作符 执行位操作时，操作符会将操作数看作一串二进制位(1和0)，而不是十进制、十六进制或八进制数字。例如，十进制的 9 就是二进制的 1001。位操作符在执行的时候会以二进制形式进行操作，但返回的值仍是标准的 JavaScript 数值。 表 2.4 JavaScript 位操作符总览 表 2.4 位操作符 操作符 用法 描述 按位与 a &#38; b 如果两个操作数对应位都是 1 的话则在该位返回 1。 按位或 a &#124; b 如果两个操作数对应位都是 0 的话则在该位返回 0。 按位异或 a ^ b 如果两个操作数对应位只有一个 1 的话则在该位返回 1。 求反 [...]]]></description>
			<content:encoded><![CDATA[<p>JavaScript是一种非常灵活的脚本语言，看一些前辈的奇异代码，常常都会惊叹。举例说两个：<br />
在需要把字符串转换为整形类型时，常用的方式是：</p>
<p><code>parseInt('286')</code></p>
<p>一般的教科书都是这么教我们的，而且也鼓励这样的写法。可是还有一些好玩的方法，看起来就觉得过瘾，譬如这样：</p>
<p><code>'286'&lt;&lt;0</code></p>
<p><code>&lt;&lt;</code>是JavaScript的二进制位操作符。因为只有整数才能执行位移操作，对小数进行位移，JavaScript会把小数转换成整数再操作，“&lt;&lt;0”就是左移0位，相当于没移，这样就返回了相应的整数。</p>
<p>类似的做法还有：</p>
<p><code>'286'|0</code></p>
<p>这也是利用了JavaScript位操作符中的“按位或 |”。</p>
<p>看起来很爽吧。但是这里面有些陷阱。<br />
<span id="more-46"></span></p>
<p>Javascript完全套用了Java的位运算符。这套运算符针对的是整数，但是对Javascript就“完全无用”，因为Javascript内部，所有数字都保存为双精度浮点数。如果使用它们的话，Javascript不得不将运算数先转为整数，然后再进行运算，这样就降低了速度。所以，奇技淫巧在必要的时候可以用，但不必滥用。</p>
<hr />
<p>关于JS位操作符，可以参考一下：</p>
<h2>位操作符</h2>
<p>执行位操作时，操作符会将操作数看作一串二进制位(1和0)，而不是十进制、十六进制或八进制数字。例如，十进制的 9 就是二进制的 1001。位操作符在执行的时候会以二进制形式进行操作，但返回的值仍是标准的 JavaScript 数值。</p>
<p>表 2.4 JavaScript 位操作符总览</p>
<p><strong>表 2.4 位操作符</strong></p>
<table border="2" cellpadding="5">
<tbody>
<tr>
<th align="left">操作符</th>
<th align="left">用法</th>
<th align="left">描述</th>
</tr>
<tr>
<td align="left">按位与</td>
<td align="left">a &amp; b</td>
<td align="left">如果两个操作数对应位都是 1 的话则在该位返回 1。</td>
</tr>
<tr>
<td align="left">按位或</td>
<td align="left">a | b</td>
<td align="left">如果两个操作数对应位都是 0 的话则在该位返回 0。</td>
</tr>
<tr>
<td align="left">按位异或</td>
<td align="left">a ^ b</td>
<td align="left">如果两个操作数对应位只有一个 1 的话则在该位返回 1。</td>
</tr>
<tr>
<td align="left">求反</td>
<td align="left">~ a</td>
<td align="left">反转操作数的每一位。</td>
</tr>
<tr>
<td align="left">左移</td>
<td align="left">a &lt;&lt; b</td>
<td align="left">将 a 的二进制形式左移 b 位。右面的空位补零。</td>
</tr>
<tr>
<td align="left">算术右移</td>
<td align="left">a &gt;&gt; b</td>
<td align="left">将 a 的二进制形式右移 b 位。忽略被移出的位。</td>
</tr>
<tr>
<td align="left">逻辑右移</td>
<td align="left">a &gt;&gt;&gt; b</td>
<td align="left">将 a 的二进制形式右移 b 位。忽略被移出的位，左侧补入 0。</td>
</tr>
</tbody>
</table>
<h4>位逻辑操作符</p>
<table border="0">
<tbody>
<tr>
<td align="left">实现版本</td>
<td align="left">Navigator 2.0</td>
</tr>
</tbody>
</table>
</h4>
<p>从原理上讲，位逻辑操作符的工作流程是这样的：</p>
<ul>
<li>将操作数转换为 32 位的整型数值并用二进制表示。</li>
<li>第一操作数的每一位与第二操作数的对应位配对：第一位对第一位，第二位对第二位，以此类推。</li>
<li>对每一对位应用操作符，最终结果按位组合起来。</li>
</ul>
<p>例如，9 的二进制表示为 1001，15 的二进制表示为 1111。所以如果对这两个数应用位逻辑操作符，结果应该像下面这样：</p>
<ul>
<li>15 &amp; 9 结果为 9 (1111 &amp; 1001 = 1001)</li>
<li>15 | 9 为 15 (1111 | 1001 = 1111)</li>
<li>15 ^ 9 为 6 (1111 ^ 1001 = 0110)</li>
</ul>
<h4>移位操作符</p>
<table border="0">
<tbody>
<tr>
<td align="left">实现版本</td>
<td align="left">Navigator 2.0</td>
</tr>
</tbody>
</table>
</h4>
<p>移位操作符需要两个操作数：第一个是要进行移位的数值，第二个指定要对第一个数移位的数目。移位的方向由使用的操作符决定。</p>
<p>移位操作符将把两个操作符转换为 32 位整型数值，并返回与左操作数类型相同的结果。</p>
<h4>&lt;&lt; (左移)</h4>
<p>该操作符将把第一个操作数向左移若干位。移出的位将被忽略。右侧空位补零。</p>
<p>例如，9&lt;&lt;2 结果为 36，因为 1001 向左移两位变成 100100，这是 36。</p>
<h4>&gt;&gt; (算术右移)</h4>
<p>该操作符将把第一个操作数享有移若干位。移出的位将被忽略。左侧的空位补上与原来最左面位相同的值。</p>
<p>例如，9&gt;&gt;2 结果为 2，因为 1001 右移两位变成 10，这是 2。反之，-9&gt;&gt;2 结果为 -3，因为要考虑到符号位。</p>
<h4>&gt;&gt;&gt; (逻辑右移)</h4>
<p>该操作符将把第一个操作数享有移若干位。移出的位将被忽略。左侧的空位补零。</p>
<p>例如，19&gt;&gt;&gt;2 结果为 4，因为 10011 右移两位变成 100，这是 4。对于非负数，算术右移和逻辑右移结果相同。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.k-zz.com/javascript-skill_2009_09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>弱化版权有利于社会</title>
		<link>http://blog.k-zz.com/copyright-and-society_2009_06/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=copyright-and-society</link>
		<comments>http://blog.k-zz.com/copyright-and-society_2009_06/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 06:29:29 +0000</pubDate>
		<dc:creator>kzz</dc:creator>
				<category><![CDATA[经济]]></category>
		<category><![CDATA[版权]]></category>

		<guid isPermaLink="false">http://blog.k-zz.com/?p=20</guid>
		<description><![CDATA[哈佛研究称弱化版权有利于社会，其中举例说，电影盗版猖獗的国家反而电影数量猛增。2003-2007年，“韩国（从80部增加到124部），印度（从877部增至1164部）和中国（从140部增至402部）”，而在此期间，美国则是459部增加到590部。 总结来说，哈佛的论文揭穿了长期存在的关于文件共享对经济影响的神话，大量的音乐下载并不意味着损失销售机会，实际上它能扩大市场。另一方面也指出了文件共享不会导致创新的下降。 如何理解这个现象？ 譬如图书馆。大学以及各个城市里的图书馆正起着文件共享的作用，并且图书馆的藏书和读者书众多。如果说版权保护主义者要遏制文件共享，那么就应该从图书馆做起。但显然现在不会有人真的要打倒图书馆，因为他们认为图书馆的书是被正式购买并且是非盈利的。可是这背后还有一个要点，就是图书馆在培养读者成为购买者。例如学生在图书馆受到熏陶，那么他日后也必定购买他喜爱的书籍。 这就像某些游戏提供试玩，某些食品提供试食一样。严格的版权制度提高了大众接触高层文化（或科技）的成本，反而宽松的版权制度培养了大量的潜在受众。就这个层面来说，版权保护不宜太严格。 但这不等同与鼓励盗版。我想较为恰当的做法是想Google图书那样。]]></description>
			<content:encoded><![CDATA[<p><a href="http://internet.solidot.org/article.pl?sid=09/06/19/0343246">哈佛研究</a>称弱化版权有利于社会，其中举例说，电影盗版猖獗的国家反而电影数量猛增。2003-2007年，“韩国（从80部增加到124部），印度（从877部增至1164部）和中国（从140部增至402部）”，而在此期间，美国则是459部增加到590部。</p>
<p>总结来说，哈佛的论文揭穿了长期存在的关于文件共享对经济影响的神话，大量的音乐下载并不意味着损失销售机会，实际上它能扩大市场。另一方面也指出了文件共享不会导致创新的下降。<br />
<span id="more-20"></span></p>
<p>如何理解这个现象？</p>
<p>譬如图书馆。大学以及各个城市里的图书馆正起着文件共享的作用，并且图书馆的藏书和读者书众多。如果说版权保护主义者要遏制文件共享，那么就应该从图书馆做起。但显然现在不会有人真的要打倒图书馆，因为他们认为图书馆的书是被正式购买并且是非盈利的。可是这背后还有一个要点，就是图书馆在培养读者成为购买者。例如学生在图书馆受到熏陶，那么他日后也必定购买他喜爱的书籍。</p>
<p>这就像某些游戏提供试玩，某些食品提供试食一样。严格的版权制度提高了大众接触高层文化（或科技）的成本，反而宽松的版权制度培养了大量的潜在受众。就这个层面来说，版权保护不宜太严格。</p>
<p>但这不等同与鼓励盗版。我想较为恰当的做法是想Google图书那样。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.k-zz.com/copyright-and-society_2009_06/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

