<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>My Life, My Love!</title><link>https://www.gfrog.net/</link><description>指点江山 激昂文字 修身隆德 自然自我</description><lastBuildDate>Thu, 01 Aug 2019 14:28:11 +0800</lastBuildDate><item><title>夏季的蝉鸣</title><link>https://www.gfrog.net/2019/08/cicada-sound-in-summer/</link><description>&lt;p&gt;夏天的时候经常被窗外的蝉叫声吵得睡不着觉，之前青蛙一直觉得这是噪音。
最近几年被吵醒的次数更多了，于是仔细分辨下蝉叫声，竟然还有各种不同。&lt;/p&gt;
&lt;p&gt;例如，在北京最可能听到的声音是这样的：&lt;/p&gt;
&lt;p&gt;&lt;span class="videobox"&gt;
                &lt;iframe width="640" height="390"
                    src='https://www.youtube.com/embed/0Ia3SsP3zkU'
                    frameborder='0' webkitAllowFullScreen mozallowfullscreen
                    allowFullScreen&gt;
                &lt;/iframe&gt;
            &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;据说它们叫黑柞蝉，长这样：&lt;/p&gt;
&lt;p&gt;&lt;img alt="黑柞蝉" src="https://pic4.zhimg.com/80/v2-fa07bca75ac46b7c5a1ec5fdc0feae59_hd.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;（图片转自知乎&lt;a href="https://www.zhihu.com/question/33742530"&gt;鹿鸣呦呦的回答&lt;/a&gt;）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;偶尔还会听到真的知了知了叫的：&lt;/p&gt;
&lt;p&gt;&lt;span class="videobox"&gt;
                &lt;iframe width="640" height="390"
                    src='https://www.youtube.com/embed/9KO8rc1fUyQ'
                    frameborder='0' webkitAllowFullScreen mozallowfullscreen
                    allowFullScreen&gt;
                &lt;/iframe&gt;
            &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;据说它们叫蒙古寒蝉，长这个样子：&lt;/p&gt;
&lt;p&gt;&lt;img alt="蒙古寒蝉" src="https://pic2.zhimg.com/80/v2-4fe1591f356c6379da04e897d970435f_hd.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;（图片转自知乎&lt;a href="https://www.zhihu.com/question/33742530"&gt;鹿鸣呦呦的回答&lt;/a&gt;）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;但是，如果去东北，蝉叫声很大概率会变成：&lt;/p&gt;
&lt;p&gt;&lt;span class="videobox"&gt;
                &lt;iframe width="640" height="390"
                    src='https://www.youtube.com/embed/QA1vRV8Yh1Y'
                    frameborder='0' webkitAllowFullScreen mozallowfullscreen
                    allowFullScreen&gt;
                &lt;/iframe&gt;
            &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;这种蝉叫做斑透翅蝉（Hyalessa maculaticollis）。知乎上的一个回答
（&lt;a href="https://www.zhihu.com/question/35721670"&gt;北纬多少度以上的地区就没有蝉了？&lt;/a&gt;）
大概是解释这几种蝉比较详细的一个回答了，
不但给出了各种蝉叫声的视频，还贴出了关于蝉的分布情况的链接：&lt;/p&gt;
&lt;p&gt;&lt;img alt="cicada fauna" src="http://www.agr.gc.ca/resources/prod/img/science/ecorc/images/cicada33.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;（图片来自网站：
&lt;a href="http://www.agr.gc.ca/eng/science-and-innovation/agriculture-and-agri-food-research-centres-and-collections/canadian-national-collection-of-insects-arachnids-and-nematodes-cnc/archived-content-cicada/archived-content-cicada-17-of-46/?id=1229114733204"&gt;Cicada (17 of 46)&lt;/a&gt;
，里面有更加详细的种群介绍。
）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;从这个图上看日本、韩国、辽东半岛、山东半岛，还有华中华南地区是一个分布区，
中国的另外大部分地区是另一个分布区，
所以青蛙觉得这大概就是大连的蝉叫声跟北京显著不同的原因了。&lt;/p&gt;
&lt;p&gt;这个知乎回答里面提到了收集北美地区的各种蝉叫声的网站：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.cicadamania.com/audio/"&gt;Cicada Mania&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另外青蛙还找到了收集日本韩国蝉叫声的网站：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://zikade.world.coocan.jp/cicadasongaac_e.html"&gt;http://zikade.world.coocan.jp/cicadasongaac_e.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;用斑透翅蝉这个学名找到了更多的视频和图片，看这个家伙撅着屁股叫的多卖力。&lt;/p&gt;
&lt;p&gt;&lt;span class="videobox"&gt;
                &lt;iframe width="640" height="390"
                    src='https://www.youtube.com/embed/HuILWh2hD3o'
                    frameborder='0' webkitAllowFullScreen mozallowfullscreen
                    allowFullScreen&gt;
                &lt;/iframe&gt;
            &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;不过这个知乎回答里面并没有回答题目本身的灵魂拷问：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;北纬多少度以上的地区就没有蝉了？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;就青蛙自己的经历来说，吉林省的某些地区夏天还能听到蝉鸣，但是已经没有特别密集了。&lt;/p&gt;
&lt;p&gt;在网上找了一下，只有零星的一些帖子或者知乎回答提到了北方一些地区有蝉，
但是没有系统性的讲解中国蝉分布情况的帖子。&lt;/p&gt;
&lt;p&gt;青蛙翻到了一本叫做
&lt;a href="https://books.google.com/books?id=ZP5MAAAAYAAJ"&gt;《中国蝉科志: 同翅目. 蝉总科》&lt;/a&gt;
的书，似乎里面有蝉分布情况的介绍，但是这本书在网上几乎找不见，所以也没法查阅了。&lt;/p&gt;
&lt;p&gt;看来青蛙有机会要去图书馆找找这本书才能回答这个究级问题了。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 01 Aug 2019 14:28:11 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2019-08-01:/2019/08/cicada-sound-in-summer/</guid><category>cicada</category><category>summaer</category><category>sound</category><category>video</category><category>song</category></item><item><title>从分区（partitioning）中恢复 RabbitMQ 集群</title><link>https://www.gfrog.net/2019/07/recover-rabbitmq-cluster-after-partitioning/</link><description>&lt;p&gt;&lt;em&gt;（本文为
&lt;a href="https://gist.github.com/niedbalski/69a72103adad4f0f9609a0857c9810a4"&gt;https://gist.github.com/niedbalski/69a72103adad4f0f9609a0857c9810a4&lt;/a&gt;
的翻译文档。
）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;1) 检查 Cluster 状态。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Mnesia&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;rabbit@juju-machine-30-lxd-11&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;: ** ERROR ** mnesia_event got &lt;span class="o"&gt;{&lt;/span&gt;inconsistent_database, running_partitioned_network, &lt;span class="s1"&gt;&amp;#39;rabbit@juju-machine-29-lxd-9&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;

$ sudo rabbitmqctl cluster_status
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;2) 选择合适的节点作为 master 节点。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;（注：这个步骤很重要，如果没有选择合适的 master 节点，很容易造成消息丢失）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;# 通过连接数。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ juju run --service rabbitmq-server &lt;span class="s2"&gt;&amp;quot;sudo ss -t state established -nt &amp;#39;( sport = :amqp )&amp;#39; | wc -l&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;# 最新的 mnesia。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ juju run --service rabbitmq-server &lt;span class="s1"&gt;&amp;#39;sudo find /var/lib/rabbitmq/mnesia -type f | xargs ls -ltr | tail -n 1 | cut -d &amp;quot; &amp;quot; -f13 | xargs -I {} stat -c &amp;quot;%y&amp;quot; {}&amp;#39;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;# Openstack 队列中包含最多的消息数。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ juju run --service rabbitmq-server &lt;span class="s2"&gt;&amp;quot;sudo rabbitmqctl list_queues -p openstack messages | awk &amp;#39;{s+=\$1}END{print s}&amp;#39;&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;3) 在非 master 节点上停止所有的 epmd/erl 进程。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ /etc/init/rabbitmq-server stop
$ sudo killall epmd
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;em&gt;（注：在 juju 的环境里还需要关掉 jujud 以免 juju 自作主张重启 rabbitmq server）&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ sudo systemctl stop jujud-unit-rabbitmq-server-0.service
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;确认所有的 rabbitmq 进程都被杀掉了：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ sudo ps -U rabbitmq -o pid --no-heading
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;4) 删除 mnesia，重新启动 rabbitmq 服务，然后停止 app。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ sudo mv /var/lib/rabbitmq/mnesia /var/lib/rabbitmq/mnesia-back
$ sudo service rabbitmq-server start
$ sudo rabbitmqctl stop_app
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;确认 rabbitmq 服务启动，并且未加入 cluster。 (&lt;code&gt;$ sudo rabbitmqctl cluster_status&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;5) 在 master 节点上忘记（forget） 其他节点。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ sudo rabbitmqctl stop_app
$ sudo rabbitmqctl forget_cluster_node rabbit@trashed-slave
$ sudo rabbitmqctl start_app
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;em&gt;（注：这里应该有比较重要的一步，就是检查所有节点上的 &lt;code&gt;cluster_name&lt;/code&gt;。
一定要确保其他节点上的&lt;code&gt;cluster_name&lt;/code&gt;跟 master 节点一致。所以青蛙把这一步作为5.1）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;5.1) 检查并确认 &lt;code&gt;cluster_name&lt;/code&gt;。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ juju run --application rabbitmq-server &lt;span class="s2"&gt;&amp;quot;sudo rabbitmqctl cluster_status |grep cluster_name&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;如果 &lt;code&gt;cluster_name&lt;/code&gt; 不一致，需要在其他节点上修改 &lt;code&gt;cluster_name&lt;/code&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ sudo rabbitmqctl set_cluster_name rabbit@juju-machine-29-lxd-9
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;6) 将节点加入 cluster，在要加入的节点上执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ sudo rabbitmqctl join_cluster rabbit@master
$ sudo rabbitmqctl start_app
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;7) 检查 clutser 状态。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ juju run --application rabbitmq-server &lt;span class="s2"&gt;&amp;quot;sudo rabbitmqctl cluster_status&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;8) 建议将 rabbitmq-server charm 的 &lt;code&gt;cluster-partitioning-handling&lt;/code&gt; 选项设置为 &lt;code&gt;autoheal&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;（注：这里需要注意&lt;code&gt;autoheal&lt;/code&gt;可能会使 rabbitmq 丢失数据，所以也应该谨慎使用过。）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/openstack/charm-rabbitmq-server/blob/master/config.yaml#L39"&gt;https://github.com/openstack/charm-rabbitmq-server/blob/master/config.yaml#L39&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;关于 rabbitmq 基本内容，以及 partition 和 brain split 的一个介绍。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;关于RabbitMq你必须深入理解的内容 &lt;a href="https://zhuanlan.zhihu.com/p/60141062"&gt;https://zhuanlan.zhihu.com/p/60141062&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 30 Jul 2019 21:36:08 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2019-07-30:/2019/07/recover-rabbitmq-cluster-after-partitioning/</guid><category>cloud</category><category>rabbitmq</category><category>cluster</category><category>recover</category><category>partition</category><category>juju</category></item><item><title>修复因为 Python 升级导致的失效 virtualenv 环境</title><link>https://www.gfrog.net/2019/07/fix-python-virtualenv-after-python-upgrade/</link><description>&lt;p&gt;&lt;em&gt;（标题图片借用
&lt;a href="https://www.alexwhittemore.com/python-on-macos-best-practices/"&gt;PYTHON ON MACOS: BEST PRACTICES&lt;/a&gt;
的标题图，这篇文档也是关于MacOS上面运行python和virtualenv的。）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;（本篇日志为
&lt;a href="http://www.jeremycade.com/python/osx/homebrew/2015/03/02/fixing-virtualenv-after-a-python-upgrade/"&gt;How to fix your Python virtualenv after a Homebrew Python upgrade&lt;/a&gt;
的翻译文档）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;你在使用Homebrew管理你的OS X上面的Python嘛？最近有没有升级过Python？&lt;/p&gt;
&lt;p&gt;我遇到的情况是Python 3的一个小更新：从3.4.2到3.4.3。
这个升级足够让virtualenv里面的符号连接（symbolic links）失效了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;例如&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;~: &lt;span class="nb"&gt;cd&lt;/span&gt; ~/src/my_app
~/src/my_app: &lt;span class="nb"&gt;source&lt;/span&gt; venv/bin/activate
&lt;span class="o"&gt;[&lt;/span&gt;venv&lt;span class="o"&gt;]&lt;/span&gt; ~/src/my_app: python
dyld: Library not loaded: @executable_path/../.Python
  Referenced from: /Users/jeremycade/src/my_app/env/bin/python
  Reason: image not found
Trace/BPT trap: &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;正如我提到的那样，virtualenv内部的符号连接都指向了Homebrew安装的Python，
升级之后这些符号连接都指向了错误的地方。
解决方法是删除然后重建这些符号连接。&lt;/p&gt;
&lt;p&gt;首先，我们需要确保你的virtualenv没有生效（active）。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;venv&lt;span class="o"&gt;]&lt;/span&gt; ~/src/my_app: deactivate
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;然后，删除这些错误的符号连接。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;~/src/my_app: find venv -type l -delete
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这里我使用了OS X自带的BSD
&lt;a href="http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/find.1?query=find"&gt;find&lt;/a&gt;
命令。&lt;/p&gt;
&lt;p&gt;最后一步，重建你的virtualenv。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;~src/my_app: virtualenv venv
&lt;/pre&gt;&lt;/div&gt;


&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;青蛙注&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;青蛙没有详细的研究这个问题。
但是感觉上应该是
&lt;a href="https://virtualenv.pypa.io/"&gt;virtualenv&lt;/a&gt;
这个包引入的，如果使用python3内建的venv module，
&lt;code&gt;python3 -m venv VENV_DIR&lt;/code&gt;
这种方式创建virtualenv的时候，并不会创建符号连接。&lt;/p&gt;
&lt;p&gt;所以结论是，在MacOS上尽量使用python内置的venv模块，
而不是使用virtualenv包。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 17 Jul 2019 20:48:27 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2019-07-17:/2019/07/fix-python-virtualenv-after-python-upgrade/</guid><category>python</category><category>python3</category><category>virtualenv</category><category>macos</category><category>osx</category><category>homebrew</category><category>shell</category></item><item><title>Pelican 的 Google Map 插件</title><link>https://www.gfrog.net/2019/07/create-a-google-map-plugin-for-pelican/</link><description>&lt;p&gt;青蛙最近整理照片和blog的时候，一直想想在blog post里添加一个地图。
但是pelican似乎没有靠谱的google map plugin。
虽然有一个
&lt;a href="https://pypi.org/project/google_embed/"&gt;google_embed&lt;/a&gt;
，但是似乎现在不能用了，按照它的README写好map之后，post里面完全不会转义。&lt;/p&gt;
&lt;p&gt;于是青蛙一怒之下自己照猫画虎写了个liquid_tag版本的google map，竟然也能用了。&lt;/p&gt;
&lt;p&gt;目前这个plugin支持map和direction模式，青蛙还在考虑要不要添加街景模式。&lt;/p&gt;
&lt;p&gt;添加map的方法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="x"&gt;    {% gmap &amp;quot;location&amp;quot; mode [maptype] [align] [width] [height] %}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;code&gt;location&lt;/code&gt;：必选项，指定地点，必须包含双引号，支持中文。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mode&lt;/code&gt;：必选项，地图模式，有&lt;code&gt;place&lt;/code&gt;和&lt;code&gt;search&lt;/code&gt;选项，
指定地图显示单个地点或者搜索location中的关键字&lt;/p&gt;
&lt;p&gt;&lt;code&gt;maptype&lt;/code&gt;：地图的显示模式，包含&lt;code&gt;roadmap&lt;/code&gt;、&lt;code&gt;satellite&lt;/code&gt;、&lt;code&gt;hybrid&lt;/code&gt;和&lt;code&gt;terrain&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;align&lt;/code&gt;：地图在页面中的对齐方式，&lt;code&gt;left&lt;/code&gt;、&lt;code&gt;center&lt;/code&gt;或者&lt;code&gt;right&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;width&lt;/code&gt;：地图宽度&lt;/p&gt;
&lt;p&gt;&lt;code&gt;height&lt;/code&gt;：地图高度&lt;/p&gt;
&lt;p&gt;例如： &lt;code&gt;{ % gmap "东方明珠,上海" place roadmap left 600 480 % }&lt;/code&gt; 显示如下地图：&lt;/p&gt;
&lt;p&gt;&lt;span class="mapbox"&gt;
    &lt;iframe width="600" height="480"
      frameborder="0" style="border:0;"
      src="https://www.google.com/maps/embed/v1/place?key=AIzaSyB63YDb3SVNe84KeNXPh5zIjJ_uwr5vsII&amp;q=东方明珠,上海&amp;maptype=roadmap"&gt;
    &lt;/iframe&gt;
&lt;/span&gt;
        &lt;/p&gt;
&lt;p&gt;添加direction（导航）的方法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="x"&gt;    {% gdirection &amp;quot;origin&amp;quot; &amp;quot;destination&amp;quot; [&amp;quot;waypoints&amp;quot;] mode [maptype] [align] [width] [height] %}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;code&gt;origin&lt;/code&gt;：必选项，指定出发点，必须包含双引号，支持中文。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;destination&lt;/code&gt;：必选项，指定目的地，必须包含双引号，支持中文。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;waypoints&lt;/code&gt;：指定途经点，必须包含双引号，支持中文。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mode&lt;/code&gt;：必选项，导航模式，有&lt;code&gt;driving&lt;/code&gt;、&lt;code&gt;walking&lt;/code&gt;、&lt;code&gt;bicycling&lt;/code&gt;、
&lt;code&gt;transit&lt;/code&gt;和&lt;code&gt;flying&lt;/code&gt;选项。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;maptype&lt;/code&gt;：地图的显示模式，包含&lt;code&gt;roadmap&lt;/code&gt;、&lt;code&gt;satellite&lt;/code&gt;、&lt;code&gt;hybrid&lt;/code&gt;和&lt;code&gt;terrain&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;align&lt;/code&gt;：地图在页面中的对齐方式，&lt;code&gt;left&lt;/code&gt;、&lt;code&gt;center&lt;/code&gt;或者&lt;code&gt;right&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;width&lt;/code&gt;：地图宽度。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;height&lt;/code&gt;：地图高度。&lt;/p&gt;
&lt;p&gt;例如： &lt;code&gt;{ % gdirection "东方明珠,上海" "人民广场,上海" driving roadmap left 600 480 % }&lt;/code&gt; 显示如下地图：&lt;/p&gt;
&lt;p&gt;&lt;iframe width="600" height="480"
  frameborder="0" style="border:0;"
  src="https://www.google.com/maps/embed/v1/directions?key=AIzaSyB63YDb3SVNe84KeNXPh5zIjJ_uwr5vsII&amp;origin=东方明珠,上海&amp;destination=人民广场,上海&amp;maptype=roadmap&amp;mode=driving"&gt;
&lt;/iframe&gt;
        &lt;/p&gt;
&lt;p&gt;如果你也想在pelican里面使用这个插件，可以在
&lt;a href="https://console.cloud.google.com/projectselector2/google/maps-apis/api-list?supportedpurview=project&amp;amp;project&amp;amp;folder&amp;amp;organizationId"&gt;Google cloud plateform console&lt;/a&gt;
申请一个MAP API key，然后在&lt;code&gt;pelicanconfig.py&lt;/code&gt;文件里加入API key配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;GMAPS_API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;YOUR_API_KEY_HERE&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;然后给liquid_tag打个补丁：&lt;/p&gt;
&lt;div class="gist"&gt;
    &lt;script src='https://gist.github.com/a13b27768172f40d20632cadd8614061.js?file=gmap.diff'&gt;&lt;/script&gt;
    &lt;noscript&gt;
        &lt;pre&gt;&lt;code&gt;--- a/liquid_tags/mdx_liquid_tags.py
+++ b/liquid_tags/mdx_liquid_tags.py
@@ -22,12 +22,14 @@ EXTRACT_TAG = re.compile(r'(?:\s*)(\S+)(?:\s*)')
 LT_CONFIG = { 'CODE_DIR': 'code',
               'NOTEBOOK_DIR': 'notebooks',
               'FLICKR_API_KEY': 'flickr',
-              'GIPHY_API_KEY': 'giphy'
+              'GIPHY_API_KEY': 'giphy',
+              'GMAPS_API_KEY': 'gmap'
 }
 LT_HELP = { 'CODE_DIR' : 'Code directory for include_code subplugin',
             'NOTEBOOK_DIR' : 'Notebook directory for notebook subplugin',
             'FLICKR_API_KEY': 'Flickr key for accessing the API',
-            'GIPHY_API_KEY': 'Giphy key for accessing the API'
+            'GIPHY_API_KEY': 'Giphy key for accessing the API',
+            'GMAPS_API_KEY': 'Google Maps key for accessing the API'
 }
 
 class _LiquidTagsPreprocessor(markdown.preprocessors.Preprocessor):&lt;/code&gt;&lt;/pre&gt;
    &lt;/noscript&gt;
&lt;/div&gt;
&lt;p&gt;接着把这个文件放进liquid_tags目录里面，然后就可以在post里添加地图了。&lt;/p&gt;
&lt;p&gt;Enjoy posting!&lt;/p&gt;
&lt;div class="gist"&gt;
    &lt;script src='https://gist.github.com/a13b27768172f40d20632cadd8614061.js?file=gmap.py'&gt;&lt;/script&gt;
    &lt;noscript&gt;
        &lt;pre&gt;&lt;code&gt;"""
Google maps Tag
---------
This implements a Liquid-style google map tag for Pelican,
based on the google_embed plugin.

Syntax
------
{% gmap "location" mode [maptype] [align] [width] [height] %}
{% gdirection "origin" "destination" "waypoints" mode [maptype] [align] [width] [height] %}

"""
import re
from .mdx_liquid_tags import LiquidTags


MAP_SYNTAX = '{% gmap "location" mode [maptype] [align] [width] [height] %}'

# Regular expression for full syntax
map_re_str =  """(?:"(?P&lt;location&gt;[\w\s\,\.]+?)")"""
map_re_str += """(?:\s+(?P&lt;mode&gt;\w+))?"""
map_re_str += """(?:\s+(?P&lt;maptype&gt;\w+))?"""
map_re_str += """(?:\s+(?P&lt;align&gt;\w+))?"""
map_re_str += """(?:\s+(?P&lt;width&gt;\d*))?"""
map_re_str += """(?:\s+(?P&lt;height&gt;\d*))?"""
ReGmap = re.compile(map_re_str)

def get_align(align):
    if align == 'right':
        align_css = "float:right;"
    elif align == 'left':
        align_css = ""
    else:
        align_css = "display: block;margin: 0 auto;"

    return align_css

@LiquidTags.register('gmap')
def gmap(preprocessor, tag, markup):

    GMAPS_API_KEY = preprocessor.configs.getConfig('GMAPS_API_KEY')

    attrs = None

    # Default setting
    location = ""
    mode = "place"
    maptype = "roadmap"
    width = 600
    height = 400
    align = 'center'

    # Parse the markup string
    match = ReGmap.search(markup)
    if match:
        attrs = dict([(key, val.strip())
                      for (key, val) in match.groupdict().items() if val])
    else:
        raise ValueError('Error processing input. '
                         'Expected syntax: {0}'.format(MAP_SYNTAX))

    # Construct URI
    location = attrs['location']
    del attrs['location']
    if ' ' in location:
        location = '+'.join(location.split())

    if 'mode' in attrs:
        mode = attrs['mode']
        del attrs['mode']
    else:
        raise ValueError('Error processing input. '
                         'Expected syntax: {0}'.format(MAP_SYNTAX))

    if 'maptype' in attrs:
        maptype = attrs['maptype']
        del attrs['maptype']

    if 'width' in attrs:
        width = attrs['width']
        del attrs['width']
    if 'height' in attrs:
        height = attrs['height']
        del attrs['height']
    if 'align' in attrs:
        align = attrs['align']
        del attrs['align']

    align_css = get_align(align)

    linkHTML="""
&lt;span class="mapbox"&gt;
    &lt;iframe width="{3}" height="{4}"
      frameborder="0" style="border:0;{6}"
      src="https://www.google.com/maps/embed/v1/{0}?key={1}&amp;q={2}&amp;maptype={5}"&gt;
    &lt;/iframe&gt;
&lt;/span&gt;
        """.format(mode,GMAPS_API_KEY,location,width,height,maptype,align_css)

    return linkHTML


DIRECTION_SYNTAX = '{% gdirection "origin" "destination" "waypoints" mode [maptype] [align] [width] [height] %}'
# Regular expression for full syntax
direction_re_str =  """(?:(?P&lt;directions&gt;"[\w\s\S]+"))"""
direction_re_str += """(?:\s+(?P&lt;mode&gt;\w+))?"""
direction_re_str += """(?:\s+(?P&lt;maptype&gt;\w+))?"""
direction_re_str += """(?:\s+(?P&lt;align&gt;\w+))?"""
direction_re_str += """(?:\s+(?P&lt;width&gt;\d*))?"""
direction_re_str += """(?:\s+(?P&lt;height&gt;\d*))?"""
ReGdirection = re.compile(direction_re_str)


waypoints_re_str =  """(?:"(?P&lt;origin&gt;[\w\s\S]+?)")"""
waypoints_re_str += """(?:\s+"(?P&lt;destination&gt;[\w\s\S]+?)")"""
waypoints_re_str += """(?:\s+"(?P&lt;waypoints&gt;[\w\s\S]+?)")?"""
ReGwaypoints = re.compile(waypoints_re_str)

@LiquidTags.register('gdirection')
def gdirection(preprocessor, tag, markup):

    GMAPS_API_KEY = preprocessor.configs.getConfig('GMAPS_API_KEY')

    attrs = None

    # Default setting
    origin = ""
    destination = ""
    waypoints  = ""
    mode = "place"
    maptype = "roadmap"
    width = 600
    height = 400
    align = 'center'

    # Parse the markup string
    match = ReGdirection.search(markup)
    if match:
        attrs = dict([(key, val.strip())
                      for (key, val) in match.groupdict().items() if val])
    else:
        raise ValueError('Error processing input. '
                         'Expected syntax: {0}'.format(DIRECTION_SYNTAX))

    # Construct URI
    directions = attrs['directions']
    del attrs['directions']
    m = ReGwaypoints.search(directions)
    if m:
        attrs.update([(key, val.strip())
                      for (key, val) in m.groupdict().items() if val])
    else:
        raise ValueError('Error processing input. '
                         'Expected syntax: {0}'.format(DIRECTION_SYNTAX))

    origin = attrs['origin']
    del attrs['origin']
    if ' ' in origin:
        origin = '+'.join(origin.split())

    destination = attrs['destination']
    del attrs['destination']
    if ' ' in destination:
        destination = '+'.join(destination.split())

    if 'waypoints' in attrs:
        waypoints = attrs['waypoints']
        del attrs['waypoints']
        if ' ' in waypoints:
            waypoints = '+'.join(waypoints.split())

    if 'mode' in attrs:
        mode = attrs['mode']
        del attrs['mode']
    if 'maptype' in attrs:
        maptype = attrs['maptype']
        del attrs['maptype']
    if 'width' in attrs:
        width = attrs['width']
        del attrs['width']
    if 'height' in attrs:
        height = attrs['height']
        del attrs['height']
    if 'align' in attrs:
        align = attrs['align']
        del attrs['align']

    align_css = get_align(align)

    query_str = 'origin={0}&amp;destination={1}'.format(origin,destination)
    if waypoints:
        query_str += '&amp;waypoints={0}'.format(waypoints)

    linkHTML="""
&lt;iframe width="{3}" height="{4}"
  frameborder="0" style="border:0;{6}"
  src="https://www.google.com/maps/embed/v1/directions?key={1}&amp;{2}&amp;maptype={5}&amp;mode={0}"&gt;
&lt;/iframe&gt;
        """.format(mode,GMAPS_API_KEY,query_str,width,height,maptype,align_css)

    return linkHTML


@LiquidTags.register('gmap_places')
def gmap_places(preprocessor, tag, markup):

    GMAPS_API_KEY = preprocessor.configs.getConfig('GMAPS_API_KEY')

    attrs = None

    linkHTML="""
&lt;div id="map_canvas" style="width:80%; height:480px;"&gt;&lt;/div&gt;
&lt;script src="/js/google-map.js"&gt;&lt;/script&gt;
&lt;script src="https://maps.googleapis.com/maps/api/js?key={0}&amp;callback=initMap" async defer&gt;&lt;/script&gt;
        """.format(GMAPS_API_KEY)


#----------------------------------------------------------------------
# This import allows image tag to be a Pelican plugin
from liquid_tags import register
&lt;/code&gt;&lt;/pre&gt;
    &lt;/noscript&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Update: 2019-07-13&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;青蛙翻了几天google map API文档，给这个plugin山寨了一个同时显示多个地点的参数。&lt;/p&gt;
&lt;p&gt;不过并没有最终完成，所以先不放出完整代码了。大概效果是这个样子：&lt;/p&gt;
&lt;script&gt;
var locations = [
['1', 'remmin park, shanghai', '#location 1'],
['2', 'shanghai museum, shanghai', '#location 2'],
['3', 'lippo plaza, shanghai', '#location 3'],
];
&lt;/script&gt;

&lt;p&gt;&lt;div id="map_canvas" style="width:80%; height:480px;"&gt;&lt;/div&gt;
&lt;script src="/js/google-map.js"&gt;&lt;/script&gt;
&lt;script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB63YDb3SVNe84KeNXPh5zIjJ_uwr5vsII&amp;callback=initMap" async defer&gt;&lt;/script&gt;
        &lt;/p&gt;
&lt;p&gt;参考文档：&lt;/p&gt;
&lt;p&gt;[1] &lt;a href="http://iza.ac/posts/2014/03/google-embed/"&gt;Google Embed&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] &lt;a href="https://pypi.org/project/google_embed/"&gt;google_embed&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3] &lt;a href="https://github.com/getpelican/pelican-plugins/blob/master/liquid_tags/Readme.md"&gt;Liquid-style Tags&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[4] &lt;a href="https://developers.google.com/maps/documentation/javascript/examples/geocoding-simple"&gt;Geocoding Service | Maps JavaScript API | Google Developers&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 09 Jul 2019 14:27:10 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2019-07-09:/2019/07/create-a-google-map-plugin-for-pelican/</guid><category>pelican</category><category>google</category><category>map</category><category>python</category><category>script</category><category>coding</category><category>github</category></item><item><title>将Instagram内容导入Blog</title><link>https://www.gfrog.net/2019/07/import-instagram-pictures-into-blog/</link><description>&lt;p&gt;青蛙关站的这几年，虽然没有写blog，但是instagram和twitter发了可真不少。
今天研究了下怎么导入instagram的照片和twitter的条目。
看起来instagram很容易实现，因为有一个python的客户端
&lt;a href="https://instaloader.github.io/"&gt;Instaloader&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;首先，用pip把这个客户端装上&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ pip3 install instaloader
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;然后，自己搞个脚本，从instagram数据里面直接生成markdown文件，写的不太好看，不过数据基本完美导入Blog了。&lt;/p&gt;
&lt;div class="gist"&gt;
    &lt;script src='https://gist.github.com/92087c750e9293213b69f0f1765e3fad.js'&gt;&lt;/script&gt;
    &lt;noscript&gt;
        &lt;pre&gt;&lt;code&gt;import instaloader
import os
import time

L=instaloader.Instaloader()
L.interactive_login("gfrogcn")

profile = instaloader.Profile.from_username(L.context, "gfrogcn")

new_template ="""title: Instagram Picture %s
date: %s 23:59:59
slug: instagram-picture-%s
category: Pictures
comments: true
layout: post

_%s_ %s

[via Instagram](https://www.instagram.com/p/%s/)

%s
"""
append_template = """
_%s_ %s

[via Instagram](https://www.instagram.com/p/%s/)

%s
"""


i = 0
for post in profile.get_posts():
    link = ""
    post_date = post.date_local.strftime("%F")
    post_time = post.date_local.strftime("%T")

    print("%s - %s" % (post_date, post.shortcode))

    if post.caption:
        caption = post.caption.replace("\n", "\n\n")
    else:
        caption = ""

    if post.typename == "GraphSidecar":
        for n in post.get_sidecar_nodes():
            if n.is_video:
                link += "[%s][%s]\n\n" % (n.video_url, n.video_url)
            else:
                link += "![1](%s)\n\n" % n.display_url
    elif post.is_video:
        link = "[%s](%s)" % (post.video_url, post.video_url)
    else:
        link = "![1](%s)" % post.url

    md_file = "%s-instagram-picture-%s.md" % (post_date, post_date)
    if os.path.isfile(md_file):
        file_open_mode = "a+"
        output = append_template % (post_time, caption,
                                    post.shortcode, link)
    else:
        file_open_mode = "w+"
        output = new_template % (post_date, post_date, post_date,
                                post_time, caption, post.shortcode,
                                link)

    with open(md_file, file_open_mode) as file:
        file.write(output)
        i += 1

    if i &gt;= 12:
        time.sleep(20)
        i = 0&lt;/code&gt;&lt;/pre&gt;
    &lt;/noscript&gt;
&lt;/div&gt;
&lt;p&gt;目前没有解决的问题有两个，这两点以后有时间再研究吧。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果有新的instagram内容，可能需要有一个daemon每天监测然后转换成markdown。&lt;/li&gt;
&lt;li&gt;&lt;del&gt;没办法处理视频内容，现在只是把视频文件链接留下了，但是没办法直接在blog播放。
  之后有时间需要找一个嵌入video的办法。
  &lt;strong&gt;Update:&lt;/strong&gt; 原来liquid_tags.video插件就可以插入video，只需要在post里写
  &lt;code&gt;{ % video link width height % }&lt;/code&gt;
  就好了。&lt;/del&gt;
  &lt;strong&gt;Update 2:&lt;/strong&gt; Instagram 的 video link 几天之后就失效了。
  所以目前青蛙的办法是直接在 Instram 里面导出 video 的 embed code，贴到 post 里面就好。&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 04 Jul 2019 00:07:46 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2019-07-04:/2019/07/import-instagram-pictures-into-blog/</guid><category>site</category><category>instagram</category><category>python</category></item><item><title>本站重新恢复</title><link>https://www.gfrog.net/2019/07/this-blog-recovered-on-github/</link><description>&lt;p&gt;目前本站已经在github上恢复，从2007-2013年的数据大部分已经可以访问。&lt;/p&gt;
&lt;p&gt;从上海出差回来之后，青蛙突然有了把blog恢复的动力。
努力了三天，重新使用pelican构建了blog，
然后review了一遍之前的post，修复了一大堆错误。&lt;/p&gt;
&lt;p&gt;回顾当年的老文章，感慨良多。当年青蛙也是个爱学习的好孩子，
同时不禁感叹这些年真的没有神马进步。&lt;/p&gt;
&lt;p&gt;重新开站，不对自己做硬性指标了，希望能认真写/记录点啥。&lt;/p&gt;
&lt;p&gt;本站域名：&lt;/p&gt;
&lt;h2&gt;&lt;a href="https://www.gfrog.net/"&gt;https://www.gfrog.net/&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;源码：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/gfrog/gfrog.github.io"&gt;https://github.com/gfrog/gfrog.github.io&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 03 Jul 2019 01:08:39 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2019-07-03:/2019/07/this-blog-recovered-on-github/</guid><category>site</category><category>github</category><category>pelican</category></item><item><title>上海五日游杂记</title><link>https://www.gfrog.net/2019/06/five-days-tour-in-shanghai/</link><description>&lt;p&gt;青蛙对于魔都向往已久，虽然到过魔都很多次，然而并没有太多机会在魔都玩一玩。
刚好六月在魔都有KubeCon展会，趁着开会的机会，青蛙利用周末在魔都转了转。&lt;/p&gt;
&lt;p&gt;不知道是不是刚好赶上了气温最适宜的那几天，
在帝都被热吐了之后， 到魔都竟然感觉气温舒适宜人，
在外面溜达感受黄浦江上的阵阵凉风，惬意的很。&lt;/p&gt;
&lt;p&gt;夏天去魔都肯定要坐火车的啊，不然坐飞机延误起来不一定要多久。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/Fn_uVSViMQepYjz8X-agQp21VU1zwZbshQgWBOkLf6mhDV0Yg-ue4-M_Nowh7OL6XnkDucJjb1suwE9qaVR2hRogzkI0M_q9umZEaeOlz7WiTx9IgexjZxAQF1PQVx6buIdjgUg-VV0=s640"&gt;&lt;/p&gt;
&lt;p&gt;兔子屎色动卧，顶着D车头衔的T车，
这车虽然叫D，但是大部分时间都跑在京沪普线上，
价钱却跟真正的D车票价看齐， 铁总真是赚的一手好钱。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/kXpUAt-ZVeYw6EVvXhquHccxSLrCs85HqAbg69tMxBNeTN0DD6-3kuLyNt0Vdl9FP71R5mCjg-_z5a_dYb0IHgPpOrVabsUeoMRqrbokdLWFvTZTFDot1igl_UHKDXI-lTSjDMsfXg4=s640"&gt;&lt;/p&gt;
&lt;p&gt;联通手机在京沪线上基本没法用，只有2G和隐隐约约的3G，
甚至到某些车站都没有4G信号，真是无奈到家。&lt;/p&gt;
&lt;p&gt;开掌上高铁连车上Wi-Fi速度也渣到爆，甚至有时候连这个app都没法连接。
相比起前几天青蛙去法国体验的法国高铁爸爸的app，
显示路线图实时速度，还能显示wifi覆盖情况，
在线预订餐车餐食，目的地及沿途景点介绍。
最重要的是上网速度飞快！&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/bn8WUIZLLtPM6nJp472H2GVCAn3rEkiTKI8YsdQPZLRrcxNFPW306WlCB4GX7Gly_2XEdjicCYP8-yvVor3sWO6GWC6ralwFlBUEA-8pljba30fFsAV_Wkb0lhMZyK_H06MK82uAQ7A=w320"&gt;
&lt;img alt="1" src="https://lh3.googleusercontent.com/pNYjz4DtOENMlKcmDyZRVAq4wE1afps_dtezxv-bH_QXjbZ3khQDfOGRjPX0GPga7TNilk6l7VotJixSWRrY33vC4R4p8ImqeIYnjImyDKw95xD_8wGb018hZ-PrX6swT5VoRzVfO5Y=w320"&gt;&lt;/p&gt;
&lt;p&gt;上海站到达，似乎上局放弃普速车站了？
上海站也是破破烂烂的早期火车站形象。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/2Ie2jMCgSuhgIQ4gavUODj6rUanfOEGV45klYqOk07nJQ-HQfsfZEoplW0XY-xbiAB7DgZ1WHeOUxFi3rHpd_UdckSebp_jjjg1pOPG7lsIIitYInLM53YfxKv4AaPH4KzdMDxF-1hM=s640"&gt;&lt;/p&gt;
&lt;p&gt;一大早的人民广场，非常安静， 旁边广场上有一群白衣服老人家打太极拳。
照片尽头就是准备入住的饭店。&lt;/p&gt;
&lt;p&gt;青蛙拍完这张照片2分钟后就遭到了便便毒气攻击。
上海市中心这种地方，紧靠着市政府，竟然有很多露宿街头的和随地大小便的人。
似乎魔都真是金玉其外。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/zmmzJJwpB4vf3s6k-Lly2XQLoisHvJzmELijBCe7zD2M3vpVMnU-4ueEWSYvVVPusMwuRN9qXxtdohv26a3bjIr3VSK9hEbWWMgb3YhXX4qLUTPbp-15j7xTKyez9QOILi6wDlg6NDU=w640"&gt;&lt;/p&gt;
&lt;p&gt;一大早的南京路 vs 晚上的南京路，反差巨大。
不过让青蛙想起了盛京的中街。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/XZIKwk605WjSjJE4X-ha898DvfIy2ps-z3KGdK6RvL5ZipGQnZhXXug0Mv07G-l15Ncj1KHGwJ0PkSI2vFN02db9UWcGPhAki0ef6Fa1oYcqJz0rMLDgTCk-iRvpo4ifkWyz0RvH5Xo=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/02gOk4YjQHnseob03MJMSL1XuaS5_htkAHPzDbC9h6B84fqGNWh_KCbUp6wQM4mj82VTug6Ts1EXhxnErmL3Jr38on84PSit3CqkoKWl_Y3L1tuOv7doqRhP4bt7vnSDbIcIO_Nz_ks=w640"&gt;&lt;/p&gt;
&lt;p&gt;魔都奇葩楼之一： 金刚钻。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/O6_SrkcQl9xIvaH3jUx7hYJH6dJItwn8G1NlQKMRRjZFRn5rmzZJWCGRT9dHcZUUNTRExtR4zyHRRK0b3Dynux9r7pMTMulyORanxtT8wR2FabV2BxVpAXscxKv2hL-k4hnvPFZV9vw=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/S7hWxzOlM3Su-vvfRepU78Iz67bZT2D8yPEQ8XPHLMwEXBsVbuXcXZ_ah61-2SMjDwyb0oMpMgAYa5EeDiZfPNx-LdjxCRBDvbmd5IUbDI7cI9Qj6m9eyZ0qPGxX2oSTzr9JC1lIZ6c=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/g_HlmqmCuejuc26REYgklPbVkXaj3nKcOkblpswbwTw443SHAe1QAyg43bSrD6KX5kcKqR2G3erR3fdrZVmD2KX3FsKUpvRhj6Xpa3cUbv3hPsQx_iwz4h33RzSxDc8IjPdlWOtGeGQ=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;（青蛙白天时间去上海博物馆参观，游记请见
&lt;a href="/2019/06/visit-shanghai-museum/"&gt;参观上海博物馆&lt;/a&gt;
，以下内容为参观博物馆之后，晚上在外滩的游记）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;和平饭店打卡，来的路上被汹涌的人潮吓到了，
人行道上竟然被塞得满满的，行人到路口之前提前20米就被拦下来，
因为前面20米要给马路对面过来的左转行人留出位置。&lt;/p&gt;
&lt;p&gt;拍照完毕之后继续被外滩防洪堤上的人潮吓到。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/own2nAYJlE2Yr970LylNfPQkt1AFIbW_aHtKWCw8TxZpReAnk6GoxulndylynUNohVjIP4VxjKeg8kH98IHx393lVEft5XEunm4hOuUB3ws-E3Gd3RJY67xx2VlwAlfxsEZVCB3SMTI=w640"&gt;&lt;/p&gt;
&lt;p&gt;东方明珠 + 魔都三件套。
有人说这照片照的东方明珠像要倒了，手机畸变太大，实物不是这样。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/vPKAyCt7u7bdbFcoqANo0Qk7GmHIQ3B8VOlU3X2iNONq7IT0cRQVQRztCthnDaWy1gY3xloVTifgZr46S5mpHrpw6eURikG5NgLF_qwQOX_kTF-E-NlTBZ9WT7pNOnKgxskkuNFM9uo=s640"&gt;&lt;/p&gt;
&lt;p&gt;遍地是人，据说前些年这地方还发生过踩踏事件。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/pPctBOF8vGXofd4_hhkV400f5u5hK0Y9ZSDsZ_Nlo5FU5Tv_-cIUOMb71YMHZcvTgbJwp24Nh2iPBiUX8JcPmUO5EcaCK0cY_nWiyuP0kTJvZbQOxuCt_Mbs0BczeC8H-Mg1EgGlEm4=s640"&gt;&lt;/p&gt;
&lt;p&gt;上海市人民英雄纪念塔，红红的，在夜色里非常醒目。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/YJXhaTvJoyp59lqslJnYYs12uA-cI6PB_jqwlzgzUBm9-4-s3RUzry-Z2tlHvahAg2oOkuuekpnl3pvzNRDwuWHVStWt9ezQ0KUPcsWgSNAdeqgIbftMOQG-q8gq8PhAak-4GUOclkI=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/J1hI9UVlRmS7oF43xQnFOkvg3G1vEzb6gJjNYraRxDWAhsLgpQFyL4fflRIquzG0nC7QM92blEaOI4z1VNDqHHhowzRHSrGPl7RoYydluWXVlRZEiKhh4YwQ7mNXCCdyJkG-bpJaJIA=w640"&gt;&lt;/p&gt;
&lt;p&gt;把纪念塔和对岸的大棒棒们合个影。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/I8cQ4aFZh0M4mNSi5Uz_WI4dY5alKLpFI0nAgx_sRkuH5A7ygtf5FvDuRzZkc574iCDkgIb4KKtxPGSZE92EGuFlklNCLxQJbIGcDeOy5Jbo2ivXOR2vwQfwJxLwZtvIEmubiZs_-aA=s640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/P4nq3_M429sXeJC-Kxsf5REvsZDpxPojIrqqUEgd8kJDW-NHTe3WhF7-fhj59GWljCPoqmY-RQD1gRoa9dMvCmpGW3F-cr_Az7r2-rCHVcigRheyohj9ImsXBKmXVCXTCwTIInecSD0=s640"&gt;&lt;/p&gt;
&lt;p&gt;纪念塔和东方明珠背靠背。
这边人潮虽然比和平饭店那里少了些，但是依然汹涌。&lt;/p&gt;
&lt;p&gt;很多网红、大妈、新婚夫妇来外滩拍照片，这里也是网红胜地。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/CCjtVigw-W0Oyo9aC1THt77D6OcuIIeG3pmesYkcgwEbCQHlB6j6qeFq14VsN56Dof9a1VxIj2uFd1RDSpDHBTXMCYURL1USLddjPKiIXmnsG6xmmF43N-Um7leaUYNoyAf8ncVHVk8=s640"&gt;&lt;/p&gt;
&lt;p&gt;外白渡桥，又一个网红打卡胜地。桥栏边上都是拍照的。
似乎很多描述十里洋场的电影里，这个桥曝光率也很高？&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/SN1XBT6uc3y0FmapBMYg_cmOS-lNX4E3H-tmMQ4cbsMzjGvBbJpnRinlNeBqKonamzX9sKrr4bct0AI_QCcRQzOS2p5SD8RhDzSM1FK3VWhneJ2dpkMpD4Q0HAVgCAeXrZqua-5xR3E=s640"&gt;&lt;/p&gt;
&lt;p&gt;1907年英国公司制造，载重只有20吨。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/ieJYOSs78cUTMn-i-IffJE20if2bTDAAy5gcF9B7iaINN7g9j3xY3VUXWKmQHddiruN5uQU_SnKeFpRcFMVDiiOqU7YwXORTU5Y22B3TgwE9maSPt9A00mbmfuoJgGKj00EQgUNTt7k=s640"&gt;&lt;/p&gt;
&lt;p&gt;桥上非常窄，两个方向都堵车。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/caonV2qsuHynx4vdAAun69GxD_Y5JqWhnJJvk51qyetsYI43vsXNdIa_STUMe_NUU_kot37nVTcNXecdMPRxm6h2sb1VTMFGoeI3NIHOsEio1TgeENLkokeMMsKYwBKKU_jsDP2-jkg=s640"&gt;&lt;/p&gt;
&lt;p&gt;在外白渡桥上，青蛙做了一个愚蠢的决定。
原本计划看完桥之后，就找个公交车去陆家嘴，
但是一念之差，青蛙最后去了城隍庙，累的半死不说，
城隍庙那边完全就是大妈旅行团的必去景点，人挤人人挨人，
而且晚上只有一些商店小吃店开着，豫园和城隍庙都进不去。&lt;/p&gt;
&lt;p&gt;以下就是在作死的路上。外滩夜景。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/UWeG-8EsZPqVhfT7V_30-x5ZpdgmzsiH5O8WxjQixxsklpPVDsdhWqHk9-Ih1uiV1tdzR9GQ5KnMD4dUPu7iyhh_7ttfa5NnGjRJxMfk1hOc5--RXHtoohlmyrKblIhtKxJof0dm_Mw=w640"&gt;&lt;/p&gt;
&lt;p&gt;远处宇宙行那个楼似乎烫了个发？&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/cuLk9G97gNVESkyOypbz2wpVZ9KvbJrpmVxN_8ODwWgYdrOEkk9qLI1SY_ZirHWN54YPlQgtSULeBOMkOXRnmuhjQtV6C0ClBJUx2hY1odujBdbTWNekqxnqdtejOredaVXIhQ36EEA=w640"&gt;&lt;/p&gt;
&lt;p&gt;走过来再往回望望。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/tFlwFOy2JQX6dYLFk-rkN4QZN79eBQU4_tfx1VPdfm63U0PrIGYqveRs1eLongAVk_5hp8V-lNHqXRPcvu2UzDQ0Pl25xxNzv57BLmJ7e4x2Q5aAcQjGkzI8g5H3nM9ly3QHwKtq4PM=w640"&gt;&lt;/p&gt;
&lt;p&gt;这个柱子很别致，地图上说是个信号塔。
据说是法国人修的一个给江上的船只指示天气信号的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/cdIRssmzce2mjhUatgNoKWeyjcUhP8s3Ru9vQvZ8LLkLOYmxH-pxAh4AM7nyD0zWAT56d05W95UBxY-yl_oWFduPn9o3cLKqG8tqj1uMGFlZ0prDQ63IkL8eNQJuaGk0A4vkuOLVJTE=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/bgol2_ysYok7-YKWBMNk7PuYHBGEIw2Je6SLBX0xtdl0VyWV3RjZFP2D44Lb_bXZQDY3_Ce-FTi57U_VCpjvjB6mQoLhCavUty0Tb-_vkFVVEp0ix4EveIzjCV-cQePz1aIDGX9ghkk=w640"&gt;&lt;/p&gt;
&lt;p&gt;千辛万苦，终于爬到了城隍庙，然而神马也没有。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/u22_ZWILNGymolRipTJ7IzAB0Qscjvp0nsLN1LsXcj4HdRa4AKBJS8yAv4dbQnTYVYcPevotpIAg5rTyIqoDUmrrVeaFvQFZmVUwyYbM7yzpH-3xqzAV2g6nPhT_biQndQZFqp4_NsQ=w640"&gt;&lt;/p&gt;
&lt;p&gt;凝晖阁，果然够光辉。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/-zRFwvTcMFiva6JiRwtJYpLsUEGDxy3M-ZNjgJ_x8cO4wYagf4MIgoXDDDWnxJ1tv7qxiDb4QNR7jIF7HN_Nv0X8CXqUF8bAN57SUPMzsJpV55hqUPlp_uIl5SpfrJs7d0yKXBDx6HA=w640"&gt;&lt;/p&gt;
&lt;p&gt;路遇帝都银行。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/MoAC6t_ZwDnhBgttUSNGALCzKJyfn594mhz0OHtcWU8Pk2Pi-jvBEbveZcC-5C1pgAT2snsQ5xcpkXKWIW4QL78L86zLoKUtYKkBIVB7NXJ-TKDzwk1IZJ_CeDoRVQd4j4MzoXz7rpw=s640"&gt;&lt;/p&gt;
&lt;p&gt;Day 2，在南京路上看到的M&amp;amp;Ms店&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/HjhuZe1YL_mZGuhDReVoUPDMH7If6wyY-drYmKLrahTR_hzR05fe65qqnV8QzYD23GadzFkaHPy1atVZFrYDcDCnxwbWqE1B3jYdTklWBXJ2VEOYJqZuXjNdY3YsmZB9-DjtbpprzPs=s640"&gt;&lt;/p&gt;
&lt;p&gt;LEGO ❤️✔️ SH ✔️&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/4oxet_IgaGxLIhtPaNSDp2n6DwZvUKekgrrCvT-MDfyhtyMGzFyjTVMr61yOJLZs185CKaUhcxVCPLCCNGNFalxJCtci5jyrcsMgaT60GGH1AcrZISPmyZ253Lv394CfjO1DbmCWgMw=s640"&gt;&lt;/p&gt;
&lt;p&gt;好八连雕塑，好像之前走到过这。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/cRreHKlSgCvXgRKJ-Qy7HdPVVlf-8qUYxy-NZsHPqDA2-q5VF538HL21pHF-HrT4HNAS5H4c-2oGHYhsfrdBknpjwcQ7gTbc2jwjCQykHQ5BQPujslj9MGl-lnMcOJff3rC7rdep5JI=w640"&gt;&lt;/p&gt;
&lt;p&gt;人民公园北边，有五卅运动纪念碑。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/KIM4_5SOoNbRTU9bJ75iVOPkAQmCRZGDwhtv-141djuDch1z24-hB7968q9vedsVZu-sXAug6E8Y92NaWP7xdwYQ88Hu-SPbyuE9s_JJSGiptg5Tc4ks3fIvXrH9ez9LzRq5BDSiHZc=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/m8udzzYgeqJi9o2xsSQFAWsqZFGJXhPTi2EFq5hb8eoiWmRk94bgK_QdQ60U5wpTOqcxmyeAlhmt6MWO9lpX8ZSglPMBgZeppiHd_fvIbFlvRMH-rq8T8LtqXIpg3StgvBzVimX5eyI=s640"&gt;&lt;/p&gt;
&lt;p&gt;去开封菜吃早餐，大概开封菜老板换了个天津人，大饼卷万物。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/a3icUU831u-IEx4BjKJOrfLv9tAxXnZS0Ay9dnL4a-892SI04iFqdXQ3DDAzM4i17W7QzJ84S9nSUTaf6Wf0h2CxbAl4gHCgXiKaLhAyPqIUqDM1RJ3v2i3saOJFjGnaeJlLsRpHd2U=s640"&gt;&lt;/p&gt;
&lt;p&gt;魔都特色胡同子晾衣服。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/ceTHbQZKmQHugQzPFAWpNTNKkfGOBUWrHhoindFtS__yZ8o0NrRHVQ7u91Gz9WA-OR35VINcHpYZHemV6GKkniCOeCoCV69pMg_r99KdjXBtmF2tEz3WG4l5fH_qAJovbQ5EcPmdjd4=w640"&gt;&lt;/p&gt;
&lt;p&gt;窗口晾衣服。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/_OO4_1z7eRgXXUapNIzgUnGVY8787oaiknDcZcU24DHWM2foGTlQKfGZHNIJZ315G3huJNXAlyJuGGqxsGKiLeyHd0BjLweCqCM5R6ZdulMy02vTDQMG8zBrveS0E1Z9CHIM8nHW3AY=s640"&gt;&lt;/p&gt;
&lt;p&gt;梅赛德斯奔驰飞碟。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/T8J1SYI6MTxVoOojFQvrcZdWAt4_NamfysTvN40TQBA5t-1abeypC2jJK5nBo8DNyCzXQ8TaGMaPBk0MT5viUMtgBbx3xm4d55_8b8W500lhx8qz8vqG1YR4W8uGQWNyEBoR2SKFcHc=s640"&gt;&lt;/p&gt;
&lt;p&gt;魔都土著同事带我们去的一家啤酒阿姨，
酒柜相当壮观，估计大概有几百种酒。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/k6Xpm8WaflJBZoii9uc5tCATEmwWLEBEP_sJLtNNeaPvCTRDuPOdJpj6X2-vDcwLY0a4RRqN-MuTSMp5CmYMEeoHWZa-ecxP9gjqKeCF7L1MV7coQvqHqR3hEjOrUMr--6CG4Q8AQJ0=s640"&gt;&lt;/p&gt;
&lt;p&gt;折叠小杯子。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/EwjREP-TtxqnKiTFY6d1gxf6W_pYuW7pjyJebWoS_ddQqSYyBQg0FXcOMdVSlaY5TTQQXqYcj8PYfCqflmNuUImdmtDhJXn8ZuiBVSvv0nJnqlNAV-Tr1z8udhAHjA__dCbJ4qhHA6s=s640"&gt;&lt;/p&gt;
&lt;p&gt;会议结束，组团吃顿云南菜慰劳自己。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/N39OkBo4qbfZIB5vQKa1PeRtwuupfq6KS5K2xvIsteYiojHIjMIG5vRXbmdgoxG0UWhXqG3eXRBYmZ4aAYDSZyruE_9nt5qzB_0iuKyIxKBzwCZMX-zijoiV3gtHfwS1KwWDagRIDqo=s640"&gt;&lt;/p&gt;
&lt;p&gt;汽锅鸡，鸡汤棒棒哒，很好喝。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/FjFejGL0Ur2QZU14-Sf7A-FZsx2jwRuxNhBZcjILCpbACTKqmXThefoIQikhJhkey9aqt9fS2g5Q_1wzjXwlROQCL4SVLPnifyKreFAmvIdSscdBPmC91yQOAVmbqVGEN6Iz5DuSl8s=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/PLLQOApcFSmFEM2Aef0sqYMuhXyIJK2QoK2k3ZuRTdeSMU6txkCi3OmfJu_16sUcg2DmRGxz1eBnkoQ-HumC6DYPeA3YPbgqa5nM6rDN8UTv-qD_0mWE9RYx3m20j7SBkbLM5BgokBI=s640"&gt;&lt;/p&gt;
&lt;p&gt;徐家汇的一个写字楼，弄的像核电站一样……&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/pAY7zsKRLlKw6rPDOh7tZ-oyQG6KYVQiIMG33Uh3iQx5fUIJcnOrF2nYdoPEHOd8U8ZNbrw57P8Sfs6T9l_K2M0K1RQP2FuBwyZdsElQAttSPENu5oKCeRQOcjTRdyWD27UTKC6udn4=w640"&gt;&lt;/p&gt;
&lt;p&gt;最后一天，去车站之前还有几小时时间，逛逛本地高端超市。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/bJwLW_r60-FnnGn-GACfAbdAlMRX7H3pfWjDRkA0uHCA0knNYujMo0clWRCeTN9m6GMhq_6NJ-ZbnL3hXWddfd9iAafF7HzJwbeA72DA72AZUuNmNIJFL4mPtqL6Nf--fP0cHH6GTKQ=s640"&gt;&lt;/p&gt;
&lt;p&gt;回家的伴手礼自然是大白兔🐰啦。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/-wNNYV2Hj0WyhDRLzhJiwDV6hwnANSpuYoAZExuMMdC0RQtfmx9ik5oFnSDp2NAXEmZLuglu9InFOW80TF13_B-A5Spd2XPO4kegrM3MVvR_giJ3IO6SizzmRsysNhNPz-jw6HRg3j4=s640"&gt;&lt;/p&gt;
&lt;p&gt;到达帝都，开始搬砖。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/lyYXhzPpo1Bs_RCcwef-Bnt9yan_MEkeR6rDMrRtxJPFhlKDDYykOzIQHAGIXEcX4K5--VN50VJ8wmBPH-9ibBQQBG5rZSmXO35zlO3nFkBRJN_Y6yYzgxhSPl883OiZeooOfpMcISI=w640"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 27 Jun 2019 17:06:16 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2019-06-27:/2019/06/five-days-tour-in-shanghai/</guid><category>travel</category><category>tour</category><category>shanghai</category><category>train</category><category>waitan</category><category>building</category><category>coffee</category><category>shop</category></item><item><title>体验上海轮渡</title><link>https://www.gfrog.net/2019/06/take-shanghai-ferry-service/</link><description>&lt;p&gt;青蛙自从前些年部分遍历帝都地铁之后，已经很久没做过遍历公交这种事情了。
这次来到魔都，有一上午时间没地方去，所以决定部分遍历魔都轮渡线路。
遍历的目标就是从外滩沿黄浦江向上，到南浦大桥结束。&lt;/p&gt;
&lt;p&gt;这其中需要乘坐5条线路，经过8个渡口：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;浦西&lt;/th&gt;
&lt;th&gt;线路&lt;/th&gt;
&lt;th&gt;浦东&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;金陵东路渡口&lt;/td&gt;
&lt;td&gt;东金线&lt;/td&gt;
&lt;td&gt;东昌路渡口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;复兴东路渡口&lt;/td&gt;
&lt;td&gt;东复线&lt;/td&gt;
&lt;td&gt;东昌路渡口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;复兴东路渡口&lt;/td&gt;
&lt;td&gt;杨复线&lt;/td&gt;
&lt;td&gt;杨家渡渡口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;董家渡渡口&lt;/td&gt;
&lt;td&gt;塘董线&lt;/td&gt;
&lt;td&gt;塘桥渡口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;陆家浜渡口&lt;/td&gt;
&lt;td&gt;南陆线&lt;/td&gt;
&lt;td&gt;南码头渡口&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;script&gt;
var locations = [
['金陵东路渡口', '金陵东路渡口, huangpu, shanghai', '#jinling-east-road'],
['东昌路渡口', 'Dongchang Road Ferry, pudong xinqu, shanghai', '#dongchang-road'],
['复兴东路渡口', '复兴东路渡口, huangpu, shanghai', '#fuxing-east-road'],
['杨家渡渡口', '杨家渡渡口, pudong xinqu, shanghai', '#yangjiadu'],
['塘桥渡口', '塘桥渡口, lujiazui, pudong, shanghai', '#tangqiao'],
['董家渡渡口', '董家渡渡口, huangpu, shanghai', '#dongjiadu'],
['陆家浜渡口', '陆家浜渡口, huangpu, shanghai', '#lujiabang'],
['南码头渡口', 'Nanmatou Ferry, pudong, shanghai', '#nanmatou'],
];
&lt;/script&gt;

&lt;p&gt;&lt;div id="map_canvas" style="width:80%; height:480px;"&gt;&lt;/div&gt;
&lt;script src="/js/google-map.js"&gt;&lt;/script&gt;
&lt;script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB63YDb3SVNe84KeNXPh5zIjJ_uwr5vsII&amp;callback=initMap" async defer&gt;&lt;/script&gt;
        &lt;/p&gt;
&lt;h3&gt;&lt;a name='jinling-east-road'&gt;金陵东路渡口&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://zh.wikipedia.org/zh-hans/%E4%B8%9C%E9%87%91%E7%BA%BF%E8%BD%AE%E6%B8%A1"&gt;WIKI: 东金线轮渡&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;（这个渡口青蛙竟然忘了拍站牌，当时光想着赶紧冲进去赶上船，
站外什么也没拍，然而等了大概15分钟才发船。
于是只好拿前一天晚上拍的信号塔的夜景代替站外的招牌啦，这个渡口就在这个信号塔旁边。）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/8IugRnjZgqoJsJvbIfZYxhTaltHgTQ2brQrRPNUeek3ah_SKthFRFVh2CJxOJ_ccc6aCOyxAfVD094EqDmE6dzAr5AJK87T05eQJ0JZtlm5bquu8tQvQsEIXRd461VGOD_t1d1aTYSw=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/h4atTK7-n-WP1edTkQcp_BUmzVgknjFNW2OpvkhHHIftHNgOSd0q6KXVoQGnH3NhIjpFkwHdQfCr45_31ucvA57EjAe6wd7vRfcO90rzBfWD5WKQQOGoVE9pfHuBsL5iX6lbS-Fee4o=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;这条航线是外滩到东方明珠的最近路线，所以渡船上面几乎装满了人。
青蛙好不容易找到个靠窗的空地儿拍了几张照片。&lt;/p&gt;
&lt;p&gt;前排C位黄金震旦，后排陆家嘴三件套：注射器、开瓶器、打蛋器。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/umhmFfuq85a_SUmGEoQwPTcGBuSUbMMjPDXC6T6dgnvR4XxVoQSN3PndAN4Ps9LiyA9BIMMCZrE81UzCuxZc7q9KeH7WhSURICzKJn4Yf4l9qSucgVNROCifTk3MT7wRRt0o0gh0v0Y=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;金陵东路码头的栈房和栈桥。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/up4CzNgnmqAvm3OkSIEaRdbgeUID1TP7BqEWps4-gueeBm_UOR6EXBKv7rZgohLaOCi1Hz_mxJckTmTVAnwB2cBlldb3S3xItyGTth0F1sAsK4aSoR68_B7S1dfScun_QngIGNg4p9M=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;水上警察和海事部门的执法船和码头。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/F2AR68NgvutCmxXt0S9itxOEqdoy2nLmr2OKMBty9rKEkCiHbCDUNL8dKZt0ayuGcXXSZUOPdI62fdtlnnig7oGLLVxrgRGROT9ifTzn9g8aoWvTljZfLEUQMvPU8mRG3glVs-lY1FQ=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/AladcbAAojoTzIDRGOmjbAwfEfh5FcyzBJnUEg_O0czAwY3VEKd8A98iZ12lPXIF0y2psywLPC1a6xFY3r1vBPAzaA5T4kzieFAK3Yh9RTNZXw1qr-K6vIIfV_SMWLnDZTXTCXtsHFM=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;浦江北岸，看起来都是金融巨头们的地盘。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/JRKfQL7zB8jxGxGZ6BItKOKybYqJvu5RPDdG4lP_llhxKgCc2LYcI6Bog7-6cK8YnC5q9XZRlnox62ca9U3gBoT0MPmWhB_5ZaRBhXBZ_9kcyZ8-MWOnqL0AdhVXkY36C_YQQn6JyY8=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;连游船的广告商都是VISA和太平洋保险。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/ApiTaSzAtw9qTKiTxOjQ-rUdi4MTx2twflOzikLL6z24263vw96sdy_Ml1T8DfDa3lMbrCwEVglWlDKOaEVutXj2v1IPL23BFXNFGdulAbcFwsGR5Y6k1J3zAu3UN5H6xLMl8s2MtDA=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/ac49qvtHlq3_EesHPWS-IaJFdxR7VQcY2lD8t50G8uz0trdSiOSsY8woEM6XdaG7gElnSD9Y-eH4AZl2G6h6d9xOvLE2laC3G5om1AMrDHJt1BP7YXqtPeFwgqsCIaXtbYJJBpEjUcM=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;不知道是哪个船上的混蛋扔了个瓶子在江里，瞬间就漂出去很远，大概待会就直接出海了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/vzbzdNWBLMDaPOsy-SjAYAvUFQu_dbQh9YPPIFzCvNXrQhavPWfNEJk0Ae_4dLCRlSdgCiMzB5jb89SRs75fRVZmp44ESmvR0l7OMtx0Nvfl66Zmw50qRFfz4FzHxIKVWnYXxl-HjY4=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;浦江北岸。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/Fkozi0VQuWU_pd6BJWMdQHEPhpLoMARMGBLfY8rAwLf49sYgQ4rOLTS-EI3s7OMRNSV3Sg5vKezFdJbuDaRiLRJLRVfQHR4yUkwczAPfWjwjgtC40HQLI97H3a3U3gks8ROLoRJF8bs=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;到达东昌路渡口，这条航线基本就是条直线，非常快。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/ytk5LquXkak1AZnMF83_8qlzoVGraS78GqYG63i9mLmBbKvCsB0BLeHD4Cc_fW0H4pPycqyAab-wsemMS67XorprtjZaU_hJ-3cSn5EJmE9VoZmnTIY9gIGjDZsy4mHuDVzBAxp6Xy0=s800" width="80%"&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name='dongchang-road'&gt;东昌路渡口&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://zh.wikipedia.org/wiki/%E4%B8%9C%E5%A4%8D%E7%BA%BF%E8%BD%AE%E6%B8%A1"&gt;WIKI: 东复线轮渡&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;东昌路渡口，往复兴东路和金陵东路方向是两个不同的进站口，
所以到达之后先刷卡出站，然后再刷卡进站。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/2BLeT4PmKn6ok68Zbpeu70vNFcqj_BD4CwSbAiFj_3S2sMm-o9j-TXHQ92cDIzQ5Lop1YT9dIoMXSBWlgeXN13vnLqWfWqASyyOADvqadXe9AbdcWxrN0HDOJea7RtDSrO3fGBUCLkw=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/a8qjjcr46UbicExEnvcxpjGCQmak-4_dyPapHCn1KeNrgfpcn8xpMZHtepj1-RHz-FUQ96ecgUUBOFP5Lmf2utEMXarTXlyM5goacLsjepYcxuMHq63DWDBmG8sOZ8h7-D3ENypj4FY=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/8uJddFOfisB5o226isHL2XsJQMDFGH_9vDll4PEzOSaP7Hqp0GMhAjD1PO3FlPhURmJbWMi54EHWIOQLXMJUkNTB03jnExDIsJNdCMH11esFnD5AdRoqla_ThjP6pjzRf67Y3KLjscc=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/lNIUtOkJm-2ZGcN9JemQ8saDUA9AJciPJc8zZxc0GUod8Ra0N854qkxClBhOw8Cb11dBeDh9kREonsJC33qhCDnvjUe2n5f1l_rcqVTJ6iWGOX2qwbwdHFa5FfyceVCZNCeejrPlziE=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;从浦东看一眼对岸，魔都奇奇怪怪的楼房好多，右边那个好像把海葵顶脑袋上了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/YQRAMaNdVgBj1jmWiAwQ3c6SglzDvzStf8ffSu-nMkFY_mhm9d-XBUYmGEBk9vuVoJvvrHZJGZrMwA4N21eMlH-6tLzx6wkldPj0cgcqG4PxNYsurG1v7_79Ehm2GxQX8jLw0pgIlBo=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;除了金陵东路到东昌路这条线路上不允许自行车和摩托车上船，其他渡口都可以摆渡自行车和电动车，甚至连三蹦子都能开上去。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/3HVQmxZID57rnSH6Ze5ZGY9AzocNLD8iqQwmUlY7LU0xbWRUb6JuKLIvlYGIVC0a9Hc28dueFHIk1vSJDbA4yyv8sFvEb5Mf-iLvY3d5fGEoyMR8lYb02g1Vqy_ErOAOKa5wKsmDy0E=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;另一个角度的打蛋器和瓶起子。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/uZK7_PrLFI9A7w975RGFeZYtI2hFMzxAW6iLnzxwYXBB1V1NWB6qSVFfWsRknAgN4rob06V0iQdZ9PmkqK_ZWv9v_5qmkRkGvHS_OUD9-YfHD_bVmPDDBeJrG6pYTvBVFhKhvJvAhWE=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;浦江南岸。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/Iocbww1c4AKnHk32gwoKYeT1P3zrdfUquEPMecKWuerliNEA_gG9aOK2WHwRT-wF7EE3An5hPqh8hqNRzULJvZ7UHHoF7omUSdNdijnMGyvLUcO5CSWYoSZJz6F39RiDaxXZ8HL6CwA=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;杨家渡方向开来的渡船。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/F9fftY6n682zGpodTU5GROaramG_Hi3rBchxuayLkfwQ9e9Ukd93GBZeBvr_gkimGTFKfZd6s4TMoLWjWDQP46KTiBi1rUxqmPKc5xEzx-wBI09Xv-P31zqgFpj0EdOqhOgubmoVhbE=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;复兴东路渡口到达。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/ENQl_OxuVb0t5spTVc1ptCW5VA3VxRqcqgRC4-7FkyVK3nkCntU7RVNdejbM-T4Axw_Nc06rhNOC4mTzXg06zigCPvXJtIJf6XXOjqxdnkZMdJ_KVTdVTPHjMr3SS10G8ZBfAlV_gO8=s800" width="80%"&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name='fuxing-east-road'&gt;复兴东路渡口&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://zh.wikipedia.org/wiki/%E6%9D%A8%E5%A4%8D%E7%BA%BF%E8%BD%AE%E6%B8%A1"&gt;WIKI: 杨复线轮渡&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从东昌路方向的出口出来，转个身再进入杨家渡方向的渡口。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/A3FsMx3tZgbtM6MgdpLjsY5qzbzQTNz6YIGZArxvvaY5DlsGTPerAC2zY9mgrKa-uTaqn17Ib4cmieR6N-mXbq5vLeEuPNkkHUWl0Viix80AFNQmtYp1HtneL0dJp6tyfD5rx4CR3PM=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;到杨家渡的渡船都是双层渡轮，底层基本都是满满的电瓶车自行车，
行人非常自觉的几乎全部上二层了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/fUuCtmQxnHF323DSrh4IPvPMtQ0XlO2DxOFdqOxMKNH7UePft3SNR7vJyFPKaFVwamJ6cROoyVch2MHZlaGL5jPbjRMjLSoNB_G0A0jZNFlVFypEeRzOIBBMOxswmuQejjAm_UVtFY8=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;而且二层有个露天区域，虽然没空调，但是江上的风吹过来也非常凉爽。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/3W1mFtwN0IIradxia3t0gxuE0m38PL_WJvPsrAlcgJ9UfNssviUlazHbUjfY7egjodfwRfplAHhNcsAh0PVYBklfVisHq2Dr7h3x-mV6H_sePhK0gGa1aug62XCyXZJNNY2xe780Zs0=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;再换个角度看打蛋器和瓶起子，东方明珠露出个尖尖。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/NOfNxSgZoGGWCKnIITJwEiZAfE2AoPCpj558pLPubiLVj0YHlry0EO-bvb9o26F5FM1slSUaP6zPyYNR7zesl46e-XKqz9Z1iXLkL8aAMJu6Zn9186fmBEr9b76-9PxYgKSerT3tQDQ=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;沪航客97，这是刚才坐的东昌路轮渡。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/VVLCFOMnfb7loGJ8tCkeDUn0qCCjBG9fnhkwTQC4r03yv4fX-xG1Y-ZmOlO5N0maaFzmW29nXkcS7b10ofUixl02MCJMUBLLFi2f8y8_n0oMc3gvezM8gi6qIFqCbNfAME9Z2_5l8zE=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;渡口栈桥。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/di5iHLDTIqLamimu7zjASiKv55yKufaVSKeLtF-DBCQmVnL0CSQAe-PSC8oOgSSe-oJeRdsBk5jECZkq1JAjFAjU8hbm9RKPWKu5ThrDBOpmFtqrPbxUHQlQpV2_yd8Lxl3R05r9_48=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;阳光指向的地方就是杨家渡，出发。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/ORiS6tcSwxMKDXPFzbriLvAIAEL2AaBbY6Y4oCwL3etl6whK47lwhJ0DcKMTjA4jTSL6Kt-Q9cQf7kmoh2f9qVOQgm9BEa77-mBgt_FtLIeKj7iBikjxCa-gUPjqQBy13rufdE24X6M=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;渡船一层，大爷把三轮油驴都骑上来了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/mHEekTUobDfAmk9Qw6Xb6QmoHuUJw-qxsqoUNW4EY_WZXT4d8pMXt5gOA85lYtxeIv2ZqeqJ95ENA03B8EuoDVOvUzMp6Y_pq8ykugs3ghox7yLMfczoXkxn0NTZqb86CSJvg8IePrs=s800" width="80%"&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name='yangjiadu'&gt;杨家渡渡口&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;杨家渡到达。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/YO51GUiH8lemfklgud69sT5yBHRBxq96nh87oso0VwE-qr3Hpt_ZXkNp8ARHxWneKMMre8JXpqORVT_TofmCIrqClq7GdaoUqSJL2_viYiTUmVwlSglVPPa3CDq_QAOidx1ivlWooGQ=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;杨家渡渡口到达之后，青蛙需要步行1km多才能到达塘桥渡口。
好在杨家渡出来右转就是一条健身布道，可以在塑胶跑道上溜达溜达，或者在渡口找一辆共享单车。
步道中间有几个大草坪，不少家庭带着娃在草坪上玩耍。&lt;/p&gt;
&lt;p&gt;路过一个大帆船，不过好像是个饭店。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/W_XPdQ1s0LeRdxwYKclEecjojBWh2K9qqbckfZPMIf8j3T08f-oYP5Xn1b_aYxkwHk3Cge9xzP02EqO9uXgR4QFKBvDlVcKkPKmD3Tvo4jDkdD_WFaI7yt6tMAUtnGCOX25CkhJJgdw=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;在步道上就可以远远的看到南浦大桥了，待会渡船还从桥下开过。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/5s1mdKdGpfR1AJt4GCjbTjZazjxYOu3JeQvL6VOm2UEkK66vNar0rxdnVNll-RWQeveZVzV0LeKfaQerx1gqrzJcqQmNYUZHiEH3QFYNzk-sw-PZ65KSOAF-EInBWtFQ41oJmcMXZGI=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;路遇一个吊车抓斗，难道这里之前是运煤的码头？&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/qqL0UYjDrFlUMIxswXObGMWPpPyYtrd9o-bQlC0-SUC-cX9riTQ_t_D3sSXnzDT0PijwTAc0vuhdnlNNyKwFCwZbW7UbbKqXdx8fm5VfqioZYgMSb6LPN3tNOoyRLzLPORP1mlulTmE=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;健身步道，虽然盯着大太阳，依然有很多人溜达锻炼。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/A7fTjZLVav3gHAgILZ9VOgvx1MqK_1IvXbuyqrVIsP1MiFv1W-bF4BMNSggrS7UK3tJUZ_dwL_7miI0Jo1bnVK6kxUN4vKbmLyE9uIaCGe3ZXL4z_YJJxO-ls_qE3yXaud2m5nsSugs=w800" width="80%"&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name='tangqiao'&gt;塘桥渡口&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://zh.wikipedia.org/wiki/塘董线轮渡"&gt;WIKI: 塘董线轮渡&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;顶着太阳跋涉1km多之后，终于到达塘桥渡口了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/xI8bn9DZULxu02rxDfgb0MH16ykRP_5-_ZvijdQh4BPL3t7bKxGIPwJl7qtMPfVP4GoVvs7ojjzFsWtwSym3Z4iJTUZNkbPmbCKWTug3H-RSgGZceAnvHcIEkyQOE-ApSGR1wkOmJew=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/aKuQMnw6NYwHB5Xb4fbldulnNmiA2LUalQEBByZekGvPSnEB5IexnlP7mStjKTrwPhz66zk0RkCzmE9lLwgGUGOK07cffOx2X9TTZSZQmx79A2lCzvAlglp4RZGyPxvQ21RI0Qlaagc=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;不知道是因为中午时间还是这边已经渐渐远离外滩中心区域， 等船的人明显少了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/I6lEJNh91O4nX-9o51wkEW2f2iYS5eWjfde2uXLcxCSsUjVFFxV2MOdX38q3JV_akyhTBTMODLqykj02Do8xmNWJRpvL0sr3gz4RFOaSWNPBWO9Em-CE6qgXP_5akDmCL4JuXIsRZo4=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;世博客渡22，貌似这个船是为世博会准备的渡船。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/2eqWCvo_1I3zLstIQ3y9iQbIQhiC8cPsc1pGkgfYFG-sQrZWTcfvQLtUiJaMiTqUsnuddjw_ETCI50I2I6PfERHAABN6rsMQNGRGdghPEmAfi2Wfi8-KfsgJUsdKDWTtw3EIOE46nSs=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;从上游望向外滩方向，最显眼的依然是三件套。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/DDQuny64FocZ8Ol3TNdT6TTzHkqMKMNsphB9VaDjn8dAieIhLUKjYBqArKYr06PpzZXtfJsqrJexJdxDantKTpp7lKJcfI1Ry7Z-jBS200kY-EOBfNkRuSQqi3QEDKGsdGU63OV_zrM=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;南浦大桥，很高很霸气，修这么高大概也是为了过轮船考虑吧？&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/Y7pNLlLwo_Dtp1lssTOun_OhjOYE9NK69y_lT73OmSFbo0C-aouFt3pcoznkiYDOfupAnf0TIVQN6ooPuIE-87h4sLuACCnJM8tJvh8uUeqzGwp-6Cezop2xnqeAskiJjBbTnpv-nTw=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;塘桥开船。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/WgSEkeFJe6XWpcUFHwQMFBu605v8plozrboE8K1TyWbdmXXlJ5j6HI43tW27o4GglnFwWDjO8KUZv-1FnWt8DsMtjf45mFdvbU7EemZHhxNewfnOa7GPgnY-yEZNOrUj-inu-bU09Yg=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;新友好，大概是个游船？&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/P8QrLqnXoEqu0AyaavCBLd3ID4dNiDh5m5HfdVC00oJi7dpiRI1DIhoPqfkYsT988hwi3LTiWTNCZRN0kKIaVdAcHhnI5EwVucfAa2lzKBHAKIwFRhOBzxK5jxoUDnbhO1GNhP7RraM=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;这个渡轮也是双层渡船，上二层呆着看风景去。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/a1zQgayQCQdEYfQNtgeyY1-GQ-_V-IqMn4IFA5bvzR0DxgI_eH8vy-UCB_nH-EKMZwemERDsvkyn7fXGFlU0qdv0i_i8NGHsGCY4rYLBL0Jl5wt9UiJKEgs8i2wKzM2a3NlwKLcD9LA=s800" width="80%"&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name='dongjiadu'&gt;董家渡渡口&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;董家渡到达。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/C2prWETrmhYL4ZUrPYTAXNTNbkjKd-ddKjZiTCDGXIE-3CFyCnPcgycsENuRZwGvCk6yevrSKXqRYfRgsL0FXOabrz2iSmeFMkEqfSeFH-mk2aooSBW6INo4w2NSlWz1paBhrqvqYfo=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;董家渡到陆家浜渡口之间也需要走路，而且是沿着黄浦江北岸的防洪堤。
青蛙在这段路上被晒爆了。后半段黄浦江边上的烂泥还有一股子臭味，体验很糟糕。&lt;/p&gt;
&lt;h3&gt;&lt;a name='lujiabang'&gt;陆家浜渡口&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://zh.wikipedia.org/wiki/%E5%8D%97%E9%99%86%E7%BA%BF%E8%BD%AE%E6%B8%A1"&gt;WIKI: 南陆线轮渡&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;陆家浜路渡口到达。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/XKXf_1382r1rD3wkFuHHdaiP11Ybm5lUbd2XUVveiWsodCHEpgTGQ9om0Vvqg3UUBjpMcFOOIiCIvh5z5mwMBbmcFe83lmTlMdrjJEfW3m5AT6M-zT2SCospFJGTBbh0rPb6ch0SYaE=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/z1o1d029ZXBOrNzJyt0PXnrvlA8b2401n552mVKXFVnq5OrQNn9FHu9I02YoTP0Bw0n69z8rcXfEAm2aoUt1h8_1K4C0KL1yRFoQVDu-Kch6QZ3jfBGEJ4EkPWXCuYa812hvtICpx78=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;陆家浜这个渡口修的相当气派，大概因为正对着当年世博的场馆。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/Nec2sgAgG5OBnC1sNEgM0yGktswwhEAaPkuFj967CXLc7xMNBuJziOY2SylsGtBcODacRiMPtTB-_saA4wM4hnXnkkqSQdOIN2reeSdz_KPQX2-EMIpBbvSITxmOLUrYOXvKyFzJIHc=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;南浦大桥左边。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/kjIwPathuqIl_jm3CgaTHqsLmZORYw0mCjfH9UyelNXTWFpzTfS0OvAvVa08MtfZOndcBJlXQVeubnM-xIQJlFLUfabDuMdrqUMfqb2gSXsdzw_S7Z5W-Mao9hn8VyTWfHTEYjbwX_w=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;从陆家浜路再往外滩方向看，这里黄浦江有一个大弯，已经看不到三件套了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/JBWjrfTK81rh3lwQ1XDIKIgGBby_emH0Mg1rm_7uK4M7XJI9A09T9wILZG0C5KgfnJiO7S-pRNEd8Pp9WYqyovxExl0vx_jnX_gZzb7UoC902PM4NGiXSpmddwITEHHFrzOrwgOWgA8=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;从渡船窗里往上游看看，不少货船来来往往，似乎江边的建筑开始变得低矮稀疏了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/2YVaAwZ1e3f3Gt6AmRcV2HJD0U01_nafU2iowGoXd1IciP6FSCyuaZSLXbbBoBKX9n2Ai7uekz9ibqm9kHqnaYpfb6aMwhioa3PpML32pHGjj9SPM1xsrJ6uVupIrlx3bjQUnFDLA0M=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;当年世博会期间这条船估计也是作为世博轮渡用的，船上还有涂掉的世博logo。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/WoIvo702Zc9-SwHdbGtG1rtGADEfkHSBMoiUMnkJMVw_8hxBjEwPKtfLx0j1ns3XlsAKsUwcsGOBXZy0A-8gfDxBQnhgk0h1RFyrreywW52ZwErDZ08RvEr1LYscwxVzlYcorVInd5s=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;南浦大桥桥下。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/jgzOnBCd6fySuQqAkCJBWb7A40MmB_Qv0Q-MSfnabrAY0qCBKDCdp46_wLJ_I7NFXjZYOkgf5Q7I1Vzb6LTRkOWtJDi28jU-u8CfMtIzFBCMQkJsz_s9oRfKQclq6R5AQamxI7q-ufA=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;桥下面是个月子中心，选这个地方环境不错。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/InqtyBATlYALoi2tHRI0Ux1CTRoGMCJk_NcGrlDyx8JbDazM2MWsXE73JjYg9unPcmfs1Ko4LktmXO-Y4HekaCNgNUbxWhyPZxZSKQhrRmCVTjlvYlPnhY7MWWVpu-kIfbp64nxNkwo=w800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;南浦大桥右边。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/JG6wcVf8ar_1DxPNWwZ9ajJJlQ3_0gS9BlSc5XVyEx_nZsSUKrEIRnq6CVrIQyt_qvdCJxVf9MuaKrelT__YpKBOsI4DYGbWyJnzv44n10Exq5Wrkc7I9AHv1YOJEO7NyOZebB_n4gU=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;桥中心位置，桥上还挂着航路的信号灯。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/Ufk8bX3x31u1uh7uOiXVZT2mu4atpxWuB2qPKPRjY6pDcd3HhRQKjM-wd-ht__wkx20hHwMM432bzyI7HYIEvF2Qj8_UjQgPv0Ed-sikjIYUkaeM3Y9H284EbH3XClyFt-Gp6_egUq0=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;沪WJ0001，这船看起来很牛逼的样子，窗子都用帘子遮起来。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/AS_Dz2aY_LQh30vkXaAM4COMslkHSideGD640wGOr2JXk8-vrG_giP0RMhwzXVpJwLMbM1NkkeESTy57If18rBVPQKj4u3JOgHGlAYLFU5FQEtUdoMY-yuLA2abL24LpQ-Lj7P3wNcU=s800" width="80%"&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a name='nanmatou'&gt;南码头渡口&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;南码头渡口到达。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/tHOEh1lPnFY5Md5n1qempWJxooKKsSFpcYWDWAyV5KfbhHUAElYL25aDlxmM39izDUtWtLjOqRiJKm1iqO2BlfJWaazAG5WNblTCs5OgKEhbgcYvyUwHK2Xu6lv7DCaibzSQUrenHpc=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;到这里青蛙的部分遍历魔都轮渡的行程结束。
共计耗时2小时19分钟。
这个季节的魔都似乎是一个非常适合户外活动的季节，
除了在防洪堤上被晒成傻子，其他路段竟然非常适合走一走。
感觉自己好像爱上魔都了。&lt;/p&gt;
&lt;p&gt;另外在闵行、松江，还有黄浦江下游，还分别有4-5条轮渡线，
如果有机会的话青蛙还有兴趣继续遍历一下。
不过目前并没有计划，大概需要自己准备一个陆地交通工具才行。&lt;/p&gt;
&lt;p&gt;行程最后，青蛙骑车去找了一家小杨生煎。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/pnAoG4P1k2FduJW_PODccObg-tBlBhxj6Y3Y7WZ0NZRsO_rtA_HRtCddZewinT_sPNpI_cVmoLzoYW2KDlCcYgwsCZYrUiAUhp3kLEyqS261VYE_e96Oe7bYuq9rynvvDLigC1YLDXY=s800" width="80%"&gt;&lt;/p&gt;
&lt;p&gt;结果大失所望，除去毫无意外的毁了一件衣服，
小杨生煎的味道完全对不起他的名气，甚至还不如清河五彩城地下的生煎摊。&lt;/p&gt;
&lt;p&gt;盛名之下其实难副，下次来魔都可以着重考察下那些不太出名的小店。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 23 Jun 2019 22:18:06 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2019-06-23:/2019/06/take-shanghai-ferry-service/</guid><category>travel</category><category>shanghai</category><category>ship</category><category>ferry</category><category>pictures</category><category>waitan</category><category>pudong</category></item><item><title>再访中国人民抗日战争纪念馆</title><link>https://www.gfrog.net/2018/07/visit-kangri-zhanzheng-jinianguan-again/</link><description>&lt;p&gt;又到每年7月7日。
一直想去南京参观大屠杀纪念馆，但是都抽不出时间，
今年还是去抗战纪念馆转转吧。&lt;/p&gt;
&lt;p&gt;还是按照去年的套路，在南边的停车场停车，然后从东门顺治门进城。&lt;/p&gt;
&lt;p&gt;&lt;img alt="顺治门" src="https://lh3.googleusercontent.com/zlPfEjBnH1PHuwE066Co3ST_PSBsUdA8POMkH_KDZ9XJV8twzNgINT4HRN6rpmLTnkPkG6YEx6MN8D7lyQg6QPhThgZXejpfiJYRDFXgFwEGh9XSLF9P0yXJpKJYVLyzOuHYTwZGnt4=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;今年时间比较充裕，所以可以在街上逛逛，例如可以瞄一眼去年没注意的县衙。&lt;/p&gt;
&lt;p&gt;&lt;img alt="县衙" src="https://lh3.googleusercontent.com/Z17gPOKMmWlKTDEE_-oA7K2sk4ja2yFjWZqBHuoe3YQg3KuDyD8s0XkAVVL0-sM6xxRtYjeRAU_ULby40Fqqh_WvCZn3q3PzYqA2uABnh05fGUMoXDRIB6pkhkPR8o2cjr3jjMiTdrg=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;因为去年已经参观过一次了，所以今年的关注重点就变成了一些有趣的小东西。
例如这枚日军的奖章。&lt;/p&gt;
&lt;p&gt;&lt;img alt="奖章" src="https://lh3.googleusercontent.com/j0TUuvsAPhKDsXzq0uSmqS1mbxbk3sphnl_uKCgj1GN8xZRq_ne86Q2Mm4vg0vtkcyEJ6adAXvhn_bfIVexeWW-SRgBnGjlrvc7s_bfDTj4l77wiHhP5uzdOL8F9MypNXwFTtKK-9-c=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;一二八事变时的宣传画报&lt;/p&gt;
&lt;p&gt;&lt;img alt="画报" src="https://lh3.googleusercontent.com/4cmAXR4qM4rVdnXftsgSAcftJTdi_ufE8c1_jnCx0kG_vw_fvHgweg6_mcL0dPVneTkxQJF9lbUTizG8j87RMBhk27549rebAUThPzWzz6NiNKNnniofg2F5uIBI4u8imnNk0lQx6RI=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;日本方面一二八事变的宣传册。&lt;/p&gt;
&lt;p&gt;&lt;img alt="宣传册" src="https://lh3.googleusercontent.com/qnJODKlbYu-Jg-FB95hcmyRC-OsJMJNjdAzwCuO6ukzfyf-3XXktBIyCciMjBqZgobMii0ozIKuksmxBRVDYCis3aRgA2lg8kUugrG4qfzkscxCTsxh22CiJzMmcrYoa-p5cbDcu2fI=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="宣传册" src="https://lh3.googleusercontent.com/UpdKDtzXlZtt7UWRjwCutop_c3BdVZM9QG5nvgTKlqi248KtU2I2ns_0PsNyg5x87nqEPRFhEBF4kB8-TNjYLnWjvXMczfbF1SktnL1S2H6NuGKcspl8LFq-VIfOsyMGiVaUKBpHdNA=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;满洲国在溥仪身上是个大污点，
但是不知道当时满族皇室意识中是不是没有认为中原地区是他们自己的国家领土。&lt;/p&gt;
&lt;p&gt;&lt;img alt="满洲国" src="https://lh3.googleusercontent.com/0G6ZFz57UFEzRAtcY1L5omkixR_wX4Z99oPUNzbA_tU50Xgjrsj2yVe1LgvwLBwIXORSlxe3qM-6RtcbZDY1PoyFFUCAcfaeetg601QkIShPI0DCr34fe__FE5gXRyFIowghKr4Jpsc=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;长城抗战。&lt;/p&gt;
&lt;p&gt;&lt;img alt="长城抗战" src="https://lh3.googleusercontent.com/uidcsT4sovlU4bNMqIJ8weWhm5tV1BjuEkFlv5MA0Nnm23amp7lrncUJRHqD2NH2fkldEIDBuz-_bOMRe7GnTwerc9EmwCvyahl8QfSzePQdO3hrfvwic1j3tS-Zp5qqHQaolcvAUKg=w1050-h1400-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://zh.wikipedia.org/zh-hans/%E7%99%BE%E7%81%B5%E5%BA%99%E6%88%98%E5%BD%B9"&gt;百灵庙战斗&lt;/a&gt;
，似乎之前听过这个名字，但是没想到其实是傅作义的绥军打蒙古伪军。&lt;/p&gt;
&lt;p&gt;&lt;img alt="百灵庙" src="https://lh3.googleusercontent.com/ocr52zHDQhD8veIOfni6eyAa80by8GvFGy_1rrDuMYJiMn23DGPZONqV_1sfS8dDLySC739IehIb-zIRQQKA4UnHLpZMgu0RybTNQK0eE0GBZjc1-3L7H4qsXURUbi5b6P3knIE5zCE=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;鬼子的宣传画难看到爆炸。&lt;/p&gt;
&lt;p&gt;&lt;img alt="宣传画" src="https://lh3.googleusercontent.com/Sjm4xmSi9dm4SQVqZoEm_owgLEtOc6Lqr9SbuGfAg04aREYYdwm_V7SIJ89jTwxDtylclZoxA7P3X-5nva0iNgnnDSPZuQMBoAv8eUmjBmcIdQXlmdvWEORmtuF_P2FkXqB19AMTa4I=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;卢沟桥事变的剪报册。&lt;/p&gt;
&lt;p&gt;&lt;img alt="剪报册" src="https://lh3.googleusercontent.com/gBGZimYyETHgJLuZvBFMH20I6UMwPubq7xkWLYDTrRrAd8v8aS0ZI91ufzT80EE_i_vAy8zEBiSf5lbM8D1XijuEYrRUHZLIL5TLWC-OHntjcfNXMeS09O7f9T21hQ63DCxRT4BlbYc=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;卢沟桥事件画刊。&lt;/p&gt;
&lt;p&gt;&lt;img alt="画册" src="https://lh3.googleusercontent.com/T_LD42XyVj84Bapjkn67GeLEsQCP7Uvlr0FFbaaJ8Kl3XNSx5kSph_hKZJPyvf86rVzBnMdIMF8V7ycME-eX-swrGi3ltfBVZp7vY5VtTDzCOyVFYfB7FDtjTq42JOqZsMZODiQWAjY=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;抗战开始时的战区划分，结果后来都成了沦陷区。&lt;/p&gt;
&lt;p&gt;&lt;img alt="战区" src="https://lh3.googleusercontent.com/joPHdNw9MlbcIdrmZ0v-LWB8mHBc4PLMw-EBVkjo9nGLMOWYffFIur2hm1yk2op_rg-R7vVuR52axRK-0CUzvKkDpPeenFHMQ8q-Q68SSHr9YnEuUHVVImcYLo3P6QgukFWguWp-u0Y=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;八路军臂章和军帽。&lt;/p&gt;
&lt;p&gt;&lt;img alt="臂章" src="https://lh3.googleusercontent.com/BcQoje1tdqMp87kpgAA8xl_62y31jQY-q3UIW41NzhD7aedUNc92ZOIKSeW7mtTd4LMFRZDEG0Wzlb6QHLxjfwsnFz-dkQUszBiQOsVvAfa9ttFNsrj7cpsreV8-Gtjq2SnjChfdObQ=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;新四军，N4A，看着还挺洋气。&lt;/p&gt;
&lt;p&gt;&lt;img alt="新四军" src="https://lh3.googleusercontent.com/y-BW_E_c_8cHwG2MDGQSIrxgTlmP6HIxPnjHG7dF9amaRJWFhBQIMtnRmdy89zzQJRF5jKiYn8hOAo-sNDy7ojPDrD-MdiLX-i5gUjs68ordhL8Jud2H2rieJJThEo15FKCUXmyjY-s=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mod.gov.cn/education/2018-07/06/content_4818612_2.htm"&gt;朱德青年队&lt;/a&gt;
，这个词儿第一次见，据说是共青团的前身。&lt;/p&gt;
&lt;p&gt;&lt;img alt="青年队" src="https://lh3.googleusercontent.com/YPLbUQmIpzMU3E_KzHswK2S9AdRLilUtKzTXHdcKqoGgC9fqPBJMEfrVOBGvaWotqo8REFqZSZsjuLZMmxMBwoB_wCLa6Q849_e7s4P-kZwana_pbAyu3J2i4vMvsr3xe-oBXB7O_KU=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;抗战的宣传画刊看着真是惨，这张图看着就像现在的非洲难民。&lt;/p&gt;
&lt;p&gt;&lt;img alt="抗战画刊" src="https://lh3.googleusercontent.com/gXg9BkDZ_5397VpXDJB5SA3tAZBRxr7mVAk414QmOofzM5CNal3di41PWri-XvSpup8kIV6hFuXWphj23bQ1JmHDHl_WC7tlLTk2ZTHkOYK7A8wbbkqgCwQEC5vZQ_SM9FP1rbIE8RQ=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;西南联大校徽。&lt;/p&gt;
&lt;p&gt;&lt;img alt="联大" src="https://lh3.googleusercontent.com/Z96L13f9y0lRB0JhChnIWcR4SelaQOEFV57L9yslnFFju5hVTTtNTVfyk34bSiNbucJlBx2LcEDd3Sn_woe6TiwMGt0T_u0zusk90WmJeANVbxlaexIJK3IvCb8sd6txJW3-_EtD6Rg=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;抗战画报&lt;/p&gt;
&lt;p&gt;&lt;img alt="抗战画报" src="https://lh3.googleusercontent.com/oOQoMtOPTe-PdRr1WfbK8R3AWqURloAnXEf9qBJGKTM3Qw7EuJAYP-ELwaC0jgZM4eR0P2NfyZy8WLfJdjhliQAhNgO9f6JZij-OCp1ycTswXTf2vi167s7O4JZZPaTsAMVvG5b7JTY=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;磨烂了的国军军帽。&lt;/p&gt;
&lt;p&gt;&lt;img alt="军帽" src="https://lh3.googleusercontent.com/4tQqPr4LtSxUn6KWKue2wvLupNp8ulUonw-AbLYtQjYL227Qf1X8lDZ80swEdCA5Yucg5LPW7PMhBxxHA1ReUoxKmckfjvll_0jnAyB5rUV95PduUmf6gs_VS6yALwWBwC5kLls3GC8=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;“亲爱精诚”，黄埔军校校训。
据说
&lt;a href="https://zh.wikipedia.org/zh-hans/親愛精誠"&gt;“精”字少一点，“爱”字多一点，隐喻“少一点精明，多一点爱”&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="亲爱精诚" src="https://lh3.googleusercontent.com/4SQXtuT6YLY3dexgd8y9mzIpcPL9SiTeSXhcYokv45tCdbvlHASf9ZyF7-arKe3cuwwmokHMWKwFLBNfXY1rTBw2K_xH3XJNI-LNU55yKHcpAQC_y7CYCFhwd7SVxCyQvfMNKVevV6E=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;今年发现了展馆里的第五种头盔：滇军头盔。
青蛙怀疑这个头盔就是法式头盔，因为有资料说
&lt;a href="http://mz.ynlib.cn:1309/djcz/ShowArticle.asp?ArticleID=174"&gt;滇军参与抗战的部队基本都是法械师&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="滇军头盔" src="https://lh3.googleusercontent.com/1j4iP8TIDei0QmCe17YvFm5IjIKjp57taozAxCGH_qUxv-g7t7cKbq7ZmzmlKe4WUrEH7qlO4eMtm_uMC14YblturhpAJzyim2C_B0tX-X2Pf6Efbr5dp9oallNoltsJYjVNmcRD2Rg=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;每次路过马克沁都想拍一下。 而且今年青蛙确认过了，这架马克沁确实是德国货。
因为去年有键盘党教育青蛙马克沁是英国人发明的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="马克沁" src="https://lh3.googleusercontent.com/rclb58dWZaxUb68AaV_EUHyrp8TlLl_agBQ9CrttFW-O-syTs0yrvU-BNWN0Pa8wqpu-C4KvX10LrbCoU6YQ7xJjH33w_TDWxBIJ2EuWXuUN2shvZKXs07ida9fnez-3QnyHmziXFss=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://zh.wikipedia.org/zh-hans/霧社事件"&gt;雾社事件&lt;/a&gt;
实记。电影
&lt;a href="https://zh.wikipedia.org/wiki/賽德克·巴萊"&gt;賽德克·巴萊&lt;/a&gt;
就是从这个事件改编来的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="雾社事件实记" src="https://lh3.googleusercontent.com/_aztsYw1bamo_TmUG6CwclKchTHmL8Qt-srjCYlQ8IXffsc7tG7ouIDK7ppPTuoktxXdAo-N0zkexMXw3_5PtzcSxTRbno3bmGtF6WYuonHs-Fs527_KGzuxkZyTz5gxRUnCPwgXSBU=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;台湾革命运动。
抗战期间台湾应该还有共产主义者活动，后来老蒋搞白色恐怖大概都禁绝了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="台湾革命运动" src="https://lh3.googleusercontent.com/hhSrejugb40osW0TXqbYHVmnXtBJ9IWrGTC8MHBmupNVB1GG3mdXZGjnvyNcPB6cVkl2Y80Q5bDPPlv0m5OJzKXELmYOgCkpZb6CJsx6vOCCVnVyFRZjle92T2K8FnYyk0u3Fp-MwKM=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;日军在沈阳建的战俘营，青蛙第一次直到沈阳竟然曾经还有
&lt;a href="https://zh.wikipedia.org/zh-hans/%E6%B2%88%E9%98%B3%E4%BA%8C%E6%88%98%E7%9B%9F%E5%86%9B%E6%88%98%E4%BF%98%E8%90%A5%E6%97%A7%E5%9D%80"&gt;日军的战俘营&lt;/a&gt;。
遗址地址在沈阳沈海桥附近，有时间可以去盛京参观一下。&lt;/p&gt;
&lt;p&gt;&lt;img alt="沈阳二战盟军战俘营旧址" src="https://lh3.googleusercontent.com/sed1Hv_tNS0qsD-VsfIPeJyxtgcLjzPfbAMiitebIPrPEMLsVhbSqNlhBcdVxoH3PDOp5ujzGi-yBdnXA6M5bkAS1rETu8CpxXBf5-2LF1U4EHZYQoHIbsQaKQOnqdnDRTwFLIBrJLo=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="mapbox"&gt;
    &lt;iframe width="640" height="480"
      frameborder="0" style="border:0;"
      src="https://www.google.com/maps/embed/v1/place?key=AIzaSyB63YDb3SVNe84KeNXPh5zIjJ_uwr5vsII&amp;q=沈阳二战盟军战俘营旧址&amp;maptype=roadmap"&gt;
    &lt;/iframe&gt;
&lt;/span&gt;
        &lt;/p&gt;
&lt;p&gt;另一个每次看到都想拍的就是南京大屠杀这个展板，看到就很难受。&lt;/p&gt;
&lt;p&gt;&lt;img alt="南京大屠杀" src="https://lh3.googleusercontent.com/h-TBGgf9yrSTRcEgfNeLWwRU3afxGLqyWrqvlLIrpJyflull_GfSpMMqvEl3EDQCNoO340WXXDxLOQokA6iMB_NIUu2_a6-bxw1SZ5nXsa5G-wGeLNea1GL2SdrxY3qxb7uP80yFY34=w1050-h1400-no"&gt;&lt;/p&gt;
&lt;p&gt;中国人殉难者名簿。&lt;/p&gt;
&lt;p&gt;&lt;img alt="中国人殉难者名簿" src="https://lh3.googleusercontent.com/V1AkpD_cR5SnPBaf8_l6o9xd3FoEi-qIoXBMlNN1pIgI8s0COC9SEfjmhIP8F2Rnxqac7HZsqYE4IQnA20Wz5uI1QezCmMxTTY1paK03DzKuVm7o7yuAtoaaJcXYMc_hAIs-pR2b4m4=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;日本人梦中的大东亚共荣圈，连印度都想搞进去了，梦做的真大。&lt;/p&gt;
&lt;p&gt;&lt;img alt="大东亚共荣圈" src="https://lh3.googleusercontent.com/W2mnbru340uDdjTg-sVuJ2Ik-GJzm_BoHtc4oP-EtOaUaCLL2ibRZIcSXky0aAB-JsO2g1qFO2NkhPtnu7IdybLhDc2uByGs-AQPGF1_k1AntCFmeEcdC2kNxy-TdydpnvTaR93AR1M=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;历史写真。左边那个写的“广东更生二周年庆祝大会”，昭和15年（1940年）。&lt;/p&gt;
&lt;p&gt;&lt;img alt="历史写真" src="https://lh3.googleusercontent.com/jD0_0vPAIGadVJdi4zdAq1uQyjdS5ajY7NZhadKLwic9rhPgeYhWmtuaqvsKf6FJOQZ3RW5ND24T0MwUkCQrUXuh2hKAvc2GdkRC57vKtBgE1nokMegRTFppMz4CFJIfnhHtdaiVqZs=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;日本在台湾发行的战争画报，鼓动台湾人参加侵略战争。&lt;/p&gt;
&lt;p&gt;&lt;img alt="战争画报" src="https://lh3.googleusercontent.com/QEH8PrbfYv940bcOJ2pSCn1psJ_C6zCSsWAtgF_919i1GgyJDfPNRaw96uEcWA2IZryf-_0Q3gBb9DalTNQa89hNm2SnX-YqOFnV6RJxe2_PJItzQ0wOBB4sYMNDpY9rdQMF8zuU_6o=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;参观结束，出来转了一圈门口的小书店。
除了摆满的官宣书籍，有一本小册子很好玩。
青蛙以为是小人书，结果拿起来一看是电影截图……&lt;/p&gt;
&lt;p&gt;&lt;img alt="我的战争" src="https://lh3.googleusercontent.com/hhjbWAGnpMaB7LIBrTpUf7FgmZKTEXLTtx-qrioKaXyw_LBqIVm3F7MlbRbXvBnBTyVSCmtjuFR46PtENPe00Fok9Yv80EAvwu5evVDMF96tcTaaEjfhz_z6A2RuY0yFaUFqv-2QfyA=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="掏出手榴弹" src="https://lh3.googleusercontent.com/Uuxh_QDAt2ml_lZOd38OJIbGgmHW0G71FKeWhCpJVE8-aHOntf3wj7ZrLBJQMQnfoeQRFCXFpTY_IjubxvQfYtKhxY-t4tXHnDekmRwiaZWsB6kRgCzIkljPhZkFBV1Xk2CnBUTdWpY=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;去年来这边的时候没注意对面的小广场，似乎里面有个小雕塑。
不过今年就不过去看啦，等明年再来参观。
两边还写着标语：&lt;/p&gt;
&lt;p&gt;牢记历史，珍爱和平&lt;/p&gt;
&lt;p&gt;勿忘国耻，圆梦中华&lt;/p&gt;
&lt;p&gt;翻译过来：别惹事，撸起袖子加油干。&lt;/p&gt;
&lt;p&gt;&lt;img alt="小广场" src="https://lh3.googleusercontent.com/Acxv_JIdgXPIyujcb5np7Uiwe7Upu8yJ1GUAHTu9wNqFRoMygUMTauSeFZrHTBhw3a0cxYQD_OYOAIkVJs0aPLtzxse79zSP91-f0AgI8RLXzRgnYwE2EVdMHd8mTOstnURltqTUqv0=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;看完抗日纪念馆，接着再来看看卢沟桥上的狮子。&lt;/p&gt;
&lt;p&gt;&lt;img alt="狮子" src="https://lh3.googleusercontent.com/e1pPg8il7Zs4NwsKI0cmHbWBZDyeYBu1ODUZF8uKSA-TMN1c5aIEEP-cGDHC7dwgryGhRMM0tVn6p-l0C8NzcEnzxciRqB3m-glnEJAEFY8sneSiMVWkCvs3nC459F57mXS-ZzQgM30=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;站在桥上想想一下马可波罗进城的时候能看到啥。&lt;/p&gt;
&lt;p&gt;&lt;img alt="桥" src="https://lh3.googleusercontent.com/-JUizGDVJH68okAuw2kCus5q3gguhtZ5vaeDKqMTvUvu1c8zUnAvRync_ijELKyUmslf8xQUl6yAvucvKM514n9rbWsGHb-vEYGBbfZApFqehaRnA1GjMsTq-VEfRjVXUwUgvit75Ig=s1050-no"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 01 Jul 2018 22:25:57 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2018-07-01:/2018/07/visit-kangri-zhanzheng-jinianguan-again/</guid><category>museum</category><category>Chinese</category><category>against</category><category>Japanese</category><category>aggression</category><category>war</category></item><item><title>参观中国人民抗日战争纪念馆</title><link>https://www.gfrog.net/2017/07/visit-kangri-zhanzheng-jinianguan/</link><description>&lt;p&gt;&lt;em&gt;（为什么link要用拼音呢？因为英语名字太长啦）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;7月7日，卢沟桥事变纪念日。事变的发生地就在帝都西南角的宛平县城。
目前宛平县城城墙还在，里面还有抗日战争纪念馆，所以赶这个特别的日子去抗战纪念馆看看吧。&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 10:25:57&lt;/em&gt; 下车就看到一个弹坑。 #看图儿猜地儿
&lt;a href="https://www.instagram.com/p/BWRMz8nDJb5JruQHESu9hM-gQ-XZc4AzdFqOCU0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/dfc0ac039c56258e42fcbd1157a032d9/5DC4F0DB/t51.2885-15/e35/19933242_140475439864077_8405238109075144704_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;宛平城的东门，顺治门。
明朝人修的城门，起名叫顺治，
不知道是不是应了后来清朝顺治皇帝进北京。&lt;/p&gt;
&lt;p&gt;&lt;img alt="顺治门" src="https://lh3.googleusercontent.com/RZDzWMDfulBINV4AD3XPZ0CSPBb7s-GjiAFIvwnwjZGuQqFr0CR1RFoJyamLNCAEbh6DEEMCrbdi7ChkBNBJp5Wj29fha-oe01d7Y_8SefAdjQqF0KOFprUEohX6E8mQi6nfpy2amgo=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="顺治门" src="https://lh3.googleusercontent.com/pVayL6bB5rgbC8-fcoMSqsDYfVjnuDzcb9KVkp47C6bhZbRTYTAWAlmOOUDsOWN6QV4mh61GIRg9bcVm-gWM53Vf8C_jWdAY3xRn-NBiN7SNz9FeyMev_auJWgO2yPM-tDvp2EkVc7w=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;牌匾上文字内容：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://zh.wikipedia.org/zh-hans/%E5%AE%9B%E5%B9%B3%E5%9F%8E"&gt;宛平城&lt;/a&gt;
是我国华北地区唯一保存完整的两开门卫城，
明王朝为防御李自成进京，命御马监太监武俊于
公元1638年-公元1640年主持修建此城，称“拱极城”。
1928年12月，宛平县衙迁入城内，改称宛平城，
城分东西两座城门，东为“顺治门”，西为“永昌门”（清代改为“威严门”），
城东西长640米，南北宽320米，城池总面积约20公顷。&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 14:26:59&lt;/em&gt; 想了很多年的卢沟桥，终于还是找机会来看了。抗战纪念馆免费参观，然而完全不出意外的基本没提正面战场。卢沟桥门票20，适合好天气上去数狮子，夏天到桥上要被晒成人干了。
&lt;a href="https://www.instagram.com/p/BWRoZSRjwx8-lUMUgvQZiaSBANAlxg1WyJsbnE0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;纪念馆正门，没想到来参观的人还真多。 然而进去了才发现其实很多人是过来蹭空调的😂。&lt;/p&gt;
&lt;p&gt;&lt;img alt="纪念馆正门" src="https://scontent-lax3-2.cdninstagram.com/vp/a98a42e7a4f28bbb8dfd25499c21354c/5DA07646/t51.2885-15/e35/19761863_933134423505770_1491226543685369856_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="卢沟桥" src="https://scontent-lax3-2.cdninstagram.com/vp/6d6d43e87a11d7a546d851e52e77b54c/5DAF89B4/t51.2885-15/e35/19764334_325678484537720_7598875892084899840_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;抗战纪念馆平面图，还给湾湾抗战设置了一个专门的展厅。&lt;/p&gt;
&lt;p&gt;&lt;img alt="平面图" src="https://lh3.googleusercontent.com/Dd8TCFIU_rv0sH-cYapPnUgxGzuNMNuN087BDsLHvmPWECHsxfnVHIdpVgjD22_YmB_mrzdUaj1DmSvUh88thUhohzUwtDqmFHsCsibz0Qp7ZcfFKXnPcPwnsf4W-WBoVq6Ewrk3hJc=s1896-no"&gt;&lt;/p&gt;
&lt;p&gt;1930年代的宛平城。
跟当今的宛平城地貌比较一下，
永定河下面的支流被填死，河里水也少了特别多。
城北的铁路线走向依旧。&lt;/p&gt;
&lt;p&gt;&lt;img alt="宛平城航拍" src="https://lh3.googleusercontent.com/ZPLzoMUaIinTPAuXnXiL4xfIVzQzxp68mj6VfichdUtEDYAl_TJKOHxI2tC61T4Xgpc0I9AkIvVQ8gmNJzhw05US3cK4ehAVGq4AyXFwG5hjnBgct9ovRfYyr9neOZnHoQS5EO8NthM=s1896-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="mapbox"&gt;
    &lt;iframe width="640" height="480"
      frameborder="0" style="border:0;"
      src="https://www.google.com/maps/embed/v1/place?key=AIzaSyB63YDb3SVNe84KeNXPh5zIjJ_uwr5vsII&amp;q=39.849036,+116.212917&amp;maptype=satellite"&gt;
    &lt;/iframe&gt;
&lt;/span&gt;
        &lt;/p&gt;
&lt;p&gt;炮击过的顺治门&lt;/p&gt;
&lt;p&gt;&lt;img alt="炮击过的顺治门" src="https://lh3.googleusercontent.com/KFSUAZcQCf8yQ8Zo2DNBf8u-jV7iM8cLybgIpxh-C8dhD_GGM5a8GQTWRQ3TmUlZ2z-OFGHbR4RPRYfCc9BskPySxWWdyPCLL671JWQQpKCXkQPq3yfnx-j2acCr2Y4ETLwdo5AyTww=s1896-no"&gt;&lt;/p&gt;
&lt;p&gt;民国名枪： 汉阳造、中正式、汤姆逊、捷克式。&lt;/p&gt;
&lt;p&gt;&lt;img alt="民国名枪" src="https://lh3.googleusercontent.com/RBvQ1t7kcUJJrwsDjL29rsvgrKQZUAmx_AdIBwkCA1rwymtfQLVPN1UBmiGYQjHKkwnSS5AjhJYk0aMJlPlCvb00y_G1G_w7_hFFn0xcTi7YlBCGIHC4aKMSaMu9Dqm1ZSDHAeE_q_o=s1896-no"&gt;&lt;/p&gt;
&lt;p&gt;入城布告。当时没注意，现在回头看这张图片好奇怪，感觉布告是P上去的，文字特别锐利，贴布告的柱子却模模糊糊，大概不是锐化过就是两张图片合成了一张。&lt;/p&gt;
&lt;p&gt;&lt;img alt="入城布告" src="https://lh3.googleusercontent.com/9P_lGTdIoxHn9K19nmtoIcoE5s_NNjOzBvEaaC7Lrh5my-XoVj9uXck72XWa0P4uhdqCAKqB15vKXtL-X9ajbDz5oJMKXSVwbI7Hm3TxE3EzXp9YOjORT8V3kqveO04oUbnMuILQEeU=s1896-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 22:20:51&lt;/em&gt; 小日本这个钻牛角尖的工夫也是没谁了，这地图画的有够详细。另一方面是这需要多少间谍能把地形地貌摸的犹如自己家。
&lt;a href="https://www.instagram.com/p/BWSen_AjO8xkXcRcUR4tcNBYJ1nHCWhVPZwlB40/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="军用地图" src="https://scontent-lax3-2.cdninstagram.com/vp/31edae91240026a6ca42eea63a1ab928/5DB2B679/t51.2885-15/e35/19933329_104074833535271_945989181421649920_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="军用地图" src="https://scontent-lax3-2.cdninstagram.com/vp/6ab1f979eaa21bbb95e9c16549860690/5DB29912/t51.2885-15/e35/19764449_1279824508794252_1673612420104323072_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 22:15:02&lt;/em&gt; 新版代父从军。
&lt;a href="https://www.instagram.com/p/BWSd9XwDI5OC-fPLTnOmLhaDPQ-mzfOO3omolA0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bbs.tiexue.net/post_12551171_1.html"&gt;川军“死”字旗&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;国难当头，日寇狰狞。&lt;br /&gt;
国家兴亡，匹夫有分。&lt;br /&gt;
本欲服役，奈过年龄。&lt;br /&gt;
幸吾有子，自觉请缨。&lt;br /&gt;
赐旗一面，时刻随身。&lt;br /&gt;
伤时拭血，死后裹身。&lt;br /&gt;
勇往直前，勿忘本分！&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/97b9922b1042e65e5babc22d3ad37fce/5DAE68E0/t51.2885-15/e35/19764791_1653102354723099_2631569755529543680_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;看起来是个迫击炮小组，竟然没几个人背枪。&lt;/p&gt;
&lt;p&gt;&lt;img alt="迫击炮小组" src="https://lh3.googleusercontent.com/sClsRtmBuVyNRElvO9sTgUdzf6kFdnkLc5mxd4gcSYeUF8Os_x_UVJaf-vtY3O9Qg3CGCz0t364sFfpdVYKfHR1j9dhbCs92nHxqapFgc5AsuS44rxCWiwGWdgnhdlVT0IxCdisf6vM=s1896-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 16:14:25&lt;/em&gt; 抗战时竟然能找到四种钢盔：德式、英式、日式、美式。更多的情况是……没钢盔用。
&lt;a href="https://www.instagram.com/p/BWR0sKSj9eAcMyJiLWVgIKynNFy-f4fA6BCP7c0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/6116e76266b446d2d40f214490e1787c/5DA67BA9/t51.2885-15/e35/19761898_270540493351047_4976385517030473728_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/641da0dd4a9d897b3bbb1b18b8a115fa/5DA70293/t51.2885-15/e35/19761970_1428933153855528_6626363006982815744_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/8107f574884a0e12dda43a18a6b61a9c/5DA87D38/t51.2885-15/e35/19932889_1796794343966262_3955810199834460160_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 22:23:20&lt;/em&gt; 第一次见马克沁真家伙，原来这货找个垫脚的地方就是高射机枪了，果然德国工艺。
&lt;a href="https://www.instagram.com/p/BWSe6PGjrXyFLumRzG6-vjcmgysRFLrlyCOKUQ0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/c4791a22fca49a89608493e876527a96/5DA2B3C6/t51.2885-15/e35/19955007_123379164936158_8738197627562098688_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/f56c343170876035c75c0006d93c7663/5DC4F97A/t51.2885-15/e35/19764522_1401011226646976_2151409548756254720_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;这门炮的介绍是“八路军在黄土岭战斗中击毙阿部规秀的迫击炮“，
然而这就很有趣了，根据
&lt;a href="https://zh.wikipedia.org/zh-hans/%E9%98%BF%E9%83%A8%E8%A7%84%E7%A7%80"&gt;维基百科&lt;/a&gt;
介绍，击毙这个阿部的炮保存在军博（下面图中第二门炮）。
这俩惯设展之前能不能先串好词😂。&lt;/p&gt;
&lt;p&gt;&lt;img alt="迫击炮" src="https://lh3.googleusercontent.com/9f1ZYv84a_Fqx2P0MAGH6rgRwjGMyioueZYcYddi9dvb9I93jLsxfCZ5euyrANcpiPQ_W8_PccC3k4__TrdurGw7sQ8ZbuVmHd5yy7C9XngmQI2DMvXjDfEweaCxv9aFtctrpFwc8FM=s1896-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="迫击炮" src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/%E9%BB%84%E5%9C%9F%E5%B2%AD%E6%88%98%E6%96%97%E8%BF%AB%E5%87%BB%E7%82%AE.jpg/800px-%E9%BB%84%E5%9C%9F%E5%B2%AD%E6%88%98%E6%96%97%E8%BF%AB%E5%87%BB%E7%82%AE.jpg"&gt;&lt;/p&gt;
&lt;p&gt;（本图片来自&lt;a href="https://zh.wikipedia.org/wiki/File:%E9%BB%84%E5%9C%9F%E5%B2%AD%E6%88%98%E6%96%97%E8%BF%AB%E5%87%BB%E7%82%AE.jpg"&gt;维基百科&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;每次看到南京大屠杀的内容都很难受。
有时间的话应该专门去南京看一次大屠杀纪念馆。&lt;/p&gt;
&lt;p&gt;&lt;img alt="南京大屠杀" src="https://lh3.googleusercontent.com/ZL4km62pTYq--CuyUc5oQEYGX4WLr9OGDaYK1nJHJuXzUquQKxheUqqppB5QHLCE2AoZPBsf74eUQFHvXS73JgZ9lV8REs8y0PMMUNL7BvY9sEBCWPA1-FqEE2bgI4KGkB0ceIRce_A=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 22:41:05&lt;/em&gt; 只贴图不评论。
&lt;a href="https://www.instagram.com/p/BWSg8LJDosQR8QyGYzGd4ILKfRXFUmYxihZ_tk0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/717846cec49cded22023ff862b0a275d/5DBF291D/t51.2885-15/e35/19765296_184499858752617_8236463014081986560_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/75e9b635a926652fd9600ee935e52a3c/5DA1D65A/t51.2885-15/e35/19931878_293507931115217_7808974619779530752_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;沦陷区使用的军票，没有编号，完全就是拿来骗老百姓的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="军票" src="https://lh3.googleusercontent.com/HNcNULgaGn7HC1zeoQDpo0SDnrbVULfssPrkfm5Ju8dtv0uQAwDeN8mUZBFrMVAExYipbxxjH0N8pvcvSic7aRHPo6_IamQZyuQ05EhpswKbhlaIBwPwx2B7Z4Z6EaZvZWwXEnD90s0=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;各种型号的毒气炮弹和炸弹。&lt;/p&gt;
&lt;p&gt;&lt;img alt="毒气弹" src="https://lh3.googleusercontent.com/Cli8disB_Ne6SQ8G0D9Um9kMItKFif2RmV8J5B9aK3rBUrbWMae1TdPGCg0s5IrQfvMZg6DVIjt4R_zwsAjWYNZiRu_oIUFje2HVhGSuYDlnIfLnMdh_qPHki5xQNVmzdnR8k9HXS7A=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;韩国政府在中国流亡了20多年，1937年抗战开始以后又开始在中国各地流亡，
难道在不同地方看到过好多次韩国流亡政府遗址。&lt;/p&gt;
&lt;p&gt;&lt;img alt="韩国流亡政府" src="https://lh3.googleusercontent.com/IQ2OIv-_lDKRDiOYm5kGkqvPAchzpq7Gaxg5BhaX1BFLx-HZPiH5HVr9WZeV-n8FSXRWy9GbOIzxFv-B2o-DFkGA2wFno_Ng0EJnRnqwrkeI8hkMuIu5A2QmhBSVQksVMJya5DM8NF8=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 22:35:01&lt;/em&gt; 战斗民族果然厉害，空中手术刀原来不是从su-27开始的。
&lt;a href="https://www.instagram.com/p/BWSgPusjVT-hQnneJ4lMO9GqV_GXVC3WCjOm9Y0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/2a0b6de8560f78ce596a35a7b9a386c8/5DC2E8E9/t51.2885-15/e35/19764562_1425432377550601_7148362989857406976_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 11:55:38&lt;/em&gt; We can't even scratch them. 😂
&lt;a href="https://www.instagram.com/p/BWRXEwGDvlyl4F-pOXT0gKdH0zLQqJgTfC5rBA0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;尾翼稳定脱穿，这种形态大概是打到了什么地方跳蛋了。
然而并不能看出来这枚穿甲弹是什么东西打出来的，抗战的时候有能发射这种穿甲弹的武器？&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/094453b1886d4571afa74793a20d8dc9/5DB36E71/t51.2885-15/e35/19955400_119552491988627_528529552935223296_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 22:44:27&lt;/em&gt; 这机枪骄傲了😂
&lt;a href="https://www.instagram.com/p/BWShU3DjlA0AsZGAUrtRppa1_IPvbsBoJYn-V80/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/e83b19851bab779494dce8563405b95e/5DBB221D/t51.2885-15/e35/19764789_151327812102982_8041508950958407680_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;两颗原子弹一丢，中国人民胜利了。
一个落后的农业国被一个工业国欺负了14年，然而靠着人多挺住了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="胜利" src="https://lh3.googleusercontent.com/VDJN5vhXgZMwcWMp0MPf-jPp6lgZDg4qhG5z8ZCh0l9FNI2NwbRPNf2c4eMlbvJpPRfXkby6sO1jSMnTNYSzY7TuUufF07KjskPhDTmBKAfZukhQZmWNPmf2cKTI_0Qmy-2tSPfRtbs=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 22:46:25&lt;/em&gt; 中国贡献了一波最佳助攻以后，小伙伴们点了一波6666。
&lt;a href="https://www.instagram.com/p/BWShjO6jPWaZ6vtF7K0cgUsWJA9zS33vX7GbsI0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;八国联军在中国获得的特殊待遇，直到二战之后才被废除。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/c9433b9f08d5b2dc12b971572d895016/5DB29C2A/t51.2885-15/e35/19762089_558821034508537_7210924780571066368_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;快到出口的位置有一段玻璃走廊，下面放的都是日军投降的时候收缴的武器和物资。&lt;/p&gt;
&lt;p&gt;&lt;img alt="武器" src="https://lh3.googleusercontent.com/Pu__BX8zdWUsoGde7BnIpChedfZME-b84bj1RcCLBbf2xUEjRlckojSYZpfgSsApypailINi17mksp-Eoa9c07cPKtry41vXHzYOZqvqNIZNdqFsCa50zG5BMXHoV4TElSMHSJqkKAw=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="旗" src="https://lh3.googleusercontent.com/Ing8Jxop81XJen6XjAX_D00selLlxyekmQgov7FEd2LHzi8eL4ZrFDuGIAezNjsC1rhFq6xMiqzLyGcKU1G720uRpoNq_DAue3ovgP44-cklSxXyIeO6MjZej7Z6p7YvGNCWdPp5p8k=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 22:52:11&lt;/em&gt; 结束，竟然没把青天白日旗遮上，不是tg风格啊。
&lt;a href="https://www.instagram.com/p/BWSiNfujy-1EcMztSw-yQlejeTIEgm-TmwqiQg0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/05f26d372bde758273fe176a6a6dc7eb/5DB9D511/t51.2885-15/e35/19931639_1317497675035538_4005992846829027328_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;纪念馆参观结束，趁着还有时间，走到卢沟桥那边转转。&lt;/p&gt;
&lt;p&gt;路上遇到的共享单车专用停车区。丰台的城市规划明显比北边海淀和昌平好得多。&lt;/p&gt;
&lt;p&gt;&lt;img alt="单车区" src="https://lh3.googleusercontent.com/uy8gx-Oz5IDRqo1uorHKpgH_33W8X7spP4AJlPRZhb8iI2UJgqa_SZRGmqptCWA-3405xyI03xzy8qttAQNJh1e7VUh_tXRYmQC0QMWpwPShxwlTIK8DkQWhTCNJV9oFJ4sufpipMh4=w1050-h787-no"&gt;&lt;/p&gt;
&lt;p&gt;宛平城西门，威严门。&lt;/p&gt;
&lt;p&gt;&lt;img alt="威严门" src="https://lh3.googleusercontent.com/QuKNnKm8R9S7MIKgE8yjkbR1085FfG44bNUnjnbjbrkJAbOQBKqguQQya7pXJuWMHRfItA3UPtMZX_8xaXCe8lio-kX2Lu6jTfhYVExd7AUCBpxjsAwAMPkNrRGFNxEAH4_Ri8BvbLI=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;卢沟桥门前的石板路，据说车辙印是后来修复时特意磨出来的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="车辙" src="https://lh3.googleusercontent.com/oE1g8bVgdSW_i3GOpWQ1nMEtSJty7WfEwLDNVBvw5HavjARjRM-_hgqIvt9-a_QZvAOgKLROrj2P3D93ahWgXvOID5drD_2jS1R7Z9u-SealKb4r5ezeRHbSkeotnu12KTwOTOBMlHo=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="车辙" src="https://lh3.googleusercontent.com/vDAPTXdflvpAdVxxvUSV7drD9hsALa9v60nJ5EcZM5zpEsVB1FCT63x6CFUCvS-clS706OZP8hRs9QXIqJSqo2CQxcgkzaHvKrdDAEyrAA38ACcskUe7K0BLLsvH4QPkduGVnvjigLc=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;卢沟桥的介绍，竟然已经建成八百多年了，而且还被马可波罗提过。
这样看这座桥即便不是因为七七事变，也是个非常著名的古迹。&lt;/p&gt;
&lt;p&gt;&lt;img alt="卢沟桥" src="https://lh3.googleusercontent.com/XqpEHM0_SFDjqfgaxr4AxntMYgKQh2r0kk-n2sR6PaboUX4FNZiEJqf0Krfx9z7i1yxUnZp7eb6a8CyRQIV77LNzVEiyOnMhe18-KM_XdCztJZfaMsSoIG_MbpaHFrvhoAyIPjKzXkA=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;燕京八景之一的卢沟晓月大招牌，站牌子底下这个大叔自己拍完也不走了，大概非要给我当模特。&lt;/p&gt;
&lt;p&gt;&lt;img alt="卢沟晓月" src="https://lh3.googleusercontent.com/irXoFvhWsdRwIdV7fjIgbk9lklLtkyex_Xxz6_OQb38LDRTQULkm97c3LalcPbm4UTs8UlVjLKWx1ZY-YEs3gBNh8JGJaKBNoI9iV9QW6bnz11X3IcAjeqaWBxXZeG7ZVkwQRIPGxpQ=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;桥上的狮子确实各具形态，而且狮子有新有旧，大概很多已经严重腐蚀了，然后近代什么时候被修复过。&lt;/p&gt;
&lt;p&gt;&lt;img alt="石狮子" src="https://lh3.googleusercontent.com/KfzUSdcU_mc5zZ-dJjfyLBk2xAzQMm4UcLPr0dQILkYY0ZNC-AC5FXucSZzdcJFKBJDOmlUwnXv3fYnqSpOT1HHIiyHtg1msHQiNGGYDBM3yF1XwxZSEbl4RigTCmOif0e_5YDozncQ=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="石狮子" src="https://lh3.googleusercontent.com/gfin8hkAFtarMvxRKekHqrOhGNZP8cAWTCxRrxl3vFdGEmJ-0hYp0uA0IlfYwMa6uJ6BiTzXzkhXIS8NIhgzeMNiYv_PKPGFt0gtrnX6dOAOdGTfLVUafcHKpBAD2ogI2prP3oeDxWs=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;永定河，还有桥北边的铁路桥，查了下应该是京广线。&lt;/p&gt;
&lt;p&gt;&lt;img alt="铁路桥" src="https://lh3.googleusercontent.com/kLIdfAukSQyoTMfGqL-6zu6qnDKejJX9yJG14bdyrW554mF6oYsnGE_gPxxlAEnN1QjZgomePu7W5jykk1rPchqOfc1HU2OUe26U4T4sGTJuujQc_o_LwBpeuxZB2ODTv1vZl4eYcFc=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;卢沟桥南的G4京港澳高速桥。&lt;/p&gt;
&lt;p&gt;&lt;img alt="高速桥" src="https://lh3.googleusercontent.com/mOl2VB33Wa5Whaffwuzc4FKjfUHW_PEpuZqD70i4ENoDw0IiwCzIaGN8mesdlC9A7SnwIxlgPoQ888op5KJ23veulmetY2bTnBnXuXkCRGDHdf_gXYTt1esvFwxhTzSjGMmbp-DSefo=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2017-07-08 22:59:55&lt;/em&gt; 观后感，不想被人欺负靠谁都没用，还是得靠自身硬。
&lt;a href="https://www.instagram.com/p/BWSjGI2jYt6x6ngtVjFqj4jNQZcLrOAm5jaT7g0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/96715f64950ae773f2c0fbc131f7b107/5DB2E5BD/t51.2885-15/e35/19933236_774542152727804_3585988342845538304_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/8de76fd8eabf007ca36bde7f03c3f1a7/5DABDC28/t51.2885-15/e35/19765168_155354265014046_2516519066412253184_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; 补一张卢沟桥的门票，票价20羊。
2018年再去的时候才发现普通票丑到爆炸，2017年的门票大概是纪念版。&lt;/p&gt;
&lt;p&gt;&lt;img alt="卢沟桥门票" src="https://lh3.googleusercontent.com/O3eIgjGdK2REqZINrzKSijPv_a0QDrQcqd-SFQTDiSwPUj5L85hMviuuOW03GUUSj7vrNiVNYRZEtYBUH97M0pyw92jjxnjFbfeTzG4rq__ym2nb1FtVZMr4vr_r3ZVc-Ua-ZQl-w0E=s1050-no"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 08 Jul 2017 22:25:57 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2017-07-08:/2017/07/visit-kangri-zhanzheng-jinianguan/</guid><category>museum</category><category>Chinese</category><category>against</category><category>Japanese</category><category>aggression</category><category>war</category></item><item><title>沈阳浑河夜景</title><link>https://www.gfrog.net/2016/08/walking-along-hunhe-river-shenyang/</link><description>&lt;p&gt;今晚大暴走的计划路线是先去五里河，然后走到浑河边看一眼大钻石，
然后顺着河边往富民桥方向溜达一下。&lt;/p&gt;
&lt;p&gt;现秀一下白天拿到的小玩具，是一个望远镜上的支架，
可以把手机架到望远镜上，拍拍远景。&lt;/p&gt;
&lt;p&gt;然而望远镜效果一般般，紫边很严重。&lt;/p&gt;
&lt;p&gt;&lt;img alt="望远镜" src="https://lh3.googleusercontent.com/nrhP97bOEgIRz90LtzvlkaBJTVeVy1QcYB0mTW9T1dmPB2kVK9bKxTNlD37PyvHAVUr6_L3AmWyJw4HeZ_ZxdLqSOlzKPl0AWERszxXI0-sxjhCi70zPQHb3Ud1zz-FD8MAKT8wNge4=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;五里河体育公园边大草坪，真想上去躺躺。然而估计躺上去就得被蚊子咬的满身包。
背景里面的大楼是新夏宫了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="五里河" src="https://lh3.googleusercontent.com/UX8sAERNSaYfcXQEtUoNYBwMhk3l-29qPx_jUJxXvPVJBx5ZnpnBFxoIIz87gPwxnOzdkXscMHKgjBQB2D-XHMZz6VqcJuAyysoYzc-zfST205dtsBopwdsU9f9GYC-ggmCAuxHoqpM=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;盛京大钻石，学名盛京大剧院。这么高端的地方，门口的路修的烂到爆。&lt;/p&gt;
&lt;p&gt;&lt;img alt="大钻石" src="https://lh3.googleusercontent.com/CHsMZrCKqIlPM6ib3DZNcvmkuciDfkmDuWydGLwdlPMlw5PukVJV6pSBUUalddUCdoDzRbmYrTVxxii27a6Yoaw4-w-GjzYMvjyznDYMTJGVabH9xeXdpuQgz-PtdjTXJBbqjerqdnc=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;五里河公园门口，远远望一眼富民桥。
这个角度看浑河水还满大的，然而其实是下游橡皮坝憋住了一部分水。&lt;/p&gt;
&lt;p&gt;&lt;img alt="浑河" src="https://lh3.googleusercontent.com/GNHM0zBNvoHDU1ZpoO-JhqLlACIiEXTv_cdipsVjnF_booIjCeQ3G2CObqDYYHFWebJ4f8_jOW-iw0SIWqss6Lcqnr04O7vAudalo7xETGoS5f_UAIR_A0dbRAyrzJjFq1xDImhkVHc=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;浑河桥，外加浑南一票高层小区，据说河边这几栋还没有卖完呢。&lt;/p&gt;
&lt;p&gt;&lt;img alt="浑河桥" src="https://lh3.googleusercontent.com/TDv4YWYFA-1hn-KX-Lp94DYbhP_EzWf38RCSbxH1BkhMirRDio2QhdVbdVNd9EqAy7wUM1vAzuY7zLmq5aeDXL8bIIWKGZdIsKMuyyt3tJpiCrFBpQx1zl-dyaJyRYtLkQbIGNHlzWs=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;浑河桥和月牙。&lt;/p&gt;
&lt;p&gt;&lt;img alt="月牙" src="https://lh3.googleusercontent.com/RCYqaBiEZ00nB8qt_LW-BftDgx4e7DQSZRNM52m-uFFOKbJOgO7M2b7RYBM6v6GTWoENRhFJDTKEKpJ_AuOSBkkX3l8Bh8SKC8Isf1gpe1bY7Wjh8Y1_VvWK4BtLkGCYhyUDJ7lEjVQ=w1050-h1400-no"&gt;&lt;/p&gt;
&lt;p&gt;竟然还有个码头可以坐游船…… 还很贵。&lt;/p&gt;
&lt;p&gt;&lt;img alt="游船码头" src="https://lh3.googleusercontent.com/VdcNRuoIGqCjK5GkjQrK36QNMQckTFqJE90qa_48Cf6_OYZQRBED7zB5i1ukDn01px5OI2YsDQMFTY5wBaPi2OAyJ9Qk3HanS4TuOa5gMRlo62_dHtjPf7GHfQPb62pc62CQXQ5K8Tk=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;月牙下的晚霞。&lt;/p&gt;
&lt;p&gt;&lt;img alt="晚霞" src="https://lh3.googleusercontent.com/7SxVvwE0eyhNd8sXV1XF9WbxDFM_NRX30i0bN0GM5axFLrKZbGNoXhrVOGg1xbbu0w5I5syD8OhaJay8lzcNV3UNWZqlGzPEBoP_QGCFBciBaZmEUFzinEYZNENoqT9A2788JVPN9io=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;浑河北岸，这几年盖高层楼房盖疯了，眼里能看见的都是最近盖的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="北岸" src="https://lh3.googleusercontent.com/TNc8FUdmlLA7ComFoMh_kUsKd7nVR_j8eoBdQ2wgtHYVzIqBGxHo8qex_UkccHC7LbHtMEnhK40GpFeRA2-8TJAV0Ywy9adJquTNKJhbzawvp6zTrC-2FtRiylforpGdyp-wD2vhgyg=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;有土壕自带摩托艇来玩耍。&lt;/p&gt;
&lt;p&gt;&lt;img alt="摩托艇" src="https://lh3.googleusercontent.com/dMfnRsjscVM0V1-f4H0_1Isanso2XtLC9_4NqOjakpRTGI8ITqlRsKNazbq6zsZQ-V12pTiPU3a5mv0nOdpM9x8o4zVaaRXxsHF-Cy-rcR7eVmnbPVBVmDcFx4NNZGv5XNCx-Zz1SNM=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;夜晚的富民桥，真的还挺好看的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="富民桥" src="https://lh3.googleusercontent.com/JmZS_thrzYCYE6YWqN_lJNXrprYE4pZx4cMLmhQCxW7f93iy0hBoRPDTmmu16t7MdARkrINk0WUgp4ofBsO-nwWInHH4zxFGyt3z2V88CzCUHw5dyjF1IDTYHOA5bSmD01IQaD90XMc=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;浑南那边一个长得像大馒头的楼，据说是个新建的医院。&lt;/p&gt;
&lt;p&gt;&lt;img alt="馒头" src="https://lh3.googleusercontent.com/rKCnKk84oyWQ_EJejwhQHIHclhW9CaLaYpAW9H0VT7vG-qmR63HnvApk3P-k6FfaEu6WyAh-6X8xBZivQdDBIz_5SiLrvSZDnvqhSntXE-KOI_YEvU_YK__nUh-gXU_JVSW1YDR_Fj0=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;换个角度，有个大叔在河上划皮筏子。&lt;/p&gt;
&lt;p&gt;&lt;img alt="富民桥" src="https://lh3.googleusercontent.com/_oUv3Q9vGDkSAe5eL9zaI83mGdGbuSshIFVKQNSrBdJmJDnP-ldBm74WwyTrBWdvi6YFCTzXG-p6yJvp0OcCdmBwWsWmI_CTxQVSIAF2qG6-PatapzQvbGID2wavan05KtQl5-znbbw=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;浑河中间的岛，据说还是个啥保护区，
因为这个小岛，所以这里不能修桥，换成从河下修了隧道到浑南。&lt;/p&gt;
&lt;p&gt;&lt;img alt="小岛" src="https://lh3.googleusercontent.com/ZrCf2gLiB7TP-iT5fr2GIZofkKsLiWnzUafQpx7hP_6b66TsQ7aghUz6D2fhSsuch-D4CCJ6EstkRrq5kl3676YSdil95uAKKdb4fJA1SS6YTA-HdrVZVt-dwqM-YOvw6qXO13Zvrfk=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;转到了富民桥上，从桥上望一眼东边的长青桥。&lt;/p&gt;
&lt;p&gt;&lt;img alt="长青桥" src="https://lh3.googleusercontent.com/4Zn4lOJ_vp3ShXZSD7oky6vITf7cOfVdB7JBb1b_N8K5amuYgvm3-GvB1vSWzc1LWNvlZ-Z_yV-kLVK2YvgcX15C77ad9XgfnhIovNjoqz-3uZzTxjI49TK3QDd1sQOgAdMddstxtmY=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;水果手机拍夜景的时候，遇到光源都会出现这种神奇的炫光。
所以搞得桥柱子像魔戒里面那个索伦的塔似的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="塔" src="https://lh3.googleusercontent.com/URQ-BU4pp08G1-Uk9CvUclmnnnbePiSsNBPBTj59gNRvKscTXXnT-93Wr-TAkNCTGBW7SBNQ6ukUYgmYrtoaQE-IMvHe2UBbCnh6CRb0DmUzD4rHHDGpVhl6AE5LVENyRl7HWHFtWhU=s1050-no"&gt;&lt;/p&gt;
&lt;p&gt;转到桥上，行程结束。而且天色已晚，闪人回家。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 09 Aug 2016 17:01:48 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2016-08-09:/2016/08/walking-along-hunhe-river-shenyang/</guid><category>night</category><category>view</category><category>Hunhe</category><category>River</category><category>Shenyang</category><category>light</category></item><item><title>台北一周游记</title><link>https://www.gfrog.net/2014/10/tour-in-taipei/</link><description>&lt;p&gt;十月份的时候公司有去台北出差的机会，于是青蛙就稍微逛了一下下台北。&lt;/p&gt;
&lt;p&gt;因为是商务签证，所以时间很紧张，一周的行程，就给了青蛙六天的签证有效期。
真不知道丫的怎么想的，至少前后给两个周末拿来travel吧……
所以很多知名景点都没有时间去，例如故宫、101之类。
等下次有缘再来吧。&lt;/p&gt;
&lt;p&gt;去的时候赶上了台风过境，
本来预计傍晚到台北，结果在香港躲台风一直躲到半夜。
到达台北酒店就已经周一凌晨2点钟了，这样青蛙竟然能拿这个商务签多呆一个周六。&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-12 14:15:01&lt;/em&gt; CZ635 SHE -&amp;gt; HKG 躲雾霾去喽。
&lt;a href="https://www.instagram.com/p/uCsGprAVxWb09dWkJtCrOhhiDuJVmIHJJgwSM0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/66a5431f413326e9f9f95ddae9330404/5DC67FB4/t51.2885-15/e15/10299649_821854477866341_1285512093_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-12 19:36:05&lt;/em&gt; CI2602 HKG -&amp;gt; TPE
卧槽，被坑到姥姥家了，延误2小时20分，
到TPE都尼玛凌晨一点了，我要投诉机票代理了。
&lt;a href="https://www.instagram.com/p/uDQ2JwAV6Qj-utjRJ0xqwUYqaQtZQkBEy7lig0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/fd3a7498d2ad76b3d3333839659011bd/5DBCD0CF/t51.2885-15/e15/10724207_1499778910287874_1140019337_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-12 20:14:07&lt;/em&gt; Nice to meet you in HK, Jerry.
&lt;a href="https://www.instagram.com/p/uDVMvZgVwxBxMxO-P0SzB4I10L33N37lR61ms0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/ccdf4c3567198c8809bc44a250911ac3/5DA96731/t51.2885-15/e15/10727551_543403855803268_1051910549_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-12 22:31:47&lt;/em&gt; Queen on the old 1980' HKD coins.
&lt;a href="https://www.instagram.com/p/uDk9IbAVwGQOMcfVbebras3-w2w3t_kWG2x3Q0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/9b6c28961076e9da5af34c0657865dc5/5DAC6ABD/t51.2885-15/e15/1516373_332636906916436_1819406917_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-12 23:17:33&lt;/em&gt; 湾湾人民（推断，因为他们不是在用粤语吵）也会跟航空公司吵架，不过不会动手就是了。
&lt;a href="https://www.instagram.com/p/uDqMUcAV64wxSy9Ibkn1YK0_A9FHuGrf4Cc_M0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/77c9a80076d9638ece1eacc89ef86ba2/5DB35CC8/t51.2885-15/e15/1208272_774495512606924_1039133144_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-13 04:38:51&lt;/em&gt; 这几天难道是旅游旺季？很难定到酒店。但是托定不到酒店的福，咱也体验一把行政房。
&lt;a href="https://www.instagram.com/p/uEO9kbAVwXMwBkSiSYn-kxsAxbyaAPI3UFrD00/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/81a0d476298329f79be3756cf9ff8eda/5DA52277/t51.2885-15/e15/10727363_1495913054011652_1256870984_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;（后来跟客户聊天才直到，其实不是酒店爆满，而是我们的代理旅行社
订不到台湾的酒店，丫的又不跟我们直说，弄的青蛙跟同事住在里客户现场
一个半小时车程的地方，而且一周换了三次酒店。真是弄的要疯了。）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;上街吃吃喝喝，先来份猪血糕尝尝。&lt;/p&gt;
&lt;p&gt;&lt;img alt="猪血糕" src="https://lh3.googleusercontent.com/ZWI0ttL5P9MC9RIvxnermdzk7-SBCaAYtbgZ_RRvTKM82y3e6mkbPFUcKMYRPkyy358vIDyo5k-DbPj0crIVxfDXHFYQYz_Is8EDJ0TCBQR1_N0ll0zvKc_y1DG7grh4pbPCXwpPdXw=w1050"&gt;&lt;/p&gt;
&lt;p&gt;还有这边的水果真的很好吃，大概都是熟透了摘下来的。
杨桃和芭乐的味道真心好，不过青蛙不喜欢撒梅子粉，直接开吃。&lt;/p&gt;
&lt;p&gt;&lt;img alt="芭乐" src="https://lh3.googleusercontent.com/dYyxwXaFI3cNBDxMlR80TsjukgtKLNrknU_1pWqt2E_hJKKVWBCEPrSgjAB8p6AWuW5R_ZyI412nUiqNov_7odRUkQ3PyluhccNWP03eXVjCv1qJKlCn0Yi6-jkG7Ps5QAKna0dUXIU=w1050-h1400-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-16 22:57:43&lt;/em&gt; 我大东风日产竟然输出逍克到湾湾了！关键＂东风＂这俩字还是毛泽东题的……
&lt;a href="https://www.instagram.com/p/uN7Gd3gVxXCSzHQ3v26nDlazZieKGNPv5DjzA0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/b69761560ebb67b08da9783e76396c90/5DB3BDB5/t51.2885-15/e15/10735241_575393992584135_1224978616_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-17 21:53:47&lt;/em&gt; 要撤退了，开罐啤酒庆祝下。
&lt;a href="https://www.instagram.com/p/uQYlLZgVxHO_La6qkeNl_2SgllxEjpZrW4NPk0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/6cf5fc7cd0af32b85df91005372e38d9/5DAAA144/t51.2885-15/e15/10693355_1572075769690997_1995431028_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;岛上人民竟然也有爸爸去哪儿看，但是应该比大陆慢了一季。&lt;/p&gt;
&lt;p&gt;&lt;img alt="爸爸去哪儿" src="https://lh3.googleusercontent.com/Y7h9vpZjud47311HR2drLd1g5OPbqwh7EK-EefhKBTFVRdfxdab6uvy434oE9Fd6TPvVjsMNV2CwMuJjbDOhjKi67Q9bhmm10VsWzEQd2nkPOfCXt3hLYdV8mjn4AfFppMAE9ue5pIw=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-18 10:45:28&lt;/em&gt; 蓝天白云还有肯老头儿。
&lt;a href="https://www.instagram.com/p/uRw5GKgVwe6LtFuZit0Egr5rid1kGyQdxyn6Q0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/6beab6be0c4ba4742ad08469df0512d4/5DA9B4F0/t51.2885-15/e15/10724026_383985971760114_2043911393_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-18 11:09:04&lt;/em&gt; 看看人家的校门多朴素，尼玛弄个十亿的校门就能变成世界名校嘛？
&lt;a href="https://www.instagram.com/p/uRzl5jAV1E1FZsmbGlS9rveKJaA1Rmi4mLOlI0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/7679057ffdd7c7293c5e401d9f2389bd/5DB0B77F/t51.2885-15/e15/10735018_784734234921691_985064312_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;台大的农场，据说这边是搞出来做实验用的一个小生态环境。&lt;/p&gt;
&lt;p&gt;&lt;img alt="台大农场" src="https://lh3.googleusercontent.com/69htod7qNc852jNb_D9T2pTz16VGToUx0jwo6ucDxHyIQzwdrHBVF1YvUg0PslZRGGXHLGm4fASKNpURLGOO6VQOGy9TkDTYUG2WQVq27UAqFoAdM838Fb928NGxIopzvoy22eG8LEk=w1050-h1400-no"&gt;&lt;/p&gt;
&lt;p&gt;鸟、石头、鱼、小王八。&lt;/p&gt;
&lt;p&gt;&lt;img alt="鸟" src="https://lh3.googleusercontent.com/2_eoRobrEh0vJexpqR2zneffAh9So-PspxkVBNWk3ZdPem7byIYfxP8RhiDfK3WbV6ZSIINeP1g0lXPyjYYHs6tLFWG5yruxr2Ggnxn4OaEa4S96ke_wE526fUfC04cWB8BAIfZ0a0U=w1050-h1400-no"&gt;&lt;/p&gt;
&lt;p&gt;看来这只鸟经常站在这，石头上拉满了……&lt;/p&gt;
&lt;p&gt;&lt;img alt="鸟" src="https://lh3.googleusercontent.com/Mge7Pd2djqffMU5BSLLTkkbU0YQ4zPqn195B3F9Q3XA0s1Pbu-6MZrASTxF-T0V3cZg12230f3Vz_avm_OnMbeEUk_S2MT35gXbKkqzVNGv7wrTJDp5Puyd0S4Y8BsZQEV1bMgLKh4g=w1050-h1400-no"&gt;&lt;/p&gt;
&lt;p&gt;更多的鱼和小王八。&lt;/p&gt;
&lt;p&gt;&lt;img alt="小王八" src="https://lh3.googleusercontent.com/fxy_Eci-sWXWLIRx6WaasclU70awdwkTFys9e6GX46vJqjVoAJD1v3661PiPD73TbFKgvGRUNaiJ_gBA_FVy-dnS4RR8_frIUCx3o9Jdhbg7ICFM6AOdM_rLPS_ZHWdlSiztHCderi0=w1050-h1400-no"&gt;&lt;/p&gt;
&lt;p&gt;参观台大完毕，坐地铁（捷运）赶奔自由广场看看。&lt;/p&gt;
&lt;p&gt;&lt;img alt="站牌" src="https://lh3.googleusercontent.com/Ph4jQU_U4j7nu2Dd8fAyyRWjkSCUGDPOfdykNLOYdn28oZEU7CLDaFjjDtI0hr1u8i8-dUHtBkA6YT6yyxjBpy8cXnlVbZ9Znn2YJz4jPkpW_p-c3Uirq68Ipb0_noZoMgkFPtI1blg=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="站牌" src="https://lh3.googleusercontent.com/3QC-b5IPtLki3jQCQUnm4fGxpYwwnPfH51ZFBcCdUXzZtRE-XMFD-frBogYbcQrcqKGZSOlZL3Hss8zYBoaGhNYdfgotfNR7mevz35PxNHMbAGZHDaiuNWdq6yEKjKb0v1MmmzK43CQ=w1050-h1400-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-18 18:03:03&lt;/em&gt; 今天自由广场刚好有表演。
&lt;a href="https://www.instagram.com/p/uSi-HTgV5V3o7FHxz4kEzNqqHYTXuRbTCMelg0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/0d32207d9a09363481f4727e789c5b3d/5DA7EB19/t51.2885-15/e15/10735200_818671804851523_926676959_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-18 18:10:34&lt;/em&gt; 南投的小盆友们鼓打得很赞啊。
&lt;a href="https://www.instagram.com/p/uSj1JigV6i3lvgfo6d-hDWg0G8QwwKvVETxIc0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;blockquote class="instagram-media" data-instgrm-permalink="https://www.instagram.com/p/uSj1JigV6i/" data-instgrm-version="12" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"&gt;&lt;div style="padding:16px;"&gt; &lt;a href="https://www.instagram.com/p/uSj1JigV6i/" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"&gt; &lt;div style=" display: flex; flex-direction: row; align-items: center;"&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 19% 0;"&gt;&lt;/div&gt; &lt;div style="display:block; height:50px; margin:0 auto 12px; width:50px;"&gt;&lt;svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"&gt;&lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&lt;g transform="translate(-511.000000, -20.000000)" fill="#000000"&gt;&lt;g&gt;&lt;path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style="padding-top: 8px;"&gt; &lt;div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"&gt; View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 12.5% 0;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"&gt;&lt;div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: 8px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: auto;"&gt; &lt;div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"&gt;&lt;a href="https://www.instagram.com/p/uSj1JigV6i/" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank"&gt;A post shared by gfrog (@gfrogcn)&lt;/a&gt; on &lt;time style=" font-family:Arial,sans-serif; font-size:14px; line-height:17px;" datetime="2014-10-18T10:10:34+00:00"&gt;Oct 18, 2014 at 3:10am PDT&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;script async src="//www.instagram.com/embed.js"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-18 18:13:26&lt;/em&gt; 中正遗像，坐东向西微笑：小样儿，你们又雾霾了吧……
&lt;a href="https://www.instagram.com/p/uSkKIDAV7A4867HihPjf_6G6C_INOQBew6iJc0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/bab375c63d274077e9a5ebc7d01e832a/5DA83967/t51.2885-15/e15/10727329_297139230489847_984067654_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-18 18:15:08&lt;/em&gt; 中正纪念堂顶上的青天白日。
&lt;a href="https://www.instagram.com/p/uSkWirAV7Nb1SX2159zLSwe_Vq7dBa8yLVNKY0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/aad9a68ac758817a58bf7b7737acefa8/5DAFF823/t51.2885-15/e15/10723918_545812558852433_535616488_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;站在纪念堂门口西望，其实只能看见牌坊。&lt;/p&gt;
&lt;p&gt;&lt;img alt="门口" src="https://lh3.googleusercontent.com/RAsEVt49q0xW6hkzu3wZJkMPI-K4iWEgUlROUY3NZdQneXg4c5-LrR2dVEZ-tsqrZK2m6QbFWGmY2xCBp2MpCEC43O_Pe42BZZubp9NtFt7lt0c7dfVTayh2842kjaNonGTk602_4o8=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-26 17:09:47&lt;/em&gt; 补张台北捷运票，貌似跟上海地铁一样的规格名称。
&lt;a href="https://www.instagram.com/p/unDO-jgVyo0UgqER_uvLuBn-UXkG_GAQpetZE0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/cf490fbc76bec1bf0f381b4f800f8ab2/5DA33412/t51.2885-15/e15/10727423_702149993210315_1137384307_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-18 18:57:24&lt;/em&gt; CI927 TPE -&amp;gt; HKG 拜拜湾湾。
&lt;a href="https://www.instagram.com/p/uSpMF4AVwsF3PFaGOltbVL25-yoPjn8aS_pCc0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/0d0cbda0e558505bbe92b85b4a191185/5DA689FC/t51.2885-15/e15/10723795_482742485201456_243365298_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;出入境盖章，梅花是ROC的国徽？好像不是吧，难道后来改过了？&lt;/p&gt;
&lt;p&gt;&lt;img alt="盖章" src="https://lh3.googleusercontent.com/AqU9etlRvW7LcFDscEE1r6nfIzWn4GLpCAHa0yQvVAT8fug3kuf0BhCwrHa3a21NZKadihptBKawmAIFLHBL8cIqjrF_u0LSlE8vUn3Xa_txlymiEQycTg3dtPOhWo4wZQCdjqH8zKM=w1050-h1400-no"&gt;&lt;/p&gt;
&lt;p&gt;候机室墙上还弄的挺有情调的，高山茶园还有采茶妹。&lt;/p&gt;
&lt;p&gt;&lt;img alt="墙" src="https://lh3.googleusercontent.com/bbWoF-5LEIKJwk70lz3-tqlpKBr7G4lM2XZIdXH9GkTx0QGZ3DRnxKJcRXSq-UU0TTH-y13MYRozCaqYZqNTSD1g7MtlYNVtz_-7Yi5We366qLezSnguZofO5HMyI-68yh0wwH6Zw4E=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-18 22:12:23&lt;/em&gt; 解锁成就：两次横跨台湾海峡。
外加第一次见到了飞机上的usb接口。
表示华航果然高大上，台北到香港都用747飞。
&lt;a href="https://www.instagram.com/p/uS_gRUAV0cXcqbg7FUucOIa47Icrim5Ab7Dvc0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/62427bea9e760e74b74daa370a199f26/5DAC07DC/t51.2885-15/e15/10735123_1482086718739416_1723328068_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;到达香港。原计划在香港转悠一整天，然后晚上的飞机回家。
结果在香港酒店吃完早餐就把肚子吃坏了，然后在机场蜷缩了一整天。&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-19 12:02:19&lt;/em&gt; 机场万宁的黄道益43一瓶，网上说市区才30+，不过懒得去市区，就在机场买好了。
&lt;a href="https://www.instagram.com/p/uUee2sAV-CKU3pkB3I0lrucGXA_gqZFMFU0Mg0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/16483f3dc9ea72f8665729bad904227e/5DB7D21F/t51.2885-15/e15/10731425_772639692778421_1121964962_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;吃了药恢复了一点，找个窗口看飞机。&lt;/p&gt;
&lt;p&gt;&lt;img alt="飞机" src="https://lh3.googleusercontent.com/k9YRL742lMV8Q_TPmbCTOWoUvADRSzJckubdpd9yizGrELGxVzWjiqh_nMSnFXx1ktPH37ztB1O0ydFtXVIdkZJ0fC61wZ853DuBwpCTnJ1dF5305aXggjvrX1qTW0lAAPS3kjvEdfE=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="飞机" src="https://lh3.googleusercontent.com/bGsMxoLJ8s8523c7gBm4LhaQcNdyiKcqRg2KjIqRtEOtmL-CVgSvwkKgEAf-4uPR_Wnue5yaFKM9tOrsuPllyOu4lzcHmgNCAMaQM_Z3NhGS3OfaoV0Ejgb5EvDxofo_wQpIzZ6KHtw=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;机场门口的木制飞机，据说是
&lt;a href="http://blog.hongkongairport.com/spiritofshatin/"&gt;真的可以飞起来的&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img alt="飞机" src="https://lh3.googleusercontent.com/cJBbNTyHeMX0a7NO_fc0qTKagOegW1b5IAH9s8KaBMiADjkFw06QHDWK88ma03XazlthlQZgK3-03MU08WkCLlA9iOcjU2GHhO8XtHLm1u7sRfWa_CgKP5SGxC44FNZOrhLIAIQzDqU=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-19 12:12:58&lt;/em&gt; 梅花航萌萌的卡狗模型。
&lt;a href="https://www.instagram.com/p/uUfs0iAV_87oPcxudJkBy3vzDVE8avuVWGWOM0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/8efca580c7e370fab6f261388e2798de/5DB45E9D/t51.2885-15/e15/10724060_785426078186610_1404839173_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;好不容易熬到了可以值机，过安检之后赶紧找个椅子躺一会。&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-10-19 19:00:38&lt;/em&gt; 终于可以回家了……
&lt;a href="https://www.instagram.com/p/uVOWq9gV3IZ-acQOmgZoepLZ7yyCDpula0U5A0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/d8c2065c6129a37229338dd3f9877906/5DAC349E/t51.2885-15/e15/10724217_1496109010674743_468936106_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;
&lt;p&gt;登机，滚球。再也不想来香港了，
在台湾胡吃海塞一星期一点事儿没有，来香港一顿早饭就拉肚子了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="登机" src="https://lh3.googleusercontent.com/W1z-0blnnbIF7rKBltKesgnnwXg7MFMn6u6F8bvRxUXfTuObjP8uaSekvPvAX5z9NtibOrJ5TPPO7BHgvEq_x4Gwbxsw_1q98y1BriQhebOkRy_PZNNYG60_dvkj-N64oj7n-DH4CUE=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;旁边机位停的梅花航小不点。&lt;/p&gt;
&lt;p&gt;&lt;img alt="梅花航" src="https://lh3.googleusercontent.com/H_7vi4NbuMOlL6F0a6WMb9-hPfWZkonKCGMtmSJwe51PqmnOpbjDOnYbyn-06XgsKVFKhLEug_AURAwMeU8Pn7NXJHC1SDQZpdK79bD--L4a84PyekEIQbHWI-qAuR97RSN1NQPDrAA=w1050-h788-no"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;⏰&lt;em&gt;2014-11-05 19:34:12&lt;/em&gt; 给自己寄的湾湾明信片到了，航空邮件6台币寄到大陆。
&lt;a href="https://www.instagram.com/p/vBDtbPAV961RpYNauoguUd0It5Kn4W5c_CcVE0/"&gt;via Instagram&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://scontent-lax3-2.cdninstagram.com/vp/babc3db694a8a4638dab7015276dd250/5DBE5959/t51.2885-15/e15/10755833_472753462863185_1309010887_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 26 Oct 2014 17:22:45 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2014-10-26:/2014/10/tour-in-taipei/</guid><category>tour</category><category>taipei</category><category>hongkong</category><category>university</category><category>flight</category></item><item><title>2013年终总结及2014年新年目标</title><link>https://www.gfrog.net/2013/12/2013-summary-and-2014-outlook/</link><description>&lt;p&gt;辞旧迎新，又是一年年终总结和新年展望的时候。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;首先，工作。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;今年青蛙完成了来北京三年之后的第一个转折：换工作。
虽然这次换工作是在年度计划之中的，但是确实是在原来公司的团队里发现了问题，以至于不得不提前离开。&lt;/p&gt;
&lt;p&gt;（也是由于拖延症的关系，一直到年底，换工作的blog也没有写完，只好在这里简单写一下对前公司的感想了）
青蛙的前东家，也就是Red Hat，实际上是一家非常不错的公司。青蛙刚刚进去的时候，体会到的是宽松活泼又快速的工作方式。
在这种工作环境里，工作本身就是件很有意思的事情。
首先，在每个人保证自觉性的前提下，老板们基本不会过多的过问进度方面的问题，
只要能完成任务，剩下的时间可以随意安排。于是青蛙自己就有了很多学习和研究的时间。&lt;/p&gt;
&lt;p&gt;但是，随着老员工的离去和新鲜血液的加入，这种工作氛围慢慢的没有了。
青蛙最常听到的抱怨就是任务太重以至于不得不加班…… 大概是太多华为来的家伙把加班文化带到了这里？
一个工资不到华为三分之一，每天还要加班到8-9点钟的公司，实在不能说是一个好选择。
于是很多人离开也完全可以理解。&lt;/p&gt;
&lt;p&gt;在这种环境下，青蛙开始慢慢的跟找上门的猎头接触，并且参加了一些面试。
但是出去看过了才发现自身很多的不足，例如基本功不扎实，编码能力不足……
然后回过头来再看看身边的同事，每天都为一些鸡毛蒜皮的小事情扯来扯去，
完全没有值得自己学习借鉴的地方。于是青蛙下定决心，一定要在工作满三年之前离开。&lt;/p&gt;
&lt;p&gt;然后在&lt;a href="http://weibo.com/ubuntumotu"&gt;侯总&lt;/a&gt;的帮助和引荐下，青蛙有幸加入了Canonical大家庭。
虽然比起Red Hat，Canonical只是一家小公司，但是这家公司的文化更接近几年前的Red Hat。
另外这家公司里前帽帽员工竟然出奇的多，青蛙的老板，老板的老板，老板的老板的老板，都是前帽帽员工……
其实也难怪，做Linux的公司实际上就那么几家而已。&lt;/p&gt;
&lt;p&gt;新的工作基本跟编码彻底不贴边，于是青蛙感觉这辈子可能基本就告别码农身份了。
当然，业余时间如果能做些Python的项目最好，但是，拖延症患者一般只会把这种想法放在脑子里想想而已……&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;其次，生活。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;上半年青蛙基本还是延续了2012年疯狂运动的状态。从春天开始就一直在骑车。
但是夏天的时候不幸病倒了，然后就突然从骑车运动变成了四处旅游。&lt;/p&gt;
&lt;p&gt;首先是北京周边的几个地方：
&lt;a href="http://gfrog.net/2013/07/outing-jiming-dak-in-hebei/"&gt;鸡鸣驿&lt;/a&gt;，
土木堡（游记整理中……）。
然后就一发而不可收拾，青蛙从九月到十二月，几乎月月都跑出去玩儿：
青岛（游记整理中……），
杭州（游记整理中……），
天津塘沽（游记整理中……），
张家口（游记整理中……），
厦门（游记整理中……）&lt;/p&gt;
&lt;p&gt;难道这就是传说中的读万卷书，行万里路？ 读万卷书在这个快节奏的时代比较难，但是行万里路现在真是太简单了。
2014，青蛙应该继续行走在路上。&lt;/p&gt;
&lt;p&gt;当然，自从发现老爹老妈还是很喜欢我常回家看看之后，青蛙只要有比较长的假期都会跑回家待几天。
但是在家好吃懒做也引起了老妈的反感。 2014，除了常回家看看，还有多帮老娘做做家务。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三，学习。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为去年下半年一直处于学习状态，所以今年上半年青蛙也一直在努力奋进的状态：努力看书，努力背单词。
但是拖延症患者要保持一个长久的学习状态非常难，于是从不知道什么时候起，背单词和看书的事情就被荒废了……&lt;/p&gt;
&lt;p&gt;换了新工作之后，因为接触的都是全新的东西，所以学习的重点都放在新的业务系统上了。
但是青蛙也在工作中发现，很多基础的Linux知识依然不清楚，继续啃RHCA还是很有必要的。&lt;/p&gt;
&lt;p&gt;另外一方面，因为老板和同事全都是外国人，口语和听力成了青蛙必须尽快解决的大问题。
目前听比较标准的英音的话，青蛙大概能听懂一多半，但是稍有口音就完全听不懂了。
解决的方法似乎只有一个：多听，玩命的听。
口语的话，发音是个大问题，然后就是词不达意。当然也没别的途径好解决，只有多说。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第四，折腾。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NAS? （笔记整理中……）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2013总结&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;整体上来说，2013年计划完成度就是四个字来形容：啥也没干！ 总之今年过的有点混乱。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;学习，P1，完成RHCA/CCIE认证中的一个。&lt;ul&gt;
&lt;li&gt;未完成，青蛙试图参加RHCA的培训和考试，但是被Boss无情的拒绝。
  只好自己先慢慢看了……
  然后青蛙又报了CCIE-SP的培训，但是因为换工作的原因没有完成培训。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;学习，P1，雅思7分。&lt;ul&gt;
&lt;li&gt;买了雅思单词书和真题，但是目前雅思单词完成度只有三分之一。
  但是背单词已经有些效果了，看美剧一些单词可以直接听出来了，lol&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;学习，P2，尽可能多的阅读其他项目的Python代码，例如VDSM。&lt;ul&gt;
&lt;li&gt;随着换工作也一并搁置。不过目前还是有Python项目可读，例如Openstack。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;学习，P2，Debug Hacks，读完、理解这本书。&lt;ul&gt;
&lt;li&gt;完成度三分之一，拖延症……&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;学习，P2，Facebook上Cisco学院会经常帖一些实际的项目或者实验拓扑，虽然有些可能只是CCNA Level，但是拿来每天练手很不错。&lt;ul&gt;
&lt;li&gt;未进行，开始实施的时候发现实际上并没有时间做这个事情，单词学习和代码阅读竟然把空闲时间挤满了。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;编码，P1，完成目前手头准备给Autotest upstream的代码，旧的这几个patch没有处理完成之前，不要再做新的了，免得一无所成。&lt;ul&gt;
&lt;li&gt;最后的结果是离职前所有手头的patch全部被放弃，很可惜。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;编码，P1，pdf剪裁工具，目前看来是非常需要的。即使以后不在Kindle上看pdf了，给iPad/iPhone用也是相当不错的，目前有些很多白边的pdf看起来非常不舒服。&lt;ul&gt;
&lt;li&gt;今年接触pdf不多，于是这个软件也处于停滞状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;编码，P2，IRC bot继续增强。这个似乎可以发掘下有没有人对这个也感兴趣，一起来做了。&lt;ul&gt;
&lt;li&gt;在离职之前一直维护中，可以查询很多工作系统的信息了。到新公司之后，放弃……&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;采购，P1，四轮。&lt;ul&gt;
&lt;li&gt;赶在2013年的最后一天，也就是12月31号，去交了钱准备提车。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;采购，P2，公路车。&lt;ul&gt;
&lt;li&gt;2013 春季促销的时候海淘了一辆Focus。骑过公路之后青蛙才发现公路真的是青蛙想要的那种车。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;采购，P3，MBA，万一没本子用了，就买MBA吧。&lt;ul&gt;
&lt;li&gt;虽然到新公司之后自己买了本子，但是考虑到工作需要还是买的Thinkpad。
  但是青蛙在酝酿再买台MacOS的系统自用，等2014年实现吧。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;生活，P1，坚持写Blog，至少每周1篇。 （&lt;strong&gt;Update 2012-12-31 21:16:00&lt;/strong&gt;）&lt;ul&gt;
&lt;li&gt;拖延症导致很多blog开了个头但是没完成。目前手头积压10+篇，青蛙要补欠帐喽。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;2014展望&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;新的工作，意味着新的开始和新的挑战。所以明年应该是忙碌又充满变数的一年。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;学习，P1，完成CCIE认证。2014年青蛙的CCIE认证需要重认证了，这样刚好可以参加一个新的笔试。&lt;/li&gt;
&lt;li&gt;学习，P1，雅思7分。这个会英语包打天下的年代，必须尽快增强英语能力才行。&lt;/li&gt;
&lt;li&gt;学习，P1，阅读Openstack代码。&lt;/li&gt;
&lt;li&gt;学习，P2，INE的CCIE DC视频，了解Cisco DC解决方案。&lt;/li&gt;
&lt;li&gt;采购，P1，MacOS系统的电脑， rMBP？ Mac mini？&lt;/li&gt;
&lt;li&gt;采购，P2，新的相机，Nex6？&lt;/li&gt;
&lt;li&gt;生活，P1，跟之前的同事朋友保持联络，每月聚会？&lt;/li&gt;
&lt;li&gt;生活，P1，坚持写Blog，至少每周1篇。&lt;/li&gt;
&lt;li&gt;生活，P2，继续出行，争取走遍全国各省。&lt;/li&gt;
&lt;/ol&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 31 Dec 2013 21:14:10 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-12-31:/2013/12/2013-summary-and-2014-outlook/</guid><category>update</category><category>status</category><category>summary</category><category>outlook</category></item><item><title>QEMU中的 pvpanic设备</title><link>https://www.gfrog.net/2013/12/new-device-pvpanic-in-qemu/</link><description>&lt;p&gt;pvpanic设备是在Qemu-1.5的时候引入的一个ISA设备[1]，
旨在让hypervisor可以感知guest kernel panic，并作出相应的处理。
在目前的实现中，pvpanic使用了一个固定的I/O端口（默认为0x505），
向这个端口的bit 0写入1的时候，即意味着guest kernel panic发生了。&lt;/p&gt;
&lt;p&gt;首先，先来玩一玩这个设备，看看它到底会干点啥。&lt;/p&gt;
&lt;p&gt;青蛙目前用的Ubuntu Saucy 系统上面的 Qemu 版本是1.6.0。
由于pvpanic设备在设计过程中并没有过多的考虑windows guest的情况，
并且libvirt支持这个设备也遇到了困难，所以qemu的开发者们曾经就这个设备发生了一大串的讨论[2]。
所以在现在的Qemu 1.7.*, 1.6.*, 1.5.4+中，这个功能都是默认关闭的，
要使用这个pvpanic，还需要几条额外的选项：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;qemu-system-x86_64 -name test-pvpanic -nodefaults -cpu host -m &lt;span class="m"&gt;1024&lt;/span&gt; -M pc &lt;span class="se"&gt;\&lt;/span&gt;
-smp &lt;span class="m"&gt;1&lt;/span&gt;,sockets&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,cores&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;,threads&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
-chardev socket,id&lt;span class="o"&gt;=&lt;/span&gt;charmonitor,path&lt;span class="o"&gt;=&lt;/span&gt;/tmp/monitor-test-pvpanic.sock,server,nowait &lt;span class="se"&gt;\&lt;/span&gt;
-mon &lt;span class="nv"&gt;chardev&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;charmonitor,id&lt;span class="o"&gt;=&lt;/span&gt;monitor,mode&lt;span class="o"&gt;=&lt;/span&gt;control &lt;span class="se"&gt;\&lt;/span&gt;
-drive &lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;test-pvpanic.qcow2,if&lt;span class="o"&gt;=&lt;/span&gt;none,id&lt;span class="o"&gt;=&lt;/span&gt;drive-virtio-disk0,format&lt;span class="o"&gt;=&lt;/span&gt;qcow2 &lt;span class="se"&gt;\&lt;/span&gt;
-device virtio-blk-pci,scsi&lt;span class="o"&gt;=&lt;/span&gt;off,bus&lt;span class="o"&gt;=&lt;/span&gt;pci.0,addr&lt;span class="o"&gt;=&lt;/span&gt;0x5,drive&lt;span class="o"&gt;=&lt;/span&gt;drive-virtio-disk0,id&lt;span class="o"&gt;=&lt;/span&gt;virtio-disk0 &lt;span class="se"&gt;\&lt;/span&gt;
-vnc :0 &lt;span class="se"&gt;\&lt;/span&gt;
-device cirrus-vga,id&lt;span class="o"&gt;=&lt;/span&gt;video0,bus&lt;span class="o"&gt;=&lt;/span&gt;pci.0,addr&lt;span class="o"&gt;=&lt;/span&gt;0x2 &lt;span class="se"&gt;\&lt;/span&gt;
-
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[1] https://github.com/qemu/qemu/blob/master/docs/specs/pvpanic.txt&lt;/p&gt;
&lt;p&gt;[2] pvpanic plans?&lt;a href="http://thread.gmane.org/gmane.comp.emulators.qemu/229289"&gt;http://thread.gmane.org/gmane.comp.emulators.qemu/229289&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 05 Dec 2013 17:27:19 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-12-05:/2013/12/new-device-pvpanic-in-qemu/</guid><category>virt</category><category>qemu</category><category>command</category><category>shell</category><category>device</category></item><item><title>青岛两日游（下）</title><link>https://www.gfrog.net/2013/09/tour-of-qingdao-c/</link><description>&lt;p&gt;第二天一早，首先的目的地就是超市，仰慕已久的崂山可乐怎么能不来一发呢。&lt;/p&gt;
&lt;p&gt;甜甜的红枣味，还满好喝的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/DZ9-0ibw1T_z8dX_lm0t9kA2A8YySvrokSZ4ug63T8w4GFE1pnLcpENw2lzyuUn2fuf9wI4QZ4vXo22k-m4B_yz2Rm18CtOuIiAC5MVKuOpz58xj0krZzLevQNoVyvGAeAym283mbAU=s640"&gt;&lt;/p&gt;
&lt;p&gt;超市采购完毕，赶奔轮渡码头，体验一下青岛到黄岛的轮渡。&lt;/p&gt;
&lt;p&gt;&lt;span class="mapbox"&gt;
    &lt;iframe width="640" height="480"
      frameborder="0" style="border:0;"
      src="https://www.google.com/maps/embed/v1/place?key=AIzaSyB63YDb3SVNe84KeNXPh5zIjJ_uwr5vsII&amp;q=Qingdao+Ferry+Station,+Qingdao,+Shandong&amp;maptype=roadmap"&gt;
    &lt;/iframe&gt;
&lt;/span&gt;
        &lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/xSSecThracPJl7md9611MGxSRmAX_tKvA06eNTt0w_wJND6ML_PPHpq7AcSjPKam1FoxXA5KjJtc7Q0_qQ5v_kfnX0A8NHAGvubZkE__6xEV6tD5FotytDpgQAJYhsmExobK6AAEuR4=s640"&gt;&lt;/p&gt;
&lt;p&gt;7块钱半小时，童叟无欺良心价。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/EXJvaNHmV1oCsnI32Bssm441_AM--XR_nTITynFib9vNpFwPfpGw9J9NyhxafGVs0hOdWPIHexJQ6hsM0m_ElJn-wXVmM7NhQUp9GE8hr6aocojPtEUq15bqiccR4Dyb5H8FZfywuc4=w640"&gt;&lt;/p&gt;
&lt;p&gt;大轮船。楼下走车，楼上走人。开闸放车了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/8PouBzAFonLueQ67D3zjmzOLhMmIjfEr4EohJIdPTpJivlG4TsKI2v7clcWivldLG5B9zSim2QSXnVOdP2023XAj7oclC4c8n2qZ_LRp9Aej9L16BYwwvG-7UHrX3_3szpJ6ZnCxH1o=w640"&gt;&lt;/p&gt;
&lt;p&gt;鲁胶渡2。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/kbidIdBbAHPcJqgdXHacpe2m1cUeGxCVdFLSAyQFa4HBtpkjI26oS43soS4XL6gOb-1YRPBDuJsomOctjnaW8ujkrJmnwejJJVQTvjqR-cfWTml-fhKVN-qUEmFQp9BQxdnS60dqJbc=s640"&gt;&lt;/p&gt;
&lt;p&gt;旁边的叫鲁胶渡7。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/JE4acQn_0pER6bMIwfukmJysOV4iw_0DKPih5hQQTJrD1IF1gVtpA_LDo9uZEFy8CO5WH8-1ArZUr_4HBBjbtdy84zGObZfOxRYkO3tzfz7pDlJzi-wEKBuAzmUqce2NERFpNcdtCYM=s640"&gt;&lt;/p&gt;
&lt;p&gt;搭轮渡的汽车也不少，不用绕行隧道，还能歇半小时。就是不知道船票价钱怎么样。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/dcPhkXPNCCi_Fkz3voWB3NPFIMQYRxAn5bQYoRGfMJyiaD3S4V5vwyj6xyl7xvC6YGzXEngG9nckUXNbDaRRhCJpVJzMaz4m0J6Q1GPhQeVvm2sF1eylb5wO1rNaxnfOyq0sd0aAXro=s640"&gt;&lt;/p&gt;
&lt;p&gt;开船，岸边高楼林立。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/3D3tXjuHp-nGWMZRnC-DAdGt03bvBCqq2EZNHEJPBjQ1C5hcdfDrEqiVzc9Qfs6o52jJz2AHkYJ-dtKEnJrmIhdYfj4N8IyahadbkFSJx7djrQlfB4GzTAYaCPjRWlJGg1VYa9fT5gU=s640"&gt;&lt;/p&gt;
&lt;p&gt;远远的一艘大轮船开进来。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/KKw_W935_Fw7JemsOUrXyZFlSZmBSDl1xD3r3vkl5aNVyRSzW_QoHzy3vRcNXLLxQ6uE1Vsa51n3fl7GEJiZVB8TqURcKf9FjnIu5_QiKEqhPtl_RnCSYjqHNMCBDML83U_YBwD91sM=s640"&gt;&lt;/p&gt;
&lt;p&gt;大轮船船舷豁了一块儿是什么道理？难道这船也是汽车滚装船？&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/tj9DesVDfomCCZYGZSW-QKujcOIejR9L1wpcT_VLTb5jEUSV0s0yWcEXfSiCYkGnDyaENhzOre_AkQbD3lplBheSFxChwXvwau3GHYzlZDePPW4S9B5sUKafVQ1i-iX5PphQIVAwUQM=s640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/sJsCxLOivtpJn-kgmPUw-tXeu1MlmQ-B9FYnZMctJjDHt_KB5RZjFu-tDx4fmd4vVYrT6M4k_W3DnFBYMDSfzDOqe1V3R-7YUzjmrnNgm6zLWrdqgLnJmbbpDBFcW4TIMnRoMXDQfWY=s640"&gt;&lt;/p&gt;
&lt;p&gt;准备收网的渔船，随着海浪起起伏伏。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/yc4F3gMXTUtr4Hcm06-jIo-07VN0v0VXvG0JHA2qwf5VUdsncAIma-Tse-LBgxDsvogr9ShVOURRwxn1drO6kh59iXoDFR5mdh4dLp3jABimFoKILpx7Lo7sXCbOsA_dKnZsC5ulhbA=s640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/QxR535c2Ul6lEwV-QVI1nn7w5dexUq3J7pXBW5Rrmi6aa3W8hIyBNcD0t2xI1D91m8SkmPpdnfD0tWOX5-TfG9Yv5UW5eWD0QJ-2UpN8rsd4Mi7UJwx1AkPKBMzbYWcLX6AkkX4kWwo=s640"&gt;&lt;/p&gt;
&lt;p&gt;看到一个大家伙，GC tanker，垃圾回收箱？&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/0GETmBaXBO-EPvycqrao5o9W86bzn4c4A0rsIc1vCYMcw8vrJgQl4mh2i_JGqg7zWEac2KMOeIEbhYKvxpOWFzj3_z_gRayAYrzpP-fZ4LLKtUSxqNMv9gVu3CWj26fpnnm3NoAlO8A=s640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/dQIopPZqDYNIupsV0DHmOK4Il8Tv-6Nd8kJc74b4Cm3Xp_uX65a4bmKnGtIfrKHum5SCZ1pwPfdoFlUYpzNIkPtkTAZxTKMz_hiyS9d-KYCLxE7H8pnAoe7__WvP18E8Tuq4s04h5XY=s640"&gt;&lt;/p&gt;
&lt;p&gt;屁股来一张，照片里感受不到山一样高的船的气息。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/ytCGz_nVxcwMxchjdQp7WSU-nWZDPKC3y0_zi_JvYYJQlO50FJyYIViCTJoiRB5tvykwjQR7lhwvsGFmroZkFy1brzyGTdy7FNkqa04nA2xgSJnXhRo3ZfcH6xI2NT19QsKUAsyv0E8=s640"&gt;&lt;/p&gt;
&lt;p&gt;黄岛那边不知道是做啥的工厂。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/qY5ksSuabnv1dVvZmlK6bGGdbsJC37IApKsuUN34DneHD4HmrcoJrqo_B-QrzlDdMVfVWpebTML1H67C50zFDvvzRMLpGCKxsnNlEv7C9FMD8LffN6xr6cmaP9Iux40cv0tGR1zVJiA=s640"&gt;&lt;/p&gt;
&lt;p&gt;黄岛轮渡站到达。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/B8K31uAeGBzLAECPQyGs-BKvVd7qEHSf-hpwb6I-QondzFULdXcXjXTz0Tqd1wxdhzKCzHpoMJr--cBayJCLZI42hohPkORqzD0Op6wh542AbJKVfff7sUq3Ru7VLMBOxqJQYiissBE=w640"&gt;&lt;/p&gt;
&lt;p&gt;从黄岛下船之后，青蛙又坐公交回到青岛。下一站就是圣弥爱尔大教堂。&lt;/p&gt;
&lt;p&gt;&lt;span class="mapbox"&gt;
    &lt;iframe width="640" height="480"
      frameborder="0" style="border:0;"
      src="https://www.google.com/maps/embed/v1/place?key=AIzaSyB63YDb3SVNe84KeNXPh5zIjJ_uwr5vsII&amp;q=Catholic+Cathedral+of+St.+Michael+Earl,+Qingdao&amp;maptype=roadmap"&gt;
    &lt;/iframe&gt;
&lt;/span&gt;
        &lt;/p&gt;
&lt;p&gt;路遇嗨嘤嘤海产品批发。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/9feVFT_n4W2zdrmZTh7LN0la-YjBGYaTKIwiYIOt2wjuuxRTHMVWNSaBF-j_neKVyg5ZkHXEI15BE3RUY4cFXucxcQfxQxkZecntG2avxNp9ZF37l0WvC75td-kYnkMp1dQuXfuDpjw=s640"&gt;&lt;/p&gt;
&lt;p&gt;西行漫记没看过，续更没看过。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/dlz6oKFRmj6r98TdHbH4FepLrbnB5NPu0EhNkWaaxhUTBuwVuS2_x9NotX8gJ-X9OOPnA-FFfM6hD63p76h7Ak2f9jQ5f8xg07D0yhAW2JYqgqE6WuhF8x6e-ADoelbzHXT60OU0BsE=w640"&gt;&lt;/p&gt;
&lt;p&gt;遇见教堂，和横店电影城……&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/qM7qlmp-s-osfF-NhnwmftZVfeBTEQEemojuL7Eq_7q625zLAdTZrpyhT7rQcr50rgRJlyAb5szgbyNZkmMGt3aefcsEAb4DmkCPw1yU_Vhmcu5AAo5SbIETAcDfrRAsVHdPkA9CGV4=w640"&gt;&lt;/p&gt;
&lt;p&gt;很大很气派。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/18zFYz1j39gkfLsMivS53hF93Ob3IY7zAMdhfEiT-A1m2OHArCwlgISqDedrr29yg-ucflNZBtZWgO1RCYjGQPL1Us5FgAYqQmna-Wpc7xAvKy2Avx3O9a1G5RPSzugfZgvYThN6uo4=w640"&gt;&lt;/p&gt;
&lt;p&gt;又遇到好几对拍婚纱照的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/Ys0Rc4z6ayOunlyzVvkKeLqDFaTmuTwtQQ0-XQEoDDY12K1xfga64VUXlsWN5_aM-5am-V7MatYhdfiuYibFqm_sfrt1dkTUnzRqu_PyU9gEIszqCQSL_zyESV0DLmMbHuQ-JshfUBY=w640"&gt;&lt;/p&gt;
&lt;p&gt;教堂没有开放，不知道为什么。不能进去参观了，遗憾。&lt;/p&gt;
&lt;p&gt;从教堂出来，时间差不多了，准备赶奔车站，
在路上遇到了青岛的另外一大特产：崂山啤酒，青蛙很想带一打回家，可惜太沉了，作罢。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/lFJaPzuq2oNjlrdsmQw_buRUdp4Dr3CYzAkYUbMebDub3Hhy0rYjR-VEWgML7DmoOqPkh3jIWW8ZLCGdxT-Fy2JEo4gqpoPAOwoUqahzvPezAQBVQHzoTsmxBDEl7WOocms_i8Fv_gM=w640"&gt;&lt;/p&gt;
&lt;p&gt;青岛站的候车大厅也很有欧式气派啊。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/ChQ2r-sLdqZeMjgM8QMD6wJNiUMlN6367T249bGnqicA7WdcRDhSYy4qc1RUrGKqyOFrtR6S-tVgEyl6ip6qVR-8GGryX1lIg3R2msKBfpJkqZpyruKbFrdYtesZ_N8Nm5Qs1defnbc=s640"&gt;&lt;/p&gt;
&lt;p&gt;进站，上车。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/Q5M5JKjjHMcZf2BADq3Z7zLaOrGHS7u2mkGDlPg0tQdTCMl4jCtLqahZIkNnsyUCszzr7NnSIffCtMGN8is7GprcDBaicKF_AAN__rERIxELu7fgHATiuGt14fwytCfY1yZM45lMZZ8=s640"&gt;&lt;/p&gt;
&lt;p&gt;动车上路遇大雨，不过完美躲过。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/USQSEB2qc5-AED5VVV6M37bduDehN_DJ6Q6TA3zbA0jwxfEkqA06Kqq7BU-DxSLmg5pD_ejH0RY--8inMFopESIaAqLGhVvdIA1m1I2wokdybcRhjYeZY0B4Q-O-6bm2QAdDc5a99sg=s640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/d_qFL_MQRO8doz3RAvazF0lExOqs8J9xLP-FLrhZVFT89e3DTX8Zx1kFO2d-5h7ZlSOt_NTdIjBt1tsTeTHta2cEda42A6GYS_MhadBj-zz0OxxCWuwjdGvq-kvHjfC7SVnpngdpk1A=w640"&gt;&lt;/p&gt;
&lt;p&gt;安全抵达帝都南站。
周末两天时间紧迫，只是匆匆逛了一下青岛。
以后有机会再去青岛继续探索吧。&lt;/p&gt;
&lt;p&gt;&lt;a href="/2013/09/tour-of-qingdao-a/"&gt;青岛两日游 上篇&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/2013/09/tour-of-qingdao-b/"&gt;青岛两日游 中篇&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 09 Sep 2013 21:08:41 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-09-09:/2013/09/tour-of-qingdao-c/</guid><category>travel</category><category>qingdao</category><category>shandong</category><category>pictures</category><category>ship</category><category>ferry</category><category>huangdao</category></item><item><title>青岛两日游（中）</title><link>https://www.gfrog.net/2013/09/tour-of-qingdao-b/</link><description>&lt;p&gt;其实从八大关回市区的路上还发生了杯具，
青蛙本以为原路返回就行了，结果来的时候这条路是单行线，既没公交，也没办法打车。
在地图上查了下路不远，于是决定腿着回去。&lt;/p&gt;
&lt;p&gt;不过腿着走就发现了好东西 —— 海军博物馆。
虽然青蛙不是个军事迷，但是有大军舰在这摆着，还是很想去看看的。&lt;/p&gt;
&lt;p&gt;&lt;span class="mapbox"&gt;
    &lt;iframe width="640" height="480"
      frameborder="0" style="border:0;"
      src="https://www.google.com/maps/embed/v1/place?key=AIzaSyB63YDb3SVNe84KeNXPh5zIjJ_uwr5vsII&amp;q=Naval+Museum,+Qingdao&amp;maptype=roadmap"&gt;
    &lt;/iframe&gt;
&lt;/span&gt;
        &lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh6.googleusercontent.com/-B98oG0Oma4o/UjLkNZt-OcI/AAAAAAAAOAc/s3DAdTOpYB8/s640/IMG_1338.JPG"&gt;&lt;/p&gt;
&lt;p&gt;门前的古炮，虽然牌子上写的是道光年间的，但是青蛙猜测真的文物估计不会就这么摆在大门口吧。
而且它的成色很新呢，lol&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh4.googleusercontent.com/-MJ9GPqcuf2Q/UjLkNVMYYgI/AAAAAAAAOAc/_KSid8Cf92M/s640/IMG_1339.JPG"&gt;&lt;/p&gt;
&lt;p&gt;门票，50羊。可惜这个116不在博物馆里。&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh5.googleusercontent.com/-O64p2ox66uk/UjLkNSJFxSI/AAAAAAAAOAc/i8ZQuWTAXbY/s640/IMG_1340.JPG"&gt;&lt;/p&gt;
&lt;p&gt;这飞机不知道是啥型号，大概是个水上飞机。今天时间有限，岸上的飞机基本没看，直奔105舰。&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh3.googleusercontent.com/-wm5oS8exx48/UjLkNcRPbJI/AAAAAAAAOAc/GtyUttHOPz4/s640/IMG_1341.JPG"&gt;&lt;/p&gt;
&lt;p&gt;105舰，就是“济南”舰，是051型驱逐舰的首舰，Wiki page 在&lt;a href='#ref1'&gt;[1]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" src="https://lh6.googleusercontent.com/-ozkpQXAldPg/UjLkNWsibhI/AAAAAAAAOAc/icQZAW9CeA4/s640/IMG_1342.JPG"&gt;&lt;/p&gt;
&lt;p&gt;正在摆弄机枪的小伙伴。&lt;/p&gt;
&lt;p&gt;&lt;img alt="6" src="https://lh3.googleusercontent.com/-LnzxDP3j_Mc/UjLkNVK3ebI/AAAAAAAAOAc/79PlswC4wf4/s640/IMG_1344.JPG"&gt;&lt;/p&gt;
&lt;p&gt;105退役的时候把能拆的都拆了，能剪的线也都剪了，于是驾驶仓一片乱糟糟，青蛙也就不拍了。
来一张坐在驾驶台上眺望的照片算了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="7" src="https://lh3.googleusercontent.com/-FP87WUzc09Y/UjLkNZsrEMI/AAAAAAAAOAc/HtruSYnC2O4/w640/IMG_1347.JPG"&gt;&lt;/p&gt;
&lt;p&gt;正面的火箭发射器和主炮。&lt;/p&gt;
&lt;p&gt;&lt;img alt="8" src="https://lh6.googleusercontent.com/-4s9tdYjuvLU/UjLkNT26c2I/AAAAAAAAOAc/t-cA4BsoWDc/s640/IMG_1348.JPG"&gt;&lt;/p&gt;
&lt;p&gt;130口径。&lt;/p&gt;
&lt;p&gt;&lt;img alt="9" src="https://lh4.googleusercontent.com/--z8rJ3QCInk/UjLkNS8wnhI/AAAAAAAAOAc/QLtr8q8YeEE/s640/IMG_1351.JPG"&gt;&lt;/p&gt;
&lt;p&gt;导弹发射架的说明，不过看这个牌子，就可以理解为什么这些船需要经常维护了。大概海水或者雨水的腐蚀过于严重。&lt;/p&gt;
&lt;p&gt;&lt;img alt="10" src="https://lh5.googleusercontent.com/-jQpUw5v_r2A/UjLkNVQtiXI/AAAAAAAAOAc/4InhbHOqRK8/s640/IMG_1352.JPG"&gt;&lt;/p&gt;
&lt;p&gt;531舰舷号。531是我国第一艘携带舰对空导弹的护卫舰， Wiki page 在&lt;a href='#ref2'&gt;[2]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="11" src="https://lh5.googleusercontent.com/-L7WBdk6mc_Q/UjLkNWRRSlI/AAAAAAAAOAc/LBmuDemKxzQ/s640/IMG_1345.JPG"&gt;&lt;/p&gt;
&lt;p&gt;531引以为傲的小导弹，lol&lt;/p&gt;
&lt;p&gt;&lt;img alt="12" src="https://lh4.googleusercontent.com/-RMbQx-s49HE/UjLkNfnA41I/AAAAAAAAOAc/VOdyKsncm6w/s640/IMG_1343.JPG"&gt;&lt;/p&gt;
&lt;p&gt;很不巧的是531舰正好处于维护中，没法上去参观，只能在105和101上远远的看几眼了。&lt;/p&gt;
&lt;p&gt;从105舰上下来，太阳已经快落山了，于是青蛙只能匆匆在101舰上转一圈。&lt;/p&gt;
&lt;p&gt;101舰说明介绍，Wiki page 在&lt;a href='#ref3'&gt;[3]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="13" src="https://lh4.googleusercontent.com/-_BR58ACpz4M/UjLkNe3MAhI/AAAAAAAAOAc/_Wj0WXtlyWw/s640/IMG_1353.JPG"&gt;&lt;/p&gt;
&lt;p&gt;未完待续...&lt;/p&gt;
&lt;p&gt;&lt;a href="/2013/09/tour-of-qingdao-a/"&gt;青岛两日游 上篇&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/2013/09/tour-of-qingdao-c/"&gt;青岛两日游 下篇&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;参考资料：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[&lt;a name='ref1'&gt;1&lt;/a&gt;] &lt;a href="http://zh.wikipedia.org/wiki/051%E5%9E%8B%E9%A9%B1%E9%80%90%E8%88%B0"&gt;051型驱逐舰&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[&lt;a name='ref2'&gt;2&lt;/a&gt;] &lt;a href="http://zh.wikipedia.org/wiki/053K%E5%9E%8B%E6%8A%A4%E5%8D%AB%E8%88%B0"&gt;053K型护卫舰&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[&lt;a name='ref3'&gt;3&lt;/a&gt;] &lt;a href="http://zh.wikipedia.org/wiki/%E9%9E%8D%E5%B1%B1%E7%BA%A7%E9%A9%B1%E9%80%90%E8%88%B0"&gt;鞍山级驱逐舰&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 09 Sep 2013 16:05:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-09-09:/2013/09/tour-of-qingdao-b/</guid><category>travel</category><category>train</category><category>qingdao</category><category>shandong</category><category>pictures</category><category>navy</category><category>museum</category></item><item><title>青岛两日游（上）</title><link>https://www.gfrog.net/2013/09/tour-of-qingdao-a/</link><description>&lt;p&gt;去青岛的计划，青蛙已经酝酿很久了，可惜迟迟没法行动。
眼看秋天就来了，再不动弹天气就凉了，于是心一横，无论如何今年也要去一次青岛。&lt;/p&gt;
&lt;p&gt;首先就是往返车票的问题，北京站到青岛的车只有G和D了，生活在在这个被高铁的时代的
穷游党真是太不幸了。还好之&lt;a href="http://www.weibo.com/mnoz"&gt;MnOz&lt;/a&gt;曾经说过黄村站还有
一趟去青岛的普速车K709。但是8月21号订票的时候，黄村到青岛的卧铺票已经卖光了。
本着死活都要出去玩态度的青蛙一咬牙一跺脚，干脆多花了70多大洋，买了前几站丰镇
的车票。虽然还是比动车便宜，不过心还是淌血啊。&lt;/p&gt;
&lt;p&gt;一晚上卧铺，顺利抵达青岛地界。&lt;/p&gt;
&lt;p&gt;K709在青岛四方站技术停车将近办小时，站外的小山上挂满了青岛的著名品牌。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/-YyOxlo27ZCo/UjLkNfnTqYI/AAAAAAAAOAc/16lZ8OJjIKI/s640/IMG_1287.JPG"&gt;&lt;/p&gt;
&lt;p&gt;抵达青岛：&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh3.googleusercontent.com/-asqyKIQvoIs/UjLkNVgjFvI/AAAAAAAAOAc/r29YDzT9S6Y/s640/IMG_1288.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh3.googleusercontent.com/-WlneEQCZ5AU/UjLkNRlDyhI/AAAAAAAAOAc/pqCvPMBh7L0/s640/IMG_1289.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh6.googleusercontent.com/-ehmw6lFrMSA/UjLkNZYekoI/AAAAAAAAOAc/MQtjP6Qmt0E/w640/IMG_1291.JPG"&gt;&lt;/p&gt;
&lt;p&gt;听说青岛的下水道很有名：&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" src="https://lh6.googleusercontent.com/-z8jc5Rn8Shc/UjLkNRx2WgI/AAAAAAAAOAc/o1so9Dq386A/s640/IMG_1290.JPG"&gt;&lt;/p&gt;
&lt;p&gt;下车直奔车站对面的长途汽车站，寻觅去崂山的汽车，
结果被告知每天去崂山只有早上8点一班车，我们来的太晚了，想去崂山请明天赶早。&lt;/p&gt;
&lt;p&gt;没办法，只能临时更改行程，去掉游崂山的计划，改成2天青岛市内游览。&lt;/p&gt;
&lt;p&gt;先去麦当当填饱肚子。
高端大气的楼梯，请原谅我这个帝都土鳖没在麦当当见过这么宽的楼梯：&lt;/p&gt;
&lt;p&gt;&lt;img alt="6" src="https://lh3.googleusercontent.com/-lZQ8YBb2e6g/UjLkNRyLQDI/AAAAAAAAOAc/9bp6-rwiWHY/s640/IMG_1292.JPG"&gt;&lt;/p&gt;
&lt;p&gt;吃完早午饭，先去栈桥转转。
结果遇上栈桥在整修，没法上去，妈蛋，只好远眺了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="7" src="https://lh5.googleusercontent.com/-hmUBGWOBnv4/UjLkNSoJg7I/AAAAAAAAOAc/mgXKDL8OyiI/s640/IMG_1295.JPG"&gt;&lt;/p&gt;
&lt;p&gt;栈桥旁边的海滩，礁石上都是海蛎子啊海蛎子。&lt;/p&gt;
&lt;p&gt;&lt;img alt="8" src="https://lh3.googleusercontent.com/-4pp3akSSE8Q/UjLkNfHDtaI/AAAAAAAAOAc/-coOwMqylJk/s640/IMG_1296.JPG"&gt;&lt;/p&gt;
&lt;p&gt;海滩上密密麻麻的海蛎子&lt;/p&gt;
&lt;p&gt;&lt;img alt="9" src="https://lh4.googleusercontent.com/-1MNpJL6G664/UjLkNd1MCpI/AAAAAAAAOAc/ubwpy2X4qik/w640/IMG_1298.JPG"&gt;&lt;/p&gt;
&lt;p&gt;来张全景，Google+自动生成的全景完全hold不住照片亮度差异问题。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-uKvJKuOJjVo/UjLkNfczWzI/AAAAAAAAOAc/r-Mm78M7lao/s2400/IMG_1298-PANO.jpg"&gt;&lt;img alt="10" src="https://lh3.googleusercontent.com/-uKvJKuOJjVo/UjLkNfczWzI/AAAAAAAAOAc/r-Mm78M7lao/s640/IMG_1298-PANO.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;路边的欧式建筑&lt;/p&gt;
&lt;p&gt;&lt;img alt="11" src="https://lh6.googleusercontent.com/-EK4VcCLXsng/UjLkNfsezqI/AAAAAAAAOAc/2SBibomNqG8/s640/IMG_1314.JPG"&gt;&lt;/p&gt;
&lt;p&gt;路过德国监狱旧址，据说里面超级无聊，就不进去了，在外头看看算了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="12" src="https://lh4.googleusercontent.com/-1nvxfSnwyig/UjLkNacUrqI/AAAAAAAAN1k/EMf4AFD7TRQ/w640/IMG_1315.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="13" src="https://lh3.googleusercontent.com/-VSq6zWiRYDs/UjLkNQFTlTI/AAAAAAAAOAc/oo1xvs18EzM/w640/IMG_1316.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="14" src="https://lh4.googleusercontent.com/-TPaJtbR8CKU/UjLkNdzUlhI/AAAAAAAAOAc/D4MLc8JN1nU/w640/IMG_1317.JPG"&gt;&lt;/p&gt;
&lt;p&gt;既然崂山计划取消，那第一天就直奔八大关耍。&lt;/p&gt;
&lt;p&gt;&lt;span class="mapbox"&gt;
    &lt;iframe width="640" height="480"
      frameborder="0" style="border:0;"
      src="https://www.google.com/maps/embed/v1/place?key=AIzaSyB63YDb3SVNe84KeNXPh5zIjJ_uwr5vsII&amp;q=Ba+Da+Guan+Jing+Qu,+Qingdao&amp;maptype=roadmap"&gt;
    &lt;/iframe&gt;
&lt;/span&gt;
        &lt;/p&gt;
&lt;p&gt;下车，紫荆关路口。&lt;/p&gt;
&lt;p&gt;&lt;img alt="15" src="https://lh4.googleusercontent.com/-m1DF5snfeSg/UjLkNYvUpvI/AAAAAAAAOAc/6Uis5Qn0wmA/w640/IMG_1318.JPG"&gt;&lt;/p&gt;
&lt;p&gt;八大关&lt;/p&gt;
&lt;p&gt;&lt;img alt="16" src="https://lh3.googleusercontent.com/-tnphYWEuqWA/UjLkNQzzzpI/AAAAAAAAOAc/6fjRWWRwyL8/w640/IMG_1319.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="17" src="https://lh5.googleusercontent.com/-oH3-H-34SNQ/UjLkNaOlZoI/AAAAAAAAOAc/l76EJyXRvS8/s640/IMG_1322.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="18" src="https://lh3.googleusercontent.com/-VyiIYI-rydE/UjLkNaVrggI/AAAAAAAAOAc/Qsz-VMUX2Ao/s640/IMG_1320.JPG"&gt;&lt;/p&gt;
&lt;p&gt;顺紫荆关路一路像南，就到了花石楼门口。
从前蒋总统曾经住过这里，建国后陈毅也在这住过。
门口售票，票价7羊。&lt;/p&gt;
&lt;p&gt;&lt;img alt="19" src="https://lh3.googleusercontent.com/-J_YHzX99Hwg/UjLkNdxviMI/AAAAAAAAOAc/PgT7DLNoIeY/w640/IMG_1323.JPG"&gt;&lt;/p&gt;
&lt;p&gt;花石楼内部全景&lt;/p&gt;
&lt;p&gt;一层&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh5.googleusercontent.com/-Uzy_RDA-kKo/UjM6qdtsWrI/AAAAAAAAOAA/149RdxMcyyc/s2400/IMG_1394.JPG"&gt;&lt;img alt="20" src="https://lh5.googleusercontent.com/-Uzy_RDA-kKo/UjM6qdtsWrI/AAAAAAAAOAA/149RdxMcyyc/s640/IMG_1394.JPG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh4.googleusercontent.com/-8a84SoU-8bI/UjM6qe_TD5I/AAAAAAAAOAE/yDtUeeoRH6M/s2400/IMG_1395.JPG"&gt;&lt;img alt="21" src="https://lh4.googleusercontent.com/-8a84SoU-8bI/UjM6qe_TD5I/AAAAAAAAOAE/yDtUeeoRH6M/s640/IMG_1395.JPG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;二层&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-LzIgxjqVS1c/UjM6qajqxfI/AAAAAAAAOAE/g9HQxpNgMHQ/s2400/IMG_1397.JPG"&gt;&lt;img alt="22" src="https://lh3.googleusercontent.com/-LzIgxjqVS1c/UjM6qajqxfI/AAAAAAAAOAE/g9HQxpNgMHQ/s640/IMG_1397.JPG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh5.googleusercontent.com/-bVQ77faO8j4/UjM6qQ8oc3I/AAAAAAAAOAA/gsdbw6QANQ8/s2400/IMG_1398.JPG"&gt;&lt;img alt="23" src="https://lh5.googleusercontent.com/-bVQ77faO8j4/UjM6qQ8oc3I/AAAAAAAAOAA/gsdbw6QANQ8/s640/IMG_1398.JPG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh3.googleusercontent.com/-7D0vDlsqQls/UjM6qcqqMtI/AAAAAAAAOAA/YuaOnhhLBQI/s2400/IMG_1399.JPG"&gt;&lt;img alt="24" src="https://lh3.googleusercontent.com/-7D0vDlsqQls/UjM6qcqqMtI/AAAAAAAAOAA/YuaOnhhLBQI/s640/IMG_1399.JPG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;三层&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh5.googleusercontent.com/-zZkH8heebHY/UjM6qYE4AsI/AAAAAAAAOAA/tC_Sf7de96A/s2400/IMG_1400.JPG"&gt;&lt;img alt="25" src="https://lh5.googleusercontent.com/-zZkH8heebHY/UjM6qYE4AsI/AAAAAAAAOAA/tC_Sf7de96A/s640/IMG_1400.JPG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh4.googleusercontent.com/-L8fmcvDb3hk/UjM6qRQDJqI/AAAAAAAAOAE/V81IiaqIrL8/s2400/IMG_1403.JPG"&gt;&lt;img alt="26" src="https://lh4.googleusercontent.com/-L8fmcvDb3hk/UjM6qRQDJqI/AAAAAAAAOAE/V81IiaqIrL8/s640/IMG_1403.JPG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh5.googleusercontent.com/-4iroTm-pu1I/UjM6qQRwVXI/AAAAAAAAOAA/Ef2QfhlgI3c/s2400/IMG_1404.JPG"&gt;&lt;img alt="27" src="https://lh5.googleusercontent.com/-4iroTm-pu1I/UjM6qQRwVXI/AAAAAAAAOAA/Ef2QfhlgI3c/s640/IMG_1404.JPG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;顶层露台&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lh6.googleusercontent.com/-OMRCikwBvrU/UjM6qblZ7mI/AAAAAAAAOAA/mCtERGAC1w8/s2400/IMG_1402.JPG"&gt;&lt;img alt="28" src="https://lh6.googleusercontent.com/-OMRCikwBvrU/UjM6qblZ7mI/AAAAAAAAOAA/mCtERGAC1w8/s640/IMG_1402.JPG"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;站在花石楼上远眺海滩。现在这个季节大概是青岛人少景色又好的季节，拍婚纱照的也扎堆儿。&lt;/p&gt;
&lt;p&gt;&lt;img alt="29" src="https://lh4.googleusercontent.com/-QqTJGZ7QVzM/UjLkNUMkX9I/AAAAAAAAOAc/PolU2LDCeZI/s640/IMG_1325.JPG"&gt;&lt;/p&gt;
&lt;p&gt;出花石楼沿山海关路向西，在正阳关二支路往北拐，走到居庸关路上，就是公主楼了。
这座小楼据说是为了迎接某个公主到达青岛而建的，但是目前处在关闭状态，没法参观。
只好拍拍外面的树叶。&lt;/p&gt;
&lt;p&gt;&lt;img alt="30" src="https://lh3.googleusercontent.com/-zbACjqClZPs/UjLkNawPqtI/AAAAAAAAOAc/D_fhpa9MRgA/w640/IMG_1327.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="31" src="https://lh6.googleusercontent.com/-uDTKCmUTHkw/UjLkNVmyx4I/AAAAAAAAOAc/cqyPGnhSTIg/s640/IMG_1328.JPG"&gt;&lt;/p&gt;
&lt;p&gt;在八大关一直待到太阳向西，说来这个地方很适合假日休闲或者带妹纸来拍些小清新的片子，
游览的话，看过两个楼之后就可以撤退了。&lt;/p&gt;
&lt;p&gt;海边随手拍，金色的大海：&lt;/p&gt;
&lt;p&gt;&lt;img alt="32" src="https://lh3.googleusercontent.com/-J1gj_Ap_6C0/UjLkNfIzRfI/AAAAAAAAOAc/_OjCyyC_7JI/w640/IMG_1333.JPG"&gt;&lt;/p&gt;
&lt;p&gt;路过水族馆，但是时间不够，没法进去看看了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="33" src="https://lh3.googleusercontent.com/-3gQdq_wf71E/UjLkNYxT9tI/AAAAAAAAOAc/8gnFG5-2MDE/w640/IMG_1337.JPG"&gt;&lt;/p&gt;
&lt;p&gt;未完待续...&lt;/p&gt;
&lt;p&gt;&lt;a href="/2013/09/tour-of-qingdao-b/"&gt;青岛两日游 中篇&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="/2013/09/tour-of-qingdao-c/"&gt;青岛两日游 下篇&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 09 Sep 2013 15:05:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-09-09:/2013/09/tour-of-qingdao-a/</guid><category>travel</category><category>train</category><category>qingdao</category><category>shandong</category><category>pictures</category></item><item><title>探访鸡鸣驿</title><link>https://www.gfrog.net/2013/07/outing-jiming-dak-in-hebei/</link><description>&lt;p&gt;青蛙这周有点感冒的迹象，所以没法出去得瑟骑车，只好搞点简单的户外活动了。
昨天跟&lt;a href="http://www.weibo.com/mnoz"&gt;MnOz&lt;/a&gt;商量着走丰沙线，顺路逛一下传说中的鸡鸣驿。&lt;/p&gt;
&lt;p&gt;话说这个鸡鸣驿，还真是大有来头。大话西游最后那段城墙激吻，就是在这拍的。
传说亮剑里李云龙轰掉的那个城门楼，也是鸡鸣驿的西门。&lt;/p&gt;
&lt;p&gt;原计划是周六早上坐S2到沙城那班车S287，到沙城下，然后换乘公交到鸡鸣驿的。
结果到了北京北站一看，排队坐S2的队伍已经里三层外三层了，车站广播里一直
在叫唤着下一班S2已经是10点多的了。周末去郊区旅游的人还真是多。&lt;/p&gt;
&lt;p&gt;没办法，只好赶奔德胜门换乘公交，880到下花园然后往回走到鸡鸣驿。&lt;/p&gt;
&lt;p&gt;880的始发站在德胜门的东南角，青蛙今天坐的是去下花园的支线。
8点多点儿到的时候站牌下面已经排了好长的队伍了。还好上车之后还剩了最后排
的两个座位，不然又得等下一趟车。&lt;/p&gt;
&lt;p&gt;有公交卡的话车票20羊，这是河北段的车票，北京段的直接刷卡，4.8羊。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh4.googleusercontent.com/-3jDGwQ0tq5o/UeK8UhlDQFI/AAAAAAAAMvg/Sr2bUqYFtgs/s640/IMG_0935.JPG"&gt;&lt;/p&gt;
&lt;p&gt;沿G6出六环，到昌平，一路顺畅。这辆公交在昌平西关停了一下，但是车上已经
坐满了，没人上车。&lt;/p&gt;
&lt;p&gt;在居庸关之前，G6上毫无意外的堵车了。
公交车走走停停，很是难受。&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh3.googleusercontent.com/-aTQ1uwc8Vmo/UeK8UgY2HSI/AAAAAAAAMvg/EhCoeJfFsvw/s640/IMG_0938.JPG"&gt;&lt;/p&gt;
&lt;p&gt;爬过八达岭之后突然就不堵车了，估计还是因为某些大卡车在八达岭之前的爬坡
路段爬不动，导致整体车流都很慢。&lt;/p&gt;
&lt;p&gt;路过官厅水库， 两岸密密麻麻的都是大风车，好看的很。不过青蛙坐在里排，
一直没抓到拍风车的机会，发张蓝天碧水铁路桥凑数吧。&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh4.googleusercontent.com/-OsxwEMbV-aU/UeK8Urk_f-I/AAAAAAAAMvo/WTuvXuRrt5g/s640/IMG_0940.JPG"&gt;&lt;/p&gt;
&lt;p&gt;880在途中停一站官厅服务区，然后继续向前就是河北怀来了。&lt;/p&gt;
&lt;p&gt;河北的山，跟北京的明显不同，高了不少，都是石头，都没树。但是天依旧很蓝。&lt;/p&gt;
&lt;p&gt;今天真是个适合出游的好天气！&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh4.googleusercontent.com/-wPCGLaFILKU/UeK8UoKDbTI/AAAAAAAAMvo/U41PdzoMixU/s640/IMG_0943.JPG"&gt;&lt;/p&gt;
&lt;p&gt;880的车站就在下花园高速出口不远，离城区还有一段距离，虽然有城里的小公交
做摆渡，但是需要等很久。于是车站门口遍地都是出租车和黑车。&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" src="https://lh4.googleusercontent.com/-i-_BmDRaa6A/UeK8UliHqQI/AAAAAAAAMvo/Dt6PZTchig4/s640/IMG_0945.JPG"&gt;&lt;/p&gt;
&lt;p&gt;我们刚出来刚好有个司机在吆喝去鸡鸣驿，我们上去打听，20块，到鸡鸣驿城墙下。
反正不知道当地是啥价钱，但是跟帝都比这价格真不算贵，上车走起。&lt;/p&gt;
&lt;p&gt;在出租车上颠了20来分钟，就到鸡鸣驿了。&lt;/p&gt;
&lt;p&gt;这是西北角的碉楼。正在翻修。&lt;/p&gt;
&lt;p&gt;&lt;img alt="6" src="https://lh5.googleusercontent.com/-HJNPsyG97vs/UeK8UoZQVLI/AAAAAAAAMvo/7C7VfiQOof8/s640/IMG_0947.JPG"&gt;&lt;/p&gt;
&lt;p&gt;门票40羊。看到这价格我们转身就走。虽然这是国家级的历史遗迹，
但是40羊的门票真是不便宜。&lt;/p&gt;
&lt;p&gt;&lt;img alt="7" src="https://lh4.googleusercontent.com/-20ohX7_DVes/UeK8Uj9zNpI/AAAAAAAAMvo/E5YGzwzx_c4/s640/IMG_0949.JPG"&gt;&lt;/p&gt;
&lt;p&gt;转过身来，拍一张鸡鸣山。这座山在鸡鸣驿的西北方向，鸡鸣驿就是以此山得名。
至于为啥叫鸡鸣山，青蛙没找到资料。&lt;/p&gt;
&lt;p&gt;据说山背面有防火道可以上山，不过这座山不在今天的日程安排里。&lt;/p&gt;
&lt;p&gt;&lt;img alt="8" src="https://lh3.googleusercontent.com/-42tiL25TZw0/UeK8UnzmO7I/AAAAAAAAMvo/tvqCKmKVwxE/s640/IMG_0951.JPG"&gt;&lt;/p&gt;
&lt;p&gt;东城墙，虽然有过修补，不过大部分还是当年的墙砖。&lt;/p&gt;
&lt;p&gt;&lt;img alt="9" src="https://lh6.googleusercontent.com/-Roj-RlOBehw/UeK8UlVxttI/AAAAAAAAMvo/1jx52XeKgj4/s640/IMG_0953.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="10" src="https://lh5.googleusercontent.com/-NNLCgkGrQJo/UeK8Ujskw6I/AAAAAAAAMvk/zIu34wt-NTk/s640/IMG_0955.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="11" src="https://lh3.googleusercontent.com/-azHrwXhJAd4/UeK8Up1upmI/AAAAAAAAMvk/j3MFnHZTYSU/s640/IMG_0957.JPG"&gt;&lt;/p&gt;
&lt;p&gt;东城门&lt;/p&gt;
&lt;p&gt;&lt;img alt="12" src="https://lh3.googleusercontent.com/-tHn3_h0H2jI/UeK8UmyeH0I/AAAAAAAAMvo/YL20AzdSEOk/s640/IMG_0961.JPG"&gt;&lt;/p&gt;
&lt;p&gt;门口的铭牌。全国重点文物保护单位。&lt;/p&gt;
&lt;p&gt;&lt;img alt="13" src="https://lh5.googleusercontent.com/-2j4NBtvJgTk/UeK8UsjMtkI/AAAAAAAAMvk/qaLV2I3TD5Y/s640/IMG_0959.JPG"&gt;&lt;/p&gt;
&lt;p&gt;在这我们遇到了一个大爷，自称就是鸡鸣驿村儿里人，可以带我们直接进去。
两个人，50羊，附带导游。这大爷还特意强调讲解完毕再付钱，童叟无欺。lol&lt;/p&gt;
&lt;p&gt;我们同意之后，这大爷告诉我们从某条路去某个门，然后他在那个门口等我们。&lt;/p&gt;
&lt;p&gt;在城外老房子上看到的标语。&lt;/p&gt;
&lt;p&gt;&lt;img alt="14" src="https://lh3.googleusercontent.com/-v7ezE3Plgrc/UeK8UpEK0GI/AAAAAAAAMvk/2bC92bP5ptA/s640/IMG_0963.JPG"&gt;&lt;/p&gt;
&lt;p&gt;鸡鸣驿城里现存的景点就是几座庙宇和原来的驿馆。但是青蛙对庙和拜神这种事
完全不感兴趣，通通免进。出来随手拍拍路吧。&lt;/p&gt;
&lt;p&gt;鸡鸣驿原本只有东西门，后来不知道什么时候，又在南北方向上各开了一个小门。&lt;/p&gt;
&lt;p&gt;东西门之间的大街和东城门。&lt;/p&gt;
&lt;p&gt;&lt;img alt="15" src="https://lh3.googleusercontent.com/-yBdJIijLFc0/UeK8UteqhLI/AAAAAAAAMvo/c7k8pa353FQ/s640/IMG_0965.JPG"&gt;&lt;/p&gt;
&lt;p&gt;西城门，各种电影电视剧都在这拍啊，有木有眼熟的感觉？&lt;/p&gt;
&lt;p&gt;&lt;img alt="16" src="https://lh3.googleusercontent.com/-OFWjv8VYA24/UeK8UnEuuKI/AAAAAAAAMvo/kavjllKsn5A/s640/IMG_0967.JPG"&gt;&lt;/p&gt;
&lt;p&gt;驿馆的遗址。现在里面已经成了民居，没法进去看了。据后来我们遇到的以为
老大爷说，当年鸡鸣驿的驿馆有6进院子，但是现在只剩下前后院，还成了民居。&lt;/p&gt;
&lt;p&gt;驿馆后边是之前的养马场，现在已经全盖满民房了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="18" src="https://lh6.googleusercontent.com/-IxiLpuyb3Zw/UeK8UvpRDyI/AAAAAAAAMvk/lKDU0wS0aLQ/s640/IMG_0969.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="19" src="https://lh4.googleusercontent.com/-zlvqvgg5ybc/UeK8UiRncUI/AAAAAAAAMvk/wSrlZxZae7Y/s640/IMG_0971.JPG"&gt;&lt;/p&gt;
&lt;p&gt;在一个院子里，青蛙发现了这么一堆破石头。这些大多都是当年在各个院子里
的石碑，在某个年代被砸碎之后，都扔在这了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="20" src="https://lh4.googleusercontent.com/-2i_E8FnUcpA/UeK8UqlLKFI/AAAAAAAAMvo/w9V5_fJEI7c/s640/IMG_0979.JPG"&gt;&lt;/p&gt;
&lt;p&gt;很多石碑上的字已经没法认了。挑两个勉强还能看出来的落款拍拍。&lt;/p&gt;
&lt;p&gt;&lt;img alt="21" src="https://lh6.googleusercontent.com/-uwMBK7Av5mk/UeK8Upz1i5I/AAAAAAAAMvo/81hDy2yGI0A/s640/IMG_0975.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="22" src="https://lh6.googleusercontent.com/-7qTEnwTCmmw/UeK8Unwt9aI/AAAAAAAAMvo/tdsMTls9Y0o/s640/IMG_0977.JPG"&gt;&lt;/p&gt;
&lt;p&gt;驿学门前的辘辘，井里的水早就干了。现在城里的居民都有自来水，也用不着
这种水井了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="23" src="https://lh5.googleusercontent.com/-z4hQjvL7qYk/UeK8UkPEjUI/AAAAAAAAMvo/MsDud3XPeP0/s640/IMG_0983.JPG"&gt;&lt;/p&gt;
&lt;p&gt;驿学，文昌宫。明显是翻修过的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="24" src="https://lh5.googleusercontent.com/-5BtRqY_5HM0/UeK8UhuEYKI/AAAAAAAAMvo/iX_JvQMEilI/s640/IMG_0985.JPG"&gt;&lt;/p&gt;
&lt;p&gt;泰山行宫，这座庙也被翻新过。但是庙里还保存这几十幅明代和清代的连环壁画。
因为青蛙对庙敬而远之，所以没有照片。&lt;/p&gt;
&lt;p&gt;&lt;img alt="25" src="https://lh5.googleusercontent.com/-QLnvyraJTx0/UeK8Uru45yI/AAAAAAAAMvo/KWfCmtrc94E/s640/IMG_0987.JPG"&gt;&lt;/p&gt;
&lt;p&gt;到这之后，城里的古迹就转完了，跟导游老人家寒暄几句，交钱闪人，爬到城墙
上看看。&lt;/p&gt;
&lt;p&gt;从东城墙上看城里和鸡鸣山。&lt;/p&gt;
&lt;p&gt;&lt;img alt="26" src="https://lh3.googleusercontent.com/-NAJbmRlgoYc/UeK8UnnOBlI/AAAAAAAAMvo/olp2RN9HBxU/s640/IMG_0989.JPG"&gt;&lt;/p&gt;
&lt;p&gt;东城墙，城门楼是翻修过的。我们爬上去的时候东南角的角楼也正在翻修。&lt;/p&gt;
&lt;p&gt;&lt;img alt="27" src="https://lh5.googleusercontent.com/-GC2DXQO_q3g/UeK8UpkMQMI/AAAAAAAAMvo/AR46XM36hHE/s640/IMG_0991.JPG"&gt;&lt;/p&gt;
&lt;p&gt;从南城看城内。这里几乎家家都有枣树。&lt;/p&gt;
&lt;p&gt;&lt;img alt="28" src="https://lh6.googleusercontent.com/-pJX05rGn4AY/UeK8UgBZnlI/AAAAAAAAMvk/pZOUMCIZt3w/s640/IMG_0993.JPG"&gt;&lt;/p&gt;
&lt;p&gt;南城墙，也是修复过的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="29" src="https://lh5.googleusercontent.com/-SX5MdKc8O9E/UeK8Um1QFRI/AAAAAAAAMvk/Ke0Ci-LxnWc/s640/IMG_0995.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="30" src="https://lh4.googleusercontent.com/-NwkPGdhQYb0/UeK8UpEP5EI/AAAAAAAAMvk/Gyv8IDLiH1I/s640/IMG_0997.JPG"&gt;&lt;/p&gt;
&lt;p&gt;西城墙和城门楼。为神马青蛙看大话西游的时候不记得里面有山呢……&lt;/p&gt;
&lt;p&gt;&lt;img alt="31" src="https://lh4.googleusercontent.com/-432smlywPQ4/UeK8Ur3jHaI/AAAAAAAAMvo/_FDbr-_5_GQ/s640/IMG_0999.JPG"&gt;&lt;/p&gt;
&lt;p&gt;城西南角的城隍庙，正在拆房顶准备翻修。
这真是跑到关老爷头顶上动土来了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="32" src="https://lh4.googleusercontent.com/-UimPewOtYQw/UeK8UrRPXII/AAAAAAAAMvk/XQmSzNMMRS0/s640/IMG_1001.JPG"&gt;&lt;/p&gt;
&lt;p&gt;从西城门看城内。青蛙发现一个很有意思的现象。这里的两个城门竟然不是正对着的。
中国古代筑城不是很讲究对称嘛，为什么这两个城门不直对着，而且路也是歪的呢？&lt;/p&gt;
&lt;p&gt;&lt;img alt="33" src="https://lh4.googleusercontent.com/-bkloToWDV3k/UeK8Un53dcI/AAAAAAAAMvo/ZC9iMLznIkE/s640/IMG_1004.JPG"&gt;&lt;/p&gt;
&lt;p&gt;西城门，这估计是当年的老物件儿，竟然还能竖在这。&lt;/p&gt;
&lt;p&gt;&lt;img alt="34" src="https://lh4.googleusercontent.com/-wSszR2IH6g0/UeK8UtJn15I/AAAAAAAAMvs/yS2L-hfpZHs/s640/IMG_1006.JPG"&gt;&lt;/p&gt;
&lt;p&gt;出城，在城外看一眼西城门。为毛一点都不像大话西游的场景呢。电影里那个好像是土城啊。
好吧，据&lt;a href="http://zh.wikipedia.org/wiki/%E9%B8%A1%E9%B8%A3%E9%A9%BF"&gt;维基百科&lt;/a&gt; 说大话西游这事儿其实是个误传。&lt;/p&gt;
&lt;p&gt;&lt;img alt="35" src="https://lh6.googleusercontent.com/-D5qZlSxzUEY/UeK8Un_l3AI/AAAAAAAAMvo/BQxF772Yjds/s640/IMG_1012.JPG"&gt;&lt;/p&gt;
&lt;p&gt;鸡鸣驿城参观结束。爬到城北的路边拦中巴车赶奔沙城。
这条路上中巴车似乎很多，到沙城票价5羊。&lt;/p&gt;
&lt;p&gt;中巴在沙城到沙城汽车站，直接向南走就是沙城火车站了。如果不想走，6块钱打车过去即可。&lt;/p&gt;
&lt;p&gt;在到沙城站之前的一个小路口有那家传说中的喜来乐包子。
不过今天青蛙来的不巧，据说店里在装修，没有营业。&lt;/p&gt;
&lt;p&gt;&lt;img alt="36" src="https://lh5.googleusercontent.com/-9NzqCaTSCyM/UeK8Us24aJI/AAAAAAAAMvo/qrRXGf8kECg/s640/IMG_1018.JPG"&gt;&lt;/p&gt;
&lt;p&gt;沙城站&lt;/p&gt;
&lt;p&gt;&lt;img alt="37" src="https://lh4.googleusercontent.com/-ijMwbXhdnvg/UeK8Umsf8BI/AAAAAAAAMvk/dhA_v3KxCGo/s640/IMG_1020.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="38" src="https://lh6.googleusercontent.com/-TydQdNSji34/UeK8UliljEI/AAAAAAAAMvk/0yQHxwmfxnk/s640/IMG_1021.JPG"&gt;&lt;/p&gt;
&lt;p&gt;K7702水牌，超级大套跑。&lt;/p&gt;
&lt;p&gt;&lt;img alt="39" src="https://lh6.googleusercontent.com/-7FDLPHOja3k/UeK8UhKxr5I/AAAAAAAAMvo/7sCnXWoeNdk/s640/IMG_1022.JPG"&gt;&lt;/p&gt;
&lt;p&gt;丰沙线上的绿皮车几乎被消灭干净了，坐K车的话很多小站直接通过了。很无趣。&lt;/p&gt;
&lt;p&gt;丰沙线沿着永定河一路南下，一面是山，一面是水，风景很是不错。&lt;/p&gt;
&lt;p&gt;不过青蛙今天坐的是靠山这面，车离山太近，基本来不及拍照片。只简单扫了几张。&lt;/p&gt;
&lt;p&gt;&lt;img alt="40" src="https://lh5.googleusercontent.com/-H9mw__EERyY/UeK8UmNkTUI/AAAAAAAAMvo/3AjhN_tKB1o/s640/IMG_1024.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="41" src="https://lh4.googleusercontent.com/-D1J6-bAgcF8/UeK8UhRTBoI/AAAAAAAAMvk/L245dQ2cSHc/s640/IMG_1025.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="42" src="https://lh4.googleusercontent.com/-NSijRyOSSrI/UeK8UqNHoUI/AAAAAAAAMvk/dbdSDNpB5_M/s640/IMG_1027.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="43" src="https://lh5.googleusercontent.com/-Wpcw_KEs2cE/UeK8UlzkntI/AAAAAAAAMvo/1XAgPtn8kwM/s640/IMG_1028.JPG"&gt;&lt;/p&gt;
&lt;p&gt;车到三家店，过永定河。&lt;/p&gt;
&lt;p&gt;&lt;img alt="44" src="https://lh4.googleusercontent.com/-PLo6kCq7GMQ/UeK8Uo1XMbI/AAAAAAAAMvo/41i__0X9Law/s640/IMG_1031.JPG"&gt;&lt;/p&gt;
&lt;p&gt;然后过丰台，7点40多，进北京西。&lt;/p&gt;
&lt;p&gt;一天游览结束。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 06 Jul 2013 23:41:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-07-06:/2013/07/outing-jiming-dak-in-hebei/</guid><category>travel</category><category>bus</category><category>hebei</category><category>pictures</category></item><item><title>一张流：大连造船厂</title><link>https://www.gfrog.net/2013/06/pic-of-dsic/</link><description>&lt;p&gt;原来停潜艇的地方停了两艘在建的货船。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh5.googleusercontent.com/-Ce0dwZ0c-44/UbrBhUw5a9I/AAAAAAAAMTA/1Keyv9bITfo/s640/6813F5F4-89B3-49A7-AF37-95C30F99B7A0.JPG"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 13 Jun 2013 15:12:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-06-13:/2013/06/pic-of-dsic/</guid><category>pictures</category></item><item><title>体验哈大高铁</title><link>https://www.gfrog.net/2013/06/travel-to-dalian-by-crh/</link><description>&lt;p&gt;端午假期，青蛙因为算错了放假的日子，结果没有买到从北京直接去大连的车票。
于是只好动车回沈阳，然后从沈阳坐高铁去大连。
不过歪打正着，正好体验下提速之后的哈大高铁。&lt;/p&gt;
&lt;p&gt;目测哈大高铁提速之后没有太明显的晃动，当然节约的时间其实并不多，
从冬天时候的2.5小时变成了夏天的2小时。
不过经过隧道的时候耳朵有很明显的疼痛。&lt;/p&gt;
&lt;p&gt;车票，特等座要比二等座贵将近一倍&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh5.googleusercontent.com/-5MRkhsq207U/UbqpdwjvDBI/AAAAAAAAMSs/y_SGGCsGGQI/s640/D6139FFE-B4FF-4B57-AA21-AFDB8F56E184.JPG"&gt;&lt;/p&gt;
&lt;p&gt;沈阳北站里动车的赠水处，在候车室最里面，难怪我之前几次都没找到。&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh6.googleusercontent.com/-CtyF3E6KO6k/UbqpdxvkxzI/AAAAAAAAMSg/rlKkrWkqkLg/s640/CD548031-A81F-4587-B249-5E269E0ED57A.JPG"&gt;&lt;/p&gt;
&lt;p&gt;沈阳北站站牌。&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh3.googleusercontent.com/-l1fIm9L8ErI/UbqpdwkVgUI/AAAAAAAAMSg/cjDS4Qa2dX4/s640/EF67A829-3538-4795-9755-D7B6B3F44AAB.JPG"&gt;&lt;/p&gt;
&lt;p&gt;座席，是红色的，坐起来倒还满舒服，但是两人座位这边，中间的扶手还是只有一个，同时坐满有点挤。&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh3.googleusercontent.com/-_IuZAV8IRAo/Ubqpd7dBSgI/AAAAAAAAMSk/1WvBdDtxWXU/s640/8355F229-2185-4B6C-9ED5-157383684A2B.JPG"&gt;&lt;/p&gt;
&lt;p&gt;紧挨着司机室，甚至可以听到里面传出来路况信息通告和列车员在对讲机上喊话的声音。&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" src="https://lh4.googleusercontent.com/-yZ0vePaHl3g/Ubqpd0VGB1I/AAAAAAAAMSg/8YmOPKnoNvk/s640/544D82FC-07B0-4AB7-AD0F-CA0261FA93F1.JPG"&gt;&lt;/p&gt;
&lt;p&gt;小桌板，这张拍虚了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="6" src="https://lh6.googleusercontent.com/-YvZpTGC3fYE/Ubqpdx1QExI/AAAAAAAAMSg/qSejAz4pqrw/s640/6F2B35AE-4F04-445A-8AFA-400DAB8B6B45.JPG"&gt;&lt;/p&gt;
&lt;p&gt;其实特等坐没必要在候车室领水，车上列车员还会再发水的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="7" src="https://lh3.googleusercontent.com/-71T0tP9dqwE/Ubqpd4Qdn7I/AAAAAAAAMSg/I-k53PGjvA8/s640/9D202B04-5E9F-4BCD-86B0-2C60FFE4FC61.JPG"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 10 Jun 2013 23:11:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-06-10:/2013/06/travel-to-dalian-by-crh/</guid><category>travel</category><category>train</category><category>highspeed</category><category>crh</category><category>pictures</category></item><item><title>一张流：北京站</title><link>https://www.gfrog.net/2013/06/pic-of-beijing-railway-station/</link><description>&lt;p&gt;两列高铁同站台停车。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh4.googleusercontent.com/-CgbGkgBvBBE/UbrEavW_V8I/AAAAAAAAMTY/hAiHDPHX7S0/s640/BBE22D99-EFD7-4100-A043-8BE877AFFA91.JPG"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 09 Jun 2013 23:29:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-06-09:/2013/06/pic-of-beijing-railway-station/</guid><category>pictures</category></item><item><title>马牌微型尾包</title><link>https://www.gfrog.net/2013/06/continental-saddle-bag/</link><description>&lt;p&gt;青蛙早想着收一个尾包装工具和备胎，可惜淘宝搜到的包儿都很大，不太适合公路党用。
虽然公路党理论上不应该绑个包在车上，但是青蛙这种没有后援的屌丝只能用这方法带
工具了。&lt;/p&gt;
&lt;p&gt;前几天水木车版上有大牛给推荐了一个小尾包，据说很小巧。青蛙立即淘宝之。&lt;/p&gt;
&lt;p&gt;到手之后虽然不像想象中的那么小，但是还算不错，比常规尾包小了很多。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/-yvsCk4rzwDw/UbqLnVlPrBI/AAAAAAAAMSA/bTdw4jZDqNo/s640/AEB58EB8-1CBA-42C1-8DBE-E2A4D710B3BA.JPG"&gt;&lt;/p&gt;
&lt;p&gt;而且内附内胎一枚，撬胎棒两只。内胎还是马牌儿自家的，着实不错。&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh6.googleusercontent.com/-tkuzs5PAYq8/UbqLnUyOvgI/AAAAAAAAMSA/4TH3WC9MphA/s640/2BC20AF2-B6CC-43C6-B291-F3C7BE5C2C55.JPG"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 08 Jun 2013 23:05:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-06-08:/2013/06/continental-saddle-bag/</guid><category>bicycle</category><category>shopping</category><category>picture</category><category>bags</category></item><item><title>一张流：蔷薇</title><link>https://www.gfrog.net/2013/05/pic-of-rosebush/</link><description>&lt;p&gt;&lt;img alt="1" src="https://lh4.googleusercontent.com/-sU5yoVFtkz4/Uayy5Ir3jwI/AAAAAAAAMWA/Q0Lzl6XR5bw/s640/215CB45D-E38E-4856-BA39-63190D693D0D.JPG"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 25 May 2013 16:02:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-05-25:/2013/05/pic-of-rosebush/</guid><category>pictures</category><category>flowers</category></item><item><title>酱油党之奥园笔记20130515</title><link>https://www.gfrog.net/2013/05/riding-olympic-park-0515/</link><description>&lt;p&gt;今天晚上继续奥园。天气明显没有昨天给力，稍微有点冷，而且东南风严重。
骑到五环辅路和奥体东路上明显感觉到迎面吹来的大风，然后就各种流泪，
各种看不清路。近视党骑车就是这么杯催，弄得我再一次有换隐形眼镜的想法了。&lt;/p&gt;
&lt;p&gt;今晚在奥园的人不多，也可能青蛙去的比较晚，反正刷圈儿的寥寥几个人。&lt;/p&gt;
&lt;p&gt;晚上时间不多，来不及多刷，努力刷了两圈就闪人了。第一圈在奥体东路的红绿灯被拦住，损失20秒。轨迹：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.endomondo.com/workouts/190110837/1816111"&gt;http://www.endomondo.com/workouts/190110837/1816111&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第二圈前三公里前面几百米有两个人，于是青蛙一直在奋力追赶。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.endomondo.com/workouts/190115362/1816111"&gt;http://www.endomondo.com/workouts/190115362/1816111&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;看上面两条轨迹，每个拐弯的地方都会损失很多速度。青蛙目前还不敢用
公路压弯，真是比较丢人，囧。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 15 May 2013 22:20:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-05-15:/2013/05/riding-olympic-park-0515/</guid><category>bicycle</category><category>ridding</category></item><item><title>酱油党之奥园骑行笔记20130514</title><link>https://www.gfrog.net/2013/05/riding-olympic-park-0514/</link><description>&lt;p&gt;今天是今年第一次刷奥园。算起来比去年懒了很多，
去年3月初的时候就已经刷了好几次了，虽然北风呼啸，但是也很锻炼人。&lt;/p&gt;
&lt;p&gt;今年疏于锻炼的下场就是，虽然换车之后体力节省了很多，但是奥园一圈仍然需要12分半，真是猪一样了。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.endomondo.com/workouts/189633005/1816111"&gt;http://www.endomondo.com/workouts/189633005/1816111&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第一圈刷完，遇见枪兵，benying，49妹，稍微聊了一下，他们迅速撤退。青蛙一个人继续刷圈儿。&lt;/p&gt;
&lt;p&gt;奥园三圈共19.4km，用时41mins，匀速28.3 km/h。&lt;/p&gt;
&lt;p&gt;这个成绩比去年平时成绩还差，要抓紧锻炼了。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.endomondo.com/workouts/189637874/1816111"&gt;http://www.endomondo.com/workouts/189637874/1816111&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 14 May 2013 22:36:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-05-14:/2013/05/riding-olympic-park-0514/</guid><category>bicycle</category><category>ridding</category></item><item><title>Python Exception class中的args属性</title><link>https://www.gfrog.net/2013/05/args-in-python-exception/</link><description>&lt;p&gt;话说今天青蛙遇到了一个bug，在某个Exception里抛出了TypeError Exception，
青蛙仔细查了半天，才想到Exception有一个内置属性args，刚好跟这个Exception
定义中的args重名。&lt;/p&gt;
&lt;p&gt;首先看下这个Exception的定义：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;E&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__str__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;a = &lt;/span&gt;&lt;span class="si"&gt;%r&lt;/span&gt;&lt;span class="s2"&gt;, b = &lt;/span&gt;&lt;span class="si"&gt;%r&lt;/span&gt;&lt;span class="s2"&gt;, c = &lt;/span&gt;&lt;span class="si"&gt;%r&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;....&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;当这个Exception被触发时，又引发了一个TypeError：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;E&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;---------------------------------------------------------------------------&lt;/span&gt;
&lt;span class="ne"&gt;TypeError&lt;/span&gt;                                 &lt;span class="n"&gt;Traceback&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;most&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ipython&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;b57acf162917&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;----&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;E&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ipython&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fac85dd51acb&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="mi"&gt;2&lt;/span&gt;     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
      &lt;span class="mi"&gt;3&lt;/span&gt;         &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="mi"&gt;4&lt;/span&gt;         &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
&lt;span class="o"&gt;----&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;         &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
      &lt;span class="mi"&gt;6&lt;/span&gt;         &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
      &lt;span class="mi"&gt;7&lt;/span&gt;     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__str__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;

&lt;span class="ne"&gt;TypeError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;NoneType&amp;#39;&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;iterable&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这就是Exception的args属性在作怪了，如果把self.args的名字换一下，世界又恢复正常了。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;E&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__str__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;a = &lt;/span&gt;&lt;span class="si"&gt;%r&lt;/span&gt;&lt;span class="s2"&gt;, b = &lt;/span&gt;&lt;span class="si"&gt;%r&lt;/span&gt;&lt;span class="s2"&gt;, c = &lt;/span&gt;&lt;span class="si"&gt;%r&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;....&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;E&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;---------------------------------------------------------------------------&lt;/span&gt;
&lt;span class="n"&gt;E&lt;/span&gt;                                         &lt;span class="n"&gt;Traceback&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;most&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ipython&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;b57acf162917&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;----&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;E&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;E&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;背后的原因呢，就是Python不管这个args是啥，都会转换成一个tuple，
但是当args是一个NoneType，问题就来了。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;  &lt;span class="mi"&gt;17&lt;/span&gt; &lt;span class="cm"&gt;/*&lt;/span&gt;
&lt;span class="cm"&gt;  18  *    BaseException&lt;/span&gt;
&lt;span class="cm"&gt;  19  */&lt;/span&gt;
  &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="n"&gt;PyObject&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
  &lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="n"&gt;BaseException_new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PyTypeObject&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PyObject&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PyObject&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;kwds&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="mi"&gt;22&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="mi"&gt;23&lt;/span&gt;     &lt;span class="n"&gt;PyBaseExceptionObject&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="mi"&gt;24&lt;/span&gt;
  &lt;span class="mi"&gt;25&lt;/span&gt;     &lt;span class="n"&gt;self&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PyBaseExceptionObject&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;tp_alloc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="mi"&gt;26&lt;/span&gt;     &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="mi"&gt;27&lt;/span&gt;         &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="mi"&gt;28&lt;/span&gt;     &lt;span class="cm"&gt;/* the dict is created on the fly in PyObject_GenericSetAttr */&lt;/span&gt;
  &lt;span class="mi"&gt;29&lt;/span&gt;     &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;dict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="mi"&gt;30&lt;/span&gt;     &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;traceback&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;cause&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="mi"&gt;31&lt;/span&gt;
  &lt;span class="mi"&gt;32&lt;/span&gt;     &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;PyTuple_New&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="mi"&gt;33&lt;/span&gt;     &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="mi"&gt;34&lt;/span&gt;         &lt;span class="n"&gt;Py_DECREF&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="mi"&gt;35&lt;/span&gt;         &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="mi"&gt;36&lt;/span&gt;     &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="mi"&gt;37&lt;/span&gt;
  &lt;span class="mi"&gt;38&lt;/span&gt;     &lt;span class="nf"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PyObject&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="mi"&gt;39&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;找到原因，解决起来就很简单了。给args换个名字，一切ok。
当然编码时的坏习惯才是导致这种bug最大的根源，以后千万不能乱写变量名了。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 13 May 2013 13:09:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-05-13:/2013/05/args-in-python-exception/</guid><category>python</category><category>coding</category><category>script</category><category>programming</category></item><item><title>一张流：绿叶</title><link>https://www.gfrog.net/2013/04/-pic-of-green-leaves/</link><description>&lt;p&gt;真喜欢这种风格，绿色，阳光，生命，还有最关键的：希望。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh5.googleusercontent.com/-e9Cvxy2ampQ/UXTkS_FNS_I/AAAAAAAAKlc/TjpS8izTddw/s640/940302F2-B06E-44CA-BCCC-C32995614735.JPG"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 18 Apr 2013 15:21:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-04-18:/2013/04/-pic-of-green-leaves/</guid><category>pictures</category></item><item><title>Python中关于变量作用域的一些demo</title><link>https://www.gfrog.net/2013/04/some-demo-for-python-varients-scope/</link><description>&lt;p&gt;&lt;em&gt;其实青蛙不是很想在blog里面说编程方面的东西，毕竟青蛙自己只
是个半调子，怕言多有失。不过这次遇到了一个很常见又很有趣的
问题，记下一笔，权当取乐。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;话说上周一个同事在patch里面使用了一种比较hacker的方法[1]：&lt;/p&gt;
&lt;p&gt;使用定义list成员的方式把函数的局部变量传递给sub-function并
在sub-function修改其内容。&lt;/p&gt;
&lt;p&gt;这种做法被其他同事猛烈的抨击，实际上在python2.x中，因为语言
实现的问题，嵌套的子函数是没法直接写它的上层函数的变量的。&lt;/p&gt;
&lt;p&gt;这个问题之前在Team内部没有引起足够的重视，大家习以为常的在
子函数里直接给一个父函数的变量赋值，结果都是错的，这个赋值
操作会直接引发异常。&lt;/p&gt;
&lt;p&gt;有人总结了一下python嵌套子函数访问变量的行为[2]:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;In&lt;/span&gt; &lt;span class="nv"&gt;Python&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;.&lt;span class="nv"&gt;x&lt;/span&gt;, &lt;span class="nv"&gt;it&lt;/span&gt; &lt;span class="nv"&gt;is&lt;/span&gt; &lt;span class="nv"&gt;not&lt;/span&gt; &lt;span class="nv"&gt;possible&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;modify&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;non&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;variable&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;you&lt;/span&gt; &lt;span class="nv"&gt;have&lt;/span&gt; &lt;span class="nv"&gt;either&lt;/span&gt; &lt;span class="nv"&gt;read&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;only&lt;/span&gt; &lt;span class="nv"&gt;access&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;global&lt;/span&gt; &lt;span class="nv"&gt;or&lt;/span&gt; &lt;span class="nv"&gt;non&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;variable&lt;/span&gt;,
&lt;span class="nv"&gt;or&lt;/span&gt; &lt;span class="nv"&gt;read&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;write&lt;/span&gt; &lt;span class="nv"&gt;access&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;global&lt;/span&gt; &lt;span class="nv"&gt;variable&lt;/span&gt; &lt;span class="nv"&gt;by&lt;/span&gt; &lt;span class="nv"&gt;using&lt;/span&gt; &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;global&lt;/span&gt; &lt;span class="nv"&gt;statement&lt;/span&gt;,
&lt;span class="nv"&gt;or&lt;/span&gt; &lt;span class="nv"&gt;read&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;write&lt;/span&gt; &lt;span class="nv"&gt;access&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;variable&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;default&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;. 
&lt;span class="nv"&gt;That&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="s"&gt;s just the way it&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="nv"&gt;s&lt;/span&gt; &lt;span class="nv"&gt;been&lt;/span&gt; &lt;span class="nv"&gt;designed&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;probably&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;performance&lt;/span&gt; &lt;span class="nv"&gt;and&lt;/span&gt; &lt;span class="nv"&gt;purity&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;.

&lt;span class="nv"&gt;In&lt;/span&gt; &lt;span class="nv"&gt;Python&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;, &lt;span class="nv"&gt;the&lt;/span&gt; &lt;span class="nv"&gt;nonlocal&lt;/span&gt; &lt;span class="nv"&gt;statement&lt;/span&gt; &lt;span class="nv"&gt;has&lt;/span&gt; &lt;span class="nv"&gt;been&lt;/span&gt; &lt;span class="nv"&gt;introduced&lt;/span&gt; &lt;span class="nv"&gt;with&lt;/span&gt;
&lt;span class="nv"&gt;a&lt;/span&gt; &lt;span class="nv"&gt;similar&lt;/span&gt; &lt;span class="nv"&gt;effect&lt;/span&gt; &lt;span class="nv"&gt;to&lt;/span&gt; &lt;span class="nv"&gt;global&lt;/span&gt;, &lt;span class="nv"&gt;but&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;an&lt;/span&gt; &lt;span class="nv"&gt;intermediate&lt;/span&gt; &lt;span class="nv"&gt;scope&lt;/span&gt;.
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;青蛙根据上面的总结写了几个函数的demo，然后引发了更深入的讨论，
于是终于引出了PEP-3104[3]。&lt;/p&gt;
&lt;p&gt;这是青蛙最开始的例子，&lt;/p&gt;
&lt;p&gt;&lt;code&gt;f1()&lt;/code&gt;是最基本的函数调用，其中操作的foo也是f1内部的foo。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;f2()&lt;/code&gt;用到了global关键字，声明全局的foo变量，这是f2操作的就是全局
的foo了。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;f3()&lt;/code&gt;是错误的操作，子函数会直接抛出异常。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;f4()&lt;/code&gt;是使用list的方法避开命名空间的问题，因为在嵌套函数中依然可以
读取上层函数的变量，于是&lt;code&gt;sub_func&lt;/code&gt;可以访问到那个list foo，然后可以
进一步操作其成员。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;f5()&lt;/code&gt;实际上操作的还是全局的foo。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="ch"&gt;#!/usr/bin/python&lt;/span&gt;

&lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;I&amp;#39;m global&amp;quot;&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;f1&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;I&amp;#39;m a string&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in f1: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;f2&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;global&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;
    &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot; and modified in f2&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in f2: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;f3&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;I&amp;#39;m in f3&amp;quot;&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot; and modified in f3&amp;#39;s sub function&amp;quot;&lt;/span&gt;
            &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in sub_func of f3: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;
        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;oops in sub_func of f3: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;

    &lt;span class="n"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in f3: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;f4&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;I&amp;#39;m in f4&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot; and modified in f4&amp;#39;s sub function&amp;quot;&lt;/span&gt;
            &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in sub_func of f4: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;oops in sub_func of f4: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;

    &lt;span class="n"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in f4: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;f5&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;I&amp;#39;m in f5&amp;quot;&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="k"&gt;global&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot; and modified in f5&amp;#39;s sub function&amp;quot;&lt;/span&gt;
            &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in sub_func of f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;
        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;oops in sub_func of f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;

    &lt;span class="n"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;

&lt;span class="n"&gt;f1&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;f2&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;f3&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;f4&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;f5&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; 
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;在PEP-3104中，定义了一个&lt;code&gt;nonlocal&lt;/code&gt;关键字，这个字的作用就是声明
一个变量既不是&lt;code&gt;local&lt;/code&gt;的也不是&lt;code&gt;global&lt;/code&gt;的，而是上层函数（outer scope）
中的。&lt;/p&gt;
&lt;p&gt;但是在Python2.x中仍然没有这个&lt;code&gt;nolocal&lt;/code&gt;关键字，PEP-3104中也给出
了两种实现来解决这类问题：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="ch"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;f5&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
     &lt;span class="n"&gt;f5&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;I&amp;#39;m in f5&amp;quot;&lt;/span&gt;

     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
         &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
             &lt;span class="n"&gt;f5&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot; and modified in f5&amp;#39;s sub function&amp;quot;&lt;/span&gt;
             &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in sub_func of f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;f5&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt;
         &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
             &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;oops in sub_func of f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;

     &lt;span class="n"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
     &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;f5&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt;

&lt;span class="n"&gt;f5&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="ch"&gt;#!/usr/bin/python&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Namespace&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;pass&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;f5&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
     &lt;span class="n"&gt;ns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
     &lt;span class="n"&gt;ns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;I&amp;#39;m in f5&amp;quot;&lt;/span&gt;

     &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
         &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
             &lt;span class="n"&gt;ns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot; and modified in f5&amp;#39;s sub function&amp;quot;&lt;/span&gt;
             &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in sub_func of f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;ns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt;
         &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
             &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;oops in sub_func of f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;

     &lt;span class="n"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
     &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;ns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt;

&lt;span class="n"&gt;f5&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这两种方法本质上就是给变量bind到了其他地方（一个类成员，
一个函数成员）。这样在嵌套函数里可以访问一个全局的类的
成员来达到访问这个变量的目的。
本质上还是把变量扔进了&lt;code&gt;globals()&lt;/code&gt;，随意青蛙并不推崇这种
方式。&lt;/p&gt;
&lt;p&gt;而在上层函数定义list或者dict的方法，看起来hacker，所以
青蛙也不是太喜欢。&lt;/p&gt;
&lt;p&gt;青蛙自己的方式是把上层函数的变量作为参数传入嵌套函数，
然后在嵌套函数中把修改后的结果作为返回值返回。虽然这种
方法看起来像C，有点不pythonic，但是免去了那些命名空间
猜来猜去的麻烦。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;f5&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;I&amp;#39;m in f5&amp;quot;&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot; and modified in f5&amp;#39;s sub function&amp;quot;&lt;/span&gt;
            &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in sub_func of f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;
        &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;oops in sub_func of f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;

    &lt;span class="n"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sub_func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;foo in f5: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[1]. &lt;a href="http://stackoverflow.com/questions/6198709/how-do-i-change-nesting-functions-variable-in-the-nested-function"&gt;How do I change nesting function's variable in the nested function&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2]. &lt;a href="http://stackoverflow.com/questions/13282910/python-cant-access-nonlocal-variable-before-local-variable-is-defined-with-same"&gt;python can't access nonlocal variable before local variable is defined with same name&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3]. &lt;a href="http://www.python.org/dev/peps/pep-3104/"&gt;PEP-3104&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 15 Apr 2013 22:41:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-04-15:/2013/04/some-demo-for-python-varients-scope/</guid><category>python</category><category>coding</category><category>script</category><category>programming</category></item><item><title>图片：杏花开</title><link>https://www.gfrog.net/2013/03/pics-of-apricot-flower/</link><description>&lt;p&gt;帝都上个星期还在下雪，结果这星期花就突然开了。
春天来的太突然，真让人措手不及。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/QpGUToVhiN3uEPuNAh2neygB19vMfLRa0y0tHXMgk68rqRfMmEfK2Bac3ZLaEdZW0Fz25rHeXi6nGc-an6H5UzmsxSTnpG_qSD5RwYo0p-bvF9jCGChjodUeVyUUCQjLqdYotzeZz3o=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh3.googleusercontent.com/uYJ9yI-n-FiaPiyW3Eouge_swJTx5Vk9-YmnGbh_ASEQcXXpSXKvnTLBAB9g33bomHP_GzITy1lMAiKppnYxqtooljyZhlKW4QN2yO336S9Hz-bx1K2vF_2bDZRYRMUifdx2mUL85fA=s640"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 27 Mar 2013 22:23:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-03-27:/2013/03/pics-of-apricot-flower/</guid><category>pictures</category><category>flowers</category></item><item><title>东方红朝圣-20130323</title><link>https://www.gfrog.net/2013/03/riding-dongfanghong-201303023/</link><description>&lt;p&gt;新年东方红朝圣游，虽然换了新车，但是依旧萎靡，东方红仍然不及格。&lt;/p&gt;
&lt;p&gt;今年东方红山顶上竟然还有雪，比去年爬东方红气温低了很多。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh5.googleusercontent.com/-wo9lZZGE5OE/UVqfQRKh_yI/AAAAAAAAKZU/g-gm0mDKaLo/s640/B388B70B-76FD-4C0A-A1AD-DF301D54AFFE.JPG"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh6.googleusercontent.com/-0PgI4hcu_t8/UVqfQVBSlNI/AAAAAAAAKZM/09ghFONqRJE/s640/B3B26C3C-B234-4C16-AF43-7BB1D9ED13BB.JPG"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 23 Mar 2013 22:50:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-03-23:/2013/03/riding-dongfanghong-201303023/</guid><category>bicycle</category><category>riding</category><category>pictures</category></item><item><title>Wordpress转换到Octopress</title><link>https://www.gfrog.net/2013/03/convert-wordpress-to-octopress/</link><description>&lt;p&gt;今天青蛙下定决心干掉Wordpress了，不为别的，就因为
在大天朝访问Openshift不靠谱的连接状态。&lt;/p&gt;
&lt;p&gt;把Wordpress转换到Octopress这件事，对于天天泡在github
上的青蛙来说，实在是简单到爆了。github账户有了，ruby
运行环境有了，只要简单几步就够了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;按照 &lt;a href="http://octopress.org/docs/setup/"&gt;http://octopress.org/docs/setup/&lt;/a&gt;
    git clone回octopress代码，安装bundler，安装默认主题。&lt;/li&gt;
&lt;li&gt;按照 &lt;a href="http://octopress.org/docs/deploying/github/"&gt;http://octopress.org/docs/deploying/github/&lt;/a&gt; 
    在github上新建一个repo，名字取为"your_github_id.github.com"，在Octopress的目录中执行
    &lt;code&gt;rake setup_github_pages&lt;/code&gt;， 在提示符中填入这个新建的repo的git地址。&lt;/li&gt;
&lt;li&gt;然后
        rake generate
        rake deploy&lt;/li&gt;
&lt;li&gt;用浏览器访问"http://your_github_id.github.com"，应该就能看到Octopress的页面了。&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;记得要把源码（包括blog的markdown文件）提交到git repo里： 包括blog的markdown文件
        git add .
        git commit -m 'your message'
        git push origin source
    之后每次写完新post都需要做这个操作，以便保留原始文档方便日后编辑。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;编辑_config.yml文件，修改blog的title、author、email等等信息。
    &lt;a href="http://octopress.org/docs/configuring/"&gt;http://octopress.org/docs/configuring/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Octopress 配置好之后就是把Wordpress迁移过来了，青蛙找到了一个exitwp的工具：
    &lt;a href="https://github.com/thomasf/exitwp"&gt;https://github.com/thomasf/exitwp&lt;/a&gt;
    按照exitwp的README安装好之后，从wordpress导出xml格式的文章备份，首先用xmllint检查
    一下这个xml文档是不是有语法错误，特别是特殊字符之类。因为exitwp用了python的xml module，
    这个模块对某些错误极度敏感，所以要修正xmllint报出的所有错误才行。&lt;/li&gt;
&lt;li&gt;把这个xml扔进exitwp里面的wordpress-xml目录，执行exitwp，所有的wp post就会被转换成
    一个个markdown文件了。
    把这些markdown复制到octopress目录里的source/_posts下面，然后运行
    &lt;code&gt;rake generate &amp;amp;&amp;amp; rake deploy&lt;/code&gt; 就可以把Wordpress的post内容都迁移到Octopress上了。&lt;/li&gt;
&lt;li&gt;最后记得把这些markdown都扔进source branch里。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;目前青蛙还没解决的几个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Category的英文名字似乎没法编辑，青蛙还没找到相关的文档。&lt;/li&gt;
&lt;li&gt;Draft和private状态的文档还不清楚怎么转换。&lt;/li&gt;
&lt;li&gt;当post很多时（&amp;gt;1000），&lt;code&gt;rake generate&lt;/code&gt;需要运行相当长的时间，青蛙每次执行这个命令都需要2分钟+。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Update 2013-03-16:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Category的问题据说在Octopress2.1里面被解决了。&lt;/p&gt;
&lt;p&gt;青蛙从2.1的branch上backport了一个patch到master，终于解决了中文category名字的问题。
patch在：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/gfrog/gfrog.github.com/commit/60212ee17766e8ba84f81cfdc3f36ef992ae6fb1"&gt;https://github.com/gfrog/gfrog.github.com/commit/60212ee17766e8ba84f81cfdc3f36ef992ae6fb1&lt;/a&gt;
没有经过完整测试，不过目前使用状况良好。&lt;/p&gt;
&lt;p&gt;目前Category的写法为 &lt;code&gt;- Category link[Category Name]&lt;/code&gt;，从而完美搞定中文分类名的问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2013-04-03:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;补充一些Octopress用法的问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;新建post： &lt;code&gt;rake new_post["Post标题"]&lt;/code&gt;，
    不过permalink似乎比较难修改，在markdown里写slug似乎无效，只能修改markdown文件名。&lt;/li&gt;
&lt;li&gt;codeblock 的用法： &lt;a href="http://octopress.org/docs/plugins/codeblock/"&gt;http://octopress.org/docs/plugins/codeblock/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;修改header menu： 编辑 source/_includes/custom/navigation.html&lt;/li&gt;
&lt;li&gt;添加Header image： 编辑 sass/custom/_styles.scss，加入：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;header&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;banner&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="k"&gt;background-image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sx"&gt;/images/header_bg.png&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
     &lt;span class="k"&gt;background-repeat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;no-repeat&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 08 Mar 2013 21:11:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-03-08:/2013/03/convert-wordpress-to-octopress/</guid><category>site</category><category>setup</category><category>configuration</category><category>wordpress</category><category>octopress</category><category>ruby</category><category>git</category><category>github</category></item><item><title>办公室的花</title><link>https://www.gfrog.net/2013/03/pics-of-flowers-in-office/</link><description>&lt;p&gt;这几天办公室的前台摆了一盆蝴蝶兰，真是美爆了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/Za01wWeZbZ3msUSE4zVuSKhp4W2QGxt_t6a3Hi4A8-_Pl1AC5NRR5XJorQ0UsfAwQw56QuBu7KJJ650IN_nWTSpTN-b4aX7DgUfjTIztHYObu06MM9KaQNdnIaoVvjI0wmHQbaiMfUU=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh3.googleusercontent.com/umL8BwCJ7nhBx1_ZK6VmdGH8kUwYtqOyweINAsKKYWqQcOQ_2_kAU3nPNfZvJaqw928eQs5csOZVF777PHTtkd0qj8jMakej7LC0KQqrGdeCgWAzIBvi__Y1YLCIwUyFKJRyh1XrdnM=s640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh3.googleusercontent.com/w3JADy4WjRDFHmrBUbDDZy-iKxHJ4fW-6qnNlFVkl3Lo9J37MsXzsB-HAKPGkJm-cPE5h60uyZPijhN-CIdTj4viPt90P5rHnkvwNpThgu9An-OlCNZYhBl_mUIszECeUiSN2Ko9pKs=s640"&gt;&lt;/p&gt;
&lt;p&gt;不过，摆在工位上的花花草草就悲惨的多。
因为办公室温度太高，这些刚搬过来的植物显然不太适应，
瞅瞅，昨天刚搬来的时候还是绿油油的，今天就成了这个样子：&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh3.googleusercontent.com/nvcA3aGbRQLT4dIu16gW1pbLOecHX32GVCmL1o0sGUK54k3Iby-tv5MS2rPUXq-VWpDVwjg2zxOwofZLYJXoHBJWkKlfSt9Oy-o6oX9I77ZgrtVPAO23hoPQv2VaGEPloCBW47DzOnE=w640"&gt;&lt;/p&gt;
&lt;p&gt;现在办公室的温度湿度真是太不适合生物生存了。 -___-&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 04 Mar 2013 22:07:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-03-04:/2013/03/pics-of-flowers-in-office/</guid><category>pictures</category><category>flowers</category></item><item><title>终于入了公路车</title><link>https://www.gfrog.net/2013/01/2013-01-30-new-road-bike-focus/</link><description>&lt;p&gt;纠结了良久，终于下手买了公路车。&lt;/p&gt;
&lt;p&gt;新车是去年款的Focus Focus Izalco Team Ergoride 3.0 Force 2012，
英国直邮过来，被海关拦住叫了400羊的税。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/RM0VJjn8l0OrszIO8qahhAk3w67v8YGJYG8NJxZ-yQMa-DKYX1wPnJZ7eN2hNuw2GfJhp0kKpyewDKR2Jc39TuCkD_4UIUPE7tqHFiyjav3HLb6lzMOaX7Br25dIdiJcu2py2hXw_d0=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/7_jOJTz_nDoC-roq6YXmxbmgRF1P9WTB7RMNT72Psu4UuJh0fsAn4cfQWETxfCgtgmBLZ_2AyeHj3VlYzzBL2bq1wAEPJWXMpunpchnruJ9kigXAIpeWeYaXvudxjbqFzdpIQH3R42o=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh3.googleusercontent.com/fqk-RYteESHtF-0LyzbSzNhU0nCCy56bDMAFyAJWmAlI-cX2WahU3lAr274c6yPbjqUgrcuh6fa72ZSHzrdShK2Kjqhq_oJgnOQ2xsc0jNtYNqdMELrFA3GtVmQjXXceVyWMHNSuzss=w640"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh3.googleusercontent.com/P44vgGU5oOpv0mNUA2xKS0tWgcYoaIPR7Ob17rGo6ZFQkao_uT6VvYFHxUA1iI-obKk3ub6_x-FYvdAvWyqHUQT5oSfoxogU29MW0Z32EJfA5rJjbprKZC1MGMKqlnyl0tKRSHyziZo=w640"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 30 Jan 2013 21:17:25 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-01-30:/2013/01/2013-01-30-new-road-bike-focus/</guid><category>bicycle</category><category>shopping</category><category>pictures</category><category>road</category></item><item><title>我们来打洞：转发DNS包</title><link>https://www.gfrog.net/2013/01/foward-dns-packet-with-tunnel/</link><description>&lt;p&gt;基于某些众所周知的原因，在天朝上网非常需要勇气和技术。
今天在跟某人聊天时了解到Chrome竟然没办法使用proxy进行DNS查询&amp;lt;1&amp;gt;， 导致DNS查询结果持续被污染。
虽然用proxychains能把一切流量塞进代理里面，
不过用proxychains启动浏览器的话，各种自动代理插件就失效了，所以这是个得不偿失的方法。
青蛙晚上的时候突然想到iptables是不是可以把DNS查询流量转发进ssh tunnel呢？
上网google一番之后，发现这是可行的，而且其实用不到iptables，只要nc就够了。&lt;/p&gt;
&lt;p&gt;要用SSH Tunnel转发DNS流量，最大的问题是要把DNS协议使用的UDP协议转换为TCP协议，然后在proxy端还要转换回来。
所以目前青蛙想到的方案有一个很大的缺陷，就是如果ssh服务器上不提供nc命令的话，下面的操作是没法完成的。&lt;/p&gt;
&lt;p&gt;首先，用SSH连接ssh服务器，这里青蛙打了一套组合拳，ssh -L + -D组合，分别负责DNS流量和普通数据流量：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;ssh&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D1080&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nl"&gt;L5353&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;5353&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;user&lt;/span&gt;&lt;span class="nv"&gt;@ssh&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;-L 参数的目的是在本地机器上打开一个5353端口，发送到这个端口的数据都会被转发到ssh服务器上的5353端口上。&lt;/p&gt;
&lt;p&gt;然后，在ssh服务器上执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;server$&lt;/span&gt; &lt;span class="n"&gt;mkfifo&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fifo&lt;/span&gt;
&lt;span class="n"&gt;server$&lt;/span&gt; &lt;span class="n"&gt;nc&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;5353&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fifo&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;nc&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="mi"&gt;53&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fifo&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这两条命令用普通用户就可以执行，在大部分ssh服务器上应该都可以用。
另外&amp;lt;2&amp;gt;中还提供了一个socat版本，这个东东可以省去创建fifo管道的步骤，
看起来比较简洁，但是做的事情跟nc是一样的：
把ssh服务器上TCP5353端口收到的包转发到8.8.8.8的UDP53端口上去。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;socat&lt;/span&gt; &lt;span class="n"&gt;tcp4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;5353&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;reuseaddr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;fork&lt;/span&gt; &lt;span class="n"&gt;UDP&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;53&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;接下来在本地机器上执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;local&lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;mkfifo&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fifo&lt;/span&gt;
&lt;span class="k"&gt;local&lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;sudo&lt;/span&gt; &lt;span class="n"&gt;nc&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;53&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fifo&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;nc&lt;/span&gt; &lt;span class="n"&gt;localhost&lt;/span&gt; &lt;span class="mi"&gt;5353&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fifo&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;在本地UDP53端口上监听，一旦有数据包，就转发到本地的TCP5353端口上去。&lt;/p&gt;
&lt;p&gt;socat版本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;socat&lt;/span&gt; &lt;span class="n"&gt;udp4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;53&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;reuseaddr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;fork&lt;/span&gt; &lt;span class="n"&gt;tcp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;localhost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;5353&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;好了，到此打洞的部分完成，最后的包转发流程应该是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;localhost&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;UDP53&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;localhost&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;TCP5353&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;ssh&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;TCP5353&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;8.8&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.8&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;UDP53&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;主要就是使用nc/socat把UDP和TCP流量进行转换，以便可以把他们扔进SSH Tunnel里。&lt;/p&gt;
&lt;p&gt;然后，修改/etc/resolv.conf：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;nameserver&lt;/span&gt; &lt;span class="mi"&gt;127&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这样再用Chrome浏览器就应该没有该死的DNS污染问题了。&lt;/p&gt;
&lt;p&gt;这个解法不算太好，因为需要在Server端执行命令，如果是一些不给pty的host，就没办法用这个方法了。
可能比较好的方案还是透明代理之类的。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;p&gt;&amp;lt;1&amp;gt;. Issue 29914: DNS queries not forwarded through SOCKS v5 proxies&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.google.com/p/chromium/issues/detail?id=29914"&gt;https://code.google.com/p/chromium/issues/detail?id=29914&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;2&amp;gt;. UDP traffic through SSH tunnel&lt;/p&gt;
&lt;p&gt;&lt;a href="http://superuser.com/questions/53103/udp-traffic-through-ssh-tunnel"&gt;http://superuser.com/questions/53103/udp-traffic-through-ssh-tunnel&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 06 Jan 2013 22:22:44 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-01-06:/2013/01/foward-dns-packet-with-tunnel/</guid><category>linux</category><category>desktop</category><category>ssh</category><category>tunnel</category><category>client</category><category>networking</category><category>dns</category><category>shell</category></item><item><title>新年第一天，折腾一下各种装备</title><link>https://www.gfrog.net/2013/01/fix-some-device-in-first-day-of-2013/</link><description>&lt;p&gt;放假在家，闲来无事，青蛙把之前一直想拆开看看的几个东西动手拆了。&lt;/p&gt;
&lt;p&gt;第一个是前不久买的WD 3.5寸移动硬盘。拆开之后，果然是绿盘。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh4.googleusercontent.com/-raoAVkfZWJc/UOPIrd8DNWI/AAAAAAAAI5k/it5DN87rnyA/s640/48E8E866-D748-4AD9-B520-CD5FA1411C45.JPG"&gt;&lt;/p&gt;
&lt;p&gt;反面，右下角是移动硬盘的控制器。&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh4.googleusercontent.com/-QDKZ6A4ZlUo/UOPIrbW_IQI/AAAAAAAAI5o/iyhD_P70S0Q/s640/58125AC9-74EA-4CDE-8DB8-C9FBCAAFB104.JPG"&gt;&lt;/p&gt;
&lt;p&gt;靠近点瞧瞧，给主控芯片来个特写，这是不知道啥来历？&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh4.googleusercontent.com/-V790c6U0K5Y/UOPIrQ37t7I/AAAAAAAAI5s/7eaZatTYOHU/s640/ECA06D8B-A915-4403-AE33-8140129AFE4F.JPG"&gt;&lt;/p&gt;
&lt;p&gt;拆开的时候过于暴力，而且方法不对头，卡子掰坏了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh5.googleusercontent.com/-6ghr12G0Oqg/UOPIra-gwEI/AAAAAAAAI5g/bGsdrcr38hY/s640/A67F4F40-810B-4E09-81D2-F512E50F846C.JPG"&gt;&lt;/p&gt;
&lt;p&gt;虽然这个小东西外壳挺烂的，不过四个角的橡胶垫设计的还不错，充分减少硬盘的震动。&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" src="https://lh3.googleusercontent.com/-PjJPovB6zo8/UOPIrZBCFPI/AAAAAAAAI5w/pzpg6Dfyw0E/s640/F8857602-EB9E-4402-984C-63925269D878.JPG"&gt;&lt;/p&gt;
&lt;p&gt;这次拆解这块硬盘的目的主要是看下这个小盒子的内部空间够不够放进一块儿Raspberry Pi，
结果很让人失望，虽然硬盘边上有一定的空间，不过还是不够放下树莓派的。
看来在移动硬盘里做些什么的想法是没法实现了，只能在外面挂个盒子。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 01 Jan 2013 16:36:49 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2013-01-01:/2013/01/fix-some-device-in-first-day-of-2013/</guid><category>diy</category><category>fix</category><category>device</category><category>pictures</category></item><item><title>2012年终总结及2013年新年目标</title><link>https://www.gfrog.net/2012/12/2012-summary-and-2013-outlook/</link><description>&lt;p&gt;又到一年岁末时，再来总结一下今年的历程吧。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;首先，工作。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;上半年基本就是在浑浑噩噩中度过了，在&lt;a href="/2012/08/2012-mid-year-summary/"&gt;年中总结&lt;/a&gt;
里面提到过，感觉上半年一直就是混过来的。
本来准备在上半年搞定CCIE的考试，结果拖延症爆发，一直拖到了年底才完成。
万一年底这次过不了，那么明年的计划肯定要完全耽误了。&lt;/p&gt;
&lt;p&gt;下半年呢，5月下旬到6月初的时候青蛙一直忙于找房子，所以从5月开始就就没有全力投入工作中。
再加上下半年筹备CCIE考试，导致投入工作中的精力大幅度减少。
于是很多应该在今年完成的工作目标都没有达成。
并且精力少了，追踪最新的Qemu/Kernel代码的时间就少了很多，
导致今年底对于Qemu-kvm的了解反倒没有年初多。&lt;/p&gt;
&lt;p&gt;Python呢，九月份左右的时候青蛙试图使用OO的方式重构一部分代码，但是反响似乎不太好。
现在回头再读那些代码，可读性确实不太高。
明年，青蛙需要着重加强编码质量和代码可用性。
2012年的代码量也因为考试被拖下来很多，2011年的时候几乎每天都有新patch，
今年只是断断续续的修复一些问题。很少有增加新功能的patch。
看来学习新东西真的是一件很耽误时间的事情啊。&lt;/p&gt;
&lt;p&gt;今年的工作方式也因为考试耽误了不少，之前青蛙给自己制定了每日工作内容，
今年这个工作内容彻底被打乱了。
虽然12月考完试之后青蛙正努力恢复每日工作内容，但是因为每天的效率不高，所以收效不大。&lt;/p&gt;
&lt;p&gt;今年秋天有幸人生中的第一次升了Title，虽然看起来没啥，不过毕竟工作了5年，
才换来这么个Title，看来之前青蛙确实挺失败的。没办法，唯有继续努力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;其次，生活。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下半年青蛙重新找房子，恢复了跟陌生人合租的状态。
这种状态直接导致了每天不想回家，因为回家就是个小盒子，只是个睡觉的地方。
于是办公室和教室是青蛙待的最多的2个地方。总之，宅。&lt;/p&gt;
&lt;p&gt;2012年几乎没有旅行，回家探亲，包括去大连考试，都是匆匆而过，甚至顾不上停下来到处走走。
十一的时候看似疯狂的带自行车去看爷爷奶奶，结果一路都是下雨天，到了爷爷奶奶那直接病倒，十一趴了一周。&lt;/p&gt;
&lt;p&gt;今年跟老爸老妈似乎多见了几次面，每次都感觉到他们见到我回去的那种开心。
明年争取多回家陪陪老爸老妈吧。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三，学习。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2012年青蛙的Kindle4没有发挥它应有的作用，上半年看过几次，
下半年开始备战CCIE考试之后就基本扔在一边了，
因为考试相关的资料全是PDF的，用小屏幕的Kindle看起来太痛苦了。
Kindle Sync的工具青蛙已经很久没有动过了，因为青蛙最近连Google reader都没有读过。
总之，2012年的阅读量简直低的让人发指，完整的读完一本书似乎在今年都没有发生过。
不清楚今年青蛙为什么会这么浮躁，一看书就想迅速翻到结尾，这个问题明年必须要改掉。&lt;/p&gt;
&lt;p&gt;如果说今年最大的成果，那就是拿到了2个认证，一个是RHCE认证，另外一个是CCIE。
RHCE拿到的比较轻松，因为目前青蛙主要就是做这方面的内容嘛，每天遇到的情况堆起来，
也差不多就是RHCE的考试题了 XD。
另外加上这是我司的内部考试，考前有充分的培训加练习，所以基本没有什么压力就拿到了。
然后，就是今年最痛苦的一段时间，CCIE lab练习，这段时间真的像是回到了高考备考那种状况，
每天晚上早起晚睡，在公交车上还要看配置。
索性功夫不负有心人，Lab还是一次通过了，虽然当中有些惊险，不过结果还是令人满意的。
考过CCIE之后，青蛙突然觉得有点茫然。
虽然考过了拿到号码，但是不会的还是不会，没经验也还是没经验。
似乎应该继续敲敲实验（多出去围观下项目？这个不知道有没有机会了）
考试过后青蛙一直没有找准继续的努力方向，是先学习RHCA课程把RHCA搞定，
还是趁热打铁争取拿下新的CCIE，现在这个就悬在这了，没有清晰的方向。
不过目前最清晰的目标就是英语啦，青蛙自觉英语真是烂到爆了，
于是找来背单词软件，买了雅思单词书，正在背单词。
虽然进度不快，不过感觉时时背些单词还是很有用的。（虽然还仅限于CET4词库 -_-）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第四，折腾。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;人不折腾枉少年，今年青蛙同样没少折腾。
首先是&lt;a href="/2012/08/diy-shanzhai-gopro-sports-camera/"&gt;搞了个山寨Go Pro&lt;/a&gt;，
实战效果挺好，可惜今年出去骑车的机会很少，它很少有发威的时候。
然后，把山地车卖了。因为今年用的实在太少，干脆出掉折现，择机收入公路车好了。
接着，&lt;a href="/2012/09/bought-a-philips-diy-hair-clipper/"&gt;购入理发器自己剃头&lt;/a&gt;。
这个很有意思，虽然有点不太敢想象，不过自己剃个简单的球形发型是没问题的。
再继续，青蛙考完CCIE之后发现实在没有地方安置之前那些学习视频和资料，于是败入新的移动硬盘一枚。
接着想到移动硬盘可能丢失资料的问题，败入3.5寸外置硬盘一枚。
然后呢，为了方便每天下载片片儿，又败了一枚树莓派（raspberry pi）准备搭建个NAS。
目前正在实施中。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2012目标总结&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;读完vdsm代码&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;基本没有进展，上半年曾经读过几个patch，也感觉到vdsm设计上确实有值得借鉴的地方。但是下半年的学习计划完全打乱了脚步。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;通过 CCIE认证&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;完成。代价就是混乱的工作/生活状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;增加跟autotest upstream的联系，多多在upstream冒泡&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;上半年Patch交流挺多，下半年，同样被打乱。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;经常回顾python的基本知识，python核心编程之类，多读几遍&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;进展细微，因为下半年疏于练习，甚至感觉Python知识有倒退的迹象。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;读一本关于linux内核的书，可以找尽量短点的，先学个皮毛&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;2012年，无读书。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完成那个给kindle推文章的小工具&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;无需求导致停笔。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;做/改一个irc bot，给内部irc，也可以自己在freenode上跑一个，方便自己。&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;年中总结的时候以为青蛙今年不会做这个东东了，结果它是今年里意外的一个亮点。
青蛙以&lt;a href="http://inamidst.com/phenny/"&gt;phenny&lt;/a&gt;为基础，改造了一个小bot，
每周五的时候会给它加一点新的功能或者bugfix，一点点积攒下来，
这个小Bot竟然在内部频道里工作的不错。明年要继续改进它。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;采购计划：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;一个更加给力的读书工具，kindle dx？ kindle fire？ ipad？&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;最后还是买了iPad，备战CCIE的时候非常频繁的使用，阅读+笔记利器。
  考完之后...目前在桌儿上落灰。（为了ipad也要有个阅读计划了。）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一部胶片口袋机， 奥记u2？&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;相机买了，玩儿相机的时间没了。总之今年几乎就没拍片儿。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;给媳妇买台ps3/ps4？ 再加一台电视？&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;媳妇反对，放弃。不过买了个蓝光光驱，在电脑上看看蓝光电影凑合吧。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2013展望&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;既然世界末日就这么平平淡淡，毫无意思的过去了，那么日子就还得继续。
2013年的计划写在这，看起来有点复杂有点困难，不过没有挑战的人生还有神马意义呢？
加油！&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;学习，P1，完成RHCA/CCIE认证中的一个。&lt;/li&gt;
&lt;li&gt;学习，P1，雅思7分。&lt;/li&gt;
&lt;li&gt;学习，P2，尽可能多的阅读其他项目的Python代码，例如VDSM。&lt;/li&gt;
&lt;li&gt;学习，P2，Debug Hacks，读完、理解这本书。&lt;/li&gt;
&lt;li&gt;学习，P2，Facebook上Cisco学院会经常帖一些实际的项目或者实验拓扑，虽然有些可能只是CCNA Level，但是拿来每天练手很不错。&lt;/li&gt;
&lt;li&gt;编码，P1，完成目前手头准备给Autotest upstream的代码，旧的这几个patch没有处理完成之前，不要再做新的了，免得一无所成。&lt;/li&gt;
&lt;li&gt;编码，P1，pdf剪裁工具，目前看来是非常需要的。即使以后不在Kindle上看pdf了，给iPad/iPhone用也是相当不错的，目前有些很多白边的pdf看起来非常不舒服。&lt;/li&gt;
&lt;li&gt;编码，P2，IRC bot继续增强。这个似乎可以发掘下有没有人对这个也感兴趣，一起来做了。&lt;/li&gt;
&lt;li&gt;采购，P1，四轮。&lt;/li&gt;
&lt;li&gt;采购，P2，公路车。&lt;/li&gt;
&lt;li&gt;采购，P3，MBA，万一没本子用了，就买MBA吧。&lt;/li&gt;
&lt;li&gt;生活，P1，坚持写Blog，至少每周1篇。 （&lt;strong&gt;Update 2012-12-31 21:16:00&lt;/strong&gt;）&lt;/li&gt;
&lt;/ol&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 31 Dec 2012 21:14:10 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-12-31:/2012/12/2012-summary-and-2013-outlook/</guid><category>status</category><category>update</category><category>summary</category><category>outlook</category></item><item><title>红帽年度拼图游戏</title><link>https://www.gfrog.net/2012/09/yearly-jigsaw-puzzle-in-readhat/</link><description>&lt;p&gt;&lt;strong&gt;We can do more when we work together.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;好几个人work together，耗时一下午，终于完成。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/Yf9HUKSW1Gh3MAqT3QiGXae17ejVVKC0QzzabezYT1cIh8XM6-3I6qwoBYT4Db4ZOvxhP2MWFTg7ng_WsZq9-Vj2l8OAJDhgwHYfT0T-isreGWVLHi1m21W5v8sZEO1S89ItH1UDhN0=w800"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 27 Sep 2012 20:22:42 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-09-27:/2012/09/yearly-jigsaw-puzzle-in-readhat/</guid><category>pictures</category><category>jigswa</category><category>redhat</category></item><item><title>购入理发器一枚</title><link>https://www.gfrog.net/2012/09/bought-a-philips-diy-hair-clipper/</link><description>&lt;p&gt;生活在物价飞涨的帝都，必须在方方面面想办法节约生活成本。为了剩下每个月20羊的剃头费用，青蛙决定买一只理发器自己剃。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/20120907#5785317322689476962"&gt;&lt;img alt="2012-09-07_10-46-32_166.jpg" src="http://lh6.ggpht.com/-JYusmHTohMk/UEmTc_vR-WI/AAAAAAAAIE4/cYwrmfvHyEo/w640/2012-09-07_10-46-32_166.jpg"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/20120907#5785317363047878658"&gt;&lt;img alt="2012-09-07_11-13-33_526.jpg" src="http://lh5.ggpht.com/-rUhpTSEC2cs/UEmTfWFeUAI/AAAAAAAAIFA/A-C03FI_C2U/w640/2012-09-07_11-13-33_526.jpg"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/20120907#5785317457765313378"&gt;&lt;img alt="2012-09-07_11-14-18_959.jpg" src="http://lh4.ggpht.com/-2u479DESKfw/UEmTk273q2I/AAAAAAAAIFQ/slUFtgfkwxA/w640/2012-09-07_11-14-18_959.jpg"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/20120907#5785317499068263826"&gt;&lt;img alt="2012-09-07_11-14-54_685.jpg" src="http://lh3.ggpht.com/-_EAw_badLYQ/UEmTnQzQrZI/AAAAAAAAIFY/W2ov__IfbR8/w640/2012-09-07_11-14-54_685.jpg"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/20120907#5785377329513507618"&gt;&lt;img alt="2012-09-07_11-27-19_216.jpg" src="http://lh5.ggpht.com/-_EzKEvO6xaM/UEnKB2lAKyI/AAAAAAAAIFo/tpC1anSppOU/w640/2012-09-07_11-27-19_216.jpg"&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 07 Sep 2012 20:13:14 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-09-07:/2012/09/bought-a-philips-diy-hair-clipper/</guid><category>diy</category><category>shopping</category><category>pictures</category></item><item><title>2012年中总结之迟到篇</title><link>https://www.gfrog.net/2012/08/2012-mid-year-summary/</link><description>&lt;p&gt;整理blog的时候发现了&lt;a href="https://gfrog.net/2011/12/2011-summary-and-2012-outlook/"&gt;去年写的年终总结和展望&lt;/a&gt;，
现在回头看看，基本目标完全没有实现。还有4个月，要努力奋斗才行！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;其次，工作上似乎有条理了一些，但是自己仍然处于迷失状态。自己到底做点什么，以后怎么发展，仍然迷茫。
虽然这是一件很不应该的事情，工作四年，仍然不知道自己的方向在哪里，真是loser。
以至于年终曾经转去做kernel方向，但是担心自己的能力，又不了了之。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;又工作了大半年，青蛙即将步入工作的第五个年头了，但是仍旧找不到自己的方向，不得不说这真是个悲哀。
管理做不来，售前做不来，售后做不来，总之需要频繁跟人打交道的职业都做不来，未来该往哪走，还真是不明朗。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不过在现在的职位上已经有一些心得了，对于python，对于虚拟化，已经不像去年像一个文盲的状态了。
如果再在这个方向上做下去，也是有许多有趣的事情可以做。
不过一年中学到的技术知识似乎不多？现在想想，似乎编程技能并没有太多的提高，这是一个急需提升的地方。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;青蛙在上半年尝试着开始读一点qemu-kvm的代码 ，勉强能看懂一些简单的patch，
但是qemu-kvm整体的结构还是傻傻闹不清楚，如果想在这方面继续深入下去，还得持续地读代码。
Python方面，似乎2012以来没有太多的进展，代码量明显不如2011年多，质量似乎也变差了。
年初制定的编码量计划根本没有达到，接下来四个月要在这方面努力才行。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;十月份青蛙收了一部kindle4，之后的三个月里阅读量比之前的九个月加起来都多。
kindle真的是值得拥有的好东西，赞美亚马逊。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Kindle4在2012年没有发挥它应有的作用，因为青蛙想看的基本书只有pdf格式，但是k4看pdf文档又相当不爽。
目前青蛙正在研究pdf跟tiff格式，试图搞出一个工具可以自动裁掉pdf的白边。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;另外青蛙自己写了一个小工具抓取小说并推送到kindle（好吧，kindle上看的小说也不少），
写这个小东东的过程中会思考一下如何构建一个方便扩展又方便编码的结构，
不过写完之后却发现跟工作上使用的 kvm-autotest 结构真的很像。
由此，青蛙决定多读读其他的代码，目前正在抽时间读读vdsm，恩，争取2012第一季度可以读完。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sync的工具目前处于基本停滞状态，2012年中只修复了几个小bug。
由于dotcloud的app如果一段时间没有访问量，就会被自动关掉，
所以目前计划9月份把它迁移到Openshift上去。可能再加一点新功能？
不过目前没有需求呢，没有动力。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;哦，最后，青蛙赶在年底公司培训经费作废之前报了一个CCIE培训班，争取明年上半年可以把CCIE认证考下来。
（为什么又回去学网络了，青蛙也不知道，姑且算作上一段工作经历的一个总结性考试吧，
毕竟做了三年网络，再系统的学习一遍当做知识储备。）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;青蛙终于逼自己把CCIE的笔试考过了，使劲背题一周，发现越背不会的东西越多。
心惊胆战的去考试，竟然还过了。XD
目前点到了12月份的lab考试位置，希望能来得及准备。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;2012展望&lt;/em&gt; 及 &lt;/strong&gt;2012年中总结**&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;读完vdsm代码&lt;/li&gt;
&lt;li&gt;通过 CCIE认证&lt;/li&gt;
&lt;li&gt;增加跟autotest upstream的联系，多多在upstream冒泡&lt;/li&gt;
&lt;li&gt;经常回顾python的基本知识，python核心编程之类，多读几遍&lt;/li&gt;
&lt;li&gt;读一本关于linux内核的书，可以找尽量短点的，先学个皮毛&lt;/li&gt;
&lt;li&gt;完成那个给kindle推文章的小工具&lt;/li&gt;
&lt;li&gt;做/改一个irc bot，给内部irc，也可以自己在freenode上跑一个，方便自己。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;vdsm代码依旧一知半解，青蛙现在怀疑上半年自己到底做了什么，为什么什么都没看。&lt;/li&gt;
&lt;li&gt;CCIE认证大概完成10%，笔试过了，lab努力中。&lt;/li&gt;
&lt;li&gt;2012年没少在upstream发patch，不过都是些不痛不痒的修改，真正想做点什么的时候才发现自己能力真的不足，于是一再推脱，以至于一事无成。&lt;/li&gt;
&lt;li&gt;python核心编程只看了一点点，平时工作中倒是养成了经常翻阅python manual的习惯，但是临时抱佛脚比不上系统的学习储备，还是要继续看书。&lt;/li&gt;
&lt;li&gt;kernel。。。 完全没进展。&lt;/li&gt;
&lt;li&gt;kindle sync工具，每次都是看到kindle发现没法显示图片的时候就想去把自己的工具改掉，但是又实在没啥思路继续写，于是拖拖拉拉，一直放在那里。&lt;/li&gt;
&lt;li&gt;IRC bot，曾经尝试过一点点，但是反映不太好，大概2012年不会继续折腾它了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;采购计划：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;一个更加给力的读书工具，kindle dx？ kindle fire？ ipad？&lt;/li&gt;
&lt;li&gt;一部胶片口袋机， 奥记u2？&lt;/li&gt;
&lt;li&gt;给媳妇买台ps3/ps4？ 再加一台电视？&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;一直怨念着是不是要买ipad，特别是看到了New pad超爽的效果之后，不过这东西真的很沉，很热。&lt;/li&gt;
&lt;li&gt;U2在年前到手，可惜才拍了不到3卷，洗出一卷，但是没扫描。&lt;/li&gt;
&lt;li&gt;每次跟媳妇说买电视都遭到强烈反对，于是本计划搁置。&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 27 Aug 2012 21:18:07 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-08-27:/2012/08/2012-mid-year-summary/</guid><category>status</category><category>update</category><category>outlook</category></item><item><title>折叠党之奥园笔记20120825</title><link>https://www.gfrog.net/2012/08/riding-olympic-park-0825/</link><description>&lt;p&gt;上午去笔试，然后折腾了半天，快下午2点了才到家。
好好的周末就这么浪费掉了，青蛙很不甘心，刷下奥园聊以慰藉吧。&lt;/p&gt;
&lt;p&gt;开始半圈很不错，踏频/心率都没有太高，
但是奥体东路爬坡之后明显感觉到没劲儿，踏频刷刷就降下来了。
速度也只能维持在25-27的样子，为神马每次刷都是这结果，
到奥体东路上就萎靡呢？快到科荟路的红绿灯的时候右肺一阵疼痛，
估计是下午奥园空气污染严重导致的。&lt;/p&gt;
&lt;p&gt;科荟南路上车很多人很多，太阳光又很刺眼，小心翼翼地慢慢爬。
转到奥体西路上发现有各种治安协管啥的开始拉条幅封路，不知道晚上又有啥活动了。&lt;/p&gt;
&lt;p&gt;右肺继续疼，放弃继续刷的想法，果断撤退，白天实在不应该在帝都市内运动。&lt;/p&gt;
&lt;p&gt;贴视频。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://v.youku.com/v_show/id_XNDQzMTczOTY0.html"&gt;http://v.youku.com/v_show/id_XNDQzMTczOTY0.html&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 25 Aug 2012 19:41:59 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-08-25:/2012/08/riding-olympic-park-0825/</guid><category>bicycle</category><category>riding</category></item><item><title>打造山寨版gopro运动摄像机</title><link>https://www.gfrog.net/2012/08/diy-shanzhai-gopro-sports-camera/</link><description>&lt;p&gt;tags, bicycle, gopro, camera, openbox, helmet&lt;/p&gt;
&lt;p&gt;话说
&lt;a href="http://gopro.com/cameras/hd-hero2-motorsports-edition/"&gt;gopro hero2&lt;/a&gt; 
真的是个相当棒的东西，但是价钱实在太高了，
对于青蛙这种穷屌丝来说，买一个比自行车还贵的摄像机相当有难度。
所以青蛙一直酝酿着用山寨版解决方案。
淘宝上那些行车记录仪或者微型摄像机倒是很便宜，
但是行车记录仪普遍很大而且电源不够持久（或者干脆需要车载电源），
微型摄像机拍摄效果很差。
这些东西基本都不能拿来当作运动摄像机用。
最后，青蛙终于锁定了那个最近很火爆的
&lt;a href="http://store.kodak.com/store/ekconsus/en_US/pd/PLAYFULL_Video_Camera/productID.221644600"&gt;Kodak Playfull&lt;/a&gt; [1]，
支持1080P拍摄，最大32G SD卡，重量95g。
最关键的是这东东竟然带一个相机脚架螺孔，可以很方便的用自行车相机架架到车/头盔上。&lt;/p&gt;
&lt;p&gt;秀下Playfull的大小，旁边是月亮湖小直。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/Milestone#5780550580795383282"&gt;&lt;img alt="2012-08-16_13-44-12_892_¬" src="http://lh5.ggpht.com/-lGVvRlvWhiA/UDikIGZ8nfI/AAAAAAAAH_0/IBxDoYHFJi8/w640/2012-08-16_13-44-12_892_%252517%2525C2%2525AC.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后就是相机架的问题，上网搜搜，
还真叫青蛙发现了个靠谱的，FOTOPRO Action Mount [2]，
立刻淘宝之，拿到手之后发现做工和重量都挺满意，放头盔上刚好。
这个架儿没有图，参考[2]里面的图片吧。&lt;/p&gt;
&lt;p&gt;秀下组装完毕的效果：
正面：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/Milestone#5780550693457326994"&gt;&lt;img alt="2012-08-21_19-18-30_204" src="http://lh4.ggpht.com/-E_vTI4bI6iE/UDikOqGpc5I/AAAAAAAAH-4/lbFwO7s1LDc/w640/2012-08-21_19-18-30_204.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另一张正面：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/Milestone#5780550922656000274"&gt;&lt;img alt="2012-08-21_19-25-10_838" src="http://lh3.ggpht.com/-2t8TrDBp8SE/UDikb_73qRI/AAAAAAAAH_U/MoTZFmjPQxM/w640/2012-08-21_19-25-10_838.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;侧面：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/Milestone#5780550761875976018"&gt;&lt;img alt="2012-08-21_19-18-44_391" src="http://lh6.ggpht.com/-SAlOSy4VKnE/UDikSo-7L1I/AAAAAAAAH_A/xmpw92N8F1Y/w640/2012-08-21_19-18-44_391.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;开机看看（哎呦，没装卡，内置的128M内存只能拍7秒视频）：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/Milestone#5780550982980978850"&gt;&lt;img alt="2012-08-21_19-25-40_363" src="http://lh4.ggpht.com/-uLGUL6hlyXE/UDikfgqdyKI/AAAAAAAAH_c/8E9yDMxNbi4/w640/2012-08-21_19-25-40_363.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;架子细节：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/Milestone#5780551282575328514"&gt;&lt;img alt="2012-08-21_19-19-44_573" src="http://lh4.ggpht.com/-j8V1J6rN0ag/UDikw8vUxQI/AAAAAAAAH_k/pZUr56xPpfU/w640/2012-08-21_19-19-44_573.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;至于戴上的样子，是这样的，请读者自己脑补吧。XD 戴上之后明显感觉到头盔沉了，但是还在可接受的范围内。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/108736461751011849061/OeEtEE#5780554982010628898"&gt;&lt;img alt="shot0001.png" src="http://lh5.ggpht.com/-VyNpnPUmGwM/UDioISNbqyI/AAAAAAAAIAo/iFXCQSycKdM/w640/shot0001.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;相机跟架子的价格加起来大概是300多块钱，
再加上存储卡，整体在400元左右。
这套方案还是很廉价的呢。&lt;/p&gt;
&lt;p&gt;&lt;del&gt;(视频正在上传中，优酷比较不给力呀。）&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: 2012-08-25 18:40&lt;/strong&gt;
试机视频：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://v.youku.com/v_show/id_XNDQzMTcyODcy.html"&gt;http://v.youku.com/v_show/id_XNDQzMTcyODcy.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下一步需要考虑的问题就是看看能不能淘到这家伙的防水罩了，这样下雨也不怕了。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;p&gt;[1] Kodak 柯达 Playfull 1080p高清手持数码摄像机 269元包邮（赠4GB SD卡） &lt;a href="http://www.smzdm.com/kodak-kodak-playfull-1080p-hd-handheld-digital-video-camera-269-yuan-gift-4gb-sd-card.html"&gt;http://www.smzdm.com/kodak-kodak-playfull-1080p-hd-handheld-digital-video-camera-269-yuan-gift-4gb-sd-card.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] 單車專用相機腳架 FOTOPRO Action Mount 開箱 &lt;a href="http://www.mobile01.com/topicdetail.php?f=318&amp;amp;t=1640584"&gt;http://www.mobile01.com/topicdetail.php?f=318&amp;amp;t=1640584&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 25 Aug 2012 18:30:57 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-08-25:/2012/08/diy-shanzhai-gopro-sports-camera/</guid></item><item><title>本blog已经迁移到 Openshift</title><link>https://www.gfrog.net/2012/08/this-blog-has-transfered-to-openshift/</link><description>&lt;p&gt;本Blog今天已经正式迁移到Openshift平台上了，欢迎反馈问题报告及速度报告。&lt;/p&gt;
&lt;p&gt;同时在linode的服务器已经关闭。&lt;/p&gt;
&lt;p&gt;其实linode真的很好很不错，只是青蛙的blog根本用不到一个vps来支持，
vps上的资源几乎每天都是浪费掉的，还不如用PaaS平台低碳一些。&lt;/p&gt;
&lt;p&gt;&lt;img alt="generate_graph.png" src="https://lh6.googleusercontent.com/-BxNOTrFKcBg/UC8DnW1hxxI/AAAAAAAAHuA/qy2wpNWaReM/s800/generate_graph.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="generate_graph_mem.png" src="https://lh6.googleusercontent.com/-gN1jz58MRK8/UC8DneddYSI/AAAAAAAAHuI/h0D9R4F0kj0/s800/generate_graph_mem.png"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 18 Aug 2012 11:02:31 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-08-18:/2012/08/this-blog-has-transfered-to-openshift/</guid><category>site</category><category>setup</category><category>vps</category><category>openshift</category><category>pass</category></item><item><title>使用pyPdf切割pdf文档</title><link>https://www.gfrog.net/2012/07/split-pdf-doc-with-pypdf-module/</link><description>&lt;p&gt;青蛙拿到一份扫描版的pdf文档，每个pdf页包含了两页实际书籍页面，
这种文档放在6寸Kindle上基本就是杯具了。于是青蛙试图找工具把他们切割掉。
根据&lt;a href="http://note1day.com/"&gt;铄日博客&lt;/a&gt;的推荐试验了
&lt;a href="http://note1day.com/2012/01/paper4kindle/"&gt;paper4kindle&lt;/a&gt;
和
&lt;a href="http://note1day.com/2011/12/k2pdfopt/"&gt;k2pdfopt&lt;/a&gt;，
但是papaer4kindle切割出来的文档页面错乱了，而且也没有修正pdf歪斜的功能，
剪裁输出的文档很难看。
k2pdfopt就更没法看了，从image识别文档的技术先进，
但是对于每页pdf包含2页实际页面的文档，k2pdfopt基本无能为力。&lt;/p&gt;
&lt;p&gt;青蛙本想探索一下paper4kindle输出之后页面错乱的问题，
结果这玩意竟然不开源，又看到作者说花了几小时就搞出来了，
那青蛙也看看pypdf包，试试能不能直接写代码自己搞定。&lt;/p&gt;
&lt;p&gt;花了半下午时间看了下pypdf（ http://pybrary.net/pyPdf/ ）的API，
然后直接把例子代码复制下来改吧改吧，
咱也基本实现了paper4kindle的核心功能了，成功把那份文档处理掉了。
至于那些花哨的界面啥的，有空再玩吧。
代码先贴在这里，没有整理，暂时先不贴到github了，
准备下一步尝试添加旋转页面的功能。&lt;/p&gt;
&lt;p&gt;编码的时候发现了两个问题，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设置mediaBox的位置之前需要先copy一份page对象，
    否则设置right的mediaBox的时候竟然会影响left的值，
    猜测是pypdf模块内部直接返回了page对象的引用，并没有复制一份返回。&lt;/li&gt;
&lt;li&gt;这份文档无法用paper4kindle编辑的原因是实际上文档的四个角坐标是反的，
    大概文档扫描之后被顺时针旋转了90度。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最后小小鄙视一下用python、用开源库写代码竟然不继续开源的某些软件作者。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="ch"&gt;#!/usr/bin/env python&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;copy&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;pyPdf&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;PdfFileWriter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PdfFileReader&lt;/span&gt;

&lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;PdfFileWriter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;input1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;PdfFileReader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/tmp/a.pdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;rb&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;outputStream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/tmp/output.pdf&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;wb&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# print the title of document1.pdf&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;title = &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getDocumentInfo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;pages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getPage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;input1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getNumPages&lt;/span&gt;&lt;span class="p"&gt;()))&lt;/span&gt;
&lt;span class="c1"&gt;#pages = map(input1.getPage, range(0, 10))&lt;/span&gt;
&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;pages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;copy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;copy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;orig_upperLeft&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getUpperLeft&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;orig_upperRight&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getUpperRight&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;orig_lowerLeft&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getLowerLeft&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;orig_lowerRight&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getLowerRight&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

        &lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setUpperLeft&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;orig_upperLeft&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;orig_upperLeft&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
        &lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setUpperRight&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;orig_upperRight&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;orig_upperRight&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setLowerLeft&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;orig_lowerLeft&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;orig_lowerLeft&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
        &lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setLowerRight&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;orig_lowerRight&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;orig_lowerRight&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;addPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setUpperLeft&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;orig_upperLeft&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;orig_upperLeft&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
        &lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setUpperRight&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;orig_upperRight&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;orig_upperRight&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
        &lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setLowerLeft&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;orig_lowerLeft&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;orig_upperLeft&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mediaBox&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setLowerRight&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;orig_lowerRight&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;orig_upperRight&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;addPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;finally&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# finally, write &amp;quot;output&amp;quot; to document-output.pdf&lt;/span&gt;
    &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputStream&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;outputStream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;new pdf has &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s2"&gt; pages.&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getNumPages&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;参考文档：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;PYPDF: &lt;a href="http://pybrary.net/pyPdf/"&gt;http://pybrary.net/pyPdf/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The PDF file format: &lt;a href="http://www.prepressure.com/pdf/basics/fileformat"&gt;http://www.prepressure.com/pdf/basics/fileformat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Why my code not correctly split every page in a scanned pdf? &lt;a href="http://www.prepressure.com/pdf/basics/fileformat"&gt;http://stackoverflow.com/questions/7047656/why-my-code-not-correctly-split-every-page-in-a-scanned-pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 30 Jul 2012 22:43:51 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-07-30:/2012/07/split-pdf-doc-with-pypdf-module/</guid><category>ptyhon</category><category>coding</category><category>script</category><category>pdf</category><category>modification</category></item><item><title>三张流：雨后的帝都</title><link>https://www.gfrog.net/2012/07/3-pics-beijng-after-storm/</link><description>&lt;p&gt;帝都经历了61年以来最大的暴雨之后，空气质量真是好到爆。难得见到帝都的蓝天白云啊，赶快出去拍几张照片。&lt;/p&gt;
&lt;p&gt;先从窗口看看，久违的蓝天。&lt;/p&gt;
&lt;p&gt;&lt;img alt="2012-07-22_08-42-08_661" src="http://lh4.ggpht.com/-TZ5teX41PC8/UAwmf1S8EuI/AAAAAAAAHf4/med0ogYQh3I/w800/2012-07-22_08-42-08_661.jpg"&gt;&lt;/p&gt;
&lt;p&gt;出门在路边：&lt;/p&gt;
&lt;p&gt;&lt;img alt="2012-07-22_10-39-01_174" src="http://lh5.ggpht.com/-Xw9WS5j_XHA/UAwsRgsyNvI/AAAAAAAAHhg/y3-qtXKqNKc/w800/2012-07-22_10-39-01_174.jpg"&gt;&lt;/p&gt;
&lt;p&gt;傍晚的云：&lt;/p&gt;
&lt;p&gt;&lt;img alt="2012-07-22_18-27-00_322" src="http://lh4.ggpht.com/-IF_acs9R9_4/UAwtpzh8dVI/AAAAAAAAHiU/5WyPGI7z51I/w800/2012-07-22_18-27-00_322.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 22 Jul 2012 20:02:55 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-07-22:/2012/07/3-pics-beijng-after-storm/</guid><category>beijing</category><category>pictures</category></item><item><title>折叠党之奥园笔记20120508</title><link>https://www.gfrog.net/2012/05/riding-olympic-park-0508/</link><description>&lt;p&gt;奥园四圈，&lt;/p&gt;
&lt;p&gt;第一圈单刷，速度跟之前比毫无变化。&lt;/p&gt;
&lt;p&gt;第二圈跟骑四分之三圈，基本可以稳定在30，不过看起来仍然达不到水木自行车版众的水平，需要人家放慢速度等。&lt;/p&gt;
&lt;p&gt;第三圈单刷，继续维持自己原有的速度，但是明显感觉到体力有点跟不上，踏频难以为继。&lt;/p&gt;
&lt;p&gt;第四圈单刷四分之三，剩下的1km多逮到一个机会跟住了一个公路qs，跟车的感觉真好，速度可以上到36还没太大压力。&lt;/p&gt;
&lt;p&gt;有一个靠谱的队伍确实很重要。&lt;/p&gt;
&lt;p&gt;轨迹两条 （Endomondo这玩意越发的不靠谱了，海拔就从来没算明白过。。。）&lt;/p&gt;
&lt;p&gt;第一圈：
&lt;a href="http://www.endomondo.com/workouts/53933330"&gt;http://www.endomondo.com/workouts/53933330&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第二-四圈：
&lt;a href="http://www.endomondo.com/workouts/53933459"&gt;http://www.endomondo.com/workouts/53933459&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 09 May 2012 00:02:18 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-05-09:/2012/05/riding-olympic-park-0508/</guid><category>bicycle</category><category>riding</category></item><item><title>折叠酱油党之奥园笔记20120427</title><link>https://www.gfrog.net/2012/04/riding-olympic-park-0427/</link><description>&lt;p&gt;大风，既爽又不爽，半圈不用蹬车就嗖嗖跑，半圈玩命蹬也跑不快。&lt;/p&gt;
&lt;p&gt;人很少，除了几个公路党，还看到一个孤单的妹纸在刷圈。
没盔没灯没人陪，本来以为她是路过的，结果刷完在那歇着的时候她从后边上来了。啧啧。&lt;/p&gt;
&lt;p&gt;贴轨迹，
第一圈单独计算时间，用时13’49‘’&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.endomondo.com/workouts/51184247"&gt;http://www.endomondo.com/workouts/51184247&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;剩下三圈用时41‘31’‘，平均每圈也是13’50‘’&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.endomondo.com/workouts/51186794"&gt;http://www.endomondo.com/workouts/51186794&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 27 Apr 2012 23:03:15 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-04-27:/2012/04/riding-olympic-park-0427/</guid><category>bicycle</category><category>riding</category></item><item><title>折叠酱油党之奥园笔记20120425</title><link>https://www.gfrog.net/2012/04/riding-olympic-park-0425/</link><description>&lt;p&gt;今天吃饭晚了点，出门晚了点，又跑了一趟某风给师兄捎链条油。
所以到奥园已经8：50了。
到A点没看到twingle，倒是先看到了他的车，红色就是抢眼啊，哈哈。&lt;/p&gt;
&lt;p&gt;时间晚了，迅速刷了一圈然后闪人。
没细看时间，大概13分左右。&lt;/p&gt;
&lt;p&gt;回程的时候twingle戴的口罩（防毒面具？）很有爱，带着说话更有爱。&lt;/p&gt;
&lt;p&gt;以上，没总结，没数据，不过有轨迹一条：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.endomondo.com/workouts/50761369"&gt;http://www.endomondo.com/workouts/50761369&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;琢磨着是不是搞个蓝牙心率带神马的。。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 25 Apr 2012 23:55:18 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-04-25:/2012/04/riding-olympic-park-0425/</guid><category>bicycle</category><category>riding</category></item><item><title>见坡死党作业之解字石-20120422</title><link>https://www.gfrog.net/2012/04/riding-xiezishi-0422/</link><description>&lt;p&gt;简短结说，今天，4月22日是世界地球日嘛，
所以青蛙原本打算一大早就去爬解字石纪念一下。
结果早上木有听到闹钟，自然醒之后已经10点多啦，
在床上挣扎许久，最终还是决定出门爬山。&lt;/p&gt;
&lt;p&gt;11点30左右从家出发，携带2升水袋一枚，馅饼两只，士力架若干。
走G7辅路奔向解字石。
出门之后发现顺风，很开心，不过也担心回程是不是会压力很大。
G7到北清路转向G6，路过昌平西关环岛，差一点又迷路了，
这破环岛修的，专门迷糊人玩的。。。
过了西关环岛之后拐上京银路再拐昌赤路，感觉爬了好久好久才到神路啊，
中间在路上还时时传来一股屎味，尼玛是哪家果树院子上的有机肥？！
彻底崩溃。
看到神路，知道自己走对了，于是继续向前，
上坡萎靡，下坡撒欢，整个一个病态。
爬到长陵村路口休息了一下，看到早上爬解字石的童鞋们都已经放坡回来了。
稍事休息开始爬坡，开始的路段有上有下，还满惬意，
路两边有一片片紫色的小花，叫不上名字。
慢慢爬到泰陵村，在小超市买了瓶可乐，准备开始爬坡。
出了超市按下秒表，开始计时。
超市门口遇到一个公路加一个山地，刚出泰陵不久就追上青蛙，
之后爬到离解字石坡顶还有1km左右的时候看到这俩人放坡下来。&lt;/p&gt;
&lt;p&gt;之后就是各种苦逼的挠坡，青蛙刚刚换的飞轮，跳好之后其他档位都很不错，
唯独四档跳齿，尼玛这是爬坡最重要的一档啊，再高一档有点重，
再低又太轻，结果丫的跳齿，太郁闷了！ 
于是青蛙一路基本都是3档磨上去的，踏频虽然够，但是踩的实在不爽。
出门晚了的坏处就是要顶着巨大的太阳爬山，一路上汗如雨下，
没多久青蛙就热的受不了了，跳下车摘掉头巾，挽起裤腿，
似乎稍稍凉快了一些，不过汗依旧没停，就在眼眶附近打转啊，
经常被汗水迷到眼睛。
爬的过程中几次想打退堂鼓，想着干脆就掉头下去算了，但是又不甘心，
想着离坡顶也没多远了，然后就继续爬啊爬。&lt;/p&gt;
&lt;p&gt;终于看到路上的1500m标记，想着总算快见顶了，然后瞅了下码表，
擦，不到10km/h的速度，1500米还得爬10多分钟！继续挠吧。。。 
爬到还有1km左右的时候青蛙开始胸闷，迷糊，大概是中暑的前兆，
赶紧停下找个树荫歇了一会。
看到放坡下来的童鞋还要装作在看花花的样子，囧。&lt;/p&gt;
&lt;p&gt;看到路面上100m的标记的时候，青蛙感觉像获得了新生一样，
啊，终于爬完了。
看秒表，用时1小时12分。
到顶之后稍微歇息，套衣服准备放坡。
本来每次爬解字石都会放坡到村里打水的，
这次青蛙估计放坡下去就真的要推上来了，
看看水袋里大概还有500ml水，还是放坡往回走吧。&lt;/p&gt;
&lt;p&gt;放坡的过程总是很畅快的，可惜很快就到底了。
放坡的时候腿开始发麻，从大腿一直麻到脚趾，放坡下来蹬车无力，只能慢慢蹭。。。
靠着一路缓下往回走。
回程的时候算了一下到泰陵村的距离，大概是11.5km，
爬上去用时72分钟，真的屎了算了。&lt;/p&gt;
&lt;p&gt;回程果然是顶风，而且青蛙手脚发麻，踩车无力，无比的痛苦。。。 
为神马会这样。。在G6辅路上一路骑基本处于无意识踩车的状态，
拐上北清路更加颓废，20km/h的速度都保持不住，一路17左右蹭回家。
苦逼的解字石爬坡行动结束。&lt;/p&gt;
&lt;p&gt;贴几张花的图儿吧，都是偷懒休息的时候拍的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh5.googleusercontent.com/-iCAH3QcBte4/T5QZLsAWsMI/AAAAAAAAHaY/SbIjm6AJD4k/s800/2012-04-22_14-04-06_982.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh3.googleusercontent.com/-QNk1ORU3_Ks/T5QZPaOJtVI/AAAAAAAAHag/aqq0Z5Q4dNs/s800/2012-04-22_14-04-24_551.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh6.googleusercontent.com/-vJI4QlX0Ww8/T5QZSgDzS2I/AAAAAAAAHao/pQQv71Mw68M/s800/2012-04-22_15-14-36_436_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh5.googleusercontent.com/-Wz_gvJnn0Ag/T5QZb1bVOAI/AAAAAAAAHa4/_Y8WtngO_fw/s800/2012-04-22_15-15-04_640_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;总结：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;起晚了的恶果就是太阳超毒，虽然气温才24度多，但是。。 仍然有中暑的可能&lt;/li&gt;
&lt;li&gt;4档跳齿，而且现在后拨变档反应迟钝，总要蹬着牙盘空转半圈后拨才能挂上档，这是肿末了，难道后拨要挂掉？&lt;/li&gt;
&lt;li&gt;前叉，唉，踩车的时候明显感觉到泄力，真想换硬叉了。&lt;/li&gt;
&lt;li&gt;一路鼻涕不断，自从去年感冒之后就一直流鼻涕。青蛙邪恶的怀疑是帝都的空气造成的。&lt;/li&gt;
&lt;li&gt;依旧见坡死，爬坡的时候稍一用力心脏就砰砰的像要跳出来，看来萎靡一冬天的恶果就是心肺功能严重减弱。&lt;/li&gt;
&lt;li&gt;腰疼了一路，被汗湿的衣服一贴疼的更加严重。&lt;/li&gt;
&lt;li&gt;回程的时候就在琢磨为什么一冬天退化这么多，会不会跟加班有关。考虑从下周起按时上下班。&lt;/li&gt;
&lt;li&gt;每次骑车手都被车把硌的特别疼，今年新买的手套手掌部位的海绵垫又被磨平了，难道要换把套？
     （目前骑车竟然到处都疼，老了一岁竟然虚弱了这么多。。。）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;数据：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TRIP Dist： 104.21 &lt;br /&gt;
TRIP time： 4：55：25 &lt;br /&gt;
AVG Speed： 21.16 &lt;br /&gt;
Max Speed： 48.62 &lt;br /&gt;
AVG Cad： 71 &lt;br /&gt;
爬坡时间： 1：12：33 （从泰陵村开始记。从去分水岭村的路口开始计时的话减去20分钟。）&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 22 Apr 2012 23:31:27 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-04-22:/2012/04/riding-xiezishi-0422/</guid><category>bicycle</category><category>riding</category></item><item><title>禅房看花花 20120415</title><link>https://www.gfrog.net/2012/04/riding-chanfang-0415/</link><description>&lt;p&gt;昨天去潭柘寺看花没有看爽。晚上到家跟师兄聊天，
师兄说妙峰山和禅房的花开的相当不错。
所以今天跟师兄又爬了一次禅房看花。
约好9点钟在担礼隧道集合，
青蛙一想到要自己先挠将近40KM，还有两段爬坡路就很头疼。
于是出门来一直在慢慢地爬，从上地用了50分钟才爬过温泉村穿过六环。。。
拐上军温路，那截上次把青蛙拉P的换上路上，更加的颓废了，一路在17、18的挠。
穿过军庄拐上G109，似乎稍稍活动开了，
过军庄之后的那段换上爬的还不错，中间还超了一辆拉砖的货车（砖车），
之后竟然一路领先这破车，直到妙峰山牌坊之前的下坡路上它才追上来，真搞笑。
8点55分到达担礼隧道，34km用了90分钟。。&lt;/p&gt;
&lt;p&gt;9点钟等来师兄，爬到下苇店补水之后正式开爬。
爬进了山才知道今天这趟禅房真的来对了，山上的花真是太美了，满山遍野，都是花。
走在路上，路两边都是花，抬头看山，山坡上也是花海，往下看山沟，一样满眼也都是花。
一阵小风吹过，花瓣随风飘散，美的无法形容了，各种形容花的词放在今天的禅房都不为过。
虽然认不出来这些花都是啥种类（似乎杏花比较多，不知道有没有桃花。。），
不过所有的花都一样美。
开始的时候青蛙遇到比较漂亮的树还会停下来拍照片，
后来拍也拍不完了，干脆不拍了，直接饱眼福。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh6.googleusercontent.com/-54hBgd4VRzc/T4rrbKdz58I/AAAAAAAAHZY/VgO7TUXX--g/s800/2012-04-15_10-40-47_172.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh6.googleusercontent.com/-FUrpXhflyU4/T4rre8Q4zaI/AAAAAAAAHZg/gVcoB-_GXEU/s800/2012-04-15_10-40-35_56.jpg"&gt;&lt;/p&gt;
&lt;p&gt;看花的新鲜劲过了之后就是无比痛苦的爬坡，今年的见坡死状态依旧没改变。
爬坡的时候完全没法保证踏频，换小飞踩又没有力量，要不了多久腿就酸的不行，
只好借着看花的名义停下来休息一下，惭愧。
不过经常停下休息倒是发现了靠近禅房村里的树上还有很多花苞，
所以未来几天到禅房村附近还是有一波花可以看的。&lt;/p&gt;
&lt;p&gt;11：30左右爬进了禅房村，在村口的台阶上坐了好半天，狂吃了一顿士力架+香蕉。
起来刚开始继续爬就萎靡了，出禅房那段有名的变态坡更是毫无廉耻的下车推过去。
推过了陡坡，继续骑车挠缓坡，马上感觉腿酸无力。
真心搞不清楚腿部肌肉到底是什么情况，稍稍使劲就酸，大概是歇了一冬天肌肉又退化了？&lt;/p&gt;
&lt;p&gt;之后的路基本无话，山路上风很大，放坡稍冷，还是需要件长袖衣服。
从妙峰山路上放坡下来放到手抽筋。
桥头的小饭店解决午饭，偶遇风云爬妙的大部队，浩浩荡荡，吃饭都摆了2桌。&lt;/p&gt;
&lt;p&gt;回程探索了一下从陈家村方向拐上G109，这样可以躲开109上那段爬坡路。
即便是这样，军庄之前的缓上也足够把青蛙拉P了，不到20的速度一路蹭蹭，
还要路上再没遇到车友，要不然非被鄙视不可。&lt;/p&gt;
&lt;p&gt;今天在禅房的路上几乎没遇到骑车的。
到上苇甸之前有两个骑公路的兄弟追上来，一辆BMC，一辆Cervelo。
后来放坡快放到妙峰山那边的路口的时候迎面看到一个车友，还好心得提醒我们小心路上的落石。
之后在禅房的路上就再没遇到其他车友路过，看来大家都更偏好妙峰山一些。&lt;/p&gt;
&lt;p&gt;总结：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;每年的花真的就那么几天，禅房山脚下的花已经开始落了。看花要抓紧时机&lt;/li&gt;
&lt;li&gt;继续见坡死，看来是肌肉力量退化，这个怎么锻炼回来呢？ 经常刷奥园？&lt;/li&gt;
&lt;li&gt;放坡手掌压力极大，从妙放坡下来之后，手指没问题，但是手掌和手腕又麻又疼&lt;/li&gt;
&lt;li&gt;骑稍微长一点距离之后腿就开始发麻，需要换骑行裤了？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;数据：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Trip dist：117.96 &lt;br /&gt;
Trip time： 6:30:04 &lt;br /&gt;
Avg speed： 18:14 &lt;br /&gt;
Max speed： 47.27 &lt;br /&gt;
Avg cad： 69&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 15 Apr 2012 23:40:45 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-04-15:/2012/04/riding-chanfang-0415/</guid><category>bicycle</category><category>riding</category></item><item><title>骑行潭柘寺 20120414</title><link>https://www.gfrog.net/2012/04/riding-tanzhe-temple-0414/</link><description>&lt;p&gt;本来想去潭柘寺看花，结果山里花都落了。
回来的路上在昆玉河边上倒是看到很多刚开的桃花。&lt;/p&gt;
&lt;p&gt;车子码表距离突破4000KM，突破3000KM的时候还是去年夏天，
这1000KM中间拖的时间够久。争取今年能再骑出一个3000-4000KM。&lt;/p&gt;
&lt;p&gt;总结：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;长途依旧屁股很麻&lt;/li&gt;
&lt;li&gt;9速指拨配8速飞轮完全就是坑爹，必须要破财换飞轮了。&lt;/li&gt;
&lt;li&gt;爬坡的时候保持均匀的功率输出很重要，也就是踏频要稳定，一旦节奏打乱了，就很难恢复了。&lt;/li&gt;
&lt;li&gt;今年骑车的妹纸真多，路上看到了好多个&lt;/li&gt;
&lt;li&gt;潭柘寺的香火真旺，山门前汽车狂堵车。不过看过山门真身之后，是不想再去了，真没意思。&lt;/li&gt;
&lt;li&gt;潭柘寺脚底下的饭店真心坑爹&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;数据：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Trip dist：114.14 &lt;br /&gt;
Trip time：6:00:23 &lt;br /&gt;
Avg speed： 19.00 &lt;br /&gt;
Max speed：45.18 &lt;br /&gt;
avg cad： 58 （踏频好低……）&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 14 Apr 2012 23:30:24 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-04-14:/2012/04/riding-tanzhe-temple-0414/</guid><category>bicycle</category><category>riding</category></item><item><title>十三陵水库绕圈 20120324</title><link>https://www.gfrog.net/2012/03/riding-shisanling-reservoir-0324/</link><description>&lt;p&gt;&lt;em&gt;（不想写流水帐式的日记了，简短结说算了。）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;早上趴窗看天气似乎不错，于是收拾打扮出发去十三陵水库。
8点半清华西门接到众人，稍事休息，出发上路。
第一次带队，无比的累，需要看路看车小心逆行不要跑的太快，
这时候才体会到去年每次出去都有人领骑的日子是多么舒心。&lt;/p&gt;
&lt;p&gt;去程一切状况良好，按步就班，
沙河大桥休息一次，昌平城里放水一次补水一次，没有吃饭就开始水库绕圈。
继续见坡死，不过在绕圈到水库西边的水坝上坐着休息了一会望风景，
蓝蓝的天蓝蓝的水，虽然没有绿草，但是遍地金黄色的草也还满耐看。
总之一个字： &lt;strong&gt;舒心&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh6.googleusercontent.com/-2114Zl8Sj3k/T29Dwwz3s6I/AAAAAAAAHW8/mUDnDtTLhEE/s800/2012-03-24_11-41-24_233.jpg"&gt;&lt;/p&gt;
&lt;p&gt;坐着看够了，后边的人也追上来，爬起来继续爬水库北路，
似乎之前休息的那一会挺起作用的，这段路爬的很顺，
第一个坡挠上去之后，借助下坡的速度相当轻松的冲过了剩下的坡，
感觉水库北路的爬坡路比南路简单的多。。。
爬到坡顶等人，结果发现把Casper给丢了，后来才知道他绕了一个大圈，
还在其他人之前回到了水库大坝。
其实大家路都不熟，青蛙自己傻乎乎的一个人在前面狂爬太不应该了，
应该留下来给大家指路才对。&lt;/p&gt;
&lt;p&gt;放坡下来回到水库大坝接到Casper，已经12点半了，大家都饿的不行，
于是赶紧杀奔昌平城里开饭，在政法大学边上的小路里找到家四川馆子，
7个人一桌子菜，吃的很爽。
Kaka给大家买了水果，Adam给大家买了湿巾，真是体贴啊。&lt;/p&gt;
&lt;p&gt;吃饱喝足放水补水完毕，大家开拔回城，上了G6辅路之后众人都跟打了鸡血一样，
加上顺风，蹭蹭的往回飙。
青蛙怕有人掉队，于是停下来收尾捡人，慢慢走到沙河，看到了正在路边休息的各位鸡血男。
稍事休息，穿过沙河继续上路。moli依旧是无比禽兽，一马当先飞驰而去，
青蛙在后边一路狂追，这样一前一后跑到辛庄桥遇到堵车，青蛙跟moli下到路边的土路上跑了一段XC路。
结果刚回到大路上，远远的看见其余众人的头盔消失在视线里。
青蛙喊moli赶紧追，结果追了半天，影子也没看见，
又怕后边的同学们离的太远，只好慢慢磨蹭到西三旗桥。
青蛙在西三旗桥上打电话给各位鸡血男，才知道他们早已经跑到五环上清桥了，
原来看到消失的头盔真的是他们！！
又给后边的Casper和Adam打电话，得到更雷人的消息，
Adam竟然跑错路了，竟然上了北清路。。。
在西三旗桥等到Casper和Adam，
大家编队一路到上清桥跟已经在那等了好久的鸡血男们会合。
Kaka又给大家分香蕉吃，真是美好。
聊天完毕，众人各回各家，活动结束。
青蛙沿学院路跑到荷清路上刷了一圈，然后回家。
到荷清路上之后明显感觉到双腿无力，踏频保持不住，
看看码表，又是90KM左右，难道现在的体力仅仅够坚持90KM嘛。。。&lt;/p&gt;
&lt;p&gt;总结：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;活动组织工作很辛苦，去年光跟团走捡便宜了。今年要尝试多组织几次活动，学习组队经验。&lt;/li&gt;
&lt;li&gt;春天真的来了，青蛙今天的一身冬季装备热的要命，下次再出门骑车已经可以直接穿骑行服了。&lt;/li&gt;
&lt;li&gt;依旧见坡死，水库南路的坡爬的很辛苦。&lt;/li&gt;
&lt;li&gt;后拨继续不给力，不过青蛙已经决定把这套指拨后拨飞轮拆下来装到折叠车上去了。再搞一套微转的后拨给山地车。&lt;/li&gt;
&lt;li&gt;众位同事的体力很不错，看来以后可以组织稍稍长线的活动。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;数据：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Trip Dist: 96.35 &lt;br /&gt;
Trip Time: 4:50:28 &lt;br /&gt;
Avg Speed: 19.90 (在上清桥的时候看还是20+，到了荷清路上迅速被拉低) &lt;br /&gt;
Max Speed: 42.48 &lt;br /&gt;
Avg Cad: 67 （踏频比上周活动降了不少，感觉强度也不是一个等级上的，跟公路党爬坡太有压力了）&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 24 Mar 2012 23:24:54 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-03-24:/2012/03/riding-shisanling-reservoir-0324/</guid><category>bicycle</category><category>riding</category></item><item><title>东方红朝圣20120317</title><link>https://www.gfrog.net/2012/03/riding-dongfanghong-tunnel-0317/</link><description>&lt;p&gt;&lt;em&gt;（终于正爬完了一次东方红隧道，值得庆祝。）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;原本预计今天去通州跟橘子陈面基，但是有按不住心中的躁动，
在昨晚最后的时刻决定继续跟随公路党活动，去爬东方红隧道。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh4.googleusercontent.com/-U66hwavTaIo/T2ShBOSnCEI/AAAAAAAAHWk/sYnq2rJK1bw/s800/2012-03-17_10-40-57_335.jpg"&gt;&lt;/p&gt;
&lt;p&gt;8点半在百望山森林公园门口等到了今天的大队伍，
心里彻底凉了半截，又全是公路啊，有全是禽兽啊。
（登场人物介绍： 枪兵oddguy、新一代禽兽Dr. glideBy、
周博士RraptorR、熊mm RockPillars，
还有山地转战公路不久的begaleagle，外加一只弱青蛙me）&lt;/p&gt;
&lt;p&gt;熊mm RockPillars竟然也是一辆Trek公路啊有没有！
心想完蛋了，今天回程肯定又是吃灰的命儿了。没办法，既然出来了，那就玩命跟队吧。&lt;/p&gt;
&lt;p&gt;去程开始阶段路上车比较多，所以大家速度也不快，
青蛙在后头跟着还满悠闲，还有时间瞅瞅码表，换下档调整踏频。
爬过温泉，到军温路的起伏路段，青蛙瞬间就不给力了，这就是传说中的见坡死嘛？
之间公路党们嗖嗖的爬上去了，只剩青蛙一个人在后面慢慢蹭。
还好之前爬过几次禅房，认识这边的路线，既然追不上了，那就在后边按自己的频率倒腾好了。
倒腾了一会在一个正在修路的坡上远远的看到枪兵掉头回来寻觅我这个掉队的来了，
羞愧，枪兵过来提醒回程的时候路过这个坡的时候要小心，
因为半个路面都被占了，而且路上有沙子还有水。真是细心的领队啊。&lt;/p&gt;
&lt;p&gt;转向G109不久大家就被一波结婚的堵在了路上，鞭炮竟然从村头放到了村尾，
在路上每隔5米横着摆了一挂鞭，真是无语了，有钱又无知的典范。
不过因为队伍被堵住了一小会儿，青蛙总算赶上了队伍，
于是跟begaleagle一同发车，不过爬过两个坡之后他也在前面没影了。。。。
青蛙只好继续一个人磨109上的坡，
去年这段爬坡路感觉很轻松啊，为什么今年像磨不过去一样，太难爬了。
好不容易熬过妙峰山牌坊，看到大家都在路边休息等我，拖累大家的速度了，真是抱歉。
转过担礼隧道，长廊那里停了好几十人的大队伍，好壮观，
外加零零散散的小队伍，帝都自行车运动的人真多啊。&lt;/p&gt;
&lt;p&gt;众人继续向东方红前进。
老样子，青蛙5分钟之内就被甩的没了影子，继续一个人磨吧。
跑到下苇店禅房路口的时候又遇到了北大车协的大车队，
不光人多，衣服还是统一的，哇赛，壮观的不得了。
继续磨，慢慢的追上了似乎掉队的RockPillars，似乎也有点爬不动的样子，
跟车跟了一会，想想一个大老爷们被个妞领骑，也有点不厚道，
于是想慢慢超过去领骑的，结果RockPillars还不服输，竟然加速跑掉了，
好吧，青蛙专心做最后一人好了。&lt;/p&gt;
&lt;p&gt;爬了不知道多久，到了小桥那里，看到大家都在桥边休息，
枪兵则是在路边等着我们这俩后来者，看到我们过来了，招呼我们先爬，
于是青蛙跟RockPillars也没休息，直接开爬。
开始阶段枪兵给我俩打气，说争取15分钟爬到隧道口。
青蛙心想似乎爬坡路是3.5km，15分钟爬上去还是有希望的呀，
于是一阵变档狂踩，超过RockPillars，试图跟住枪兵的节奏，
可是没跑10米就完蛋了，踏频嗖嗖的往下掉，呼吸也乱了，
结果就是眼看着枪兵跑出了视线外。&lt;/p&gt;
&lt;p&gt;最后青蛙一路小盘+大飞，慢慢往上蹭，踏频倒是能保持在70-80的样子。
一路蹭下来发现小盘带大飞竟然刮前拨，不知道这一路链子被磨掉了多少，囧。
眼看着前边就要到隧道口了，青蛙还是被后出发的周博士RraptorR给追上了，
估计离隧道口只剩下100m左右的距离。
到达终点，青蛙用时22分钟，看来15分爬上来还是很有难度的，必须勤加练习才成。
枪兵早早就爬上来蹲在路边等着给大家拍照，赞一个。&lt;/p&gt;
&lt;p&gt;在隧道口稍事休整，拍照留念，大家穿好衣服开始放坡。
爬上去的时候累的热汗淋漓，一放下来当即感觉手脚冰凉，
也难怪，空气湿度太大，而且又是阴天。
放到坡低的时候遇到了一队据说是地质考察的学生，
众公路禽兽从他们身边加速飞过的时候惊起了一片呼声，
不知道又有多少小mm又要仰慕死这几只公路禽兽啦，哈哈。&lt;/p&gt;
&lt;p&gt;一路放坡到下苇店，大家在超市停下来放水补给，
枪兵给每个人发了香蕉，周博士给每个人发了湿巾，都是相当nice的gg啊。
青蛙自己找了一瓶维他命水喝（为神马说它，因为青蛙怀疑回程路上不停抽筋可能和这饮料有关）。
吃饱喝足大家上路回家，结果还没出下苇店村青蛙就被他们甩下了，好吧，继续自己磨。&lt;/p&gt;
&lt;p&gt;磨过担礼隧道，青蛙接到一个骚扰电话，迅速挂掉之后上车立马感觉左大腿似乎不太对劲，
爬坡的时候一用力，好吧，原来是要抽筋，于是不敢太使力，慢慢蹭。&lt;/p&gt;
&lt;p&gt;蹭过妙儿的牌坊，蹭过G109上的一段缓上，蹭过上午被结婚的队伍堵住的小村子，
拐上军温路，这个时候右小腿也开始抽抽，真是流年不利，去年骑车从来没抽筋过，
结果今天俩腿全抽抽了。。。
这个时候速度也降到了20左右，踏频神马的更别提了，只能找踩的动的档位踩了。
近乎绝望的时候看到枪兵再一次回来捡掉队的老弱病残（同一个人），
于是鼓足勇气爬上一个坡，看大家都在坡顶等着我呢，看我到了飞身上车继续开拔，
然后，我又是一个人了... 那就继续蹭好啦。
蹭到温泉路的时候被一辆汽车拦住问6环怎么走，
囧，我骑自行车的怎么会知道6环入口在哪，那顶上是高速好伐，自行车不让上去的...
继续蹭，终于给我蹭到了温泉村，大队伍在这放水等我呢，
于是停下来稍稍休息了下，继续出发。
当然，青蛙还是一个人慢慢蹭了，两腿已经完全不敢发力了， 稍一发力就抽筋，
而且两腿的大腿关节开始疼，难道是因为天潮的关系？&lt;/p&gt;
&lt;p&gt;枪兵也让队伍先走，自己一个人陪我在后边蹭。
唉，真不好意思，让枪兵为了我一个老弱病残耽误行程。
好不容易蹭上了黑龙潭路，这条路窄，前面的队伍也跑不开，
青蛙慢慢追上了begaleagle同学，跟他编队蹭到了百望山森林公园门口，
青蛙在这里过桥向东，剩下的人直行回清华。&lt;/p&gt;
&lt;p&gt;过桥之后青蛙已经彻底颓废了，看了下码表，几乎40km没下车，手脚都已经没有知觉了，
在马连洼北路上还被一个山寨折叠车给办了，当时码表时速18（恨）。
16-18的速度蹭到家里，发现浑身上下已经都湿透了，天气湿度太大。&lt;/p&gt;
&lt;p&gt;总结：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;再也不要跟公路党一起混了，如果说上次十三陵只是被震惊到，这次是彻底伤到了。
     山马党跟公路党真的玩不到一块去的，路上至少三分之二的时间都是一个人在战斗，这种体验太痛苦了。&lt;/li&gt;
&lt;li&gt;骑公路真的很拉风，上次十三陵有2个小mm回头注目两只公路禽兽良久，
     这次遇到大批学生有惊起一片惊叫声。公路拉风，真是太拉风了。&lt;/li&gt;
&lt;li&gt;青蛙有点喜欢上那种飞驰在风中的速度了（虽然只能放坡到底之后体验那么一小会），
     看来什么时间真的要换公路了，不过今年是没机会了，明年看情况吧。&lt;/li&gt;
&lt;li&gt;继续体验那个败家后拨，青蛙甚至在怀疑是不是飞轮不是8速的了，
     下次换个9速指拨看看手感？ 似乎开始乱投医了。囧&lt;/li&gt;
&lt;li&gt;最近天气变化无常，所以千万要带足衣服。
     看周博士 RraptorR 把护膝塞到衣服里保暖还被冻的直哆嗦，青蛙都替他担心。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;数据：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Trip dist： 90.59 &lt;br /&gt;
Trip time： 4：13：12 &lt;br /&gt;
Avg speed： 21.46 &lt;br /&gt;
Max speed： 42.48 &lt;br /&gt;
Avg cad：  72 （青蛙注意了一下踏频，换飞轮之后平均踏频确实有提升，但是可能也是因为一个冬天没有运动，力量减弱导致的。）&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 17 Mar 2012 22:13:10 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-03-17:/2012/03/riding-dongfanghong-tunnel-0317/</guid><category>bicycle</category><category>riding</category></item><item><title>2012新春第一骑：十三陵水库/长陵</title><link>https://www.gfrog.net/2012/03/2012-first-riding-shisanling-reservoir-changling/</link><description>&lt;p&gt;话说本来计划上周就出去骑一圈的，
但是看了下天气预报，4-5度的天气出去骑车压力仍然相当大。
所以改在今天出洞。&lt;/p&gt;
&lt;p&gt;又本来打算今天一个人单飞十三陵水库绕圈的，
不过刚好水木自行车版枪兵oddguy把他组织十三陵的活动改到了今天，
于是青蛙正好跟团出行。&lt;/p&gt;
&lt;p&gt;周五的时候在版面上询问得知今天的活动其实只有三个人，
俩公路（oddguy &amp;amp;&amp;amp; glideBy）外加一个苦逼的山马党（这个自然就是青蛙我）。
虽然感觉压力山大，但是还是硬着头皮上了（剧透：最后毫无悬念的被虐）。&lt;/p&gt;
&lt;p&gt;早上9点50在上地南口等到了两位公路QS，简单休息然后出发。
刚开始骑就已经隐隐约约的感觉到顶头风了，到了京包路上更加明显，北京的春天啊，真难熬。
oddguy和glideBy在前面交换领骑，我就在后边捡便宜躲风头。
因为顶风，大家走的都不是太快，25-30的样子刷到北清路。
在北清路向右拐上八高，glideBy新车的兴奋劲上来了，顶风在前面呼呼的狂飙。
路过六环的时候追上了一票骑友，呼呼拉拉好多人，队伍中间竟然很多mm（oddguy：下次出来要把手机号印到后背上）。
之后又陆陆续续的遇到了骑车的小队伍，看来真是到骑车季节了，大家都出洞了。
在昌平城外那个立交桥的坡上，青蛙明显感觉到自己今天要杯具，爬坡无力，还好坡不长，勉强跟上两QS进了昌平城。&lt;/p&gt;
&lt;p&gt;从昌平城里穿城而过，赶奔十三陵水库。
中间oddguy接到电话，得知另一队爬解字石的QS在长陵村里，
所以我们改变绕水库然后回昌平吃饭的计划，沿水库南路奔向长陵。
在十三陵水库坝顶看到了好大一队骑友聚集在那里休息，
沿水库南路爬坡的时候也陆续遇到了或骑或推的骑友，又有很多mm（oddguy：喂，那个mm你头盔戴的太靠后了，往前戴），
估计他们是一队人，据两位QS分析可能是某校车协之类的组织。
水库南路的爬坡路上青蛙继续颓废，被俩QS远远落下。
青蛙的骑车技术基本已经完全退化了，放坡拐弯的时候没掌握好，只顾着看码表，差点冲到路对面沟里，还好当时对面没车。。。&lt;/p&gt;
&lt;p&gt;拐过水库南路，一路顶风爬坡，glideBy依旧领骑，
青蛙在后边玩命的跟，终于在爬长陵前边那个坡的时候把膝盖抻到了，疼。
于是在后面慢慢磨蹭，还好爬坡上来就是长陵，大家下车休息，等爬解字石的QS们放坡下来。
在解字石的路口又遇到很多骑友，基本都是奔向解字石方向，看来今天顶风爬坡的大有人在。
在路口等到某车店（唉，没记住）老板李伟，大家在路边晒太阳越晒越冷，于是决定去长陵村里找家饭店等其他人。
从搓板路放坡下来，在村头那家X随意饭店（李伟：枪兵你选哪家？ oddguy：随意。），四个人点菜开吃外加侃大山。
等其余五位爬解字石的QS过来之后，大家拼桌吃饭外加继续侃大山。
吃饱喝足放水完毕，大家装备利落，返程。
吃饭的时候李伟说这么大的风回程的时候匀速50不是梦啊。
结果一出来就真应验了，一路没怎么蹬车，40+的速度放到G6上，甚至中间遇到爬坡都是35+的速度通过的，这也太爽了吧。&lt;/p&gt;
&lt;p&gt;当然青蛙没爽多久就杯具了，刚刚进6环就已经保持不住踏频，
眼瞅着公路QS们嗖嗖的飞走，没人领骑，踏频降的更厉害，于是接着被山地超（神哪，他骑齿胎竟然能跟上公路QS们），
后来只剩青蛙跟另外一个骑光头山地的哥们，速度也降到28左右。
接着青蛙被一辆大货车堵住，又眼瞅着这光头山地哥们飞走... 好吧，那就慢慢蹭吧，25-26的样子小心谨慎的在路上爬。
爬过各种堵车的沙河，爬过路庄桥，心里想着总算离北清路的辛庄桥不远了，继续爬。
爬到辛庄桥，前面飞走的众QS果然在那里等着，看青蛙到了，大家问好各自的路线继续上路，
大队QS继续八高，青蛙跟glideBy右转上北清路转道京包路。&lt;/p&gt;
&lt;p&gt;跟glideBy在北清路上慢慢往回爬，被glideBy各种忽悠上公路（纠结，其实我也很想公路啊。但是，还是攒钱搞四轮比较紧要）。
另外glideBy讲解了一下怎么选择车架尺寸和他买现在这辆公路的过程，啧啧，遇到一辆适合自己的公路不容易呀。
爬到上地南口，glideBy继续向南回清华，青蛙转头闪人回家，2012年第一骑结束。&lt;/p&gt;
&lt;p&gt;总结：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;蛰伏了一冬天，青蛙体能是彻底完蛋了，爬坡无力，于是现在很担心清明是不是能去威海了。&lt;/li&gt;
&lt;li&gt;新换的公路飞轮相当舒适，体力足够的情况下能在高速的时候保证踏频。
     之前青蛙用山地飞轮，在公路上骑车，踏频波动很厉害，要么70左右，踩起来很费劲，要么就100多，踩的累死。
     换成公路飞之后在25-30左右的样子都能保证90-100的踏频。&lt;/li&gt;
&lt;li&gt;后拨的问题依旧没解决，有些档位变不上去，只能一次变2档再退回来一档。
     郁闷，难道为了这飞轮再换一次Shimano的后拨？&lt;/li&gt;
&lt;li&gt;路上的汽车实在太疯狂了，去的时候有几次差一点被突然从路口里冲出来的汽车撞到。
     回来的时候青蛙在G6上差一点撞上了一辆突然停在路边的汽车，最气人的是车上的人还有说有笑不当回事，真无语啊。
     G7上看到一辆货车突然一个急刹车，后胎都烧冒烟了，眼看着车都要翻倒的样子，很吓人。&lt;/li&gt;
&lt;li&gt;回来之后嗓子疼的更加厉害了，看来明天要老实在家趴着养病了。&lt;/li&gt;
&lt;/ol&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 10 Mar 2012 23:57:31 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-03-10:/2012/03/2012-first-riding-shisanling-reservoir-changling/</guid><category>bicycle</category><category>riding</category></item><item><title>菜鸟换飞轮记</title><link>https://www.gfrog.net/2012/03/diy-change-cassette/</link><description>&lt;p&gt;很早之前青蛙就在妄想着把俺的rr5.2上换个公路飞，
想了许久，那天在&lt;a href="http://Cyclone.board.newsmth.net/"&gt;水木自行车版&lt;/a&gt;灌水，说起了飞轮的问题。
&lt;a href="http://www.newsmth.net/nForum/user/query/glideBy"&gt;glideBy&lt;/a&gt;老兄忽然说他那里有一个12-21T的HG50-8飞轮，
齿数排列12-13-14-15-16-17-19-21，售价50羊。
这么神奇的飞轮青蛙自然当场拿下。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh6.googleusercontent.com/-WO1f201nrgg/T1jXGQ701sI/AAAAAAAAHUA/kmllCy8m-5s/s800/2012-03-07_21-17-35_392.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh5.googleusercontent.com/-TmruB88D7TE/T1jXKwPhmHI/AAAAAAAAHUI/ZQIdEQ4tPIU/s800/2012-03-07_21-18-06_831.jpg"&gt;&lt;/p&gt;
&lt;p&gt;青蛙兴冲冲的拿着飞轮回家，
准备把原来车上的SRAM山地飞轮卸下来，装到去年青蛙收的那套轮组上，然后换上新飞轮。
可是到楼下小修车铺一问，竟然没有卸卡飞的工具（当然可能不是真的没有，只是人家不想借青蛙用罢了）。
没办法，拿着轮子去车店又太远了，于是青蛙也没了出去骑车的兴致，宅在家里郁郁了2天。&lt;/p&gt;
&lt;p&gt;自己taobao工具远水解不了近渴，工作日又没有时间带轮子去车店，青蛙只好再次求助水木自行车版。
在hai版上迅速借到了工具（多谢&lt;a href="http://www.newsmth.net/nForum/user/query/COMMENCAL"&gt;COMMENCAL&lt;/a&gt;顶着北风给我送工具。）
马上回家开拆。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh6.googleusercontent.com/-c3hTTjfYrTg/T1jXOhaDbWI/AAAAAAAAHUQ/IIiNWHJ7C24/s800/2012-03-07_21-19-46_199.jpg"&gt;&lt;/p&gt;
&lt;p&gt;这是原来的山地飞，第一个目标就是把它卸下来。&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh6.googleusercontent.com/-5kJI_b7x5-Q/T1jXSWJo5dI/AAAAAAAAHUY/usornXO37OQ/s800/2012-03-07_21-23-25_775.jpg"&gt;&lt;/p&gt;
&lt;p&gt;卸下来了，跟公路飞比比大小，lol&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh3.googleusercontent.com/-OioMWVULDmM/T1jXV0u_ArI/AAAAAAAAHUg/dr18gkJk1ws/s800/2012-03-07_21-31-57_774.jpg"&gt;&lt;/p&gt;
&lt;p&gt;顺路把山地飞卸下来擦擦干净，各个齿片来排排座比大小&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh4.googleusercontent.com/-mZkAkZtIGhs/T1jXZetmUaI/AAAAAAAAHVE/T2VbZu_C9pQ/s800/2012-03-07_22-11-29_895.jpg"&gt;&lt;/p&gt;
&lt;p&gt;换上新飞轮：&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" src="https://lh6.googleusercontent.com/-Zaqu7P53CsM/T1jXc7EihTI/AAAAAAAAHU0/Kn-jdvvv4gw/s800/2012-03-07_22-24-07_513.jpg"&gt;&lt;/p&gt;
&lt;p&gt;之后就是装车，调刹车，调变速，青蛙没有拍照片。
因为调变速的时候遇到了大问题。
这个公路飞上对应山地飞的齿（就是公路飞和山地飞都有的）数，变速就很顺畅，遇到了只有公路飞上有的齿，变速的时候链条不会动。
比方说14-15-16， 14和16山地飞上有，所以没问题。
但是在15上的时候，不论是变向15-&amp;gt;14还是15-&amp;gt;16，链条都不会动，再按一次指拨，链条会一次跳两个飞，越过14/16，直接变到13/17去了。
不清楚是链条长了还是后拨没调整对。&lt;/p&gt;
&lt;p&gt;青蛙报着有病乱投医想法，试着截短链条，结果问题依旧，链条还因为自己的土鳖行为，把销子完全打出来，装不回去了。
搞了半夜，也没弄明白，最后青蛙一狠心一跺脚，决定第二天去收一枚新链条。&lt;/p&gt;
&lt;p&gt;这就是被青蛙搞杯具了的两截链条（不知道还有没有方法接上）：&lt;/p&gt;
&lt;p&gt;&lt;img alt="6" src="https://lh4.googleusercontent.com/-oNERWRX4oRA/T1jkseq6vuI/AAAAAAAAHV0/QA4EQN3Ugak/s800/2012-03-09_00-54-04_461_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;去车店没有买到8速链条，只好买了一条HG53，80羊，真假未知，这是截短后剩下的两截：&lt;/p&gt;
&lt;p&gt;&lt;img alt="7" src="https://lh6.googleusercontent.com/-fqPWHK8gpUk/T1jkvRJEueI/AAAAAAAAHV4/xvcU9ta-5_o/s800/2012-03-09_00-54-18_30_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;新链条换上，问题依旧，于是麻烦车店的师傅帮忙细细调整，
据说问题处在后拨导轮和飞轮的间距上，
之前用山地飞间距比较大（换成公路飞之后要调整一下？不确定，但是这么调确实有效），
目前后拨表现基本正常，只是有些档位稍有拖沓，不过总算可以用了。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 08 Mar 2012 20:30:47 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-03-08:/2012/03/diy-change-cassette/</guid><category>bicycle</category><category>shopping</category><category>diy</category><category>pictures</category></item><item><title>入手P18轮组</title><link>https://www.gfrog.net/2012/03/bought-p18-wheels/</link><description>&lt;p&gt;在各大论坛上蹲坑很久，终于蹲到了一个不是那么贵的P18轮组，
花鼓超润， 但是轮圈看起来磨损比较严重。
前圈稍稍有那么一点隆，不过在可以忍受的范围内。&lt;/p&gt;
&lt;p&gt;上图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/AChRFLH-S6g9ZAq_PaWo2O7ZV8hwaEtXeuZX8REsvYT-mwYxM8rnpaIa0-q1vgU27uQXoBv48OSyW4CbSWg2qQ-EIhX2r09WWQC43B5xaYENxMSNpMGYyHga15l04wibivyjBjCJT_g=w800"&gt;&lt;/p&gt;
&lt;p&gt;前轮花鼓：&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh3.googleusercontent.com/pIx7MzTLmPEI2EKaWdx2ARI_jYX8Trz0XK4fR1cS0-jkBQVZ1iWDYsZ9-DWP3-dwH5Hdlz1GM9OybQKtTaQqgmNEgRX627AkukdQwHwY8ErmasqdIodBJUhItNJD61UuL1OQ10mh0wU=w800"&gt;&lt;/p&gt;
&lt;p&gt;前轮轮圈：&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh3.googleusercontent.com/NNv-1ntFc5Vjn6w7uND3uNq12lVY3Q-Xa1As_HzSpc-HupvZ3JvT_ghG-wPDUoPz-KQg3dng27_WOOwMMa2r2-14z4Tx_kQWOSaAiSFnmXzXLIyjesfuNgYHTOGnDFthNFoscOkZmPs=w800"&gt;&lt;/p&gt;
&lt;p&gt;后轮花鼓：&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh3.googleusercontent.com/XBqrw9ikCzjzybs5c5CWnDhz8vlPfw7174OKioqbAj3x8tj0VdJr8_T74tRqK1wcx_IJp8lMo5fG6yO78CwOTivb3nqabXgavuQSxy9toarPDeVRlfdxXKqz2xnTDROxC7-8i0l5rgk=w800"&gt;&lt;/p&gt;
&lt;p&gt;后轮轮圈：&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" src="https://lh3.googleusercontent.com/dTCzVxDxw9eAqIz_4X_FLRjRQnmywK-_k14P3NatGshb9-bvnkN0MBE8R3bjl7LoDsB279_J90ytmgpIU06PTsHfSGnritLTqYkA49_FGhzxjsPQWjnKzdoxGnusSceByPftCohCwjo=w800"&gt;&lt;/p&gt;
&lt;p&gt;仔细看一眼轮圈，磨损还是挺严重的：&lt;/p&gt;
&lt;p&gt;&lt;img alt="6" src="https://lh3.googleusercontent.com/FBh3lG4D_bbbLLESQa14zGawD3NWH1VTkSL9XF9C0qtyX-cJlByhquZF-kb2HzJRBLOy4_tbyD2_ZeKkHcZU81oYMmB138lTcDOdKtIxP1BVe41_0c5m9hyJ6HjTSP6lGFTbGIbC61E=w800"&gt;&lt;/p&gt;
&lt;p&gt;不过这套轮组拿回家之后青蛙发现了一个大杯具，
青蛙手上的这个HT060车架不是130开档，而是125-126左右的开档（没有靠谱的尺子，用卷尺量的，有误差）。
结果后轮组大了5mm，虽然用力掰着能塞进去，但是换轮胎的时候太麻烦了。
目前青蛙也没想好该怎么做。。。 
研究了一下久裕花鼓的构造[1]，似乎也没法参照某些牛人的做法[2]种做什么手脚了。
下狠心把后轮开档掰开？ 
需要掰大5mm，左右各2.5mm，似乎对于钢架来说掰这点尺寸不算太大[3]。 
这两天还要再泡论坛学习一下。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;
果然大力出奇迹，最后掰开了后叉了事。&lt;/p&gt;
&lt;p&gt;参考：&lt;/p&gt;
&lt;p&gt;[1] 久裕花鼓的静力顶入更换培林安装方法 &lt;a href="http://www.chinabike.net/newbbs/dispbbs.asp?boardID=10&amp;amp;ID=25895"&gt;http://www.chinabike.net/newbbs/dispbbs.asp?boardID=10&amp;amp;ID=25895&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] 修改130开档的花鼓，变成127的了 &lt;a href="http://www.77bike.com/bbs/read.php?tid=41762"&gt;http://www.77bike.com/bbs/read.php?tid=41762&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3] 改装HT060使用多长的花鼓？后开档的是123mm &lt;a href="http://www.zdche.com/forum/viewthread.php?tid=25502"&gt;http://www.zdche.com/forum/viewthread.php?tid=25502&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 05 Mar 2012 22:12:31 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-03-05:/2012/03/bought-p18-wheels/</guid><category>bicycle</category><category>shopping</category><category>wheels</category><category>pictures</category></item><item><title>刹车+变速线管更换完毕</title><link>https://www.gfrog.net/2012/03/my-rr52-after-updating-brake-suite/</link><description>&lt;p&gt;L3+特氟龙的效果果然不是盖的，换完线管之后刹车和变速果然轻巧利索了很多。&lt;/p&gt;
&lt;p&gt;虽然升级刹车系统对骑行速度提升毫无影响，但是这个升级无疑是值得的，
毕竟刹车是关键时刻保命的东东，哈哈。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;（红色线管的效果似乎没那么好，青蛙总感觉本来是闷骚型的车，怎么有点向第三种青年方向发展了呢。。）&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/PQv_NsMQkGxZHuyO5l9N6biWq6im64JKOwngyyRQ4k43x0a5Lqht43ddkGNxDllDSx8E9sgahpOkv0wt0v30BCZf6MelFG7mrkE0H06OsFN779XU46DpKKJ4M7jUGP7UxgeX-cm3SlU=w800"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh3.googleusercontent.com/1RrNeTNkjgP8HLdScyxpaTBUBBjOQc102SCDKtXWwPyoQkP8QQEd1gSjqnv7tm58xPmS3NbwN6YcGf1YeYJmIMu0tOq28IT7ZD5ZBU0PiyUPxyEcGp0Qww_6-Iam_F4NM9Y0my_nz1o=w800"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 03 Mar 2012 23:50:05 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-03-03:/2012/03/my-rr52-after-updating-brake-suite/</guid><category>bicycle</category><category>pictures</category></item><item><title>遇到了山寨959V刹车皮</title><link>https://www.gfrog.net/2012/03/shanzhai-959v-brake-shoes/</link><description>&lt;p&gt;淘宝上的山寨货真是防不胜防，一个不小心，就遇到了山寨货。
真的Baradine网站是：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.baradine.com.tw/nproduct.php"&gt;http://www.baradine.com.tw/nproduct.php&lt;/a&gt;，&lt;/p&gt;
&lt;p&gt;山寨货打着Baradine下属品牌的旗号，结果完全货不对版。&lt;/p&gt;
&lt;p&gt;现在青蛙也搞不清楚淘宝上那种959v刹车皮是真货。难道只能硬着头皮去收koolstop嘛。。。&lt;/p&gt;
&lt;p&gt;山寨货的图片：&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh4.googleusercontent.com/-sZ6w19Fw4Hc/T1Byg-707TI/AAAAAAAAHQA/UNbvva444fk/s800/2012-03-02_15-01-12_84_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh5.googleusercontent.com/-kYhC_F_5s0Q/T1ByfHkQ43I/AAAAAAAAHP4/CG_4dOr4vyk/s800/2012-03-02_13-11-24_207_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh3.googleusercontent.com/-FAfGBt0gRRo/T1Byizj_u0I/AAAAAAAAHQI/Lgyv543UMJs/s800/2012-03-02_13-11-53_447_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh6.googleusercontent.com/-Ka1GSSHQdkE/T1ByktrDlTI/AAAAAAAAHQQ/E3fAytvwBVM/s800/2012-03-02_13-11-37_985_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 02 Mar 2012 23:13:12 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-03-02:/2012/03/shanzhai-959v-brake-shoes/</guid><category>bicycle</category><category>shopping</category><category>pictures</category></item><item><title>崇文门地铁站里的传送带</title><link>https://www.gfrog.net/2012/03/pics-conveyor-in-subway-chongwenmen-station/</link><description>&lt;p&gt;上次路过崇文门的时候人挤爆了，这次不在高峰期路过下，拍拍这个有趣的传送带。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/EnijHTqZmx7Y8ebrXmQ9EYqBm2XO-ftuSyEM0TcXqBMC4TwzSYtIOoUfDNkeaX_NoPS25cRaQNeXPBna-iYJd8mflOimUEnu_AZAnjyww1vKSZQC9x4powmOnZ9IUWvVZN_bWozAMqE=w800"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/TJjVkUhYPtSSlpstNaPZ2cyiST9PLsAhq1RD5ytlnyRrQGOD61HKwgVotRKGWwZrRqtluxnmel5MgBGMIUdq-ZYTaScCUtcsLI-IE_QXnDYizsCUWos6ex2MMuFq_85Y5jYvLP7E-hA=w800"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 01 Mar 2012 22:45:54 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-03-01:/2012/03/pics-conveyor-in-subway-chongwenmen-station/</guid><category>pictures</category><category>subway</category></item><item><title>订购的刹车套件到货了</title><link>https://www.gfrog.net/2012/02/brake-suite-received/</link><description>&lt;p&gt;FR5+SD7+Jagwire，另外还有一套变速线管。终于可以把现在车子上那套破刹车换掉了。
放图放真相。&lt;/p&gt;
&lt;p&gt;Jagwire：&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/-53_g-3aPrPw/T1ByDWOJW6I/AAAAAAAAHOc/5zq1rfYuMmY/s800/2012-02-27_12-37-26_415_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="https://lh6.googleusercontent.com/-SZhwwu5YQR0/T1ByFtvnwXI/AAAAAAAAHOk/Ihi0baOEdME/s800/2012-02-27_12-38-26_409_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="https://lh6.googleusercontent.com/-nf5LEJUBJUw/T1ByIsf7gJI/AAAAAAAAHOs/oRjRQHOWKf0/s800/2012-02-27_12-39-02_816_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" src="https://lh3.googleusercontent.com/-K47err0lefA/T1ByKzuDxgI/AAAAAAAAHO0/664JrQC0_og/s800/2012-02-27_12-40-40_821_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" src="https://lh4.googleusercontent.com/-hN_HwEaygPE/T1ByNNMHXAI/AAAAAAAAHO8/g7jE-qy1GWE/s800/2012-02-27_12-41-14_993_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="6" src="https://lh5.googleusercontent.com/-CwalX4B3Sg0/T1ByPXFDblI/AAAAAAAAHPE/gv5-dBGNeQg/s800/2012-02-27_12-42-47_969_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="7" src="https://lh4.googleusercontent.com/-3ge-wKQpI6Q/T1ByR6zoAPI/AAAAAAAAHPM/l98w0TAM098/s800/2012-02-27_12-43-22_678_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;
&lt;p&gt;FR5+SD7：&lt;/p&gt;
&lt;p&gt;&lt;img alt="8" src="https://lh6.googleusercontent.com/-Ge1kqFr7F-M/T1ByVK6NLDI/AAAAAAAAHPU/TgchE8ozeQo/s800/2012-02-27_12-59-33_409_%2517%25C2%25AC.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 27 Feb 2012 21:51:52 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-02-27:/2012/02/brake-suite-received/</guid><category>bicycle</category><category>shopping</category><category>pictures</category></item><item><title>自行车升级计划</title><link>https://www.gfrog.net/2012/01/plan-for-upgrade-bicycle/</link><description>&lt;p&gt;前两天青蛙的HT060折叠车后轮辐条竟然莫名奇妙断了一根，让青蛙不得不把升级自行车的计划重新捡起来。
虽然折叠的后轮可以换菜辐条然后平平圈凑合用，但是青蛙已经对HT060的滚珠花鼓加上6速旋飞不爽很久了，正好借此机会整体换掉。&lt;/p&gt;
&lt;p&gt;但是如果升级后轮，飞轮一定要换成卡飞了。
这样的话，飞轮、后拨、链条、指拨全部都要换，还真是牵一发而动全身。
青蛙琢磨了几天，想出了2个升级方案，现在二选一的困扰中：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先想到的就是给HT060全部换新装备，8/9速飞轮，x5/x7后拨和指拨。
     这样造价不菲，性能提升应该是最多的，不过就违背了HT060当作通勤/代步车的初衷。
     可不是嘛，青蛙的山地车还使着X4套件，8速飞轮呢。&lt;/li&gt;
&lt;li&gt;既然山地车上有一套X4套件，那就可以把它拆下来放到HT060上，然后山地车升级9/10速系统。
     问题呢，就是这辆RR5.2是不是值得升级9速，甚至10速系统。
     好处，就是俩车都升级了；坏处呢，谁知道升级了性能会不会有提高。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;目前青蛙比较倾向于方案2，反正都要买一套新变速套件，那就买一套不错的放山地车上，毕竟山地车才是锻炼用车。
代步车嘛，只要用起来比较顺滑就成了，性能要求倒不高。&lt;/p&gt;
&lt;p&gt;对于方案2，初步的计划型号是： PG950 + X7后拨 + X7指拨，链条还在选型中。。&lt;/p&gt;
&lt;p&gt;本来是一个换轮组的问题，结果还扯出来了变速套件的选择，真是很麻烦呀。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 14 Jan 2012 01:45:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-01-14:/2012/01/plan-for-upgrade-bicycle/</guid><category>riding</category><category>bicycle</category><category>upgrade</category></item><item><title>Happy new year</title><link>https://www.gfrog.net/2012/01/happy-new-year/</link><description>&lt;p&gt;Happy new year and best wishes for everyone&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 01 Jan 2012 00:00:21 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2012-01-01:/2012/01/happy-new-year/</guid><category>happy</category><category>new</category><category>year</category></item><item><title>2011年终总结及展望</title><link>https://www.gfrog.net/2011/12/2011-summary-and-2012-outlook/</link><description>&lt;p&gt;又到了年终岁末的总结时间了，青蛙已经发表过一篇关于今年骑行生活的总结，所以其他方面的总结就很简单了，&lt;strike&gt;几句话就可以说完。&lt;/strike&gt; 写完才发现又唠叨了一大堆。&lt;/p&gt;
&lt;p&gt;首先，婚礼办完了，五月某日。唯一的印象就是折腾，青蛙对中国式婚礼这种不折腾死人不算完的事情表示很无奈。&lt;/p&gt;
&lt;p&gt;其次，工作上似乎有条例了一些，但是自己仍然处于迷失状态。
自己到底做点什么，以后怎么发展，仍然迷茫。
虽然这是一件很不应该的事情，工作四年，仍然不知道自己的方向在哪里，真是loser。
以至于年终曾经转去做kernel方向，但是担心自己的能力，又不了了之。&lt;/p&gt;
&lt;p&gt;不过在现在的职位上已经有一些心得了，对于python，对于虚拟化，已经不像去年像一个文盲的状态了。
如果再在这个方向上做下去，也是有许多有趣的事情可以做。
不过一年中学到的技术知识似乎不多？现在想想，似乎编程技能并没有太多的提高，这是一个急需提升的地方。&lt;/p&gt;
&lt;p&gt;十月份青蛙收了一部kindle4，之后的三个月里阅读量比之前的九个月加起来都多。
kindle真的是值得拥有的好东西，赞美亚马逊。&lt;/p&gt;
&lt;p&gt;另外青蛙自己写了一个小工具抓取小说并推送到kindle（好吧，kindle上看的小说也不少），
写这个小东东的过程中会思考一下如何构建一个方便扩展又方便编码的结构，
不过写完之后却发现跟工作上使用的 kvm-autotest 结构真的很像。
由此，青蛙决定多读读其他的代码，目前正在抽时间读读vdsm，恩，争取2012第一季度可以读完。&lt;/p&gt;
&lt;p&gt;哦，最后，青蛙赶在年底公司培训经费作废之前报了一个CCIE培训班，争取明年上半年可以把CCIE认证考下来。
（为什么又回去学网络了，青蛙也不知道，姑且算作上一段工作经历的一个总结性考试吧，毕竟做了三年网络，再系统的学习一遍当做知识储备。）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2012展望&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;恩，前面说了两个了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读完vdsm代码&lt;/li&gt;
&lt;li&gt;通过 CCIE认证&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;剩下的还有（就不考虑SMART原则了，哈）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;增加跟autotest upstream的联系，多多在upstream冒泡&lt;/li&gt;
&lt;li&gt;经常回顾python的基本知识，python核心编程之类，多读几遍&lt;/li&gt;
&lt;li&gt;读一本关于linux内核的书，可以找尽量短点的，先学个皮毛&lt;/li&gt;
&lt;li&gt;完成那个给python推文章的小工具&lt;/li&gt;
&lt;li&gt;做/改一个irc bot，给内部irc，也可以自己在freenode上跑一个，方便自己。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;采购计划：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个更加给力的读书工具，kindle dx？ kindle fire？ ipad？&lt;/li&gt;
&lt;li&gt;一部胶片口袋机， 奥记u2？&lt;/li&gt;
&lt;li&gt;给媳妇买台ps3/ps4？ 再加一台电视？&lt;/li&gt;
&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 31 Dec 2011 20:00:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-12-31:/2011/12/2011-summary-and-2012-outlook/</guid><category>status</category><category>update</category><category>summary</category><category>outlook</category></item><item><title>吐槽：关于用户口令</title><link>https://www.gfrog.net/2011/12/some-idea-about-user-password/</link><description>&lt;p&gt;CSDN的密码泄漏事件被爆出之后，在Twitter和Weibo上引起了广泛的反响，很多人质疑国内网站的安全管理工作，竟然敢直接用明文保存密码。有一点常识的Web应用开发人员都应该知道直接在数据库里明文形式的密码是相当不安全的。但是为什么还有那么多人仍然这样做呢？他们出于什么目的呢？引人深思呀。&lt;/p&gt;
&lt;p&gt;一个网站到底应该怎么保存用户的密码才安全呢？又怎么应该设计登录流程呢？ 酷壳上有两篇文章介绍的不错：&lt;a href="http://coolshell.cn/articles/5353.html"&gt;你会做Web上的用户登录功能吗？&lt;/a&gt; 和 &lt;a href="http://coolshell.cn/articles/6043.html"&gt;Web开发中需要了解的东西&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;青蛙除了大学的时候搞的那个神马选课系统，基本就没有做过Web应用，就从一个Web用户的角度唠叨几句算了。&lt;/p&gt;
&lt;p&gt;首先，是我们到底需要多少个密码？ 只有一个显然不行，如果使用这个密码的网站有一个不靠谱，把用户密码给泄漏了（被黑了也好，被无良网站卖了也好，当然在天朝还有另外一种可能：被政府收缴），所有的网站都必须重设密码。那每个网站都设置一个密码呢，现在是个网站都要登录，谁能记得住那么多密码呀。&lt;/p&gt;
&lt;p&gt;为了防止密码忘掉，大体上有两种思路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;密码管理器&lt;/strong&gt;
这种方法比较简单，实际就是保存一个密码。本因为浏览器就内置了记住密码的功能，把用户从繁重的记忆密码的任务中解脱出来。但是浏览器的密码记忆方式功能单一，而且跟浏览器绑定，换一个浏览器就完蛋了。还有系统自带的密码管理工具，例如KDE的KWallet之类的都会有这种问题，跟某个环境绑定，移动性不高。青蛙目前也没有好的实践经验，可以想到的方法就是加密KWallet之后放在Dropbox上，这样多台电脑之间的密码同步可以解决，但是仍然没有解决跨平台的问题。可能这个问题需要借助移动设备来完成，例如Android上的密码管理应用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;基础密码+网站特征的组合规则&lt;/strong&gt;
密码管理器的实际上是有安全隐患的，因为密码都保存在电脑上，攻击者可以获取这些密码文件然后尝试暴力破解（密码管理器仍然需要主密码的）。
所以另外一种被广泛推崇的方法就是一个基础密码加上针对特定网站的特征字串组合。这样可以方便大脑直接记忆。
酷壳也有一篇文章介绍这种方法： &lt;a href="http://coolshell.cn/articles/2428.html"&gt;如何管理并设计你的口令&lt;/a&gt;，但是青蛙有一些其他的想法。
这篇文章里提供的针对每个网站做变化的方法看似简单实用，实际上有大问题：
很容易被人看出基础密码和变化规则，因为攻击者拿到密码的时候一般都会知道这是个什么网站，网址是神马，然后跟密码一对照，
原来只是加上了前后缀，照此规则，其他网站的密码就完全可以推测出来了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以这个变化规则应该有三个要求：容易计算（考虑下人类大脑的计算速度）、不太明显（不容易被看穿把戏）、但是还要足够复杂（增加被猜出来的难度）。&lt;/p&gt;
&lt;p&gt;有了这三项要求，寻找一个规则就不太简单了。青蛙在这举个例子：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;首先根据顶级域名分类，获得数字A，例如com是1，net是2，cn是3，其他的就是4，分类随你&lt;/li&gt;
&lt;li&gt;数出站点字母个数，获得数字B，例如gfrog.net，域名主题有5个字母&lt;/li&gt;
&lt;li&gt;取站点的首位字母，获得第三位、第四位密码，例如gfrog.net，首尾字母是g和g&lt;/li&gt;
&lt;li&gt;这步可选，为了不让获得密码明文的攻击者一眼看出破绽，把第三步取到的字母做个变换，这个变换可以固定的，例如直接前移后移几个字母，或者直接转换成ASCII码，&lt;/li&gt;
&lt;li&gt;然后把上一步取到的两位密码插入到基础密码里的第A个位置和第B个位置上，获得的密码就是这个网站的密码了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个方法只是青蛙随便想到的一个例子，不要拿去直接用哦，这种依赖算法的加密规则说出算法就不好玩了。找一种容易使用，算出结果又不太明显的算法来组合你的密码吧。&lt;/p&gt;
&lt;p&gt;另外在酷壳的&lt;a href="http://coolshell.cn/articles/2428.html"&gt;如何管理并设计你的口令&lt;/a&gt;这篇文章里也提到了密码分级的问题，看来大家都意识到一套基础密码仍旧不安全，XD&lt;/p&gt;
&lt;p&gt;密码分级，青蛙觉得至少要分成5套，重要性依次递减：
  * 与钱有关：涉及真金白银啊，一定要强密码
  * 重要个人信息网站：gmail、SNS网站，MSN等等，这些网站往往都保存着重要的个人信息资料，所以保障帐号安全很重要。
  * 国产邮件服务提供商、SNS等等，虽然个人信息同样重要，但是国内网站往往都会屈服于某种无形的压力，你懂得，所以单独列出。当然，在国内网站上提供个人信息同样要注意，完全没有安全性可言。
  * 一般网站，一个普通密码足矣
  * 怀疑没有完善密码保存流程的网站，对于这种网站最好的处理方法就是不用丫的，如果没法避免，最低安全级的密码处理就好，因为密码难免会暴露在别人眼前。&lt;/p&gt;
&lt;p&gt;哦，说了半天基础密码，生成基础密码的方式也有很多的，青蛙推荐一下apg这个包，各大发行版都提供，它可以生成指定长度的一组密码，例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&amp;gt; $ apg
Please enter some random data &lt;span class="o"&gt;(&lt;/span&gt;only first &lt;span class="m"&gt;8&lt;/span&gt; are significant&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;eg. your old password&lt;span class="o"&gt;)&lt;/span&gt;:&amp;gt;
IflicCydrum3 &lt;span class="o"&gt;(&lt;/span&gt;I-flic-Cy-drum-THREE&lt;span class="o"&gt;)&lt;/span&gt;
ChagNeg4 &lt;span class="o"&gt;(&lt;/span&gt;Chag-Neg-FOUR&lt;span class="o"&gt;)&lt;/span&gt;
geHebreil2 &lt;span class="o"&gt;(&lt;/span&gt;ge-Hebr-eil-TWO&lt;span class="o"&gt;)&lt;/span&gt;
luj2TanRysp &lt;span class="o"&gt;(&lt;/span&gt;luj-TWO-Tan-Rysp&lt;span class="o"&gt;)&lt;/span&gt;
Ash3Twoij &lt;span class="o"&gt;(&lt;/span&gt;Ash-THREE-Twoij&lt;span class="o"&gt;)&lt;/span&gt;
JaHyxlyetag4 &lt;span class="o"&gt;(&lt;/span&gt;Ja-Hyx-lyet-ag-FOUR&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;最后，如果你下载了csdn那一大坨密码文件，这个脚本可以帮你分析各种弱密码的使用频率，结果很欢乐的哦。&lt;/p&gt;
&lt;p&gt;（此脚本引用自 &lt;a href="https://twitter.com/#!/hmsea"&gt;waterye@Twitter&lt;/a&gt;）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ awk -F# &lt;span class="s1"&gt;&amp;#39;{a[$2]++}END{for(i in a){print a[i] &amp;quot;:&amp;quot; i }}&amp;#39;&lt;/span&gt; www.csdn.net.sql &lt;span class="p"&gt;|&lt;/span&gt; sort -rn &amp;gt; a.log
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;好了，吐槽完成，青蛙也该去整理下密码去了。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 21 Dec 2011 23:40:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-12-21:/2011/12/some-idea-about-user-password/</guid><category>security</category><category>password</category><category>shell</category></item><item><title>2011骑行总结</title><link>https://www.gfrog.net/2011/12/2011-riding-summary-route/</link><description>&lt;p&gt;这个总结分三部分，&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上半年&lt;/li&gt;
&lt;li&gt;下半年&lt;/li&gt;
&lt;li&gt;明年上半年展望&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上半年：&lt;/p&gt;
&lt;p&gt;搬家到了上地，坐公交/地铁去公司都非常不方便，于是一狠心一跺脚，去DKN 699收了一辆RR5.0回来通勤。
这算是青蛙到正式开始骑车之旅了。
住的地方离公司有8公里左右的距离，骑车其实刚好不太远，开始的阶段一直需要40分钟左右。
除了每天骑车，回家之后还要把车子扛上楼，是个额外的锻炼，XD&lt;/p&gt;
&lt;p&gt;正式开始骑车是跟Center叔一起爬十三陵水库，具体的体会已经不记得了，
记得的只剩下在十三陵水库边上望着蓝蓝的水蓝蓝的天感觉一路踩车骑过来还是很值得的，
另外还有回来的时候的龟速（我俩已经累到不行，15-16一路爬回城里）。&lt;/p&gt;
&lt;p&gt;这次之后青蛙就彻底爱上了骑车，几乎周周出去，经历过戒台寺的挑战失败
（爬到离戒台寺还有1km的时候爆胎，泪目）
之后，转向线联系平地路线，跟团爬过怀柔水库、腐败游温榆河、二游、三游十三陵水库、黄花城等等。&lt;/p&gt;
&lt;p&gt;当然装备也慢慢收着，头盔、手套、头巾、水壶架、副把，当然还有那只蝴蝶把。&lt;/p&gt;
&lt;p&gt;换过蝴蝶把之后青蛙跟团疯狂过一次白河峡谷，那时刚好S2线开放，
大家赶新鲜S2出台到延庆然后爬白河峡谷到汤河口，放坡放的好爽，
在白河峡谷里看山水看的很爽，这条路线真的值得多走几次的，风景真的太爽了。
这次本来计划1天的行程因为大家贪玩改成了2天，晚上大家在汤河口找地方住宿，
然后第二天沿G111骑到怀柔北站出台火车回城。&lt;/p&gt;
&lt;p&gt;最后这辆RR5.0杯具的被人偷走了，青蛙一直认为是那个蝴蝶把招了贼，
因为一个50块的车把，把700块的车丢了，唉，亏惨了。&lt;/p&gt;
&lt;p&gt;然后进入下半年，&lt;/p&gt;
&lt;p&gt;没车的日子很痛苦，挤地铁挤公交，青蛙成功的被13号线的空调吹出了重感冒，养了大半个月才好。
于是青蛙再一次忍不住诱惑，在一个桑拿天去DKN（为神马又是DKN，便宜呀。）
收了一辆RR5.2，继续开始骑车。
本来收到车的当天青蛙就计划去一次十三陵水库，结果被桑拿天彻底打败，
走半小时就要往身上浇水降温的天气里骑车很可怕。&lt;/p&gt;
&lt;p&gt;虽然有了RR5.2，但是青蛙不敢再骑大车通勤了，于是又收了一辆大行ht060，
专门用作通勤和城里闲逛，这辆小折让青蛙对折叠车的看法彻底改观了，
小巧轻便、速度不差，虽然稳定性不好，但是在公路上足够了。&lt;/p&gt;
&lt;p&gt;病愈收车复出之后第二次出行（第一次，收车当天去十三陵，失败。），
是跟师兄挑战解字石、大科庄、永宁、四海、黄花城绕圈的两日行程因为青蛙的体力不支彻底失败，
两日行程压缩到了一日，青蛙推了解字石、推了大科庄，挨到延庆，S2出台回家。&lt;/p&gt;
&lt;p&gt;回来之后对体力深表不满的青蛙开始在水木车版灌水，找队伍刷奥园。
夏天的晚上刷奥园真的是种享受，凉凉的风夹着一股草香，每次去刷都很舒坦。
外加认识了一批喜欢骑车的少年们，在奥园骑车聊天吹水，好不惬意。&lt;/p&gt;
&lt;p&gt;然后青蛙继续挑战帝都附近的线路，驼岭隧道绕圈、二爬解字石（这次成功的爬上去了，lol）、
黑山寨吃驴肉、禅房、这段时间是青蛙骑车骑的最开心的一段时间，因为上山可以摘到枣子吃，哈哈。&lt;/p&gt;
&lt;p&gt;接着青蛙计划在天气转冷之前跑完几条经典路线，例如没爬上去的戒台寺、潭柘寺、潭王路、东大高、妙峰山。
妙峰山的计划一直被打断，有2次水木党爬妙青蛙也没有赶上，给今年的骑行留下深深的遗憾哪。&lt;/p&gt;
&lt;p&gt;戒台寺、潭柘寺、潭王路一条线在叶子落的差不多的时候挑战完毕，
在这条路上围观到了结满柿子的柿子树，很奇怪为啥没人去收，都留在树上。
这趟线加爬了一次东方红，虽然体力压力不大，但是已经明显感觉到骑车久了开始发冷，放坡不敢放的太快。
冬天要来了。&lt;/p&gt;
&lt;p&gt;接着青蛙跟师兄一起跑了一次S2-八达岭-火烧营-横岭城-镇边城-高-大-雁翅-门头沟，
这条路线青蛙第一次突破的单日170km，结果就是骑在四环上已经开始打瞌睡了。
不过这次完成高大之后，青蛙的年度高大东计划算是完成了（算上之前的东），XD&lt;/p&gt;
&lt;p&gt;之后的骑行路线彻底被缩短了，因为冬天的大风和体力迅速消耗。
夏天的时候骑车几小时没事，天冷了2小时就被饿惨了。 
青蛙又爬了一次大觉寺防火道-凤凰岭，外加一次十三陵水库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2012展望&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;明年天气转暖之后计划&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;再把帝都周围的路线重新遍历一次&lt;/li&gt;
&lt;li&gt;争取一次完成三字&lt;/li&gt;
&lt;li&gt;争取爬一次长途，海南环岛？ 上海？杭州？山东半岛+辽东半岛？ 嗯，在策划中。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上，流水一般，大概还会附加一个菜鸟装备总结？ 有时间整理吧。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 20 Dec 2011 21:44:38 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-12-20:/2011/12/2011-riding-summary-route/</guid><category>status</category><category>update</category><category>summary</category><category>riding</category></item><item><title>在Twip中转换t.co链接</title><link>https://www.gfrog.net/2011/12/expand-tco-link-in-twip/</link><description>&lt;p&gt;自从Twitter强制把所有链接都转换为t.co之后，在手机上访问这些地址就成了大问题，开VPN慢，绕了一圈发现是国内地址，不开干脆访问不能。于是青蛙一直酝酿在Twip那里把短链接扩展。&lt;/p&gt;
&lt;p&gt;今天有时间，研究了一下，本来打算自己写的，但是本着不重复造轮子的态度，写之前google了一下，这不，这位同学已经写好了：
&lt;a href="http://hjin.me/code/727/"&gt;http://hjin.me/code/727/&lt;/a&gt; ,
全部修改的代码贴到了这里：
&lt;a href="http://pastebin.com/f4Gw0DND"&gt;http://pastebin.com/f4Gw0DND&lt;/a&gt;
青蛙拿过来直接扔进twip，问题解决。&lt;/p&gt;
&lt;p&gt;青蛙在这放出一个基于twip r204版本的patch吧，另外还有一个小修改的补丁，修复一些情况下的警告信息。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.google.com/p/gfrog/downloads/detail?name=0001-twip-enable-expand-tco-link.patch&amp;amp;can=2&amp;amp;q="&gt;0001-twip-enable-expand-tco-link.patch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.google.com/p/gfrog/downloads/detail?name=0002-twip-fix-some-warning-msg-in-expand-tco-link-patch.patch&amp;amp;can=2&amp;amp;q="&gt;0002-twip-fix-some-warning-msg-in-expand-tco-link-patch.patch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个修改只能解决t.co的问题，没办法解决其他被关照到的短网址服务，
所以青蛙仍然酝酿着什么时候搞一个把所有短网址都展开的补丁。&lt;/p&gt;
&lt;p&gt;不过青蛙看php代码实在是头疼，只好下次有时间再硬着头皮读代码改吧。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 18 Dec 2011 01:30:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-12-18:/2011/12/expand-tco-link-in-twip/</guid><category>php</category><category>twitter</category><category>client</category><category>patch</category><category>site</category></item><item><title>procmail + kdialog 构建邮件提醒脚本</title><link>https://www.gfrog.net/2011/10/procmail-kdialog-mail-notifyer/</link><description>&lt;p&gt;Mutt真的是神器，越用越觉得爽。
可惜命令行模式的工具都有个弊端：跟X交互能力比较弱，
例如Mutt就木有邮件提醒功能。&lt;/p&gt;
&lt;p&gt;之前在Gnome2的年代里还有
&lt;a href="http://www.nongnu.org/mailnotify/"&gt;mail-notification&lt;/a&gt;
可以对付用（这玩意占用系统资源狂多，似乎是通过监视文件更改来提醒的），
在Gnome3之后这个工具就完全不工作了，而且又没有后续版本。&lt;/p&gt;
&lt;p&gt;青蛙抛弃Gnome，换成KDE之后，也没有找到KDE下的邮件提醒工具，于是一直酝酿着自己写一个。&lt;/p&gt;
&lt;p&gt;实现邮件提醒功能，无非就是监控邮箱变更，可以在几个点检查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接使用POP/IMAP协议检查服务器端&lt;/li&gt;
&lt;li&gt;监视MTA动作&lt;/li&gt;
&lt;li&gt;监视MDA动作&lt;/li&gt;
&lt;li&gt;监视MUA动作&lt;/li&gt;
&lt;li&gt;监视邮箱文件/目录更改&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;直接访问服务器是最直接的办法，但是既然MTA都把邮件收下来了，
再去监视服务器就有点绕腾了，这种方法监视gmail/hotmail之类的邮箱还是很不错的。&lt;/p&gt;
&lt;p&gt;监视MUA的动作，
&lt;a href="http://www.adam8157.info"&gt;adam8157&lt;/a&gt;同学
&lt;a href="http://www.adam8157.info/blog/2010/05/mutt-filter-notify/"&gt;就是这么做的&lt;/a&gt;，
监视Mutt startusbar的特殊字符串，通过Mutt的filter发送notify消息。&lt;/p&gt;
&lt;p&gt;监视邮箱文件/目录变化就是
&lt;a href="http://www.nongnu.org/mailnotify/"&gt;mail-notification&lt;/a&gt;
的做法了，但是如果不想轮询的话，大概需要内核开启inotify支持。&lt;/p&gt;
&lt;p&gt;监视MTA动作，青蛙没有仔细研究，似乎还是需要MDA的某些行为处理，
所以青蛙直接用了在MDA里加入提醒脚本的方法。&lt;/p&gt;
&lt;p&gt;监视MDA动作，就是青蛙的做法，利用procmail的nested block，
把邮件pipe到一个脚本中处理，提取邮件发送者、标题和内容，然后发notify。&lt;/p&gt;
&lt;p&gt;消息提醒的脚本已经有人做好了：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blargasm.com/post/7980037487/evolution-new-mail-notifier"&gt;http://blargasm.com/post/7980037487/evolution-new-mail-notifier&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;青蛙拿过来修改了一下，去掉pynotify，直接调用kdialog命令发送消息。&lt;/p&gt;
&lt;p&gt;修改后的脚本在这里：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.google.com/p/gfrog/source/browse/mail/mail-notifier.py"&gt;http://code.google.com/p/gfrog/source/browse/mail/mail-notifier.py&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;脚本有了，然后修改~/.procmailrc，在需要监视的过滤规则里面加入&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="k"&gt;Some&lt;/span&gt; &lt;span class="n"&gt;filter&lt;/span&gt; &lt;span class="k"&gt;rule&lt;/span&gt;
&lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;
&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mail&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;notifier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt;
&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="n"&gt;Here&lt;/span&gt; &lt;span class="k"&gt;is&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;inbox&lt;/span&gt;
&lt;span class="n"&gt;Inbox&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这样就可以监视指定邮箱的新邮件啦：&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://gfrog.net/wp-content/uploads/2011/10/mail-notify.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: 2012-06-11&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;由于这个提醒脚本最终是通过cron运行的，并且经过几次fork之后，
它没法找到当前的dbus session了，
于是导致kdialog 使用旧式的KPassivePopup现实消息，
但是这玩意是hardcode了消息显示在屏幕中心，相当不爽。
青蛙google了很久，终于还是捏着鼻子看了下kdialog的代码才发现问题。&lt;/p&gt;
&lt;p&gt;更新：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.google.com/p/gfrog/source/detail?r=fe8e9b57574529453fdb8655e0392260d39dcbfb"&gt;https://code.google.com/p/gfrog/source/detail?r=fe8e9b57574529453fdb8655e0392260d39dcbfb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: 2012-06-11&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原始的mail notify脚本对于一些中文邮件subject和mail body的处理有问题，
导致无法提醒中文邮件。
目前青蛙的做法是把mail body当作utf-8字符串处理。
当然这不能从根本上解决问题，只算是个workaround吧，还好青蛙的中文邮件不多。&lt;/p&gt;
&lt;p&gt;如果哪位读者遇到中文邮件还有问题，欢迎反馈bug。&lt;/p&gt;
&lt;p&gt;同样，更新的代码在google code上：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.google.com/p/gfrog/source/detail?r=3de26a63648944313893d74b94f54f28770bed30"&gt;https://code.google.com/p/gfrog/source/detail?r=3de26a63648944313893d74b94f54f28770bed30&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: 2011-10-14&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;青蛙今天忽然发现这个脚本处理某些邮件的时候发件人那部分是空的，
调查一下发现时因为“email.Utils.parseaddr()”实际上是把发件人处理成名称和邮箱名的一个list，
如果发件人没有名字，只有一个邮箱名的话，
最后显示的发件人部分就是空白了。
青蛙修改了一下脚本，仍然放在了google code上：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://code.google.com/p/gfrog/source/detail?r=0c64c067cf047ad4390bc2e57875cacf328999f1"&gt;https://code.google.com/p/gfrog/source/detail?r=0c64c067cf047ad4390bc2e57875cacf328999f1&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 09 Oct 2011 16:47:35 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-10-09:/2011/10/procmail-kdialog-mail-notifyer/</guid><category>linux</category><category>mail</category><category>client</category><category>mutt</category><category>configuration</category><category>setup</category><category>desktop</category><category>procmail</category></item><item><title>十三陵水库笔记20110903</title><link>https://www.gfrog.net/2011/09/riding-ming-tomb-reservior-0903/</link><description>&lt;p&gt;首先鼓掌庆祝青蛙同学完成3.5小时十三陵水库行程，这条路青蛙纠结了很久，终于在今天完成了，看来可以作为每周常规锻炼路线跑一下。出发之前预计的是6点钟出发，12点之前回来，实际测试效果看来每周可以保证7点出发，12点回来，4小时之内来回就可以。&lt;/p&gt;
&lt;p&gt;恩，其实早上起床的时候还在纠结到底要不要去，结果一纠结就起晚了，出门的时候已经快七点半了，小区门口补水，买了4张饼，吃掉两张，装包里两张，预防没有实现目标，只好在路上解决午饭的最坏结果。然后又在小区门口那家修车店用气泵给车打饱气，气泵就是给力，刷的一下就打满了，换打气筒要吭哧吭哧打半天。其实打气的时候青蛙还在纠结要不要掉头向西去大觉寺算了，后来狠狠心，还是十三陵。&lt;/p&gt;
&lt;p&gt;7点30多分青蛙正式出发，木有直接杀上八达岭高速，而是从上地东路向北，跟着感觉走，结果越走越没信心，担心这一头扎下去是个死胡同咋办。后来在某根立交桥的地方发现了北清路右转的路牌，这下总算放心了，至少在北清路上可以转到八高。上地东路向北会走上正在修的京包高速辅路，大概是因为这条路还没修好，很少有大车经过，都是一些小车和公交。但是因为路窄，骑起来也挺惊险的，而且路上的灰尘更大，有些地方干脆满地是土、坑坑洼洼，走起来远没有八高舒服。不过这条路最大的好处就是不堵车啦，可以避开万年堵车的回龙观段，这是最大的优势。&lt;/p&gt;
&lt;p&gt;在近乎破土路的路上跑了半小时，终于走上了北清路，路宽了，但是并不好走，坑坑洼洼继续。这时候青蛙的腰又有些疼，感觉大概是因为护臂的原因导致的？ 停车摘掉护臂，腰部一上午确实再没疼过（这问题很怪，大概青蛙需要去医院检查下了。。）。 北清路向东不远就是辛庄桥，青蛙看到辛庄桥的时候终于松了口气，跟着感觉走还是走对了，哈哈。&lt;/p&gt;
&lt;p&gt;辛庄桥左转，上八高辅路，看到路口有两个骑友貌似在等人，一早骑八高的人还挺多的，木有停留继续向北，八高路好了很多，挂2-7档开刷，路上需要注意靠站/离站的公交车，用不了多久就到沙河了（北清路里沙河本来就没多远了），减速过镇子当作休息，发现路边似乎多了家麦当当，新开的还是之前木有发现过？&lt;/p&gt;
&lt;p&gt;出沙河之后继续2-7开刷，速度在28左右，但是踏频已经过100了，纠结了下这踏频是不是有点高，突然想到了青蛙的车是有3档牙盘的（囧，骑折叠骑惯了），于是换上3-7开刷，速度轻松保持在35左右，踏频80左右，刚过沙河大桥就追上一队车友，公路山地有男有女，不知道是去哪里的，lol。没有打招呼，慢慢超过后继续开奔。刷到6环的时候3-7的档位就维持不住了，速度迅速下降，只好换成2-7继续刷。&lt;/p&gt;
&lt;p&gt;到水屯桥之后右转进白浮泉路，进入昌平城，青蛙立刻感觉到自己走错了路，这条路的自行车道上每隔一段就有一条沟，根本没法快速通过，只能慢慢蹭过去，不过正好，减速喝水当作休息，慢悠悠的在城里七拐八拐拐上水库路，看路口已经有回程的骑友了，来的真早啊。继续2-7档刷到十三陵水库坡下，2-4/5档爬坡。这段几十米的小坡爬上去，青蛙立刻感觉到浑身无力，勉强蹭到大坝上，扔车，喝水，喘气。没等喘匀气赶快看了下表，8：55分。&lt;/p&gt;
&lt;p&gt;刚喘匀气，就看一队公路嗖嗖的从身边飞过，惊起一片路人的惊呼声。青蛙心里赞叹，脚下发软，继续喘气。不到2分钟，又一队公路飘过，但是这队的速度明显要比刚才那队慢得多，青蛙立刻起身上车，决定跟大队人马一起环湖，看了下码表，9点整。结果追起来就杯具了，人家在山地上一样嗖嗖的飞，青蛙只好不停的换档上坡，换档加速下坡，结果反倒越追落的越远。一直追到水库西边下坡，青蛙借着下坡狂蹬一阵，终于追上了这队QS。&lt;/p&gt;
&lt;p&gt;跟骑了几百米，在骑上水库西边那条路上被QS队伍发现了，似乎不太喜欢我跟的太近，那好，俺保持安全距离，离着10米距离跟随。转上水库北路，开始爬坡路段，青蛙菜鸟本色显现，只能换大飞爬坡，看QS们直接摇车两下就冲上小坡了，这里开始被QS们越落越远，只能远远的看到前边队伍的影子。在水库北路的平路路段，青蛙又2-7冲刺了一次，勉强追住QS们，但是明显浑身无力，控车能力下降。&lt;/p&gt;
&lt;p&gt;转向下坡路段，这时从后边插上来两辆汽车，被QS队伍堵住，结果形成了“QS-汽车-青蛙-汽车”这种杯具型的队形，青蛙完全不敢放坡，生怕撞上前面的骑车，不过QS队伍速度也很慢，没有拉开太多距离。放到坡底，这队QS似乎没有走水库北路，而是转向右堤路-朝凤北路，然后走水库路爬十三陵水库，爬水库大坝的坡青蛙继续杯具，好不容易蹭上去，但是再也跟不上QS队伍了，扔车，喘气，喝水，看表，9：30。半小时刷完水库，估计青蛙自己走的话用时可能要翻倍。&lt;/p&gt;
&lt;p&gt;休息几分钟之后青蛙开始撤退，沿水库路回昌平，路遇一逆行的老外，刚想骂之，看老外身后还有一逆行的中国人，心想算了，国人都不给老外做好榜样。。。 回昌平之后再一次选错了路，沿府学路一直向西，一路堵车、红灯，马上到达八高的时候又鬼使神差的转上了西环路，继续红灯。在城里磨蹭了半小时之后，总算回到八高辅路，开始回程。看表，10：02&lt;/p&gt;
&lt;p&gt;回程的时候完全没了来时候的体力，3-7保持不住，而且右腿膝盖开始有反应，换到2-7开始慢慢蹬，一路保持在26-28左右晃荡，减速喝水的次数明显变多。跑到沙河的时候开始频繁的脚麻，只能减速活动腿，然后强烈期盼着赶快跑完八高段。在回龙观桥右转进西二旗北路，速度完全维持不住了，只能20多点点的速度往回慢慢蹭。这时看表，还有不到20分钟11点整，青蛙给自己定下目标，一定要在11点之间到家，于是又拼命踩车，终于在11点的时候到家门口。&lt;/p&gt;
&lt;p&gt;到家之后又累又饿，青蛙掏出早上的饼吃掉，发现早上带的4瓶水，共计2.2升，回到家之后只剩一口。看来预算的还满准，XD&lt;/p&gt;
&lt;p&gt;秀数据：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;trip dist: 78 &lt;br /&gt;
trip time: 3：08：42 &lt;br /&gt;
Avg speed： 24.80 &lt;br /&gt;
Max speed：51.05 &lt;br /&gt;
Avg cad： 73&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 03 Sep 2011 23:05:48 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-09-03:/2011/09/riding-ming-tomb-reservior-0903/</guid><category>riding</category><category>bicycle</category></item><item><title>折叠酱油党之奥园笔记20110831</title><link>https://www.gfrog.net/2011/08/riding-olympic-park-20110831/</link><description>&lt;p&gt;青蛙既然决定了每周一三五刷奥园，那就一定要坚持！即使今天天气预报有雨，青蛙仍然带齐了装备，准备晚上奥园。
白天的时候在水木自行车版问了一下，似乎没有人一起（eyefashion大叔本来要来，但是因为其他事情耽误了），看来大家对下雨的预期都很高。&lt;/p&gt;
&lt;p&gt;依旧是下班之后迅速吃饭闪人，有了上次五道口堵车的教训，今天青蛙老老实实的走四环，结果依旧杯具，平时基本畅通的四环辅路今天堵成了一锅粥。在学院桥之前的一段路上几辆公交车霸占了自行车道，咱老实下车推人行道吧，看你丫能爬上马路牙子来占道不！？ 过学院桥向北，一直到清华东路上车竟然都不多，为神马周一的时候堵成屎样，就是堵给我看得嘛？！&lt;/p&gt;
&lt;p&gt;7点20多到达奥园，A点竟然没人，青蛙坐在路边休息的时候过来一个骑公路的大叔，第一次来奥园，问青蛙奥园的路线，于是青蛙话痨发作，一顿指点，似乎给大叔讲的很不耐烦，说了句“我先刷一圈看看”，转身就跑。青蛙想有个公路领骑拉拉速度肯定很爽啊，于是赶紧跳上车开追。到五环上桥之前追上大叔，然后保持30左右的速度一路跟住大叔，但是到了奥体东路爬过小坡之后，青蛙瞬间感觉蹬车无力，摇车无力，瞬间就没力气了，这种感觉真不好，又像是上周爬解字石的状态。公路大叔也跟不上了，眼看他慢慢飘走。骑了一会感觉体力又恢复了一些，可以保持住28+的速度，看大叔在前面的红绿灯那里减速等过路口（大叔一定是经常开车的，骑车跟开车一样稳当），慢慢加速追上，之后大叔在每个红绿灯都要减速等灯，真是好习惯，这样俺也能稳稳的跟住了，哈哈。转过奥体西路的路口，大叔开始加速摇车，结果刚蹬一下就出事情了，大叔的耳机线缠到了刹车和后轮上，后轮直接抱死，大叔没有及时解锁，0速摔车。青蛙赶快下车查看了一下，车没事情，但是大叔的左腿蹭破了，唉，上锁有危险哪。当然，最主要的原因还是骑车的时候不应该带耳机听歌，这个习惯非常不好，除了听不见车声，耳机线还容易夹到轮子里。。。&lt;/p&gt;
&lt;p&gt;大叔休息了一下，慢慢骑回A点，这时候已经聚集了几个单刷的同学，几个人天南海北的唠了几句，互相参观了一下车子，公路大叔起身告辞，剩下的3个出发刷圈。一个骑平把公路的哥们，一启动就迅速飞走了，青蛙只能自己慢慢刷，单发果然要费力的多，一路上只能保持在25左右的速度。这一圈刷完闹得汗流夹背，连鞋里都感觉湿漉漉的。回到A点问了下平把公路同学，成绩大概是11分左右！真是强悍，难怪追不上。&lt;/p&gt;
&lt;p&gt;又休息一会，平把公路同学起身告辞，过来两个770D同学（额，这怎么区分呢，A和B好啦）继续唠嗑，这时过来一对菜车夫妇，询问刷奥园的路线，看到青蛙的小折来了一句：“这车一定慢吧”，青蛙回答：”不比山地慢“（话真的不能乱说，青蛙马上就被山地车虐了）。然后青蛙和两位770D同学发车绕圈，青蛙跟在A同学身后刷到五环上桥，似乎A同学是想通过上坡甩开青蛙，但是没有成功，下坡之后青蛙继续尾随，依旧是过奥体东路的小缓坡之后青蛙就颓废了，有点跟不住A同学，但是似乎A同学体能也有下降（或者是没人追没压力了？哈哈），速度也降下来了。这时B同学追上，开始领骑，A同学尾随，青蛙最后。一直保持到科荟南路，这俩770D一路30+的速度飞奔，青蛙只感觉腿软脚软，慢慢被落下，考虑奥体西路那里还要有冲刺，也不敢提前发力开追，这种状态保持到奥体西路上，青蛙拼命加速追了一下，终于超过A同学并且在过A点路口之前追上了已经减速的B同学。唉，被山地齿胎拉成这样，真是丢人。&lt;/p&gt;
&lt;p&gt;这时A点又有一位迪卡侬平把公路同学和一位P8大叔在休息，大家接着继续神侃，试车。 B同学竟然拿出了带来的西瓜给大家分享，真是太感谢了！ 虽然不知道怎么联系怎么称呼，下次碰到了一定请他喝可乐。西瓜吃完，神侃完毕，P8大叔说要继续刷圈，于是大家纷纷发车，青蛙带头巾带头盔晚了一步，发车的时候只能远远的看着他们的尾灯，尝试追上未遂，只能慢慢的25的速度刷了。走到奥体东路路口的时候速度已经降到了20左右，果断左转过五环回家，一路上也只能保持20左右的速度。真是颓废的结尾。&lt;/p&gt;
&lt;p&gt;本日共刷圈3.5圈，大约22公里左右，连聊天共耗时1.5小时。 真是酱油党本色。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 31 Aug 2011 23:18:18 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-08-31:/2011/08/riding-olympic-park-20110831/</guid><category>riding</category><category>bicycle</category></item><item><title>折叠酱油党之奥园笔记20110829</title><link>https://www.gfrog.net/2011/08/riding-olympic-park-0829/</link><description>&lt;p&gt;自从上周六爬解字石彻底颓废之后，
俺就酝酿每周加大奥园刷圈的力度，争取迅速恢复体力。
正巧今天小猴子（id=vc12345679）同学在版上呼唤晚上奥园，于是俺果断报名。
虽然没带头盔和手套，但是俺今天还是要做酱油党。&lt;/p&gt;
&lt;p&gt;因为要7点到清华东门附近的路口集合，俺6点下班匆忙出去吃了口饭，
回来收拾了一下，18：42分出公司，18：50分骑车出发（折叠展开时间真慢啊！急的我手都抖了。。），
一路想着第一次参加活动就迟到，这太不好了，于是发力狂蹬。&lt;/p&gt;
&lt;p&gt;到了五道口路口以后彻底杯具，路上堵的水泻不通，果断下车推上人行道，推了几步以后就遇到公交车站，
又得跳下来继续堵着，蹭了一段又跳上人行道，如此反复，终于俺崩溃了，找了个机会，
不顾行人的鄙视，冲上了对面的自行车道逆行。
还别说，逆行的速度果然快多了。19：10分不到的时候跑到了双清路和荷清路路口
（天神哪，世界上竟然会有这么堵的路口！！），心里忐忑，俺连小猴的电话都没有，
这要是他们先走了我去哪找他们去啊。。。
不过谢天谢地，等了几分钟，看着一队亮着车灯的自行车队飞过来了，正是小猴他们。
俺心里这块石头可算落了地（石头落地，杯具发生）。&lt;/p&gt;
&lt;p&gt;由于俺在双清路的逆行方向，只有推过路口之后才能和他们会合，
结果在双清路和清华东路的路口上由于过度兴奋，跑错路了，
俺一边追一边纳闷，就过了一个红灯的时间，怎么会追不上呢。。。
于是拼命狂蹬，蹬到下一个红绿灯，终于发现是自己杯具的跑错路了。
只能绕回来找清华东路路口，路上逆行的时候还差点被一骑摩托车的大叔刮到
（又是逆行，俺要有驾照今天能扣满12分！！）&lt;/p&gt;
&lt;p&gt;从双清路跑回来之后悲催的发现自己过的那个三岔路口就是清华东路的路口，黑天果然俺就是路痴了。
拐上清华东路在机动车道上一阵猛骑，梦想着可以追上大部队）没头盔没手套，不按道行驶，再扣2分），
杯具的事情继续发生，有个神马深圳的猎头给俺打电话，擦，态度还挺强横，爷最不怕这样的猎头，
丫上门找我还这个狗屎态度，再说现在是俺下班时间，恕不接待，果断挂电话。
电话打完，追上大部队的可能性几乎为0了，但是俺还是继续在机动车到上晃荡（头顶上-2、-2不断飘过），
跟出租抢道，尾随公交车，抢公交车道。。。。
平时不敢干的事今天都干了，深度鄙视自己！
最终还是没有追上大部队，估计他们速度一定不慢。&lt;/p&gt;
&lt;p&gt;在奥体西路上遇到benying和kollee同学，打过招呼之后赶快到清华党那里报到，深刻检讨自己的路痴行为。
随后glideBy同学到达，竟然就是俺跟了一路试图尾随的黑衣男，
他路感比俺好多了，俺还在跟汽车较劲的时候他已经飘出去好远了。
然后发现begaleagle同学的码表竟然是歪的，太赞叹begaleagle同学了，这不得歪脖儿看啊。
摸摸下边的底座，有螺丝可以换方向，begaleagle记得把它转过来哦，XD&lt;/p&gt;
&lt;p&gt;休息、扯皮之后开始刷圈，因为俺木有带头盔，
所以决定20左右的速度慢慢蹭算了，
但是没跑多远就被benying带着kollee以25的速度超越，
俺也不能拖后腿是不，加速跟上，自己多小心一些吧。
俺一路酱油，蹭benying领骑，有人领骑就是好啊，
俺自己速度控制不住，前半段玩命骑，后半段就没体力了只能慢慢爬，
跟队伍骑可以控制着自己的速度，最后还有点体力冲刺。
到达终点的时候，MurMur同学已经到了，据说路上摔了一下，
把车把摔歪了，各位帅哥迅速拿出工具，搞定车把。（
后来据说把横摔歪了，所以咋调都歪。。。 想想美利达的把横不至于这么不给力吧。。。）&lt;/p&gt;
&lt;p&gt;随后的2圈是跟同样折叠的begaleagle同学刷，
仍然是他领骑，我跟随，
每次begaleagle同学在科荟南路拐弯到奥体西路之前冲刺我就崩溃了，
完全追不上，码表显示踩到34-35，依然眼看着begaleagle同学迅速飞走。。。
（而且本来打算酱油的，结果每次冲刺都能跑过30，俺自己定的规则可是不带头盔严禁过30的，今天破戒了无数次，罪过罪过！）&lt;/p&gt;
&lt;p&gt;3圈刷完，继续回来聊天扯淡，twingle又拿出几个风火轮赠送，
赞叹啊，是不是以后水木党会人手一对风火轮呢？ 
哈哈。大家互相换车试骑，最受瞩目的依然是benying同学的FCR，
据说很轻很好骑，深得大家喜爱，不知道有没有人回来会冲动入一个公路，lol&lt;/p&gt;
&lt;p&gt;21：40多的时候大家开始撤退，俺跟随清华党一路向西，
在G6辅路上拐向北，没走多远，twingle追上来，一问才知道他住回龙观，
正好顺路啊，于是俺又被领骑，一路很爽的飘回上地。
感谢twingle的手电，看来我也必须收手电了。&lt;/p&gt;
&lt;p&gt;另外，刷奥园和在公路上骑车一定要有头盔，
俺今天在科荟南路向北拐弯的时候差点侧滑摔倒，
虽然控制住了，但是还是很惊险，不带头盔就是玩命啊。&lt;/p&gt;
&lt;p&gt;另另外，俺发现俺跟骑不太老实，总爱往队伍外边骑，
跟前边的车并排，这个习惯也非常不好，容易出事，下次必须彻底改掉！&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 30 Aug 2011 00:55:39 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-08-30:/2011/08/riding-olympic-park-0829/</guid><category>riding</category><category>bicycle</category></item><item><title>折叠酱油党奥园笔记</title><link>https://www.gfrog.net/2011/08/riding-aoyuan-0823/</link><description>&lt;p&gt;从头开始说，今天俺去北航收脚踏，所以顺路奥园酱油了一次。
到达奥园时间是7点40分，看到大批大批的公路车已经开始集合了。
扫了一圈，木有发现疑似水木党的踪迹，所以自己先酱油一圈。&lt;/p&gt;
&lt;p&gt;7点40出发，跑到奥体东路上的时候感觉喉咙又开始疼了，
不敢大口喘气，不敢发力，彻底酱油，跑到科荟南路那里犹豫了下，
结果跑错了路口，又绕回来上科荟南路，最后一圈下来15分钟，压力山大。&lt;/p&gt;
&lt;p&gt;刚刷完一圈到达集合A点，回头看到一美女骑5.2，一帅哥骑牛角把公路车，
猜测是奥园党，果断上去打招呼（这次打招呼给我后面的杯具埋下了伏笔），
果然是美女栗子(id=kollee)携帅哥笨鹰（id=benying）和大猫（id=boycat）三位。&lt;/p&gt;
&lt;p&gt;找到组织的感觉真好！&lt;/p&gt;
&lt;p&gt;于是开始聊天扯皮拍照片，俺继续当酱油党，拍照时掩面而过，
蹲在地上仔细围观各路大神的自行车。
大猫同学十分好奇俺的小折叠，特别还是红色的折叠。
嘿嘿，俺是卖骚党嘛，lol。&lt;/p&gt;
&lt;p&gt;期间还有一位rr5.3的同学抵达（&lt;del&gt;原谅我木有记住你的id吧！&lt;/del&gt;id=twingle），
十分慷慨的分发风火轮，俺呢。。 继续蹲地上围观车子。。。&lt;/p&gt;
&lt;p&gt;然后的时间，俺四个聊天。。。扯皮。。。拍照片，直到7点半，
&lt;del&gt;那位rr5.3的同学&lt;/del&gt;twingle说看到默默同学在后边，一个人，
于是benying和栗子赶快过去寻找，这时不知谁又说了句care他们来了（好吧，我快杯具了），
于是我也向后面移动，看见benying和栗子围着一位美女（杯具开始），
然后我直接问：这是care同学？！说完俺就意识到俺问错了。
因为看到了车子，维多利亚啊，这分明是默默同学，接着俺就看到了众人鄙视的眼神。
羞愧，没脸摘面罩了！俺赶快转移话题，“默默同学不要刷圈嘛？”
然后迎来的继续是鄙视，原来默默同学已经自己刷了3圈了。我继续羞愧。。。&lt;/p&gt;
&lt;p&gt;这时候清华的大部队也到了，人好多，大家互问ID，
俺一眼就瞅见了小猴子(id=vc12345679)，看了他胳膊上的伤，确实摔的很严重啊，
一定注意休息啊，猴子同学。&lt;/p&gt;
&lt;p&gt;大家寒暄结束，开始刷圈，benying同学领骑，一骑绝尘，迅速消失在夜色中，
俺拼命跟着那位没有码表的童鞋（&lt;del&gt;原谅我又没记住ID&lt;/del&gt;id=begaleagle）。
爬上五环的坡之后就再也跟不住了，破折叠已经换到最小飞了，仍然追不上。
无奈放弃。
（不过，在坡顶俺看了下码表，&lt;del&gt;40+&lt;/del&gt;(这个速度非常不靠谱，码表调的不准，
大概需要-5的样子)，那位童鞋，你的速度比这还快）&lt;/p&gt;
&lt;p&gt;五环下坡之后俺就重回酱油本色，慢慢磨蹭，准备在奥体东路转弯回家，
快到转弯的时候，大猫同学追上来，热情的say goodbye，瞬间感到温暖。&lt;/p&gt;
&lt;p&gt;然后俺在奥体东路左转，过五环向西，一路爬回家。
路上发现变速线又松了，唉，饿得没力气了，也木有仔细调，拣不松的档踩回家。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 23 Aug 2011 22:30:44 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-08-23:/2011/08/riding-aoyuan-0823/</guid><category>riding</category><category>bicycle</category></item><item><title>今天石景山的腐败游</title><link>https://www.gfrog.net/2011/08/riding-shijingshan-0819/</link><description>&lt;p&gt;首先交数据：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Distance：56.9 &lt;br /&gt;
MAX：43.9 &lt;br /&gt;
AVG：21.9&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;话说俺昨天收了一部小折，HT060。
昨天晚上换上大车的副把和码表，今天就迫不及待 出去卖骚了（留大车在家哭吧，laf）。
刚好公司组织在石景山活动，俺一激动，干脆不跟公司的大巴去了，俺骑车过去。&lt;/p&gt;
&lt;p&gt;从上地出门，小折竟然轻松就飙上了25+，我一度认为我的表没调好，
后来跑到中关村四环桥上看了下表，距离倒是对的，于是惊讶于小折的速度，这也太好骑了。
在中关村四环桥上目击微型车祸一场。
一辆拉货的电动车撞到一辆闯红灯的自行车，
好在没人出事，在心里默骂闯红灯的100遍以后转向向西。&lt;/p&gt;
&lt;p&gt;过海淀桥、万泉河桥、六郎庄桥，
毫无意外的在火器营桥迷路，完全找不到转向蓝靛厂北路的地方，
在绕桥参观一圈之后 终于从迷宫中走出来。&lt;/p&gt;
&lt;p&gt;上蓝靛厂路一路向南，车少，几乎无灯，很适合骑车。
一路骑到复兴路右转，话说复兴路 其实满适合骑车，树荫很给力，
可惜骑车占用自行车道情况严重，早上在这还差点撞到逆行的行人，
走在自行车道上突然转向，这样的人实在伤不起啊。。。&lt;/p&gt;
&lt;p&gt;跑到公司活动的地点，擦，无聊透顶，竟然就是个澡堂子，
顿时失去兴趣，进去冲澡一圈， 使劲吃了一顿自助餐，然后偷偷开溜。&lt;/p&gt;
&lt;p&gt;出来之后杀奔鸟哥的车店，给俺可怜的大车再配一个副把和码表。&lt;/p&gt;
&lt;p&gt;在店里遇到车友一枚 明天出发去爬川藏线。
羡慕妒忌恨，为啥我就没有这么多假期！&lt;/p&gt;
&lt;p&gt;在店里聊天扯皮几小时，比 泡澡堂子有意思多了。&lt;/p&gt;
&lt;p&gt;晚上6点从车店出门，一问才知道，这个车友竟然是住六郎庄桥，
顺路，还是早上的路线，复兴路到万寿路左转进蓝靛厂南路，
有人一起骑车就是舒服，俩人唠着嗑，完全感觉不到累，
保持25-30的速度杀到六郎庄桥。&lt;/p&gt;
&lt;p&gt;剩下的路俺自己走，刚觉得无聊，突然从后边冲上来电动车大叔一枚，
俺发力，追之，哈哈 追上了总能挡点风吧，
于是四环辅路上出现了一个骑小折叠的傻子狂追一辆电动车的情景。
最高速度大概就是那时候跑出来的。&lt;/p&gt;
&lt;p&gt;一直追到中关村桥，大叔遇红灯减速，我在车流中穿出 向北杀奔上地。&lt;/p&gt;
&lt;p&gt;今天对小折的印象完全改观，好轻好快啊，偶喜欢！&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 19 Aug 2011 20:36:18 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-08-19:/2011/08/riding-shijingshan-0819/</guid><category>riding</category><category>bicycle</category></item><item><title>今年wed的徽章</title><link>https://www.gfrog.net/2011/06/wed-badge-of-2011/</link><description>&lt;p&gt;每年的6月5是世界环境日（world environment day）。
今年的主题是“森林：大自然为您效劳”。&lt;/p&gt;
&lt;p&gt;准备好为森林做点什么了嘛？&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://lh3.googleusercontent.com/1-BMFY-QZ2YyieB_q2flOmNG-9CbUsQ027Mad0K0G-p1ceGY5HfYJJxqv8ttNXRHjQCFzB25PYW2lsnCSeQ_WbgaazpvaYAw_0qyOI3NY16ehK3-dhIhoA6ea6ihtwZlZfZ4UgA4dM8=w800"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 02 Jun 2011 00:33:03 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-06-02:/2011/06/wed-badge-of-2011/</guid></item><item><title>盆栽草莓</title><link>https://www.gfrog.net/2011/03/potted-strawberry/</link><description>&lt;p&gt;很久很久没有见过活草莓啦，今天在超市发见到这个真的让我眼前一亮。&lt;/p&gt;
&lt;p&gt;不禁想起小时候在自家后院摘草莓的日子。
似乎当年的那片草莓早就不见了，只剩怀念。&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="https://lh3.googleusercontent.com/h69-HEmAtK0tfh70n37u297Rux_nm35ym5cb4YdMELvtsxyzRmXpJdEV_-LbDRLac3Pbo8Cf6zu7yzx_Rmm-ObXxolvHlnUIGArVt88mPNvfzmUPvM2DSfzO_KL2wVXfAOUdr9fi7rk=w800"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 05 Mar 2011 22:42:01 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-03-05:/2011/03/potted-strawberry/</guid><category>pictures</category><category>strawberry</category></item><item><title>雷人的座位号</title><link>https://www.gfrog.net/2011/01/shocked-seat-number/</link><description>&lt;p&gt;我已经吐槽无力了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/TM8A-fpr9jRl2zf4_TImd3d5PxDiKXcbnYZPIksCMLraZQeU1NWxA0wsoXAO7aDh4rD5RcYqBmWt-PNb1JW0RPFc9uOv5ISCC5k8u9KF64dCc9DC7_D4UtOw3agquYgz2WH4UGwphXQ=w800"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 29 Jan 2011 20:44:53 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-01-29:/2011/01/shocked-seat-number/</guid><category>pictures</category><category>train</category></item><item><title>傲娇的ATM</title><link>https://www.gfrog.net/2011/01/buggy-atm-machine/</link><description>&lt;p&gt;ATM你肿么了。。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/xsMdn023hMyBy9qVIo2QwBd2mCQ-zxm9tFp2f1wuXn3IeXIt77wuffrFEBFMgZLMEiRpY1EL--Cur-09ItMcNrIn8K4ane2vIdxgtZC1_6YhyBgCY9ji8oN1_2az8Hv3-8PE1ee_dbs=w800"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/WIueXZ9kcqFDzKJif2yrqu9rN6X9X7gtWVFVbeaZrKoLONJkyiSe1ekYTQemiI1sokuFf73mR4OVl8Omr4P1v8OdmiIyOh5wMJnAaipXuRXg0dVt0Qp2bK6Qlo_64RDPszeTglbdno0=w800"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 14 Jan 2011 20:41:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-01-14:/2011/01/buggy-atm-machine/</guid><category>pictures</category><category>system</category><category>crash</category></item><item><title>修复twitter digest插件的无法正确显示in-reply-to-id的bug</title><link>https://www.gfrog.net/2011/01/in-reply-to-id-bug-of-twitter-digest-plugin/</link><description>&lt;p&gt;青蛙一直在用twitter digest插件来把tweets同步到wordpress上。
今天检查同步过来的tweets的时候，青蛙发现所有回复其他人的推中，
in reply to的链接都失效了，tweet id变成了科学计数法的形式。&lt;/p&gt;
&lt;p&gt;这个问题是由于twitter digest没有正确处理这么大的tweet id造成的，
青蛙在网上搜了一下处理php大整数的方法[1]，发现只需要把这个整数sprintf成一个string就好了。
具体的修改方法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="x"&gt;    --- twitter-digest-old.php  2011-01-07 17:35:01.000000000 +0000&lt;/span&gt;
&lt;span class="x"&gt;    +++ twitter-digest.php     2011-01-07 17:16:34.000000000 +0000&lt;/span&gt;
&lt;span class="x"&gt;    @@ -281,7 +281,7 @@&lt;/span&gt;
&lt;span class="x"&gt;        $output .= ws_make_clickable(wp_specialchars($tweet-&amp;gt;text));&lt;/span&gt;
&lt;span class="x"&gt;        if (!empty($tweet-&amp;gt;in_reply_to_screen_name)&lt;/span&gt;
&lt;span class="x"&gt;            &amp;amp;&amp;amp; (!empty($tweet-&amp;gt;in_reply_to_status_id))) {&lt;/span&gt;
&lt;span class="x"&gt;    -    $output .=         &amp;#39; &amp;lt;a href=&amp;quot;&amp;#39;.ws_status_url($tweet-&amp;gt;in_reply_to_screen_name, $tweet-&amp;gt;in_reply_to_status_id).&amp;#39;&amp;quot;&amp;gt;&amp;#39;.sprintf(__(&amp;#39;in reply to %s&amp;#39;, &amp;#39;twitter-digest&amp;#39;), $tweet-&amp;gt;in_reply_to_screen_name).&amp;#39;&amp;lt;/a&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;span class="x"&gt;    +    $output .=         &amp;#39; &amp;lt;a href=&amp;quot;&amp;#39;.ws_status_url($tweet-&amp;gt;in_reply_to_screen_name, sprintf(&amp;#39;%1.0f&amp;#39;, $tweet-&amp;gt;in_reply_to_status_id)).&amp;#39;&amp;quot;&amp;gt;&amp;#39;.sprintf(__(&amp;#39;in reply to %s&amp;#39;, &amp;#39;twitter-digest&amp;#39;), $tweet-&amp;gt;in_reply_to_screen_name).&amp;#39;&amp;lt;/a&amp;gt;&amp;#39;;&lt;/span&gt;
&lt;span class="x"&gt;        }&lt;/span&gt;
&lt;span class="x"&gt;        // Show the date/time if the options are selected&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;参考资料：&lt;/p&gt;
&lt;p&gt;[1] PHP 大数自动转换为科学计数法的无耻问题 &lt;a href="http://mifunny.info/big-number-convert-to-scientific-notation-of-php-341.html"&gt;http://mifunny.info/big-number-convert-to-scientific-notation-of-php-341.html&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 08 Jan 2011 01:41:07 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2011-01-08:/2011/01/in-reply-to-id-bug-of-twitter-digest-plugin/</guid><category>php</category><category>twitter</category><category>wordpress</category><category>plugin</category><category>patch</category></item><item><title>青蛙的Dreamhost账户正式关闭</title><link>https://www.gfrog.net/2010/12/shutdown-account-on-dreamhost/</link><description>&lt;p&gt;青蛙本来想让DH欠费自动停止服务的，
但是想了一下，还是自己清理一下痕迹然后手动关闭比较好。&lt;/p&gt;
&lt;p&gt;手工删掉了所有的域名和数据库
（这步操作十分蛋疼，后来发现关闭账户的时候会自动删除），然后取消账户。&lt;/p&gt;
&lt;p&gt;转眼之间，青蛙的网站在DH上也开了3年了，但是仍旧是没人看的状态，
不过也无所谓，其实就是想有一块可以自由支配的地方。&lt;/p&gt;
&lt;p&gt;3年中给很多朋友们提供了免费的空间服务，青蛙觉得很开心，
流量闲着也是闲着，拿来给朋友们练手也是很好的。&lt;/p&gt;
&lt;p&gt;在此感谢朋友们对青蛙的支持，谢谢大家。&lt;/p&gt;
&lt;p&gt;今年年中青蛙的DH帐号终于切换成无限流量和空间的了，
于是青蛙启动了一个免费空间共享计划，但是申请者寥寥，难道是青蛙的要求太严格？&lt;/p&gt;
&lt;p&gt;青蛙在linode上的新服务器已经基本稳定了，虽然还有些细小的问题。&lt;/p&gt;
&lt;p&gt;先使用一个月看一下资源的耗费情况，如果有可能，青蛙还是想尽量给大家多提供一些免费资源来用。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 29 Dec 2010 23:10:20 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-29:/2010/12/shutdown-account-on-dreamhost/</guid><category>Dreamhost</category><category>site</category><category>sharing</category></item><item><title>竹子</title><link>https://www.gfrog.net/2010/12/bamboo-in-office-building/</link><description>&lt;p&gt;写字楼里的竹子，这是青蛙第一次见到的活竹子，真高大。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh6.googleusercontent.com/-Gr4ixQoPO0U/Tg6S0HXrDSI/AAAAAAAAGjo/uz-qb8ngW_w/w800/IMG_20101229_103029.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 29 Dec 2010 20:34:36 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-29:/2010/12/bamboo-in-office-building/</guid><category>pictures</category></item><item><title>圣诞快乐</title><link>https://www.gfrog.net/2010/12/merry-christmas/</link><description>&lt;p&gt;as $subject. XD&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://gfrog.net/wp-content/uploads/2010/12/merry_christmas.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 25 Dec 2010 22:33:35 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-25:/2010/12/merry-christmas/</guid><category>merry christmas</category></item><item><title>推荐插件： wp-super-cache</title><link>https://www.gfrog.net/2010/12/recommend-plugin-wp-super-cache/</link><description>&lt;p&gt;在wowubuntu！[1]上看到的wp-super-cache这个插件，青蛙立即拿来试验了一下，功效很显著。&lt;/p&gt;
&lt;p&gt;没有优化前，青蛙用pingdom[2]测试主页面载入速度，需要将近4秒的时间。&lt;/p&gt;
&lt;p&gt;优化过后是这样：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/wp-content/uploads/2010/12/pingdom.jpeg"&gt;&lt;img alt="1" src="http://gfrog.net/wp-content/uploads/2010/12/pingdom.jpeg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接下来需要考虑的就是怎样减小那几个js文件的载入时间了，还没找到头绪，希望能得到大牛的指点 ：）&lt;/p&gt;
&lt;p&gt;另外需要注意一下的是，如果是nginx环境安装wp-super-cache插件，
需要的rewrite规则在[1]中有提供，但是那个版本是有问题的，这里[3]的版本才是正确的。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;p&gt;[1] 小内存 VPS 优化建议 (LNMP+WordPress 环境) &lt;a href="http://wowubuntu.com/vps-optimize.html"&gt;http://wowubuntu.com/vps-optimize.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] Pingdom tools &lt;a href="http://tools.pingdom.com"&gt;http://tools.pingdom.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3] Code Exchange: nginx rewrite rules for Wordpress + WP Super Cache &lt;a href="http://forum.slicehost.com/comments.php?DiscussionID=2087"&gt;http://forum.slicehost.com/comments.php?DiscussionID=2087&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 25 Dec 2010 00:22:10 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-25:/2010/12/recommend-plugin-wp-super-cache/</guid><category>wordpress</category><category>site</category><category>vps</category><category>performance</category><category>cache</category><category>plugin</category></item><item><title>花瓶里的小花</title><link>https://www.gfrog.net/2010/12/flowers-in-vas/</link><description>&lt;p&gt;不知道叫什么花，很喜欢这种花瓣，让青蛙想起了小时候在野地里摘野花的情景，lol&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/-cQGi6iZIfGs/Tg6TQpI6DNI/AAAAAAAAGjo/3vqIBhc-K7g/s800/IMG_20101223_142347.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/-jbk2SLUasW8/Tg6Tcux2gXI/AAAAAAAAGjo/bXmX2hJgx0A/s800/IMG_20101223_142337.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 23 Dec 2010 20:28:06 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-23:/2010/12/flowers-in-vas/</guid><category>picture</category></item><item><title>配置wordpress的邮件发送功能</title><link>https://www.gfrog.net/2010/12/enable-smtp-send-mail-in-wordpress/</link><description>&lt;p&gt;青蛙继续倒腾vps，今天的主题是调教wordpress发送邮件。&lt;/p&gt;
&lt;p&gt;之前在Dreamhost上面，邮件系统已经配置好了，wordpress不需要任何设置就可以直接发送邮件。
到了vps上之后，青蛙为了节省资源，没有安装邮件服务器，所以想要发送邮件，还需要自己折腾。&lt;/p&gt;
&lt;p&gt;青蛙首先是想到了配置一个轻量级的MTA，例如msmtp之类的，
然后修改php.ini的sendmail_path参数，使它指向msmtp。
这样php程序就具有邮件发送能力了，但是这样产生的问题就是邮件的发送服务器是固定的，
而且需要配置一个帐号来做登录服务器，如果某个用户希望使用自己的服务器发送某些邮件，
这样配置就无法实现了。&lt;/p&gt;
&lt;p&gt;为了实现完美的解决方案，青蛙又搜了一圈，发现了wordpress已经集成了一个PHPMailer[1]类，
并且提供了一个wp_mail函数[2]来发送邮件，
有很多设置SMTP的插件[3]方便我们配置SMTP服务器和外发邮件帐号信息。&lt;/p&gt;
&lt;p&gt;青蛙选择了WP Mail SMTP插件，非常简单，把所有参数填好，wordpress就可以发送邮件了。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;p&gt;[1] PHPMailer &lt;a href="http://phpmailer.worxware.com/"&gt;http://phpmailer.worxware.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] Function Reference/wp_mail &lt;a href="http://codex.wordpress.org/Function_Reference/wp_mail"&gt;http://codex.wordpress.org/Function_Reference/wp_mail&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3] 让 WordPress 通过 SMTP 发送邮件 &lt;a href="http://goto8848.net/2008/04/wordpress-mail-via-smtp/"&gt;http://goto8848.net/2008/04/wordpress-mail-via-smtp/&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 22 Dec 2010 23:53:26 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-22:/2010/12/enable-smtp-send-mail-in-wordpress/</guid><category>mail</category><category>plugin</category><category>smtp</category><category>wordpress</category><category>setup</category><category>server</category></item><item><title>Install Xmind in Fedora with deb package</title><link>https://www.gfrog.net/2010/12/install-xmind-in-fedora-with-deb-package/</link><description>&lt;p&gt;&lt;img alt="Install-Xmind-in-Fedora-with-deb-package" src="http://gfrog.net/wp-content/uploads/2010/12/Install-Xmind-in-Fedora-with-deb-package.jpg"&gt;&lt;/p&gt;
&lt;p&gt;原始文件地址：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.xmind.net/share/gfrog1/install-xmind-in-fedora-with-deb-package/"&gt;http://www.xmind.net/share/gfrog1/install-xmind-in-fedora-with-deb-package/&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 21 Dec 2010 23:07:05 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-21:/2010/12/install-xmind-in-fedora-with-deb-package/</guid><category>Fedora</category><category>Linux</category><category>xmind</category><category>desktop</category><category>setup</category><category>client</category></item><item><title>为https服务申请SSL证书</title><link>https://www.gfrog.net/2010/12/setup-ssl-certificate-for-https/</link><description>&lt;p&gt;书接上文，上回书说到青蛙成功给nginx配置上了https服务，
但是当时青蛙使用的是自签名证书，没有验证网站身份的功能；
而且有些工具会对证书的有效性进行校验，对于这种工具，自签名证书就毫无用处了。&lt;/p&gt;
&lt;p&gt;这个时候，就需要申请一个经过CA认证的有效证书。&lt;/p&gt;
&lt;p&gt;据青蛙所知，目前提供免费SSL证书的只有StartSSL[1]一家，
青蛙按照这两个网站的介绍[2][3]，成功申请了SSL证书。&lt;/p&gt;
&lt;p&gt;依照青蛙的经验，要成功申请证书，最好是有一个以要申请域名结尾的邮箱，
这样可以很容易的确认域名所有权。至于邮箱服务，可以申请google app，方便，免费。&lt;/p&gt;
&lt;p&gt;有了邮箱系统之后，可以设置一个webmaster或者hostmaster账户，以便注册过程中验证域名地址。&lt;/p&gt;
&lt;p&gt;在StartSSL申请证书的时候有几点需要注意：&lt;/p&gt;
&lt;p&gt;首先，建议使用firefox申请证书，青蛙用Chromium试了一下，
点击进入Sign-up界面的时候会出现一个错误提示，明确说明Chrome类浏览器无法申请。
有网友说IE也没法成功申请[1]。&lt;/p&gt;
&lt;p&gt;其次，申请的时候尽量填写靠谱的个人信息，
如果信息看起来不靠谱，很容易被拒掉。
个人信息填写完之后会向你填写的邮箱里发送一封认证邮件，邮件中包含继续注册所需的验证码。
输入验证码之后提示等待人工审核，青蛙遇到的审核过程很快，大概几分钟就有结果了。&lt;/p&gt;
&lt;p&gt;接下来还有一封邮件，里面有一个链接和一个认证码，访问那个连接，填上认证码，
如果一切正确StartSSL会自动在Firefox里面添加一个个人证书，这个证书就是用来登录StartSSL的控制台的。
青蛙建议最好把它导出，找个安全的地方保存
（毕竟StartSSL的免费证书1年就过期了，明年还得做一遍同样的流程再申请）。&lt;/p&gt;
&lt;p&gt;以上是StartSSL的注册过程，下面是验证域名的过程。&lt;/p&gt;
&lt;p&gt;进入StartSSL的控制台之后点击Validations Wizard，选择Domain Name Validation，
然后填入要验证的域名，接下来需要选择一个邮箱，
可以是postmaster/hostmaster/webmaster三个中的一个，或者是域名whois信息中的邮箱。
选择一个，StartSSL会向这个邮箱发送一封确认邮件，填上邮件里的验证码，验证完成。
注意这个验证有30天有效期，超过期限就需要重新认证域名。&lt;/p&gt;
&lt;p&gt;接下来才是最重要的部分，点击Certificates Wizard开始申请证书。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这里有几钟证书可以选择：S/MIME、Web Server SSL/TLS、XMPP（jabber） SSL/TLS等，对于网站就是Web Server SSL/TLS证书了。&lt;/li&gt;
&lt;li&gt;下一步是生成私钥的过程，青蛙没有网站提供的功能，而是选择了在本地生成私钥和证书请求文件csr的方式，所以这步选择跳过，然后在本地执行：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;    &lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="err"&gt;生成私钥：&lt;/span&gt;
    &lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;genrsa&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;aes256&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="n"&gt;private&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;key&lt;/span&gt; &lt;span class="mi"&gt;2048&lt;/span&gt;
    &lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="err"&gt;这里需要输入一个密码，制作&lt;/span&gt;&lt;span class="n"&gt;SSL证书密钥的时候会用到&lt;/span&gt;&lt;span class="err"&gt;。&lt;/span&gt;
    &lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="err"&gt;生成证书请求文件：&lt;/span&gt;
    &lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;openssl&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;key&lt;/span&gt; &lt;span class="n"&gt;private&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;key&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="n"&gt;cert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;csr&lt;/span&gt;
    &lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="err"&gt;这里会询问一大堆信息，基本是证书的基本信息，例如域名、网站名称、所有者、地址等等。&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;然后打开cert.csr文件，复制所有内容贴到文本框中；&lt;/li&gt;
&lt;li&gt;点击下一步继续，如果一切正常会提示证书请求已经正确提交了；&lt;/li&gt;
&lt;li&gt;继续点击下一步，选择要为哪个域名申请证书；&lt;/li&gt;
&lt;li&gt;再下一步，需要给这个证书添加一个子域名，青蛙选择了www，因为还要在www上提供https服务；&lt;/li&gt;
&lt;li&gt;再继续，会有一个汇总，报告下要为哪些域名制作证书；&lt;/li&gt;
&lt;li&gt;再点击继续开始正式制作证书。&lt;/li&gt;
&lt;li&gt;等待证书制作完成，点击Tool Box，选择Retrieve Certficate，这里就是我们想要的网站证书啦；&lt;/li&gt;
&lt;li&gt;把它复制到一个文件里，放在服务器上就可以用了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;然后是密钥，选择Decrypt Private Key，把之前生成的private.key文件打开，复制所有内容到文本框里，
填入密码，点击Decrypt，接下来显示的文本框的内容就是网站证书的key啦，也复制出来保存到一个文件里，传到服务器上。&lt;/p&gt;
&lt;p&gt;证书申请大功告成，接下来改一下nginx的配置。
加入新申请的证书路径，用浏览器访问https站点试试，正确的话应该没有那个讨厌的https证书无效提示了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: 2012-01-12:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;StartSSL的登录证书的有效期竟然也是1年，所以如果需要更新SSL证书，还要重新Sign-up一次。&lt;/p&gt;
&lt;p&gt;参考文档：&lt;/p&gt;
&lt;p&gt;[1] www.startssl.com &lt;a href="http://www.startssl.com/"&gt;http://www.startssl.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] Nginx + https + 免费SSL证书配置指南 &lt;a href="http://www.21andy.com/blog/20100224/1714.html"&gt;http://www.21andy.com/blog/20100224/1714.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3] 免费SSL证书 STARTSSL 介绍与申请攻略 &lt;a href="http://dev.meettea.com/show-52-1.html"&gt;http://dev.meettea.com/show-52-1.html&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 21 Dec 2010 02:23:08 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-21:/2010/12/setup-ssl-certificate-for-https/</guid><category>https</category><category>ssl</category><category>startssl</category><category>server</category><category>setup</category><category>certificate</category><category>openssl</category></item><item><title>在NGINX上开启https</title><link>https://www.gfrog.net/2010/12/setup-https-in-nginx/</link><description>&lt;p&gt;青蛙的新VPS是基于nginx的，仅仅是因为传言nginx在小内存，大压力的时候表现好一些。&lt;/p&gt;
&lt;p&gt;当然，为了获得这点好处，还是要付出一些代价的。
例如nginx没有apache的htaccess，对每个目录的控制都需要写到nginx的配置文件中，
这样对普通用户来说十分的不方便。&lt;/p&gt;
&lt;p&gt;哦，有点跑题，继续说https的问题，其实给nginx配置https也不复杂，
按照网上现成的模板，改一下自己的域名和目录位置就好了。&lt;/p&gt;
&lt;p&gt;下面是一个完整的示例[1][2]：（来自&lt;a href="http://sudone.com/nginx/nginx_ssl.html"&gt;这里&lt;/a&gt;）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;upstream&lt;/span&gt; &lt;span class="nv"&gt;test&lt;/span&gt;.&lt;span class="nv"&gt;com&lt;/span&gt; {
    &lt;span class="nv"&gt;server&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;.&lt;span class="mi"&gt;168&lt;/span&gt;.&lt;span class="mi"&gt;1&lt;/span&gt;.&lt;span class="mi"&gt;2&lt;/span&gt;:&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
}

&lt;span class="nv"&gt;server&lt;/span&gt; {
    &lt;span class="nv"&gt;server_name&lt;/span&gt; &lt;span class="nv"&gt;test&lt;/span&gt;.&lt;span class="nv"&gt;com&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;include&lt;/span&gt; &lt;span class="nv"&gt;port&lt;/span&gt;.&lt;span class="nv"&gt;conf&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;ssl&lt;/span&gt; &lt;span class="nv"&gt;on&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;ssl_certificate&lt;/span&gt; &lt;span class="nv"&gt;server&lt;/span&gt;.&lt;span class="nv"&gt;crt&lt;/span&gt;&lt;span class="c1"&gt;; # ${nginx_install_dir}/conf/server.crt&lt;/span&gt;
    &lt;span class="nv"&gt;ssl_certificate_key&lt;/span&gt; &lt;span class="nv"&gt;server&lt;/span&gt;.&lt;span class="nv"&gt;key&lt;/span&gt;&lt;span class="c1"&gt;; # ${nginx_install_dir}/conf/server.key&lt;/span&gt;
    &lt;span class="nv"&gt;error_page&lt;/span&gt; &lt;span class="mi"&gt;497&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="s"&gt;https://$host$uri?$args&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

    &lt;span class="nv"&gt;location&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; {
        &lt;span class="nv"&gt;proxy_pass&lt;/span&gt; &lt;span class="nv"&gt;http&lt;/span&gt;:&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;test&lt;/span&gt;.&lt;span class="nv"&gt;com&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;include&lt;/span&gt; &lt;span class="nv"&gt;proxy&lt;/span&gt;.&lt;span class="nv"&gt;conf&lt;/span&gt;&lt;span class="c1"&gt;;#&lt;/span&gt;
        &lt;span class="nv"&gt;auth_basic&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
        &lt;span class="nv"&gt;auth_basic_user_file&lt;/span&gt; &lt;span class="nv"&gt;trac&lt;/span&gt;.&lt;span class="nv"&gt;passwd&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
    }
}
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;.
按照
&lt;a href="https://blog.delphij.net/2010/07/nginxtlsssl.html"&gt;delphij大神的说法&lt;/a&gt;
[3]，nginx可以在一个IP上对使用不同证书的站点提供https支持。
ubuntu上的nginx正好打开了这个支持。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS2&lt;/strong&gt;.
有了https支持，青蛙就可以使用https方式打开wordpress后台了，
也很简单，在wp-config.php里面加一句[4]：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;define('FORCE_SSL_ADMIN', true);&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;p&gt;[1] &lt;a href="http://sudone.com/nginx/nginx_ssl.html"&gt;nginx ssl加密代理配置指南&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2] &lt;a href="http://zou.lu/nginx-https-ssl-module/"&gt;Nginx 配置 SSL 证书 + HTTPS 站点小记&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3] &lt;a href="https://blog.delphij.net/2010/07/nginxtlsssl.html"&gt;nginx中的TLS/SSL配置&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[4] &lt;a href="http://www.wprecipes.com/how-to-force-using-ssl-on-wp-admin-directory"&gt;How to: Force using SSL on wp-admin directory&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 18 Dec 2010 15:45:25 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-18:/2010/12/setup-https-in-nginx/</guid><category>linux</category><category>server</category><category>nginx</category><category>setup</category><category>vps</category><category>site</category></item><item><title>摄影三俗</title><link>https://www.gfrog.net/2010/12/photography-sansu-in-china/</link><description>&lt;p&gt;自己拍照的时候，一定要记得避开这些俗物，XD。&lt;/p&gt;
&lt;p&gt;本来青蛙计划去扫一下后海和老北京的胡同的，看来要pass掉重新选题了。&lt;/p&gt;
&lt;p&gt;帝都冬天还有什么值得拍的呢？哪里有庙会？哈&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;中国摄影有三俗 &lt;br /&gt;
人像三俗：芦苇，后海，798 &lt;br /&gt;
夜景三俗：浦东，建外，太平山 &lt;br /&gt;
建筑三俗：鸟巢，巨蛋，明珠塔 &lt;br /&gt;
纪实三俗：老太，胡同，石库门 &lt;br /&gt;
旅行三俗：马代，瑞士，梅里山 &lt;br /&gt;
静物三俗：酒杯，水果，紫砂壶 &lt;br /&gt;
小品三俗：荷花，水珠，自行车 &lt;br /&gt;
自然风光三俗：坝上，亚丁，喀纳斯 &lt;br /&gt;
人文风光三俗：丽江，水乡，和土楼 &lt;br /&gt;
名胜古迹三俗：长城，外滩，嘉峪关 &lt;br /&gt;
民俗风情三俗：苗疆，西藏，泸沽湖 &lt;br /&gt;
摄影三俗：德味！大湿！毒毒毒！&lt;/p&gt;
&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 16 Dec 2010 21:20:01 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-16:/2010/12/photography-sansu-in-china/</guid><category>picture</category></item><item><title>无处安放的图片</title><link>https://www.gfrog.net/2010/12/nowhere-to-place-the-pictures/</link><description>&lt;p&gt;青蛙的blog经过无数次迁移，图片已经挂的挂，丢的丢，能保存到今天的所剩无几。
为blog选择图床是一个让人头大的问题。&lt;/p&gt;
&lt;p&gt;现在有几个选择，青蛙还没有最终确定，如果您有什么好的方法，记得告诉青蛙。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;跟blog放在一起。这个方法最简单，折腾最少，wordpress完全不用修改，可以用内置的上传方法。
     但是这样会增大备份网站的负担，如果有盗链，主机的流量恐怕顶不住。&lt;/li&gt;
&lt;li&gt;flickr、picasa。几乎完美的解法，用几乎就是因为有大墙的存在。&lt;/li&gt;
&lt;li&gt;国内图床。这种方法也不错，青蛙曾经在yupoo上放过一阵图片，现在仍然可用。
     但是，国内的图床免费流量很少，限制超多，而且还有被删图的危险。&lt;/li&gt;
&lt;li&gt;GAE。青蛙不知道现在是否有可用的相册程序，大概需要大量折腾。
     而且也有大墙的存在，比较危险。&lt;/li&gt;
&lt;li&gt;Amazon S3/EC2。这是一个很好的解决方法，而且Amazon的服务不像GAE那么吸引大墙的注意力，
     可以保证稳定。不过流量仍然是一个让人担心的问题。&lt;/li&gt;
&lt;li&gt;Dropbox、SugarSync。Dropbox被墙的很彻底，SugarSync有没有外链的能力还有待考察，
     如果可以外链，这应该是最靠谱的一个方案，除了空间比较小，但是可以通过注册多个帐号解决。&lt;/li&gt;
&lt;/ol&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 16 Dec 2010 00:16:35 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-16:/2010/12/nowhere-to-place-the-pictures/</guid><category>site</category><category>setup</category><category>picture</category><category>wordpress</category></item><item><title>注册Amazon EC2账户一枚</title><link>https://www.gfrog.net/2010/12/setup-an-amazon-ec2-account/</link><description>&lt;p&gt;青蛙今天在水木社区LinuxApp版看到有人推荐Amazon EC2，没有忍住诱惑，去注册了一个帐号。&lt;/p&gt;
&lt;p&gt;每个EC2帐号可以免费使用1年，试用的配置(每月)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;750 hours of EC2 running Linux/Unix Micro instance usage &lt;br /&gt;
750 hours of Elastic Load Balancing plus 15GB data processing &lt;br /&gt;
10GB EBS存储空间、100万次IO操作 &lt;br /&gt;
1GB 快照存储、10,000 snapshot Get Requests and 1,000 snapshot Put Requests &lt;br /&gt;
全部服务合计15GB流入和15GB流出带宽.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天晚上帐号Active了，上去看了一下，实际上EC2就是一个特别一点的VPS。
再加上Amazon的工具套件，可以很方便的启动/关闭虚拟机实例，
这样网站就完全不用考虑硬件的问题，负载不够马上再开一个实例就是了。&lt;/p&gt;
&lt;p&gt;另外，AWS上提供的虚拟化方案是基于XEN的，传言EC2的IO性能不够好，这可能跟XEN的实现也有关。&lt;/p&gt;
&lt;p&gt;青蛙还发现AWS界面上的大堆bug，虚拟机启动信息里的大堆oops信息，
看来领先的虚拟化提供商提供的服务也不是完美的，虚拟化的发展之路还很漫长。&lt;/p&gt;
&lt;p&gt;附记，申请EC2的攻略（似乎图片不太稳定，大家凑合看吧 ：P）：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.imtnt.net/amazon-ec2-micro-instance-and-tunnel-guide/"&gt;http://www.imtnt.net/amazon-ec2-micro-instance-and-tunnel-guide/&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 16 Dec 2010 00:02:38 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-16:/2010/12/setup-an-amazon-ec2-account/</guid><category>amazon</category><category>aws</category><category>ec2</category><category>setup</category><category>account</category></item><item><title>通告：目前本博客正在进行调整</title><link>https://www.gfrog.net/2010/12/notice-site-is-unstable/</link><description>&lt;p&gt;青蛙纠结了很久，终于决定把dreamhost换成vps。
但是麻烦就随之而来，dremahost上自己什么都不需要管，
wordpress传上去，简单配置一下就可以用。
vps上就需要自己搞定web服务器，数据库，等等一大堆。&lt;/p&gt;
&lt;p&gt;希望dreamhost到期之前青蛙可以搞定vps的问题。&lt;/p&gt;
&lt;p&gt;Posted from WordPress for Android&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2010-12-14 from web&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;青蛙已经基本上恢复了wordpress，中间遇到很多小问题，都是迁移之前没有想到的。
青蛙会专门写一篇日志记录这次迁移经验。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 12 Dec 2010 08:25:06 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-12-12:/2010/12/notice-site-is-unstable/</guid><category>site</category><category>wordpress</category><category>dreamhost</category><category>vps</category><category>setup</category></item><item><title>树影2</title><link>https://www.gfrog.net/2010/11/shadow-of-trees-2/</link><description>&lt;p&gt;秋天的树是怎么看都看不厌的呀。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/5aXq8inU8UxuCfnyNMx91KS_wIwYvHBxk9GkEek1pvYP4td8HYteklk7JlU_GxksbDxTeKQ-zQzP-4mWlpllfvtWK_HAXEW29nG5NBbGGHlyy-ZtyB8oC61bK1LsyMOJrzvMp4JfPbA=w1422-h1896-no"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 09 Nov 2010 20:21:56 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-11-09:/2010/11/shadow-of-trees-2/</guid><category>picture</category></item><item><title>年度环保车型</title><link>https://www.gfrog.net/2010/11/environmental-type-of-year/</link><description>&lt;p&gt;0油耗，0排放，全景天窗。&lt;/p&gt;
&lt;p&gt;绿色出行，我选单车。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh3.googleusercontent.com/-WP-zLUwjhts/Tg6Z0tEqpGI/AAAAAAAAGjo/rWdH7xgP2O4/s800/IMG_20101106_171444.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 06 Nov 2010 20:17:03 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-11-06:/2010/11/environmental-type-of-year/</guid><category>picture</category></item><item><title>树影</title><link>https://www.gfrog.net/2010/11/shadow-of-trees/</link><description>&lt;p&gt;中午的阳光照在草坪上，是无论用神马相机都没法表现的动人色彩。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="https://lh6.googleusercontent.com/-1njCF7smCtE/Tg6jYdeqp5I/AAAAAAAAGjo/E08iiEQWkYs/s800/IMG_20101102_092700.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 02 Nov 2010 20:10:59 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-11-02:/2010/11/shadow-of-trees/</guid><category>picture</category></item><item><title>在Milestone上安装openvpn</title><link>https://www.gfrog.net/2010/08/install-openvpn-on-moto-milestone/</link><description>&lt;p&gt;&lt;em&gt;青蛙注：恨死ScribeFire，青蛙这篇日志写了一上午，
结果马上要写完了，浏览器崩溃。杯具就是这么产生的。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;重写的话，就不啰嗦了，直接写主要的。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;青蛙目前使用的是机锋
&lt;a href="http://bbs.gfan.com/space-uid-41092.html"&gt;fancies&lt;/a&gt;
大大制作的PLUS9 FINAL系统，可能其他的系统会有所区别，安装的时候需要注意。
假设milestone已经获得了root，已经安装好了busybox，并且系统里已经带有tun.ko。&lt;/p&gt;
&lt;p&gt;首先，要
&lt;a href="http://github.com/downloads/fries/android-external-openvpn/openvpn-static-2.1.1.bz2"&gt;下载一个openvpn&lt;/a&gt;
，解压并上传到手机上，
青蛙偏好使用adb push，这样不需要来回切换存储卡，插上usb就可以用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo adb push openvpn-static-2.1.1 /sdcard/openvpn&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;sudo adb shell&lt;/code&gt;命令连到手机的shell，注意以下命令都需要root权限。&lt;/p&gt;
&lt;p&gt;因为/system 是只读的，需要先挂载成可写的模式：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# mount -o remount,rw -t yaffs2 /dev/block/mtdblock6 /system&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;把openvpn复制到/system/bin里面：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# cp -f /sdcard/openvpn /system/bin&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;然后把/system重新挂载为只读模式：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;# mount -o remount,ro -t yaffs2 /dev/block/mtdblock6 /system&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;打开Market，搜索openvpn，安装openvpn settings，
然后打开openvpn settings，按菜单键选择Advanced：&lt;/p&gt;
&lt;p&gt;选中Load tun kernel module，
Path to configuations设置为/sdcard/openvpn，
Path to openvpn binary设置为/system/bin/openvpn。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/pic/android/openvpn-settings-1.jpg"&gt;&lt;img alt="openvpn-settings-1" src="http://gfrog.net/pic/android/image/openvpn-settings-1.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后点击TUN module settings，&lt;/p&gt;
&lt;p&gt;Load module using选择insmod，path to tun module填入/system/lib/modules/tun.ko&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/pic/android/openvpn-settings-2.jpg"&gt;&lt;img alt="openvpn-settings-2" src="http://gfrog.net/pic/android/image/openvpn-settings-2.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;为了防止DNS欺骗，还需要Fix DNS，点击Fix DNS，会把dns服务器设置为8.8.8.8。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/pic/android/openvpn-settings-3.jpg"&gt;&lt;img alt="openvpn-settings-3" src="http://gfrog.net/pic/android/image/openvpn-settings-3.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;完成以上设置之后，把openvpn的配置文件、证书等复制到/sdcard/openvpn目录下，再打开Openvpn Settings，就可以连接vpn了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS1&lt;/strong&gt;.
青蛙开始的时候是用Market里面的Openvpn Installer安装openvpn的，
但是装完之后可以建立vpn连接，但是无法设置tun设备，log里会出现这样的错误日志：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;Options&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Unrecognized&lt;/span&gt; &lt;span class="k"&gt;option&lt;/span&gt; &lt;span class="k"&gt;or&lt;/span&gt; &lt;span class="n"&gt;mising&lt;/span&gt; &lt;span class="k"&gt;parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PUSH&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;OPTIONS&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;Options&lt;/span&gt; &lt;span class="n"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Unrecognized&lt;/span&gt; &lt;span class="k"&gt;option&lt;/span&gt; &lt;span class="k"&gt;or&lt;/span&gt; &lt;span class="n"&gt;mising&lt;/span&gt; &lt;span class="k"&gt;parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PUSH&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;OPTIONS&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ifconfig&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;解决方法也很简单，按照上面描述的方法，下载一个openvpn程序装上就行了[1]。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS2&lt;/strong&gt;.
网上有些教程[2]使用的是TunnelDroid，
青蛙感觉这个东东跟Openvpn Settings基本功能都一样，
只不过TunnelDroid可以更方便的查看Log，
这两个程序按照自己的喜好安装就是了。&lt;/p&gt;
&lt;p&gt;参考文档：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Issue 26: Unrecognized Command or missing parameter &lt;a href="http://code.google.com/p/android-openvpn-settings/issues/detail?id=26"&gt;http://code.google.com/p/android-openvpn-settings/issues/detail?id=26&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;android手机moto Milestone 配置OpenVPN方法 &lt;a href="http://www.yisiyisi.net/archives/137.html"&gt;http://www.yisiyisi.net/archives/137.html&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 18 Aug 2010 11:20:04 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-08-18:/2010/08/install-openvpn-on-moto-milestone/</guid><category>android</category><category>vpn</category><category>mobile</category><category>openvpn</category><category>client</category><category>setup</category></item><item><title>一堆小Tips （4）</title><link>https://www.gfrog.net/2010/08/gfrog-tips-4/</link><description>&lt;p&gt;今天的Tip是关于虚拟化的。&lt;/p&gt;
&lt;p&gt;问题的起因是青蛙当时使用的VirtualBox的网络配置很不方便，
guset系统启动之后不能改网络连接类型不说（后来的版本做了改进，但是用着还是不够舒服），
NAT模式下还不能直接跟Host系统通信。&lt;/p&gt;
&lt;p&gt;于是青蛙痛下决心，学习了一下Linux tap和br设备的用法，
写了一个小脚本来搞定虚拟机的网络问题。&lt;/p&gt;
&lt;p&gt;这个脚本同样也可以用于KVM的虚拟机。&lt;/p&gt;
&lt;p&gt;这个脚本会根据配置文件建立一系列的tap设备，
然后桥街到几个br设备上去，然后在br上设置好IP，
如果需要NAT功能则配置iptables规则。&lt;/p&gt;
&lt;p&gt;脚本文件在这里：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.googlecode.com/hg/script/vnet.sh"&gt;http://gfrog.googlecode.com/hg/script/vnet.sh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;配置文件如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;USER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gfrog&lt;/span&gt;&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;#指定建立tap设备时所用的用户名&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;VNET_NUM&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="n"&gt;#需要建立的虚拟网络数&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;EXITIF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;eth0&lt;/span&gt;&lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="n"&gt;#SNAT的出口接口&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="n"&gt;#以下是每个虚拟网络的配置&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;vnet1&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;VETH_NUM&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="n"&gt;#虚拟网络中包含的tap设备数&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;VNET_IP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;11.11.1.1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;#虚拟网络br设备上配置的ip地址&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;DONAT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;no&lt;/span&gt;&lt;span class="w"&gt;                  &lt;/span&gt;&lt;span class="n"&gt;#是否需要做nat&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;vnet2&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;VETH_NUM&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;VNET_IP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;11.11.2.1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;DONAT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;yes&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;EXITIF&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;wlan0&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;#针对这个虚拟网络指定专门的SNAT出口&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;此配置脚本需要一个名为confget的程序解析配置文件，
这个程序在debian/ubuntu源上有，fedora系需要自己找一下。&lt;/p&gt;
&lt;p&gt;还要注意一点，因为每次建立tap设备的MAC地址都会变化，
所以使用KVM虚拟机的时候需要在启动虚拟机时给网卡指定MAC地址，
防止guest系统里的网卡名称变化。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 11 Aug 2010 16:51:15 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-08-11:/2010/08/gfrog-tips-4/</guid><category>kvm</category><category>Linux</category><category>networking</category><category>shell</category></item><item><title>一堆小Tips （3）</title><link>https://www.gfrog.net/2010/08/gfrog-tips-3/</link><description>&lt;p&gt;今天继续关于ssh的话题。&lt;/p&gt;
&lt;p&gt;青蛙本来想把今天这个主题放在昨天一起讲的，但是这两个Tip的关联不大，最后决定还是分开说。&lt;/p&gt;
&lt;p&gt;在平时上网过程中，有可能遇到某个服务器（我们叫他S）无法访问的问题。&lt;/p&gt;
&lt;p&gt;但是如果另外一台主机（叫做P）可以访问到S，并且我们还有P上面的ssh权限，那就可以把P当作跳板，直接访问到S。&lt;/p&gt;
&lt;p&gt;假设要访问S上面的http（80）服务，那就执行如下命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;ssh&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;user&lt;/span&gt;&lt;span class="nv"&gt;@P的地址&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;L&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="nl"&gt;S的地址&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这个命令会在本地打开8080端口，将连接转发到S的80端口上，这样就达到了从本地直接访问S的目的。&lt;/p&gt;
&lt;p&gt;事实上ssh的-L参数主要是用来建立一条客户端到服务器之间的安全隧道，以便安全的传输数据。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 10 Aug 2010 12:07:11 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-08-10:/2010/08/gfrog-tips-3/</guid><category>Linux</category><category>ssh</category><category>client</category><category>shell</category><category>networking</category></item><item><title>一堆小Tips （2）</title><link>https://www.gfrog.net/2010/08/gfrog-tips-2/</link><description>&lt;p&gt;今天的Tip主题是ssh。&lt;/p&gt;
&lt;p&gt;经常有人问，为什么Linux里面的ssh那么难用呢，
就不能有个像secureCRT那样有地址簿的东西么。&lt;/p&gt;
&lt;p&gt;答案是，&lt;strong&gt;有&lt;/strong&gt;，而且不需要其他的软件，ssh自己就能搞定。&lt;/p&gt;
&lt;p&gt;要实现这个功能，首先要在~/.ssh里面建立一个config文件，并设置600权限。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;`&lt;/span&gt;&lt;span class="n"&gt;touch&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ssh&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;
&lt;span class="n"&gt;chmod&lt;/span&gt; &lt;span class="mi"&gt;600&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ssh&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;`&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;然后在这个文件中加入以下内容（以10.1.1.1为例）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;Host&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;                     &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="err"&gt;指定主机名，这个名称可以任意，取对自己方便的就可以&lt;/span&gt;
&lt;span class="n"&gt;HostName&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;    &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="err"&gt;指定主机的&lt;/span&gt;&lt;span class="n"&gt;IP&lt;/span&gt;&lt;span class="err"&gt;，这里是&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;User&lt;/span&gt; &lt;span class="n"&gt;aaa&lt;/span&gt;                  &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="err"&gt;默认登录的用户名&lt;/span&gt;
&lt;span class="n"&gt;Port&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;                    &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="err"&gt;主机上&lt;/span&gt;&lt;span class="n"&gt;sshd的端口号&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;以后，访问10.1.1.1就直接执行#ssh 1就可以了，非常方便。&lt;/p&gt;
&lt;p&gt;再继续探索一下~/.ssh/config，我们会发现更多有趣的配置。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;Host&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="n"&gt;ControlMaster&lt;/span&gt; &lt;span class="n"&gt;auto&lt;/span&gt;
&lt;span class="n"&gt;ControlPath&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ssh&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;master&lt;/span&gt;&lt;span class="o"&gt;-%&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;@%&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这段配置会打开所有主机的ControlMaster的功能，
也就是在一条ssh connection上开启多个session。&lt;/p&gt;
&lt;p&gt;更多的配置选项，可以参考ssh_config(5)。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 09 Aug 2010 10:01:21 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-08-09:/2010/08/gfrog-tips-2/</guid><category>Linux</category><category>ssh</category><category>configuration</category></item><item><title>一堆小Tips （1）</title><link>https://www.gfrog.net/2010/08/gfrog-tips-1/</link><description>&lt;p&gt;青蛙离职在即，在东软混了三年，在工作中积累的一些小技巧。
估计这些技巧到了其他公司基本上用不到了。
记录一下，方便后来人。
青蛙准备分几天写完，每天一个小Tips。&lt;/p&gt;
&lt;p&gt;今天要说的是IPsec VPN的密码问题。&lt;/p&gt;
&lt;p&gt;搞安全的部门自然有安全部门的特色，所有的服务器都需要拨VPN才能访问。
用Windows的童鞋们都很幸福，第一次连接的时候输入帐号密码，然后选保存密码，下次就可以直接登录了。
但是Linux的童鞋就比较麻烦了，按照部门攻略上的办法，每次都要输入密码。&lt;/p&gt;
&lt;p&gt;青蛙在ipsec.conf(5)里面找到了这个问题的解决办法。&lt;/p&gt;
&lt;p&gt;首先要编辑一下/etc/ipsec.conf&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;work&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="nf"&gt;left&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;10.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;leftnexthop&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;10.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="mf"&gt;.1&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;leftid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;C=cn,ST=liaoning,O=neusoft,OU=nsd,CN=xxx_l/emailAddress=xxx_l@neusoft.com&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;leftcert&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pem&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;leftxauthclient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;yes&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;leftmodecfgclient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;yes&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;leftxauthusername&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;xxx_linux&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;modecfgpull&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;no&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nf"&gt;right&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;10.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="mf"&gt;.254&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;rightsubnet&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;10.&lt;/span&gt;&lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="mf"&gt;.0&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;rightxauthserver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;yes&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;rightmodecfgserver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;yes&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;rightid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;C=cn,ST=liaoning,O=neusoft,OU=nsd,CN=vpnser,E=vpnser@neusoft.com&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;auto&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;add&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;注意leftxauthusername=xxx_linux这行，关键就在这里了，这句话就指定了这个vpn 连接所用的用户名。&lt;/p&gt;
&lt;p&gt;然后再编辑一下/etc/ipsec.secrets&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;RSA&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ipsec&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;private&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pem&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nv"&gt;@xxx_linux&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XAUTH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;@xxx_linux : XAUTH "password" 这行指定了用户名对应的密码。&lt;/p&gt;
&lt;p&gt;修改完这两个文件以后，下次再连接VPN的时候就会自动连接了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;.
/etc/ipsec.conf 还有一句auto=add，加上这句话之后，
就可以使用&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;# ipsec auto --up connname&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这种命令格式连接vpn了，命令格式简单些。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS2&lt;/strong&gt;.
为了更进一步达到偷懒的目的，继续包装一下连接vpn的流程，建立一个alias：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;alias vpn='/etc/init.d/ipsec restart &amp;amp;&amp;amp; ipsec auto --up work'&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后每次sudo vpn就成了，偷懒目的达到。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 06 Aug 2010 10:17:49 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-08-06:/2010/08/gfrog-tips-1/</guid><category>IPSec</category><category>Linux</category><category>vpn</category><category>configuration</category></item><item><title>Dreamhost主机共享计划</title><link>https://www.gfrog.net/2010/04/dreamhost-host-sharing-plan-free/</link><description>&lt;p&gt;最近青蛙的DH帐号迁移到了一台没有磁盘和流量限制的主机上。
所以，为了避免DH资源的浪费，青蛙准备开放主机共享计划。&lt;/p&gt;
&lt;p&gt;首批准备开放10个共享名额。
过一段时间，如果发现开放的空间没有被使用，青蛙将酌情收回并再次开放申请。&lt;/p&gt;
&lt;p&gt;这个计划是免费的，只提供搭建个人博客所需要的必要资源。
目前青蛙的帐号已经续费到2010年底，如果不出意外的话，还会继续续费。&lt;/p&gt;
&lt;p&gt;详细计划如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;免费；&lt;/li&gt;
&lt;li&gt;提供5G硬盘空间，流量不限； 似乎在无限空间的主机上已经没有设置账户空间的地方了，那么用户空间跟流量一样也是无限的。&lt;/li&gt;
&lt;li&gt;只限一个站点使用，只绑定一个域名；&lt;/li&gt;
&lt;li&gt;ftp和mysql帐号各一个，没有shell和email提供&lt;/li&gt;
&lt;li&gt;提供gmail/google app；&lt;/li&gt;
&lt;li&gt;可以提供python支持（青蛙对于配置python有点陌生，对于python的支持需要青蛙探索一下）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对于参与者有如下要求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只能做个人主页/个人博客用途；&lt;/li&gt;
&lt;li&gt;禁止做下载站、放置盗版内容，禁止做采集；&lt;/li&gt;
&lt;li&gt;在不违反以上几条的前提下，可以放置广告；&lt;/li&gt;
&lt;li&gt;对于博客搭建、站点备份的问题请自己解决。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;有意者请在twitter上联系
&lt;a href="http://twitter.com/gfrog"&gt;@gfrog&lt;/a&gt; 
，介绍一下你的情况和计划，并自备域名一个。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: 目前参与本计划的成员：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;爱自在 &lt;a href="http://www.izizai.tk/"&gt;http://www.izizai.tk/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 23 Apr 2010 14:22:57 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-04-23:/2010/04/dreamhost-host-sharing-plan-free/</guid><category>site</category><category>dreamhost</category><category>free</category><category>account</category><category>sharing</category></item><item><title>春节快乐</title><link>https://www.gfrog.net/2010/02/chun-jie-kuai-le/</link><description>&lt;p&gt;大家好，&lt;/p&gt;
&lt;p&gt;在虎年到来之际，青蛙在这里祝大家虎年新春快乐！吉祥如意！幸福康健！&lt;/p&gt;
&lt;p&gt;在除夕和初一短信过青蛙的童鞋们，俺就不一一回复了，在这里一并送去青蛙最美好的祝福！&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 14 Feb 2010 21:41:05 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-02-14:/2010/02/chun-jie-kuai-le/</guid><category>happy</category><category>new</category><category>year</category></item><item><title>年关将至</title><link>https://www.gfrog.net/2010/02/the-end-of-year-is-approaching/</link><description>&lt;p&gt;又到年关，年终奖发到手以后才发现辛苦干了一年，这点钱还不够过年的。&lt;/p&gt;
&lt;p&gt;这是多么令人纠结的一幕。&lt;/p&gt;
&lt;p&gt;明年，该走向哪里？&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 07 Feb 2010 22:41:41 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2010-02-07:/2010/02/the-end-of-year-is-approaching/</guid><category>status</category><category>update</category></item><item><title>公司园子里的肥猫</title><link>https://www.gfrog.net/2009/12/cat-living-in-neusoft-park/</link><description>&lt;p&gt;这只肥猫真的是太有喜感了，每次看到它我都有冲上去折磨一番的冲动。&lt;/p&gt;
&lt;p&gt;但是这是只野猫，对人有极强的戒心，所以，我是没有办法凑到它身边去了。&lt;/p&gt;
&lt;p&gt;今天终于给它拍了几张“玉照”，可惜是用卡片拍的，稍微有点跑焦。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://gfrog.net/pic/albums/misc/DSC00314.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://gfrog.net/pic/albums/misc/DSC00315.jpg"&gt;&lt;/p&gt;
&lt;p&gt;不得不说小卡片的镜头，对焦准确的话，还真的很锐，但是焦外，烂得一塌糊涂。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://gfrog.net/pic/albums/misc/DSC00316.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://gfrog.net/pic/albums/misc/DSC00317.jpg"&gt;&lt;/p&gt;
&lt;p&gt;这个角度看，是不是很有王霸之气？ XD&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://gfrog.net/pic/albums/misc/DSC00318.jpg"&gt;&lt;/p&gt;
&lt;p&gt;猛猫下山&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://gfrog.net/pic/albums/misc/DSC00319.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://img.zemanta.com/pixy.gif?x-id=3aab1487-1e58-8745-b3ca-bc5ff47c3ad5"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 01 Dec 2009 22:06:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2009-12-01:/2009/12/cat-living-in-neusoft-park/</guid><category>picture</category><category>cat</category></item><item><title>测试ScribeFire</title><link>https://www.gfrog.net/2009/11/test-from-scribefire/</link><description>&lt;p&gt;选来选去，Linux下最靠谱的blog客户端还是ScribeFire，
其他的不是没有所见即所得的编辑方式，就是经常crash，
或者就是很久很久不更新。&lt;/p&gt;
&lt;p&gt;青蛙以前试用过ScribeFire，这次再装上，
发现这个小东东的可用性明显增强了，很好很强大啊。
除了没有windows live writer那么多的插件，其他都很完美。
借着这样顺手的工具，青蛙正在慢慢恢复blog的状态。：P&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;update:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;发表这篇日志的时候，青蛙发现ScribeFire竟然可以直接编辑slug，那么青蛙在
&lt;a href="https://www.gfrog.net/2009/11/test-blogging-from-blackberry/"&gt;上一篇日志&lt;/a&gt;
里说到的在标题栏里些slug的问题也不存在了，ScribeFire真好。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://img.zemanta.com/pixy.gif?x-id=8e7934b7-e28d-8a36-9b30-c2199958536f"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 30 Nov 2009 15:25:50 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2009-11-30:/2009/11/test-from-scribefire/</guid><category>blog</category><category>site</category><category>wordpress</category><category>client</category><category>browser</category></item><item><title>测试黑莓手机发博</title><link>https://www.gfrog.net/2009/11/test-blogging-from-blackberry/</link><description>&lt;p&gt;虽然青蛙的黑莓上早就安装了wordpress客户端，但是它对中文的支持真是一塌糊涂，所以青蛙一直也没用。&lt;/p&gt;
&lt;p&gt;再后来，这个客户端的官方网站被封，没办法升级，青蛙就把这个客户端扔到一边去了。
今天无意中找到一个国内提供OTA安装的网站。
赶快升级试用。这不，这个可爱的客户端已经完美支持中文了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;update:&lt;/strong&gt; 2009-11-24&lt;/p&gt;
&lt;p&gt;青蛙试用完黑莓版本的wordpress客户端以后，
又试验了一下Android上的WP客户端，用起来也不错，速度很快。
但是没有BB上的功能全面，只能编辑blog，没有处理评论和page的能力。
看来BB用户还是很有福的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;update:&lt;/strong&gt; 2009-11-25&lt;/p&gt;
&lt;p&gt;在live writer里面，直接在标题后面加入@@固定链接，
WP就可以将我发布的blog设置为我指定的固定链接了。
但是BB客户端么有这么做。具体原因，需要调查一下。 &lt;/p&gt;
&lt;p&gt;发现问题在哪里了，前几天青蛙给WP的插件做了一次大规模升级，
其中就包括了从标题读取slug的插件wp-slug，
这个东东的1.5版会一直试图用google翻译我的标题，
导致我自己设置的slug无法生效。解决方法很简单，给它降级到1.4. ：P&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 25 Nov 2009 04:40:28 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2009-11-25:/2009/11/test-blogging-from-blackberry/</guid><category>blackberry</category><category>blog</category><category>site</category><category>wordpress</category><category>client</category></item><item><title>闪电</title><link>https://www.gfrog.net/2009/09/lightning/</link><description>&lt;p&gt;2009年9月11日，雷雨。&lt;/p&gt;
&lt;p&gt;在阳台上蹲守了半小时，浪费快门无数，终于蹲到了2张闪电。&lt;/p&gt;
&lt;p&gt;因为没有快门线，没用B门。
直接用30秒曝光，30秒以后再按一次快门，如此反复。&lt;/p&gt;
&lt;p&gt;第一次拍，傻傻的没有经验，拍到闪电以后还在傻傻的曝光，没有用遮光板把镜头挡住，所以闪电没有那么壮丽。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/pic/live_in_shenyang/img_0627.jpg.html"&gt;&lt;img alt="1" src="http://gfrog.net/pic/albums/live_in_shenyang/img_0627.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/pic/live_in_shenyang/img_0644.jpg.html"&gt;&lt;img alt="1" src="http://gfrog.net/pic/albums/live_in_shenyang/img_0644.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://img.zemanta.com/pixy.gif?x-id=3b13835c-6fc4-8c0b-82bf-47ea658700ac"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 11 Sep 2009 23:31:15 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2009-09-11:/2009/09/lightning/</guid><category>pictures</category><category>lightning</category></item><item><title>成功升级wordpress</title><link>https://www.gfrog.net/2009/08/successfully-upgrade-wordpress/</link><description>&lt;p&gt;&lt;img alt="wordpress-logo" src="http://gfrog.net/pic/albums/logo/wordpress-logo.png"&gt;&lt;/p&gt;
&lt;p&gt;这wordpress的自动升级功能是越来越好用了。&lt;/p&gt;
&lt;p&gt;想想看，几个月前在wp的后台里点升级还会直接跑去
&lt;a href="http://www.wordpress.org"&gt;www.wordpress.org&lt;/a&gt;，必须手工下载安装包。&lt;/p&gt;
&lt;p&gt;现在只要点一下自动升级，不到1分钟，wordpress就已经up to date了。很好，很强大。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://img.zemanta.com/pixy.gif?x-id=c60d7932-7748-842e-9b80-f43e4e4378bc"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 25 Aug 2009 01:12:27 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2009-08-25:/2009/08/successfully-upgrade-wordpress/</guid><category>site</category><category>wordpress</category><category>upgrade</category></item><item><title>UltraVPN - A Free VPN</title><link>https://www.gfrog.net/2009/06/ultravpn-a-free-vpn/</link><description>&lt;p&gt;最近功夫网发飙，所以各种翻墙术也层出不穷，
在twitter上看到有人推荐UltraVPN，很好很强大，在这里也推荐一下。
UltraVPN基于Openvpn，简单易用，
除了在windows上可以使用，在linnux和macox同样都用客户端。&lt;/p&gt;
&lt;p&gt;通过UltraVPN，你可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从企业网中访问被过滤的web网站&lt;/li&gt;
&lt;li&gt;在MSN被过滤的情况下访问MSN&lt;/li&gt;
&lt;li&gt;在被过滤的情况下使用VoIP软件（例如Skype）&lt;/li&gt;
&lt;li&gt;保护你的邮件和浏览隐私&lt;/li&gt;
&lt;li&gt;避免在internet中被记录&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当然，对国人最重要的一条，就是可以穿墙。&lt;/p&gt;
&lt;p&gt;UltraVPN使用也很简单。&lt;/p&gt;
&lt;p&gt;首先，在&lt;a href="http://www.ultravpn.fr/account.htm"&gt;这里&lt;/a&gt;注册帐号，下载客户端后就可以直接使用了。&lt;/p&gt;
&lt;p&gt;客户端下载：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ultravpn.fr/download/ultravpn-install.exe"&gt;Windows&lt;/a&gt;，&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ultravpn.fr/download/ultravpn-install-macosx.exe"&gt;MacOS&lt;/a&gt;，&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/wp-content/uploads/2009/06/ultravpn.zip"&gt;Linux&lt;/a&gt;
（只包含配置文件，openvpn客户端在&lt;a href="http://www.openvpn.net/release/openvpn-2.1_rc17.tar.gz"&gt;这里&lt;/a&gt;）。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 04 Jun 2009 20:48:45 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2009-06-04:/2009/06/ultravpn-a-free-vpn/</guid><category>network</category><category>vpn</category><category>openvpn</category><category>windows</category><category>linux</category><category>client</category></item><item><title>测试linux系统的启动速度</title><link>https://www.gfrog.net/2009/04/test-debian-boot-time-with-bootchart/</link><description>&lt;p&gt;今天看到blog一则，话说
&lt;a href="http://linuxdesktop.cn/2009/04/08/ubuntu-904-fast-boot.html"&gt;ubuntu9.04竟然可以在14秒内启动&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;于是青蛙拿&lt;a href="http://www.bootchart.org"&gt;bootchart&lt;/a&gt;测了一下自己的debian。&lt;/p&gt;
&lt;p&gt;青蛙自己的系统用了33秒，其中有启动vmware和virtualbox的服务的时间，
还有启动ntfs-3g、lighttpd、transmission、wicd的，比较起来，成绩还不算太差。&lt;/p&gt;
&lt;p&gt;不过wicd是用python写的，加载确实比较耗时，
但是network-manager的可定制性实在不高，不知道还有没有同类的软件可以替换。&lt;/p&gt;
&lt;p&gt;另外，bootchart加载之前的一段时间应该是内核加载的时间，看来青蛙还要继续精简内核才行。&lt;/p&gt;
&lt;p&gt;顺便记录一下bootchart的使用方法。说起来也很简单，统共分3步。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;装好bootchart之后，配置自己的bootloader，例如grub，在内核选项里面加上一句： init=/sbin/bootchartd。&lt;/li&gt;
&lt;li&gt;重启，bootchart自己就会在后台记录启动信息，默认保存在/var/log/bootchart.tgz中。&lt;/li&gt;
&lt;li&gt;完成启动后，运行bootchart命令，它就会把启动信息转化为下面这张图啦。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/wp-content/uploads/2009/04/bootchart.png"&gt;&lt;img alt="bootchart" src="http://gfrog.net/wp-content/uploads/2009/04/bootchart-thumb.png"&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 08 Apr 2009 20:13:36 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2009-04-08:/2009/04/test-debian-boot-time-with-bootchart/</guid><category>debian</category><category>linux</category><category>boot</category><category>bootchart</category><category>ubuntu</category></item><item><title>没有了更新blog的激情</title><link>https://www.gfrog.net/2009/04/lost-passion-on-weblog-update/</link><description>&lt;p&gt;自从工作以后，这个blog就很少更新了。
一方面是工作以后时间没有像在学校时那么充裕，
另一方面，青蛙的惰性真的越来越大了，经常是想在blog上说些什么，
但是真的坐下来要打字的时候，又不知道从何说起，然后也懒得去想，最后只得作罢。&lt;/p&gt;
&lt;p&gt;而且，自从部门对上网进行限制以后，青蛙的这个域名竟然直接就被封了，真是倒霉到家了，
一点机会也没有给。所以，更新的更加少了。
有的时候真的想写了，在live writer里刷刷写了半天，也没办法更新，
也只好扔在那放着了，放的久了，也就忘了更新。&lt;/p&gt;
&lt;p&gt;青蛙曾经有过关闭这个blog的想法，更新的这么可怜，又没有实际内容，开着实在浪费。
不过这里毕竟还是记录了青蛙几年的历程，所以一次次的让它自生自灭。&lt;/p&gt;
&lt;p&gt;这个blog到底应该走向哪里？ 真是个难题。看来只能让它继续自生自灭了？&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 04 Apr 2009 13:56:29 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2009-04-04:/2009/04/lost-passion-on-weblog-update/</guid><category>Blog</category><category>update</category></item><item><title>回首2008</title><link>https://www.gfrog.net/2009/01/looking-back-2008/</link><description>&lt;p&gt;2009就这么不经意的就来了。虽然2008走的不甘心，
&lt;a href="http://www.cnbeta.com/articles/71930.htm"&gt;多在这个世界上停留了一秒&lt;/a&gt;
 ，也没有阻挡的住2009的到来。&lt;/p&gt;
&lt;p&gt;套用那句经典名嗑，看过去，想今朝，我此起彼伏。于是乎，就多了这篇日志。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/wp-content/uploads/2009/01/windowslivewriter2008lookingback2008-14870071228113030302008-2.jpg"&gt;&lt;img alt="071228113030302008鼠年春节图片" src="http://gfrog.net/wp-content/uploads/2009/01/windowslivewriter2008lookingback2008-14870071228113030302008-thumb.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;话说2008年注定就是不平凡的一年，从2008年那场雪比每年都要大一些开始，&lt;/p&gt;
&lt;p&gt;暴动，抵制法国货，地震，奥运，经济危机，再加上饭岛爱同志的逝世，这些都是今年（哦，是去年）的标志性的名词了。&lt;/p&gt;
&lt;p&gt;国家大事自然有大人去管，还是说说青蛙自己。&lt;/p&gt;
&lt;p&gt;2008年，青蛙终于把自己交给了一个人，这个人应该值得青蛙托付一辈子吧 ：）；&lt;/p&gt;
&lt;p&gt;2008年，青蛙终于完成了自己的第一个第1000行代码，不过最后也没派上用场，就当练手吧；&lt;/p&gt;
&lt;p&gt;2008年，青蛙从一个测试人员转型为编码人员，从一个抓虫子的变成了制造虫子的，反差还是满大的；&lt;/p&gt;
&lt;p&gt;2008年，青蛙接到了工作以来最大最复杂的一项任务：动态路由的设计制作，第一次了解了OSPF和BGP的特性，这是一场与风车的搏斗；&lt;/p&gt;
&lt;p&gt;2008年，青蛙终于完成了从小到大最大的一次败家，换来白纸若干；&lt;/p&gt;
&lt;p&gt;2008年，青蛙终于有了自己的第一台小黑，虽然小黑现在已经变味了；&lt;/p&gt;
&lt;p&gt;2008年，青蛙终于向代码库里提交了第一行代码，虽然还是脚本，但是，我们的产品中终于有了青蛙的贡献。&lt;/p&gt;
&lt;p&gt;2008，平淡，也饱含激情。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 01 Jan 2009 23:31:06 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2009-01-01:/2009/01/looking-back-2008/</guid><category>status</category><category>update</category></item><item><title>2009新年快乐</title><link>https://www.gfrog.net/2009/01/happy-new-year-2009/</link><description>&lt;p&gt;&lt;strong&gt;新年快乐！&lt;/strong&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 01 Jan 2009 00:00:51 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2009-01-01:/2009/01/happy-new-year-2009/</guid><category>happy</category><category>new</category><category>year</category></item><item><title>关于FreeBSD系统安装和升级的几个技巧</title><link>https://www.gfrog.net/2008/12/tips-about-freebsd-installation-and-upgrade/</link><description>&lt;p&gt;&lt;img alt="1" src="http://www.freebsd.org/logo/logo-full.png"&gt;&lt;/p&gt;
&lt;p&gt;青蛙今天又开始在VMWare上继续倒腾FreeBSD。
话说上次给FreeBSD划分的虚拟硬盘太小了，
csup了一下系统和ports就把分区吃光光了。
所以今天青蛙从头又装了一遍FreeBSD，在安装和升级的过程中遇到了不少问题，在这里统一做一个记录。&lt;/p&gt;
&lt;p&gt;首先，是青蛙又把root密码搞丢了。这已经是第N次刚刚装上系统就要恢复密码了。
不过今天的原因是这样的，青蛙在安装的时候不小心修改了系统的keymap设置，
结果按照正常键盘顺序输入的字符，变成了不知道是什么符号。
当青蛙发现这个问题并改过来keymap之后，root密码就一直错误了。
没办法，上网google一下。流程如下[1]：&lt;/p&gt;
&lt;p&gt;第一步，启动到freebsd的single user模式，
也就是出现freebsd的启动菜单的时候按4；
等着系统启动，最后会提示指定shell的位置或者按回车继续，
这里直接按回车就ok。&lt;/p&gt;
&lt;p&gt;&lt;img alt="freebsd-boot" src="http://gfrog.net/wp-content/uploads/2008/12/windowslivewriterfreebsdtipsaboutfreebsdinstallationandup-b1ffreebsd-boot-3.jpg"&gt;&lt;/p&gt;
&lt;p&gt;第二步，在shell里执行如下命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;fsck&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;mount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;mount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;ufs&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;第三步，用passwd修改root密码。&lt;/p&gt;
&lt;p&gt;青蛙在这啰嗦一句：现在想想当时的错误操作就是在设置终端那步，
青蛙打开keymap的设置对话框看了一眼，
估计那个时候就直接选择了第一个键盘类型，然后就那么错了。
对比各种Linux的安装过程，
keymap的设置有一个默认不做任何改变的选项，
青蛙在FreeBSD里面就没有找到，
看来FreeBSD在这种细节上还需要继续努力。&lt;/p&gt;
&lt;p&gt;由于FreeBSD的默认shell是csh，所以青蛙用起来十分的不顺手，
上网google到几个贴心小设置，让csh用起来更加方便[2]：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;alias&lt;/span&gt; &lt;span class="n"&gt;ls&lt;/span&gt;    &lt;span class="n"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;      &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="err"&gt;让&lt;/span&gt;&lt;span class="n"&gt;csh可以正常显示汉字&lt;/span&gt; 
&lt;span class="k"&gt;alias&lt;/span&gt; &lt;span class="n"&gt;ls&lt;/span&gt;    &lt;span class="n"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;G&lt;/span&gt;       &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="err"&gt;按照文件类型高亮显示&lt;/span&gt;

&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="n"&gt;autolist&lt;/span&gt;      &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="err"&gt;按&lt;/span&gt;&lt;span class="n"&gt;tab键时自动补全&lt;/span&gt;&lt;span class="err"&gt;，如果有多个符合就显示列表。&lt;/span&gt;
&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="n"&gt;nobeep&lt;/span&gt;      &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="err"&gt;关闭终端响铃&lt;/span&gt;
&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;`/bin/hostname -s`:%~# &amp;quot;&lt;/span&gt;      &lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="err"&gt;在命令提示符中显示当前目录。&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;青蛙上次搞FreeBSD已经是很久以前的事了。
记得那时候好像FreeBSD 5-CURRENT刚刚出来，再后来青蛙就一头扎进Debian的世界去了。
所以FreeBSD的新东西青蛙几乎都没有见过，例如，更新ports。
记得当年的做法应该是&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先从sysinstall里面装一个ports，&lt;/li&gt;
&lt;li&gt;在这个ports中装一个cvsup-without-gui（似乎是叫这个名字吧），&lt;/li&gt;
&lt;li&gt;接着编辑port-supfile文件，&lt;/li&gt;
&lt;li&gt;再然后才是用cvsup重新更新ports。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在看起来，这套程序简直麻烦到家，对于新人来说十分的不友好。&lt;/p&gt;
&lt;p&gt;不过，这些东东都是历史了，从FreeBSD的handbook看，更新ports已经简单了很多了。&lt;/p&gt;
&lt;p&gt;说一个青蛙认为最简单的吧，portsnap方式[3]。&lt;/p&gt;
&lt;p&gt;说这种方式简单，到底有多简单？ 总共分三步：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="err"&gt;先下载一个&lt;/span&gt;&lt;span class="n"&gt;ports包&lt;/span&gt;&lt;span class="err"&gt;：&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;portsnap&lt;/span&gt; &lt;span class="k"&gt;fetch&lt;/span&gt;
&lt;span class="err"&gt;然后解压到&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ports里面&lt;/span&gt;&lt;span class="err"&gt;：&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;portsnap&lt;/span&gt; &lt;span class="k"&gt;extract&lt;/span&gt;
&lt;span class="err"&gt;以后需要更新的时候，直接执行：&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;portsnap&lt;/span&gt; &lt;span class="k"&gt;update&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;就这么简单，比cvsup还有稍后引入的csup方式简单的多。 ：）
当然portsnap自身也还有几个参数，青蛙觉得最常用的应该就是-s参数了，
这个参数用来指定更新时使用的更新服务器，
默认是&lt;code&gt;portsnap.FreeBSD.org&lt;/code&gt;。
国内有一系列portsnap的镜像可用，速度还是很快的，例如hssh.org的镜像：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;portsnap.hshh.org &lt;br /&gt;
portsnap2.hshh.org &lt;br /&gt;
portsnap3.hshh.org (网通) &lt;br /&gt;
portsnap4.hshh.org&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;今天先写到这里，未完待续...&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;p&gt;[1]：FreeBSD恢复root密码
      &lt;a href="http://www.zhaocs.info/linux-technic-26.html"&gt;http://www.zhaocs.info/linux-technic-26.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[2]：csh一些简单舒服的设置
      &lt;a href="http://www.linuxsir.org/bbs/showthread.php?s=&amp;amp;threadid=112343"&gt;http://www.linuxsir.org/bbs/showthread.php?s=&amp;amp;threadid=112343&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[3]：4.5.1 获得Ports Collect
      &lt;a href="http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/ports-using.html"&gt;http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/ports-using.html&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 27 Dec 2008 22:45:53 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-12-27:/2008/12/tips-about-freebsd-installation-and-upgrade/</guid><category>freebsd</category><category>installation</category><category>shell</category><category>configuration</category></item><item><title>公告：此空间续费完毕</title><link>https://www.gfrog.net/2008/12/announce-this-blog-has-paid-for-next-year/</link><description>&lt;p&gt;思想斗争了很久，今天终于把这个空间明年的费用交了。
虽然不怎么更新了，但是也是个没事瞎扯淡的地方。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Dreamhost" src="https://secure.newdream.net/green5.png"&gt;&lt;/p&gt;
&lt;p&gt;还有几件事情，&lt;/p&gt;
&lt;p&gt;第一件，声明一点，gfrog.cn这个域名，
由于我的疏忽，已经被别人抢注了，
所以，这个域名已经跟我毫无关系。&lt;/p&gt;
&lt;p&gt;好像是个什么下载站，看来又是骗点击、骗流量的了。&lt;/p&gt;
&lt;p&gt;第二件，算是广告，由于本空间资源十分充足，
所以开放空间共享服务，如果有需要的，可以留言，留下邮箱。
至于费用，我想象征性的一点就可以了，
毕竟taobao上dreamhost的空间已经超便宜了。&lt;/p&gt;
&lt;p&gt;第三件，开放一个折扣号，"GUAGUA"，$50的折扣，有需要的尽管拿去吧。：P&lt;/p&gt;
&lt;p&gt;好了，就这么多。另外给自己定个目标，以后争取每天更新。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 21 Dec 2008 23:16:29 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-12-21:/2008/12/announce-this-blog-has-paid-for-next-year/</guid></item><item><title>跟耗子接近的生物钟</title><link>https://www.gfrog.net/2008/11/biological-clock-like-a-mouse/</link><description>&lt;p&gt;哦，对不起，这篇日志标题党了。&lt;/p&gt;
&lt;p&gt;青蛙最近经常熬灯写文档，搞得作息时间毫无规律。
经常是凌晨上床，然后早上还要爬起来上班，
于是整天都没有精神，哈气连天，
然后晚上的时候倒是神采奕奕，很晚都不想睡觉。&lt;/p&gt;
&lt;p&gt;一个接近于昼伏夜出的动物产生了！&lt;/p&gt;
&lt;p&gt;PS.貌似最近到了青蛙冬眠的时节了，难道青蛙成天犯困也跟没去冬眠有关？ ：P&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hi.baidu.com/aeon_studio/blog/item/3bef7036fc6d9c340a55a9b0.html"&gt;&lt;img alt="耗子" src="http://gfrog.net/wp-content/uploads/2008/11/80d144fde90b6550d6887d59.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;（文中图片来自Google，请大家猛击&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hi.baidu.com/aeon_studio/blog/item/3bef7036fc6d9c340a55a9b0.html"&gt;http://hi.baidu.com/aeon_studio/blog/item/3bef7036fc6d9c340a55a9b0.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;观看更多超盟的老鼠，图片版权为原作者所有。）&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 09 Nov 2008 23:36:49 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-11-09:/2008/11/biological-clock-like-a-mouse/</guid></item><item><title>无聊时的消遣：JavaScript性能测试</title><link>https://www.gfrog.net/2008/11/javascript-performance-test/</link><description>&lt;p&gt;闲着无聊，在某邮件列表上发现一个测试js脚本性能的网页。
用Chrome进去一试，85ms。Google浏览器的js性能还真是彪悍。&lt;/p&gt;
&lt;p&gt;多余的不说，上图。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/wp-content/uploads/2008/11/jsperformancechrome.jpg"&gt;&lt;img alt="js-performance-chrome" src="http://gfrog.net/wp-content/uploads/2008/11/jsperformancechrome-thumb.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Google Chrome的测试结果。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/wp-content/uploads/2008/11/jsperformanceie6.jpg"&gt;&lt;img alt="js-performance-ie6" src="http://gfrog.net/wp-content/uploads/2008/11/jsperformanceie6-thumb.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IE6的测试结果，中间还弹出了脚本执行时间过长的警告。&lt;/p&gt;
&lt;p&gt;差距，就是这么明显。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 05 Nov 2008 22:52:38 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-11-05:/2008/11/javascript-performance-test/</guid><category>desktop</category><category>browser</category><category>performance</category><category>javascript</category></item><item><title>像Linux一样的Windows</title><link>https://www.gfrog.net/2008/11/make-windows-like-linux/</link><description>&lt;p&gt;谁说Windows的易用性好！？&lt;/p&gt;
&lt;p&gt;用惯了Linux，换到Windows上真的是超级不适应。
别的不说，就说复制粘贴都需要^C、^V的按个不停，
就是一种很影响效率的方式。
还有那个傻呼呼的cmd窗口，怎么能比的上bash简洁？&lt;/p&gt;
&lt;p&gt;这次换到windows平台，装好系统干的第一件事就是把
&lt;a href="http://www.cygwin.com"&gt;Cygwin&lt;/a&gt;
装上，有了熟悉的命令行，熟悉的VIM，才有工作的动力。：P&lt;/p&gt;
&lt;p&gt;然后再把explorer换成
&lt;a href="http://bb4win.sourceforge.net/bblean/"&gt;bbLean&lt;/a&gt;
，恩，这次跟linux比较像了！
但是还是没找到怎么样把窗口置顶的方法，
没法像在Linux里那样方便的把一个窗口钉在顶端。
（bbLean的更多图片可以参考
&lt;a href="/2007/02/talk-a-bit-about-bblean/"&gt;青蛙以前的日志&lt;/a&gt;
）&lt;/p&gt;
&lt;p&gt;实际上，被Windows惯坏的人太多了！&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.net/wp-content/uploads/2008/11/200811050040183361.jpg"&gt;&lt;img alt="desktop" src="http://gfrog.net/wp-content/uploads/2008/11/20081105004018336-thumb1.jpg"&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 05 Nov 2008 00:57:42 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-11-05:/2008/11/make-windows-like-linux/</guid><category>windows</category><category>linux</category><category>desktop</category><category>blackbox</category></item><item><title>好吧，该说点什么了</title><link>https://www.gfrog.net/2008/11/say-something-in-beginning-of-nov/</link><description>&lt;p&gt;已经将近半年没有更新了。&lt;/p&gt;
&lt;p&gt;因为这半年，青蛙所在的某软公司封掉了外网的连接，
青蛙在公司对外唯一的联络方式就是公司的办公邮箱。
虽然这段时间有很多想说的，但是，由于这个网络，只好放弃了。&lt;/p&gt;
&lt;p&gt;话说，青蛙在2008年夏天的某一天里，终于下定决心，转去了开发组。
本来以为从测试序列转到开发队伍比较费劲呢，
结果，领导一句话，“过来吧！”然后青蛙就这么过来了。&lt;/p&gt;
&lt;p&gt;现在，青蛙也是写代码的人了。虽说还向代码库提交过一行代码呢：P&lt;/p&gt;
&lt;p&gt;从7月末开始，青蛙就开始研究动态路由相关的几个协议：RIP、OSPF、BGP。
书是啃了很多的，也学到了很多，不过打突击的结果就是：知识掌握不扎实！
其实也是，还没有会走呢，就逼我去跑，当然有磕磕绊绊了。
但是打突击也有好处，就是经过这几个月的突击，
回过头来再看CCNP的路由部分真是超级简单啊。：P
自大一回。&lt;/p&gt;
&lt;p&gt;现在，青蛙彻底的沦为了文员，已经写了2个月左右的需求文档了！
虽然快看到终点了，但是任务还是很艰巨的。
每天跟Word打交道，其他的没学到，Word里面那点表格操作倒是都搞通了。：P
意外所得！&lt;/p&gt;
&lt;p&gt;工作汇报完毕，然后是生活。&lt;/p&gt;
&lt;p&gt;十月，青蛙终于入手了PSP。
这个东东果然很赞嘛，除了没有键盘，其他的青蛙都很满意——
速度足够，听歌看片都很爽；屏幕很大，趴被窝里看小说很合适；
集成wifi，这回青蛙败的Linksys WRT54G终于派上用场了。：P
花钱买乐子玩。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1227070_psp" src="http://gfrog.net/wp-content/uploads/2008/11/1227070-psp.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://www.polarcloud.com/img/tomato4.jpg"&gt;&lt;/p&gt;
&lt;p&gt;哦，对了，说起这个WRT54G，青蛙买回来的时候就曾经配置过很久无线连接，但是跟本子就是连不上。
因为本子的系统是Debian，所以青蛙一直认为本子的配置哪里出了问题。
这次PSP到手以后，拿来一试，还是连不上无线路由，现象是无线路由只有收包，没有发包。
最后青蛙一怒之下干掉了
&lt;a href="http://www.dd-wrt.com/"&gt;DD-WRT&lt;/a&gt;
，装上了可爱的大柿子
&lt;a href="http://www.polarcloud.com/tomato"&gt;Tomato&lt;/a&gt;
，然后这个WRT54G竟然就好用了。
晕死，竟然是DD-WRT的原因。：P
也算是个意外。&lt;/p&gt;
&lt;p&gt;恩，另外一个意外就是，陪伴了青蛙三年的主板，在上周，
准确的说是2008年10月30日，挂掉了！
在它正好过保修期一个月的时候！
看来，青蛙入手T400的日程需要考虑提前一下了。：P&lt;/p&gt;
&lt;p&gt;&lt;img alt="t400" src="http://gfrog.net/wp-content/uploads/2008/11/t400.jpg"&gt;&lt;/p&gt;
&lt;p&gt;好吧，就说到这里，感谢观看青蛙唠叨，大家晚安。：）&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 03 Nov 2008 23:26:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-11-03:/2008/11/say-something-in-beginning-of-nov/</guid><category>status</category><category>update</category></item><item><title>关于Google App Engine的一点点东西</title><link>https://www.gfrog.net/2008/06/something-about-google-app-engine/</link><description>&lt;p&gt;&lt;img alt="1" src="https://www.google.com/accounts/ah/logo_en_appengine.gif"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://code.google.com/appengine/images/appengine_lowres.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://appengine.google.com/"&gt;Google App Engine&lt;/a&gt;
（以下简称GAE）服务推出来有段时间了，
最近google刚刚完全开放了GAE的注册，并且公布了GAE未来的价格（原文在
&lt;a href="http://googleappengine.blogspot.com/2008/05/announcing-open-signups-expected.html"&gt;这里&lt;/a&gt;
，被盾，需要带套访问）。&lt;/p&gt;
&lt;p&gt;GAE是google提供的一个在线应用平台，提供从数据库到应用服务器的一整套东西，
每个GAE应用可以免费使用500M存储空间和满足5百万pv/月的CPU跟资源。&lt;/p&gt;
&lt;p&gt;Google出的东西都很赞，GAE也是这样。
它提供了一个成型的python应用框架，外加GFS强大的存储支持，
在上面可很方便的建立自己的web应用。
但是，青蛙注册账号以后，一直没有在上面做什么。
原因？很简单，&lt;/p&gt;
&lt;p&gt;Ｇ。Ｆ。Ｗ！&lt;/p&gt;
&lt;p&gt;在Ｇ。Ｆ。Ｗ的阴影下，GAE服务很有可能就被干掉了。
特别是存在
&lt;a href="http://gfw.appspot.com/"&gt;这种&lt;/a&gt;
服务的情况下。&lt;/p&gt;
&lt;p&gt;不过，鉴于现在有稳定的免费vpn支持，青蛙决定重新启动blog DIY计划，就在GAE平台上！&lt;/p&gt;
&lt;p&gt;各位，bless me吧。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 01 Jun 2008 23:41:32 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-06-01:/2008/06/something-about-google-app-engine/</guid><category>google</category><category>appengine</category><category>gae</category><category>ptyhon</category></item><item><title>G to g, google for kids?</title><link>https://www.gfrog.net/2008/05/google-change-favicon/</link><description>&lt;p&gt;&lt;img alt="1" src="http://www.google.com/intl/en_ALL/images/logo.gif"&gt;&lt;/p&gt;
&lt;p&gt;不经意之间，google的全球网站全部都悄悄的更换了favicon，
从一个大大的G换成了一个cute g。
今天早上青蛙发现这个变化的时候，第一反应就是：&lt;/p&gt;
&lt;p&gt;google一定是为儿童节更换的图标。&lt;/p&gt;
&lt;p&gt;但是过了几分钟，才想起来，“六一”只是中国宝宝的节日啊，
难不成全球的google站点都在为中国宝宝们庆祝节日？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;update 2008-06-01&lt;/strong&gt;：原来“六一”是全世界宝宝的节日啊。&lt;/p&gt;
&lt;p&gt;我承认，我没有小学毕业证，大家鄙视我吧。 -____-&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 31 May 2008 23:52:18 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-05-31:/2008/05/google-change-favicon/</guid></item><item><title>Mozilla的add-on站点更新</title><link>https://www.gfrog.net/2008/04/add-on-dot-mozilla-dot-com-updated/</link><description>&lt;p&gt;&lt;img alt="1" src="http://www.caribwebdev.com/wp-content/uploads/2007/11/firefox-logo-browser.jpg"&gt;&lt;/p&gt;
&lt;p&gt;话说Mozilla的Add-on站点最近更新了,
这次更新最显著的特色就是有了完整的中文版页面,
这对广大中国用户来说真是一个好消息。&lt;/p&gt;
&lt;p&gt;其他的方面还有可以在线检测扩展对应的firefox版本了,
如果正在使用的浏览器跟扩展不兼任, 那么这个扩展的安装按钮会变成灰色,
也就是说连下载的机会也不会给。&lt;/p&gt;
&lt;p&gt;这个修改对青蛙来说实在是太痛苦了, 很多插件在firefox3上没法安装, 看来只能望扩展兴叹了。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 05 Apr 2008 11:34:26 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-04-05:/2008/04/add-on-dot-mozilla-dot-com-updated/</guid></item><item><title>在debian sid上面安装eva</title><link>https://www.gfrog.net/2008/03/install-eva-in-debian/</link><description>&lt;p&gt;&lt;img alt="debian-ubuntu" src="http://haokanbu.s3.amazonaws.com/picture/external/c8b6c8df6df744f7af186747f25a35b3.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;自从青蛙人品爆发，在pidgin上面死活登录不上QQ以后，青蛙都是在wine上面跑QQ。
在wine上面速度慢不说，QQ时不时的来一下非法操作就把青蛙折磨的死去活来。
据说最近eva又升级了，于是青蛙决定换用eva。&lt;/p&gt;
&lt;p&gt;Debian的apt里面是没有eva的。
青蛙上网搜了一圈，也没有发现eva的升级包，连
&lt;a href="http://sourceforge.net/projects/evaq"&gt;它的主页&lt;/a&gt;
上也都还是很久很久以前的版本（大概eva已经转入地下了）。&lt;/p&gt;
&lt;p&gt;青蛙最后在ubuntu的源里面终于翻倒了eva的deb包了。&lt;/p&gt;
&lt;p&gt;eva在ubuntu源的universe里面，随便找一个ubuntu的镜像（青蛙用的是
&lt;a href="http://debian.ustc.edu.cn/ubuntu"&gt;中科大的源&lt;/a&gt;
），在/pool/universe/e/eva目录里找到
&lt;a href="http://debian.ustc.edu.cn/ubuntu/pool/universe/e/eva/eva_0.4.9+svn20080215-0ubuntu1_i386.deb"&gt;eva_0.4.9+svn20080215-0ubuntu1_i386.deb&lt;/a&gt;
，下载回来备用。&lt;/p&gt;
&lt;p&gt;在正式安装eva之前，青蛙还要搞定它的依赖性问题。&lt;/p&gt;
&lt;p&gt;ubuntu里面的eva是依赖于kdelibs4c2a这个包的。
但是debian里面的kdelibs4c2a存在一个依赖性的bug：&lt;/p&gt;
&lt;p&gt;它依赖于包libopenexr2ldbl，但是这个包在debian的i386源里面竟然没有。&lt;/p&gt;
&lt;p&gt;于是青蛙再从ubuntu源里把
&lt;a href="http://debian.ustc.edu.cn/ubuntu/pool/main/o/openexr/libopenexr2ldbl_1.2.2-4.4ubuntu1_i386.deb"&gt;libopenexr2ldbl&lt;/a&gt;
给抓回来，&lt;code&gt;dpkg -i&lt;/code&gt;安装之，然后执行&lt;code&gt;# aptitude install kdelibs4c2a&lt;/code&gt;，安装一系列的依赖包。&lt;/p&gt;
&lt;p&gt;顺便说一句，debian跟ubuntu这两个兄弟有时候还真不错，互相谁也不挑谁的，deb包拿过来一般都能直接用。&lt;/p&gt;
&lt;p&gt;最后，执行&lt;code&gt;# dpkg -i eva_0.4.9+svn20080215-0ubuntu1_i386.deb&lt;/code&gt;，eva安装成功。&lt;/p&gt;
&lt;p&gt;聊天去也~&lt;/p&gt;
&lt;p&gt;&lt;img alt="eva" src="http://haokanbu.s3.amazonaws.com/picture/external/c8b6c8df6df744f7af186747f25a35b3.jpeg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 26 Mar 2008 01:03:12 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-26:/2008/03/install-eva-in-debian/</guid><category>linux</category><category>desktop</category><category>installation</category><category>debian</category><category>ubuntu</category><category>eva</category><category>qq</category></item><item><title>世界上最小的linux</title><link>https://www.gfrog.net/2008/03/picotux-tiny-linux-device/</link><description>&lt;p&gt;&lt;img alt="picotux" src="http://www.picotux.com/pt100a.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="http://www.picotux.com/pt112a.jpg"&gt;&lt;/p&gt;
&lt;p&gt;上面的图片就是号称世界上最小的linux：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.picotux.com/techdatae.html"&gt;picotux 100&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;（右侧为picotux 112）。&lt;/p&gt;
&lt;p&gt;这个小东西只有35mm×19mm×19mm大小，只比一个RJ45接口大了那么一点点。&lt;/p&gt;
&lt;p&gt;它使用32-bit ARM 7 Netsilicon NS7520处理器，主频55MHz，
搭载2M~4M Flash和8M SDRAM，带有一个10/100M网卡，
一个可以达到230.400 bps的串口，还有5个I/O针脚。
使用3.3V电压供电。&lt;/p&gt;
&lt;p&gt;软件方面，它使用uClinux 2.4.27系统，系统大小最少720KB。&lt;/p&gt;
&lt;p&gt;Shell可以使用Busybox，使用CRAMFS、JFFS2文件系统,
还可以使用NFS，有Webserver、Telnet等等程序。&lt;/p&gt;
&lt;p&gt;开发工具使用GUN Toolchain，使用GCC3.4.4以上版本和ulibc0.9.26以上版本。&lt;/p&gt;
&lt;p&gt;这东东售价最低99欧元。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 23 Mar 2008 21:50:56 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-23:/2008/03/picotux-tiny-linux-device/</guid><category>linux</category><category>mini</category><category>board</category><category>arm</category><category>device</category></item><item><title>在Dreamhost主机上安装bugzilla</title><link>https://www.gfrog.net/2008/03/install-bugzilla-in-dreamhost/</link><description>&lt;p&gt;&lt;a href="http://www.bugzilla.org/"&gt;bugzilla&lt;/a&gt;
是
&lt;a href="http://www.mozilla.org/"&gt;mozilla&lt;/a&gt;
一个很好的开源bug管理软件。
青蛙准备在glinux的开发过程中用它来管理发现的bug。&lt;/p&gt;
&lt;p&gt;但是dreamhost上没有bugzilla的自动安装功能，青蛙按照
&lt;a href="http://wiki.dreamhost.com/Bugzilla#Installing_Bugzilla"&gt;dreamhost的wiki上面介绍的方法&lt;/a&gt;
安装时，又有很多perl模块没有，而且在dreamhost的主机上也没有权限安装这些perl模块。
所以，青蛙决定先在主机上自己搞一个perl。&lt;/p&gt;
&lt;p&gt;perl的安装方法很简单，
&lt;a href="http://wiki.dreamhost.com/Perl#Path_to_the_Perl_interpreter"&gt;dreamhost的wiki也有介绍&lt;/a&gt;
。青蛙选择的是perl5.8.8，因为wiki上头说有一个针对dreamhost环境的补丁要打
（补丁文件在
&lt;a href="http://schwern.org/~schwern/src/dreamhost-5.8.8-cwd.patch"&gt;这里&lt;/a&gt;
下载）。&lt;/p&gt;
&lt;p&gt;打上补丁以后，执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt; &lt;span class="n"&gt;Configure&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Dusethreads&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Duselargefiles&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Dccflags&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="n"&gt;DDEBIAN&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Dcccdlflags&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="n"&gt;fPIC&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Darchname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;i386&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Dprefix&lt;/span&gt;&lt;span class="o"&gt;=~/&lt;/span&gt;&lt;span class="n"&gt;apps&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Dpager&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sensible&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pager&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Uafs&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Ud_csh&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Uusesfio&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Uusenm&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Duseshrplib&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Dvendorlib&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;perl5&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Dvendorarch&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;perl5&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Dvendorprefix&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Uinstallusrbinperl&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;des&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;其中Dprefix参数要设置为要安装perl的目录。
config完毕就可以&lt;code&gt;make &amp;amp;&amp;amp; make install&lt;/code&gt;了。&lt;/p&gt;
&lt;p&gt;下面正式开始安装bugzilla，
（青蛙的perl在~/apps/bin目录下，这个目录要换成你自己实际的目录哦）&lt;/p&gt;
&lt;p&gt;首先进入bugzilla的目录，执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="n"&gt;apps&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;perl&lt;/span&gt; &lt;span class="n"&gt;chechsetup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pl&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这个脚本会检查当前的perl环境，如果有缺少的模块，它会给出安装命令。
例如，在青蛙的主机上，&lt;code&gt;Email::Send&lt;/code&gt;、&lt;code&gt;Email::MIME::Modifier&lt;/code&gt;就被提示安装。
按照这个脚本给出的命令把必须的模块安装上，然后再次执行上面的命令，
会在bugzilla目录下生成一个localconfig文件。&lt;/p&gt;
&lt;p&gt;修改这个localconfig文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;$webservergroup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;apache&amp;quot;&lt;/span&gt;&lt;span class="n"&gt;中的apache改为自己真实的组名称&lt;/span&gt;&lt;span class="err"&gt;，&lt;/span&gt;&lt;span class="n"&gt;这个组名字可以用groups命令查到&lt;/span&gt;&lt;span class="err"&gt;。&lt;/span&gt;
&lt;span class="nv"&gt;$db_host&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt; &lt;span class="n"&gt;修改为真实的mysql服务器地址&lt;/span&gt;&lt;span class="err"&gt;。&lt;/span&gt;
&lt;span class="nv"&gt;$db_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;bugs&amp;quot;&lt;/span&gt; &lt;span class="n"&gt;修改为真实的数据库名&lt;/span&gt;&lt;span class="err"&gt;。&lt;/span&gt;
&lt;span class="nv"&gt;$db_user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;bugs&amp;quot;&lt;/span&gt; &lt;span class="n"&gt;修改为真实的用户名&lt;/span&gt;&lt;span class="err"&gt;。&lt;/span&gt;
&lt;span class="nv"&gt;$db_pass&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;修改为真实的密码&lt;/span&gt;&lt;span class="err"&gt;。&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;上面几项都改完后，重新执行checksetup.pl脚本。
这时脚本会询问管理员邮箱地址，设置管理员密码等等动作。&lt;/p&gt;
&lt;p&gt;因为dreamhost使用suexec方式运行的cgi脚本，
所以每次执行完checksetup.pl以后，都要执行以下命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;docs&lt;/span&gt; &lt;span class="nv"&gt;graphs&lt;/span&gt; &lt;span class="nv"&gt;images&lt;/span&gt; &lt;span class="nv"&gt;js&lt;/span&gt; &lt;span class="nv"&gt;skins&lt;/span&gt;&lt;span class="c1"&gt;; do find $i -type d -exec chmod o+rx {} ; ; done&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;jpg&lt;/span&gt; &lt;span class="nv"&gt;gif&lt;/span&gt; &lt;span class="nv"&gt;css&lt;/span&gt; &lt;span class="nv"&gt;js&lt;/span&gt; &lt;span class="nv"&gt;png&lt;/span&gt; &lt;span class="nv"&gt;html&lt;/span&gt; &lt;span class="nv"&gt;rdf&lt;/span&gt; &lt;span class="nv"&gt;xul&lt;/span&gt;&lt;span class="c1"&gt;; do find . -name *.$i -exec chmod o+r {} ; ; done&lt;/span&gt;
&lt;span class="nv"&gt;find&lt;/span&gt; . &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;name&lt;/span&gt; .&lt;span class="nv"&gt;htaccess&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;chmod&lt;/span&gt; &lt;span class="nv"&gt;o&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;r&lt;/span&gt; {} &lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;chmod&lt;/span&gt; &lt;span class="nv"&gt;o&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;x&lt;/span&gt; . &lt;span class="nv"&gt;data&lt;/span&gt; &lt;span class="nv"&gt;data&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;webdot&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;完成这些后，bugzilla就算是安装成功啦。
可以先用浏览器访问下bugzilla的地址看看效果。&lt;/p&gt;
&lt;p&gt;接下来说一下汉化的问题，汉化包可以在
&lt;a href="http://bugzilla-cn.googlecode.com/"&gt;这里&lt;/a&gt;
下载到，下载、解压以后，把cn文件夹复制到bugzilla目录里的template/目录就行啦。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 22 Mar 2008 00:23:55 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-22:/2008/03/install-bugzilla-in-dreamhost/</guid><category>bugzilla</category><category>Dreamhost</category><category>Linux</category></item><item><title>Markdown语法摘要</title><link>https://www.gfrog.net/2008/03/markdown-syntax-basic/</link><description>&lt;p&gt;下面是Markdown语法的简要列表，便于以后查阅。
以下内容主要从
&lt;a href="http://www.leninlee.cn"&gt;牧码志&lt;/a&gt;
整理，感谢leninlee的辛勤劳动。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;链接的添加，共有三种形式，Markdown支持相对链接。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;链接&amp;gt;&lt;/code&gt;：这种形式只是简单的标出链接； &lt;br /&gt;
&lt;code&gt;[文字](链接 "标题")&lt;/code&gt;：给文字添加链接，其中标题是可选的； &lt;br /&gt;
&lt;code&gt;[文字][标记]&lt;/code&gt;：给文字添加链接，链接在下面的一个以&lt;code&gt;[标记]&lt;/code&gt;开头的新行（一般是文章末尾）给出。
或者直接以&lt;code&gt;[文字][]&lt;/code&gt;这种形式编写，在下面的新行中使用&lt;code&gt;[文字]&lt;/code&gt;:链接的形式声明链接。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;图片的添加：跟链接比起来，图片只是多了在前面多了一个叹号&lt;code&gt;!&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;标题格式：Markdown提供了2种方式。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;第一种是在标题前面加上1~6个&lt;code&gt;#&lt;/code&gt;表示&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;~&lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;。 &lt;br /&gt;
第二种是在标题下面另起一行，输入四个以上的等号&lt;code&gt;=&lt;/code&gt;来表示&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;，
输入四个以上的减号&lt;code&gt;-&lt;/code&gt;来表示&lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;粗体和斜体：用星号"*"或者下划线"_"&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一个表示斜体； &lt;br /&gt;
两个表示粗体； &lt;br /&gt;
三个表示粗斜体。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;引用内容：就是html标记的&lt;code&gt;&amp;lt;blockquote&amp;gt;&lt;/code&gt;，只要在行首用右尖括号&lt;code&gt;&amp;gt;&lt;/code&gt;就行了。如果要嵌套引用，那就多打几个&lt;code&gt;&amp;gt;&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;原文输出：如果不想Markdown解释某些内容，有两种方式：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;第一个是转义为html的&lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt;标签：要在要原样输出的内容前面加入至少4个空格或者1个tab的宽度； &lt;br /&gt;
第二个是转义为&lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt;标签：给要输出的内容加上```号（就是esc下头那个键）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无序列表：在文字前面使用星号&lt;code&gt;*&lt;/code&gt;、加号&lt;code&gt;+&lt;/code&gt;、减号&lt;code&gt;-&lt;/code&gt;中的任意一个，注意在这些符号后面要留一个空格。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;有序列表：在第一条前添加一个数字，后跟一个英文句点&lt;code&gt;.&lt;/code&gt;。无论第一个条目前加的数字是什么，列表都会从1开始计数。&lt;/li&gt;
&lt;li&gt;转义符：&lt;code&gt;""&lt;/code&gt;。只要给不希望被转义的字符前面加上就可以了。&lt;/li&gt;
&lt;li&gt;HTML实体：如果要在内容中输出&lt;code&gt;&amp;lt;&lt;/code&gt;或者&lt;code&gt;&amp;amp;&lt;/code&gt;符号，那么必须用&lt;code&gt;[HTML实体][]&lt;/code&gt;代替。
    Markdown会把HTML的特殊符号直接翻译为HTML实体。&lt;/li&gt;
&lt;li&gt;换行符：Markdown中在一行的末尾使用两个以上的空格标示HTML中的一个换行符&lt;code&gt;&amp;lt;br /&amp;gt;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;段落：只要两行之间有一个空行，Markdown就会把它识别为一个段落。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（青蛙在写这篇文章的时候发现，在列表之前一定要加入一个空行，要不然Markdown是不会把&lt;code&gt;*&lt;/code&gt;识别为列表的。）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;水平线：使用三个以上的&lt;code&gt;*&lt;/code&gt;或&lt;code&gt;-&lt;/code&gt;来表示。这些星号跟减号之间可以用空格，如果减号没有空格，
    那它必须在单独的一个段落里，要不它会被识别为标题的。&lt;/li&gt;
&lt;li&gt;直接使用HTML标记：有些Markdown不支持的标签可以直接写HTML标记，例如表格。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;update,2008-03-20:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;青蛙发现直接向wordpress写Markdown格式效果真的很差，而且不方便编辑，
所以青蛙决定还是在本地把Markdown文档转化为HTML格式再发布到blog上好了。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 20 Mar 2008 00:30:34 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-20:/2008/03/markdown-syntax-basic/</guid><category>Markdown</category><category>syntax</category></item><item><title>在VIM中打开Markdown文件高亮</title><link>https://www.gfrog.net/2008/03/enable-markdown-highlight-in-vim/</link><description>&lt;p&gt;&lt;a href="http://daringfireball.net/projects/Markdown/"&gt;Markdown&lt;/a&gt;
是John Gruber设计的一个文本标记系统，相比html，它很简单，
便于手工编写，而且它还支持
&lt;a href="http://wordpress.org/"&gt;Wordpress&lt;/a&gt;
，
&lt;a href="http://michelf.com/projects/php-Markdown/"&gt;有一个用于wordpress的插件&lt;/a&gt;
。青蛙决定用vim+Markdown来编写blog，看起来他们是一对强大的组合 :)&lt;/p&gt;
&lt;p&gt;首先要去
&lt;a href="http://www.vim.org/"&gt;Vim&lt;/a&gt;
的官方网站
&lt;a href="http://www.vim.org/scripts/script.php?script_id=1242"&gt;下载Markdown的语法高亮插件&lt;/a&gt;
，并把它复制到"~/.vim/syntax/"目录下面。
然后，新建一个"~/.vim/ftdetect/mkd.vim"文件，在其中加入下面的内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="s"&gt; markdown filetype file&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nv"&gt;exists&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="s"&gt;did_load_filetypes&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
  &lt;span class="nv"&gt;finish&lt;/span&gt;
&lt;span class="k"&gt;endif&lt;/span&gt;
&lt;span class="nv"&gt;augroup&lt;/span&gt; &lt;span class="nv"&gt;markdown&lt;/span&gt;
  &lt;span class="nv"&gt;au&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nv"&gt;BufRead&lt;/span&gt;,&lt;span class="nv"&gt;BufNewFile&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;.&lt;span class="nv"&gt;mkd&lt;/span&gt;   &lt;span class="nv"&gt;setfiletype&lt;/span&gt; &lt;span class="nv"&gt;mkd&lt;/span&gt;
&lt;span class="nv"&gt;augroup&lt;/span&gt; &lt;span class="k"&gt;END&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;并在"~/.vimrc"文件中添加如下内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="s"&gt;Markdown language syntax settings&lt;/span&gt;
&lt;span class="nv"&gt;augroup&lt;/span&gt; &lt;span class="nv"&gt;mkd&lt;/span&gt;
  &lt;span class="nv"&gt;autocmd&lt;/span&gt; &lt;span class="nv"&gt;BufRead&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;.&lt;span class="nv"&gt;mkd&lt;/span&gt;  &lt;span class="nv"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;ai&lt;/span&gt; &lt;span class="nv"&gt;formatoptions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;tcroqn2&lt;/span&gt; &lt;span class="nv"&gt;comments&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;n&lt;/span&gt;:&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nv"&gt;augroup&lt;/span&gt; &lt;span class="k"&gt;END&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;然后，后缀名为".mkd"的文件就能被自动启用Markdown的语法高亮了。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 20 Mar 2008 00:29:34 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-20:/2008/03/enable-markdown-highlight-in-vim/</guid><category>VIM</category><category>Markdown</category><category>configuration</category><category>vimrc</category></item><item><title>glinux开发摘要(2)-构建目录结构</title><link>https://www.gfrog.net/2008/03/glinux-setup-build-directory/</link><description>&lt;p&gt;&lt;em&gt;下面的操作步骤青蛙基本上是从
&lt;a href="http://www.linuxfromscratch.org/lfs/view/6.3"&gt;lfs6.3&lt;/a&gt;
学来的，所以会有$LFS这个变量，如果你对lfs也有兴趣，可以
&lt;a href="http://www.linuxfromscratch.org/"&gt;去它的官方网站&lt;/a&gt;
看看。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;青蛙编译完成了toolchain以后，就可以开始建造glinux的目录体系了。&lt;/p&gt;
&lt;p&gt;首先，构造虚拟内核文件系统(Virtual Kernel File Systems)，这个东东是跟内核通信的一个途径。&lt;/p&gt;
&lt;p&gt;执行下面的命令，来建立文件系统的挂载点：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pv&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;LFS&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;proc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;然后，建立几个必要的设备文件，&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;mknod&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="mi"&gt;600&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;LFS&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;console&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;mknod&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="mi"&gt;666&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;LFS&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;null&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;青蛙准备用udev来管理设备文件，所以只建立这两个文件就够了，
其他文件udev会在系统启动的时候自动创建。&lt;/p&gt;
&lt;p&gt;现在udev模块在glinux上还没有安装，
所以暂时用&lt;code&gt;mount --bind&lt;/code&gt;命令将宿主系统的/dev目录镜像到glinux的目录结构里来：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;mount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="c1"&gt;--bind /dev $LFS/dev&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;把几个重要的虚拟文件系统都挂在到glinux的目录上去：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;mount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;vt&lt;/span&gt; &lt;span class="n"&gt;devpts&lt;/span&gt; &lt;span class="n"&gt;devpts&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;LFS&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pts&lt;/span&gt;
&lt;span class="n"&gt;mount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;vt&lt;/span&gt; &lt;span class="n"&gt;tmpfs&lt;/span&gt; &lt;span class="n"&gt;shm&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;LFS&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;shm&lt;/span&gt;
&lt;span class="n"&gt;mount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;vt&lt;/span&gt; &lt;span class="n"&gt;proc&lt;/span&gt; &lt;span class="n"&gt;proc&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;LFS&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;proc&lt;/span&gt;
&lt;span class="n"&gt;mount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;vt&lt;/span&gt; &lt;span class="n"&gt;sysfs&lt;/span&gt; &lt;span class="n"&gt;sysfs&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;LFS&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;以上几个步骤在每次重新chroot以后都要执行一遍。&lt;/p&gt;
&lt;p&gt;上面的步骤都完成，历史性的时刻就要来了：chroot进入glinux。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;chroot&lt;/span&gt; &lt;span class="ss"&gt;&amp;quot;$LFS&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="n"&gt;HOME&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="n"&gt;TERM&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;$TERM&amp;quot;&lt;/span&gt; &lt;span class="n"&gt;PS1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;u:w$ &amp;#39;&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;
    &lt;span class="n"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sbin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sbin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bash&lt;/span&gt; &lt;span class="c1"&gt;--login +h&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;看到命令提示符在喊“I have no name!”了么？
如果看到它喊了，就说明chroot成功了 :)&lt;/p&gt;
&lt;p&gt;进入新系统的第一件事就是要建立glinux的目录结构了，关于linux的目录结构，
&lt;a href="http://www.linuxfans.org/"&gt;linuxfans&lt;/a&gt;
上面有
&lt;a href="http://www.linuxfans.org/bbs/thread-182534-1-1.html"&gt;一篇文章介绍的非常详细&lt;/a&gt;
，青蛙执行以下命令来建立一个完整的目录结构：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;pv&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;{&lt;span class="nv"&gt;bin&lt;/span&gt;,&lt;span class="nv"&gt;boot&lt;/span&gt;,&lt;span class="nv"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;opt&lt;/span&gt;,&lt;span class="nv"&gt;home&lt;/span&gt;,&lt;span class="nv"&gt;lib&lt;/span&gt;,&lt;span class="nv"&gt;mnt&lt;/span&gt;,&lt;span class="nv"&gt;opt&lt;/span&gt;}
&lt;span class="nv"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;pv&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;{&lt;span class="nv"&gt;media&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{&lt;span class="nv"&gt;floppy&lt;/span&gt;,&lt;span class="nv"&gt;cdrom&lt;/span&gt;},&lt;span class="nv"&gt;sbin&lt;/span&gt;,&lt;span class="nv"&gt;srv&lt;/span&gt;,&lt;span class="nv"&gt;var&lt;/span&gt;}
&lt;span class="nv"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;dv&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="mi"&gt;0750&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;root&lt;/span&gt;
&lt;span class="nv"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;dv&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;m&lt;/span&gt; &lt;span class="mi"&gt;1777&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;tmp&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;tmp&lt;/span&gt;
&lt;span class="nv"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;pv&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{,&lt;span class="nv"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;}{&lt;span class="nv"&gt;bin&lt;/span&gt;,&lt;span class="k"&gt;include&lt;/span&gt;,&lt;span class="nv"&gt;lib&lt;/span&gt;,&lt;span class="nv"&gt;sbin&lt;/span&gt;,&lt;span class="nv"&gt;src&lt;/span&gt;}
&lt;span class="nv"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;pv&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{,&lt;span class="nv"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;}&lt;span class="nv"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{&lt;span class="nv"&gt;doc&lt;/span&gt;,&lt;span class="nv"&gt;info&lt;/span&gt;,&lt;span class="nv"&gt;locale&lt;/span&gt;,&lt;span class="nv"&gt;man&lt;/span&gt;}
&lt;span class="nv"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;v&lt;/span&gt;  &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{,&lt;span class="nv"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;}&lt;span class="nv"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{&lt;span class="nv"&gt;misc&lt;/span&gt;,&lt;span class="nv"&gt;terminfo&lt;/span&gt;,&lt;span class="nv"&gt;zoneinfo&lt;/span&gt;}
&lt;span class="nv"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;pv&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{,&lt;span class="nv"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;}&lt;span class="nv"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;man&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;man&lt;/span&gt;{&lt;span class="mi"&gt;1&lt;/span&gt;..&lt;span class="mi"&gt;8&lt;/span&gt;}

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;dir&lt;/span&gt; &lt;span class="nv"&gt;in&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;usr&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;local&lt;/span&gt;&lt;span class="c1"&gt;; do&lt;/span&gt;
  &lt;span class="nv"&gt;ln&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;sv&lt;/span&gt; &lt;span class="nv"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{&lt;span class="nv"&gt;man&lt;/span&gt;,&lt;span class="nv"&gt;doc&lt;/span&gt;,&lt;span class="nv"&gt;info&lt;/span&gt;} &lt;span class="mh"&gt;$d&lt;/span&gt;&lt;span class="nv"&gt;ir&lt;/span&gt;
&lt;span class="nv"&gt;done&lt;/span&gt;

&lt;span class="nv"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;v&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{&lt;span class="nv"&gt;lock&lt;/span&gt;,&lt;span class="nv"&gt;log&lt;/span&gt;,&lt;span class="nv"&gt;mail&lt;/span&gt;,&lt;span class="nv"&gt;run&lt;/span&gt;,&lt;span class="nv"&gt;spool&lt;/span&gt;}
&lt;span class="nv"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;pv&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{&lt;span class="nv"&gt;opt&lt;/span&gt;,&lt;span class="nv"&gt;cache&lt;/span&gt;,&lt;span class="nv"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;{&lt;span class="nv"&gt;misc&lt;/span&gt;,&lt;span class="nv"&gt;locate&lt;/span&gt;},&lt;span class="nv"&gt;local&lt;/span&gt;}
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;然后，把/tools/目录下的一些文件链接到chroot环境对应的目录下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;ln&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sv&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bash&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;echo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;grep&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;pwd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;stty&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;
&lt;span class="n"&gt;ln&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sv&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;perl&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;
&lt;span class="n"&gt;ln&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sv&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;libgcc_s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;so&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="p"&gt;,.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;
&lt;span class="n"&gt;ln&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sv&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;libstdc&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;so&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="p"&gt;,.&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;
&lt;span class="n"&gt;ln&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sv&lt;/span&gt; &lt;span class="n"&gt;bash&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;建立一个/etc/mtab文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;touch&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mtab&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;建立/etc/passwd文件和/etc/group文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;passwd&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="ss"&gt;&amp;quot;EOF&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bash&lt;/span&gt;
&lt;span class="n"&gt;nobody&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Unprivileged&lt;/span&gt; &lt;span class="k"&gt;User&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;false&lt;/span&gt;
&lt;span class="n"&gt;EOF&lt;/span&gt;

&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;group&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="ss"&gt;&amp;quot;EOF&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;kmem&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;tty&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;tape&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;daemon&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;floppy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;disk&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;lp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;dialout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;video&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;utmp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;usb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;cdrom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;mail&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;34&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;nogroup&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;EOF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;然后重新运行一次bash，让bash不再喊“I have no name!”&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;exec&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;bash&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nv"&gt;login&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nv"&gt;h&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;接下来再建立一些要用到的log文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;touch&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;utmp&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="n"&gt;btmp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;lastlog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;wtmp&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;chgrp&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="n"&gt;utmp&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;utmp&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lastlog&lt;/span&gt;
&lt;span class="n"&gt;chmod&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="mi"&gt;664&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;utmp&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lastlog&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;到这里，glinux的目录结构基本上搞定了，下面我们就可以制作内核跟busybox了。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 16 Mar 2008 23:18:34 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-16:/2008/03/glinux-setup-build-directory/</guid><category>linux</category><category>lfs</category><category>build</category><category>directory</category><category>setup</category></item><item><title>glinux开发摘要(1)--编译环境制作</title><link>https://www.gfrog.net/2008/03/glinux-setup-compile-environment/</link><description>&lt;p&gt;在uty同学的积极鼓励下，青蛙开始了glinux下一个版本的制作
（关于glinux的历史，欢迎回顾青蛙从前的日志）。&lt;/p&gt;
&lt;p&gt;一开始，青蛙准备利用debian现成的编译环境，
但是后来突然想自己构建一个工具链比较好。
工具稳定下来，做出来的东西才比较有保障。&lt;/p&gt;
&lt;p&gt;于是，青蛙从新拾起lfs，开始第二轮lfs征程，
不过这次lfs只做三分之一，青蛙的目标就是：lfs6.3的Toolschain。&lt;/p&gt;
&lt;p&gt;具体操作过程没啥好说的，简单的step by step就好，
但是在制作过程中，遇到了几个bug
（可能也算不上bug，可能是青蛙系统的原因）。&lt;/p&gt;
&lt;p&gt;这第一个，就是在glibc-2.5.1这步，会遇到下面这个错误：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;mawk&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scripts&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gen&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sorted&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;awk&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;regular&lt;/span&gt; &lt;span class="n"&gt;expression&lt;/span&gt; &lt;span class="n"&gt;compile&lt;/span&gt; &lt;span class="n"&gt;failed&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bad&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt; &lt;span class="o"&gt;[],&lt;/span&gt; &lt;span class="o"&gt;[^]&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="o"&gt;[)&lt;/span&gt;
&lt;span class="o"&gt;/[^&lt;/span&gt;
&lt;span class="n"&gt;mawk&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scripts&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gen&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sorted&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;awk&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;syntax&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="n"&gt;or&lt;/span&gt; &lt;span class="n"&gt;near&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;mawk&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scripts&lt;/span&gt;&lt;span class="sr"&gt;/gen-sorted.awk: line 19: runaway regular expression /&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;subd&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;再往上翻还有这么一句：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;mawk&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scripts&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gen&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;awk&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;syntax&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="k"&gt;at&lt;/span&gt; &lt;span class="k"&gt;or&lt;/span&gt; &lt;span class="n"&gt;near&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;拿google一划拉，发现这个错误是因为青蛙系统上用了mawk的问题，据说换用gawk可以解决。&lt;/p&gt;
&lt;p&gt;在babble.com上面
&lt;a href="http://www.nabble.com/small-fix-for-crosstool-with-glibc-2.7-td13448350.html"&gt;有人给出了一个patch&lt;/a&gt;
，很简单，给三个地方加个“”就ok了。&lt;/p&gt;
&lt;p&gt;但是这个patch是给glibc2.7用的，在lfs6.3里带的glibc2.5.1里面没法直接用。
青蛙按图索骥，改了这个gen-sorted.awk，就没有上头那些错误了。&lt;/p&gt;
&lt;p&gt;虽说一个补丁可以解决这个问题，但是
&lt;a href="http://www.linuxquestions.org/questions/showthread.php?p=2969014#post2969014"&gt;有前辈告诉我们&lt;/a&gt;
，lfs里面的用的都是awk的脚本，如果用mawk很有可能不会有正确的结果，所以建议大家还是安装gawk的好。&lt;/p&gt;
&lt;p&gt;gawk源码
&lt;a href="http://ftp.gnu.org/pub/gnu/gawk/"&gt;在这里下载&lt;/a&gt;
，debian系的系统只需要&lt;code&gt;aptitude install gawk&lt;/code&gt;就好了。
其他发行版要注意检查&lt;code&gt;/etc/alternatives/awk&lt;/code&gt;是不是正确指向了gawk。&lt;/p&gt;
&lt;p&gt;（顺路说一句，cpu在卖力的cc的时候正好可以过来写blog，真是很不错，可以随时把过程记录下来 :p）&lt;/p&gt;
&lt;p&gt;第二个错误是在glibc2.5.1的make check过程中：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;ld&lt;/span&gt;: &lt;span class="nv"&gt;cannot&lt;/span&gt; &lt;span class="nv"&gt;find&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;lstdc&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;
&lt;span class="nv"&gt;collect2&lt;/span&gt;: &lt;span class="nv"&gt;ld&lt;/span&gt; &lt;span class="nv"&gt;returned&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;exit&lt;/span&gt; &lt;span class="nv"&gt;status&lt;/span&gt;
&lt;span class="nv"&gt;make&lt;/span&gt;[&lt;span class="mi"&gt;2&lt;/span&gt;]: &lt;span class="o"&gt;***&lt;/span&gt; [&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;lfs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;sources&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;glibc&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;build&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;nptl&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;tst&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;cancel24&lt;/span&gt;] &lt;span class="nv"&gt;Error&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="nv"&gt;make&lt;/span&gt;[&lt;span class="mi"&gt;2&lt;/span&gt;]: &lt;span class="nv"&gt;Target&lt;/span&gt; `&lt;span class="nv"&gt;tests&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="s"&gt; not remade because of errors.&lt;/span&gt;
&lt;span class="nv"&gt;make&lt;/span&gt;[&lt;span class="mi"&gt;1&lt;/span&gt;]: &lt;span class="o"&gt;***&lt;/span&gt; [&lt;span class="nv"&gt;nptl&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;tests&lt;/span&gt;] &lt;span class="nv"&gt;Error&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="nv"&gt;make&lt;/span&gt;[&lt;span class="mi"&gt;1&lt;/span&gt;]: &lt;span class="nv"&gt;Target&lt;/span&gt; `&lt;span class="nv"&gt;check&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="s"&gt; not remade because of errors.&lt;/span&gt;
&lt;span class="nv"&gt;make&lt;/span&gt;: &lt;span class="o"&gt;***&lt;/span&gt; [&lt;span class="nv"&gt;check&lt;/span&gt;] &lt;span class="nv"&gt;Error&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;青蛙没有找到这个错误的原因，大概就像lfs文档里说的，
第一次编译lfs跟宿主系统依赖关系太大的原因造成的。&lt;/p&gt;
&lt;p&gt;第三个错误发生在bash3.2的make过程中，
它会提示没有找到yacc这个程序，解决方法很简单，通过apt装上就好了。&lt;/p&gt;
&lt;p&gt;到这里，工具链的制作就完成了，下一步就可以制作系统的目录结构并编译内核了。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 16 Mar 2008 19:16:47 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-16:/2008/03/glinux-setup-compile-environment/</guid><category>linux</category><category>lfs</category><category>glibc</category><category>build</category><category>toolchain</category></item><item><title>网络协议学习笔记（1） -- DNS基础知识</title><link>https://www.gfrog.net/2008/03/network-protocol-learning-notes-1-basic-knowledge-of-dns/</link><description>&lt;p&gt;---下列 RFC 包含用来设计和实施 DNS 服务器和客户端服务的规范：&lt;/p&gt;
&lt;p&gt;RFC     标题&lt;/p&gt;
&lt;p&gt;1034    域名 - 概念和工具&lt;/p&gt;
&lt;p&gt;1035    域名 - 实现和规范&lt;/p&gt;
&lt;p&gt;1123    Internet 主机 - 应用和支持的要求&lt;/p&gt;
&lt;p&gt;1886    支持 IP 版本 6 的 DNS 扩展名&lt;/p&gt;
&lt;p&gt;1995    DNS 中的增量区域传输&lt;/p&gt;
&lt;p&gt;1996    提示通知区域更改的机制 (DNS NOTIFY)&lt;/p&gt;
&lt;p&gt;2136    域名系统中的动态更新 (DNS UPDATE)&lt;/p&gt;
&lt;p&gt;2181    对 DNS 规范的说明&lt;/p&gt;
&lt;p&gt;2308    DNS 查询的负缓存 (DNS NCACHE)&lt;/p&gt;
&lt;p&gt;2535    域名系统安全扩展 (DNSSEC)&lt;/p&gt;
&lt;p&gt;2671    DNS 的扩展机制 (EDNS0)&lt;/p&gt;
&lt;p&gt;2782    指定服务位置的 DNS RR (DNS SRV)&lt;/p&gt;
&lt;p&gt;2930    DNS 的密钥建立 (TKEY RR)&lt;/p&gt;
&lt;p&gt;3645    DNS (GSS-TSIG) 密钥事务身分验证的通用安全服务算法&lt;/p&gt;
&lt;p&gt;3646    IPv6 (DHCPv6) 动态主机配置协议的 DNS 配置选项&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 09 Mar 2008 22:42:23 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-09:/2008/03/network-protocol-learning-notes-1-basic-knowledge-of-dns/</guid><category>network</category><category>rfc</category><category>dns</category><category>protocol</category><category>note</category></item><item><title>历经坎坷，安装VMWARE6</title><link>https://www.gfrog.net/2008/03/vmware6-installation-in-2-6-24-kernel/</link><description>&lt;p&gt;青蛙被vmware郁闷了整整一晚上，遇到问题无数，
google了一大把关键字，看了一大叠邮件列表，
终于把它在2.6.24内核上给装上了。&lt;/p&gt;
&lt;p&gt;赶紧写下来，免得以后遇到类似的问题再抓瞎。&lt;/p&gt;
&lt;p&gt;（请注意青蛙给出命令的提示符，$表示不要求root权限，#表示必须用root权限执行）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;到
&lt;a href="http://www.vmware.com/download/ws/"&gt;http://www.vmware.com/download/ws/&lt;/a&gt;
这里vmware6的安装包下载回来，总共有200多M。&lt;/li&gt;
&lt;li&gt;下载安装包的同时，还需要准备一些包：
&lt;code&gt;# aptitude install linux-source gcc-4.1 g++-4.1 libncurses5-dev&lt;/code&gt;
这些是linux源码包，还有gcc跟g++，待会编译模块会用到。&lt;/li&gt;
&lt;li&gt;解压vmware6的安装文件
&lt;code&gt;$ tar zxvf VMware-workstation-6.0.2-59824.i386.tar.gz&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;# cd  vmware-distrib &amp;amp;&amp;amp; ./vmware-install.pl&lt;/code&gt;。一路回车，到提示是否执行&lt;code&gt;/usr/bin/vmware-config.pl&lt;/code&gt;这步时选择no。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;# cd /usr/src &amp;amp;&amp;amp; tar jxvf linux-source-2.6.24.tar.bz2 &amp;amp;&amp;amp; ln -s linux-source-2.6.24 linux&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;# cd linux &amp;amp;&amp;amp; make menuconfig&lt;/code&gt;，在
    General setup -&amp;gt;  Local version - append to kernel release
    选项中填入正在运行内核的子版本号（例如，
    青蛙的内核版本为2.6.24-1-686，那么就在这里填入-1-686，
    在这里青蛙困扰了好久，这回终于知道怎么写这个版本号了）,
    然后保存退出，执行&lt;code&gt;# make prepare&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;在
    &lt;a href="http://vmkernelnewbies.googlegroups.com/web/vmware-any-any-update-116.tgz"&gt;这里&lt;/a&gt;
    （
    &lt;a href="http://blog.creonfx.com/temp/vmware-any-any-update-116.tgz"&gt;这里&lt;/a&gt;
    和
    &lt;a href="http://linuxtoy.org/files/vmware-any-any-update-116.tgz"&gt;这里&lt;/a&gt;
    也分别有下载）下载vmware-any-any-update-116.tgz这个补丁。
    并解压： &lt;code&gt;$ tar zxvf vmware-any-any-update-116.tgz&lt;/code&gt;，然后&lt;code&gt;# cd vmware-any-any-update116 &amp;amp;&amp;amp;./runme.pl&lt;/code&gt;
    ，当询问是否运行vmware-config.pl的时候，选择yes。
    （如果以上步骤执行正确，到这里应该能正确的编译vmware需要的各种模块了，
    如果出错，请google错误信息，一般都有结果的。）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;update:2008-03-18.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;今天青蛙再次在2.6.24内核上面安装vmware，编译模块时又出现了下面的错误信息：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;scripts&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;genksyms&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;genksyms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="err"&gt;没有那个文件或目录&lt;/span&gt;
&lt;span class="n"&gt;make&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="o"&gt;***&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vmware&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;config2&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vmmon&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;only&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="err"&gt;错误&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;make&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="o"&gt;***&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;_module_&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vmware&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;config2&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vmmon&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;only&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="err"&gt;错误&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="n"&gt;make&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;Leaving&lt;/span&gt; &lt;span class="n"&gt;directory&lt;/span&gt; &lt;span class="o"&gt;`/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;source&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;
&lt;span class="s1"&gt;make: *** [vmmon.ko] 错误 2&lt;/span&gt;
&lt;span class="s1"&gt;make: Leaving directory `/tmp/vmware-config2/vmmon-only&amp;#39;&lt;/span&gt;
&lt;span class="n"&gt;Unable&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;vmmon&lt;/span&gt; &lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;青蛙在源码目录执行了一下#make all，把genksyms这个模块编译一下就好了，真是一个很诡异的问题。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;接下来就是配置虚拟网卡，按照自己的爱好配置就可以了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这一切都完成以后，会有一长串的许可协议冒出来，到最后输入yes就行了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;到这里，vmware就算完全安装完毕了，在gnome的菜单里找到vmware workstation运行之，然后输入序列号，就可以安装虚拟系统了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;至于序列号，google上是，一抓一大把，青蛙就不提供了。 祝大家玩的愉快。 :smile:&lt;/p&gt;
&lt;p&gt;文中提到的vmware-any-any-update-116.tgz补丁的下载：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.divshare.com/download/3938296-131"&gt;vmware-any-any-update-116.tgz (vmware-any-any-update-116.tgz)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;参考文档：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.creonfx.com/linux/how-to-install-vmware-player-workstation-on-2624-kernel"&gt;http://blog.creonfx.com/linux/how-to-install-vmware-player-workstation-on-2624-kernel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://linuxtoy.org/archives/vmware-and-kernel-2624.html"&gt;http://linuxtoy.org/archives/vmware-and-kernel-2624.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://linux.bloghome.cn/posts/159172.html"&gt;http://linux.bloghome.cn/posts/159172.html &lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 04 Mar 2008 00:43:44 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-04:/2008/03/vmware6-installation-in-2-6-24-kernel/</guid><category>linux</category><category>kernel</category><category>source</category><category>vmware</category><category>installation</category></item><item><title>修改系统时间引起sudo罢工的解决办法</title><link>https://www.gfrog.net/2008/03/solution-of-system-time-changes-cause-sudo-error/</link><description>&lt;p&gt;青蛙今天使用sudo之后，把系统时间往回调了几小时，
然后sudo就罢工了，提示下面的信息：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;sudo: timestamp too far in the future&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;改时间竟然还能改出毛病，这个sudo真是太fz了。
青蛙拿着这个出错信息一google，发现了俩解决方法。&lt;/p&gt;
&lt;p&gt;第一个，不黄很暴力，用root权限删除/var/run/sudo目录。&lt;/p&gt;
&lt;p&gt;第二个，执行sudo -k，这个命令是用来清除sudo的时间戳，
下次执行sudo的时候它会跟你重新要密码。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 02 Mar 2008 22:38:04 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-02:/2008/03/solution-of-system-time-changes-cause-sudo-error/</guid><category>linux</category><category>sudo</category><category>error</category><category>system</category><category>time</category></item><item><title>pidgin中群名称变为NULL的解决办法</title><link>https://www.gfrog.net/2008/03/solution-of-qq-null-group-name-in-pidgin/</link><description>&lt;p&gt;前阵子pidgin从2.x版本升级到了2.3.1以后，
青蛙的QQ的群名称就全部变成了NULL，
然后所有群的消息都跑到了一起，看的我眼花缭乱。
于是青蛙就眼巴巴的等着pidgin的升级。&lt;/p&gt;
&lt;p&gt;这不，它终于升级到了2.4.0了，结果这个问题还是没改！&lt;/p&gt;
&lt;p&gt;看来老外是靠不住的，只能靠自己了。
青蛙拿起google一划拉，还真找到点东西。&lt;/p&gt;
&lt;p&gt;这不，
&lt;a href="http://www.linuxsir.org/bbs/thread323211.html"&gt;Linuxsir上的linuxahah同学说&lt;/a&gt;
，这是因为死TX修改了协议导致的，并且放出了一个补丁。&lt;/p&gt;
&lt;p&gt;但是这个补丁需要打到pidgin的源码里面重新编译，鉴于青蛙前N次编译pidgin的结果都是失败而告终，这个方法还是放弃了。&lt;/p&gt;
&lt;p&gt;于是青蛙继续google，发现
&lt;a href="http://www.linuxsir.org/bbs/post1798882-10.html"&gt;Linuxsir的marklf大牛说&lt;/a&gt;
，这个问题还是因为pidgin中的libqq.so引起的，
只要用以前版本的libqq.so替换现在的版本就可以了。&lt;/p&gt;
&lt;p&gt;这个方法很好很强大，只要找到2.x版本的libqq.so文件就，然后把它复制到/usr/lib/purple-2/就可以了。&lt;/p&gt;
&lt;p&gt;困扰了青蛙好久的问题解决了，终于可以开心的聊QQ了 :D&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;更新：&lt;/strong&gt; [2008-03-02 11:33] 放上日志里提到的补丁文件和libqq.so。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.divshare.com/download/3927060-345"&gt;qq patch for pidgin 2.3.1 (pidgin-2_3_1-qq_tar.bz2)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.divshare.com/download/3927059-f35"&gt;libqq.so in pidgin 2.2.2 (libqq-2_2_2.zip)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;补丁文件需要解压到pidgin的源码目录下，然后用&lt;code&gt;patch -p1 &amp;lt; xxx.patch&lt;/code&gt;来打源码补丁。大家各取所需吧。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 02 Mar 2008 10:21:58 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-02:/2008/03/solution-of-qq-null-group-name-in-pidgin/</guid><category>linux</category><category>desktop</category><category>qq</category><category>pidgin</category><category>patch</category></item><item><title>陷入迷茫</title><link>https://www.gfrog.net/2008/03/my-mind-deep-into-confusion/</link><description>&lt;p&gt;过了一个年，青蛙又长了一岁。&lt;/p&gt;
&lt;p&gt;但是年过完了，青蛙却处于一种混沌状态，不知道自己应该干点什么，好不容易想做点事情，又没法专心。&lt;/p&gt;
&lt;p&gt;想更新blog想了很久，找到几个有趣的东西想写，但是就是没法静下心来写一篇日志。&lt;/p&gt;
&lt;p&gt;难道是一个假期把心放散了？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不能保持这种状况，要静下心，踏踏实实做点事情了！&lt;/strong&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 01 Mar 2008 21:53:16 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-03-01:/2008/03/my-mind-deep-into-confusion/</guid></item><item><title>年关已过，正式开始工作</title><link>https://www.gfrog.net/2008/02/year-has-passed-and-formally-work-begin/</link><description>&lt;p&gt;终于过完年了。&lt;/p&gt;
&lt;p&gt;在家闲了10多天，都快闲出毛病了。&lt;/p&gt;
&lt;p&gt;明天，开始上班。&lt;/p&gt;
&lt;p&gt;新的一年，新的起点。加油工作！&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 16 Feb 2008 10:36:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-02-16:/2008/02/year-has-passed-and-formally-work-begin/</guid></item><item><title>鼠年大吉</title><link>https://www.gfrog.net/2008/02/happy-spring-festival-2008/</link><description>&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117e3fa660117ef53d0d60945"&gt;&lt;img alt="medium" src="http://pic.yupoo.com/gfrog/3893350d45c7/k6d0lyxs.jpg"&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 06 Feb 2008 23:56:11 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-02-06:/2008/02/happy-spring-festival-2008/</guid></item><item><title>在线拼音输入法</title><link>https://www.gfrog.net/2008/02/online-pinyin-input-method/</link><description>&lt;p&gt;&lt;img alt="1" src="http://dict.cn/img/logo1.gif"&gt;&lt;/p&gt;
&lt;p&gt;dict.cn的在线拼音输入法，实在是居家旅行，杀人越货，聊天泡妞必备。&lt;/p&gt;
&lt;p&gt;要使用，请猛击  &lt;a href="http://dict.cn/ime/"&gt;http://dict.cn/ime/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117d097b70117d5bf4d5e5fce"&gt;&lt;img alt="online-ime" src="http://pic.yupoo.com/gfrog/85151506b967/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 02 Feb 2008 00:09:26 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-02-02:/2008/02/online-pinyin-input-method/</guid></item><item><title>KDE：跨越Linux、Windows和Mac OS X的桌面环境</title><link>https://www.gfrog.net/2008/01/kde-beyond-linux-windows-and-mac-os-x-desktop-environment/</link><description>&lt;p&gt;&lt;img alt="1" src="http://pic.yupoo.com/gfrog/855075025a63/odu22jqq.jpg"&gt;&lt;/p&gt;
&lt;p&gt;KDE，这个Linux/Unix下华丽丽的桌面环境，正在走向Windows和Mac OS X。
一些核心的KDE程序，还有其他重要的应用软件，例如KOffice和Amarok，已经开始向这两个平台移植。&lt;/p&gt;
&lt;p&gt;这些成就除了因为KDE4的新特性，例如Phonon和Solid，还因为
&lt;a href="http://trolltech.com/products/qt/licenses/licensing/opensource"&gt;Trolltech在Qt4的windows版本中也采用了GPL许可&lt;/a&gt;
。大家都知道，Qt使用双许可证，对于开源软件的开发可以使用GPL许可证，对于专有软件就需要用商业许可来授权。
但是，在Qt以前的版本中，只有Mac OS X和Linux/X11版本才有GPL许可。
这次伴随着Qt4的发布，windows版本的Qt也终于可以使用GPL许可证了。这个变化最终打开了开源的KDE应用程序通向windows的大门。&lt;/p&gt;
&lt;p&gt;当然，KDE开发社区使用
&lt;a href="http://www.cmake.org/HTML/Index.html"&gt;CMake&lt;/a&gt;
来替代Autotools也是使KDE走向这三大系统的一个重要原因。&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;Windows下的KDE&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;现在（其实是从1月22号起），
&lt;a href="http://windows.kde.org/news.php#itemKDEmirrorsavailableandnewsnapshotrelease"&gt;从KDE的镜像站点&lt;/a&gt;
中就能下载到二进制的Windows版本的KDE环境了。从
&lt;a href="http://download.cegit.de/kde-windows/installer/kdewin-installer-gui-latest.exe"&gt;这里&lt;/a&gt;
可以下载到一个安装程序，用户可以通过这个小程序选择自己需要的KDE包。
这个小程序可以自动解决包依赖问题，下载并安装需要的包。&lt;/p&gt;
&lt;p&gt;现在windows版本的KDE看起来更像是mingw的一个超集，它里面包含了很多mingw的应用程序，
例如gcc、gdb、tar、patch等等。
再加上KDE自身的应用程序，就构成了现在的windows版KDE。&lt;/p&gt;
&lt;p&gt;青蛙在自己的机器上安装了一下，简单介绍一下安装过程。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117c46cc20117c489d7d20583"&gt;&lt;img alt="kdewin-1" src="http://pic.yupoo.com/gfrog/03228502519b/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117c46cc20117c489ee170585"&gt;&lt;img alt="kdewin-2" src="http://pic.yupoo.com/gfrog/6026550251a0/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117c46c760117c489f3cc055c"&gt;&lt;img alt="kdewin-3" src="http://pic.yupoo.com/gfrog/8888050251a2/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117c46c190117c48a16be038d"&gt;&lt;img alt="kdewin-4" src="http://pic.yupoo.com/gfrog/4605450251a4/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117c46c2a0117c48a07d60542"&gt;&lt;img alt="kdewin-5" src="http://pic.yupoo.com/gfrog/8885050251a7/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117c46cc20117c48a2044058a"&gt;&lt;img alt="kdewin-6" src="http://pic.yupoo.com/gfrog/3916650251ae/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117c46cc20117c48a36c9058c"&gt;&lt;img alt="kdewin-7" src="http://pic.yupoo.com/gfrog/7352550251b3/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117c46bd70117c489e353027e"&gt;&lt;img alt="kdewin-8" src="http://pic.yupoo.com/gfrog/237275025197/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117c46b110117c4b0f7691015"&gt;&lt;img alt="kdewin-9" src="http://pic.yupoo.com/gfrog/752965025b96/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;结果装上以后所有的程序都没法执行，提示缺少libkdecore.dll文件。
把所有的包装上也没有这个文件，看来这应该是个bug了，
难道是跟青蛙只选择了MinGW的文件有关？&lt;/p&gt;
&lt;p&gt;这样进一步的测试也就没法进行了。&lt;/p&gt;
&lt;p&gt;只好等待它的新版本了。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 26 Jan 2008 16:35:02 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-26:/2008/01/kde-beyond-linux-windows-and-mac-os-x-desktop-environment/</guid><category>linux</category><category>desktop</category><category>kde</category></item><item><title>Linux kernel 2.6.24 发布</title><link>https://www.gfrog.net/2008/01/linux-kernel-2-6-24-released/</link><description>&lt;p&gt;嗯，两句话。&lt;/p&gt;
&lt;p&gt;第一，Linux内核2.6系列最新稳定版2.6.24正式发布。&lt;/p&gt;
&lt;p&gt;第二，不知道在
&lt;a href="http://kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.24"&gt;这份5.7M的Changelog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;里面，包不包含修复vmware6.0无法安装这个错误的记录。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://kernel.org/"&gt; &lt;/a&gt;&lt;a href="http://kernel.org/"&gt;&lt;img alt="1" src="http://kernel.org/images/korg10yr.gif"&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 26 Jan 2008 13:51:28 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-26:/2008/01/linux-kernel-2-6-24-released/</guid><category>linux</category><category>kernel</category><category>release</category></item><item><title>吉林大学校园网的那些事</title><link>https://www.gfrog.net/2008/01/history-of-network-in-jlu/</link><description>&lt;p&gt;今天倒腾自己的blog，发现还有这么一篇没写完的东东扔在那里。这篇东西应该是青蛙大四的时候写下的，但是只写到第三部分，而且里面有些说法应该是不对的。今天给它补充完整。希望看到的同学多给青蛙挑挑错，在这篇文章的基础上整理出一个吉大网络近代史。 好了，下面是正文。 嗯,现在吉大的校园网全面抽风中,校内的服务基本上是崩溃了.趁这个时间说说我所经历的校园网吧.&lt;/p&gt;
&lt;p&gt;我计划将我所见到的吉大校园网划分为这么几个时代:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;教育网的黄金时代&lt;/li&gt;
&lt;li&gt;电信网时代&lt;/li&gt;
&lt;li&gt;BT时代&lt;/li&gt;
&lt;li&gt;时常抽风时代&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由于青蛙的时空观错乱,上面有些时代的划分可能有错误,期待有人能给我补上具体时间.&lt;/p&gt;
&lt;p&gt;首先还是说一下吉大校园网的结构.&lt;/p&gt;
&lt;p&gt;因为吉大有很多个校区,校区之间就用双路光纤互连,每个校区用7609作为核心,使用光纤向下连接各个区域的4006,然后4006再用光纤连接区域里面的各个楼,这就是所谓的光纤到楼了.然后各个楼的主交换机基本上都是3500系列,再向下连接就是用双绞线了,先是千兆线路连接到楼内各个机房,然后机房内交换机(大概一个机房5台左右)用级联的方式相连,这些机房内的交换机再向下就是用百兆线连接用户的电脑了.这个结构自从我上学开始,基本上没有变动,有的也是核心层的小变化.&lt;/p&gt;
&lt;p&gt;（这个拓扑到后来自然是改了的，据说取消了4006这一层，路由全部到核心的7609上来做了。但是具体情况，青蛙就不知道了，还需要内部人士来确认。）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.教育网的黄金时代&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个时代,教育网应该是走在时代的前端,因为那个时候ADSL跟小区宽带远远没有现在普及,速度也跟现在差的很远,于是我竟然以能有这么好的教育网而骄傲.&lt;/p&gt;
&lt;p&gt;那个时候还没有像现在这么多的p2p文件交换方式,多的也就是ftp或者http站点,校内有相当多的ftp联盟,视频,动画,游戏这些都有专门的联盟来作.于是就成天挂在某个ftp上下些电影啦,游戏啦.这些ftp大多都限速,每ip在100k上下.偶那时候还是忍受着一个8G的小硬盘,经常是下来某个东西,赶紧看完或者玩完,然后接着去下.后来这些ftp联盟大多都销声匿迹了,据我知道至今仅存了功夫茶联盟的G1还在孜孜不倦的为大家贡献着电影.&lt;/p&gt;
&lt;p&gt;当时教育网东北到北京的出口ms还是2条155M线路,但是去公共网上下东西还是飞快的,还记得当时最原意做的事情就是去PCHOME测试连接速度,通常都能达到1M左右.一次去长春的某个站点下载一个游戏,将近2G的游戏,不到半个小时就下载回来.这个速度还是相当赞的.&lt;/p&gt;
&lt;p&gt;后来,&lt;strike&gt;教育网内的学校多了,吉大的学生多了,入网电脑也多了,教育网东北出口的瓶颈就显现了出来,经常是打开一个公共网的网页要好半天.据说那时候东北的学校一直在跟教育网要出口带宽,结果先是加到4条155M,然后再是增加一条1G线路,但是都很快的被占满.就有了吉大校园网的下一个时代.&lt;/strike&gt;趁半夜去NIC版查了一下,换电信网主要是于是由于cernet对吉大限速引起:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;长春到沈阳仅有两条155M线路，其中多数带宽被吉林大学占用，从而引起了其它高校的不满，cernet开始对吉林大学限速，限定在180M，导致吉林大学出口带宽严重不足，引起师生的不满。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;2.电信时代&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;那时候网络中心跟学校申请,拿出据说是1千万RMB,跟中国电信租用了1kMB的带宽.于是吉大校园网的黄金时代来临了.&lt;/p&gt;
&lt;p&gt;网络中心在核心加了一个路由,去教育网的连接就走教育网,去公网的就从电信出口NAT转发,这样两面的速度都相当理想.应该是这个时代后期,教育网东北出口加到了2.5G.&lt;/p&gt;
&lt;p&gt;由于有直接的公网出口,所以网络游戏开始大面积风行,学校附近的网吧开始萧条.&lt;/p&gt;
&lt;p&gt;那时候中国电信刚刚进入东北市场,网络铺设还不完善,经常出现某某地方的光纤断掉的情况,也没有备份线路,就得换回教育网用一阵子.那时候拿感觉,真是爬行.&lt;/p&gt;
&lt;p&gt;当然换了电信线路也不是所有人都高兴的.因为在出口有NAT,所以公网上有很多ftp站点都没法登录了.特别是那些在外面有自己空间的人,一年半载的没法ftp登录自己的空间.于是这些人就经常的去NIC版骂街.&lt;/p&gt;
&lt;p&gt;再后来,网络中心发现中国电信没有按合同开足1G的带宽,而是做了限速.先限定在360M内,后提高至400M.于是网络中心不干了,停止了跟NIC的合作,全部换回了教育网.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.BT时代&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;BT是哪年开始流行的我就不清楚了,应该是学校还用电信出口的时候就有了.BT在吉大开始流传开来都是5Q的功劳,一开始还没有人管BT,后来网络中心发现电信出口内大部分的流量都被bt占用了,于是开始想尽办法封堵BT.&lt;/p&gt;
&lt;p&gt;再后来,学校内出现了几个BT站点.大家可以在校园网里用bt了.校园网的带宽还是足够的,于是bt开始在吉大广泛的流传开来.&lt;/p&gt;
&lt;p&gt;最开始的应该就是微盟了，这个BT站是由微电脑爱好者联盟（记不大清楚了，似乎是这个名字）发起并维护的。开始的时候微盟相当火爆，再加上网络中心的官方支持，发展的十分迅速，至少周围的同学都知道由这么一个微盟。后来，微盟内部出现了问题（具体问题青蛙就不知道了），开始衰落。最后，终于关站了事。虽然后来有一段时间又开了一段时间，但是那时候吉大燕子盛行，最后也只是不了了之。&lt;/p&gt;
&lt;p&gt;这个吉大燕子，只要是那段时间（这段时间估计会延续到现在）的吉大学生，几乎没有人不知道了。据说燕子最开始就是从微盟里面分出来的，由于有商业支持，所以发展的相当快。一开始，燕子就抱定了做商业站点的想法，一切向赚钱发展，页首页脚都是广告，外带中间插播。对于贫瘠的校园娱乐生活，燕子的贡献是非常大的。青蛙周围的同学，每天自习回寝室，第一件事就是上燕子上看看。甚至，有些人毕业了，要找些视频或者游戏之类，还会去燕子。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4.时常抽风时代&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;（青蛙忘记当初为啥准备写这么一段，因为抽风是始终贯穿吉大校园网历史的，所以这个时代有起点，但是不会有终点。）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5.补充&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;青蛙毕竟离开学校久了，而且大四其间，电脑运回家，没有继续体验吉大网络的机会。按照吉大网络迅猛的发展速度，这其间又产生了不少的时代。所以，青蛙希望各位同学能帮青蛙补充上这段空白 :D 。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 21 Jan 2008 23:27:41 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-21:/2008/01/history-of-network-in-jlu/</guid></item><item><title>Debian里的配置文件：网卡配置/etc/network/interfaces（1）</title><link>https://www.gfrog.net/2008/01/config-file-in-debian-interfaces-1/</link><description>&lt;p&gt;&lt;em&gt;青蛙准备写一个系列文章，介绍一些Debian/Ubuntu里面常用的配置文件。
当然，Linux系统中的配置文件多如牛毛，青蛙见过配过的也只是寥寥几个。
不过，青蛙会把配置过的配置文件尽量详细的介绍一下，
一是方便自己以后查阅，二来也是为广大Debianer做贡献了。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;下面开始正文。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;话说Debian系的网卡配置跟Redhat系很不一样，
Redhat是放在/etc/sysconfig/network-scripts目录下面的一大堆文件里面，
要修改？你一个一个文件来过吧。&lt;/p&gt;
&lt;p&gt;Debian系的则是存在/etc/network/interfaces文件里面，
无论有多少块网卡，统统扔在这个文件里。下面就来看一下这个文件的内容。&lt;/p&gt;
&lt;p&gt;首先，一个基本的配置大概是下面这个样子：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;lo&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;lo&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="n"&gt;loopback&lt;/span&gt;

&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="k"&gt;primary&lt;/span&gt; &lt;span class="n"&gt;network&lt;/span&gt; &lt;span class="n"&gt;interface&lt;/span&gt;
&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt;
     &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;
     &lt;span class="n"&gt;network&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
     &lt;span class="n"&gt;netmask&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
     &lt;span class="n"&gt;broadcast&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;
     &lt;span class="n"&gt;gateway&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;上面的配置中，&lt;/p&gt;
&lt;p&gt;第1行跟第5行说明lo接口跟eth0接口会在系统启动时被自动配置；&lt;/p&gt;
&lt;p&gt;第2行将lo接口设置为一个本地回环（loopback）地址；&lt;/p&gt;
&lt;p&gt;第6行指出eth0接口具有一个静态的（static）IP配置；&lt;/p&gt;
&lt;p&gt;第7行-第11行分别设置eth0接口的ip、网络号、掩码、广播地址和网关。&lt;/p&gt;
&lt;p&gt;再来看一个更复杂点的：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt;
    &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;
    &lt;span class="n"&gt;network&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;netmask&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;
    &lt;span class="n"&gt;broadcast&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt; &lt;span class="k"&gt;add&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;net&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt; &lt;span class="n"&gt;netmask&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt; &lt;span class="n"&gt;gw&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt; &lt;span class="k"&gt;add&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="n"&gt;gw&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;
    &lt;span class="n"&gt;down&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt; &lt;span class="n"&gt;del&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="n"&gt;gw&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;
    &lt;span class="n"&gt;down&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt; &lt;span class="n"&gt;del&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;net&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt; &lt;span class="n"&gt;netmask&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt; &lt;span class="n"&gt;gw&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这次，有了一个复杂一些的掩码，和一个比较奇怪的广播地址。
还有就是增加的接口启用、禁用时的路由设置；&lt;/p&gt;
&lt;p&gt;第7行和8行配置的左右是在接口启用的时候，添加一条静态路由和一个缺省路由；&lt;/p&gt;
&lt;p&gt;第9行和10行会在接口禁用的时候，删掉这两条路由配置。&lt;/p&gt;
&lt;p&gt;至于配置路由的写法，仔细看，它就是route命令嘛。&lt;/p&gt;
&lt;p&gt;继续，下面是一个物理网卡上多个接口的配置方法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt;
    &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;
    &lt;span class="n"&gt;network&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;netmask&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;broadcast&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;
    &lt;span class="n"&gt;gateway&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt;
    &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;
    &lt;span class="n"&gt;network&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;netmask&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;8行到11行在eth0上配置了另外一个地址，
这种配置方法在配置一块网卡多个地址的时候很常见：有几个地址就配置几个接口。
冒号后面的数字可以随便写的，只要几个配置的名字不重复就可以。&lt;/p&gt;
&lt;p&gt;下面是pre-up和post-down命令时间。
这是一组命令（pre-up、up、post-up、pre-down、down、post-down），分别定义在对应的时刻需要执行的命令。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="n"&gt;dhcp&lt;/span&gt;
    &lt;span class="n"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;local&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ok&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;第3行会在激活eth0之前检查/etc/network/local-network-ok文件是否存在，如果不存在，则不会激活eth0。&lt;/p&gt;
&lt;p&gt;再更进一步的例子：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;eth1&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt;
    &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="n"&gt;netmask&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;check&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;mac&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;44&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;55&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;66&lt;/span&gt;
    &lt;span class="n"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sbin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;enable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;masq&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;eth1&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="n"&gt;dhcp&lt;/span&gt;
    &lt;span class="n"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;check&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;mac&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt; &lt;span class="n"&gt;eth1&lt;/span&gt; &lt;span class="n"&gt;AA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;BB&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;CC&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;DD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;EE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FF&lt;/span&gt;
    &lt;span class="n"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sbin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;firewall&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;第5行和第8行中，check-mac-address.sh放在/usr/share/doc/ifupdown/examples/目录中，
使用的时候需要给它加上可执行权限。
这两行命令会检测两块网卡的MAC地址是否为11:22:33:44:55:66和AA:BB:CC:DD:EE:FF，如果正确，则启用网卡。
如果MAC地址错误，就不会启用这两块网卡。&lt;/p&gt;
&lt;p&gt;第6行和第9行是假定在这两块网卡上分别执行的命令，你可以把它们替换成你想要的任何玩意 ：）&lt;/p&gt;
&lt;p&gt;手册上说，这种方法主要是用来检测两块网卡的MAC地址交换（If their MAC addresses get swapped），
其实就是两块网卡名互换了，这种情况在debian系统上再常见不过了， 主要是因为内核识别网卡的顺序发生了变化。
（&lt;strong&gt;更新： 2013-05-19 自从有了udev，这种情况应该比较少发生了。&lt;/strong&gt;）&lt;/p&gt;
&lt;p&gt;这个问题可以用下面的这种方法来避免。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;eth1&lt;/span&gt;
&lt;span class="n"&gt;mapping&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;eth1&lt;/span&gt;
    &lt;span class="n"&gt;script&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;mac&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt;
    &lt;span class="k"&gt;map&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;44&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;55&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;66&lt;/span&gt; &lt;span class="n"&gt;lan&lt;/span&gt;
    &lt;span class="k"&gt;map&lt;/span&gt; &lt;span class="n"&gt;AA&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;BB&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;CC&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;DD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;EE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;FF&lt;/span&gt; &lt;span class="n"&gt;internet&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;lan&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt;
    &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="n"&gt;netmask&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sbin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;enable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;masq&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;IFACE&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;internet&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="n"&gt;dhcp&lt;/span&gt;
    &lt;span class="n"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sbin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;firewall&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;IFACE&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;第3行中的get-mac-address.sh也在/usr/share/doc/ifupdown/examples/目录里，
也同样要加可执行权限。
这个脚本的作用，就是获得每块网卡的MAC地址。&lt;/p&gt;
&lt;p&gt;这段配置首先配置了两个逻辑接口（这个名词的定义请参见[1]）lan和internet，
然后根据网卡的MAC地址，将逻辑接口映射（mapped）到物理接口上去。&lt;/p&gt;
&lt;p&gt;再来看下面这段配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="n"&gt;manual&lt;/span&gt;
    &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="n"&gt;ifconfig&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;IFACE&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt;
    &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;myconfigscript&lt;/span&gt;
    &lt;span class="n"&gt;down&lt;/span&gt; &lt;span class="n"&gt;ifconfig&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;IFACE&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这段配置只是启用一个网卡，但是ifupdown不对这个网卡设置任何ip，而是由外部程序来设置ip。&lt;/p&gt;
&lt;p&gt;最后一段配置，这段配置启用了网卡的混杂模式，用来当监听接口。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;auto&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt;
&lt;span class="n"&gt;iface&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;inet&lt;/span&gt; &lt;span class="n"&gt;manual&lt;/span&gt;
    &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="n"&gt;ifconfig&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;IFACE&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt;
    &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="n"&gt;ip&lt;/span&gt; &lt;span class="n"&gt;link&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;IFACE&lt;/span&gt; &lt;span class="n"&gt;promisc&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt;
    &lt;span class="n"&gt;down&lt;/span&gt; &lt;span class="n"&gt;ip&lt;/span&gt; &lt;span class="n"&gt;link&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;IFACE&lt;/span&gt; &lt;span class="n"&gt;promisc&lt;/span&gt; &lt;span class="k"&gt;off&lt;/span&gt;
    &lt;span class="n"&gt;down&lt;/span&gt; &lt;span class="n"&gt;ifconfig&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;IFACE&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;好了，interfaces中对于以太网卡的配置基本上介绍完了。
下一篇，青蛙打算介绍interfaces中更进一步的配置，例如ppp、vpn和无线网络等等，敬请期待 :p&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;更新： 2013-05-19&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个系列没有继续下去确实很可惜。
不过5年过去了，Linux系统的网络配置发生了巨大的变化。
所以，重新再写一个关于Linux的系统配置的文章对于SysAdmin
来说还是有意义的。那么，就让青蛙找时间继续吧。&lt;/p&gt;
&lt;p&gt;Reference:&lt;/p&gt;
&lt;p&gt;[1] &lt;a href="http://www.debian.org/doc/manuals/reference/ch-gateway.zh-cn.html#s-net-reconf"&gt;debian参考手册&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 21 Jan 2008 23:27:22 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-21:/2008/01/config-file-in-debian-interfaces-1/</guid><category>debian</category><category>linux</category><category>network</category><category>interfaces</category></item><item><title>Dreamhost主机上的用户数</title><link>https://www.gfrog.net/2008/01/number-of-domains-on-one-dreamhost-server/</link><description>&lt;p&gt;ssh到我的DH主机上总感觉慢慢的，很不爽。&lt;/p&gt;
&lt;p&gt;今天在这里发现了下面两条命令，可以分别查看主机上ssh的用户数和总用户数。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ grep -i /home/ /etc/passwd &lt;span class="p"&gt;|&lt;/span&gt; wc -l

$ grep -i /home/ /etc/passwd &lt;span class="p"&gt;|&lt;/span&gt; grep /bin/.*sh$ &lt;span class="p"&gt;|&lt;/span&gt; wc -l
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;查了一下，我的空间所在的这个主机上有108个ssh帐户，379个ftp/ssh用户。&lt;/p&gt;
&lt;p&gt;vmstat看下负载，真的是够高。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;procs&lt;/span&gt; &lt;span class="c1"&gt;-----------memory---------- ---swap-- -----io---- --system-- ----cpu----&lt;/span&gt;
 &lt;span class="n"&gt;r&lt;/span&gt;  &lt;span class="n"&gt;b&lt;/span&gt;   &lt;span class="n"&gt;swpd&lt;/span&gt;   &lt;span class="k"&gt;free&lt;/span&gt;   &lt;span class="n"&gt;buff&lt;/span&gt;  &lt;span class="k"&gt;cache&lt;/span&gt;   &lt;span class="n"&gt;si&lt;/span&gt;   &lt;span class="n"&gt;so&lt;/span&gt;    &lt;span class="n"&gt;bi&lt;/span&gt;    &lt;span class="n"&gt;bo&lt;/span&gt;   &lt;span class="k"&gt;in&lt;/span&gt;    &lt;span class="n"&gt;cs&lt;/span&gt; &lt;span class="n"&gt;us&lt;/span&gt; &lt;span class="n"&gt;sy&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="n"&gt;wa&lt;/span&gt;
 &lt;span class="mi"&gt;0&lt;/span&gt;  &lt;span class="mi"&gt;0&lt;/span&gt;  &lt;span class="mi"&gt;41968&lt;/span&gt; &lt;span class="mi"&gt;213368&lt;/span&gt;  &lt;span class="mi"&gt;66372&lt;/span&gt; &lt;span class="mi"&gt;2950740&lt;/span&gt;    &lt;span class="mi"&gt;0&lt;/span&gt;    &lt;span class="mi"&gt;1&lt;/span&gt;     &lt;span class="mi"&gt;4&lt;/span&gt;     &lt;span class="mi"&gt;9&lt;/span&gt;    &lt;span class="mi"&gt;1&lt;/span&gt;     &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;27&lt;/span&gt;  &lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="mi"&gt;66&lt;/span&gt;  &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 19 Jan 2008 22:23:55 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-19:/2008/01/number-of-domains-on-one-dreamhost-server/</guid><category>Dreamhost</category><category>hosting</category><category>overselling</category></item><item><title>从三到万：超级人造人技术</title><link>https://www.gfrog.net/2008/01/richard-hammond-presents-bloody-omaha/</link><description>&lt;p&gt;哦哦，我是标题党么？&lt;/p&gt;
&lt;p&gt;下面这段视频，
&lt;a href="http://www.google.com/search?q=Richard+Hammond"&gt;Richard Hammond &lt;/a&gt;
为首的几位哥们只用了三个人和四天时间，就拍出了诺曼底登陆的场面。&lt;/p&gt;
&lt;p&gt;比比看，跟拯救大兵瑞恩哪个更强大？&lt;/p&gt;
&lt;p&gt;&lt;span class="videobox"&gt;
                &lt;iframe width="640" height="390"
                    src='https://www.youtube.com/embed/WRS9cpOMYv0'
                    frameborder='0' webkitAllowFullScreen mozallowfullscreen
                    allowFullScreen&gt;
                &lt;/iframe&gt;
            &lt;/span&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 19 Jan 2008 21:50:20 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-19:/2008/01/richard-hammond-presents-bloody-omaha/</guid></item><item><title>google图片搜索的一个小bug</title><link>https://www.gfrog.net/2008/01/a-bug-in-google-image-search/</link><description>&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117800d89011786e001a234a4"&gt;
&lt;img alt="1" src="http://pic.yupoo.com/gfrog/557924f28870/medium.jpg"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图片里,红线框起来的内容.以前应该是个连接的,现在变成了一堆html标签.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 17 Jan 2008 16:51:55 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-17:/2008/01/a-bug-in-google-image-search/</guid></item><item><title>试验一下子Drivel</title><link>https://www.gfrog.net/2008/01/try-drivel/</link><description>&lt;p&gt;在Linux里，找一个可以用的blog客户端可真的不是一件简单的事情。
blog客户端本来就少，能够使用
（这也仅仅保留在能正常使用而且不出现bt问题这个层次上）的就更少。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117800ce60117830894ba2d61"&gt;&lt;img alt="drivel1" src="http://pic.yupoo.com/gfrog/858504f18ca2/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;翻来覆去的试了几次，青蛙决定还是试下Drivel，
这个gnome下的小东西写几个字，简单改变下格式倒是都有了，
但是像windows live writer那样可以在客户端里修改作者，添加标签，
设置trackback地址之类的都没有。真是简陋的够可以的。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808117800ce60117830896ab2d63"&gt;&lt;img alt="drivel2" src="http://pic.yupoo.com/gfrog/292184f18ca3/medium.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;青蛙决定先试用一段时间。
当然，还是要继续寻找更强大的blog客户端的。
如果能把live writer移植到linux上来就好啦。：p&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 16 Jan 2008 22:40:49 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-16:/2008/01/try-drivel/</guid><category>blog</category><category>drivel</category><category>Linux</category></item><item><title>首部Google Phone亮相CES 2008</title><link>https://www.gfrog.net/2008/01/first-google-phone-in-ces-2008/</link><description>&lt;p&gt;真没想到第一部Google Phone竟然是国人做出来的。
虽然只是号称的Google Phone（为啥只是号称？下面有说明），不过这还是很让人兴奋的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://pic.yupoo.com/gfrog/147524ec3ad8/yxnbidc1.jpg"&gt;&lt;/p&gt;
&lt;p&gt;这部手机型号为GW4，由启碁科技（Wistron NeWeb Corp）制造，预计今年第二季度就可以上市。
虽然现在这部手机搭载的是一个叫做MontaVista Linux 2.6的Linux系统（这就是只是“号称”的原因），
但是在2008年3月的时候就会运行Google Android了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="http://pic.yupoo.com/gfrog/340794ec3ada/2ioqbr66.jpg"&gt;&lt;/p&gt;
&lt;p&gt;GW4基于TI OMAP 1710芯片，处理器主频216MHz，64 MB 程序内存。
包含wifi功能，一个2.5英寸的触摸屏，一个200万像素的摄像头，还有全尺寸键盘。
它包含Opera Web 浏览器、可以与Outlook进行同步的邮件、日程表软件， MSN/Yahoo/AIM客户端，
还有Office 及 PDF 文件阅读器，和一些 Widget 如天气、股票报价等。&lt;/p&gt;
&lt;p&gt;不过我更期望的是这些软件可以完全的换成Google的应用程序。&lt;/p&gt;
&lt;p&gt;这部手机大概会在今年的第二季度上市，大家拭目以待吧！&lt;/p&gt;
&lt;p&gt;更进一步的信息，参看
&lt;a href="http://www.pcmag.com/article2/0,2704,2245563,00.asp"&gt;PCMAG的报道&lt;/a&gt;
吧。更多图片在
&lt;a href="http://www.pcmag.com/slideshow_viewer/0,1205,l=222834&amp;amp;p=1&amp;amp;s=27851&amp;amp;a=222838&amp;amp;po=1&amp;amp;i=1,00.asp?p=y"&gt;这里&lt;/a&gt;。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 12 Jan 2008 22:09:50 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-12:/2008/01/first-google-phone-in-ces-2008/</guid><category>google</category><category>phone</category></item><item><title>feed输出竟然有乱码</title><link>https://www.gfrog.net/2008/01/feed-output-error-2/</link><description>&lt;p&gt;再次测试一下，看看是字符编码的问题，
还是wordpress系统的问题，还是google reader的问题!&lt;/p&gt;
&lt;p&gt;-------------无奈的分割线-----------&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;update: 2008-01-11 22:40&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;feed问题已经定位，出在Aizatto's Related Posts这个插件上，
它会截取相关日志的部分内容输出到feed里，
但是正好碰上它截取的那部分有特殊字符，所以就挂掉了。&lt;/p&gt;
&lt;p&gt;解决办法也很简单，禁用这个插件的摘要输出功能就是了。&lt;/p&gt;
&lt;p&gt;唉，wordpress的插件啊，好用的很多，但是真是容易出毛病!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 11 Jan 2008 22:08:28 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-11:/2008/01/feed-output-error-2/</guid></item><item><title>新的日工资和小时工资的计算方法</title><link>https://www.gfrog.net/2008/01/new-method-of-calculating-daily-wage-and-hourly-wage/</link><description>&lt;p&gt;青蛙元旦的时候加了三天班，所以一直在合计这三天能拿到多少米。
于是上网搜了下，发现了下面这个新的计算日工资和小时工资的方法。
拿来算算，这三天赚的米用来交一个月的房租是绰绰有余了。&lt;/p&gt;
&lt;p&gt;------华丽的分割线，以下为转载------&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关于职工全年月平均工作时间和工资折算问题的通知 &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;劳社部发[2008]3号&lt;/p&gt;
&lt;p&gt;各省、自治区、直辖市劳动和社会保障厅（局）：&lt;/p&gt;
&lt;p&gt;根据《全国年节及纪念日放假办法》（国务院令第513号）的规定，
全体公民的节日假期由原来的10天增设为11天。
据此，职工全年月平均制度工作天数和工资折算办法分别调整如下：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一、制度工作时间的计算 &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;年工作日：365天-104天（休息日）-11天（法定节假日）＝250天&lt;/p&gt;
&lt;p&gt;季工作日：250天÷4季＝62。5天/季&lt;/p&gt;
&lt;p&gt;月工作日：250天÷12月＝20。83天/月&lt;/p&gt;
&lt;p&gt;工作小时数的计算：以月、季、年的工作日乘以每日的8小时。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二、日工资、小时工资的折算 &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;按照《劳动法》第五十一条的规定，法定节假日用人单位应当依法支付工资，
即折算日工资、小时工资时不剔除国家规定的11天法定节假日。
据此，日工资、小时工资的折算为：&lt;/p&gt;
&lt;p&gt;日工资：月工资收入÷月计薪天数&lt;/p&gt;
&lt;p&gt;小时工资：月工资收入÷（月计薪天数×8小时）。&lt;/p&gt;
&lt;p&gt;月计薪天数＝（365天-104天）÷12月＝21。75天&lt;/p&gt;
&lt;p&gt;三、2000年3月17日劳动保障部发布的
《关于职工全年月平均工作时间和工资折算问题的通知》（劳社部发[2000]8号）同时废止。&lt;/p&gt;
&lt;p&gt;劳动和社会保障部&lt;/p&gt;
&lt;p&gt;二○○八年一月三日&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 10 Jan 2008 22:24:54 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-10:/2008/01/new-method-of-calculating-daily-wage-and-hourly-wage/</guid></item><item><title>How do I configure scalable multicasting on Helix Server</title><link>https://www.gfrog.net/2008/01/how-to-configure-scalable-multicasting-on-helix-server/</link><description>&lt;p&gt;&lt;em&gt;原文地址在
&lt;a href="http://na3.salesforce.com/_ui/selfservice/pkb/PublicKnowledgeSolution/d?orgId=00D500000007Hzn&amp;amp;id=501500000007taI&amp;amp;retURL=%2Fsol%2Fpublic%2Fsolutionbrowser.jsp%3Fsearch%3Dmulticast%26cid%3D02n500000008z1P%26orgId%3D00D500000007Hzn%26t%3D4&amp;amp;ps=1"&gt;这里&lt;/a&gt;
我把它翻译成了中文,方便查看。&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Helix Server可以通过web方式的管理工具配置为使用可扩展多播，这篇文档只关注可扩展多播功能的配置。
关于Helix Server功能的完整细节可以在管理向导中找到。
Helix Server 管理向导：（第8章 多播）
&lt;a href="http://www.realnetworks.com/support/docs.html"&gt;http://www.realnetworks.com/support/docs.html&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开Helix Server的web管理界面。&lt;/li&gt;
&lt;li&gt;点击广播分发，可扩展多播。&lt;/li&gt;
&lt;li&gt;默认的加载点是/scalable/。RealNetworks建议你使用这个默认值，但是你可以随意更改它。&lt;/li&gt;
&lt;li&gt;要建立一个新的频道，点击“+”图标，然后在“编辑频道描述”文本框中为这个多播连接输入一个名称。&lt;/li&gt;
&lt;li&gt;在“启用频道”下拉框中选择“是”来启用可扩展多播。&lt;/li&gt;
&lt;li&gt;在“启用SAP”下拉框中选择"是"来发布这个多播连接。&lt;/li&gt;
&lt;li&gt;在“路径”文本框，添加要被广播发布的流名称。如果要使用所有的广播流，那么就保留默认的星号（*）。&lt;/li&gt;
&lt;li&gt;下一步，定义可扩展多播使用的端口号和地址。
    a. 在“端口范围”文本框，输入要使用的端口号。
    （青蛙注：这个端口号有一个变态的要求，就是要以偶数端口开始，并且范围中要包含偶数个端口，例如5000-5003。）
    b. 在“IP地址范围”中，输入要使用的地址。
       Helix Server使用这个地址范围中第一个可用的地址。
       如果使用一个单独的地址而不是一个地址范围，在这两个文本框中输入一样的地址。&lt;/li&gt;
&lt;li&gt;在“生存时间”文本框中，指出多播包可以在你的网络中传送多远。
（注：原文就这么写的，TTL每过一个路由器减1，减到0这个包就被丢弃。）&lt;/li&gt;
&lt;li&gt;输入一个超时时间，这个时间表示一个客户端停止等待多播包或者使用交替URL之前所经过的时间（秒）。&lt;/li&gt;
&lt;li&gt;在“重新使用地址”中，如果你想给在一个视频中的每个流都使用一个单独的地址，那么就选“否”。
    如果你想在两个流中都使用一个地址，那选择“是”。&lt;/li&gt;
&lt;li&gt;下一个选项是选择是否将收不到多播包的播放器转换为单播。这个功能只在使用RealNetworks的播放器时才有效。
    a. 在“转换为单播”列表框中，如果你不想让客户端转换成单播，那么就选择“否”。
    当播放一个高码率的节目时应该选择“否”，因为大量的单播流会消耗太多的带宽。如果你选择了“否”，可以忽略下一个文本框。
    b. 要在同一个Helix Server中使备份的单播有效，保持“交替的单播地址”文本框是空的。
    如果你想将单播转换到另外一个Helix Server上，需要填上那个服务器的地址和路径。下面就是一个例子：&lt;blockquote&gt;
&lt;p&gt;rtsp://helixserver.example2.com/broadcast/vivaldi.rm
    如果你不想把播放器转向到一个交替流，也可以把他们指向一个web页面来输出信息，
    像“这个节目只对支持单播的RealPlayer有效。
    ”在“交替的单播地址”文本框中，输入你的web页的URL，像下面这种：
   http://www.example.com/no_multicast.html&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;（可选）下一个选项是控制是否要把客户端的统计信息记录到Helix Server、Web服务器或者不记录。&lt;/li&gt;
&lt;li&gt;点击应用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Helix Server就被配置为使用可扩展多播了。&lt;/p&gt;
&lt;p&gt;可扩展多播的连接有如下形式：&lt;/p&gt;
&lt;p&gt;http://address:port/mount_point/path/file.rm.sdp&lt;/p&gt;
&lt;p&gt;------传说中的分割线------&lt;/p&gt;
&lt;p&gt;这两天yupoo不知道在倒腾啥,没法传图片.青蛙只好把没图的文章发出来了.等yupoo好了再传图吧。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 10 Jan 2008 21:57:39 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-10:/2008/01/how-to-configure-scalable-multicasting-on-helix-server/</guid></item><item><title>feedsky验证码</title><link>https://www.gfrog.net/2008/01/feedsky-verify-code/</link><description>&lt;p&gt;fe091327&lt;/p&gt;
&lt;p&gt;feedsky验证.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 05 Jan 2008 22:07:29 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-05:/2008/01/feedsky-verify-code/</guid></item><item><title>New site is online!</title><link>https://www.gfrog.net/2008/01/new-site-is-online/</link><description>&lt;p&gt;新年来了，我的新站点也终于可以用了。这次完全的换到了wordpress平台上，再加上新的域名：&lt;/p&gt;
&lt;h2&gt;&lt;a href="https://www.gfrog.net"&gt;www.gfrog.net&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;希望也是一个全新的开始！&lt;/p&gt;
&lt;p&gt;--------------华丽的分割线--------------&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;update,2008-01-05:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;feed输出终于正常了,倒腾了好几天,终于发现是
&lt;a href="http://www.feedburner.com/fb/a/help/wordpress_quickstart"&gt;FeedBurner FeedSmith&lt;/a&gt;
插件的问题，它直接把我的feed转向到feedburner去了，
但是feedburner又被伟大的GFW盾了，所以每次访问feed都无法显示。
最后，只好去掉这个插件了，让我的feed裸奔吧。&lt;/p&gt;
&lt;p&gt;现在页面左上角那个feed的连接是本站的直接输出 &lt;a href="https://www.gfrog.net/feed/"&gt;https://www.gfrog.net/feed/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;大家还可以通过feedburner和feedsky来订阅.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/gfrog"&gt;&lt;img alt="feedburner" src="http://photo14.yupoo.com/20080105/214059_263892857_avbxamfm.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feed.feedsky.com/gfrog"&gt;&lt;img alt="feedsky" src="http://photo15.yupoo.com/20080105/214059_236084291_gwetmjod.jpg"&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 04 Jan 2008 22:28:38 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2008-01-04:/2008/01/new-site-is-online/</guid></item><item><title>传说中的QQ,传说中的hiweed兼容层</title><link>https://www.gfrog.net/2007/07/qq-in-hiweed-compatible-layer/</link><description>&lt;p&gt;今天有人在irc上说起了QQ,大家七嘴八舌议论现在linux的各路QQ客户端.
Shely老大给了
&lt;a href="http://forum.ubuntu.org.cn/about63843.html"&gt;ubuntu.org.cn上面的一个帖子&lt;/a&gt;
.偶照着上头做了下,真的搞定了QQ.&lt;/p&gt;
&lt;p&gt;以下为引用:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;先执行下代码: &lt;br /&gt;
sudo sed -ie '/GBK/,/^}/d' /usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE &lt;br /&gt;
然后下载 &lt;br /&gt;
http://linuxfire.com.cn/~huahua/zero/qq2007beta1kb5_0.0.2007_x86.tgz &lt;br /&gt;
http://211.92.88.40/~huahua/zero/qq2007beta1kb5_0.0.2007_x86.tgz &lt;br /&gt;
( 或者 qq2007beta1kb5_0.0.2007_x6.tgz: http://files.filefront.com//;8150970;;/ ) &lt;br /&gt;
解压，执行里边的 qq2007beta1kb5 &lt;br /&gt;
就打开 qq 了 &lt;br /&gt;
------------------ &lt;br /&gt;
如果您的 scim 在里边不上字的话，请在 scim 首选项-》全局设置 里 去掉 “将预编辑字符串嵌入到客户窗口中”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;经过我一天的试用,QQ运行状态良好.为了QQ客户端郁闷的各位,有这个方法好了.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 30 Jul 2007 22:34:23 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-07-30:/2007/07/qq-in-hiweed-compatible-layer/</guid><category>Hiweed</category><category>Linux</category><category>QQ</category></item><item><title>郁闷了2天的U盘问题,竟然是因为内核模块</title><link>https://www.gfrog.net/2007/07/linux-usb-mod-conflict/</link><description>&lt;p&gt;真的真的被debian打败了,U盘插到机器上以后,死活就是认不出来,dmesg上面有消息说插上了,但是是下面这样的消息:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Initializing USB Mass Storage driver... &lt;br /&gt;
usbcore: registered new interface driver usb-storage &lt;br /&gt;
USB Mass Storage support registered. &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 7 &lt;br /&gt;
ehci_hcd 0000:00:1d.7: port 4 reset error -110 &lt;br /&gt;
hub 4-0:1.0: hub_port_status failed (err = -32) &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 11 &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 15 &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 18 &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 22 &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 29 &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 33 &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 40 &lt;br /&gt;
ehci_hcd 0000:00:1d.7: port 4 reset error -110 &lt;br /&gt;
hub 4-0:1.0: hub_port_status failed (err = -32) &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 59 &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 73 &lt;br /&gt;
usb 4-4: new high speed USB device using ehci_hcd and address 80 &lt;br /&gt;
ehci_hcd 0000:00:1d.7: port 4 reset error -110 &lt;br /&gt;
hub 4-0:1.0: hub_port_status failed (err = -32)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后lsusb根本没有反应.
于是从昨天开始就在找这个原因,
因为以前装的很多debian系统根本没这个问题,
无论是sarge还是etch.&lt;/p&gt;
&lt;p&gt;结果这次升级到lenny就出了这么个状况.&lt;/p&gt;
&lt;p&gt;开始走了一个很大的弯路,
因为google到有人说这个问题可能是acpi问题引起的,
我想也有可能,因为这个机器是个T40的本子.
于是想连acpi一起配好吧,于是acpid,cpufreqd一顿研究,
问题还是没好,U盘插上灯连亮都不给我亮一下.&lt;/p&gt;
&lt;p&gt;结果今晚忽然想起来我还没搜过这个错误提示呢,
结果按上面ehci_hcd的错误提示一搜,
马上就有了结果(在
&lt;a href="http://moto.debian.org.tw/viewtopic.php?t=4932"&gt;这里&lt;/a&gt;
).原来挂不上U盘的原因是模块造成的.
以前就听说过这几个usb模块打架,今天就让我碰上了.&lt;/p&gt;
&lt;p&gt;问题知道了,解决方法也很简单,root模式下执行:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;rmmod&lt;/span&gt; &lt;span class="n"&gt;ehci_hcd&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;然后插上U盘,盘上可爱的小绿灯又亮起来了,真开心.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 16 Jul 2007 19:33:56 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-07-16:/2007/07/linux-usb-mod-conflict/</guid><category>Debian</category><category>Linux</category><category>Storage</category><category>USB</category></item><item><title>feed输出似乎有问题</title><link>https://www.gfrog.net/2007/07/feed-output-error/</link><description>&lt;p&gt;现在本播feed输出似乎一直停在说验证码的那篇日志上，问题的原因未知。&lt;/p&gt;
&lt;p&gt;实在是懒得改了，先凑合一下，这个空间马上到期了，到时候换去wordpress。&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 15 Jul 2007 20:54:32 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-07-15:/2007/07/feed-output-error/</guid></item><item><title>关于linux下访问windows共享的问题</title><link>https://www.gfrog.net/2007/07/mount-windows-shared-folder-with-smbfs/</link><description>&lt;p&gt;首先，需要安装smbfs包&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;aptitude&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;smbfs&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;如果没有安装这个包,挂载共享分区时会出现以下错误&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;smbfs: mount_data version 1919251317 is not supported.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后,挂载windows共享的命令是&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;mount&lt;/span&gt;  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;smbfs&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;ip&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="err"&gt;共享名&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="err"&gt;用户名&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="err"&gt;密码&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;iocharset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;utf&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;dmask&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;777&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;fmask&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;777&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;smb&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;说下参数,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ip,共享名,就是要访问的windows共享资源了 &lt;br /&gt;
用户名,密码,是在那个windows系统上的用户名密码. &lt;br /&gt;
dmask=777,fmask=777, 共享分区的读写权限,这里设成777了.根据自己需要改吧. &lt;br /&gt;
/media/smb ,共享分区挂载的本地路径.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;/etc/fstab的写法,在/etc/fstab里面添加如下一行:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;ip&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="err"&gt;共享名&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;smbf&lt;/span&gt; &lt;span class="n"&gt;smbfs&lt;/span&gt; &lt;span class="k"&gt;defaults&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="err"&gt;用户名&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="err"&gt;密码&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;iocharset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;utf&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;dmask&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;777&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;fmask&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;777&lt;/span&gt;     &lt;span class="mi"&gt;0&lt;/span&gt;       &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;参数意义跟用mount命令时一样.&lt;/p&gt;
&lt;p&gt;最后,google到网上有些地方写了smbmount命令,
这个命令不知道是哪个发行版里面带的,
至少在debian里面现在没有了(现在指的是debian lenny版本),
挂载共享直接mount然后指定smbfs格式就行.&lt;/p&gt;
&lt;p&gt;ps.如果只是想在x里面查看windows共享,
只要在nautilus里面文件-&amp;gt;连接到服务器里面,连接到一个windows共享就行了.&lt;/p&gt;
&lt;p&gt;参考文章:&lt;/p&gt;
&lt;p&gt;1.&lt;a href="http://www.linuxsir.org/main/?q=node/158"&gt;一步一学Linux与Windows 共享文件Samba （v0.2b）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2.&lt;a href="http://gfrog.net/wp-admin/Mounting%20remote%20filesystems%20with%20smbfs"&gt;Mounting remote filesystems with smbfs&lt;/a&gt;(英文)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 15 Jul 2007 08:48:06 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-07-15:/2007/07/mount-windows-shared-folder-with-smbfs/</guid><category>Linux</category><category>Samba</category><category>Shared</category><category>Windows</category></item><item><title>fuck tnnd的新浪</title><link>https://www.gfrog.net/2007/06/fuck-tnnd-sina-blog/</link><description>&lt;p&gt;妈的&lt;/p&gt;
&lt;p&gt;blog连个图片都不给看&lt;/p&gt;
&lt;p&gt;还tm有脸叫门户&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 26 Jun 2007 22:44:32 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-26:/2007/06/fuck-tnnd-sina-blog/</guid><category>blog</category><category>sina</category></item><item><title>gmail真是满可爱</title><link>https://www.gfrog.net/2007/06/cute-gmail/</link><description>&lt;p&gt;今天收到了这个所谓的PayPal Security Center 寄来的邮件.&lt;/p&gt;
&lt;p&gt;被gmail给自动spam了.&lt;/p&gt;
&lt;p&gt;gmail竟然还能识别出来钓鱼邮件,真是太赞了.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff8080811348fca801134eca56d306fa"&gt;&lt;img alt="1" src="http://photo8.yupoo.com/20070621/225809_659298275.jpg"&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 21 Jun 2007 22:44:17 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-21:/2007/06/cute-gmail/</guid><category>Gmail</category><category>Google</category><category>spam</category></item><item><title>又见超强验证码</title><link>https://www.gfrog.net/2007/06/another-verify-code/</link><description>&lt;p&gt;&lt;img alt="1" src="http://photo8.yupoo.com/20070615/044009_1730707984.jpg"&gt;&lt;/p&gt;
&lt;p&gt;a=? b=?&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="http://photo6.yupoo.com/20070615/044009_1797575761.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Na2S4O6是啥？&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="http://photo8.yupoo.com/20070615/044010_1196541693.jpg"&gt;&lt;/p&gt;
&lt;p&gt;这个是个啥东西？&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 15 Jun 2007 04:42:50 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-15:/2007/06/another-verify-code/</guid><category>verify</category></item><item><title>Movavi Online:在线视频转换服务</title><link>https://www.gfrog.net/2007/06/movavi-online-video-convert/</link><description>&lt;p&gt;&lt;img alt="1" src="http://img.movavi.com/online/pic/movavi_online.gif"&gt;&lt;/p&gt;
&lt;p&gt;下面是Q&amp;amp;A时间:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;什么是Movavi Online?
    &lt;a href="http://online.movavi.com/"&gt;Movavi Online&lt;/a&gt;
    是一个免费的在线视频转换服务,允许你在各种视频格式之间转换.&lt;/li&gt;
&lt;li&gt;Movavi Online都支持哪些视频格式呢?
    &lt;a href="http://online.movavi.com/"&gt;Movavi Online&lt;/a&gt;
    支持输入以下视频格式: AVI (DivX, XVid), MPEG (1, 2, 4), MP4, 3gp, 3gp2, WMV, MOV (QT).
    输出视频格式: AVI ( XVid), MPEG-4 , MPEG-2 (DVD Quality, PAL), MPEG-2 (DVD Quality, NTSC), 
    iPod video, iPod 5G video, PSP video, 3gp, 3gp2, MPEG-4 (.mov), Flash (.flv)&lt;/li&gt;
&lt;li&gt;我可以一次转换多少个文件呢?
    现在,你可以在一次转换过程中转换5个文件.&lt;/li&gt;
&lt;li&gt;我最多可以上传多大的文件?
    你可以一次上传最多100MB大小的文件.&lt;/li&gt;
&lt;li&gt;我能在一次转换过程中把文件转换成不同的格式么?
    是的,上传的5个文件中可以设置为转换成5种不同的格式,&lt;/li&gt;
&lt;li&gt;我可以把一个文件转换为多种文件格式么?
    可以,但是不能在一次转换过程中.需要转换多次.&lt;/li&gt;
&lt;li&gt;我怎么得到转换以后的文件呢?
    文件下载链接会被寄到上传视频时填写的email地址中,
    点击邮件中的链接就可以下载文件了.
    这个文件在服务器上保存24小时以后会被删除.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Movavi Online的地址: http://online.movavi.com/&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 09 Jun 2007 04:58:30 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-09:/2007/06/movavi-online-video-convert/</guid><category>convert</category><category>video</category></item><item><title>论文进度过半</title><link>https://www.gfrog.net/2007/06/paper-process/</link><description>&lt;p&gt;进度过半,但是时间就剩了3-4天了.&lt;/p&gt;
&lt;p&gt;但是一个字也写不进去.&lt;/p&gt;
&lt;p&gt;唉,烦&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 09 Jun 2007 04:30:51 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-09:/2007/06/paper-process/</guid><category>paper</category></item><item><title>来吧,让我们来Yupoo吧</title><link>https://www.gfrog.net/2007/06/let-us-yupoo/</link><description>&lt;p&gt;Flickr被阉掉了,国内的服务总跟GFW没关系了吧.&lt;/p&gt;
&lt;p&gt;让我们来Yupoo好了.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808113090b1601130c96432066ff"&gt;&lt;img alt="1" src="http://photo7.yupoo.com/20070609/022620_1816373221.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yupoo.com/photos/view?id=ff80808113090b1601130c96432066ff"&gt;logos&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;由&lt;a href="null"&gt;gfrog&lt;/a&gt;上传于&lt;a href="http://www.yupoo.com/"&gt;Yupoo&lt;/a&gt;.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 09 Jun 2007 02:28:18 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-09:/2007/06/let-us-yupoo/</guid><category>Yupoo</category></item><item><title>面对GFW,你准备好了么?</title><link>https://www.gfrog.net/2007/06/are-u-ready-face-gfw/</link><description>&lt;p&gt;&lt;img alt="1" src="attachments/month_0706/92007692627.jpg"&gt;&lt;/p&gt;
&lt;p&gt;昨天Flickr被封又引发了一次大规模批判GFW的行动,
&lt;a href="http://blog.donews.com/keso/archive/2007/06/08/1173239.aspx"&gt;keso&lt;/a&gt;
在日志里fxxk GFW.&lt;/p&gt;
&lt;p&gt;如果大家对某W有深仇大恨,那么就来这里发泄一下吧:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.donews.com/keepwalking/archive/2006/06/01/898146.aspx"&gt;&lt;img alt="1" src="http://blog.donews.com/images/blog_donews_com/keepwalking/86223/r_wd.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不过发泄完了还得继续想法跳墙是不.这里有几个办法.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用tor之类的匿名代理软件.
    例如
    &lt;a href="http://soft.lzzxt.com"&gt;小众软件&lt;/a&gt;
    推荐的
    &lt;a href="http://soft.lzzxt.com/fug/"&gt;突破网络访问三剑客&lt;/a&gt;
    还有
    &lt;a href="http://soft.lzzxt.com/Java-Anon-Proxy"&gt;Java Anon Proxy &lt;/a&gt;
    .使用匿名代理的好处是可以完美访问被GFWed的各类网站,
    例如维基百科,google快照,还有my opera.一次设置,然后就可以无视GFW了.&lt;/li&gt;
&lt;li&gt;使用web代理网站. web方式的匿名代理，例如下面两个
    &lt;a href="http://www.68q.net/"&gt;http://www.68q.net/&lt;/a&gt;
    和
    &lt;a href="http://www.9i7.cn/"&gt;http://www.9i7.cn/&lt;/a&gt;
    还有专门针对某网站的,例如pkblogs.com就是针对blogspot的代理.&lt;/li&gt;
&lt;li&gt;修改hosts文件.
    这个只针对被关键字GFWed的网站,这种类型修改hosts文件,强制将域名解析成ip就可以访问被封掉的服务了.
    例如这次针对Flickr,可以把下面两行添加到hosts文件里:
    farm1。static。flickr。com 68.142.213.135
    farm2。static。flickr。com 68.147.123.56
    (注意把。改成.哦)&lt;/li&gt;
&lt;li&gt;使用浏览器插件.firefox上的greasemonkey跟gladder.ie7的ie7pro.
    greasemonkey跟ie7pro需要自己编写脚本把域名替换为ip.
    例如这次
    &lt;a href="http://blog.istef.info/2007/06/08/save-flickr/"&gt;花儿开了提供了针对Flickr的脚本&lt;/a&gt;
    .gladder是一个专门的跳墙软件,也是利用了匿名代理.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;嗯,大提上就是这几种方法了.在这里还是推荐各种匿名代理软件,毕竟一次就可以搞定各种被盾掉的网站.&lt;/p&gt;
&lt;p&gt;总之,让GFW死去吧.&lt;/p&gt;
&lt;p&gt;参考连接:&lt;/p&gt;
&lt;p&gt;针对Flickr,各位老大各自提供的方法:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://talk.blogbus.com/logs/5719180.html"&gt;http://talk.blogbus.com/logs/5719180.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.istef.info/2007/06/08/save-flickr/"&gt;http://blog.istef.info/2007/06/08/save-flickr/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hi.baidu.com/binbinmath/blog/item/4e2cf21f9bbf8d62f724e446.html"&gt;http://hi.baidu.com/binbinmath/blog/item/4e2cf21f9bbf8d62f724e446.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ps.&lt;/strong&gt; 2007-06-09 1:00 我这里连Flickr的主页都已经上不去了,难道又是GFW的原因?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 09 Jun 2007 02:06:04 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-09:/2007/06/are-u-ready-face-gfw/</guid><category>GFW</category></item><item><title>'新域名启用: gfrog.info'</title><link>https://www.gfrog.net/2007/06/new-domain-name-gfroginfo/</link><description>&lt;p&gt;www.gfrog.info&lt;/p&gt;
&lt;p&gt;1.99美刀一年.一口气买了5年的.&lt;/p&gt;
&lt;p&gt;在http://www.stargateinc.com/上购买.
上次bloggerwave发给我广告费一直没有想到怎么用,正好今天拿来买了一个域名.嘿嘿.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 08 Jun 2007 03:54:23 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-08:/2007/06/new-domain-name-gfroginfo/</guid><category>domain</category></item><item><title>GFW又发飙了,Flickr被封</title><link>https://www.gfrog.net/2007/06/gfw-bans-flickr/</link><description>&lt;p&gt;&lt;img alt="1" src="http://l.yimg.com/www.flickr.com/images/en-us/logo_tagline_bg.gif"&gt;&lt;/p&gt;
&lt;p&gt;Flickr终于被盯上了,被GFW完美的和谐掉了.现在登录Flickr,图片都变成了红叉叉.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.williamlong.info/archives/920.html"&gt;月光博客&lt;/a&gt;
消息,这次竟然是用了关键字过滤的方式,
过滤的词语是farm1。static。flickr。com和farm2。static。flickr。com.&lt;/p&gt;
&lt;p&gt;现在,Flickr上那句广告词对于国人来说完全成了空话,看来需要改成:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;the unsafe way to &lt;strong&gt;store&lt;/strong&gt;,&lt;strong&gt;search&lt;/strong&gt;,&lt;strong&gt;sort&lt;/strong&gt; and &lt;strong&gt;share&lt;/strong&gt; your photos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;现在用国外的服务已经丝毫没有安全感了,被和谐已经成了家常便饭.
除了选择国内的类似服务商,我们还能有什么办法...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;update:&lt;/strong&gt; 邦比这里提供了几个访问Flickr的方法:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hi.baidu.com/binbinmath/blog/item/4e2cf21f9bbf8d62f724e446.html"&gt;http://hi.baidu.com/binbinmath/blog/item/4e2cf21f9bbf8d62f724e446.html&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 08 Jun 2007 02:03:06 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-08:/2007/06/gfw-bans-flickr/</guid><category>Flickr</category><category>GFW</category></item><item><title>树大招风,Dreamhost又出事故</title><link>https://www.gfrog.net/2007/06/dreamhost-hacked/</link><description>&lt;p&gt;&lt;img alt="1" src="http://wiki.dreamhost.com/images/8/81/Logo-dreamhost.png"&gt;&lt;/p&gt;
&lt;p&gt;传说Dreamhost经常出事故,例如
&lt;a href="http://www.williamlong.info/archives/853.html"&gt;前阵子的DNS错误&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;这次,DH又出事了.而且问题好像还很严重:
&lt;a href="http://plod.popoever.com/archives/001260.html"&gt;3500个DreamHost 用户FTP 帐号被黑&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;前几天还想买DH的空间来着,结果
&lt;a href="https://www.gfrog.net/my/article.asp?id=285"&gt;因为支付的问题作罢&lt;/a&gt;
.看来实在是树大招风,大服务商也有大服务商的问题.&lt;/p&gt;
&lt;p&gt;不过这件事情还是给我们提了个醒,这次DH的密码似乎都是被暴力破解的.
空间密码比较简单的要小心了,一定要给ftp设置一个强度比较高的密码,
这样才可以有效的防止暴破.至于密码,可以用
&lt;a href="http://strongpasswordgenerator.com/"&gt;http://strongpasswordgenerator.com/&lt;/a&gt;
来在线生成一个.&lt;/p&gt;
&lt;p&gt;ps.前几天查了一下本blog的空间使用情况,才用了区区60M,
看来还是在这个空间上老实待着吧.
而且一年85米的空间使用费用也很容易收回.
至少到现在我的feedsky的话题广告已经给我提供了一年的空间费用了 .&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 06 Jun 2007 20:30:36 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-06:/2007/06/dreamhost-hacked/</guid><category>Dreamhost</category><category>Hack</category></item><item><title>股市</title><link>https://www.gfrog.net/2007/06/stock-market-in-china/</link><description>&lt;p&gt;&lt;img alt="1" src="attachments/month_0706/k20076525110.jpg"&gt;&lt;/p&gt;
&lt;p&gt;虽然这张图片是
&lt;a href="http://www.zj.xinhuanet.com/newscenter/2007-06/02/content_10189003.htm"&gt;假的&lt;/a&gt;
,但是还是很能说明问题的.&lt;/p&gt;
&lt;p&gt;前一阵子的股市确实是暴利,似乎是个人进去都能赚到手软.
我周围的人也都琢磨着该怎么进去捞一笔.但是炒股比抢劫来钱还快么?&lt;/p&gt;
&lt;p&gt;再看下面这张&lt;/p&gt;
&lt;p&gt;4300点一路狂降到6月4号的3600多点,这才是股市.&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" src="attachments/month_0706/v2007652585.png"&gt;&lt;/p&gt;
&lt;p&gt;满眼的绿色&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" src="attachments/month_0706/32007653521.jpg"&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 05 Jun 2007 02:58:11 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-05:/2007/06/stock-market-in-china/</guid><category>stock</category></item><item><title>'学文科的惨了: 史上最强的blog验证码'</title><link>https://www.gfrog.net/2007/06/verify-code/</link><description>&lt;p&gt;&lt;img alt="1" src="http://static.flickr.com/1089/528903127_160d05351c.jpg"&gt;&lt;/p&gt;
&lt;p&gt;不知道这个blog是关于什么的,如果没学过极限,还真搞不定它呢.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 05 Jun 2007 02:36:42 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-05:/2007/06/verify-code/</guid></item><item><title>直通旅客列车6月5日起提前10天售票</title><link>https://www.gfrog.net/2007/06/train-kicket-presell/</link><description>&lt;p&gt;以前三天两头的改预售时间实在是太烦人了,经常是按照以前的预售时间去买票的时候被告诉没开始预售或者票已经卖完了.
这次总算规定一个统一的预售时间了.不过看起来管内车还是铁路局自己定预售时间,还是得忍受经常改预售时间的痛苦.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;铁道部：直通旅客列车6月5日起提前10天售票&lt;/p&gt;
&lt;p&gt;&lt;a href="http://news.QQ.com%E3%80%80%202007%E5%B9%B406%E6%9C%8804%E6%97%A514:22%20%E3%80%80%20%E4%B8%AD%E5%9B%BD%E6%96%B0%E9%97%BB%E7%BD%91%E3%80%80%20%E3%80%80%20"&gt;http://news.QQ.com　 2007年06月04日14:22 　 中国新闻网　 　 &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;中新网6月4日电 据中国铁道部网站消息，为更加方便旅客乘火车出行，自6月5日起，铁路火车票预售期将有所调整，所有直通旅客列车车票提前10天发售。&lt;/p&gt;
&lt;p&gt;据了解，目前各大火车站的车票预售时间，是根据各铁路局实际情况制定的，
大多数车站提前4天售票，也有部分车站提前5天、6天或10天售票。
铁道部相关负责人称，此项措施是为了更方便旅客购票而推出的。
自6月5日开始，所有直通旅客列车车票在票额所在铁路局管内各售票窗口提前10天发售。
动车组和直达列车客票预售时间不变，仍提前20天售票；异地票预售期也仍保持提前20天发售。&lt;/p&gt;
&lt;p&gt;所谓直通旅客列车，就是指走行距离超出一个铁路局管内的旅客列车，
这些列车一般为中长途列车。同时，在铁路局管内开行的旅客列车被称为管内列车，
这些列车一般为短途列车。&lt;/p&gt;
&lt;p&gt;铁道部指出，管内旅客列车车票的预售期由各铁路局根据各局情况制定，
但各铁路局管内各车站预售时间要保持一致。
此外，铁道部还要求各铁路局加大营销力度，拓展销售渠道，
积极组织往返票、联程票等异地票的发售，加强售票组织管理，
为广大旅客出行提供便利。(林晓莺)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 05 Jun 2007 02:07:53 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-05:/2007/06/train-kicket-presell/</guid><category>presell</category><category>ticket</category><category>Train</category></item><item><title>Fedora 7 正式发布了</title><link>https://www.gfrog.net/2007/06/fedora-7-release/</link><description>&lt;p&gt;&lt;img alt="1" src="attachments/month_0706/22007641135.jpg"&gt;&lt;/p&gt;
&lt;p&gt;消息有点迟了,Fedora 7在我们儿童节那天发布了.&lt;/p&gt;
&lt;p&gt;新增内容已经被发的满哪都是了,我就不说了,给大家看下发行发行注记跟屏幕截图吧.&lt;/p&gt;
&lt;p&gt;发行注记在这里: http://fedoraproject.org/release-notes/RELEASE-NOTES-zh_CN/ (中文版)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://fedoraproject.org/release-notes/RELEASE-NOTES-en_US/%20%28%E8%8B%B1%E6%96%87%E7%89%88%29"&gt;http://fedoraproject.org/release-notes/RELEASE-NOTES-en_US/ (英文版)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下面是一个屏幕截图的幻灯片,
&lt;a href="http://fedoraproject.org/wiki/Tours/Fedora7/001_Install_Boot?action=print&amp;amp;media=projection"&gt;请点击这里查看&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://fedoraproject.org/images/screenshots/default-desktop.jpg"&gt;&lt;/p&gt;
&lt;p&gt;下载地址:
&lt;a href="http://mirrors.fedoraproject.org/publiclist/Fedora/7/"&gt;官方镜像列表&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 04 Jun 2007 01:23:09 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-06-04:/2007/06/fedora-7-release/</guid><category>Fedora</category><category>Linux</category><category>Release</category></item><item><title>转向Wordpress?</title><link>https://www.gfrog.net/2007/05/turn-to-wordpress/</link><description>&lt;p&gt;最近
&lt;a href="http://forum.chinabloggernetwork.com/viewthread.php?tid=683&amp;amp;extra=page%3D1"&gt;cbn在搞服务器合租&lt;/a&gt;
.正好最近我现在用的服务器时不时的抽风一下,
并且pjblog的功能实在有限,我又懒得自己动手,于是就跟着去凑了凑热闹.&lt;/p&gt;
&lt;p&gt;cbn服务器现在已经进入了付款阶段,300米一年.
服务器配置如下(摘自
&lt;a href="http://blog.istef.info/2007/05/26/cbn-hosting/"&gt;花儿开了&lt;/a&gt;
):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;双路双核至强处理器，2G ECC 内存； &lt;br /&gt;
服务器位于北京酒仙桥BGP机房，也是 Google.cn 所在的机房，没有电信网通互访的问题，速度超快； &lt;br /&gt;
72松为我们提供技术支持和服务器管理，并进行数据备份； &lt;br /&gt;
服务器为 100M 共享接入，当然实际分到的带宽也就 1-3M。 &lt;br /&gt;
每位用户提供 1G+ 磁盘空间和 10G+/month 的带宽，之所以有 + 是因为这只是个软性限制，如果您只是合理的超出，我们是允许的； &lt;br /&gt;
LAMP 环境，WordPress 的绝佳组合； &lt;br /&gt;
可绑定多域名和子域名； &lt;br /&gt;
250人民币元左右的年费（最终要视合租人数确定）；(现在已经确定收费300米/年了.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;说实在的,这个价格跟我现在用的空间比起来实在够贵,
我当年买这个空间的时候才85一年.
说起来国内还真不见得有比这再便宜的空间了.
现在的空间前半年用起来还算可以,不过最近经常出现抽风的状况.
而且,最致命的是,现在的空间几乎没有扩展性,服务商给你什么,你就用好了.&lt;/p&gt;
&lt;p&gt;这点让我十分不爽.
据说cbn的空间可以按照用户的需要定制安装,但是机器没正式运行以前,
什么都是未知数.只能期待它会跟说的一样好了....&lt;/p&gt;
&lt;p&gt;另外,更换空间以后就是php空间了,可以用我仰慕已久的wordpress系统了,
不过pjblog如何转到wordpress上去,实在是个大问题.
还有以前积累下来的搜索引擎纪录,pr值似乎都有丢掉的危险,
不知道谁有好办法,指点指点我吧!!&lt;/p&gt;
&lt;p&gt;如果你看到这篇日志的时候有空,请帮忙点击一下下面的链接,看一下跟访问本站的速度有多大差别,感谢回馈.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://218.240.8.107/"&gt;http://218.240.8.107/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;update:2007-5-29 22:30&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;刚刚在教育网里面tracert了一下上面那个地址 得到的结果如下:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;Tracing&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="mi"&gt;218&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;240&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;107&lt;/span&gt; &lt;span class="n"&gt;over&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;maximum&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="n"&gt;hops&lt;/span&gt;

 &lt;span class="mi"&gt;1&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;219&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;217&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;254&lt;/span&gt;
 &lt;span class="mi"&gt;2&lt;/span&gt;     &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;
 &lt;span class="mi"&gt;3&lt;/span&gt;     &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;142&lt;/span&gt;
 &lt;span class="mi"&gt;4&lt;/span&gt;     &lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;198&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;225&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;221&lt;/span&gt;
 &lt;span class="mi"&gt;5&lt;/span&gt;     &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;112&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;57&lt;/span&gt;
 &lt;span class="mi"&gt;6&lt;/span&gt;    &lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;21&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;112&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;170&lt;/span&gt;
 &lt;span class="mi"&gt;7&lt;/span&gt;    &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;31&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;31&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;127&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;216&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;41&lt;/span&gt;
 &lt;span class="mi"&gt;8&lt;/span&gt;    &lt;span class="mi"&gt;29&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;29&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;     &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;112&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;53&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;74&lt;/span&gt;
 &lt;span class="mi"&gt;9&lt;/span&gt;    &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;218&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;240&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;218&lt;/span&gt;
&lt;span class="mi"&gt;10&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;       &lt;span class="mi"&gt;31&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;     &lt;span class="mi"&gt;218&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;240&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;113&lt;/span&gt;
&lt;span class="mi"&gt;11&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;        &lt;span class="o"&gt;*&lt;/span&gt;        &lt;span class="o"&gt;*&lt;/span&gt;     &lt;span class="n"&gt;Request&lt;/span&gt; &lt;span class="n"&gt;timed&lt;/span&gt; &lt;span class="k"&gt;out&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="mi"&gt;12&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;      &lt;span class="mi"&gt;158&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;158&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;203&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;212&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;
&lt;span class="mi"&gt;13&lt;/span&gt;   &lt;span class="mi"&gt;170&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;168&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;169&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;203&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;212&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;37&lt;/span&gt;
&lt;span class="mi"&gt;14&lt;/span&gt;    &lt;span class="mi"&gt;37&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;37&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;37&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;218&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;240&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;107&lt;/span&gt;

&lt;span class="n"&gt;Trace&lt;/span&gt; &lt;span class="n"&gt;complete&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;tracert现在的主机:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;Tracing&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="n"&gt;gfrog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cn&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;210&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;51&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;163&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;over&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;maximum&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="n"&gt;hops&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

 &lt;span class="mi"&gt;1&lt;/span&gt;     &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;219&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;217&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;254&lt;/span&gt;
 &lt;span class="mi"&gt;2&lt;/span&gt;     &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;
 &lt;span class="mi"&gt;3&lt;/span&gt;     &lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;192&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;168&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;142&lt;/span&gt;
 &lt;span class="mi"&gt;4&lt;/span&gt;     &lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;198&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;225&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;221&lt;/span&gt;
 &lt;span class="mi"&gt;5&lt;/span&gt;     &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;112&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;89&lt;/span&gt;
 &lt;span class="mi"&gt;6&lt;/span&gt;    &lt;span class="mi"&gt;23&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;22&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;23&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;112&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;170&lt;/span&gt;
 &lt;span class="mi"&gt;7&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;        &lt;span class="o"&gt;*&lt;/span&gt;       &lt;span class="mi"&gt;32&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;127&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;216&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;41&lt;/span&gt;
 &lt;span class="mi"&gt;8&lt;/span&gt;    &lt;span class="mi"&gt;45&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;46&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;48&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;112&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;250&lt;/span&gt;
 &lt;span class="mi"&gt;9&lt;/span&gt;    &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;58&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;59&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;112&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;254&lt;/span&gt;
&lt;span class="mi"&gt;10&lt;/span&gt;    &lt;span class="mi"&gt;53&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;56&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;    &lt;span class="mi"&gt;53&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;202&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;112&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;53&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;202&lt;/span&gt;
&lt;span class="mi"&gt;11&lt;/span&gt;   &lt;span class="mi"&gt;239&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;236&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;237&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;219&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;158&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;97&lt;/span&gt;
&lt;span class="mi"&gt;12&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;      &lt;span class="mi"&gt;220&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;     &lt;span class="mi"&gt;219&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;158&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;28&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;190&lt;/span&gt;
&lt;span class="mi"&gt;13&lt;/span&gt;   &lt;span class="mi"&gt;243&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;239&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;     &lt;span class="mi"&gt;218&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;105&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;61&lt;/span&gt;
&lt;span class="mi"&gt;14&lt;/span&gt;   &lt;span class="mi"&gt;242&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;242&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;249&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;210&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;52&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;206&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="mi"&gt;15&lt;/span&gt;   &lt;span class="mi"&gt;228&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;222&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;227&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;210&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;51&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;63&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="mi"&gt;16&lt;/span&gt;   &lt;span class="mi"&gt;225&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;226&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;228&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;210&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;51&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;63&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;66&lt;/span&gt;
&lt;span class="mi"&gt;17&lt;/span&gt;   &lt;span class="mi"&gt;221&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;229&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;     &lt;span class="mi"&gt;210&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;51&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;163&lt;/span&gt;
&lt;span class="mi"&gt;18&lt;/span&gt;   &lt;span class="mi"&gt;234&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;228&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;     &lt;span class="o"&gt;*&lt;/span&gt;     &lt;span class="mi"&gt;210&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;51&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;163&lt;/span&gt;
&lt;span class="mi"&gt;19&lt;/span&gt;   &lt;span class="mi"&gt;233&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;229&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;   &lt;span class="mi"&gt;230&lt;/span&gt; &lt;span class="n"&gt;ms&lt;/span&gt;  &lt;span class="mi"&gt;210&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;51&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;163&lt;/span&gt;

&lt;span class="n"&gt;Trace&lt;/span&gt; &lt;span class="n"&gt;complete&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;看起来速度还是差不少的,
但是web访问218.240.8.107这个测试地址速度实在是慢的可以,
比访问现在的主机慢很多.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Mon, 28 May 2007 02:37:32 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-05-28:/2007/05/turn-to-wordpress/</guid></item><item><title>都来答答这些问题吧</title><link>https://www.gfrog.net/2007/04/interview-questions/</link><description>&lt;p&gt;细看起来,似乎这些东西都见过.细说起来,这些东西哪个都说不明白是啥.看似能说清楚的,写起来又发现自己还是说不明白.唉,自己这半吊子水平....&lt;/p&gt;
&lt;p&gt;来自&lt;a href="http://blog.xfocus.net/index.php?blogId=3"&gt;baozi的blog&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;线程和进程有什么区别&lt;/li&gt;
&lt;li&gt;pptp和pppoe有什么区别&lt;/li&gt;
&lt;li&gt;md5是什么算法&lt;/li&gt;
&lt;li&gt;apache1和apache2有什么区别&lt;/li&gt;
&lt;li&gt;电子签名怎么工作&lt;/li&gt;
&lt;li&gt;什么是jail&lt;/li&gt;
&lt;li&gt;spantree协议说说&lt;/li&gt;
&lt;li&gt;列举加密算法，并且分类&lt;/li&gt;
&lt;li&gt;什么是正则表达式，用一个 shell检测一个文件是否是c写的&lt;/li&gt;
&lt;li&gt;邮件系统的认证方法？说一下邮件系统的证书认证。&lt;/li&gt;
&lt;li&gt;交换机和路由器的区别&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;青蛙自己感觉能说的清楚的只有3,6,7,11.&lt;/p&gt;
&lt;p&gt;3: md5是散列算法,或者叫摘要算法.具体咋回事,偶不知道 - -b&lt;/p&gt;
&lt;p&gt;6: jail 一个跟系统相对隔离的环境,
   用于安全执行一些特定的服务或者建立蜜罐.
   第一次接触jail这个概念还是在baozi大哥在linuxsir上发的几个帖子里面.
   从那以后一直试图自己建立jail,但是一直未遂.&lt;/p&gt;
&lt;p&gt;7: spaningtree 生成树协议,用于消除第二层设备产生的环路.
   这个协议是偶当年在校园网里抓包发现的第一个比较特殊的协议(相对于arp ip tcp来说...)&lt;/p&gt;
&lt;p&gt;11: 交换机 二层设备,根据mac-端口对应表工作
   路由器 三层设备,根据ip-端口对应表工作&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Fri, 20 Apr 2007 21:47:43 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-04-20:/2007/04/interview-questions/</guid></item><item><title>我也说说网银</title><link>https://www.gfrog.net/2007/04/thought-about-net-bank/</link><description>&lt;p&gt;偶是比较后知后觉的那种人,今天才看到python-chinese邮件列表里看到有人说起
&lt;a href="http://www.billxu.com/friend/rms/an.open.letter.to.cmb.html"&gt;老徐的那封公开信&lt;/a&gt;
.google了一下,原来几个月以前各大媒体网站原来都报道过这封信.
老徐在公开信里面讲的那个宾馆里的故事实在是很搞笑,
但是偶不知道activex到底在网上银行交易里面扮演一个什么样的角色,
难道就这么不可或缺么?&lt;/p&gt;
&lt;p&gt;于是我继续google,似乎activex只是用来防止密码被键盘钩子截获.
似乎这只是对windows系统来说的?&lt;/p&gt;
&lt;p&gt;对于非win系统,还有这个问题么?偶不清楚,google也没有找到答案.
但是,activex对于windows就是安全的么? 似乎也不是,看看最近的
&lt;a href="http://www.cnbeta.com/modules.php?name=News&amp;amp;file=article&amp;amp;mode=flat&amp;amp;sid=22289"&gt;支付宝的activex控件缺陷&lt;/a&gt;
,看来activex反倒给系统留下了隐患.&lt;/p&gt;
&lt;p&gt;看到很多人说国外银行的网银都不用activex的,偶继续google之.&lt;/p&gt;
&lt;p&gt;似乎国外银行用的也跟我天朝银行是一样的东西嘛,
除了activex.128位SSL加密,数字证书,usb-key.无非也就是这些了.&lt;/p&gt;
&lt;p&gt;但是为啥洋人银行都不用activex呢?
大概洋人都穷,买不起windows,又不像我天朝人手一个盗版windows.
于是activex没了生长的土壤,自己也就躲一边去了.
写到这里不由得感叹我天朝昌盛,连微软都要另眼相看,
每次在天朝卖的windows都比在洋人那里卖的贵.&lt;/p&gt;
&lt;p&gt;扯得远了,嘿嘿.
至于这个why activex or why not activex的问题,现在还没有结果.
网友的力量能大过银行么? 也很难说.&lt;/p&gt;
&lt;p&gt;这次google过程,也发现了很多有趣的东东,最有意思的莫过于下面这封信了&lt;/p&gt;
&lt;p&gt;在Mozine论坛上
&lt;a href="http://forums.mozine.cn/index.php?showtopic=14478&amp;amp;st=0&amp;amp;p=79094&amp;amp;#entry79094"&gt;有人帖了一个北京银行客服的回信&lt;/a&gt;
,搞笑之极.实在怀疑写这封信的那位客服人员连什么是网页都不知道.&lt;/p&gt;
&lt;p&gt;引用一段,如下:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;您好，感谢您一直使用并支持北京银行个人网银系统，个人网银新版上线后，我们将不再支持Firefox浏览器，原因如下：&lt;/p&gt;
&lt;p&gt;1、Firefox作为一种开源的浏览器，要求开发的语言必须具有通用性，
   虽然firefox可以添加许多安全插件，但由于一些插件是第三方开发的，
   所以语言的差异性就更加的显著，很有可能造成浏览时出现问题。&lt;/p&gt;
&lt;p&gt;2、Firefox为了兼容windows，linux，unix和max os，必须制作一种统一的浏览器内核，
   而实际上，这些操作系统的网页浏览方式是不一样的，
   所以在css，javascript，vbscript等网页脚本语言的调用方式上也是不同的，
   因此，在用非IE的浏览器上使用网上银行会出现样式错乱或者使用出错的情况。&lt;/p&gt;
&lt;p&gt;3、原来的网银系统使用的框架主要是静态jsp实现方式，仅仅应用了很少的样式结构，
   所以，对于浏览器的兼容性基本没有影响。
   但是新的网银系统使用了较多的css和较高版本的js，
   所以会出现对于firefox不兼容的问题。&lt;/p&gt;
&lt;p&gt;鉴于上述原因，我们建议你使用系统自带的IE浏览器，由此给您带来的不便，敬请谅解，
在中国传统的春节到来之际，北京银行祝您工作顺利，节日快乐，
希望您能一如既往的支持北京银行。谢谢！　&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;有人回帖说这封信也就是标点用的还没有错误,还算比较贴切,呵呵.&lt;/p&gt;
&lt;p&gt;ps.最后搜了一下linux下的键盘记录器,似乎只有到内核里面才能做这件事情,
但是加载驱动之类的操作都是root才能干的,
而linux的使用哲学就是强烈不建议使用root账户作为日常工作账户
(ubuntu甚至干脆不给用户root账号的密码),
这跟在windows里面没有管理员权限就寸步难行有很大的不同.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 04 Apr 2007 02:21:38 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-04-04:/2007/04/thought-about-net-bank/</guid></item><item><title>奋斗三天 LFS终于成功</title><link>https://www.gfrog.net/2007/04/make-lfs-6-1-work-after-3-days-work/</link><description>&lt;p&gt;从前天晚上开始做lfs-6.1,到今天上午12点,终于启动到了lfs系统下面.&lt;/p&gt;
&lt;p&gt;先恭喜自己一下.呼呼.&lt;/p&gt;
&lt;p&gt;这次lfs不是那么完美的,因为最后一步编译的内核没有起来.
估计是没有initrd的原因.但是说到底还是我的内核配置有问题.
我直接把宿主系统上的2.6.18内核抓来用了.嘿嘿,这还是算是lfs的吧...&lt;/p&gt;
&lt;p&gt;秀几个图吧.&lt;/p&gt;
&lt;p&gt;先是grub:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.cn/attachments/month_0704/x200741131246.jpg"&gt;&lt;img alt="grub.jpg" src="http://gfrog.cn/attachments/month_0704/x200741131246.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后是启动起来,login的界面: (嗯,我把这个系统命名为gLinux0.02 哈哈 大家还记得gLinux0.01吧 -_-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.cn/attachments/month_0704/4200741131311.jpg"&gt;&lt;img alt="login.jpg" src="http://gfrog.cn/attachments/month_0704/y200741131320.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后是uname -a: lfs-6.1默认的是2.6.11.2内核,但是我编译的起不来,现在看到的是debian的2.6.18内核.&lt;/p&gt;
&lt;p&gt;以后偶再也不敢说编译内核简单了,最近10次编译内核全部以失败告终,泪...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.cn/attachments/month_0704/p200741131331.jpg"&gt;&lt;img alt="uname.jpg" src="http://gfrog.cn/attachments/month_0704/o200741131338.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最后是lfs ID的截图:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gfrog.cn/attachments/month_0704/y200741131248.jpg"&gt;&lt;img alt="lfsID.jpg" src="http://gfrog.cn/attachments/month_0704/5200741131251.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;列一下我的参考资料吧.这次做lfs偶换掉了几个6.1默认的包,用了6.1.1或者6.2中的包.所以从6.1的手册到6.2的手册都看了一些.下面是6.1跟6.1.1的中文版.&lt;/p&gt;
&lt;p&gt;6.1中文:　&lt;a href="http://lfs.linuxsir.org/doc/lfs6.1zh/index.html"&gt;http://lfs.linuxsir.org/doc/lfs6.1zh/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6.1.1中文: &lt;a href="http://www.dogdoghome.com/lamp/Linux/LFS-6.1.1/index.html"&gt;http://www.dogdoghome.com/lamp/Linux/LFS-6.1.1/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6.2英文: &lt;a href="http://www.linuxfromscratch.org/lfs/view/stable/index.html"&gt;http://www.linuxfromscratch.org/lfs/view/stable/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;还有就是linuxsir上
&lt;a href="http://www.linuxsir.org/bbs/showthread.php?t=244052"&gt;大牛youbest的文章&lt;/a&gt;
,我基本上是照这里作的,真是太方便了,真诚感谢这样的大牛的付出.&lt;/p&gt;
&lt;p&gt;最后,要说lfs-6.1里面的一个bug,
就是Tcl-8.4.9的configure脚本有一个错误,
cofigure的时候过不去.要用下面的命令修改它的configure脚本:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;kbd&amp;gt;&lt;/span&gt;sed -i &amp;quot;s/relid&amp;#39;/relid/&amp;quot; configure&lt;span class="nt"&gt;&amp;lt;/kbd&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;这个错误在lfs-6.1.1里面改正了.如果还在用lfs-6.1的手册,那么就要注意这点了.&lt;/p&gt;
&lt;p&gt;Del.icio.us : &lt;a href="http://del.icio.us/tag/linux+lfs"&gt;linux lfs&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sun, 01 Apr 2007 13:13:39 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-04-01:/2007/04/make-lfs-6-1-work-after-3-days-work/</guid><category>lfs</category><category>linux</category></item><item><title>回归Debian的怀抱</title><link>https://www.gfrog.net/2007/03/go-back-to-use-debian/</link><description>&lt;p&gt;用来用去,还是觉得debian最亲切,最自然.
虽然ubuntu有多般的好处,但是似乎跟我想要的linux差的很多.&lt;/p&gt;
&lt;p&gt;装回debian,用它作宿主系统,研究一下lfs.&lt;/p&gt;
&lt;p&gt;从昨天开始装debian,但是苦于没有合适的源,
直到今天也没升级完毕.真是郁闷死我了.&lt;/p&gt;
&lt;p&gt;昨天用cn99跟geekbone,apt-get update了好久好久.
查了一下它俩的ip,竟然在电信线路上,怪不得只有10KB/s左右的速度.&lt;/p&gt;
&lt;p&gt;今天被cn99逼的没有办法,试了下教育网的源,仍然是10KB/s.
实在没辙了,google了一下,找到了
&lt;a href="http://debian.csie.ntu.edu.tw/"&gt;台湾大学的debian镜像&lt;/a&gt;
,速度竟然能达到150KB/s,轻松的完成了upgrade.实在是太赞了.&lt;/p&gt;
&lt;p&gt;google的时候
&lt;a href="http://www.linuxsir.org/bbs/showthread.php?t=218212"&gt;在linuxsir上发现了一个小tip&lt;/a&gt;
,就是apt-spy.这个小东西可以自动测试一个地区的源的速度,
然后自动生成一个sources.list.真是一个很好用的小东东.&lt;/p&gt;
&lt;p&gt;这个apt-spy不是默认安装的,所以要先找到一个源来安装它.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;get&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;spy&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;mv&lt;/span&gt; &lt;span class="n"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="n"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bak&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;backup&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;man&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;spy&lt;/span&gt;  &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="err"&gt;获取详细的使用方法&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;spy&lt;/span&gt; &lt;span class="k"&gt;update&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="err"&gt;更新您的镜像列表文件&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;spy&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mirrors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt;
&lt;span class="o"&gt;#&lt;/span&gt; &lt;span class="n"&gt;apt&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;spy&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="n"&gt;testing&lt;/span&gt;  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;Asia&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="err"&gt;在亚洲区寻找速度最快的&lt;/span&gt;&lt;span class="n"&gt;testing版镜像&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt;并生成&lt;/span&gt; &lt;span class="n"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;list文件&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="err"&gt;也可使用&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="err"&gt;参数指定写入文件&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;正如
&lt;a href="http://www.linuxsir.org/bbs/showthread.php?t=218212"&gt;linuxsir那篇文章&lt;/a&gt;
所说,这个过程十分的漫长(在我写这篇日志的时候,这个过程还在继续),
但是确实是一劳永逸的.
只要不更换网络接入方式,它生成的sources.list就可以一直用下去.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;update:&lt;/strong&gt; apt-spy测试了半个小时以后,终于找到了http://opensource.nchc.org.tw/debian 这个站点,能达到200多KB/s的速度.&lt;/p&gt;
&lt;p&gt;最后生成的sources.list如下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c"&gt;# sources.list generated by apt-spy v3.1&lt;/span&gt;
&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;ftp://opensource.nchc.org.tw/debian/&lt;/span&gt; &lt;span class="kp"&gt;testing&lt;/span&gt; &lt;span class="kp"&gt;main&lt;/span&gt;
&lt;span class="k"&gt;deb-src&lt;/span&gt; &lt;span class="s"&gt;ftp://opensource.nchc.org.tw/debian/&lt;/span&gt; &lt;span class="kp"&gt;testing&lt;/span&gt; &lt;span class="kp"&gt;main&lt;/span&gt;
&lt;span class="c"&gt;#deb http://security.debian.org/ stable/updates main&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;去opensource.nchc.org.tw看了一下,他提供如下镜像,按照下面重新修改一下apt-spy生成的源,然后就尽情的enjoy吧. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debian&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://opensource.nchc.org.tw/sources.list.html"&gt;參考 /etc/apt/sources.list 設定&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;http://opensource.nchc.org.tw/debian&lt;/span&gt; &lt;span class="kp"&gt;[stable|testing|unstable]&lt;/span&gt; &lt;span class="kp"&gt;main&lt;/span&gt; &lt;span class="kp"&gt;contrib&lt;/span&gt; &lt;span class="kp"&gt;non-free&lt;/span&gt;
&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;http://opensource.nchc.org.tw/debian-non-US&lt;/span&gt; &lt;span class="kp"&gt;[stable|testing|unstable]/non-US&lt;/span&gt; &lt;span class="kp"&gt;main&lt;/span&gt; &lt;span class="kp"&gt;contrib&lt;/span&gt; &lt;span class="kp"&gt;non-free&lt;/span&gt;
&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;http://opensource.nchc.org.tw/debian-security&lt;/span&gt; &lt;span class="kp"&gt;stable/updates&lt;/span&gt; &lt;span class="kp"&gt;main&lt;/span&gt; &lt;span class="kp"&gt;contrib&lt;/span&gt; &lt;span class="kp"&gt;non-free&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Unofficial APT&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KDE&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;http://opensource.nchc.org.tw/apt/kde/3.1&lt;/span&gt; &lt;span class="kp"&gt;woody&lt;/span&gt; &lt;span class="kp"&gt;main&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="http://free.nchc.org.tw/pmwiki/pmwiki.php/Main/IPv6?action=edit"&gt;I Pv 6&lt;/a&gt;
    &lt;a href="http://free.nchc.org.tw/pmwiki/pmwiki.php/Main/IPv6?action=edit"&gt;?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;http://opensource.nchc.org.tw/apt/ipv6&lt;/span&gt; &lt;span class="kp"&gt;[stable|testing|unstable]/ipv6&lt;/span&gt; &lt;span class="kp"&gt;./&amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="http://free.nchc.org.tw/pmwiki/pmwiki.php/Main/XFree86?action=edit"&gt;X Free 86&lt;/a&gt;
    &lt;a href="http://free.nchc.org.tw/pmwiki/pmwiki.php/Main/XFree86?action=edit"&gt;?&lt;/a&gt; 4.3&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;http://opensource.nchc.org.tw/apt/xfree86-4.3/woody&lt;/span&gt; &lt;span class="kp"&gt;./&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;ALSA&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;http://opensource.nchc.org.tw/apt/alsa&lt;/span&gt; &lt;span class="kp"&gt;woody&lt;/span&gt; &lt;span class="kp"&gt;sherpya&amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="http://free.nchc.org.tw/pmwiki/pmwiki.php/Main/OOo?action=edit"&gt;O Oo&lt;/a&gt;
    &lt;a href="http://free.nchc.org.tw/pmwiki/pmwiki.php/Main/OOo?action=edit"&gt;?&lt;/a&gt; Woody backport&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;http://opensource.nchc.org.tw/apt/OOo&lt;/span&gt; &lt;span class="kp"&gt;[stable|unstable]&lt;/span&gt; &lt;span class="kp"&gt;main&lt;/span&gt; &lt;span class="kp"&gt;contrib&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;a href="http://free.nchc.org.tw/pmwiki/pmwiki.php/MPlayer/RealPlayer?action=edit"&gt;Real Player&lt;/a&gt;
    &lt;a href="http://free.nchc.org.tw/pmwiki/pmwiki.php/MPlayer/RealPlayer?action=edit"&gt;?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;http://opensource.nchc.org.tw/apt/marillat&lt;/span&gt; &lt;span class="kp"&gt;[stable|testing|unstable]&lt;/span&gt; &lt;span class="kp"&gt;main&amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;DRBL&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;deb&lt;/span&gt; &lt;span class="s"&gt;http://opensource.nchc.org.tw/apt/drbl&lt;/span&gt; &lt;span class="kp"&gt;stable&lt;/span&gt; &lt;span class="kp"&gt;main&lt;/span&gt; &lt;span class="kp"&gt;contrib&amp;lt;br&amp;gt;&amp;lt;/br&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 28 Mar 2007 23:43:29 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-03-28:/2007/03/go-back-to-use-debian/</guid><category>debian</category><category>linux</category><category>apt</category><category>mirror</category></item><item><title>测试picasa帖图</title><link>https://www.gfrog.net/2007/02/test-link-pictures-from-picasa/</link><description>&lt;p&gt;&lt;a href="http://picasaweb.google.com/gfrogpic/BLOG/photo#5036249327953060866"&gt;&lt;img alt="1" src="http://lh6.google.com/image/gfrogpic/ReRaFKDxJAI/AAAAAAAAAQI/KXqezGV92Tw/s288/2.jpg"&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Wed, 28 Feb 2007 00:22:00 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-02-28:/2007/02/test-link-pictures-from-picasa/</guid></item><item><title>来说说bblean吧</title><link>https://www.gfrog.net/2007/02/talk-a-bit-about-bblean/</link><description>&lt;p&gt;看到
&lt;a href="http://www.keyer.net/"&gt;keyer&lt;/a&gt;
推荐的多桌面软件，让青蛙想起了bblean。正好昨天跟
&lt;a href="http://crystalharp.blogspot.com/index.html"&gt;conan&lt;/a&gt;
说起了它。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" src="http://bb4win.sourceforge.net/bblean/bblean_logo.png"&gt;&lt;/p&gt;
&lt;p&gt;对于有linux使用经验的人来说，bblean看起来会很舒服，而且也会很容易上手。
因为bblean就是linux下面的桌面管理器blackbox的windows版本中的一个。&lt;/p&gt;
&lt;p&gt;大量的插件可以使自己的桌面高度定制，内存占用又很低，
对于我这种有时候想疯狂的节约内存的人是最合适不过的了。&lt;/p&gt;
&lt;p&gt;上几个大虾们的图好了，
青蛙自己的桌面就是用了bblean默认的布局，没有改，就不秀了。&lt;/p&gt;
&lt;p&gt;（下面的图片都来自
&lt;a href="http://bbs.deepin.org"&gt;deepin.org&lt;/a&gt;
的
&lt;a href="http://bbs.deepin.org/thread.php?fid=37"&gt;bblean&lt;/a&gt;
版）&lt;/p&gt;
&lt;p&gt;rmb之
&lt;a href="http://bbs.deepin.org/read.php?tid=90727"&gt;颓废的烟头&lt;/a&gt;
：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bbs.deepin.org/attachment/Mon_0701/37_99484_eb84ceb4621524a.jpg"&gt;&lt;img alt="3" src="http://bbs.deepin.org/attachment/Mon_0701/37_99484_eb84ceb4621524a.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bbs.deepin.org/read.php?tid=14685"&gt;kavana&lt;/a&gt;
（这个效果你能认出它是windowsXP么? :p）：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bbs.deepin.org/attachment/37_58072_da01620bfc2af62.jpg"&gt;&lt;img alt="4" src="http://bbs.deepin.org/attachment/37_58072_da01620bfc2af62.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bbs.deepin.org/attachment/37_58072_366272287934ab0.jpg"&gt;&lt;img alt="5" src="http://bbs.deepin.org/attachment/37_58072_366272287934ab0.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;更多的样式跟截图看
&lt;a href="http://bbs.deepin.org/thread.php?fid=37"&gt;这里&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;发一点牢骚，青蛙发现很多bblean桌面都有很重的模仿windows工具栏的倾向。
大概是因为很多人受windows荼毒太深，呵呵。
但是，bblean的操作习惯跟windows完全不同，
扔一个不伦不类的"开始"在那里， 似乎就是个摆设，
因为在bblean里，在桌面随便什么地方点鼠标，主菜单就出来了，
干嘛还要费事去点一下开始...&lt;/p&gt;
&lt;p&gt;青蛙不是愤青，青蛙只想说，不要单纯的为了模仿而模仿。&lt;/p&gt;
&lt;p&gt;有关bblean的更多情况，大家可以看这里：
&lt;a href="http://bb4win.sourceforge.net/bblean/"&gt;http://bb4win.sourceforge.net/bblean/&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Sat, 03 Feb 2007 02:06:13 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-02-03:/2007/02/talk-a-bit-about-bblean/</guid><category>desktop</category><category>blackbox</category></item><item><title>今日主旋律:回家</title><link>https://www.gfrog.net/2007/01/go-back-home-today/</link><description>&lt;p&gt;等这个日子实在太久了.&lt;/p&gt;
&lt;p&gt;今天,不顾一切,回家!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Thu, 25 Jan 2007 23:41:18 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-01-25:/2007/01/go-back-home-today/</guid></item><item><title>网安沙龙聚会记</title><link>https://www.gfrog.net/2007/01/niap-meetup/</link><description>&lt;p&gt;网安的各位终于又聚到一起了,大家一起坐了一会,然后出去饭饭.&lt;/p&gt;
&lt;p&gt;小树跟fxlt都刚考研完毕,fxlt看来考的不错,预祝fxlt能顺利考上研究生.&lt;/p&gt;
&lt;p&gt;小树自己说自己今年放弃考研了,明年再考,那加油一下,明年大家一起努力.&lt;/p&gt;
&lt;p&gt;uty签去珠海了,他自己说自己跟珠海很是有缘,转了一圈又转回去了,预祝uty下学期实习顺利.&lt;/p&gt;
&lt;p&gt;jklee今天穿的很像老师,跟以前感觉不一样,貌似jklee下学期还要讲好几门课,预祝他事事顺利.&lt;/p&gt;
&lt;p&gt;报告完毕,任务完成.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gfrog</dc:creator><pubDate>Tue, 23 Jan 2007 00:10:49 +0800</pubDate><guid isPermaLink="false">tag:www.gfrog.net,2007-01-23:/2007/01/niap-meetup/</guid></item></channel></rss>