<?xml version="1.0" encoding="UTF-8" ?>















<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<channel>
<title><![CDATA[天堂 的商人博客]]> </title>
<description>
<![CDATA[868688686 是我自己改的吗？<br/>
博客只有2种，职业博客和非职业博客]]>
</description>
<link>http://hzlinux.blog.bokee.net/</link>
<language>zh-cn</language>
<creator>hzlinux</creator>
<pubDate>Mon, 24 Mar 2003 14:03:41 CST </pubDate>
<generatorAgent rdf:resource="http://www.bokee.net"/>
<ttl>5</ttl>

<item>
<title>奇迹 需要靠人去创造；不会自然发生。</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2100123.html</link>
<description>
<![CDATA[奇迹 需要靠人去创造；不会自然发生。<br /><br />今天整理了一下桌子。希望 能够从混乱中脱离出来。<br /><br />改变是困难的，但不行动，那什么也不会发生。]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2100123.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Mon, 01 Sep 2008 10:36:59 CST </pubDate>
</item>

<item>
<title>tomcat post 中文  和 cache 是 有关系的 ？</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2078100.html</link>
<description>
<![CDATA[tomcat post 中文&nbsp; 和 cache 是 有关系的 ？<br /><br />一台 服务器上 配置了 cache <br /><br />导致&nbsp; 中文 内容 出错<br /><br /><br />真的是这个问题吗？<br /><br />只对 GET 请求&nbsp; 进行 cache]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2078100.html</guid>
<subject>平台开发</subject>
<author>hzlinux</author>
<category>平台开发</category>
<pubDate>Fri, 22 Aug 2008 16:33:35 CST </pubDate>
</item>

<item>
<title>娱乐求生</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2062843.html</link>
<description>
<![CDATA[http://item.feedsky.com/~feedsky/my1510/~5935684/104212485/1488578/1/item.html<br /><br />民主产生幽默，专制产生反讽，空虚产生愤怒，反差产生恶搞，平庸产生娱乐。然而，问题是，愤怒源于空虚，又是为了抵消这种空虚；同样，恶搞是为了抵消这种反差，娱乐是为了抵消这种平庸。<br /><br />想想高中时读过的,&nbsp; 清嘉乾学派为什么是考据学而不是其他.]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2062843.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Sat, 16 Aug 2008 09:39:44 CST </pubDate>
</item>

<item>
<title>徐志摩 《偶然》 ;原来这就是我一直在寻找的，想要描述的。</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2053922.html</link>
<description>
<![CDATA[这首歌的歌词来自著名诗人徐志摩的诗。
<p>诗名就是《偶然》。</p>
<p>我是天空里的一片云，</p>
<p>偶尔投影在你的波心，</p>
<p>你不必讶异，</p>
<p>更无须欢喜，</p>
<p>在转瞬间消灭了踪影。</p>
<p>你我相逢在黑夜的海上，</p>
<p>你有你的，</p>
<p>我有我的，</p>
<p>方向；</p>
<p>你记得也好，</p>
<p>最好你忘掉，</p>
<p>在这交会时互放的光亮！</p>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2053922.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Tue, 12 Aug 2008 15:47:26 CST </pubDate>
</item>

<item>
<title>“懒惰” Linux 管理员的 10 个关键技巧</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2052680.html</link>
<description>
<![CDATA[<p>级别： 初级</p>
<p><a href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#author">Vallard Benincosa</a>, 认证技术销售专家, IBM<br /></p>
<p>2008 年  8 月  11 日</p>
<blockquote>学会这 10 个技巧后，您将成为世界上最强大的 Linux&reg; 系统管理员，整个世界是有点夸张，但要在一个大团队中工作，这些技巧是十分必要的。学习 SHH 通道、VNC、密码恢复、控制台侦察等等。各个技巧都附有例子，可以将这些例子复制到自己的系统中。</blockquote><!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters -->  <!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
<p>好的系统管理员区分在效率上。如果一位高效的系统管理员能在 10 分钟内完成一件他人需要 2 个小时才能完成的任务，那么他应该受到奖励（得到更多报酬），因为他为公司节约了时间，而时间就是金钱，不是吗？                                               </p>
<p>技巧是为了提高管理效率。虽然本文不打算对<em>所有</em> 技巧进行讨论，但是我会介绍 &ldquo;懒惰&rdquo; 管理员所用的 10 个基本法宝。这些技巧可以节约时间 &mdash;&mdash; 即使没有因为高效而得到更多的报酬，但至少可以有更多的时间去玩。</p>
<p><a name="T1"><span class="atitle">技巧 1：卸载无响应的 DVD 驱动器</span></a></p>
<p>网 络新手的经历：按下服务器（运行基于 Redmond 的操作系统）DVD 驱动器上的 Eject 按钮时，它会立即弹出。他然后抱怨说，在大多数企业 Linux 服务器中，如果在那个目录中运行某个进程，弹出就不会发生。作为一名长期的 Linux 管理员，我会重启机器。如果我不清楚正在运行什么，以及为何不释放 DVD 驱动器，我则会弹出磁盘。但这样效率很低。</p>
<p>下面介绍如何找到保持 DVD 驱动器的进程，并轻松弹出 DVD 驱动器：首先进行模拟。在 DVD 驱动器中放入磁盘，打开一个终端，装载 DVD 驱动器：</p>
<p>                 <code>                     <span class="boldcode"># mount /media/cdrom<br /> # cd /media/cdrom<br /> # while [ 1 ]; do echo &quot;All your drives are belong to us!&quot;; sleep 30; done</span>                 </code>             </p>
<p>现在打开第二个终端并试着弹出 DVD 驱动器：</p>
<p>                 <code>                     <span class="boldcode"># eject</span>                 </code>             </p>
<p>将得到以下消息：</p>
<p>                 <code>umount: /media/cdrom: device is busy</code>             </p>
<p>在释放该设备之前，让我们找出谁在使用它。</p>
<p>                 <code>                     <span class="boldcode"># fuser /media/cdrom</span>                 </code>             </p>
<p>进程正在运行，无法弹出磁盘其实是我们的错误。</p>
<p>现在，如果您是根用户，可以随意终止进程：</p>
<p>                 <code>                     <span class="boldcode"># fuser -k /media/cdrom</span>                 </code>             </p>
<p>现在终于可以卸载驱动器了：</p>
<p>                 <code>                     <span class="boldcode"># eject</span>                 </code>             </p>
<p>                 <code>fuser</code> 很正常。</p>
<br />
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><img width="100%" height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" /><br /><img width="8" height="6" border="0" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" align="right" class="no-print">
    <tbody>
        <tr align="right">
            <td><img width="100%" height="4" alt="" src="http://www.ibm.com/i/c.gif" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img width="16" height="16" border="0" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" /><br /></td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />
<p><a name="T2"><span class="atitle">技巧 2：恢复出现问题的屏幕</span></a></p>
<p>尝试以下操作：</p>
<p>                 <code>                     <span class="boldcode"># cat /bin/cat</span>                 </code>             </p>
<p>注意！终端就想垃圾一样。输入的所有内容非常零乱。那么该怎么做呢？</p>
<p>输入 <code>reset</code>。但是，输入 <code>reset</code> 与 输入 <code>reboot</code> 或 <code>shutdown</code> 太接近了。吓得手心冒汗了吧 &mdash; 特别是在生产机器上执行这个操作时。               </p>
<p>放心吧，在进行此操作时，机器不会重启。继续操作：</p>
<p>                 <code>                     <span class="boldcode"># reset</span>                 </code>             </p>
<p>现在屏幕恢复正常了。这比关闭窗口后再次登陆好多了，特别是必须经过 5 台机器和 SSH 才能到达这台机器时。</p>
<br />
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><img width="100%" height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" /><br /><img width="8" height="6" border="0" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" align="right" class="no-print">
    <tbody>
        <tr align="right">
            <td><img width="100%" height="4" alt="" src="http://www.ibm.com/i/c.gif" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img width="16" height="16" border="0" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" /><br /></td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />
<p><a name="T3"><span class="atitle">技巧 3：屏幕协作</span></a></p>
<p>来自产品工程的高级维护用户 David 打电话说：&ldquo;为什么我不能在您部署的这些新机器上编译 supercode.c&rdquo;。</p>
<p>您会问他：&ldquo;您运行的是什么机器？&rdquo;</p>
<p> David 答道：&ldquo;                                  Posh&rdquo;。（这个虚够的公司将它的 5 台生产服务器以纪念 Spice Girls 的方式命名）。这下您可以大显身手了，另一台机器由 David 操作：</p>
<p>                 <code>                     <span class="boldcode"># su - david</span>                 </code>             </p>
<p>转到 posh：</p>
<p>                 <code>                     <span class="boldcode"># ssh posh</span>                 </code>             </p>
<p>到达之后，运行以下代码：</p>
<p>                 <code>                     <span class="boldcode"># screen -S foo</span>                 </code>             </p>
<p>然后呼叫 David：</p>
<p>&ldquo;David，在终端运行命令 <code># screen -x foo</code>&rdquo;。</p>
<p>这使您和 David 的会话在 Linux shell 中联接在一起。您可以输入，他也可以输入，但彼此可以看到对方所做的事情。这避免了进入其他层次，而且双方都有相同的控制权。这样做的好处是 David 可以观察到您的故障诊断技巧，并能准确了解如何解决问题。</p>
<p>最后大家都能看到问题所在：David 的编译脚本对一个不在此新服务器上的旧目录进行了硬编码。将它装载后再次编译即可解决问题，然后 David 继续工作。您则可以继续之前的娱乐活动。</p>
<p>关于此技巧需要注意的一点是，双方需要以同一用户登录。<code>screen</code> 命令还可以：实现多个窗口和拆分屏幕。请阅读手册页获取更多相关信息。</p>
<p>对于 <code>screen</code> 会话，我还有最后一个技巧。要从中分离并让它打开，请输入 <code>                     <span class="boldcode">Ctrl-A D</span>                 </code>（即按住 <strong>Ctrl</strong> 键并点击 <strong>A</strong> 键。然后按 <strong>D</strong> 键）。</p>
<p>然后通过再次运行 <code>screen -x foo</code> 命令可以重新拼接起来。</p>
<br />
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><img width="100%" height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" /><br /><img width="8" height="6" border="0" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" align="right" class="no-print">
    <tbody>
        <tr align="right">
            <td><img width="100%" height="4" alt="" src="http://www.ibm.com/i/c.gif" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img width="16" height="16" border="0" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" /><br /></td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />
<p><a name="T4"><span class="atitle">技巧 4：找回根密码</span></a></p>
<p>如果忘记根密码，就必须重新安装整台机器。更惨的是，许多人都会这样做。但是启动机器并更改密码却十分简单。这并非在所有情况下都适用（比如设置了一个 GRUB 密码，但也忘记了），但这里介绍一个 Cent OS Linux 示例，说明一般情况下的操作。</p>
<p>首先重启系统。重启时会跳出如图 1 所示的 GRUB 屏幕。移动箭头键，这样可以保留在此屏幕上，而不是进入正常启动。</p>
<br /><a name="fig1"><strong>图 1. 重启后的 GRUB 屏幕</strong></a><br />                 <img width="572" height="429" src="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/figure1.jpg" alt="重启后的 GRUB 屏幕" />             <br />
<p>然后，使用箭头键选择要启动的内核，并输入 <strong>E</strong> 编辑内核行。然后便可看到如图 2 所示的屏幕：           </p>
<br /><a name="fig2"><strong>图 2：准备编辑内核行</strong></a><br />                 <img width="572" height="427" src="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/figure2.jpg" alt="准备编辑内核行" />             <br />
<p>再次使用箭头键突出显示以 <code>kernel</code> 开始的行，按 <strong>E</strong> 编辑内核参数。到达如图 3 所示的屏幕时，在图 3 中所示的参数后追加数字 1 即可：</p>
<br /><a name="fig3"><strong>图 3. 在参数后追加数字 1</strong></a><br />                 <img width="572" height="429" src="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/figure3.jpg" alt="在参数后追加数字 1" />             <br />
<p>然后按 <strong>Enter</strong> 和 <strong>B</strong>，内核会启动到单用户模式。然后运行 <code>passwd</code> 命令，更改用户根密码：</p>
<p>                 <code>                     <span class="boldcode">sh-3.00# passwd</span>                     <br />  New UNIX password:<br /> Retype new UNIX password:<br /> passwd: all authentication tokens updated successfully </code>             </p>
<p>现在可以重启了，机器将使用新密码启动。</p>
<br />
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><img width="100%" height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" /><br /><img width="8" height="6" border="0" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" align="right" class="no-print">
    <tbody>
        <tr align="right">
            <td><img width="100%" height="4" alt="" src="http://www.ibm.com/i/c.gif" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img width="16" height="16" border="0" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" /><br /></td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />
<p><a name="T5"><span class="atitle">技巧 5：SSH 后门</span></a></p>
<p>有很多次，我所在的站点需要某人的远程支持，而他却被公司防火强阻挡在外。很少有人意识到，如果能通过防火墙到达外部，那么也能轻松实现让外部的信息进来。</p>
<p>从本意讲，这称为 &ldquo;在防火墙上砸一个洞&rdquo;。我称之为 <em>SSH 后门</em>。为了使用它，必须有一台作为中介的连接到 Internet 的机器。</p>
<p>在本例中，将这样台机器称为 blackbox.example.com。公司防火墙后面的机器称为 ginger。此技术支持的机器称为 tech。图 4 解释了设置过程。</p>
<br /><a name="fig4"><strong>图 4. 在防火墙上砸一个洞</strong></a><br />                 <img width="510" height="278" src="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/figure4.gif" alt="在防火墙上砸一个洞" />             <br />
<p>以下是操作步骤：</p>
<ol>
    <li>检查什么是允许做的，但要确保您问对了人。大多数人都担心您打开了防火墙，但他们不明白这是完全加密的。而且，必须破解外部机器才能进入公司内部。不过，您可能属于 &ldquo;敢作敢为&rdquo; 型的人物。自己进行判断应该选择的方式，但不如意时不抱怨别人。<br />                     <br />                 </li>
    <li>使用 <code>-R</code> 标记通过 SSH 从 ginger 连接到 blackbox.example.com。假设您是 ginger 上的根用户，tech 需要根用户 ID 来帮助使用系统。使用 <code>-R</code> 标记将 blackbox 上端口 2222 的说明转发到 ginger 的端口 22 上。这就设置了 SSH 通道。注意，只有 SSH 通信可以进入 ginger：您不会将 ginger 放在无保护的 Internet 上。
    <p>可以使用以下语法实现此操作：</p>
    <p>                         <code>                             <span class="boldcode">~# ssh -R 2222:localhost:22 thedude@blackbox.example.com</span>                         </code>                     </p>
    <p>进入 blackbox 后，只需一直保持登录状态。我总是输入以下命令：</p>
    <p>                         <code>                             <span class="boldcode">thedude@blackbox:~$ while [ 1 ]; do date; sleep 300; done</span>                         </code>                     </p>
    <p>使机器保持忙碌状态。然后最小化窗口。</p>
    </li>
    <li>现在指示 tech 上的朋友使用 SSH 连接到 blackbox，而不需要使用任何特殊的 SSH 标记。但必须把密码给他们：
    <p>                         <code>                             <span class="boldcode">root@tech:~# ssh thedude@blackbox.example.com</span>                         </code>.                     </p>
    </li>
    <li>tech 位于 blackbox 上后，可以使用以下命令从 SSH 连接到 ginger：
    <p>                         <code>                             <span class="boldcode">thedude@blackbox:~$: ssh -p 2222 root@localhost</span>                         </code>                     </p>
    </li>
    <li>Tech 将提示输入密码。应该输入 ginger 的根密码。<br />                     <br />                 </li>
    <li>现在您和来自 tech 的支持可以一起工作并解决问题。甚至需要一起使用屏幕！（参见                     <a href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#T4">技巧 4</a>）。</li>
</ol>
<br />
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><img width="100%" height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" /><br /><img width="8" height="6" border="0" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" align="right" class="no-print">
    <tbody>
        <tr align="right">
            <td><img width="100%" height="4" alt="" src="http://www.ibm.com/i/c.gif" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img width="16" height="16" border="0" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" /><br /></td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />
<p><a name="T6"><span class="atitle">技巧 6：通过 SSH 通道进行远程 VNC 会话</span></a></p>
<p>VNC 或虚拟网络计算已经存在很长时间了。通常，当远程服务器上的某类图形程序只能在此服务器上使用时，我才需要 VNC。</p>
<p>例如，假设在 <a href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#T5">技巧 5</a> 中，ginger 是一台存储服务器。许多设备都使用 GUI 程序来管理存储控制器。这些 GUI 管理工具通常需要通过一个网络直接连接到存储服务器，而这个网络有时保存在专用的子网络中。因此，只能通过 ginger 访问这个 GUI。</p>
<p>可以尝试使用 <code>-X</code> 选项通过 SSH 连接到 ginger 并启动它，但这对带宽要求很高，您需要忍受等待的痛苦。VNC 是一个网络友好的工具，几乎适用于所有操作系统。</p>
<p>假设设置与技巧 5 中的一样，但希望 tech 能访问 VNC 而不是 SSH。对于这种情况，需要进行一些类似的操作，不过转发的是 VNC 端口。执行以下操作步骤：</p>
<ol>
    <li>在 ginger 上启动一个 VNC 服务器会话。运行以下命令：
    <p>                         <code>                             <span class="boldcode">root@ginger:~# vncserver -geometry 1024x768  -depth 24 :99</span>                         </code>                     </p>
    <p>这些选项指示启动服务器，分辨率为 1024x768，像素深度为每像素 24 位。如果使用较慢的连接设置，8 也许是更好的选项。使用 <code>:99</code> 指定可访问 VNC 服务器的端口。VNC 协议在 5900 处启动，因此 <code>:99</code> 表示服务器可从端口 5999 访问。</p>
    <p>启动该会话时，要求您指定密码。用户 ID 与启动 VNC 服务器时的用户相同（本例中就是根用户）。</p>
    </li>
    <li>从 ginger 连接到 blackbox.example.com 的 SSH 将 blackbox 上的端口 5999 转发到 ginger。这通过运行以下命令在 ginger 中完成：
    <p>                         <code>                             <span class="boldcode">root@ginger:~# ssh -R 5999:localhost:5999 thedude@blackbox.example.com</span>                         </code>                     </p>
    <p>运行此命令后，需要将此 SSH 会话保持为打开状态，以便保留转发到 ginger 的端口。此时，如果在 blackbox 上，那么运行以下命令即可访问 ginger 上的 VNC 会话：</p>
    <p>                         <code>                             <span class="boldcode">thedude@blackbox:~$ vncviewer localhost:99</span>                         </code>                     </p>
    <p>这将通过 SSH 将端口转发给 ginger，但我们希望通过 tech 让 VNC 访问 ginger。为此，需要另一个通道。</p>
    </li>
    <li>在 tech 中，打开一个通道，通过 SHH 将端口 5999 转发到 blackbox 上的端口 5999。这通过运行以下命令完成：
    <p>                         <code>                             <span class="boldcode">root@tech:~# ssh -L 5999:localhost:5999 thedude@blackbox.example.com</span>                         </code>                     </p>
    <p>这次使用的 SSH 标记为 <code>-L</code>，它不是将 5999 放到 blackbox，而是从中获取。到达 blackbox 后，需要保持此会话为打开状态。现在即可在 tech 中使用 VNC 了！</p>
    </li>
    <li>在 tech 中，运行以下命令使 VNC 连接到 ginger：
    <p>                         <code>                             <span class="boldcode">root@tech:~# vncviewer localhost:99</span>                         </code>.</p>
    <p>Tech 现在将拥有一个直接到 ginger 的 VNC 会话。</p>
    </li>
</ol>
<p>设置虽然有点麻烦，但比为修复存储阵列而四处奔波强多了。不过多实践几次这就变得容易了。</p>
<p>对 此技巧我还要补充一点：如果 tech 运行的是 Windows&reg; 操作系统，并且没有命令行 SSH 客户端，那么 tech 可以运行 Putty。Putty 可以设置为通过查找侧栏中的选项来转发 SSH 端口。如果端口是 5902 而不是本例中的 5999，则可以输入图 5 中的内容。</p>
<br /><a name="fig5"><strong>图 5. Putty 可以转发用作通道的 SSH</strong></a><br />                 <img width="332" height="448" src="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/figure5.jpg" alt="Putty 可以转发用作通道的 SSH 端口" />             <br />
<p>如果进行了此设置，那么 tech 就可以使用 VNC 连接到 localhost:2，如同 tech 正在 Linux 操作系统上运行一样。</p>
<br />
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><img width="100%" height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" /><br /><img width="8" height="6" border="0" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" align="right" class="no-print">
    <tbody>
        <tr align="right">
            <td><img width="100%" height="4" alt="" src="http://www.ibm.com/i/c.gif" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img width="16" height="16" border="0" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" /><br /></td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />
<p><a name="T7"><span class="atitle">技巧 7：检查带宽</span></a></p>
<p>设想：公司 A 有一个名为 ginger 的存储服务器，并通过名为 beckham 的客户端节点装载 NFS。公司 A 确定他们需要从 ginger 得到更多的带宽，因为有大量的节点需要 NFS 装载 ginger 的共享文件系统。</p>
<p>实现此操作的最常用和最便宜的方式是将两个吉比特以太网 NIC 组合在一起。这是最便宜的，因为您通常会有一个额外的可用 NIC 和一个额外的端口。</p>
<p>所以采取此这个方法。不过现在的问题是：到底需要多少带宽？</p>
<p>吉比特以太网理论上的限制是 128MBit/s。这个数字从何而来？看看这些计算：</p>
<p>                 <em>1Gb = 1024Mb</em>；<em>1024Mb/8 = 128MB</em>；&quot;b&quot; = &quot;bits,&quot;、&quot;B&quot; = &quot;bytes&quot; </p>
<p>但实际看到的是什么呢，有什么好的测量方法呢？我推荐一个工具 iperf。可以按照以下方法获得 iperf：</p>
<p>                 <code>                     <span class="boldcode"># wget http://dast.nlanr.net/Projects/Iperf2.0/iperf-2.0.2.tar.gz</span>                 </code>             </p>
<p>需要在 ginger 和 beckham 均可见的共享文件系统上安装此工具，或者在两个节点上编译并安装。我将在两个节点均可见的 bob 用户的主目录中编译它：</p>
<p>                 <code>                     <span class="boldcode">tar zxvf iperf*gz<br /> cd iperf-2.0.2<br /> ./configure -prefix=/home/bob/perf<br /> make<br /> make install</span>                 </code>             </p>
<p>在 ginger 上，运行：</p>
<p>                 <code>                     <span class="boldcode"># /home/bob/perf/bin/iperf -s -f M</span>                 </code>             </p>
<p>这台机器将用作服务器并以 MBit/s 为单位输出执行速度。</p>
<p>在 beckham 节点上，运行：</p>
<p>                 <code>                     <span class="boldcode"># /home/bob/perf/bin/iperf -c ginger -P 4 -f M -w 256k -t 60</span>                 </code>             </p>
<p>两 个屏幕上的结果都指示了速度是多少。在使用吉比特适配器的普通服务器上，可能会看到速度约为 112MBit/s。这是 TCP 堆栈和物理电缆中的常用带宽。通过以端到端的方式连接两台服务器，每台服务器使用两个联结的以太网卡，我获得了约 220MBit/s 的带宽。</p>
<p>事实上，在联结的网络上看到的 NFS 约为 150-160MBit/s。这仍然表示带宽可以达到预期效果。如果看到更小的值，则应该检查是否有问题。</p>
<p>我最近碰到一种情况，即通过连接驱动程序连接两个使用了不同驱动程序的 NIC。这导致性能非常低，带宽约为 20MBit/s，比不连接以太网卡时的带宽还小！</p>
<br />
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><img width="100%" height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" /><br /><img width="8" height="6" border="0" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" align="right" class="no-print">
    <tbody>
        <tr align="right">
            <td><img width="100%" height="4" alt="" src="http://www.ibm.com/i/c.gif" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img width="16" height="16" border="0" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" /><br /></td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />
<p><a name="T8"><span class="atitle">技巧 8：命令行脚本和实用程序</span></a></p>
<p>Linux 系统管理员通过使用权威的命令行脚本会变得更高效。这包括巧妙使用循环和知道如何使用 <code>awk</code>、<code>grep</code> 和 <code>sed</code> 等的实用程序解析数据。通常这可以减少击键次数，降低用户出错率。</p>
<p>例如，假设需要为即将安装的 Linux 集群生成一个新的 /etc/hosts 文件。一般的做法是在 vi 或文本编辑器中添加 IP 地址。不过，可以通过使用现有 /etc/hosts 文件并将以下内容追加到此文件来实现。在命令行上运行：</p>
<p>                 <code>                     <span class="boldcode"># P=1; for i in $(seq -w 200); do echo &quot;192.168.99.$P n$i&quot;; P=$(expr $P + 1);<br />  done &gt;&gt;/etc/hosts</span>                 </code>             </p>
<p>200 个主机名（n001 到 n200）将由 IP 地址（192.168.99.1 到 192.168.99.200）来创建。手动填充这样的文件有可能会创建重复的 IP 地址或主机名，因此这是使用内置命令行消除用户错误的好例子。请注意，这是在 bash shell（大多数 Linux 发行版的默认值）内完成的。</p>
<p>再举一个例子，假设要检查 Linux 集群中的各个计算节点中的内存大小是否一样。通常，拥有一个发行版或类似的 shell 是最好的。但是为了演示，以下使用 SSH。</p>
<p>假设 SSH 设置为不使用密码验证。然后运行：</p>
<p>                 <code>                     <span class="boldcode"># for num in $(seq -w 200); do ssh n$num free -tm | grep Mem | awk '{print $2}';<br />  done | sort | uniq</span>                 </code>             </p>
<p>这样的命令行相当简洁。（如果在其中放入正则表达式情况会更糟）。让我们对它进行细分，详细讨论各部分。</p>
<p>首先从 001 循环到 200。使用 <code>seq</code> 命令的 <code>-w</code> 选项在前面填充 0。 然后替换 <code>num</code> 变量，创建通过 SSH 连接的主机。有了目标主机后，向它发出命令。本例中是：</p>
<p>                 <code>                     <span class="boldcode">free -m | grep Mem | awk '{print $2}'</span>                 </code>             </p>
<p>这个命令的意思是：</p>
<ul>
    <li>使用 <code>free</code> 命令获取以兆字节为单位的内存大小。</li>
    <li>获取这个命令的结果，并使用 <code>grep</code> 获取包含字符串 <code>Mem</code> 的行。</li>
    <li>获取那一行并使用 <code>awk</code> 输出第二个字段，它是节点中的总内存。 </li>
</ul>
<p>在每个节点上执行这个操作。</p>
<p>在每个节点上执行命令后，200 个节点的整个输出就传送（<code>|</code>d）到 <code>sort</code> 命令，以对所有内存值进行排序。</p>
<p>最后，使用 <code>uniq</code> 命令消除重复项。这个命令会导致以下情况中的一种：</p>
<ul>
    <li>如果所有节点（n001 到 n200）拥有相同的内存大小，则只显示一个数字。这个数字就是每个操作系统看到的内存大小。</li>
    <li>如果节点内存大小不同，将会看到几个内存大小的值。</li>
    <li>最后，如果某个节点上的 SSH 出现故障，则会看到一些错误消息。</li>
</ul>
<p>这个命令并不是完美无缺的。如果发现与预期不同的内存值，您就不知道是哪一个节点出了问题，或者有多少个节点。为此需要发出另一个命令。</p>
<p>这个技巧提供了一种查看某些内容的快速方式，而且如果发生错误，您可以立刻知道。其价值在于快速检查。</p>
<br />
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><img width="100%" height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" /><br /><img width="8" height="6" border="0" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" align="right" class="no-print">
    <tbody>
        <tr align="right">
            <td><img width="100%" height="4" alt="" src="http://www.ibm.com/i/c.gif" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img width="16" height="16" border="0" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" /><br /></td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />
<p><a name="T9"><span class="atitle">技巧 9：控制台侦察</span></a></p>
<p>有些软件会向控制台输出错误消息，而控制台不一定会显示在 SHH 会话中。使用 vcs 设备可以进行检查。在 SSH 会话中，在远程服务器 <code># cat /dev/vcs1</code> 上运行以下命令。这将显示第一个控制台中的内容。也可以使用 2、3 等查看其他虚拟终端。如果某个用户在远程系统上输入，您将看到他输入的内容。</p>
<p>在大多数数据场中，使用远程终端服务器、KVM 甚至 Serial Over LAN 是查看这类信息的最好方式；它也提供了带外查看功能的一些好处。使用 vcs 设备能够提供一种快速带内方法，这能节省去机房查看控制台的时间。</p>
<br />
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><img width="100%" height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" /><br /><img width="8" height="6" border="0" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" align="right" class="no-print">
    <tbody>
        <tr align="right">
            <td><img width="100%" height="4" alt="" src="http://www.ibm.com/i/c.gif" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img width="16" height="16" border="0" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" /><br /></td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />
<p><a name="T10"><span class="atitle">技巧 10：随机系统信息收集</span></a></p>
<p>在 <a href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#T8">技巧 8</a> 中，介绍了一个使用命令行获取有关系统中总内存信息的例子。在这个技巧中，我将介绍几个其他方法，用于从需要进行验证、故障诊断或给予远程支持的系统收集重要信息。</p>
<p>首先，收集关于处理器的信息。通过以下命令很容易实现：</p>
<p>                 <code>                     <span class="boldcode"># cat /proc/cpuinfo</span>                 </code>。</p>
<p>这个命令给出关于处理器的速度、数量和型号的信息。在许多情况下使用 <code>grep</code> 可以得到需要的值。</p>
<p>我经常做的检查是确定系统中处理器的数量。因此，如果我买了一台带双核处理器的四核服务器，我可以运行以下命令：</p>
<p>                 <code>                     <span class="boldcode"># cat /proc/cpuinfo | grep processor | wc -l</span>                 </code>。</p>
<p>然后我看到值应该是 8。如果不是，我会打电话给供应商，让他们给我派送另一台处理器。</p>
<p>我需要的另一条信息是磁盘信息。可以使用 <code>df</code> 命令获得。我总是添加 <code>-h</code> 标记，以便看到以十亿字节或兆字节为单位的输出。<code># df -h</code> 还会显示磁盘的分区情况。</p>
<p>列表最后是查看系统固件的方式 &mdash;&mdash; 一个获取 BIOS 级别和 NIC 上的固件信息的方法。</p>
<p>要检查 BIOS 版本，可以运行 <code>dmidecode</code> 命令。遗憾的是，不能轻易使用 <code>grep</code> 获取信息，所以这不是一个很有效的方法。对于我的 Lenovo T61 laptop，输出如下：</p>
<p>                 <code>                     <span class="boldcode">#dmidecode | less</span>                     <br /> ...<br /> BIOS Information<br />         Vendor: LENOVO<br />         Version: 7LET52WW (1.22 )<br />         Release Date: 08/27/2007<br /> ...             </code>             </p>
<p>这比重启机器并查看 POST 输出有效得多。</p>
<p>要检查以太网适配器的驱动程序和固件版本，请运行 <code>ethtool</code>：</p>
<p>                 <code>                     <span class="boldcode"># ethtool -i eth0<br /> driver: e1000<br /> version: 7.3.20-k2-NAPI<br /> firmware-version: 0.3-0</span>                 </code>             </p>
<br />
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td><img width="100%" height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" /><br /><img width="8" height="6" border="0" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
    </tbody>
</table>
<table cellspacing="0" cellpadding="0" align="right" class="no-print">
    <tbody>
        <tr align="right">
            <td><img width="100%" height="4" alt="" src="http://www.ibm.com/i/c.gif" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img width="16" height="16" border="0" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" /><br /></td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/linux/l-10sysadtips/index.html?ca=drs-cn-0811#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br /><br />
<p><a name="N10471"><span class="atitle">结束语</span></a></p>
<p>可以从精通命令行的人那里学习很多技巧。最好的学习方式是：</p>
<ul>
    <li>与其他人一起工作。共享屏幕会话并观察其他人是如何工作的 &mdash;&mdash; 您会发现新的做事方法。可能需要谦虚一点，让其他人引导，不过通常可以学到很多东西。</li>
    <li>阅读手册页。认真阅读手册页，即使是熟知的命令，也能获得更深的见解。例如，您以前可能根本不知道可以使用 <code>awk</code> 进行网络编程。</li>
    <li>解决问题。作为系统管理员，总是要解决问题，不管是您还是其他人引起的问题。这就是经验，经验可以使您更优秀、更高效。</li>
</ul>
<p>我 希望至少有一个技巧能帮助您学习到您不知道的知识。像这样的基本技巧可以使您更高效，并且能增长经验，但最重要的是，技巧可以让您有更多的空闲时间去做自 己感兴趣的事情，比如玩电子游戏。最好的管理员比较悠闲，因为他们不喜欢工作。他们能找到完成任务的最快方法，并且能快速完成任务，从而保持休闲的生活。</p>
<br /><br />
<p><a name="resources"><span class="atitle">参考资料 </span></a></p>
<strong>学习</strong><br />
<ul>
    <li> 您可以参阅本文在 developerWorks 全球站点上的 <a target="_blank" href="http://www.ibm.com/developerworks/linux/library/l-10sysadtips/?S_TACT=105AGX52&amp;S_CMP=cn-a-l">英文原文</a>。<br /><br /></li>
    <li>学习 developerWorks 上的 <a href="http://www.ibm.com/developerworks/cn/linux/lpi/">Linux Professional Institute 考试准备指南</a>，了解基础知识以完善这些技巧。<br /><br /></li>
    <li>请参阅 &ldquo;<a href="http://www.ibm.com/developerworks/cn/linux/network/share/part1/">在 Linux（或异构）网络上共享计算机，第 1 部分 </a>&rdquo;（developerWorks，2001 年 12月），了解更多关于 SSH 和 VNC 的讨论。<br /><br /></li>
    <li>在 <a href="http://www.ibm.com/developerworks/cn/linux/">developerWorks Linux 专区</a> 可以找到针对 Linux 开发人员的更多资料。请浏览 <a href="http://www.ibm.com/developerworks/cn/linux/top10/index.html">最受欢迎的文章和教程</a>。         <br /><br /></li>
    <li>在 developerWorks 上查阅所有 <a href="http://www-128.ibm.com/developerworks/cn/views/linux/libraryview.jsp?search_by=Linux+%E6%8A%80%E5%B7%A7"> Linux 技巧</a> 和 <a href="http://www-128.ibm.com/developerworks/cn/views/linux/libraryview.jsp?type_by=%E6%95%99%E7%A8%8B"> Linux 教程</a>。 <br /><br /></li>
    <li>随时关注 <a onmouseover="linkQueryAppend(this)" href="http://www.ibm.com/developerworks/offers/techbriefings/">developerWorks 技术活动和网络广播</a>。         <br /><br /></li>
</ul>
<br /><strong>获得产品和技术</strong><br />
<ul>
    <li>                 <a onmouseover="linkQueryAppend(this)" href="http://www.ibm.com/developerworks/offers/sek/">订购 SEK for Linux</a>，共包含两张 DVD，其中有用于 Linux 的最新 IBM 试用软件，包括 DB2&reg;、Lotus&reg;、Rational&reg;、Tivoli&reg; 和 WebSphere&reg;。         <br /><br /></li>
    <li>使用可直接从 developerWorks 下载的 <a onmouseover="linkQueryAppend(this)" href="http://www.ibm.com/developerworks/downloads/">IBM 试用软件</a> 构建您的下一个 Linux 开发项目。         <br /><br /></li>
</ul>
<br /><strong>讨论</strong><br />
<ul>
    <li>通过博客、论坛、podcast 和空间加入 <a onmouseover="linkQueryAppend(this)" href="http://www.ibm.com/developerworks/community"> developerWorks 社区</a>。         </li>
</ul>
<br /><br />
<p><a name="author"><span class="atitle">关于作者</span></a></p>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td colspan="3"><img width="100%" height="5" src="http://www.ibm.com/i/c.gif" alt="" /></td>
        </tr>
        <tr valign="top" align="left">
            <td>&nbsp;</td>
            <td><img width="4" height="5" src="http://www.ibm.com/i/c.gif" alt="" /></td>
            <td width="100%">
            <p>Vallard Benincosa 是一位 &ldquo;懒惰&rdquo; 的 Linux 认证 IT 专家，在 IBM Linux Clusters 团队工作。他和他的妻子、两个小孩住在俄勒冈州波特兰市。 </p>
            </td>
        </tr>
    </tbody>
</table>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2052680.html</guid>
<subject>平台开发</subject>
<author>hzlinux</author>
<category>平台开发</category>
<pubDate>Tue, 12 Aug 2008 09:28:55 CST </pubDate>
</item>

<item>
<title>gmail 的一个用法；过滤垃圾邮件</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2048003.html</link>
<description>
<![CDATA[gmail 的一个用法；过滤垃圾邮件<br /><br />由于公司邮件服务器的垃圾邮件过滤效果不好<br />想了一个办法<br /><br />1 注册一个 gmail 帐号<br /><br />2 设置个gmail 通过pop3 收&nbsp; 公司服务器上的邮件<br />在 设置-〉帐号 <br />中添加<br /><br /><br />3&nbsp; 设置完成后 就可以享受 gmail 强大的过滤功能了。<br /><br />同时gmail 也可以通过　pop3 收邮件，通过smtp 发送邮件]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2048003.html</guid>
<subject></subject>
<author>hzlinux</author>
<category></category>
<pubDate>Sat, 09 Aug 2008 16:35:07 CST </pubDate>
</item>

<item>
<title>这一刻 值得期待，这一刻终于到来，这一刻终于过去。</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2045156.html</link>
<description>
<![CDATA[这一刻 值得期待，这一刻终于到来，这一刻终于过去。<br /><br />谎言将被揭穿。<br />]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2045156.html</guid>
<subject></subject>
<author>hzlinux</author>
<category></category>
<pubDate>Fri, 08 Aug 2008 10:02:23 CST </pubDate>
</item>

<item>
<title>FCKeditor works in FireFox but Internet Explorer 6 reports a javascript error: "length is null or no</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2043132.html</link>
<description>
<![CDATA[http://www.etomite.com/forums/lofiversion/index.php?t4870.html<br /><br />The problem is in manager/media/fckeditor/fckconfig.js where there is an extra comma in the toolbar list. If you remove it everything works fine:<br /><br />FCKConfig.ToolbarSets[&quot;Default&quot;] = [<br />&nbsp;&nbsp;&nbsp;&nbsp;['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['OrderedList','UnorderedList','-','Outdent','Indent'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Link','Unlink','Anchor'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Image','ibrowser','Flash','Table','Rule','Smiley','SpecialChar','PageBreak','UniversalKey'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],<br />&nbsp;&nbsp;&nbsp;&nbsp;'/',<br />&nbsp;&nbsp;&nbsp;&nbsp;['Style','FontFormat','FontName','FontSize'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['TextColor','BGColor'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['About'],<br />];<br /><br />FCKConfig.ToolbarSets[&quot;Default&quot;] = [<br />&nbsp;&nbsp;&nbsp;&nbsp;['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['OrderedList','UnorderedList','-','Outdent','Indent'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Link','Unlink','Anchor'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Image','ibrowser','Flash','Table','Rule','Smiley','SpecialChar','PageBreak','UniversalKey'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],<br />&nbsp;&nbsp;&nbsp;&nbsp;'/',<br />&nbsp;&nbsp;&nbsp;&nbsp;['Style','FontFormat','FontName','FontSize'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['TextColor','BGColor'],<br />&nbsp;&nbsp;&nbsp;&nbsp;['About']<br />];]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2043132.html</guid>
<subject></subject>
<author>hzlinux</author>
<category></category>
<pubDate>Thu, 07 Aug 2008 11:53:08 CST </pubDate>
</item>

<item>
<title>人生的虚无</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2024688.html</link>
<description>
<![CDATA[想上网的时候，网络联不上了。 <br />人和动物的区别？<br />人生似乎已经走过了1/3；感觉一事无成；没有理想，也没有目标；活着，只是为了活着。<br />这是一个不需要梦想的时代？每个人都在醉生梦死中。<br />小时候，有梦吗？<br />人总是回忆已经逝去，或者憧憬还没有到来的。<br />当下，当下总是无奈和痛苦。<br />逝去的已无法改变。<br />未来无法控制。<br />历史的虚无主义？]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2024688.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Wed, 30 Jul 2008 23:18:37 CST </pubDate>
</item>

<item>
<title>这个专家太好做了；财政部专家称提高个税起征点令有钱人受益；</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2015969.html</link>
<description>
<![CDATA[<h2>提高个税起征点令工薪阶层受益。</h2>
<br /><br />我来计算一下：<br /><br />http://www.google.com/search?q=%E4%B8%AA%E7%A8%8E+%E6%94%B6%E5%85%A5&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.debian:zh-CN:unofficial&amp;client=iceweasel-a<br /><br />7月22日，国家税务总局发布了上半年税收数据。其中个人所得税完成2135亿元<br /><br />http://zqb.cyol.com/content/2008-07/28/content_2282006.htm<br /><br />财政部财政科学研究所税收研究室主任孙钢表示，按照目前2000元的起征点，全国缴纳个税的人数占总人口比例不到2％。&ldquo;进一步上调个税起征点，只是令少 数高收入者获益，低收入者受益不大。&rdquo;他说。作为财税专家，孙钢曾于2005年报名参加全国人大常委会组织的提高个税起征点听证会。<br /><br /><br />15亿人口<br />2％<br />交税人数 15x2％ = 0.3<br />半年人均交税：2135/0.3= 7116 元<br />每月交税&nbsp; 1186元； 对应收入： 月收入在 15000 左右。<br /><br />问题：<br />1 你的月收入有这么高吗？<br />看来富人交税很积极。<br /><br /><br />2 如果没有，那么问题在哪里？<br /><br />请问专家 2%&nbsp; 这数据是如何来的？ 如果不是 2% ; 那结论如何成立。<br /><br />
<h2>提高个税起征点令工薪阶层受益。</h2>
<br /><br />速算表<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应纳税所得额不超过500元的，税率为5%，速算扣除数为0； <br />　　超过500元至2000元的部分，税率为10%，速算扣除数为25； <br />　　超过2000至5000元的部分，税率为15%，速算扣除数为125； <br />　　超过5000元20000元的部分，税率为20%，速算扣除数为375； <br />　　超过20000元至40000元的部分，税率为25%，速算扣除数为1375； <br />　　超过40000元至60000元的部分，税率为30%，速算扣除数为3375； <br />　　超过60000元至80000元的部分，税率为35%，速算扣除数为6375； <br />　　超过80000元至100000元的部分，税率为40%，速算扣除数为10375； <br />　　超过100000元的部分，税率为45%，速算扣除数为15375。 <br /><br />]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2015969.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Mon, 28 Jul 2008 10:49:10 CST </pubDate>
</item>

<item>
<title>人民的 智慧;</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2014034.html</link>
<description>
<![CDATA[<img src="http://club.isso.com.cn/uploads/95977/b221165a2ef54ab3b54c3ef76393d137.jpg" alt="" />]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/2014034.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Sun, 27 Jul 2008 09:55:56 CST </pubDate>
</item>

<item>
<title>不在沉默中爆发,救灾沉默中死去.</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1996209.html</link>
<description>
<![CDATA[不在沉默中爆发,救灾沉默中死去.<br /><br /><br />拼音打出来就是这样的. <br /><br />巧合?<br /><br />人民民主专政.<br />]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1996209.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Sun, 20 Jul 2008 11:29:25 CST </pubDate>
</item>

<item>
<title>国外的报纸 也是 标题党 “香港承受通胀之痛 近七成家庭靠领综援维生”</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1996190.html</link>
<description>
<![CDATA[&ldquo;香港承受通胀之痛 近七成家庭靠领综援维生&rdquo;<br /><br />难道 香港经济 崩溃了？<br />http://www.stnn.cc/hongkong/200807/t20080720_816405.html<br /><br />【星岛网讯】香港持续受通胀肆虐，逼使低收入家庭纷纷到&ldquo;食物银行&rdquo;求助，解决基本食物需要。香港社会服务联会近日完成一项研究，发现近六成八求助家庭靠领综援维生，家境清贫，住户人均入息低至一千六百元，成年人少吃一些已成生存之道。<br />　　据香港《星岛日报》报道，特首曾荫权上周宣布拨款一亿元推动短期食物援助，社联促请当局加强本港穷困地区的食物银行网络，在全港各区多设食物银行，并于贫穷重灾区设饭堂为试点，让有需要人士享免费膳食。<br />　　现时十二个社福机构及教会团体，在全港六十一处设有食物银行，社联业务总监蔡海伟指，今年3至5月间，全港食物银行已有四千人求助，以免费领取一至两星期食物为主。<br />　　低收入家庭到机构免费领干粮罐头过活急增，社联上月14日至本月14日间，在二十间食物银行向二百零六名使用者进行抽样调查，了解寻求食物援助人士的背景状况。<br />　 　结果发现，女性求助人占近七成，一半人年龄介乎四十至六十四岁；年轻力壮一族到食物银行亦为数不少，尤其廿五至三十九岁受助人占三成四，当中三成三人为 新来港及持双程证人士。大部分人育有年幼小孩，一成二人更需照顾一岁以下婴儿。工作方面，失业人士占近三成，五成六人过去半年来靠领综援维生，另有近六成 八受助人的整个家庭均领综援，家境清贫。<br />　　受助人住户人均入息中位数每月仅一千六百元，住户入息中位数则为三千三百元，育有婴儿的家庭更低至一千四百元。受助人的家庭收入，只达到全港中位数的两成八水平。<br />　　为节省食物开支，求助人奉行成年人吃少点的&ldquo;求生之道&rdquo;，其次是趁街市收档前买及少吃一餐；经济拮据，一半人过去一年来无力缴付水电杂费及向亲友借钱度日。<br />　　负责今次调查的蔡海伟指，结果反映求助食物银行人士以领综援的贫困家庭为主，在高通胀压力下，不少家庭至月底无钱买食物。他预料，通胀持续高企，下半年往食物银行人数势增，现时六十一个食物援助地点仍是不足。<br />　　特首曾荫权16日公布，拨款一亿元推行短期食物援助。社联建议，政府应在较少食物银行的低收入地区增设服务，包括黄大仙、沙田及葵青区，并可试行在穷困重灾区设饭堂，建立一个完善的食物派发网络。<br />　　长远而言，社联促政府检讨综援标准金额，并为学童增设膳食津贴，撤销目前来港不足七年的单程证人士不获申领综援的要求，免令贫困家庭进一步&ldquo;山穷水尽&rdquo;。]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1996190.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Sun, 20 Jul 2008 11:20:15 CST </pubDate>
</item>

<item>
<title>test  secuirty  </title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1992900.html</link>
<description>
<![CDATA[<h2 class="title_blog01"><a href="http://hzlinux.bokee.net/bloggermodule/blog_viewblog.do?id=1971559">孩子 是未来；社会是现实；无数个妥协。</a></h2>
孩子 是未来；社会是现实；无数个妥协。人最大的问题，什么是一个人? 如何成为一个人?一个 真人，一个真实的人。读&nbsp; http://item.feedsky.com/~feedsky/my1510/~5<br />
<h2 class="title_blog01"><a href="http://hzlinux.bokee.net/bloggermodule/blog_viewblog.do?id=1971559">孩子 是未来；社会是现实；无数个妥协。</a></h2>
孩子 是未来；社会是现实；无数个妥协。人最大的问题，什么是一个人? 如何成为一个人?一个 真人，一个真实的人。读&nbsp; http://item.feedsky.com/~feedsky/my1510/~5<br />
<h2 class="title_blog01"><a href="http://hzlinux.bokee.net/bloggermodule/blog_viewblog.do?id=1971559">孩子 是未来；社会是现实；无数个妥协。</a></h2>
孩子 是未来；社会是现实；无数个妥协。人最大的问题，什么是一个人? 如何成为一个人?一个 真人，一个真实的人。读&nbsp; http://item.feedsky.com/~feedsky/my1510/~5<br />
<h2 class="title_blog01"><a href="http://hzlinux.bokee.net/bloggermodule/blog_viewblog.do?id=1971559">孩子 是未来；社会是现实；无数个妥协。</a></h2>
孩子 是未来；社会是现实；无数个妥协。人最大的问题，什么是一个人? 如何成为一个人?一个 真人，一个真实的人。读&nbsp; http://item.feedsky.com/~feedsky/my1510/~5<br />
<h2 class="title_blog01"><a href="http://hzlinux.bokee.net/bloggermodule/blog_viewblog.do?id=1971559">孩子 是未来；社会是现实；无数个妥协。</a></h2>
孩子 是未来；社会是现实；无数个妥协。人最大的问题，什么是一个人? 如何成为一个人?一个 真人，一个真实的人。读&nbsp; http://item.feedsky.com/~feedsky/my1510/~5<br />
<h2 class="title_blog01"><a href="http://hzlinux.bokee.net/bloggermodule/blog_viewblog.do?id=1971559">孩子 是未来；社会是现实；无数个妥协。</a></h2>
孩子 是未来；社会是现实；无数个妥协。人最大的问题，什么是一个人? 如何成为一个人?一个 真人，一个真实的人。读&nbsp; http://item.feedsky.com/~feedsky/my1510/~5<br />
<h2 class="title_blog01"><a href="http://hzlinux.bokee.net/bloggermodule/blog_viewblog.do?id=1971559">孩子 是未来；社会是现实；无数个妥协。</a></h2>
孩子 是未来；社会是现实；无数个妥协。人最大的问题，什么是一个人? 如何成为一个人?一个 真人，一个真实的人。读&nbsp; http://item.feedsky.com/~feedsky/my1510/~5]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1992900.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Fri, 18 Jul 2008 16:23:37 CST </pubDate>
</item>

<item>
<title>孩子 是未来；社会是现实；无数个妥协。</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1971559.html</link>
<description>
<![CDATA[孩子 是未来；社会是现实；无数个妥协。<br /><br />人最大的问题，什么是一个人? 如何成为一个人?<br />一个 真人，一个真实的人。<br /><br />读&nbsp; http://item.feedsky.com/~feedsky/my1510/~5935684/91977559/1488578/1/item.html<br /><br />有感。]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1971559.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Thu, 10 Jul 2008 11:24:47 CST </pubDate>
</item>

<item>
<title>纪念 已经逝去的人们</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1930769.html</link>
<description>
<![CDATA[纪念 已经逝去的人们]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1930769.html</guid>
<subject></subject>
<author>hzlinux</author>
<category></category>
<pubDate>Tue, 24 Jun 2008 14:06:43 CST </pubDate>
</item>

<item>
<title>google appengine  可能的应用</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1845392.html</link>
<description>
<![CDATA[1作为普通的空间<br /><br />2 链接工厂<br /><br />3 开发一些有趣的应用<br /><br /><br />那些 提供虚拟主机服务的公司 会有 很大的影响<br /><br />一般的企业网站 完全可以用 google&nbsp; appengine 来做<br /><br />没有 南北互联问题； 国外访问也很快<br /><br />放一个 静态的网站 一点问题也没有。&nbsp;&nbsp;  <br />可能会 出现 这样一种业务， 将国内的企业 网站&nbsp; 静态化后 放到 google appengine&nbsp; 中<br /><br />最终 很可能被和谐， 而 无法使用这个 免费的服务。<br />这是 最大的变数<br />]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1845392.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Thu, 29 May 2008 17:09:00 CST </pubDate>
</item>

<item>
<title>google appengine 上传 注意事项</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1845296.html</link>
<description>
<![CDATA[1 app-name必须和申请的 2级域名一致<br /><br />2 注意python文件的编码问题；<br />需要 进行 显式的 申明<br /><br />
<pre># -*- coding: utf-8 -*-<br /></pre>
<br />http://www.python.org/dev/peps/pep-0263/<br /><br />免费帐户 可以建 3个应用<br /><br />可以绑定 自己的域名<br />似乎 也可以 绑定 2级域名<br />]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1845296.html</guid>
<subject>OPEN SOURCE</subject>
<author>hzlinux</author>
<category>OPEN SOURCE</category>
<pubDate>Thu, 29 May 2008 16:58:16 CST </pubDate>
</item>

<item>
<title>google appengine 学习</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1845253.html</link>
<description>
<![CDATA[debian&nbsp; etch下<br /><br />首次 运行 提示 需要 python2.5 以上<br /><br />安装python2.5后， 提示没有 PIL包<br />apt-get install python-imaging<br /><br /><br /><br />8080 已经使用<br />/usr/bin/python2.5&nbsp; ./google_appengine/dev_appserver.py&nbsp;&nbsp; --help<br /><br />&nbsp;/usr/bin/python2.5&nbsp; ./google_appengine/dev_appserver.py&nbsp; -p 8888&nbsp; helloworld/<br /><br />还是提示没有<br />Could not initialize images API; you are likely missing the Python &quot;PIL&quot; module. ImportError: No module named PIL<br />但是可以运行<br /><br />http://127.0.0.1:8888/<br />看到hello word <br /><br /><br /> 对2.5　的支持不是很好]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1845253.html</guid>
<subject></subject>
<author>hzlinux</author>
<category></category>
<pubDate>Thu, 29 May 2008 16:54:29 CST </pubDate>
</item>

<item>
<title>为 地震中死去的人 默哀。</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1780778.html</link>
<description>
<![CDATA[为 地震中死去的人 默哀。<br /><br />生命是如此的脆弱。<br />]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1780778.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Wed, 14 May 2008 09:59:34 CST </pubDate>
</item>

<item>
<title>test rss  是否可以及时获取 google reader 可以取道了</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1769202.html</link>
<description>
<![CDATA[test rss&nbsp; 是否可以及时获取<br /><br />google&nbsp; reader&nbsp; 是否可以抓取到 最新的内容]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1769202.html</guid>
<subject></subject>
<author>hzlinux</author>
<category></category>
<pubDate>Sun, 11 May 2008 17:47:08 CST </pubDate>
</item>

<item>
<title>春风吹，战鼓擂，现在世界上究竟谁怕谁</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1750603.html</link>
<description>
<![CDATA[春风吹，战鼓擂，现在世界上究竟谁怕谁<br /><br /><br /><a href="http://ofblog.com/zhengzhi/327.html" target="_blank">我第一反应是愤怒，第二反应是回击</a>，然后才想如何<a href="http://ofblog.com/zhengzhi/317.html" target="_blank">有理有利有节</a>地回击。事后，<a href="http://ofblog.com/zhengzhi/349.html" target="_blank">古城西安的瓮城中的战鼓</a>，让我一下子想起&ldquo;春风吹，战鼓擂，现在世界上究竟谁怕谁&rdquo;，那个疯狂的年代中耳熟之极的歌词。<br /><br />copy from
<h2 class="entry-title"><a href="http://ofblog.com/zhengzhi/355.html" target="_blank" class="entry-title-link">当互联网上&ldquo;部落鼓&rdquo;响起</a></h2>
<div class="entry-author"><span class="entry-source-title-parent">from <a target="_blank" class="entry-source-title" href="http://www.google.com/reader/view/feed/http%3A%2F%2Ffeeds.feedburner.com%2Fofblog%2Fzhengzhi">郑治&middot;传媒边缘</a></span> by <span class="entry-author-name">郑治</span></div>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1750603.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Wed, 07 May 2008 17:26:46 CST </pubDate>
</item>

<item>
<title>今昔何昔 </title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1726570.html</link>
<description>
<![CDATA[今昔何昔&nbsp;]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1726570.html</guid>
<subject></subject>
<author>hzlinux</author>
<category></category>
<pubDate>Wed, 30 Apr 2008 15:44:38 CST </pubDate>
</item>

<item>
<title>通道变成渠道… (携程“卡壳”记) (copy )</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1697467.html</link>
<description>
<![CDATA[<h2 class="entry-title"><a href="http://item.feedsky.com/%7Efeedsky/whitecrow_blog/%7E1217841/68398801/1219566/1/item.html" target="_blank" class="entry-title-link">通道变成渠道&hellip; (携程&ldquo;卡壳&rdquo;记)</a></h2>
<div class="entry-author"><span class="entry-source-title-parent">from <a target="_blank" class="entry-source-title" href="http://www.google.com/reader/view/feed/http%3A%2F%2Ffeed.feedsky.com%2Fwhitecrow_blog">白鸦，Blog</a></span> by <span class="entry-author-name">白鸦</span></div>
<div class="entry-body">
<div>
<div class="item-body">
<div>
<p><strong>&ldquo;卡壳&rdquo;第一次：</strong><br /> 下午去上地之前才想起周末往厦门的机票未订，连忙打开电脑上携程订票。可我根本记不住携程的网址，只好Google一下然后再进。<br /> .<br /> 英文好的人可能会朝笑我，连携程那么简单的网址都记不住。但我可以告诉你：<a href="http://ucdchina.com/blog/?p=425" target="_blank">周日书友会</a>上我们近20个人中只有一个人准确说出了携程的网址。英文不好的人很多，他们也坐飞机，也订酒店。</p>
<p><strong>&ldquo;卡壳&rdquo;第二次：</strong><br /> 熟练的查到了航班，准备下单，携程的网站变成&ldquo;Bad Request&rdquo;，半个小时一直是&ldquo;Bad Request&rdquo;。<br /> 整个页面只有粗黑的&ldquo;Bad Request&rdquo;，我甚至不能后退到携程的任何一个页面&hellip;<br /> 无奈之下只好先出门，打算在车上想办法查电话然后电话订票。<br /> .<br /> 这不是我第一次在携程遇到这种情况（至少是第四次），不知道会不会是最后一次。 有人说可能是因为我用MAC，但似乎这和MAC没什么关系吧？ ..</p>
<p><strong>&ldquo;卡壳&rdquo;第三次：</strong><br /> 出租车上绞尽脑汁也未想起携程的订票电话，电话本未存，也不好意思为了这点小事惊动携程内部的朋友。 只好打114。<br /> 第一次未能打通。提示&ldquo;对方无法接通&rdquo;。<br /> .<br /> 注意：我用的是每周都会收到几条&ldquo;139免费邮箱、充值送好礼、拨打12580查三次就有礼、&hellip;&rdquo;等等移动内部垃圾短信的，&ldquo;尊贵全球通&rdquo;号码。<br /> 早就听人说过自从移动的12580作了搜索业务后，用移动打114经常第一次是拨不出去的，而且有段时间114的查询结果短信会延迟半天才能收到，而且有段时间只要<br /> 你用移动手机打了114很快就会收到一条短信&ldquo;拨打移动的12580服务也可以查询xxx&rdquo;，而且&hellip; 不知道我这次遭遇是不是其中的某个&ldquo;而且&rdquo;。</p>
<p><strong>&ldquo;卡壳&rdquo;第四次：</strong><br /> 挂机后再次拨打114，通了。<br /> &ldquo;您好，麻烦帮我查一下携程网的订票电话&rdquo;<br /> 114：&ldquo;先生，你是要订机票还是订酒店呢？ 我们可以直接为您提供预定服务&rdquo;<br /> &ldquo;不好意思，我不需要你们帮我订票，我只想查询携程的订票电话&rdquo;<br /> 114：&ldquo;先生，我们一样可以帮你预订&hellip;&rdquo;<br /> &ldquo;我不需要你帮我预订，只需要帮我查一下携程的电话&rdquo;<br /> 114：&ldquo;对不起，我们这里没有登记携程的电话！&rdquo;<br /> &ldquo;只要是携程的电话就行，什么都没登记吗？&rdquo;<br /> 114：&ldquo;是的，我们这里没有登记携程的信息&rdquo;<br /> &ldquo;那我以前怎么能在你们114查到他们的电话呢？&rdquo;<br /> 114：&ldquo;对不起，我们这里没有登记携程的电话！&rdquo; &hellip;<br /> .<br /> 请相信我，我之前真的在114顺利查询过携程的电话。<br /> 就算没有登记，我一说携程他们就知道&ldquo;订机票还是酒店&rdquo;，如此熟悉！如果真的把用户当那么一丁点回事，也会录入这个信息的。（注意：114和12580的 信息都不只是商户自己提交的，绝大多数是专门的数据部门人工采集或者购买的。而且他们的系统有一个功能是&ldquo;信息不全&rdquo;或&ldquo;信息报错&rdquo;，可以汇报用户查询不 到的信息方便数据部门随后录入。）<br /> 在我很佩服电信114商业敏感能力和话务员训练素质的同时，我更加佩服电信的无耻程度。</p>
<p><strong>&ldquo;卡壳&rdquo;第五次：</strong><br /> 114不成，只好求助于每周都会发垃圾短信告诉我&ldquo;拨打12580查三次就有礼&rdquo;的中国移动。<br /> &ldquo;您好，麻烦帮我查一下携程网的订票电话&rdquo;<br /> 12580：&ldquo;先生，您是要订机票还是订酒店呢？ 我们可以为您提供订&hellip; &rdquo;<br /> &ldquo;我只需要您帮我查一下携程网的电话！&rdquo;<br /> 12580：&ldquo;噢，那我帮您查询一下 &rdquo;<br /> &ldquo;好的，谢谢&rdquo;<br /> 12580：&ldquo;您是要找那个国航的携程吗？&rdquo;<br /> &ldquo;啊！ 我要找携程网的订票电话。是携程网。&rdquo;<br /> 12580：&ldquo;哦，对不起，我们这里没有登记。&rdquo;<br /> .<br /> 12580的商业敏感能力也是天生的，而且他们作的比较虚伪，可惜他们的话务员训练素质确实很差，装傻也装的太傻了。 我说携程你就知道&ldquo;订机票还是酒店&rdquo;！竟然还问我&ldquo;是国航的那个携程吗？&rdquo;，装的太不像了。</p>
<p><strong>&ldquo;卡壳&rdquo;第六次：</strong><br /> 因为知道12580的坐席训练素养没有那么强，挂掉之后想了一会，再次拨打了12580。<br /> &ldquo;您好，麻烦帮我查一下携程网的订票电话&rdquo;<br /> 12580：&ldquo;先生，您是要订机票还是订酒店呢？ 我们可以为您提供预订机票和酒店的服务&rdquo;<br /> &ldquo;不好意思，我不需要订票。我只是帮朋友查一下他的订票电话&rdquo;<br /> 12580：&ldquo;您稍等，我帮您查一下&rdquo;<br /> &ldquo;好的，谢谢&rdquo;<br /> 12580：&ldquo;先生您是否需要我帮您把结果发送到手机上？&rdquo;<br /> &ldquo;好的，谢谢&rdquo;&hellip;<br /> 挂掉电话，收到短信：&ldquo;单位名称：携程旅行网，联系电话：800-820-6666，&hellip;&rdquo;<br /> .<br /> 很明显，12580的话务员素质不齐，这个告诉我电话的话务员很NB。我被他耍了，她的系统来电显示会很明显的告诉她&ldquo;137xxxxx，北京，全球通用户&rdquo;，她却毅然决然的给我发了一个手机不能拨打的800电话！<br /> (另外，12580的管理人员效率怎么那么低？业务作了一两年，短信的规范竟然还没优化过来，&ldquo;单位名称：xxx，联系电话：&rdquo;这种浪费文字，让用户收到的短信无端从1条变成N条的做法竟然还存在&hellip;)</p>
<p><strong>&ldquo;卡壳&rdquo;第七次：</strong><br /> 出租车到了，出租费28元。（北京是起步10块，每公里1.6元。有兴趣的人可以计算一下我这通查找浪费了多少时间）<br /> 怎么办？<br /> 我再也不敢打电话查询了，怕伤自尊，更害怕回头移动和电信同时每天给我发&ldquo;我们可以帮你订机票和酒店&hellip;&rdquo;的短信。<br /> (最后短信让junchen上网帮我找到400电话后，才发现自己忘记了：把800变成400后面的不变就是携程的400电话。 真笨。)</p>
<p>.<br /> 试想一下：<br /> 当你用ADSL访问sina.com，会先进入一个网站：您是要看新闻吗？ 请进入&ldquo;网通新闻网&rdquo;。<br /> 当你用移动电话打电信座机，先听到一个声音：邀请您的朋友使用移动固话业务吧，从电信转到移动固话可获赠xx元红包和xxx优惠。<br /> 当你用座机给&ldquo;<a href="http://www.google.cn/search?complete=1&amp;hl=zh-CN&amp;newwindow=1&amp;rlz=1B3GGGL_zh-CNCN271&amp;q=%E5%A4%A9%E4%B8%8A%E4%BA%BA%E9%97%B4%E5%A4%9C%E6%80%BB%E4%BC%9A&amp;revid=-1&amp;sa=X&amp;oi=revisions_inline&amp;resnum=0&amp;ct=broad-revision&amp;cd=1" target="_blank">天上人间</a>&rdquo;打电话，首先会听到一个美丽的声音：电信贵宾俱乐部有百位美丽性感俄罗斯女郎，可人的尤物为您提供全套服务，安全、卫生&hellip;<br /> .<br /> 当所有的&ldquo;通道&rdquo;都变成&ldquo;渠道&rdquo;，世界漆黑一片。 </p>
</div>
</div>
</div>
</div>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1697467.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Tue, 22 Apr 2008 17:45:22 CST </pubDate>
</item>

<item>
<title>蒋　捷　　　虞美人</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1676097.html</link>
<description>
<![CDATA[蒋　捷　　　虞美人
<p>　　　　少年听雨歌楼上，红烛昏罗帐。</p>
<p>　　　　壮年听雨客舟中，江阔云低，断雁叫西风。</p>
<p>　　　　而今听雨僧庐下，鬓已星星也。</p>
<p>　　　　悲欢离合总无情，一任阶前点滴到天明。</p>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1676097.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Thu, 17 Apr 2008 09:00:19 CST </pubDate>
</item>

<item>
<title>放风筝  乱风</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1631419.html</link>
<description>
<![CDATA[放风筝&nbsp; 乱风]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1631419.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Fri, 04 Apr 2008 16:42:21 CST </pubDate>
</item>

<item>
<title>如何摆脱网络依赖症</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1624718.html</link>
<description>
<![CDATA[网络性心理障碍是指患者往往没有一定的理由，无节制地花费大量时间和精力在国际互联网上持续聊天、浏览，以致影响生活质量，降低工作效率，损害身体健康， 并出现各种行为异常、人格障碍、交感神经功能部分失调。其典型症状表现为情绪低落、无愉快感或兴趣丧失、睡眠障碍、生物钟紊乱、食欲下降和体重减轻、精力 不足、精神运动性迟缓和激动、自我评价降低和能力下降、思维迟缓、有自杀意念和行为、社会活动减少、大量吸烟、饮酒和依赖药物等。&nbsp; <br /> <br />　　在网络性心理障碍的早期，患者先是感到上网其乐无穷，随之不断延长上网时间，有些人晚上起床解手时都会情不自禁地打开电脑到网上&ldquo;溜达溜 达&rdquo;。他们开始是精神上的依赖&mdash;&mdash;&mdash;渴望上网，而后可发展为躯体依赖，表现为每天起床后情绪低落、思维迟缓、头昏眼花、双手颤抖、疲乏无力和食欲不振，上 网以后精神状态才能恢复至正常水平。该病晚期，患者会出现与生理因素无关的体重减轻、外表憔悴，一旦停止上网还会出现急性戒断综合征，甚至有可能采取自残 或自杀手段，危害生命安全。&nbsp; <br /> <br />　　网络性心理障碍的发病年龄介于15－45岁，男性患者占总发病人数的98．5％左右，女性约占1．5％，20－30岁的单身男性为易患人群。 心理医生称之为&ldquo;网络依赖症&rdquo;。要想治愈网络依赖症，首先就是要承认自己对网络上瘾；其次是将上网后便不再去做的事列出清单；第三是认清无节制地上网给自 己带来了多少麻烦或严重后果：比如视力下降、身体变差、头昏脑涨、食欲不振、学习成绩下降、工作效率降低、生活没有热情、家庭失和甚至破裂等，从而认清其 危害性。主要采取的措施是鼓励患者积极参加社会活动，逐步摆脱对网络的依赖，临床也可应用抗抑郁药物及精神疗法等综合治疗。尤其对少年儿童的网络依赖症， 当家长的要及早采取措施，要循循善诱、因势利导，避免因高压而产生逆反心理。]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1624718.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Wed, 02 Apr 2008 15:44:38 CST </pubDate>
</item>

<item>
<title>排除干扰；稳定情绪；各个击破。</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1530568.html</link>
<description>
<![CDATA[排除干扰；稳定情绪；各个击破。<br /><br />不能被苦难击倒。<br /><br />要战胜苦难，就算只是为了证明自己还有干劲。<br /><br />每日 进步一点，每日完成一点，总可以看到结果。]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1530568.html</guid>
<subject>平台开发</subject>
<author>hzlinux</author>
<category>平台开发</category>
<pubDate>Thu, 13 Mar 2008 14:22:56 CST </pubDate>
</item>

<item>
<title>Google Web I/O</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1528216.html</link>
<description>
<![CDATA[http://code.google.com/events/io/sessions.html<br /><br /><a name="top"></a>
<div class="g-doc-800">
<div class="g-section header">&nbsp;</div>
<div class="g-section g-tpl-180 intro">
<div class="g-unit g-first">     <a href="http://code.google.com/events/io/index.html"><img width="172" height="90" border="0" alt="Google I/O" src="http://code.google.com/events/io/images/logo.gif" /></a>   </div>
<div class="g-unit">
<h1>Web Forward</h1>
<p>A two day developer gathering in San Francisco<br />     May 28-29 2008</p>
</div>
</div>
<div class="g-section nav">
<ul>
    <li><a href="http://code.google.com/events/io/about.html">About</a></li>
    <li><a onclick="javascript:pageTracker._trackPageview('/out/register');" href="https://www.weboom.com/sparks/google_io/forms/">Register</a></li>
    <li><a href="http://code.google.com/events/io/agenda.html">Agenda</a></li>
    <li class="sel"><a href="http://code.google.com/events/io/sessions.html">Sessions</a></li>
    <li><a href="http://code.google.com/events/io/speakers.html">Speakers</a></li>
    <li><a href="http://code.google.com/events/io/location.html">Location</a></li>
    <li><a href="http://code.google.com/events/io/faq.html">FAQ</a></li>
</ul>
</div>
<div class="g-section content">
<p>Google I/O brings engineers together to learn about and discuss the latest   web development technologies. Sessions are grouped by topic areas to make it   easier for you to get the most out of two days. Whether you're interested in   OpenSocial, Android, Google Web Toolkit, or Gears, you will easily find   sessions that will benefit your web development.</p>
<p>Listed below are just a few of the sessions at Google I/O. Check back as   we announce additional sessions and speakers over the coming weeks, but   <a onclick="javascript:pageTracker._trackPageview('/out/register');" href="https://www.weboom.com/sparks/google_io/forms/">register</a> now as space is limited.</p>
<h2>Topics at Google I/O</h2>
<ul class="topics">
    <li><a href="http://code.google.com/events/io/sessions.html#AJAX"><strong>AJAX &amp; JavaScript:</strong></a>       AJAX and JavaScript continue to capture the imagination of web       developers. These sessions focus on tools and techniques of client side       code, and how to use them to make serious applications faster, safer, and       more easily.</li>
    <li><a href="http://code.google.com/events/io/sessions.html#tools"><strong>APIs &amp;Tools:</strong></a>       Development tools for the web are evolving. Product APIs allow       integration and extention of web applications. Tools like Google Web       Toolkit provide a whole new way to improve performance and compatibility,       for your app and your development team. This topic area looks at       development tools and APIs for web developers.</li>
    <li><a href="http://code.google.com/events/io/sessions.html#social"><strong>Social:</strong></a>       The web is an inherently social place. A new wave of APIs and frameworks       are opening up interesting ways to interact with people through       applications. Learn about the bleeding edge of social applications, how       to use OpenSocial as a platform, and what it takes to create your own       container site with Shindig.</li>
    <li><a href="http://code.google.com/events/io/sessions.html#mobile"><strong>Mobile:</strong></a>       Mobile devices are blurring the lines between handset developers and web       developers, opening up interesting opportunities for applications that       span multiple platforms. We'll take a look at how developers can use       technologies such as Android and Mobile Gears to build applications on       the mobile web.</li>
    <li><a href="http://code.google.com/events/io/sessions.html#geo"><strong>Maps &amp; Geo:</strong></a>       Since the introduction of the Google Maps API in 2005, geo and map       applications have been one of the most interesting phenomenons of the       web. These sessions focus on the many aspects of Geo applications, from       KML to the Google Maps API and more.</li>
</ul>
<h2>Session Types</h2>
<ul class="topics">
    <li><strong>101:</strong> 101 sessions don't require previous knowledge of a     particular product or technology. They include overviews of a technology     and introductions into new areas. That doesn't mean they aren't technical,     because most are. If you are new to a product, start with the 101 sessions     and progress to 201s.</li>
    <li><strong>201:</strong> 201 sessions provide a deeper dive into a technology or     product. These sessions go beyond the basics and are aimed at developers     already familiar with a technology.</li>
    <li><strong>Code Labs:</strong> Code Labs walk developers through their first     experience with a product or particular aspect of a product. They are 2     hour, more hands-on sessions where engineers will walk you through actual     code.</li>
    <li><strong>Fireside Chats:</strong> Q&amp;A is often the best part of a session,      as it gives developers a chance to ask what's on their minds. Fireside Chats     provide that opportunity in an informal setting with the actual product     engineering teams.</li>
    <li><strong>Tech Talks:</strong> Google has a tradition of holding informative Tech     Talks on campus that offer insight into an area. In that tradition, Google     I/O features Tech Talks on subjects of interest to developers, such as     computer science problems and programming languages.</li>
</ul>
<h2>Sessions</h2>
<a name="AJAX"></a>   <br />
<h2>AJAX / JavaScript</h2>
<h4>Secure Collaboration - How Web Applications Can Share and Still Be Paranoid</h4>
<p>Mike Samuel, Ben Laurie<br />   Type: 101</p>
<p>Google's Caja project allows mutually untrusting and untrusted web   applications to run in the same context and allows them to safely   communicate by regular JS function calls and reference passing.  It   provides tools that rewrite JS/HTML/CSS web applications to enable a wide   range of security policies, allowing untrusted third party code to run in   environments as dissimilar as social networks and corporate intranets.</p>
<p>Participants should be familiar with JavaScript and dynamic web   applications.</p>
<h4>What's New in Google Gears</h4>
<p>Chris Prince<br />   Type: 101</p>
<p>Google Gears has progressed by leaps since its initial launch &mdash; and    in ways that many developers may not realize.  Come learn all about what's    new in Google Gears.  (Hint: it's not just about offline!)</p>
<p>No prior knowledge of Gears is needed.</p>
<h4>The Cross-Web: Safe, Secure Mashups with Google Gears</h4>
<p>Brad Neuberg<br />   Type: 201</p>
<p>Are you interested in mashups, but worried about security?  This session   will show you how Google Gears' new cross-origin workers allow you to create   safe and secure mashups.</p>
<p>Participants should have prior knowledge of JavaScript, mashups, and   Google Gears.</p>
<h4>Gears Offline Architectures</h4>
<p>Brad Neuberg<br />   Type: 201</p>
<p>Creating web applications that work offline can be difficult.  You need   to decide how to handle syncing data, how much of your application's   functionality to move offline, and more.  This session will explore best   practices for making these decisions and how to architect your web   application to make it run smoothly offline.</p>
<p>Participants should have prior knowledge of JavaScript and Google    Gears.</p>
<h4>Fireside Chat: Google Gears</h4>
<p>Gears engineering team<br />   Type: Fireside Chat</p>
<p>Fireside chats are a chance to talk to the engineering team building   products. Come tell the team what you want, discuss issues and design   decisions, and hear the team's thoughts on just about whatever you ask.</p>
<h4>Even Faster Websites</h4>
<p>Steve Souders<br />   Type: 201</p>
<p>Steve's book <em>High Performance Web Sites</em> describes the 14 best    practices he developed while working as the Chief Performance Yahoo!.    YSlow, the Firebug extension he created, codified those best practices.    Now working at Google, Steve discusses the next set of best practices    he's discovered, including the impact of iframes and where to place    (and where not to place) inline script blocks.</p>
<h4>Fireside Chat: AJAX APIs</h4>
<p>AJAX APIs engineering team<br />   Type: Fireside Chat</p>
<p>Fireside chats are a chance to talk to the engineering team building   products. Come tell the team what you want, discuss issues and design   decisions, and hear the team's thoughts on just about whatever you ask.</p>
<p><a href="http://code.google.com/events/io/sessions.html#top">Back to the top</a></p>
<a name="tools"></a>   <br />
<h2>APIs &amp; Tools</h2>
<h4>Painless Python for Programmers</h4>
<p>Alex Martelli<br />   Type: 101</p>
<p>Python is a popular very-high-level programming language, with a clean   and spare syntax, simple and regular semantics, a large standard   library and a wealth of third-party extensions, libraries and tools.   With several production-quality open-source implementations available,   many excellent books, and growing acceptance in both industry and   academia, Python can play a useful role within a huge variety of   software development projects.</p>
<p>Moreover, Python is really easy to learn, particularly (though not   exclusively) for programmers who are skilled at such languages as   Java, C++ and C. This talk addresses software developers who are   experienced in other languages but have had limited or no exposure to   Python yet, and offers a rapid overview of the main characteristics of   the language, plus a brief synopsis of its main implementations, its standard   library, and Python's use with Google APIs &amp; tools.</p>
<h4>New Python Developments for Web Programmers</h4>
<p>Guido van Rossum<br />   Type: 101</p>
<p>Python is one of the major languages of the web, and is increasing in   usage and prominence. In this session we'll talk about new developments in   Python that are very relevant to web developers.</p>
<h4>Surprisingly Rockin' JavaScript and DOM Programming in GWT</h4>
<p>Google Web Toolkit Engineering<br />   Type: 201</p>
<p>You may already know about GWT's nifty JavaScript Native Interface (JSNI),   which allows you to define native Java methods with handwritten JavaScript.   In GWT 1.5, there's an even more powerful way to program close to the metal.   You can now model arbitrary JavaScript types directly as Java classes   (specifically, as subclasses of GWT's JavaScriptObject class), yet there is   no overhead in size or speed. You can code  against any JavaScript object as   if it were a regular old Java object. So, what does that buy you? </p>
<ul>
    <li>It's never been easier to integrate with external JS libraries; just     define a Java class that models the JS object you want to interact with.     Nice Java syntax, no overhead.</li>
    <li>Freely use low-level native JS data structures (JS arrays, for example)     by exposing them with a Java-friendly API. You can even apply Java generics     to JS types!</li>
    <li>Superimpose strongly-typed Java classes on JSON objects, giving you IDE     code completion, refactoring and compile-time type checking.</li>
    <li>GWT uses this new ability to provide a complete cross-browser DOM class     hierarchy based on the W3C's Java HTML bindings. Programming straight to     the DOM has never been more productive.</li>
</ul>
<p>Come learn about this unusual and powerful new capability that you can use   to squeeze every drop of performance and interop out of your GWT projects.</p>
<h4>Resource Bundles and Linkers in Google Web Toolkit</h4>
<p>Bob Vawter<br />   Type: 201</p>
<p>As Joel Webber says, &quot;The fastest HTTP requests are those which do not, in   fact, occur.&quot; GWT really takes this principle to heart. It turns out that   GWT's compilation process provides the perfect opportunity to smush, pack,   tweak, and jimmy the various types of resources needed in an AJAX   application. Image bundles can reduce the number of image fetches by an order   of magnitude. Style injection can automatically minify your CSS and inline   background images as &quot;data:&quot; URLs. The Gadget linker automatically creates a   module XML file for your GWT-based Google Gadget, and the Gears linker   extension automatically creates a Gears manifest so you easily run your GWT   app offline.</p>
<p>Is there any optimization that GWT <em>doesn't</em> include? No, not really.   So, come learn how to use these extremely powerful tools to build surpassingly   fast AJAX apps.</p>
<h4>Faster-than-possible Code: Deferred Binding</h4>
<p>Bruce Johnson<br />   Type: Code Lab</p>
<p>What do you do when you want the benefits of modularity and abstraction   during development, but you aren't willing to subject users with any runtime   overhead to get it? If you're the GWT team, you invent deferred binding.   Deferred binding is a pluggable compile-time type substitution and code   generation mechanism. This unique approach to program modularization provides   many of the benefits of Java reflection and dynamic class loading without   compromising the GWT compiler's ability to optimize the heck out of your   code.</p>
<p>In this Code Lab, we'll examine how the GWT libraries leverage deferred   binding and GWT compiler optimizations to provide zero-overhead browser   abstractions, highly optimized internationalization, automatic image   bundling, and high-performance, polymorphic RPC. Did we mention that deferred   binding is extensible? We'll also use deferred binding to create a new   library from scratch.</p>
<h4>Reusing Google APIs with Google Web Toolkit</h4>
<p>Google Web Toolkit Engineering<br />   Type: Code Lab</p>
<p>We like to say that GWT brings software engineering to the crazy world of   AJAX, and of course straightforward code reuse is a cornerstone of smart   software engineering. Naturally, then, we had to create easy-to-reuse jars   that provide Java-friendly versions of the popular Google JavaScript APIs.   It's called the Google API Library for GWT, but feel free to call it GALGWT   (we do).</p>
<p>Heard of Google Maps? GALGWT has it. Gears? It's in there. Gadgets, too.   Come to this hands-on session to see just how easy it can be to employ Google   APIs in your GWT projects.</p>
<h4>Google Web Toolkit and Client-Server Communication </h4>
<p>Google Web Toolkit Engineering<br />   Type: 201</p>
<p>It's a rare AJAX application that doesn't need network access. To the   despair of many a developer, though, there are almost as many ways of   communicating with a server as there are servers. The usual alphabet soup   applies (XML, JSON, SOAP, RPC, and others) but even once you pick one, you're   really just getting started. Designing your services for scalability and   performance is an art in itself, regardless of which format you choose to   represent your data. Fortunately, a few of us have lived this nightmare and   survived to talk about it.</p>
<h4>Fireside Chat: Google Web Toolkit</h4>
<p>Google Web Toolkit engineering team<br />   Type: Fireside Chat</p>
<p>Fireside chats are a chance to talk to the engineering team building   products. Come tell the team what you want, discuss issues and design   decisions, and hear the team's thoughts on just about whatever you ask.</p>
<h4>Extend the Reach of Your Google Apps Environment with Google APIs</h4>
<p> Jackie Bodine, Ryan Boyd<br />   Type: 101</p>
<p>Google Apps already gives your organization an out-of-the-(virtual)-box   solution for mail, calendaring, documents and more.  What more could you   want?  How about a way to hook in Google Apps with all the systems you're   already using?  Or a way to migrate all your data?  Or a way to combine   data from multiple sources and create a company dashboard?  This session   will provide an overview of the capabilities of several APIs available for   Google Apps customers: Calendar, Spreadsheets, Documents List, as well as   some APIs available for Domain Administrators: provisioning, reporting,   email migration.  We will also discuss some ways Google has used the APIs   in our own implementation and leave time for your questions.  This talk is   recommended for people who are using Google Apps, considering Google Apps   or are interested in providing solutions for the thousands of businesses   using Google Apps.</p>
<p>Participants should have a basic understanding of the Google Apps   product suite.  Some experience with software integration is recommended   but not required.</p>
<h4>Authenticating to Google Data Services</h4>
<p>Jeff Fisher, Jeff Scudder<br />   Type: 201</p>
<p>Get over that first hurdle in your prototype! Authenticating a user is a   tricky, but necessary step for most applications that interact with Google   services. This session will discuss the available authentication options,   their limitations, and some advanced use cases such as Google Apps domains   and signed requests.</p>
<p>Participants should be familiar with at least one GData API.   Familiarity with public-key cryptography will be helpful, but is not   required.</p>
<h4>Creating a Google Data API Client</h4>
<p>Jeff Scudder<br />   Type: 201</p>
<p>What if there isn't a client library for the Google Data APIs in the   language I'm using? Or maybe there is but it doesn't quite meet my needs.   We will address these important questions by examining the approach that we've   taken in working on one of our open source client libraries (Python). Learn   some ideas for how to structure your projects from a technical perspective   and why and how to open source your project so others can contribute.</p>
<p>Participants should have strong knowledge of Google Data APIs and be   familiar with open source project management.</p>
<h4>Becoming a Google Apps Small Business Solution Provider</h4>
<p>Jeff Ragusa<br />   Type: 101</p>
<p>Google Apps is a popular solution for small businesses looking for   better ways to operate, communicate, and collaborate.  In this session   we'll look at revenue opportunities that this creates for freelance   consultants and IT service providers.  We'll discuss opportunities ranging   from basic setup, data migration, and training services to custom business   Gadget development and GData integration work.  We'll look at Google's new   Small Business Solution Provider program for Google Apps   (google.com/a/smallbiz/providers) and how it can enable service providers   to take advantage of these opportunities through marketing assistance,   sales tools, training materials, and technical support.</p>
<h4>YouTube on Your Site</h4>
<p>John Harding<br />   Type: 201</p>
<p>The YouTube team has been hard at work, expanding and improving upon the   YouTube Data API that we launched last Fall.  In this session, we'll explore   how you can use the new features of the API to bring YouTube to your web   site.</p>
<p>Participants should be familiar with YouTube and with the basics of Google   Data, or another REST-based web service API.</p>
<h4>Hands-on YouTube: Creating an Application with the YouTube APIs in      Python</h4>
<p>Jochen Hartmann<br />   Type: Code Lab</p>
<p>Gain valuable hands-on experience with the YouTube APIs using our Python   client library. This session will consist of two one-hour segments. We will   explore how to use the Python Client Library to interact with the YouTube   APIs and build a simple demo application.</p>
<p>Participants should have prior web development experience, and basic   familiarity with Python is suggested.</p>
<h4>Fireside Chat: Google Data and Apps</h4>
<p>Google Data APIs engineering team<br />   Type: Fireside Chat</p>
<p>Fireside chats are a chance to talk to the engineering team building   products. Come tell the team what you want, discuss issues and design   decisions, and hear the team's thoughts on just about whatever you ask.</p>
<p><a href="http://code.google.com/events/io/sessions.html#top">Back to the top</a></p>
<a name="social"></a>   <br />
<h2>Social</h2>
<h4>URLs Are People Too - Using the Social Graph API to Build a Social      Web</h4>
<p>Kevin Marks, Brad Fitzpatrick<br />   Type: 101</p>
<p>Using email addresses to identify people has a problem - email addresses   can be used to send, not receive. With the rise of blogs and social networks,   millions of people are using URLs to refer to themselves and others. The   Social Graph API indexes these sites and their connections, enabling this   web-wide distributed social network to be used to make your sites better.   Learn how XFN and FOAF express connections, how we index them, and how OpenID   combines with The Social Graph API to help connect people on the web to your   applications, and save your users from re-entering their friends over and   over again.</p>
<h4>OpenSocial: A Standard for the Social Web</h4>
<p>Patrick Chanezon, Kevin Marks, and Chris Schalk<br />   Type: 101</p>
<p>OpenSocial is an open specification defining a common API that works on   many different social websites, including MySpace, Plaxo, Hi5, Ning, orkut,   Salesforce.com and LinkedIn, among others. This allows developers to learn   one API, then write a social application for any of those sites: Learn once,   write anywhere.</p>
<p>In addition, in order to make it easier for developers of social sites to   implement the API and make their site an OpenSocial container, the Apache   project Shindig provides reference implementations for OpenSocial containers   in several languages (Java, PHP). Shindig will define a language specific   Service Provider Interface (SPI) that a social site can implement to connect   Shindig to People, Persistence and Activities backend services for the social   site. Shindig will then expose these services as OpenSocial JavaScript and   REST APIs.</p>
<p>In this session we will explain what OpenSocial is, show examples of   OpenSocial containers and applications, demonstrate how to create an   OpenSocial application, and explain how to leverage Apache Shindig in order   to implement an OpenSocial container.</p>
<h4>OpenSocial Specification: What's Next for OpenSocial</h4>
<p>David Glazer<br />   Type: 201</p>
<p>OpenSocial is an open specification established by a group of social sites   and application developers. While OpenSocial version 0.7 is being rolled out   on several large social networking sites, the specification is evolving to   include more features useful to social application developers.</p>
<p>This session will cover the most interesting features that are discussed   in the specification working group to be included in the next versions of   OpenSocial, like an OpenSocial template language, and the OpenSocial RESTful   API.</p>
<h4>Apache Shindig: Make Your Social Site an OpenSocial Container</h4>
<p>John Panzer, Dan Peterson<br />   Type: 101</p>
<p>Shindig is a new project in the Apache Software Foundation incubator and   is an open source implementation of the OpenSocial specification and gadgets   specification in multiple programming languages. The goal of Shindig is to   make it easy for social sites to extend their functionality using the   OpenSocial API, which makes it easier for developers to write those   extensions.</p>
<p>This session will explain what Shindig is, the server's architecture, the   JavaScript and Java Service Provider Interfaces that developers can leverage   to integrate Shindig with their social site, and the state of the Shindig   ports to other languages (PHP, .NET, Ruby). We will do a live demonstration   of how to integrate Shindig with an existing social site.</p>
<h4>OpenSocial across Containers</h4>
<p>Arne Roomann-Kurrik, Lane LiaBraaten<br />   Type: 201</p>
<p>OpenSocial provides a common set of APIs that developers can learn in   order to create applications that run on multiple social sites.  However,   since social sites vary widely in functionality, OpenSocial provides ways to   extend the core APIs so containers can implement site-specific    functionality.</p>
<p>This session will cover best practices for how to extend the OpenSocial   API for your container, as well as how to write applications that will run on   multiple OpenSocial sites.</p>
<h4>Best Practices for Spreading Your App without Ruining the User Experience</h4>
<p>Vivian Li, Chris Schalk<br />   Type: 201</p>
<p>The OpenSocial API provides features that application developers can use   to help their users share the application with their friends.  We'll review   other social application architectures that allow apps to spread virally.   We'll then discuss the sharing features in OpenSocial in detail including a   review of requestSentMessage and requestShareApp.  We'll also go over   programmatic best practices for such things as determining if an app is   already installed, and we'll look at example apps that have successfully used   these features.</p>
<h4>Building an OpenSocial Application, Focus on Client Side APIs</h4>
<p>Arne Roomann-Kurrik, Dan Holevoet<br />   Type: Code Lab</p>
<p>Become a social hax0r!  In this session you'll build your first social   app, from setting up a place to host your application to accessing the   OpenSocial APIs.  By the end of the session you 'll have your own gift-giving   application that accesses profile information, stores data using the   persistence API, and publishes activities that your friends can see.  This is   a hands-on session so don't forget your laptop and power adaptor!</p>
<h4>Building an OpenSocial Application in the Cloud</h4>
<p>Patrick Chanezon, Lane LiaBraaten, Jason Cooper<br />   Type: Code Lab</p>
<p>Simple OpenSocial applications can be built without any server side logic,   leveraging the OpenSocial persistence API.  For more complex applications   requiring server side logic, many developers choose to use their own server.   As their applications spread virally and become more successful, these   developers end up spending most of their time making their applications scale   instead of adding new features.</p>
<p>Cloud computing services can provide a solution to these problems.  This   session will explain how to build an OpenSocial application with server side   business logic, on top of a cloud computing platform, using makeRequest to   make digitally signed calls to your server side logic.</p>
<h4>Make Your Social Site an OpenSocial Container Using Shindig</h4>
<p>Patrick Chanezon, Kevin Marks, Chris Schalk<br />   Type: Code Lab</p>
<p>Shindig is a new incubator project in the Apache Software Foundation and   is an open source implementation of the OpenSocial specification and gadgets   specification in multiple computer languages. The goal of Shindig is to make   it easy for social sites to make the OpenSocial API available for application   developers on their site.</p>
<p>In this code lab, attendees will implement part of the OpenSocial API in an   existing open source Java social site engine.</p>
<h4>Fireside Chat: OpenSocial</h4>
<p>OpenSocial developers<br />   Type: Fireside Chat</p>
<p>Fireside chats are a chance to talk to the engineering team building   products. Come hear from OpenSocial container engineers across the web and   get your questions answered first hand. </p>
<p><a href="http://code.google.com/events/io/sessions.html#top">Back to the top</a></p>
<a name="mobile"></a>   <br />
<h2>Mobile</h2>
<h4>Google Gears for Mobile: Power up Your Mobile Web App</h4>
<p>Andrei Popescu and Charles Wiles<br />   Type: 101</p>
<p>If you've ever tried coding up a mobile client application, you've   probably noticed that the huge variety of mobile operating systems makes it   tough to build rich applications that work on every device.  But what if   developers could deploy applications directly to mobile browsers rather   than develop native applications?  Google Gears for Mobile is a mobile   browser extension for creating rich web applications for mobile devices.   This session will show you how Gears for Mobile can be used to develop   offline capability into your mobile web apps and how to create slick and   responsive applications by hiding latency issues through controlled data   caching and storage between sessions.</p>
<h4>Building an Android Application 101</h4>
<p>Jason Chen<br />   Type: 101</p>
<p>This session is a practical introduction to building Android applications   using the SDK and developer tools. We'll walk through building a non-trivial   application and use it as the basis for discussing the various facets of the   Android application framework.</p>
<h4>Anatomy &amp; Physiology of an Android</h4>
<p>Patrick Brady<br />   Type: 201</p>
<p>The Android platform has been designed to be a modern mobile platform and   to enable developers to build applications that take full advantage of the   cloud.  This session will break down the various components of the Android   platform, examine how they work, and give developers a deeper understanding   of the underlying technologies that drives their applications.</p>
<h4>Dalvik Internals</h4>
<p>Dan Bornstein<br />   Type: 201</p>
<p>Dalvik &mdash; the virtual machine with the unusual name &mdash; runs    your code on Android. Join us to learn about the ideas behind its design,    some detail about how it works, and get a few tips for how to write code    that works well with it. Questions encouraged!</p>
<h4>Inside the Android Application Framework</h4>
<p>Android Engineers<br />   Type: 201</p>
<p>Android is designed to be fast, powerful, and easy to develop for.  This   session will discuss the Android application framework in depth, showing you   the machinery behind the application framework.</p>
<h4>Building Great UIs with Android</h4>
<p>Dan Morril<br />   Type: 101</p>
<p>The user interface is your application's face to the user.  Come join this   session to find out how to take full advantage of the Android platform when   building interfaces so that you can put your best face forward.</p>
<h4>Internationalizing Android Applications</h4>
<p>Jason Chen<br />   Type: 101</p>
<p>Chances are, your audience isn't restricted to a single country.  Even if   it is, that country may not be the same as yours.  This session will show you   how to make use of Android's rich features to make your application   international.</p>
<h4>Location, Location, Location</h4>
<p>Android Engineers<br />   Type: 201</p>
<p>The ability to access, utilize, and display location information gives   mobile applications a unique dimension. It's also a feature built into the   Android platform. Come find out how you can create applications that do the   right thing, according to where they are.</p>
<h4>Mobile Mashups</h4>
<p>Android Engineers<br />   Type: 201</p>
<p>Android's component-based application model and the ease with which you   can access web-based services makes it easy to extend and remix the web on   your mobile phone.  This session aims to show some compelling examples and   the features of the platform that make this possible.</p>
<p><a href="http://code.google.com/events/io/sessions.html#top">Back to the top</a></p>
<a name="geo"></a>   <br />
<h2>Maps &amp; Geo</h2>
<h4>From Mashups to Mapplets </h4>
<p>David Day<br />   Type: 101</p>
<p>Mapplets are mini-applications that run within Google Maps, allowing you   to add new features or overlay your data directly onto Google Maps. These   applications allow a developer to take advantage of the power of the Maps API   while getting exposure to millions of users on Google Maps. In addition,   Google provides free hosting, free bandwidth, and an official directory where   users from all around the world can find your Mapplet.</p>
<p>We'll introduce Mapplets in detail, explain the benefits of writing one,   and walk through the details of how to get started. This includes what you   need to host your Mapplet and best practices for gaining users.</p>
<p>Participants should have knowledge of basic JavaScript and HTML.   Knowledge of the Google Gadgets API is recommended, but not required. We'll   discuss how Mapplets relate to Gadgets in this session.</p>
<h4>Advanced Ruby Scripting for Google SketchUp</h4>
<p>Sang Ahn, Scott Lininger<br />   Type: 101</p>
<p>Google Sketchup contains a Ruby API for users who want to extend the   capabilities of SketchUp.  The interface allows users to create macros, such   as automated component generators and additional tools, to be included in the   menus within SketchUp.  This session will cover two Ruby technologies that   can be used to add functionality to SketchUp: WebDialogs and Ruby Extension   Modules.  For those comfortable with web programming, WebDialogs allow you to   create rich user interfaces easily.  For those with a native library they'd   like to use, Ruby Extension Modules can help with high performance   computations.</p>
<h4>Parsing and Generating KML with Google's KML Library</h4>
<p>Michael Ashbridge<br />   Type: 201</p>
<p>KML is a file format used to display geographic data in an earth   browser, such as Google Earth, Google Maps and Google Maps for mobile.  You   can create KML files to pinpoint locations, add image overlays and expose   rich data in new ways.  This session will introduce Google's open source   KML library for working with KML files.  We'll explore its architecture and   then show you how to parse and generate KML in your applications and   scripts.</p>
<p>Participants should have basic familiarity with KML.</p>
<h4>Advanced KML</h4>
<p>Bent Hagemark<br />   Type: 201</p>
<p>This session will cover advanced techniques in KML for displaying data   and creating dynamic presentations.  We'll show how to to use Region to   display very large datasets without clutter and without compromising   performance.  We'll also look at how time features can be used to add   animation effects and how NetworkLinkControl and Update can be used to make   dynamic KML presentations.</p>
<p>Participants should have a strong background in KML.</p>
<h4>Using Ads with Your Maps API Application</h4>
<p>Jim Payne<br />   Type: 201</p>
<p>This session will explore strategies for using Google's AdSense program   with your Maps API application.  We'll discuss placement, targeting and how   to choose the AdSense products that will work well with the Maps API.  We'll   also review best practices for maximizing the value of your traffic.</p>
<p>Participants should have previous experience with the Google Maps API.</p>
<h4>Fireside Chat: Google Maps &amp; Earth </h4>
<p>Google Geo engineering team<br />   Type: Fireside Chat</p>
<p>Fireside chats are a chance to talk to the engineering team building   products. Come tell the team what you want, discuss issues and design   decisions, and hear the team's thoughts on just about whatever you ask.</p>
<p><a href="http://code.google.com/events/io/sessions.html#top">Back to the top</a></p>
<!-- content end  --> </div>
<div class="g-section g-tpl-160 footer">
<div class="g-unit g-first">
<p>&copy;2008</p>
<img width="55" height="20" border="0" alt="Google" src="http://code.google.com/events/io/images/google_logo-sm.gif" />   </div>
<div class="g-unit">     <a href="http://code.google.com/">Code Home</a>     <span> - </span>     <a href="http://www.google.com/accounts/TOS">Site Terms of Service</a>     <span> - </span>     <a href="http://www.google.com/privacy.html">Privacy Policy</a>     <span> - </span>     <a href="http://code.google.com/more/">Site Directory</a>   </div>
</div>
</div>
 type="text/javascript">
  try {
    pageTracker._trackPageview(); 
  } catch(e) {}
</script>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1528216.html</guid>
<subject>平台开发</subject>
<author>hzlinux</author>
<category>平台开发</category>
<pubDate>Thu, 13 Mar 2008 09:25:23 CST </pubDate>
</item>

<item>
<title>有没有 感觉 到 访问流畅了一点？</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1521724.html</link>
<description>
<![CDATA[有没有 感觉 到 访问流畅了一点？<br /><br />好像没有任何反馈。<br /><br />不知道这样的小打小闹是否能有所改变。]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/1521724.html</guid>
<subject>突然想到的</subject>
<author>hzlinux</author>
<category>突然想到的</category>
<pubDate>Tue, 11 Mar 2008 21:21:46 CST </pubDate>
</item>

</channel>
</rss>