<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
    >
<channel>
    <title>&#x67AB;&#x8A00;&#x67AB;&#x8BED;(IPFS&#x7248;)</title>
    <atom:link href="https://justinyan.eth.limo/rss.xml" rel="self" type="application/rss+xml" />
    <link>https://justinyan.eth.limo/</link>
    <description><![CDATA[
    <p>Hi, 我是Justin，一个苹果开发者。</p>
<p>业余做<a href="https://fyfy.fm">《枫言枫语》播客</a>，也写一个叫<a href="https://replay.cafe">Re:Play</a>的音乐Newsletter，欢迎关注我在Planet上的博客。</p>

    ]]></description>
    
    
    <item>
        <title>Vol. 154 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;40&#xFF1A;&#x5BB6;&#x52A1;&#x673A;&#x5668;&#x4EBA;&#x6765;&#x4E86;&#xFF1F;AI &#x6D4F;&#x89C8;&#x5668;&#x4E95;&#x55B7;&#xFF0C;&#x5927;&#x8BED;&#x8A00;&#x6A21;&#x578B;&#x7EE7;&#x7EED;&#x8FDB;&#x5316;</title>
        <link>https://justinyan.eth.limo/F44EDEC4-2874-42B5-89F5-4F34F7ABD07C/</link>
        <guid>https://justinyan.eth.limo/F44EDEC4-2874-42B5-89F5-4F34F7ABD07C/</guid>
        <pubDate>Mon, 10 Nov 2025 20:16:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://cdn.justinbot.com/wp-content/uploads/2025/11/Podcast154_v1.png" alt="" /></p> 
<p>甚是想念之二😂</p> 
<p>这期节目录制的时候NEO刚发布，结果现在又来个小鹏机器人，最近大家都开始卷机器人领域了，不错不错。</p> 
<p>p.s. 节目录制时NEO机器人刚刚发布，次日MKBHD频道的视频介绍，该机器人演示视频为真人动作捕捉远程操作，并非实机演示，且交货日期是明年的某个未知时间。与该机器人发布视频令人兴奋之对比，这个真相未免有点残酷。</p> 
<h2>时间轴</h2> 
<p>00:00:28 人形家务机器人 1X NEO 预售，约15万元<br /> 00:02:02 机器人续航4小时，外形可能引发“恐怖谷效应”<br /> 00:05:33 机器人联网与隐私担忧，离线模型的重要性<br /> 00:10:52 机器人将替代重复性劳动，人类专注情感服务<br /> 00:14:50 OpenAI 进军音乐模型，挑战 Suno AI<br /> 00:24:51 OpenAI 推出 AI 浏览器 Atlas<br /> 00:32:28 Firefox 测试免费内置 VPN，主打隐私安全<br /> 00:34:06 Chrome 将加入原生垂直标签页功能<br /> 00:35:42 微软与 OpenAI 重新达成协议，微软持股27%<br /> 00:36:59 GitHub 推出 AgentHQ，实现 AI 团队式协作写代码<br /> 00:40:25 DeepSeek 在加密交易与模型性能上表现亮眼<br /> 00:43:39 DeepSeek 发布开源 OCR 模型，性能超越传统方案<br /> 00:45:15 Claude 推出 Haiku 4.5，性能接近旗舰但成本更低<br /> 00:46:46 ChatGPT 开放成人内容限制，反击 Grok<br /> 00:49:13 AI 红绿灯系统以提升交通效率<br /> 00:50:55 俄亥俄州禁止人类与AI结婚，反映伦理担忧<br /> 00:51:58 Sora 开放安卓预注册，好莱坞因版权风险开始反制<br /> 01:02:36 ChatGPT 推出即时结账功能，可直接完成支付<br /> 01:03:58 Claude 订阅体系引争议<br /> 01:09:11 Google 量子计算取得重要进展，误差率更低<br /> 01:10:03 Intel 发布 1.8nm 芯片，与 Apple M5 竞争<br /> 01:11:53 影视飓风发布相机应用，展示团队商业化能力<br /> 01:27:57 太空反射镜计划提供夜间阳光</p> 
<h2>幕后制作</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: 静静</li> 
 <li>监制: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
</ul> 
<h2>联系我们</h2> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 153 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;39&#xFF1A;&#x82F9;&#x679C;&#x7684;AI&#x5E03;&#x5C40;&#x3001;iPhone Air&#x8C03;&#x6574;&#x4E0E;&#x672A;&#x6765;&#x751F;&#x6001;&#x5F00;&#x653E;</title>
        <link>https://justinyan.eth.limo/B9378221-21C3-4491-A6C8-3FC0623389BF/</link>
        <guid>https://justinyan.eth.limo/B9378221-21C3-4491-A6C8-3FC0623389BF/</guid>
        <pubDate>Mon, 03 Nov 2025 17:24:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/11/Podcast-Cover-v153.png" alt="" /></p> 
<p>好久不见，甚是想念！</p> 
<p>国庆放了个长假，结果我台一放就一个月了😂</p> 
<p>感谢小伙伴们的关注，催更已经收到，我们回来啦！</p> 
<p>本期快乐星球，一下聊得有点嗨，分为两集播出，先让我们走进上集：苹果新闻。</p> 
<p>自力也发布了新App: <a href="https://apps.apple.com/cn/app/id1584095090">2Camera</a>，在iPhone上支持两个摄像头同时拍摄，双份故事， 双倍精彩，一键合成录制画中画。欢迎各位小伙伴们下载试用👏。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 请听我拖更狡辩、AI新品密集发布</li> 
 <li>00:01:20 Apple Intelligence现状与体验问题</li> 
 <li>00:03:03 Xcode接入AI、苹果迭代节奏与挑战</li> 
 <li>00:04:17 iPhone 17热卖、iPhone Air受eSIM影响销量低迷</li> 
 <li>00:12:07 个人双机需求、携号转网计划</li> 
 <li>00:16:26 iPhone Air停产、Presto无线升级技术</li> 
 <li>00:22:02 Tim Cook缅怀Steve Jobs、领导成绩、创新挑战</li> 
 <li>00:30:38 美国科技经济韧性、AI泡沫</li> 
 <li>00:32:36 iPhone 17 Pro Max氧化传闻、Liquid Glass更新</li> 
 <li>00:37:35 iPhone 18相机按钮调整、护照数字化</li> 
 <li>00:43:19 数据迁移、智能床垫、苹果MCP协议</li> 
 <li>00:51:50 节目总结与下集预告</li> 
</ul> 
<h2>幕后制作</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: 静静</li> 
 <li>监制: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
</ul> 
<h2>联系我们</h2> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 152 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;38: Codex&#x8FFD;&#x8D76;Claude Code, Qwen&#x5F00;&#x6E90;LLM&#x7A81;&#x7834;&#x4E00;&#x4E07;&#x4EBF;&#x53C2;&#x6570;</title>
        <link>https://justinyan.eth.limo/F68865DE-F611-434B-91F6-EB14816C2AC7/</link>
        <guid>https://justinyan.eth.limo/F68865DE-F611-434B-91F6-EB14816C2AC7/</guid>
        <pubDate>Thu, 25 Sep 2025 19:37:48 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/09/Podcast-Cover-v150_cover.png" alt="" /></p> 
<p>迎中秋，庆国庆，各位听众姥爷们假期好🎉</p> 
<p>最近OpenAI的Codex在写代码能力上追赶竞争对手Anthropic的Claude Code，还推出GPT-5-Codex专用模型，双方差距正在缩小。</p> 
<p>Google推出Nano Banan（Gemini 2.5 Flash Image）文生图模型，因人像生成稳定，效果拔群。</p> 
<p>阿里的Qwen3-Mac-Preview发布，成为国内首个超1万亿参数的大语言模型。</p> 
<p>感觉今年国内的LLMs追赶速度很快，我们节目里聊聊。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:32 iPhone 17系列预购与购买体验</li> 
 <li>00:03:49 苹果或推出太阳眼镜大小的Vision Pro设备</li> 
 <li>00:04:03 Meta与Ray-Ban合作发布新款内置显示器的眼镜</li> 
 <li>00:08:04 iPhone 17系列支持25W无线快充</li> 
 <li>00:11:11 Xcode 26支持使用Claude模型</li> 
 <li>00:13:07 苹果开发全新操作系统"Charismatic" 将用于智能家居设备</li> 
 <li>00:16:01 OpenAI 发布 GPT-5-Codex，大幅提升代码生成和审查能力</li> 
 <li>00:19:36 OpenAI 正式官宣ChatGPT的MCP功能上线。目前仅Plus和Pro用户可用</li> 
 <li>00:21:09 OpenAI 推出 GPT-5 Thinking 思考时间调节功能</li> 
 <li>00:30:05 OpenAI 正式向免费用户开放 ChatGPT Projects 功能</li> 
 <li>00:31:39 OpenAI CEO 透露 GPT-6 开发计划 将强化个性化与记忆功能</li> 
 <li>00:32:57 ChatGPT Real-time Voice Agent功能推出</li> 
 <li>00:22:43 Nano Banana在手办Prompt生成方面表现出色，细节保持度高</li> 
 <li>00:28:38 Nano Banana集成到Photoshop</li> 
 <li>00:35:39 美团发布LongCat Flash Chat大语言模型</li> 
 <li>00:35:43 阿里推出Qwen3 Max Preview，参数超万亿，能力强大且开源</li> 
 <li>00:36:37 阿里推出魔改版VS Code插件Qoder</li> 
 <li>00:37:38 中国实行AI生成内容标志办法，DeepSeek为AI内容添加标志</li> 
 <li>00:38:05 DeepSeek V3.1出现严重Bug，随机插入“极”字</li> 
 <li>00:40:15 DeepSeek V3.1与国产芯片</li> 
 <li>00:43:08 Anthropic推出Claude浏览器AI助手，可直接操作网页</li> 
 <li>00:43:15 Google将Gemini放入Chrome，但目前仅限美国地区</li> 
 <li>00:47:10 Anthropic CEO预测AI将在3-6个月内编写90%代码</li> 
 <li>00:51:37 Anthropic宣布Claude模型可主动终止危险对话</li> 
 <li>00:53:13 Perplexity提议340亿美元收购Google Chrome</li> 
 <li>00:53:46 AI智能穿戴硬件Looki发布</li> 
 <li>00:55:41 Meta考虑缩减AI部门规模，重组团队，壮大超级智能部门</li> 
 <li>00:57:35 中国推出SIM卡大小的SSD，技术领先</li> 
 <li>00:58:00 ROG 枪神9笔记本支持快拆，方便升级硬件</li> 
 <li>01:18:16 祝大家国庆假期愉快🎉</li> 
</ul> 
<h2>幕后制作</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: 静静</li> 
 <li>监制: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
</ul> 
<h2>联系我们</h2> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5929;&#x4E0B;&#x4E4B;&#x7269;&#x751F;&#x4E8E;&#x6709;&#xFF0C;&#x6709;&#x751F;&#x4E8E;&#x65E0;&#x3002;</title>
        <link>https://justinyan.eth.limo/45929B35-7932-4FAC-B205-DEC8768DBD4F/</link>
        <guid>https://justinyan.eth.limo/45929B35-7932-4FAC-B205-DEC8768DBD4F/</guid>
        <pubDate>Mon, 22 Sep 2025 17:43:02 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Some notes from 25/09/18-25/09/20.</p> 
<h2>1. SLOW DOWN</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/SLOW_DOWN_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/SLOW_DOWN_002.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-09-18</em></p> 
<p>not everything needs to be rushed.</p> 
<h2>2. 时隔9年，Sarah McLachlan居然发新专辑了！《Better Broken》强势回归</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/sarah_mclachlan_better_broken_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/sarah_mclachlan_better_broken_002.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-09-19</em></p> 
<p>我最早是听Sarah McLachlan 1997年这张《Surfacing》（P2）‌知道这位加拿大歌手，强有力的唱法令人印象深刻。</p> 
<p>这张专辑是Sarah时隔9年的回归之作，同名主打《Better Broken》的编曲就很Sarah，优美的旋律，华丽的转音，没有声嘶力竭，轻松讲述一个故事。</p> 
<p>我总觉得Sarah的歌有种伤感但不激烈，澎湃但不过分。总之，周五听到Sarah新专很开心。😁</p> 
<h2>3. 天下之物生于有，有生于无。</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/laozi_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/laozi_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/laozi_003.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-09-20</em></p> 
<p>今天在读《老子》，颇有相见恨晚之感。</p> 
<p>“反也者，道之动也。弱也者，道之用也。天下之物生于有，有生于无。”</p> 
<p>反、弱、无，不仅在百家争鸣时代老子与众不同，在现如今也是独树一帜。</p> 
<p>反，是从有限到无限的突破；弱，是万事万物的初始状态，意味着生机；无，则是宇宙的起点，无创造了“有”。</p> 
<p>过去半年因为各种各样的原因把自己塞得很满，也就是去了空间，失去了“无”。既然不存在“无”，自也不会诞生“有”。</p> 
<p>是以接下来需要创造空间，创造“无”，无生有，有生天下万物。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x542C;&#x8BF4;iPhone Air&#x5F88;&#x8584;&#xFF0C;&#x6211;&#x4ECE;&#x62BD;&#x5C49;&#x91CC;&#x638F;&#x51FA;&#x4E86;&#x5F53;&#x5E74;&#x6700;&#x8584;&#x7684;iPhone 6</title>
        <link>https://justinyan.eth.limo/FCBFC628-0910-4817-83D7-1A1FAB6C930B/</link>
        <guid>https://justinyan.eth.limo/FCBFC628-0910-4817-83D7-1A1FAB6C930B/</guid>
        <pubDate>Fri, 19 Sep 2025 10:42:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Some notes from 25/09/08 - 25/09/12</p> 
<h2>1. 公益或慈善是什么？</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/charity_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/charity_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/charity_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/charity_004.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-09-08</em></p> 
<p>上周五公司内有个公益活动举办，我“买了”一个绿植和一个小朋友画的明信片。这些义卖活动筹得得的善款将全数捐出（我其实不太了解）。</p> 
<p>当时我想到这个问题“公益或慈善是什么？”</p> 
<p>两年前我们和是光诗歌的两位朋友录了《Vol. 94 是光诗歌: 用诗歌发现大山孩子手里的光》这期节目。当时主要聊的是这个项目本身，以及公益能给山里的孩子带来什么。</p> 
<p>那时候康瑜说更希望捐款人采用月捐方式，我就一直是是光诗歌的捐款人到现在。</p> 
<p>当时我考虑做捐款人除了因为录节目的关系外，也跟我那时候的思考有关系。“慈善”在佛教中是“布施”的一种，布施则是修行之始。</p> 
<p>布施有三种：一者财施，二者法施，三者无畏施。</p> 
<p>公司活动的义卖募捐就是财施，我参加的月捐也是财施。</p> 
<p>我从“正念”这种修行方式中获益良多，但慈善的修行没有像正念那样直接。</p> 
<p>现代人的智力水平，科技水平无疑远超佛陀时代，生活水平更好，物质更丰富，人也更干净卫生。</p> 
<p>但是论智慧，似乎那个时代的人们要更高一些。知识不是智慧，如果知识是素材，则智慧是洞察，如果知识是木柴，则智慧是火焰。现代人不仅沉迷于知识的海洋，更迷失在信息的海洋，却缺少对智慧的追求。</p> 
<p>有时候低头奔跑久了，我也常忘了这个朴素的思考。该时常抬头看看。</p> 
<h2>2. 透明的猴子看手机</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/monkey_doom_scrolling_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/monkey_doom_scrolling_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/monkey_doom_scrolling_003.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-09-09</em></p> 
<p>这是广州白鹅潭大湾区艺术中心的美术馆最近展出的艺术作品之一。</p> 
<p>几只透明充气膜的猴子坐在美术馆的各个角落（多是高高的地方）低头玩手机。</p> 
<p>虽然智人与猴子并不是同一物种，但它在上方低头玩手机，下面的人类抬头拿手机拍它，有点意思。</p> 
<p>iPhone面世以前排队、走路都在低头玩手机的人尚属少数，现在已成大多数。</p> 
<p>人类可以把自己禁锢在一个小屏幕里，一个大屏幕里，一个小隔间里，一个大房子里，一个群体故事里，一个宏大叙事里。</p> 
<p>人类真是一种神奇的东西。</p> 
<h2>3. 听说iPhone Air很薄，我从抽屉里掏出了当年最薄的iPhone 6</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/iPhone_6_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/iPhone_6_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/iPhone_6_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/iPhone_6_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/iPhone_6_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/iPhone_6_006.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-09-10</em></p> 
<p>发布于11年前（2014年）的iPhone 6曾经是“史上最薄iPhone”，达到6.9mm。我拍摄的这台是iPhone 6 Plus，稍厚一点，7.1mm。</p> 
<p>昨晚苹果发布的“真·史上最薄” iPhone Air厚度来到惊人的5.6mm！确实很夸张。</p> 
<p>还有两天（9月12日晚上8点）新iPhone就要发售啦，你要买哪一台呢🤔</p> 
<h2>4. 洗车的时候在想什么</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/car_washing_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/car_washing_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/car_washing_003.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-09-12</em></p> 
<p>在想那个喷水的横杆会不会一把削过来把我脑袋削没了。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 151 &#x53F2;&#x4E0A;&#x6700;&#x8584;iPhone Air: &#x82F9;&#x679C;25&#x79CB;&#x5B63;&#x53D1;&#x5E03;&#x4F1A;</title>
        <link>https://justinyan.eth.limo/4E045373-950F-4FEF-8C19-0180CA14E1B4/</link>
        <guid>https://justinyan.eth.limo/4E045373-950F-4FEF-8C19-0180CA14E1B4/</guid>
        <pubDate>Thu, 11 Sep 2025 22:07:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/09/Podcast151_v1.png" alt="" /></p> 
<p>苹果秋季发布会昨天（2025年9月10日凌晨1点）在Cupertino召开，请了一堆媒体到Apple Park里的Steve Jobs Theater，结束后还有Hands-on时间，这两天大家应该能看到铺天盖地的第一时间上手视频。</p> 
<p>发布会一共带来三个系列产品线更新:</p> 
<p>备受瞩目的iPhone一口气带来四个型号: iPhone 17, iPhone Air, iPhone 17 Pro和iPhone 17 Pro Max。</p> 
<p>AirPods Pro 3除了降噪与音质升级之外，还带来实时翻译，发布会效果惊艳。</p> 
<p>Apple Watch也带来全面升级: Apple Watch S11, Ultra 3, SE 3，一次过发布三款型号，也是比较罕见。</p> 
<p>苹果这两年在AI领域不太好过，被竞争对手吊打，今年WWDC25更没能如期交付去年的期货，备受各方媒体抱怨。于是这场发布会诚意十足，带来多款重磅升级，应该能提振一部分信心。</p> 
<p>不过我们现在买iPhone也除了受限于Apple Intelligence的使用范围，还要考虑eSIM的支持程度，选择起来更复杂了。</p> 
<p>那么听众朋友们，你们想买哪一款产品呢？欢迎在留言区一起交流哦。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:51 苹果发布会焦点: iPhone Air</li> 
 <li>00:03:04 发布会开场，Tim Cook不从彩虹门走入</li> 
 <li>00:04:55 多个讲解场景在各大Apple Store</li> 
 <li>00:06:20 AirPods Pro 3大升级: 降噪、音质提升，带来实时翻译</li> 
 <li>00:14:35 Apple Watch救命广告</li> 
 <li>00:15:54 Apple Watch全线产品升级Series 11，Ultra 3, SE 3</li> 
 <li>00:22:20 iPhone 17 来了！120Hz高刷屏</li> 
 <li>00:25:58 万众瞩目全新产品，史上最薄iPhone: iPhone Air</li> 
 <li>00:26:07 国行首台纯eSIM iPhone</li> 
 <li>00:35:06 回忆杀: Bumper居然回归了！</li> 
 <li>00:40:45 iPhone 17 Pro和Pro Max</li> 
 <li>00:42:27 这波Pro机型堆料很猛</li> 
 <li>00:49:35 那么买哪台iPhone比较好呢？苹果AI？eSIM？价格对比？</li> 
 <li>01:01:37 9月12日晚8点开售！</li> 
</ul> 
<h2>幕后制作</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: 静静</li> 
 <li>监制: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
</ul> 
<h2>联系我们</h2> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>I Wish I Could Go Travelling Again</title>
        <link>https://justinyan.eth.limo/160E4155-73D3-402D-A221-9C68140306DE/</link>
        <guid>https://justinyan.eth.limo/160E4155-73D3-402D-A221-9C68140306DE/</guid>
        <pubDate>Thu, 11 Sep 2025 16:42:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Some notes from 25/09/01-25/09/05.</p> 
<h2>1. 饭后散步时看到后备箱上多了只料理卡比</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/kirby_001.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-09-02</em></p> 
<p>应该是有人掉在地上，被路人捡起来顺手放到车屁股上的（请忽略脏兮兮的车子）</p> 
<h2>2. I Wish I Could Go Travelling Again</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/I_Wish_I_Could_Go_Travelling_Again_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/I_Wish_I_Could_Go_Travelling_Again_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/I_Wish_I_Could_Go_Travelling_Again_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/09/I_Wish_I_Could_Go_Travelling_Again_004.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-09-04</em></p> 
<p>I wish I could go travelling again<br /> It feels like the summer will never end<br /> And I've had such good offers from several of my friends<br /> I wish I could go travelling again<br /> I want to sit in my shades sipping my latte<br /> Beneath the awning of a famous café<br /> Jet-lagged and with our luggage gone astray<br /> I wish I could go travelling again<br /> I want a waiter to give us a reprimand<br /> In a language neither of us understand<br /> While we argue about the customs of the land<br /> I wish I could go travelling again<br /> I want to sit in traffic, anxious about our plane<br /> While you blasé comments drive me half insane<br /> I want to dash for shelter with you through the tropical rain<br /> I wish I could go travelling again<br /> I want to be awakened by a faulty fire alarm<br /> In an overpriced hotel devoid of charm<br /> Then fall asleep again back in your arms<br /> I wish I could go travelling again<br /> But how can I ever go travelling again<br /> When I know I'll just keep remembering again<br /> When I know I'll just be gathering again<br /> Reminders to break my heart</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vibe Coding: AI &#x65F6;&#x4EE3;&#x804C;&#x4E1A;&#x7A0B;&#x5E8F;&#x5458;&#x4F55;&#x53BB;&#x4F55;&#x4ECE;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/E83E2329-350C-424A-BD40-14E361B58E89/</link>
        <guid>https://justinyan.eth.limo/E83E2329-350C-424A-BD40-14E361B58E89/</guid>
        <pubDate>Tue, 26 Aug 2025 16:25:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/08/claude_code.jpeg" alt="" /></p> 
<p>两周前和<a href="https://onevcat.com/">喵神onevcat</a>录了这期节目: <a href="https://justinyan.me/post/6394">Vol. 150 喵神onevcat: Vibe Coding及日本工作与生活</a>。除了喵神在日本的工作与生活，我们还聊了Claude Code与沉迷Vibe Coding。</p> 
<p>2022年11月ChatGPT发布后，我就用它来帮我辅助写脚本，但它能做的东西比较有限，但到了Claude 3.5 Sonnet阶段(24年6月)，AI编程有了非常大的进步。不过那时候AI能完成的任务相对较小，稍微辅助的任务就会产生幻觉，所以还是有很多代码高度依赖程序员自身编写。而现在(2025年8月25日)Claude Code搭配Sonnet 4已经能将一些中型任务完成得非常好了，相比GPT-3.5已不可同日而语。</p> 
<h2>1. 从代码提示到AI生成</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/08/Intellisense_example_in_VS2008.png" alt="Code completion in Visual Studio 2008" /></p> 
<p>最早我们程序员写代码是没有任何代码提示的，后来编辑器/IDE加入了code completion功能，能在程序员写代码的时候自动将一些常用的关键字补全，提高了大家的编码效率。2021年OpenAI发布了GPT-3，GitHub基于这个模型开发了GitHub Copilot，能做的事情已经超出了简单的代码补全，实现了从注释到函数级别的补全，已经是一大进步。</p> 
<p>但是这个时期的Copilot我用得不算多，我记得当时让它补全Golang的GORM胶水代码，用于这类苦力活还不错。到了2024年，Cursor + Claude 3.5 Sonnet直接让AI写代码这事成为真正意义上的可能。虽然还是会有幻觉，还是会出问题，但已经很大程度上帮助程序员解决了机械重复的问题，只是我们依然需要把精力集中在“如何写好代码”，“如何确认AI没有瞎写代码”以及一旦遇到规模较大的项目，AI就会开始乱来。</p> 
<p>我在24年8月这期节目(<a href="https://justinyan.me/post/6042">Vol. 125 AI终于能帮我们写代码了吗？</a>)中提到AI对我来说很大的优点是让我从枯燥无味的体力活中解放出来，至少在心情上让我好不少。而Claude 3.5 Sonnet的缺点在今年Sonnet 4都得到了极大的改善，于是乎，真正沉迷Vibe Coding成为了可能。</p> 
<h2>2. 未来职业程序员与AI编程的关系会是怎样的？</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/08/ai_vibe.png" alt="" /></p> 
<p>昨天团队的小伙伴分享了他对Cursor和Claude的使用感受，正好我就和大家讨论了对AI编程的看法。</p> 
<p>在更早一点的阶段，AI是辅助，人才是主力。虽然现在AI也不能离开人，但某种程度上它已经能离开职业程序员，取决于你最终想要的东西是什么，以及你的团队里的“职业程序员”都能做什么。</p> 
<p>我有一个朋友，他的公司做编程教育相关的行业，利用LLM帮出题，学生批改作业，写公司代码。当时他很自豪地说已经把原本的10多个程序员砍到只剩2个就够了。</p> 
<p>这两年AI取代程序员的焦虑已经散布得够够的了，但是之前我完全没有这种顾虑，因为在以人为本的时代，AI始终只是个辅助。我当时的想法是：最好的使用AI编程的方式，是先master the skill，然后再用AI。</p> 
<p>但事实上我最近沉迷于Vibe的时候，已经大部分时间不会仔细Review AI写的代码了。而且Claude Opus根据我的Prompt已经能独立完成一个质量还不错的中型项目了，这个过程中，我很少需要关注代码细节，只有在陷入Debug难题的时候我会真的去看代码，改代码。所以如果有公司用2个程序员+AI取代10个程序员，我很能理解。</p> 
<p>因为他们雇佣的程序员的定位已经出现了分化：经验丰富的高级程序员和可替代性很强的劳动力。高级程序员负责设计和引导方向（Prompt），劳动力程序员负责实施（AI写代码）。</p> 
<p>所以未来的“职业程序员”应该是怎样的？</p> 
<p>今天有小伙伴提到“可以让产品经理去用AI写代码实现他的需求”。这当然可以，虽然在一个大型复杂项目里现阶段还不现实，因为付出的代价太大，弊大于利，还需要让AI继续发展一段时间。但是这个想法有一个前提，即我们是在大公司的背景下讨论“产品经理”和“程序员”。</p> 
<p>大公司用精细化分工加上规模效应使得他能用人海战术极大提高自己的产出，小团队完全没法跟他比。这在AI写代码成熟以前是大公司的优势，也是大公司职业细分的前提。如果未来“产品经理”也能用AI写出合适的代码，岗位边界重新洗牌，那么精细化分工可能也会做出变化。</p> 
<p>比如无法适应AI辅助的程序员将变成古法纯手工编码的“非遗”，而能够适应AI辅助的程序员可能成为AI编程专家。因为岗位细分是基于大家投入资源的不同来实现的，理论上程序员岗位投入代码编写的时间比产品经理岗位更多（假设未来还是这样划分岗位），那么AI编程专家将成为程序员的普遍水平，于是产品经理写代码在大公司内又变为不太符合效率。均值回归。</p> 
<p>在这个过程中，真正掌握AI编程的人就是新时代的程序员。</p> 
<p>作为一个职业程序员，如果还没有深度使用AI编程的话，最好是深度体验一下。不是说AI代表未来，而是有很多道理如果不亲身体验无法真的领悟。Sonnet 3.5的时候我觉得AI不过如此，Sonnet 3.7的时候我还觉得AI能帮我省下不少力气，现在Claude Code搭配Sonnet 4，我感觉AI已经在很多方面比我做得好了。</p> 
<p>技术的变革是快速的，相对而言人的变革是缓慢的。电报1837年发明，普及周期1850s-1890s，大概30-50年；电话1876年发明，普及周期1900s-1950s，大概也花了30-50年；互联网(TCP/IP)于1983年开始启用，普及周期1990s-2000s，只需要大约10年完成普及；移动互联网更快，2007-2015，只需不到10年。如果按照这个趋势，AI的普及很可能会超快，但大公司的组织架构很可能反应不过来，各个细分岗位之间即使有分工含糊之处，也将维持现状。</p> 
<p>但是大公司以外呢？真正开放拥抱新技术的行业将迎来创意遍地开花的结果。在这个过程中，如果大公司反应不过来，就很可能被小公司弯道超车。当然也有可能出现所谓的“超级个体”，一个人就能完成一个中小型公司能干的事情，不屑于参与大公司之间的竞争。</p> 
<p>无论何种情况出现，对于已经是职业程序员的朋友们来说，都应该接触AI编程，深度体验AI编程，好好体会下这个过程中思路的转变。每个人都有自己擅长的能力，生产工具发生巨变的时候，正是更好发掘我们能力的时候。这时候要想的是，什么是AI做不到的，只有我做得到的？</p> 
<p>比如LLM的context理论上不会无限长，所以在做一个需要综合考虑多种情况的大型项目时，常年深耕的有经验者会更有优势。但我想这是未来技术能解决的问题。</p> 
<p>比如LLM只管生成代码，不管真正意义上的代码质量（修改test case假装测试通过是常事），所以先master the skill再看他写的代码是否合理，在现阶段仍然有效。而且可预见的未来，应该比较长一段时间都是有效的。</p> 
<p>比如LLM如果帮我们解决了枯燥的体力活之后，我们更应该把专注力放在创意与设计上。不仅是视觉设计与产品设计，即使是写代码的创意与设计也是同理。于是涉猎广泛者将具备优势。具有天马行空的想象力，不错的审美能力，良好的编码能力，综合在一起，将能更好驾驭AI生成的结果。现在AI编码已经很好用了，但AI出设计稿还是差点意思。假设二者能力趋近，则没有什么能阻止具有创意的人进行创造了。</p> 
<p>苹果一直在努力耕耘它的开发者社区，其中帮助中小型开发者以更低的成本写出一个优秀的App就是他们很重要的一个目标。因为苹果生态中的大公司有资源可以自己解决问题，但中小型开发者们开发的App却占整个App Store数量的最大比例，是苹果生态非常重要的一环，解决了大量的长尾需求，也更需要苹果的支持。现在AI来了，AI的副作用也实现了类似的效果，让更多人以更低的门槛开始进入创造这个领域。</p> 
<h2>3. 沉迷Vibe Coding：像开了作弊器</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/08/cs4_1.jpg" alt="Dreamweaver CS4" /></p> 
<p>我一开始使用的是Claude $20/mo的Plan，聪明的Anthropic(开发Claude的公司)开启了严格的“防沉迷限制”（我大概高强度Vibe 1个多小时就不能用了，必须等几个小时技能冷却时间）。在跟喵神聊完之后，我开了$125/mo的版本，自此完全沉迷，周末Vibe了两天Vibe出了贤者时间。为什么会在Vibe沦陷之后索然无味呢？我感觉跟玩游戏开作弊器有一点像。</p> 
<p>之前我们一些关于AI的讨论是基于我们学写代码的经历来的。但是现在刚刚开始接触写代码的小朋友，可能上手就是AI辅助，他们很可能会发展出完全不同的路径。所以不用担心AI取代了初级程序员，而高级程序员都是从初级程序员成长来的，于是以后没有高级程序员了这样，因为以后可能学写代码的人路径跟我们就是不同的。</p> 
<p>回想我小时候学写代码，并不是因为享受“解题”或者钻研算法，而是我很享受“创造”的过程。所以当时我学ASP，写HTML，因为在那个网站盛行的时代，做网站是最快能看到自己创造的产品的办法。所以以前写代码是在努力打怪升级之后，见到自己努力做出来的产品。现在打怪升级有点半自动化了，出产品的速度加快了，连$125的Claude都Vibe出了防沉迷限制。于是我开始思考，如果“写代码”已经不是瓶颈，那么更需要我投入关注的会是什么？其实我一直都很清楚，“写代码”本身并不是瓶颈。以前我经常跟刚入职我们团队的小伙伴们说：“不要做一个只会写代码的程序员。”</p> 
<p>不要误会，我并不是说写代码本身不好玩了，我虽然不擅长算法题，但古法纯手工写代码还是很有意思的，尤其是能写出符合自己审美的优雅实现的时候。另外如果我们不在当前分工的语境下去聊，那么未来不一定是“产品经理”取代“程序员”，也有可能是“程序员”取代“产品经理”。</p> 
<p>可以回想一下“产品经理”这个细分岗位是怎么来的。互联网早期创业的人，需要的是“会写代码的人”，后来发现软件不好用，所以还需要“会做UI的人”，再后来发现这两种人都没什么时间想需求（Features），于是我们需要专门“做需求定义和产品愿景”的人。</p> 
<p>倒不是说那个年代的人每个都是全才，只是那是个曙光时代，大家做东西还没有那么精致，所以谁都能上手试一试。后来行业竞争激烈，东西越做越好，门槛就提高了，精细化分工出现之后，大家继续提高各个岗位的门槛，就很难再回到最初的原点了。现在AI提高了大家的下限，假如还能继续按这个速度发展，大家的下限继续提高，很快这个本来被精细化分工提高的“门槛”，相对地就又“降下去了”。于是又能回到那个“人人都能快速做出一个原型”，可以充分发挥大家想象力的时代。</p> 
<p>我认为这是极大的好事。</p> 
<h2>4. 希望AI能促成新的百花齐放时代</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/08/web20.jpg" alt="Web 2.0" /></p> 
<p>互联网已经发展了几十年，现状是逐渐内卷，想象力逐渐难以展露，这几乎是所有自由竞争市场的常见情形。刚开始很少人进入这个领域，少数人凭借优秀的想法能获得用户的喜爱。接下来竞争逐渐激烈逐渐充分，直到最后剩下行业内卷。现在的AI如果只应用于“高效生产代码”，或者“高效生产设计稿”，那不过是加速原有的竞争罢了。但是如果能充分释放大家的想象力，则有可能开辟一种新的行业。这会是什么我就不晓得了。</p> 
<p><a href="https://justinyan.me/post/6256">1976年比尔·盖茨写这封信</a>给Homebrew Computer Club的时候，“个人计算机”领域尚未真正出现，当时的“个人计算机”叫做"Hobby Computer"。但是随后几十年，比尔·盖茨的微软，乔布斯的苹果，还有蓝色巨人IBM，让个人计算机市场变成一个巨大的市场。1997年乔布斯回归苹果后，也在思考如何让更多人愿意使用Mac，后来基于这个念头做了iPod，让Mac成为家庭数据中心([1]《Build》 by Tony Fadell)。再后来做了iPhone，开辟了一个全新的硬件市场。他们在做这些事情的时候，也未必预料到产品一定能成功，一定能出现一个前所未有的新领域。但这些人的共同点都是：拥有澎湃的热情，天马行空的想象力，以及尽情释放创造力的条件。</p> 
<p>也许是因为经历过BBS/Blog的自由分享，在移动互联网时代旁观过大佬们的激情迸发，我更希望AI的发展能促进所有创造者百花齐放，这样的世界才有活力，才更像当时有点混乱却又令人兴奋的互联网早期。</p> 
<h2>注</h2> 
<ol> 
 <li>“Most people don’t realize what the iPod was originally built for. Its purpose wasn’t just to play music—it was made to sell Macintosh computers. That’s what was in Steve Jobs’s head: We’re going to make something amazing that will only work with our Macs. People will love it so much that they’ll start buying Macs again.”- 《Build》by Tony Fadell</li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x7684;MacBook&#x8D34;&#x7EB8;</title>
        <link>https://justinyan.eth.limo/44A81894-AC11-41A3-8C75-3D8209640964/</link>
        <guid>https://justinyan.eth.limo/44A81894-AC11-41A3-8C75-3D8209640964/</guid>
        <pubDate>Mon, 25 Aug 2025 11:11:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Some notes from 25/08/18-25/08/22.</p> 
<h2>1. Sony WH-1000XM6</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/Sony_WH-1000XM6_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/Sony_WH-1000XM6_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/Sony_WH-1000XM6_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/Sony_WH-1000XM6_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/Sony_WH-1000XM6_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/Sony_WH-1000XM6_006.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-08-18</em></p> 
<p>索尼在今年5月发布了旗舰降噪耳机XM6，我当时买了，现在已经用了几个月。</p> 
<p>我买过两个Bose QC 35，一个Sony WH-1000XM4，一般在办公室环境使用，感觉这两家的体验差不太多。</p> 
<p>上一代索尼XM5设计为不可折叠，同期我记得Bose的是QC 700，造型比较“特别”，所以这俩我都没买。</p> 
<p>XM6相比XM5又恢复了可折叠能力，升级了它的耳机包，采用磁吸扣，有点意思。最近出远门也带上过XM6，我觉得在飞机上它还是略占地方，但降噪效果确实好，还是值得带一下。</p> 
<p>另外是我发现仍有不少飞机不支持单独的3.5插孔而是采用双孔插口，这个有点难受，现在新出的头戴降噪耳机都不附赠双孔转换头了。</p> 
<h2>2. 我的MacBook贴纸</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/macbook_sticker_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/macbook_sticker_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/macbook_sticker_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/macbook_sticker_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/macbook_sticker_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/08/macbook_sticker_006.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-08-19</em></p> 
<p>以前我的MacBook贴满了各种Logo，后来换新的M系列MacBook之后就没再贴了。最近受朋友的MacBook以及F1电影中Brad Pitt的AirPods Max贴纸的影响，我又给自己的MacBook贴了一些贴纸😁</p> 
<ul> 
 <li> <p>P2像素小狗：这只小狗是前苹果设计师Susan Kare给Macintosh设计的一系列icon之一，也是她的代表作之一。</p> </li> 
 <li> <p>P3 LoFT：日本杂货品牌，以前我去日本的时候最爱逛的商场，我其实只逛文具区，时常流连忘返。</p> </li> 
 <li> <p>P4 Patagonia：美国户外品牌，出的衣服很适合湾区的天气，广受硅谷大佬欢迎。</p> </li> 
 <li> <p>P5 彩虹苹果：1997年乔布斯回归苹果后，与Chiat广告公司合作，采用Think Different重塑品牌形象。这个彩虹色苹果就是当年品牌重塑的一部分。</p> </li> 
 <li> <p>P6 Vim：Vim是由Bram Moolenaar从vi编辑器改进而来的终端编辑器。因其开源，功能强大，跨平台而成为每个程序员在终端下的利器。虽然我早已不使用Vim作为主力编辑器，但Vim依然是终端下做些轻量编辑的首选。</p> </li> 
</ul> 
<h2>3. Tomica小车收藏之一</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tomica_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tomica_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tomica_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tomica_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tomica_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tomica_006.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tomica_007.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tomica_008.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tomica_009.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on 2025-08-22</em></p> 
<p>有了小孩之后就可以释放天性买一堆TOMICA</p> 
<p>这几辆是一部分</p> 
<p>P1/P2: 《头文字D》藤原拓海的AE86</p> 
<p>P3: 《柯南》中琴酒的车</p> 
<p><span class="wx_english_text_left">P4: 《回到未来》的DMC DeLorean，这辆是风火轮的不是TOMICA</span></p> 
<p>P5: 鲁班三世的车</p> 
<p>P6: 法拉利F355</p> 
<p>P7: 法拉利F40</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 150 &#x55B5;&#x795E;onevcat: Vibe Coding&#x53CA;&#x65E5;&#x672C;&#x5DE5;&#x4F5C;&#x4E0E;&#x751F;&#x6D3B;</title>
        <link>https://justinyan.eth.limo/C5D71136-CFEB-4EF5-8049-D1A4DB91ABD6/</link>
        <guid>https://justinyan.eth.limo/C5D71136-CFEB-4EF5-8049-D1A4DB91ABD6/</guid>
        <pubDate>Mon, 25 Aug 2025 11:10:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/08/Podcast150_v2_cover.png" alt="" /></p> 
<p>本期节目我们邀请到在日本 LINE 多年的 iOS 开发者王巍(onevcat)，江湖人称喵神。喵神最近沉迷于 Vibe Coding，我们深入聊了喵神到日本工作与生活的契机，在 LINE 工作的体验，以及 Vibe Coding 对开发者们的影响，无论初级还是高级开发者。</p> 
<p>我们所处的这个时代无疑是科技引发巨变的时代，这几年 AI 在科技领域大放异彩，对程序员的影响更是显著。那么我们究竟该如何应对呢？请看VCR👉🏻</p> 
<p><strong>🎁本期节目喵神也给听友们带来福利，送出喵神的iOS技术电子书，欢迎大家在评论区留言参与抽奖哦😘</strong></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场，嘉宾onevcat (喵神) 简介</li> 
 <li>00:01:09 嘉宾用方言自我介绍</li> 
 <li>00:02:34 在 LINE 工作与日本移动互联网</li> 
 <li>00:04:34 LINE 曾在中国有业务，名为“连我”</li> 
 <li>00:05:20 喵神早期接触 iOS 开发，大学专业是微电子</li> 
 <li>00:08:19 什么契机来到日本工作的？</li> 
 <li>00:13:41 新冠后从远程改为每周回办公室一次</li> 
 <li>00:17:14 在 LINE 上班用日语吗？</li> 
 <li>00:19:03 日本工作强度与企业文化</li> 
 <li>00:38:25 小鳄鱼24点 App 开发与 AI 助力</li> 
 <li>00:41:28 Vibe Coding的体验</li> 
 <li>00:44:20 AI 对开发范式的影响与局限</li> 
 <li>00:55:57 AI 文档化与知识库管理</li> 
 <li>00:58:17 AI 在 iOS 开发中的挑战与策略</li> 
 <li>01:03:16 AI 辅助搜索与自我校正</li> 
 <li>01:07:14 未来开发者和 AI 的关系，初级开发者，高级开发者如何应对</li> 
 <li>01:25:10 听友提问环节</li> 
 <li>01:25:10 科技钟摆效应</li> 
 <li>01:36:23 日本生活和工作体验准备</li> 
 <li>01:39:55 培养孩子编程兴趣与小鳄鱼24点 App</li> 
 <li>01:43:08 中日个税制度与海外个人开发者影响</li> 
 <li>01:48:08 灵魂三问</li> 
 <li>02:03:31 联系方式与节目福利</li> 
</ul> 
<h2>本期嘉宾</h2> 
<ul> 
 <li>王巍(onevcat，江湖人称喵神)。喵神是是一名专注于 iOS 的职业开发者，现任职于日本 LINE 公司。喵神也是<a href="https://objccn.io/">ObjC 中国</a>组织的发起人和领导者，为将最佳 iOS 实践和进阶技术引入中国而不断努力。</li> 
 <li>喵神的博客: <a href="https://onevcat.com/">OneV's Den</a></li> 
 <li><a href="https://github.com/onevcat">GitHub onevcat (Wei Wang)</a> | <a href="https://weibo.com/u/2210132365">@onevcat - 微博</a> | <a href="https://x.com/onevcat">Twitter/X @ onevcat</a></li> 
</ul> 
<h2>幕后制作</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: 静静</li> 
 <li>监制: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
</ul> 
<h2>联系我们</h2> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 149 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;37: AI&#x7ADE;&#x4E89;&#x767D;&#x70ED;&#x5316;&#xFF0C;GPT-5&#x53D1;&#x5E03;&#x4E0D;&#x592A;&#x5999;</title>
        <link>https://justinyan.eth.limo/2EF533A8-8787-417A-98B4-B0CBA0440029/</link>
        <guid>https://justinyan.eth.limo/2EF533A8-8787-417A-98B4-B0CBA0440029/</guid>
        <pubDate>Thu, 14 Aug 2025 23:36:39 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/08/Podcast-Cover-v149_cover.png" alt="" /></p> 
<p>又过了一个月，这期间各种有意思的科技新闻频出。苹果，马一龙，OpenAI等等，卷出天际。</p> 
<p>今年AI在编程领域逐步进入大众人人vibe coding的阶段，无论是新手还是老手，毋庸置疑都离不开AI。我们最近跟喵神onevcat也录了一期节目聊这个话题，各位听友敬请期待哦。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:32 苹果送特朗普24K金基玻璃雕塑</li> 
 <li>00:02:03 消息称iPhone 17发布会将于9月9日召开</li> 
 <li>00:02:53 库克说：iOS26开发者测试版成为史上最受欢迎版本</li> 
 <li>00:05:48 苹果在美推出Apple Care One服务，可以保3款设备</li> 
 <li>00:07:32 iOS周订阅成最受欢迎订阅方式</li> 
 <li>00:10:36 苹果宣布首席运营官交接</li> 
 <li>00:11:44 苹果第三季度业绩超出预期</li> 
 <li>00:13:04 Google Pixel 10广告嘲讽苹果AI跳票</li> 
 <li>00:14:23 苹果AI大牛庞若明发离职信告别</li> 
 <li>00:16:26 硅谷AI创业公司开始996工作</li> 
 <li>00:19:36 苹果首次关闭线下门店 - 大连Apple Store</li> 
 <li>00:22:59 苹果新专利：Apple Pencil轨迹球</li> 
 <li>00:24:55 OpenAI终于放出GPT-5，但反响不及预期</li> 
 <li>00:30:53 OpenAI开源了新模型gpt-oss系列</li> 
 <li>00:32:19 ChatGPT将推出防沉迷功能</li> 
 <li>00:35:16 ChatGPT推出全新Agent功能</li> 
 <li>00:37:33 Anthropic关闭了OpenAI对Claude的访问权限</li> 
 <li>00:38:24 Cursor推出命令行工具Cursor CLI</li> 
 <li>00:39:47 Claude Opus 4.1 发布</li> 
 <li>00:40:57 Github免费开放兼容OpenAI的推理API</li> 
 <li>00:42:21 ChatGPT Agent可以绕过Cloudflare的反机器人验证</li> 
 <li>00:43:56 OpenAI或将推出AI浏览器，挑战Google Chrome</li> 
 <li>00:47:19 Kimi K2发布并开源</li> 
 <li>00:48:56 Google发布Genie 3世界模型</li> 
 <li>00:52:38 通义万相2.2开源</li> 
 <li>00:54:09 阿里巴巴发布Qwen Code</li> 
 <li>00:55:15 马斯克的AI女友上线20小时爆火</li> 
 <li>00:56:56 量子计算机实现可认证随机数生成</li> 
 <li>00:58:59 大疆发布扫地机器人：ROMO</li> 
 <li>01:04:19 Firefox宣布终止中国区服务</li> 
 <li>01:06:42 专治摇一摇广告乱跳转，网络安全标准实践指南发布</li> 
 <li>01:07:28 WhatsApp放弃了原生Windows11应用，回归Electron</li> 
 <li>01:10:10 赛博庞克2077登陆Mac</li> 
 <li>01:15:08 Gmail推出管理订阅功能</li> 
 <li>01:15:44 弱密码引发的惨案，150年历史的公司破产</li> 
 <li>01:17:15 W3C发布了PNG 3.0标准</li> 
</ul> 
<h2>幕后制作</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: 静静</li> 
 <li>监制: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
</ul> 
<h2>联系我们</h2> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6709;&#x5907;&#x800C;&#x6765;&#x662F;&#x4E00;&#x79CD;&#x770B;&#x6E05;&#x73B0;&#x5B9E;&#x540E;&#x7684;&#x9009;&#x62E9;</title>
        <link>https://justinyan.eth.limo/3CFD259D-27F3-44DF-9FCA-DBFBDE62D508/</link>
        <guid>https://justinyan.eth.limo/3CFD259D-27F3-44DF-9FCA-DBFBDE62D508/</guid>
        <pubDate>Wed, 13 Aug 2025 15:21:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Some notes from August 4 – 8.</p> 
<h2>1. 当你一天听几小时歌，不想要大头戴也不想要入耳式耳机时</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/huawei_free_clip_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/huawei_free_clip_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/huawei_free_clip_003.jpg" alt="" />
 </figure> 
</figure> 
<p>便携的无线外挂夹耳式耳机就成了最佳选择。</p> 
<p>自从苹果在2016年发布AirPods以来，真无线耳机产品线就不乏各家竞争对手，曾经很长一段时间这个新的耳机品类一直是苹果领跑。（当年一起发布的iPhone 7甚至没有耳机接口）</p> 
<p>我买过不少AirPods，包括后来的主动降噪版的AirPods Pro，虽然效果比不上音质更佳的大头戴，但因为特别便携所以一直用着。</p> 
<p>直到后来，因为长时间戴入耳式耳机，经常引发耳朵发炎不舒服。医生说我的耳朵有可能对这种硅胶耳塞过敏。</p> 
<p>但是每天都听好几小时的音乐，怎么办呢？无奈只能寻找替代品。这时同事推荐华为FreeClip，我买来已经用了一年多，非常不错。</p> 
<p>耳机很轻，夹耳式固定比较牢固，不猛烈甩头基本不会掉。同时因为不入耳所以长时间佩戴耳朵不会有不适感。音质尚可，大部份品类可听。</p> 
<p>缺点是开放式耳机，环境音一嘈杂就容易听不清。坐地铁出行的小伙伴们可能更需要降噪耳机。</p> 
<p>对我来说这耳机足够轻便，随身带着随时可以拿出来听，长时间佩戴不会不舒服，已经非常不错，完美符合我的需求。</p> 
<h2>2. 广州最近的雨，下得比依萍找她爸要钱那天还大</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/gz_rain_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/gz_rain_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/gz_rain_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/gz_rain_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/gz_rain_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/gz_rain_006.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/gz_rain_007.jpg" alt="" />
 </figure> 
</figure> 
<h2>3. 创造：用非传统方式做有价值的事</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tony_fadell_build_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tony_fadell_build_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/tony_fadell_build_003.jpg" alt="" />
 </figure> 
</figure> 
<p>Tony Fadell 2022年出版了这本书，我当时买了但没能读完，时隔三年终于读完，心情已经有不少变化。</p> 
<p>Tony在书中所写既有故事也有经验，从一个IC到CEO，他做过不少事情，换过不少公司，成功过一些产品，也失败过不少尝试。</p> 
<p>如果失败的不够多，说明还没尽全力。</p> 
<p>我作为一个在大公司打工的牛马，虽不能完全理解他在所有角色的看法，但也认可大部份内容。</p> 
<p>感谢Tony写了这么真诚的一本书。</p> 
<h2>4. 世界上唯一一款按压式伸缩钢笔: Pilot Capless</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Pilot_Capless_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Pilot_Capless_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Pilot_Capless_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Pilot_Capless_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Pilot_Capless_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Pilot_Capless_006.jpg" alt="" />
 </figure> 
</figure> 
<p>既想要钢笔的书写体验，又希望它跟普通的按压式写字笔一样咔哒咔哒，无需管理笔帽，那么百乐这款Capless黑武士就是不二之选。</p> 
<p>钢笔笔尖长时间暴露在空气中不写字的话，因为蒸发容易导致断墨，使得下一次书写不够顺畅。</p> 
<p>我看书记笔记，划线的时候经常遇到这种苦恼。钢笔需要经常拿在手上随时准备书写，但值得记录的段落出现时机却不可预测。</p> 
<p>于是我的笔袋中就有这么一只独特的钢笔：百乐黑武士。</p> 
<p>这支笔最早是百乐1963年设计的，打破了当时“钢笔必须有笔帽才能防干”的行业惯例。为了迎接1964年东京奥运会，向世界展示百乐的技术水平，他们于次年对这支笔进行了改良，解决了漏墨等问题，成为当时日本文具界的代表作之一。</p> 
<p>这支笔有多种款式，我买的这只是纯黑的版本，称“黑武士”。边读书边思考的时候，一直按压笔帽伸缩咔哒咔哒，也是挺解压的。</p> 
<h2>5. 有备而来是一种看清现实后的选择</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Zen_and_the_Art_of_Motorcycle_Maintenance_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Zen_and_the_Art_of_Motorcycle_Maintenance_002.jpg" alt="" />
 </figure> 
</figure> 
<p>在6月20日我发的这个图文中<a href="https://mp.weixin.qq.com/s/6jormleLMzHk9eDrFiwyWw">https://mp.weixin.qq.com/s/6jormleLMzHk9eDrFiwyWw</a></p> 
<p>我说人的烦恼有时来自“不符合预期”。</p> 
<p>不符合预期意味着我希望事情按某个方向走但事实并非如此。比如我希望滴滴司机可以在5分钟内到达家门口但实际等了15分钟后才到。</p> 
<p>往往这种“不符合预期”都是外部的，非自我可控的。</p> 
<p>《禅与摩托车维修》中有这么一段对话，主角团在摩托旅行中路过一个小镇，天气非常炎热，难以忍受。同行的朋友说：“真不明白他们是怎么忍受的。”</p> 
<p>主角说：“这里的确很糟糕，在他们来之前就已经知道这里很糟糕了，所以他们是有备而来的。”</p> 
<p>“如果一个人老是抱怨，只会让别人更难过。他们很有活力，知道该怎样活下去。”</p> 
<p>我觉得“有备而来”也是一种看清现实之后的选择。祝大家都能很有活力地活下去。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x91CD;&#x8BFB;&#x300A;&#x53F2;&#x8482;&#x592B;&#xB7;&#x4E54;&#x5E03;&#x65AF;&#x4F20;&#x300B;</title>
        <link>https://justinyan.eth.limo/A40F31F0-0473-4D25-AE08-048252A8DF94/</link>
        <guid>https://justinyan.eth.limo/A40F31F0-0473-4D25-AE08-048252A8DF94/</guid>
        <pubDate>Mon, 04 Aug 2025 00:06:36 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Some notes from July 28 – August 1st.</p> 
<h2>1. 重读《史蒂夫·乔布斯传》</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/steve_jobs_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/steve_jobs_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/steve_jobs_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/steve_jobs_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/steve_jobs_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/steve_jobs_006.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/steve_jobs_007.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/steve_jobs_008.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/steve_jobs_009.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/steve_jobs_010.jpg" alt="" />
 </figure> 
</figure> 
<p>2011年十月，乔布斯去世19天后，他唯一授权的传记由好友沃尔特·艾萨克森(Walter Isaacson)出版了。那时候我刚开始接触苹果平台的开发没多久，和所有果粉一样，听到乔布斯去世的消息十分难过。这本传记我第一时间买了，读完后只是单纯佩服他精彩的人生。</p> 
<p>转眼十多年过去，读完《Make Something Wonderful》之后我想重读一遍这本传记。他的故事仍是那么跌宕起伏、扣人心弦、波澜壮阔，就像他的情绪和热情一样难以平静。</p> 
<p>他不是一个工程师，Apple I是沃兹尼亚克（Steve Wozniak）做的；他也不是一个设计师，回归苹果后的很多想法是强尼·艾弗（Jony Ive）提的；他更不是一个广告人，一系列苹果载入史册的广告是李·克劳（Lee Clow）的Chiat/Day团队做的。</p> 
<p>但所有与乔布斯共事过的人，在经历痛苦、怒骂与混乱后，如果最终选择留下，都会发现自己被他逼出了超乎想象的成果。有人说这是斯德哥尔摩综合症吧，但他们确实做出了Macintosh，做出了iPod，iTune，iPhone等一系列改变世界的产品，别忘了还有Pixar。</p> 
<p>当主流科技公司纷纷生产毫无品位的产品时，只有苹果，做出了充满艺术感的作品。可以想见，如果没有苹果，没有乔布斯，这个世界将有多么无趣。</p> 
<p>在我阅读的新版本中，作者在后记写到，本书出版后有很多人会对他发表看法:</p> 
<blockquote> 
 <p>还有第三类读者。时不时地，会有一个男人——是的，通常是一个男人，面带自鸣得意的微笑，大摇大摆地走到我面前，然后说：​“我读了你的书，我想让你知道，我跟乔布斯一样。​”我自觉好笑，但会不动声色地问，你哪里跟他一样？他们一般会这么回答：​“如果我手下的人做得不好，我就会直接说他们真是垃圾。我也不会忍受B级选手。​”这时我会微微颔首，心想：​“那你发明过类似iPhone的东西吗？​”</p> 
</blockquote> 
<h2>2. 我最喜欢的电影之一《白日梦想家》：Stop dreaming, Start living</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Stop_dreaming_Start_living_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Stop_dreaming_Start_living_002.jpg" alt="" />
 </figure> 
</figure> 
<p>《白日梦想家》（The Secret Life of Walter Mitty）是我最喜欢的电影之一。主角Mitty是在一《Life》杂志工作了十多年的胶片洗印经理，经常放空做白日梦。</p> 
<p>直到最后公司被收购，他的职业生涯迎来危机，终于放下一切踏上冒险之路。格陵兰，冰岛，跳海，火山，滑板，直升机，他的白日梦突然之间变成了现实。</p> 
<p>最近我又看了一遍这部电影，然后在小红书上被推荐了这张电影胶片书签。到手后感觉比我想象的有意思。</p> 
<p>不过最近又开始用电子墨水屏读书了，纸书先放一下，过一阵子再试试看这套书签好不好用。</p> 
<h2>3. 因为要用微信读书买了文石Leaf 5</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/boox_leaf_5_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/boox_leaf_5_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/boox_leaf_5_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/boox_leaf_5_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/boox_leaf_5_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/boox_leaf_5_006.jpg" alt="" />
 </figure> 
</figure> 
<p>以前我不用微信读书，因为Kindle阅读器的硬件性能领先，而且当时能买中文书。微信读书的社交功能是我不需要的，也是我觉得特别打扰我的，就一直没用。</p> 
<p>Kindle退出中国之后我就一直买实体书，最近觉得太占地方了，于是在iPad上用微信读书看完了两本，觉得体验不错，于是买了文石的Leaf 5专门读书。</p> 
<p>微信读书虽然社交功能太分散读书人的注意力，但它可以把所有社交功能全部关掉，而且能用“假书架”代替真实书架展示给别人。</p> 
<p>我拿到任何一个读书产品第一件事就是关掉“最受欢迎的划线”Popular Highlights功能，不希望被这些所谓的“受欢迎”的东西打扰我的阅读。Kindle和微信读书都支持关闭，但微信公众号不支持（只有作者可以关，读者没法关），比较可惜。</p> 
<p>文石这个阅读器我用起来感觉不错，说明现在各家硬件已经都跟上了，他们的系统基于Android，还做了一些微信互传，接入第三方书城等非常实用的功能。这些都是Kindle没有的，用着比较方便。</p> 
<p>不过文石的品牌名太复杂，不太利于用户记忆。他们有“文石”，英文Onyx，电子墨水屏阅读器产品线BOOX，具体型号Leaf 5，是有点过于复杂了。</p> 
<p>另外是它的配件生态不如Kindle丰富，所以我买了官方做的磁吸外壳，至少品质应该有保证。</p> 
<p>这台Leaf 5的性能不错，响应速度快，使用微信读书的墨水屏专用版，既能看微信书城的书，也能导入自己的书，非常方便。</p> 
<p>不过今年开始Amazon也不允许用户下载自己买过的书了，非常可惜。以前我买了都会下载下来放在我自己家的书库，这下为了要自己管理电子书反而不得不用一些其他办法了，唉😮‍💨</p> 
<p>总而言之，微信读书的体验确实不错，目前中文书库也非常全，Kindle退出之后就属它最强。虽然社交功能花里胡哨，但经过一系列不断关闭之后也能成为一个相对纯粹的阅读工具，还是不错的。</p> 
<p>是当前在国内阅读中国大陆出版的中文书的最优选择。至于其他地区的中文书或外文书，那就得走别的渠道了。</p> 
<h2>4. 好设计的十个原则，来自Dieter Rams的Vitsoe</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Dieter_Rams_001.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Dieter_Rams_002.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Dieter_Rams_003.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Dieter_Rams_004.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Dieter_Rams_005.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Dieter_Rams_006.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Dieter_Rams_007.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Dieter_Rams_008.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Dieter_Rams_009.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Dieter_Rams_010.png" alt="" />
 </figure> 
</figure> 
<p><em>由Justin Yan翻译自Vitsoe官网: <a href="https://www.vitsoe.com/us/about/good-design">https://www.vitsoe.com/us/about/good-design</a></em></p> 
<p>早在1970年代，Dieter Rams就对周遭世界感到担忧：“一个充满形式、色彩与噪音的混乱不堪的世界。”</p> 
<p>他意识到自己也是这个世界的重要贡献者，于是自问:“我的设计是好设计吗？”</p> 
<p>他的答案体现在他的十条好设计原则中。</p> 
<ol> 
 <li>好设计是创新的</li> 
</ol> 
<p>创意永不枯竭。技术研发经常给创新设计带来新的可能性。但是创新设计必须与创新技术一起发展，设计的创新并不是目的本身。</p> 
<ol start="2"> 
 <li>好设计让产品变得好用</li> 
</ol> 
<p>人们购买一个产品是要使用它的。所以产品必须满足某种标准，不仅是功能上的，还包括心理上与美学上的。好设计强调产品的实用性，同时摒弃一切可能干扰的因素。</p> 
<ol start="3"> 
 <li>好设计是美的</li> 
</ol> 
<p>一个产品的美感品质也是它实用性不可分割的一部分，因为我们每天使用的产品最终会影响我们的幸福感。但只有那些被良好实现的产品，才能称之为美。</p> 
<ol start="4"> 
 <li>好设计使产品易于理解</li> 
</ol> 
<p>首先，产品要有清晰的结构。更进一步的，产品自己能“说话”。最理想的是，产品无需说明，能自我解释。</p> 
<ol start="5"> 
 <li>好设计是内敛的</li> 
</ol> 
<p>实现某种需求的产品就像工具，它们不是装饰品，也不是艺术品。所以，它们的设计应该保持克制与中立，给用户的自我表达留出空间。</p> 
<ol start="6"> 
 <li>好设计是诚实的</li> 
</ol> 
<p>好设计不会让产品看起来比实际更具创意、更强大或更有价值。它也不会试图用无法兑现的承诺去操控消费者。</p> 
<ol start="7"> 
 <li>好设计是持久的</li> 
</ol> 
<p>好设计避免追逐潮流，因此不会过时。与潮流设计不同，好设计可以历久弥新——即使在如今这个用完即弃的社会。</p> 
<ol start="8"> 
 <li>好设计注重每一个细节</li> 
</ol> 
<p>任何一个细节都不应是随意的。在设计过程中的用心与精确，是对用户的尊重。</p> 
<ol start="9"> 
 <li>好设计是环保的</li> 
</ol> 
<p>设计对环境保护至关重要。好设计的产品应该节约能源，并在整个生命周期中最小化物理与视觉污染。</p> 
<ol start="10"> 
 <li>好设计是越少设计越好</li> 
</ol> 
<p>更少，但更好（Less, but better） - 因为它关注最重要的部分，甩掉一切无关紧要的累赘。</p> 
<p>回归纯粹，回归简单。</p> 
<h2>5. Good design is aesthetic</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Good_design_is_aesthetic_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/08/Good_design_is_aesthetic_002.jpg" alt="" />
 </figure> 
</figure> 
<blockquote> 
 <p>“The aesthetic quality of a product is integral to its usefulness because products we use every day affect our person and our well-being. But only well-executed objects can be beautiful.”</p> 
 <ul> 
  <li>Dieter Rams</li> 
 </ul> 
</blockquote> 
<p>确实是这样的🤔</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 148 &#x4E1C;&#x5761;&#x8098;&#x5B50;: &#x95F2;&#x6765;&#x65E0;&#x4E8B;&#x5199;&#x5199;&#x4EE3;&#x7801;</title>
        <link>https://justinyan.eth.limo/20444B28-5900-4ADE-808F-928AD98CF0CF/</link>
        <guid>https://justinyan.eth.limo/20444B28-5900-4ADE-808F-928AD98CF0CF/</guid>
        <pubDate>Sun, 03 Aug 2025 12:56:42 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/08/Podcast148_v1_cover.png" alt="" /></p> 
<p>本期节目我们邀请到大家都非常喜欢的<a href="https://fatbobman.com/zh/">《肘子的Swift 记事本》(Fatbobman's Blog)</a>博主——肘子哥。他早年创业，涉猎多个行业，在最忙碌的时候因为健康问题不得不暂停工作、关闭公司，休养了一段时间。</p> 
<p>恢复之后，他重新拾起多年前的编程爱好，没想到这一写就是好几年，也由此开始了新的创作之路。我们和肘子哥其实认识多年，但真正线下见面，是今年初在上海 Let’s Vision 活动的现场。那次见面让我们印象深刻：肘子哥不仅博学多才，线下更是活力满满、阳光开朗。</p> 
<p>这期节目我们终于把他请来，一起聊聊他的创业经历、写作契机，以及他眼中的 Swift 和独立开发者世界。不要错过！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场: 嘉宾 @东坡肘子</li> 
 <li>00:00:45 方言打招呼</li> 
 <li>00:03:47 网名的来历</li> 
 <li>00:06:40 古早的博客之旅</li> 
 <li>00:07:51 法律专业毕业后，开始开公司创业</li> 
 <li>00:11:16 没有特别明确的方向，就是想当老板</li> 
 <li>00:13:39 一天飞四个城市，对出门没有欲望</li> 
 <li>00:16:59 从 Swift 入门编程，做博客站</li> 
 <li>00:19:27 最忙的时候患病，筷子都拿不住</li> 
 <li>00:23:30 肾功能衰竭、ICU、透析、肾移植</li> 
 <li>00:27:40 放下一切，调整心境，安心养病</li> 
 <li>00:29:39 身体会有预警信号，但往往被忽视</li> 
 <li>00:37:55 该努力，但别累的过度了</li> 
 <li>00:39:17 Justin：乔布斯传里的故事</li> 
 <li>00:42:03 康复后，大脑和神经受到了影响</li> 
 <li>00:44:21 学习 SwiftUI 写记录身体指标的 App</li> 
 <li>00:45:19 肘子：我的第二台电脑是 Apple II</li> 
 <li>00:50:01 开始写 Swift 相关的文章，梳理思路</li> 
 <li>00:51:47 每天都要吃 20 多片药，周期性复查身体</li> 
 <li>00:54:45 保持年轻的心态，写作取悦自己</li> 
 <li>00:57:08 欲望会影响初心</li> 
 <li>01:03:39 能够放下很重要，脸皮厚一些</li> 
 <li>01:05:18 听友提问：对 SwiftData 未来的发展有何展望？</li> 
 <li>01:12:32 对于 Swift 的现状怎么看？迭代速度满意吗？</li> 
 <li>01:18:53 作为“反卷”安卓的框架 Skip 的发展现状如何？</li> 
 <li>01:24:50 灵魂三问</li> 
 <li>01:37:10 尾声</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: 东坡肘子<br /> Swift 技术博客 Fatbobman’s Blog 的博主，活跃于各大开发者社区和技术活动，经常以讲师身份分享 Swift 开发经验，也热衷于在网络社区中解答开发者的疑难问题。</li> 
 <li>博客: <a href="https://fatbobman.com/zh/">肘子的 Swift 记事本</a></li> 
</ul> 
<h2>幕后制作</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: 静静</li> 
 <li>监制: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
</ul> 
<h2>联系我们</h2> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x597D;&#x8BBE;&#x8BA1;&#x7684;&#x5341;&#x4E2A;&#x539F;&#x5219;&#xFF0C;&#x6765;&#x81EA;Dieter Rams&#x7684;Vitsoe</title>
        <link>https://justinyan.eth.limo/1E384C76-3FFD-430E-99A5-C5DB1FCF0F09/</link>
        <guid>https://justinyan.eth.limo/1E384C76-3FFD-430E-99A5-C5DB1FCF0F09/</guid>
        <pubDate>Thu, 31 Jul 2025 13:40:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/07/1050.jpg" alt="" /></p> 
<p><em>由Justin Yan翻译自Vitsoe官网:<a href="https://www.vitsoe.com/us/about/good-design">https://www.vitsoe.com/us/about/good-design</a></em></p> 
<p>早在1970年代，Dieter Rams就对周遭世界感到担忧：“一个充满形式、色彩与噪音的混乱不堪的世界。”<br /> 他意识到自己也是这个世界的重要贡献者，于是自问:“我的设计是好设计吗？”<br /> 他的答案体现在他的十条好设计原则中。</p> 
<h2>1. 好设计是创新的</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/TP-1-radio.png" alt="" /><br /> 创意永不枯竭。技术研发经常给创新设计带来新的可能性。但是创新设计必须与创新技术一起发展，设计的创新并不是目的本身。</p> 
<h2>2. 好设计让产品变得好用</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/MPZ-21.png" alt="" /><br /> 人们购买一个产品是要使用它的。所以产品必须满足某种标准，不仅是功能上的，还包括心理上与美学上的。好设计强调产品的实用性，同时摒弃一切可能干扰的因素。</p> 
<h2>3. 好设计是美的</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/RT-20-tischsuper-radio.png" alt="" /><br /> 一个产品的美感品质也是它实用性不可分割的一部分，因为我们每天使用的产品最终会影响我们的幸福感。但只有那些被良好实现的产品，才能称之为美。</p> 
<h2>4. 好设计使产品易于理解</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/T-1000-world-receiver.png" alt="" /><br /> 首先，产品要有清晰的结构。更进一步的，产品自己能“说话”。最理想的是，产品无需说明，能自我解释。</p> 
<h2>5. 好设计是内敛的</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/Cylindric-T-2-lighter.png" alt="" /><br /> 实现某种需求的产品就像工具，它们不是装饰品，也不是艺术品。所以，它们的设计应该保持克制与中立，给用户的自我表达留出空间。</p> 
<h2>6. 好设计是诚实的</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/L-450-flat-loudspeaker.png" alt="" /><br /> 好设计不会让产品看起来比实际更具创意、更强大或更有价值。它也不会试图用无法兑现的承诺去操控消费者。</p> 
<h2>7. 好设计是持久的</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/620-Chair-Program.png" alt="" /><br /> 好设计避免追逐潮流，因此不会过时。与潮流设计不同，好设计可以历久弥新——即使在如今这个用完即弃的社会。</p> 
<h2>8. 好设计注重每一个细节</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/ET-66-calculator.png" alt="" /><br /> 任何一个细节都不应是随意的。在设计过程中的用心与精确，是对用户的尊重。</p> 
<h2>9. 好设计是环保的</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/606-Universal-Shelving-System.png" alt="" /><br /> 设计对环境保护至关重要。好设计的产品应该节约能源，并在整个生命周期中最小化物理与视觉污染。</p> 
<h2>10. 好设计是越少设计越好</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/L-2-speaker.png" alt="" /><br /> 更少，但更好（Less, but better） - 因为它关注最重要的部分，甩掉一切无关紧要的累赘。</p> 
<p>回归纯粹，回归简单。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x88AB;&#x82F9;&#x679C;&#x64AD;&#x5BA2;&#x9996;&#x9875;&#x63A8;&#x8350;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/B2D796AF-3700-48E8-BF89-9B6B001C3205/</link>
        <guid>https://justinyan.eth.limo/B2D796AF-3700-48E8-BF89-9B6B001C3205/</guid>
        <pubDate>Mon, 28 Jul 2025 11:40:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>以下是最近更新的短篇。</p> 
<h2>1. 被苹果播客首页推荐是什么体验？</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/apple-feature_001.png" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/apple-feature_002.png" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/apple-feature_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/apple-feature_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/apple-feature_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/apple-feature_006.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/apple-feature_007.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on July 21, 2025</em></p> 
<p>昨天发现我们的播客《枫言枫语》被苹果播客中国区首页推荐了，非常开心😁。感谢苹果，感谢来我们节目的嘉宾以及收听我们节目的听众朋友们🙏。</p> 
<p>几年前Vision Pro还未正式上市前，我们在苹果的Lab试用开发版，当时点开Podcast App发现能看到我们的节目。那一下没反映过来，还以为苹果知道我们来Lab所以在里面设置了测试数据。</p> 
<p>但是转念一想不对啊，我们是以个人开发者身份来的，提交的资料里没说我们是做播客的呀😂结果再仔细一看，天啊！我们被苹果推荐了！</p> 
<p>自那以后，我们就很期待苹果能继续推荐我们。我挺喜欢苹果的，当年毕业后从前端开发转做iOS开发也是因为苹果，之前还跟苹果的高管开玩笑说：“隔壁友台做社会新闻的，他们就很郁闷，明星不出轨不离婚了他们就没得聊了。我们就简单多了，只要苹果还发新产品，我们就还能发节目。”</p> 
<p>这次被苹果播客推荐也是隔了蛮久一段时间，再次感谢大家，我们继续加油努力更新节目！💪</p> 
<h2>2. 在广东美术馆新馆看哥伦比亚博特罗胖胖的画</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_006.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_007.png" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_008.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_009.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_010.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_011.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_012.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/museum_013.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on July 22, 2025</em></p> 
<p>周末在广东美术馆新馆（大湾区艺术中心）看哥伦比亚艺术家费尔南多·博特罗（Fernando Botero）的作品展，他画的人物动物都胖胖的很有趣。头大身小，像婴儿一样。搭配拉丁美洲的艳丽色彩，很有异域风情。</p> 
<p>美术馆门口的翻页板（Split-flap display）也很有意思，不是老式垂直翻页，而是圆形的一个个点阵构成的文本。</p> 
<p>另外还有法国艺术家贝纳·维内（Bernar Venet）的《观念与物质之外》展，用了不少函数图像，也蛮有趣的。</p> 
<h2>3. 披头士没有封面的神专，人称”The White Alum”</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_001.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_002.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_003.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_004.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_005.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_006.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_007.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_008.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_009.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_010.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_011.jpg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/beatles-white-album_012.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on July 23, 2025</em></p> 
<p>这张没有封面，几乎看不到标题的纯白专辑，是The Beatles 1968年发行的第九张录音室专辑，它的标题以压花形式印在唱片套上，与乐队同名。<br /> 这张唱片是继Sgt. Pepper's Lonely Hearts Club Band之后次年发布的（P5），这张的封面也是创造历史，一共有58张脸出现在封面上。同时唱片质量非常高，还赋予了当时Harrison去印度旅行后带来的梦幻印度音乐，扭来扭去的很过瘾😂因为Sgt. Pepper封面人太多，于是这张唱片直接什么东西都没有，非常极端。<br /> 我手里这张是十年前在日本买的1976年东芝EMI的再版，质量很高。封面上还有个编号（P3），我这张显示“No. A 336321”。这个编号是当时白专英国首版发行时的编号，编号从 No.0000001 开始，编号最前的几张是 Beatles 自己成员拥有的（例如 Ringo Starr 拥有 No.0000001）。但东芝EMI再版的时候是印刷上去的数字，只是纯装饰，所以这个已经没有排序意义了。<br /> 之前朋友问我为什么喜欢Beatles。<br /> 我想到最早是因为村上春树喜欢他们，乔布斯也喜欢他们，于是我开始试着听一下。发现他们当时音乐特别干净（当时接触的是Rubber Soul这张唱片），后来发现原来他们干了那么多先锋的事情，他们在商业成功与倾注热爱之前不断在痛苦中寻找平衡。以及后来乐队解散的故事，Lennon被杀害的故事，Paul McCartney直到现在还在不断出自己的新唱片，我从中感受到了无比热爱创造的激情。<br /> 于是不知不觉收集完了他们所有的录音室专辑。今天分享的这张曲风也是多变，充分展示了Beatles们不断突破自我的创意。从Back In the U.S.S.R.闹哄哄的摇滚开场，到Ob-La-Di, Ob-La-Da的俏皮，到Blackbird的闲适绵长，到Helter Skelter的Heavy Rock。<br /> 当时Paul想做一种新的特别吵特别重的摇滚，用以回应The Who的I Can See for Miles，于是录制现场巨吵无比，Ringo Starr卖力地打鼓直到最后大喊一声：“I’ve got blisters on my fingers!”<br /> 这声呐喊被保留在发行版中，感兴趣的小伙伴可以听一听这首Helter Skelter</p> 
<h2>4. She Her Her Hers</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/She_Her_Her_Hers_001.jpg" alt="" />
 </figure> 
</figure> 
<p><em>Posted on July 24, 2025</em></p> 
<p>针不戳</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x76D6;&#x8328;1976&#x5E74;&#x7684;&#x300A;&#x81F4;&#x8BA1;&#x7B97;&#x673A;&#x7231;&#x597D;&#x8005;&#x7684;&#x4E00;&#x5C01;&#x516C;&#x5F00;&#x4FE1;&#x300B;</title>
        <link>https://justinyan.eth.limo/600F6D4E-6C9C-49C2-9D8D-4E149AF6F14B/</link>
        <guid>https://justinyan.eth.limo/600F6D4E-6C9C-49C2-9D8D-4E149AF6F14B/</guid>
        <pubDate>Mon, 28 Jul 2025 11:39:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/07/Bill-Gates-Open-Letter-1976-1.png" alt="" /></p> 
<p>1974年，还在哈佛上学的比尔·盖茨（Bill Gates），跟当时在霍尼韦尔工作的朋友保罗·艾伦（Paul Allen），一起看到MITS的Altair 8800计算机即将上市的新闻，觉得这是一台足够强大，能运行BASIC解析器的计算机。他们一起在西雅图湖滨学校上学的时候曾写过BASIC，于是决定开发Altair的第一个BAISC解析器。他们俩再加上哈佛的另一位学生蒙特·大卫杜夫（Monte Davidoff）终于在次年开发出了Altair BASIC，并且成功和MITS签订合同。每销售一份BASIC软件，盖茨他们将分得一份版权费。</p> 
<p>但是很快盖茨就发现，盗版的BASIC在当时各大计算机爱好者俱乐部中广泛传播。其中就包括著名的Homebrew Computer Club，这个俱乐部诞生了众多著名的计算机黑客和企业家，比如创办了苹果的乔布斯和沃茨。</p> 
<p>于是盖茨写了一封《致计算机爱好者的一封公开信》，当时Homebrew Computer Club有一个Newsletter，他们也刊载了这份公开信，引发大量讨论。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/Bill_Gates_Letter_to_Hobbyists_ocr-1.png" alt="" /></p> 
<p>我最近在重读沃尔特·艾萨克森（Walter Isaacson）写的《史蒂夫·乔布斯传》，读到了当时这个事件，于是找到那封信的原文，并进行了翻译，以下是译文。</p> 
<hr /> 
<p>致计算机爱好者的一封公开信</p> 
<p>我认为，现在爱好者计算机市场最严峻的问题是缺乏好的软件课程、书籍和高品质的软件。一台爱好者计算机（译者注：hobby computer，当时还没有出现真正的个人计算机personal computer，所以盖茨用的是爱好者/发烧友计算机这样的词）如果一台爱好者计算机没有高品质的软件，或者它的拥有者不会编程，那么这台计算机将毫无用处。所以爱好者计算机市场会出现高品质的软件吗？</p> 
<p>大概一年前，保罗·艾伦（Paul Allen）和我觉得，发烧友市场可能会持续扩大，于是我们聘请了蒙特·大卫杜夫（Monte Davidoff）一起开发了Altair BASIC（译者注：Altair是MITS公司制造的计算机，1975年推出的Altair 8800被认为是第一台真正意义上的个人计算机，也是盖茨他们开发的BASIC语言运行的平台）。虽然一开始我们只花了两个月时间就做好了第一个版本，但我们三人花了去年大部分时间给BASIC持续写文档，优化，添加各种特性。这才有了我们现在的4K, 8K, EXTENDED, ROM以及DISK版本的BASIC。我们花在这件事情上的时间大概价值 $40,000 美元。</p> 
<p>我们收到了很多积极的反馈，数百位使用过BASIC的人都说很棒。不过有两件事情让我们颇感意外。1) 我们大部分“用户”都没有购买BASIC（只有不到10%的Altair使用者购买了BASIC），2) 而我们从爱好者市场收到的版权费，平均下来让我们在 Altair BASIC 上投入的时间，每小时报酬还不到 2 美元。</p> 
<p>为什么会这样呢？大部分爱好者应该都很清楚，你们在偷我们的软件。硬件必须付费购买，但软件却可以随意分享。谁会在乎这些写代码的人能否拿到报酬？</p> 
<p>你们这样做公平吗？盗版软件可不是解决你们和MITS之间问题的办法。MITS并不以售卖软件盈利。支付给我们的版权费，印刷手册，磁带成本以及各种管理的费用，算下来差不多收支平衡。但是你们确实做了一件事情，就是阻止优秀软件的诞生。没有人可以无偿进行专业的软件开发。你告诉我哪个计算机爱好者可以投入三人年去写代码，修复Bug，编写文档，而且免费对外发行的？事实是，除了我们，没有人愿意在爱好者软件上投入大量资金。我们开发了6800 BASIC，也开发了8080 APL和6800 APL，但我们几乎没有动力把这些软件提供给爱好者们使用。直接点说，你们就是在盗窃。</p> 
<p>还有那些二次售卖Altair BASIC的人，他们不就是在赚爱好者软件的钱吗？是的，不过那些被我们举报的人，最后可能会吃亏的。是他们带给了计算机爱好者坏名声，他们无论出现在任何一个计算机爱好者俱乐部都应该立即被踢出去。</p> 
<p>我欢迎任何愿意付费，或提出建议的人给我们来信。请寄到新墨西哥州阿尔伯克基市东南阿尔瓦拉多街 1180 号 #114，邮编 87108。没有什么比这更让我开心的了：能够雇佣十个程序员，为爱好者市场源源不断地提供优质软件。</p> 
<p>比尔·盖茨</p> 
<p>微软公司普通合伙人（General Partner, Micro-Soft）</p> 
<hr /> 
<p>当时盖茨21岁，微软还不是corporation，而是合伙制企业，所以他的署名是General Partnet。微软那时候也不叫Microsoft，而是</p> 
<p>Microcomputer Software，所以用连字符署公司名。</p> 
<p>这次公开信事件之后，盖茨觉得按版权分成方式不靠谱，于是改为和MITS签署固定价格合同，后来微软和Commodore PET, Apple II, Radio Shack TRS-80 等平台销售的 BASIC 软件也都是采用固定价格合同模式。苹果1976年在宣传Apple I的时候特地说明Apple BASIC是完全免费的。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/Apple_1_Advertisement_Oct_1976-1.jpg" alt="" /></p> 
<p><em>参考链接: <a href="https://en.m.wikipedia.org/wiki/An_Open_Letter_to_Hobbyists">An Open Letter to Hobbyists - Wikipedia</a></em></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x4EEC;&#x53BB;&#x4E86;&#x8D9F;&#x4E54;&#x5E03;&#x65AF;&#x521B;&#x529E;Apple Computer&#x7684;&#x8F66;&#x5E93;</title>
        <link>https://justinyan.eth.limo/58327D89-4B03-4D86-93F2-67DE6F7D83DF/</link>
        <guid>https://justinyan.eth.limo/58327D89-4B03-4D86-93F2-67DE6F7D83DF/</guid>
        <pubDate>Sun, 20 Jul 2025 23:09:56 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Some notes from July 14–18.</p> 
<h2>广州K11的哆啦A梦巡回特展</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/001-01-scaled.png" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/001-02-scaled.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/001-03.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/001-04-scaled.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/001-05.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/001-06.png" alt="" />
 </figure> 
 <figure>
  <img src="https://cdn.justinbot.com/wp-content/uploads/2025/07/001-07-1.jpeg" alt="" />
 </figure> 
</figure> 
<p>由ARR创意工作室携手原作漫画家藤子不二雄的公司“藤子创作”，再次举办哆啦A梦巡回展，在夏天来到了广州K11。我上一次在广州看到哆啦A梦展已经是2013年的12月，当时的展出主题是“哆啦A梦诞生前100年祭”。<br /> 哆啦A梦是我小时候最喜欢的动漫之一，非常喜欢藤子不二熊天马行空的无穷无尽的想象力。小时候香港翻译是《叮当》，台湾翻译是《机器猫小叮当》，大陆似乎也是“叮当”为名。那会我家里还有几本哆啦A梦的大长篇，最喜欢的是《大雄与铁人兵团》，《大雄的日本诞生》还有《大雄的海底鬼岩城》。这次在K11也看到了不少原画的复制品，童年的回忆一下子涌现出来。<br /> 广州K11的展览地方不大，感觉规模比十多年前正佳的还要小一点。分为付费ABC区和几个免费区，拍照的人非常多。我去的时候户外的12米巨型哆啦A梦已经爆掉，变成一个喝了“神奇药水”液态化的哆啦A梦了😂(P7)<br /> 但总的来说哆啦A梦粉丝们还是很值得去看一下的，室内场还有两个不能拍照录像的影象区，也蛮有意思。</p> 
<h2>The Köln Concert - 用烂钢琴即兴的传奇独奏会</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/002-01.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/002-02.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/002-03.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/002-04.jpeg" alt="" />
 </figure> 
</figure> 
<p>1975年Keith Jarret在西德科隆的钢琴独奏会，当时工作人员准备钢琴的时候出了差错，组织者Brandes要求一台Bösendorfer 290 Imperial钢琴，而工作人员错误地放了一台只用于排练的，音准和踏板都有问题的小尺寸钢琴: Bösendorfer Baby Grand Piano。Jarret从苏黎世赶来的路上也出了些问题，好几个晚上没睡，因为背痛还不得不穿上固定支架。<br /> 但最终Jarret还是上台演奏了，他把演奏集中在琴键中部，避开这架钢琴尖锐单薄的高音区和音量微弱的低音区，仅用一两个和弦就能长时间即兴创作出丰富多彩的变化。<br /> 我在第一次听这张唱片的时候，也感觉到Jarret随着演奏的展开渐入佳境的感觉，越听到后面越觉得沉醉。<br /> 这张唱片最终也成为历史上爵士乐史上销量最高的钢琴独奏专辑，创造了历史。<br /> 今年是该唱片发行50周年，有一部以这场独奏会为主题的德国电影“Köln 75”在欧洲上映，但似乎并未在美国与亚洲有上映的计划，比较可惜。</p> 
<h2>我们去了趟乔布斯创办Apple Computer的车库</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/003-01.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/003-02.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/003-03.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/003-04.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/003-05.jpeg" alt="" />
 </figure> 
</figure> 昨晚给同事们分享了我上个月去WWDC25的见闻，在准备这份Keynote的时候我想到”One more thing…”曾经是Steve在舞台上常用的伎俩。 于是我在Keynote最后放了一张Steve车库的照片（P1）。这张照片拍摄于1996年，Steve站在他小时候的家门口，他身后的车库就是跟Steve Wozniak一起鼓捣出Apple I从而创办Apple Computer的地方。 我和朋友们去了这个车库门口，在2066 Crist Dr, Los Altos。现在是他的adoptive sister Patty Jobs住在这里，可能因为来的人太多，门口立了几块牌子声明“私人重地，请勿打扰”。 我们把车停在一两个街区以外，安安静静地走到这里，安安静静地拍了两张照片。然后走了。 有这群朋友真好。Thank you guys。 
<h2>Make Something Wonderful</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-01.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-02.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-03.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-04.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-05.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-06.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-07.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-08.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-09.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-10.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-11.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-12.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/004-13.png" alt="" />
 </figure> 
</figure> 
<p>2023年，"Make Something Wonderful"一书出版，收录了乔布斯生前大量的演讲、采访和邮件。内容涵盖乔布斯从车库创办苹果到被踢出公司，创办NeXT、管理Pixar，最后到回归苹果，到最后临终前一封辞职信。书名的副标题是: Steve Jobs in his own words。<br /> 用他自己讲的话来讲故事再适合不过。通过精选的照片可以看到他全情投入在每一个项目当。“创造”是他面对这个世界的方式。<br /> 读他NeXT和Pixar时期的邮件，颇有见字如面之感。回归前这12年，乔布斯变得愈发坚韧，比起年轻时的狂妄，42岁的他在孤傲中多了一层饱经沧桑后的沉稳。<br /> 在他的一生当中，世界一直在变，但不变的是他"热爱创造"的态度，就像乔布斯在扉页所说的，希望我也能倾注巨大的热爱，Make Something Wonderful。</p> 
<blockquote> 
 <p>"There’s lots of ways to be, as a person. And some people express their deep appreciation in different ways. But one of the ways that I believe people express their appreciation to the rest of humanity is to make something wonderful and put it out there.</p> 
</blockquote> 
<blockquote> 
 <p>And you never meet the people. You never shake their hands. You never hear their story or tell yours. But somehow, in the act of making something with a great deal of care and love, something’s transmitted there. And it’s a way of expressing to the rest of our species our deep appreciation. So we need to be true to who we are and remember what’s really important to us."</p> 
</blockquote> 
<h2>历久弥新，永不过时的经典设计: Lamy 2000钢笔</h2> 
<figure class="wp-block-gallery"> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/005-01.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/005-02.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/005-03.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/005-04.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/005-05.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/005-06.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/005-07.jpeg" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/005-08.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/005-09.png" alt="" />
 </figure> 
 <figure>
  <img src="https://justinyan.me/wp-content/uploads/2025/07/005-10.png" alt="" />
 </figure> 
</figure> 
<p>这支Lamy 2000诞生于1966年，由德国工业设计大师Gerd Alfred Müller设计，他曾在博朗公司设计过KM3厨师机（P8），SM 3刮胡刀（P9），还有跟Dieter Rams(P10，参考25/07/04的图文)一起设计PC 3唱机，这支钢笔是他离开博朗后在Lamy公司设计的。</p> 
<p>笔身采用拜耳公司于1958年研制出的新材料PC Makrolon。这是一种聚碳酸酯材料，轻盈而且具有玻璃的透明感。笔尖采用半包设计，所以虽然是金尖，但不如常规金尖柔软。笔头采用不锈钢，全身拉花条纹，握感非常不错。</p> 
<p>相比起五大的华丽，拿起Lamy 2000时更感觉到德国工业设计的冷静与稳定。而且定价人民币千元左右，跟五大比起来，这支笔的价格也要亲民得多。我一般很少会复购同一款笔，但这支笔我买了两次，是我的笔袋中不可或缺的一支。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6700;&#x8FD1;&#x7684;&#x56FE;&#x4E66;&#x3001;&#x7535;&#x5F71;&#xFF0C;&#x548C;&#x5531;&#x7247;</title>
        <link>https://justinyan.eth.limo/AD8049F1-0040-4172-87D0-56EC20BC4A0A/</link>
        <guid>https://justinyan.eth.limo/AD8049F1-0040-4172-87D0-56EC20BC4A0A/</guid>
        <pubDate>Sun, 20 Jul 2025 23:09:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>和之前<a href="https://justinyan.me/post/6153">这篇</a>一样，本文是近期在微信公众号更新的图文的合集。</p> 
<p>写了一个多月微信公众号的图文之后，截止到今日（2025/07/14），《F1电影: 给车迷的礼物 》有3千多阅读，《苹果的MagSafe》有2万阅读，《小米AI眼镜: 别买🙅‍♂️ 》有7万多，189条留言。但是小米那条变成了有点像吵架留言，我挺不喜欢的。以后也不发这种类型的东西了。</p> 
<p>除了这两条以外，我分享的图书，电影和唱片基本上没什么阅读。互联网发展到今天，已经从以前的“点击率”变成了现在的“流量”，这些内容在各个平台能不能有“流量”等同于推荐系统愿不愿意推你。这个“推你”的权力保留在各个平台的手里。</p> 
<p>我有一份全职工作，“流量”对我来说并不重要，所以我还是分享些虽然没啥流量，但是我喜欢的东西。</p> 
<h2>1. 人人都爱博朗设计 Dieter Rams: the complete works</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/07/shorts-001-scaled.jpg" /> 
<p>刚收到新买的“Dieter Rams: the complete works”, 这本书由编纂，收集了德国设计大师Dieter Rams的全部经典工业设计作品，其中大部份是博朗(Braun)产品，由PHAIDON出版社出版，品质保证。</p> 
<p>Rams出生于1932年，1956年年轻的Rams在博朗公司设计出名震一时的经典作品: SK4 radiogram. (P2)</p> 
<p>我是在看Scott Yu-Jan的YouTube Channel时留意到这本书的，他的video是3D打印一个iPhone Dock（P3），设计是就是致敬了DN40闹钟（P4）。</p> 
<h2>2. You get what you settle for</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/07/shorts-002-scaled.jpg" /> 
<p>1991年的电影《末路狂花》（Thelma &amp; Louise）我在前几年看过，但忘了，周末又看了一遍。主角都是女的，两位好朋友，相约一起开车去个山里露营休闲一下。结果Thelma路遇歹徒，Louise失手强杀那名男子，从此二人走向逃亡之路。<br /> 当时这部电影还曾是女性主义（feminist）电影的先驱，在那个女性抽烟被视为独立、很酷的时代，这部以女性为英雄主角的电影确实很帅。<br /> 除了女性主义以外，这部电影对于自由的追求，对于自我的解放才是真正的底层内核。</p> 
<ul> 
 <li>Thelma: I guess I went a little crazy, huh?</li> 
 <li>Louise: No, you've always been crazy. This is just the first chance you've ever had to really express yourself.</li> 
</ul> 
<p>一开始Thelma是那个更加脆弱的人，而Louise是更加坚强的。直到他们遇到Brad Pitt饰演的小流氓J.D.，睡了Thelma并把救命钱都拿走了之后，两人角色互换。Thelma找到了真实的自己，直到自己内心深处真正想要的东西，而Louise在强撑了那么长时间之后终于崩溃了。最后在Grand Canyon悬崖前，是Thelma说:"Let's not get caught. Let's keep going."</p> 
<p>最终两人驾驶汽车，面带笑容一跃飞入山谷。<br /> 重看这部电影，仍然为两人的勇敢而动容。</p> 
<p>Louise在影片开头说：“You get what you settle for.”</p> 
<h2>3. Stressless</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/07/shots-03.png" /> 
<p>周末在igc看到一家新开的挪威家具店，名字是Stressless。<br /> 设计感非常北欧，我一开始想这名字还不错，但是转念一想，这不是时刻在提醒我，现在我可能stressful吗😂<br /> 接着我想到，似乎stress这个词被用于心理学隐喻的时间并不算长，这个家具品牌说自己创办于1971年，那么孰先孰后呢？<br /> 我原以为这个概念可能会跟弗洛伊德有关系，没想到原来是由Hans Selye在1950年代提出的，他的书《The Stress of Life》（1956）让“stress”首次以科学语言进入普通人生活。<br /> 没想到，人类已经stress70年了😂。</p> 
<h2>4. Sony Design: Making Modern</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/07/short-004-scaled.jpg" /> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/07/003-010.png" /> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/07/003-011.png" /> 
<p>这本书是索尼产品录，由纽约Rizzoli出版，品质保证。书本封面是PS 4的侧影，因为出版于2015年，当时还没有PS 5及后续产品，书本内页采用铜版纸，印刷精度很高。<br /> 书本前面有一小段文字，其中有一段来自前伦敦设计博物馆馆长Deyan Sudjic的口述索尼设计史，值得一读。全书最大篇幅的部分是大量索尼经典产品的高清摄影，包括早期的磁带录音设备HDV-1000，磁带录音机，Walkman，到后期的CD播放器，话筒，DVD，MD磁碟机，摄影机，游戏机，笔记本等各种经典产品。<br /> 熟悉Steve Jobs的朋友都知道，他受索尼的影响很深，许多苹果的设计灵感也都源自索尼。比如1977年乔布斯在Apple II的广告中使用了"Simplicity is the ultimate sophistication"这样的广告语(P10 &amp; P11)。感谢Internet Archive我们现在能看到高清扫描版。<br /> 要达到极致的简洁，背后需要付出无与伦比的努力，无论是Apple还是Sony，还是我之前分享过的博朗设计，以及其他致力于让产品变得更加美好的团队，感谢你们的付出，人类世界才能变得更美好一点。</p> 
<h2>5. 夏天听什么？City Pop女王杏里1983年的专辑Timely!</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/07/short-005-scaled.jpg" /> 
<p>City Pop经典制作，日本女歌手杏里1983年发行的个人第六张录音师专辑《Timely!》，收录了当年的两首大热单曲。其一是《CAT'S EYE》，这首歌也是经典动漫《猫眼三姐妹》的主题曲。其二是角松敏生制作的《悲しみがとまらない》，两首歌都是我非常喜欢的杏里的代表作。<br /> 这张唱片的封面和内页都是在夏威夷拍摄的，摄影师是大久保久子（Hisako Okuobo），这位摄影师的风格也非常不错。<br /> 广州最近受台风影响，一直在吹空调外机，就该听一听ANRI，看看她晒得发黑的健康的皮肤，坐在办公室里吹着空调想象自己在夏威夷度假的感觉，这才是顶级牛马该有的姿态😂</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 147 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;36: &#x5C0F;&#x7C73;AI&#x773C;&#x955C;&#x548B;&#x6837;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/1C07517B-B8A8-4617-B731-20E808BDAE51/</link>
        <guid>https://justinyan.eth.limo/1C07517B-B8A8-4617-B731-20E808BDAE51/</guid>
        <pubDate>Sun, 20 Jul 2025 23:08:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/07/Podcast-Cover-v147.png" alt="" /></p> 
<p>科技快乐星球，攒了一个月，量大管饱。最近Justin买了小米AI眼镜，先说结论：现阶段这类型的AI眼镜都没啥必要买。</p> 
<p>除了小米，还有Meta和Rayban合作的眼镜，还有Meta和Okaley，还有国内的雷鸟等多家厂商都开发了类似的产品。但是小米的AI眼镜，与其他家一样，共享了所有此类设备都有的缺点，但并未针对这些缺点提出创新的解决方案。</p> 
<p>详情我们在节目里详聊。</p> 
<p>此外，OpenAI/Google/Claude等各大厂商持续在AI领域发力，眼看今年AI仍然是竞争大热的方向。</p> 
<p><em>P.S. 纠正一处错误：iyo不是Jonny Ive的公司，而是跟他打官司的公司，Jonny Ive的公司是io 。感谢听友提醒🙏</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:59 小米AI眼镜上手体验感受</li> 
 <li>00:06:53 超级小爱AI能力不及预期</li> 
 <li>00:11:18 小米为什么要做AI眼镜</li> 
 <li>00:17:52 小米AI眼镜音乐播放和录音的问题</li> 
 <li>00:28:31 OpenAI 欲与 io 联手开发AI耳机硬件</li> 
 <li>00:33:15 iPhone 音频文件能直接设置铃声了</li> 
 <li>00:34:26 AirPods 将新增相机控制、睡眠检测</li> 
 <li>00:39:05 Google 发布了 Gemini CLI</li> 
 <li>00:42:18 Gemini App 支持上传视频功能</li> 
 <li>00:43:16 MIT研究：ChatGPT让用户变懒，脑部活动下降</li> 
 <li>00:51:37 Gemini 2.5 模型家族：Flash/Pro/Lite 亮相</li> 
 <li>00:52:54 谷歌发布 Weather Lab AI 提升气旋预测准确性</li> 
 <li>00:54:04 阿里 Lingma IDE 上线，基于 VSCode 魔改</li> 
 <li>00:55:34 OpenAI 或推出"用ChatGPT登录"第三方应用功能</li> 
 <li>00:58:11 阿联酋全民将免费获得ChatGPT Plus订阅</li> 
 <li>00:59:45 Windsurf 被 Claude 断供，CEO发文控诉</li> 
 <li>01:00:38 Swift 编程语言正式支持 Android 平台</li> 
 <li>01:01:48 Switch2 日本销量超过 Xbox 本世代主机总和</li> 
 <li>01:05:05 安克创新主动召回部分批次移动电源</li> 
 <li>01:06:52 Android 16 正式版今日上线</li> 
 <li>01:07:51 腾讯音乐拟收购喜马拉雅 100% 股权</li> 
 <li>01:12:08 Spotify 支持在车里临时播放乘客的歌单</li> 
 <li>01:12:58 泰勒·斯威夫特成功回购前六张专辑母带所有权</li> 
 <li>01:14:36 Windows 11 记事本新增 Markdown 格式支持</li> 
 <li>01:15:07 苹果近年来的创新趋势</li> 
</ul> 
<h2>幕后制作</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: 静静</li> 
 <li>监制: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
</ul> 
<h2>联系我们</h2> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>F1: The Movie - &#x22;Not About the Money&#x22;</title>
        <link>https://justinyan.eth.limo/EF77CF87-CB2B-4366-A91D-D567958909A9/</link>
        <guid>https://justinyan.eth.limo/EF77CF87-CB2B-4366-A91D-D567958909A9/</guid>
        <pubDate>Thu, 03 Jul 2025 21:59:13 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/07/Apple_TV_F1_key_art_graphic_header_4_1_show_home.jpg.large_2x.jpg" alt="" /></p> 
<p>在F1这部电影里，Brad Pitt饰演的赛车手主角Sonny Hayes曾经被问过两次关于钱的问题。</p> 
<p>第一次是在电影开头的转折点，在一个Cafe，他的老朋友（现车队老板）来拉拢他回去F1帮他的车队开车。两人聊完之后，一开始Sonny是拒绝的。老朋友走了之后，他问给他上菜的女服务员。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/640.png" alt="" /></p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/640.webp" alt="" /></p> 
<p>Sonny Hayes: a close friend of yours make you a offer that a hundred percent positive too good to be true. What will you do?<br /> The waitress: Well how much are we talking?<br /> Sonny Hayes: not about the money.<br /> The waitress: So what is it about?</p> 
<p>Sonny没有回答。然后他就坐飞机前往英国参加比赛了。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/640-1.webp" alt="" /></p> 
<p>第二次是在电影末尾。Sonny帮助车队拿到分站冠军，使整个团队融为一体，原来小年轻车手也成长起来，他功成身退，前往沙漠参加巴哈1000越野赛。在沙漠里，他跟招聘赛车手的人又一次对话。</p> 
<p>Old guy: have you ever driven in Baja?<br /> Sonny Hayes: Nope.<br /> Young guy: We can't pay much.<br /> Sonny Hayes: not about the money.</p> 
<p>Sonny没有正面回答到底是关于什么。但是他对赛车的热情，在围场中贴地飞行的追求，已超出他对生命的热爱。</p> 
<p>Steve Jobs在1985年被踢出自己创办的Apple公司之后，在一次Newsweek的采访中谈到当时的心情。</p> 
<p>Newsweek: How did you react when you heard the [Apple] board’s decision [to sue you]? These were people that you knew and worked with for a long time.</p> 
<p>Steve Jobs: …（省略）… I personally, man, I want to build things. I’m thirty. I’m not ready to be an industry pundit. I got three offers to be a professor during this summer, and I told all of the universities that I thought I would be an awful professor. What I’m best at doing is finding a group of talented people and making things with them. I respect the direction that Apple is going in. But for me personally, you know, I want to make things. And if there’s no place for me to make things there, then I’ll do what I did twice before. I’ll make my own place. You know, I did it in the garage when Apple started, and I did it in the metaphorical garage when Mac started.</p> 
<p>Steve对"Build Things"的痴迷也是一样的。虽然苹果是一家商业特别成功的公司，虽然F1这项运动无处不要花钱，但是我挺羡慕影片中的角色，以及Steve Jobs，他们对某种热爱的痴迷。</p> 
<p>我想正是因为我们的生活中有太多太多的事情，无一不是about the money。所以当Brad Pitt开着他那辆乱糟糟的破破烂烂的Van，潇洒地说出那句:"Not about the moeny."时，才会为之触动。</p> 
<p>生活已经有太多的不得已，希望有一天我也能像他一样潇洒地说出来:</p> 
<p>Not About the Money.</p>
        ]]></description>
    </item>
    
    <item>
        <title>Xiaomi AI Glass: Not worth a dime.</title>
        <link>https://justinyan.eth.limo/C5ACF1C8-F23E-4CA1-8EE7-D6112D8053B1/</link>
        <guid>https://justinyan.eth.limo/C5ACF1C8-F23E-4CA1-8EE7-D6112D8053B1/</guid>
        <pubDate>Wed, 02 Jul 2025 16:55:25 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/07/DSC02447.jpg" alt="" /></p> 
<p>小米最新发布的AI眼镜有当前所有AI眼镜的共同问题，且没有提供好的解决方案，甚至不能跟自己的米家生态联动，这个眼镜已经不是鸡肋，是弃之不可惜。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/DSC02455.jpg" alt="" /></p> 
<h2>当前小米AI眼镜存在的问题</h2> 
<ol> 
 <li>作为一个蓝牙设备连接iPhone，能随时播放音乐，但不能直接让小爱同学播放Apple Music（它只支持直接播放QQ音乐）</li> 
 <li>这个眼镜连接的是“小米眼镜”App，除了能导入眼镜拍摄的照片视频之外其他的都非常差劲，不是鸡肋，是差劲</li> 
 <li>对话用的大语言模型能力特别差，可能连GPT 3.5都不如。</li> 
 <li>App里设计了“转写”，“同声传译”功能，但因为大语言模型太糟糕，这些功能完全达不到及格线。</li> 
 <li>跟小爱连续对话后，如果继续说话，最多可以等待30s。但是如果你说了几句“小爱同学”，它就会一直打断，因为它的触发判断延迟比较大。</li> 
 <li>不能跟小米生态联动。我站在小爱音箱旁边，两个设备会同时回答我。而这个眼镜本来是随身的，但是它不能操作米家的任何智能联动。</li> 
 <li>作为蓝牙设备（且有音箱），上车后会影响我操作CarPlay，导致我上车后要把眼镜关机。</li> 
 <li>有些隐藏手势操作，新手教程没有，App里想找也找不到。早上我误触了“开始录音”，一直找不到能关闭的方法，结果只能关机。</li> 
 <li>语音让小爱同学拍照是不可以的，只能用手摸到拍照按钮，手动点一下。为了隐私也可以理解，但小爱同学在眼镜上已经比不带Apple Intelligence的Siri还Silly了。</li> 
 <li>眼镜上的小爱同学不能一直播放他的语音回复。比如我让它念新闻，这在小爱音箱是常规操作，但在眼镜上它一次只能念一条。（要你何用</li> 
 <li>明明有个选项叫做“智能家庭控制授权”，为什么还是不能用眼镜操控我家的设备</li> 
 <li>小米眼镜似乎是必须连着iPhone App来运作，所以它要求我们把iOS App的后台位置权限打开，为了一直保活。但问题是这东西又不好用，使用频率不高，长期保活App还耗电。（这点算是在iOS上做这类设备的问题，如果苹果自己做它就会自己在后台开个超级daemon，没人管。</li> 
 <li>用眼镜听歌和接打电话体验OK。但这不是所有能长时间佩戴的蓝牙耳机都具备的功能吗🤦‍♂️这个眼镜又不具备屏幕显示功能，为啥我需要一个长得像眼镜的蓝牙耳机？</li> 
 <li>因为要往眼镜里塞各种东西，这个眼镜显得比较巨大，比一般的黑框眼镜要粗壮得多。控制成本，材料质感比较廉价，塑料感很强。重量OK，长期佩戴不会不舒服。但因为比较大，脸小的朋友估计不太喜欢得来。</li> 
</ol> 
<h2>有无解法?</h2> 
<ol> 
 <li>不想用蓝牙耳机的方式接入iOS的话，只能等苹果推出专门的外设连接接口，目前只有Apple Watch有这样的能力。而且如果真要接AI眼镜，我估计苹果会先自己做，不会先开放。</li> 
 <li>即使连接的是“小米眼镜”App，也能通过“授权”的方式，在后台操控同一小米账户下的米家设备。我怀疑是不是做眼镜和做米家的是两个部门的人，没有深度联动。</li> 
 <li>大语言模型差我怀疑可能是蒸馏了一个小体量的，提高响应速度。但按照目前的设计，可以用on-device的部分来触发小爱，剩下的通过眼镜网络或者手机App到后台去交换，这样效果会更好。目前的这个模型是不可用的，完全不及格的。</li> 
 <li>转写和同声传译功能，同样因为模型太弱，处于完全不及格状态。</li> 
 <li>多说几次“小爱同学”的打断，理论上可以通过软件优化解决。</li> 
 <li>站小爱音箱旁边的判断可能有点难度，但操控米家生态应该优先做。</li> 
 <li>因为连接了蓝牙设备导致影响CarPlay这个似乎没有解法，同#1只能等苹果</li> 
 <li>手势操作目前感觉还不是很适应，学习成本是有点高，但做AI眼镜要feature rich就避不开，除非像Vision Pro一样全靠视觉识别手势。但是App里的教程应该要配置齐全，这个是完全可以做到的。</li> 
 <li>其实用手摸按钮拍照我觉得也可以做得比较隐蔽，所以我倾向于不允许小爱同学拍照只是还没开发。如果小米的产品经理觉得要禁止这个功能，那么应该让小爱回答必须动手点按钮，这个不难实现。</li> 
 <li>小爱可以连续播放音乐，说明播放声音和串流音频数据不是瓶颈。我不理解为什么不能让小爱一直播新闻，这个应该可以做到的。</li> 
 <li>同#2</li> 
 <li>iPhone后台保活无解，目前所有AI眼镜都有相同的问题，同#1</li> 
 <li>只剩听歌打电话和拍照录像，那么这个眼镜毫无竞争力。Meta最近跟Oakley合作的“运动眼镜”也有类似的问题。</li> 
 <li>Meta的眼镜也有类似的问题，想要控制成本，眼镜质感高级，功能强大，同时要轻和纤细，按目前的工艺这是不可能实现的。</li> 
</ol> 
<p>Updated:<br /> 我换绑了眼镜到小米手机（虽然看似同账户会自动同步数据，但是不先解绑重新绑定的话就永远连接不上），可以打开我家客厅的灯了👍<br /> 但是我让它关灯，它说“对不起，小爱还在学习中”🤦‍♂️</p>
        ]]></description>
    </item>
    
    <item>
        <title>SwiftUI&#x5982;&#x4F55;&#x5B9E;&#x73B0;&#x6E10;&#x8FDB;&#x5F0F;&#x6A21;&#x7CCA;&#x6548;&#x679C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/ADB4292C-861F-449A-A236-9C802EC8D599/</link>
        <guid>https://justinyan.eth.limo/ADB4292C-861F-449A-A236-9C802EC8D599/</guid>
        <pubDate>Tue, 01 Jul 2025 17:33:23 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/07/progressive-blur.png" alt="" /></p> 
<p>最近在玩iOS 26 Liquid Glass，其中新的Tabbar改动是很多的。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/IMG_6059.png" alt="" /></p> 
<p>这个Apple Music底部的Tabbar就跟之前的版本完全不同。如果我们使用SwiftUI和新的API，要想获得这样的表现是很容易的。</p> 
<pre><code class="language-Swift">var body: some View {
        TabView {
            Tab("Home", systemImage: "home") {
                HomeView()
            }
            .badge(17)

            Tab("New", systemImage: "square.grid.2x2.fill") {
                NewView()
            }
            .hidden(sizeClass != .compact)
        }
        .tabBarMinimizeBehavior(.onScrollDown)
    }
</code></pre> 
<p>留意到当ScrollView的内容长度超过Tabbar之后，Tabbar会自动加上一层背景的渐变。看起来很Cool。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/IMG_6057.jpg" alt="" /></p> 
<p>我在尝试一个东西，就是实现一个类似iMessage底部聊天窗口的界面，这时候遇到了问题。</p> 
<p>目前这种置于底部Toolbar之下的渐变模糊，只有使用<code>.toolbar</code>接口才能自动实现。SwiftUI没有提供额外的接口给我实现这样的渐变。</p> 
<p>也就是说，如果我想实现iMessage这样的聊天界面，那么我最好使用.toolbar()</p> 
<pre><code class="language-Swift">.toolbar {
            ToolbarItem(placement: .bottomBar) {
                Button(action: {
                    // 更多功能
                }) {
                    Image(systemName: "plus")
                        .foregroundColor(.primary)
                }
            }
        }
</code></pre> 
<p>类似上述代码。这样的好处是我们自动地获得了底部的模糊渐变。但是当我们点了加号按钮，希望在Tabbar的下方弹起一个更多功能的面板时，不好意思，如果他是个Tabbar，那么目前没有办法让这个消息输入框能够放在这块面板的上方。</p> 
<p>那么iMessage如何实现的呢？</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/IMG_6060.jpg" alt="" /></p> 
<p>以Stickers为例，首先它present了一个面板，出现在Tabbar的下方。然后，当你拉动这个面板往上滑，神奇的一幕出现了，它不仅挡住了Tabbar，甚至挡住了顶部的navigationbar！</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/IMG_6061.png" alt="" /></p> 
<p>我怀疑它可能是:</p> 
<ol> 
 <li>在整个App的层级上它设计了一个能浮动的View，跟App同级别，或者跟Tabbar所处的Root View同级别，只有这样才能缩放Tabbar所处的View。</li> 
 <li>这是一个特殊的能力，不对外开放的。</li> 
</ol> 
<p>我目前倾向于是 #2，即使是 #1，我要实现和维护这个复杂度也不太合理，另外也不符合我想实现的视觉层级。</p> 
<p>于是乎我放弃Tabbar实现。转而使用一个普通的View。那么我就需要解决底部渐变的问题。既然官方不提供，那就只能自己实现了。我尝试过几种不同的方案，也包括Metal Shader，但效果不佳，最后发现Design+Code有这个: <a href="https://designcode.io/swiftui-handbook-progressive-blur">Progressive Blur in SwiftUI</a></p> 
<p>这个实现方案有点意思，它使用QuartzCore框架的CAFilter能力。首先创建一个"CAFilter"，这个Filter接受几个参数:</p> 
<ul> 
 <li>inputRadius: 表示高斯模糊程度，数字越大越模糊</li> 
 <li>inputMaskImage: 用来被模糊的图片</li> 
 <li>inputNormalizeEdges: 为true代表要对模糊的边缘进行平滑过渡处理</li> 
</ul> 
<p>这样通过调整<code>inputRadius</code>我们就能动态调整模糊的程度。</p> 
<p><code>inputMaskImage</code>则是一个利用<code>CIFilter</code>生成的，透明度从0到1的一张黑色图。这样当alpha为0时，完全不模糊，alpha为1时，进行最大模糊。</p> 
<p>那么这个Filter对谁作用呢？<code>UIVisualEffectView</code>。</p> 
<p>UIVisualEffectView里有一个<code>CABackdropLayer</code>，这个layer可以实现实时的模糊处理。拿到这个Layer之后，对其应用上面创建的CAFilter即可获得渐进式模糊效果了。</p> 
<p>具体的代码来自<a href="https://github.com/nikstar/VariableBlur">这个GitHub Repo</a>，核心代码是这个: <a href="https://github.com/nikstar/VariableBlur/blob/main/Sources/VariableBlur/VariableBlur.swift">https://github.com/nikstar/VariableBlur/blob/main/Sources/VariableBlur/VariableBlur.swift</a></p> 
<pre><code class="language-Swift"> class VariableBlurUIView: UIVisualEffectView {

    public init(maxBlurRadius: CGFloat = 20, direction: VariableBlurDirection = .blurredTopClearBottom, startOffset: CGFloat = 0) {
        super.init(effect: UIBlurEffect(style: .regular))

        // 我们用Objective-C runtime创建一个CAFilter，因为是私有API我们只能动态创建
        guard let CAFilter = NSClassFromString("CAFilter")! as? NSObject.Type else {
            print("[VariableBlur] Error: Can't find CAFilter class")
            return
        }
        guard let variableBlur = CAFilter.self.perform(NSSelectorFromString("filterWithType:"), with: "variableBlur").takeUnretainedValue() as? NSObject else {
            print("[VariableBlur] Error: CAFilter can't create filterWithType: variableBlur")
            return
        }

        // 这里创建一个0-1 alpha的渐变图片
        let gradientImage = makeGradientImage(startOffset: startOffset, direction: direction)

        variableBlur.setValue(maxBlurRadius, forKey: "inputRadius")
        variableBlur.setValue(gradientImage, forKey: "inputMaskImage")
        variableBlur.setValue(true, forKey: "inputNormalizeEdges")

        // 通过`UIVisualEffectView`拿到`CABackdropLayer`,然后我们针对这个layer应用上述Filter
        let backdropLayer = subviews.first?.layer
        backdropLayer?.filters = [variableBlur]
        
        // 这里去掉VisualEffectView的其他细节效果
        for subview in subviews.dropFirst() {
            subview.alpha = 0
        }
    }
	
	private func makeGradientImage(width: CGFloat = 100, height: CGFloat = 100, startOffset: CGFloat, direction: VariableBlurDirection) -&gt; CGImage { // much lower resolution might be acceptable
		// 这里创建一个0-1 alpha的渐变图片
        let ciGradientFilter =  CIFilter.linearGradient()
//        let ciGradientFilter =  CIFilter.smoothLinearGradient()
        ciGradientFilter.color0 = CIColor.black
        ciGradientFilter.color1 = CIColor.clear
        ciGradientFilter.point0 = CGPoint(x: 0, y: height)
        ciGradientFilter.point1 = CGPoint(x: 0, y: startOffset * height) // small negative value looks better with vertical lines
        if case .blurredBottomClearTop = direction {
            ciGradientFilter.point0.y = 0
            ciGradientFilter.point1.y = height - ciGradientFilter.point1.y
        }
        return CIContext().createCGImage(ciGradientFilter.outputImage!, from: CGRect(x: 0, y: 0, width: width, height: height))!
    }
}
</code></pre> 
<p>最后，可以实现如下渐变模糊效果，结合ScrollView可以实现实时动态模糊。虽然效果不如系统的Tabbar自带的，但已经稍微可以接近了。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/07/IMG_6062.png" alt="" /></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6700;&#x8FD1;&#x5199;&#x7684;&#x4E00;&#x4E9B;&#x77ED;&#x7BC7;</title>
        <link>https://justinyan.eth.limo/0B1FC6F7-8936-4F0D-979D-3A1F67FC960B/</link>
        <guid>https://justinyan.eth.limo/0B1FC6F7-8936-4F0D-979D-3A1F67FC960B/</guid>
        <pubDate>Sat, 28 Jun 2025 23:39:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/06/R0003336.jpg" alt="" /></p> 
<p>最近因为一些原因，我在微信公众号上以“图文”的形式在写一些小短文。一开始只是尝试，恰逢最近去加州WWDC25的旅程，不知不觉就写了十几天。结果写完觉得好像挺不错的，我的Blog已经挺长时间没有更新了，每次一想到要写长文就头疼。结果现在写这些小短篇就很随意。</p> 
<p>我本来平时就有很多碎片想法，不完善也不深刻，但经常会想到些什么。小时候我们学校的校服有点特别，要穿衬衫西装和皮鞋，我就在衣服口袋里装一本小小的笔记本，随时可以掏出来往上面写一两个关键词。现在我用Notion来记录，但有时候ideas记录进去就石沉大海了。最近的小短文让我有种每日小总结的感觉，就挺好的。</p> 
<p>按6/5开始算起，我一共发了十几篇。本文将是对过去这一个月我在微信公众号发的内容的总结，我想如果以后还继续更新的话，每周再在这里做个汇总。</p> 
<p>微信公众号的所谓“图文”我其实觉得也挺奇怪的，用内容形式来给一个产品命名。它的表面样式跟小红书现在的样式很像，但是这两个平台有着截然不同的内容分发逻辑。小红书目前的推荐模型比较偏，如果抓不住它喜欢的类型就分发不出去。比如，我想分享一期我喜欢的播客，在微信公众号你可以自由分享，在小红书会被屏蔽下架。比如，我想在小红书分享我自己做的东西，不好意思没人看，你必须写成你是第三人称，你发现了一个很厉害的东西，这样才有流量。</p> 
<p>我不确定小红书还要维持现在的逻辑多久，但是我感觉很像Bilibili，总有一天小红书用户多了以后，想要破圈了以后，就得像Bilibili跳出二次元小圈子一样，它也得跳出现在的主流内容，接受更广泛的主题。除非它不想扩圈，只想维持现状。</p> 
<p>我最近在微信公众号发的小短文，在小红书也会一模一样复制一份。但是比较可惜，在小红书几乎没有曝光的机会，除非你按照“小红书爆款文”的样式书写，而我并不想那样。所以随缘吧。</p> 
<h2>1. 喜欢读村上春树的小说，但说不出为什么</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/001.jpeg" /> 
<p><em>2025/06/06</em></p> 
<p>这是我几乎不评论村上春树小说的原因。他写出来的文字，朦胧且模糊现实与幻想的边界。</p> 
<p>我们提到小说就会想到故事情节，但村上的小说鲜有特别明晰的主线。早期作品《挪威的森林》算是个异类。</p> 
<p>后来的《刺杀骑士团长》就是特别明显的悬疑与幻想之作。</p> 
<p>村上的小说不多评判，只描述角色的行为。《寻羊冒险记》里主角的老婆突然离开了他，只留下一张纸。主角独自开车，一路往东北开去。角色的平静是异常的且孤独的。角色与角色之间发生的事情是有极大留白空间的。就像《驾驶我的车》短篇集，男主角的老婆出轨，男主角默默关上门出去了。改编成的同名电影也是，大量使用舞台词作留白，由读者细细品味个中细节。</p> 
<p>村上春树的作品刚引进中文世界的时候，大约是80年代末90年代初，日本经济泡沫破裂前后，中国经济高速发展前期。他的文字具有一种东亚文化所能接受的都市感。</p> 
<p>这种都市感与当时同期的《东京爱情故事》等自由恋爱观的日本电视剧一同影响了当时的读者。我记得《舞！舞！舞！》中的男明星，驾驶跑车的，在午夜自杀的情节。脑中浮现的画面就是以东京都市夜景为背景。<br /> 图中是我最近在读的村上的新书《城与不确定性的墙》，赖明珠翻译版。虽然只读了个开头，但是幻想世界与现实世界的边界在这部作品中更加含糊不清了。这很村上春树。</p> 
<h2>2. 旧地重游，心境不同。</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-scaled.jpg" /> 
<p><em>2025/06/08</em></p> 
<p>无论旧金山还是东京，第一次来的时候总不自觉代入一种不自然的刻板演绎。像东京，坐电车要安静不能出声，所以第一次来十分拘谨。后来跟一群朋友在东京街头放肆大笑，东京对我来说不再拘谨。<br /> 旧金山的金门大桥，比我第一次来的时候风还要大。那年孤身一人到处走，充满好奇又十分孤独。这次跟一群朋友徒步过桥，嘻嘻哈哈非常热闹。</p> 
<h2>3. Make friends, not war.</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-003-v2.jpg" /> 
<p><em>2025/06/08</em></p> 
<p>Inspired by Lennon, still true today.</p> 
<p>WWDC不是关于在台下看电视这件事情，甚至也不是2019年终结的最后一届真人舞台演讲的临场感，在场感，参与感。</p> 
<p>多年以前，我躺在宿舍的被窝里看乔布斯的iPhone发布会直播，那时候从未想过能到美国参加现场的苹果发布会。</p> 
<p>2016年算是我的第一届WWDC，在旧金山市区Moscone Center West，距离最后一届由乔布斯主持的WWDC已经4年。</p> 
<p>2019年是我的第二届WWDC，在现场遇到一位红袜子老程序员让我印象深刻。我想，等我头发白了我也能像他们一样经常来吗？结果Pandemic开始，19成了苹果发布会现场演讲的最后一场。</p> 
<p>2025年，这次我跟朋友们一起来。在来之前我并不知道朋友们得奖了，甚至到了出发前两天我才知道这个消息。I’m so proud of you guys.</p> 
<p>非常感谢朋友们让我一起参与这趟旅程。虽然才刚刚开始，但我们仿佛一起经历了很多。</p> 
<p>Make friends, not war.</p> 
<h2>4. 和优秀的人在一起，会渴望变得优秀</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-004.jpg" /> 
<p><em>2025/06/11</em></p> 
<p>不知道前世积了多大德让我认识这么一群特别优秀的朋友们。作为CapWords粉丝后援团团长，这些天跟大家在一起体验了非常起伏跌宕，刺激连环的旅程。</p> 
<p>这群朋友真的很难不令人羡慕，很难不令人尊敬。他们对创造的热情是澎湃的，是汹涌的，绵绵不绝的。</p> 
<p>感谢我的好朋友们愿意跟我分享这趟旅程，WWDC25是我参加过的最棒的一次WW，未来还会更棒。</p> 
<p>再次恭喜CapWords创造历史，成为第一个拿到苹果设计大奖Apple Design Awards的团队。</p> 
<p>Bravo guys! Bravo!👏😭</p> 
<h2>5. 在没有网络的山里住了几天</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-005.jpg" /> 
<p><em>2025/06/15</em></p> 
<p>2007年iPhone首次发布时乔布斯称之为breakthrough internet communicator. 在优胜美地这几天，我们的iPhone都没有信号。</p> 
<p>习惯了用手机互联网通信的我们，尝到了团队走散时难以沟通的困境。</p> 
<p>但也因为内没有信号，我们可以更专注欣赏眼前的风景。</p> 
<h2>6. RESET</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-006.jpg" /> 
<p><em>2025/06/17</em></p> 
<p>自然有春夏秋冬四季冷暖，人类在地球中演化了这么多年，跟其他生物一样适应这种周期变化。</p> 
<p>在湾区见到一位朋友，给电影做声音设计。他们的工作节奏就是一个一个project来，有project就紧张，做完了就休假几个月。比起9 to 5，这样的周期变化感觉更舒服。</p> 
<p>这趟旅途也算是我一次小小的休假。跟性格完全不同的朋友们在一起，看到和体验到很多不一样。</p> 
<p>我们的行程中住了三个不同的Airbnb房子。朋友问我最喜欢哪个房子，我说我是感兴趣的还是跟大家在一起玩，房子好像不是很重要。</p> 
<p>很高兴能跟朋友们一起旅行，RESET后，回国继续创造💪</p> 
<h2>7. 保持好奇，而不是轻言鄙视</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-007.jpg" /> 
<p><em>2025/06/18</em></p> 
<p>笔记App A看起来很蠢，为什么那么多人用？笔记App B看起来超级复杂，为什么更多人用？</p> 
<p>In-N-Out Burger并不好吃，为什么还能成为加州著名特产？</p> 
<p>labubu不就是一个公仔，为什么大受追捧？</p> 
<p>在看到一个新东西火起来的时候，非目标用户很容易下结论“这东西太蠢了”，“这都什么玩意儿”。</p> 
<p>但这些都是opinions，事实上这些产品都有相当规模的用户。他们的活跃用户数，他们的收入，这些是facts。在不了解他们设计的意图与用户喜欢这些产品的点之前，我们还是不要妄下结论的好。</p> 
<p>轻言鄙视，是在拒绝学习；</p> 
<p>保持好奇，可以探求未知。</p> 
<h2>8. 预期</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-008.jpg" /> 
<p><em>2025/06/20</em></p> 
<p>人的烦恼有时来自“预期不符”，这在开车这件事情上尤其明显。</p> 
<p>如果前车不打方向灯就突然并道加塞，后车司机往往会特别恼火，因为前车的行为是“不可预期”的。记得前阵子pony.ai的楼天成分享过类似的观点，认为从AI智驾这件事情上学到的就是让自己开车的方式可被预期，这样才是最安全的驾驶方式。</p> 
<p>在美国，汽车两侧的后视镜里的物体会被放大。这就意味着镜子里可以看到的内容会变少。我一般的超车习惯是等到后车的车头完整出现在后视镜时，就说明我与他有足够的安全距离。而在美国，这样判断下得出的距离要更长，理论上也更安全。</p> 
<p>但是另一方面，也就意味着盲区更大，当后车与我接近并行时，他将从我的后视镜里完全消失。所以美国驾照考试要求驾驶员在并道、超车时必须做shoulder check，也就是一定要把头扭到左边或右边，看看你旁边是否有车。</p> 
<p>我第一次在美国自驾的时候还有点怕怕，因为大家车开得快。但是习惯了之后就变得非常舒服，因为大家车开得快。</p> 
<p>而且最重要的是，绝大多数车的驾驶行为都是“可预期”的。</p> 
<h2>9. Switch 2只是硬件常规升级</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-009.jpg" /> 
<p><em>2025/06/21</em></p> 
<p>以往任天堂一般每隔一代就要“整活”一下，比如1996年发布的N64，创新的手柄摇杆和震动反馈，加上《塞尔达传说：时之笛》该系列佳作，《动物森友会》也在N64首发，成为任天堂代表机型之一。接下来Game Cube就扑街了。</p> 
<p>2006年发布的Wii也是大受欢迎之作，坚持任天堂“性能不是游戏机的一切”之路，创造性地走出了体感游戏之路。结果Wii U扑街。</p> 
<p>如今2017年发布的Switch是任天堂最近一代大热的游戏机，依然是“上古”硬件配置加超强第一方与第三方游戏阵容的组合，再加上创造性地把掌机和主机切换的“Switch”概念，从发售前外界看衰到发售后火箭起飞，有如神助。</p> 
<p>Switch的继任者Switch 2在发售第一天就送到我家门口了，但直到这周末我才能拿起来把玩一下。从硬件来看，是非常优秀的主机，但跟Switch比起来，是迭代升级，而不是革命性创新。跟上一代比起来，无论是性能提升，屏幕提升还是手柄从插槽改磁吸，都只能算得上“体验优化”，新增的“C”按钮连接玩家，我作为一个长期单机玩家，目前没感受到他的魅力。</p> 
<p>老任不整活也好，无功无过。</p> 
<p>但是老任你不整活啊，那你还是老任吗？</p> 
<p>难道接下来这个游戏机世代，老任要一直用这个Switch 2来扛过去？🤔<br /> 还是整点活好，虽然会扑街。</p> 
<p>这句话也就站着说话不腰疼，这要是风险落我身上🤔恐怕我扑不起街😂</p> 
<h2>10. 勇气与鲁莽</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-010.jpg" /> 
<p><em>2025/06/23</em></p> 
<p>以前我跟一位朋友聊，我说看到很多不断投身于自己的事业的朋友，他们有的创办自己的公司，有的去环游世界顺便写写自己的项目，有的接了Remote Job去到国外，觉得他们特别厉害，不晓得他们怎么做到的。</p> 
<p>当时我们聊到“风险”这个词，我朋友说：“可能他们的意识里没有‘风险’两个字”。<br /> 当时帮助我打开了一种新的视野，就是不同的人对待相同的东西，我们的感受与应对完全不同。</p> 
<p>如果仅仅是没有“风险意识”那么可能只是鲁莽，但是他们在充分考虑过做什么事情，能获得什么会失去什么，可能性多高，明知有风险却毫不畏惧，我认为这是一种勇气。</p> 
<h2>11. 没有什么做不了</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-011.jpg" /> 
<p><em>2025/06/24</em></p> 
<p>在我的播客《枫言枫语》刚发布的一期节目<a href="https://justinyan.me/post/6143">Vol. 145 专访 CapWords: 中国首个获苹果设计大奖 iOS 应用</a> 里，嘉宾61分享了无基础新手在优胜美地野外攀岩的经历。当我们聊到做产品的时候，嘉宾Ace提到他在构思产品的时候经常觉得“没有什么做不到”的。</p> 
<p>我说我刚毕业的时候也是，但是经过十多年社会的毒打我发现还是很多做不到的。</p> 
<p>Ace说：“到现在我还是这种感受,我觉得没有什么,没有什么做不了，比如说你不可能是规定的路线一直走。你的目标是爬到那个瀑布上嘛，他为什么能爬上去，是因为他变化了很多方法。如果只有一种方法，他肯定爬不上去的。他的脚在不断的变换，他的手在不断的找发力点，那么最终就是爬上去了。我觉得合作事情是一样的，你可能这条路走不通，那A+C+E能不能走得通，就是一个组合嘛。”</p> 
<p>这让我想起我们在优胜美地的第一天，我和Ace，61还有Clu四个人去爬一个瀑布。这地方一般不让进去，也没有正儿八经的路。有些地方有点高，我感觉上去了下不来。</p> 
<p>但是Ace往前冲得很快，他很有自信地说：“怕啥，肯定能下来的”。<br /> 现在我知道他为啥那么有自信了。</p> 
<h2>12. 只要把手机架上汽车中控台就一定会玩手机</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/012.jpeg" /> 
<p><em>2025/06/25</em></p> 
<p>最近要体验和研究iOS 16的新功能，把iPhone升级到Beta版，经典烫到煮鸡蛋。<br /> 所以最近开车的时候都把手机架到中控台空调出风口。</p> 
<p>我发现一旦把手机放在触手可及的地方，就一定会开始刷手机。在等红灯的时候，在堵车的时候（最近修路每天堵到天昏地暗），像一种魔咒。</p> 
<p>好在我还不至于边开车边玩手机（上图是堵到动不了的时候拍的），但我的确看到不少在路上开得特别慢的司机是因为分神在玩手机，无比痛恨。</p> 
<p>现代手机能有这么大的魔力让人类每天在这台设备上消耗这么多的时间与精力，说明它确实很好地满足了人类生活中相当多的需求，对我们日常每个方面的渗透已经非常深入。当我前阵子在山里断网的时候，我倒是体会到了离开手机的宁静，时间过得挺慢，但是是令人愉悦的慢。</p> 
<p>在山里的时候，我只需要关注衣食住行，每天跟朋友爬山，吃饭刷信用卡，导航有离线地图，听歌有下载好的音乐，似乎没什么必要非得把自己“挂”在网上。</p> 
<p>所以真的把自己7x24挂在网上，可能我们也并不真的能得到什么，不在网上，也不会真的失去什么。</p> 
<p>只要在需要的时候正好能用上互联网就足够了。虽然人类的本性里面可能缺少对“足够”的理解。</p> 
<p>这也是为什么像是释迦摩尼之类的人类智者，希望通过修行获得这些“非天性”的能力吧。</p> 
<h2>13. 换位思考的前提是知道“对位”怎么思考</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-013.jpg" /> 
<p><em>2025/06/26</em></p> 
<p>有一句鸡汤叫“要懂得换位思考”，但它没有说明的是如何才能做到“换位思考”。<br /> 首先要“知道对方怎么想”，然后才能“换”过去。</p> 
<p>比如说labubu，它火了，但我不知道它为什么火，因为我不是“真正喜爱”labubu的群体。可能Lisa是，她觉得labubu很可爱，所以她买了很多不同版本的labubu，也愿意经常带在身边。</p> 
<p>但现在labubu是真的火了，那就不仅仅是“可爱”了，它成为了一种社交话题，带出门就是个非常简单的social理由，同时也带有炫耀属性。</p> 
<p>我最近买了几只labubu送人，在送礼物这个场景里，最最重要的就是“换位思考”。我本人喜欢什么不喜欢什么一点都不重要，重要的是对方喜不喜欢这个礼物。</p> 
<p>同理，在跟其他人合作的过程中，假设我们在讨论同一件事情，比如评价同一个东西。小红喜欢labubu，小明不喜欢。如果小红跟小明介绍这个东西，小明第一时间就说“这不是智商税吗？”那么小明失去的不仅仅是小红，也失去了了解labubu的机会。</p> 
<p>倒不是说我们需要抓住每一个机会，毕竟每天要接触的东西那么多。但是总有些东西我们应该首先保持好奇，试图从受众的角度去思考，labubu到底满足了他们什么样的需求。</p> 
<p>很多年以前我跟一位同事说我喜欢创造的过程但不太在意结果。就好像我们做一个手工，制作的过程很有趣，但做完了之后就不太在意了。当时他跟我说“那你应该调整下”。那个时候我年少无知，后来渐渐明白了，一个被自己创造出来的东西，如果能既享受创造的过程，又享受创造的结果，且正好能跟很大一群志同道合的人一起使用，将是一种莫大的乐趣。</p> 
<h2>14. 是否被看好与是否能成功是两码事</h2> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2025/06/collage-014.jpg" /> 
<p><em>2025/06/27</em></p> 
<p>这世界上“不被外界看好”甚至“不被创始人看好”但最后却成功了的案例很多。</p> 
<p>Brian Chesky 2015年在Medium上写到</p> 
<blockquote> 
 <p>On June 26, 2008, our friend Michael Seibel introduced us to 7 prominent investors in Silicon Valley. We were attempting to raise $150,000 at a $1.5M valuation. That means for $150,000 you could have bought 10% of Airbnb.</p> 
</blockquote> 
<p>他们在2008年6月，也就是Airbnb创业的非常非常早期曾试图联系7个硅谷的投资人，以150万美金的估值寻求融资。最终收到了5封拒绝信，2人没有回复。</p> 
<p>在这么初期的阶段，要评估预测一个项目是否能成功是非常困难的一件事情，因为没有人能够预知未来，包括创始人本身。现在Airbnb估值825.3亿美元，写故事的人可以拿这个案例作为噱头写出特别讽刺的话来。但是事后诸葛亮是最没用的东西。</p> 
<p>我觉得对我来说，能从这个现象学到的比较有用的东西:</p> 
<ol> 
 <li>动不动就写什么“大崩盘”之类通过反差来吸引眼球的东西，可以忽略。比如泡泡玛特最近的起落。</li> 
 <li>同一件事情，不同的人一定有不同的观点，观点本身不是最重要的，我们可以通过看见别人不一样的观点，学到“不一样”，但不需要同意。事实更加重要。我可以不喜欢拼多多，这并不妨碍它有特别夸张的营收，说明有不少人“需要”它。</li> 
 <li>外界甚至创始人本身是否看好一个项目，跟这个项目能否成功是两码事。但是不论是Airbnb还是想把自己卖给Blockbuster的Netflix，他们都在不断变换自己的身法，在瞬息万变的世界中寻找立足之处。这个世界没有什么是永恒不变的，唯一不变的就是“变”本身。</li> 
</ol> 
<p>所以，要不断去变，不断尝试。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 145 &#x4E13;&#x8BBF; CapWords: &#x4E2D;&#x56FD;&#x9996;&#x4E2A;&#x83B7;&#x82F9;&#x679C;&#x8BBE;&#x8BA1;&#x5927;&#x5956; iOS &#x5E94;&#x7528;</title>
        <link>https://justinyan.eth.limo/912DCEEB-0F83-4874-8D35-0CE0B616F534/</link>
        <guid>https://justinyan.eth.limo/912DCEEB-0F83-4874-8D35-0CE0B616F534/</guid>
        <pubDate>Mon, 23 Jun 2025 23:13:54 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/06/Podcast-Cover-v145_v5.png" alt="" /></p> 
<p>今年的 WWDC 我(Justin)又一次来到现场，这是我的第三次 WWDC 了，也是我最特别的一次 WW 之旅。因为这次我是跟一大群朋友一起来的，主要是谜底和 CapWords 的朋友们。我们一行7人，不仅 CapWords 带我们飞，感受了一把在 WWDC 上台领奖的喜悦(我在台下做气氛组也很激动)，我们还在 WW 结束之后前往优胜美地山里，住在小木屋夜聊了几个小时。</p> 
<p>本期节目是我(Justin)和 CapWords 团队的在那天夜聊的内容，我们谈了开发 CapWords 的心路历程，谈了这趟来 WWDC 的不容易，也谈了大家各自开始喜欢苹果的缘由。时间过得飞快，我们还没开始进入主题，刷一下就过去了。聊得不过瘾，我们相约再来一期，只不过接下来几天我们都累坏了，下一期等我们择日再来。</p> 
<p>再次恭喜 CapWords 成为中国首个获得苹果设计大奖(Apple Design Awards)的 iOS 应用，有这样的朋友我感到非常荣幸，虽然我在这个项目上没啥贡献，但是这些天跟大家在一起，很替大家感到骄傲，我穿上 CapWords 的队服，也感到与有荣焉。</p> 
<p>CapWords 官网: <a href="https://capwords.app/">https://capwords.app/</a> | <a href="https://apps.apple.com/app/id6738896465">在 App Store 下载</a></p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/06/Podcast145_stage_01.jpg" alt="" /></p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/06/Podcast145_stage_02.jpg" alt="" /></p> 
<h2>本期嘉宾</h2> 
<p>CapWords 开发者：</p> 
<ul> 
 <li>Acelee(强哥) <a href="https://x.com/DTD_STUDIOS">@DTD_STUDIOS</a></li> 
 <li>Clu <a href="https://x.com/thexclu">@thexclu</a> | <a href="https://clu.so/">Blog </a></li> 
 <li>61(柳毅) <a href="https://x.com/liuyi0922">@liuyi0922</a> | <a href="https://61.life">Blog</a></li> 
</ul> 
<h2>🎁本期抽奖</h2> 
<p>CapWords团队给我们送出年度会员10个🎉</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场，优胜美地🏞️小木屋，嘉宾介绍</li> 
 <li>00:02:55 CapWords 是三人的业余作品</li> 
 <li>00:06:12 没攀过岩的61，第一次在优胜美地野外攀岩</li> 
 <li>00:09:31 CapWords 解决的用户需求</li> 
 <li>00:12:57 苹果设计大奖 Apple Design Awards</li> 
 <li>00:13:27 为什么 CapWords 赢得 Delight and Fun 类别的奖项</li> 
 <li>00:15:27 Designing something request focus, the first thing we ask is what do we want people to feel. Delight…</li> 
 <li>00:16:27 为什么要做 CapWords 这个产品？</li> 
 <li>00:20:22 最早的贴纸产品原型，加上 GPT 的多模态能力出现</li> 
 <li>00:23:51 强哥从什么时候开始做设计以外的工作？</li> 
 <li>00:24:23 早在2012就成立 Lab 开始鼓捣各种产品</li> 
 <li>00:25:07 强哥听了61的<a href="https://www.xiaoyuzhoufm.com/episode/5f168e536d76607427579dd7">一期播客</a>，感触很深</li> 
 <li>00:26:05 十多年前移动互联网刚起时的经历</li> 
 <li>00:28:41 我们第一台苹果设备是什么，为什么被苹果吸引？</li> 
 <li>00:35:17 61 的实习故事，与苹果的渊源</li> 
 <li>00:41:37 Clu 第一次接触苹果设备的经历</li> 
 <li>00:47:17 CapWords 的动画设计与产品的快速迭代</li> 
 <li>00:53:53 强哥性格的特质恰好是促成 CapWords 细节的功臣</li> 
 <li>00:56:04 大家对沉浸式创造的心情的感触</li> 
 <li>01:00:41 没有不可能 vs 社会的毒打</li> 
 <li>01:03:21 不断Push团队边界，与老男人抱头痛哭</li> 
 <li>01:06:28 CapWords 的整体设计与架构演变</li> 
 <li>01:17:08 事后总结的必要性</li> 
 <li>01:18:58 做 CapWords 遇到的两个困难与挑战</li> 
 <li>01:22:17 CapWords 成为首个获得苹果设计大奖的中国 iOS 应用，得奖经历如何？</li> 
 <li>01:26:23 来到美国参加 WWDC，遇到最大的困难是什么？</li> 
 <li>01:29:32 强哥从一句英语不会讲，到能对着媒体用英文讲述 CapWords 故事</li> 
 <li>01:34:30 CapWords 团队特别深厚的友谊</li> 
 <li>01:43:56 在做 CapWords 产品的整个过程中，最大的收获是什么？</li> 
 <li>01:49:51 这么多年来一直不变地投入创造，到今天拿奖，有没有哪些是你觉得不好的一面，是你不想要的。</li> 
 <li>01:51:46 如果完全不需要考虑收入的话，你最想做什么？</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>强哥提到的书: 《禅与摩托车维修》</li> 
 <li>Clu 提到的视频来自《Designed By Apple Intention》 - WWDC 2013</li> 
 <li>节目中提到的那句话原文是: “Designing something requires focus. … Delight. Surprise. Love. Connection. Then we begin to craft around our intention. It takes time. There are a thousand no’s for every yes.”</li> 
 <li>节目中提到的 61 参加的一期播客: <a href="https://uxcoffee.com/episodes/83">83. 三十而立，放弃该放弃的，追求该追求的（谜底科技创始人 61） - UX Coffee 设计咖</a></li> 
 <li>小宇宙链接👉 <a href="https://www.xiaoyuzhoufm.com/episode/5f168e536d76607427579dd7">https://www.xiaoyuzhoufm.com/episode/5f168e536d76607427579dd7</a></li> 
</ul> 
<h2>幕后制作</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: 静静</li> 
 <li>监制: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
</ul> 
<h2>联系我们</h2> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 144 &#x82F9;&#x679C;&#x5168;&#x7403;&#x5F00;&#x53D1;&#x8005;&#x5927;&#x4F1A;WWDC25</title>
        <link>https://justinyan.eth.limo/CB7A2E6C-06C3-4550-849C-048B84A5BBEC/</link>
        <guid>https://justinyan.eth.limo/CB7A2E6C-06C3-4550-849C-048B84A5BBEC/</guid>
        <pubDate>Wed, 18 Jun 2025 21:29:27 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/06/Podcast-Cover-v144_v1.png" alt="" /></p> 
<p>苹果WWDC25来啦！</p> 
<p>Liquid Glass液态玻璃设计成最大话题，AI销声匿迹？WWDC现场享受加州阳光是什么样子？开发者们状态如何？</p> 
<p>今年本台主播Justin前往美国加州参加WWDC25，发来现场报道。虽然苹果AI最终没有兑现，但重新设计的全新液态玻璃界面还是非常灵动好看。</p> 
<p>总之废话不多说，立马进入我们跟《科技早知道》的年度串台节目吧！</p> 
<p>以及恭喜首个获得苹果设计大奖Apple Design Adwards的中国团队CapWords!</p> 
<p>CapWords官网: <a href="https://capwords.app/">https://capwords.app/</a> | <a href="https://apps.apple.com/app/id6738896465">在App Store下载</a></p> 
<h2>时间轴</h2> 
<ul> 
 <li>02:21 Apple Park 现场直击：WWDC 是一场开发者的盛宴</li> 
 <li>09:45 AI 不够，界面来凑，「液态玻璃」成发布会最大亮点</li> 
 <li>18:05 全家桶设计语言全统一，苹果生态迈入「26系列」时代</li> 
 <li>22:09 管理层动荡、团队人心惶惶，「Apple Intelligence」为一拖再拖？</li> 
 <li>26:09 开发者的福音：不要钱的「基础模型框架」大大降低了开发门槛</li> 
 <li>32:30 Spotlight 成为 Mac 「超级入口」，第三方 APP 压力山大</li> 
 <li>37:40 极致的视觉设计，跨 APP 的 AI 助理，什么才是只有苹果能做的事？</li> 
 <li>44:21 视觉智能、健康管理、通话助手，AI 体验润物细无声，但Siri 去哪了？</li> 
 <li>51:16 苹果开放基础模型， AI 普惠的时代到来了吗？</li> 
</ul> 
<h2>幕后制作</h2> 
<p>声动活泼团队</p> 
<ul> 
 <li>监制：Yaxian</li> 
 <li>后期：迪卡</li> 
 <li>运营：George</li> 
 <li>设计：饭团</li> 
</ul> 
<p>枫言枫语团队</p> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 143 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;35: &#x5404;&#x79CD;AI&#x6A21;&#x578B;&#xFF0C;&#x5404;&#x79CD;Agent</title>
        <link>https://justinyan.eth.limo/6463DEC9-EB10-4BC4-BD5A-10A191B92868/</link>
        <guid>https://justinyan.eth.limo/6463DEC9-EB10-4BC4-BD5A-10A191B92868/</guid>
        <pubDate>Tue, 27 May 2025 14:03:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/05/Podcast-Cover-v143_v1.png" alt="" /></p> 
<p>最近OpenAI, Anthropic, Google各自发布了新的模型和新功能，尤其Google IO大会更是重拳出击。AI这个方向目前来看依然生机勃勃，该卷模型的卷模型，该卷Agent的卷Agent，一派生机盎然之景象。</p> 
<p>6月是苹果WWDC全球开发者大会召开之时，他们去年承诺的Apple Intelligence眼看是没戏了，不知道今年的WW还能整出什么活来。且不说WW，苹果和Epic之间的案子法院基本宣判苹果凉凉，堡垒之夜已经重返App Store，绕开iAP付费。虽然只在美国生效，但显然这将是一种趋势。不知道苹果接下来该如何应对。</p> 
<p>就让我们走进本期科技快乐星球，走进科技新闻。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:29 App Store 首次允许展示外部支付方式</li> 
 <li>00:05:58 苹果将推出全新 CarPlay Ultra 车载体验</li> 
 <li>00:10:46 WWDC 即将来临</li> 
 <li>00:16:25 Google I/O 2025 开发者大会召开</li> 
 <li>00:21:53 Gemini 集成至 Chrome 浏览器</li> 
 <li>00:30:50 AI 服务将推出订阅价格与终身套餐？</li> 
 <li>00:33:04 AI 试衣与购物体验革新</li> 
 <li>00:35:49 Gmail 引入 AI 智能回复功能</li> 
 <li>00:40:05 Android 16 新特性亮相</li> 
 <li>00:42:36 小米发布会：新车 YU7、玄戒 O1 处理器</li> 
 <li>00:47:09 YouTube 将在“高峰时刻”后插入广告</li> 
 <li>00:53:39 Meta AI 推出 iPhone 专属应用程序</li> 
 <li>00:55:44 Jony Ive 加入 OpenAI，硬件新作令人期待</li> 
 <li>00:58:34 OpenAI 收购 Windsurf 编辑器</li> 
 <li>01:02:14 丹麦将退休年龄上调至全球最高的 70 岁</li> 
 <li>01:06:00 Mozilla 宣布即将关闭 Pocket 服务</li> 
 <li>01:08:33 微软商店将免除个人开发者的应用发布费用</li> 
 <li>01:10:27 微软新账户将默认启用无密码登录</li> 
 <li>01:11:58 YouTube 试点“双人 Premium”订阅服务</li> 
 <li>01:13:09 比尔·盖茨宣布将捐出 99% 财产</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 142 &#x6A58;&#x5B50;: ListenHub &#x542C;&#x89C1;&#x597D;&#x5947;&#x5FC3;</title>
        <link>https://justinyan.eth.limo/877547BB-64A6-4984-A28D-96C3485D5833/</link>
        <guid>https://justinyan.eth.limo/877547BB-64A6-4984-A28D-96C3485D5833/</guid>
        <pubDate>Mon, 19 May 2025 12:44:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/05/Podcast-Cover-v142.png" alt="" /></p> 
<p>AI创业是过去几年特别火的一个创业方向，本期邀请到我们节目的嘉宾是<a href="https://x.com/oran_ge">橘子 Orange.ai</a>，他在创业之前也在不少公司工作过，像是“古典产品”的Boss直聘，还有“AI产品”MiniMax，作为一个工作经验丰富的产品经理，橘子在节目中分享了不少AI产品经理与传统产品经理的思维差异。</p> 
<p>以及最重要的，橘子的创业项目<a href="https://listenhub.ai/zh">ListenHub</a>也跟我们本期节目同期发布啦！橘子也给听友们带来福利🎁，将送出 10 个 ListeHub 的年费会员🎉。大家在评论区参与讨论，即可参与抽奖🥳。</p> 
<p>需要<a href="https://listenhub.ai/zh">ListenHub</a>邀请码的小伙伴可以使用我台专属邀请码注册👉FENGYANFENGYU</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场: 嘉宾 @橘子</li> 
 <li>00:00:38 方言打招呼</li> 
 <li>00:04:18 正在AI创业的橘子，做了个产品叫ListenHub</li> 
 <li>00:05:00 为什么开始做AI方向的创业？跟MiniMax的经验有关吗？</li> 
 <li>00:08:52 用“听”代替“看”获取新闻资讯</li> 
 <li>00:09:54 “AI产品”和“传统产品”关注的核心指标有什么不一样？</li> 
 <li>00:10:55 Boss直聘的关注的指标，不是DAU，也不是留存</li> 
 <li>00:12:06 ListenHub期望用户每天早上都来听个五分钟</li> 
 <li>00:16:03 AI产品如何衡量模型输出质量的好坏？</li> 
 <li>00:20:29 什么时候开始做ListenHub？</li> 
 <li>00:24:07 现在AI的幽默感怎样？</li> 
 <li>00:25:38 音乐版权问题</li> 
 <li>00:27:25 ListenHub解决的用户的核心需求是什么呢？</li> 
 <li>00:30:19 橘子的分享：如果人生是一场强化学习，你的奖励函数是什么？</li> 
 <li>00:39:47 主动探索，和这个世界大战三百回合</li> 
 <li>00:42:42 橘子创业的融资故事</li> 
 <li>00:45:01 现在的团队的构成，欢迎大家来投简历，欢迎remote👏</li> 
 <li>00:48:20 Boss直聘想做中国的LinkedIn吗？</li> 
 <li>00:49:34 听友提问1: AI赛道竞争压力大，如何平衡工作与生活？</li> 
 <li>01:00:18 听友提问2: 人在每次做职业选择的时候最在意的要素是什么?</li> 
 <li>01:05:52 灵魂三问</li> 
 <li>01:14:58 嘉宾送福利🎁</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://x.com/oran_ge">橘子 Orange.ai</a> | <a href="https://web.okjike.com/u/FCEA29D3-5BB5-4174-B7A9-1DEE77CEDC46">即刻</a></li> 
 <li><a href="https://listenhub.ai/">ListenHub: 听见好奇心</a></li> 
 <li>橘子的播客: <a href="https://www.xiaoyuzhoufm.com/podcast/6640bb10390b415a59a41773">Orange AI</a></li> 
 <li>橘子的微信公众号: 橘子的汽水铺</li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 141 Justin Chen: &#x5728;&#x65E5;&#x672C;&#x5927;&#x962A;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/7CE88C49-953E-4AE9-928C-685D8D16C1DE/</link>
        <guid>https://justinyan.eth.limo/7CE88C49-953E-4AE9-928C-685D8D16C1DE/</guid>
        <pubDate>Mon, 12 May 2025 10:25:36 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/05/Podcast-Cover-v141.png" alt="" /></p> 
<p>很久没有录“世界各地”系列啦，本期我们邀请到在日本大阪的Justin Chen，跟我们聊聊大龄码农举家移居日本的故事。</p> 
<p>我台之前也聊过两期日本的，但两位嘉宾都选择了东京，而本期嘉宾Justin Chen则选择了大阪。</p> 
<p>那么Justin为什么选择大阪呢？他在大阪又是做什么呢？大阪的住址，小孩的择校又有什么经验呢？</p> 
<p>废话不多说，我们直接开聊。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 世界各地系列·大阪：嘉宾 @Justin</li> 
 <li>00:00:52 嘉宾用方言打招呼</li> 
 <li>00:02:33 为什么选择了日本大阪这个城市？</li> 
 <li>00:06:26 在大阪的居住体验及孩子的上学经历</li> 
 <li>00:08:46 日本本地对小孩的教育理念</li> 
 <li>00:11:41 日语的学习经历</li> 
 <li>00:12:50 在日本的工作模式</li> 
 <li>00:14:06 为何选择去日本发展</li> 
 <li>00:18:08 出国过程遇到最难的点是什么？</li> 
 <li>00:23:16 公司的业务模式和经营范围</li> 
 <li>00:25:22 不经意间成立了“一人公司”</li> 
 <li>00:30:14 开展在线AI课程业务的契机</li> 
 <li>00:41:27 AI带来了创造力的“文艺复兴”</li> 
 <li>00:50:11 “大阪的天气像是恒纪元”</li> 
 <li>00:53:16 交通通勤的体验</li> 
 <li>00:56:41 房价相关</li> 
 <li>01:00:08 饮食文化</li> 
 <li>01:05:22 给来大阪定居的朋友的建议</li> 
 <li>01:07:54 听友提问：作为独立开发者最有成就感的事？</li> 
 <li>01:10:17 听友提问：作息如何？有小孩后如何平衡？</li> 
 <li>01:12:03 听友提问：如何在日本找工作？职场氛围如何？</li> 
 <li>01:16:16 听友提问：日本什么样的行业程序员最多？</li> 
 <li>01:17:37 灵魂三问</li> 
 <li>01:27:28 尾声</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://x.com/interjc">Justin Chen</a> | <a href="https://interjc.net/">interjc.net</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 140 Xmind&#x521B;&#x59CB;&#x4EBA;&#x5B59;&#x65B9;: &#x6211;&#x7684;&#x70E6;&#x607C;&#x8D8A;&#x6765;&#x8D8A;&#x591A;&#xFF0C;&#x4F46;&#x6211;&#x4E0D;&#x70E6;&#x607C;&#x4E86;</title>
        <link>https://justinyan.eth.limo/C6746A4E-E783-4E7F-BFE9-9E84BFC68A7D/</link>
        <guid>https://justinyan.eth.limo/C6746A4E-E783-4E7F-BFE9-9E84BFC68A7D/</guid>
        <pubDate>Mon, 28 Apr 2025 18:04:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/04/Podcast140_v4.png" alt="" /></p> 
<p>本期节目我们邀请到Xmind的创始人孙方(人称“园长”)，和我们分享Xmind这家神仙公司的创业历程。</p> 
<p>园长同时也是一位佛学修习者，还有自己的佛法课。我(Justin)对这门古老的哲学也特别感兴趣，尤其是在现代社会，互联网行业，这样一个变化迅速的行业里。这些年硅谷大佬中流行的“正念”就是从古老的东方禅修中演变而来。</p> 
<p>园长既在俗世中创办和持续运营着Xmind这样一个公司，又在佛法中持续修行，颇有见地。这样的状态实在令人羡慕，那么园长到底拥有何方秘籍，能这般超然呢？让我们一起走进本期节目吧。</p> 
<p><em>P.S. 非常抱歉，因为设备的原因，本期节目出现了不少电流音，后期已经尽力抢救但效果有限😢。Justin表示已经买了新的话筒线，以后将不再出现电流音干扰了🤦‍♂️</em></p> 
<h2>🎁本期抽奖</h2> 
<p>园长给我们带来<a href="https://mapify.so/">Mapify</a>兑换码两个</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 嘉宾：园长</li> 
 <li>00:00:25 名字来历与方言打招呼</li> 
 <li>00:03:30 Xmind 公司的创业历程</li> 
 <li>00:06:24 Xmind 解决了用户哪些核心需求</li> 
 <li>00:12:21 AI 相关的新产品：Mapify</li> 
 <li>00:15:47 外文书籍的翻译痛点</li> 
 <li>00:23:38 Xmind 在AI时代将会怎样存在？</li> 
 <li>00:27:44 按时下班，半卷半躺，停止思考人生的意义</li> 
 <li>00:32:06 是什么契机想到学佛法</li> 
 <li>00:39:45 如何寻找人生中的自洽</li> 
 <li>00:44:08 “你讲佛法课的 KPI 是什么？”</li> 
 <li>00:49:53 “我的烦恼越来越多，但我不烦恼了”</li> 
 <li>00:52:35 禅修的目的是什么？念头是“因果的果”</li> 
 <li>00:55:42 禅修与正念的误区，迷恋正念就是不正念</li> 
 <li>00:59:49 “我们一定要做又开心又赚钱的事儿”</li> 
 <li>01:04:26 我们总是有选择的，而不是只能和别人卷</li> 
 <li>01:11:44 To创业者：做你热爱的事情，说出你和别人的不同</li> 
 <li>01:16:10 听友提问：选产品方向时如何平衡个人兴趣和市场需求？</li> 
 <li>01:18:17 听友提问：为何会对佛法产生兴趣？</li> 
 <li>01:20:52 听友提问：如何管理一个活泼、开放、松弛的公司？</li> 
 <li>01:23:07 听友提问：如何做产品的营销和推广？</li> 
 <li>01:24:24 灵魂三问</li> 
 <li>01:44:38 🎁 嘉宾送互动福利</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: Xmind创始人<a href="https://x.com/sunfang">孙方("园长")</a> | 公众号: 园长的多重宇宙</li> 
 <li><a href="https://xmind.cn/">Xmind思维导图</a></li> 
 <li>相关节目: <a href="https://www.xiaoyuzhoufm.com/episode/6392e073a07c5e0cda6c70d4">E66 Xmind 创始人孙方：创业 16 年，任身旁巨兽呼啸而过 - 知行小酒馆 | 小宇宙 - 听播客，上小宇宙</a></li> 
 <li>相关节目: <a href="https://www.xiaoyuzhoufm.com/episode/6434f4e59361a4e7c33accad">E24 孟岩对话孙方：真实，自有万钧之力 - 无人知晓 | 小宇宙 - 听播客，上小宇宙</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 139 Owen: &#x90A3;&#x4E2A;&#x5F04;&#x22;&#x6C89;&#x6D78;&#x5F0F;&#x7FFB;&#x8BD1;&#x22;&#x7684;&#x540E;&#x751F;</title>
        <link>https://justinyan.eth.limo/ACC0D973-1333-48E6-89D4-83A984F4EA57/</link>
        <guid>https://justinyan.eth.limo/ACC0D973-1333-48E6-89D4-83A984F4EA57/</guid>
        <pubDate>Mon, 21 Apr 2025 21:24:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/04/Podcast-Cover-v139-v3.png" alt="" /></p> 
<p>本期节目我们邀请到著名的<a href="https://immersivetranslate.com/zh-Hans/">“沉浸式翻译”</a>的作者Owen，跟我们分享沉浸式翻译的故事。</p> 
<p>Owen在大厂工作过，后来离职做独立开发，尝试过很多不同的项目，机缘巧合“沉浸式翻译”发布后跑通PMF，于是全力投入。随着项目发展，功能也日益强大了起来，广受用户好评，还获得过2024 Chrome Web Store年度最佳。后来沉浸式翻译也被一家与Owen三观相符的公司收购了，目前这个项目还在积极更新中。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2025/04/Podcast-Cover-v139-chrome.jpg" alt="" /></p> 
<p>我台两位主播也是沉浸式翻译的用户，插件非常好用，是效率好帮手。那么Owen除了做沉浸式翻译之外还做了什么呢？沉浸式翻译又是什么机缘开始开发的呢？让我们一起走进本期节目吧！</p> 
<h2>🎁本期抽奖</h2> 
<p>Owen给我们带来沉浸式翻译年费会员，欢迎大家在评论区留言参与抽奖🥳</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 嘉宾：Owen 方言打招呼</li> 
 <li>00:04:06 从“沉浸式翻译”说起</li> 
 <li>00:08:14 开发了新闻聚合工具 Buzzing.cc</li> 
 <li>00:11:16 灵感之初：遛狗时的看了个双语剧本</li> 
 <li>00:13:22 着迷 Deno 语言，从零开始重构</li> 
 <li>00:16:11 AI 辅助写代码</li> 
 <li>00:18:22 沉浸式翻译解决了用户的什么核心诉求？</li> 
 <li>00:21:41 Cursor 写代码时，单文件更省力？</li> 
 <li>00:25:10 搬去惠州，开始独立开发</li> 
 <li>00:27:00 其他尝试：开源项目 &amp; 文字版抖音</li> 
 <li>00:31:22 做产品的第一步：先写新闻稿</li> 
 <li>00:35:13 其他项目：买菜先比价 &amp; Track Awesome List</li> 
 <li>00:39:09 2024 年度最佳 Chrome 浏览器插件</li> 
 <li>00:41:22 为什么被收购而不是自己继续做？</li> 
 <li>00:44:00 创业团队的发展</li> 
 <li>00:45:03 新做了哪些有意思的新功能？</li> 
 <li>00:49:45 未来的计划</li> 
 <li>00:57:02 听友提问：最初是如何宣传和推广的？</li> 
 <li>00:59:43 听友提问：对产品的市场和营销有什么心得？</li> 
 <li>01:02:06 什么是“注意力自由”？</li> 
 <li>01:06:16 灵魂三问</li> 
 <li>01:16:33 🎁 嘉宾送互动福利</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://x.com/OwenYoungZh">Owen</a> | <a href="https://www.owenyoung.com/en/">Owen Young's Blog</a> | <a href="https://m.okjike.com/users/490B9CE1-4756-4230-A1C9-921CB3920D1B?ref=PROFILE_CARD&amp;utm_source=user_card">OwenYoung - 即刻</a></li> 
 <li><a href="https://immersivetranslate.com/zh-Hans/">沉浸式翻译 - 双语对照网页翻译插件 | PDF翻译 | 视频字幕翻译</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 138 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;34&#xFF1A;WWDC25&#x5728;&#x5373;&#xFF0C;&#x5409;&#x535C;&#x529B;&#x98CE;&#x5E2D;&#x5377;&#xFF0C;AI&#x534F;&#x8BAE;&#x52A0;&#x901F;</title>
        <link>https://justinyan.eth.limo/79EE53A0-641E-44FE-83AE-01FEA0FA6CF6/</link>
        <guid>https://justinyan.eth.limo/79EE53A0-641E-44FE-83AE-01FEA0FA6CF6/</guid>
        <pubDate>Mon, 14 Apr 2025 11:50:51 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/04/Podacst138_v3.png" alt="" /></p> 
<p>科技快乐星球🌎来啦</p> 
<p>近期Google，OpenAI频发大招，吉卜力风格图片生成火爆全球。Switch 2终于也官宣今年要正式发售，一切都在迎来美好的开局。</p> 
<p>不过才高兴没多久，4月初特朗普就开始搞事情，刚平静了一会的星球又被扰动了起来。未来会怎样没人可以预知，但日子总是要过，只能用Ray Dalio的quote自勉啦:</p> 
<blockquote> 
 <p>Embrace Reality and Deal with It</p> 
</blockquote> 
<p><em>P.S. 更正一处口误：《天气之子》是新海诚的作品，不是宫崎骏的。一时讲错，十分抱歉。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:42 特朗普搞事，苹果紧急空运iPhone</li> 
 <li>00:04:38 Apple Inteiegence支持中文</li> 
 <li>00:07:28 WWDC 25时间敲定，苹果可能会进行iOS和macOS重新设计</li> 
 <li>00:09:10 AirPods Max支持无损音频</li> 
 <li>00:11:58 AirPods和Apple Watch将支持摄像头</li> 
 <li>00:17:08 Oppo Find X8 Ultra发布，哈苏大底摄像头</li> 
 <li>00:22:42 OpenAI的吉卜力风格图像生成火爆全球</li> 
 <li>00:30:17 Google推出A2A协议</li> 
 <li>00:33:08 Gemini 2.5 Pro版本上线，号称最强写代码模型</li> 
 <li>00:42:48 英伟达下一代芯片Rubin即将登场</li> 
 <li>00:44:15 AI利用脑电波助力瘫痪患者发声</li> 
 <li>00:48:21 SpaceX将接回滞留空间站的两名宇航员</li> 
 <li>00:46:50 《黑镜》第七季回归</li> 
 <li>00:49:30 任天堂官宣Switch 2将于今年6月发售</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 137 Vincent: Bonjour! AI&#x65F6;&#x4EE3;&#xFF0C;Taste&#x975E;&#x5E38;&#x91CD;&#x8981;</title>
        <link>https://justinyan.eth.limo/7C26BD8D-D83C-4B8A-B855-5BA2ABC9F030/</link>
        <guid>https://justinyan.eth.limo/7C26BD8D-D83C-4B8A-B855-5BA2ABC9F030/</guid>
        <pubDate>Mon, 31 Mar 2025 14:41:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/03/c0449d2765e58bb395ffdd5c7ac542a1.jpg" alt="" /></p> 
<p>上期刚和启师傅聊完良渚，本期嘉宾又是一位良渚文化村村民，00后创业者: Vincent</p> 
<p>Vincent在大约7个月前发布了自己的新产品:</p> 
<ol> 
 <li>可感应的实体名片</li> 
 <li>可被海内外访问的 webpage</li> 
 <li>可被分享的小程序</li> 
</ol> 
<p>这三个合为一体同属一个产品，名为<a href="https://bonjour.bio/vincent">Bonjour!</a></p> 
<p>最早我们通过AdvantureX的活动知道Vincent，当天也是Bonjour!产品发布的第一天。最近去在上海的活动也见到的Vincent本人，是特别有活力有热情的年轻人。创业之路并不容易，就让我们跟随本期节目，听听看Vincent与Bonjour!的故事吧。</p> 
<h2>🎁本期抽奖</h2> 
<p>Vincent给我们带来Bonjour!的实体卡片，非常酷炫！值得拥有！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:24 本期嘉宾：@Vincent，方言打招呼</li> 
 <li>00:01:42 从 Bonjour 项目上线聊起</li> 
 <li>00:04:16 为什么会有 Bonjour？</li> 
 <li>00:06:02 相比 App 和 Web，为何主推小程序？</li> 
 <li>00:08:17 00后是去班味的，更想Share自己的全部</li> 
 <li>00:11:57 纯文本的自我介绍太正经了</li> 
 <li>00:13 21 Bonjour 的产品形态：人和人之间的链接</li> 
 <li>00:15:19 Vincent 认为好的工作方式是什么？</li> 
 <li>00:15:32 Bonjour 未来的计划和 AI 应用</li> 
 <li>00:19:46 “我们相信下一个时代是小团队和个体的时代”</li> 
 <li>00:22:23 创业前的经历 &amp; 创业的契机</li> 
 <li>00:29:11 好的产品真的是生长出来的，不是规划好的</li> 
 <li>00:32:54 搬去杭州良渚，开始“小别墅”车库创业</li> 
 <li>00:36:26 离用户非常近，遇到了非常重要的人</li> 
 <li>00:38:34 拿到投资和融资的故事</li> 
 <li>00:41:12 最难的时刻，每一天都在阴暗爬行</li> 
 <li>00:43:37 “年轻嘛，看看自己能跑到哪个地方”</li> 
 <li>00:47:47 在AI时代，审美非常重要，落地的能力很重要</li> 
 <li>00:54:55 灵魂三问</li> 
 <li>01:03:36 互动福利：嘉宾送实体礼物</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://bonjour.bio/vincent">Vincent</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 136 &#x542F;&#x5E08;&#x5085;: LEMO FM, &#x4E86;&#x7136;&#x6E05;&#x5355;&#x4E0E;&#x826F;&#x6E1A;&#x6751;&#x6C11;&#x751F;&#x6D3B;</title>
        <link>https://justinyan.eth.limo/35B1EADB-96B5-468F-B373-22AC871FCB34/</link>
        <guid>https://justinyan.eth.limo/35B1EADB-96B5-468F-B373-22AC871FCB34/</guid>
        <pubDate>Sun, 23 Mar 2025 16:00:07 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/03/Podcast136_v3.png" alt="" /></p> 
<p>久违的串台节目！本期我们邀请到《启师傅AI客厅》的主播启师傅Chris一起来唠嗑。</p> 
<p>启师傅离开互联网大厂之后也做过独立开发，LEMO FM凭借出色的设计与令人惊叹的细节，在短时间内受到大量用户的青睐，获得苹果App Store首页推荐，Newsroom推荐，也在Today at Apple做了分享，非常优秀。</p> 
<p>认识启师傅的时候他刚到杭州，现在已经是良渚文化村村民，野生良渚推广大使，还开发了一款新的App了然清单。</p> 
<p>和启师傅聊天十分愉快，废话不多说，我们直接进节目！</p> 
<h2>🎁本期抽奖</h2> 
<p>启师傅给我们带来LEMO FM和了然清单的App兑换码，欢迎各位小伙伴们在小宇宙评论区给我们留言讨论，参与抽奖。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:03 串台嘉宾：启师傅</li> 
 <li>00:01:28 “我是一个不会说方言的山东人”</li> 
 <li>00:04:17 从 LEMO FM 这款作品开始聊起</li> 
 <li>00:08:48 远程团队的经验和协作工具</li> 
 <li>00:11:03 转向独立开发</li> 
 <li>00:12:30 上班是一个需要高能量输出的事情</li> 
 <li>00:15:01 ADHD(注意缺陷多动障碍)</li> 
 <li>00:19:55 ADHD的两种观点：降临派和拯救派</li> 
 <li>00:22:54 了然清单最早就是解决个人的需求</li> 
 <li>00:25:58 AI 为内容匹配 Emoji 的方案</li> 
 <li>00:30:37 AI 创业者面临的困惑：如何避免项目被 AI 替代</li> 
 <li>00:34:06 搬到了杭州良渚，成为了良渚村民</li> 
 <li>00:37:21 良渚最打动你的点是什么？</li> 
 <li>00:38:32 “良渚是人居领域的 iPhone”</li> 
 <li>00:42:28 启师傅客厅分享会与良渚 Demo Day</li> 
 <li>00:45:53 线下活动影响最深刻的点</li> 
 <li>00:47:29 良渚生活中不太方便的点</li> 
 <li>00:49:50 特色指标：住所是否有客厅</li> 
 <li>00:51:50 线下活动是如何形成的？</li> 
 <li>00:54:11 开始做播客节目《启师傅AI客厅》</li> 
 <li>00:58:25 灵魂三问</li> 
 <li>01:03:06 互动抽奖，嘉宾送福利</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾启师傅: <a href="https://m.okjike.com/users/f305e5ee-961c-4eee-82ef-2340ee72aeea">即刻</a> | <a href="https://www.xiaohongshu.com/user/profile/5d8b3ada0000000001003f0e">小红书</a></li> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/66018db7875ad135bddd135a">🎙️播客《启师傅AI客厅》：AI时代的生活和创造指南</a></li> 
 <li><a href="https://apps.apple.com/cn/app/id6444756219">📻LEMO FM ：包豪斯风格的拟物白噪音播放器</a></li> 
 <li><a href="https://apps.apple.com/cn/app/id6474304009">📒了然清单：适合P人和ADHD的待办清单，无压力做计划</a></li> 
</ul> 
<p>《启师傅AI客厅》🐦良渚系列播客：</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/episode/6777897c1e823e72d3e80d6b">vol.02 为何数字游民都爱去良渚？对谈16年老村民沈老板</a></li> 
 <li><a href="https://www.xiaoyuzhoufm.com/episode/6789cf00c27f6ce7e6e9172f">vol.03 从996到慢生活，良渚是创意工作者的乌托邦吗？</a></li> 
 <li><a href="https://www.xiaoyuzhoufm.com/episode/679d0321247d51713c146394">vol.05 逃离北上广和大理，在良渚人生重开了吗?</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 135 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;33: &#x82F9;&#x679C;M3M4 &#x786C;&#x4EF6;&#xFF0C;AI &#x6CE2;&#x6F9C;&#x8D77;&#x4F0F;&#xFF0C;&#x8D85;&#x97F3;&#x901F;&#x548C;&#x98DE;&#x884C;&#x6C7D;&#x8F66;&#x5C3D;&#x663E;&#x8D5B;&#x535A;&#x670B;&#x514B;</title>
        <link>https://justinyan.eth.limo/32C44C4A-685C-4B4C-B88E-E381E59CD73E/</link>
        <guid>https://justinyan.eth.limo/32C44C4A-685C-4B4C-B88E-E381E59CD73E/</guid>
        <pubDate>Mon, 10 Mar 2025 22:40:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/03/Podcast135_v1.png" alt="" /></p> 
<p>新年归来，先送上一期科技快乐星球。过去几个月攒的新闻特别多，有些已经成了旧闻。</p> 
<p>就在节目录制前几天，苹果上线了 M3 系列iPad，Mac Studio和 M4 系列的MacBook Air，同时也推出了新的低价手机iPhone 16e。真是天降素材。</p> 
<p>AI 方面，国内的 DeepSeek 和 Manus 也掀起不小的波澜，Anthropic 也发布Sonnet 3.7，号称最前写代码助手，OpenAI 压力山大，$200 会员不够开销，也准备推出更高价套餐。</p> 
<p>其他科技新闻方面，Boom XB-1 超音速飞机带来高速旅行的想象，飞行汽车Alef更是把赛博朋克直接带到眼前。</p> 
<p>近期新闻有趣有料很多，我们直接走进科技快乐星球！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:48 苹果发布 iPhone 16e</li> 
 <li>00:09:23 苹果推出 Apple Invites</li> 
 <li>00:11:15 Apple 账户购买项目迁移功能</li> 
 <li>00:15:16 iPhone 首个色情应用通过第三方商店上线</li> 
 <li>00:15:57 苹果发布 M3 iPad，Mac Studio，M4 MacBook Air</li> 
 <li>00:20:36 iOS 18.4 Beta 带来 AI 功能和5G-A</li> 
 <li>00:24:44 OpenAI 新产品：AGI、Agents、成人模式</li> 
 <li>00:27:04 英伟达发布个人超级计算机</li> 
 <li>00:32:15 DeepSeek 相关新闻一大堆</li> 
 <li>00:41:26 OpenAI 应对挑战</li> 
 <li>00:49:06 GitHub Copilot</li> 
 <li>00:57:27 小米在 Github 发布 Home Assistant</li> 
 <li>01:01:20 DJI Flip 可折叠无人机</li> 
 <li>01:03:04 Boom XB-1 超音客机</li> 
 <li>01:06:37 飞行汽车 Alef 成功起飞：普通公路也能跑</li> 
 <li>01:09:21 微软将关停 Skype</li> 
 <li>01:11:28 YouTube 上线 Premium Lite 套餐</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 134 &#x6211;&#x4EEC;&#x56DE;&#x6765;&#x5566;&#xFF01;</title>
        <link>https://justinyan.eth.limo/54DB1F6A-933F-4D6F-B28A-9775909E590B/</link>
        <guid>https://justinyan.eth.limo/54DB1F6A-933F-4D6F-B28A-9775909E590B/</guid>
        <pubDate>Wed, 05 Mar 2025 21:37:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/03/v2.png" alt="" /></p> 
<p>各位听众朋友们，我们回来啦！可太久没见啦！</p> 
<p>过去两个月我们两位主播忙到天昏地暗，结果两眼一闭两眼一睁，卧槽居然两个月过去了😂🤦‍♂️敢情我们是穿越了是吧，离大谱</p> 
<p>大家在小宇宙，微信，还有线下等渠道的催更我们都收到啦，抱歉让大家久等，最近我们忙的事情算是告了一段落，接下来我们会努力恢复更新的💪</p> 
<p>今年我们的目标还是至少播出24期节目，而且今年我们会多多邀请嘉宾来上节目，从各行各业朋友们的视角了解这个世界，一定很有趣。</p> 
<p>同时今年社交活动也会变多起来，老朋友新朋友见面总是那么让人激动。过去虽然我们都很忙，但是结果都挺好的，2025年开了个好头，接下来肯定会越来越好。今天的节目我们来跟各位听友报个平安，接下来我们的更新会越来越勤的！</p> 
<p>祝所有听友们2025一帆风顺，蒸蒸日上，春风得意，好运连连！</p> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4EBA;&#x751F;&#x5145;&#x6EE1;&#x53EF;&#x80FD;&#x6027; - Justin&#x27;s 2024</title>
        <link>https://justinyan.eth.limo/069FE471-19AF-4CC9-8BF1-778B3955DA7F/</link>
        <guid>https://justinyan.eth.limo/069FE471-19AF-4CC9-8BF1-778B3955DA7F/</guid>
        <pubDate>Thu, 16 Jan 2025 15:17:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2025/01/justins_2024_v1.png" alt="Justin's 2024" /></p> 
<p>一眨眼又一年过去了。去年我的年终期望是: “<a href="https://justinyan.me/post/5896">创造我所热爱的生活</a>”，今年我的小孩出生了，给我们家带来很多欢乐。</p> 
<p>写字的时候是2024年12月，一到年底，各种互联网平台就喜欢推出各种各样的奖，公司组织也是。在<a href="https://justinyan.me/post/4824">枫影夜读 - Justin 的读书 2021</a>一文中我提到过丹尼尔·卡尼曼(Daniel Kahneman)的峰终定律(Peak-End Rule)。</p> 
<p>虽然事实上过去一年我们每天大部分时间是平和的，不会每时每刻都在起伏。但是今年体会到的顶峰和低谷体验，以及到了12月份越是临近当前时间点的体验，就越容易影响我们对过去一年的整体感受。</p> 
<p>感谢今年发生的各种事情，感谢我太太的付出，感谢我们小孩的到来，感谢收听我们播客的听友们，感谢推荐我们播客的平台，感谢给我们播客颁奖的主办方、评委，感谢我在职场的老板们和同事们，感谢正在阅读本文的你。</p> 
<p>感谢峰终定律，让我在12月底的今天觉得，今年过得还挺好。</p> 
<h2>1. 新家庭成员的诞生</h2> 
<img src="https://justinyan.me/wp-content/uploads/2025/01/justins_2024_01.jpg" class="photo-frame" /> 
<p>小孩的出生给我的时间分配带来很大变化，但是挺好的。当父母不容易这句话大家都知道，但其实这是一种体验，非亲身经历而不可知。婴儿跟成年人是截然不同的两个物种，每隔几个小时就要喂养或睡觉跟我们成年人的生活作息大相径庭。但是哺乳动物的基因里面刻入了对婴儿的天然喜爱与照护，所以实际体验是累但会忘记累。有觉得受不了的时候，也有因为小孩天真的举止而笑得合不拢嘴的时候。这些快乐的峰值体验要高于大部分平平无奇的照护时间，小孩子真可爱。</p> 
<p>在有自己的小孩之前我完全不擅长跟孩童相处，更遑论婴儿。但如今已习以为常，偶尔遇到邻居的小孩也能谈笑自如，感觉获得了一种新技能。</p> 
<p>今年我们带着小孩去了趟京都，中午想到，下午就买好机票收好行李，凌晨出发。这趟旅程超出预期，旅途中每天跟小孩相处的时间变多了，亲子间的联结是种奇妙的体验。不同于成年人之间的相识，也不同于跟父母兄弟姐妹之间的关系，总之难以形容，但很奇妙。</p> 
<p>抚养小孩是以数十年计的大任务，在这个过程中，父母可以跟小孩一起成长，我很期待。期待体验不同的人生旅程，但不需要期望小孩有什么成就。我们这代人从小就是在注视、比较和竞争中过来的，下一代终于可以不需要承受这些了，好好成长就够了。我对他的期望是:</p> 
<blockquote> 
 <p>健康自由成长，充分体验人生</p> 
</blockquote> 
<h2>2. 发布了7篇文章，共计16055个汉字</h2> 
<img src="https://justinyan.me/wp-content/uploads/2025/01/justins_2024_02.png" class="photo-frame" /> 
<p>今年没怎么写字，连读书时间也变得不太稳定。今年读过的三本五星好评的书是:</p> 
<ol> 
 <li><a href="https://book.douban.com/subject/37070351/">真需求</a> - 梁宁 ⭐️⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/5330333/">活出生命的意义</a> - 维克多·弗兰克 ⭐️⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/26413154/">李光耀观天下</a> - 李光耀 ⭐️⭐️⭐️⭐️⭐️</li> 
</ol> 
<p>四颗星的书是:</p> 
<ol> 
 <li><a href="https://book.douban.com/subject/30304615/">國境之南．太陽之西</a> - 村上春树 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/34942789/">回归故里</a> - 迪迪埃·埃里蓬 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/36314870/">厌女</a> - 上野千鹤子 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/1466764/">我们</a> - 叶夫根尼·扎米亚京 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/25858882/">天生敏感</a> - 伊莱恩· 阿伦 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/30389924/">爱欲之死</a> - 韩炳哲 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/35576148/">共情的边界 : 高敏感的你，如何活得更自在</a> - 克里斯蒂娜·罗丝·埃勒 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/30337311/">多向思考者 : 高敏感人群的内心世界</a> - 克莉司德·布提可南 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/36110264/">细腻的人：高敏感人群如何摆脱精神内耗</a> - 武田友纪 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/35436705/">高敏感人士的幸福清单</a> - 武田友纪 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/36361935/">敏感与自我</a> - 斯文娅·弗拉斯珀勒 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/36577901/">负零</a> - 广濑正 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/26853726/">假面饭店</a> - 东野圭吾 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/36687146/">时间贫困 : 如何利用时间，决定了我们是谁</a> - 凯茜·霍姆斯 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/36696538/">超越百岁 : 长寿的科学与艺术</a> - 彼得 · 阿提亚 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/36707112/">控糖革命</a> - 杰西·安佐斯佩 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/35092383/">把自己作为方法 : 与项飙谈话</a> - 项飙、吴琦 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/36864733/">不谈恋爱的年轻人</a> - 牛窪惠 ⭐️⭐️⭐️⭐️</li> 
 <li><a href="https://book.douban.com/subject/36096300/">鱼不存在</a> - 露露·米勒 ⭐️⭐️⭐️⭐️</li> 
</ol> 
<h2>3. 播出28期节目，共计33小时44分27秒</h2> 
<img src="https://justinyan.me/wp-content/uploads/2025/01/justins_2024_03.png" class="photo-frame" /> 
<ul> 
 <li>11月底获得CPA中文播客文化奖科技数码类年度播客</li> 
 <li>9月底获得苹果Podcasts首页推荐</li> 
 <li>3月底获得苹果Podcasts首页Banner推荐</li> 
 <li>2月初被小宇宙首页推荐</li> 
 <li>2月初跟我仰慕已经的主播Steve录了<a href="https://fyfy.fm/episode/108">一期节目</a></li> 
 <li>1月初收到小宇宙送来的10000订阅奖牌</li> 
 <li>1月初获得苹果Podcasts“技术播客万花筒”推荐</li> 
</ul> 
<p>感谢收听我们播客的听友们，感谢推荐我们节目的平台方。播客是内容创作的一种形式，也是与嘉宾、听众建立连接的一种形式。做这些事情最令我开心的部分不是上面列出的Highlights，而是人与人之间的联结。去年我也说我们台的数据跟别的台相比差得很多，不过把这些认可罗列出来，也算是给支持我们节目的听友们的一种交代。</p> 
<p>前两天我甚至在想，最近录节目会不会变成了一种常规，不再想以前一样想着怎么找到有意思的东西，怎么连接到有意思的人。这也许跟我今年的时间分配又比较大的关系，短期内我不能很自由地飞行，也不能说录节目就录节目。小孩子的哭闹声总是会打乱我的节奏。</p> 
<p>但是回看这一年播出的节目，我觉得还是庆幸的。年初飞到上海跟Steve录的节目，不仅回应了我几年前一期节目里回答自力的提问：“只给你选一档节目，你想跟谁串台”。我当时提到的就是《Steve说》的Steve。去年刚见完Gamker的聂师傅，今年就见到Steve，我很开心。</p> 
<p>今年尝试制作的读书节目<a href="https://fyfy.fm/episode/106">Vol. 106 读书节目《金榜题名之后: 大学生出路分化之谜》</a><br /> 和<a href="https://fyfy.fm/episode/110">Vol. 110 读书节目: 《天生敏感》高敏感人群生存指南</a>也收获了不少好评，我很欣慰。我喜欢读书，这是我的一种娱乐方式。当然，今年我的个人时间分配受到了比较大的影响，读书的时间确实少了。某种程度上这也影响到我们节目，难以持续制作读书类节目。但我觉得这种情况随着小孩的慢慢长大会有所好转。希望明年我能制作更多的读书节目。</p> 
<img src="https://justinyan.me/wp-content/uploads/2025/01/justins_2024_07.png" class="photo-frame" /> 
<p>今年获得CPA中文播客文化奖挺开心的，感谢支持我们节目的提名人们。我也借这个机会，今年二度来到上海。我认为这是一座很舒服的城市，虽然我听不懂上海话，但干净的街道，随处可见的很chill的cafe，还有久经风霜但一直在进行“城市更新”的各种老建筑。即便经历过前几年的创伤，上海也依然是一座很有活力的城市。</p> 
<p>不过今年也因为各种原因没能参加一些活动。一部分是条件不允许（走不开），也有一部分是心态没能更开放。虽然我以为比起去年，老了一岁心态是更开放了一点，但还是不够。之前我说要学会感恩，感恩这个感恩那个。我的正念导师说你感恩的这些其实都是对你有好处的，真正的感恩，是连对你造成伤害的也要感恩。</p> 
<p>《圣经》里面说: "有人打你的右脸，连左脸也转过来由他打。"</p> 
<p>黑塞的《悉达多》里面主角说: "I can think, I can wait, I can fast."</p> 
<p>当时我不理解，现在我有一点点理解了。</p> 
<h2>4. 今年的旅途</h2> 
<img src="https://justinyan.me/wp-content/uploads/2025/01/justins_2024_04.png" class="photo-frame" /> 
<p>今年飞得少，去了两次上海，一次日本还有三次香港。</p> 
<p>在上海见Steve是为了录<a href="https://justinyan.me/post/5931">这期播客</a>，正好Steve在筹备线下活动工作室，于是一并参加了第一场线下活动。这也是一场说走就走的录制。</p> 
<p>巧的是在出发前偶遇<a href="https://www.wutopialab.com/">上海Wutopia Lab建筑事务所</a>的俞挺老师，听说我过两天要飞上海，就十分热情的邀请我去看看他们的实验空间: Wuto Space。这也是一次非常有趣的体验，很感激。</p> 
<img src="https://justinyan.me/wp-content/uploads/2025/01/justins_2024_06.png" class="photo-frame" /> 
<p>几次去香港都是有事情在身，留给游玩的时间不多。记得我十多年前第一次去香港，当时还能回味老电影的拍摄地，能感受两地的差异与不同。今夕再看，只觉十分萧条。香港仍然是一个非常特别的地方，只是时代变了。</p> 
<p>因为小孩的关系，今年的社交活动锐减，在京都旅行时<a href="https://x.com/DTD_STUDIOS">Ace</a>正好也在，但我们都带小孩，行程完美错过，只能下次再遇啦。几次出行的行程都比较赶，遇不上的朋友们，明年再补回来吧。</p> 
<h2>5. 打工人的一年</h2> 
<img src="https://justinyan.me/wp-content/uploads/2025/01/justins_2024_05.png" class="photo-frame" /> 
<p>今年本打工人继续迎接挑战，工作内容也从单纯技术方向延展到其他方面，感觉还是挺有趣的，每天都能学到新东西。做一个DAU几千几万的产品跟做一个DAU几亿的产品，行事方式迥然。同事们又非常聪明，在各自的领域中都做得很优秀，能跟这样的人学习很开心。</p> 
<p>年底视频号团队也收获了腾讯名品堂，这是腾讯极具份量的一个奖，而且我意外地获得上台领奖的殊荣。这要感谢我的所有老板们，比我有资格上台的人很多，愿意给我这个机会我十分感激。</p> 
<p>这让我回想起十多年前刚开始工作的时候。作为一个小屁孩，第一次坐在台下看别人领奖，当时内心有种幼稚的🍋: “切，这有啥”。一晃十多年过去了，没想到这次我跟着大佬们站在台上领这个奖。能有这个机会要感谢很多人，感谢很多老板，感谢很多同事，以及很忙的日子里愿意包容我的太太，这次领奖真是个非常难得的体验。</p> 
<p>不管怎么说，感觉我的职业生涯目前为止还算幸运的。前几天和<a href="https://www.xiaoyuzhoufm.com/podcast/5e280fab418a84a0461faa3c">《三五环》</a>的刘飞聊天，他问我有没有考虑过直接出来单干。我想到我的好几位主播/Up主/公众号博主/独立开发者朋友，在做创业之前都在大厂上过班。不过我的这几位朋友都有个共性，即本职工作体验并不十分愉快。这不意味着他们在原先的公司里职位不高或表现不佳，相反，这些聪明的人都做得非常好。可能越是优秀的人越想追求自己想要的东西，这些东西与当前的工作产生冲突时，不得不做出选择。我觉得我跟大家不同的一点是，现阶段我的工作体验没有那么糟糕，从旁观者角度来看甚至做得还挺好的，并且我可以在本职工作之外继续瞎折腾。这需要感谢我的老板们，他们并没有反对我做播客和瞎折腾，这也是我非常幸运的一点，能在职场遇到这样的老板们不容易，这份感恩发自内心。</p> 
<h2>6. 独立开发者的一年</h2> 
<img src="https://cdn.justinbot.com/wp-content/uploads/2024/07/just-toolbox-blog.png" class="photo-frame" /> 
<p>今年7月我发布了一个使用SwiftUI开发的<a href="https://justinyan.me/post/6018">跨苹果平台的App: Just Toolbox</a>。这并不是一个捕捉到需求之后开发的产品，更像是把技术尝试转化为对外发布的东西的产物。作为一个产品来说，需求考虑还不够深刻，细节没有打磨到位，相比同类产品也没有关键优势。所以它更像是一个练手习作。但对我来说，这个产品依然有一个好的地方: 至少它发布了。</p> 
<p>在正式发布Just Toolbox之前，我其实有好多想法在脑子里面，也在尝试各种方式提升我的独立开发效率，包括AI辅助写代码。毕竟平时要全职工作，业余时间还有播客，我没有那么多时间投入独立开发项目，如果效率不够高，项目拖太久就会死掉。同期我想尝试的ideas有大约4个，最终只有Just Toolbox上架了，显然是哪里出了问题。</p> 
<p>尽管各项数据不佳，但是今年依然从这些项目中学到不少。期待下明年能发布些什么。</p> 
<h2>7. 其他</h2> 
<p><strong>健康分类</strong>虽然写在这里，但每周一三五的训练是我雷打不动的健身计划。大部分人在身体状况尚可的时候不太会在意健康管理——尽管大部分人都处于亚健康状态，我也一样——只有生病了才知道健康的重要。在我的个人OKR排序中，这几年健康一项一直排在第一位，先有健康的身体，才有其他的可能性。令人欣慰的是，今年在健身房也看到过去不怎么运动的同事开始上课健身，说明越来越多人重视健康这项基础了。</p> 
<p>今年有个流行词叫“松弛”。在习惯了高压力，快节奏的社会里，这个词显得那么清新脱俗，那么令人向往。我觉得跟这些年尤其新冠期间大流行的“正念”一同反映了当代人的精神追求。在满足基础需求以后，更往上的豪车豪宅大家碰不到，中间这一段又不太费力，人们往往会开始感到迷茫。即便是富有如硅谷的大佬们，也感到了同样的困惑，于是从自身“寻找意义”就成为新的趋势。</p> 
<p>去年<a href="https://justinyan.me/post/5790">我的一些思考</a>大抵也是这种趋势的片段。我觉得今年过得比之前更加“松弛”了。这倒不一定是因为老了，因为活得久了只是代表经历各种事情的概率增大了，不代表一定能接触到这些风雨波涛，还得看这个年纪大的人，具体是做了什么，思考了什么。</p> 
<p>昨天看到孟岩的《有知有行》<a href="https://mp.weixin.qq.com/s/aInYkdOSQutpN5sLaqVnkQ">终于获得了基金销售资质</a>，不容易。朋友的迈理咖啡在经历一系列事情后涅槃重生，不容易。去年Gamker在失去投资人之后也遭遇了一些低谷，现在开了万物破元博物馆，生机勃勃。Steve的播客在被下架之后以《史蒂夫说》重新开启，今年线下活动办得风生水起。人是有韧性的。</p> 
<p>不同的人，韧性有强弱。遭遇的事件超过自己可接受的限度就会崩塌，但如果扛下来了，反弹之后，人会变强。就像增肌训练的原理: 承受大重量，超量恢复。经历这些低谷十分不容易，但是如果经历多了，面对下一次挑战就会更有准备。这样看来，鸟山明对战斗民族赛亚人的设定真是妙极: <strong>赛亚人在濒死边缘复原后，战斗力会有爆发性的增长</strong>(且为了堵住Bug，如果是自残复原将没有效果，现在想来也十分合理)。</p> 
<p>今年发生的一系列变化也让我的<strong>思维有了更多的打开</strong>，愿意接纳过去站在我的对立面的东西，今年我在很多时刻脑子里会想起 <a href="https://justinyan.me/post/4911">Kevin Kelly 的话</a>:</p> 
<blockquote> 
 <p>所有东西的90%都是垃圾。如果你觉得自己不喜欢歌剧，浪漫小说，抖音，乡村音乐，素食，NFTs，那你可以试试看自己能否找出不是垃圾的10%。<br /> 90%of everything is crap. If you think you don’t like opera, romance novels, TikTok, country music, vegan food, NFTs, keep trying to see if you can find the 10% that is not crap.</p> 
</blockquote> 
<p>思维转变意味着灵活性的提升。我们现在生存的环境是如此多变，以至于灵活性是如此重要。前阵子跟我太太讨论起一件事情，她说"诶你以前好像不会这样想"，我当时还思考了1秒钟，嗯，确实比以前灵活多了。</p> 
<p>关于财务，我的个人理财思路以前有<a href="https://justinyan.me/post/5594">提到</a>过。总得来说我有稳定的收入，投资策略不需要追求爆发性地高增长，只要保持一直在市场里，走指数路线，按资产大类分配，看长期，剩下的交给时间。熊市固然难熬，但至少股债配置总有在赚钱的资产，牛市虽然不像其他人一样动辄几倍增长，但至少我不用被波动牵着走。我的精力和兴趣本就不在这里，能睡得着就行。今年美股A股都有不错的行情，大部分个人投资者应该都不会像去年那样惨淡。</p> 
<p>人生充满可能性。和做产品是类似的，一个产品或一个功能在上线以前，开发者并没有十足的把握知道用户会如何反映。只有真正做好了去试了，才知道结果。这种结果的不确定性，就是各种可能性存在的空间。</p> 
<p>人生可比做产品刺激得多。以前有朋友跟我吐槽说，哎年纪大了如何如何，自己所处的行业已经奄奄一息了如何如何。我只能说，人生充满可能性，不过，这些可能性只对勇于尝试的人开放。</p> 
<p><em>创建于: 2024/12/25</em><br /> <em>发表于: 2025/01/16</em></p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 133 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;32: &#x82F9;&#x679C;&#x5E74;&#x5EA6;&#x5956;&#xFF0C;&#x8C37;&#x6B4C;&#x91CF;&#x5B50;&#x82AF;&#x7247;&#xFF0C;&#x82F1;&#x4F1F;&#x8FBE;&#x88AB;&#x8C03;&#x67E5;&#x7B49;</title>
        <link>https://justinyan.eth.limo/E9DF672B-7F13-4535-ACEA-E324F373419E/</link>
        <guid>https://justinyan.eth.limo/E9DF672B-7F13-4535-ACEA-E324F373419E/</guid>
        <pubDate>Wed, 01 Jan 2025 21:30:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/12/Podcast-Cover-v133-v1.png" alt="" /></p> 
<p>上一期OpenAI话题之后，我们继续还没聊完的新闻。</p> 
<p>苹果准备开发LLM版本的Siri，这消息还是挺振奋人心同时又在情理之中的。毕竟这边在国内曾经说要跟百度合作，最近又跟腾讯、字节接洽了。</p> 
<p>谷歌的Willow量子计算机芯片突破也是近期一大事件，意味着量子计算机领域又往前迈了一步，期待未来民用的可能，但估计需时较长了。</p> 
<p>还有TGA 2024，结果公布之后得罪了在座的所有人。不仅任天堂在下面坐了半天一个奖没捞着还看了《幻兽帕鲁》预告片，《黑神话: 悟空》也是没拿到年度大奖，最后颁给了小机器人：索尼的《宇宙机器人》。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:32 苹果 Shazam 识别歌曲超过千亿次</li> 
 <li>00:05:31 苹果正开发更智能的Siri，代号LLM Siri</li> 
 <li>00:09:02 App Store Awards 2024</li> 
 <li>00:10:45 苹果为中国iPhone用户适配百度AI模型时遇到困难</li> 
 <li>00:11:56 SetApp 2024年度开发者报告：仅3%开发者在适配Vision Pro</li> 
 <li>00:13:27 谷歌推出量子计算机芯片Willow，破解30年中大难题</li> 
 <li>00:14:42 英伟达被中国监管部门立案调查，市值一夜跌去近千亿美元</li> 
 <li>00:16:52 Firefox 浏览器新特性：升级侧边栏和垂直标签</li> 
 <li>00:21:20 Arc 浏览器的开发商计划推出新产品 Dia</li> 
 <li>00:25:09 DJI 发布 Mic Mini 迷你无线麦克风</li> 
 <li>00:28:37 小米发布YU7：给特斯拉上上强度</li> 
 <li>00:30:19 小马智行美股敲钟</li> 
 <li>00:31:05 哔哩哔哩 2024 年度弹幕 — “接”</li> 
 <li>00:32:25 WordPress 大战暂告段落，WP Engine 胜诉</li> 
 <li>00:37:14 Indie Friday 独立开发者黑五活动</li> 
 <li>00:38:53 Google Play 2024 年度榜单</li> 
 <li>00:39:21 Intel CEO Pat Gelsinger 出局</li> 
 <li>00:41:51 两名宇航员仍滞留太空，波音“星际客机”空舱返航</li> 
 <li>00:44:36 一己之力打破“男女对立”，“麦学”的含金量还在上升</li> 
 <li>00:47:21 TGA 2024 得罪所有人，《黑神话：悟空》获得动作奖，年度大奖颁给了《宇宙机器人》</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 132 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;31: 7/12 Days of OpenAI</title>
        <link>https://justinyan.eth.limo/4A76F334-8BE7-4A9A-9A7E-FEBBEFFA9F4C/</link>
        <guid>https://justinyan.eth.limo/4A76F334-8BE7-4A9A-9A7E-FEBBEFFA9F4C/</guid>
        <pubDate>Thu, 19 Dec 2024 14:15:30 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/12/Podcast-Cover-v132_v1.png" alt="" /></p> 
<p>最近OpenAI号称连开12天直播发布会，我们录音的时候刚开到第7天，之前的期货Sora和视频聊天功能来了，同时ChatGPT也支持了Projects等实用功能，非常不错。</p> 
<p>不过相比于他营销的声势来说，感觉还是差点意思，希望在圣诞节之前OpenAI能真的来个王炸吧。</p> 
<p>200刀月付价格也是直接把当前AI服务都价格提到了一个新的高度，在我们上一期节目的评论区听友 @paperradio 也是提前“预言”了涨价版服务都到来😂（我们两位主播只能直呼用不起用不起</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:29 OpenAI连开12场直播</li> 
 <li>00:03:29 Day 1 完整版o1，月付200美刀</li> 
 <li>00:09:04 Day 2 强化微调 Reinforcement Fine-Tuning 可用于罕见遗传病研究</li> 
 <li>00:16:33 Day 3 正式推出文生视频服务 Sora.com</li> 
 <li>00:19:14 Day 4 发布Canvas功能</li> 
 <li>00:25:21 Day 5 ChatGPT with Apple Intelligence</li> 
 <li>00:38:45 Day 6 ChatGPT的语音模式可以“视频聊天”了</li> 
 <li>00:58:37 Day 7 ChatGPT支持Projects项目管理功能</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 131 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;30: &#x82F9;&#x679C;&#xFF0C;AI&#xFF0C;&#x592A;&#x7A7A;&#x65C5;&#x884C;</title>
        <link>https://justinyan.eth.limo/E23DCACF-1913-431F-B2E5-73BD805FB0C2/</link>
        <guid>https://justinyan.eth.limo/E23DCACF-1913-431F-B2E5-73BD805FB0C2/</guid>
        <pubDate>Thu, 21 Nov 2024 23:11:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/11/Podcast-Cover-v131.png" alt="" /></p> 
<p>快乐星球来啦，本期节目除了苹果M4新机到手以外，AI也有新进的发展。节目刚录完甚至又有Cursor新竞品Windsurf发布，又是一个好用的魔改VSCode的AI写代码工具，非常好用。后续我们有机会再来详细评测下。</p> 
<p>继贝索斯的Blue Origin和马斯克的SpaceX推出载人太空旅行计划之后，国内的深蓝航天也宣布了太空旅行计划，预计2027年发射。未来大家的朋友圈摄影大赛顶流里除了卷欧洲旅行又多了一个可选的赛道，就是票价有点小贵。</p> 
<p>再贵估计也没有谷歌被俄罗斯罚的远超自身市值的罚款贵。</p> 
<p>anyways，就让我们一起走进本期的科技快乐星球吧！</p> 
<h2>时间轴</h2> 
<p>00:00:00 开头<br /> 00:02:15 苹果将首次进军智能家居网络摄像头市场<br /> 00:04:16 关于智能家居数据隐私的问题<br /> 00:09:19 Thunderbolt 5 数据线支持 120Gb/s<br /> 00:13:09 雷厉5会带来大的体验提升吗？<br /> 00:16:49 iOS 18.1增加防盗新措施，4天未用重启将进入BFU<br /> 00:18:16 苹果 M4 Pro 芯片提升显著<br /> 00:24:56 苹果收购 Pixelmator，欲拓展创意工具版图<br /> 00:27:48 AI 发展的两个方向：Copilot 和 Agent<br /> 00:33:36 使用 Claude AI 可视化产品 Idea 的体验<br /> 00:43:29 英国消费者权益组织向 Apple 提起反垄断诉讼<br /> 00:47:15 OpenAI 在 ChatGPT 中新增了搜索功能<br /> 00:56:19 国内首张太空旅行船票今晚发售：150万元/张<br /> 00:58:54 比特币持续上行，盘中突破 90000 美元<br /> 01:01:28 甲壳虫乐队AI修复新曲获2项格莱美提名<br /> 01:05:31 任天堂音乐正式发布<br /> 01:06:34 Altman 花了3个亿证明"国家发钱"没有用<br /> 01:13:01 谷歌已被俄罗斯罚款巨额 35 位数<br /> 01:14:28 YouTube “用相机拍摄”标签以表明真实性<br /> 01:18:56 Kindle 十七年，终于迈入彩色时代<br /> 01:22:24 结尾</p> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 130 &#x82F9;&#x679C;&#x53D1;&#x5E03; M4 Mac &#x7CFB;&#x5217;&#x4EA7;&#x54C1;</title>
        <link>https://justinyan.eth.limo/6E4C9AB1-93CE-46A9-90CA-F98A73180734/</link>
        <guid>https://justinyan.eth.limo/6E4C9AB1-93CE-46A9-90CA-F98A73180734/</guid>
        <pubDate>Sun, 03 Nov 2024 14:16:56 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/11/Podcast-Cover-v129.png" alt="" /></p> 
<p>苹果最近悄咪咪发布了一系列新款硬件，尤其重要的是配备了M4系列芯片的Mac产品，包括七彩iMac，时隔多年终于更换成更小体积模具的Mac Mini，还有搭配满血M4的MacBook Pro，可以说硬件堆满，任君选购。</p> 
<p>所以这波更新的Mac产品里，你会买什么呢？</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:19 此前发布的新款 iPad mini</li> 
 <li>00:07:45 新款七彩 M4 iMac</li> 
 <li>00:19:25 尺寸更小的 Mac Mini</li> 
 <li>00:28:01 选配 Mac Mini 万兆网口</li> 
 <li>00:35:10 新款 M4 MacBook Pro</li> 
 <li>00:45:25 Apple Intelligence 各版本考虑</li> 
 <li>00:50:12 关于本台实体周边：冰箱贴</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 129 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;29: &#x82F9;&#x679C;&#x65B0;&#x54C1;&#xFF0C;&#x9A6C;&#x4E00;&#x9F99;&#x7B77;&#x5B50;&#x5939;&#x706B;&#x7BAD;&#xFF0C;Robotaxi&#x7B49;</title>
        <link>https://justinyan.eth.limo/0D31560B-6BC5-4395-85D3-45AA6CCBBB42/</link>
        <guid>https://justinyan.eth.limo/0D31560B-6BC5-4395-85D3-45AA6CCBBB42/</guid>
        <pubDate>Sun, 20 Oct 2024 23:49:04 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/10/Podcast-Cover-v129.png" alt="" /></p> 
<p>各位小伙伴们好呀，又是一期科技快乐星球。本期节目苹果和马一龙新闻很多，不仅有Rumors传言苹果很快要发布新的Mac，而且马一龙左手在SpaceX筷子夹火箭，右手又在Tesla发布机器人出租车Robotaxi，真是热闹非凡。</p> 
<p>与此同时，本期节目我们还收到了RTE的邀请，友情推荐一下: 由声网和RTE 开发者社区联合主办的RTE2024 第十届实时互联网大会将在北京·悠唐皇冠假日酒店正式开启！</p> 
<p>时间是2024年10月25日到26日，感兴趣的小伙伴可以点枫言枫语链接: <a href="https://www.bagevent.com/event/sales/c4iittncyjcup21kr3b5kbrq38dgd6pw">https://www.bagevent.com/event/sales/c4iittncyjcup21kr3b5kbrq38dgd6pw</a>，或者扫码获取<strong>限免门票</strong>哦。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/10/rte2024-fyfy.jpg" alt="" /></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场</li> 
 <li>00:23 RTE2024实时互联网大会即将在北京举办</li> 
 <li>03:12 iPhone 16 销量不佳</li> 
 <li>07:25 苹果计划取消按年发布产品的计划</li> 
 <li>10:58 Rumors称苹果计划近期发布 Mac Mini</li> 
 <li>14:04 Rumors称苹果将发布新版 16寸 MacBook</li> 
 <li>17:16 苹果谷歌深陷欧盟官司</li> 
 <li>21:48 苹果官方视频教你清洗 AirPods</li> 
 <li>24:14 美联航将接入 StarLink 提供免费 Wi-Fi</li> 
 <li>28:27 特斯拉发布机器人出租车 Robotaxis</li> 
 <li>32:08 SpaceX 成功回收星舰助推器</li> 
 <li>33:30 美团上线了自研地图服务</li> 
 <li>35:19 任天堂发布体感闹钟 Alarmo 卖断货</li> 
 <li>37:41 Telegram 推出短信验证码平台，取代传统短信</li> 
 <li>39:37 字节豆包发布AI智能耳机 Ola Friend</li> 
 <li>43:17 字节豆包发布AI视频，快手可灵启动导演共创计划</li> 
 <li>51:35 亚马逊AWS计划投资在英国建立数据中心</li> 
 <li>52:50 iFixit: iPhone 16是迄今为止最容易修的iPhone</li> 
 <li>53:48 libcimbar: 使用二维码传输文件的开源项目</li> 
 <li>58:04 OpenAI发布学院计划提供API配额和技术指导</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 128 Steven: &#x91CD;&#x5EA6;&#x7528;&#x6237;&#x5982;&#x4F55;&#x4F7F;&#x7528;Vision Pro&#xFF1F;</title>
        <link>https://justinyan.eth.limo/21DD6BA0-1121-426B-8734-CA9774D4F423/</link>
        <guid>https://justinyan.eth.limo/21DD6BA0-1121-426B-8734-CA9774D4F423/</guid>
        <pubDate>Sun, 22 Sep 2024 21:52:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/09/Podcast-Cover-v128-v1.png" alt="" /></p> 
<p>说好的Vision Pro重度用户体验节目来啦，本期嘉宾是文创品牌YouthWill的创始人<a href="https://www.xiaohongshu.com/user/profile/56bca75782ec3951fe19b93b">袁晨皓Steven</a>。Steven是Vision Pro的重度用户，每天使用时间有5到6小时，非常夸张。</p> 
<p>那么Steven平时是怎么使用Vision Pro的呢？除了苹果官方宣传的无边画布“生产力”之外，在实际工作中它能解决哪些问题，又有哪些问题它还需要下一代更新解决呢？</p> 
<p>让我们跟着Steven，从工作，影音，游戏等多个角度，讨论重度使用Vision Pro都有哪些好与哪些不足。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 本期嘉宾：一位 Vision Pro 重度用户</li> 
 <li>00:00:58 YouthWill 创始人：袁晨皓Steven</li> 
 <li>00:05:33 🎁嘉宾送福利</li> 
 <li>00:05:51 戴着 Vision Pro 录播客</li> 
 <li>00:08:54 Vision Pro 入手方式</li> 
 <li>00:13:09 提升佩戴体验的外挂：大耳朵头戴</li> 
 <li>00:18:41 拔线显示器，强制使用 Vision Pro</li> 
 <li>00:24:32 在Vision Pro里能使用iPhone 镜像吗？</li> 
 <li>00:25:02 Vision Pro 使用定位</li> 
 <li>00:32:00 每天使用多久 Vision Pro？</li> 
 <li>00:33:48 Vision Pro 使用不便之处？</li> 
 <li>00:38:58 Vision Pro 的娱乐体验</li> 
 <li>00:39:35 近视眼与不近视的使用差异</li> 
 <li>00:45:26 那些好用的 Vision Pro App</li> 
 <li>00:50:42 在 Vision Pro 播放高清视频</li> 
 <li>00:53:18 长时间使用 Vision Pro 致郁？</li> 
 <li>00:55:40 Vision Pro 的游戏体验</li> 
 <li>01:04:41 Vision Pro 外放听歌？</li> 
 <li>01:11:47 若 Vision Pro 出新版大家会再买吗？</li> 
 <li>01:16:04 对 Vision Pro 最满意的一点是什么？</li> 
 <li>01:19:05 最不满意的一点是什么？</li> 
 <li>01:28:56 参与互动抽奖</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>本期嘉宾: <a href="https://www.xiaohongshu.com/user/profile/56bca75782ec3951fe19b93b">袁晨皓Steven</a> | <a href="https://weibo.com/u/1878421882">微博</a></li> 
 <li>YouthWill文创品牌: <a href="https://www.xiaohongshu.com/user/profile/5ebb8f970000000001003df2">YouthWill : 以书写为起点，探索无限的热爱。</a> | <a href="https://shop262910760.taobao.com/">淘宝店</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 127 &#x82F9;&#x679C;2024&#x79CB;&#x5B63;&#x53D1;&#x5E03;&#x4F1A;: iPhone 16&#x6765;&#x5566;&#xFF01;</title>
        <link>https://justinyan.eth.limo/3D5EC641-B688-4E86-AC34-EDC3A4A67236/</link>
        <guid>https://justinyan.eth.limo/3D5EC641-B688-4E86-AC34-EDC3A4A67236/</guid>
        <pubDate>Wed, 11 Sep 2024 22:58:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/09/Podcast-Cover-v127_v2.png" alt="" /></p> 
<p>北京时间2024年9月10日凌晨1点，苹果秋季发布会如期发布iPhone 16机型，顺带还发布了Apple Watch S10, 带来更大的表面，Ultra系列多了新的颜色。AirPods 4居然也升级了，并且AirPods Max也更新了颜色，这水果越来越诺基亚了，不过当年诺基亚好歹还换个壳，大水果真就只是换个颜色啊。</p> 
<p>今年的iPhone 16发布褒贬不一，除了常规的硬件升级就只有一个新增的Camera Control按钮。但CPU强依然是真的强，苹果的钛合金抛光和上色工艺也是日臻成熟。不知道听众小伙伴们会不会买单今年的新iPhone呢？</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:01:39 发布会开场</li> 
 <li>00:03:33 Apple Watch S10</li> 
 <li>00:14:28 Apple Watch Ultra 2</li> 
 <li>00:16:58 AirPods 全系列升级</li> 
 <li>00:27:29 iPhone 16 为 AI 而生</li> 
 <li>00:31:14 新交互：相机控制</li> 
 <li>00:38:03 苹果的 AI 布局</li> 
 <li>00:52:16 购机方案分析</li> 
 <li>01:02:57 期待苹果未来的创新</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 126 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;28</title>
        <link>https://justinyan.eth.limo/E8CFCD1D-0D87-4B6C-A98F-669862C15053/</link>
        <guid>https://justinyan.eth.limo/E8CFCD1D-0D87-4B6C-A98F-669862C15053/</guid>
        <pubDate>Fri, 06 Sep 2024 13:06:04 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/09/Podcast126_v1.png" alt="" /></p> 
<p>又到了《科技快乐星球》的欢乐时光～本期我们从近来大热的《黑神话悟空》开始聊起，大家都通关了吗？</p> 
<p>欧盟和美国科技公司的纠结还在持续，App Store发布App要求开发者提供Trader信息，无论是否在欧盟交易。近来Apple Intelligence在欧洲也不允许使用，接下来iPhone 16发布时恐怕部分功能欧洲又要被排除在外。关于新iPhone发布会，请期待我们到时候发布的节目。</p> 
<p>Wordware近来成为Product Hunt的明星项目，它是一个AI Agent平台，上面开发出的一个用于吐槽Twitter账号的Agent在社交网络上形成病毒营销，很有意思。</p> 
<p>AI硬件方面，接下来肯定是未来的一个方向。但是目前的硬件技术还不足以支撑指环类型的超小型可穿戴硬件的用户体验，所以Humane AI Pin的退出也是可预期的。希望接下来硬件的发展能让这种小型设备也有发挥的地方吧。</p> 
<p>好的那么废话不多说，直接进入本期科技快乐星球。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:17 《黑神话：悟空》</li> 
 <li>00:05:06 iPhone 16 &amp; Apple Intelligence</li> 
 <li>00:10:28 Podcast 上限网页版</li> 
 <li>00:11:46 苹果要求 Patreon 内购抽成 30%</li> 
 <li>00:14:44 苹果和 Google 达成合作相册互转</li> 
 <li>00:16:14 桌面 Siri 机器人 &amp; 戒指</li> 
 <li>00:22:12 关于苹果折叠屏手机</li> 
 <li>00:27:46 脑机意念操控 Vision Pro</li> 
 <li>00:31:02 Wordware 病毒营销屠榜 Product Hunt</li> 
 <li>00:38:54 快手 Keling AI 推出订阅计划</li> 
 <li>00:42:37 可穿戴 AI 设备 Notepin &amp; 智能眼镜架</li> 
 <li>00:47:42 联想 Deepfake 检测器遏制 AI 诈骗</li> 
 <li>00:51:11 Cursor 写代码的体验</li> 
 <li>00:52:47 Telegram 创始人在巴黎被捕</li> 
 <li>00:33:00 SearchGPT 和 DALL-E 3 免费</li> 
 <li>00:55:41 亚马逊上线了仅退款功能</li> 
 <li>00:44:00 脑机接口与 Apple Vision Pro</li> 
 <li>00:49:20 探讨苹果相册应用的新交互设计</li> 
 <li>01:00:26 近期影视 &amp; 黑神话悟空的难度</li> 
 <li>01:04:51 苹果 iPhone 16 发布会预告</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 125 AI&#x7EC8;&#x4E8E;&#x80FD;&#x5E2E;&#x6211;&#x4EEC;&#x5199;&#x4EE3;&#x7801;&#x4E86;&#x5417;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/89060E6D-39CE-4743-B601-0253BC74A502/</link>
        <guid>https://justinyan.eth.limo/89060E6D-39CE-4743-B601-0253BC74A502/</guid>
        <pubDate>Mon, 26 Aug 2024 00:09:55 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/08/Podcast125_v1.jpg" alt="" /></p> 
<p>4202年啦，AI终于能帮我们写代码了吗？</p> 
<p>Github copilot都出来好些年了，从当初的惊艳到现在觉得不过如此，AI写代码是无望了吗？</p> 
<p>最近的明星助手Claude 3.5 Sonnet在程序员圈里可谓声名大噪，那么实际使用中Claude到底有多能打呢？另一个明星AI ChatGPT又如何呢？</p> 
<p>如果能用了，哪些场景可用哪些场景不可用呢？什么时候该用什么时候不该用呢？</p> 
<p>Justin最近用Claude写了不少代码，我们就一起来聊聊看实际的体验吧！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 AI 写代码上手体验</li> 
 <li>00:04:51 Claude 3.5 像是个理科生</li> 
 <li>00:08:26 写的代码令人震惊</li> 
 <li>00:13:21 用自然语言编程</li> 
 <li>00:15:51 AI 编程适合什么样的人</li> 
 <li>00:18:42 AI 写代码的优缺点</li> 
 <li>00:24:41 和 GitHub Copilot 的区别</li> 
 <li>00:29:44 和 AI 沟通编程的方式</li> 
 <li>00:38:03 能否让多个AI协同和自驱</li> 
 <li>00:49:42 什么样的项目和场景适合用 AI 呢</li> 
 <li>00:52:48 非程序员如何利用 AI 编程能力</li> 
 <li>00:59:41 AI 对程序员的冲击和影响</li> 
 <li>01:03:18 Claude 3.5 使用成本</li> 
 <li>01:07:01 畅想 AI 编程的未来形态</li> 
 <li>01:15:35 AI 写代码好用，有点离不开了</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 124 &#x89E3;&#x5BC6;&#x8C37;&#x6B4C;&#x524D;CEO&#x65AF;&#x5766;&#x798F;&#x8BBF;&#x8C08;: AI&#x672A;&#x6765;&#x4E0E;&#x79D1;&#x6280;&#x5DE8;&#x5934;&#x7684;&#x601D;&#x8003;</title>
        <link>https://justinyan.eth.limo/5A897EDA-BB12-46BE-A783-7431A716540A/</link>
        <guid>https://justinyan.eth.limo/5A897EDA-BB12-46BE-A783-7431A716540A/</guid>
        <pubDate>Mon, 19 Aug 2024 22:19:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/08/Podcast-Cover-v124.png" alt="" /></p> 
<p>今天我们来聊聊Google前CEO Eric Schmidt在斯坦福的一次关于AI的分享。这场分享也在社交媒体上引发了广泛讨论。Eric探讨了AI的未来，特别是即将到来的百万Token模型，以及AI对就业市场的潜在影响。他还谈到了数据中心的建设、NVIDIA的优势，以及他对工作与生活平衡的看法。</p> 
<p>有意思的是，Eric提到Google可能因为过于关注工作与生活的平衡，而在AI竞赛中稍显落后，这个观点在网上引发了不少争议。此外，他还讨论了AI在学术界的应用前景，以及如何应对AI带来的伦理挑战。</p> 
<p>无论你是技术爱好者，还是对未来发展有兴趣的听众，相信这期节目都能为你带来不少启发。</p> 
<p><em>P.S. 以上shownotes由Claude+ChatGPT生成</em><br /> <em>P.P.S. 2024/08/19 今天辟谣啦，说这次斯坦福分享并不是聊到一半才说是要公开的，而是一开始就是公开的。当然Eric要面对这么多人分享，其实跟录不录像也没什么关系，本来就应该当作公开分享来处理的。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 从斯坦福访谈开始</li> 
 <li>00:03:40 Eric Schmidt 简介</li> 
 <li>00:10:40 百万 Token 意味着什么？</li> 
 <li>00:20:50 AI Agent 及其应用</li> 
 <li>00:30:20 AI 能耗问题和数据中心建设</li> 
 <li>00:41:20 NVIDIA 的 CUDA 优势</li> 
 <li>00:54:20 工作与生活平衡</li> 
 <li>01:02:20 AI 对就业市场的影响</li> 
 <li>01:10:30 AI 在学术界的应用</li> 
 <li>01:20:40 探讨 AI 未来发展方向</li> 
 <li>01:31:20 AI 对写代码的影响</li> 
 <li>01:40:20 AI 伦理相关</li> 
 <li>01:50:40 AI 未来发展趋势：</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 123 &#x65E0;&#x4E3B;&#x9898;&#x95F2;&#x804A;02</title>
        <link>https://justinyan.eth.limo/CA487ED2-74DA-4EA1-A1D3-1016DB9EE131/</link>
        <guid>https://justinyan.eth.limo/CA487ED2-74DA-4EA1-A1D3-1016DB9EE131/</guid>
        <pubDate>Mon, 19 Aug 2024 22:14:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/08/Podcast-Cover-v123-v1.png" alt="" /></p> 
<p>又来一期闲聊节目。最近自力从大厂离职开始做“数字游民”去了，虽然暂时还是深圳游，但也总算游起来了，可喜可贺。</p> 
<p>我们从“大厂离职赛道”开始聊起，聊到时间管理，长期短期目标等等。总而言之世界本身不会因为我们的改变而改变，反过来，我们自己眼中的世界却会因为我们对他的认知的改变而改变。</p> 
<p>人生不是爬一座山，而是爬过一座山，还有好多座山。人生也不是一条直线从起点到终点，它更像一条弯弯曲曲的曲线，来来又去去。</p> 
<p>人生唯一不变的就是改变，愿听友们都能平静以对，充分体验人生。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:17 从自力离职开始说起</li> 
 <li>00:03:31 离职博主现象</li> 
 <li>00:10:35 离职后的计划和想法</li> 
 <li>00:19:26 深圳城市的优势和特点</li> 
 <li>00:31:41 数字游民的生活方式</li> 
 <li>00:40:28 长期和短期目标的权衡</li> 
 <li>00:51:31 时间管理和并发效率的挑战</li> 
 <li>01:07:27 过去、创业、未来</li> 
 <li>01:16:08 结束</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Just Toolbox 02: &#x968F;&#x673A;Token&#x751F;&#x6210;&#x5668;&#x53CA;&#x7CFB;&#x7EDF;&#x968F;&#x673A;&#x6570;&#x751F;&#x6210;&#x539F;&#x7406;</title>
        <link>https://justinyan.eth.limo/D60839AA-98D2-4054-8020-F81DD39A119D/</link>
        <guid>https://justinyan.eth.limo/D60839AA-98D2-4054-8020-F81DD39A119D/</guid>
        <pubDate>Sun, 28 Jul 2024 01:12:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/07/Just-Toolbox-2.jpg" alt="" /></p> 
<p><em><a href="https://apps.apple.com/app/just-toolbox/id6504505981">Just Toolbox</a> 是基于SwiftUI开发的，运行在iPhone, iPad, watchOS, macOS和visionOS的免费的App。App涉及到的Tool实现我会在<a href="https://github.com/justinyanme/Just-Toolbox-Gists">github</a>和这里以文章的形式开源代码及讲述实现原理。如果大家对本系列感兴趣的话，欢迎在<a href="https://apps.apple.com/app/just-toolbox/id6504505981">App Store下载</a> 支持。</em></p> 
<p>生成随机Token的实现很简单，把大写字符，小写字符，数字字符还有符号字符四种拼到一起，再随机一下单个字符即可，代码如下:</p> 
<pre><code class="language-swift">@State private var uppercaseEnabled = true
@State private var numbersEnabled = true
@State private var lowercaseEnabled = true
@State private var symbolsEnabled = false
@State private var length = 64

func createToken() -&gt; String {
    let uppercase = uppercaseEnabled ? "ABCDEFGHIJKLMOPQRSTUVWXYZ" : ""
    let lowercase = lowercaseEnabled ? "abcdefghijklmopqrstuvwxyz" : ""
    let numbers = numbersEnabled ? "0123456789" : ""
    let symbols = symbolsEnabled ? ".,;:!?./-\"'#{([-|\\@)]=}*+" : ""

    let originStr = (uppercase + lowercase + numbers + symbols)
    let shuffledStr = String(repeating: originStr, count: length / originStr.count + 1).shuffled
    let endIndex = shuffledStr.index(shuffledStr.startIndex, offsetBy: length)
    return String(shuffledStr[..&lt;endIndex])
}
</code></pre> 
<p>其中<code>Collection</code>的<code>shuffled</code>方法是这样的:</p> 
<pre><code class="language-swift">extension RangeReplaceableCollection {
    var shuffled: Self {
        var elements = self
        return elements.shuffleInPlace()
    }

    @discardableResult
    mutating func shuffleInPlace() -&gt; Self {
        indices.forEach {
            let subSequence = self[$0...$0]
            let index = indices.randomElement()!
            replaceSubrange($0...$0, with: self[index...index])
            replaceSubrange(index...index, with: subSequence)
        }
        return self
    }
    func choose(_ n: Int) -&gt; SubSequence { return shuffled.prefix(n) }
}
</code></pre> 
<h2>内部实现</h2> 
<p>那么Swift的<code>randomElement()</code>又是如何实现的呢？它的源码在: <a href="https://github.com/swiftlang/swift/blob/ac0f574fdb9d9bbaa6a60a4815c5e20c051604ac/stdlib/public/core/Collection.swift#L954">https://github.com/swiftlang/swift/blob/ac0f574fdb9d9bbaa6a60a4815c5e20c051604ac/stdlib/public/core/Collection.swift#L954</a></p> 
<pre><code class="language-swift">/// Returns a random element of the collection.
///
/// Call `randomElement()` to select a random element from an array or
/// another collection. This example picks a name at random from an array:
///
///     let names = ["Zoey", "Chloe", "Amani", "Amaia"]
///     let randomName = names.randomElement()!
///     // randomName == "Amani"
///
/// This method is equivalent to calling `randomElement(using:)`, passing in
/// the system's default random generator.
///
/// - Returns: A random element from the collection. If the collection is
///   empty, the method returns `nil`.
///
/// - Complexity: O(1) if the collection conforms to
///   `RandomAccessCollection`; otherwise, O(*n*), where *n* is the length
///   of the collection.
@inlinable
public func randomElement() -&gt; Element? {
var g = SystemRandomNumberGenerator()
return randomElement(using: &amp;g)
}
</code></pre> 
<p>这里面<code>SystemRandomNumberGenerator()</code>在不同平台有不同的实现，Swift标准库里只是链接了一个符号，<a href="https://developer.apple.com/documentation/swift/systemrandomnumbergenerator">官方文档</a>说:</p> 
<ul> 
 <li>Apple platforms use <code>arc4random_buf(3)</code>.</li> 
 <li>Linux platforms use <code>getrandom(2)</code> when available; otherwise, they read from <code>/dev/urandom</code>.</li> 
 <li>Windows uses <code>BCryptGenRandom</code>.</li> 
</ul> 
<p>我们看看Apple platforms的实现<code>arc4random_buf</code>，它的实现是<code>FreeBSD</code>项目中<code>Libc</code>里，源码<a href="https://opensource.apple.com/source/Libc/Libc-825.26/gen/FreeBSD/arc4random.c.auto.html">在这里</a>:</p> 
<pre><code class="language-c">void
arc4random_buf(void *_buf, size_t n)
{
	u_char *buf = (u_char *)_buf;
	int did_stir = 0;

	THREAD_LOCK();

	while (n--) {
		if (arc4_check_stir())
		{
			did_stir = 1;
		}
		buf[n] = arc4_getbyte();
		arc4_count--;
	}
	
	THREAD_UNLOCK();
	if (did_stir)
	{
		/* stirring used up our data pool, we need to read in new data outside of the lock */
		arc4_fetch();
		rs_data_available = 1;
		__sync_synchronize();
	}
}
</code></pre> 
<p>这里面最重要的其实是这个函数<code>arc4_fetch()</code>，这个函数是系统用来取随机源的实现，它的代码如下:</p> 
<pre><code class="language-c">static void
arc4_fetch(void)
{
	int done, fd;
    // 下面这个RANDOMDEV是
    // #define	RANDOMDEV	"/dev/random"
	fd = _open(RANDOMDEV, O_RDONLY, 0);
	done = 0;
	if (fd &gt;= 0) {
		if (_read(fd, &amp;rdat, KEYSIZE) == KEYSIZE)
			done = 1;
		(void)_close(fd);
	} 
	if (!done) {
		(void)gettimeofday(&amp;rdat.tv, NULL);
		rdat.pid = getpid();
		/* We'll just take whatever was on the stack too... */
	}
}
</code></pre> 
<p>操作系统会从<code>/dev/random</code>这个设备获取熵源，这是典型的Unix-like OS的实现，另一个设备是<code>/dev/urandom</code>，在苹果的操作系统中，这两个的实现没有区别。</p> 
<p>早期系统实现是从硬件收集各种熵源(entropy source)，然后使用加密算法(比如ChaCha20)加密存储。苹果可能从2019年或更早就它们的算法切到Fortuna，使用的熵源包括(<a href="https://support.apple.com/en-ie/guide/security/seca0c73a75b/web">原文地址</a>):</p> 
<ul> 
 <li><a href="https://support.apple.com/en-ie/guide/security/sec59b0b31ff/web">Secure Enclave硬件给出的真随机数</a></li> 
 <li>启动阶段的CPU执行时间差(<a href="https://lwn.net/Articles/642166/">参考这篇文章介绍什么是CPU execution time jitter</a>)</li> 
 <li>硬件中断信号(比如键盘鼠标事件之类的)</li> 
 <li>启动时保存起来的随机种子文件</li> 
 <li>Intel的随机指令 — 比如<code>RDSEED</code>和<code>RDRAND</code> (只有Intel-based Mac才能用)</li> 
</ul> 
<p>看起来这里面最厉害的还是iPhone 5s时代推出的安全专属硬件Secure Enclave处理器。一般我们应用随机数结果的地方，像上面的Token就是用来做校验的。如果攻击者知道随机种子是什么，那么伪随机生成的结果就是固定的，他就可以推测随机结果，通过Token校验。苹果采用的硬件级真随机熵源就能很好应对这种攻击。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Just Toolbox 01: Swift&#x4E0D;&#x540C;&#x8FDB;&#x5236;&#x6574;&#x6570;&#x8F6C;&#x6362;&#x53CA;&#x6807;&#x51C6;&#x5E93;&#x5B9E;&#x73B0;&#x539F;&#x7406;</title>
        <link>https://justinyan.eth.limo/4783A014-BDB3-442B-9B2B-4ADDF2B3F7FB/</link>
        <guid>https://justinyan.eth.limo/4783A014-BDB3-442B-9B2B-4ADDF2B3F7FB/</guid>
        <pubDate>Sat, 20 Jul 2024 14:09:02 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/07/Just-Toolbox-01.jpg" alt="" /></p> 
<p><em><a href="https://apps.apple.com/app/just-toolbox/id6504505981">Just Toolbox</a> 是我最近基于SwiftUI开发的，运行在iPhone, iPad, watchOS, macOS和visionOS的练手项目。目前该App可完全免费使用，且涉及到的Tool实现我会在<a href="https://github.com/justinyanme/Just-Toolbox-Gists">github</a>和这里以文章的形式开源代码及讲述实现原理。如果大家对本系列感兴趣的话，欢迎在<a href="https://apps.apple.com/app/just-toolbox/id6504505981">App Store下载</a> 支持。</em></p> 
<p>使用Swift在不同进制的整数之间进行转换。系统的整数类型默认使用十进制，我们需要转换成String用于表达各种不同的进制。</p> 
<p>十进制的基数/底数(Radix, base)是10，二进制是2，以此类推。</p> 
<p>Swift在<code>Int</code>和<code>String</code>提供了进制转换方法，支持的范围是<code>2-36</code>，因为在<code>String</code>中如果要表达一个大于十进制的数，则除了<code>0-9</code>还需要用上<code>a-z</code>和<code>A-Z</code>，最多十个数字加上26个字母，一共36个字符。</p> 
<p>以下为转换代码:</p> 
<pre><code class="language-swift">enum IntegerBase: Int, CaseIterable {
    case binary = 2
    case octal = 8
    case decimal = 10
    case hexadecimal = 16

    var title: String {
        switch self {
        case .binary: "Binary (2)".localized
        case .octal: "Octal (8)".localized
        case .decimal: "Decimal (10)".localized
        case .hexadecimal: "Hexadecimal (16)".localized
        }
    }
}

func convert(text: String, from: IntegerBase, to: IntegerBase) -&gt; String? {
    var decimal: Int = -1
    // Radix must be between 2 and 36
    //
    // To string
    // String(aInt, radix: 2)
    //
    // From string
    // Int(b2, radix: 2)
    //
    guard let aDecimal = Int(text, radix: from.rawValue) else {
        log.error("Invalid \(from) based number: \(text)")
        return nil
    }

    decimal = aDecimal

    if decimal == -1 {
        log.error("Invalid decimal -1!")
        return nil
    }

    if from != to {
        return String(decimal, radix: to.rawValue)

    } else {
        return String(decimal)
    }
}
</code></pre> 
<h2>内部实现</h2> 
<p>那么Swift提供的<code>Int</code>和<code>String</code>类型的底数转换函数效率如何呢？Swift的Integers实现代码在这里: <a href="https://github.com/swiftlang/swift/blob/a861fc117b34fbabe67bc030823fb30b14d87d98/stdlib/public/core/Integers.swift#L1497">https://github.com/swiftlang/swift/blob/main/stdlib/public/core/Integers.swift (line 1497)</a></p> 
<p>可以看到这个方法是针对<code>BinaryInteger</code> protocol的，根据输入法radix把当前整数转为String。他先判断自己的位宽是否大于64位，如果小于等于64位，则用llvm的标准方法来转换。</p> 
<p>我们一般用到Int64就完全足够了，所以先看标准实现。</p> 
<pre><code class="language-swift">if bitWidth &lt;= 64 {
    let radix_ = Int64(radix)
    return Self.isSigned
    ? _int64ToString(
        Int64(truncatingIfNeeded: self), radix: radix_, uppercase: uppercase)
    : _uint64ToString(
        UInt64(truncatingIfNeeded: self), radix: radix_, uppercase: uppercase)
}
</code></pre> 
<p>分为有符号和无符号整形数，我们以<code>_int64ToString</code>为例，他的实现在: <a href="https://github.com/swiftlang/swift/blob/a861fc117b34fbabe67bc030823fb30b14d87d98/stdlib/public/core/Runtime.swift#L477">https://github.com/swiftlang/swift/blob/a861fc117b34fbabe67bc030823fb30b14d87d98/stdlib/public/core/Runtime.swift#L477</a></p> 
<p>留意到真正的实现函数<code>_int64ToStringImpl</code>分为是否<code>$Embedded</code>两种实现。Swift后来支持嵌入式开发，可以参考官方Blog: <a href="https://www.swift.org/blog/embedded-swift-examples/">https://www.swift.org/blog/embedded-swift-examples/</a>。这里我们就不看<code>Embedded</code>的实现了。</p> 
<p>非Embedded这里只留下了一个函数声明:</p> 
<pre><code class="language-swift">@_silgen_name("swift_int64ToString")
internal func _int64ToStringImpl(
  _ buffer: UnsafeMutablePointer&lt;UTF8.CodeUnit&gt;,
  _ bufferLength: UInt,
  _ value: Int64,
  _ radix: Int64,
  _ uppercase: Bool
) -&gt; UInt64
</code></pre> 
<p>其中<code>@_silgen_name</code>这个attribute是自<a href="https://github.com/swiftlang/swift/commit/fbd2e4d872d1aa57bfba2ab1f4d280bb1e90cbb8">2015年这个commit</a>开始从<code>asmname</code>改名过来的。有阅读过操作系统源码的读者朋友应该对这种直接写汇编实现，业务层只保留一个函数声明的使用方法并不陌生。汇编写的符号一般习惯在前面加下划线<code>_</code>，所以这个Swift函数对应的符号是<code>_swift_int64ToString</code>，它的实现在这里: <a href="https://github.com/swiftlang/swift/blob/a861fc117b34fbabe67bc030823fb30b14d87d98/stdlib/public/stubs/Stubs.cpp#L105">https://github.com/swiftlang/swift/blob/a861fc117b34fbabe67bc030823fb30b14d87d98/stdlib/public/stubs/Stubs.cpp#L105</a></p> 
<p>这是一个C++函数，它的就是做了一下正负数判断然后调用<code>uint64ToStringImpl</code>:</p> 
<pre><code class="language-cpp">static uint64_t uint64ToStringImpl(char *Buffer, uint64_t Value,
                                   int64_t Radix, bool Uppercase,
                                   bool Negative) {
  char *P = Buffer; // 这里初始化 *P 指针指向缓冲区开始
  uint64_t Y = Value; // 这个就是要转换的那个整型数

  if (Y == 0) {
    *P++ = '0'; // 如果要转换的数是0，那就不用计算了直接填0
  } else if (Radix == 10) {
    // 如果底数/基数/进制是10，那就循环输入值从低位到高位，每个数字直接转成ASCII写入*P
    while (Y) {
      *P++ = '0' + char(Y % 10); // 这里的 '0' 对应ASCII编码起始，偏移 Y % 10 余数就是对应数字的ASCII值
      Y /= 10; // 这里偏移十进制一位，因为uint64_t就是默认十进制的
    }
  } else {
    // 如果底数/基数/进制不是10，那就调用llvm的方法来实现
    unsigned Radix32 = Radix;
    while (Y) {
      *P++ = llvm::hexdigit(Y % Radix32, !Uppercase);
      Y /= Radix32;
    }
  }

  // 这里补一下负数的符号
  if (Negative)
    *P++ = '-';

  // 缓冲区里的字符要反转一下，因为之前写入的时候是从低位到高位写入的
  // 比如十进制的 123，写入后变成 321，需要反转回来
  std::reverse(Buffer, P);

  // 最后返回的是缓冲区中字符串的长度
  // 我看Swift的注释中说32 bit Int肯定能装下这个长度，但返回值定义了uint64_t
  // 而且这是个ABI接口，不能随便改（有点无奈的意思）XD
  return size_t(P - Buffer);
}
</code></pre> 
<p>那么<code>llvm:hedigit()</code>做了什么呢？它的实现在这里: <a href="https://github.com/swiftlang/swift/blob/a861fc117b34fbabe67bc030823fb30b14d87d98/stdlib/include/llvm/ADT/StringExtras.h#L36">https://github.com/swiftlang/swift/blob/a861fc117b34fbabe67bc030823fb30b14d87d98/stdlib/include/llvm/ADT/StringExtras.h#L36</a></p> 
<pre><code class="language-cpp">inline char hexdigit(unsigned X, bool LowerCase = false) {
  const char HexChar = LowerCase ? 'a' : 'A';
  // 这里和 *P++ = '0' + char(Y % 10); 的实现很像
  // 只是会判断＞0的情况下从'a'或者'A'起始作偏移
  return X &lt; 10 ? '0' + X : HexChar + X - 10;
}
</code></pre> 
<h2>大数实现</h2> 
<p>那么以上就是Swift标准库里对64位整型数做基数转换的实现。但是Swift是支持大于64位的整数的，那么大数他怎么做的呢？</p> 
<pre><code class="language-swift">if self == (0 as Self) { return "0" }

// 如果底数/基数/进制是2^n，那么位移操作比除法要更高效
let isRadixPowerOfTwo = radix.nonzeroBitCount == 1
let radix_ = Magnitude(radix) // 这个函数只是把它转成对等的绝对值值
// 这里计算商和余数
func quotientAndRemainder( value: Magnitude) -&gt; (Magnitude, Magnitude) {
    return isRadixPowerOfTwo
    ? (value &gt;&gt; radix.trailingZeroBitCount, value &amp; (radix - 1))
    : value.quotientAndRemainder(dividingBy: radix)
}

// 这里把对应每一位数转成ASCII字符
let hasLetters = radix &gt; 10
func ascii( digit: UInt8) -&gt; UInt8 {
    let base: UInt8
    if !hasLetters || digit &lt; 10 {
    base = UInt8(("0" as Unicode.Scalar).value)
    } else if uppercase {
    base = UInt8(("A" as Unicode.Scalar).value) &amp;- 10
    } else {
    base = UInt8(("a" as Unicode.Scalar).value) &amp;- 10
    }
    return base &amp;+ digit
}

let isNegative = Self.isSigned &amp;&amp; self &lt; (0 as Self)
var value = magnitude



// 这里就是循环一下每一位然后计算存进[UInt8]里面
// 这里有一段注释，提醒Swift标准库成员未来可以优化一下
// TODO(FIXME JIRA): All current stdlib types fit in small. Use a stack
// buffer instead of an array on the heap.
// 因为[UInt8]数组是分配在堆上的，如果用栈缓冲区来实现会更快。其实也就是上面CPP char* P版本的实现。
var result: [UInt8] = []
while value != 0 {
    let (quotient, remainder) = _quotientAndRemainder(value)
    result.append(_ascii(UInt8(truncatingIfNeeded: remainder)))
    value = quotient
}

if isNegative {
    result.append(UInt8(("-" as Unicode.Scalar).value))
}

// 同理，reverse一下最后return出去
result.reverse()
return result.withUnsafeBufferPointer {
    return String._fromASCII($0)
}
</code></pre>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 122 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;27:  &#x82F9;&#x679C;&#x6B27;&#x76DF;&#x53C8;&#x6390;&#x67B6;&#xFF0C;Vision Pro&#x4E2D;&#x56FD;&#x4E0A;&#x5E02;</title>
        <link>https://justinyan.eth.limo/4DF47B2D-E55A-47AA-A7FB-C38CD6415021/</link>
        <guid>https://justinyan.eth.limo/4DF47B2D-E55A-47AA-A7FB-C38CD6415021/</guid>
        <pubDate>Tue, 09 Jul 2024 12:46:00 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/07/Podcast-Cover-v122-v2.png" alt="" /></p> 
<p>又快又欢乐的科技快乐星球时间，首先欧盟又对苹果出手啦，缘起上次苹果同意欧盟判决，愿意在欧洲支持第三方市场side load，但又给出了没啥诚意的方案，同时宣布将延期Apple Intelligent等新功能在欧洲上市时间，这下可好，双方是真的掐上了。</p> 
<p>另一边，苹果的Vision Pro倒是顺利在中国上市，定价29999元，数字长得有点数不过来，不晓得对财报能否有正向影响。</p> 
<p>如果说苹果在欧盟被搞还难说是谁的问题大一些，那么FTC控告Adobe的霸王取消订阅惩罚费违法，则可以说是大快人心呀，借苹果广告一言，真可谓是“大快所有人心的大好事”呀。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:16 欧盟苹果又掐架啦</li> 
 <li>00:12:21 Apple ID可能将改名Apple Account</li> 
 <li>00:15:52 Apple Vision Pro在中国上市</li> 
 <li>00:20:55 Phil或将出席OpenAI董事会观察员职位</li> 
 <li>00:22:43 macOS Beta推出iPhone镜像功能</li> 
 <li>00:32:23 苹果将iPhone X, HomePod, AirPods列为过时产品</li> 
 <li>00:34:46 Adobe的取消订阅惩罚费，被FTC控告为违法行为</li> 
 <li>00:53:13 全球首款支持GTT-4o的智能眼镜Solos Air Go Vision发布</li> 
 <li>00:56:05 国产AI大模型高考成绩出炉</li> 
 <li>01:06:11 ChatTTS堪称最强自然人语音模型</li> 
 <li>01:12:16 CocoaPods平台漏洞披露，请开发者们尽快升级</li> 
 <li>01:14:20 艾尔登法环，黄金树幽影DLC赢麻了</li> 
 <li>01:16:33 黑神话悟空发售在即</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Just Toolbox: &#x4F7F;&#x7528;SwiftUI&#x4E00;&#x7EDF;&#xF8FF;&#x5929;&#x4E0B;</title>
        <link>https://justinyan.eth.limo/856FDF4F-B731-432F-B8EC-CB96B01A406B/</link>
        <guid>https://justinyan.eth.limo/856FDF4F-B731-432F-B8EC-CB96B01A406B/</guid>
        <pubDate>Mon, 08 Jul 2024 12:45:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/07/just-toolbox-blog.png" alt="" /></p> 
<p><em>P.S. 今天刚正式发布就学到不少东西，定价就是其中一环，非常感谢大家的反馈🙏</em></p> 
<p>Hi,<br /> 大家好，我是Justin。今天我发布了一款使用SwiftUI开发的，运行在iPhone, iPad, Apple Watch, Mac和Vision Pro的App: <a href="https://apps.apple.com/app/just-toolbox/id6504505981">Just Toolbox</a>。</p> 
<p>这是一款面向开发者的工具箱应用，得益于苹果在SwiftUI的大力投入，这个项目的大部分代码只需少量修改就能很好工作在所有苹果平台上。</p> 
<p>开发这个App最初只是出于练习目的，去年在上海苹果开发者加速器分享的时候，我使用的Demo也是基于SwiftUI开发的。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/07/tweet-shanghai-apple.png" alt="" /></p> 
<p>此后我还做了好几个基于SwiftUI的项目，但最终都没上架发布。分析下来我觉得有几个原因:</p> 
<p><strong>1. 基于SwiftUI开发，但仍采用UIKit的设计思路</strong></p> 
<p>SwiftUI目前的接口是高度抽象的，但我因为习惯了使用UIKit和AppKit的思路设计App，希望对App的每个细节都能掌握并修改。于是在实践过程中我不得不基于Representable协议在两者之间桥接，以达到我想要的细节效果。</p> 
<p>于是付出的代价不少，首先是我需要针对UIKit, AppKit各自实现一次，实现的东西多了，SwiftUI的跨苹果平台的特性也就不复存在了。于是会产生“如果我到处都需要用Representable hack一下，那我为什么不直接使用UIKit/AppKit呢？”的令人沮丧的想法。</p> 
<p>虽然我本意是延续苹果平台优秀的用户体验设计，但使用SwiftUI的短板来达成另一个Framework的长处，这又何尝不是在钻牛角尖呢？于是在<a href="https://apps.apple.com/app/just-toolbox/id6504505981">Just Toolbox</a>项目中，我转变了思路，寻找“适合使用SwiftUI”开发的场景。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/07/Whole-family-Mac.png" alt="" /></p> 
<p>大家可以看到，整个App的导航采用的是标准的SwiftUI Navigation控件，TabView, NavigationStack和NavigationSplitView，按钮, Slider等控件也是尽量在SwiftUI框架内进行UI自定义。于是他们可以在多个平台工作得很好。</p> 
<p><strong>2. 当时的SwiftUI还不够成熟，版本差异大</strong></p> 
<p>之前我尝试SwiftUI开发的时候，API还相当不稳定，Navigation也不好用，缺少必要的API。当时的iOS还勉强能自己手搓适配，但macOS之类的“用户量少”的平台就非常难受了。以前用AppKit + Storyboard能轻易解决的问题到了SwiftUI上就得各种绕过。</p> 
<p>另外就是平台交互差异大的情况下，SwiftUI能不能很好解决的问题。当年苹果在WWDC19上发布SwiftUI的时候我正好在现场，当时还录了一期播客: <a href="https://justinyan.me/post/3686">Vol. 11 谈谈 WWDC 2019</a>。我记得我在节目里提过这个问题。</p> 
<p><strong>现在看来，SwiftUI经过5年的发展，已经做到可用的程度了</strong>，“只要开发者愿意放弃旧版本系统兼容”。<a href="https://apps.apple.com/app/just-toolbox/id6504505981">Just Toolbox</a>兼容最低的系统版本是: iOS 16.0，macOS 14.0, watchOS 10.0, visionOS 1.1，跟当下的版本只差一个。</p> 
<p><strong>3. 总觉得没做到让自己满意，就不想发布</strong></p> 
<p>这点跟技术无关，我相信很多创造者都有这种没来由的不自信。身边也有不少朋友，不管是做App的还是拍纪录片的，明明做了特别厉害的东西，我看了觉得很哇塞，但是他却觉得不够完美，不愿意对外发布。所以面对这种情况，我觉得我的乐天派朋友们反而是更优的。</p> 
<p>“有什么关系，大不了再做点别的咯”。先发布再迭代，基于这样的心理转变，我决定把过去这段时间用SwiftUI鼓捣的几个项目再装修装修，然后一个个发出来。</p> 
<p><strong>4. 支付逻辑怎么做才是最佳实践</strong></p> 
<p>我不是一个全职独立开发者，平时有在上班，所以之前对这方面的考虑可以说非常初级，仅停留在尝试StoreKit 1和2的API的程度。这次在<a href="https://apps.apple.com/app/just-toolbox/id6504505981">Just Toolbox</a>项目上我尝试接入<a href="https://www.revenuecat.com/">RevenueCat</a>，只能说他真的很强，省了我很多功夫。他的收费模式是每个月$2.5K支付免费，超过就抽成1%，非常巧妙。</p> 
<p>有了上述这些前提，我觉得使用SwiftUI开发一个正儿八经能解决问题的App且运行在苹果全平台，应该是可行的了。</p> 
<p>那么使用SwiftUI开发苹果全平台有什么利弊呢？</p> 
<p><strong>缺点是共享的代码任意一个平台改了就会影响到其他平台。目前我还不确定同时维护这么多平台到底有没有额外的好处。</strong></p> 
<p><strong>优点是一个人开发，一套代码实现苹果全平台变得简单。</strong></p> 
<p>以前如果想实现苹果全平台上架，我需要用UIKit开发一次iPhone与iPad版，这两个平台差异不大，只要交互设计愿意接受在iPad上有部分折中，那么直接把iPhone放大拉宽运行在iPad都可以。</p> 
<p>接着Mac上我得用AppKit再实现一次UI，逻辑代码可以抽出来共享，甚至激进一点，把MVVM中的ViewModel也抽出来，这样每个平台就剩一个UI壳往里套就好。如果不想用AppKit，那么直接用Catalyst，把iPad版改一改也能运行在Mac上。</p> 
<p>接下来，watchOS没辙，以前必须得用Storyboard和WatchKit写一遍，毕竟是完全不同的东西，UI代码几乎没有可以共享的。</p> 
<p>最后是visionOS，这个平台上基于3D建模的Immersive交互是他独有的，这部分无法跨平台，他的原生界面则是采用SwiftUI的。所以如果采用老的技术路线，那么我们至少需要UIKit，AppKit, WatchKit和SwiftUI（visionOS）各写一遍。如果愿意基于iPad来折腾，那么macOS和visionOS都能运行基于iPad的版本，只是体验没那么好。</p> 
<p>所以在苹果平台上，想要实现一套UI代码运行多个平台，且每个平台都能实现该平台的原生体验，比如macOS的Menubar，比如visionOS的hoverEffect，比如iOS和watchOS各自独有的一些SensoryFeedback，并且这个App是全新开发的，没有历史负担，并且开发者愿意采用SwiftUI的设计思路来设计App，那么确实使用SwiftUI是最优解。</p> 
<p>**最后，**苹果的App Store是一个平台，同时面向大公司与中小开发者。如果论收入比例，可能大公司的App占比很高，但如果论人数与App数量，那么中小开发者才是大头。我觉得SwiftUI就是面向中小开发者设计的，因为大公司有足够的资源去解决各种问题，甚至如上面所说的，每个平台各安排一个Team，就为了让该平台的细节被打磨到最好。但中小开发者，尤其是个人独立开发者可没这资源。并且大家要解决的问题其实也用不到大公司那一套深入框架内部，各种Hack各种奇技淫巧，大家遇到更大的问题是：旧框架的开发门槛相对还是高，而苹果的设备和平台又越来越多。</p> 
<p>Catalyst也好，iPad App直接在Mac和Vision Pro上运行也好，我觉得都是权宜之计，没有根本上解决问题。而且强行转接也让开发者痛苦不堪，目前Catalyst做得最好的恐怕只有Craft这样的App，他们的团队也非常强，普通开发者恐怕难以望其项背。</p> 
<p>所以拜SwiftUI所赐，我一个人就能开发一个上线苹果全平台的App，这个App面向用户的解决思路也很简单。</p> 
<p>提出问题 → 输入原数据 → 处理解决问题 → 输出处理后的数据</p> 
<p>这正好也是SwiftUI擅长的。</p> 
<p>当然SwiftUI现在已经非常强了，它还非常擅长动画，因为它的渲染就是走CoreAnimation实现的（因为苹果在SwiftUI Team写渲染的那位小哥以前就是CoreAnimation作者），所以我也希望接下来在SwiftUI中尝试更多高级能力，看看这些高级接口的跨平台兼容性会是怎样的。</p> 
<p>如果读者朋友们对于<a href="https://apps.apple.com/app/just-toolbox/id6504505981">Just Toolbox</a>有什么建议，或者有什么希望我去尝试的，欢迎大家给我留言提需求，提Bug。😁</p> 
<h2>关于定价</h2> 
<p><strong>目前的定价是: 月付8元，年付38元，Lifetime 68元。</strong></p> 
<p>我最早给Just Toolbox设定的价格是:</p> 
<p>中国区月付12元，年付80元，Lifetime 168元，<br /> 其他区月付2.99美元，年付19.99美元，Lifetime24.99美元。</p> 
<p>月付提供一周免费试用，年付提供一个月免费试用。</p> 
<p>年付大约是月付乘以7，Lifetime是年付的两倍或三倍。定价策略取决于想要主推的Plan是哪个。但实话实说，本人没有运营个人付费App的经验，今天我发现大家不太会关注“试用”，而是更关注总价😂这就意味着这个价格设定并不足够合理。且Free Trial的吸引力并没有那么强。</p> 
<p>首次发布价格设定与App不匹配是宝贵的一课。这里先留个扣，以后有新学到的东西再来更新。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 121 Livid: &#x590D;&#x53E4;Mac&#x4E0E;&#x6E38;&#x620F;&#xFF0C;Retro&#x7684;&#x9B45;&#x529B;&#x5728;&#x54EA;&#x91CC;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/F47A1AD0-53F7-42FB-A325-C8472DC1A9B2/</link>
        <guid>https://justinyan.eth.limo/F47A1AD0-53F7-42FB-A325-C8472DC1A9B2/</guid>
        <pubDate>Sun, 23 Jun 2024 21:31:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/06/Podcast-Cover-v121-v3.png" alt="" /></p> 
<p>老朋友Livid限时返场！</p> 
<p>本期节目我们从复古Macs聊起，Livid家车库里放了<a href="https://x.com/Livid/status/1723145595643412519">各种各样的复古Macs</a>，他也收藏了不少复古游戏机。很多机器和操作系统厂商已经不维护了，而且设备老旧，当时很多机器发布的时候，互联网还是个新鲜事。在这样的条件下要给这些老设备安装软件，传输数据可不是一件容易的事情。于是折腾这些老Mac和游戏机自然也就成为一种乐趣。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/F-nZIxVbkAA0kVn.jpg" alt="" /></p> 
<p>Livid是个复古游戏爱好者，我们自然也对Retro Gaming聊了一通。最近Justin买了不少开源掌机，Game Boy和PSP等设备，也是对复古游戏有些沉迷的感觉。现如今模拟器一抓一大把，为什么大家还要买以前的二手设备来玩游戏呢？模拟器有模拟器的优势，而老设备除了怀旧之外，自然也有老设备独一无二的体验。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/FyCVK2AaYAMDl1i.jpg" alt="" /></p> 
<p>总之是非常开心的一次聊天，我们废话不多说，直接开启本期Retro Gaming之旅吧！</p> 
<p>更多相关图片:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/Power-G4.png" alt="" /></p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/Livids-Power-Mac-G4-Collection.png" alt="" /></p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/livids-collection.png" alt="" /></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:14 iOS App Store迎来复古游戏模拟器</li> 
 <li>00:00:56 资深复古游戏爱好者Livid</li> 
 <li>00:01:28 先聊聊Retro Macs</li> 
 <li>00:04:59 Mac OS 9也能跑模拟器，还有游戏手柄</li> 
 <li>00:09:35 Livid收集的Retro Macs</li> 
 <li>00:13:30 科技创新进入边际效应递减时期</li> 
 <li>00:17:19 以前的科技也有很多被我们错过的惊艳</li> 
 <li>00:24:18 何为"复古游戏"?Retro Gaming</li> 
 <li>00:37:38 互联网不发达时代，我们用软盘与CD拷游戏</li> 
 <li>00:43:07 现在的3A大作，论游戏性不一定比得过复古游戏</li> 
 <li>00:51:42 《大航海时代》也有Mac OS 9版本</li> 
 <li>00:55:28 macOS上好用的虚拟机UTM</li> 
 <li>00:59:39 复古Mac和游戏机在北美会比较便宜吗？</li> 
 <li>01:10:11 用模拟器体验复古游戏的优势</li> 
 <li>01:17:54 用当年的设备来体验当年的游戏，也有独一无二的收获</li> 
 <li>01:36:47 片尾曲: 圣斗士星矢8bit开头曲</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://x.com/Livid">Livid</a></li> 
 <li>V2EX: <a href="https://v2ex.com/">https://v2ex.com/</a></li> 
 <li>节目中提到的VXNA: <a href="https://v2ex.com/go/vxna">https://v2ex.com/go/vxna</a></li> 
 <li>Mac OS 9的RSS阅读器Newsstand: <a href="http://www.getnewsstand.com/">http://www.getnewsstand.com/</a></li> 
 <li>UTM虚拟机: <a href="https://getutm.app/">https://getutm.app/</a></li> 
 <li>Xbox Debug Kit: <iframe width="100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/jR46e-HU06c" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></li> 
 <li>OWC(Other World Computing): <a href="https://www.owc.com/">https://www.owc.com/</a></li> 
 <li>日本中古游戏店: BOOK･OFF, HARD･OFF</li> 
 <li>V2EX上的GameDB项目: <a href="https://www.v2ex.com/gamedb">https://www.v2ex.com/gamedb</a></li> 
 <li>在Palm上玩SimCity: <a href="https://x.com/Livid/status/1684673659213131783">https://x.com/Livid/status/1684673659213131783</a></li> 
 <li>Livid家的Retro Macs收藏: <a href="https://x.com/Livid/status/1723145595643412519">https://x.com/Livid/status/1723145595643412519</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 120 WWDC24&#x82F9;&#x679C;&#x5168;&#x7403;&#x5F00;&#x53D1;&#x8005;&#x5927;&#x4F1A;&#xFF0C;AI = Apple Intelligence!</title>
        <link>https://justinyan.eth.limo/D1D25B38-02AD-4589-A729-3E1420931ADF/</link>
        <guid>https://justinyan.eth.limo/D1D25B38-02AD-4589-A729-3E1420931ADF/</guid>
        <pubDate>Wed, 12 Jun 2024 22:08:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/06/Podcast-Cover-v120.png" alt="" /></p> 
<p>又一年WWDC，苹果整大活！</p> 
<p>AI到了苹果手里变成了Apple Intelligence (苹果智能)，而且还是个期货。之前谣传许久的Google Gemini和OpenAI的ChatGPT为苹果提供人工智能服务的消息，最终实锤对了一半: 接了ChatGPT，但又没完全接。</p> 
<p>苹果还是自研了一堆苹果的大模型，也宣布新系统里高度集成的所有智能服务都来自苹果自家的服务，ChatGPT只是在最后一环，如果用户想要在对话服务中选择其他家的AI，可以点一下“使用ChatGPT”。苹果赢麻了。</p> 
<p>本次发布会重点当然在AI部分，前1小时苹果还是照例更新了一大波visionOS 2, watchOS 11, iOS 18, iPadOS 18, macOS Sequoia等常规更新。demo出来的功能都乏善可陈，看得人昏昏欲睡。最终放出的王炸才是动真格的。我们此前在科技快乐星球多次提及苹果在AI赛道的落后，这下看来，苹果是在酝酿只有他做得到的AI赛道呀。</p> 
<p>废话不多说，让我们进入本期节目，Apple Intelligence!</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:02 苹果高管团队尬演空降</li> 
 <li>00:03:25 苹果AI: Apple Intelligence</li> 
 <li>00:04:33 印象最深的苹果智能功能</li> 
 <li>00:06:27 iPhone支持通话录音了</li> 
 <li>00:07:38 苹果智能可以做什么？</li> 
 <li>00:25:26 苹果智能的架构设计是怎样的？</li> 
 <li>00:28:15 来自Elon Musk的嘲讽</li> 
 <li>00:29:58 苹果自己的AI平台 only apple can do</li> 
 <li>00:33:05 交互很好，但是其他人做不了吗？</li> 
 <li>00:41:31 Platforms State of the Union</li> 
 <li>00:44:57 Vision OS的更新，Vision Pro变好用了？</li> 
 <li>00:48:10 iOS 18更新，换肤？</li> 
 <li>00:55:31 macOS更新Sequoia，控制iPhone倒反天罡？</li> 
 <li>01:02:49 iPadOS更新，手写数学题</li> 
 <li>01:05:23 watchOS更新</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x4F55;&#x5728;Mac OS 9&#x4E0A;&#x5F00;&#x53D1;App(&#x5165;&#x95E8;&#x7248;)</title>
        <link>https://justinyan.eth.limo/D5177E0F-A35D-48A1-A0B8-FE5F221523B6/</link>
        <guid>https://justinyan.eth.limo/D5177E0F-A35D-48A1-A0B8-FE5F221523B6/</guid>
        <pubDate>Mon, 03 Jun 2024 15:47:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/06/the-new-imac-g4-feature.jpg" alt="" /></p> 
<p>今天我们来玩点<strong>没啥用</strong>的东西: 如何在Mac OS 9上开发App。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/Mac-OS-9-CD.jpg" alt="" /></p> 
<p>Mac OS 9是乔布斯1997年回归苹果后，Classic Mac的最后一代操作系统。当时苹果内部在寻求现代操作系统的更新方向，期间谈过几次可能的合作，包括曾经在苹果做过CEO的Jean-Louis Gassée创业做的BeOS系统等等，最后还是选择让乔帮主回归拯救世界。于是乔布斯带着他的NeXTSTEP系统回来了，最终整合成为Classic Mac的全新操作系统OS X，于2001年发布。</p> 
<p>X是10的罗马数字，此后全新的Mac操作系统都基于OS X后面增加版本号，一直到2016年才改名为现在的"macOS"。</p> 
<p><img src="https://justinyan.eth.limo/D5177E0F-A35D-48A1-A0B8-FE5F221523B6/imac-g4-steve-jobs.jpg" alt="" /></p> 
<p>最后一台能运行Mac OS 9系统的硬件是2004年发布的iMac G5，它的上一代iMac G4就是那个著名的"台灯iMac"。这两代Mac都是用的PPC架构(PowerPC CPU)，2006年后苹果正式迁移到Intel芯片。</p> 
<p>因为最近朋友整了一台iMac G4所以我就想在上面做点东西玩玩，看看20多年前的Mac开发者都是怎么做App的，当然这也是一项现在看来毫无用处的技能，仅供诸君娱乐。</p> 
<p><em>本来我尝试在Apple Silicon MacBook上跑QEMU失败了，这个想法就暂且搁置了。后来跟 <a href="https://x.com/Livid">@Livid</a> 录节目他提到可以用<a href="https://mac.getutm.app/">UTM虚拟机</a>于是我又重新燃起了热情。</em></p> 
<p>声明: 本文使用CodeWarrior开发的部分跟随YouTube Channel <a href="https://www.youtube.com/@mastersofthevoid">Masters of the Void</a>的影片[Retro: Programming a MacOS 9 app with CodeWarrior](<iframe width="100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/ADVm1OIQUYQ" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>)学习总结而作，感兴趣的小伙伴可以看看他的视频。</p> 
<h2>1. 准备工作</h2> 
<ol> 
 <li>一台现代的Mac，最好是Apple Silicon的性能好一点的，因为要爬虚拟机</li> 
 <li><a href="https://mac.getutm.app/">UTM虚拟机</a>: 因为大部分人都没有这么老的机器，所以我们需要用到虚拟机来跑。 
  <ul> 
   <li>UTM Gallery中有<a href="https://mac.getutm.app/gallery/mac-os-9-2-1">Mac OS 9.2.1的image</a>可以直接安装</li> 
  </ul> </li> 
 <li><a href="https://www.macintoshrepository.org/1556-codewarrior-10-gold">CodeWarrior 10 Gold</a>: 这是在Classic Mac上的开发工具。</li> 
 <li><a href="https://www.macintoshrepository.org/1317-resedit-2-1-3">ResEdit 2.1.3</a>: 这是在Classic Mac上类似后来的Interface Builder(Nib/Xib/Storyboard)一样的开发工具。</li> 
</ol> 
<h2>2. 启动Mac OS 9和CodeWarrior</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/mac-os-9-utm.jpeg" alt="" /></p> 
<p>在UTM中安装好Mac OS 9之后，我们需要把下载下来的CodeWarrior光盘插入虚拟机的IDE Driver。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/mac-os-9.jpeg" alt="" /></p> 
<p>启动Mac OS 9，如果有需要配置的地方，直接默认配置即可。这个image不支持中文，我们全程使用英文开发就好。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/mac-os-9-CodeWarriror.png" alt="" /></p> 
<p>打开CodeWarrior的光盘，然后找到IDE 1.7打开即可。打开之后，我们点左上角全局菜单的"File-&gt;New Project…"新建一个工程。</p> 
<p><img src="https://justinyan.eth.limo/D5177E0F-A35D-48A1-A0B8-FE5F221523B6/mac-os-9-CodeWarriror-new-project.png" alt="" /></p> 
<p>这里我们选择"MacOS-&gt;C/C++-&gt;Basic Toolbox PPC"</p> 
<p>选MacOS因为我们要开发Mac OS 9的App。虽然看上去它支持C/C++，Pascal，但Classic Mac的开发文档都是用C的，所以如果用Pascal就需要我们精通C与Pascal两种语法才能顺利开发。PowerPlant则是CodeWarrior自带的C++框架，你如果选了这个他们会把整个framework代码都加入你的工程里。所以我们用C/C++就好。</p> 
<p>Basic Toolbox PPC。68K选项是早期摩托罗拉68000系列芯片时期的遗留产物(XNU源码里还有对这东西的吐槽哈哈)，我们直接选PPC就好了。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/mac-os-9-CodeWarriror-hello.png" alt="" /></p> 
<p>下一步选好存储位置，起个工程名字。我这里选择放在桌面的一个文件夹，工程名字填入"hello"，这样就创建了一个Demo工程。</p> 
<ul> 
 <li>Sources 
  <ul> 
   <li>这里面是源码，SillyBalls.c是自动创建的Main函数在这里。</li> 
  </ul> </li> 
 <li>Resources 
  <ul> 
   <li>这里是静态资源。.rsrc文件是需要使用ResEdit来编辑的，跟后来的Interface Builder有一点像，但是功能上弱了很多，是一个原始版。</li> 
  </ul> </li> 
 <li>Mac Libraries 
  <ul> 
   <li>这里的是Mac系统库，其中这个MWCRuntime.lib会帮你实现一个__start函数，这个是Classic Mac的App的入口，如过没有这个Lib他就会链接报错。(在<a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？ </a>中我们也提到过这个符号。)</li> 
   <li>InterfaceLib，包括Window, icon, Button之类的API都在里面</li> 
   <li>MathLib，数学函数</li> 
  </ul> </li> 
 <li>ANSI Libraries 
  <ul> 
   <li>这里面就是C++标准库之类的基础库</li> 
   <li>里面这个SIOUX.PPC.Lib这个库，包含了创建窗口，接受标准输入输出这样的实现。有这个库你就可以在Mac OS 9上写出printf之类的代码了，不过我们基本都会做一个GUI界面所以其实用不上。</li> 
  </ul> </li> 
</ul> 
<p>如此我们创建好一个Demo工程之后，按下"Cmd+R"就可以愉快地跑起来了！</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/mac-os-9-compile-error.png" alt="" /></p> 
<p>额并不能。链接错误，'hello'不能被写入，需要read/write权限。</p> 
<p>原因是CodeWarrior默认会用我们刚才创建的Porject的名字"hello"来命名它的编译产出物，那这个文件我们已经打开着了，当然没有写入权限啦。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/mac-os-9-compile-error-2.png" alt="" /></p> 
<p>解决方案很简单，关掉CodeWarrior，我们把工程文件名字改一下，比如'hello.prj'，保存再打开。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/hello-demo.gif" alt="" /></p> 
<p>重启跑起来，这个Demo程序就是会生成很多个不同颜色的球，鼠标在window上点一下就自动退出，完美。</p> 
<p>能把Demo工程跑起来，接下来就是安装ResEdit然后自己编写一个Window，里面加点Button就能用啦！</p> 
<h2>3. 其实已经25年了</h2> 
<p>Mac OS 9是1999年首次发布的，其实已经过去25年了。同时期微软已经发布Windows 98了。我原以为几十年过去很多东西会很“原始”，但真的用下来其实已经很现代了。</p> 
<p>所以Mac OS 9还不够"原始"，以后再回溯到Apple II之类的看看，感觉应该会很有意思。</p> 
<p>最后给大家表演一个用MacBook触摸板在Mac OS 9里用ResEdit一点点画我台的Logo，然后CodeWarrior实现一个WIndow里面有几个假的Button装个样子，哈哈。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/06/welcome-to-the-fyfy-fm-podcast.gif" alt="" /></p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 119 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;26: &#x82F9;&#x679C;AI, OpenAI, &#x5404;&#x79CD;AI</title>
        <link>https://justinyan.eth.limo/371F8AE6-4F38-4DD7-9440-E8059BB5AA60/</link>
        <guid>https://justinyan.eth.limo/371F8AE6-4F38-4DD7-9440-E8059BB5AA60/</guid>
        <pubDate>Wed, 29 May 2024 17:11:27 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/05/Podcast-Cover-v119_v2.png" alt="" /></p> 
<p>科技快乐星球，苹果最近事情不少，一边为M4 iPad Pro的广告道歉，一边又手忙脚乱修复“已删除照片重新出现”的Bug。下个月WWDC 2024我们可以期待一下，看看苹果AI最终会以什么形态出现。顺便苹果一直不愿把iPad Pro装上macOS，隔壁家微软已经开始在自家Surface Pro宣传AI PC概念了。希望苹果未来能在iPad这个产品线上有更多的创新吧。</p> 
<p>继Google之后，OpenAI也买了Reddit数据用于训练，免费服务把用户卖得透透的呀。本期新闻不少，废话不多说，让我们一起进入本期又快又欢乐的科技快乐星球。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:30 苹果修复已删除照片重现Bug</li> 
 <li>00:04:03 苹果为M4 iPad Pro广告道歉</li> 
 <li>00:06:42 Apple Music推出百大专辑榜单</li> 
 <li>00:10:44 苹果AI如何落地？谣言现状</li> 
 <li>00:16:05 微软开始推AI PC概念</li> 
 <li>00:19:55 微软推出规模最小模型Phi-3</li> 
 <li>00:28:31 ChatGPT移动应用收入创下迄今为止最大增幅</li> 
 <li>00:30:06 ChatGPT将删除Sky语音</li> 
 <li>00:32:13 OpenAI探索如何负责任地制作AI色情作品</li> 
 <li>00:36:59 爱笔思画推出AI干扰工具，让机器更难复制你的作品</li> 
 <li>00:41:05 OpenAI将推出媒体管理器，避免创作内容被用于人工训练</li> 
 <li>00:43:38 雷朋Meta眼镜可直接分享图片到Instagram Story</li> 
 <li>00:47:18 Tiktok测试上传60分钟视频，向YouTube挑战</li> 
 <li>00:49:31 Arc浏览器新增搜索服务Arc Search</li> 
 <li>00:50:51 中国首个Sora模型Vido发布</li> 
 <li>00:52:00 苹果允许游戏模拟器上架，Delta, Gamma, PPSSPP, RetroArch成热点</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 118 OpenAI&#x53D1;&#x5E03;GPT-4o: &#x66F4;&#x5FEB;&#xFF0C;&#x66F4;&#x771F;&#xFF0C;&#x66F4;&#x4FBF;&#x5B9C;&#xFF01;</title>
        <link>https://justinyan.eth.limo/8E08E093-97CF-4CF0-9688-AFB0ECA7B56D/</link>
        <guid>https://justinyan.eth.limo/8E08E093-97CF-4CF0-9688-AFB0ECA7B56D/</guid>
        <pubDate>Wed, 15 May 2024 22:25:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/05/Podcast-Cover-v118_v2.png" alt="" /></p> 
<p>北京时间5月13日凌晨1点，OpenAI发布了新的统一多模态模型(Omnimodel): GPT-4o，由CTO Mira Murati主持。现场演示了延迟更低的新模型令人惊艳的实时语音对话功能，演示现场不仅近似真人对话般流畅，还加入了各种不同的语调、情感支持。</p> 
<p>iPhone版还支持让GPT-4o通过手机摄像头进行视觉识别，演示了GPT-4o帮助解决在白纸上手写的数学题。</p> 
<p><em>P.S.本期Justin还是使用iPhone录音，另外我们有一阵子没翻车啦，这次自力的录音出了点问题，前26分钟只能使用备份录音顶上😂请各位听众姥爷们多多包涵</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:02:02 再申OpenAI的使命</li> 
 <li>00:05:42 OpenAI Mac版发布</li> 
 <li>00:10:22 Omnimodel统一多模态模型GPT-4o重磅发布！</li> 
 <li>00:15:56 支持50种语言，演示实时翻译</li> 
 <li>00:20:50 苹果要跟OpenAI合作了？</li> 
 <li>00:28:35 发布会后，有更多合作方Demo视频</li> 
 <li>00:34:35 未来随身佩戴的硬件会是很好的AI载体</li> 
 <li>00:42:10 AI如果呈指数爆炸发展，未来会怎样？</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 117 &#x82F9;&#x679C;Let Loose&#x53D1;&#x5E03;&#x4F1A;: &#x6700;&#x5F3A;iPad&#x6709;&#x5565;&#x7528;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/D1A10881-04F0-4200-8893-F6B129312308/</link>
        <guid>https://justinyan.eth.limo/D1A10881-04F0-4200-8893-F6B129312308/</guid>
        <pubDate>Tue, 14 May 2024 13:30:00 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/05/Podcast-Cover-v117_v2.png" alt="" /></p> 
<p>五一后苹果Let Loose新品发布会如期而至，<a href="https://www.apple.com/apple-events/?useASL=true">官方网站</a>可以看到全场回放。</p> 
<p>在这场只有38分钟的简短的发布会里，苹果带来了全新的M4芯片，并且发布了首批搭载该芯片的设备──全新iPad Pro。</p> 
<p>这台新的iPad Pro自然成为苹果目前性能最强的iPad设备，并且还配套升级了新的纳米纹理玻璃，Magic Keyboard以及Apple Pencil Pro。这样一台设备它是要取代Mac吗？</p> 
<p>让我们跟两位主播一起聊聊看吧！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:03 苹果Let Loose新品发布会</li> 
 <li>00:01:28 吹一波Vision Pro</li> 
 <li>00:03:50 iPad Air新升级</li> 
 <li>00:06:04 本期发布重磅: 磅礴的薄iPad Pro大更新！</li> 
 <li>00:08:13 苹果新广告Crush!</li> 
 <li>00:09:49 新iPad Pro重量</li> 
 <li>00:11:51 双层OLED屏幕</li> 
 <li>00:16:16 M4芯片首次登场！</li> 
 <li>00:23:27 iPad Pro电池</li> 
 <li>00:27:21 Apple Pencil Pro</li> 
 <li>00:31:41 新品iPad Pro价格如何？</li> 
 <li>00:35:09 性能很强，但是用在哪里呢？</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x51EF;&#x6587;&#xB7;&#x51EF;&#x5229;73&#x5C81;&#x751F;&#x65E5;&#x7684;101&#x6761;&#x4EBA;&#x751F;&#x5EFA;&#x8BAE;(&#x4E2D;&#x6587;&#x7FFB;&#x8BD1;)</title>
        <link>https://justinyan.eth.limo/C340C563-4B69-4C17-A377-6DF74300280E/</link>
        <guid>https://justinyan.eth.limo/C340C563-4B69-4C17-A377-6DF74300280E/</guid>
        <pubDate>Wed, 01 May 2024 00:03:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/04/KK-101-advices.jpg" alt="" /></p> 
<p>Hi 大家好，</p> 
<p>我是Justin。有一阵子没写文章了，正好看到凯文·凯利(Kevin Kelly)发布了他73岁生日的人生建议，想到我两年前翻译过他<a href="https://justinyan.me/post/4911">70岁生日写的103条人生忠告</a>。当时我发布后没多久，KK就把他写的Blog删了，出版成了书: <em>Excellent Advice for Living: Wisdom I Wish I'd Known Earlier</em>，中文版是中信出版社出版的<a href="https://book.douban.com/subject/36530548/">《宝贵的人生建议: 我希望早点知道的智慧》</a>。</p> 
<p>如今这101条人生建议是他新写的，并不包含在该书中。我如两年前一般翻译如下，希望对读者朋友有所帮助。对原文感兴趣的朋友也可以到KK Blog阅读: <a href="https://kk.org/thetechnium/101-additional-advices/">101 Additional Advices</a></p> 
<hr /> 
<p>6年前，我送给我的孩子们在他们那个年纪我希望获得68条人生建议，以这样的方式来庆祝我的68岁生日。此后每次生日我都会加上一些新的建议，直到我据此写了一整本书。这本书去年出版了，书名是 <em>Excellent Advice for Living</em>。很多朋友告诉我说这本书他们读得很慢，每天读一点。还有几天就是我73岁生日了，照例我又给出了一共101条额外的，我希望自己早点知道的人生建议。这些都是书里没有的，全都是新的。如果你喜欢这些建议，或者能从中读出共鸣，那我的 <em>Excellent Advice</em> 书里还有460条。 这些建议都很好地被整理在了硬装本里，书本是很方便的尺寸，可以随时用来送给比你更年轻的人。 - KK</p> 
<ol> 
 <li>批评一个东西最好的方式是改善它，让它变得更好。</li> 
 <li>每天至少承认一次“我不知道”可以让你变成一个更好的人。</li> 
 <li>不要再去想你的人生目标是什么啦，那个话题太过宏大。反过来，思考你接下来两年应该做什么就好了。</li> 
 <li>要做有效但不可预测的事情。就比如，你要像难以建模和模仿的AI一样去行动，这样你就是不可替代的。</li> 
 <li>无论你和谁拥抱，都要做晚松手的那个。</li> 
 <li>不要把好东西(好酒或昂贵的瓷器)保存起来，就为了几乎不会出现的使用场景，而应该用得上的时候就尽量用。</li> 
 <li>最好的园艺建议: 找到你种得好的东西然后种很多很多。</li> 
 <li>永远不要犹豫投资自己，比如为一个课程，一节课，或者学习一种新的技能而付费。这些小小的花费带来的回报是巨大的。</li> 
 <li>尝试用你的的爱与拥抱来定义自己，而不是恨与拒绝。</li> 
 <li>通过阅读大量的历史，你会发现过去有多么荒唐，这样你也能接受荒唐的未来了。</li> 
 <li>要让一个房间看起来高级(luxurious)，请清掉一些东西，而不是往里面塞更多的东西。</li> 
 <li>父母还在世的时候要多采访他们。一边提问一边作笔记。你会学到很多令人惊讶的事情。你也可以请一个人，把他们的故事写成口述历史，或拍成纪录片，或出一本书。这将是给父母以及你的家庭的一份绝妙的礼物。</li> 
 <li>如果你觉得一个人很普通，那你肯定不太了解他。“普通”只是一种幻觉。你的任务是要发现他们独有的天赋。</li> 
 <li>在购买任何实物(比如纪念品、家具、书、工具、鞋子、设备等)之前，先问问你自己: 这些东西会放在哪里？如果没有能安放这些物品的地方，那就别买。只有先放弃一些东西，才有空间让新的进来。</li> 
 <li>你可以给任何人一个二次机会，但没有第三次。</li> 
 <li>如果有人发消息跟你说他要迟到了，请把他预估的时间加倍来看。如果他说5分钟后到，那就是10分钟;如果说10分钟，那就是20分钟;如果说20分钟，那就是40分钟。</li> 
 <li>多任务同时操作只是一个神话。不要在走路、跑步、登山或开车的时候发消息，停下来一分钟发完再走，不会有人因此多想你一会的。</li> 
 <li>如果你能比世界上任何一个人更投入某件事情，你就能成为这件事情做得最好的人。</li> 
 <li>对自己的过去问一句"假如…会怎样?"(what-if?)只是在浪费时间;对未来问一句"假如…会怎样?"则能鼓舞绝佳的生产力。</li> 
 <li>尝试创作出能鼓舞别人也去尝试创作的艺术或事物。</li> 
 <li>试试每个月一次走不同的路回家，从不同的门进自己的屋子，坐在不同的餐桌椅上。别让生活一成不变。</li> 
 <li>你生活的地方──所在城市和国家──比任何其他因素对你的生活幸福感的影响都大。住在哪里也是你人生中少数几个可以自由选择和改变的事情之一。</li> 
 <li>时不时办一场令人难忘的派对。虽然开销可能比较高，但很久以后，你只会记得这个令人难忘的派对，而不会记得银行卡里还有多少钱。</li> 
 <li>大部份争论其实根本就不是关于争论本身，所以大部份争论也就不可能通过争论来赢得争论。</li> 
 <li>最靠谱的获得成功的方式，就是发明一个属于自己的对成功的定义。先把你的箭射出去，然后再在箭射中的地方画一个靶心，这样你绝对是赢家！</li> 
 <li>要重新装修自己家的时候，可以用大块的纸板做成同样大小的东西来示意，比如用纸板做一个假的橱柜。看到这些相同尺寸的示意摆件时，你很可能会改变原来的想法。而且，纸板只需要剪刀和胶带就能轻松改变。</li> 
 <li>你的人生中至少得有一件事情是你很享受的，即使并不是你擅长的。这就是你的娱乐时光，也是能让你保持年轻的事情。永远不需要因为花时间玩而感到愧疚。</li> 
 <li>对自己而言很重要的事情也是可以改变的，这不是愚蠢的结果，而是智慧的象征。</li> 
 <li>你有5分钟的时间可以对一个新的想法采取行动，不然它就会消失。</li> 
 <li>重要的事情一般不紧急，紧急的事情一般不重要。所以想要把重要的事情解决掉，就不要等到它变成紧急。</li> 
 <li>三种情况你绝对不会应该买太多而后悔: 倒水泥的时候，选购电池的时候，以及为你的派对准备冰块的时候。</li> 
 <li>应对大事所需要的耐心，来自你平时应对小事所培养起来的耐心。</li> 
 <li>不要害怕失败，要害怕平庸。</li> 
 <li>当你事情没有进展卡住了或事情太多被淹没了，请聚焦在能让你的项目往前挪动的最小可行的事情上。</li> 
 <li>在博物馆里，你需要花至少10分钟才能真的看见眼前的艺术品。所以，至少看5件艺术品每件10分钟，而不是看100件艺术品每件30秒。</li> 
 <li>要想获得稳定的满意度，可以努力改善自己过得最差的日子，而不是关注自己过得最好的日子。</li> 
 <li>三个字让你的选择变得更加明智: 看到每个选项都问一句:"…然后呢?"("…and then what?")</li> 
 <li>如果可能的话，每个房间都应该有两面采光。只有一面采光的房间通常更少使用，所以如果做得到的话，还是让每个房间都有两面采光。</li> 
 <li>除非你已经看到会议的议程以及知道该在会上做什么决定了，否则不要接受一个工作会议的邀请。如果这个会议没有任何决定需要你做的，那就更别参加了。</li> 
 <li>你没有义务去喜欢世界上所有人，你也可以憎恨某一个人。但是你需要对所有人──包括你不喜欢的人──保持基本的尊重。</li> 
 <li>如果你发现自己在拖延，不要反抗。直接跳进去，实现100%的拖延。你试着在5分钟内什么也别做，就这样。你绝对做不到。5分钟后，你已经准备好并且渴望要开始工作了。</li> 
 <li>如果你想知道手术做得咋样，别问医生，问护士们。</li> 
 <li>觉得自己不够好(其实没啥好处)，和少关注一点自己(益处多多)之间有深层的区别。(Justin注: 这里是KK的一个word play: thinking less of yourself 和 thinking of your self less)</li> 
 <li>鲜明的观点，清晰的表达，但别太死板是智慧生活的小妙招。要经常自问: 什么可以改变我的想法呢？</li> 
 <li>其实你无法真的变成“你”。想要成为“一种”东西不是单个个体能做到的。这里的悖论就是，你需要全世界所有其他人的存在，来让你变得独特。</li> 
 <li>如果你需要旁人的紧急支援，请直接告诉他们应该做什么。通过给他们具体的任务，你才能让他们从迷茫的旁观者变成有用的助手。</li> 
 <li>我们最常见的错误就是在不重要的事情上做得很棒。</li> 
 <li>不要为一家你不愿意花钱投资的公司工作，因为当你在里面工作的时候，你其实一直在投资你最有价值的东西: 你的时间。</li> 
 <li>快速失败。经常失败。面向未来失败。如果你在失败中越做越好，失败就不是一种耻辱。</li> 
 <li>善举本身就是一种回报。当你行善的时候，人们会质疑你的动机，而且你的善举很快就会被人忘记。但无论如何，都要行善。</li> 
 <li>最佳睡眠助手: 首先，你得变得非常疲惫。</li> 
 <li>无论哪种意义的成功，它背后都有某种非金钱形式的代价。想要维持这种成功，你就得乐于支付这些代价。</li> 
 <li>不要因为你花了很多时间犯下这个错，就继续困在这个错误里。</li> 
 <li>对于小任务来说，最佳动手时机就是现在。</li> 
 <li>如果有人打电话说你被诈骗了，十有八九他们自己就是诈骗犯。直接挂掉就好了。如果担心的话，自己找到源头打过去。(Justin注: 猜测这里源头 source 应该是指被诈骗的东西的源头，比如电话说你的银行卡被盗了，那你就打给银行。)</li> 
 <li>当你尝试完成一件特别困难的事情时，请让你的朋友帮你。</li> 
 <li>要让自己愿意在一开始看起来像个傻子，这样才能在后面显得像个天才。</li> 
 <li>以十年为单位思考，以天为单位行动</li> 
 <li>在这个世界上你能做的最自私的事情就是慷慨对人。你的慷慨将带来十倍回报。</li> 
 <li>尝试找到你愿意跟他一起啥也不干的人，然后经常跟他一起啥也不干。你们的关系越长久，你就活得越久。</li> 
 <li>忘掉钻石这种东西吧，探索在鹅卵石间的隐藏世界，去寻找被其他人忽略的东西。</li> 
 <li>给自己写一个讣告，要那种你自己真正想要的，并且可以每天努力让它实现的。(Justin: 有点像"悼词美德"的意味。)</li> 
 <li>不要在你感到饥饿、愤怒、孤独或疲惫(HALT)的时候做任何重要的决定。你都宕机了，那就停下吧。(Justin注: 这里是KK的word play, HALT是hungry, angry, lonely 和 tired的首字母缩写，也是单词halt停止的意思。所以后一句原文是: Just halt when you are HALT.)</li> 
 <li>其他大部份人对你的期待只是想知道他们被看见了而已，所以告诉他们，你看到他们了。</li> 
 <li>采用不同的方式工作，通常比很努力的工作更高效。</li> 
 <li>当你尝试新事物的时候，不要把它视为"成功/失败"的实验，而是看成"成功/学习如何成功"的实践。</li> 
 <li>当你有一个很好的"为什么"去追求时，没有什么"怎么做"可以阻止你。</li> 
 <li>当你灵感枯竭的时候，出去走两步。一次好的散步可以清空大脑──新的东西就会进来。</li> 
 <li>觉得你现在拥有的已经足够了，是最高形式的财富。</li> 
 <li>教育其实已经过于昂贵。但还是要支付的，因为无知比它昂贵多了。</li> 
 <li>最便宜的心理治疗，是花时间跟能让你开怀大笑的人在一起。</li> 
 <li>永远保持彻底地诚实，但是要把你的诚实作为礼物，而不是武器。你的诚实应该让其他人受益。</li> 
 <li>什么时候表明你正在从事适合你的工作呢？就是别人觉得很痛苦的枯燥的部分，你都觉得很享受。</li> 
 <li>嫉妒是毒药。相反，你应该分享别人成功的喜悦，把别人的成功也当作你的成功。庆祝别人的成功并不需要你付出什么，但却可以提高大家的喜悦，也包括你。</li> 
 <li>越坚持不懈，就越有机会成为幸运的人。</li> 
 <li>要讲好一个故事，你必须给人惊喜，不然那就是一个报告而已。</li> 
 <li>在一场长时间的游戏中，每一小步愈发重要，因为长线来看小步优势能累积出更大的成就。</li> 
 <li>如果你比其他人更幸运，那么请造一张更长的桌子，而不是更高的围栏。</li> 
 <li>很多失败可以带来结束，但更多的失败能带来开始。最艰难的任务就是开始。没有开始就没有完成，所以请让自己擅长开始。</li> 
 <li>请注意讲话的语气。很多时候一个想法被拒绝是因为讲述它的语气不对。谦逊可以掩盖很多瑕疵。</li> 
 <li>当你是正确的时候，你啥也没学到。</li> 
 <li>所有的小事累积起来最终定义了你的人生。请谨慎选择你的日常小事。</li> 
 <li>好奇和暴怒是可以同时存在的，所以，请避免暴怒。(Justin注: KK word play: curious 和 furious)</li> 
 <li>大学并不关注分数的。没人关心你在大学拿了多少分。大学是关于探索的。尝试探索各种事情。</li> 
 <li>诡异但真实: 如果你持续地给予，你会持续的拥有。</li> 
 <li>整理你的城市之前，先清扫你的家门口。</li> 
 <li>决策看起来像不可更改的，像只能单向开的门。但其实大部份决策都是双向的。别被决策困住了，需要的话你随时可以掉头。</li> 
 <li>每一个错误都是一次将错就错的机会。</li> 
 <li>你永远不会遇到一个成功的悲观主义者。如果你也想获得非凡的成就，请变得擅长乐观。</li> 
 <li>除非没人在看，否则你永远不能说它是一场慈善。</li> 
 <li>当你想到某个卑鄙的人时──一个暴君，杀人犯，或施虐者──别希望他们受到伤害。要希望他们欢迎孤儿们到他们家里，分享他们的食物给饥饿的人。要祝他们拥有善良的品质。如此共情，你能增加自己的幸福感。</li> 
 <li>要擅长接受指正而不觉得自己被冒犯了。</li> 
 <li>发明圣诞节与新年之间的那个礼拜是为了让你有充足的时间打磨厨刀，给车子吸尘，以及整理你桌面的文件夹的。</li> 
 <li>成功没有公式，不过失败有两个: 不去尝试，以及无法坚持。</li> 
 <li>我们高估了智力的价值。你的IQ需要与其他美德协作。人生中最重要的事情是没有办法仅通过逻辑达成的。</li> 
 <li>如果你认可某人的工作，你应该告诉他，不过更好的做法是，也告诉他的老板。</li> 
 <li>对于感情的处理，一点耐心可以省去多年的后悔。</li> 
 <li>谦虚是基本上是关于你对自己多幸运有多诚实的反映。</li> 
 <li>进展很慢比没有进展好上一百万倍。</li> 
 <li>崇高的秘诀: 对自己期待很多，对他人期待很少。</li> 
 <li>赢得朋友的方法是，让自己成为一个朋友。</li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 116 &#x4E45;&#x8FDD;&#x7684;&#x65E0;&#x4E3B;&#x9898;&#x95F2;&#x804A;</title>
        <link>https://justinyan.eth.limo/A0FE40D8-42B0-4A42-9BA0-EC8676EEC017/</link>
        <guid>https://justinyan.eth.limo/A0FE40D8-42B0-4A42-9BA0-EC8676EEC017/</guid>
        <pubDate>Wed, 01 May 2024 00:03:01 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/04/Podcast-Cover-v116.png" alt="" /></p> 
<p>各位小伙伴们五一假期愉快呀😁</p> 
<p>本期节目是一次久违的无主题闲聊，两位主播从吐槽时间不够用开始，聊了下近况。顺便还感慨了最近周更的不容易，结果发现如果我们把iPad发布会也算上的话，最近就又周更了😂</p> 
<p>但我台毕竟不是全职在卷的播客，还是悠着点好，细水长流，希望我们能一直这么陪伴各位听友们走下去。</p> 
<p><em>P.S. B站的视频是走Dash协议，但内容应该还是H. 264/H. 265之类的封装</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:03:32 时间不够的永恒话题</li> 
 <li>00:22:30 健身动力</li> 
 <li>00:24:04 越健身精力越充沛？</li> 
 <li>00:30:07 项目合作形式的未来？</li> 
 <li>00:38:13 复古游戏Retro Gaming</li> 
 <li>00:49:26 关于评论</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 115 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;25: Suno&#x8981;&#x7528;AI&#x5199;&#x6B4C;&#x98A0;&#x8986;&#x97F3;&#x4E50;&#x884C;&#x4E1A;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/E6D2D5DD-CB08-4945-B1D4-702A0CAB55A5/</link>
        <guid>https://justinyan.eth.limo/E6D2D5DD-CB08-4945-B1D4-702A0CAB55A5/</guid>
        <pubDate>Tue, 23 Apr 2024 22:00:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/04/Podcast-Cover-v115.png" alt="" /></p> 
<p>又一期科技快乐星球，最近Suno AI写歌服务写出了周杰伦改编爆火，自力也用这个服务做了不少歌还上架了各音乐平台，大家可以感受一下: <a href="https://music.163.com/#/album?id=190351103">LoFi X</a></p> 
<p>苹果今年6月开发者大会WWDC24照常举办，到时候苹果自家的生成式AI是否能够落地呢？我们拭目以待。</p> 
<p>另外Vision Pro，OpenAI发生的事情不少，让我们一起听听看本期快乐星球吧！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:05 音乐AI卷起来了：Suno V3、Udio</li> 
 <li>00:16:35 AI 生成数字人</li> 
 <li>00:20:05 数字分身 &amp; 意识上云</li> 
 <li>00:22:27 苹果相关：传言iOS18支持离线AI</li> 
 <li>00:27:48 App Store 游戏模拟器的上架与下架</li> 
 <li>00:35:14 苹果M系列芯片发现无法修补的漏洞</li> 
 <li>00:38:18 库克：Vision Pro今年将在中国开售</li> 
 <li>00:46:22 Altman 将携 Jony Ive 合作硬件产品</li> 
 <li>00:49:53 Intel 正式推出 AI 芯片 Gaudi 3</li> 
 <li>00:51:43 微软发布 AI 真实语音工具</li> 
 <li>00:55:30 Meta 开源大模型 Llama 3</li> 
 <li>00:56:34 OpenAI 准备几个月内发布 GPT-5</li> 
 <li>00:59:21 Stable Diffusion 核心团队集体离职</li> 
 <li>01:02:40 罗技发布 AI 鼠标</li> 
 <li>01:05:23 Instagram 竞争对手 TikTok Notes</li> 
 <li>01:08:03 Canva 宣布收购 Affinity 创意套件</li> 
 <li>01:09:18 Temu 已经挑起了拼多多的大梁</li> 
 <li>01:10:26 影视相关：Netflix 版《三体》上线</li> 
 <li>01:11:49 《辐射 第一季》、《四月女友》</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>自力在网易云上架的LoFi专辑: <a href="https://music.163.com/#/album?id=190351103">LoFi X</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 114 Vision Pro: &#x4F53;&#x9A8C;&#x4E00;&#x4E2A;&#x6708;&#x540E;</title>
        <link>https://justinyan.eth.limo/946533E1-4F98-4F88-B597-540A59B7906F/</link>
        <guid>https://justinyan.eth.limo/946533E1-4F98-4F88-B597-540A59B7906F/</guid>
        <pubDate>Sun, 31 Mar 2024 22:07:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/03/Podcast-Cover-v114_v2.png" alt="" /></p> 
<p>来填坑啦！</p> 
<p>两位主播的Vision Pro终于都拿到手了，本期节目我们就来聊一下Vision Pro的实际使用体验。</p> 
<p>Vision Pro对近视人群友好吗？<br /> Vision Pro有什么好玩的游戏吗？</p> 
<p>敬请收听走进科学之《枫言枫语》Vision Pro体验篇~</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 Vision Pro 从预定到收货</li> 
 <li>00:06:33 Apple Arcade,Apple TV+,Apple One</li> 
 <li>00:09:16 硬件参数，存储、屏幕和流媒体</li> 
 <li>00:12:00 显示效果，影音感受</li> 
 <li>00:19:01 低延迟和糊糊的摄像头</li> 
 <li>00:21:29 没有合适的镜片体验会大打折扣</li> 
 <li>00:24:38 国产镜片也能扫码，打孔镜片黑科技</li> 
 <li>00:28:03 电池与续航，Xcode 调试的 Bug</li> 
 <li>00:34:37 头戴感受，旅行套装太重了</li> 
 <li>00:40:16 对下一代的期待</li> 
 <li>00:46:50 Vision Pro 目前的软件生态</li> 
 <li>00:51:43 主播们印象最深刻的 App</li> 
 <li>01:04:40 DJ打碟、黑胶、钢琴、吉他</li> 
 <li>01:06:48 VR视频体验</li> 
 <li>01:10:23 总结 Vision Pro 优缺点</li> 
 <li>01:19:08 购买建议</li> 
 <li>01:23:32 期待未来 AI 加持</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 113 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;24: &#x82F9;&#x679C;&#x89E3;&#x6563;Apple Car&#xFF0C;AI&#x53C8;&#x6709;&#x5927;&#x65B0;&#x95FB;</title>
        <link>https://justinyan.eth.limo/F7E074F8-4E3A-400B-8332-E4BE7F7D7A80/</link>
        <guid>https://justinyan.eth.limo/F7E074F8-4E3A-400B-8332-E4BE7F7D7A80/</guid>
        <pubDate>Fri, 29 Mar 2024 23:42:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/03/Podcast-Cover-v113.png" alt="" /></p> 
<p>科技快乐星球来啦，最近科技新闻不少，前有苹果解散Apple Car宣布人员all in AI，后有Sora，Claude 3发布又号称“吊打”GPT-4，再加上马一龙诉讼OpenAI又把自家Grok开源。老黄更是GTC发布会炸场股价飞涨。</p> 
<p>科技圈仿佛又回到前些年摩尔定律生效时期一般突发猛进。</p> 
<p>让我们一起走进科技快乐星球，聊聊近期科技大小事吧！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:55 苹果宣布解散Apple Car团队all in AI</li> 
 <li>00:03:32 Vision Pro开车可能违法</li> 
 <li>00:04:46 Vision Pro虚拟键盘将支持多种语言</li> 
 <li>00:07:04 苹果开源项目迁移到Github</li> 
 <li>00:09:54 苹果面临欧盟巨额罚款</li> 
 <li>00:12:30 M3 MacBook Air发布</li> 
 <li>00:15:07 TikTok面临美国强制剥离法案制裁</li> 
 <li>00:22:38 OpenAI竞争对手推出Claude 3模型</li> 
 <li>00:24:47 马一龙起诉OpenAI</li> 
 <li>00:31:35 SpaceX通过StarLink从太空发推</li> 
 <li>00:34:24 Neuralink脑机芯片患者恢复良好，可以意念控制鼠标</li> 
 <li>00:37:29 Google的大模型Gemini Pro正式开放免费试用</li> 
 <li>00:39:28 Reddit授权Google使用其数据训练，每年6000万美元</li> 
 <li>00:41:12 全球首个AI程序员来了</li> 
 <li>00:42:59 英伟达发布最强AI芯片GB200</li> 
 <li>00:53:27 敬请期待我们专门聊Vision Pro的节目</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 112 &#x5C0F;&#x623F;&#x95F4;x&#x67AB;&#x8A00;&#x67AB;&#x8BED;: &#x804A;&#x4E0B;&#x64AD;&#x5BA2;&#xFF0C;Vision Pro&#x548C;&#x5176;&#x4ED6;</title>
        <link>https://justinyan.eth.limo/1051D508-CAD5-47F2-966F-1BF714EBBEE9/</link>
        <guid>https://justinyan.eth.limo/1051D508-CAD5-47F2-966F-1BF714EBBEE9/</guid>
        <pubDate>Thu, 21 Mar 2024 21:30:58 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/03/Podcast-Cover-v112.png" alt="" /></p> 
<p>粤语串台！</p> 
<p>本期节目是Justin和《小房间》的一期串台，第一次在节目里用非常不正宗的粤语念出我台的slogan😂</p> 
<p>《小房间》的两位主播在广州东山口经营一间黑胶唱片店，店面很小但特别温馨，还有个真·小房间用来做现场音乐直播与播客录制直播，非常有趣。我们也聊了很多关于做播客的心路历程。</p> 
<p>节目录制时Justin也带了Vision Pro到店里，两位试用之后却有截然不同的体验，也是意想不到的。所以大家都有什么不同的体验呢？一起到节目里听听看吧！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场，介绍粤语串台</li> 
 <li>00:01:54 串台节目开始</li> 
 <li>00:03:28 从播客中文榜开始聊起，大家做播客的心路历程</li> 
 <li>00:20:50 使用Vision Pro的感受</li> 
 <li>00:26:06 Trace的体验跟Zenbi有很大不同</li> 
 <li>00:30:58 近视怎么使用Vision Pro</li> 
 <li>00:37:18 Vision Pro上什么App是打动你的？</li> 
 <li>00:50:04 为什么苹果要推出Vision Pro</li> 
 <li>00:55:30 关于AI与未来</li> 
 <li>01:07:25 收尾</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/6142d485d68c1e33b46c7ea6">《小房间》播客 </a></li> 
 <li>DISC JOKER 唱片店 &amp; 播客现场: 广州市越秀区庙前西街 48 号一方东山创意园二楼中庭</li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 111 &#x6C99;&#x4E18;2: &#x4E3B;&#x83DC;&#x4E0A;&#x573A;&#xFF01;</title>
        <link>https://justinyan.eth.limo/87A04DF0-8F42-4D40-B036-FCE73162E24C/</link>
        <guid>https://justinyan.eth.limo/87A04DF0-8F42-4D40-B036-FCE73162E24C/</guid>
        <pubDate>Sun, 10 Mar 2024 23:01:13 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/03/Podcast-Cover-v111.png" alt="" /></p> 
<p>北京时间2024年3月8日，丹尼斯·维伦纽瓦(Denis Villeneuve)的科幻大作《沙丘2》终于在国内上映。这部基于弗兰克·赫伯特(Frank Herbert)的同名科幻小说改编的电影，Part One于2021年上映，我们当时还录了一期节目，从原著小说聊起，讲到电影版对原著小说的超强还原，也讲到沙丘世界的各项设定。非常推荐还没看过第一部的听友们先看第一部，然后再来看第二部电影。</p> 
<p>也非常欢迎小伙伴们找回我们上一期讲沙丘的节目重温一下👉🏻<a href="https://justinyan.me/post/4720">Vol. 50 沙丘 2021</a></p> 
<p>本期节目依然会有剧透分割线，开场后我们会先聊聊对沙丘的主观感受和评分，以及本作的周边背景，剧透预警后我们就开始聊第二部的内容啦。同样我们会聊到原著小说和电影版的一些区别，第二部中导演还是对原著做了不少改编的，但总的来说不妨碍大家体验弗兰克的沙丘世界。</p> 
<p>不知道大家看完电影都有什么感受呢？欢迎在评论区留言告诉我们哦。</p> 
<p><em>P.S. 更正一处口误: 哈克南男爵是由Stellan Skarsgård演的，Christopher是皇帝的扮演者。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场，背景和无剧透版主观评分</li> 
 <li>00:05:51 ==========剧透分割线==========</li> 
 <li>00:06:17 剧透版评分，沙丘设定与第二部观影建议</li> 
 <li>00:13:48 杰西卡喝圣水</li> 
 <li>00:15:25 回收詹米的水</li> 
 <li>00:16:50 对沙丘来说水真的这么珍贵吗？</li> 
 <li>00:21:53 喝圣水情节和小说的差异</li> 
 <li>00:27:32 姐妹会的大计</li> 
 <li>00:36:31 哈莱克回归，原子弹电影情节的改编</li> 
 <li>00:39:06 终于骑上沙虫了！</li> 
 <li>00:42:53 光头菲德罗萨角斗场生死搏斗</li> 
 <li>00:47:10 为什么皇帝会亲自来沙丘？</li> 
 <li>00:48:28 哈克南公爵之死，电影情节的改编</li> 
 <li>00:50:3 大决战之菲德罗萨与保罗单挑</li> 
 <li>00:51:42 为什么要娶公主？</li> 
 <li>00:59:43 弗雷曼人为什么不用反重力装甲？</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>我们聊沙丘第一部的节目: <a href="https://justinyan.me/post/4720">Vol. 50 沙丘 2021</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 110 &#x8BFB;&#x4E66;&#x8282;&#x76EE;: &#x300A;&#x5929;&#x751F;&#x654F;&#x611F;&#x300B;&#x9AD8;&#x654F;&#x611F;&#x4EBA;&#x7FA4;&#x751F;&#x5B58;&#x6307;&#x5357;</title>
        <link>https://justinyan.eth.limo/FD86646B-11A1-4C3E-9978-6C1CB15867C8/</link>
        <guid>https://justinyan.eth.limo/FD86646B-11A1-4C3E-9978-6C1CB15867C8/</guid>
        <pubDate>Mon, 04 Mar 2024 09:20:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/02/Podcast-Cover-v110.png" alt="" /></p> 
<p>读书节目第二期！本期节目我们主要讨论“高敏感人群”，重点书籍是Elaine Aron于1996年出版的《天生敏感》(Highly Sensitive Person)。Elaine Aron是第一位提出“高敏感人群”(Highly Sensitive Person，简称HSPs)这个概念的人，自此以后，相关研究也多了不少。Elaine在25周年的纪念版中也补充更新了一些新的研究成果，感兴趣的小伙伴们可以在amazon上购买英文版阅读。</p> 
<p>不知道正在收听本期节目的小伙伴，你或者你的家人、朋友、伴侣是否属于高敏感人群呢？HSPs又该如何面对这个世界，茁壮成长，充分体验丰富的人生呢？让我们在本期节目中一起探讨吧！</p> 
<p><em>Justin开发的自我测试网页版: <a href="https://hsp.justinyan.app/">你属于高敏感人群吗？-自我测试</a></em><br /> <em>P.S. 节目中有一段Justin说不会用“暴露疗法”形容自己小时候的经历但这个词就是自己说出来的而且说了好多遍，真是现场打脸🤦‍♂️</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:01:27 本期读书《天生敏感》</li> 
 <li>00:03:14 了解高敏感人群的必要性</li> 
 <li>00:10:28 什么是高敏感？</li> 
 <li>00:14:34 关于高敏感自测问卷</li> 
 <li>00:17:00 Justin 制作了测试网页 hsp.justinyan.app</li> 
 <li>00:20:31 23 条高敏感自测题目</li> 
 <li>00:29:22 神经系统的过度刺激和过度唤醒</li> 
 <li>00:35:38 HSP 与基因遗传的关系</li> 
 <li>00:38:18 HSP 有更强的共情能力</li> 
 <li>00:47:18 HSP 像福尔摩斯一样接受信息</li> 
 <li>00:49:56 刺激和唤起会消耗很多精力</li> 
 <li>00:56:06 HSP 是少数派</li> 
 <li>00:59:11 HSP 会自动记住所有的细节</li> 
 <li>01:08:15 HSP 更容易受童年记忆的影响</li> 
 <li>01:14:55 重构你的生活，改变对过去的看法</li> 
 <li>01:16:10 负面情绪的影响更大</li> 
 <li>01:23:39 学会做自己的父母，爱自己</li> 
 <li>01:30:38 HSP 的社交、工作和亲密关系</li> 
 <li>01:33:54 冥想和正念练习很有益</li> 
 <li>01:37:58 非高敏感、钝感、韧性</li> 
 <li>01:40:01 《活出生命的意义》作者的故事</li> 
 <li>01:45:44 作者补充：高敏感的4个特质 DOES</li> 
 <li>01:55:08 尾声</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>Justin开发的自我测试网页版: <a href="https://hsp.justinyan.app/">你属于高敏感人群吗？-自我测试</a></li> 
 <li>节目中提到的书: 
  <ul> 
   <li><a href="https://book.douban.com/subject/25858882/">《天生敏感》</a>👍推荐</li> 
   <li><a href="https://book.douban.com/subject/36361935/">《敏感与自我》</a>👍推荐</li> 
  </ul> 
  <ul> 
   <li><a href="https://book.douban.com/subject/5330333/">《活出生命的意义》</a>(👍推荐，非高敏感主题)</li> 
  </ul> 
  <ul> 
   <li><a href="https://book.douban.com/subject/4737101/">《追究幸福》</a>(👍推荐，非高敏感主题)</li> 
   <li><a href="https://book.douban.com/subject/35576148/">《共情的边界 : 高敏感的你，如何活得更自在》</a>(还可以)</li> 
   <li><a href="https://book.douban.com/subject/30337311/">《多向思考者 : 高敏感人群的内心世界》</a>(另一个角度)</li> 
   <li><a href="https://book.douban.com/subject/35436705/">《高敏感人士的幸福清单》</a>(较易读)</li> 
   <li><a href="https://book.douban.com/subject/36110264/">《细腻的人：高敏感人群如何摆脱精神内耗》</a>(较易读)</li> 
   <li><a href="https://book.douban.com/subject/36441949/">《当你开始爱自己，全世界都会来爱你》</a>(接地气)</li> 
   <li><a href="https://book.douban.com/subject/27125070/">《高敏感是种天赋》</a>(还行吧)</li> 
  </ul> </li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 109 &#x4EBA;&#x7C7B;&#x5B66;&#x535A;&#x58EB;&#x8001;&#x80E1;&#xFF1A;&#x91CD;&#x5EFA;&#x5F53;&#x4E0B;&#xFF0C;&#x8FC8;&#x7406;&#x8FC7;&#x5F80;</title>
        <link>https://justinyan.eth.limo/30E09175-B2F5-47D0-AB95-5401C22B1BE2/</link>
        <guid>https://justinyan.eth.limo/30E09175-B2F5-47D0-AB95-5401C22B1BE2/</guid>
        <pubDate>Mon, 26 Feb 2024 00:11:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/02/Podcast-Cover-v109_v2.png" alt="" /></p> 
<p><em>本期节目的标题来自我们录制的地点“迈理咖啡”的slogan:重建当下，迈理过往。“迈”字在潮汕话中是“不要”的意思，有着放下过去，面向未来的寓意。</em></p> 
<p>各位好，我台好久没做纯人文向的节目啦，今天我们邀请到中大的人类学博士老胡，跟我们录一期“人类学”的故事。</p> 
<p>“人类学”这三个字大家都认得，但究竟何为人类学呢？考古算吗？历史算吗？胡博士又是如何选择了学科跨度极大的博士方向呢？在她过去的求学之路上，发生过什么有趣的故事呢？非洲养鸡？桐油考察？所谓田野考察真的有那么浪漫吗？</p> 
<p>让我们跟着本期节目，一起探索人类学的奥妙吧～</p> 
<p><em>P.S. 更正一处口误：节目中提到的《天真的人类学家》考察的地方在非洲喀麦隆，不是肯尼亚。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:02:13 嘉宾用方言自我介绍</li> 
 <li>00:05:29 何为“人类学”？</li> 
 <li>00:06:20 旧金山读研: Social Entrepreneur Management</li> 
 <li>00:17:44 在坦桑尼亚养鸡🐔？</li> 
 <li>00:24:08 田野调查跟《天真的人类学家》里写的一样精彩吗？</li> 
 <li>00:28:12 田野调查像做侦探？</li> 
 <li>00:32:09 老胡的田野调查：桐油</li> 
 <li>00:40:45 田野调查期间有没有遇到令人绝望的时刻？</li> 
 <li>00:48:03 毕业后不在高校，选择上班与创业</li> 
 <li>00:51:27 服装品牌：花火公园 SparkPark</li> 
 <li>01:02:45 灵魂三问1️⃣: 如果回到20歲，相对当时的自己说什么？</li> 
 <li>01:08:20 灵魂三问2️⃣: 听到“成功”这个词的时候，你想到的人是谁？</li> 
 <li>01:15:58 灵魂三问3️⃣: 如果不需要考虑收入的话，你最想做什么？</li> 
 <li>01:21:09 片尾曲：苏打绿《十年一刻》</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: 胡博士</li> 
 <li>胡博士与小伙伴创立的服装品牌: <a href="https://www.xiaohongshu.com/user/profile/62db99e6000000001f017976">花火公园 SparkPark</a></li> 
 <li>节目中提到的书: <a href="https://book.douban.com/subject/6712255/">天真的人类学家 (豆瓣)</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 108 &#x53F2;&#x8482;&#x592B;&#x8BF4;X&#x67AB;&#x8A00;&#x67AB;&#x8BED;: &#x5FC3;&#x7406;&#x54A8;&#x8BE2;&#x5982;&#x4F55;&#x5E2E;&#x52A9;&#x4E92;&#x8054;&#x7F51;&#x6253;&#x5DE5;&#x4EBA;&#x5BFB;&#x627E;&#x4EBA;&#x751F;&#x610F;&#x4E49;&#x611F;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/E3CA2578-E8DF-415C-9734-DA449C65C6D1/</link>
        <guid>https://justinyan.eth.limo/E3CA2578-E8DF-415C-9734-DA449C65C6D1/</guid>
        <pubDate>Mon, 19 Feb 2024 11:05:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/02/Podcast-Cover-v108.png" alt="" /></p> 
<p>哈喽大家好！本期节目我们邀请到了知名心理学播客<a href="http://steveshuo.com/">《史蒂夫说》</a>的主播Steve，来跟我们聊聊心理咨询如何帮助互联网打工人寻找人生意义感的话题。</p> 
<p>过去二十年，中国互联网行业经历了高速的增长与近几年的挫折，很多互联网打工人在这样风云激荡的时代中感到焦虑，迷茫，不知所措。心理咨询是否能给我们提供帮助，又是如何给我们提供帮助的呢？</p> 
<p>在和Steve的这场对话中，我们发现互联网打工人也好，其他行业的人也好，大家所遇到的问题虽然各不相同，但焦虑情绪背后的精神内核都是一致的。所以请大家跟我们一起，收听这期节目，希望听众朋友们都能有所收获。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 穿越时空的开场</li> 
 <li>00:02:24 开场again</li> 
 <li>00:05:07 关于中文播客榜xyzrank</li> 
 <li>00:08:55 互联网大厂里的心理咨询室</li> 
 <li>00:14:02 心理咨询是怎么一回事？是生病了找医生看病吗？</li> 
 <li>00:23:00 影视作品里的心理咨询</li> 
 <li>00:27:11 是心理咨询关系就不能做朋友？</li> 
 <li>00:33:55 互联网行业起伏对打工人的心理影响</li> 
 <li>00:36:28 裁员与自我价值</li> 
 <li>00:39:50 大厂螺丝钉如何寻找人生意义感</li> 
 <li>00:41:59 世上没有完美</li> 
 <li>00:48:24 互联网提供了信息，也更容易产生比较</li> 
 <li>00:49:31 心理咨询可以提供有力的支持</li> 
 <li>00:53:04 真正的自我成长不是“你应该怎么样”</li> 
 <li>00:55:53 新一代的孩子在爱的包围中成长</li> 
 <li>00:59:37 高敏感孩子的自我成长</li> 
 <li>01:08:02 35岁焦虑与精神追求</li> 
 <li>01:13:17 学会驾驭时间</li> 
 <li>01:17:44 听友提问1: 心理学界是不是越老越吃香？机构工作与独立工作比例？</li> 
 <li>01:19:57 听友提问2: 其他行业的人是否有机会进入咨询行业？有什么建议？</li> 
 <li>01:21:36 听友提问3: 如何运用心理学在职场做高效沟通？比如PAC模型在职场的应用？</li> 
 <li>01:26:00 灵魂三问1: 你会给20岁的自己什么建议？</li> 
 <li>01:27:49 灵魂三问2: 当你听到“成功”这个词的时候，你想到的人是谁？</li> 
 <li>01:31:59 灵魂三问3: 如果不需要考虑收入的话，你最想做什么？</li> 
 <li>01:35:33 不要忘了关注《史蒂夫说》，我们下期节目再见👋</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: Steve史秀雄，<a href="https://www.xiaoyuzhoufm.com/podcast/64379296ff8a107611a67208">《史蒂夫说》</a>播客主播，独立心理咨询师，译有现象级心理学著作《人生十二法则》1&amp;2，著有畅销书《假性亲密关系》、《文学中的人生进化课》，国内首档男性气质主题播客《Man立》的主播，心理学讲师，2017年中国最具影响力的50位心理学者，巴西柔术蓝带，哈雷骑手。</li> 
 <li>嘉宾微博/小红书/即刻：@史蒂夫说，B站/Youtube：播客史蒂夫说，公众号@sxxsteve</li> 
 <li>节目中提到的书: <a href="https://book.douban.com/subject/36558205/">《心理咨询师执业之路》</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 107 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;23: Vision Pro&#x7EC8;&#x4E8E;&#x6765;&#x5566;&#xFF01;</title>
        <link>https://justinyan.eth.limo/97E316E5-CA8D-47ED-B6B9-CE6D8413FAE6/</link>
        <guid>https://justinyan.eth.limo/97E316E5-CA8D-47ED-B6B9-CE6D8413FAE6/</guid>
        <pubDate>Wed, 07 Feb 2024 17:37:03 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/02/Podcast-Cover-v107.png" alt="" /></p> 
<p>2024年2月2日Vision Pro终于在美国发售了。</p> 
<p>最近各种YouTuber, Up主已经第一时间拿到机器各种酷炫挑战，不仅戴着坐地铁，还要挑战24小时不摘下来。Casey Neistat更是戴着Vision Pro踩着他标志性的Boosted Board穿行纽约，这很Casey。</p> 
<p>虽然我们两位主播买的机器还在美国，但我们其实也体验了好几个小时的Vision Pro，就让我们走进本期的科技快乐星球，开启MR新纪元吧！</p> 
<p>P.S. Justin: 本期节目中关于宝可梦公司一段，我(Justin)的问题没有搞清楚GF，任天堂和宝可梦公司的情况，在节目中凭记忆胡说了三家的历史。经听友提醒，本人意识到此举之不妥，诚心向诸位听友道歉。未来会尽力对没把握的内容double check，也非常欢迎听友们指正🙇‍♂️三家的关系可Google关键词获得。<br /> P.P.S. Justin: 新版音源已将宝可梦公司一段删除，以免不熟悉的听友被误导。再次感谢听友的指正🙇‍♂️</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:25 苹果Vision Pro体验如何？</li> 
 <li>00:27:29 库克回应Vision Pro何时在中国上市</li> 
 <li>00:29:50 Why Tim Cook is going All In on the Apple Vision Pro?</li> 
 <li>00:31:39 Vision Pro全球首拆</li> 
 <li>00:32:56 Disney发布转为VR/MR设计的全向跑步机</li> 
 <li>00:34:20 苹果允许欧洲用户使用第三方应用商店侧载(Sideload)</li> 
 <li>00:40:03 Mark Gurman称苹果计划在六月WWDC24发布生成式AI产品</li> 
 <li>00:41:56 苹果发布LLM大模型Ferret</li> 
 <li>00:43:51 Myshell开源AI语音克隆工具OpenVoice</li> 
 <li>00:45:42 Rabbit R1两周爆卖5万台</li> 
 <li>00:48:35 CES2024开幕，参展商超过4000家，AI成绝对主角</li> 
 <li>00:52:14 马斯克声称全球首位人类患者已接受NeuroLink的脑机芯片植入手术，植入者恢复良好</li> 
 <li>00:56:36 宝可梦公司将控告《幻兽帕鲁》侵权？</li> 
 <li>00:58:44 Gamker攻壳将在广州万物破元游戏博物馆举办龙主题游戏展</li> 
 <li>00:59:20 死亡搁浅导剪版登录苹果平台</li> 
 <li>01:00:48 《功夫熊猫4》、《年会不能停！》、《怪物》</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>SwiftUI &#x4E2D; @ObservedObject &#x4E0E; @StateObject &#x7684;&#x533A;&#x522B;</title>
        <link>https://justinyan.eth.limo/B57DE5DF-D351-43BC-9EE4-9F6DABD4C5FA/</link>
        <guid>https://justinyan.eth.limo/B57DE5DF-D351-43BC-9EE4-9F6DABD4C5FA/</guid>
        <pubDate>Sun, 21 Jan 2024 20:09:11 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/01/SwiftUI-Observation.jpg" alt="SwiftUI 中 @ObservedObject 与 @StateObject 的区别" /></p> 
<p>在之前的学习笔记《<a href="https://justinyan.me/post/5678">SwiftUI学习笔记04 – 如何调试SwiftUI?</a>》有提到<code>@ObservedObject</code>容易导致View刷新被重复创建的问题。其中有一部分是我使用不当导致的。今天我们来分析下SwiftUI 中 <code>@ObservedObject</code> 与 <code>@StateObject</code> 的区别。</p> 
<h2>1. 生命周期不同</h2> 
<p>我们先来看一个常规的操作:</p> 
<pre><code class="language-Swift">final class DebugViewModel: ObservableObject {
    @Published var items: [String] = ["001", "002", "003"]
    @Published var count = 5
    
    init() {
        print("DebugViewModel init \(Unmanaged.passUnretained(self).toOpaque())")
    }
}

struct DebugView: View {
    @ObservedObject private var viewModel = DebugViewModel()
    
    var body: some View {
        #if DEBUG
        let _ = Self._printChanges()
        #endif
        NavigationStack {
            DebugViewSubview()
            List {
                ForEach((1...viewModel.count), id: \.self) {
                    Text("\($0)")
                }
            }
            .listStyle(.plain)
            .toolbar {
                ToolbarItem {
                    Button("+1") {
                        viewModel.count += 1
                    }
                }
            }
        }
    }
}

#Preview {
    DebugView()
}
</code></pre> 
<p>非常完美，<code>DebugViewModel</code>只会被创建一次，点<code>+1</code>按钮改变<code>DebugViewModel</code>的属性，自己就跟着刷新了。但如果我们引入一个<code>DebugViewSubview</code>，问题就来了。</p> 
<pre><code class="language-Swift">final class DebugViewSubviewModel: ObservableObject {
    @Published var count = 1
    
    init() {
        print("DebugViewSubviewModel init \(Unmanaged.passUnretained(self).toOpaque())")
    }
}

struct DebugViewSubview: View {
    @ObservedObject private var viewModel = DebugViewSubviewModel()
    
    var body: some View {
        Text("I'm a Subview. Count: \(viewModel.count)")
    }
}
</code></pre> 
<p>然后// 在DebugView的List上面加一个DebugViewSubview</p> 
<pre><code class="language-Swift">NavigationStack {
    DebugViewSubview() // &lt;-这里
    //…
}
</code></pre> 
<p>我们看到<code>DebugViewSubviewModel</code>的创建时机是<code>DebugViewSubview</code>创建的时候。这时候我们再点<code>+1</code>按钮，SwiftUI在刷新时就会倾向于重新创建<code>View</code>。SwiftUI的<code>View</code>都是轻量的<code>Struct</code>，重新创建与绘制理论上应该是很高效的。但是这时候<code>DebugViewSubviewModel</code>也会随着<code>View</code>的创建而被重新创建一遍。每点一次<code>+1</code>按钮就会重新创建一次。</p> 
<pre><code>DebugView: _viewModel changed.
DebugViewSubviewModel init 0x0000000281c129c0
DebugView: _viewModel changed.
DebugViewSubviewModel init 0x0000000281ca44c0
DebugView: _viewModel changed.
DebugViewSubviewModel init 0x0000000281c9bc40
</code></pre> 
<p>在之前的文章中，我们提到可以通过<code>EquatableView</code>或者<code>Equatable</code>来规避部分Subview的重绘。但上面这种用法其实是错误的，我们应该使用<code>@StateObject</code>而不是<code>@ObservedObject</code>。我们把上面所有代码都不变，只改<code>@StateObject</code>:</p> 
<pre><code class="language-Swift">@StateObject private var viewModel = DebugViewSubviewModel()
</code></pre> 
<p>这样再点<code>+1</code>按钮，就不会一直创建了:</p> 
<pre><code class="language-Swift">DebugViewSubviewModel init 0x0000000282318500
DebugView: _viewModel changed.
DebugView: _viewModel changed.
DebugView: _viewModel changed.
</code></pre> 
<h2>2. 什么时候用@StateObject和@ObservedObject？</h2> 
<p>SwiftUI提供了<code>@StateObject</code>, <code>@ObservedObject</code>和<code>@EnvironmentObject</code>这几种常用的Property Wrapper。</p> 
<p>大部分情况下，我们用<code>@StateObject</code>来作为一个<code>View</code>的数据来源，通过<code>@StateObject</code>初始化的Property，即便<code>View</code>多次被刷新，其初始化方法也只会被调用一次。这样我们就不用担心<code>@StateObject</code>里额外添加的各种通知逻辑，异步读写数据逻辑被重复调用。所以上述例子中，<code>DebugView</code>和<code>DebugViewSubview</code>创建的两个<code>ViewModel</code>都只涉及View自身的数据，都应该使用<code>@StateObject</code>而不是<code>ObservedObject</code>声明。</p> 
<p>当我们需要把Parent View的的<code>@StateObject</code>传递给Subview的时候，我们可以在Subview声明<code>@ObservedObject</code>。比如上述例子中，如果<code>DebugViewSubview</code>需要用到<code>DebugView</code>的<code>DebugViewModel</code>，那么我们可以这么写:</p> 
<pre><code class="language-Swift">struct DebugViewSubview: View {
    @StateObject private var viewModel = DebugViewSubviewModel()
    @ObservedObject private var parentViewModel: DebugViewModel
    
    init(parentViewModel: DebugViewModel) {
        self.parentViewModel = parentViewModel
    }
    
    var body: some View {
        Text("I'm a Subview. Count: \(viewModel.count)")
        Text("parentViewModel Count: \(parentViewModel.count)")
    }
}
</code></pre> 
<p>这样，<code>parentViewModel</code>在<code>DebugView</code>中被<code>+1</code>了之后，<code>DebugViewSubview</code>也会跟着变化。这就是<code>@ObservedObject</code>的真正用途: 在不同的<code>View</code>之间传递<code>ObservableObject</code>。</p> 
<pre><code>DebugViewModel init 0x0000000283289dd0
DebugView: @self, @identity, _viewModel changed.
DebugViewSubviewModel init 0x0000000283ce6140
DebugView: _viewModel changed.
DebugView: _viewModel changed.
</code></pre> 
<p>这时候我们发现，有些数据源我希望挂在<code>App</code>上为全局使用，比如一个帐号是否已登录之类的。通常我们会在<code>App</code>上创建一个<code>@StateObject</code>，但如果我有很多个<code>View</code>都需要用到这个数据，那我岂不是得创建很多个<code>@ObservableObject</code>然后一层层传下去？为了方便大家开发，SwiftUI提供了<code>@EnvironmentObject</code>。用于在<code>View</code>层级上传递数据。比如一个典型的SwiftUI App入口:</p> 
<pre><code class="language-Swift">@main
struct SomeApp: App {
    @StateObject private var appInfo: AppInfo
    
    init() {
        self._appInfo = StateObject(wrappedValue: AppInfo.shared)
    }
    
    var body: some Scene {
        WindowGroup {
            MainView()
                .environmentObject(appInfo) // &lt;-- 这里
        }
    }
}
</code></pre> 
<p>在上述代码中，我把<code>appInfo</code>通过<code>.environmentObject()</code>传递给了<code>MainView</code>，这样它的所有Subviews都可以共享这个<code>appInfo</code>实例。只需要在<code>MainView</code>中这样写:</p> 
<pre><code class="language-Swift">import SwiftUI

struct MainView: View {
    @EnvironmentObject private var appInfo: AppInfo
    // …
}
</code></pre> 
<p>这样就能获得由<code>App</code>全局负责管理生命周期的<code>appInfo</code>。<code>MainView</code>的Subviews如果也想用到，只要依法炮制即可。</p> 
<h2>3. 新的 @Observable Macro</h2> 
<p>在WWDC23中，Apple推出了SwiftUI 5的新特性，用<code>@Observable</code>宏代替了<code>@ObservedObject</code>与<code>@Published</code>声明。我们可以把上面<code>DebugViewSubview</code>的代码改写为:</p> 
<pre><code class="language-Swift">// 这里用 @Observable 声明整个类
@Observable final class DebugViewSubviewModel{
    var count = 1 // &lt;-- 这里删掉了之前的 @Published

    @ObservationIgnored // &lt;-- 不需要发出变更的通知用 @ObservationIgnored 修饰
    var propertyWontSendWillChange = 0
    
    init() {
        print("DebugViewSubviewModel init \(Unmanaged.passUnretained(self).toOpaque())")
    }
}

struct DebugViewSubview: View {
    @State private var viewModel = DebugViewSubviewModel()
    // …
}
</code></pre> 
<p><code>@Observable</code>是一个Macro，在Xcode 15中我们可以通过<code>Editor -&gt; Expand Macro</code>来看这它生成了什么代码，在此之前，我们需要确保有<code>import Observation</code>。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/01/observable-macro.png" alt="" /></p> 
<p>可以看到生成的代码很简单，<code>_$observationRegistrar</code>用来保存监听变化的对象，当<code>@ObservationTracked</code>属性发生变化时回调给监听者。<code>func access&lt;Member&gt;()</code>是getter，<code>withMutation&lt;Member, MutationResult&gt;</code>是setter。然后还让<code>DebugViewSubviewModel</code>遵循了<code>Observation.Observable</code>协议。</p> 
<p>我们展开<code>@ObservationTracked</code> Macro可以看到:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2024/01/ObservationTracked-v2.png" alt="" /></p> 
<p>每个<code>@ObservationTracked</code> property会生成一个<code>private</code> property，getter/setter用的就是上面那两个，从而实现监听和通知。</p> 
<p>使用时我们改用<code>@State</code>代替<code>@StateObject</code>，如果是<code>@Binding</code>类型的，就用<code>@Bindable</code>声明。比如:</p> 
<pre><code>struct DebugViewSubview: View {
    @Bindable private var viewModel = DebugViewSubviewModel()
    // …
}
</code></pre> 
<p>这些Macro的更新是有限制条件的: SwiftUI 5 only。所以如果你打算开发只支持 iOS 17 以上的 App，那就可以把所有的 <code>@StateObject</code> 全部替换为 <code>@Observable</code> Macro实现了。</p> 
<p>但经过我的测试，如下声明的<code>DebugViewSubview</code>，因为<code>DebugViewSubviewModel</code>的Property Wrapper从<code>@StateObject</code>改为<code>@State</code>了，也就失去了<code>@StateObject</code>只会创建一次的生命周期管理特性。于是每一次Parent View的<code>+1</code>按钮点了，<code>DebugViewSubviewModel</code>就会被重新创建，跟我们使用<code>@ObservedObject</code>声明一样。</p> 
<pre><code class="language-Swift">@Observable
final class DebugViewSubviewModel {
    var count = 1
    
    init() {
        print("DebugViewSubviewModel init \(Unmanaged.passUnretained(self).toOpaque())")
    }
}

struct DebugViewSubview: View {
    @State private var viewModel = DebugViewSubviewModel()
    //…
}
</code></pre> 
<p>上述声明的代码，在Parent View里的<code>+1</code>按钮被按下以后，<code>DebugViewSubviewModel</code>会被不断创建。</p> 
<pre><code>DebugView: @dependencies changed.
DebugViewSubviewModel init 0x00000002814eb7a0
DebugViewSubview: @self changed.
DebugView: @dependencies changed.
DebugViewSubviewModel init 0x000000028149a7c0
DebugViewSubview: @self changed.
</code></pre> 
<p>目前我没有找到什么好办法来规避使用<code>@Observable</code>下Subviews的重绘与标记为<code>@State</code>的ViewModel的重建，只能说这种刷新是设计如此。</p> 
<p>综上所述，现状我还是使用<code>@StateObject</code>为主，如果未来要迁移到<code>@Observable</code> Macro我就得想办法解决Subviews里的<code>ViewModel</code>会一直被重新创建的问题。比如说，以后所有的<code>ViewModel</code>都需要跟<code>View</code>的生命周期分离，不可以由当前<code>View</code>来创建，而是谁能决定它被刷新，就由谁来创建。</p> 
<p>比如<code>DebugViewSubview</code>它的<code>ViewModel</code>就交给<code>DebugView</code>来创建，这样它就不会因为<code>View</code>被刷新而频繁init。但是这样也不好，因为<code>DebugViewSubview</code>往下可能还有Subviews呢？我要把所有的Subviews ViewModel全部提到最上面一层来吗？用<code>Environment</code>确实可以做到，但我也不知道这样是否合理。</p> 
<p>简单来说，SwiftUI 5这次带来的<code>Observation</code>升级，是直接把在<strong>View的生命周期内只会创建一次的@StateObject</strong>特性给砍掉了，必然会对我们原有的设计与写法产生影响。另一个方面想，也许是我们熟悉的MVC/MVVM不适合SwiftUI的设计理念，探索TCA架构能提供一个新的解决方案呢？</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 106 &#x8BFB;&#x4E66;&#x8282;&#x76EE;&#x300A;&#x91D1;&#x699C;&#x9898;&#x540D;&#x4E4B;&#x540E;: &#x5927;&#x5B66;&#x751F;&#x51FA;&#x8DEF;&#x5206;&#x5316;&#x4E4B;&#x8C1C;&#x300B;</title>
        <link>https://justinyan.eth.limo/D7DD1135-BC8B-435D-B9B9-3FEE24A1C6FF/</link>
        <guid>https://justinyan.eth.limo/D7DD1135-BC8B-435D-B9B9-3FEE24A1C6FF/</guid>
        <pubDate>Sun, 07 Jan 2024 21:21:48 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2024/01/Podcast-Cover-v106.png" alt="" /></p> 
<p>2024年的第一期节目，也是我们第一期正式的读书系列节目。一直很想做读书节目但可能过于期待反而导致无从下手，到现在连系列名字都没想到。</p> 
<p>但无论如何总算是踏出第一步了，值得庆幸。本期节目我们聊的是郑雅君2023年出版的《金榜题名之后: 大学生出路分化之谜》一书。本书是作者根据她在复旦大学社会学系的硕士论文延展而成。作者访谈了复旦与清华两所国内知名高校共62名学生，探讨了中国大学生毕业出路的话题。根据大学生出身的不同，进入大学这个新的场域之后适应程度的不同，郑雅君提出了“掌控者模式”与“直觉依赖模式”两种不同的应对类型。</p> 
<p>两位主播虽已大学毕业多年，但读到本书依然有很多感同身受之处。不知听众朋友中有多少是还在上学，或者在大学时期也遇到过同样的困惑呢？当时的自己是如何应对的呢？欢迎大家在评论区留言跟我们讨论。</p> 
<p>同时本期节目也是我们的第一期正式的读书系列节目，也非常期待大家留言告诉我们你们对这个系列的看法，或者有什么期待我们聊的书，也欢迎推荐给我们。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:55 本期讨论书籍: 郑雅君-《金榜题名之后》</li> 
 <li>00:09:13 考上大学不是结束，而是进入迷宫的开始</li> 
 <li>00:17:37 迷宫的三条出要出口</li> 
 <li>00:21:44 出身对大学生在大学生活中的影响</li> 
 <li>00:44:13 直觉依赖者 vs 目标掌控者</li> 
 <li>00:47:27 不同模式的转变</li> 
 <li>00:56:12 驱动力的不同，意义感的不同</li> 
 <li>01:05:24 寒门子弟可以做些什么</li> 
 <li>01:17:05 相关启发</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>节目中提到的其他书: <a href="https://book.douban.com/subject/35929434/">《毫无意义的工作》</a>、<a href="https://book.douban.com/subject/35193637/">《柏林日记》</a>、<a href="https://book.douban.com/subject/26418475/">《逃避自由》</a>、<a href="https://book.douban.com/subject/33440205/">《你当像鸟飞往你的山》</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x521B;&#x9020;&#x6211;&#x6240;&#x70ED;&#x7231;&#x7684;&#x751F;&#x6D3B; - Justin&#x27;s 2023</title>
        <link>https://justinyan.eth.limo/BC1B18A0-E33A-493A-9782-ECA5D312CC2B/</link>
        <guid>https://justinyan.eth.limo/BC1B18A0-E33A-493A-9782-ECA5D312CC2B/</guid>
        <pubDate>Wed, 03 Jan 2024 21:41:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023.jpg" /> 
<p>最近刚读完坂本龙一生前的最后一本书《我还能看到多少次满月升起》。这句话出自电影《遮蔽的天空》，坂本龙一为它制作过配乐。原文是这样：</p> 
<blockquote> 
 <p>因为不知死何时将至，我们仍将生命视为无穷无尽，取之不竭的源泉。然而，一生所遇之事也许就只发生那么几次。曾经左右我们人生的童年回忆浮现在心头的时刻还能有多少次呢？也许还能有四五次。目睹满月升起的时刻有还能有多少次呢？或许最多还能有二十次。但人们总是深信这些机会将无穷无尽。</p> 
</blockquote> 
<p>我一边听坂本龙一最后一张专辑《12》一边写下这些文字。他无疑是一位活得十分潇洒的，英雄式的艺术家。我羡慕他的才华与勇敢与时代机遇，就像我喜欢的作家村上春树。在读到“我还能看到多少次满月升起”这样哀伤、不舍的文字时，我想到的是《挪威的森林》中那句：</p> 
<blockquote> 
 <p>死不是生的对立面，而是作为生的一部分永存下去。</p> 
</blockquote> 
<p>这样讲或许有些大言不惭，但我并不想成为坂本龙一或村上春树，我是我就足够了。这份觉悟也是最近一年才意识到的。</p> 
<h2>一、2023年发生的一些事情</h2> 
<h3>1. 发布了21篇博客文章，共计64363个汉字</h3> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2023/12/Justins-Reads-2023.jpg" /> 
<ul> 
 <li>读书总结请看这里：<a href="https://justinyan.me/post/5845">枫影夜读 – Justin 的读书 2023</a></li> 
</ul> 
<p>今年在对待自己的文字这件事情上更放松了，写博客也谈不上什么严肃作品，能写作，就很好。</p> 
<p>今年<a href="https://justinyan.me/post/5790">《每个人每天都只有24小时，希望我的选择真的是我的选择》</a>这篇文章受到不少读者的好评，很开心。这篇文章有一万多个汉字，写作时我对其受欢迎程度并没抱太大期望，结果是出乎我意料的。</p> 
<p>年初的个人理财实践系列也是我阅读多本经典读物后的想法。具体的理财策略有其适应的阶段，世界上不存在永远可行的单一策略。但底层逻辑是相通的，选择相信什么不相信什么是每个人的自由，我选择乐观地面对未来。</p> 
<h3>2.播出25期播客节目，共计25小时24分38秒</h3> 
<p>一年播出24期的目标达成了，不过我我没有特别在意这个数字，因为今年在播客这件事情上发生了更多让我开心的事情。</p> 
<ul> 
 <li>10月底获得苹果Podcasts首页推荐</li> 
 <li>9月底获得苹果Podcasts“来自朋友的推荐”专题推荐</li> 
 <li>12月初获得苹果Podcasts科技分类精选推荐</li> 
 <li>11月底在小宇宙获得一次首页“OpenAI到底发生了什么？”专题推荐</li> 
 <li>10月中在小宇宙突破10000订阅人数</li> 
 <li>3月初在小宇宙获得一次锋芒榜上榜</li> 
</ul> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023-podcast-v1.jpg" /> 
<p>如果把这些Highlights当作追求目标，那么我们跟其他节目相比差距甚远。头部的播客节目在小宇宙上已经接近八十万订阅数，数字是我们的八十倍，今年新开的播客用几个月时间就过小宇宙一万订阅比比皆是。</p> 
<p>所以跟别人比较是无止尽的，没必要自找烦恼。能有不错的数据与被推荐当然很好，这也是对我们节目的认可。但更重要的是，能有节目播出，能收到听友们的留言与支持，能认识更多有趣的人，这才是我们做播客的初衷。今年在线下参加活动的时候，有不少朋友说收听了我们的节目，每次听到这样的说法我就很开心。</p> 
<p>感谢收听我们节目的各位朋友们，我们在节目里说的那句是真心的：“你们的支持就是我们更新的动力！”</p> 
<p>今年我们的苹果开发者大会WWDC系列也一如往年跟老朋友声动活泼旗下的《科技早知道》串台，科早的这期上了小宇宙最热榜，四舍五入我台也算上榜了哈哈。感谢声动活泼的小伙伴们对我台的支持，年底我们还参与了《声动早咖啡》“早起仪式”的活动。凯文·凯利来中国宣传新书也是声动活泼的小伙伴告诉我的，因为我去年曾翻译过他的博客<a href="https://justinyan.me/post/4911">《凯文·凯利70岁生日写的103条人生忠告（中文翻译）》</a>。凯文·凯利把他写的这些建议出了书，今年中信出了简体中文版，安排了他在中国的行程，声动活泼也制作了一期访谈。希望未来有一天我台也能参与到这样的活动呀。</p> 
<p>今年还邀请了很多有意思的嘉宾来我台录节目，在德国的余晟讲述了<a href="https://justinyan.me/post/5561">在德国生活的故事</a>，数码荔枝的创始人荔枝给我们讲述了<a href="https://justinyan.me/post/5573">在国内做正版软件发售平台是怎样一种体验</a>，开发了YaoYao跳绳的独立开发者家浩也带来<a href="https://justinyan.me/post/5713">在合肥的独立开发生活</a>，还有在昆明的的新乐，<a href="https://justinyan.me/post/5764">他开发了OCR扫描识别神器白描App</a>，以及作为数字游民的来自香港的开发者Harry，<a href="https://justinyan.me/post/5785">他开发了Sorted这款效率工具，也跟我们聊了带孩子做数字游民的体验</a>，非常有趣。</p> 
<p>和是光诗歌公益组织的两位创始人<a href="https://justinyan.me/post/5753">康瑜、田田的节目</a>也是意外的收获，这是我们第一次聊公益的话题，收获颇丰。</p> 
<p>中秋节还与Gamker攻壳的创始人聂俊一起录了一期节目：<a href="https://justinyan.me/post/5797">Vol. 99 Gamker攻壳聂俊: 万物破元，太阳照常升起</a>。我是Gamker的忠实观众，很早就在YouTube关注这个讲主机游戏的频道。虽然同在广州，但直到今年才有缘相见，缘分真是奇妙。</p> 
<p>感谢所有参与我台录制的小伙伴们，能通过播客与大家建立连接的感觉很棒，明年继续连接更多的人，打开更大的世界。</p> 
<h3>3. Re:Play Newsletter暂别</h3> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023-replay.jpg" /> 
<p>今年因为编辑部成员各有各的事情，我们的Newsletter停留在了三月份的第二十六期。暂时还没有重启的打算，也因为事发突然，一直没来得及做一个正式的暂别，抱歉。</p> 
<p>写音乐Newsletter是我之前没想过的事情。如今我每天寻找好音乐好唱片的习惯，也要感谢参与这份Newsletter带来的极大帮助。</p> 
<p>正好最近读到坂本龙一的书，就分享他在纽约时为常去的 Kajitus 餐厅而 curated 的 Playlist 在这里吧:</p> 
<ul> 
 <li><a href="https://music.apple.com/us/playlist/the-kajitsu-playlist-justins-version/pl.u-DdANvpatl8AXWZ">Apple Music US</a></li> 
 <li><a href="https://open.spotify.com/playlist/2YY3rAwm9tldNhlBmuMqgY">Spotify</a></li> 
</ul> 
<h3>4. 负责的团队从只负责iOS到加入Android平台</h3> 
<p>今年我负责的客户端团队多了一个新的任务：以前只做iOS，现在也要负责Android平台。</p> 
<p>虽然我也做前端，也写的Node后台，但我的全职工作还是一直以iOS为主。Android是我不熟悉的客户端平台，所以要整合iOS与Android团队对我来说无疑也是一种挑战。</p> 
<p>如果是个人作品的多平台开发这不算什么，难的是在一个大公司的App上多个平台，压力扑面而来。过渡阶段我忙得不可开交，结果却收效甚微，有一阵子一筹莫展，甚是焦虑。</p> 
<p>但好在我的内心很清楚，这些问题虽然艰难，但假以时日都是可以被解决的，一时半会还不适应而已。如今团队已逐渐转入正轨，虽然与预期结果差距仍在，但只要能一点点往前跑就可以了。</p> 
<h3>5. 坐了十四趟飞机跑了九个城市</h3> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023-flights-v1.jpg" /> 
<p>今年飞得多，上海飞了三次，日本飞了两次，还有苏州和杭州。</p> 
<p>四月受苹果邀请到上海加速器做SwiftUI技术分享。因为工作的关系，苹果在上海的加速器我去过好几次，但每次去都是听别人分享或者参加Lab，这是我第一次以分享者的身份踏进这个场地，是一次非常特别的体验。一起分享的还有Sorted App的<a href="https://twitter.com/harryworld">Harry</a>，我的播客搭档<a href="https://twitter.com/hzlzh">自力</a>，以及像素天气的Eric。</p> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023-swiftui-presentation-v1.jpg" /> 
<p>这趟上海之行也让我在现场偶遇了不少老熟人，很意外。同时也认识了一些在杭州上海工作的开发者们，线下见面聊天的感觉真好。也许是羡慕上海杭州的开发者朋友们可以经常聚到一起，八月份我在广州迈理咖啡和一群开发者朋友们<a href="https://justinyan.me/post/5774">办了一场小小的聚会</a>。</p> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2023/08/developers_meetup_04.jpeg" /> 
<p>九月份我的社交活动爆发的开始。这个月应苹果的邀请，到杭州浙大出席“移动应用创新赛”的现场。这是我第一次到杭州，也是第一次出席这样的比赛场合。61对这个比赛是很熟悉了，他做了多年的导师和评委，多得<a href="https://twitter.com/liuyi0922">61</a>带路，我们那天看了很多天马行空的作品。好些作品完成度都很高，难以想象是完全由一两个学生自己开发完成的，让我们这些从业者都自愧不如。</p> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023-hangzhou-juesai.jpg" /> 
<p>我和 <a href="https://twitter.com/designedbyclu">Clu</a> 一起从广州出发，恰逢台风天，刮跑了我们好几趟航班，直到最后在机场还担心有没有可能被临时取消。幸好最后成行，这趟旅途太值了。当晚我们就跟 61 还有 Dtd Playlist 的 <a href="https://twitter.com/DTD_STUDIOS">Ace</a> 一起聊到了凌晨 2 点。我还线下第一次见到谜底的顶梁柱 <a href="https://web.okjike.com/u/CB75B4EC-FE9C-47A6-BBE0-F1F6FF853924">Alen</a>，我们居然有很多共同喜爱的电影。</p> 
<p>杭州之行改变了我很多原有的想法，不仅因为学生们的热情与创新，也因为在这个场合里认识到各种各样厉害的人。学生们很厉害，创业的企业家们也都很厉害，这给我的冲击挺大的。离开杭州之前也跟玉鸟集的小伙伴们成功面基，于是这份冲击又叠加了一层独立开发者们的热情。虽然认识<a href="https://twitter.com/tualatrix">图拉鼎</a>挺多年，但这次居然也是第一次面基。同时还有Grow App 的 <a href="https://twitter.com/creativewang">Allen</a>，ByteTalk 播客的 <a href="https://twitter.com/_limboy">Limboy</a>，LEMO FM 的<a href="https://web.okjike.com/u/f305e5ee-961c-4eee-82ef-2340ee72aeea">启师傅</a>，新晋村民<a href="https://twitter.com/strrlthedev">STRRL.gpt</a>。现场看到大家“疯狂星期四”的状态是挺冲击的。</p> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023-hangzhou-v1.jpg" /> 
<p>有冲击是好事，说明我在扩宽原有的认知，这过程难免会有失落和迷茫，这些都是很好的自我分析的机会。这份分析的结果，是我希望融合我身上的多份identies，在对外面介绍的时候可以大方地介绍全面的自己。</p> 
<p>九月从杭州回来以后，几乎每周都有不同的朋友来找我。能见到老朋友，认识新朋友我很开心，不过确实有点密集。当时只觉得凑巧，现在想来还是因为那段时间不管参加开发者活动，组织开发者活动，还是发表<a href="https://justinyan.me/post/5790">《每人每天只有24小时》</a>那篇文章，可能都集中在九月产生效应了。这也是缘吧。</p> 
<p>比如今年跟<a href="https://web.okjike.com/u/F95D6615-27B1-4AFC-9970-212A0AFB72E1">Xmind的孙方“园长”</a>就挺有缘。四月才听他和<a href="https://web.okjike.com/u/c28c4303-ea82-4043-9938-cc6ed14f83d0">孟岩</a>的一期节目：<a href="https://www.xiaoyuzhoufm.com/episode/6434f4e59361a4e7c33accad">E24 孟岩对话孙方：真实，自有万钧之力 - 无人知晓</a>，没多久就见到了孙老板，再没多久又见到了孟岩。作为《有知有行》的忠实用户与孟岩播客的听众，我还是很开心的。今年读《正见》与《观呼吸》两本书，正是来自二位的推荐。</p> 
<p>还有个缘分来自<a href="https://twitter.com/TheYisiLiu">Yisi</a>，我们小时候都是单机游戏玩家，一见如故。因为Yisi的关系我还认识了<a href="https://space.bilibili.com/13297724">Gamker攻壳</a>的聂俊聂师傅，我们还录了一期播客: <a href="https://fyfy.fm/episode/99">Vol. 99 Gamker攻壳聂俊: 万物破元，太阳照常升起</a>。</p> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023-gamker-v2.jpg" /> 
<p>九月在上海我还见到了友台Anyway.FM的<a href="https://twitter.com/JJYing">JJ</a>，心动的<a href="https://twitter.com/dashhuang">Dash</a>，和小宇宙的<a href="https://web.okjike.com/u/7F566D5A-CB58-4D4C-99CC-0EF2E5A50702">Kyth</a>。都是特别Nice的人，我们聊了很多。我还在小宇宙的主播墙上留下了一张照片。</p> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023-shanghai-v2.jpg" /> 
<p>密集的社交活动对我来说特别消耗能量。每次一天见很多朋友到了晚上我就很崩溃，太累了。于是今年最后一次大型社交活动应该就是国庆假期在东京了。和和<a href="https://twitter.com/tualatrix">图拉鼎</a>，<a href="https://twitter.com/kevinzhow">Kevin</a>, <a href="https://twitter.com/_polchen">Pol</a>, <a href="https://twitter.com/lyricwai">Lyric</a>等小伙伴们，下午在涩谷参观Google办公室，晚上包了条船夜游东京湾。我过去几乎每年都会到东京一趟，但坐船夜游东京湾还是第一次。多亏了推友 <a href="https://twitter.com/tzxdtc10">Tan</a> 打了很多电话帮大家预定。大家嘻嘻哈哈，在船上边吃边聊，中间还登上船顶看夜景，还有小伙伴现场一展歌喉，非常开心。</p> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023-tokyo-v1.jpg" /> 
<p>国庆结束后我的社交活动少了一些但依然在持续。11月初发现我们的播客上了苹果首页的时候，我正好在上海。白天在黑客马拉松现场围观了艺术与编程的跨界组合，气氛超级好，晚上又和 <a href="https://twitter.com/sofish">sofish</a>, <a href="https://twitter.com/hzlzh">hzlzh</a> 聊到凌晨两点多。这是我今年第二次跟朋友聊到凌晨，上一次是在杭州跟61, <a href="https://twitter.com/DTD_STUDIOS">Ace</a>, <a href="https://twitter.com/designedbyclu">Clu</a>一起的时候。孔子曾经曰过: “见贤思齐焉，见不贤而内自省也。”多和优秀的人在一起，自己也能变优秀。不过这些优秀的朋友们啊，大家都太过于优秀了哈哈，以至于有一阵子我挺抑郁的，为什么大家都这么厉害，好像就我一事无成似的。虽然朋友安慰我说“你并不是什么都没有啊，你还有播客啊”。但处于抑郁状态下的我确实听不进去。于是这份随着社交活动的频繁带来的优秀的人的冲击，就成了我后来一个思考的重点：我是一个怎样的人？</p> 
<h2>二、Identity</h2> 
<p>我是一个怎样的人？是今年我试图分析的一个大问题。和<a href="https://justinyan.me/post/5790">这篇文章</a>提到的向内探索一样，这并不是一个容易回答的问题。</p> 
<p>我平时在一家互联网大厂上班，是一个客户端开发Team Leader。</p> 
<p>我也做一个科技类的播客，叫做<a href="http://fyfy.fm/">《枫言枫语》</a>。</p> 
<p>我也是一个独立开发者，开发了 <a href="https://getjustfocus.com/">Just Focus</a> 这个专注类App，也开发了<a href="https://xyzrank.com">播客中文榜</a>这样的服务，还会继续创造更多。</p> 
<p>我有多个不同的 identies。过去这些不同的 identites 之间的张力使我在做自我介绍时往往有种无力感。今年在众多社交活动中我一个很大的收获是：这些不同的部分都是我，我没有必要对一些人讲我的其中一个identity，对另一些人讲我的另一个identity。于是后来再做自我介绍时我都会说：“我平时在大厂上班，业余时间做一个科技类播客叫《枫言枫语》，同时也是一个独立开发者。”有一次我这么讲的时候，对方立马反应说：“好酷哦！”我很开心。</p> 
<p>虽然我不是什么特别厉害的人，我也羡慕今年认识到的很多很厉害的人，他们能做成很大的事情。但我也不需要成为他们，我是我就足够了。这是我今年向内探索最大的一个收获。</p> 
<p>当然这并不意味着我就放弃成长，躺平了。只是在“我就是我”这个大前提下，努力创造我所热爱的生活。</p> 
<p>今年我也不是一直顺风顺水，也有遇到很痛苦很不开心的时候。比如12月至今，先是发烧然后久咳，此病未愈之际，元旦又再次发烧测出来乙流。上一次发烧虽测不出流感还是支原体肺炎，但我太太测出来是甲流，医生又说医院的检测成功率只有80%，那我四舍五入就是甲流乙流轮着来了一遍。可谓运气低到了极点。</p> 
<p>另外认识的人多了也要思考谨慎交友的问题。什么样的人适合什么样程度的交往是一件艺术，并不是容易掌握的技能。人非圣贤，孰能无过。我自己以前也曾干过很蠢的事情，我不能要求所有人都不干蠢事。年轻气盛的时候我是个爱憎分明的人，不在一个频道就不相往来。现在我更倾向于跟大部分人友好相处，不管我们是否作风合得来。这点让我想到读书这件事情。国内的出版社喜欢找网红来写腰封，以前看到这样的腰封我会连书本身也带上三分负面情绪，完全不想去翻它。但后来我看开了，书就是书，网红推荐是网红推荐，跟书本身没有关系。所以跟什么样的人如何相处取决于希望最后达成什么样的结果。喜不喜欢是一回事，能不能合作是另一回事。</p> 
<p>道理我都懂，不过今年也还是遇到了情绪很down的低谷。每次在低谷的时候都非常痛苦，但也要抱着利空出尽就是利好的心态活下去，毕竟已经到谷底了，总不能再往下了吧，以后每一步都是上坡路啊。某种程度上，这些低谷也促进了我的自我认知，应该感谢我遇到的糟糕的事情。</p> 
<h2>三、2024年会怎样？</h2> 
<p>没有人能预测未来，我做个人OKR计划也并不是为了预测。2023年我遇到的非常多的惊喜都是计划外的事情，想必2024年也会充满各种意外。</p> 
<p>今年十月，我的播客《枫言枫语》来到<a href="https://justinyan.me/post/5803">第100期</a>，如同三年前在《<a href="https://justinyan.me/post/4208">Vol. 17 Be a Tough Guy</a>》一样，我在节目中也分享了近期的思考与期待：<strong>创造我所热爱的生活</strong>。</p> 
<p>这句话启发自今年六月我所阅读的美国当代精神医学大师欧文·亚隆(Irvin Yalom)写的《直视骄阳》(Starring at the Sun)一书。在这本书中，他通过自己与来访者的案例，分析人类的“死亡焦虑”以及之相处之道。</p> 
<p>人终有一死，只是我们不知将于何时何地，以何种方式死去。生与死皆非我能选择，人生有太多不受我控制之事。欧文在书中引用了德国哲学家尼采(Friedrich Nietzsche)的一句话:</p> 
<blockquote> 
 <p>Amor fati.</p> 
</blockquote> 
<p>翻译过来是“热爱你的命运”(Love of fate)。但我觉得这个说法有点宿命论的意味，我依然希望对自己的人生保有一些主动性，于是我把它改为：“创造我所热爱的生活”。</p> 
<p>既然我不能控制生，也不能控制死，那就趁我还活着的时候，控制我能控制的部分，更多地开放与连接，创造更多的作品，无论工作、播客、文章，还是App，服务，然后等待意外到来。</p> 
<img class="photo-frame" src="https://justinyan.me/wp-content/uploads/2024/01/my-2023-mic-cafe-v1.jpg" /> 
<p><em>2023.12.20 创建</em><br /> <em>2024.01.03 完成</em></p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 105 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;22: Google Gemini, TGA 2023&#x7B49;</title>
        <link>https://justinyan.eth.limo/F301BC00-1160-4A35-9F3A-9607DBD97CB4/</link>
        <guid>https://justinyan.eth.limo/F301BC00-1160-4A35-9F3A-9607DBD97CB4/</guid>
        <pubDate>Fri, 29 Dec 2023 23:26:51 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/12/Podcast-Cover-v105.png" alt="" /></p> 
<p>Google发布Gemini, Twitter发布Grok，TGA 2023年度游戏大奖，一到年底果然大家都开足马力冲击KPI呀。</p> 
<p>废话不多说，直接进入又快又欢乐的科技快乐星球吧！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>01:28 Google Gemini 狙击 ChatGPT</li> 
 <li>07:07 Rabbit AI 意图取代 App 交互</li> 
 <li>09:26 Pika 体验感受</li> 
 <li>13:06 Grok &amp; 苹果播客登陆特斯拉</li> 
 <li>15:26 苹果相关新闻</li> 
 <li>27:43 广州地铁将禁止电子设备外放</li> 
 <li>30:26 6G 研究正在进行</li> 
 <li>33:19 百年巨头东芝退市</li> 
 <li>35:56 TGA2023 &amp; 游戏相关</li> 
 <li>41:27 影视作品相关</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; - Justin &#x7684;&#x8BFB;&#x4E66; 2023</title>
        <link>https://justinyan.eth.limo/82BAC072-24BF-4B85-B6B6-96E5E5577907/</link>
        <guid>https://justinyan.eth.limo/82BAC072-24BF-4B85-B6B6-96E5E5577907/</guid>
        <pubDate>Fri, 22 Dec 2023 09:44:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/12/Justins-Reads-2023.jpg" alt="枫影夜读 - Justin 的读书 2023" /></p> 
<p>你好，我是 Justin。</p> 
<p>今年是年度读书总结的第三年了，前两年的可以看<a href="https://justinyan.me/post/5361">Justin 的读书 2022</a>和<a href="https://justinyan.me/post/4824">Justin 的读书 2021</a>。今年写单独的书评更少了，懒了很多，这样不好。应该找些时间多练习练习写作才行。</p> 
<p>今年也是全球新冠大流行正式宣告结束的第一年，我的生活与工作都发生了很多事情，尤其是今年下半年。这当然也影响到了我的读书写作的时间分配，说到时间分配，今年我这篇的Blog: <a href="https://justinyan.me/post/5790">每个人每天都只有24小时，希望我的选择真的是我的选择</a>意外地成为今年最受欢迎的文章。去年最受欢迎的是我翻译的<a href="https://justinyan.me/post/4911">凯文·凯利70岁生日写的103条人生忠告</a>。我翻译后不久，凯文凯利就把他的 Blog Post 下掉，集结成书出版了，今年也到中国来宣传他的新书。</p> 
<p>Anyways，今年对我来说是变化很多的一年，而且因为事情集中发生的周期并不长，所以可谓十分剧烈。今年我的生病发烧也挺剧烈，没想到在 2023 年的最后一个月我还得了流感。也挺好，就把过去的霉运留在 2023，期待 2024 会有什么新的好事发生吧！</p> 
<p><em>我读过的书都会在豆瓣上标记(如果豆瓣有)，所以接下来我将以豆瓣的星星表示我的评价。</em></p> 
<p><em>我的评价只代表阅读当下之感受，纯属个人主观臆断，仅供诸君参考。</em></p> 
<h2>一、我的五星好评⭐️⭐️⭐️⭐️⭐️</h2> 
<h3>1. 《漫步华尔街(原书第12版)》 - 伯顿·G.马尔基尔</h3> 
<p><a href="https://book.douban.com/subject/36096815/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/A-Random-Walk-Down-Wall-Street.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36096815/">豆瓣</a> | 投资 | 1973年</p> 
<p>原文标题: A Random Walk Down Wall Street: Including a Life-Cycle Guide to Personal Investing <em>by Burton Malkiel</em></p> 
<p>今年初读了一些投资理财相关的书，总结在<a href="https://justinyan.me/post/5594">个人理财实践01</a>这个系列。可能因为我读的都是统一流派的书，所以感觉大家的理念大同小异。《漫步华尔街》是其中讲得比较细致的一本，不仅讲了价值从哪里来，回顾了历史上多个金融泡沫，也讲了常见的所谓"技术分析"、"基本面分析"都是什么，最终给出作者认为靠谱的投资理论。</p> 
<p>这本书出版于1973年，我所阅读的是第12版。</p> 
<h3>2. 《投资最重要的事》 - 霍华德·马克斯</h3> 
<p><a href="https://book.douban.com/subject/33401129/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/The-Most-Important-Thing-Illuminated.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/33401129/">豆瓣</a> | 投资 | 2011年</p> 
<p>原文标题是: <em>The Most Important Thing Illuminated: Uncommon Sense for the Thoughtful Investor by Howard Marks</em></p> 
<p>霍华德·马克斯(Howard Marks)是一位美国的投资人，早年曾任职于花旗集团(Citigroup Inc.)，担任过花旗副总裁。后来创业成立橡树资本管理(Oaktree Capital Management)。</p> 
<p>这本书是他2011年出版的关于自己投资理念的作品。本作书写风格非常朴实易读，介绍了很多经济学的概念，但一点都不晦涩。他也把有效市场，风险，周期等重要理念用非常平易近人的方式讲了出来。今年初我读了些关于投资理财的书籍，大家写的道理其实大同小异，如果从里面选一本，只读一本的话，我觉得可以读这本。大部分重要的概念作者都在书中讲了，有了这部分基础之后，有兴趣再行阅读其他作品拓展。</p> 
<h3>3. 《邓小平时代》 - 傅高义</h3> 
<p><a href="https://book.douban.com/subject/20424526/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/deng-xiaoping-shidai.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/20424526/">豆瓣</a> | 人物传记 | 2011年</p> 
<p>傅高义(Ezra Vogel)是美国哈佛大学的社会学教授，精通日文，能说汉语，写了不少关于日本与中国的研究作品。1979年日本经济蓬勃之时傅高义还出版了《日本第一》，研究了日本国家与企业成功的秘诀。这本《邓小平传》出版于2011年，原文标题是: <em>Deng Xiaoping and the Transformation of China</em></p> 
<p>仅看本作标题我误以为会是国内一贯的为领导人写作的风格，但全书读下来却非常流畅，视角客观，史料详实可靠。我不知道简体版有多少内容得以保留，但能够被读到的部分已经非常不错，读来酣畅淋漓，大呼过瘾。</p> 
<p>能读到这样的作品时空尺度宏大，历史大事风起云涌的好书，真是相见恨晚。</p> 
<h3>4. 《你当像鸟飞往你的山》 - 塔拉·韦斯特弗</h3> 
<p><a href="https://book.douban.com/subject/33440205/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/03/educated-book-cover-v1-23-03-87-11-49-00.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/33440205/">豆瓣</a> | 人物传记 | 2019年</p> 
<p>2018年美国的Tara Westover写了一本回忆录，名为 Educated （简体译为《你当像鸟飞往你的山》，直译是"受教育"），讲述了作者生于"怪异"且"暴虐"的家庭，从小如何在"家庭学校"中挣扎，凭自己的努力离家上大学，最终进入英国剑桥大学，拿到博士学位的故事。虽然"教育话题"在这本回忆录中非常重要，但比这个"励志"故事更吸引我的，是广义的教育（家庭、社会教育）以及作者与原生家庭之间来回拉扯的关系。</p> 
<p>我的书评👉🏻<a href="https://justinyan.me/post/5626">枫影夜读 #184 《你当像鸟飞往你的山》</a></p> 
<h3>5. 《活着》 - 余华</h3> 
<p><a href="https://book.douban.com/subject/4913064/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/to-live.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/4913064/">豆瓣</a> | 小说 | 1993年</p> 
<p>这部小说是余华发表的第二部长篇小说，于1993年出版。故事讲述了曾经的阔少爷福贵因为嗜赌而输光家产，此后家道中落，父亲被气死，母亲也得了重病。福贵在给母亲求药路上又被国民党抓了去当壮丁从军，几经波折之后才回到家。此时母亲早已去世，妻子仍不离不弃，含辛茹苦地养育两个儿女。此后命运更苦，妻子和儿女、孙子相继去世，只剩福贵与一头老牛。</p> 
<p>故事讲述时未必惊天动地，也未必悲天悯人，但角色的悲惨机遇读者却深受共鸣。张艺谋曾于1994年将本作改编为电影，由葛优、巩俐等人出演。电影版虽有部分情节改动，但人物之悲壮同样令人动容。</p> 
<p>小时候我试着读余华的小说，一直未能代入，许是跟人生经历有关。今年把《活着》读来，只觉唏嘘。但人生如此，又能如何呢？到老来还不是跟福贵一样，牵着老牛在田埂散步，找到人讲两句故事，这辈子就该结束了。</p> 
<h2>二、我的四星推荐⭐️⭐️⭐️⭐️</h2> 
<h3>心理学、哲学与自我成长类</h3> 
<h4>1. 《正见》 - 宗萨蒋扬钦哲仁波切</h4> 
<p><a href="https://book.douban.com/subject/27136747/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/What-Makes-You-Not-a-Buddhist.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/27136747/">豆瓣</a> | 哲学 | 2007年</p> 
<p>仁波切是活佛的意思，蒋扬钦哲说明这位活佛是蒋扬钦哲转世。宗萨蒋扬钦哲仁波切(Dzongsar Jamyang Khyentse Rinpoche, also known as Khyentse Norbu)是一位藏传佛教萨迦派喇嘛，出生于不丹。他在世界多个地方创立佛学院，也经常在各名校讲授佛学。同时他还是一位佛教题材电影导演，很有才华。</p> 
<p>这本书是他一次坐飞机的时候，邻座的乘客跟他聊天，问起："怎样才能算一个佛教徒呢？"</p> 
<p>这个问题看起来简单，实际上非常不简单。于是宗萨蒋扬钦哲仁波切写了这本书，英文原名是 <em>What Makes You Not a Buddhist</em>，即原问题反过来："什么使得你不是一位佛教徒呢？"写作本书，宗萨蒋扬钦哲仁波切不是为了宣扬佛法，所以没有传教义，也没有讲戒律，更没有高深莫测的经文之类，而是用十分平易近人的语言，直指佛教哲学的核心。</p> 
<p>如果你有做过一定程度的冥想训练，那么你应该能从冥想这个活动中体会到一些思想上的转变，这时再读冥想训练源头——佛教——的哲学，将大有裨益。</p> 
<h4>2. 《观呼吸》 - 德宝法师</h4> 
<p><a href="https://book.douban.com/subject/3910883/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/meditation-in-plain-english.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/3910883/">豆瓣</a> | 哲学 | 2010年</p> 
<p>《正见》是一位喜爱佛法的互联网创业者朋友推荐的书，当时我跟另一位朋友聊天，提起我当时在读的《当下的力量》，与《正见》。这位朋友推荐我读另一本书——《观呼吸》。作者是斯里兰卡的德宝法师(Henepola Gunaratana)，英文原名是: <em>Mindfulness in Plain English</em>，直译为: 用普通的语言解释正念冥想。</p> 
<p>其实这是一本针对禅修方法的指南，冥想是其中一种。有些人可能是抱着"学习放松的方法"的想法来学习正念，但在佛教禅修当中，冥想并不仅仅是放松，放松只是它带来的副作用之一罢了。德宝法师的这本书，书如其名，In Plain English，非常平易近人，是学习冥想的人非常适合的读物。</p> 
<h4>3. 《西藏生死之书》 - 索甲仁波切</h4> 
<p><a href="https://book.douban.com/subject/1050743/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/The-Tibetan-Book-of-Living-and-Dying.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/1050743/">豆瓣</a> | 哲学 | 1992年</p> 
<p>读完《当下的力量》、《正见》和《观呼吸》之后，我想更多了解佛教的文化，尤其是藏传佛教。于是读了这本 1992 年藏传佛教宁玛派的上师索甲仁波切出版的 <em>The Tibetan Book of Living and Dying</em>（简体译为《西藏生死书》）一书。</p> 
<p>这本书有意思的地方在于，他讲了非常多"超自然"的现象，以及应该说"纯想象的死后世界"(这样讲应该没有争议吧)。这里面很多东西需要成为虔诚的信徒，才会全然接受。显然我不是一位虔诚的佛教徒，所以有相当多的"现象"是我的脑袋不能接受的，但这并不妨碍我透过这些现象去观察藏传佛教背后的哲理。尤其是关于"死亡"的哲学。</p> 
<p>现代教育中有很多东西是缺失的，如何与死亡相处，如何面对死亡就是其中一部分。以前我<a href="https://justinyan.me/post/2393">读过 Atul Gawande 写的 Being Moral(《最好的告别》)</a>可能是我为数不多接触死亡话题的书。但那本毕竟只是从医生与儿子的角度去看如何与临终的父亲共同度过他人生最后的阶段，而《西藏生死书》所讲述之生死则更远大，更深刻。读起来当然也更费劲一些。</p> 
<h4>4. 《直视骄阳》 - 欧文·亚隆</h4> 
<p><a href="https://book.douban.com/subject/26660579/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/staring-at-the-sun.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/26660579/">豆瓣</a> | 心理学 | 2008年</p> 
<p>欧文·亚隆(Irvin Yalom)是美国当代存在主义精神治疗专家，生于1932年，现在是斯坦福大学的荣誉退休教授。他不仅临床治疗与学术贡献杰出，而且还特别擅长写作，1970年至今出版了17部作品，非常厉害，是我个人非常佩服的一位心理治疗大师。</p> 
<p>《直视骄阳》(Staring at the Sun)是作者2008年出版的非虚构类作品，讲述了他自己与来访者关于"死亡焦虑"主题的案例与分析。今年初读完这本书，我受到不少启发，也给我的个人OKR写下一句"创造我所热爱的生活"，不仅要勇敢面对我的命运中我无法控制的部分，更要好好把握自己能控制的部分。生活不会一直如我所愿，所以更要掌握具有主动性的部分，创造我所热爱的生活。</p> 
<h4>5. 《当下的力量》 - 埃克哈特·托利</h4> 
<p><a href="https://book.douban.com/subject/2277299/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/the-power-of-now.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/2277299/">豆瓣</a> | 心理学 | 1997年</p> 
<p>我特别不喜欢那些模棱两可容易被曲解的短语被人拿来按字面意思理解以作为自己的观点出现在对话中的，比如"存在即合理"，比如"活在当下"。</p> 
<p>"活在当下"四个字在互联网上传播的意思跟他原来要表达的意思已经天差地远，要知道什么是"当下"，还得从"体会什么是当下"开始。"体会"是无法通过语言表达和传述的。目前最流行也最容易入手的体会方式就是冥想。</p> 
<p>有不少书都在以脱离宗教神秘部分的方式解释"什么是冥想"，《当下的力量》(The Power of Now)就是其中一本。德国的 Eckhart Tolle 在某个夜晚陷入了严重的抑郁，他觉得生活的一切都充满敌意，毫无意义，尤其厌恶自己的存在。他想：“我再也无法忍受我自己了！”</p> 
<p>这时候他突然想到：“我是一个人还是两个人？如果我不能忍受我自己，那么肯定有两个我：‘我’和‘自己’。”也许，其中只有一个是真实的。</p> 
<p>事实上他所书写的"逻辑"，或者"理念"，与几千年前的佛教理念同源。只是他现在用现代人更容易接受的语言将这些久经考验的哲理重新讲述了一遍，很适合做过冥想训练，想进一步了解背后原理的读者。</p> 
<h4>6. 《爱的艺术》 - 埃里希·弗罗姆</h4> 
<p><a href="https://book.douban.com/subject/3026879/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/the-art-of-love.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/3026879/">豆瓣</a> | 哲学 | 1956年</p> 
<p>去年我们介绍过弗洛姆的<a href="https://justinyan.me/post/5313">《逃避自由》</a>一书，网友推荐了弗洛姆的其他作品，其中包括《爱的艺术》。这本书的风格还是很弗洛姆，一针见血。上来就说爱是需要学习的，让我想起那句很流行的伊坂幸太郎的话: "一想到为人父母居然不用经过考试，就觉得真是太可怕了。"虽然出处那本书《一首小夜曲》并不好看。</p> 
<p>弗洛姆在书中分析了父母之爱，兄弟之爱，性爱，自爱和上帝之爱，探讨的话题十分深刻。但行文同样具有弗洛姆特色，而今年我读书又很少做笔记(罪过)于是我现在完全忘了他讲什么了。只记得这本书的印象不错。</p> 
<h4>7. 《也许你该找个人聊聊》 - 洛莉·戈特利布</h4> 
<p><a href="https://book.douban.com/subject/35481512/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/maybe-you-should-talk-to-someone.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/35481512/">豆瓣</a> | 心理学 | 2019年</p> 
<p>美国的心理咨询师 Lori Gottlieb 2019年出版的关于她本人以及来访者的故事，本书不仅有来访者的视角，也有咨询师的视角。而 Lori 在书中也讲述了她本人经历跟男朋友分手，难以走出阴影而寻求心理咨询的帮助的案例，所以 Lori 本人也具备咨询师与来访者双重视角，非常有意义。</p> 
<p>Lori 本人也在 <em>The Atlantic</em> <a href="https://www.theatlantic.com/projects/dear-therapist/">编写 DEAR THERAPIST 专栏</a>，同时也有一个 Podcast: <a href="https://lorigottlieb.com/podcast/">DEAR THERAPISTS PODCAST</a>。</p> 
<p>这本书原标题是 <em>Maybe You Should Talk to Someone: A Therapist, Her Therapist, and Our Lives Revealed</em>, 写作风格轻松好读，虽然没有欧文亚隆写的那么深入，但更适合不怎么接触心理咨询或者刚接触心理咨询的读者，非常推荐。</p> 
<h4>8. 《悉达多》 - 赫尔曼·黑塞</h4> 
<p><a href="https://book.douban.com/subject/26292550/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/Siddhartha.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/26292550/">豆瓣</a> | 哲学 | 1922年</p> 
<p>黑塞(Hermann Hesse)的这本小说《悉达多》(Siddhartha)一直出现在各书店显眼的位置，今年因为读了一些佛教相关的书籍，所以更希望深入了解佛陀(乔达摩·悉达多/释迦摩尼)，也即佛教鼻祖的故事。这本书的标题是 <em>Siddhartha</em>，佛陀的名字是 Siddhartha Gautama，使我误以为这本书讲的是佛陀的故事。</p> 
<p>结果读下来其实讲的是另一位名为悉达多的贵族少年流浪的故事。他的出走跟佛陀当年出家修道有点像，不过佛陀是在29岁儿子出生时离开的，黑塞的小说则是写少年悉达多跟好友乔文达一起离家成为苦行僧，遇到美丽的女子加摩拉成为她的爱人，同时也成为一个富人，又过起了奢华的生活。</p> 
<p>后来重新觉悟，回到最初渡河的地方，与摆渡人一起跟大河一起生活。再后来又遇到乔达摩(真正的佛陀，悉达多)，成为他的弟子。</p> 
<p>整部小说读下来有很多光怪陆离的故事，也有很多发人深省的地方，寓言意味十足。但我本来是抱着"了解佛陀"的前提来读的，未免失望而归。所以如果读者朋友想从本书了解乔达摩·悉达多/佛陀/释迦摩尼的故事的话，可以选择阅读其他读物。</p> 
<h4>9. 《金钱心理学》 - 摩根·豪泽尔</h4> 
<p><a href="https://book.douban.com/subject/36415996/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/The-Psychology-of-Money.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36415996/">豆瓣</a> | 投资 | 2020年</p> 
<p>Morgan Housel曾是The Wall Street Journal的财经记者，后来加入风头基金Collaborative Fund成为合伙人(Partner)。Collaborative Fund投过几百个项目，包括Kickstarter, Lyft, Blue Bottle之类的明星项目。Morgan现在还常在 Collaborative Fund的Blog上写文章，感兴趣的小伙伴可以点这里阅读。</p> 
<p>《金钱心理学》(The Psychology of Money)是Morgan 2020年出版的书，几年前我已常见到有YouTuber推荐本书，最近才把它读完了。感觉写得比书名起得要好，轻松流畅，颇有启发。全书共分20章，前18章每章一个主题，每个主题都会带一个故事说理，作者讲故事的能力不错。第19章是总结，20章是作者自己的个人投资理念。还带一份附录：《美国消费者心态形成简史》(A Brief History of Why the U.S. Consumer Thinks the Way They Do)，写得也相当不错，我不太熟悉美国历史，读起来颇有新鲜感。</p> 
<p>我的书评: <a href="https://justinyan.me/post/5757">枫影夜读 #187 Morgan Housel – 《金钱心理学》</a></p> 
<h4>10. 《最优解人生》 - 比尔·帕金斯</h4> 
<p><a href="https://book.douban.com/subject/36242339/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/die-with-zero.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36242339/">豆瓣</a> | 自我成长 | 2021年</p> 
<p>Bill Perkins是美国的一位企业家，早年创办了 Small Ventures USA 风投公司，目前管理一家位于休斯顿的避险基金 Skylar Capital。《最优解人生》(Die with Zero)是他 2020 年出版的关于他人生哲理的一本书。</p> 
<p>书中提到的 Die with Zero 的概念很有趣，他认为我们所赚取的金钱都是通过消耗我们的生命获取的，所以最好的消耗生命的方式就是在死亡之前把所有钱都花光。所以假设能活到90岁，那么从今天开始算起，把剩下的生命时间以5年或10年为间隔切分成多个桶，把自己想做的事情放进每个桶里。这样我们会发现，20岁，30岁我们还能滑雪，能做各种极限运动，60岁，70岁就不一定了。我们被迫从什么时间能做什么事的角度来看到自己的人生，而不是一味地“延迟满足”。</p> 
<p>我不完全认同作者的观点，但我喜欢作者提出不一定的视角。经常看其他人眼里的世界会发现这个世界相当丰富有趣。</p> 
<h4>11. 《手机大脑》 - 安德斯·汉森</h4> 
<p><a href="https://book.douban.com/subject/36091480/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/Skarmhjarnan.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36091480/">豆瓣</a> | 心理学 | 2019年</p> 
<p>Anders Hansen 是来自瑞典的精神科医生，书里提出的东西大部分都不新。作者以“进化心理学”的角度，指出人类的大脑与身体仍处于适应原始部落生活的状态，而如今我们每天花费4小时以上刷手机的生活方式给大脑带来极大的负担。提出的注意力稀缺、大脑未适应现代生活、社交网络利用人性弱点等理论均不算新颖，但提供的信息仍有些参考价值。书本不厚，可以轻松阅读。</p> 
<h4>12. Build for Tomorrow - Jason Feifer</h4> 
<p><a href="https://book.douban.com/subject/36099585/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/build-for-tomorrow.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36099585/">豆瓣</a> | 自我成长 | 2022年</p> 
<p>Jason Feifer 是 Entrepreneur 杂志的首席编辑，他有个 Newletter 叫做 <a href="https://jasonfeifer.beehiiv.com/">One Thing Better</a>，写得挺有趣的我经常看，他还有个 Podcast 叫做 <a href="https://moneynewsnetwork.com/podcast/help-wanted/">Help Wanted</a>。这本书是 Jason 2022 年出版的一本非虚构类作品，从全球新冠大流行开始，解释了人们面对全新变化时的四个阶段:</p> 
<ol> 
 <li>Panic 恐慌</li> 
 <li>Adaptation 适应</li> 
 <li>New Normal 新常态</li> 
 <li>Wouldn't Go Back 回不去了</li> 
</ol> 
<p>里面举了很多历史故事作为例子，很有趣，值得一读。比如说欧洲古代的时候，英国没有雨伞这种东西，虽然英国天天下雨。有一个时期英国贵族会把子弟送到欧洲大陆去学习，进行博雅教育，当时称 Grand Tour 壮游，也即现代人的 Gap Year 间隔年的前身。这些人在欧洲大陆学到了雨伞这种东西，于是回到英国之后在街上走路打伞。结果引发了民众恐慌，因为大家觉得下雨要嘛就淋湿，要嘛就坐在车里，手里举着个傻不愣登的东西做啥呢？类似这样的故事还有挺多，十分有趣。</p> 
<h4>13. Solving the Procrastination Puzzle - Timothy A. Pychyl</h4> 
<p><a href="https://book.douban.com/subject/25858013/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/Solving-the-Procrastination-Puzzle.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/25858013/">豆瓣</a> | 自我成长 | 2010年</p> 
<p>Solving the Procrastination Puzzle 书如其名，因为经常拖延的人也许不太会想读一本很长的书，所以作者把这本书写得很短，分析了一些会导致拖延的心理特征。书不厚，很快翻完，对我有些收获，但不是很多。</p> 
<h3>人文社科类</h3> 
<h4>1. 《时势》 - 小Lin</h4> 
<p><a href="https://book.douban.com/subject/36673627/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/shishi.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36673627/">豆瓣</a> | 经济学科普 | 2023年</p> 
<p>B站Up主"小Lin说"今年底刚出版的一本书。小Lin说是一位知识区Up主，发布的视频经常点评各种财经时事，分析各个国家的经济大事等等，风格风趣幽默，很有意思。</p> 
<p>出版这本书的原由在<a href="https://www.bilibili.com/video/BV1oG411v7eG">这期视频</a>讲到，中信的编辑觉得小Lin说频道的内容很适合以文字为载体传播，于是他们选定几个国家的经济为主题，编写了这本书，题为《时势》。</p> 
<p>小Lin说也在《序》中提到，这本书更着重要大家都能懂的语言，尽量客观地，平易近人地把各个国家的经济大事讲一遍。所以读者无需抱持"深入学习"的想法来读，作为闲暇科普读物还是很不错的。</p> 
<p>我拿到这本书一个下午就翻完了，学到了一些东西，轻松有趣。</p> 
<h4>2. 《我在北京送快递》 - 胡安焉</h4> 
<p><a href="https://book.douban.com/subject/36150423/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/wo-zai-bei-jing-song-kuai-di.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36150423/">豆瓣</a> | 人文 | 2023年</p> 
<p>若以职业论，作者胡安焉是一位打过不少工，也做过自己生意的人。作者曾做过酒店服务员，在漫画社实习，在面包店当学徒，在自行车店、便利店都干过，也开过自己的服装店、小吃店，还曾跟一群摇滚青年去“流浪创作”。</p> 
<p>最后，当然少不了赋闲在家，居家写作的时光。这本书出版的契机是作者在豆瓣发表他自己在德邦物流和在北京送快递的工作经历，被出版社编辑发现，方得付梓。</p> 
<p>全书分为五个部分，在德邦物流和后来送快递的经历，虽是作者新近发生的事件，我以为却是全书写得最好的部分。</p> 
<p>我的书评: <a href="https://justinyan.me/post/5750">枫影夜读 #186 胡安焉 – 《我在北京送快递》</a></p> 
<h4>3. 《金榜题名之后》 - 郑雅君</h4> 
<p><a href="https://book.douban.com/subject/36190074/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/jin-bang-ti-ming-zhi-hou.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36190074/">豆瓣</a> | 社会科学 | 2023年</p> 
<p>同样是在复旦和清华上学的学生，为什么有的人目标明确，大一（甚至高中）就知道自己要什么，并为之争取与努力，采取聪明高效的策略，达成目标。而有些人就茫然不知所措，凭直觉在大学生涯中度日？</p> 
<p>《金榜题名之后：大学生出路分化之谜》是郑雅君就读于复旦大学社会科学系时的硕士研究成果。她访谈了多位来自复旦与清华的学生，针对学生的家庭背景、经济条件、成长环境、大学生涯与毕业出路进行长期跟踪调研，发现在大学这个特定的场域里，学生们的应对策略以及未来的出路选择各有不同。有的策略在这个特定场域中能获得竞争优势，有些则不然。</p> 
<p>我的书评: <a href="https://justinyan.me/post/5730">枫影夜读 #185 – 郑雅君《金榜题名之后:大学生出路分化之谜》</a></p> 
<h4>4. 《他者的消失》 - 韩炳哲</h4> 
<p><a href="https://book.douban.com/subject/33442258)"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/die-austreibung-des-anderen.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/33442258)">豆瓣</a>| 哲学 | 2016年</p> 
<p>生活在德国的韩国哲学家韩炳哲又一社会哲思作品，他2015年出版的首部作品《倦怠社会》就受到热议，本作是讨论当代社会同质化的现象，分析该现象背后产生的原因，及其可能造成的后果。行文依然很韩炳哲，翻译成中文阅读起来有些难度。</p> 
<h4>5. 《容忍与自由》 - 胡适</h4> 
<p><a href="https://book.douban.com/subject/26687439/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/rong-ren-yu-zi-you.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/26687439/">豆瓣</a> | 人文 | 2015年</p> 
<p>武汉出版社 2015 年编的的胡适文集，包括《容忍与自由》、《多研究些问题，少谈些"主义"!》等经典文章，现在读来很有意思。</p> 
<h4>6. 《邻人之妻》 - 盖伊·特立斯</h4> 
<p><a href="https://book.douban.com/subject/27091742/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/thy-neighbors-wife.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/27091742/">豆瓣</a> | 人文 | 2018年</p> 
<p>《邻人之妻》是Gay Talese于1980年出版的，针对60-70年代美国性解放运动的研究。通过参与-观察的方式写成。</p> 
<p>与书名容易造成的印象不同，这是一部社会纪实文学，而不是色情小说。对我来说，读完颇具意义的地方在于，认识到美国开放的60年代，make love not war的时代原来给这个世界带来如此巨变。同时也一反此前对“美国文化向来开放”的刻板印象，实际上美国在那个时代同世界上其他国家一样，保守得很。</p> 
<h4>7. 《始于极限》 - 上野千鹤子/铃木凉美</h4> 
<p><a href="https://book.douban.com/subject/35966120/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/shi-yu-ji-xian.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/35966120/">豆瓣</a> | 人文 | 2022年</p> 
<p>这本书是铃木凉美与上野千鹤子的书信来往，每回书信讨论一个不同的主题。铃木凉美曾是一位AV女优，她的父母分别是法政大学名誉教授铃木晶和翻译家灰岛佳里，她本人于2008年以AV女优为题完成硕士论文研究，获得东京大学硕士学位，她的学士学位则是在庆应义塾大学获得，均是名校。</p> 
<p>上野千鹤子名气更是响亮，毕业于京都大学，任东京大学社会学教授，是日本著名的研究女性解放理论的女性主义者。</p> 
<p>这本《始于极限》也经常被摆放在书店显眼的位置，但我个人却因为对"女性主义"的刻板印象望而却步。再加上听说上野千鹤子的名字还是因为之前那个"北大女生采访事件"，只知道她是一位"女性主义者"，仅此而已。再叠加铃木凉美的"前AV女优"标签，这本书可谓buff叠满，也充分体现了标签(label)的危害。</p> 
<p>标签可以让人更快速过滤关键信息，但也可以让更多重要的信息消失掉。当我读完本书的第一封信，我就已经知道本书远远超出刻板印象的"女权"的程度。铃木凉美在书信中以谦卑的后辈的姿态，提出了针对不同主题的讨论，而上野千鹤子的回信总是那么坚定与一针见血，令人佩服。</p> 
<p>第一封信开始铃木凉美就直言不讳自己的"前AV女优"身份，以及该标签带来的名气与负面影响。上野千鹤子的回信指出:</p> 
<blockquote> 
 <p>“但也有你这样的年轻女性，明明不受经济条件所迫，却出于好奇、叛逆、挑战或自虐情结进入了那样的世界。你们很清楚性市场的性别不对称，还想反过来利用这一机制。男人当然会对这样的女人感兴趣。为什么？因为“女性的能动性”能为他们免责，而且在充满金钱和欲望的权力游戏中，你们也是更值得追逐的猎物。”</p> 
</blockquote> 
<blockquote> 
 <p>“阅读你的文字时，我不由得想，如果你说的是“我学到了人的极限”，而不是“我学到了人的愚蠢”，那该有多好。人人都有极限，但在达到极限之前，你无法品尝到它的滋味。唯有拼到极限的人，才能真正从骨子里感受到它。”</p> 
</blockquote> 
<p>可以说字字珠玑，上野千鹤子老师无论学识还是文风，均令人惊叹，从此路人转粉。</p> 
<h4>8. 《东京八平米》 - 吉井忍</h4> 
<p><a href="https://book.douban.com/subject/36096287/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/dong-jing-ba-ping-mi.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36096287/">豆瓣</a> | 人文 | 2023年</p> 
<p>一个周末午后，想和我太太去河边虚度光阴，比如低头看鱼，比如把书本放在草地上，打开，浪费它们好看的阴影(注1)。于是我带上了一本白色封面的小书，吉井忍写的《东京八平米》。</p> 
<p>那天我在留灯书店见到这本书时，不知道怎么就被它吸引住了，后来证明买下它真是太好了。这本书的文风跟封面设计一样简洁朴素，纸张摸起来很舒服，也没有多余的狗皮腰封，而且非常轻松好读。。最近读投资理财的书比较多，所以跟伯顿·马尔基尔笔下动荡的金融市场，还有Winnie夫妇财务自由的环球穷游相比起来，吉井忍“蜗居”在东京八平米的小房子，似乎更贴近尘世一些。</p> 
<p>我的书评: <a href="https://justinyan.me/post/5617">枫影夜读 #183 吉井忍 – 《东京八平米》</a></p> 
<h4>9. Life after Capitalism - George Gilder</h4> 
<p><a href="https://book.douban.com/subject/36403216/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/life-after-capitalism.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36403216/">豆瓣</a> | 人文 | 2023年</p> 
<p>这本书是 George Gilder 今年的新书，想法比较有趣，比较反常规，这也是我个人对这本书最感兴趣的一点。全书围绕作者提出的四个"Key Truths"展开：</p> 
<ol> 
 <li>Wealth is knowledge. 财富是知识，指出财富并不是物质，而是人类的知识。作者举的例子是一辆跑车，组成它的物质本身具备一定价值，但如果它被撞坏了，那它只是一堆废铁。</li> 
 <li>Growth is learning. 增长是学习，举的例子是摩尔定律。通过技术的学习带来新的增长。</li> 
 <li>Information is surprise. 信息是惊喜/意外，也即无法预料的部分。我以为作者想说的是真正有用的信息是来自无法预料的部分。</li> 
 <li>Money is time. 金钱是时间，作者提出时间价格(time-price)的概念，把产出用时间来度量。有点像真正的财富自由是能自由掌控自己的个人时间的放大版。</li> 
</ol> 
<p>总的来说，这本书提出的观点蛮有趣的，我比较喜欢本书的前半部分，后面就越读越无趣了。</p> 
<h4>10. 《战后日本经济史》 - 野口悠纪雄</h4> 
<p><a href="https://book.douban.com/subject/30169979/"><img class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2023/07/fyyd-188-book-cover.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/30169979/">豆瓣</a> | 历史 | 2018年</p> 
<p>日本80年代曾一度经济强大到“世界第一”，1989年三菱地所公司一举买下纽约市中心洛克菲勒中心14栋大楼。那时的日本甚至影响美国科幻小说，经典赛博朋克科幻均有日本的身影（《神经漫游者》、《仿生人会梦见电子羊吗？》等），但此后泡沫破裂，日本一蹶不振，陷入长时间的经济停滞，再难重现当日之奇迹。</p> 
<p>这期间到底发生了什么？让日本在战后迅速恢复并一路高歌猛进的原因是什么？又是什么事件导致80年代末的泡沫破裂的？</p> 
<p>我的书评: <a href="https://justinyan.me/post/5763">枫影夜读 #188 野口悠纪雄——《战后日本经济史》 </a></p> 
<h4>11. 《日本第一》 - 傅高义</h4> 
<p><a href="https://book.douban.com/subject/26606521/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/number-one-japan.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/26606521/">豆瓣</a> | 历史 | 1979年</p> 
<p>读完《邓小平时代》之后对作者傅高义(Ezra Vogel)产生了兴趣，知道他曾经写过《日本第一》，而近来全球经济发展停滞之景颇有当年日本经济泡沫破裂之后的境况，于是读了本书。</p> 
<p>傅高义出版这本书是在1979年，当时日本已经连续创造经济奇迹多年，到1990前后达到巅峰然后破裂。整个80年代，对日本经济奇迹感到威胁最大的是美国。不仅政策上跟日本打贸易战，国内民众也对日本的强大感到恐惧，甚至诞生了"赛博朋克"分支的科幻小说，里面的末日城市背景就是以日本东京为蓝图。</p> 
<p>这本书分析了日本战后所面临的各项挑战，在重重困难之下，如何通过学习美国，引入外资等方式，从知识、政府、政治、大企业、基础教育、福利、犯罪控制等多个方面分析日本社会的进步之处，最后指出日本社会值得被西方学习的地方。</p> 
<p>当然在日本经济陷入"失去的三十年"的今天读来，全面赞扬肯定不够全面。世界上不存在绝对"好"的政策与方法论，所以今日读此书，我们更能透过"后见之明"的眼镜，去看到日本当年的"好"与"坏"吧。</p> 
<h3>投资理财类</h3> 
<h4>1. 《投资第1课》 - 孟岩</h4> 
<p><a href="https://book.douban.com/subject/36295222/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/tou-zi-di-yi-ke.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36295222/">豆瓣</a> | 投资 | 2023年</p> 
<p>孟岩今年出版的新书，内容脱胎于他与张潇雨在《有知有行》的同名栏目。<a href="https://youzhiyouxing.cn/curriculum">《有知有行·投资第一课》</a>我在博客和播客中也多次推荐过，是非常好的投资科普读物。</p> 
<p>学习了这些基础知识以后我才慢慢开始阅读其他投资理财经典读物的，所以读者朋友如果对个人理财有兴趣的话，非常推荐阅读本书作为入门。</p> 
<h4>2. 《不落俗套的成功》 - 大卫·F·斯文森</h4> 
<p><a href="https://book.douban.com/subject/3725211/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/unconvetional-success.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/3725211/">豆瓣</a> | 投资 | 2005年</p> 
<p>美国投资人大卫·F·斯文森(David F. Swensen)的著作，他曾经任耶鲁大学首席投资官，帮助耶鲁大学管理他们的捐赠基金，以资产配置的方式获得不错的效果。</p> 
<p>我读这本书的初衷就是为了了解资产配置的理念，什么是资产大类，什么是资产再平衡等等，书中有非常不错的讲解，是投资理财的必备读物。</p> 
<h4>3. 《不上班也有錢》 - 曾琬鈴</h4> 
<p><a href="https://book.douban.com/subject/30150181/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/bu-shang-ban-ye-you-qian.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/30150181/">豆瓣</a> | 投资 | 2016年</p> 
<p>台湾的 Winnie 和她在美国认识并结婚的丈夫一起打工攒钱，攒够了钱之后，带着小孩环游世界的故事。这本书讲述了普通打工人如何通过打工来赚钱，储蓄，手里积累到一定的财富之后，如何通过基金理财或股票分红的方式，获得稳定收益，从而实现财务自由的故事。是一本很有意思的结合自身例子的理财科普书。</p> 
<h4>4. 《工薪族财务自由说明书》 - 也小谈</h4> 
<p><a href="https://book.douban.com/subject/35157448/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/gong-xin-zu-cai-wu-zi-you-shuo-ming-shu.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/35157448/">豆瓣</a> | 投资 | 2020年</p> 
<p><a href="https://yetanmoney.com/">也谈钱</a>的作品，作者是一位住在德国的工程师，希望通过打工努力存钱，投资，达到财务自由。目前也谈钱已经辞职自由了，感兴趣的小伙伴也可以关注他的微信，经常更新自己的状态。</p> 
<h4>5. 《傻瓜式投资》 - 飞泥翱空</h4> 
<p><a href="https://book.douban.com/subject/30336949/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/sha-gua-shi-tou-zi.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/30336949/">豆瓣</a> | 投资 | 2016年</p> 
<p>读《工薪族财务自由说明书》时读到的雪球"飞泥翱空"写的50:50傻瓜式投资法则。</p> 
<p>简单来说就是 50% 现金，50% 股票，一直维持这样的比例。这样当牛市来的时候，股票会超过50%，于是为了维持比例我们就得卖出股票换成现金，反之亦然。这样就实现了被动的高抛低吸。</p> 
<p>可以作为科普读物阅读。</p> 
<h4>6. 《持續買進》 - Nick Maggiulli</h4> 
<p><a href="https://book.douban.com/subject/35871073/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/Just-keep-buying.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/35871073/">豆瓣</a> | 投资 | 2022年</p> 
<p>Nick Maggiulli 是 Ritholtz Wealth Management 投资管理公司的COO，这本书是他 2022 年出版的关于个人储蓄与投资的书，繁体版译为《持續買進》。</p> 
<p>书中提到的大部分理财知识跟其他投资经典理念相通，不过多了储蓄的部分，这部分在设定预算，提高储蓄率相关的书比如《不上班也有錢》也会提到。文风比较平易近人，写的内容也不深奥，比较好读。</p> 
<h3>其他分类</h3> 
<h4>1. 《岩田先生》 - HOBO日刊ITOI新闻(编)</h4> 
<p><a href="https://book.douban.com/subject/35506252/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/yan-tian-xian-sheng.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/35506252/">豆瓣</a> | 人物传记 | 2021年</p> 
<p>我是从Switch才第一次真正成为任天堂的玩家，小时候的Gameboy，N64和后来的3DS我那会是无缘接触的。 Switch刚开始宣发的时候我也以为这个性能不佳的机器不会怎样。结果首发在日本自己背了回来，还在旅途时就忍不住在温泉旅馆中玩起了《塞尔达》并为之沉迷。 如今回想起来，Switch和之前种种任天堂机型的创新与突破，都与其社长岩田聪有密不可分的关系。 本书不是人物传记，只是记录岩田聪过去说过的只言片语，和刊登过的采访文章。从这些文字中我感受到了岩田聪的为人，他对游戏的热爱，他的特别的魅力。任天堂之所以为任天堂，岩田聪与宫本茂是灵魂。 愿社长在天堂安好，他那么希望给所有人带来HAPPY，想必他此刻也很安详吧。</p> 
<h4>2. 《蒂姆·库克传》 - 利恩德·卡尼</h4> 
<p><a href="https://book.douban.com/subject/34429983/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/tim-cook.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/34429983/">豆瓣</a> | 人物传记 | 2019年</p> 
<p>这本书的原标题是 <em>Tim Cook：The Genius Who Took Apple to the Next Level</em>，与其说是苹果现任 CEO Tim Cook 的传记，还不如说是乔布斯以后，Tim 如何顶住压力扛下苹果这艘大船，并一路高歌猛进的故事。</p> 
<p>不过阅读本书还是获得了很多平时新闻少见的信息，比如 Tim 的童年生活，加入苹果之前在其他公司做供应链改造的经验，加入苹果后如何把他过去的优势在苹果充分发挥，使得苹果的供应链获得脱胎换骨的蜕变，以及为什么后来苹果要坚持环保主题，还要主动表态支持 LGBT 等公共议题等动作，均来自 Tim 这位领导者本身的导向。</p> 
<p>这本书本身写得一般，但确实还是有一些信息量的，希望了解更多 Tim Cook 生平的读者可以读读看。</p> 
<h4>3. 《電玩遊戲進化史》 - 爱德华·罗斯</h4> 
<p><a href="https://book.douban.com/subject/36395290/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/gamish.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36395290/">豆瓣</a> | 游戏 | 2020年</p> 
<p>很轻松的一本漫画书，买来很快翻完了，适合游戏玩家，尤其是从小就玩PC或主机游戏的玩家。轻松好读，可视为休闲读物。</p> 
<h4>4. 《村上T》 - 村上春树</h4> 
<p><a href="https://book.douban.com/subject/36085236/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/cun-shang-t.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/36085236/">豆瓣</a> | 其他 | 2020年</p> 
<p>村上春树除了收集唱片，爱喝酒，还收集T恤。</p> 
<p>这本书是村上把他收藏的T恤中有意思的拿出来一件件解释买它时的故事。轻松好读，可作为休闲读物。</p> 
<h4>5. 《世界鋼筆圖鑑》 - 《万年筆の図鑑》編輯部</h4> 
<p><a href="https://book.douban.com/subject/27094078/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/fountain-pen.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/27094078/">豆瓣</a> | 其他 | 2016年</p> 
<p>喜欢钢笔的人应该都听说过有一本介绍钢笔的圣经 <em>Fountain Pens of The World</em>，这本书出版于 1995 年，所谓"钢笔五大"就从这本书来的。</p> 
<p>我挺喜欢钢笔的，买了不少笔，仰慕五大(龙鸟犀水派)已久，到今年也买到了其中的万宝龙大班 149 和百利金 M800。《世界鋼筆圖鑑》这本虽然不是圣经本体，但插图精致，品类齐全，也是不错的入坑读物。</p> 
<h4>6. 《那些古怪又让人忧心的问题》 - 兰道尔·门罗</h4> 
<p><a href="https://book.douban.com/subject/26826089/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/what-if.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/26826089/">豆瓣</a> | 其他 | 2014年</p> 
<p>Randall Munroe的 <em>What If?</em> 系列去年底出了第二部，满受网友欢迎，于是我也买来读了。基本上是一些稀奇古怪的问题，进行科学推理后给出的"可能的答案"，原文标题是 <em>What If?: Serious Scientific Answers to Absurd Hypothetical Questions</em>。</p> 
<p>比如说: "如果地球上所有人都拿着激光笔同时照向月亮，月亮的颜色会发生变化吗？"</p> 
<p>作者一本正经地计算了"所有人集中到能看到月亮的地方"的可行性，地月距离，激光笔最大功率等等，然后逐步进行"不可能"的升级，最后给你一个结论。全书基本上就是根据这些天马行空的提问进行科学推理的回答。</p> 
<p>是挺有趣的，不过我个人没有对这种类型特别感兴趣，所以，喜欢这种类型的读者应该读起来会更开心。</p> 
<h2>三、其他</h2> 
<h3>1. 《高敏感是种天赋》 - 伊尔斯·桑德</h3> 
<p><a href="https://book.douban.com/subject/27125070/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/highly-sensitive-people-in-a-unsensitive-world.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/27125070/">豆瓣</a> | 心理学 | 2016年</p> 
<p><em>原标题是 Highly Sensitive People in an Insensitive World: How to Create a Happy Life，直译为《高敏感人群在一个不敏感的世界：如何创造一个快乐的人生》</em></p> 
<p>从英文标题可以看出，这本书所要讲的内容与简体译名《高敏感是种天赋》所暗示的"高敏感也有好的地方"其实并不完全匹配，英文原作更像是解释为何人群会有高敏感倾向与高复原倾向，以及现代社会并不鼓励高敏感处理方式，那么高敏感人群应该如何应对。</p> 
<p>最近互联网流行用I人E人来开玩笑，其实就是说的"内向"和"外向"。这种说法可以在我们不太了解自己的时候辅助自我分析，但它不是一种标签。所谓内向外向不过是一个图谱的两端，我们可以大部分时候靠近其中一端，但有时候又靠近另一端。如果把这两端连起来作为一个横轴坐标，那么它还能有一个垂直的纵轴坐标。本书介绍的"高敏感"与"高康复"就是可以同时出现在"内向"和"外向"人格之上的。</p> 
<p>世界很大，人类多种多样，除了这两个轴，还可以有第三个轴，第三亿个轴。每个人共享了一部分相似的特点，却又各不相同，这才是我们所在的世界。</p> 
<p>这本书写得比较浅，如果没有了解过"高敏感"这个概念的小伙伴可以阅读。但如果清楚这个概念，则本书欠缺可深入理解的内容，故此作三星⭐️⭐️⭐️评价。</p> 
<h3>2. 《钝感力》 - 渡边淳一</h3> 
<p><a href="https://book.douban.com/subject/27125070/"><img decoding="async" height="320" class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/12/dun-gan-li.jpg" /></a></p> 
<p style="text-align:center;"><a href="https://book.douban.com/subject/27125070/">豆瓣</a> </p> 
<p>我在书店等人的时候随手翻完的一本书，完全不值得一读，两星评价⭐️⭐️。放在这里以供小伙伴们避雷。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 104 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;21: &#x5927;&#x516C;&#x53F8;&#x90FD;&#x5728;&#x6324;AI</title>
        <link>https://justinyan.eth.limo/C58E5B6F-04B2-45B1-9691-82164C00E831/</link>
        <guid>https://justinyan.eth.limo/C58E5B6F-04B2-45B1-9691-82164C00E831/</guid>
        <pubDate>Mon, 04 Dec 2023 08:49:27 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/12/Podcast-Cover-v104.png" alt="" /></p> 
<p>上一期节目还没发布，Sam Altman就回去OpenAI继续当CEO了，这个AI圈里的人和事变化比变天还快。Sam这通操作直接把同期微软和Github的发布会给淹没下去了。</p> 
<p>近期AI的消息很多，在持续一年的由ChatGPT，Stable Diffusion，MidJourney等大热AI产品掀起新一轮科技热潮之后，似乎硅谷所有大公司都挤进了这场竞争。</p> 
<p>就让我们跟随今天的科技快乐星球，一起一探究竟吧！</p> 
<p>*P.S. 感谢《技术播客节》活动邀请，本期节目是参与《技术播客节》的一期。与我台同日更新的还有诸多友台关于AI话题的探讨，感兴趣的小伙伴们可以找来听一听。*<em>技术播客节——让声音，带你领略技术的五彩斑斓</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:29 Sam altman返回OpenAI担任CEO</li> 
 <li>00:05:37 微软Ignite大会与Github Universe发布会</li> 
 <li>00:02:09 OpenAI Plus暂停注册</li> 
 <li>00:15:49 马一龙的Cybertruck终于发售</li> 
 <li>00:23:24 基于AI的新随身硬件: Humane AI Pin</li> 
 <li>00:29:12 苹果允许第三方App Store，禁止摇一摇广告？</li> 
 <li>00:46:54 小程序短剧爆火</li> 
 <li>00:51:49 Steam Deck与TGA 2023</li> 
 <li>00:54:44 近期影视与动漫更新</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 103 &#x5B8C;&#x86CB;&#xFF01;&#x6211;&#x88AB;OpenAI&#x65B0;&#x95FB;&#x5305;&#x56F4;&#x4E86;&#xFF01;</title>
        <link>https://justinyan.eth.limo/BAB3B7BE-5C81-4C0B-BA07-F36DD25261DB/</link>
        <guid>https://justinyan.eth.limo/BAB3B7BE-5C81-4C0B-BA07-F36DD25261DB/</guid>
        <pubDate>Wed, 22 Nov 2023 21:30:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/11/Podcast-Cover-v103.png" alt="" /></p> 
<p>这两天OpenAI消息炸裂，反转又反转，我台不得不加更一期哈哈哈。</p> 
<p>美国时间11月17日，OpenAI官宣开除CEO Sam Altman，自此，每日新闻一直反转，堪比宫斗神剧。我台收集目前掌握的信息（到美国时间2023年11月20日），加更一期，跟各位听众朋友们一起吃瓜😋🍉</p> 
<p><em>Edited at 22 Nov, 2023: 节目还没发出去Altman就又回去当CEO了😂这波0元营销也是没谁了，马一龙看了直呼内行</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:53 Sam Altman 被开除始末(截至11月20日)</li> 
 <li>00:15:27 OpenAI公司的组织架构</li> 
 <li>00:29:57 微软成最大赢家？</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>Ben Thompson对于此事的分析: <a href="https://stratechery.com/2023/openais-misalignment-and-microsofts-gain/">OpenAI’s Misalignment and Microsoft’s Gain – Stratechery by Ben Thompson</a></li> 
 <li>OpenAI官宣开除CEO Sam Altman: <a href="https://openai.com/blog/openai-announces-leadership-transition">OpenAI announces leadership transition</a></li> 
 <li>OpenAI公司架构: <a href="https://openai.com/our-structure">Our structure</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 102 OpenAI&#x9996;&#x5C4A;&#x5F00;&#x53D1;&#x8005;&#x5927;&#x4F1A;&#xFF0C;&#x7EC8;&#x4E8E;&#x8981;&#x6539;&#x53D8;&#x4E16;&#x754C;&#x4E86;&#x5417;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/CE62E000-72CF-425A-9791-737E3C660A1B/</link>
        <guid>https://justinyan.eth.limo/CE62E000-72CF-425A-9791-737E3C660A1B/</guid>
        <pubDate>Mon, 13 Nov 2023 21:23:55 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/11/Podcast-Cover-v102.png" alt="" /></p> 
<p>2023年11月6日，OpenAI在San Francisco召开第一届开发者大会。Sam Altman站台分享多个重大更新。</p> 
<p>不仅带来了更强大的GPT-4 Turbo模型，还带来了人人都可以创建自己专属的GPT。以后OpenAI还将开设GPTs Store，大家可以将自己训练的专属模型提交到Store上，足够受欢迎的模型还将获得分成。</p> 
<p>API方面，OpenAI也带来了不少更新，极大地优化了GPT的可用性。</p> 
<p>结合OpenAI在发布会上演示的Demo，所有开发者的想象力被打开，接下来可以预见将会有更多好用的基于GPT的产品诞生。</p> 
<p>让我们在节目里一起讨论下这个即将被改变的未来吧！</p> 
<p><em>P.S. 非常抱歉，本期节目Justin的录音设备出了点问题所以会有点奇怪的背景噪音在🤦‍♂️</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:03:06 Sam Altman带来性能更强的GPT-4 Turbo</li> 
 <li>00:12:01 惊现微软CEO Satya Nadella</li> 
 <li>00:16:34 人人都可以训练自己的GPTs了!</li> 
 <li>00:24:20 已经有很多有趣的GPTs出现了</li> 
 <li>00:26:53 OpenAI豪气宣布版权自由？</li> 
 <li>00:31:54 ChatGPT的知识库终于更新了</li> 
 <li>00:33:22 本届发布会都更新了哪些API?</li> 
 <li>00:52:49 我们对这场发布会的感受</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 101 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;20: &#x82F9;&#x679C;M3&#x5FEB;&#x5F97;&#x5413;&#x4EBA;&#x1F47B;</title>
        <link>https://justinyan.eth.limo/46729537-428E-41F3-B7A4-4A91370CBAD0/</link>
        <guid>https://justinyan.eth.limo/46729537-428E-41F3-B7A4-4A91370CBAD0/</guid>
        <pubDate>Tue, 07 Nov 2023 00:32:38 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/11/Podcast-Cover-v101.png" alt="" /></p> 
<p>我台100期发布不久之后，非常荣幸地登上了苹果播客中国区首页推荐，开心😆</p> 
<p>本期节目是很久不见的科技快乐星球系列，攒了几个月的新闻一起来聊聊。Soc方面苹果发布了新的M3芯片和MacBook产品，高通骁龙也持续追赶发布8Gen3正式产品，顺便透露点8Gen4的小道消息。</p> 
<p>还有近期CloudFlare断电，Google发布Pixel 8系列收集，Meta发布新品Quest 3，下半年各大厂商都卷起来了。</p> 
<p>游戏界也不遑多让，前有《博德之门3》加入年度游戏竞争，后有iPhone 15 Pro继续秀游戏性能肌肉，再加上《星空》翻车，《完蛋》出现在Steam，各项吸引眼球的讯息频出。</p> 
<p>总而言之言而总之，让我们走进本期科技快乐星球，一起快乐一下吧♪٩(´ω`)و♪</p> 
<p><em>P.S. 更正一处口误：人工智障的英文是Artificial Idiot不是idioms</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场</li> 
 <li>02:37 骁龙 8 Gen3 发布</li> 
 <li>05:27 苹果史上最短发布会</li> 
 <li>18:23 谷歌 Pixel 8 手机发布</li> 
 <li>21:06 Cloudflare 断电事故</li> 
 <li>24:06 ChatGPT 4 All Tools</li> 
 <li>29:37 Meta 发布 Quest 3</li> 
 <li>32:15 X 发布首个大模型产品 Grok</li> 
 <li>34:50 Kindle 要求出版商公布作品 AI 使用情况</li> 
 <li>39:01 Unity 宣布收费、动视暴雪收购案</li> 
 <li>40:51 游戏相关新闻</li> 
 <li>50:15 影视相关新闻</li> 
</ul> 
<p>参与本期抽奖方式：在小宇宙平台评论互动即可哟～</p> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 100 &#x7279;&#x522B;&#x8282;&#x76EE;: &#x521B;&#x9020;&#x6211;&#x6240;&#x70ED;&#x7231;&#x7684;&#x751F;&#x6D3B;</title>
        <link>https://justinyan.eth.limo/06B0984B-F2B6-41FE-A2BD-CD0AFDD872D1/</link>
        <guid>https://justinyan.eth.limo/06B0984B-F2B6-41FE-A2BD-CD0AFDD872D1/</guid>
        <pubDate>Mon, 30 Oct 2023 15:18:56 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/10/Podcast-Cover-v100_v2.png" alt="" /></p> 
<p>小破台100期啦！🎉 喜大普奔😆</p> 
<p>我台公开发布的第一期是在2018年9月，2021年10月播出第50期的时候我们还在调侃是过了一个关，如今转眼已经100期了。感谢所有收听我们节目的新老听众朋友，你们的支持确实是我们更新的动力。</p> 
<p>我(Justin)大概是2010年左右开始听播客，当时没什么中文播客。虽然2023年大家依然说播客在中文世界是个小众的东西，但回到10年前那会就更加小众了。如友台主播所云，那时候做播客还是件挺酷的事情。</p> 
<p>确实时光荏苒，世界一直在变化。不过好在我们从播客中找到了很多令我们有所收获的，开心的事情。因为播客，能跟听友们连接，能跟嘉宾们有一次深入的交谈，都是很棒的体验。更不用说我们自己对谈的节目也常常在突破自己的认知。</p> 
<p>希望做播客这份缘，这座与大家连接的桥梁可以一直发展下去。我们播出了100期节目，以后还会有200期，300期。世界在变，播客生态在变；听众在变，我们两位主播也在变。但我们的好奇心不变，通过桥梁连接这个世界也会一直给我们带来新的突破与收获。</p> 
<p>Nathaniel Hawthonrne 曾经曰过:</p> 
<blockquote> 
 <p>Happiness is like a butterfly which, when pursued, is always beyond our grasp, but, if you will sit down quietly, may alight upon you.</p> 
 <p>幸福宛如一只蝴蝶，当你紧随其后时，它会离你而去；而当你静坐不动时，它可能翩然而至，落在你身上。</p> 
</blockquote> 
<p>所以在这里我就不说要追求什么永远更新之类的目标了。总而言之，因为播客，我们对这个世界的认识与连接比之前深远得多。感谢我们的听众朋友们，感谢我们的嘉宾朋友们，希望我们继续跟随好奇，继续探索这个世界更多的未知。不用着急，不用追赶，只是静静地坐着就好，等待蝴蝶。</p> 
<p>枫言枫语，听见科技与人文的声音～</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 我们 100 期啦🎉</li> 
 <li>00:03:52 本台小数据大起底</li> 
 <li>00:16:02 小宇宙节目数据</li> 
 <li>00:21:46 回忆杀：真·第1期</li> 
 <li>00:26:09 枫言枫语名字的来由</li> 
 <li>00:30:23 关于剪辑外包</li> 
 <li>00:32:36 实体周边、线下活动</li> 
 <li>00:34:11 印象深刻的听友们</li> 
 <li>00:46:08 印象深刻的评论</li> 
 <li>00:51:37 灵魂一问：如果有一天我们做不下去了怎么办？</li> 
 <li>01:07:53 创造我所热爱的生活</li> 
 <li>01:22:28 特别互动福利抽奖</li> 
</ul> 
<p>参与本期抽奖方式：在小宇宙平台评论互动即可哟～</p> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>后期: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 99 Gamker&#x653B;&#x58F3;&#x8042;&#x4FCA;: &#x4E07;&#x7269;&#x7834;&#x5143;&#xFF0C;&#x592A;&#x9633;&#x7167;&#x5E38;&#x5347;&#x8D77;</title>
        <link>https://justinyan.eth.limo/83E09A6B-E05F-40B6-8F4A-7508DAD78D90/</link>
        <guid>https://justinyan.eth.limo/83E09A6B-E05F-40B6-8F4A-7508DAD78D90/</guid>
        <pubDate>Fri, 29 Sep 2023 21:05:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/09/Podcast-Cover-v99_v2.png" alt="" /></p> 
<p>中秋快乐呀大家！🎉</p> 
<p>我(Justin)是<a href="https://space.bilibili.com/13297724">Gamker攻壳游戏</a>的忠实老粉，上个月底(2023年8月20日)攻壳的“万物破元游戏博物馆”开业第一天我就去了，也买了同日上架Steam的游戏<a href="https://store.steampowered.com/app/2524480/_Cozy_Space/?l=schinese">《物宅空间》</a>。后来在朋友的介绍下终于见到真人版的<a href="https://weibo.com/n/GAMKER%E6%94%BB%E5%A3%B3">聂胖</a>，一起聊游戏，从模拟城市到P社到大航海时代，童年回忆不断翻涌，特别开心。</p> 
<p>那天还见到<a href="https://weibo.com/u/1631499041">拼命玩三郎</a>，他们正好在忙今年的indiePlay中国独立游戏大赛评选，百忙中三郎还带我们看了内馆里由广州朋友制作的神器，一款基于i386处理器，掌机大小的，运行Windows 95的机器。在上面打开《仙剑奇侠传》听到8-bit配乐的时候真的，鸡皮疙瘩都起来了。</p> 
<p>那次见面之后我特别特别开心，能亲眼见到热爱游戏的人，充满热情地做自己喜欢的事业，虽然理想主义一词已经有点泛滥的，但看到大家眼里的光，我也倍受感动。</p> 
<p>于是本期节目，我们邀请到Gamker攻壳游戏工作室的创始人聂俊(江湖人称聂胖，聂师傅)，我们一起聊游戏，聊最近攻壳开业的“万物破元游戏博物馆”，聊工作室上架的第一款游戏《物宅空间》。</p> 
<p>能跟充满热情的人一起聊天的感觉真的很棒，希望收听我们的节目的大家，也能找到自己的热爱，找到自己心中的光。人生没有既成的答案，没有主线支线。道阻且长，无论我做什么，做成什么样，太阳照常升起。所以希望大家都能追寻自己心中的光，寻得充实且热爱的人生。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:16 先有Gamker游戏频道，还是先有游戏工作室？</li> 
 <li>00:05:16 最近上架的第一款游戏《物宅空间》，因搬家而生？</li> 
 <li>00:06:55 玩模拟人生到最后都只建房子不玩故事了</li> 
 <li>00:09:34 🐱🐱🐱</li> 
 <li>00:12:18 今年大热的AI对游戏开发有帮助吗？</li> 
 <li>00:15:16 假如用AI来控制NPC</li> 
 <li>00:20:25 什么时候想到要开一个游戏博物馆的？</li> 
 <li>00:22:05 万物破元其实也是缘发生的线下空间</li> 
 <li>00:27:28 发生在这个空间里的动人的画面</li> 
 <li>00:31:27 为什么叫做“万物破元”？</li> 
 <li>00:41:09 印象最深刻，最有故事的三件藏品是什么？</li> 
 <li>00:51:52 万物破元未来跟其他博物的合作？</li> 
 <li>01:00:25 听友提问: 怎么看最近的Unity涨价风波？</li> 
 <li>01:08:53 灵魂三问</li> 
 <li>01:20:17 片尾曲: 久石让《太阳照常升起》The Sun Also Rises</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li><a href="https://space.bilibili.com/13297724">Bilibili Gamker攻壳</a></li> 
 <li><a href="https://www.youtube.com/@Gamker-YT">YouTube Gamker攻壳官方频道</a></li> 
 <li><a href="https://store.steampowered.com/app/2524480/_Cozy_Space/?l=schinese">Steam -《物宅空间》</a></li> 
 <li>万物破元游戏博物馆，位于广州市VLAB翌方181创意园，大家可以在微信搜索“万物破元游戏博物馆”，关注后在底部“购票预约”入口购票。</li> 
 <li>馆内陈设多款古老的游戏机比如GameBoy，NDS，PS1，世嘉土星等等，还有很多正版游戏光盘，如大宇的《仙剑》系列、黑岛的《冰风之谷》、Maxis的《模拟城市》等等</li> 
 <li>更有PS5, Xbox, Switch, 小霸王，红白机等多台设备供大家坐下玩耍，如果玩累了还可以开一会硬核的塞车模拟器，体验车子上墙的感觉😂</li> 
 <li>Gamker官方微博: <a href="https://weibo.com/n/GAMKER%E6%94%BB%E5%A3%B3">GAMKER攻壳</a></li> 
 <li>拼命玩三郎微博: <a href="https://weibo.com/n/%E6%8B%BC%E5%91%BD%E7%8E%A9%E4%B8%89%E9%83%8E">拼命玩三郎</a>，小红书账号同名</li> 
 <li>片尾曲: 久石让《太阳照常升起》The Sun Also Rises</li> 
 <li>嘉宾: 聂俊，Gamker攻壳游戏工作室创始人</li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>后期: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 98 &#x82F9;&#x679C;2023&#x79CB;&#x5B63;&#x53D1;&#x5E03;&#x4F1A;: Wonderlust</title>
        <link>https://justinyan.eth.limo/D2B1BE84-81BC-48A7-994E-ED02AF67DA20/</link>
        <guid>https://justinyan.eth.limo/D2B1BE84-81BC-48A7-994E-ED02AF67DA20/</guid>
        <pubDate>Thu, 14 Sep 2023 21:43:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/09/Podcast-Cover-v98.png" alt="" /></p> 
<p>北京时间2023年9月13日凌晨1点，苹果召开秋季发布会，线下地点在Apple Park的Steve Jobs Theater，线上同步直播。目前已经有些媒体在发布会结束后的hands-on环节上手体验了iPhone 15系列新机。</p> 
<p>本次发布会苹果带来了Apple Watch与iPhone 15新品，基本上都走一个普通与专业两条线的产品思路。部分功能只有带Pro的机型才有。</p> 
<p>虽然设计上可以理解，但也为不少消费者抱怨非Pro的机型砍掉的东西太多。比如本次发布会亮相的USB C接口，这次苹果自2012年在iPhone 5上启用Lightning接口以来，时隔11年正式对iPhone接口进行更换。这里面当然有欧盟强制执行的成分在，但苹果成功地将其包装为一次产品升级。而新接口在Pro机型上采用USB 3传输标准，在非Pro机型却仍沿用USB 2.0也是本次发布会引发争议的一点。</p> 
<p>总得来说，相较于去年iPhone 14的发布，本次新品升级算是挤牙膏，虽然3nm工艺的A17 Pro芯片非常给力，GPU大升级也秀足了肌肉。但硬件升级最终得通过生态繁荣来体现，这些有就待日后手游产业的发展了。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:57 Apple Watch系列更新</li> 
 <li>00:07:55 新增Double Tap手势</li> 
 <li>00:11:09 苹果继续环保，宣布供应链与制造商都将执行Carbon Neutral 2023计划</li> 
 <li>00:14:49 Apple Ultra 2</li> 
 <li>00:18:41 iPhone 15系列发布</li> 
 <li>00:25:29 苹果全线产品更换至USB-C接口</li> 
 <li>00:26:30 iPhone 15 Pro系列，Pro在哪里？</li> 
 <li>00:29:12 去掉静音键，改为Action Button</li> 
 <li>00:34:34 Pro的USB-C接口支援USB 3标准</li> 
 <li>00:37:57 GPU大升级!桌面级手游时代到来？</li> 
 <li>00:45:12 iPhone 15摄像头改进，支持拍摄全景照片、视频</li> 
 <li>00:48:48 电池升级了吗？</li> 
 <li>00:53:20 新iPhone买不买？</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>Wonderlust: 苹果自造的一个词，玩的是Wanderlust的谐音梗。Wanderlust是强烈渴望脱离日常生活，去旅行探索世界的意思，改为Wonderlust则保有探索世界的意味的同时又兼有保持好奇的意思。</li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6BCF;&#x4E2A;&#x4EBA;&#x6BCF;&#x5929;&#x90FD;&#x53EA;&#x6709;24&#x5C0F;&#x65F6;&#xFF0C;&#x5E0C;&#x671B;&#x6211;&#x7684;&#x9009;&#x62E9;&#x771F;&#x7684;&#x662F;&#x6211;&#x7684;&#x9009;&#x62E9;</title>
        <link>https://justinyan.eth.limo/E0430458-F543-43A2-BEF5-39A40B40886D/</link>
        <guid>https://justinyan.eth.limo/E0430458-F543-43A2-BEF5-39A40B40886D/</guid>
        <pubDate>Thu, 31 Aug 2023 23:11:55 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/08/inner-exploration-cover.jpg" alt="" /></p> 
<p>我们生活在一个变化迅速的时代。这些变化一般被宣传为蓬勃的，积极的，向上的，比如科技日新月异，经济崛起腾飞，等等诸如此类。但对个体而言，这些变化也是一种挑战。</p> 
<p>通过各国多年间的贸易往来、资本互通、人口流动和知识传播，这些变化深刻影响了几乎所有国家的经济、政治与文化。中国改革开放还没不到50年，大家想必对“全球化”的体会更为深切。</p> 
<p>韩国首尔大学社会学系的张庆燮提出“压缩现代性”的概念，在经济后起的东亚社会，我们所面临的挑战比西方发达国家更大。因为西方国家经历了过去几百年的演变，人们的社会观念，道德伦理在代际更迭中可以更顺滑地转化——通俗的讲，父辈子辈的观念即便有所不同，几百年的时间也足够更换很多代人。可东亚国家就不一样了，长达数千年的“传统文化”给我们提供了一套非常完整且严格的规范。过去我们只需按照“传统”行事就行，虽然无趣，但不至于“不知道该做什么”。</p> 
<p>比如我生长的地区，小孩子到了一定年纪就要办“成人礼”。父母只需要根据村里老人的说法，在某个时辰（通常是凌晨），某个地点（通常是村里的祠堂），摆好祭神的盛宴，让这个小孩子穿着特定的服饰（通常必备的是肚兜、木屐）去磕头行礼。在古代社会，“成人”意味着孩子要走出家庭，到更广阔的天地去，或求学士官，或从事商贾。这些“礼”提供了人们行事的规范，也宣示了古代农业社会的嫡庶之分，男女之别，人们在照做的过程中习得了所处社会的等级制度。</p> 
<p>可见这些“传统礼仪”不仅有“仪式感”的作用，也有实际教育作用。在儒家，“礼”就是提供一套社会行为规范，不同的人有不同的身份，不同的身份应该履行何种礼仪何种义务均在其中，等级制度以此形成。</p> 
<p>在古代社会，我们的传统讲究“仁义礼智信”。在现代，我们要在短短数十年间，一边承袭“传统”，一边应对时代的变化。而且这些变化正在加速，我前阵子读了 Gay Talese (盖伊·特立斯)于1980年出版的 <em>Thy Neighbor's Wife</em>（简体译为<a href="https://book.douban.com/subject/27091742/">《邻人之妻》</a>）。这本书让我意识到，刻板印象中“一直很开放”的美国，在60年代也“十分保守”。可见即便是美国，他们也在经历加速的社会观念变化。这些变化渗透在经济、政治、文化等多个领域。1960年代，裸体出版物在美国还是违法的，《花花公子》的创始人经常被告，性解放运动也才刚刚开始。而到了70年代后期，《花花公子》已可以光明正大地发行，达到它销量与影响力的巅峰。</p> 
<p>“社会规范”的更新是滞后的，而社会变革是超前的。这就解释了为什么我们学校教育的“家国理想”，市场需要的“商业技能”，和家庭提倡的“传统责任”，会有相当程度的不同，以及它们之间产生的张力对学生时代的我们造成的不同方向上的拉扯。复旦大学社会科学系的郑雅君在她出版的《金榜题名之后:大学生出路分化之谜》一作中，展示了来自不同环境的学生，在应对同样巨变的社会环境时截然不同的反应与选择。</p> 
<p>学生们的迷茫与不知所措，我也感同身受。不仅仅是职业选择，更是“想要什么不想要什么”，“因为什么而痛苦，因为什么而快乐”，“人生是否应该追求快乐”，“人生的意义是什么”之类的我都觉得离谱的困惑。</p> 
<p>上述所谓“压缩现代性”带来的矛盾与冲突是来自社会学的角度。人类是社会性动物，除了社会层面的影响以外，身边人的影响也十分显著。每个人成长环境不同，所面对的人生课题也不同。郑雅君在<a href="https://book.douban.com/subject/36190074/">《金榜题名之后》</a>一书中分析了出身“弱势家庭”与“优势家庭”的学生，在上大学以前，他们的文化背景、眼界视野等“软实力”差距已不言而喻。显然，这些学生在就业选择上会侧重的方向就不一样。</p> 
<p>这些作出职业选择的基础，在后续的人生仍将持续产生影响。我自己在作长期规划时会把我认为重要的课题排列出来（在<a href="https://justinyan.me/post/tag/%E4%B8%AA%E4%BA%BAOKR%E5%AE%9E%E8%B7%B5">这一系列文章</a>中有介绍该方法），近些年我觉得最为重要的是两个课题：</p> 
<ol> 
 <li>职业生涯 Career</li> 
 <li>人际关系 Relationship</li> 
</ol> 
<p>职业生涯不只是当前的工作，而是在接下来的人生当中，自己希望把时间用在什么事业上，这项事业可以是多元的，也可以是单一的，可以产生收入，也可以为爱发电。在古代，工作即一个人的身份标识(identity)，在我们这个时代，全职工作只是职业生涯的一部分，不一定是全部。</p> 
<p>2007 年 Tim Ferris (蒂莫西·费里斯)出版了 <em>The 4-Hour Workweek</em> 一书（简体译为<a href="https://book.douban.com/subject/27065607/">《每周工作4小时》</a>），这本书的副标题是: Escape 9-5, Live Anywhere, and Join the New Rich。事实上 Tim Ferris 在此之前每天工作14小时，堪比996。正因为他尝试过“传统”的路径，觉得不适合自己，才会努力去探索新的生活方式。也是因为这个时代为他提供了新的支持，才使得他的探索得以实现。比如只要带一台电脑就可以在泰国边度假边工作，这在工匠时代是不可想象的。与此同时，新时代也存在大量新问题。</p> 
<p>2018 年 David Graeber (大卫·格雷伯)出版了 <em>Bullshit Jobs</em> 一书（简体译为<a href="https://book.douban.com/subject/35929434/">《毫无意义的工作》</a>），这本书在 2022 年由中信出版社引入简体版之后，迅速获得广大打工人的追捧，成为“螺丝钉”们的代言。</p> 
<p>两本书都指出现代人痛苦的部分来源，其一是工作内容毫无意义，上班就是拧螺丝；其二是工作时间还非常长，个人时间变得稀缺。痛苦归痛苦，每天晚上灯火通明的办公楼照出了大部分人的实际选择。为什么大部分人还要一边震天叫骂一边似飞蛾扑火般自投罗网呢？</p> 
<p>拧螺丝的出现是大公司精细分工带来的必然结果，大公司是以技术发展为前提的大型组织。工业革命以前，到手工作坊当学徒是大部分人的“职业选择”。大工厂诞生以后，企业家给他的机器配上了“操作员”。农地变成了工厂，农民被迫成了工人。只要机器不开机，生产就会停滞，于是企业家恨不得工人24小时上班。直到1810年 Robert Own 喊出了 eight hours labour, eight hours recreation, eight hours rest (8小时工作，8小时休闲，8小时睡觉)的口号，才有了后人的朝九晚五。父母在工厂“按时上班”，孩子也会无人照顾。于是学校也要配合新的工业化形态，将孩子们培养成未来的工人，按时上学下学，逐渐形成了现代教育规范。1998 年 Zygmunt Bauman (齐格蒙特•鲍曼)出版了 <em>Work, Consumerism and the New Poor</em> 一书（简体译为<a href="https://book.douban.com/subject/35593780/">《工作、消费主义和新穷人》</a>）中指出，我们现在习以为常的“工作伦理”——比如人不能没有工作的，工作的时候要勤奋努力等等——这些社会规范是由工厂资本家、新教伦理和政府等多方为了自己的利益共同促成的。他们的宣传势力强大，足以形成多数人认可的社会伦理。1932 年 Aldous Huxley (奥尔德斯·赫胥黎)出版的 <em>Brave New World</em>（简体译为<a href="https://book.douban.com/subject/25782520/">《美丽新世界》</a>）以及 1949 年 George Orwell (乔治·奥威尔)出版的 <em>1984</em>（简体译为<a href="https://book.douban.com/subject/5406563/">《一九八四》</a>）展示了宣传机器的一种面貌。另一方面，现代全球经济的运转机制过度强调“消费”而促成的消费主义陷阱亦无孔不入。</p> 
<p>如前文所云，人类是社会性动物，社会规范意味着大部分人认可或允许其存在的行为指南，如果一个人的行为不符合该规范，则很容易被视为异类，被群体排斥。在原始部落时代，这样的社群排斥很可能是致命的。最近几百年，社会巨变，可人类的大脑与身体却和几万年前的几乎一样。这就使得个体在瞬息万变的现代社会很容易产生不适应，在面对人生重大抉择的时候，选择随大流还是选择不一样的道路，显然前者是更容易做到的。</p> 
<p>选择随大流，我只需要找到既有的社会规范，照做就可以了，他的难度体现在照做也未必能做得好，但至少有迹可循。比如社会鼓励“赚大钱”，鼓励开豪车住豪宅，那我就照做，努力找高薪的工作，买豪车，住豪宅。我不一定做得到，但好歹目标已经给我设定好了，我既不需要思考这个目标为何存在，也不需要深究我到底是不是真的想要或需要达成这个目标。</p> 
<p>而为了走自己内心真正想要的路，其必要前提就是了解自己想要什么。光是回答这个问题已十分不易。在我很喜欢的 Blogger Tim Urban 他写过 <a href="https://waitbutwhy.com/2018/04/picking-career.html">How to Pick a Career (That Actually Fits You)</a> 一文，文中他以“欲望的八爪鱼”和“审问地下室”的方式帮助自己了解这些“赚大钱”，“住大House”的欲望到底来自哪里。这些方法通俗易懂，值得一读。</p> 
<p>在岸见一郎与古贺史健合著的讲述阿德勒心理学的一书<a href="https://book.douban.com/subject/26369699/">《被讨厌的勇气》</a>中，则提供了另一种反向思考的角度。书中提到一个有“红脸症”女孩的故事，她只要一跟人说话就脸红所以没有办法去认识陌生人，于是她来寻求老师帮助。于是老师问她：“如果你治好了你的红脸症，你想做什么呢？”女孩思考了一下说：“我想去跟喜欢的男孩子表白。”老师说：“嗯，这就是为什么你会脸红的原因。因为你不想去跟他表白。”因为她不希望表白了之后被人拒绝。</p> 
<p>所以虽然我行动上作出了某个选择，表面上看起来好像很痛苦，但实际上我的内心就是想要这个行动的结果。阿德勒心理学在《被讨厌的勇气》中被应用得拳拳到肉，是一本发人深省的书。不过分析技巧不一定要这么极端，浙大的陈海贤老师 2019 年出版的<a href="https://book.douban.com/subject/34836531/">《了不起的我》</a>一书中提到一种“心理免疫的X光片”分析方法，一共分为4步，我们试试以小明为例分析996这件事情。</p> 
<p>假设小明在一个互联网企业工作，近期正好赶上一个迭代紧密的项目，时间紧任务重，不得不996，这让小明很痛苦。</p> 
<ol> 
 <li>小明希望达成的目标： 
  <ul> 
   <li>不要996工作，能有更多的个人时间，看电影玩游戏，陪女朋友以平息她的怒气。</li> 
  </ul></li> 
 <li>小明正在做哪些跟目标完全相反的行为 
  <ul> 
   <li>乖乖996，甚至007。</li> 
  </ul></li> 
 <li>这些与目标相反的行为有哪些隐含的好处或可以避免的损失 
  <ul> 
   <li>小明的项目正在起步阶段，乖乖听老板的话，努力干活，勤奋向上，希望项目上线后可以休息一下。另一方面，这既是挑战也是机会，大家都想要抓住机会，而且如果我不这么干，老板把我开了呢？</li> 
  </ul></li> 
 <li>小明内心有一个重大的假设，这个假设是什么？ 
  <ul> 
   <li>如果小明不996，老板就会把他开掉。反过来小明如果996，就能获得老板认可。那么这个假设是否成立呢？我想读者朋友们如果有一定工作经验，应该不难下判断。</li> 
  </ul></li> 
</ol> 
<p>只是分析小明被迫996的表象，已能帮助小明更了解自己的内心，事实上前面提到的几种分析方法还能继续往下走，比如为什么这个社会要提倡勤奋工作，人不能没有工作呢？按照这个规范， Tim Ferris 每周工作4小时是不是该被贬斥为懒惰的人了？可是看起来好像大家还挺羡慕他的状态，觉得他很聪明呢？在这个时代，我相信骂他懒惰和夸他聪明的人都有，但要真正对一个人下判断之前，最好是深入了解他的所作所为。不要只看到一个人在网路上的一面就急于评价。</p> 
<p>自从社交网络的兴起以后，人们越来越擅长在社交网络发表自己的高光时刻，以获取更多点赞。来自瑞典的精神科医生 Anders Hansen (安德斯·汉森)的作品 <em>Skärmhjärnan</em>（简体译为<a href="https://book.douban.com/subject/36091480/">《手机大脑》</a>）指出人类这颗几万年前的大脑不断被现代社会的各种信息刺激而沦陷的现象。Neil Postman (尼尔·波兹曼)在 1985 年出版的 <em>Amusing Ourselves to Death</em> （简体译为<a href="https://book.douban.com/subject/26319730/">《娱乐至死》</a>）已经指出美国人不再阅读，而是被劣质的电视节目捕获，这将使越来越多的人不愿意训练自己的主动阅读能力，而是等着被喂养。虽然几十年过去了，电子游戏、“网瘾”等新科技纷纷登场取代电视节目的位置，但似乎书中所预言的反乌托邦景象并未真的发生。在《手机大脑》一书中，作者认为手机与电视、电子游戏的不同在于它无时无刻不被人类使用。每天使用4小时以上已成为常态，这种对人类大脑的侵入程度是前所未有的。</p> 
<p>我十分赞同。而且在互联网刚起步的理想主义时代，大家提倡信息自由，从 Web 1.0 自己制作静态网页对外发布信息，到 Web 2.0 开始有 BBS，Blog，RSS 等允许大家参与信息发布的形态。无不在鼓励人们“主动获取”信息，“主动输出”信息。而自从 Google Reader 倒下以后，Facebook/今日头条式的喂养服务开始大行其道，及至现如今抖音/Tik Tok的短视频推荐，无不针对人类大脑的弱点进行攻击。</p> 
<p>Daniel Lieberman (丹尼尔·利伯曼)在 2018 年出版的 <em>The Molecule of More</em> （简体译为<a href="https://book.douban.com/subject/35545272/">《贪婪的多巴胺》</a>）一书中解释了多巴胺这一化学物如何驱动人类的行为。有时候人们误解“多巴胺等于快乐”，其实多巴胺在人类大脑的奖励系统中只是负责“驱动人们做某事”，提供驱动力，但不保证结果一定快乐，甚至可能结果是自我伤害。这本书的原名直译是《想要更多的分子：你大脑里的一个单一化合物如何驱使爱、性与创造—以及它如何决定人类种族的命运》。</p> 
<p>针对无限刷手机这一现象，人们提出一个词，叫做 Doom Scrolling （“末日刷屏”）。其背后的动力来源就是手机App针对多巴胺驱动的陷阱。虽然像纪录片 <em>The Social Dilemma</em> （简体译为<a href="https://movie.douban.com/subject/34960008/">《监视资本主义》</a>），还有不少书可以点出其中有害的一面，但造成的实质影响却很有限。</p> 
<p>毕竟，接受多巴胺的驱动，很舒服。</p> 
<p>随大流，很舒服。</p> 
<p>而向内探索，拨开层层保护，找到真正想要的东西，很痛苦。但无论是随大流的痛苦还是向内探索的痛苦，都是值得庆幸的。因为如果不了解这个世界“存在另一种可能”的话，就不会产生痛苦。</p> 
<p>英国的精神分析与社会理论家 Erich Fromm (艾里希·弗洛姆) 1941 年出版的作品 <em>Escape from Freedom</em> （简体译为<a href="https://book.douban.com/subject/26418475/">《逃避自由》</a>）分析了新教改革前后及两次世界大战后的世界。在中世纪欧洲，人们由教会决定生活的方方面面，只要遵循“传统规范”赋予的行为准则就好了：如果我是铁匠，我就每天打铁，如果我是面包师，我就每天做面包。我不属于我，我属于一个更大的组织，这个组织可能是教会，也可能是行业工会。生活十分稳定，活动范围很小，日子一眼看得到尽头。如果希望发挥自主创造性，我就把武器打造得更锋利，把面包做得更好吃。</p> 
<p>新教改革以后，这些“传统规范”没了。马丁·路德掀起的改革浪潮呼应了人们在资本主义发展过程中，既获得“自由”，又失去“传统”保护的心理状态。失去“保护”可不是件令人开心的事情。</p> 
<p>今天如果有人在提问网站上面问：“我该选择一眼望到头的工作还是选择自由职业”，也许会有人回答：“肯定是自由职业啊！”。</p> 
<p>为什么呢？如果提问的人有那么“肯定”的话，恐怕也不会来提问了。</p> 
<p>最近有个20年前央视《半边天》栏目访谈农村妇女刘小样的视频广为传播。刘小样生长在一个传统力量强大的环境里，几乎从她呱呱坠地那一刻起，人生就被写死在不断循环的“传统”里。</p> 
<blockquote> 
 <p>在农村，有钱可以盖房，但不可以买书；</p> 
 <p>可以打牌闲聊，但不可以去西安。</p> 
 <p>不可以交际，不可以太张扬，不可以太个性，不可以太好，不可以太坏。</p> 
 <p>有约定俗成的规矩，要打破它就会感到无助、无望、孤独，好像好多眼睛在盯着你。</p> 
 <p>不需要别人阻止你，你会自觉自愿地去遵守这些规矩。</p> 
</blockquote> 
<p>刘小样的冲突不在于“传统”本身，而在于“外面的世界”存在自由的可能。她想要去探索“外面的世界”，可是就这样一脚踏入自由的话，那多令人恐惧啊！孤独感，无能为力感扑面而来，旧传统已破，新规则未立。不是每个人都能轻易寻得新的替代，也不是每个人都喜欢建立新规则的冒险。所以与其恐惧，不如臣服。</p> 
<p>《逃避自由》举了一个比较极端的例子：纳粹执政时期的社会心理结构。在面对自由焦虑的过程中，人可以选择鼓起勇气，在恐惧与孤独的伴随中与黑暗搏杀，也可以选择逃避自由，放弃个性，消融在一个更伟大的东西里。对于中世纪的人们来说，这个更的伟大的东西是宗教，而对二战期间的德国人来说，这个更伟大的东西，是纳粹主义。</p> 
<p>我们现在所处的主流社会没有世界大战，没有纳粹主义。但是个人意识在觉醒，而“选择自由”的恐惧却不减。从社会学的角度来说，我们的社会需要更多配套的福利保障制度，帮助我们在进行多次试错后仍能为人生托底。从个体的角度来说，我们的人生规划不仅需要个人意识的觉醒，也需要深入探索内心真正想要的东西，而不是把自己的人生寄托于外部赋予的现成答案。</p> 
<p>这些现成的答案很多，“荣华富贵”可能是最世俗最简单也最容易被量化的现成答案了。在学校里就把分数提高，出了学校就把财富数字提高。我分数比你高我就厉害，你的存款比我多你就厉害。在这个最容易被理解的指标里面，存在一个单一数值，同时也存在一个隐含的竞争关系。毕竟只要范围足够小，大家就容易玩成一个零和游戏甚至负和游戏。在这样的游戏里，不竞争，怎么活下去，不比较，这个数值还有什么意义。</p> 
<p>可是人生并不是一个与外部竞争的游戏啊。英国纽卡斯尔大学的行为科学教授 Daniel Nettle (丹尼尔·列托)在 2005 年出版的 <em>Happiness: The Science Behind Your Smile</em> （简体译为<a href="https://book.douban.com/subject/4737101/">《追究幸福：微笑中的科学》</a>）提出的观点我十分认同：幸福并不主要产生于这个世界，而是来自于对待这个世界的方式。</p> 
<p>也就是说，通过向外的追寻，比较，竞争，我们再怎么努力也追不到真正的幸福。刷短视频可以满足一时的娱乐放松，但无限刷短视频刷不来真正的快乐。在多巴胺的刺激下，我们“想要”更多不确定的内容，“想要”看看下一个短视频是什么，但“想要”不等于喜爱。</p> 
<p>以前常听说 Time is Money，现在更常听说 Money is Time。</p> 
<p>最近读 George Gilder (乔治·吉尔德) 2023 年出版的<a href="https://book.douban.com/subject/36403216/">新书</a> <em>Life After Capitalism: The Meaning of Wealth, the Future of the Economy, and the Time Theory of Money</em>（暂无简体版，直译为《后资本主义时代的生活：财富的意义、经济的未来以及金钱的时间理论》），他从经济学的角度分析人类经济的基础并不来自传统经济学、唯物主义者认为的“物质的稀缺”，而是来自“知识”。虽然这本书和本文主旨关系不大，但书中提到“时间”是对所有现代人都最公平的东西，我深表赞同。</p> 
<p>我自己有一份全职工作，业余时间写Blog，录Podcast，开发自己的App和服务，多年来一直如此。按这两年的流行词说法，我这叫 Slash Youth（斜杠青年）。有时候朋友会说：“诶你怎么有这么多时间可以又上班又看书又做播客的？”我通常都会回答：“每个人每天都有24小时，大家使用这24小时的方式不同而已。”</p> 
<p>这里还有社交网络传递信息的偏差，比如我拍摄一张咖啡店的照片，配一小段文字说我尝试了新店。在别人看来你好像在到处跑，度过了一个美好的周末，实际上我可能只是整个周末都在忙各种事情，正好路过一家咖啡店，花10分钟买了杯咖啡而已。这种透过社交网络的小孔窥视别人的人生的方式，很容易放大别人的真实经历。</p> 
<p>但回到每天24小时这件事情上来，因为我喜欢读书所以我每天都会有些时间用在阅读上。假设每天阅读1小时，而这1小时也许我的朋友用在刷抖音，或者看电视剧，或者玩游戏，或者跟别人约会。这些都是合理使用时间的方式，毕竟时间是自己的，不是任何人的，爱怎么用别人管不着。</p> 
<p>但是时间一点点流逝，我们的年龄在一天天增加，而人类的寿命始终是有限的。</p> 
<p>人终有一死，我们可以很明确地知道自己一定会死，但我们不知道在什么地方，什么时间，以什么样的方式死去。于是我们会有死亡焦虑。</p> 
<p>前两年我开始作长期个人计划，实践下来我发现很有助于我发现当下决策与未来的联系。一开始只作月度计划，并试图将一个月的目标与总目标关联。但今年我开始多看几个月，比如看到年底，可能会发生什么事情。比如我是不是希望去旅行度假，那么此刻我应该做些什么来让这件事情顺利发生？几个月前打球的时候我把脚崴了。当时我觉得过几天可能就好了，也许不用去医院那么麻烦。但当我把目光拉长到年底，如果去旅行可能要走很长的路，我的脚伤不好我就去不了，于是我就乖乖去医院了。</p> 
<p>很多时候我们的随大流选择，还带有“不用考虑未来”的好处。当下我身边的人是怎么做的，我跟着做就好了。于是从脚伤这件事情我就开始思考，一年后我希望自己变成什么样子，十年后呢？</p> 
<p>如果是一个大学生，十年后会希望自己的职业生涯有怎样的发展呢？在我们播客《<a href="https://justinyan.me/post/5753">Vol. 94 是光诗歌: 用诗歌发现大山孩子手里的光</a>》这期节目里，是光诗歌公益组织的两位创始人在大学时期就慢慢建立自己对未来想要从事的事业的方向；在《<a href="https://justinyan.me/post/5785">Vol. 97 Harry: 数字游民与独立开发</a>》这期节目里，独立开发者 Harry 在小孩子出生以后开始规划家庭的未来；在《<a href="https://justinyan.me/post/4848">Vol. 60 Sofish: 35岁不工作了，中场休息时他是怎么想的？</a>》这期节目，Sofish 则选择不工作了先休息一下。那么我呢？十年后我也会是小孩子的父亲吗？如果是的话，我会希望自己成为一个怎样的父亲呢？我此刻应该做些什么呢？</p> 
<p>美国的存在主义精神分析师 Irvin Yalom (欧文·亚隆)于 2008 年出版的 <em>Staring at the Sun: Overcoming the Terror of Death</em>（简体译为<a href="https://book.douban.com/subject/26660579/">《直视骄阳：征服死亡恐惧》</a>）一书中直接把目光瞄准了一个人能达到的最远的未来：死亡之日。</p> 
<p>杜甫的时代，人生七十古来稀。现在我们的平均寿命要长得多，假设我能活到90岁，剩下的几十年我希望自己如何度过？焦虑是一种对未来的情绪，未来意味着尚未发生。适当的焦虑有助我们产生解决可能出现的问题的动力，死亡焦虑则可能是人类能体验到的最高级别的动力。</p> 
<p>这种力量有时候可能过于汹涌澎湃，以至将自己淹没。《直视骄阳》一书讲述的是作者在做心理咨询时遇到的各种案例，也包括作者自己面对死亡焦虑袭来时的自我分析。我想有时候大家的选择，往深处分析总会跟死亡焦虑有关。我降生到这个世界，希望对这个世界产生影响，希望留下点什么，时间在一点点流逝，死亡日期在一步步迫近，即便我把这些念头埋进潜意识里，它也会通过某种方式在意识层面浮现出来。</p> 
<p>通常它会带着各种伪装，比如把它的欲望包装成是父母的期待，是妻子丈夫的期待，要揭下这层伪装，就需要我们向内探索，向内探索，最终都会走到对自己死亡的探索。</p> 
<p>美国的投资人 Bill Perkins (比尔·帕金斯)在他 2022 年出版的 <em>Die With Zero</em>（简体译为<a href="https://book.douban.com/subject/36242339/">《最优解人生》</a>）一书中指出我们所赚取的金钱都是通过消耗我们的生命获取的，所以最好的消耗生命的方式就是在死亡之前把所有钱都花光。作者的想法有点极端，但提供了一个有意思的角度：假设能活到90岁，那么从今天开始算起，把剩下的生命时间以5年或10年为间隔切分成多个桶，把自己想做的事情放进每个桶里。这样我们会发现，20岁，30岁我们还能滑雪，能做各种极限运动，60岁，70岁就不一定了。我们被迫从什么时间能做什么事的角度来看到自己的人生，而不是一味地“延迟满足”。</p> 
<p>至于我们赚到的钱事实上都是生命这个概念，美国的 Vicki Robin (维姬·罗宾) 1992 年出版的 ****<em>Your Money Or Your Life: Transforming Your Relationship with Money and Achieving Financial Independence</em>（简体译为<a href="https://book.douban.com/subject/35611477/">《要钱还是要生活：没有财务自由，也能提前退休》</a>）一书中就曾提出过把收入换算成生命能量的做法，很有意思。有用的地方在于，迫使我们把“努力赚很多很多钱”这种无上限的思维，转换成每天只有24小时，人终有一死的有限思维。只有在“有限”的框架下，我们才愿意去思考什么是重要的，什么是次要的。</p> 
<p>这些都是很有启发的想法，让我们暂时跳出习惯性的短视逻辑，以更长的时间线俯瞰人生。不管是4-Hour Work Week后开始的数字游民，还是这些年兴起的 F.I.R.E 运动（Financial Independence, Retire Early），都是在现代社会的基础上，人们为了脱离原有的“传统束缚”，挣脱枷锁自由的同时，为自己的失去的“传统保护”寻找替代方案的探索过程。这些人无疑是勇敢而且极富创造力的。</p> 
<p>勇敢不是鲁莽。勇敢是明知前路凶险，却依然愿意投身其中，并对自己充满自信，觉得一切问题终有解法。1847 年，在那个女性写作仍被世人侧目的时代，英国的 Charlotte Brontë (夏洛蒂·勃朗特)以 Currer Bell (科勒·贝尔)的男性化的名字出版了小说 <em>Jane Eyre</em> （简体译为<a href="https://book.douban.com/subject/5063804/">《简·爱》</a>）。小说取材自 Charlotte Brontë 的童年生活，并将作者对生活的希望投射其中。小说女主角 Jane，从寄养家庭到教会学校的变迁是被动的，但她主动求得家庭教师一职，离开学校踏入桑菲尔德庄园则是她改变自己人生的重要一步。</p> 
<p>踏入自由是可怕的，Jane 是勇敢的。阅读《简·爱》，我佩服主人公的勇气，但不清楚她勇气的来源。2020 年 Eric Jorgenson (埃里克·乔根森)在传奇投资人 Naval Ravikant (纳瓦尔•拉维坎特)的授权下，把 Naval 的Tweets，文章和接受的采访等材料编辑成 <em>The Almanack of Naval Ravikant</em> 一书（简体译为<a href="https://book.douban.com/subject/35876121/">《纳瓦尔宝典》</a>）。Naval 在书中以碎片式的文字讲述了他的人生哲学，包括财富、幸福、自我救赎、哲学等层面。他在书中说:”The Present is All We Have.”（我们唯一拥有的就是当下。）</p> 
<p>当下，是什么？和向内探索有什么关联？</p> 
<p>UCLA 认知神经科学博士 Sam Harris (萨姆·哈里斯)在 2014 年出版的 Waking Up（简体译为<a href="https://book.douban.com/subject/35706913/">《“活在当下”指南》</a>）一书指出心智独立于大脑之外，试图以“非宗教语言”的形式解释人类的精神追求。精神体验本身难以通过文字描述传达，但我在阅读本书的过程中却逐步体会到“正念”，或“冥想”训练可能带来的好处，并开始学习正念冥想(Mindfulness)。</p> 
<p>一切真正的思维转变，都必须结合思考变化与物理训练。有时候人们会陷入一个误区，以为“精神”与“身体”可以分离，但其实二者相互结合，密不可分。加拿大多伦多大学的临床心理学家 Jordan Peterson (乔丹·彼得森)于 2018 年出版的 <em>12 Rules for Life</em>（简体译为<a href="https://book.douban.com/subject/34870933/">《人生十二法则》</a>）一书中提到血清素与章鱼胺是如何影响龙虾的精神状态的。龙虾是一种地盘意识很强的生物，两只龙虾在一场争夺地盘的斗争分出胜负之后，它们体内的血清素和章鱼胺水平会发生明显变化。血清素高、章鱼胺低的龙虾往往会变得趾高气昂，斗志满满，反之则垂头丧气，毫无战意。实际上血清素也被用于治疗人类的抑郁症。</p> 
<p><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3044190/">有研究表明</a>，冥想训练有助于提升人体血清素水平。冥想源自东方宗教，在佛教中表现为禅观打坐。这种内观训练是一种精神训练，因为带有舒缓精神压力的副作用，所以在现代社会又再度流行起来。训练形式多样，“呼吸观察”是最容易入门也最常见的一种。通过冥想训练，可以强化我们挣脱芜杂念头的能力。</p> 
<p>德国的 Eckhart Tolle 在某个夜晚陷入了严重的抑郁，他觉得生活的一切都充满敌意，毫无意义，尤其厌恶自己的存在。他想：“我再也无法忍受我自己了！”</p> 
<p>这时候他突然想到：“我是一个人还是两个人？如果我不能忍受我自己，那么肯定有两个我：‘我’和‘自己’。”也许，其中只有一个是真实的。后来他追求精神上的探索，于 1977 年出版了 <em>The Power of Now</em> (简体译为<a href="https://book.douban.com/subject/2277299/">《当下的力量》</a>)一书，以现代的语言解释“我”和“心智”之间的关系。</p> 
<p>和美国的 Michael Singer 于 2007 年出版的 <em>The Untethered Soul</em>（简体译为<a href="https://book.douban.com/subject/35581777/">《清醒地活》</a>）相似，他们都指出心智存在与大脑之外。我们的大脑无时无刻充满各种声音，这是正常的，也是令人迷失的。</p> 
<p>“我”应该控制我的大脑，让大脑成为我的工具，而不是反过来被我的大脑控制。前文提到的 Doom Scrolling 无疑是被大脑控制的例子。当我正在 Doom Scrolling 状态时，我很可能无法察觉。不识庐山真面目，只缘身在此山中。冥想是帮助我们从当前状态抽离，静观自己内心的好方法。</p> 
<p>有一次我跟朋友聊天，我提到冥想与前面几本书。他说这几部作品的逻辑都源自佛教，并推荐我阅读斯里兰卡德宝法师(Henepola Gunaratana)的作品: Mindfulness in Plain English（简体译为<a href="https://book.douban.com/subject/3910883/">《观呼吸》</a>）。这是一本针对禅修方法的指南，冥想是其中一种。有些人可能是抱着“学习放松的方法”的想法来学习正念，但在佛教禅修当中，冥想并不仅仅是放松，放松只是它带来的副作用之一罢了。德宝法师的这本书，书如其名，In Plain English，非常平易近人，是学习冥想的人非常适合的读物。</p> 
<p>读完本作，我对佛教的核心理念又产生了进一步的兴趣。于是我的另一位朋友给我推荐宗萨蒋扬钦哲仁波切于 2007 年出版的 <em>What Makes You Not a Buddhist</em>（简体译为<a href="https://book.douban.com/subject/27136747/">《正见》</a>）。书名来自他一次坐飞机的经历，因为身穿藏红袍子，头发也剃了，所以邻座的先生觉得他应该是个佛教徒，两人就聊了起来。那位先生问了一个问题：“怎样才算一个佛教徒呢？”</p> 
<p>这个问题很简单，却也是最不容易回答。</p> 
<blockquote> 
 <p>如果问者真正有兴趣，那么完整的回答就不能在晚餐的闲聊中完成，而太过概括性的答案又会导致误解。</p> 
 <p>假设你要给他们正确的回答，那么答案就会直指佛教两千五百年传统的基础：如果一个人接受下列四项真理，他就是佛教徒：一切和合事物皆无常（诸行无常），一切情绪皆苦（诸漏皆苦），一切事物皆无自性（诸法无我），涅超越概念（涅寂静）。这四句佛陀宣说的话，称为“四法印”。</p> 
 <p>“印”在此处意指确定真实性之印记。虽然一般认为这四法印包含了佛教的一切，但在绝大多数的状况下，这种回答通常会冲淡了兴头，无法引起更多的趣味。话题也就转变，而结束了这个题目。</p> 
</blockquote> 
<p>于是宗萨蒋扬钦哲仁波切写了这本书，这本书的目的不是要吸引信徒，让大家都去追随释迦摩尼，成为佛教徒。他有意避开禅坐技巧，修行，而是直指悉达多的核心理念，也即四法印。</p> 
<p>我不是佛教徒因为我不能全然接受佛教的真理，但这并不妨碍我理解悉达多的哲学，进行冥想训练，向内探索，发掘内心真实的想法。</p> 
<p>1992 年藏传佛教宁玛派的上师索甲仁波切出版了 <em>The Tibetan Book of Living and Dying</em>（简体译为<a href="https://book.douban.com/subject/1050743/">《西藏生死书》</a>）一书，虽然我不能接受书中描述的死后的世界以及超自然现象，但我能感同身受地体会他的上师在去世时那种超然物外的宁静。这种宁静自古难得，在本文所讨论的议题，能在面对死亡时的保持祥和，可谓精神状态之最高境界。</p> 
<h2>What's Next?</h2> 
<p>现代社会因为科技的发展带动经济、政治、文化的社会变革，在我们有生之年的观测窗口，可见变化速率呈上升趋势。这种巨变随着全球化的进展让全世界多数国家都面对相似的问题。东亚国家的发展时间比西方国家更短，于是产生的“压缩的现代性”问题更加突出。</p> 
<p>个体处于巨变当中，一方面要面临“传统规范”与“自由新世界”的拉扯，渴望自由的同时又期望获得传统的保护；另一方面要面对个人内心的发展，在浪潮汹涌的现代向内探索，寻找坚实的立足点。</p> 
<p>带着几万前就定型的大脑与身体，我们要穿越现代社会种种诱惑与陷阱，要排除外部世界的强大势力加持下的欲望施加（尤其是来自消费社会的外部势力），要从自己的内心寻得出自己真正想要的人生。</p> 
<p>这并不容易，但可以做到。</p> 
<p>首先要从随波逐流中抽离出来反观自己，哪怕最终作出的选择结果是一样的，但随大流的选择和自己仔细思考过后的选择，其主动性却截然不同。然后要在向内探索的过程中，通过训练与实践，逐步建立“我的想法能行”的自信心，慢慢具备探索未知世界的勇气。最后在勇敢的试错中，弯弯曲曲地走出属于自己的人生道路。</p> 
<p>人生是自己的。每个人每天都只有24小时。</p> 
<p>选择做什么是我的选择，但我希望确保真的是我的选择。</p> 
<p>2023.08.30/夜 于灯下</p> 
<h2>后记</h2> 
<p>自我成长是我常读的一类书籍，从社会学到心理学，我发现许多发人深省的作品都能追溯到几千年前的古老智慧。我一直想把读过的很有启发的作品集合起来做个主题分享，但我又不想只是列出书单。除了现在舆论环境不友好怕惹来莫名其妙的攻击以外，也怕这份“想帮助他人”的书单实际上可能乏人问津，根本没人需要这份帮助。以至于提笔四顾，总行文不得。近来与一些朋友交谈，发现他们的焦虑烦恼，我也曾经历过，既难受，又似身处迷宫而手无地图，不知从何处探索。虽然我现在也仍身处迷宫，但多得此前读过的书本与许多朋友的帮助，自觉我的迷雾已比几年前要清晰一些。于是我斗胆学《被讨厌的勇气》中的课题分离之法，写文章是我的课题，别人读与不读是别人的课题，我只管写我的便罢了。遂奋笔疾书，以成此文，至少可作为2023年8月，现阶段我的迷雾之痕迹。</p> 
<p>向内探索的过程是拨开迷雾的过程，这个过程仍将继续，未来可以预见会有许多弯路要走，人生亦复如是。就以我喜欢 Tim Urban 的一句话结束本文吧:</p> 
<blockquote> 
 <p>My goal for the future isn’t to avoid mistakes, it’s for the mistakes I do make to be my own.</p> 
</blockquote> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://book.douban.com/subject/27091742/">《邻人之妻》</a></li> 
 <li><a href="https://book.douban.com/subject/36190074/">《金榜题名之后》</a> | <a href="https://justinyan.me/post/5730">我的书评</a></li> 
 <li><a href="https://book.douban.com/subject/27065607/">《每周工作4小时》</a></li> 
 <li><a href="https://book.douban.com/subject/35929434/">《毫无意义的工作》</a></li> 
 <li><a href="https://book.douban.com/subject/35593780/">《工作、消费主义和新穷人》</a></li> 
 <li><a href="https://book.douban.com/subject/25782520/">《美丽新世界》</a></li> 
 <li><a href="https://book.douban.com/subject/5406563/">《一九八四》</a></li> 
 <li><a href="https://book.douban.com/subject/26369699/">《被讨厌的勇气》</a> | <a href="https://justinyan.me/post/4625">我的书评</a></li> 
 <li><a href="https://book.douban.com/subject/34836531/">《了不起的我》</a> | <a href="https://justinyan.me/post/4237">我的书评</a></li> 
 <li><a href="https://book.douban.com/subject/36091480/">《手机大脑》</a></li> 
 <li><a href="https://book.douban.com/subject/26319730/">《娱乐至死》</a> | <a href="https://justinyan.me/post/4664">我的书评</a></li> 
 <li><a href="https://book.douban.com/subject/35545272/">《贪婪的多巴胺》</a></li> 
 <li><a href="https://movie.douban.com/subject/34960008/">《监视资本主义》</a></li> 
 <li><a href="https://book.douban.com/subject/26418475/">《逃避自由》</a> | <a href="https://justinyan.me/post/5313">我的书评</a></li> 
 <li><a href="https://book.douban.com/subject/4737101/">《追究幸福》</a> | <a href="https://justinyan.me/post/4802">我的书评</a></li> 
 <li><a href="https://book.douban.com/subject/36403216/">Life After Capitalism</a></li> 
 <li><a href="https://book.douban.com/subject/26660579/">《直视骄阳》</a></li> 
 <li><a href="https://book.douban.com/subject/36242339/">《最优解人生》</a></li> 
 <li><a href="https://book.douban.com/subject/35611477/">《要钱还是要生活》</a></li> 
 <li><a href="https://book.douban.com/subject/5063804/">《简·爱》</a> | <a href="https://justinyan.me/post/4643">我的书评</a></li> 
 <li><a href="https://book.douban.com/subject/35876121/">《纳瓦尔宝典》</a></li> 
 <li><a href="https://book.douban.com/subject/35706913/">《“活在当下”指南》</a></li> 
 <li><a href="https://book.douban.com/subject/34870933/">《人生十二法则》</a> | <a href="https://justinyan.me/post/4196">我的书评</a></li> 
 <li><a href="https://book.douban.com/subject/2277299/">《当下的力量》</a></li> 
 <li><a href="https://book.douban.com/subject/35581777/">《清醒地活》</a></li> 
 <li><a href="https://book.douban.com/subject/3910883/">《观呼吸》</a></li> 
 <li><a href="https://book.douban.com/subject/27136747/">《正见》</a></li> 
 <li><a href="https://book.douban.com/subject/1050743/">《西藏生死书》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 97 Harry: &#x6570;&#x5B57;&#x6E38;&#x6C11;&#x4E0E;&#x72EC;&#x7ACB;&#x5F00;&#x53D1;</title>
        <link>https://justinyan.eth.limo/1E89F9D9-4424-4C24-8C99-0DEB4CD49B6B/</link>
        <guid>https://justinyan.eth.limo/1E89F9D9-4424-4C24-8C99-0DEB4CD49B6B/</guid>
        <pubDate>Mon, 28 Aug 2023 22:09:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/08/Podcast-Cover-v97.png" alt="" /></p> 
<p>疫情过去以后，数字游民 (Digital Nomad) 的生活方式似乎又再次被推向大众视野。时隔多年，数字游民不仅跟独立开发，还和新兴起的 FIRE 概念经常摆在一起。那么什么样的生活算是数字游民呢？</p> 
<p>本期节目我们邀请到 Sorted App 的开发者 Harry，他也是一位数字游民生活的践行者，同时还是两个孩子的父亲。让我们一起听听看他的数字游民与独立开发生活吧。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:25 嘉宾介绍 @Harry</li> 
 <li>00:03:02 数字游民之前</li> 
 <li>00:13:29 怎样才算数字游民？</li> 
 <li>00:18:41 为什么想要开始数字游民生活？</li> 
 <li>00:24:27 数字游民如何养育孩子呢？</li> 
 <li>00:28:41 FIRE与数字游民的收入问题</li> 
 <li>00:33:34 数字游民期间遇到过最大的困难是什么？</li> 
 <li>00:48:56 听友提问环节：“收入、买房、成家、定居”等问题</li> 
 <li>01:21:52 灵魂三问</li> 
 <li>01:34:32 片尾曲：五月天 - 天使</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>数字游民，也叫数码游牧，来自英文Digital Nomad</li> 
 <li>嘉宾: <a href="https://twitter.com/harryworld">Harry</a> | <a href="https://www.instagram.com/harryworld/">Instagram</a></li> 
 <li><a href="https://apps.apple.com/cn/app/sorted-calendar-notes-tasks/id1306893526">Sorted App Store</a> | <a href="https://www.sortedapp.com/">官网</a></li> 
 <li>节目中提到的数字游民鼻祖人物<a href="https://twitter.com/levelsio">Pieter Levels</a>，他的数字游民网站: <a href="https://nomadlist.com/">Nomad List</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用苹果Podcast, 小宇宙等播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 96 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;19: &#x77E9;&#x9635;&#x7834;&#x88C2;&#x7684;&#x9B54;&#x5E7B;&#x4E16;&#x754C;</title>
        <link>https://justinyan.eth.limo/D318B171-E6BE-4E0E-8121-2530094C3878/</link>
        <guid>https://justinyan.eth.limo/D318B171-E6BE-4E0E-8121-2530094C3878/</guid>
        <pubDate>Fri, 11 Aug 2023 23:38:48 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/08/Podcast-Cover-v96.png" alt="" /></p> 
<p>室温超导？马一龙和马克扎克伯格直播打架？</p> 
<p>最近科技界的新奇事情不少，让我们一起进入本期又快又欢乐的科技快星球吧～</p> 
<p><em>P.S. 感谢听友提醒，《声之形》不是新海诚的作品，是《K-ON！輕音部》的同位导演山田尚子的作品。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:21 LK-99室温超导</li> 
 <li>04:12 马斯克对 Twitter 的一系列操作</li> 
 <li>08:58 Elon Musk VS Mark Zuckerberg</li> 
 <li>11:32 Threads 用户破亿，速度超 ChatGPT</li> 
 <li>14:30 AIGC 第一波裁员</li> 
 <li>17:44 你愿意用 AI 训练人生搜索引擎吗？</li> 
 <li>24:59 苹果相关新闻和 iPhone 15</li> 
 <li>29:38 Vision Pro 开发套件已开放申请</li> 
 <li>31:58 AirPods 耳机新专利</li> 
 <li>33:14 近期游戏大作</li> 
 <li>44:16 近期影视作品</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x8BB0;&#x8FC8;&#x7406;&#x5496;&#x5561;&#x5E7F;&#x6DF1;&#x5F00;&#x53D1;&#x8005;&#x7EBF;&#x4E0B;&#x805A;&#x4F1A;</title>
        <link>https://justinyan.eth.limo/9F79BE18-D80D-4880-A4AA-3603F63C5E6E/</link>
        <guid>https://justinyan.eth.limo/9F79BE18-D80D-4880-A4AA-3603F63C5E6E/</guid>
        <pubDate>Fri, 11 Aug 2023 23:38:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/08/developers_meetup_04.jpeg" alt="" />上周六（2023年8月5日）我和一堆小伙伴在广州迈理咖啡面基，想想这是疫情解封以后第一次找广深的朋友们聚会，恍惚有种十几年前参加互联网线下活动的感觉。</p> 
<p>2010年代初，我那会在广州上学，那时候苹果公司的iPhone一代又一代地“改变世界”，全球互联网的气氛欣欣向荣，大家从讨论Web 2.0，到移动互联网。硅谷有FANNG，中国有BAT，广州有网易、UC，还有后来的微信。那时候大公司愿意办线下活动，我大学时期还到网易大厦参加过一次前端的聚会。前辈在台上演示了他们用前端技术做的一个不断弹出各种窗口的Bad Apple让我印象深刻，同样印象深刻的还有网易的洗手间居然提供擦手纸，当时的我觉得“互联网公司可真是奢侈啊”。</p> 
<p>那时候创业热潮鼎盛，记得我刚入职没多久就跟一起吃饭的老同事说“我干个一两年就要去创业去了”。转眼十多年过去，行业起伏跌宕，各种概念和新造的流行词来了又去，我也一直没去创业。但不变的是这个行业里始终有一群人，对“创造”抱有极大的热情，为新鲜事物好奇，为创新科技而激动。跟这样一群人见面聊天，是很令人开心的事情。</p> 
<p>不过这样的线下聚会不多，全球防疫这几年就更少了。今年4月份，我受邀到苹果上海加速器做一个关于SwiftUI技术的分享，久违地跟开发者们线下见面，收获良多。上海真不愧是江浙中心，除了本地开发者，苏州、杭州的朋友也能很方便地来往。相较之下，偏居广深二城的开发者们似乎要少得多。</p> 
<p>这趟上海之行让我得以面基诸多网友，大家的人生经历与选择各不相同，但都一样热爱创造。不少朋友都是当天才第一次见面，我觉得广深的开发者们也应该多一些这样的线下见面的机会。</p> 
<p>正好今年我常出没的咖啡店“迈理咖啡”扩大了店面，从4平方的小店变成了可以让大家坐下聊天的地方，老板老黄也喜欢跟各种不同的人聊天，我们一拍即合，一起在店里办一场开发者们的聚会吧。于是就有了周六的活动。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/08/developers_meetup_03.jpeg" alt="" />跟大公司办分享不同，我想第一次组织活动我们可以轻松一点，有点沙龙的意味，大家端着咖啡瞎聊就挺好。除了天南地北扯淡以外，我们还尝试了咖啡杯测，围观了一台设计很赞的小型烘豆机，在听到豆子一爆的时候大家都发出了“哦～”的惊叹声。这些都是很棒的的新体验。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/08/developers_meetup_01.jpeg" alt="" />- 一路创业做过BearyChat，<a href="https://apps.apple.com/cn/app/%E7%94%BB%E9%9F%B3/id1381210087">Pop画音</a>的<a href="https://twitter.com/RoCry">@RoCry</a>除了正职工作也在鼓捣3D打印小玩具。</p> 
<ul> 
 <li>我刚开始听播客就常听<a href="https://twitter.com/RioJot">@Rio</a>和李如一的节目，他现在做<a href="https://crazy.capital/">《疯投圈》</a>，还一直是这么潇洒。(我台也跟Rio的《内核恐慌》录过一期节目，打个广告👉🏻<a href="https://fyfy.fm/episode/74">Vol. 74 如果不做程序员我们会做什么？</a>)</li> 
 <li>一起开发了<a href="https://apps.apple.com/app/id1620314166">Back 4U</a>的<a href="https://twitter.com/cloxnu">@小昊cloxnu</a>和<a href="https://twitter.com/WAnzhi0810">@安之</a>让我想到年轻人的创造力与热情，他们的App上线没多久就被App Store推荐，非常优秀。</li> 
 <li><a href="https://twitter.com/yyfrankyy">@阿阳</a>现在负责微信读书和微信键盘项目，曾经也是创业少年，一个前端开发学后台、客户端，现在开始鼓捣起Windows开发，真的学无止境。</li> 
 <li><a href="https://twitter.com/langqixu">@langqixu</a>的<a href="https://tide.fm/">潮汐App</a>做得超棒，最近办公室刚搬迁到能俯瞰广州的大楼里，大佬就在身边啊！我们聚会当天他正在东莞参加华为的开发者大会，为了这次活动特地赶回来，诚意满满，感恩。</li> 
 <li>最后是老朋友<a href="https://twitter.com/designedbyclu">@Clu</a>，万能的Clu，咖啡大师，本职项目已经令人眼花缭乱了，还鼓捣出了<a href="https://exping.world/">exping项目</a>。聚会当天Clu还给我们亲自冲了两壶，颇有参加CBC咖啡师大赛的架势。</li> 
</ul> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/08/developers_meetup_02.jpeg" alt="" />感谢所有到场的小伙伴们，尤其感谢从外地赶过来的朋友，更要感谢迈理咖啡的老黄，Tia和健哥，没有他们就没有这次活动。迈理咖啡特地给我们提供场地、咖啡、冰淇淋，甚至还有专门联系的烘焙师小姐姐做的蛋糕。不仅芝士蛋糕和瑞士卷很赞，柠檬形状的柠檬派更是一绝。</p> 
<p>希望以后广深的开发者线下活动能越来越多，让对这个世界充满好奇的创造者们能走到一起，面对面聊一聊。不需要改变世界，只是热爱，就很美好。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #188 &#x91CE;&#x53E3;&#x60A0;&#x7EAA;&#x96C4;&#x2014;&#x2014;&#x300A;&#x6218;&#x540E;&#x65E5;&#x672C;&#x7ECF;&#x6D4E;&#x53F2;&#x300B;</title>
        <link>https://justinyan.eth.limo/68F3A807-E835-4261-AF1B-CE50E2B81694/</link>
        <guid>https://justinyan.eth.limo/68F3A807-E835-4261-AF1B-CE50E2B81694/</guid>
        <pubDate>Fri, 11 Aug 2023 23:37:53 +0800</pubDate>
        
        
        <description><![CDATA[
            <img class="book-cover-frame" src="https://justinyan.me/wp-content/uploads/2023/07/fyyd-188-book-cover.jpg" /> 
<p>日本80年代曾一度经济强大到“世界第一”，1989年三菱地所公司一举买下纽约市中心洛克菲勒中心14栋大楼。那时的日本甚至影响美国科幻小说，经典赛博朋克科幻均有日本的身影（《神经漫游者》、《仿生人会梦见电子羊吗？》等），但此后泡沫破裂，日本一蹶不振，陷入长时间的经济停滞，再难重现当日之奇迹。</p> 
<p>这期间到底发生了什么？让日本在战后迅速恢复并一路高歌猛进的原因是什么？又是什么事件导致80年代末的泡沫破裂的？</p> 
<p>抱着这样的好奇，我买了野口悠纪雄的《战后日本经济史》（『戦後経済史』）一书。本书出版于2020年，作者野口悠纪雄是日本经济学家，生于1950年，曾任日本大藏省官员多年。战后日本实行内阁制，立法、行政和司法三权分立，分别由国会、内阁和裁判所行使。其中内阁总理大臣（即首相）相当于美国的总统，比如现任总理大臣为岸田文雄。内阁设一府十一省三厅，作者曾任职的“大藏省”是日本以前的最高财政机关，2001年拆分为财务省和金融厅。所以作者在书中也常以内部视角，指出大藏省在多个重大历史事件中起的作用。</p> 
<p>本书虽名为“史”，但我读来觉得更像是作者的个人回忆录。作者5岁时（1945年）亲历美军对东京投掷燃烧弹的可怕之夜，母亲带着小孩们跑不远，连躲进防空洞都比别人晚，甚至绝望地说：“我们逃不到隅田川了，就死在这里吧。”结果阴差阳错，早早躲进防空洞的人因为洞内氧气不足窒息而死，他们一家躲在洞口反而得以活命。随后不久，日本投降，美军进驻，整个国家（尤其作者生长的东京）在一片废墟中重建。所以作者的一生也确实见证了日本从战后重建到高速增长，到石油危机，到辉煌的80年代，再到“失去的30年”。</p> 
<p>“1940体制”是作者研究的主要理论之一。该理论指出，1940年日本一群被称作“改革派官僚”的人，建立起了一套“国家总动员体制”，将全国所有资源都用来为战争服务。而这套体制，在战后几乎原封不动地继承了下来，作为战后日本重建的基础。有人可能会觉得奇怪，战后不是美军接管日本，进行一番重大改造吗？我原先也以为如此，觉得战争时期实行军事统治的官员们都被军事法庭处决了，原先的政治体系也一并瓦解。作者在书中指出官员们在美军进驻之前，迅速改名，巧妙利用美军不熟悉日本文化、文字语言等各种技巧，最终达成部分政治体制完整保留的结果。读到这一部分，我觉得是既出乎意料又合乎我印象中的日本文化。</p> 
<p>所谓成也萧何，败也萧何。“1940体制”让日本战时的军需企业如丰田、日立、东芝等迅速成长起来，也让官员们在战后得以巧妙利用美国人的盖章来为自己设计的政策铺路，导致美国对日本的改造不彻底，日本既迎来高速增长，也终于被前进中的世界抛到了身后。</p> 
<p>我比较喜欢的是本书关于战后美军接管日本时，官员们斡旋的部分，还有作者在这几十年间，亲眼看着日本从贫穷到发达，再到后来衰落停滞的强烈对比。在全球化的背景下，战后各国都经历过重建，发展，危机，再发展等多次起伏。再加上如今全球史无前例的文化大交流，转瞬即达的信息传播，全球的文化趋同之状令人惊叹。生活在这样的时代，读史常有“Déjà vu之感”。别人曾走过的路仿佛我们当下经历的投影。国家不同，走出来的轨迹也大相径庭，但历史总是可以为鉴，让我们吸取教训，不犯同样的错误。</p> 
<p>虽然伏尔泰(Voltaire)说:</p> 
<blockquote> 
 <p>历史从来不会重复它自己，但是人类会。 History never repeats itself. Man always does.</p> 
</blockquote> 
<p>对个人来说，这世界有太多不为个体力量所控制的事情。但读史至少有助我们在重蹈覆辙的最初，发现并及时止损。历史总是回头看的东西，处在创造历史的当下，我们是无法看清全貌的，但以史为鉴，我们就能更早警醒。</p> 
<p>诚如作者在书中所说，经历过这么多跌宕起伏的历史时期，他总能发现有点“不对劲儿”。比如80年代的“日本第一”，他发现“劳动致富”的原则不再成立了。作者觉得“想要过上富足的生活，必须辛勤劳动”，而在80年代倒卖房地产和艺术品的日本，这个原则不成立了。</p> 
<blockquote> 
 <p>整个经济的可利用资源总量没有增加，有人变富就必然意味着有人变穷。所以，所有人全都不劳而获的状态，一定不会长久。</p> 
</blockquote> 
<p>虽然读了本书我们也不能变成“众人皆醉我独醒”的“独醒者”，但我想这个世界总有些基本的运行规则，无论其表象如何风云变幻，其基础总是不会变的吧。正是因为这种不变的基础，才让我们所见之历史，颇有相似之处吧。</p> 
<p>总而言之，生长在没有战争的年代，我们是幸运的，不需要上街举牌子“Make love, not war”，但生活在美国“混乱的60年代”，搞不好也是另一种幸运呢？这个世界怎么运转并不受我个人的主观影响，但我的世界是什么样，则是由我自己决定的。</p> 
<p>Peace✌️</p> 
<p><i>P.S. 近日在读哈佛大学社会科学院教授傅高义1979年出版的《日本第一》，该作与本书的视角截然不同，读者朋友若有兴趣可以搭配阅读，颇有趣味。</i></p> 
<p><i>P.P.S. 傅高义也是《邓小平时代》的作者，该书写得非常棒，五星推荐。</i></p> 
<p>2023.07.19/中午</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 战后日本经济史</li> 
 <li>副标题: 从喧嚣到沉寂的70年</li> 
 <li>原文标题: 戦後経済史</li> 
 <li>作者: 野口悠纪雄</li> 
 <li>出版社: 民主与建设出版社</li> 
 <li>出版日期: 2018-4</li> 
 <li>ISBN: 9787513913843</li> 
 <li>版本: 电子书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 95 &#x65B0;&#x4E50;&#xFF1A;&#x5728;&#x6606;&#x660E;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/B44942C7-49BC-402F-99AA-749D9D81B5E7/</link>
        <guid>https://justinyan.eth.limo/B44942C7-49BC-402F-99AA-749D9D81B5E7/</guid>
        <pubDate>Sun, 16 Jul 2023 16:33:50 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/07/Podcast-Cover-v95.png" alt="" /></p> 
<p>世界各地开发者之昆明篇～</p> 
<p>我对昆明的印象一直是四季如春，世外桃源，生活舒适，风景如画。本期我们邀请到住在昆明的独立开发者新乐，给我们介绍介绍在这座城市的工作与生活。</p> 
<p><a href="https://www.weibo.com/u/1860159237">新乐</a>是<a href="https://apps.apple.com/cn/app/%E7%99%BD%E6%8F%8F-ocr%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB%E4%B8%8E%E6%96%87%E4%BB%B6%E6%89%AB%E6%8F%8F%E5%85%A8%E8%83%BD%E5%A4%84%E7%90%86/id1249901692">白描</a> | <a href="https://baimiao.uzero.cn/">官网</a>的作者，白描是一款OCR扫描识别App，非常受欢迎，获奖无数。除了白描之外，新乐还开发了方弗相机，西江月，两个西柚等多款Apps，诗歌非常有想法有创意的开发者。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:25 嘉宾介绍：新乐</li> 
 <li>01:54 方言打招呼</li> 
 <li>03:34 什么契机来到昆明？</li> 
 <li>05:01 全职做独立开发</li> 
 <li>10:07 App用户量多少的时候开始全职</li> 
 <li>12:34 关于独立开发团队</li> 
 <li>17:37 开发的工作流和市场竞争对抗</li> 
 <li>22:31 远程办公和健康自律的生活</li> 
 <li>24:11 App灵感的爱情故事</li> 
 <li>27:20 恶意抢注、软著和商标的重要性</li> 
 <li>32:45 昆明生活篇：衣食住行</li> 
 <li>42:48 给想在昆明定居和旅游的建议</li> 
 <li>44:43 灵魂三问</li> 
 <li>50:14 福利抽奖：兑换码和实物周边</li> 
 <li>51:24 片尾曲：13 - LANY</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://www.weibo.com/u/1860159237">新乐</a> | <a href="https://www.xiaohongshu.com/user/profile/610f2bda0000000001007dd1">小红书</a></li> 
 <li><a href="https://apps.apple.com/cn/app/%E7%99%BD%E6%8F%8F-ocr%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB%E4%B8%8E%E6%96%87%E4%BB%B6%E6%89%AB%E6%8F%8F%E5%85%A8%E8%83%BD%E5%A4%84%E7%90%86/id1249901692">白描 App</a> | <a href="https://baimiao.uzero.cn/">官网</a></li> 
 <li><a href="https://apps.apple.com/cn/app/%E6%96%B9%E5%BC%97%E7%9B%B8%E6%9C%BA-%E8%83%B6%E7%89%87%E6%A8%A1%E6%8B%9F%E7%9B%B8%E6%9C%BA%E5%8F%8A%E4%B8%93%E4%B8%9A%E4%BF%AE%E5%9B%BE%E5%B7%A5%E5%85%B7-%E4%BB%BF%E4%BD%9B%E8%83%B6%E5%8D%B7/id1621425556">方弗相机 App</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #187 Morgan Housel - &#x300A;&#x91D1;&#x94B1;&#x5FC3;&#x7406;&#x5B66;&#x300B;</title>
        <link>https://justinyan.eth.limo/B7618088-DC8A-4C70-8A9D-4595765B6B4F/</link>
        <guid>https://justinyan.eth.limo/B7618088-DC8A-4C70-8A9D-4595765B6B4F/</guid>
        <pubDate>Sun, 16 Jul 2023 15:26:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/07/fyyd-187-v2.jpg" alt="" /></p> 
<p>Morgan Housel曾是The Wall Street Journal的财经记者，后来加入风头基金Collaborative Fund成为合伙人(Partner)。Collaborative Fund投过几百个项目，包括Kickstarter, Lyft, Blue Bottle之类的明星项目。Morgan现在还常在 Collaborative Fund的Blog上写文章，感兴趣的小伙伴可以<a href="https://collabfund.com/blog/authors/morgan/">点这里阅读</a>。</p> 
<p>《金钱心理学》(<em>The Psychology of Money</em>)是Morgan 2020年出版的书，几年前我已常见到有YouTuber推荐本书，最近才把它读完了。感觉写得比书名起得要好，轻松流畅，颇有启发。全书共分20章，前18章每章一个主题，每个主题都会带一个故事说理，作者讲故事的能力不错。第19章是总结，20章是作者自己的个人投资理念。还带一份附录：《美国消费者心态形成简史》(A Brief History of Why the U.S. Consumer Thinks the Way They Do)，写得也相当不错，我不太熟悉美国历史，读起来颇有新鲜感。</p> 
<p>比如战后（1945年）美国社会为了让大量归国的退役军人就业以及让战时工业转型，实行的经济政策让美国长期处于低利率环境下，从而对当时的消费行为产生了巨大影响。低利率让房贷、车贷和各种东西变得非常便宜，很快促进了第一张信用卡的诞生（1950年）。很难想象不久以前的30年代美国正处于历史上经济最困难的大萧条时代。</p> 
<p>事实上战后至今(2023年)也才不到80年，野口悠纪雄的《日本战后经济史》讲到日本经济凭借朝鲜战争期间作为美军军需基地而起飞；Gay Talese的_Thy Neighbor\\'s Wife_提到今天我们认为“文化特别开放的美国”如果回到60年代以前也特别保守，现在大街上习以为常的夏装如果回到50年代的美国也会被批为“有伤风化”；傅高义的《邓小平时代》指出改革开放以来中国的经济复苏与起飞其实与日本、亚洲四小龙颇有相近之处，甚至与美国战后经济发展也颇有异曲同工之妙。而这一切都发生在最近短短数十年。</p> 
<p>作者在第一章提到：</p> 
<blockquote> 
 <p>“工作到一定年限后退休”这个概念在美国最多不过两代人历史，二战前美国人会一直工作到死。</p> 
</blockquote> 
<p>美国的退休制度可以追到1937年，但“人人都有权利并应当光荣退休”的想法要到20世纪80年代才成为现实。才经过短短数十年，大家不擅长为退休后的生活进行储蓄和理财也没什么好奇怪的。</p> 
<p>我想，如果将“为了退休理财”延伸到更广的“个人投资理财”，我们接触开放市场的时间并不长，在市场中交学费的时间更短，自然也有更多需要学习的东西。</p> 
<p>多读历史，有助我们发现“显而易见被忽略的事实”。Morgan这本书讲的故事都挺反直觉，很有启发。比如他提到美国经济大萧条时期，没有亲身经历过的人只能通过史料在脑海中想象，好像大家都很惨，排队等面包的照片是我对“大萧条”的刻板印象。但约翰·肯尼迪竞选总统的时候却说：</p> 
<blockquote> 
 <p>我对大萧条没什么亲身经历。我的家族是世界上最富有的家族之一，在大萧条后的财富比之前更多了……</p> 
</blockquote> 
<p>我想起美国记者威廉·夏伊勒(William Shirer)的《柏林日记》(<em>Berlin Diary</em>)。我没有经历过二战，从历史读物看来，当时的欧洲简直人间炼狱，乌云盖顶，而位于风暴中心，“大魔头”希特勒统治下的柏林肯定也是生灵涂炭吧（至少对犹太人和作者夏伊勒这样的外国人来说）。结果却发现不是的，作者即使在德国入侵波兰期间也还是正常工作正常上班，只是他的播音信号传回美国时要被希特勒政府严密监督看管而已。打仗期间作者还跑去瑞士划船，在柏林上流社会开Party。</p> 
<p>所以这样看来，历史总是事后诸葛亮啊。比如1980年日本经济泡沫，比如2000年互联网泡沫，现在看来触目惊心，可真要身处其中，却未必终日惶恐。</p> 
<p>读Morgan的这本书，除了从故事中学会新知以外，我也觉得他的投资理念并没有什么“全新独创”的东西——可能也根本不需要——而是跟约翰·博格(John Bogle)的《共同基金常识》(<em>Common Sense on Mutual Funds</em>)，霍华德·马克思(Howard Marks)的《投资最重要的事情》(<em>The Most Important Thing</em>)以及巴菲特、查理芒格、塔勒布等诸多名人所支持的理念别无二致。作者只是以不同的表达方式将其讲述了一遍。</p> 
<p>因为作者的文字风格轻松好读，所以更容易被更多人读到。如果希望阅读本书的读者朋友，我推荐结合<a href="https://justinyan.me/post/5594">《个人理财实践01: 教训与实践》</a>一文提到的经典投资读物一起阅读，效果更佳。</p> 
<p>Morgan这本书每一章篇幅不长，读起来很爽，却容易忽视细节，而经典投资读物则有更大的篇幅进行详细的论证与推理，更有助读者看清投资背后的逻辑，从而寻找到真正适合自己的策略。</p> 
<p>正如作者在第七章Freedom中所说:</p> 
<blockquote> 
 <p>Controlling your time is the highest dividend money pays.</p> 
</blockquote> 
<p>真正的自由是时间上的自由。不管明面上各国如何正面宣传，现代社会许多人的工作已经在“事实上难以下班”。我不知道有多少人发自内心地喜欢7x24待机于自己的工作，以我的观察，即使有这样的人，那他多半是7x24待机于“自己的事业”而不是“老板的事业”。在<a href="https://justinyan.me/post/4802">丹尼尔·列托(Daniel Nettle)的《追究幸福》(<em>Happiness</em>)</a>里也提到个人对生活的掌控程度跟幸福感息息相关，<a href="https://justinyan.me/post/4352">詹姆斯·克利尔(James Clear)的《原子习惯》(<em>Atomic Habits</em>)</a>也指出养成小习惯有助于我们掌控自己的生活。</p> 
<p>不是所有的人都像约翰·肯尼迪一样出生在一个即使面对大萧条环境也能安然度过的家庭，更多人可能像漫威电影雷神的饰演者 Chris Hemsworth 一样，小时候家庭条件不理想，成年后“赚钱”两个字成为魔咒一般的存在深深烙印在心底挥之不去。作为好莱坞大明星，Chris已经足够富有，他依然有他的心结。这说明在满足了基础需要之后，一个人的内心是否真能寻到真正的安宁跟拥有的财富多少关系不大。</p> 
<p>《金钱心理学》的小故事给出了许多颇有启发的想法，我觉得挺好，可以作为休闲读物阅读。至于个人在瞬息巨变的现代社会中如何寻得内心真正的安宁，也许从古人的智慧中可能获得更多帮助。这个话题，我们留待以后再续。</p> 
<p><em>2023/07/15 上午</em></p> 
<p><em>于自居</em></p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 金钱心理学</li> 
 <li>副标题: 财富、人性和幸福的永恒真相</li> 
 <li>原文标题: The Psychology of Money: Timeless Lessons on Wealth, Greed, and Happiness</li> 
 <li>作者: 摩根·豪泽尔(Morgan Housel)</li> 
 <li>出版社: 民主与建设出版社</li> 
 <li>出版日期: 2023-6</li> 
 <li>ISBN: 9787513941242</li> 
 <li>版本: 纸质书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 94 &#x662F;&#x5149;&#x8BD7;&#x6B4C;: &#x7528;&#x8BD7;&#x6B4C;&#x53D1;&#x73B0;&#x5927;&#x5C71;&#x5B69;&#x5B50;&#x624B;&#x91CC;&#x7684;&#x5149;</title>
        <link>https://justinyan.eth.limo/41204004-7BBC-41F0-B5BE-3D2B6A09F0B5/</link>
        <guid>https://justinyan.eth.limo/41204004-7BBC-41F0-B5BE-3D2B6A09F0B5/</guid>
        <pubDate>Wed, 12 Jul 2023 19:39:48 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/07/Podcast-Cover-v94.jpg" alt="" /></p> 
<p>好久没录人文向节目啦，本期我们邀请到的两位嘉宾是“是光诗歌公益组织”的两位创始人康瑜和田田。</p> 
<p>是光诗歌是国内首家且规模最大的乡村诗歌教育公益组织，他们希望通过诗歌让乡村儿童实现自由的情感表达，成为悦纳自己、热爱生活的未来乡村建设者。和许多人刻板印象里的“公益”不同，他们选择了让大山里的孩子写诗这样一个“不同寻常”的角度，为什么是写诗这样的创作活动呢？又是什么样的机缘让这两位年轻人投身其中呢？</p> 
<p>让我们跟着两位嘉宾一起，听听是光诗歌，是如何用诗歌发现大山孩子手里的光的。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场</li> 
 <li>01:41 是光诗歌是个什么样的公益组织？</li> 
 <li>02:07 两位创始人是因为什么机缘选择做公益的？</li> 
 <li>08:23 为什么选择让大山的孩子写诗这样的切入点？</li> 
 <li>18:36 当时让田田印象深刻决定和康瑜一起创业的是那首诗？</li> 
 <li>21:29 让康瑜印象最深刻的一首诗，以及小诗人的故事</li> 
 <li>30:41 自力印象深刻的两首诗</li> 
 <li>35:07 现在是光的展开方式是怎样的？还会去山里给孩子们上课吗？</li> 
 <li>48:00 灵魂三问</li> 
 <li>01:03:00 如果想助力是光诗歌公益的话，有什么途径呢？</li> 
 <li>01:06:49 片尾曲：《娃娃诗》</li> 
</ul> 
<h2>相关信息</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/07/shiguangshige-v2.png" alt="" /></p> 
<ul> 
 <li><a href="http://lxi.me/ujc21">是光诗歌月捐计划</a></li> 
 <li><a href="https://mp.weixin.qq.com/s/ntYXIuVXYChJm1yGi6G-ig">微信公众号: 是光诗歌</a></li> 
 <li><a href="https://book.douban.com/subject/35006237/">“是光”的孩子们出版的诗集——《大山里的小诗人》</a></li> 
 <li><a href="https://www.bilibili.com/bangumi/play/ep312737">CCTV纪录片《人生第一次》，孩子们的诗歌课</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #186 &#x80E1;&#x5B89;&#x7109; - &#x300A;&#x6211;&#x5728;&#x5317;&#x4EAC;&#x9001;&#x5FEB;&#x9012;&#x300B;</title>
        <link>https://justinyan.eth.limo/99694A38-34B2-4872-AFE7-18DD425B71A3/</link>
        <guid>https://justinyan.eth.limo/99694A38-34B2-4872-AFE7-18DD425B71A3/</guid>
        <pubDate>Tue, 11 Jul 2023 21:20:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/07/fyyd-186-cover.jpg" alt="枫影夜读" /></p> 
<p>若以职业论，作者胡安焉是一位打过不少工，也做过自己生意的人。作者曾做过酒店服务员，在漫画社实习，在面包店当学徒，在自行车店、便利店都干过，也开过自己的服装店、小吃店，还曾跟一群摇滚青年去“流浪创作”。</p> 
<p>最后，当然少不了赋闲在家，居家写作的时光。这本书出版的契机是作者在豆瓣发表他自己在德邦物流和在北京送快递的工作经历，被出版社编辑发现，方得付梓。</p> 
<p>全书分为五个部分，在德邦物流和后来送快递的经历，虽是作者新近发生的事件，我以为却是全书写得最好的部分。编辑将其置于开篇，想是有意为之。</p> 
<p>生活在现代都市，我想多数人对“快递”都不陌生，网购的发达已让快递成为城市生活的标配。可是有多少人真的了解快递小哥每天的工作呢？再加上进来全球经济低迷，“大不了去送快递”这句调侃已经某种程度上成真。可真要让发出调侃的人去送快递，能扛得住吗？</p> 
<p>于是北京、送快递，这两个紧密联系又相互矛盾的词构成一片充满现实讽刺意味的迷雾，深深吸引读者拨开冲冲屏障，一探究竟。</p> 
<p>胡安焉过去从事的工作虽无文字表达的需求，但也有些工作有大量的空余时间，比如他开服装店的时候，闲下来的时间他做了大量阅读，后来赋闲在家，亦拿起笔来多有创作。是以作者文笔流畅，在书中时有精辟见解，颇为好读，更时有收获。虽然作者自觉本作更侧重“记录”而非“严肃创作”，但有时这种随笔写作反而更显真实。而作者多年来在社会中摸爬滚打，写下之文字平淡间透着辛酸，令人感慨世间不易的同时亦觉无可奈何。</p> 
<p>比如在德邦物流，面试完的人，男的会被安排三天无薪倒包工作，女的则去打包。这是作者所在组最繁重的工作，作者以为：</p> 
<blockquote> 
 <p>“只有在工作强度最大的岗位上，双方才能看清彼此是否合适，从而减少因为误解而产生的没合作多久就‘分手’的情况。”</p> 
</blockquote> 
<p>此见足显作者多年江湖经验。</p> 
<p>又比如有一位身材瘦小的女孩被送来试工，其实这样的人不太适合这份工作，手脚慢还会拖累全组。组长叮嘱大家不要帮她。</p> 
<blockquote> 
 <p>“越是她这样弱不禁风的人，我们越不能帮，因为帮她无异于误导她，令她以为自己可以胜任。必须让她吃足苦头，若最后她还是觉得自己能干，那才是真的能干。”</p> 
</blockquote> 
<p>这些经验与道理无疑同“理想世界人人平等”，或象牙塔中崇尚的互帮互助格格不入。但这才是这个纷繁复杂的世界真实运作的方式。无论在哪一个岗位上，强行“帮助”不适合这个环境的人，也许在经济上行阶段，世界尚有余力可以“包容”，可一旦潮水退去，裸泳者终将醒目无比。</p> 
<p>我蛮喜欢作者冷静与真实的笔锋，尤其是在经历了诸多挫折与失败之后，他似乎仍对这个对他并不友好的世界抱有希望。他写作，但也知道不能靠写作为生，只求三餐温饱，闲时能继续写下去，寻求精神的富足。如今本书出版，且流行，也算某种程度上对这种积极创造自己生活的态度的回应了。</p> 
<p>祝胡安焉一切安好，</p> 
<p>祝各位读者一切安好，</p> 
<p>祝好。</p> 
<p>2023.07.10/夜 于自居</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 我在北京送快递</li> 
 <li>作者: 胡安焉</li> 
 <li>出版社: 湖南文艺出版社</li> 
 <li>出版日期: 2023-3-24</li> 
 <li>ISBN: 9787572609268</li> 
 <li>版本: 纸质书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 93 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;18: AI &#x4E0E; MR &#x9F50;&#x653E;&#x5F02;&#x5F69;</title>
        <link>https://justinyan.eth.limo/0833D382-0E68-4B7F-B485-686C87C987B7/</link>
        <guid>https://justinyan.eth.limo/0833D382-0E68-4B7F-B485-686C87C987B7/</guid>
        <pubDate>Wed, 07 Jun 2023 22:24:19 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/06/Podcast093_cover.jpg" alt="" /></p> 
<p>又快又欢乐的科技快乐星球，本期依然有很多AI相关的新闻，ChatGPT带来各项更新，未来也将带来“模型商店”，非常具有想象力的一步。</p> 
<p>MR方面苹果和Meta各有各的新闻，近期设计师春晚Figma Config 2023也正式召开，带来一系列更新。</p> 
<p>废话不多说，让我们一起走进又快又欢乐的科技快乐星球～</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:27 ChatGPT 重磅新闻接踵而至</li> 
 <li>12:28 研究表明经常接触 AI 容易孤独？</li> 
 <li>20:00 刘慈欣：人工智能会代替作家？</li> 
 <li>24:23 Vision Pro、Meta 推出 Quest 3</li> 
 <li>29:45 Figma Config 2023</li> 
 <li>37:51 Meta裁员，苹果削减招聘预算</li> 
 <li>43:34 暗黑破坏神4、《死亡搁浅》电影</li> 
 <li>49:31 《黑镜》第六季上映</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 92 &#x79D1;&#x6280;&#x65E9;&#x77E5;&#x9053;&#xD7;&#x67AB;&#x8A00;&#x67AB;&#x8BED;: WWDC23</title>
        <link>https://justinyan.eth.limo/8DA5BF19-FAF9-4843-8123-EA5BC822D161/</link>
        <guid>https://justinyan.eth.limo/8DA5BF19-FAF9-4843-8123-EA5BC822D161/</guid>
        <pubDate>Wed, 07 Jun 2023 22:22:50 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/06/Podcast-Cover-v92.png" alt="" /></p> 
<p>一天两更，没想到吧！嘿嘿😁</p> 
<p>今年的WWDC我们继续跟老朋友《科技早知道》一块串台，从开发者和设计师的角度聊聊Vision Pro，聊聊各个软硬件更新。 两期节目，让我们一起聊个过瘾🥳</p> 
<p>科技早知道节目传送门👉🏻 <a href="https://www.xiaoyuzhoufm.com/episode/64806ba85ceb77b54e770626">《太贵？开发环境门槛高？和开发者聊聊苹果 Vision Pro 和 WWDC23》</a></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场</li> 
 <li>01:10 Vision Pro</li> 
 <li>30:19 iOS 17, iPadOS 17, WatchOS 10等软件更新</li> 
 <li>37:13 这届WWDC没有AI？</li> 
 <li>43:49 再聊Vision Pro</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>友台: <a href="https://guiguzaozhidao.fireside.fm/">What's Next | 科技早知道</a> | <a href="https://www.xiaoyuzhoufm.com/podcast/5e74b52c418a84a046ecaceb">小宇宙</a></li> 
 <li>友台主播: <a href="https://guiguzaozhidao.fireside.fm/hosts/diane">Diane</a></li> 
 <li>后期: 大力感谢友台后期小哥Luke</li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。 荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。 - <a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 91 WWDC23 - One More Thing!</title>
        <link>https://justinyan.eth.limo/D28C0114-AE5E-4BC0-93B6-61FBF60BB7D3/</link>
        <guid>https://justinyan.eth.limo/D28C0114-AE5E-4BC0-93B6-61FBF60BB7D3/</guid>
        <pubDate>Wed, 31 May 2023 22:58:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/06/Podcast-Cover-v91-v1.png" alt="" /></p> 
<p>又是一年WWDC，这次不会让大家睡着啦。</p> 
<p>苹果上来就给出一堆基于M2系列芯片的Mac更新，再来一波软件更新，这就已经堆满1个半小时了。结果Tim Cook最后还来了个苹果传统艺能: One More Thing</p> 
<p>谣言已经传了好几年的苹果XR头显终于来啦，唤作Vision Pro，定价3499美金，大约2万多人民币。让我们一起走进苹果，聊聊昨晚堆料爆表的WWDC23吧！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场</li> 
 <li>1:11 One more thing: Vision Pro</li> 
 <li>32:33 硬件发布，Mac产品线, M2系列芯片</li> 
 <li>36:32 白头发帅哥边整活边介绍iOS, iPadOS</li> 
 <li>32:59 各种硬件升级</li> 
 <li>37:21 iOS 17 里的亮点</li> 
 <li>44:31 发布会里 AI 相关</li> 
 <li>48:20 macOS watchOS tvOS</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #185 - &#x90D1;&#x96C5;&#x541B;&#x300A;&#x91D1;&#x699C;&#x9898;&#x540D;&#x4E4B;&#x540E;:&#x5927;&#x5B66;&#x751F;&#x51FA;&#x8DEF;&#x5206;&#x5316;&#x4E4B;&#x8C1C;&#x300B;</title>
        <link>https://justinyan.eth.limo/DB8B6DA1-C09B-43DC-A057-48E38D3B300C/</link>
        <guid>https://justinyan.eth.limo/DB8B6DA1-C09B-43DC-A057-48E38D3B300C/</guid>
        <pubDate>Wed, 31 May 2023 22:57:01 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/05/college-education-cover.jpg" alt="" /></p> 
<p>同样是在复旦和北大上学的学生，为什么有的人目标明确，大一（甚至高中）就知道自己要什么，并为之争取与努力，采取聪明高效的策略，达成目标。而有些人就茫然不知所措，凭直觉在大学生涯中度日？</p> 
<p>《金榜题名之后：大学生出路分化之谜》是郑雅君就读于复旦大学社会科学系时的硕士研究成果。她访谈了多位来自复旦与北大的学生，针对学生的家庭背景、经济条件、成长环境、大学生涯与毕业出路进行长期跟踪调研，发现在大学这个特定的场域里，学生们的应对策略以及未来的出路选择各有不同。有的策略在这个特定场域中能获得竞争优势，有些则不然。</p> 
<p>郑雅君本人成长于西北小镇的单亲家庭，凭自身努力考入复旦。她本人的大学生涯也同样遇到了“寒门子弟在名牌大学的茫然”，以及初入上海这座国际化大都市会面临的种种挑战。选择研究这个课题，某种程度上也是在解答她自身的疑惑。我是听了Steve说的<a href="http://steveshuo.com/333">这期节目</a>，Steve与郑雅君的对谈发现的这本书。对谈的过程讲了一些书本没有的东西，读者朋友也可以找来听一下。</p> 
<p>虽然在作者研究的样本中，作者这样的出身条件算中等水平，但文化习性的差距与高考的路径依然让作者在研究过程中能与同学们感同身受。我作为读者也是同理，虽然出生在全国发展前沿的广东省，但所在城市却是全国GDP倒数有名。毕业院校虽非清华北大，但也是985/211。所以我也有跟书中访谈的学生们遇到一样的困惑，身边既有凭直觉前行的同学，也有目标明确的同学，虽然都很努力，但毕业出路发展却不尽相同。</p> 
<p>同学之间的差异除了体现在高考分数之外，也体现在其他文化知识上。比如我的老家没有地铁，到广州上大学是我第一次坐地铁，研究了半天还是坐错了方向。除此之外，城市发展的差异意味着小城镇来的学生还有很多需要学习的隐性文化背景。而这些文化知识背景又跟学生的家庭经济条件、父母文化水平、个人成长环境有极大关联，这些都是高考分数所反映不出的差距。而往往在大学这个场域里，分数或绩点并不是让学生达成目标最重要的一面。这些隐性条件的差距，最终会反应在学生的行动上，体现为策略模式的不同。</p> 
<p>另一份差距来自学校教育。通常越是发展相对不足的地区，学校越是以高考分数为唯一导向。学生们离开熟悉的城市与此前熟悉的考试分数导向模式，来到一个更多元的地方，既获得了空前的自由，也承担了并不熟悉的选择与责任。相比之下，成长于一线城市，学校教育导向更偏多元自由的学生，对于大学的模式要更加熟悉。郑雅君访谈的部分学生来自教育模式接近大学的高中，对他们来说，进入大学并不需要一个适应陌生环境的过程。他们在高中时期就已经明白，成绩好只是一个“好学生”的必要条件，想要成为学校里真正厉害的人，除了成绩好以外，还需要更多文化技能，比如社交能力，钢琴等才艺，掌握多门外语等语言能力，诸如此类。甚至有部分学生的家长就是名牌大学的教授，从小就对这所高校非常熟悉了。这样的学生适应起大学环境显然要比多数出身寒门的学生自如得多。</p> 
<p>对于大学的出路，作者总结了三条最多人选择的路线：</p> 
<ol> 
 <li>出国留学</li> 
 <li>国内读研</li> 
 <li>求职</li> 
</ol> 
<p>这三种路线对学生的要求各有不同。出国留学需要漂亮的学分绩点，外语成绩这些显形条件，也需要家庭经济实力支持，获得学术界资深人士的推荐信等等这些隐性条件。考研和保研不仅需要学习成绩名列前茅，而且如果考研，既要进行艰苦的备考，也要求学生对万一考不上的风险有充足的准备。求职则要求学生及时了解意愿行业的动向，企业对人才的要求，或者考公务员，则又是跟市场导向的就业有截然不同的要求。</p> 
<p>作者把大学比作一个迷宫，对未来方向明确的学生，知道如何安排课业，知道要达成怎样的绩点，知道是要多些实习还是参与学生组织、政府关系活动。作者这些学生上大学的方式<strong>称为“目标掌控模式”</strong>，核心特征在于：了解大学及劳动力市场中的制度和非制度性的规则，因此能有意识地树立生涯目标，并且知道如何通过管理自身的行动来趋近目标。而另一些“习惯性优秀的学霸”模式，<strong>则被称为“直觉依赖模式”</strong>：在陌生的大学场域中难以自我定位，从而无意识地陷入无目标状态，主要倚靠直觉和旧有习惯来组织大学生活。</p> 
<p>这两种模式本身并无道德上的评判，也即不存在哪一种是正确的哪一种是错误的，只是客观上存在不同的策略而已。但是在当前现代社会结构下，大学的游戏规则会更有利于持有迷宫地图的“目标掌控者们”，而不是“直觉依赖者们”。</p> 
<p>比如我当年报考我校的软件专业，原因是我想读计算机方向，我的分数选择软件是最保险的。我想读计算机方向又是高中时期决定的，综合家庭经济条件、个人兴趣等多方原因，选择了在那个时代来看经济效益更高的出路方向。但是我的大学同学却有不同的选择思路。“目标掌控者”同学认为，我校的软件专业在全国高校中排名很高，于是他想来我校就读软件专业，对他未来出国留学、职业发展都有好处。“直觉依赖者”同学则没什么想法，单纯是因为分数能选我校，然后服从调剂而已，本身既不喜欢计算机，也没什么基础。</p> 
<p>从这点可以看出，“目标掌控”与“直觉依赖”并不是在贴标签，这两种模式如果要描述，<strong>它更像是一条连续光谱的两端，每个人都兼有两种模式的特点，只是在光谱上更靠近哪一端而已</strong>。我个人在大学时期显然是更靠近直觉依赖一端，相比起直觉依赖的极端，我个人的职业方向意愿和家庭在填报志愿时提供的支持要好得多，但相比起在掌握更多信息和资源，在高中时期已经定好出国路线的同学来说，我仍需要在大学期间慢慢学习摸索大学通往出路的途径。</p> 
<p>另外也正因为这两种模式是连续光谱的两端，所以存在转换的可能。人类的灵活性与弹性足以因应环境作出改变，虽然有些人格特征的形成具有先天倾向，但本书所探讨的后天塑造的应对模式更容易被人为改变。有时候人们只是不知道自己不知道而已，如果能消除这种信息差，同学们都能做出更有利于自己想要的方向的决策。这种模式上的转变显性表达为行动上的改变，但其背后的驱动力却有赖于学生价值信念的选择。</p> 
<p>郑雅君的研究把访谈样本的价值信念选择总结为三类：</p> 
<ol> 
 <li>家国理想，社会价值（学校）</li> 
 <li>地位保障，家庭责任（家庭）</li> 
 <li>个体趣味，自我表达（市场）</li> 
</ol> 
<p>这三种价值信念与我们自小成长的环境息息相关，三种具有强力话语权的渠道促成了三种价值信念的形成。来自国家的主流声音宣传和中华传统的忠义仁勇礼智信促使先天下之忧而忧，后天下之乐而乐的价值信念；来自大家族互助和家庭责任促成了金榜题名后衣锦还乡，成为家庭支柱的价值信念；来自开放市场的自由主义则鼓励个人趣味，向往改变世界，促成个人表达与理想追求的价值信念。</p> 
<p>与上文提及的模式光谱类似，三种价值信念不是非此即彼，而是相互交织，相互纠缠。学生在出路选择上明显受到多股力量的拉扯，处理得好可以巧妙化解，处理得不好则冲突不断，两头不讨好。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/05/college-education-01-c.jpg" alt="" /></p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/05/college-education-02-c.jpg" alt="" /></p> 
<p>我觉得本书最棒的地方不仅在于它能给迷茫不知所措的在校学生带来寻找属于自己“迷宫的地图”的方向，而且对于已经进入职场的人来说同样有很大启发。<strong>因为职业生涯往往在大学生涯的延长线上</strong>。即使从大学场域转换到了工作场域，人们依然可能延续过去的习惯性应对模式。根据我的观察，在大学生涯中依赖直觉的人，就业后在职场也常常延续旧有的文化习性，只是社会环境远比大学场域有更多的自由，也有更多的责任。</p> 
<p>2021年我在<a href="https://justinyan.me/post/4752">这篇文章</a>中用了一个比喻：“一直埋头奔跑的我偶尔抬起头总觉得不知道跑到哪里去了。虽然人生的每个决策都是我自己做出来的，但总有一种随波逐流的失控感。我很少能够清晰地说出我的人生想要怎样，我接下来应该做什么，达成怎样的目标。”</p> 
<p>此番描述无疑表明我在模式光谱上更靠近直觉依赖的一端。不过幸运的是我意识到了这一点，并通过阅读与实践尝试找回属于自己人生的掌控感。这个过程并不容易，很缓慢，但有效。此举充分说明了：</p> 
<ol> 
 <li>应对模式具有延续性，职业生涯可能是大学生涯的延伸。</li> 
 <li>模式具有习惯性，但是可以被改变。</li> 
</ol> 
<p>在郑雅君的研究中，其实有很多被访者一开始并不能很清晰地意识到自己秉持的价值信念，在大学生涯中，通过接触老师、同学或前辈，收获更多信息从而慢慢寻找到为自己认可的价值信念。比如有位被访者，一开始不知道自己是要考研好还是求职好，有点浑浑噩噩地到了大三，既没有把成绩学分做好，也没有提前实习，直到临近毕业了才认真思考自己未来的出路。但好在北大与复旦的学生大多比较聪明，最终都能寻找到适合自己的价值信念。比如北大就有些被访者选择从政路线，在校参加学校党委组织的活动，去支教，了解基层情况，发现这些地区的管理问题，同时结合自己的出身，激发了毕业后从政，为国家的未来做贡献的强烈意愿。</p> 
<p>无论选择哪一种价值信念都好，最终它能给人带来一种意义感。此前流行的David Graeber的<em>Bullshit Jobs</em>(《毫无意义的工作》)一书指出了意义感对于人类存在的重要性：“一个人一旦停止产生对世界有意义的影响，那这个人就不存在了。”我想，这也是郑雅君研究的大学生模式对所有人都有启发的重要基础：不仅在大学时期，在我们对整个人生的规划与追求中，都不能失了意义的追求，而这份追求决定了我们采用哪种价值信念为主，也最终表现为我们的行为模式。</p> 
<p>为了实现从直觉依赖向目标掌控的转变，我们需要把潜意识里的东西意识化。我们的成长环境有太多文化输入经年累月早已内化为潜意识的一部分，以此我们可以不假思索地对事物作出判断与反应。事实上，“直觉依赖者”与“目标掌控者”常常互相区分“我们”和“他们”，并不完全认可另一端的模式。比如通过“选课技巧”获得更多学分，通过各种手段拿讲座票加分的手段，在“传统学霸”看来是“投机取巧”，而在目标明确的学生看来，学分只要够用就行了，没有必要花太多时间，还有更重要的事情需要做的。</p> 
<p>两种模式并无道德上的对与错，只是这个纷繁的世界存在的两种可能性而已。只有拥有足够的自我认知，在意识层面对自我的特点进行优势与劣势的思考，才能扬长避短。只是拥有充分的自我认知一事，对大多数人而言绝非易事。所幸我们生在这个时代，有非常多的研究成果供我们学习与训练。比如此前我们曾介绍过的<a href="https://justinyan.me/post/4625">《被讨厌的勇气》</a>，比如Lori Gottlieb写的<em>Maybe You Should Talk to Someone</em>（《也许你该找个人聊聊》）。</p> 
<p>这个过程有点像看视频学打篮球，看了视频脑子会了但手脚还没学会，需要大量的练习一步步掌握。郑雅君的研究也是这样的“入门视频”，不同的读者能收获到不一样的东西，最终能习得多少还有赖读完后的练习。</p> 
<p>我们这代人还遇到另一种社会结构带来的问题，在本书中没有太多着墨，即韩国首尔大学社会学教授张庆燮在《复合风险社会：压缩性现代性和韩国的风险秩序》中提出“压缩性现代性”的概念。大意是西方国家用了几百年时间进行现代化过程，而到了东亚国家只花了短短几十年，西方国家过去遇到的问题我们在短时间内都会遇到并且面临更大的挑战。比如现代化带来人们价值观念的变化，西方国家可以有很长的时间慢慢消化，所以父辈与子辈的观念差异不会太大，而东亚国家往往面临更大的观念冲突。比如“中国式家长”，比如催婚，催生子等等现象，比如李安导演的《饮食男女》、《喜宴》等作品所展现的两代人的冲突。这些虽不在本书的研究范畴，却可作为延伸讨论的一部分。</p> 
<p>总而言之，郑雅君的研究不仅给在校学生提供了一份寻找迷宫地图的指引，也给身处职场的打工人带来不少启发。Tim Urban在2018年写的这篇<a href="https://waitbutwhy.com/2018/04/picking-career.html">How to Pick a Career (That Actually Fits You)</a>同样鼓励了目标掌控的方向，本研究也引用了其他国家教育学研究者的方法和结论。这说明开放市场多年后的中国，大学生面临的问题在国际上也很常见。自1996年中国正式取消大学毕业生包分配制度开始，学生们终于获得更多自由，同时也开始承担更多责任。</p> 
<p>Freedom is not free.</p> 
<p>无论如何，能为自己的人生负责，甚好。</p> 
<p>2023/05/31 下午</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 金榜题名之后</li> 
 <li>副标题: 大学生出路分化之谜</li> 
 <li>作者: 郑雅君</li> 
 <li>出版社: 上海三联书店</li> 
 <li>出版日期: 2023-1</li> 
 <li>ISBN: 9787542677815</li> 
 <li>版本: 纸质书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 90 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;17&#xFF1A;Google IO &#x548C; AIGC &#x76F8;&#x5173;</title>
        <link>https://justinyan.eth.limo/47EF9DBF-8A4E-4AEB-A7F2-CC698484026B/</link>
        <guid>https://justinyan.eth.limo/47EF9DBF-8A4E-4AEB-A7F2-CC698484026B/</guid>
        <pubDate>Mon, 22 May 2023 11:15:27 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/05/Podcast-Cover-v90-1.png" alt="" /></p> 
<p>AI的发展太快了，每周都有劲爆消息刷屏，最近发生了哪些厉害的事情值得讨论呢？一起开始本期的科技快乐之旅吧~🪐</p> 
<h2>时间轴</h2> 
<ul> 
 <li>01:40 Google I/O 2023 AI! AI! AI!</li> 
 <li>09:05 OpenAI ChatGPT 相关</li> 
 <li>11:43 AI 加持下的 Bing 份额不增反减</li> 
 <li>14:46 AI 孙燕姿、AI 播客主播</li> 
 <li>20:11 苹果芯片、支付和 WWDC 展望</li> 
 <li>36:46 “戒酒芯片”</li> 
 <li>41:27 近期影视剧和“王国之泪”</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>Make Something Wonderful 电子书官方免费下载: <a href="https://stevejobsarchive.com/book">https://stevejobsarchive.com/book</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 89 &#x5728;&#x5408;&#x80A5;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/8FF6A121-4578-4119-8CA9-EEC9F083B016/</link>
        <guid>https://justinyan.eth.limo/8FF6A121-4578-4119-8CA9-EEC9F083B016/</guid>
        <pubDate>Fri, 28 Apr 2023 00:27:40 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/04/Podcast-Cover-v89_v2.png" alt="" /></p> 
<p>久违的世界各地系列来啦(～o￣▽￣)～o ~。。。</p> 
<p>本期节目嘉宾是独立开发者<a href="https://twitter.com/haozes">家浩</a>，他是YaoYao跳绳与顶瓜瓜的作者，也是“程序猿失业摆摊标杆，被光没选中之人，跳绳App终结者中年程序员汪二”🐶</p> 
<p>家浩现居安徽省省会合肥，本期节目就让我们跟着嘉宾一起，了解独立开发者在合肥这座城市的工作与生活吧！</p> 
<p>本期节目有听友福利哦❤️！</p> 
<p>家浩给我台送出10个YaoYao跳绳及10个顶瓜瓜的兑换码，欢迎大家在小宇宙评论区留言参与抽奖哦😘</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场，介绍嘉宾：@家浩</li> 
 <li>00:47 新环节：方言自我介绍</li> 
 <li>06:46 从建筑专业到程序员</li> 
 <li>08:33 选择做全职独立开发者</li> 
 <li>14:00 健康付费榜一的跳绳 App</li> 
 <li>21:17 买断制和订阅制策略的尝试</li> 
 <li>24:55 顶瓜瓜 App 的故事</li> 
 <li>27:33 朋友和家人怎么看待独立开发</li> 
 <li>29:41 合肥的衣食住行</li> 
 <li>34:55 智能手表生态</li> 
 <li>41:30 灵魂三问</li> 
 <li>46:21 互动抽奖：嘉宾送福利</li> 
 <li>45:55 片尾曲：清白之年 - 朴树</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://twitter.com/haozes">家浩 Haozes</a></li> 
 <li>YaoYao跳绳: <a href="https://yy.onlytalk.top/">官网</a> | <a href="https://apps.apple.com/cn/app/id1179393901">App Store</a></li> 
 <li><a href="https://apps.apple.com/cn/app/id1629577265">顶瓜瓜 - 坐姿提醒健康颈椎</a></li> 
 <li><a href="https://mp.weixin.qq.com/s/Xb-wWBoRDkQuDV3ASlqTGg">我们给 Apple CEO Tim Cook 来了一段绳艺</a></li> 
 <li>片尾曲: <a href="https://y.qq.com/n/ryqq/songDetail/003mKWLh2nEpxt">清白之年 - 朴树</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>SwiftUI&#x5B66;&#x4E60;&#x7B14;&#x8BB0;04 &#x2013; &#x5982;&#x4F55;&#x8C03;&#x8BD5;SwiftUI?</title>
        <link>https://justinyan.eth.limo/184BFFAD-FA4D-49AB-9A96-2F8547C931FB/</link>
        <guid>https://justinyan.eth.limo/184BFFAD-FA4D-49AB-9A96-2F8547C931FB/</guid>
        <pubDate>Thu, 20 Apr 2023 18:06:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/04/SwiftUI-Notes-04-cover-v1.jpg" alt="" /></p> 
<p>SwiftUI底层默认走Core Animation渲染，它也可以直接用Metal，效率非常高。结构简单的App一般不会遇到性能问题，但SwiftUI的写法和刷新机制毕竟跟我们熟悉的UIKit/AppKit不同，过去的写法容易造成没有必要的View Redrawing，导致卡顿或闪动影响用户体验。</p> 
<p>这种时候我们就需要调试下SwiftUI代码，看看影响体验的问题是怎么产生的。</p> 
<p>我们写的SwiftUI代码<strong>是一个遵循了<code>View</code>协议的<code>struct</code>，它不是真正的view实例本身，而只是个“view应该长啥样”的描述</strong>。这就给了SwiftUI框架很高的优化自由度，开发者反而不太能干涉底层的渲染逻辑。同时SwiftUI又是闭源的，我们也无法通过阅读源码得知确切的渲染和优化逻辑。但通过苹果提供的调试工具以及对SwiftUI渲染原理的猜测，我们还是能在应用层做一些优化的。</p> 
<h2>一、影响SwiftUI性能的维度</h2> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/swiftui-notes-04-01.png" alt="" /></p> 
<p>Xcode Instruments提供了SwiftUI专属模板，除了我们熟悉的Tim Profile维度以外，还提供了View Body, View Properties和Core Animation Commits三个维度。</p> 
<p>SwiftUI的刷新机制是以<code>body</code>为单位计算和重绘的，优化时减少View Body的重绘符合直觉。</p> 
<p>除了<code>body</code>重绘，Instruments也提供了View Properties维度的报告，可以细化分析哪些Properties发生了变化。</p> 
<p><img src="https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/Art/ca_architecture_2x.png" alt="" /></p> 
<p>最后是Core Animation Commits。SwiftUI默认用<a href="https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004514-CH1-SW1">Core Animation</a>来渲染，这种实现非常聪明，每次我们的View发生变化，SwiftUI都会计算关键帧然后作为CATransactoin提交，开发者实现UI元素的过渡动画就像呼吸一样简单。但是当CA Commit过于频繁的时候，也容易产生掉帧的问题。</p> 
<h2>二、优化SwiftUI List</h2> 
<p>我们List优化为例子，看看如何实现SwiftUI的调试和优化。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/swiftui-notes-04-02-v2.gif" alt="" /></p> 
<p>上面是我的一个SwiftUI Mac练习作，可以选择Mac上的图片进行压缩。可以看到点开"Open"按钮弹出文件选择窗口时，底下任务列表的缩略图会闪一下，说明它们都被刷新了一遍或多遍。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/swiftui-notes-04-03.png" alt="" /></p> 
<h3>2.1 私有Debug接口: Self._printChanges()</h3> 
<p>这个界面有两个SwiftUI View组成，<code>CompressionView</code>里有一个<code>List</code>，包含了多个<code>CompressViewCell</code>（上图代码简化过）。</p> 
<p>如何得知这些View因为什么而被刷新的呢？最简单的方法可以用Xcode的断点:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/swiftui-notes-04-04.jpeg" alt="" /></p> 
<p>但看堆栈不够直观，如果想知道是哪个property的更新导致View刷新了怎么办？有一个private API我们可以用于调试:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/swiftui-notes-04-05.png" alt="" /></p> 
<p><code>Self._printChanges()</code>是一个私有API，所以没有文档，根据<a href="https://stackoverflow.com/questions/69859370/where-is-self-printchanges-defined-and-or-documented-for-swiftui">这个回答</a>，该函数是Apple engineer在WWDC21的Session回答的。以及据说Xcode有一段Summary（我的Xcode 14.2是看不到这一段了）:</p> 
<pre><code>Summary
When called within an invocation of body of a view of this type, prints the names of the changed dynamic properties that caused the result of body to need to be refreshed. As well as the physical property names, “@self” is used to mark that the view value itself has changed, and “@identity” to mark that the identity of the view has changed (i.e. that the persistent data associated with the view has been recycled for a new instance of the same type).
</code></pre> 
<p>在本例子中，我先选择10个图片，所以List里有10个Cell。但是SwiftUI的List Content应该都是lazy-loading，所以<strong>我们预期只初始化其中能被看到的4个</strong>。当<code>fileImporter</code>展示的时候，<code>CompressionView</code>的viewModel property isPresentingFilePicker从false变为true，所以<code>CompressionView</code>会redraw，但是<code>CompressViewCell</code>的viewModel没有发生任何变化，所以<strong>我们预期Cells都不应该被redraw</strong>。</p> 
<p>现在开启这个API，打印出来的结果如下:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/printChanges.png" alt="" /></p> 
<p>切换<code>fileImporter</code>的时候，有6个cells被刷新，每个cell被刷了两次。第一次是<code>@self</code> changed, 第二次是<code>_viewModel</code> changed。</p> 
<h3>2.2 在macOS上用LazyVStack实现lazy-loading</h3> 
<p>根据<a href="https://developer.apple.com/forums/thread/651256">这里</a>和<a href="https://www.mongodb.com/community/forums/t/performance-issues-with-swiftui-on-macos/155706">这里</a>的讨论，初步推断虽然List Content都应该lazy-loading，但<strong>至少在macOS上还没有完美实现</strong>。用Ventura 13.2.1 + Xcode 14.2 我的测试结果是多渲染了2个，在旧的系统或SDK上可能会初始化全部cells。所以如果为了获得明确的lazy loading，我们可以使用<code>ScrollView+LazyVStack</code>来替代<code>List</code>。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/swiftui-notes-04-07.png" alt="" /></p> 
<p>实测使用LazyVStack只会渲染4个Cells。</p> 
<h3>2.3 给View Model增加Identifiable, Equatable</h3> 
<p>SwiftUI内部做了不少事情，在redraw之前会判断body是否相同以减少重绘次数。相同与否的判断跟View所绑定的<code>@State</code>, <code>@ObservedObject</code>等动态属性有关。</p> 
<p>如果是POD views (POD = plain data, see Swift’s _isPOD() function.)，SwiftUI会直接判断view的每个字段，如果不是POD views就优先取它的<code>==</code>方法，没有再fall back回去。The SwiftUI Lab的<a href="https://swiftui-lab.com/equatableview/">这篇文章</a>对此有深入探讨。不过令我感兴趣的是Core Animation的设计者John Harper的<a href="https://twitter.com/jsh8080/status/1206617106160246784?s=20">现身说法</a>。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/swiftui-notes-04-08-JohnHarper.png" alt="" /></p> 
<p>他非常低调，Google到的信息不多，只有<a href="https://appleinsider.com/articles/14/05/22/creator-of-apples-core-animation-leaves-for-new-role-at-facebook">AppleInsider</a>和<a href="https://daringfireball.net/linked/2014/05/22/facebook-john-harper">Daring Fireball</a> 2014年对他离开Apple加入Facebook的报道。看来他后来又回到了Apple并参加SwiftUI项目，WWDC19他在<a href="https://developer.apple.com/videos/play/wwdc2019/237/">这个Session</a>出现。如此说来，使用Core Animation作为SwiftUI的默认渲染就非常合理了。</p> 
<p>回到我们的优化来，因为我的App采用MVVM架构，以前写RxSwift的时候就习惯从ViewController分一个ViewModel属性出来，现在把它作为View的一个<code>@ObservedObject</code>非常自然。但也因此让这个view struct不再是一个POD view，所以我们需要给ViewModel实现Identifiable, Equatable。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/swiftui-notes-04-09-Equatable.png" alt="" /></p> 
<p>如此一来，SwiftUI在决定哪些sub-views需要被redraw的时候就可以通过我们自定义的比较函数来判断，这里我的应用场景是只要<code>id</code>相同它就不需要改变，但诸位读者要视具体情况来实现自己的比较函数。</p> 
<h3>2.4 优化后的效果</h3> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/swiftui-notes-04-10-optimized.gif" alt="" /></p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/swiftui-notes-04-11-optimized.png" alt="" /></p> 
<p>只有<code>CompressionView</code>自己因为<code>isPresentingFilePicker</code>变化而刷新，所有的Cell都不会二次重绘了，Nice!👏🥳</p> 
<h2>三、使用Instruments</h2> 
<p>上述例子只是一个非常简单的案例，如果App变得复杂了就需要Instruments相助了。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/SCR-20230413-j66.png" alt="" /></p> 
<p><em>测试时已禁止进度条刷新</em></p> 
<p>上图选取的时间段是一次<code>fileImporter</code>展开，引发了12次<code>CompressViewCell</code>的body重绘，符合<code>Self._printChanges()</code>的日志结果。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/SCR-20230413-j27.png" alt="" /></p> 
<p>优化后同样是一次<code>fileImporter</code>展开，不再有<code>CompressViewCell</code>重绘。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/SCR-20230413-jal.png" alt="" /></p> 
<p>View Properties展示了所有Properties的变化记录，拖动顶部的小三角形可以展示所有Properties的变化过程，有点厉害。不过目前它只能显示Propert Type，比如<code>State&lt;Bool&gt;</code>，没有变量名，如果你有多个同类型的Properties就有点难找到对应的变量是哪个。希望今年的WWDC可以带来更多更强大的Debug功能。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/SCR-20230413-jg1.png" alt="" /></p> 
<p>Core Animation Commits可以告诉我们哪些地方可能有渲染上的卡顿，Hacking with Swift<a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-use-instruments-to-profile-your-swiftui-code-and-identify-slow-layouts">这篇文章</a>有不错的介绍。</p> 
<p>Time Profile就无需多言了，平时用来查各种卡顿的必备工具，不再赘述。</p> 
<h2>四、下一步？</h2> 
<p>既然<code>@ObservedObject</code>会导致不好管理的view redrawing，那我们有没有更好的解决方案呢？</p> 
<p>SwiftUI发布以来，开发者们有过不少讨论。Alexey Naumov在<a href="https://nalexn.github.io/swiftui-observableobject/">Why I quit using the ObservableObject</a>中介绍他用Combine包装的AppState取代<code>@ObservedObject</code>，OneV Cat也分享过<a href="https://onevcat.com/2021/12/tca-1/">TCA - SwiftUI 的救星？</a>。</p> 
<p>目前我还在使用<code>@ObservedObject</code>作为View Model的方案，还没尝试自己封装基于Combine的View Model，未来可以尝试一下。虽然对于使用Redux全局单一Store实现Single Source of Truth的方法我还持怀疑态度，一旦App大了这个State同样是要爆炸的。</p> 
<p><img src="https://www.planetable.xyz/assets/vitalik-eth.png" alt="" /></p> 
<p>P.S. <a href="https://github.com/livid">@Livid</a> 开发的<a href="https://www.planetable.xyz/">Planet</a>就是采用这种方式实现的，有兴趣的读者可以看一下，这是<a href="https://github.com/Planetable/Planet">GitHub Repo</a>。哪天我也找个Side Project尝试一下看看。</p> 
<h2>五、相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/5629">SwiftUI学习笔记01</a></li> 
 <li><a href="https://justinyan.me/post/5638">SwiftUI学习笔记02 – 苹果官方资源</a></li> 
 <li><a href="https://justinyan.me/post/5656">SwiftUI学习笔记03 – 如何在SwiftUI中访问Window</a></li> 
 <li><a href="https://justinyan.me/post/5678">SwiftUI学习笔记04 – 如何调试SwiftUI? | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>SwiftUI&#x5B66;&#x4E60;&#x7B14;&#x8BB0;03 - &#x5982;&#x4F55;&#x5728;SwiftUI&#x4E2D;&#x8BBF;&#x95EE;Window</title>
        <link>https://justinyan.eth.limo/C2AB0ABE-DE55-4572-9A04-7BDE7EF8A72D/</link>
        <guid>https://justinyan.eth.limo/C2AB0ABE-DE55-4572-9A04-7BDE7EF8A72D/</guid>
        <pubDate>Thu, 06 Apr 2023 11:21:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/04/SwiftUI-Notes-03-cover.jpg" alt="" /></p> 
<p>在<a href="https://justinyan.me/post/5629">SwiftUI学习笔记 01</a>我提过**现阶段的SwiftUI，无法直接在View里直接访问所属的Window。**如果开发的是一个iOS App还好，需要hack到Window的地方不多，但在Mac上跟Window交互就实在太普遍了。别的不说，仅仅是调用AppKit的很多接口都少不了Window参数，比如在Mac上打开/保存文件用到的<code>NSOpenPannel/NSSavePannel</code>，我们常常会把它挂在到当前Window上:</p> 
<pre><code class="language-swift">func beginSheetModal(for window: NSWindow)
</code></pre> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/SwiftUI-Notes-03-sheet-23-04-101-11-15-09.jpg" alt="" /></p> 
<p>这个接口接受一个<code>window</code>参数，可以展示一个好看的系统保存文件窗口，并挂载在当前App window上（图左）。如果我们拿不到window，那就只能调用<code>runModal()</code>方法，这样唤出的窗口跟我们App主窗口是分离的，不太优雅（图右）。尤其对于面向文档的App来说，这种体验很不苹果。</p> 
<p>除了调用Cocoa的方法，有时候我们也需要根据Window Size进行部分UI Elements的调整，就像获取super view的frame一样自然。所以在SwiftUI中获取window势在必行。</p> 
<p>本文涉及Sample Code请看<a href="https://gist.github.com/justinyanme/76d9cecd15e991e6afca2c747c772620">这个👉🏻gist</a>。</p> 
<h2>一、放弃SwiftUI App入口，改用NSHostingController</h2> 
<p>利用SwiftUI提供的<code>NSHostingController</code>，我们可以走老一套AppKit的路，不用SwiftUI来打开View，而是先创建一个NSWindow，然后再把SwiftUI View通过NSHostingController放上去。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/MainWindowController.swift-23-04-101-11-31-15.png" alt="" /></p> 
<p>通过在<code>MainWindowController</code>这个级别持有<code>MainViewModel</code>与<code>window</code>，我们就能很方便地实现两者的交互。非常“简单粗暴”，但有效。</p> 
<p>但是这种方法只适用于非SwiftUI App入口创建的Window，比如展示一个Settings Window或者一个About Window。但是如果我需要拿到SwiftUI一开始创建的Root Window，采用这种方法就必须推倒重来，改用AppKit启动App。</p> 
<p>这样一来，SwiftUI方便的<code>commandGroup</code>, <code>shortcut</code>, <code>WindowGroup</code>之类的新特性我们就享受不到了，有没有保留SwiftUI入口的方案呢？</p> 
<h2>二、参考GeometryReader实现一个WindowReader</h2> 
<p>当我们需要根据super view的frame进行sub view布局时，SwiftUI提供了<a href="https://developer.apple.com/documentation/swiftui/geometryreader">GeometryReader</a>这样的工具。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/GeometryReader.png" alt="" /></p> 
<p><img src="https://www.hackingwithswift.com/img/books/quick-start/swiftui/how-to-provide-relative-sizes-using-geometryreader-1@2x.png" alt="" /></p> 
<p>上述代码使得左边的<code>Text</code>占super view的33% width, 右边占67%。(Example来自<a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-provide-relative-sizes-using-geometryreader">这里</a>)</p> 
<p>如果我能实现一个<code>WindowReader { window in … }</code>是不是就无缝衔接，果味十足了🤔</p> 
<p>我们来看看<code>GeometryReader</code>的声明:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/GeometryReader-1.png" alt="" /></p> 
<p>关键在<a href="https://developer.apple.com/documentation/swiftui/viewbuilder"><code>@ViewBuilder</code></a>这个修饰符。</p> 
<p>SwiftUI的<code>View</code>是一个protocol，我们熟悉的<code>body</code>是一个带有<code>@ViewBuilder</code>修饰的属性:</p> 
<pre><code>@ViewBuilder @MainActor var body: Self.Body { get }
</code></pre> 
<p>所以要实现<code>GeometryReader</code>的效果，我们就需要新建一个类似的结构:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/WindowReader.swift_.png" alt="" /></p> 
<p>那么怎么获取当前View的Window呢？我们可以通过NSView实例的<code>window</code>属性来拿到。如果是nil说明这个NSView已经被移除，如果不为空则是它所在Window的实例。</p> 
<p>上述<code>WindowReader</code>这个结构体是SwiftUI的View，为了能在SwiftUI View里访问NSView，我们需要使用<code>NSViewRepresentable</code>这个protocol。UIKit里也有类似的<code>UIViewRepresentable</code>协议，可以实现SwiftUI与AppKit/UIKit的混用。</p> 
<p>首先我们创建一个<code>NSView</code>的Subclass，为的是通过这个NSView拿到当前的Window:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/WindowView.png" alt="" /></p> 
<p>这样当该<code>NSView</code>的<code>viewDidMoveToWindow()</code>被调用时，我们就可以往<code>windowViewModel</code>里记录当前的Window。</p> 
<p>然后我们创建一个<code>WindowViewRepresentable</code>，以便SwiftUI的View可以访问到这个<code>WindowView</code>:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/WindowViewRepresentable.png" alt="" /></p> 
<p>最后，我们在<code>WindowReader</code>的<code>body</code>里面，创建一下这个<code>WindowViewRepresentable</code>:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/using-windowReader.png" alt="" /></p> 
<p>最终我们就可以像使用<code>GeometryReader</code>一样，在SwiftUI里使用<code>WindowReader</code>了</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/using-windowReader-2.png" alt="" /></p> 
<p>这种解法学自<a href="https://github.com/aheze/Popovers">aheze/Popovers</a>这个项目，感兴趣的读者可以阅读源码以及<a href="https://github.com/aheze/Popovers/issues/3">这个issue</a>，以及本文相关的gist: <a href="https://gist.github.com/justinyanme/76d9cecd15e991e6afca2c747c772620">SwiftUI Notes 03</a></p> 
<h2>三、通过Introspect曲线救国</h2> 
<p>直接在SwiftUI的布局代码中获取window我们通过<code>WindowReader</code>实现了，但我还有些方法是通过ViewModel或者Button的Action Block实现的，虽然通过<code>WindowReader</code>我也可以给每个需要用到Window的View全部无脑嵌套一层，但是有没有其他方法呢？</p> 
<p>比如我能否通过<code>View Modifier</code>来实现呢？</p> 
<p>在<a href="https://justinyan.me/post/5629">第一篇笔记</a>里我们介绍过这个<a href="https://github.com/siteline/SwiftUI-Introspect">SwiftUI-Introspect</a>项目，它通过给SwiftUI的View里注入(inject)一个NSView/UIView然后再通过AppKit/UIKit的方法向上寻找对应平台的实现，从而获取<code>List</code>背后的<code>NSTableView/UITableView</code>这样的功能。</p> 
<p>所以只要我们的View里用到了Introspect framework支持的View我们就能直接拿到它，然后再获取它的Window属性，比如:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/scrollview.png" alt="" /></p> 
<p>如果View用到了<code>ScrollView</code>我们就能这样把window拿到并赋值给viewModel。Instrospect的原理是在<code>updateNSView()</code>被调用时回调这个block，所以如果这个View经常刷新它就会频繁回调，viewModel要记得去重后再update。</p> 
<h2>四、有没有更通用一点的解法？</h2> 
<p>Instrospect的做法当然不保险，只要苹果升级系统修改实现直接就报废。但我们可以学习它的通过扩展<code>View</code>来实现类似的效果。</p> 
<p>跟 #2 类似，我们同样需要一个NSView作为基础，通过它来获取<code>window</code>:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/IntrospectWindowView.swift_.png" alt="" /></p> 
<p>我们在<code>viewDidMoveToWindow</code>回调的时候，调用<code>getWindow()</code>block，把它当前的<code>window</code>回调给SwiftUI。</p> 
<p>同样的，我们也需要把它用<code>NSViewRepresentable</code>包装一下给SwiftUI:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/IntrospectWindowViewRepresentable.swift_.png" alt="" /></p> 
<p>SwiftUI这边，我们这次不使用<code>@ViewBuilder</code>，而是扩展SwiftUI的<code>View</code>，给它添加实例方法:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/IntrospectWindowViewRepresentable-extension.png" alt="" /></p> 
<p>这里我们的<code>inject</code>方法采用Introspect framework的，用<code>overlay()</code>覆盖一个frame为0的空白View，跟上面的<code>background()</code>做法异曲同工。最终效果如下:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/04/getWindow-usage.png" alt="" /></p> 
<p>直接通过View的<code>getWindow()</code> block即可获取当前View所在的Window，然后ViewModel就可以为所欲为啦！哈哈哈</p> 
<h2>五、What's Next?</h2> 
<p>SwiftUI目前还做不到API 100%覆盖UIKit/AppKit，我想它的目标应该也不会如此。但是可以想见，SwiftUI的API未来会越来越丰富，而且也在每年迭代进化中。去年WWDC的<code>NavigationSplitView</code>和<code>NavigationStack</code>就是对此前<code>NavigationView</code>的改进。</p> 
<p>一开始我接触SwiftUI，还是免不了要推倒方案，重回UIKit/AppKit的实现，但是如果咬咬牙，想一下是否能通过<code>NSViewRepresentable</code>来bridge两套UI框架，打通了之后真的成就感满满。既不需要放弃SwiftUI便利的新能力，又能用上原生平台框架更强大更丰富的自定义能力。</p> 
<p>有了这个东西，其实已经可以绕过大部份SwiftUI目前还解决不了的问题了。</p> 
<h2>六、相关链接</h2> 
<ul> 
 <li>本文涉及代码gist: <a href="https://gist.github.com/justinyanme/76d9cecd15e991e6afca2c747c772620">SwiftUI Notes 03</a></li> 
 <li>WindowReader相关的Popovers项目: <a href="https://github.com/aheze/Popovers">aheze/Popovers</a></li> 
 <li><a href="https://github.com/siteline/SwiftUI-Introspect">SwiftUI-Introspect</a></li> 
 <li><a href="https://justinyan.me/post/5629">SwiftUI学习笔记01</a></li> 
 <li><a href="https://justinyan.me/post/5638">SwiftUI学习笔记02 – 苹果官方资源</a></li> 
 <li><a href="https://justinyan.me/post/5656">SwiftUI学习笔记03 – 如何在SwiftUI中访问Window</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>SwiftUI&#x5B66;&#x4E60;&#x7B14;&#x8BB0;02 - &#x82F9;&#x679C;&#x5B98;&#x65B9;&#x8D44;&#x6E90;</title>
        <link>https://justinyan.eth.limo/27C12339-97D2-4E3E-A61A-290F47740FC2/</link>
        <guid>https://justinyan.eth.limo/27C12339-97D2-4E3E-A61A-290F47740FC2/</guid>
        <pubDate>Wed, 05 Apr 2023 20:25:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-cover-v2.jpg" alt="" /></p> 
<p>SwiftUI说到底只是个UI框架，再加上苹果官方隐藏复杂性的设计，优秀的一面是简单优雅，缺点则是难以定制。我的主观感受是，SwiftUI跟以前苹果推出的Interface Builder, Core Data等技术异曲同工，对中小型App开发非常友好，上手难度低，但涉及强定制化需求时就很考验开发者的平台经验了。</p> 
<p>SwiftUI的其中一个特性是“跨苹果平台”，而所有的跨平台UI技术都需要提供一个平台无关的抽象，所以SwiftUI的控件要基于UIKit, AppKit, WatchKit, TVUIKit的再抽象一层。于是熟悉了其中一种UI技术的开发者就需要再次学习SwiftUI的基础概念。其中最简单的入门资料来自苹果官方文档: <a href="https://developer.apple.com/documentation/swiftui/">https://developer.apple.com/documentation/swiftui/</a></p> 
<p>文档很详细，覆盖从App Scene到Windows, Documents, Navigation, 各种View级别控件等UI技术，还有结合<code>@SceneStorage</code>, <code>@AppStorage</code>, Core Data等多种数据存储技术，当然也少不了SwiftUI与UIKit, AppKit之间的混合开发。</p> 
<p>如果读者是有SwiftUI或iOS开发经验的开发者，我建议可以页面点左下角的Filter，筛选出Sample Code，直接把所有Projects下载下来看代码，更加直观。有些sample code project还会配套WWDC session video，也非常适合刚入门的朋友。以下是我整理的官方文档的主题:</p> 
<h2>一、苹果官方SwiftUI资源</h2> 
<h3>1. <a href="https://developer.apple.com/documentation/swiftui/food_truck_building_a_swiftui_multiplatform_app">快餐车: 打造一个基于SwiftUI的跨平台应用</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-foodtruck-v2-1.jpg" alt="" /></p> 
<ul> 
 <li>Food Truck: Building a SwiftUI multiplatform app</li> 
 <li>创建一个共享同一份代码，同时跑在Mac, iPad和iPhone的应用</li> 
 <li>这是一个完整跨平台App，包括Mac上的MenuBar，包括Form等丰富的UI控件。数据上用到了<code>@EnvironmentObject</code>, <code>@FocusState</code>等特性。同时还支持跟AppKit, UIKit混合使用，比如里面有一个封装MKMapView混入SwiftUI的例子。甚至还支持Widgets小组件，<strong>如果只通过一个Project学习SwiftUI的话，可以优先看这个Project</strong>。</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/ea7c0bd405/FoodTruckBuildingASwiftUIMultiplatformApp.zip">⬇️下载示例代码</a></li> 
 <li><a href="https://github.com/apple/sample-food-truck">GitHub Repo</a></li> 
</ul> 
<h3>2. <a href="https://developer.apple.com/documentation/swiftui/fruta_building_a_feature-rich_app_with_swiftui">Fruta: 使用SwiftUI打造一个功能丰富的应用</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-fruta-1.jpg" alt="" /></p> 
<ul> 
 <li>Fruta: Building a Feature-Rich App with SwiftUI</li> 
 <li>创建一个共享同一份代码，同时支持Widgets和App Clip的应用</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/38a4344721/FrutaBuildingAFeatureRichAppWithSwiftUI.zip">⬇️下载示例代码</a></li> 
</ul> 
<h3>3. <a href="https://developer.apple.com/documentation/swiftui/bringing_multiple_windows_to_your_swiftui_app">让你的SwiftUI App支持多窗口</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-multiple-windows.jpg" alt="" /></p> 
<ul> 
 <li>Bringing multiple windows to your SwiftUI app</li> 
 <li>在iPadOS与macOS上根据不同的状态定制你的App的视觉与交互行为</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/5d3aca163a/BringingMultipleWindowsToYourSwiftUIApp.zip">⬇️下载示例代码</a></li> 
</ul> 
<h3>4. <a href="https://developer.apple.com/documentation/swiftui/building_a_document-based_app_with_swiftui">使用SwiftUI打造一个基于文档的App</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-document-based-1.jpg" alt="" /></p> 
<ul> 
 <li>Building a Document-Based App with SwiftUI</li> 
 <li>基于SwiftUI实现跨平台的支持创建、保持和打开文档的App</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/71bc823695/BuildingADocumentBasedAppWithSwiftUI.zip">⬇️下载示例代码</a></li> 
</ul> 
<h3>5. <a href="https://developer.apple.com/documentation/swiftui/bringing_robust_navigation_structure_to_your_swiftui_app">给你的SwiftUI App打造坚实的导航结构</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-navigation-1.jpg" alt="" /></p> 
<ul> 
 <li>Bringing robust navigation structure to your SwiftUI app</li> 
 <li>使用navigation links, stacks, destinations和paths等技术，在全平台实现简洁的用户体验，并同时提供deep linking和状态恢复等能力。</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/c46188a3c6/BringingRobustNavigationStructureToYourSwiftUIApp.zip">⬇️下载示例代码</a></li> 
</ul> 
<h3>6. <a href="https://developer.apple.com/documentation/widgetkit/building_widgets_using_widgetkit_and_swiftui">使用WidgetKit和SwiftUI创建小组件(Widgets)</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-widgets-1.jpg" alt="" /></p> 
<ul> 
 <li>Building Widgets Using WidgetKit and SwiftUI</li> 
 <li>使用小组件在桌面展示你的应用内容，使用自定义Intents实现用户自定义设置项</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/4f639eb9e1/BuildingWidgetsUsingWidgetKitAndSwiftUI.zip">⬇️下载示例代码</a></li> 
</ul> 
<h3>7. <a href="https://developer.apple.com/documentation/swiftui/restoring_your_app_s_state_with_swiftui">使用SwiftUI实现App状态恢复</a></h3> 
<ul> 
 <li>Restoring Your App’s State with SwiftUI</li> 
 <li>保存用户行为数据，提升App的一致性体验</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/7a3008795f/RestoringYourAppsStateWithSwiftUI.zip">⬇️下载示例代码</a></li> 
</ul> 
<h3>8. <a href="https://developer.apple.com/documentation/swiftui/loading_and_displaying_a_large_data_feed">如何加载并展示大量数据</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-core-data-1.jpg" alt="" /></p> 
<ul> 
 <li>Loading and Displaying a Large Data Feed</li> 
 <li>如何实现低内存占用的后台异步批量加载，并实现数据去重</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/e18c927370/LoadingAndDisplayingALargeDataFeed.zip">⬇️下载示例代码</a></li> 
</ul> 
<h3>9. <a href="https://developer.apple.com/documentation/swiftui/add_rich_graphics_to_your_swiftui_app">给你的SwiftUI App增加丰富多彩的图形</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-graphics-1.jpg" alt="" /></p> 
<ul> 
 <li>Add Rich Graphics to Your SwiftUI App</li> 
 <li>用background materials, vibrancy(俗称毛玻璃)，自定义图形和动画，让你的应用出类拔萃</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/d2ab784b01/AddRichGraphicsToYourSwiftUIApp.zip">⬇️下载示例代码</a></li> 
</ul> 
<h3>10. <a href="https://developer.apple.com/documentation/swiftui/composing_custom_layouts_with_swiftui">使用SwiftUI编写自定义布局代码</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-layout-1.jpg" alt="" /></p> 
<ul> 
 <li>Composing custom layouts with SwiftUI</li> 
 <li>采用SwiftUI提供的布局工具，随心所欲地编排你的应用界面</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/fbe3f0cffe/ComposingCustomLayoutsWithSwiftUI.zip">⬇️下载示例代码</a></li> 
</ul> 
<h3>11. <a href="https://developer.apple.com/documentation/swiftui/building_a_great_mac_app_with_swiftui">使用SwiftUI打造极致Mac App</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-mac-app-1.jpg" alt="" /></p> 
<ul> 
 <li>Building a Great Mac App with SwiftUI</li> 
 <li>融合侧边栏、表格、工具栏和多种流行的UI元素，打造一个引人入胜的Mac App</li> 
 <li><a href="https://developer.apple.com/documentation/swiftui/building_a_great_mac_app_with_swiftui">⬇️下载示例代码</a></li> 
</ul> 
<h3>12. <a href="https://developer.apple.com/documentation/swiftui/creating_accessible_views">创建辅助界面</a></h3> 
<ul> 
 <li>Creating Accessible Views</li> 
 <li>在SwiftUI View上使用accessibility modifiers，让你的App可以被任何人使用。</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/fd3b687c6c/CreatingAccessibleViews.zip">⬇️下载示例代码</a></li> 
</ul> 
<h3>13. <a href="https://developer.apple.com/documentation/uikit/views_and_controls/using_swiftui_with_uikit">在UIKit中使用SwiftUI</a></h3> 
<p><img src="https://cdn.justinbot.com/wp-content/uploads/2023/04/SwiftUI-Notes-02-UIKit-1.jpg" alt="" /></p> 
<ul> 
 <li>Using SwiftUI with UIKit</li> 
 <li>学习如何在一个UIKit App中使用SwiftUI</li> 
 <li><a href="https://docs-assets.developer.apple.com/published/77d716ffc6/UsingSwiftUIWithUIKit.zip">⬇️下载示例代码</a></li> 
</ul> 
<h2>二、What's Next?</h2> 
<p>学完这些官方资源就足以让我们完成一个足够好用，能完成任务的App。但是如果我们希望把App的体验做到平台最好的效果，那么上述实现显然是远远不够的。</p> 
<p>开发过程中，往往为了追求1%的细节打磨，我们得投入80%的时间精力。比如SwiftUI的View有一个非常方便的<code>contextMenu</code> modifier，在iOS上表现为长按(或者3D Touch)出菜单，在macOS上则是右键。但是macOS上被选中的蓝色高亮既无法修改颜色和样式，也无法被隐藏和消除。所以我为了去掉这个蓝色高亮，最终只能自己监听mouse event，调用AppKit接口实现一个右键按下展示contextual menu的功能。</p> 
<p>路漫漫其修远兮，UIKit和AppKit经过这么多年的发展，其丰富的接口实现不是SwiftUI这一两年就能完全覆盖的。所幸苹果还是给了开发者后路，两者可以混合使用，不至于像WatchKit刚出的时候，开发者针对复杂功能无可奈何。</p> 
<p>后续笔记我们再分享跟AppKit/UIKit混合开发的案例。</p>
        ]]></description>
    </item>
    
    <item>
        <title>SwiftUI&#x5B66;&#x4E60;&#x7B14;&#x8BB0; 01</title>
        <link>https://justinyan.eth.limo/906A5FE1-FED7-4733-9B29-0DF06AC0236B/</link>
        <guid>https://justinyan.eth.limo/906A5FE1-FED7-4733-9B29-0DF06AC0236B/</guid>
        <pubDate>Wed, 05 Apr 2023 20:25:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/03/swiftui-mac-app-cover.jpeg" alt="" /></p> 
<p>距苹果在2019年WWDC发布SwiftUI已经过去将近4年时间，去年这页Keynote可谓经典永流传:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/03/swiftui-mac-app-wwdc-2022.jpg" alt="" /></p> 
<p>其实过去十几年，iOS的UIKit一直是苹果发力的方向，反观macOS使用的AppKit，已经多年不做任何更新了。前些年的更新也只是多了一些“安全”限制，带来一两个小features而已。</p> 
<p>所以SwiftUI的出现其实对macOS开发者来说无疑是一种福利。当然，苹果的发布会一般都会说在Xcode上点一个按钮，剩下的就magically happend，但苹果的开发者都知道这个magic遇到现实到底有多么难实现。</p> 
<p>所以现在使用SwiftUI开发Mac App是什么样的体验呢？我最近在研究这个东西，顺便写出来权当笔记，分享一下。</p> 
<h2>1. 苹果官方Binary的SwiftUI渗透率</h2> 
<p>根据 @timac 的Blog分析，<a href="https://blog.timac.org/2022/1005-state-of-swift-and-swiftui-ios16/">iOS 16中官方SwiftUI的使用率</a>相比去年又有了很大的提升:</p> 
<p><img src="https://blog.timac.org/2022/1005-state-of-swift-and-swiftui-ios16/BinariesUsingSwift.png" alt="" /></p> 
<p>有226个使用了SwiftUI的Binaries，像Air Drop, FaceTime, Health, Podcasts等App都使用了SwiftUI开发。</p> 
<p>macOS这边，AppKit依然是大头，但SwiftUI和Catalyst的占比提升明显:</p> 
<p><img src="https://blog.timac.org/2022/0818-state-of-appkit-catalyst-swiftui-mac/CatalystSwiftUIAppKit.png" alt="" /></p> 
<p>Mac上的Home, News, Stocks 和 Voice Memos 这些App是用的Catalyst做跨平台开发，同时Reminder, Photos, Notes之类的App也逐渐开始采用SwiftUI混合开发了。</p> 
<p>苹果官方数年来的实践也帮助SwiftUI框架取得不小的进步，所以现阶段采用SwiftUI进行官方原生控件的App开发是没有任何问题的。</p> 
<h2>2. Mac App的main入口</h2> 
<p>相比大家熟悉的<code>applicationDidFinishLaunching</code> delegate入口，Mac App有更多选择。我们既可以通过Main Menu这个xib文件指定入口，也可以作为命令行启动。</p> 
<p>现在我们也可以使用New Project的模板创建一个SwiftUI App for macOS，模板自动创建的入口代码大致如下:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/03/swiftui-mac-app-001-23-03-90-14-27-37.jpg" alt="" /></p> 
<p>其中App Delegate的成员需要我们自己手动创建，这里不再赘述。</p> 
<p>通过SwiftUI创建入口的好处是，我们可以享受SwiftUI Modifiers带来的全部好处，包括窗口管理，Menu Commands的语法糖，Shortcuts语法糖等等。</p> 
<p>缺点也是显而易见的：现阶段的SwiftUI，<strong>无法直接在View里直接访问所属的Window</strong>。</p> 
<p>大部份时候这并不是问题，但如果你希望在View里操控Window，比如修改大小并展示动画，那么由上述方案创建的View就无法实现了。</p> 
<p>如果是通过AppKit创建的其他NSWindow，我们可以通过<code>NSHostingView</code>的接口创建一个SwiftUI View，然后再想办法把这个Window传给它，或者View通过回调来操作Window。但 <code>@main</code> 入口自动创建的第一个Window我们是无能为力的。</p> 
<p>所以这种情况下我们还是只能退化到采用Main Menu启动App，然后把 <code>@main</code> 交给App Delegate，再创建一个可控的NSWindowController，然后把第一个View用NSHostingView的方式塞进去来实现对Window的操控。</p> 
<h2>3. 如何在SwiftUI的View里找到它对应的AppKit/UIKit实现？</h2> 
<p>现阶段SwiftUI的控件在iOS会被转成UIKit实现，macOS上则是AppKit。比如<code>List</code>，在iOS是UITableView，macOS是NSTableView。</p> 
<p>而SwiftUI为了隐藏复杂性，暴露的接口和属性其实是它们的子集。当我们对UI有比较强的个性化设计需求时，我们不得不想办法获取它的平台实现然后进行操作。</p> 
<p>比如我希望在我的Mac App里，<code>List</code> 不显示背景颜色，但是SwiftUI并没有提供这样的接口，那就需要曲线救国了。</p> 
<p><a href="https://github.com/siteline/SwiftUI-Introspect">SwiftUI-Introspect</a>这个项目，通过给View结构注入一个<code>IntrospectionView</code>作为锚点，通过View的<code>superview</code>或ViewController的<code>parent</code>/<code>children</code>等接口来寻找符合条件的View，非常聪明的做法。</p> 
<p><img src="https://github.com/siteline/SwiftUI-Introspect/raw/master/docs/diagram.png" alt="" /></p> 
<p>“注入”采用的是SwiftUI的 <code>overlay</code> 接口，并把注入用的<code>IntrospectionView</code>设置为size 0，这样目标View就是自己的前一个兄弟节点(previous sibling node)。注入的<code>IntrospectionView</code>是一个<code>UIView</code>/<code>NSView</code>，遵循<code>UIViewRepresentable</code>/<code>NSViewRepresentable</code>，所以只要我们拿到这个<code>IntrospectionView</code>对象，就能调用对应的<code>superview</code>等接口，再进行类型判断，找到对应的View。</p> 
<p>比如我们想针对一个 <code>List</code> 找到它对应的 <code>NSTableView</code>，那么代码可以这么写:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/03/swiftui-mac-app-002-23-03-90-14-27-37.jpg" alt="" /></p> 
<p>不过正如作者所说，这种做法可能会随着SwiftUI新版本的发布而失效。</p> 
<p>这跟我们以前通过Method Swizzling等方式深入修改AppKit/UIKit的私有类所需要承担的风险是一样的。</p> 
<h2>4. The best way to build an app?</h2> 
<p>如果这个App采用iOS/macOS原生控件，没有太多定制化需求，那么SwiftUI使用起来无比丝滑，甚至可以跟设计师坐在一起慢慢调UI细节，的确是效率神器。</p> 
<p>不过一旦这个App进入到细节打磨阶段，那么隐藏了接口复杂性的SwiftUI将是一大阻碍，需要开发者经验积累与SwiftUI Framework进化的共同努力。我在开发SwiftUI App时不止一次地推翻原有的方案，重新采用AppKit的实现。当然，这也是我学习的必经之路，所以接下来我也想持续将我踩过的坑写下来，一方面给自己记录回顾，另一方面也许读者朋友看了可以少走一点弯路。</p> 
<p>那么本期到此为止，我们下期再见。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://blog.timac.org/2022/1005-state-of-swift-and-swiftui-ios16/">Apple’s use of Swift and SwiftUI in iOS 16</a></li> 
 <li><a href="https://blog.timac.org/2022/0818-state-of-appkit-catalyst-swiftui-mac/">Apple’s use of AppKit, Mac Catalyst and SwiftUI in macOS</a></li> 
 <li><a href="https://github.com/siteline/SwiftUI-Introspect">siteline/SwiftUI-Introspect: Introspect underlying UIKit components from SwiftUI</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 88 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;16: ChatGPT &#x6301;&#x7EED;&#x6380;&#x8D77; AI &#x70ED;&#x6F6E;</title>
        <link>https://justinyan.eth.limo/7AE186FD-1C95-4142-A127-B602F3A4B297/</link>
        <guid>https://justinyan.eth.limo/7AE186FD-1C95-4142-A127-B602F3A4B297/</guid>
        <pubDate>Mon, 03 Apr 2023 01:06:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/04/Podcast-Cover-v88-v2.png" alt="" /></p> 
<p>最近ChatGPT掀起的AI热潮愈演愈烈，无论是否科技从业者都觉得AI很快要改变世界了🤔</p> 
<p>所有新技术的出现都有好有坏，有人觉得AI提高了生产力，有人觉得AI威胁了人类文明，就让本期快乐星球和大家一起探讨吧！</p> 
<p>P.S. 上两期节目播出后不久，《投资第1课》就出版了实体书，主播Justin也是第一时间买到手，内容和App版本差不多，书本装帧质量很好，是一本非常适合入门的理财读物。</p> 
<p>有知有行也给我台的听众朋友送来福利，欢迎大家在本期节目的小宇宙评论区给我们留言，我们将抽出幸运听友送出有知有行的这本新书：《投资第1课》。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 听友福利：互动抽奖</li> 
 <li>01:43 ChatGPT 4</li> 
 <li>07:07 暂停AI研发，“降临派”还是“拯救派”</li> 
 <li>10:21 Midjourney 使用体验</li> 
 <li>14:44 雨后春笋般的 AI 竞赛</li> 
 <li>18:59 碳基生物只是硅基生物的引导程序吗？</li> 
 <li>29:49 苹果 WWDC2023 定档6月6日</li> 
 <li>34:15 库克到访中国，马斯克也快了？</li> 
 <li>37:15 游戏、黑暗荣耀、铃芽之旅</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>封面来自 MidJourney</li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #184 &#x300A;&#x4F60;&#x5F53;&#x50CF;&#x9E1F;&#x98DE;&#x5F80;&#x4F60;&#x7684;&#x5C71;&#x300B;</title>
        <link>https://justinyan.eth.limo/26283BFF-DC0A-4098-A69D-226DC4299AE1/</link>
        <guid>https://justinyan.eth.limo/26283BFF-DC0A-4098-A69D-226DC4299AE1/</guid>
        <pubDate>Tue, 28 Mar 2023 14:03:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <img class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2023/03/educated-book-cover-v1-23-03-87-11-49-00.jpg?imageMogr2/quality/80|imageMogr2/format/webp" /> 
<p>2018年美国的Tara Westover写了一本回忆录，名为 <em>Educated</em> （简体译为《你当像鸟飞往你的山》，直译是“受教育”），讲述了作者生于“怪异”且“暴虐”的家庭，从小如何在“家庭学校”中挣扎，凭自己的努力离家上大学，最终进入英国剑桥大学，拿到博士学位的故事。虽然“教育话题”在这本回忆录中非常重要，但比这个“励志”故事更吸引我的，是广义的教育（家庭、社会教育）以及作者与原生家庭之间来回拉扯的关系。</p> 
<p>本书自2018年出版以来，在New York Times畅销榜上持续霸榜两年，其辨识度颇高的铅笔封面在中国书店里也常年摆放在显眼的位置。如此广受欢迎的原因，与Tara（塔拉）小时候罕见的人生经历密不可分。</p> 
<p>这本书分为三个部分，第一部分讲述Tara小时候的故事。Westover（韦斯特弗）一家住在美国中部爱达荷州（Idaho）一个叫做克里夫顿(Clifton)的小镇。有多小呢？2010年美国人口普查数据显示，一共有259人在此生活。在小镇生活不是什么问题，问题在Tara的父母身上。父亲吉恩(Gene Westover)不信任美国政府，认为学校、医院都是害人的地方，他还是一位虔诚的摩门教徒，相信灾难很快就会降临，于是在自己家里囤积粮食、枪支，随时准备应对末日的来临。父亲患有双相情感障碍，俗称“躁郁症”，但小时候的Tara并没有认识到这一点，只是觉得父亲说的都是对的。母亲法耶(Faye)对父亲言听计从，即使不愿意也还是承担起家庭医生的职责，并且听从父亲的建议去做助产士（因为他们不去医院），帮助社区的孕妇接生。</p> 
<p>Westover一家有七个小孩，作者Tara是最小的一个，比她大的还有姐姐奥黛丽和五个哥哥，分别是托尼、肖恩、泰勒、卢克和理查德。一家人无不生活在父亲的强力控制之中。父亲经营一个废料场，专门做垃圾分类回收的，所有哥哥都要去父亲的废料场工作。在大哥大姐们通过慢慢攒钱，偷偷学习（父亲不允许孩子们上学），最终离家或做货车司机或去上学。走了几位兄弟姐妹，年纪最小的Tara终于也迎来了她到回收场工作的一天。</p> 
<p>工作繁重，起早摸黑，浑身污糟，没有正常的学校生活，没有正常的社交生活，经济窘困（虽然其实他们并不真的贫穷，但是父亲把大部份收入都拿去囤积粮食弹药应对世界末日了），你很难想象这样的家庭他们每天都在面对什么。用触目惊心来形容犹觉过于轻巧。雪上加霜的是，哥哥肖恩也遗传了父亲的精神疾病，随着其他哥哥姐姐的离开，年级最小的Tara就成了肖恩的施暴对象。其暴虐行迹读来简直令人发指。</p> 
<p>还好Tara是幸运的，她从哥哥泰勒那里学到上学的重要性，坚强应对来自父亲和哥哥的折磨，努力通过自学，多次尝试美国入学考试（AST），最终进入杨百翰大学。自此得以离开原生家庭，接触现实世界。</p> 
<p>读到这里的时候，我真心为Tara感到开心，觉得她终于可以离开这个地狱般的地方了。哪怕初次进入现实世界会有诸多不适，比如住宿舍要天天洗澡（在她家里，不想洗澡就不洗），冰箱里的食物不能放到腐烂（可以想象她原来的家里会充满什么味道），牙痛了就要去医院之类。普通人习以为常的事情对Tara来说有太多需要学习的，在课堂上，她甚至不知道“Holocaust”这个词是纳粹大屠杀的意思，老师误以为Tara是故意提出来羞辱老师的。但这不重要，这些都是可以学习，可以改变的事情。而且Tara还遇到了对她特别好的主教，引导她，告诉他精神疾病的知识，帮助她申请助学金从而摆脱父亲让她去废料场工作的要求。</p> 
<p>在我看来，Tara最难摆脱的就是跟原生家庭之间的羁绊。孩子与父母的关系无法轻易断舍，哪怕受再多的折磨和苦难，哪怕面对废料场的钢铁巨兽机器Tara差点丢了小命，父母还是父母。看着Tara一次次无可奈何地服从父母的要求，真的读到令人抑郁，这种无能为力的感觉实在太糟糕了。</p> 
<p>后来杨百翰的犹太历史课教授克里博士教授发现Tara的潜能，帮她申请去剑桥的交换生项目。在剑桥，Tara从正常人的世界又进一步接触到顶级学府的世界。即便如此，只要Tara回到爱达荷州的老家，她就还是在废料场拣拾垃圾的瘦弱小妹。对Tara来说，地狱才是现实，而大学是梦幻。</p> 
<p>后来Tara拿到哈佛的访学奖学金，回到美国哈佛大学。有一天父母知道了，开车来哈佛找她。在经历最后一次剧烈的心理挣扎，差点答应父母的请求跟他们回去之后，Tara终于下定决心跟原生家庭彻底脱离关系。那是2010年左右的事情，当时Tara只有二十几岁，她的人生还很长，读到她目送父母的车子离开的时候，我真心为Tara感到高兴，也为她的勇气感到佩服。</p> 
<p>原生家庭的关系在前几年是比较流行的话题。我最近读胡适的《容忍与自由》，他認爲中國傳統的特色是中國“獨有的寶貝”：“八股、小腳、太監、姨太太、五世同居的大家庭、貞節牌坊、地獄活現的監獄、廷杖板子夾棍的法庭。”大家族在过去的历史中显然对每一个人的生存发挥了非常重要的作用，但其对“个人”概念的抹灭也是不可忽视的。</p> 
<p>正因为不存在“个人”，才好被控制。</p> 
<p>Tara在她的原生家庭中也有类似的遭遇，只是她的例子更加极端。</p> 
<p>Freedom is not free. 从Tara的行文看得出来，她并不希望彻底离开父母，但就好像电影《机器管家》(Bicentennial Man)里具有意识的机器人一样，有天他跟自己的主人要求“自由”，主人说他就必须离开这个房子。</p> 
<p>自由是有代价的。</p> 
<p>当你随时可以离开的时候，你才真正拥有了自由。</p> 
<p>2023.03.26/图书馆</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️⭐️(5/5)</li> 
 <li>标题: 你当像鸟飞往你的山</li> 
 <li>原标题: Educated:A Memoir</li> 
 <li>作者: 塔拉·韦斯特弗(Tara Westover)</li> 
 <li>出版社: 南海出版公司</li> 
 <li>出版日期: 2019-10（原作首版于2018年）</li> 
 <li>ISBN: 9787544276986</li> 
 <li>版本: Kindle</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 87 &#x8BFB;&#x4E66;&#x7CFB;&#x5217;: &#x5C0F;&#x767D;&#x5982;&#x4F55;&#x7406;&#x8D22;&#xFF0C;&#x7761;&#x5F97;&#x7740;&#xFF0C;&#x7761;&#x5F97;&#x9999;&#xFF1F;(&#x4E0B;)</title>
        <link>https://justinyan.eth.limo/3E8CDCDA-84AD-49EA-9FDA-486286FE2EC3/</link>
        <guid>https://justinyan.eth.limo/3E8CDCDA-84AD-49EA-9FDA-486286FE2EC3/</guid>
        <pubDate>Mon, 27 Mar 2023 10:59:13 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/03/Podcast-Cover-v87.png" alt="" /></p> 
<p>读书系列节目，第一波我们带来投资理财相关的书籍。</p> 
<p>最近继SVB破产之后，瑞信也出事了，市场动荡，多学点基础知识保平安。</p> 
<p>第一期请看👉🏻<a href="https://justinyan.me/post/5611">这里</a>，或者<a href="https://www.xiaoyuzhoufm.com/episode/641705de73768bea35d9cee9">小宇宙</a></p> 
<p><em>保命声明：两位主播只是普通的互联网民工，没有金融背景，此系列文章只是个人阅读学习后的实践笔记，绝非暴富指南。投资需要根据每个人的具体需求来定，因此请勿将本节目作为投资建议使用。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:00:31 主播当前的理财状况，为什么不焦虑？</li> 
 <li>00:05:53 资产大类，指数基金</li> 
 <li>00:09:14 钱从哪里来？负和博弈？跑赢市场？</li> 
 <li>00:14:39 资产再平衡，简单50:50法则</li> 
 <li>00:23:21 币圈？量化交易？认知以外的钱？</li> 
 <li>00:28:36 主动出击的投资？请使用非核心资产</li> 
 <li>00:40:30 预期收益率多少才比较合理？</li> 
 <li>00:47:51 理财不是为了看着数字上涨，而是背后能带来的东西</li> 
 <li>01:03:54 最后的保命声明，下期再见👋</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>Justin写的相关系列Blog: <a href="https://justinyan.me/post/5594">个人理财实践01: 教训与实践 | 枫言枫语</a></li> 
 <li>节目中提到的大师经典读物 
  <ol> 
   <li><a href="https://book.douban.com/subject/36096815/">《漫步华尔街（原书第12版）》 - 伯顿·G.马尔基尔</a></li> 
   <li><a href="https://book.douban.com/subject/27153416/">《共同基金常识》 - 约翰·博格</a></li> 
   <li><a href="https://book.douban.com/subject/33401129/">《投资最重要的事》 - 霍华德·马克斯</a></li> 
   <li><a href="https://book.douban.com/subject/3725211/">《不落俗套的成功:最好的个人投资方法》 大卫·F·斯文森</a></li> 
  </ol> </li> 
 <li>通俗版读物 
  <ol> 
   <li><a href="https://youzhiyouxing.cn/curriculum">《有知有行·投资第一课</a></li> 
   <li><a href="https://book.douban.com/subject/30336949/">《傻瓜式投资: 简单50:50法则》 - 飞泥翱空</a></li> 
   <li><a href="https://book.douban.com/subject/35157448/">《工薪族财务自由说明书》 - 也谈钱</a>，也谈钱的Blog: <a href="https://yetanmoney.com/">https://yetanmoney.com/</a></li> 
  </ol> </li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>封面: <a href="https://unsplash.com/@milada_vigerova">Milada Vigerova</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #183 &#x5409;&#x4E95;&#x5FCD; - &#x300A;&#x4E1C;&#x4EAC;&#x516B;&#x5E73;&#x7C73;&#x300B;</title>
        <link>https://justinyan.eth.limo/4AC79808-A575-44E8-9424-22FC9077888C/</link>
        <guid>https://justinyan.eth.limo/4AC79808-A575-44E8-9424-22FC9077888C/</guid>
        <pubDate>Tue, 21 Mar 2023 10:16:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/03/djbpm-book-cover-v2_compressed.jpg" alt="" />一个周末午后，想和我太太去河边虚度光阴，比如低头看鱼，比如把书本放在草地上，打开，浪费它们好看的阴影(注1)。于是我带上了一本白色封面的小书，吉井忍写的《东京八平米》。</p> 
<p>那天我在留灯书店见到这本书时，不知道怎么就被它吸引住了，后来证明买下它真是太好了。这本书的文风跟封面设计一样简洁朴素，纸张摸起来很舒服，也没有多余的狗皮腰封，而且非常轻松好读。。最近读<a href="https://justinyan.me/post/5594">投资理财的书</a>比较多，所以跟伯顿·马尔基尔笔下动荡的金融市场，还有Winnie夫妇财务自由的环球穷游相比起来，吉井忍“蜗居”在东京八平米的小房子，似乎更贴近尘世一些。</p> 
<p>几年前读<a href="https://justinyan.me/post/4237">《了不起的我》</a>，里面有一章讲不要“只是为了改变而进行改变”，当时我不是很懂。后来听也谈钱在《知行小酒馆》的节目提到，他不上班了之后反而给自己设定了一个跟上班时候一样的固定作息。</p> 
<p>有时候我们抗拒一个东西不是因为它不好，而是因为它是别人强加给我们的。我们更希望通过自己的思考，发现该行为背后的原因。即便从结果来看最终导致的行为是一样，但其背后的动力已截然不同。投资理念如此，人生态度亦然。</p> 
<p>吉井忍是一位出生于日本的女作家，目前以写作为生。早年间她曾旅居中国大陆、台湾、法国等地，在北京结识中国籍的前夫，“后来丈夫说找到了‘真爱’，我带着两大包行李搬到朋友家……如今我在东京的八平米房间里住了三年，再过一年这里将成为我居住时间最长的一个房间”。</p> 
<p>我喜欢吉井忍这种坦然面对人生波澜的态度，颇有一种“本来无一物，何处惹尘埃”之感。不过凡夫俗子不是禅宗大师，总有情绪低落的时候。作者在书中记录了她在八平米生活时遇到的人和事，我想，八平米附近的社区才是生活发生的地方。</p> 
<p>比如家里实在太小没有办法放下淋浴间，而日本人又特别喜欢泡澡，所以作者都回会去附近的“钱汤”（公共浴场）洗澡。钱汤有新式的传统的，传统的钱汤，柜台设置在男女浴场的中间的高台上，老板娘坐在柜台两边都能看到。顾客们也会跟老板娘聊天，虽然平时不会裸体跟人讲话，但因为在浴场，好像就变得很自然一样。作者跟老板娘聊的无非是今天来这么早，在哪里工作，疫情如何之类，到现在也不知道老板娘叫什么。</p> 
<p>但正是这种松散的社交关系，这种保持距离的对话，构成了一种微妙的气氛，不太近也不太远。八平米附近的洗衣店，荞麦面店，还有一家很特别的凌晨3点开门，早上8点关门的咖啡店，这些社区小店的老板们，并不是把自家的东西仅仅当作商品来卖，而是跟整个社区有或近或远的联结。作者在这些关系联结中收获很多，低落时的安慰，开心时的分享，以及每个人不同而精彩的人生故事。比如在洗衣店认识的一位阿姨，她在一段糟糕的婚姻关系里度过了几十年，为了女儿才勉强维系下来。后来女儿成年了，去上大学了，她终于在下大雨的夜里偷偷跑出来，再也没回去过。比如那间凌晨3点开门早上8点关门的咖啡店，老爷爷设定这么古怪的营业时间，其实是为了给周边的体力劳动者提供早餐。日本有些领日薪的体力劳动者，他们中有做司机送货的，凌晨4点面包车会开过来，所以他们很早就要吃完饭去送货。老爷爷为了他们的时间很早就开店，至于8点关门是因为他的妻子生病瘫痪了，8点后他需要照顾妻子就没法兼顾店面。后来老爷爷自觉身体状况不佳，把店关了，再过不久也去世了。</p> 
<p>每次读到这些老人家的故事我就很容易把我自己投射进去，假如我是故事中的老爷爷，活到90多岁我会觉得怎样呢？会有遗憾吗？会想要给这个世界留下什么吗？</p> 
<p>我还小的时候，老师和父母会告诉我有些事情这样做是对的，那样做是不对的，考试成绩好是对的，考试成绩差是需要反省的。但没有人告诉我人生怎样度过才是对的。这种东西当然也不存在，自己的人生只有自己才能决定。我想，不管是Winnie的环游世界，还是吉井忍的八平米，她们最令人佩服的地方不在于实现了别人难以达成的事情，而在于她们找到了自己人生的方向，并为之努力，最终还真的实现了。</p> 
<p>吉井忍在书里说，荞麦面店的老板娘曾试着劝她该找个男人结婚，但离过婚之后她反而明白婚姻不一定能带来幸福这个朴素的道理。所以一笑以置之。</p> 
<p>婚姻有好的地方也有不好的地方，蜗居八平米也一样。我想，吉井忍肯定在她的八平米之间找到了她的人生所珍视的某样东西吧。所以说不是豁达，也不是坦然，更不是超凡脱俗令人羡慕，而是她看到了人生应该有的样子，才让她的看似平平淡淡的文字充满生机吧。</p> 
<h2>注</h2> 
<ul> 
 <li>1: 这段其实修改自我挺喜欢的一首诗，李元胜的《我想和你虚度时光》</li> 
</ul> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 东京八平米</li> 
 <li>作者: 吉井忍</li> 
 <li>出版社: 上海三联书店</li> 
 <li>出版日期: 2022年11月（原作首版于1941年）</li> 
 <li>ISBN: 9787542678652</li> 
 <li>版本: 纸质书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 86 &#x8BFB;&#x4E66;&#x7CFB;&#x5217;: &#x5C0F;&#x767D;&#x5982;&#x4F55;&#x7406;&#x8D22;&#xFF0C;&#x7761;&#x5F97;&#x7740;&#xFF0C;&#x7761;&#x5F97;&#x9999;&#xFF1F;(&#x4E0A;)</title>
        <link>https://justinyan.eth.limo/D5545893-59A2-457B-B9FF-0714CBFFC449/</link>
        <guid>https://justinyan.eth.limo/D5545893-59A2-457B-B9FF-0714CBFFC449/</guid>
        <pubDate>Mon, 20 Mar 2023 21:50:25 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/03/Podcast-Cover-v86-v4.jpg" alt="" /></p> 
<p>近来SVB暴雷，黑石违约，瑞信出事，各种黑天鹅事件频传，给本就充满不确定性的国际市场雪上加霜。</p> 
<p>两位主播都是普通的互联网工薪族，在面对动荡的市场，我们要如何做好自己的投资理财呢？</p> 
<p>正好近来Justin在读投资理财相关的书，所以我们就以“小白如何理财，躺着赚钱睡得着睡得香”为主题，开启今年的新系列“读书节目”。本系列形式和选书都未有定型，各位听众朋友们如有建议，欢迎在评论区留言提出，我们都会认真看的。</p> 
<p><em>保命声明：两位主播只是普通的互联网民工，没有金融背景，此系列文章只是个人阅读学习后的实践笔记，绝非暴富指南。投资需要根据每个人的具体需求来定，因此请勿将本节目作为投资建议使用。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场</li> 
 <li>01:06 本期相关书籍简介</li> 
 <li>08:06 保命声明</li> 
 <li>11:05 从硅谷银行暴雷说起</li> 
 <li>13:46 两位小白主播之前都是怎么理财的</li> 
 <li>21:23 第0步: 搞清楚自己到底有多少钱</li> 
 <li>26:21 资产大类、四笔钱、保险</li> 
 <li>31:47 长期投资的钱，多长才算长期？</li> 
 <li>36:08 真正的长期，是一种不同的思维方式</li> 
 <li>36:54 理解风险，控制风险</li> 
 <li>40:38 长期可以熨平股市波动带来的风险</li> 
 <li>41:09 巴菲特: 闪电劈下来的时候，你一定要在现场</li> 
 <li>41:58 分散投资，降低非系统性风险</li> 
 <li>47:31 个人理财能力愈发重要</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>Justin写的相关系列Blog: <a href="https://justinyan.me/post/5594">个人理财实践01: 教训与实践 | 枫言枫语</a></li> 
 <li>节目中提到的大师经典读物 
  <ol> 
   <li><a href="https://book.douban.com/subject/36096815/">《漫步华尔街（原书第12版）》 - 伯顿·G.马尔基尔</a></li> 
   <li><a href="https://book.douban.com/subject/27153416/">《共同基金常识》 - 约翰·博格</a></li> 
   <li><a href="https://book.douban.com/subject/33401129/">《投资最重要的事》 - 霍华德·马克斯</a></li> 
   <li><a href="https://book.douban.com/subject/3725211/">《不落俗套的成功:最好的个人投资方法》 大卫·F·斯文森</a></li> 
  </ol> </li> 
 <li>通俗版读物 
  <ol> 
   <li><a href="https://youzhiyouxing.cn/curriculum">《有知有行·投资第一课</a></li> 
   <li><a href="https://book.douban.com/subject/30336949/">《傻瓜式投资: 简单50:50法则》 - 飞泥翱空</a></li> 
   <li><a href="https://book.douban.com/subject/35157448/">《工薪族财务自由说明书》 - 也谈钱</a>，也谈钱的Blog: <a href="https://yetanmoney.com/">https://yetanmoney.com/</a></li> 
  </ol> </li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>封面: <a href="https://unsplash.com/@milada_vigerova">Milada Vigerova</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E2A;&#x4EBA;&#x7406;&#x8D22;&#x5B9E;&#x8DF5;05: &#x6211;&#x7684;&#x8D44;&#x4EA7;&#x914D;&#x7F6E;&#x64CD;&#x4F5C;</title>
        <link>https://justinyan.eth.limo/2CA1674D-D21A-4210-B226-035E9BDC48EC/</link>
        <guid>https://justinyan.eth.limo/2CA1674D-D21A-4210-B226-035E9BDC48EC/</guid>
        <pubDate>Mon, 20 Mar 2023 21:49:55 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-05-cover-c.jpg" alt="" /></p> 
<p>Hi,</p> 
<p>前面写了一大通书本里的理论，该说说我的具体做法了。</p> 
<p><em>P.S. 本系列引述的书籍列表可参考《个人理财实践》<a href="https://justinyan.me/post/5594">第一篇</a>底部。</em></p> 
<p><em>P.P.S. 本系列提到的资产大类有多种持有方式，比如股票类资产，炒个股只是其中一种，而且如果不是专门的金融从业人员，不了解风险，不建议把核心资产放在由自己挑选的个股组合里。</em></p> 
<p><em>P.P.P.S. 保命声明：本人只是个普通的互联网民工，没有金融背景，此系列文章只是本人阅读学习后的实践笔记，绝非暴富指南。投资需要根据每个人的具体需求来定，因此请勿将本系列作为投资建议使用。</em></p> 
<h2>1. 资产配置目标</h2> 
<p>作为一个有家里没矿、有稳定收入的工薪族，我参考《漫步华尔街》、有知有行等各方咨询，再考虑自身的综合情况，制定了如下比例的资产配置目标：</p> 
<ul> 
 <li>股票类: 60%</li> 
 <li>债券类: 20%</li> 
 <li>现金类: 20%</li> 
</ul> 
<p>因为我的财务统计具体到了每一笔收支，所以我清楚地知道当下我的各部分资产比例如何，也能更准确地计算出每年的支出。如此一来，我就能知道存量资产如何往目标调整，增量资产应该往哪里去。</p> 
<p>比如假设一个月税后收入1万元，其中2000元是固定支出（按年度支出平均计算），那么剩下的8000元就是增量资金，可以考虑该资金用于定投A股指数基金，或者投入债券基金等等。</p> 
<p><em>P.S. 存量资产向配置目标调整最好分批进行，需要时间，太着急容易变成全部在低点卖出，高点买入。</em></p> 
<h2>2. 各资产大类买什么</h2> 
<p>如果读者朋友不想花费太多选择产品的时间和精力，那么且慢和交银施罗德合作的“稳稳幸福”，以及有知有行的长钱账户，就是很好的参考（<strong>参考学习不是建议直接购买，综合考虑适合自己才购买哦</strong>）。至于是直接在App买还是拿来做参考，那就见仁见智，视个人情况选择。</p> 
<p><strong>2.1 股票类</strong></p> 
<p>指数基金是非常不错的持有方式，因为它比起主动管理型基金费率更低，因为基金经理只需要根据指数包含的公司市值进行配置即可，同时也因此使得整个投资组合的换手率（买卖持有股票）变低。如果一个基金经常更换它持有的股票的话，高频交易会产生高昂的佣金成本，最终成为该基金的隐形成本。</p> 
<p>我之前有些未经思考就买入的个股，所以需要分批逐步将其指数化，短期内希望转化股票类资产的50%为指数基金代持。</p> 
<p>A股的指数基金不少，有知有行的“温度计”里面有个指数观察，列出来包括中证500，沪深300等等多个指数。我的做法是先理解这些指数基金背后的逻辑，比如中证500对应A股里的中小盘股，沪深300对应大盘股，同时持有这两只指数就约等于跟着A股市场走。</p> 
<p>基金不宜同时持有太多，因为市面上的投资组合来来去去就那么几种，太多的基金组合必然会有重叠的部分，跟前文提到的买了一堆科技股，看似分散实则相关性极高是一个道理。</p> 
<p>无论买哪一个指数基金，点开基金产品详情，看一下产品概要，这个基金都投什么，比例几何，再看一下基金当前的持仓，这点非常重要。<strong>要搞清楚基金的持仓和逻辑是否符合自己的资产配置逻辑，然后再购买</strong>。就好像且慢和交银施罗德合作的“稳稳的幸福”，号称“九债一股”，年化稳定6%+。表面上我买这个产品就可以实现一笔资金90%在债券，10%在股市，但问题在于基金的操作近乎黑盒，什么时候调仓并不由我控制，而我希望有更确定的资产属性，所以我自己选择指数基金和纯债基金。</p> 
<p><strong>2.2 债券类</strong></p> 
<p>债券分为国债、地方债、公司债之类的，还挺复杂。债券还有时间期限，如果个人想要直接持有债券还需要预约，在窗口期在银行App上购买。据说考基金从业的时候，债券部分对于专业人士都是很难的。</p> 
<p>因为自己买债券实在太繁琐了，所以我选择通过债券基金持有。那么买什么基金呢？跟指数化的股票基金一样，债券也有类似的指数化基金。比如“南方1-3年国开债”就是跟踪“中债1-3年国开行债券指数”。</p> 
<p>有知有行的<a href="https://youzhiyouxing.cn/n/materials/808">《债券基金》</a>文章是非常好的入门读物。跟投资股票基金一样，投之前务必先了解该基金的详情，看下它的投资范围。有些债券基金是可以投股票的，一般限定一个百分比。比如，我只想要纯债，而且只跟踪指数，那么可以选择纯债的被动型债券基金。</p> 
<p><strong>2.3 现金类</strong></p> 
<p>现金很好理解，现在各银行App基本都有自家的货币基金理财，各种宝。所以嫌麻烦的话就直接在银行买对应的货币基金理财即可。</p> 
<p>想要收益多一点的可以参考且慢的“货币三佳”，但收益浮动不会超过1%。</p> 
<p>现金类理财最需要考虑的是流动性，即多久可以把现金取出来。一般现在单只货币基金实时到账的额度是1万元，大于1万是T+1。有不少银行、支付工具的货币基金可以支持消费时直接扣费，比如招行的“朝朝宝”，但上限5万。如果存入的资金大于5万，或者流动性需求有单日大于1万的实时支出，可以考虑买入多只货币基金，实现单日实时支出大于1万。</p> 
<h2>3. 资产平衡操作</h2> 
<p>在《不落俗套的成功》中David Swensen对资产配置与再平衡有非常详细的说明，雪球大V飞泥翱空的《傻瓜式投资：简单50:50策略》也有非常通俗的说明。</p> 
<p>David Swensen通过给耶鲁大学捐赠基金设定多元化的资产配置，实现了不错的回报。我们在年轻的时候努力工作赚取本金，然后好好存钱，资产配置就是对我们的储蓄的管理。</p> 
<p>NBA的顶级球星艾弗森是出了名的花钱如流水，再大的水龙头都遭不住破溃的大洞。所幸他曾经买过一份3000万美元的信托基金，每年都能产生收益。尽管如此，坊间关于艾弗森破产的消息还是时有耳闻。</p> 
<p>顶级球星尚且可能破产，普通人更应好好管理自己的存量资产。我们知道股市长期来看存在市场周期，同时回报率又在各个大类资产中是最高的，而且要一直保持自己在场。所以我们的资产配置组合里少不了股票类资产。但是正因为这些资产价格的波动性，其所占比例也会随之起伏，这时候我们需要做一个操作：<strong>‌资产再平衡</strong>。</p> 
<p>这个名词听起来好像很厉害，其实就是<strong>卖出上涨的资产，买入下跌的资产</strong>。</p> 
<p>飞泥翱空的50:50策略是资产再平衡的极简版：50%股票，50%现金。在没有新增资金的情况下，股市上涨，股票现金比变成了55:45，这时候我们卖出股票资产，换成现金，重新做成50:50，就完成了一次资产再平衡。反之，股市下跌了，股票现金比变成45:55，则用现金买入股票。</p> 
<p>这么做的好处是什么呢？因为股市的波动性，最理想的策略是精准的择时交易：股市巅峰卖出，低谷买入。可也正因这份波动性短期内无法预测（参考《漫步华尔街》对基本面分析、技术分析的驳斥），所以才有朋友圈股神，牛市狂赚200%，熊市倾家荡产的案例。面对无法预测的股市，<strong>最好的策略就是不预测</strong>。</p> 
<p>资产再平衡提供了被动择时的方法，当股市上涨的时候资产配置中的股票类资产就是上涨的，这时候卖出虽然不一定卖在山顶，但至少没有卖在谷底。反过来，如果相信市场周期，相信均值回归，则股市下跌时买入，就是在为未来牛市的到来布局。于是我们就实现了从追涨杀跌到高抛低吸的转变。</p> 
<p>那么再平衡的买卖怎么做呢？</p> 
<p>普通工薪族的增量资产来自工作收入，所以每月发薪日拿到工资之后，<strong>可以通过定投的方式转移资产比例</strong>。此前我持有的A股资产不多，所以通过每月定投指数基金的方式增加我的A股资产，定投两年后这个比例就上来了。</p> 
<p>存量资产也可以通过分批卖出的方式进行调整，防止一次过卖出在谷底，或者买入在巅峰。</p> 
<p>多久做一次再平衡呢？我发现不同的书有不同的说法，有的说实时，有的说半年一年。作为一个普通工薪族，我没有时间精力天天盯盘，研究这个研究那个，也不像华尔街精英，饱读经济学，操盘经验丰富。我希望采用的理财方式是省心省力的，所以我选择也谈钱的做法，一年平衡一次。他生活在德国，一年做一次还有避税福利，我虽然享受不到这个福利，但确实省心。毕竟股市一次牛熊都得三五年，如果我每个月都平衡一下，那跟短线交易也差不太多。</p> 
<h2>4. 祝大家都能把宝贵的时间精力用在真正热爱的事情上</h2> 
<p>牛市上涨时害怕赚得没别人多，熊市下跌时看着账户缩水又揪心不已。其实投资理财完全没必要搞得这么情绪激昂，最重要的是每天睡得着，睡得香，能把宝贵的时间用在真正热爱的事情上。</p> 
<p>多年前我买理财，就看一个收益，既不知道我该持有多长时间，也不知道收益背后的风险是什么。现在我知道，所谓风险，就是没有发生的时候它就不存在的东西。这就是为什么多数人都需要通过一次牛熊转换，实打实地损失真金白银，交了学费才会学乖。</p> 
<p>现在我知道，投资是一个长期的事情，长期是5年以上的事情。因此，我用来长期投资的钱，就不该是5年内要用的钱，那么我就可以更坦然地接受短期的波动，赚了也好赔了也好，这些都只是浮动盈亏。塔勒布在<a href="https://book.douban.com/subject/10773362/">《随机漫步的傻瓜》</a>里说我们无法准确地知道任意时刻我们的资产总值，只能观察到一段时间内的波动而已。</p> 
<p>所以，相信市场周期，相信均值回归，通过合理的资产配置，买入适合自己的产品，保证闪电劈下来的时候自己在场，熊市布局，耐心等待春暖花开。</p> 
<p>如此，牛市到来大家都赚钱的时候，我也能赚到钱，但不会自大地以为是我选股选得好；熊市到来的时候大家都在亏钱，这时候风险分散的威力就会显示出来，亏得比别人少。如此春夏秋冬，均能安然度日，获得市场本来的收益：<strong>公司盈利带来的增长</strong>，而不是寄希望于投机，那与赌博无异。</p> 
<p>我的理财最终是为了不需要理财，我更想好好工作，好好生活。人活着不是为了银行存款的数字，人活着还有很多更重要的事情。祝大家都能把宝贵的时间精力用在真正热爱的事情上。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/5594">个人理财实践01: 教训与实践</a></li> 
 <li><a href="https://justinyan.me/post/5595">个人理财实践02: 投资是一件长期的事</a></li> 
 <li><a href="https://justinyan.me/post/5599">个人理财实践03: 从财务统计开始</a></li> 
 <li><a href="https://justinyan.me/post/5609">个人理财实践04: 理解风险，分散风险</a></li> 
 <li><a href="https://justinyan.me/post/5604">个人理财实践05: 我的资产配置操作</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E2A;&#x4EBA;&#x7406;&#x8D22;&#x5B9E;&#x8DF5;04: &#x7406;&#x89E3;&#x98CE;&#x9669;&#xFF0C;&#x5206;&#x6563;&#x98CE;&#x9669;</title>
        <link>https://justinyan.eth.limo/C4DCC434-5529-40B0-815C-612B05A21620/</link>
        <guid>https://justinyan.eth.limo/C4DCC434-5529-40B0-815C-612B05A21620/</guid>
        <pubDate>Mon, 20 Mar 2023 21:49:39 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-04-cover-c.jpg" alt="" /></p> 
<p>Hi,</p> 
<p>我是Justin，本系列是我学习如何做个人理财之后的笔记。相关书籍在<a href="https://justinyan.me/post/5594">第一篇</a>文末有列出，今天我的笔记是<strong>关于“风险”以及如何用更低的风险，实现同样的收益</strong>。</p> 
<p><em>P.S. 本系列引述的书籍列表可参考《个人理财实践》<a href="https://justinyan.me/post/5594">第一篇</a>底部。</em></p> 
<p><em>P.P.S. 本系列提到的资产大类有多种持有方式，比如股票类资产，炒个股只是其中一种，而且如果不是专门的金融从业人员，不了解风险，不建议把核心资产放在由自己挑选的个股组合里。</em></p> 
<p><em>P.P.P.S. 保命声明：本人只是个普通的互联网民工，没有金融背景，此系列文章只是本人阅读学习后的实践笔记，绝非暴富指南。投资需要根据每个人的具体需求来定，因此请勿将本系列作为投资建议使用。</em></p> 
<h2>1. 风险</h2> 
<p>《投资最重要的事》有三个章节专门讲理解风险、识别风险和控制风险，《漫步华尔街》也讲了风险与收益的关系。</p> 
<p>所谓不入虎穴，焉得虎子，更高的收益往往意味着更高的风险。随着我国金融监管的逐步完善，现在银行理财产品基本都会标识其风险等级，隔壁再放一个“预期收益”，收益率越高的产品风险往往就越高。</p> 
<p>这就给人一种错觉：我想要更高的收益就必须承担更高的风险，唯有冒险才能获利。真的是这样吗？有没有可能，**用更小的风险获得相同或更高的收益?**设想一下，如果货币基金和股票型基金的预期年化收益同样是6%，那么你会选择哪个产品？我想应该大部分人都会选择风险更低的货币基金吧。2014年余额宝曾经有过6%以上的收益，吸引了大量用户把闲钱投入其中，成功地让许多普通民众接触到“理财”这个概念。</p> 
<p>所以，如果前文的结论是合理的，即：<strong>长期来看，股市的回报率是各类资产中最高的，并且我们要一直在场，那么如何降低自己的股票类资产的风险就是一个非常好的理财角度</strong>。</p> 
<p>我们经常在朋友圈看到各种股神传说，不是晒200%的收益，就是炒股赚了N百万要辞职退休云云。但问题是，“股神”通过这份投资组合一年赚了200%的收益，那么接下来呢？还要长期坚持这份策略吗？这个组合能在牛市中赚到超过市场的钱，那它能在熊市中亏得更少吗？**所谓风险，就是当它不发生的时候它就不存在的东西。**同样的投资组合，在下一年可能会亏到回不了本。今年赚50%，明年亏50%，赚了还是亏了？</p> 
<p>历史上真正好的投资策略，并不是牛市大涨熊市大跌的策略，而是能以更低的风险，获得相同甚至更多的收益的投资组合，**这样的组合，可以在牛市时跟着市场一起上涨，在熊市时跌得比市场要少一些。**巴菲特的财富从来都不是主要来自牛市的高收益，而是源自极少的亏损和回撤。</p> 
<p>那么如何降低投资组合的风险呢？</p> 
<h2>2. 分散投资</h2> 
<p>《漫步华尔街》里，作者提到如何通过“分散投资”来降低风险的例子，假设我们生活在一个海岛经济里，这个小岛只有两家企业，一家做度假村的，另一家则卖雨伞。假设天气对这两家企业的业绩影响是：晴天利好度假村，雨伞卖不出去；雨天利好雨伞企业，但度假村没人去。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-04-charts-c.png" alt="" /></p> 
<p>假设平均有一半晴天一般雨天，那么我们只投雨伞企业或者度假村的话，就会有一半时间是涨一半时间亏，全年收益12.5%。不过其实一年当中有可能出现连续晴天或者连续雨季，所以无论单独投哪一家，风险都很高。</p> 
<p>假设我们两个企业都买，那么其中一个企业虽然在亏钱，但另一个企业却在赚钱，这样下来总收益还是12.5%，<strong>但需要承担的风险却大大降低了！</strong></p> 
<p>这样极简的例子说明了多元化投资，分散风险的优势。这就是你可以获得预期收益同时又降低风险的秘诀。现实世界比这个例子要复杂得多，<a href="https://justinyan.me/post/5594">在我读的书里</a>，作者基本认同“股市中持有50只规模相当且充分多样化的美国股票”，风险会降低很多。但是超过这个数量，风险却不会再有明显下降。</p> 
<p><strong>“数量足够多”且“充分多样化”。</strong></p> 
<p>前两天我看到<a href="https://mp.weixin.qq.com/s/j1Amt0XNiCLqmYHgSckGIA">“鹿可 Daisy”的一篇文章</a>，讲她创办一个金融类型的公司，专门给早期互联网大佬做资产配置的。她提到，互联网行业早期的大佬们，本身自己任职的公司会发股票（很多互联网企业会让员工持股，作为薪酬回报的一部分），而且他们智力水平很高，平时也会用投资软件炒股，还都倾向于购买自己熟悉的科技股。这其实就是一个<strong>非常典型的“不够多样化”的例子</strong>。虽然表面上看你手里持有什么腾讯、阿里、小米、快手，再搭配个苹果、特斯拉、英伟达之类，看似分散，A股，港股，美股都有了，**实则全部都是科技股，高度集中在同一个行业。**这两天因为SVB破产导致美国银行股集体暴跌，就是一个相关性高的股票组合风险发生时的例子，跟我们把钱全部投资雨伞企业没什么区别。</p> 
<p>过去几十年，中美互联网科技股是涨得飞起，虽然有2000年科技股泡沫珠玉在前，<strong>但是人类能从历史学到的教训就是，什么也学不到</strong>。所以我们可以看到很多互联网大佬，前仆后继把钱都投进科技股上。一帆风顺的时候大家赚得盆满钵满，可是你要一直这样持有下去吗？当连续的晴天到来的时候，雨伞企业可是要崩溃的。</p> 
<p>1985年创立于美国得克萨斯州的能源类企业安然公司破产的例子更佳极端。一开始，安然公司还曾连续六年被《财富》杂志评选为“美国最具创新精神公司”，风头正劲。可是到了2002年，安然却在短短几周内宣告破产。《漫步华尔街》讲述了了历史上多个泡沫案例，我觉得这个案例是我读到最能令人警醒的一个。</p> 
<p>因为安然公司倒闭前夕，两万多名员工风光无限，他们手持大量安然股票，同时也购买了公司的养老金计划。在繁荣时代这些操作看起来不仅没有问题，而且令人无比羡慕。但随着安然公司的倒下，这些员工发现他们一夜之间突然一无所有，股票不值钱，养老金也没了。在安然工作了这么多年，最后连自己的退休都成了问题。他们的投资组合最大的问题就在于，把绝大部分资产跟一家公司牢牢绑定了。一荣俱荣，一损俱损。</p> 
<p>我学会操作股票软件之后，也购买过Apple, Bilibili等互联网企业的股票，在牛市的时候感觉自己像个股神，虽然还没膨胀到发朋友圈的地步，但也觉得赚钱是自己独具慧眼。随着这两年熊市的到来，账户里股票资产大幅缩水，心中滋味自是苦不堪言。虽然我没有把所有资产都绑定到自己任职的公司，但也尝到了互联网企业团灭的苦（虽然比起教培还是要好一些）。</p> 
<p>那么普通人在股市中如何分散风险呢？《共同基金常识》的作者约翰·博格根据研究提出，在美股市场，如果“持有50只规模相当且充分多样化的股票”，则风险基本上降低到跟整个市场是差不多的。约翰·博格据此创造了世界上第一支指数基金：Vangard 500 Index Fund，先锋500指数基金。所以对普通投资者来说，可以<strong>通过指数基金，承担较低的风险，享受市场整体收益</strong>。</p> 
<p>有别于基金管理人按照自己的喜好和策略，自由更换投资组合的主动管理型基金，指数基金一般是被动型的，基金经理直接按照该指数中公司的市值分布进行投资。所以通过基金持有股票，尤其是指数基金来持有，会是对普通投资者非常友好的一种方式。既不需要自己选择投资组合，也不需要担心主动管理型基金因为频繁换手导致的高额交易费蚕食收益，更不用担心那些“业绩姣好的基金”在熊市时迎来加倍的下跌幅度。</p> 
<p>通过投资指数基金，普通投资者可以轻易获得整个市场的收益，这些收益从哪里来呢？主要是上市企业经营后的利润分红、股息、股价上涨等因素带来的。几位大师的书都表示：买入指数基金就可以轻松跑赢90%的投资者。至于为什么大部份主动管理型基金跑不赢市场，《共同基金》讲得非常详细，《漫步华尔街》稍微没那么详细但是非常好懂。个人投资者在股票市场中参与的不是“零和博弈”而是“负和博弈”，这里我们就不再展开，感兴趣的读者可以阅读这两本书。</p> 
<h2>3. 资产大类</h2> 
<p>上面关于股市如何降低风险，选择相关性较低的组合，基本上以指数型基金最为省心省力。但是这种做法只能分散非系统性风险，我们在股市里的资产还会受到系统性风险的威胁。所谓系统性风险就是该市场上所有公司的因素导致的风险，通常受市场整体政治、经济、社会等因素的影响。</p> 
<p>比如投资美股，买了指数基金分散单一股票的风险，但是美国遭遇金融危机，像08年一样，我们的投资遭受了巨大损失，这种风险是无法通过购买多个股票来规避的。</p> 
<p>可行的办法有：投资其他相关性较弱的市场，分散单一市场带来的风险。比如前几十年美国的投资者喜欢投新兴国家市场，包括中国在内的各个发展中国家，因为那时候企业的体量小，有更大的发展潜力。所以包括创办了桥水基金的瑞·达利欧──他后来写的《原则》在中国也十分畅销──都纷纷在这些新兴市场寻找机会。</p> 
<p>如今普通投资者也可以在这两年大有崛起之势的东南亚市场寻找投资机会，但是像越南、印度这样的市场，往往规范程度不够，监管还没跟上，所以风险也是巨大的。</p> 
<p>另一种比较稳健的方式是，<strong>通过投资几种不相关的资产大类来分散风险</strong>。</p> 
<p>资产大类的定义我找到一份渤海证券研究所的PDF：<a href="https://pdf.dfcfw.com/pdf/H3_AP202203291555738141_1.pdf?1648575565000.pdf">《金融周期视角下大类资产如何配置》</a>，稍微有点学术化，大类资产要满足三个特征：</p> 
<ol> 
 <li>同质性：同一类别资产具有类似的描述和统计特征</li> 
 <li>排他性：一项资产不能同时归属两个类别</li> 
 <li>相关性：同一类别资产相关性高，不同类别资产的相关性不能太高</li> 
</ol> 
<p>目前通常涉及的资产类别包括：</p> 
<ol> 
 <li>股票(如国内、新兴市场、发达国家股票等，可通过基金持有)</li> 
 <li>债券(如利率债、信用债;新兴市场、发达国家债券等，可通过基金持有)</li> 
 <li>现金及等价物(如货币基金、7 天回购、3 个月期国债等)</li> 
 <li>另类投资(如房地产、大宗商品、PE、VC、基础设施投资等)</li> 
</ol> 
<p>可以看到，股票、债券和现金我们都可以通过基金持有，大大降低了个人投资的门槛，也是《漫步华尔街》等书推荐的个人投资者配置的大类。至于极高风险的“金融衍生品”、“期货”之类，我自觉没有这个能力去理解和操作。</p> 
<h2>4. 核心资产和非核心资产</h2> 
<p>在《毫无意义的工作》(Bullshit Jobs)一书中，David提到一个心理实验：</p> 
<blockquote> 
 <p>早在1901年，德国心理学家卡尔·格鲁斯就发现，婴儿在第一次发现自己的所作所为能对这个世界产生可预测的影响时，会表现得异常开心。而这种影响是什么，以及对婴儿是否有益，都跟这份开心毫无关联。比如，某个婴儿随机动了一下胳膊，铅笔就动了，然后它发现自己重新做一次刚才那个动作，铅笔又动了，这个婴儿的脸上就会露出非常愉快的表情。对此，格鲁斯创造了“身为原因的快感”这个说法，并表示正是这种快感构成了游戏的基础。在他看来，快感就是为了行使权力而行使权力。</p> 
</blockquote> 
<p>所以希望自己能对这个世界产生影响是根植于人类的天性的，在投资上表现为希望自己选择股票组合，一旦押中，会觉得全靠自己慧眼识珠，非常开心。</p> 
<p>这时候我们就需要区分好核心资产和非核心资产。且慢的四笔钱可以帮助我们留出日常用度的活期现金，留出足够的保险费给意外托底，留出足够的储蓄给未来3年买房/买车/结婚使用，<strong>只有5年以上用不到的钱，才是可以用于长期投资的钱</strong>。</p> 
<p>所以，如果真的想验证自己是否慧眼，可以分出来一个独立账户管理“非核心资产”，用一小部分资金去过瘾，而不是全盘操作。否则一旦失手，轻则买房的首付没了，资产缩水，重则倾家荡产，妻离子散。</p> 
<p>而且投资也需要时间，世上不存在一夜暴富指南。正如《漫步华尔街》所云:</p> 
<blockquote> 
 <p>如果你想得到快速致富的投资策略，那本书不适合你。提供一朝暴富的投资策略，留给那些招摇撞骗的江湖术士去做吧。要是相信他们，你只会快速致穷。要致富，你得慢慢来，而且现在就得行动起来。</p> 
</blockquote> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/5594">个人理财实践01: 教训与实践</a></li> 
 <li><a href="https://justinyan.me/post/5595">个人理财实践02: 投资是一件长期的事</a></li> 
 <li><a href="https://justinyan.me/post/5599">个人理财实践03: 从财务统计开始</a></li> 
 <li><a href="https://justinyan.me/post/5609">个人理财实践04: 理解风险，分散风险</a></li> 
 <li><a href="https://justinyan.me/post/5604">个人理财实践05: 我的资产配置操作</a></li> 
 <li>封面: <a href="https://unsplash.com/@loicleray">Loic Leray</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E2A;&#x4EBA;&#x7406;&#x8D22;&#x5B9E;&#x8DF5;03: &#x4ECE;&#x8D22;&#x52A1;&#x7EDF;&#x8BA1;&#x5F00;&#x59CB;</title>
        <link>https://justinyan.eth.limo/D118C4B4-DE60-4B3C-AEB0-242AE951AB34/</link>
        <guid>https://justinyan.eth.limo/D118C4B4-DE60-4B3C-AEB0-242AE951AB34/</guid>
        <pubDate>Fri, 17 Mar 2023 09:39:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-03-cover-c.jpg" alt="" /></p> 
<p>Hi,</p> 
<p>我是Justin，这是《我的个人理财实践》第三篇，从这一篇开始，我们终于可以“实际操作”一下了。</p> 
<p><em>P.S. 本系列引述的书籍列表可参考《个人理财实践》<a href="https://justinyan.me/post/5594">第一篇</a>底部。</em></p> 
<p><em>P.P.S. 本系列提到的资产大类有多种持有方式，比如股票类资产，炒个股只是其中一种，而且如果不是专门的金融从业人员，不了解风险，不建议把核心资产放在由自己挑选的个股组合里。</em></p> 
<p><em>P.P.P.S. 保命声明：本人只是个普通的互联网民工，没有金融背景，此系列文章只是本人阅读学习后的实践笔记，绝非暴富指南。投资需要根据每个人的具体需求来定，因此请勿将本系列作为投资建议使用。</em></p> 
<h2>1. 从记账开始，实现个人财务的详细统计</h2> 
<p>所谓“知己知彼，百战不殆”。想理财首先需要搞清楚自己的财务状况。两年前我在<a href="https://justinyan.me/post/4427">这篇文章</a>介绍了我的自动化记账方法。得益于电子支付方式在中国的普及，我只需要拿到微信、支付宝、银行卡、信用卡的账单，就能统计出我的每一笔收支，实现真正的个人财务统计。</p> 
<p>也谈钱在《工薪族财务自由说明书》里提到：</p> 
<blockquote> 
 <p>“你可能觉得自己估算一下，就能知道大概的开支水平了。但是根据我的经验，估算的数值再翻一倍，有可能才是你的实际开销。因为估算时很可能没有考虑这些因素：</p> 
 <ul> 
  <li>琐碎的开支，这些开支单笔数额很小但总额很大。</li> 
  <li>手机、电脑、家电等大件开销。</li> 
  <li>旅游、娱乐、聚会等不定期开销。</li> 
  <li>意外导致的开销。</li> 
 </ul> 
</blockquote> 
<p>Winnie也在《不上班也有钱》里提到记账的重要性，这两位作者都是能把手动记账这件事情坚持下来的。我很有自知之明，知道我做不到，所以才发挥程序员的优势，开发了适合我个人使用的记账工具。类似的工具还有MoneyWiz，Beancount之类的，希望大家都能找到适合自己的武器。</p> 
<p>最近整理、阅读这些书籍我才知道记账之后有一个非常直接的好处：设定预算。但是一直以来我的预算都做得非常糟糕，所以也是从零开始学起，等我实践一段时间如果有效我再分享一下。</p> 
<p>需要被统计的数据包括且不限于以下类别：</p> 
<ol> 
 <li>现有资产</li> 
</ol> 
<ul> 
 <li>名下所有银行账户、公积金账户、医保账户、股票账户、理财账户等等。</li> 
</ul> 
<ol start="2"> 
 <li>现有债务</li> 
</ol> 
<ul> 
 <li>名下所有贷款（房贷/车贷等）、信用卡债务，各种“某呗”、“某条”等借贷类型的债务。</li> 
</ul> 
<ol start="3"> 
 <li>收入/开支</li> 
</ol> 
<ul> 
 <li>每个月的税前收入、交的税，包括工资收入和非工资收入</li> 
 <li>每一个App服务的月度、年度收费，比如视频网站的会员，主机游戏的会员，各种App的订阅服务等等</li> 
 <li>车子每年保养、保险、汽油费等可根据历史账单估算的支出</li> 
 <li>停车费、水电费、物业管理费、宽带费等生活支出</li> 
</ul> 
<h2>2. 年龄影响投资理财非常重要的因素</h2> 
<p>普通人二三十岁时和五六十岁时，对投资理财的目标、风险承担能力有很大的区别。</p> 
<p>大部份年轻人应该做“长期理财”，投资期限可以很长，<strong>不仅因为年轻人距离退休的时间更长，可以承担更大的风险</strong>，而且年轻人正处于职业生涯的起步阶段，<strong>更应该投资自己，考虑非金融类资产：个人技能、职业生涯等额外因素</strong>。</p> 
<p>理财是对资产的管理，资产不仅有股票、债券、现金和不动产这些金融资产，我们自己也是一个非常重要的资产。<strong>年轻人提升自己的工作能力积累本金，而且多数时候，普通人劳动所得才是自己资产组合的最大增长</strong>。“留得青山在，哪怕没柴烧”，在应对极端风险的时候，自己也是最后保底的资产。</p> 
<p>如果年龄已经到了50岁，那么可承担的风险会更小，理论上收入增长也会逐渐平缓，所以在资产配置中也应作出相应调整。</p> 
<p>比如25岁的年轻人可以把股票类资产（建议指数基金方式持有）占到个人总资产的70%以上，因为这时候投资者工作收入稳定，可投资时间也长，能承担更大的风险，而35-45岁的投资者，则所谓“上有老下有小”，可承担风险的能力会逐步减弱。在《漫步华尔街》中，伯顿·马尔基尔给出一个示例:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-03-example-01.jpeg" alt="" /><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-03-example-02.jpeg" alt="" /></p> 
<p>这些数字只是作者提出的参考案例，具体的比例还是应该按照每个人不同的情况进行配置。另外，我们不厌其烦地再次推荐<a href="https://justinyan.me/post/4779">且慢的“四笔钱”</a>，<strong>只把5年以上用不到的钱拿来投资</strong>。</p> 
<p>除了风险承受能力，财富对于人的幸福感的提升也跟年龄有关。年轻人的职业生涯有无数上升的可能，虽然当下收入不高，但是能喝到一杯奶茶，看一场电影就能感受到不少幸福度的提升。这阶段可以不用为了储蓄省到奶茶都不舍得喝的程度，毕竟我们赚钱理财不是为了数字本身，而是为了享受财富给我们带来的幸福生活。</p> 
<h2>3. 划分资产大类</h2> 
<p>做完这些统计之后就能知道自己的一些基础信息：</p> 
<ol> 
 <li>自己是否入不敷出：如果是的话，首要问题不是解决“理财”而是想办法开源节流。可以参考也谈钱与Winnie的书。</li> 
 <li>当下自己的投资组合、资产配置是否合理？（存量资产）</li> 
 <li>每个月是否有新增现金流需要管理？（增量资产）</li> 
</ol> 
<p>有人可能会说，“虽然我还有些盈余，但是钱不多，还需要理财吗？”当然是要的。有些资产的购买会有一些门槛，比如N万起购，但是像“XX宝”这样的货币基金几乎没有门槛。至于我们手里的这些钱，无论多寡，怎么配置才更合理，目前没有任何人能打包票说他的策略就是最好的，稳赚不赔的。</p> 
<p>那些写出投资经典的作者，不是经济学教授，就是大型基金的创始人，他们无法做到稳赚不赔，所以任何理财App、银行App、银行经理、基金经理都不行。</p> 
<p>我们真正要做的不是**“无风险一本万利”，而是“与风险同行”，让时间熨平市场的波动**。获得个人资产的全部信息之后，我们可以用一个简单的Excel表格按照各资产大类进行划分。假设小明统计完手里的资产，一共有100万，按照股票类、债券类、现金类划分如下:</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-03-charts-c.png" alt="" /></p> 
<p>仅看这个图表我脑子里已经有好几个问题：</p> 
<ol> 
 <li>为什么要划分成这几个大类？</li> 
 <li>小明持有股票比例93%会不会太高了？（股票风险挺高的）</li> 
 <li>这个比例合理吗？股、债、现金的比例怎样才比较合适呢？有必要配置债券吗？</li> 
 <li>每个资产大类要怎么持有呢？（比如股票类资产，炒股只是其中一种方式，我们还可以通过基金持有股票资产。）</li> 
</ol> 
<p>我们下一篇再见。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/5594">个人理财实践01: 教训与实践</a></li> 
 <li><a href="https://justinyan.me/post/5595">个人理财实践02: 投资是一件长期的事</a></li> 
 <li><a href="https://justinyan.me/post/5599">个人理财实践03: 从财务统计开始</a></li> 
 <li>封面: <a href="https://unsplash.com/@kellysikkema">Kelly Sikkema</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E2A;&#x4EBA;&#x7406;&#x8D22;&#x5B9E;&#x8DF5;02: &#x6295;&#x8D44;&#x662F;&#x4E00;&#x4EF6;&#x957F;&#x671F;&#x7684;&#x4E8B;</title>
        <link>https://justinyan.eth.limo/CDFA8093-018A-429E-B756-30B0CFDEFB09/</link>
        <guid>https://justinyan.eth.limo/CDFA8093-018A-429E-B756-30B0CFDEFB09/</guid>
        <pubDate>Thu, 16 Mar 2023 14:00:08 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-02-cover-c.jpg" alt="" /></p> 
<p>Hi,</p> 
<p>我是Justin，这是我的个人理财实践第二篇，<a href="https://justinyan.me/post/5594">上一篇</a>开头提到我的投资期限是5年以上，但其实我个人真实的想法是：投资期限应该是一辈子，只要我还活着，就需要给自己理财。</p> 
<p>那么为什么我写出来“5年”这个时间窗口呢？</p> 
<p><em>P.S. 本系列引述的书籍列表可参考《个人理财实践》<a href="https://justinyan.me/post/5594">第一篇</a>底部。</em></p> 
<p><em>P.P.S. 本系列提到的资产大类有多种持有方式，比如股票类资产，炒个股只是其中一种，而且如果不是专门的金融从业人员，不了解风险，不建议把核心资产放在由自己挑选的个股组合里。</em></p> 
<p><em>P.P.P.S. 保命声明：本人只是个普通的互联网民工，没有金融背景，此系列文章只是本人阅读学习后的实践笔记，绝非暴富指南。投资需要根据每个人的具体需求来定，因此请勿将本系列作为投资建议使用。</em></p> 
<h2>1. 长期来看，股票类资产的回报率是最高的</h2> 
<p>牛市期间不乏“短线操作”的“股神”，噼里啪啦短短几天多次买入卖出，然后发个“+200%”的截图，也时常听到有人说某某某“赚了N百万”准备辞职之类。但熊市期间这些“股神”似乎就集体消失了？</p> 
<p>短线操作的问题在于<strong>高昂的交易成本与股市短期内的不可预测性</strong>。</p> 
<p>我读到的书基本都引述了宾夕法尼亚大学沃顿商学院的杰里米·西格尔（Jeremy J. Siegel）教授对美国金融资产从1802年到2008年的的研究成果基本上被上述所有作品引用，大意是：<strong>长期来看，股票在各大类资产中的回报是最高的</strong>。</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-02-charts.jpg" alt="" /></p> 
<p>图中几个资产大类分别是：股票、债券、短期国库债、黄金、美元。</p> 
<p>因此，我的理财组合里需要长期持有股票类资产，不做短线操作。所谓的“短线操作高手”，除非能每一次操作都押中，且收获足够的回报（以抵消高昂的交易费用），否则跟赌博无异。</p> 
<p>退一步讲，即便有人运气特别好，一次操作“赚了N百万”，那么接下来呢？他要继续参与赌博，还是金盆洗手呢？即便他彻底洗手，那长期管理自己的资产总是要的吧，如果全部投货币基金连通胀都跑不过。</p> 
<h2>2. 市场周期，均值回归</h2> 
<p>股市短期内无法预测，但长期来看回报是最高的，而且市场往往有很少的几个瞬间可以赚钱，概率小得跟被闪电劈中差不多。</p> 
<p>巴菲特说“闪电劈下来的时候，你一定要在现场”。怎么保证我们一直在现场呢？最好的策略当然是永远不离开，一直持有股票类资产。为什么？</p> 
<p>《共同基金常识》引述了园丁强斯与总统对话的小故事：</p> 
<blockquote> 
 <p>强斯是一个富人家里的园丁，平时除了看电视就是打理花园。有一天他难得出门就被车撞了，车的主人是总统顾问。总统到顾问家时正好强斯也在那里养病，当时经济形势不佳，美国股市濒临崩溃，总统就问他说对当前的经济形势有什么看法。</p> 
 <p>强斯说：“在花园里，草木生长顺应季节，有春夏，也有秋冬，然后又是春夏，只要草木的根基未受损伤，它们就可以顺利生长。”</p> 
 <p>总统非常高兴：“我必须承认，这是很长时间以来我听到最令人振奋和乐观的看法。“我们中的很多人忘记了自然界与人类社会的相通之处。正如自然界一样，从长期来看，我们的经济体系保持着稳定和理性，这就是我们不必害怕自然规律的原因……我们坦然迎接不可避免的季节更替，却为经济的周期变动而烦恼，我们是多么愚蠢啊！”</p> 
</blockquote> 
<p>总统说的周期变动就是<strong>股市中的市场周期</strong>，从历史数据来看，市场具有牛熊转换的周期，牛市不会一直上涨，涨到了头就会转跌变成熊市，熊市也不会一直下跌，跌到谷底就会回归上涨。</p> 
<p>实践“价值投资”一派的投资人也相信股市有内在价值，虽然短期内股市会波动，但是长期来看，<strong>会出现均值回归现象：过高或过低的定价最终会以很高的概率向价值中枢回归</strong>。</p> 
<p>基于此，我们在牛市大涨的时候要警惕狂喜情绪，适时卖出，在熊市下跌时要抓住悲观机遇，便宜买入。因为我们一直在场，所以不会错过上涨的机会，同时也需要体会下跌时的痛苦。只有认识到市场周期，相信均值回归，才能做到在熊市买入，耐心等待春暖花开的到来。</p> 
<p>大约六、七年前我跟朋友聊天的时候，提到加密货币的未来，提到股市的未来。当时恰逢牛市，手里的个股都在涨，我的朋友问题：“你知道市场是有周期的吧？”我还真不知道，问：“周期是啥？”但我们很快就聊别的了。**如果我当时能好好学习下市场周期相关的概念，也许在经历我的第一个牛熊转换的时候我能少交点学费呢？**😂</p> 
<h2>3. “长期”到底有多长？</h2> 
<p>因为股票类资产的回报率高，所以我们要持有，因为牛熊转换时间可能会很长，所以我们要长期持有。那么“长期”到底有多长？</p> 
<p>因人而异，对我来说，我觉得是一辈子，也即普通人的预期寿命，<a href="http://www.gov.cn/xinwen/2022-07/05/content_5699402.htm">中国的数据是77.93岁</a>。但更具普适性的期限，我觉得可以参考有知有行的长钱计划，把这笔设定为“5年以上用不到的钱”。因为根据历史数据，股市一次牛熊差不多就是3-5年的时间。这里再次强烈推荐<a href="https://justinyan.me/post/4779">且慢的“四笔钱”</a>，非常亲民好懂，<strong>永远不要把“计划3年内要用的钱（比如买房）”投入股市，投资理财不是赌博</strong>。</p> 
<p>这样我们又多了一个问题：如果我把钱全部投入股票类资产（我个人会通过指数基金持有，而不是自己选择个股，后续会解释），那么我应该给它分配多高的比例呢？这点我们留到“资产配置”来聊。</p> 
<p>有知有行设定的5年是考虑了大众比较好接受的时间，不太短也不太长。不过5年之后又是下一个5年，一直重复这个过程最终也是一辈子。一辈子很长，我们有好几十年的时间可以去积累和布局，等待春暖花开的时候到来；一辈子又很短，我们只剩下不多的时间去陪伴家人，去享受生活，做自己真正想做的事情。</p> 
<h2>4. 理财的最终目标就是无需理财</h2> 
<p>虽然不是所有人都能像“也谈钱”一样，赚够500万本金然后宣布FIRE（财务自由，提早退休，Financial Independence, Retire Early），但是至少我们可以像《你当像鸟飞往你的山》（Educated）的作者塔拉·韦斯特弗（Tara Westover）一样，在第一次收到主教帮她申请的助学金之后，她想:</p> 
<blockquote> 
 <p>我的银行账户里有一千美元。光是想想就觉得奇怪，更别提说出来了。一千美元，额外的，而且是我不迫切需要的。我花了几星期才接受这个事实，这时我才开始体会到金钱的最大优势：考虑金钱以外的事情的能力。</p> 
</blockquote> 
<p>如果把“理财”的时间维度拉长到一辈子，那么“理财”肯定不是为了“赚大钱”而理，学习“理财”最终就是为了不用“理财”。这点跟“也谈钱”的“FIRE”，有知有行的“睡得着”是类似的。</p> 
<p>同时，对于年轻人来说，也不要过分关注“金融类资产”，人的时间精力有限，投资自己的“非金融类资产”，比如你的职业技能，兴趣爱好，拓展社交，陪伴家人，这些“非金融类资产”往往会带来无法预想的收获。而且，一个人好好努力赚钱，积累本金，要比不分昼夜盯盘，指望“股运”降临靠谱得多了。</p> 
<p>台湾的Winnie写了一本书<a href="https://book.douban.com/subject/30150181/">《不上班也有钱》</a>，讲述她和丈夫老J两人，如何从普普通通甚至毫无经验的求职者开始，努力工作，通过极简生活，一步步存钱理财，达到他们两人心目中的“财务自由”，然后开始环游世界。</p> 
<p>B站有对年轻的Up主夫妻，他们希望通过工作积累到380万人民币的本金，然后辞职。他们每个月都在B站发布他们的理财和收支状况。</p> 
<p>我想起以前考驾照的时候，不仅教练态度很差，教的都是死记硬背的东西，没有理论，感觉要考过挺难的。后来我给自己一个心理暗示：路上这么多人开车开得好好的呢，如果大家都行，我肯定也行！</p> 
<p><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-02-app-c.jpg" alt="" /></p> 
<p>这两天我看到知乎和App Store Today都贴出来“年轻人攒钱”的话题，感觉现在的年轻人真的太棒了，这么早就有理财意识。希望各位读者朋友都能顺利理财，把宝贵的时间精力用在自己真正热爱的事情上。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/5594">个人理财实践01: 教训与实践</a></li> 
 <li><a href="https://justinyan.me/post/5595">个人理财实践02: 投资是一件长期的事</a></li> 
 <li>封面: <a href="https://unsplash.com/@vorosbenisop">Benjamin Voros</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E2A;&#x4EBA;&#x7406;&#x8D22;&#x5B9E;&#x8DF5;01: &#x6559;&#x8BAD;&#x4E0E;&#x5B9E;&#x8DF5;</title>
        <link>https://justinyan.eth.limo/5CFFC098-DD79-4934-8034-C444662985FC/</link>
        <guid>https://justinyan.eth.limo/5CFFC098-DD79-4934-8034-C444662985FC/</guid>
        <pubDate>Thu, 16 Mar 2023 09:58:48 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/03/personal-finance-01-cover-c.jpg" alt="" /></p> 
<p>Hi,</p> 
<p>我是Justin，最近一直在读个人投资理财相关的书，又恰逢SVB破产掀起波澜，市场情绪波动激烈。于是近期<a href="https://fyfy.fm">我台</a>就以“小白如何理财，躺着赚钱睡得着睡得香”为主题，录制了今年第一期读书系列节目（近期就会上线，敬请期待哟😘）。</p> 
<p>我把准备节目时的笔记扩展为《我的个人理财实践》系列，在此分享，也作我个人回顾之用。</p> 
<p><strong>保命声明：本人只是个普通的互联网民工，没有金融背景，此系列文章只是本人阅读学习后的实践笔记，绝非暴富指南。投资需要根据每个人的具体需求来定，因此请勿将本系列作为投资建议使用。</strong></p> 
<h2>0. 我当前的理财策略是怎样的？</h2> 
<p>先说结论，当前我的理财策略如下：</p> 
<ol> 
 <li><strong>投资期限</strong>: 5年以上</li> 
 <li><strong>资产大类配置目标</strong></li> 
</ol> 
<ul> 
 <li>股票类: 60% 
  <ul> 
   <li>指数化目标50%，未来期望进一步提升指数化比例</li> 
  </ul> </li> 
 <li>债券类: 20% 
  <ul> 
   <li>以债券基金持有</li> 
  </ul> </li> 
 <li>现金类: 20% 
  <ul> 
   <li>以货币基金持有</li> 
  </ul> </li> 
</ul> 
<ol start="3"> 
 <li><strong>房产/债务追踪管理</strong></li> 
 <li><strong>定期导入电子账单统计每一笔收支</strong></li> 
</ol> 
<ul> 
 <li>每月一次，包括债务追踪管理</li> 
</ul> 
<ol start="5"> 
 <li><strong>资产再平衡</strong></li> 
</ol> 
<ul> 
 <li>存量资产根据配置目标，分批卖出上涨资产，买入下跌资产（每年一次，被动择时，高抛低吸）</li> 
 <li>增量资产以定投形式流入大类</li> 
</ul> 
<p>为何如此设计？</p> 
<p>为什么把投资期限设定为5年以上？</p> 
<p>资产大类是什么？为什么配置目标是这个比例？</p> 
<p>股票指数化是什么意思？个股怎么选择？</p> 
<p>根据这个策略，现在的我赚钱了吗？其实现在股市下行，我的股票类资产也是下跌的。但是我睡得着，因为我相信市场周期，相信均值回归，而且我的债券类和现金类资产没有亏钱，所以只要调整好布局，耐心等待牛市到来就好了。<strong>从这点就可以看出来，每个人对涨跌的感受是不一样的，所以务必不要照抄任何人给出的配置建议</strong>。</p> 
<h2>1. 教训与实践</h2> 
<p>2021年初我在<a href="https://justinyan.me/post/4427">《我是如何统计个人财务状况的》</a>分享了我做自动化记账的事情。当时我留下了一个问题:</p> 
<blockquote> 
 <p>接下来我也不知道能从中分析出什么，能给我带来什么。我希望掌握全面财务状况之后，能帮助我更好地作出投资金融、投资自己或者其他的决策，但是我发现我并不知道应该怎么做。</p> 
</blockquote> 
<p>现在看来，详实的记账习惯确实是投资理财的第0步，相比于手动记账来说，我自己编写自动化工具，依赖各类电子账单也是这个习惯能够保持下来的重要原因。</p> 
<p>后来在<a href="https://justinyan.me/post/4752">《我的个人OKR实践》</a>里我提到有知有行开发的<a href="https://youzhiyouxing.cn/curriculum">《投资第一课》</a>(感谢 <a href="https://twitter.com/RoCry">@rocry</a>推荐)、且慢的<a href="https://qieman.com/static/qiemanandm4.html">“四笔钱”</a>还有<a href="https://yetanmoney.com/">也谈钱</a>的文章，从这些非常棒的分享中我学到了一点皮毛。将其运用在我个人理财实践中，主要表现为通过定投的方式对资产大类进行调整，虽然彼时我尚不清楚资产大类是哪些，为什么要这样配置。</p> 
<p>但是通过这几年穿越牛熊的实践，我大概感受到了“长期”的魅力及其背后的逻辑。上周（2023年3月10日）硅谷银行（SVB）流动性问题消息传来，不到48小时就宣告倒闭，引发市场恐慌情绪。大家担心如果SVB像08年次贷危机一样触发连锁反应成片倒下，那么2023年可能就是金融危机发生之时。结果周末美联储出手，到了周一，市场又大涨了一轮。<strong>这个例子正是股票市场在短期内无法预测的绝佳案例，也是个人投资者对“股市风险很大”的具象感受。</strong></p> 
<p>“长期”的魅力就在于穿越周期之时，可以忽略随机波动带来的焦虑或狂喜。“别人贪婪我恐惧，别人恐惧我贪婪”，这句话讲的是牛市到顶的时候恐惧，熊市到底的时候贪婪，实际上这样的瞬间并不多见，而且基于短期内市场无法预测的逻辑，我们也几乎不可能正确抓住尖峰和谷底。既然无法控制，那就不要控制。<strong>相信市场周期，相信均值回归，在市场下跌时布局，上涨时收获。而这，需要个人投资者有“长期”的意识。</strong></p> 
<p>最近我阅读了一些有意思的投资理财书籍，通俗版的有飞泥翱空的<a href="https://book.douban.com/subject/30336949/">《傻瓜式投资》</a>、也谈钱的<a href="https://book.douban.com/subject/35157448/">《工薪族财务自由说明书》</a>，大师经典的有伯顿·马尔基尔的<a href="https://book.douban.com/subject/36096815/">《漫步华尔街（原书第12版）》</a>、霍华德·马克斯的<a href="https://book.douban.com/subject/33401129/">《投资最重要的事》</a>、大卫·F·斯文森的<a href="https://book.douban.com/subject/3725211/">《不落俗套的成功》</a>，还有约翰·博格的<a href="https://book.douban.com/subject/27153416/">《共同基金常识》</a>。</p> 
<p>这些书与有知有行的理念相符，但读书比读文章篇幅更长，论据更多，论证过程更加细致。像《漫步华尔街》这样常年更新的经典，首版发行于1973年，我阅读的第12版更新于2019年，其理论历久弥新，常读常新。如果读者朋友没时间读完全部，我觉得只读这一本也足够了。</p> 
<p>不过我也没自大到觉得读了几本书就是投资大师。皮毛总归是皮毛，人至少需要在一次牛熊转换之间交够“学费”才能自知。我目前边学习边探索，自知打不过金融专业人士，只求“学费”可以少交一点，找到适合自己的理财方式，晚上睡得着就足够了。</p> 
<p>毕竟理财的目标是不需要花时间精力去理财，把我们有限的时间精力花在更重要的事情上。我记得以前在<a href="https://waitbutwhy.com/">Tim Urban的Blog</a>读到他关于“时间”的看法，其中有一个观点非常触动人心：想一下你一年见你父母几次？再想一下人类平均寿命，减去父母当下的年龄，再相乘，这就是你还能见到父母的次数。</p> 
<p>人类的大脑会选择性忽略大量信息，以便关注当下。诚然，大部份信息是无效的，但有时候也容易让我们忽略人生真正重要的事情。赚钱不是为了看着银行存款的数字慢慢变大，而是为了这份货币购买力背后能带给我们的生活，钱可以多赚可以少赚，但时间一天就24小时。在德国的也谈钱攒够500万本金就财务自由，台湾的Winnie和她老公攒够钱就开始环游世界，虽然我没有到想要这样做的地步，但有一点是共通的：<strong>我不想成为某个东西的奴隶，而希望掌握自己人生更多的主动权</strong>。</p> 
<p><a href="https://justinyan.me/post/4911">Kevin Kelly 70岁生日的建议</a>提到:</p> 
<blockquote> 
 <p>99%的时间里，真正关键的时刻就是此刻。 About 99% of the time, the right time is right now.</p> 
</blockquote> 
<p>无论什么时候开始都不晚，从此刻开始，从储蓄开始，好好理财吧。</p> 
<h2>参考资料</h2> 
<ul> 
 <li>大师经典读物 
  <ol> 
   <li><a href="https://book.douban.com/subject/36096815/">《漫步华尔街（原书第12版）》 - 伯顿·G.马尔基尔</a></li> 
   <li><a href="https://book.douban.com/subject/27153416/">《共同基金常识》 - 约翰·博格</a></li> 
   <li><a href="https://book.douban.com/subject/33401129/">《投资最重要的事》 - 霍华德·马克斯</a></li> 
   <li><a href="https://book.douban.com/subject/3725211/">《不落俗套的成功:最好的个人投资方法》 大卫·F·斯文森</a></li> 
  </ol> </li> 
 <li>通俗版读物 
  <ol> 
   <li><a href="https://youzhiyouxing.cn/curriculum">《有知有行·投资第一课</a></li> 
   <li><a href="https://book.douban.com/subject/30336949/">《傻瓜式投资: 简单50:50法则》 - 飞泥翱空</a></li> 
   <li><a href="https://book.douban.com/subject/35157448/">《工薪族财务自由说明书》 - 也谈钱</a>，也谈钱的Blog: <a href="https://yetanmoney.com/">https://yetanmoney.com/</a></li> 
  </ol> </li> 
 <li>封面: <a href="https://unsplash.com/@insolitus">Rowan Heuvel</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 85 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;15: &#x5168;&#x4E16;&#x754C;&#x90FD;&#x5728;&#x73A9;ChatGPT</title>
        <link>https://justinyan.eth.limo/9981A4ED-58DA-49BD-9482-639CAC6CC109/</link>
        <guid>https://justinyan.eth.limo/9981A4ED-58DA-49BD-9482-639CAC6CC109/</guid>
        <pubDate>Mon, 06 Mar 2023 23:24:07 +0800</pubDate>
        
        <itunes:image href="https://justinyan.eth.limo/9981A4ED-58DA-49BD-9482-639CAC6CC109/Podcast-Cover-v85-v2.png" />    
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.me/wp-content/uploads/2023/03/Podcast-Cover-v85-v2.png" alt="" /></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 P1：ChatGPT持续大热</li> 
 <li>04:00 New Bing &amp; Google Bard</li> 
 <li>10:42 昙花一现的社交服务 Damus</li> 
 <li>14:11 Notion AI 与 AI 伦理</li> 
 <li>18:30 P2：元宇宙相关AR/VR/MR</li> 
 <li>20:17 苹果无创测血糖技术</li> 
 <li>21:44 小米AR眼镜、索尼PS VR2、字节Pico</li> 
 <li>26:30 P3：科技发布会前瞻</li> 
 <li>27:00 Type-C 也得用 MFI 认证</li> 
 <li>27:53 iPhone 16 Pro 将采用屏下 Face ID</li> 
 <li>29:47 P4：苏联美学：原子之心 Atomic Heart</li> 
 <li>34:45 荒野之息王国之泪、卧龙：苍天陨落</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 84 &#x6570;&#x7801;&#x8354;&#x679D;: &#x6B63;&#x7248;&#x8F6F;&#x4EF6;&#x751F;&#x6001;&#x3001;&#x72EC;&#x7ACB;&#x5F00;&#x53D1;&#x4E0E;&#x8FDC;&#x7A0B;&#x529E;&#x516C;</title>
        <link>https://justinyan.eth.limo/50C1FB0A-8713-487C-9D3F-CC9A77E82806/</link>
        <guid>https://justinyan.eth.limo/50C1FB0A-8713-487C-9D3F-CC9A77E82806/</guid>
        <pubDate>Wed, 15 Feb 2023 00:11:30 +0800</pubDate>
        
        <itunes:image href="https://justinyan.eth.limo/50C1FB0A-8713-487C-9D3F-CC9A77E82806/Podcast-Cover-v84-v2_compressed.png" />    
        
        
        <description><![CDATA[
            <img width="800" alt="Podcast-Cover-v84-v2_compressed" src="https://justinyan.eth.limo/50C1FB0A-8713-487C-9D3F-CC9A77E82806/Podcast-Cover-v84-v2_compressed.png" /> 
<p>国内的正版软件生态如何？ 做独立开发者能养活自己吗？ 数码荔枝团队全员远程办公？</p> 
<p>本期节目我们邀请到<a href="https://www.lizhi.io/">数码荔枝</a>的创始人 @荔枝，跟我们聊聊国内软件生态的事情。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 嘉宾介绍：荔枝</li> 
 <li>00:03:22 十年前谈下软件代理的故事</li> 
 <li>00:10:12 国内外软件正版化生态的现状</li> 
 <li>00:14:14 大家买的第一个正版软件是什么？</li> 
 <li>00:19:36 每个厂商都会开发一款PDF编辑器</li> 
 <li>00:24:11 软件开发者赚钱吗？</li> 
 <li>00:29:22 国内独立开发者的生存现状</li> 
 <li>00:36:18 独立开发者很难养活自己？</li> 
 <li>00:40:22 App 定价策略：买断vs订阅</li> 
 <li>00:43:59 独立开发者与平台方的合作方式</li> 
 <li>00:50:06 团队开发者的优劣</li> 
 <li>00:54:23 27 人全员远程办公的心得</li> 
 <li>01:06:21 远程办公的问题</li> 
 <li>01:11:05 来自 2 位听友的提问</li> 
 <li>01:16:15 灵魂三问</li> 
 <li>01:25:06 片尾曲：Bones - Low Roar</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: 荔枝</li> 
 <li>数码荔枝官网: <a href="https://www.lizhi.io/">https://www.lizhi.io/</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 83 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;14: &#x82F9;&#x679C;&#x53D1;&#x5E03;M2 Mac, CES&#x5C55;&#x4F1A;&#x7B49;</title>
        <link>https://justinyan.eth.limo/3C1C147F-6D85-45E1-9B58-96B8D5B2FD44/</link>
        <guid>https://justinyan.eth.limo/3C1C147F-6D85-45E1-9B58-96B8D5B2FD44/</guid>
        <pubDate>Sun, 05 Feb 2023 21:30:36 +0800</pubDate>
        
        <itunes:image href="https://justinyan.eth.limo/3C1C147F-6D85-45E1-9B58-96B8D5B2FD44/Podcast-Cover-v83-1_compressed.png" />    
        
        
        <description><![CDATA[
            <img width="800" alt="Podcast-Cover-v83-1_compressed" src="https://justinyan.eth.limo/3C1C147F-6D85-45E1-9B58-96B8D5B2FD44/Podcast-Cover-v83-1_compressed.png" /> 
<p>2023刚开年苹果就悄咪咪在官网发布了搭载M2芯片的MacBook Pro和Mac Mini，甚至更新了多年不见身影的初代HomePod。</p> 
<p>CES 2023电子消费展也顺利落幕，发布了很多有趣的“概念版”产品。</p> 
<p>2023年1月份可以说电子产品更新多多，让我们一起走进本期科技快乐星球吧~</p> 
<p><em>P.S. 除了任天堂第一方游戏之外，还有《猎天使魔女》这样的优秀作品也是任天堂独占，不过如今各家独占游戏确实已经不多了。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场</li> 
 <li>00:01:10 苹果发布会: M2芯片MacBook Pro, Mac Mini</li> 
 <li>00:08:23 初代HomePod时隔多年迎来更新</li> 
 <li>00:12:11 微软XGP彻底赢麻了 索尼再次面临“断气”风险</li> 
 <li>00:19:12 CES 2023 电子消费展顺利落幕</li> 
 <li>00:36:39 Twitter禁止所有第三方App</li> 
 <li>00:42:05 硅谷都在裁员，奈飞却在增长</li> 
 <li>00:46:16 三体、流浪地球</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 82 &#x4F59;&#x665F;: &#x5728;&#x5FB7;&#x56FD;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/63E37091-2BE1-4D6B-9C52-495D3E95C619/</link>
        <guid>https://justinyan.eth.limo/63E37091-2BE1-4D6B-9C52-495D3E95C619/</guid>
        <pubDate>Thu, 19 Jan 2023 01:40:48 +0800</pubDate>
        
        <itunes:image href="https://justinyan.eth.limo/63E37091-2BE1-4D6B-9C52-495D3E95C619/Podcast-Cover-v82-v2_compressed.png" />    
        
        
        <description><![CDATA[
            <img width="1600" alt="Podcast-Cover-v82-v2_compressed" src="https://justinyan.eth.limo/63E37091-2BE1-4D6B-9C52-495D3E95C619/Podcast-Cover-v82-v2_compressed.png" /> 
<p>你们要的海外篇来啦！</p> 
<p>好久没有跟在海外工作的朋友聊天啦，今天邀请到我们节目的是在德国的<a href="https://twitter.com/FreiheitYu">余晟</a>老师。</p> 
<p>余老师在国内的时候就经常翻译各种技术书籍，也写了《正则指引》一书。几年前，余老师一家移民德国，在很短的时间内学习德语并拿下PR，这学习能力真是令我等仰望。</p> 
<p>本期节目就让我们跟随余老师风趣幽默的谈话，一起体验下德国的工作与生活吧！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 开场，介绍嘉宾 @余晟</li> 
 <li>00:01:16 什么机缘来到德国的？</li> 
 <li>00:04:35 德国的教育、签证与加拿大对比</li> 
 <li>00:08:53 在国内和德国工作有什么不同？</li> 
 <li>00:16:15 在工作中的沟通有什么不同？</li> 
 <li>00:17:39 国内的朋友不会德语想直接找德国的工作可行吗？</li> 
 <li>00:20:26 余老师学德语、考试的经历与建议</li> 
 <li>00:25:11 怎样才能拿到德国的PR（永居）？</li> 
 <li>00:36:25 新冠疫情的影响，德国的分层转诊医疗方式</li> 
 <li>00:43:37 德国的天气如何？</li> 
 <li>00:48:22 在德国开车容易吗？高速公路不限速？</li> 
 <li>00:51:42 在德国买房是什么情况？</li> 
 <li>00:55:25 德国美食！喝完酒直接开车上路？</li> 
 <li>00:58:52 在德国养娃的经验，多维度的成长</li> 
 <li>01:02:12 给想到德国发展的朋友们的建议？</li> 
 <li>01:05:54 灵魂三问</li> 
 <li>01:10:56 片尾曲：《出埃及记》主题曲 The Exodus Song</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://twitter.com/FreiheitYu">余晟</a> | 微信公众号: 余晟以为</li> 
 <li>片尾曲: [《出埃及记》主题曲 The Exodus Song](<iframe width="100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/C1sSfNHghZc" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>)</li> 
 <li>余老师写的书<a href="https://book.douban.com/subject/10591096/">《正则指引》</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>监修: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>2022 &#x89C2;&#x5F71;&#x63A8;&#x8350;&#x4E4B;&#x65B0;&#x4E0A;&#x6620;&#x5F71;&#x5267;</title>
        <link>https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/</link>
        <guid>https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/</guid>
        <pubDate>Sat, 14 Jan 2023 20:24:28 +0800</pubDate>
        
        <itunes:image href="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/2022-movie-first-love-album_compressed.jpg" />    
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/2022-movie-new-cover_compressed.jpg" alt="" /></p> 
<p>书接上回: <a href="https://justinyan.me/post/5464">《2022 观影推荐之合家欢影剧》</a>，本文主要列出2022年度上映的，我看过的电影和电视剧。</p> 
<p>这些作品就不全是嘻嘻哈哈合家欢了，诸位可自行选择感兴趣的来看。</p> 
<p><em>另文末附带索引和我今年看过的影视作品列表，仅供诸君参考。</em></p> 
<h2>一、2022年上映的电影</h2> 
<h3>1. 分手的决心</h3> 
<img class="book-cover-frame" alt="2022_movie_001" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/2022_movie_001.webp" /> 
<center>
 <a href="https://movie.douban.com/subject/35073886/">豆瓣 7.6分</a> | 韩国 | 悬疑
</center> 
<p>汤唯2022年凭借此片获<a href="https://zh.wikipedia.org/wiki/%E6%98%A5%E5%8F%B2%E9%9B%BB%E5%BD%B1%E7%8D%8E" title="春史电影奖">春史电影奖</a>、<a href="https://zh.wikipedia.org/wiki/%E7%AC%AC31%E5%B1%86%E9%87%9C%E6%97%A5%E9%9B%BB%E5%BD%B1%E7%8D%8E" title="第31届釜日电影奖">釜日电影奖</a>、<a href="https://zh.wikipedia.org/wiki/%E9%9F%A9%E5%9B%BD%E7%94%B5%E5%BD%B1%E8%AF%84%E8%AE%BA%E5%AE%B6%E5%8D%8F%E4%BC%9A%E5%A5%96">韩国电影评论家协会奖</a>、<a href="https://zh.wikipedia.org/wiki/%E7%AC%AC43%E5%B1%8A%E9%9D%92%E9%BE%99%E7%94%B5%E5%BD%B1%E5%A5%96" title="第43届青龙电影奖">青龙电影奖</a>、<a href="https://zh.wikipedia.org/wiki/%E9%9F%93%E5%9C%8B%E9%9B%BB%E5%BD%B1%E8%A3%BD%E4%BD%9C%E4%BA%BA%E5%8D%94%E6%9C%83%E7%8D%8E">韩国电影制作人协会奖</a>、韩国艺术评论家协会、<a href="https://zh.wikipedia.org/w/index.php?title=Cine21%E9%9B%BB%E5%BD%B1%E7%8D%8E&amp;action=edit&amp;redlink=1">Cine21电影奖</a>、<a href="https://zh.wikipedia.org/w/index.php?title=%E9%BB%83%E9%87%91%E6%94%9D%E5%BD%B1%E7%8D%8E&amp;action=edit&amp;redlink=1">黄金摄影奖</a>全部最佳女主角奖。影片本身更是获奖无数。</p> 
<p>影片讲述的故事不是很复杂，包裹一个藏得不是特别深的悬念。但无论摄影风格，叙事节奏，还是汤唯的表演，都值得称赞。</p> 
<p>我看下来唯一觉得不过瘾的还是悬念最终的解法，但影片本身质量很高，值得一看。</p> 
<h3>2. 套装</h3> 
<img class="book-cover-frame" alt="2022-movie-the-outfit-800" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/2022-movie-the-outfit-800.webp" /> 
<center>
 <a href="https://movie.douban.com/subject/35372415/">豆瓣 7.9分</a> | 美国 | 剧情/犯罪
</center> 
<p>算是小成本制作单一场景电影，好不好看全靠编剧和演员们的演技。类似的影片有<a href="https://movie.douban.com/subject/25807345/">《彗星来的那一夜》</a>，但本作的悬疑属性相对没那么强。</p> 
<p>影片场景是在美国芝加哥一家英国人开的裁缝店，在黑帮大佬与夹缝中生存的小裁缝之间展开一场张力十足的表演。106分钟，情节一幕接一幕，峰回路转，全程紧张，是一部制作精良的小品。</p> 
<h3>3. 花束般的恋爱</h3> 
<img class="book-cover-frame" alt="movie-2022-I-Fell-in-Love-Like-a-Flower-Bouquet" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-I-Fell-in-Love-Like-a-Flower-Bouquet.webp" /> 
<center>
 <a href="https://movie.douban.com/subject/34874432/">豆瓣 8.6分</a> | 日本 | 剧情/爱情
</center> 
<p>坂元裕二警告！坂元裕二警告！</p> 
<p>2022 年初上映的爱情电影，女主角是在<a href="https://movie.douban.com/subject/26259677/">《垫底辣妹》</a>中饰演工藤沙耶加的有村架纯，男主角是《银魂》电影版中的新八鸡──菅田将晖。</p> 
<p>坂元裕二这个人，从<a href="https://movie.douban.com/subject/1438760/">《东京爱情故事》</a>就不知道赚走多少人的眼泪，那时候他对社畜下手还比较轻一点，到了 2017 年的<a href="https://movie.douban.com/subject/26895171/">《四重奏》</a>，松隆子、满岛光的落泪可是深深刺入社畜们的心脏啊。</p> 
<p>所以《花束般的恋爱》自然也不能例外。一开始就是美好的校园时代爱情，在影片展示两位主角一边艰难地努力生活，一边开心地有说有笑的时候，大家就要小心了，泪点全部藏在美好的细节里。</p> 
<p>坂元裕二深知社畜心态，每个人看他的作品，被触动之处往往各不相同。我最受打动的是第二次在角川书店，有村架纯拿着文学杂志，开心地准备递给男主角的那一刻。脸上的笑容消失的刹那，就是美好的向往破碎的瞬间。</p> 
<h3>4. 隐入尘烟</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/2022-movie-Return-to-Dust_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/35131346/">豆瓣 8.5分</a> | 中国大陆 | 剧情
</center> 
<p>中国西北农村，海清主演。导演李睿珺出生甘肃张掖，本片的拍摄地点就在那里。为了拍好这部影片，导演回到自己老家当了一年的农民，海清也在甘肃体验了10个月农村生活。除了海清是专业演员以外，影片中的其他角色都是当地农民。</p> 
<p>影片上映以后引发较多争议和讨论，我觉得不用理会。观影过程中有种难以言喻的的郁塞，有几分熟悉，有几分陌生，几分距离，几分亲切。在距离与亲切之间，存在一个无法描述的空间，观影的感受在这个空间里膨胀与充盈。</p> 
<p>我是生于南方长于南方的人，这份陌生感可能还更多一些。观影过程中有时觉得无聊，只是这种无聊还夹着不想错过。有点像观看<a href="https://movie.douban.com/subject/1292329/">《牯岭街少年杀人事件》</a>熟悉与距离并存，237分钟里有多少让人觉得疲惫又不愿错过的片段呢？</p> 
<h3>5. 子弹列车</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-bullet-train_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/35118954/">豆瓣 7.9分</a> | 美国 | 喜剧/动作
</center> 
<p>跟前文提到的《套装》类似，基本上全片场景集中在列车里，多位杀手之间的猜疑构成影片的张力，互相的误会爆出不少笑点。</p> 
<p>主演布拉德皮特宝刀未老，导演David Leitch此前导过《死侍》、《疾速追杀》(John Wick)等爽片，本作也可以当作爽片来看，适合辅以爆米花食用。</p> 
<h3>6. 坏蛋联盟</h3> 
<img class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/the_bad_guys-1.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/30165311/">豆瓣 7.3分</a> | 美国 | 喜剧/动画
</center> 
<p><a href="https://justinyan.me/post/5464">合家欢篇</a>已有简介。</p> 
<h3>7. 瞬息全宇宙</h3> 
<img class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Everything_Everywhere_All_at_Once-1.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/30314848/">豆瓣 7.6分</a> | 美国 | 喜剧/奇幻
</center> 
<p><a href="https://justinyan.me/post/5464">合家欢篇</a>已有简介，补充一下，杨紫琼凭借此片获得金球奖最佳女演员，她是第二位获得金球奖影后的亚裔女演员，第一位是奥卡菲娜，在本片中出演杨紫琼女儿的角色，她获得金球奖的影片是2019年上映的《别告诉她》(The Farewell)。</p> 
<h3>8. 巴黎夜旅人</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-Les-Passagers-de-la-nuit_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/35354759/">豆瓣 8.1分</a> | 法国 | 剧情
</center> 
<p>不知道是不是跟法国城市的美丽与优雅相关，法国的电影总是日常得那么浪漫，像午夜电台，用轻柔舒缓的声线，娓娓道出震颤心灵的故事。</p> 
<p>影片中的角色，有艰难生活但坚强勇敢的妈妈，有年少轻狂的孩子，有迷途流浪的旅人，不同的灵魂在深夜的巴黎相遇，他们的人生轨迹在纠缠中产生凄美的故事。</p> 
<p>我挺喜欢法国的电影，就像落日中的巴黎，城市美得那么不真实，街头的行人匆匆，地下铁的混乱与幽暗，各色人们的人生轨迹在这座城市叠加与激荡，既让我觉得美不胜收，又有一种恍惚的不真实感。</p> 
<p>这种氛围很好，像<a href="https://movie.douban.com/subject/1292220/">《情书》</a>，像<a href="https://movie.douban.com/subject/1292371/">《四月物语》</a>，日本的影片有日本独有的空气，法国的电影也有法国特别的空气。</p> 
<p>我想到<a href="https://movie.douban.com/subject/6537486/">《登堂入室》</a>与<a href="https://movie.douban.com/subject/34447553/">《世界上最糟糕的人》</a>，都是不错的具有法国氛围的电影，有兴趣的读者不妨找来看看。</p> 
<h3>9. RRR</h3> 
<img class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/rrr-1.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/30214145/">豆瓣 7.2分</a> | 印度 | 动作
</center> 
<p><a href="https://justinyan.me/post/5464">合家欢篇</a>已有简介。</p> 
<h3>10. 壮志凌云2：独行侠</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-top-gun-maverick_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/6893932/">豆瓣 8.0分</a> | 美国 | 动作
</center> 
<p>此处应有 Berlin 乐队的 Take My Breath Away 主题曲响起。</p> 
<p>本作为 1986 年的第一部的续集，《Top Gun: Maverick》，Maverick 即阿汤哥在其中饰演的角色 Pete Mitchell 在空军的绰号。剧情上是第一部的延伸，Maverick作为一个“传奇 Loser”因为犯错而被下放成为教育新兵的教官。</p> 
<p>在这个过程中，Maverick 既要面对不知天高地厚的优秀新兵，"Best of the Best"，又要面对自己内心多年来的挣扎。剧情上其实乏善可陈，都是套路，但是阿汤哥几次高光时刻拍得还是令人感觉惊心动魄，效果很不错。属于比较热血的类型。</p> 
<p>看完新作我就去把 1986 年的<a href="https://movie.douban.com/subject/1293799/">第一部</a>补了，不得不说，这部电影的原声大碟确实很赞。另外看了第一部才知道第二部里大量 callback 第一部的细节，再加上年仅 24 的阿汤哥看上去特别稚气天真的脸，疯狂追求他的教官大姐姐，真是漫画感太强了😂</p> 
<h3>11. 阿凡达：水之道</h3> 
<img class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Avatar_The_Way_of_Water-1.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/4811774/">豆瓣 8.0分</a> | 美国 | 动作/科幻
</center> 
<p><a href="https://justinyan.me/post/5464">合家欢篇</a>已作简介。</p> 
<h3>12. 利刃出鞘2</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-knives-out-glass-onion_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/34939037/">豆瓣 6.8分</a> | 美国 | 喜剧/悬疑
</center> 
<p>第一部<a href="https://movie.douban.com/subject/30318116/">《利刃出鞘》(Knives Out)</a>于2019年上映，主演是007的扮演者 Daniel Craig，属于有点阿加莎式的悬疑犯罪片。第一部的女主角也是后来《007: 无暇赴死》中的古巴女神 Ana de Armas。</p> 
<p>第一部无论拍摄手法、故事编排，还是演员的演出都很不错，于是我对第二部的期待很高。虽然一般来说，如果第一部的评价很高的话，续集一般都会令人失望。</p> 
<p>所以不出意外地第二部崩得厉害。导演与编剧依然是 Rian Johnson，主演大侦探也还是 Daniel Craig。故事主要场景发生在一个无人岛上，属于一场“富豪朋友”的聚会，有点阿加莎《无人生还》的意味。</p> 
<p>可惜的是关键情节转折“碰巧”的有点多，让我觉得编剧有种“偷懒”的嫌疑。但整体而言，影片质量还不错，可配合爆米花食用。</p> 
<h3>13. 不</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-nope_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/35240235/">豆瓣 6.8分</a> | 美国 | 科幻/悬疑
</center> 
<p>无论看的过程还是看完了以后都让我觉得一言难尽的作品。</p> 
<p>导演 Jordan Peele 此前自编自导过2017年的<a href="https://movie.douban.com/subject/26688480/">《逃出绝命镇》(Get Out)</a>，2019年的<a href="https://movie.douban.com/subject/27053945/">《我们》(Us)</a>，都是跟种族主义（尤其黑人）相关的惊悚类型片。</p> 
<p>在本作《不》(Nope)中，Jordan Peele 继续自编自导，从惊悚片中寻找新的尝试与新的角度。外星人片我们见多了，但是像 Jordan 设计的这样花里胡哨的外星人我还是第一次见。</p> 
<p>对于本作我只能说我理解能力有限，还是多来点《逃出绝命镇》这样的作品我觉得还比较好消化。至今 Betty Gabriel 在影片中又哭又笑的一幕仍深深烙印在我记忆里，每次想起都非常佩服 Betty 的演技与影片对矛盾冲突的极致表现力。</p> 
<h3>14. 奇异博士2：疯狂多元宇宙 (不推荐)</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-doctor-strange-multiverse_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/30304994/">豆瓣 6.3分</a> | 美国 | 动作/科幻/奇幻
</center> 
<p>一言以蔽之：漫威十年最后一部影片<a href="https://movie.douban.com/subject/26100958/">《复仇者联盟4：终局之战》(Avengers: Endgame)</a>之后，漫威的影片乏善可陈。不知道漫威还要休养生息多久，才能再出佳片。</p> 
<h2>二、2022年上映的电视剧</h2> 
<p>聊完 2022 上映的电影之后，我们来看看 2022 上映的剧集。出乎我意料的是，不仅 Apple TV+ 再造神作，2022 年 AMC 与 Amazon 都有不错的作品上映。</p> 
<h3>1. 人生切割术 第一季</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-severance_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/34885342/">豆瓣 9.1分</a> | 美国 | 科幻/悬疑
</center> 
<p>Apple TV+ 2022 最强作品无疑。</p> 
<p>剧集基于科幻假设，假如一个人工作的记忆可以和生活的记忆分开(Severance)，是不是就可以解决“工作没有意义”的问题，让“本体”过上天天不上班的美好生活呢？</p> 
<p>这项手术被发明出来，真是让打工人落泪，资本家狂喜啊。</p> 
<p>我想这部剧之所以能受到那么多人的欢迎，跟 David Graeber 写的<a href="https://book.douban.com/subject/35929434/">《毫无意义的工作》(Bullshit Jobs)</a>是有异曲同工之妙的。</p> 
<p>我们且看剧中人物，如何在小小迷宫中觉醒与突围。主悬念非常新颖有创意，这是本剧的最大看点没有之一。接下来故事展开的套路就比较常见，但由于核心悬念足够新鲜，所以发生的许多故事就很有趣。本剧一共 9 集，中间过程稍有乏善可陈之起伏（俗称拖进度，现在叫水视频），但总体来说质量还是很高的。</p> 
<p>据说第二季可能会在今年或明年初上映，我非常期待。</p> 
<h3>2. 万神殿 第一季</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-Pantheon_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/34990593/">豆瓣 8.8分</a> | 美国 | 科幻/动画
</center> 
<p>画风清奇的科幻动画片，改编自美籍华裔作家 Ken Liu (刘宇昆)的短篇小说。由 AMC+ 发行。</p> 
<p>近年来短视频的火爆让算法推荐这样的 AI 应用进入公众视野，2022 年无论 OpenAI 的 ChatGPT，还是 Midjourney 等各种 AIGC 产品的流行更是让“人工智能”的热度再次登顶。</p> 
<p>万神殿的故事可谓对人工智能的终极问题的探讨：人造意识是否可能？</p> 
<p>这并不是一个新的话题，自从科幻作品开始讨论人工智能以来，是“人”还是“机器”，何为“人类”何为“机器”就长久地在两个极端之间来回动荡，每次碰撞都会诞生不错的作品。</p> 
<p>《万神殿》的想法让我想到《命运石之门 0》，但两者探讨的侧重点不同。《万神殿》对技术细节的更多描述让喜欢硬科幻的影迷更加兴奋。对于“人造智能”的搭建和应用在本作中有不少创造性的想象，我觉得这些点都是本作的优势所在。</p> 
<p>但是总的来说，其探讨的内核没有特别大的变化，结论也是大爱 peace and love，这点可以说是本作之不足。不过瑕不掩瑜，本作依然是画风清奇的优秀科幻作品。</p> 
<h3>3. 赛博朋克：边缘行者</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-cyberpunk-edgerunners_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/35118256/">豆瓣 9.0分</a> | 美国 | 科幻/动作/犯罪
</center> 
<p>如果说《万神殿》画风清奇，那么《赛博朋克：边缘行者》(Cyberpunk: Edgerunners)就是画风非常地“赛博朋克”了。（废话🤦‍♂️）</p> 
<p>2020 年 6 月，《赛博朋克 2007》游戏发布前的一场 "Night City Wire" 直播中，被玩家戏称“波兰蠢驴”的游戏公司 CD Project 宣布与日本动画制作公司的 Studio Trigger 合作，将推出同样设定的动画作品。</p> 
<p>《赛博朋克 2007》发售后口碑一言难尽，我个人是挺喜欢这款游戏的，但毕竟我一个人代表不了整个资本市场。</p> 
<p>不过这部同款设定的动画片却口碑极佳。当 Lucy 手脚并用抓着 David 的急救担架车，在高速公路上疾驰，那疯狂的表情，呼啸而过的车辆，漫天流光的城市，这实在是太赛博朋克了！</p> 
<p>动画对于强化套装的表现也是独树一帜，既表现出了强化后 David 的超强实力，又不至于太过直白。</p> 
<p>赛博朋克类型的科幻作品始于 60-70 年带的美国，当时日本突飞猛进的半导体行业让原本领先的美国感到巨大的压力。于是作家们创作出了以日本东方文化为主导的高科技、低生活的未来废土世界。后来的《银翼杀手》可谓是“赛博朋克”风格视觉化的绝佳表达。</p> 
<p>这部动画基于这样的背景，但是感动影迷的却不再是新奇的废土世界，而是剧中人物被百般无奈的生活按在地上摩擦，即使变得更强又怎样，无论 David 把自己改造得再怎样强大，还是不得不低头。被社会的车轮来回碾压的打工人，在 2022 年这个全球“大衰退”的时代看到这部作品，其揪心程度不亚于坂元裕二针对打工人内心狠狠戳下的金句啊。</p> 
<h3>4. 闪亮女孩</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-shinning-girls_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/25930137/">豆瓣 8.6分</a> | 美国 | 科幻/悬疑
</center> 
<p>Apple TV+ 2022 年的悬疑佳作，改编自 Lauren Beukes 的同名小说《The Shinning Girls》。</p> 
<p>故事主角是一位平凡的芝加哥女记者 Kirby，以她的视角看到她所体验的世界充满各种诡异的变化。这种变化从第一集开始就形成观众脑中的悬念，是比较典型的悬疑套路。</p> 
<p>其创新之处在于对“时空旅行”的新诠释。在一个已经被人全方面多维度挖掘得一干二净的主题下，作者能拿出什么新的有趣的情节呢？这里我就不剧透了，总之《闪亮女孩》的角度非常不错，值得一看。</p> 
<p>虽然这样的作品都逃不开一个问题：如何填坑？</p> 
<p>就好像 2004 年的悬疑神作<a href="https://movie.douban.com/subject/1394819/">《迷失》(Lost)</a>一样，第一季挖出一堆满分的坑，后面填得不好可是要招骂的。</p> 
<p>我觉得这部剧的坑填得就差强人意吧，诸位读者可自行观看评价，哈哈。</p> 
<h3>5. 黑鸟</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-black-bird_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/35342065/">豆瓣 7.8分</a> | 美国 | 剧情/犯罪
</center> 
<p>Apple TV+ 2022 年可是杀疯了啊，又一部悬疑作品，不过这部剧的悬念没有那么强，勾引得也不是那么好。主角是<a href="https://movie.douban.com/subject/24405378/">《王牌特工》</a>里由 Taron Egerton 饰演愣头青小伙。</p> 
<p>套路也是比较常规： 把主角一次次丢进谷底，看他怎么发挥聪明才智，以出人意料的方式爬出来。</p> 
<p>结合故事背景在监狱，让我感觉有点<a href="https://movie.douban.com/subject/1419297/">《越狱》</a>的意思。不过《越狱》的节奏是要快太多了，毕竟是部欲罢不能的神作。</p> 
<h3>6. 真实身份</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-shoutai_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/35639931/">豆瓣 7.5分</a> | 日本 | 犯罪/悬疑
</center> 
<p>日本的悬疑电视剧，一般来说，总是顾左右而言他。比如石原里美主演的<a href="https://movie.douban.com/subject/27140017/">《非自然死亡》</a>，每集一个故事，看似在解决悬念，实则悬念不过是一个工具，带你看尽角色们各自的苦难。</p> 
<p>《真实身份》也有类似的手法，当然从“逃跑”这个设定上，可能更像《金色梦乡》。主演龟梨和也的颜值也是本剧受欢迎的原因之一。</p> 
<p>总的来说，是个不费脑筋的“悬疑片”，比较下饭，可以边泡面边食用。</p> 
<h3>7. 初恋</h3> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-first-love_compressed.jpg" /> 
<center>
 <a href="https://movie.douban.com/subject/35275350/">豆瓣 8.4分</a> | 日本 | 剧情/爱情
</center> 
<p>满岛光啊！有满岛光就够了！还要啥自行车😂</p> 
<p>寒竹百合自编自导的作品，她之前自编自导过<a href="https://movie.douban.com/subject/4196129/">《天使之恋》</a>，主演佐佐木希有多好看自不消说。</p> 
<p>本作男女主演佐藤健和满岛光都是三十多岁的人了，演这种中老年感慨青春回忆杀的角色真是绝了。</p> 
<p>剧集场景在浪漫的北海道札幌，市中心的交通岛，札幌PARCO，旭川空港，札幌天文台，天狗山等等，这是要跟《情书》比胜地巡礼啊😂</p> 
<p>剧集名字《First Love》就是来自宇多田光的同名专辑，1999年发行，剧集中的青少年版故事正是发生于此年间。该剧播出后，宇多田光还发行了这张专辑的Remix版本，新版封面用的是 <a href="https://twitter.com/hikki_staff/status/1584832741404995584?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1584832747679666176%7Ctwgr%5E917cecc17f606c4a551e1727a1c137514fe79ebc%7Ctwcon%5Es2_&amp;ref_url=https%3A%2F%2Fcdn.embedly.com%2Fwidgets%2Fmedia.html%3Ftype%3Dtext2Fhtmlkey%3Dcb7145f1731b4c328f8e4d2201854ceaschema%3Dtwitterurl%3Dhttps3A%2F%2Ftwitter.com%2Fhikki_staff%2Fstatus%2F1584832747679666176image%3Dhttps3A%2F%2Fabs.twimg.com%2Ferrors%2Flogo46x38.png">16 岁的大头照</a>，中年人看到这些不得老泪纵横一把。这波 Netflix 扳回一城</p> 
<img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/2022-movie-first-love-album_compressed.jpg" /> 
<p>少女版的女主角由八木莉可子饰演，跟满岛光的长相差异挺大，观影时也许会稍觉异样，还请诸位读者留意。</p> 
<h3>8. 开端</h3> 
<a href="https://movie.douban.com/subject/35332289/"> <img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-reset_compressed.jpg" /> </a> 
<center>
 <a href="https://movie.douban.com/subject/35332289/">豆瓣 7.9分</a> | 中国大陆 | 剧情/悬疑
</center> 
<p>堪称 2022 年最强国产悬疑电视剧，赵今麦与白敬亭主演，正午阳光出品，在腾讯视频上映。剧本改编自晋江文学城作者祈祷君的同名小说，大体设定是在一辆公交车的两位主句遭遇爆炸案后进入时空循环的故事。</p> 
<p>时空循环的作品并不少见，比如阿汤哥主演的<a href="https://movie.douban.com/subject/4746257/">《明日边缘》</a>，改编自小畑健的漫画 <em>All You Need Is Kill</em>，还有<a href="https://movie.douban.com/subject/3075287/">《源代码》</a>。</p> 
<p>在这样的设定下，主角通常是要打破循环，要嘛活下去要嘛获得什么。循环从一开始是看似无限的，实则随着循环次数的增多，主角会发现越来越困难或遭遇某种极限，从而在极限到达之前进行故事的大决战。整体架构如此，符合三幕剧，非常适合轻松吸引观众的电视剧改编。</p> 
<p>近年来国产电视剧水平越来越高，<a href="https://movie.douban.com/subject/33404425/">《隐秘的角落》</a>，<a href="https://movie.douban.com/subject/33447642/">《沉默的真相》</a>都是非常不错的作品。希望未来能看到越来越多出色的国产电视剧上映吧。</p> 
<h3>9. 星期三</h3> 
<a href="https://movie.douban.com/subject/35364243/"> <img class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Wednesday-1.jpg?imageMogr2/quality/80|imageMogr2/format/webp" /> </a> 
<center>
 <a href="https://movie.douban.com/subject/35364243/">豆瓣 7.8分</a> | 美国 | 奇幻/悬疑
</center> 
<p><a href="https://justinyan.me/post/5464">合家欢篇</a>已有简介。</p> 
<h3>10. 僵尸校园</h3> 
<a href="https://movie.douban.com/subject/35030325/"> <img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-all-of-us-are-dead_compressed.jpg" /> </a> 
<center>
 <a href="https://movie.douban.com/subject/35030325/">豆瓣 6.0分</a> | 韩国 | 惊悚
</center> 
<p>2022 年韩国上映的校园丧尸片。就是末日丧尸片的套路，加上一群青少年们聚在一起，有的无私奉献，有的自私自利。再来个英雄爸爸之类的，都比较套路化。</p> 
<p>一开始觉得有点漫画《漂流教室》的感觉，似乎也有<a href="https://movie.douban.com/subject/1465088/">同名电视剧</a>，越看越觉得就是套路爽片。</p> 
<p>所以本作质量如豆瓣评分，诸位读者可择而食之。</p> 
<h3>11. 爱，死亡和机器人 第三季</h3> 
<a href="https://movie.douban.com/subject/35436582/"> <img class="book-cover-frame" src="https://justinyan.eth.limo/F709E43A-32A2-4293-A1DD-A65029EFB62F/movie-2022-love-death-and-robots_compressed.jpg" /> </a> 
<center>
 <a href="https://movie.douban.com/subject/35436582/">豆瓣 8.5分</a> | 美国 | 科幻/动画
</center> 
<p>自 Netflix 2019 年上映第一季以来，已播出 3 季，颇有年货的感觉。第三季延续了之前的传统，每集一个故事，由不同的工作室、编剧制作。</p> 
<p>本季第九集 Jibaro 金色鳞片舞者与武士的故事尤其出圈，由 Alberto Mielgo 自编自导，基于印度、北非、北欧等地的民间神话故事创作。</p> 
<p>我觉得出彩的单集是有的，不过整季来看不如前两期那么具有想象力与冲击力。即便如此，<em>Love, Death &amp; Robots</em> 也依然是值得每季都看的好剧。</p> 
<h2>三、上述作品索引</h2> 
<h3>电影</h3> 
<ol> 
 <li>分手的决心</li> 
 <li>套装</li> 
 <li>花束般的恋爱</li> 
 <li>隐入尘烟</li> 
 <li>子弹列车</li> 
 <li>坏蛋联盟</li> 
 <li>瞬息全宇宙</li> 
 <li>巴黎夜旅人</li> 
 <li>RRR</li> 
 <li>壮志凌云2：独行侠</li> 
 <li>阿凡达：水之道</li> 
 <li>利刃出鞘2</li> 
 <li>不</li> 
</ol> 
<h3>电视剧</h3> 
<ol> 
 <li>人生切割术 第一季</li> 
 <li>万神殿 第一季</li> 
 <li>赛博朋克：边缘行者</li> 
 <li>闪亮女孩</li> 
 <li>黑鸟</li> 
 <li>真实身份</li> 
 <li>初恋</li> 
 <li>开端</li> 
 <li>星期三</li> 
 <li>僵尸校园</li> 
 <li>爱，死亡和机器人 第三季</li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E3A;&#x4EC0;&#x4E48;Ghost&#x4F1A;&#x65E0;&#x9650;301 Redirect?</title>
        <link>https://justinyan.eth.limo/2C84D883-1468-420F-BA97-5C1135BAE7BF/</link>
        <guid>https://justinyan.eth.limo/2C84D883-1468-420F-BA97-5C1135BAE7BF/</guid>
        <pubDate>Wed, 11 Jan 2023 21:58:07 +0800</pubDate>
        
        <itunes:image href="https://justinyan.eth.limo/2C84D883-1468-420F-BA97-5C1135BAE7BF/Ghost-301-redirect.webp" />    
        
        
        <description><![CDATA[
            <img width="928" alt="Ghost-301-redirect" src="https://justinyan.eth.limo/2C84D883-1468-420F-BA97-5C1135BAE7BF/Ghost-301-redirect.webp" /> 
<p>前阵子我们在用的Newsletter服务Revue宣布要关闭了:</p> 
<img width="1872" alt="ghost-001" src="https://justinyan.eth.limo/2C84D883-1468-420F-BA97-5C1135BAE7BF/ghost-001.webp" /> 
<p>我们只能寻找其他替代品。在平台还是自建两者之间，最后还是选择了自建，我曾经试过用Wordpress，但确实这套古老的系统多年没有特别大的进化，后来Newsletter编辑部的伙伴提议用Ghost，看上去确实不错。</p> 
<img width="1280" alt="ghost-002" src="https://justinyan.eth.limo/2C84D883-1468-420F-BA97-5C1135BAE7BF/ghost-002.webp" /> 
<p>Ghost项目是由前Wordpress UI团队负责人John O'Nolan离职后创办的。2012年他在启动项目的Blog上说道:</p> 
<p>WordPress is so much more than just a blogging platform</p> 
<p>我只能说Can't agree no more.</p> 
<p>Ghost作为一个平台使用起来非常简单，设计感非常棒，当然官方host的价格也很喜人。好在Ghost是开源的项目，愿意动手折腾的也可以鼓捣起来。</p> 
<p>周末鼓捣Ghost的时候就发现，它在setup完https证书之后就会无限301 redirect loop，最终问题是解决了但我想搞清楚到底是怎么回事。</p> 
<ol> 
 <li>怀疑是Nginx开启了无限循环<br /> 先从Nginx配置下手。一个完整的Nginx Conf实例可以参考官网这里，理论上我们配置多个不同的server时，listen在80端口(http)和443端口(https)，然后对80的server配置做host判断，直接全量转发到https。</li> 
</ol> 
<pre><code>server {
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    listen [::]:80;
    server_name example.com;

    return 404; # managed by Certbot
}
</code></pre> 
<p>现在有certbot配置起来很方便。我看了半天没发现Nginx有错配的情况。</p> 
<p>最后看这篇文章提到需要增加这个配置:</p> 
<p>proxy_set_header X-Forwarded-Proto https;<br /> 文章还提到Cloudflare的SSL规则也有可能导致无限301但我那时候域名已经从Cloudflare DNS转出了，所以跟Cloudflare无关。</p> 
<p>Ghost使用NodeJS写的，默认运行端口是2368，我们在Nginx接入之后肯定要把请求转发的，官方的Ghost-CLI 在setup后却没有这一条:</p> 
<pre><code>location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme; #自己补上
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:2368;
}
</code></pre> 
<p>参考Nginx官方文档相当于我们对入站的请求重定义了HTTP HEADER，其中 X-Forwarded-Proto 也是一个“事实标准”Header，可见Mozilla文档。文档称该Header主要用于客户端告知用于连接到代理的协议是用HTTP还是HTTPS。真正的标准详见Forwarded字段。</p> 
<ol start="2"> 
 <li>为什么必须带X-Forwarded-Proto Header？<br /> 既然不是Nginx导致的301 redirect，那就是Ghost咯？</li> 
</ol> 
<p>让我们翻一下Ghost的代码看看。原来Ghost用的ExpressJS做Server，其中 ghost/core/core/shared/express.js 的代码有这样一段:</p> 
<pre><code>// Make sure 'req.secure' is valid for proxied requests
// (X-Forwarded-Proto header will be checked, if present)
app.enable('trust proxy');
</code></pre> 
<p>好的现在压力给到了Express.js这边，我们看看express的代码，这个'trust proxy'都干了些啥。</p> 
<p>在lib/application.js里面，app.set这个方法针对trust proxy写入配置:</p> 
<pre><code>
  switch (setting) {
    case 'etag':
      this.set('etag fn', compileETag(val));
      break;
    case 'query parser':
      this.set('query parser fn', compileQueryParser(val));
      break;
    case 'trust proxy':
      this.set('trust proxy fn', compileTrust(val));

      // trust proxy inherit back-compat
      Object.defineProperty(this.settings, trustProxyDefaultSymbol, {
        configurable: true,
        value: false
      });

      break;
  }
</code></pre> 
<p>其中compileTrust()方法里面又是通过proxy-addr完成的，项目在这里，</p> 
<p>这一步是把IP地址描述进行翻译，比如:</p> 
<pre><code>app.set('trust proxy', 'loopback') // 一个子网描述
app.set('trust proxy', 'loopback, 123.123.123.123') // 一个子网加一个IP
app.set('trust proxy', 'loopback, linklocal, uniquelocal') // 多个子网
app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal']) // 多个子网
</code></pre> 
<p>后面这部分参数就会被compile()函数处理。Ghost的代码里:</p> 
<pre><code>app.enable('trust proxy');
// 等价于如下代码
app.set('trust proxy', true);
</code></pre> 
<p>所以后面的参数为空，说明 trust everything。因为express是被代理过来的，所以后续获得客户端请求的真实IP之类的信息还得靠proxyaddr来解析。</p> 
<p>所以不仅需要X-Forwarded-Proto，事实上，Ghost-Cli的Nginx配置模板是配齐了几个关键字段的:</p> 
<pre><code>location  {
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:;
    proxy_redirect off;
}
</code></pre> 
<ol start="3"> 
 <li>Ghost是怎么把http请求转发给https的？<br /> Ghost的配置文件使用nconf管理，当我们在Ghost目录下配置http协议的URL时不会有无限redirect的问题，但是https的会。</li> 
</ol> 
<p>即：如果你配置了网站url为<a href="https://example.com%EF%BC%8C%E4%BD%86%E6%98%AF%E8%AE%BF%E9%97%AE%E4%BA%86http://example.com%EF%BC%8CGhost%E4%BC%9A%E8%87%AA%E5%8A%A8%E5%B8%AE%E4%BD%A0redirect%E5%88%B0https%E3%80%82">https://example.com，但是访问了http://example.com，Ghost会自动帮你redirect到https。</a></p> 
<p>具体实现在ghost/core/core/server/web/shared/middleware/url-redirects.js，核心函数是这个:</p> 
<pre><code>/**
 * Takes care of
 *
 * 1. required SSL redirects
 */
_private.getFrontendRedirectUrl = ({requestedHost, requestedUrl, queryParameters, secure}) =&gt; {
    const siteUrl = urlUtils.urlFor('home', true);

    debug('getFrontendRedirectUrl', requestedHost, requestedUrl, siteUrl);

    // CASE: configured canonical url is HTTPS, but request is HTTP, redirect to requested host + SSL
    if (urlUtils.isSSL(siteUrl) &amp;&amp; !secure) {
        debug('redirect because protocol does not match');

        return _private.redirectUrl({
            redirectTo: https://${requestedHost},
            pathname: requestedUrl,
            query: queryParameters
        });
    }
};
</code></pre> 
<p>Ghost有给用户看的前端页面(FrontendApp)和给管理员用的后端管理页面(AdminApp)，前端页面启动的时候也是启动一个Express Server，然后使用上述middleware，检查每一次请求是不是secure。这个secure与否来自req.secure，而这个req.secure在启动了trust proxy的情况下，会取Header里的X-Forwarded-Proto作为依据。代码在Express项目的lib/request.js文件里，defineGettter里关于protocol和secure这两个函数。</p> 
<pre><code>defineGetter(req, 'protocol', function protocol(){
  var proto = this.connection.encrypted
    ? 'https'
    : 'http';
  var trust = this.app.get('trust proxy fn');

  if (!trust(this.connection.remoteAddress, 0)) {
    return proto;
  }

  // Note: X-Forwarded-Proto is normally only ever a
  //       single value, but this is to be safe.
  var header = this.get('X-Forwarded-Proto') || proto
  var index = header.indexOf(',')

  return index !== -1
    ? header.substring(0, index).trim()
    : header.trim()
});
</code></pre> 
<p>从上述代码可知，express会先检查<code>this.connection.encrypted</code>属性，我猜Nginx的转发是不加密的，因为本地express server只是打开了一个http服务，Nginx转发给它确实也不需要加密。于是就会跳到取Header这一步。所以如果我们的Nginx配置不带X-Forwarded-Proto，express就会认为客户端真实请求不是https，于是redirect给https，结果就是无限循环。</p> 
<ol start="4"> 
 <li>What's next?<br /> 虽然Ghost这个问题解决起来很简单，“改个配置就好啦”。但是经过层层追踪，查看各个项目代码的过程也很有意思。在这篇文章里，作者有提到x-forwarded-proto会被Ghost检查，但是既然整个服务涉及Nginx，Ghost，Express，我就想弄明白到底问题出在什么地方。</li> 
</ol> 
<p>通过这次追查也初窥了Ghost项目的大致架构，过程还是挺有趣的，不过看起来Ghost还不是特别开放，毕竟平台hosting才是这个项目最赚钱的部分。Wordpress这么多年，现在已经变成一个颇具历史包袱的巨无霸，这些年各种“替代开源CMS”也层出不穷，但是也起起落落落，消失了不少。看到Ghost现在能赚钱我感觉还是很棒的，唯有持续盈利，才能一直走下去。</p> 
<p>Ghost的设计感确实在目前的开源CMS中无出其右，希望Ghost能一直长青。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 81 2023 Flag: &#x72EC;&#x5B64;&#x4E5D;&#x5251;!</title>
        <link>https://justinyan.eth.limo/3DFB77B2-8FC3-4CF7-8B38-A18313C9EF00/</link>
        <guid>https://justinyan.eth.limo/3DFB77B2-8FC3-4CF7-8B38-A18313C9EF00/</guid>
        <pubDate>Thu, 05 Jan 2023 09:37:58 +0800</pubDate>
        
        <itunes:image href="https://justinyan.eth.limo/3DFB77B2-8FC3-4CF7-8B38-A18313C9EF00/Podcast-Cover-v81.png" />    
        
        
        <description><![CDATA[
            <img width="800" alt="Podcast-Cover-v81" src="https://justinyan.eth.limo/3DFB77B2-8FC3-4CF7-8B38-A18313C9EF00/Podcast-Cover-v81.png" /> 
<p>2022年结束，我台继续在一片“欢(meí)声(xīn)笑(meí)语(feì)”中给各位听众姥爷作年度汇报。</p> 
<p>感恩今年参与我们节目录制的嘉宾们，你们的加入使我们的节目更精彩。</p> 
<p>更要感恩今年在所有平台收听我们节目的听众朋友们，你们的支持是我们更新的最大动力。</p> 
<p>过去一年无论过得怎样，放开后的世界将重获希望。本期节目我台也立了不少Flag，希望我们跟听众朋友们一起，在2023年充满信念，挑战更多不可能。</p> 
<p>2023年，我们一起加油！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:53 枫言枫语2022年的数据</li> 
 <li>06:49 去年有多少位嘉宾做客节目？</li> 
 <li>11:17 @Justin 去年的收获</li> 
 <li>16:53 @自力 去年的收获</li> 
 <li>20:18 记忆力和注意力的碰撞</li> 
 <li>23:38 岩田聪和宫本茂的故事</li> 
 <li>26:34 程序员的谦逊和自我营销</li> 
 <li>31:48 @自力 去年的遗憾</li> 
 <li>35:39 @Justin 去年的遗憾</li> 
 <li>39:21 今年本台的新系列和新企划</li> 
 <li>42:32 本台年度财政赤字大起底</li> 
 <li>46:16 播客的商业化在哪里？</li> 
 <li>48:00 2023的Flag：独孤九剑</li> 
 <li>57:31 片尾曲《笑傲江湖》</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>节目中自力提到的综艺节目<a href="https://movie.douban.com/subject/35875029/">《我们的民谣 2022》</a>，Justin提到的书<a href="https://book.douban.com/subject/35506252/">《岩田先生》</a></li> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>片尾曲: <a href="https://y.qq.com/n/ryqq/songDetail/0014nHTQ0CMtRm">笑傲江湖 - 刘欢/王菲</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>监修: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索**“枫言枫语”**来订阅收听本节目。 荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>2022&#x7ED3;&#x675F;&#xFF0C;&#x6211;&#x671F;&#x5F85;&#x672A;&#x6765;&#x7684;&#x6BCF;&#x4E00;&#x5929;</title>
        <link>https://justinyan.eth.limo/4E3DA10E-C7E8-4ADD-98BA-D1476447F1E0/</link>
        <guid>https://justinyan.eth.limo/4E3DA10E-C7E8-4ADD-98BA-D1476447F1E0/</guid>
        <pubDate>Sun, 01 Jan 2023 18:15:34 +0800</pubDate>
        
        <itunes:image href="https://justinyan.eth.limo/4E3DA10E-C7E8-4ADD-98BA-D1476447F1E0/2022-summary-tweet-2019.png" />    
        
        
        <description><![CDATA[
            <img width="928" alt="2022-summary-cover" src="https://justinyan.eth.limo/4E3DA10E-C7E8-4ADD-98BA-D1476447F1E0/2022-summary-cover.jpg" /> 
<p>过去我既不写年终总结也不写新年计划，因为我觉得：</p> 
<img width="600" alt="2022-summary-tweet-2019" src="https://justinyan.eth.limo/4E3DA10E-C7E8-4ADD-98BA-D1476447F1E0/2022-summary-tweet-2019.png" /> 
<p>但是去年我开始使用<a href="https://justinyan.me/post/4752">个人OKR实践</a>尝试着做稍微长期一点的规划，正如我当时所想：<strong>计划跟未来是两回事，长期计划并不等于预知未来</strong>。</p> 
<p>今年是我完整做完12个月个人OKR实践的一年，也是整个大环境起伏不定的一年。今年环境对个人造成的影响之剧烈，之深远，我想应该有不少人都深有体会。</p> 
<p>金庸写《笑傲江湖》的时候已经是他武侠小说创作的末期，金式武学从《射雕英雄传》郭靖的《九阴真经》搭配降龙十八掌；到《神雕侠侣》杨过的海潮内力搭配黯然销魂掌；再到《倚天屠龙记》张无忌的九阳神功搭配乾坤大挪移；及至《天龙八部》萧峰仅凭太祖长拳挫败中原群雄，这般英雄人物所学，均是大开大合，内力充盈的刚猛神威之招式。但是《笑傲江湖》不一样，无招胜有招。令狐冲是个滑头人物，风清扬教给他独孤九剑时，上来就让他忘记毕生所学，任彼泰山压顶，我只当清风拂面。</p> 
<p>我想此番境界，颇有佛陀无我之境。</p> 
<p>2022年无疑是风云巨变的一年，企业家过来有如泛舟狂风巨浪之间，战战兢兢；打工人过来更似蚍蜉撼树，沧海一粟，倍感无力。</p> 
<p>但好在人类进化这几百万年间，有个对生存特别有用的优点被延续了下来：无论好坏，放下过去，着眼未来。过去的经验需要被继承，历史的错误需要被铭记，但生活是当下，既不在昨天，也不在明天，就在今天。</p> 
<h2>2022 我学到了什么</h2> 
<p>今年我制作了<a href="https://justinyan.app/">justinyan.app</a>这个工具，方便我每个月回顾我做了什么，正好年底可以帮我输出年度报告。2022年我一共：</p> 
<ol> 
 <li>发表了21篇博客文章，合计48098个汉字。</li> 
 <li>读书总结请看: <a href="https://justinyan.me/post/5361">枫影夜读 2022 我的读书</a></li> 
 <li>观影推荐请看: <a href="https://justinyan.me/post/5464">2022 观影推荐之合家欢影剧</a></li> 
 <li>发布了22期<a href="http://fyfy.fm/">播客节目</a>，共计24小时49分6秒。</li> 
 <li>发送了22封<a href="https://replay.cafe/">Newsletter</a>，分享了65张唱片。</li> 
 <li>上线了<a href="https://xyzrank.com/">播客中文榜</a>。</li> 
</ol> 
<p>持续的输出很能帮助创作者学到东西，这些收获往往不是“规划中”的，而是在产出时“意外”发生的。</p> 
<h3>1. 跳出自己的思维陷阱</h3> 
<p>5月份我发表了<a href="https://justinyan.me/post/4911">《凯文·凯利70岁生日写的103条人生忠告（中文翻译）》</a>受到不少读者欢迎。八月份我在Twitter分享<a href="https://twitter.com/MapleShadow/status/1560939211951202305?s=20&amp;t=lGud9NB1_VyMVAF5LNu-kg">《可能性的艺术》</a>，<a href="https://twitter.com/MapleShadow/status/1558322862158520320?s=20&amp;t=lGud9NB1_VyMVAF5LNu-kg">《工作、消费主义和新穷人》</a>也受到不同程度的欢迎。这不禁让习惯了写门可罗雀的长文的我陷入矛盾的思考：为什么这些“没什么信息含量”的短文字更受大家欢迎呢？</p> 
<p>为此我还跟搭档自力展开过讨论。我想我对于“不同平台”有其不同的受欢迎内容的理解，到了年底终于有所接受。12月我发了一条推:</p> 
<img width="1200" alt="kindle_tweet_3-c" src="https://justinyan.eth.limo/4E3DA10E-C7E8-4ADD-98BA-D1476447F1E0/kindle_tweet_3-c.webp" /> 
<p>随后我据此发展写了<a href="https://justinyan.me/post/5401">《枫影夜读: Kindle退出中国，我学到了什么》</a>一文。自此，可以说我终于就“长短内容之争”、“是否应该坚持读原作之争”这个问题跟我自己和解了。因为我发现，我在Twitter也好，博客也罢，发短文也好，发长文也罢，跟这个问题本质上没有关系。</p> 
<p>从这点来看，我真是个幼稚得很的顽固家伙，这么多年了都没能想清楚这一点。</p> 
<p>要从别人的角度思考，而不是我的角度思考啊。</p> 
<p>正好今天读完关于任天堂前任社长岩田聪的一本书《岩田先生》，里面提到岩田聪也遇到过类似的问题。他是一位技术实力超强的程序员，但是早期开发的游戏并不总是受欢迎，原因就在于他总是开发“自己认为”最好的东西，可是你不可能给玩家一本厚厚的说明书，告诉他们应该这样这样，这个游戏哪里哪里是超越时代的。后来他从宫本茂那里学到了不少从玩家角度出发，设计毫不费力就能上手的游戏的方法。</p> 
<p>亡羊补牢，为时未晚，从今天开始，学习从别人的角度思考，而不仅是我的角度。</p> 
<h3>2. 尊重周期起伏，正念活在当下</h3> 
<p>人对于自己的预期跟当下的心情有很强的关系。</p> 
<p>三月中概股、港股、A股彰显世界经济形势，十月国庆后广州开始封控，发生了非常多令人emo的事情。我人在广州，也被作为“密接”集中隔离过（参考<a href="https://justinyan.me/post/5346">《被集中隔离需要准备什么？》</a>），而这些过去三年耳熟能详的关键词也转瞬成为时代的眼泪。</p> 
<p>整个十月、十一月我基本处于低迷状态，既不想产出什么，也不知道未来会怎样。还好我今年制作了<a href="https://justinyan.app/">这个自动统计的工具</a>，通过历史数据的分析，我发现我的产出既有环境的影响，也有个人的有周期性。每年总会有一两个低谷，低谷过后会是高峰。长期来看每年总是能保持一定的产出的。这个观察给当时在沉湎于黑暗之中的我带来一阵希望。</p> 
<p>尊重我的周期起伏，在波峰期就好好产出，多些收获，在低谷期就好好休息，为未来做准备。当然是说起来容易做起来难的事情。</p> 
<p>今年我接触到了“正念”，目前对我来说很有用的技能。正念可以通过呼吸观察来做，也可以通过吃饭的时候好好品尝食物来做，正念学起来很简单，但要像大师一般十分不易。所幸我的肤浅所学已勉强够用，能在我脑袋爆炸的时候帮我迅速冷静下来。</p> 
<p>呼吸观察只需要5分钟，通常不是我自己“想”出了我应该做什么，而是应该做什么“自动地”跑了出来。每次进入状态的时候，脑袋酥酥麻麻的感觉很棒。</p> 
<p>“活在当下”这个词现在已经被污染得可怕，早脱离了它的本意。但我也没能想到什么更好的词来表达它本来想要表达的意思。今年从Sam harris的Waking Up（《“活在当下”指南》），Micheal Singer的The Untethered Soul（《清醒地活》）以及David Rock的Your Brain at Work（《效率脑科学》）学到了不少，这种学习新技能的感觉很棒，希望2023年能持续练习下去。</p> 
<h2>2023 年，“挑战更多不像Justin会去做的事情”</h2> 
<p>今年忘记从哪里读来的一句话，<strong>叫做“失败得太少”</strong>。这句话的意思不是说“成功得太多”，恰恰相反，正是因为什么都不敢去尝试，什么都不敢去做，害怕失败的结果，所以才失败得太少。</p> 
<p>我不算一个勇敢的人，但今年还是尝试了一些过去不太会做的事情，都要感谢我的合作伙伴们。比如跟小伙伴们编写<a href="https://replay.cafe">Re:Play</a>，一份两周一会的音乐分享 Newsletter，借此我聆听了不少美妙的音乐作品，收获颇丰。还有：</p> 
<h3>1. 播客参加多个活动</h3> 
<p>今年我们《枫言枫语》播客在进行常规节目，苹果全球开发者大会 WWDC 2022 的时候，有幸收到来自《老司机周报》、swiftgg等组织的邀请，参加 <a href="https://swift.gg/wwdc22/index.html">WWDC.playground 直播活动</a>。</p> 
<p>7月份又收到《开源面对面》和《津津乐道》组织的<a href="https://github.com/opensource-f2f/episode/issues/96">技术播客月活动</a>邀请。后来还有苹果的活动等等，这不免让我想起2021年收到<a href="https://fyfy.fm/episode/38">QQ音乐的邀请参加线下沙龙活动</a>的事情。</p> 
<p>每次参加这些活动我都挺紧张的，担心自己不够资格，担心没发挥好，担心这个担心那个。但事实上每次活动都收获很多，认识到很多有趣的朋友。我与这些朋友可能平时不太会有交集，但是通过这些活动让我认识到有趣的人，正是我们播客想要达成的目标之一呀。</p> 
<h3>2. 中文播客榜</h3> 
<p>这个项目的缘起确实满意外的，我因为<a href="https://twitter.com/MapleShadow/status/1543159321915142144">抢到一张服务器的优惠券</a>，也不知道要拿来做什么，想到之前记录我们播客的数据都是手动的，于是写了个工具自动记录分析。搭档自力看到觉得挺有趣的，就加入进来，没想到我们就从一个自我分析的工具做成了一个<a href="https://xyzrank.com/">中文播客榜</a>。</p> 
<p>这个项目的最终线上版绝对不是过去的我会做的事情，但是这种“做Justin不太会做的事情”的感觉很好。今天在《岩田先生》这本书里，我读到原来任天堂一直把“去挑战任天堂还做不到的事情”作为方向标:</p> 
<blockquote> 
 <p>“去挑战任天堂还做不到的事情”，说得极端一点，就等于“去挑战不像宫本先生会去做的事情”。这种自我颠覆的精神，宫本先生实践起来比任何人都更卖力，这着实有趣。追求与宫本先生不同的，不是别人，正是他自己。”</p> 
</blockquote> 
<p>我当然不像岩田社长与宫本先生一样是已经功成名就的人，但正因为此，才更要像厉害的前辈学习是不是。无论是<a href="https://xyzrank.com/">中文播客榜</a>项目还是小到怎么发一条推写一篇文章，去“挑战Justin还做不到的事情”，本身不也是挺有趣的一件事情吗？</p> 
<h3>3. 学会感恩</h3> 
<p>我不是一个很会感恩的人，这点真是糟糕，但是没关系，今年我有在好好学习感恩这件事情。</p> 
<p>不管是我们播客的听众还是嘉宾，还是我的文章读者，我的家人，我的同事，我的朋友们。在<a href="https://justinyan.me/post/4625">《被讨厌的勇气》</a>一书里，阿德勒说：</p> 
<blockquote> 
 <p>一切烦恼皆来自人际关系。</p> 
</blockquote> 
<p>学会感恩，可以解决非常非常多的问题。过去不懂得感恩的时候，觉得很多事情都莫名其妙的，也有很多事情凭空多出来一堵墙。但是一旦学会换一个感恩的角度，瞬间这些问题就都不是问题了。</p> 
<p>我的感恩练习还远远不够，希望能作为一项Justin还做得不好的事情，在2023年好好挑战一下！</p> 
<p><em>2023年1月1日/夜</em><br /> <em>于自居</em></p>
        ]]></description>
    </item>
    
    <item>
        <title>2022 &#x89C2;&#x5F71;&#x63A8;&#x8350;&#x4E4B;&#x5408;&#x5BB6;&#x6B22;&#x5F71;&#x5267;</title>
        <link>https://justinyan.eth.limo/B5CA359D-2160-411E-8A1C-69E5031201A7/</link>
        <guid>https://justinyan.eth.limo/B5CA359D-2160-411E-8A1C-69E5031201A7/</guid>
        <pubDate>Fri, 30 Dec 2022 13:51:28 +0800</pubDate>
        
        <itunes:image href="https://justinyan.eth.limo/B5CA359D-2160-411E-8A1C-69E5031201A7/2022-movie-cover.jpg" />    
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://justinyan.eth.limo/B5CA359D-2160-411E-8A1C-69E5031201A7/2022-movie-cover.jpg" alt="" /></p> 
<p></p> 
<p>元旦假期将至，又是新的一年。</p> 
<p>最近奥密克戎已经从国内一线城市迅速蔓延到了三四线城市，速度惊人。希望近期生病的小伙伴们早日康复，还没生病的小伙伴们能躲过这一劫。</p> 
<p>这段时间假期接踵，大家如果不想出门的话可以在家读读书，看看电影电视剧，读书可以参考👉🏻<a href="https://justinyan.me/post/5361">《枫影夜读 2022 我的读书》</a>。</p> 
<p>电影电视剧推荐分为两篇:</p> 
<ol> 
 <li>适合全家观看的笑嘻嘻合家欢影剧</li> 
 <li>2022年新推出影剧</li> 
</ol> 
<p>诸位读者朋友可自行选择阅读，祝大家有个愉快的假期😁</p> 
<h2>一、适合全家观看的笑嘻嘻合家欢影剧</h2> 
<h3>1. 阳光小美女</h3> 
<p> <a href="https://movie.douban.com/subject/1777612/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Little_Miss_Sunshine-784110764-large-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/1777612/">豆瓣 8.4分</a> | 电影 | 美国 | 喜剧 | 2006年</p> 
<p>7岁的小女孩Olive非常可爱天真，有个圆圆的小肚腩，戴个大眼镜，怎么看都不像“主流审美里的美女”。但是她希望参加“阳光小美女”(Little Miss Sunshine)选美比赛，在运气爆棚以及全家老小的支持下，一路开车到比赛地点。</p> 
<p>不费脑，看了非常令人开心愉悦的电影。</p> 
<h3>2. 天生一对</h3> 
<p><a href="https://movie.douban.com/subject/1297102/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/the_parent_trap-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/1297102/">豆瓣 8.4分</a> | 电影 | 美国 | 喜剧 | 1998年</p> 
<p>小美女演员Lindsay Lohan一人分饰两角，两个小女孩在美国夏令营相遇。两人长得一模一样但性格迥然。两个人从一开始互相捣乱到终成好友。然后发现了自己身世的惊天大秘密，于是开始他们的合作计划……</p> 
<p>Lindsay Lohan非常可爱，演技也很好。这部电影跟《阳光小美女》有异曲同工之妙，同样是不费脑的合家欢好电影。</p> 
<h3>3. 小萝莉的猴神大叔</h3> 
<p><a href="https://movie.douban.com/subject/26393561/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Bajrangi_Bhaijaan-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/26393561/">豆瓣 8.4分</a> | 电影 | 印度 | 喜剧 | 2015年</p> 
<p>印度电影总是能给人惊喜，在歌舞升平、欢天喜地中蕴藏感人肺腑的故事。开端是一位来巴基斯坦的哑巴小女孩，跟着母亲到印度朝圣。她们信仰伊斯兰教，而印度主要信仰印度教。小女孩在人群中跟母亲走散，这时遇到了虔诚的印度教徒帕万，帕万觉得小女孩太可怜，几经辗转决定送小女孩回去。</p> 
<p>影片里既有宗教文化的冲突，又有理想与世俗的矛盾，小萝莉非常楚楚可怜的脸加上演员萨尔曼汗帅气的演出，辅以印度必有的歌舞，非常欢乐。</p> 
<p>印度电影一般都比较长，这部影片是159分钟，做好观影准备哦。</p> 
<h3>4. 了不起的狐狸爸爸</h3> 
<p><a href="https://movie.douban.com/subject/1759386/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Fantastic_Mr_Fox-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/1759386/">豆瓣 8.6分</a> | 电影 | 美国 | 喜剧 | 2009年</p> 
<p>两位江洋大盗狐狸，在一次偷窃行动中发现狐狸太太怀孕了，于是两位大盗决定退隐江湖，好好养育后代。</p> 
<p>数年后，狐狸一家搬进一个树屋，邻居有三个农场。技痒难耐的狐狸爸爸再次偷偷出手，于是一家人陷入了与农场主的大战…</p> 
<p>非常欢乐的动画片，画风比较独特，动物与人类的视角冲突很有趣。</p> 
<h3>5. 瞬息全宇宙</h3> 
<p><a href="https://movie.douban.com/subject/30314848/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Everything_Everywhere_All_at_Once-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/30314848/">豆瓣 7.6分</a> | 电影 | 美国 | 喜剧/奇幻 | 2022年</p> 
<p>今年上映的颇具争议的电影，评价两极分化。导演及编剧都是是美籍华裔关家永(Daniels Kwan)，主演是杨紫琼，男一号是越南演员关继威。这部影片打戏不少，据说本来是要邀请成龙来担任男一号，但后面没能达成，于是邀请了另一位大鼻子演员。</p> 
<p>我觉得整部影片看下来非常有创意，不管是漫画般表现手法，还是多元宇宙的新解释，都很令人惊喜。不过可惜的是影片内核表达的还是老主题，移民二代与一代的观念冲突，母女亲情，世界大爱是核心，所以食用到内核部分有些鸡肋。</p> 
<p>但总体我是非常欣赏这部影片的，很开心在2022年商业类型片大行其道的态势下看到这样有创意的影片。</p> 
<h3>6. 天黑请回家 第一季</h3> 
<p><a href="https://movie.douban.com/subject/30303227/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Home_Before_Dark_Season_1-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/30303227/">豆瓣 8.0分</a> | 电视剧 | 美国 | 悬疑 | 2020年</p> 
<p>Apple TV+ 2020年推出的悬疑好剧，可爱的小女孩加上Loser父亲组合。一家人因为父亲的工作问题搬回他小时候长大的小镇。刚回到小镇就发现各种不对劲。</p> 
<p>叛逆期的小女孩Hilde偷偷对父亲试图掩盖的陈年旧事展开调查，大闹小镇的种种事情令人莞尔。</p> 
<p>这部电视剧因为题材涉及悬疑，需要动点脑，但动得不多，同样是合家欢好剧。</p> 
<h3>7. 天黑请回家 第二季</h3> 
<p><a href="https://movie.douban.com/subject/34954862/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Home_Before_Dark_Season_2-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/34954862/">豆瓣 7.6分</a> | 电视剧 | 美国 | 悬疑 | 2021年</p> 
<p>一年后第二季回归。剧情承接第一季，Hilde继续展开调查。演员小女孩长大得好快，但还是很可爱。</p> 
<p>第二季的故事结构和节奏跟第一季相仿，不过一般来说，续集要超越第一季都非常困难。所以，看着欢乐就好啦😁</p> 
<h3>8. 雄狮少年</h3> 
<p><a href="https://movie.douban.com/subject/35144311/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/xiong_shi_shao_nian-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/35144311/">豆瓣 8.3分</a> | 电影 | 中国大陆 | 喜剧 | 2021年</p> 
<p>去年12月下旬上映的中国大陆动画片，超出预期的国产动画片。</p> 
<p>故事讲述经常受欺负的留守少年阿娟偶遇同名舞狮少女，因其飒爽英姿燃起斗志，想要参加舞狮大会的逆袭之路。影片涉及现代城乡矛盾，新旧文化冲突，亲情友情等多个维度，另有粤语配音的部分让我倍感亲切。</p> 
<p>虽然故事内核有太多无法触及的东西，缚手缚脚使得制作团队无法很好施展，但总体而言故事完整，跌宕起伏，应有尽有，还是不错的。</p> 
<h3>9. 阿凡达：水之道</h3> 
<p><a href="https://movie.douban.com/subject/35144311/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Avatar_The_Way_of_Water-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/35144311/">豆瓣 8.0分</a> | 电影 | 美国 | 科幻 | 2022年</p> 
<p>詹姆斯卡梅隆今年大热的影片，阿凡达续作。这是一部毫无剧情体验可言，纯看3D特效的影片，3D IMAX观影效果最佳。</p> 
<h3>10. 实习生</h3> 
<p><a href="https://movie.douban.com/subject/10594965/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/The_Intern-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/1867345/">豆瓣 8.0分</a> | 电影 | 美国 | 喜剧 | 2015年</p> 
<p>这是一部温暖人心的喜剧电影。年近70已经退休的Ben，年轻时精明能干，事业有成，在伴侣去世后耐不住寂寞，试图重返职场。</p> 
<p>正好安妮海瑟薇饰演的Jules的是上购物网站创业公司在展开一项计划，招聘老年人来公司做实习生。于是Ben开启了一段非常有意思的实习之旅。</p> 
<p>本作看点有，Robert饰演的老实习生角色风度翩翩，看似青铜实则王者，有点爽剧的套路。另外安妮海瑟薇太好看，只看安妮也足够了。</p> 
<h3>11. 遗愿清单</h3> 
<p><a href="https://movie.douban.com/subject/10594965/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/The_Bucket_List-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/10594965/">豆瓣 8.7分</a> | 电影 | 美国 | 喜剧 | 2015年</p> 
<p>豆瓣电影Top 250排名199。Morgan Freeman饰演的汽车修理技师卡特因病住进医院，同病房的正好是拥有这家医院的老富翁科尔。科尔和卡特性格迥然，财富悬殊，但在同一个病房同时面临死亡这个话题。</p> 
<p>因缘际会下他们如影片标题列出了“遗愿清单”，两位年迈的病人竟然就此展开一场奇幻的冒险。</p> 
<p>死亡是每个人都必须面对的话题，观看这部影片的时候，看到角色们笑对生死的态度，心中是一种莫名矛盾的心情。</p> 
<h3>12. 穿普拉达的女王</h3> 
<p><a href="https://movie.douban.com/subject/1482072/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/the-devil-wears-prada-poster-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/1482072/">豆瓣 8.2分</a> | 电影 | 美国 | 喜剧 | 2006年</p> 
<p>安妮海瑟薇饰演的Andy Sachs是一位刚毕业的大学生，立志要成为一名记者，但阴差阳错到了大魔头Miranda的时尚杂志社《RUNWAY》做实习生。</p> 
<p>故事就是一个初出社会的青涩女大学生直面满级大魔头的逆袭打怪之旅。安妮海瑟薇真好看，饰演Miranda的演员Meryl Streep演技超神，气场逼人，饰演这个角色实在是非她莫属。</p> 
<h3>13. 邦尼和琼</h3> 
<p><a href="https://movie.douban.com/subject/1308314/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/benny_and_joon-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/1308314/">豆瓣 8.5分</a> | 电影 | 美国 | 喜剧 | 1993年</p> 
<p>Johnny Depp年轻时的作品，他饰演过《剪刀手爱德华》、《加勒比海盗》等特色十分鲜明的角色，在1993年的这部电影中，他的鬼魅笑容就已初现端倪。</p> 
<p>Benny是一位在汽车修理厂工作的员工，他有个妹妹Joon患有智力发展障碍，有天他们遇到一位不速之客，就是Jonny Depp饰演的Sam。Sam的行为非常古怪，有时候像魔术师，有时候像卓别林，经常逗得大家哈哈大笑</p> 
<p>影片涉及亲情，友情，爱情等诸多情感，观看起来比较轻松，Johnny的演出非常棒，是一部可以轻松观看的令人愉悦的电影。</p> 
<h3>14. 坏蛋联盟</h3> 
<p><a href="https://movie.douban.com/subject/30165311/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/the_bad_guys-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/30165311/">豆瓣 7.3分</a> | 电影 | 美国 | 喜剧/动画片 | 2022年</p> 
<p>今年刚上映的美国动画片，故事主角是由风度翩翩的扒手“大坏狼”、见多识广的保险箱窃贼“贪心蛇”、冷静沉稳的伪装大师“美肚鲨”、暴躁易怒的打手“食人鱼”、伶牙俐齿的黑客专家“骇客蛛”组成的大盗集团。</p> 
<p>在一次实施大型盗窃时翻车，随后展开与“正义”一方斗智斗勇的故事。</p> 
<p>影片非常轻松，很适合全家老小一起嘻嘻哈哈观看。</p> 
<h3>15. 星期三</h3> 
<p><a href="https://movie.douban.com/subject/35364243/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Wednesday-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/35364243/">豆瓣 7.8分</a> | 电视剧 | 美国 | 喜剧/悬疑 | 2022年</p> 
<p>近期Netflix上映的话题度很高的剧集，由Tim Burton执导。Tim Burton大名鼎鼎，执导过《大鱼》、《剪刀手爱德华》、《僵尸新娘》等佳作，本作延续了他一贯喜爱的哥特式风格，画风黑暗。</p> 
<p>剧集的背景设定是类似哈利波特式的魔法世界，只是在这里魔法变成异能，有狼人有怪物。主角Wednesday来自黑暗但善良的家族，在异能学校里是个刺头，室友小狼女由Emma Myers饰演，非常好看，只看Emma Myers也足够了。</p> 
<p>故事整体围绕一个谜题展开，属于比较典型的悬疑解谜类型，节奏不错，背景设定有趣，小演员们表演很赞，是可以轻松观看的剧集。</p> 
<h3>16. RRR</h3> 
<p><a href="https://movie.douban.com/subject/30214145/"><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/rrr-1.jpg" /></a></p> 
<p><a href="https://movie.douban.com/subject/30214145/">豆瓣 7.2分</a> | 电影 | 印度 | 剧情 | 2022年</p> 
<p>今年上映的印度神作，这部“超级英雄式”电影《RRR》 真不愧是打破印度票房纪录的作品，融合搞笑无厘头、血腥暴力、弱者反抗、男女爱情等多种元素于一体，分分钟让我笑到不行。 甚至舞蹈场面也更加现代，非常有趣。长达3小时的电影几乎没什么尿点，除了说剧情跟抗日神剧差不多之外，当作喜剧看还是非常有意思的</p> 
<h2>二、祝大家观影愉快</h2> 
<p>以上为我今年看过觉得适合笑嘻嘻观看的合家欢影剧，希望大家喜欢。</p> 
<p>2022年新出的影剧我将放在下一篇文章介绍，敬请期待哦😘</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 80 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403; 13: TGA, ChatGPT &#x4E0E;&#x82F9;&#x679C;&#x5141;&#x8BB8;&#x7B2C;&#x4E09;&#x65B9;&#x5546;&#x5E97;</title>
        <link>https://justinyan.eth.limo/226462E7-5B19-4C5F-BD47-9BBC94441CCE/</link>
        <guid>https://justinyan.eth.limo/226462E7-5B19-4C5F-BD47-9BBC94441CCE/</guid>
        <pubDate>Tue, 27 Dec 2022 17:20:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Podcast-Cover-v80-1.png" alt="" /></p> 
<p>圣诞快乐呀大家！🎄🎅🎁</p> 
<p>最近中招病倒的小伙伴不少，希望大家阳了的早日康复，没阳的平平安安。</p> 
<p>给大家带来一期“科技快乐星球”，又快又欢乐，走你！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:00 圣诞快乐！🎄祝你平安😘</li> 
 <li>00:03:15 The Game Award 落幕，你爱的游戏获奖了吗？</li> 
 <li>00:12:09 ChatGPT，是好助手还是毁灭人类的 AI？</li> 
 <li>00:28:20 马斯克演示猴子意念打字，颠覆性的脑机接口</li> 
 <li>00:32:39 数据隐私问题频发：蔚来、LastPass 数据泄露事件</li> 
 <li>00:40:37 传苹果将允许第三方 App Store 登录 iPhone</li> 
 <li>00:43:52 苹果计划将印度 iPhone 产量提高两倍，计划 2024 年发布 OLED iPad Pro</li> 
 <li>00:44:57 最近买了什么新设备呢？</li> 
 <li>00:49:06 传微软或明年收购Netflix</li> 
 <li>00:49:45 亚马逊发布全新Kindle Scribe，Kindle中国明年关闭，Z-Lib创始人被捕</li> 
 <li>00:53:21 《阿凡达: 水之道》，《利刃出鞘2》，《三体》动画片</li> 
 <li>00:57:31 片尾曲- Edgerunners主题曲: I Really Want to Stay At Your House</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/KvMY1uzSC1E" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;“I Really Want to Stay At Your House” by Rosa Walton</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>监修: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。 荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB;: Kindle&#x9000;&#x51FA;&#x4E2D;&#x56FD;&#xFF0C;&#x6211;&#x5B66;&#x5230;&#x4E86;&#x4EC0;&#x4E48;</title>
        <link>https://justinyan.eth.limo/93BAC8D2-BDAA-4422-8D99-CD274E78397C/</link>
        <guid>https://justinyan.eth.limo/93BAC8D2-BDAA-4422-8D99-CD274E78397C/</guid>
        <pubDate>Thu, 22 Dec 2022 14:24:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_cover_c.jpg" alt="" /></p> 
<p>昨天我发了这样一条Tweet:</p> 
<p><a href="https://twitter.com/MapleShadow/status/1605437740564156417?s=20&amp;t=i2DSPGbLJdVUx62CetLIFQ"></a></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/kindle_tweet_3-c.png" alt="今年Kindle中国的倒下也是福祸两面──我因此学会了在zlib/libgen之类的地方找书，也学会了把买过的书全部下载下来自己管理，还学会了通过Google Play Books买书然后下载到Kindle的技巧。这样一来，买书看书的途径确实更繁琐了，但是也获得了更多Kindle中国买不到的书。" /></p> 
<p>读书是我很喜欢的娱乐活动，小时候作为<a href="https://www.amazon.cn/b?ie=UTF8&amp;node=2339201071">“盗版软件的受害者”</a>也习惯了阅读电子书。这段圆鼓鼓的CRT显示器的阅读训练使我后来很容易适应各类电子阅读器，普通的电脑屏幕、手机、平板和Kindle，来者不拒。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_1.jpg" alt="" /></p> 
<p>我最喜欢的电子阅读器仍然是Kindle。</p> 
<p>Kindle DX时代我还只能看着同学的机器羡慕不已。后来有了工作，恰逢Kindle迭代迅猛的年代，取消了实体键盘的Kindle 4变得特别小巧，Kindle Touch实现虚拟键盘输入，Kindle Paperwhite加入背光成为后来亚马逊最畅销的Kindle产品。</p> 
<p>Kindle Voyage是我目前觉得性能与重量均衡做得最好的一台Kindle，虽然虚拟按键容易按坏。</p> 
<p>Kindle Oasis是我目前使用的主力阅读器，最近购买的Kindle Scribe尚在路上。</p> 
<p>相比于其他产品，Kindle的优势主要有：</p> 
<ol> 
 <li>硬件: 优秀的屏幕加上巨大的出货量，使得Kindle在供应商有更高的议价权，于是同价位机器里无出其右。Kindle Scribe 10.2英寸的屏幕做到300PPI目前仅此一家。</li> 
 <li>软件: Kindle中国电子书店仍是最大最全的简体中文书店，没有之一。而且iOS/Android App体验优秀，全平台同步阅读进度与笔记。</li> 
</ol> 
<p>但是<a href="https://www.amazon.cn/b?ie=UTF8&amp;node=2339201071">Kindle电子书店准备关闭了</a>，此后Kindle将彻底沦为一个电子阅读器了。</p> 
<p>于是这几个月我做了几件事情，提前为Kindle中国电子书店的倒掉做准备。</p> 
<h2>一、下载所有在亚马逊中国购买的电子书</h2> 
<p>我在Kindle买了不少电子书，所以第一步是把书全部下载下来，建立自己的电子书库。</p> 
<h2>1.1 批量下载</h2> 
<p>推荐使用 <a href="https://github.com/yihong0618">@yihong0618</a> 的开源项目 <a href="https://github.com/yihong0618/Kindle_download_helper">Kindle_download_helper</a>批量下载，使用说明参考仓库首页。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_4.jpg" alt="" /></p> 
<p>这个项目甚至贴心地给出了 <code>--dedrm</code> 的选项直接 DeDRM。DRM是数字版权管理(Digital Rights Management)的缩写，想在其他阅读器比如iPad的iBooks阅读这些书就需要移除DRM。下文提到Calibre安装DeDRM插件可以<a href="https://www.cloudwards.net/remove-drm-from-kindle-books/">参考此文(英文)</a>。</p> 
<h2>1.2 单本下载</h2> 
<p>Kindle的书也可以单本下载，登录亚马逊进入<code>我的账户→管理我的内容和设备</code></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_14.png" alt="" /></p> 
<p>找到想下载的书，点右边的<code>更多操作→通过电脑下载USB传输</code></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_13.png" alt="" /></p> 
<p>下载完所有的书之后，我们就可以建立自己的电子书库了。</p> 
<h2>二、使用Calibre建立自己的电子书库</h2> 
<p><a href="https://calibre-ebook.com/">Calibre</a> 是一个跨平台的<a href="https://github.com/kovidgoyal/calibre">开源</a>的电子书管理工具，它可以转换书本格式，编辑电子书，传送书本到Kindle，还支持很多插件，比如DeDRM，ACSM等，非常方便。</p> 
<p>安装完Calibre之后可以把下载好的电子书全部导进去。建议把Calibre的电子书库设置为iCloud/Dropbox等云盘的目录以便实现多设备同步，在<code>Calibre→Switch/create library</code>菜单进行修改。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_12.png" alt="" /></p> 
<p>Calibre支持DeDRM插件，无感移除DRM，安装方法可以<a href="https://www.cloudwards.net/remove-drm-from-kindle-books/">参考此文(英文)</a>。</p> 
<p>Calibre还有个<a href="https://github.com/janeczku/calibre-web">Web项目</a>可以部署在NAS上使用，不过我没有这个需求，没用过。大概长这样👇</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_5.png" alt="" /></p> 
<h2>三、在其他购书平台购买电子书</h2> 
<p>除了亚马逊，我们还可以在什么书店买书<strong>并下载了阅读</strong>呢？</p> 
<ol> 
 <li><a href="https://readmoo.com/">Readmoo讀墨</a>，台湾的电子书平台。 
  <ul> 
   <li>感谢推友<a href="https://twitter.com/songma">@songma</a>的推荐，我在这里买到了无删减版的《講談社·興亡的世界史》，全套21卷简体版直接砍剩9卷…</li> 
   <li>Readmoo的书不算很多，读者朋友请先搜索自己想买的书，找到了再行充值</li> 
   <li>建议在网站上直接充值“Readmoo 犢幣”，购买后再在Readmoo的App里下载阅读。</li> 
   <li>Readmoo支持多种支付方式，有VISA信用卡就能购买 <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_11.png" alt="" /></li> 
  </ul> </li> 
 <li><a href="https://play.google.com/store/books?hl=en_US&amp;gl=US">Google Play Books</a>最近因为想读<a href="https://book.douban.com/subject/30487115/">这本书</a>只有台湾繁体版，Readmoo也不卖，但是Google Play却有，于是在Google Play购买了。 
  <ul> 
   <li>Google Play买书只要有支持境外支付的信用卡或Paypal就可以。 <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_6.png" alt="" /></li> 
   <li>购买后的书可以在右上角<code>Accounts→Library &amp; devices</code>里下载<br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_9.png" height="200" /></li> 
   <li>选择Books Tab<br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_8.png" height="200" /></li> 
   <li>选中想要下载的书，右下角更多菜单，选择Export<br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Kindle_quit_7.png" height="300" /></li> 
   <li>导出的书有些是EPUB/PDF，但更可能是获得一个ACSM (Adobe Content Server Message)文件。里面没有书的内容，需要使用<a href="https://www.adobe.com/solutions/ebook/digital-editions/download.html">Adobe Digital Editions</a> 来下载。 
    <ul> 
     <li>Calibre也有ACSM插件，不过我没有用过，感兴趣的读者可自行Google试试。</li> 
    </ul> </li> 
  </ul> </li> 
</ol> 
<h2>四、买不到电子书的书籍</h2> 
<p>有些书确实没有电子版。出版社不是公益机构，无法一直出版亏钱的图书。中文电子书又卖得特别便宜，所以出版社的电子出版部门未必会把每一本书都做成电子版。这种就只能买实体书了。</p> 
<p>不过在放弃之前，还可以到类似Z-Lib的地方试一试。虽然上个月<a href="https://www.justice.gov/usao-edny/pr/two-russian-nationals-charged-running-massive-e-book-piracy-website">美国司法部刚宣布</a>在阿根廷抓捕了Z-Lib创始人，但是替代方法还是有的，建议<a href="https://letmegooglethat.com/?q=z+library+alternatives">Google一下</a>。</p> 
<h2>六、赛博时代，数据自己掌控</h2> 
<p>买书找书的问题解决了，书库的问题也解决了。还有一个问题没解决：笔记同步。后续考虑使用第三方软件，连接Kindle导出My Clippings再进行处理。</p> 
<p>最近我们 <a href="https://replay.cafe/">Re:Play Cafe</a> 使用的Revue服务也宣布要关闭了，点Export一直没有收到邮件，好在之前申请了API我还能通过API自己备份。</p> 
<p>但这些年，历史一直在教训我们：<strong>自己的数据必须自己掌握</strong>。</p> 
<p>我的Blog使用Wordpress搭建在自己的VPS上，我的播客亦同。以前我的照片备份使用iCloud + Google Photos两份云端服务，但今年我还是下决心买NAS，至少我自己手里得有一份数据。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; 2022 &#x6211;&#x7684;&#x8BFB;&#x4E66;</title>
        <link>https://justinyan.eth.limo/7F0E5AEE-4FB4-44BE-A8CF-75A3D617CA36/</link>
        <guid>https://justinyan.eth.limo/7F0E5AEE-4FB4-44BE-A8CF-75A3D617CA36/</guid>
        <pubDate>Fri, 16 Dec 2022 15:06:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-cover.jpg" alt="枫影夜读 2022 我的读书" /></p> 
<p>亲爱的读者朋友：</p> 
<p>你好，我是 Justin。</p> 
<p>去年我把一年内读过的书及相关评价写下来<a href="https://justinyan.me/post/4824">发在这里</a>，引起不少读者的兴趣。如今2022年快结束了，是时候分享今年读过的书了。</p> 
<p>2022年无论是外部环境还是我的个人生活都发生了不少事情，可谓瞬息万变，跌宕起伏，感慨万千。<del>而且有些有趣的书，不知道为什么突然哪天就不存在了，所以正在阅读本文的读者，找书时还请各显神通吧，祝你阅读愉快。</del></p> 
<p><em>我读过的书都会在豆瓣上标记(如果豆瓣有)，所以接下来我将以豆瓣的星星表示我的评价。</em><br /> <em>我的评价只代表阅读当下之感受，纯属个人主观臆断，仅供诸君参考。</em></p> 
<h2>一、我的五星好评 ⭐️⭐️⭐️⭐️⭐️</h2> 
<h3>1. 《一九八四》——乔治·奥威尔</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-1.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/5406563/">豆瓣</a> | 小说 | 1949年</p> 
<p>George Orwell (乔治·奥威尔)原名Eric Arthur Blair (埃里克·亚瑟·布莱尔)，1903年出生于英属印度孟加拉管辖莫蒂哈里。后来举家搬回英国居住。生活在那个年代，家境不富裕的奥威尔注定要受到一系列国际动荡、社会历史原因的影响。不管是童年在校期间的遭遇还是后来在英国缅甸当殖民警察的经历，都给奥威尔留下深刻的印象。后来他离开殖民警察部队，四处流浪，写了一些小说但无人愿意出版。后来终于以奥威尔笔名发表第一部作品《巴黎伦敦落魄记》。1936年西班牙内战爆发，奥威尔作为国际志愿者之一参加西班牙共和军，支援反佛朗哥的西班牙内战。此后遭到斯大林政府的清查和追杀。之后不久又是二战全面爆发，奥威尔在这人生动荡几十年写下不少作品。1949年《一九八四》出版后，奥威尔于次年在伦敦大学医院去世，死于肺结核。</p> 
<p>十多年前我第一次阅读这部作品的时候，只觉得作者很厉害，预言之准确令人震惊。今年再读此作，恰逢国庆后广州新冠肆虐，全国防疫政策尚未放开之时，读来再次感慨，只是两次感慨有着微妙的不同，令人唏嘘。</p> 
<p>这种感觉就像2020年1月在武汉读加缪的《鼠疫》，2022年4月又在上海读《一九八四》一样。</p> 
<p>如今防疫政策已经放开，北京与广州的朋友们“阳报”频传，这种时候进行社会观察，读下面一本书可能也十分应景：弗洛姆的《逃避自由》。</p> 
<h3>2. 《逃避自由》——艾里希·弗洛姆</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-2.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/26418475/">豆瓣</a> | 人文社科 | 1941年</p> 
<p>我想，在防疫政策放开之前，人们对“拉去方舱”的恐惧要远大于“病魔缠身”的担忧吧。2022年国庆后，广州新冠肆虐之际，我也曾不幸被“判”密接，<a href="https://justinyan.me/post/5346">被拉去集中隔离</a>，虽比方舱要好些，但我也确实不想再来第二次。</p> 
<p>不过新闻发布放开之后，相信诸位在各种邻居群里、微博、朋友圈等地会看到有各种针锋相对的言论。这种带有二元对立的乾坤倒转在人类历史上并不少见，但置身其中仍然倍感魔幻。</p> 
<p>今年读《逃避自由》的时候这些事情尚未发生，但以史为鉴，却仍不停重蹈覆辙的感觉还是能令人惊奇。这也许是人类的缺陷──容易忘记，也许是人类的优点──放眼未来。</p> 
<p>弗洛姆这部作品出版于1941年，他一生致力于修改弗洛伊德(Sigmund Freud)的学说，用以分析两次世界大战后的社会。新教改革到资本主义带来“个人自由”，但社会结构变更却相对滞后，人们在“挣脱”中世纪传统束缚的同时，也失去了传统的保护。获得“自由”的现代人被迫作为齿轮服务于一台更大的社会机器，这种不可调和的矛盾必然导致人们心理结构的变化。社会运转的单位是人，研究社会多数人的心理结构，就能解释现代人普遍存在的焦虑与孤独。</p> 
<p>我的书评: <a href="https://justinyan.me/post/5313">枫影夜读 #182 弗洛姆 -《逃避自由》</a></p> 
<h3>3. 《可能性的艺术》——刘瑜</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-3.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35819419/">豆瓣</a> | 人文社科 | 2022年</p> 
<p>前段时间有谣传这本书要下架，我觉得十分奇怪，因为刘瑜在《可能性的艺术》中已经完全避开了所有可能触及“下架”的讨论。</p> 
<p>这本书根据刘瑜在“看理想”做的一个系列课程的讲稿整理，节目制作过程应该已经“集思广益”，避开了这些东西。另外这个世界有大约200个国家和地区，例子根本举不完。</p> 
<p>今年我也阅读了一些很有意思的书籍，它们曾经出现在豆瓣这个网站，但现在已经消失了。所以也许这个世界的运作规律更接近阿迪达斯的广告语呢:</p> 
<blockquote> 
 <p>Impossible Is Nothing.</p> 
</blockquote> 
<p>这本书是刘瑜今年出版的新书，行文平易近人，在阅读过程中总能发人深省，阅读体验很棒。我第一次读她写的书是09年，读的是《民主的细节》。那时候我就很喜欢刘瑜，没想到一下子十三年过去了，岁月如梭，刘瑜仍在写作，文字锋芒尚存。很好。</p> 
<h3>4. 《工作、消费主义和新穷人》——齐格蒙特·鲍曼</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-4.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35593780/">豆瓣</a> | 人文社科 | 1998年</p> 
<p>2020年新冠在全球大流行之际，也是全球股市高涨之时。那会我觉得这个世界这么反直觉的吗？新冠影响大家工作，餐饮业、旅游业等大受打击，股市反而还能大涨？</p> 
<p>2022年大家应该深切感受到了全球市场的衰退。今年写日本泡沫经济、美国大萧条的书似乎又重回热榜。我倒是对工作伦理产生了兴趣。我们的生活中有太多默认“本来就是”的前提，比如说勤奋工作，比如说人不能没有工作。但现实是这个世界有很多种不同的活法，比如我们播客这一期: <a href="https://fyfy.fm/episode/60">Vol. 60 Sofish: 35岁不工作了，中场休息时他是怎么想的？</a>，嘉宾目前选择的就是有点“反常规”的生活方式。</p> 
<p>那么“常规”是从哪里来的呢？现在我们习以为常的“工作伦理”是从什么时候开始的呢？“自古以来”？我抱持怀疑。齐格蒙特·鲍曼在1998年写的这本书里提到，当下流行的工作伦理是随着工业社会兴起的。工厂资本家，新教伦理，政府等多方都希望借“新工作伦理”为自己获利。</p> 
<p>第二个疑问是“消费社会”是怎么产生的？在<a href="https://justinyan.me/post/3421">《后物欲时代的来临》</a>中郑也夫描述了这个消费社会，但消费社会产生之前呢？齐格蒙特·鲍曼称之为“生产社会”。从生产社会到“消费等于经济增长”，“经济增长”等于“发展”，我们的世界经历了多少有意思的转变啊。</p> 
<h3>5. 《效率脑科学》——戴维•罗克</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-5.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35688547/">豆瓣</a> | 心理学 | 2009年</p> 
<p>《效率脑科学》是今年我读过的第一本想给五星好评的书。原作名为Your Brain at Work: Strategies for Overcoming Distraction, Regaining Focus, and Working Smarter All Day Long。以脑神经科学的方式讲述我们在工作中会遇到的多种困境，并一一提出解决方案。</p> 
<p>作者David Rock来自澳大利亚，现居美国。本书原名为Your Brain At Work，主要讲述的是工作场合下的问题，对我来说也十分实用。我在阅读过程中一直有一个想法：作者肯定不止是个学者吧，他怎么能对工作中遇到的问题了解得这么深入？后来发现David不仅拥有Middlesex University脑神经科学博士学位，并且还创办了NeuroLeadership这家公司，担任公司CEO。这就难怪David对工作中的各种问题了如指掌了。</p> 
<p>我的书评: <a href="https://justinyan.me/post/4930">枫影夜读 #181 David Rock -《效率脑科学》</a></p> 
<h2>二、我的四星推荐</h2> 
<h3>1. 《哈利·波特与魔法石》——J.K. 罗琳</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-6.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35610506/">豆瓣</a> | 小说 | 1997年</p> 
<p>小时候哈利波特电影挺流行的但我看不懂，后来虽然经常见到各种哈利波特衍生作品、广告之类的，但并一直也没成为哈利波特粉丝。不过我一直在读书这件事情上就是不喜欢就放下的习惯，所以也不以为意。</p> 
<p>最近想试着阅读下这部经典佳作，没想到颇为好读。J.K. Rowling创作的哈利波特系列一共有7部，我读完的是第一部《哈利·波特与魔法石》。</p> 
<p>本作讲述了一个完整的故事，从哈利波特的身世开始，到霍格沃茨入学，到他经历的一系列事件。有一个核心悬念一直埋在里面，仅从悬念谜题的设计来说已经十分出彩。但 J.K. Rowling 最令人佩服的还是她对魔法世界的塑造。各种各样的魔法，道具，物种，还有激动人心的魁地奇“足球”比赛，我每每畅游其幻想世界之际，总能回想起金庸小说里的诸般设定。无论人物塑造还是魔法设定，J.K. Rowling 绝对给读者们留下了奇妙的幻想世界。</p> 
<h3>2. 《幸福的要素》——泰勒·本-沙哈尔</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-7.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/36097680/">豆瓣</a> | 心理学 | 2021年</p> 
<p>作者 Tal Ben-Shahar (泰勒·本-沙哈尔)是一位以色列裔美国人，曾在哈佛大学教授积极心理学课程，写过一系列积极心理学的书籍，比如2007年的《幸福的方法》(Happier: Learn the Secrets to Daily Joy and Lasting Fulfillment)。</p> 
<p>2021年作者就新冠疫情对个人心理的影响写作本书 <em>Happier, No Matter What: Cultivating Hope, Resilience, and Purpose in Hard Times</em>，简体译为《幸福的要素》，副标题: 获得艰难时刻的希望、坚韧和意义。</p> 
<p>这是一本挺薄的小书，作者用 SPIRE 模型分别把幸福展开为5个核心要素：精神幸福(spiritual wellbeing)、身体幸福(physical wellbeing)、心智幸福(intellectual wellbeing)、关系幸福(relational wellbeing)、情绪幸福(emotional wellbeing)。</p> 
<p>这五个方面在多本心理学书籍均有提及，不算什么新鲜知识。所以一开始读难免有鸡汤之嫌，但慢慢发现作者写得很有意思，道出了我之前没想到的东西。比如身体与精神不能分开，如果身体没休息好精神肯定也积极不到哪里去。这样的道理虽然很容易懂但也很容易被我们忽略。读一本书不是必须同意作者的理论和观点，也不需要全盘吸收，只要能从一本书中获得一点什么，那读这本书就有了价值。</p> 
<h3>3. 《筚路维艰》──萧冬连</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-8.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/26171466/">豆瓣</a> | 人文社科 | 2014年</p> 
<p>这本书2013年出版的时候名为《国步维艰》，2014年改名《筚路维艰》，副标题都是中国社会主义路径的五次选择。</p> 
<p>小时候我很喜欢读历史书，中国各个朝代的历史，这边打来那边打去，春秋战国始皇统一，朝代更迭，直至今日。中国的历史一直发生在这片土地上，疆域有大有小，但分久必合合久必分，核心地理位置基本在那里。但我唯独不喜欢读的是中国近代史。</p> 
<p>小时候以为是清末以来国力衰弱，后来才明白，是近代以来的历史读物加工痕迹过重，有点像一杯号称100%纯天然的橙汁，其实是纯人工合成的粉剂冲泡而成，食之无味。</p> 
<p>萧冬连2013年写的这本《筚路维艰》却没有大话空话，所写之史料颇为客观，尽量不带政治立场的偏颇。全书共分五章，从建国开始到改革开放，五次影响中国的重大转变，前因后果均在其中。虽然简体出版物必有大量限制，但读罢本书，我对那些重大决策的原因又有了进一步理解。</p> 
<h3>4. 《下班后开始新的一天》──柳韩彬</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-9.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/36021556/">豆瓣</a> | 2021年</p> 
<p>这是一本很有趣的书，作者是韩国的一位 YouTuber 柳韩彬，这是她的 <a href="https://www.youtube.com/@HANBINISTUDYLOG/featured">YouTube Channel</a>。白天她是一位兽医，晚上利用业务时间做视频，主要是关于时间管理的主题。</p> 
<p>柳韩彬并不是一开始就选择把 YouTuber 作为自己的副业，而是尝试了很多种不同的渠道，包括做时间管理的App，写博客等等。这本书是她这些年来如何利用业余时间寻找自己真正感兴趣的事业的总结，不仅回顾了她的心路历程，也提供了非常具体的实践方法。</p> 
<p>比如柳韩彬使用 OW64 (又称曼陀罗九宫格)来寻找目标。这个方法并不是她发明的，最早由日本的松村寧雄发明，后来日本的著名棒球运动员大谷翔平有推荐，甚至日本的山口拓朗还写过一本书《九宫格写作法》，就是 OW64 的方法。我之前读过《九宫格写作法》，其实并不适合我，所以未曾留意。柳韩彬把这个方法用在发展目标上我觉得还满不错的。</p> 
<p>这本书把一天分为“白天上班时间”和“晚上下班时间”，比较适合朝九晚五的工作。像我这种号称“弹性”实则 7x24h 微信待命的工作就需要充分发挥想象力才能把她的方法修改成适用于我的。</p> 
<p>目前我从这本书里学到的一个实践是“每日计划表”。因为我有做 Bullet Journal (子弹笔记)的习惯，所以把作者介绍的每日计划表放进去实在太适合不过了。</p> 
<p>所以不管你是朝九晚五的工作还是充满弹性的工作，读一下这本书还是很不错的，希望你能从中获得一些启发。</p> 
<h3>5. 《毫无意义的工作》──大卫·格雷伯</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-10.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35929434/">豆瓣</a> | 人文社科 | 2018年</p> 
<p>前阵子豆瓣霸榜的一本书，可能有不少读者已经通过各种渠道知道或者读过了。</p> 
<p>这本书是 David Graeber 根据他2013年在 <em>Strike!</em> (《罢工》杂志)上发表的<a href="https://theanarchistlibrary.org/library/david-graeber-on-the-phenomenon-of-bullshit-jobs-a-work-rant">一篇文章</a>发展而来。当时那篇文章指出我们的世界有很多工作岗位其实可有可无，即使消失了也不会有任何影响。于是读者们纷纷来信向他吐苦水，介绍自己的工作如何如何。</p> 
<p>我是在2020年听 <a href="https://podcasts.apple.com/cn/podcast/blow-your-mind-bym-2022/id1516595082?i=1000566055699">Blow Your Mind 这期播客</a>的时候第一次听说这本书，没想到今年出了简体版，于是读了。</p> 
<p>我觉得最有意思也最有用的部分不是 David 本人对 Bullshit Jobs 的阐述，而是他的读者给他来信介绍的各种形形色色的岗位，以及读者们为什么觉得这些工作在浪费生命。我们都知道隔行如隔山，每个行业各有不同，但能从一本书里读到这么多行业的苦水还是很有意思的。</p> 
<p>另外 David 在书里提到一个核心观点我觉得很有意思，即人类存在的意义是对这个世界产生影响。</p> 
<blockquote> 
 <p>一个人一旦停止产生对世界有意义的影响，那这个人就不存在了。</p> 
</blockquote> 
<h3>6. 《送你一颗子弹》──刘瑜</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-11.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/4238362/">豆瓣</a> | 散文杂记 | 2010年</p> 
<p>读完刘瑜的《可能性的艺术》之后颇为想念当年读《民主的细节》的感觉，依稀想起那会还有一本叫《送你一颗子弹》的，于是找来读了。</p> 
<p>这本书收录的都是05-09年写的博客与专栏文章，风格轻松幽默，篇幅长短不一，几乎没什么严肃的讨论，我还挺喜欢的。</p> 
<p>那段时间刘瑜在美国上学，做教师，从纽约到波士顿，又从波士顿到英国。国外生活的碎片在她笔下有时候以小见大，有时候又像小女孩的幽怨。真是可爱。</p> 
<h3>7. 《清醒地活》──迈克尔·辛格 (Michael A. Singer)</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-12.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35581777/">豆瓣</a> | 心理学 | 2007年</p> 
<p>Michael Singer 是个很有意思的人，1947年出生，1971年在佛罗里达大学获经济学硕士学位，读博士期间开始接触瑜伽与冥想。1974年开始写冥想、正念相关的书，1975年创办 <a href="https://tou.org/">Temple of the Universe</a> 教授冥想相关的课程。</p> 
<p>1981年创办 Medical Manager 公司，1997年上市，2002年被 WebMD 收购，那会正是互联网泡沫时期，Michael 赚得盆满钵满，2005年离开公司。离职后还身陷前公司投资诈骗案件被罚款 250 万美元，他的人生还挺跌宕起伏的。</p> 
<p>《清醒地活》是 Micheal 2007年出版的，原作名是 The Untethered Soul，直译为“不被束缚的灵魂”。这本书没有正面讲正念、冥想，但其心理分析却扎根于此，所以有正念练习经验的小伙伴读起来应该更能感同身受。除了“为什么我们脑子里无时无刻有这么多声音”以外，这本书我最喜欢的部分是第三、第四部分。</p> 
<p>每个人内心都会有不想对外暴露的部分，这很正常，所有人都需要自我保护。但是如果因此而筑起高墙，反而让自己关起所有门窗，那就有点得不偿失了。遗憾的是，并不是所有人都能很轻易地认识到这点。我觉得这本书如果能点醒更多人的话，那也将十分有价值。</p> 
<h3>8. 《纳瓦尔宝典》──埃里克·乔根森</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-13.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35876121/">豆瓣</a> | 人文社科 | 2020年</p> 
<p>Eric Jorgenson (埃里克·乔根森)根据硅谷传奇投资人 Naval Ravikant 的 Tweets，播客和访谈整理而成的一本书。原作名 <em>The Almanack of Naval Ravikant: A Guide to Wealth and Happiness</em>，直译应该是《纳瓦尔年鉴: 财富与幸福指南》。</p> 
<p>Eric说灵感来自于他很喜欢的几本书：<em>Poor Charlie’s Almanack</em>(《穷查理年鉴》), <em>Principles</em>(《原则》), <em>Zero to One</em>(《从零到一》), 以及 <em>Seeking Wisdom</em>。</p> 
<p>整本书读下来跟我之前翻译的<a href="https://justinyan.me/post/4911">凯文·凯利70岁生日写的103条人生忠告（中文翻译）</a>有相近之处，但作者对纳瓦尔的观点的阐发要更多一些。</p> 
<p>其中有一句我还蛮喜欢的: </p> 
<blockquote> 
 <p>我的体能教练耶日·格雷戈雷克是个非常聪明的人。他总是说：“选择简单模式，人生会越来越困难；选择困难模式，人生会越来越简单。”</p> 
</blockquote> 
<h3>9. 《克莱因壶》──冈岛二人</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-14.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/33658616/">豆瓣</a> | 小说 | 1989年</p> 
<p>冈岛二人这个名字有意思，因为真的是两个人合著共用的笔名，他们分别是井上泉和德山諄一。从1981年开始，两人以此笔名合著推理小说，知道1989年《克莱因壶》出版后散伙。</p> 
<p>《克莱因壶》这部推理小说很有趣，故事设定的背景是近未来，发生的主要环境是真正的全身沉浸VR技术。类似的科幻设定在80年代不算少见，但近两年VR设备距离我们越来越近了，所以这部小说自然也重新获得大家的关注。</p> 
<p>好的小说家会把环境作为设定的一部分，悬疑推理作家更是常常把环境作为盲点。上文提到 J.K. Rowling 的哈利波特也不乏悬疑因素，而本作中作者更是从第一幕开始环环相扣，第二幕的推进既有新鲜体验的探索引人入胜，又有充足的悬念让读者欲罢不能。情节推进流畅，到第三幕进入大决战层层反转更是令人大呼过瘾。</p> 
<p>今年读的推理小说不多，但《克莱因壶》确是佳作无疑。</p> 
<h3>10. 《贪婪的多巴胺》── 丹尼尔·利伯曼/迈克尔·E.朗</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-15.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35545272/">豆瓣</a> | 心理学 | 2018年</p> 
<p>Daniel Z. Lieberman (丹尼尔·利伯曼)是乔治华盛顿大学精神病学和行为科学临床教授，Michael E. Long (迈克尔·E.朗)则是该大学的讲师，《贪婪的多巴胺》是他们合著的一本关于“多巴胺”(Dopamine)在人类精神与行为的作用的书。</p> 
<p>不知道从什么时候开始，中文互联网关于多巴胺存在一种误解，即认为大脑分泌多巴胺等于分泌“快乐物质”。其实大脑有“愉悦系统”与“激励系统”，多巴胺并不让人快乐，多巴胺只是“鼓励人们做出某些事情”，多巴胺促成未来要发生的事情，不管其结果是否令人愉快。</p> 
<p>这两年我读的心理学科普作品都有提及类似的原理，但日常与朋友交流的过程还是发现会有这样的误解。</p> 
<p>原作名是The Molecule of More: How a Single Chemical in Your Brain Drives Love, Sex, and Creativity—and Will Determine the Fate of the Human Race，直译为《想要更多的分子: 你脑袋里的这种化学物质如何驱使爱、性与创造，以及如何决定人类的命运》。</p> 
<p>此前在<a href="https://justinyan.me/post/4196">《人生十二法则》</a>有提到血清素对龙虾是否自信的作用，多巴胺对人类亦极其重要，尤其是当我们面对巨大的不确定性时，有时候人们会表现得躁动不安，也有时候人们会表现得万念俱灰。一个人如果失去了想做任何事情的动力将是非常可怕的事情。所以读懂我们脑子里多巴胺的原理非常有用。</p> 
<h3>11. 《黎明之街》──东野圭吾</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-16.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/27178063/">豆瓣</a> | 小说 | 2007年</p> 
<p>有一段时间没读东野圭吾的小说了，今年读了两本，此为其一。原作连载于2004~2007年，连载结束后发行单行本。据说灵感来自南方之星的歌曲《LOVE AFFAIR ～秘密约会～》，写的是有一个妻子女儿的男主角渡部出轨公司的派遣员工（类似于“外包”）秋叶的故事。</p> 
<p>东野圭吾向来擅长披着推理小说的外衣去探索各种不同的主题，什么脑神经科学，穿越时空，平行世界，互换身体，超级人类，少年犯罪等等稀奇古怪的内容他都涉猎过。有些主题写得颇具创意有些则略嫌寡淡。</p> 
<p>外遇出轨这个主题似乎也是东野圭吾第一次尝试，对男主角的矛盾心情，出轨后的侥幸心理，怕被发现的坐立不安等等各种细节简直令读者身临其境。这也许是小说最基础的优势：通过阅读体验现实生活中的不可能。</p> 
<h3>12. 《饥饿的女儿》──虹影</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-17.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/26727035/">豆瓣</a> | 小说 | 1997年</p> 
<p>朋友介绍这部小说给我的时候，令他印象深刻的是其中对于女性欲望的描写。这种直白的文字在1997年应是特别不寻常的。</p> 
<p>可能我身处这个时代（2022年），只觉此类表达已司空见惯。所以我对《饥饿的女儿》中关于主角与历史老师发生的爱与性并不特别关注，也未觉“震撼”。我最喜欢的是这部自传小说关于重庆贫民区在三年饥荒、文革时期的背景下翔实而生动的细节。</p> 
<p>我的书评: <a href="https://justinyan.me/post/4915">枫影夜读 #180 虹影 -《饥饿的女儿》</a></p> 
<h3>13. 《贫穷的本质》──Abhijit Banerjee/Esther Duflo</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-18.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/30161884/">豆瓣</a> | 人文社科 | 2011年</p> 
<p>穷人是因为懒才穷的吗？所谓“贫穷陷阱”理论在现实生活中存在的吗？</p> 
<p>MIT的经济学教授 Abhijit V. Bannerjee 和他同为 MIT 教授的妻子 Esher Duflo 合著的这本书──Poor Economics: A Radical Rethinking of the Way to Fight Global Poverty──试图为现行的经济学理论寻找证据，证明或证伪某些专家对“大问题”的“大思考”。</p> 
<p>我的书评: <a href="https://justinyan.me/post/4901">枫影夜读 #179 – 《贫穷的本质》</a></p> 
<h3>14. 《倦怠社会》──韩炳哲</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-19.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/33442259/">豆瓣</a> | 哲学 | 2010年</p> 
<p>这本书我读完之后的感觉大概是“每个汉字我都认得但是拼在一起就不知道他在说什么了”的样子。德国的哲学作品翻译成中文往往有这样的特点，去年的总结里提到的马尔库塞的《单向度的人》，等闲之辈还是不要轻易尝试。</p> 
<p>不过《倦怠社会》是比《单向度的人》好读得多的，至少是能读懂作者想要表达的意思的。书本身不厚，只是本薄薄的小册子。英文名为: The Burnout Society。</p> 
<p>这个世界每时每刻产生的信息太多，人类的大脑为了减轻负荷并不会分析所有的信息，于是产生了熟视无睹。我觉得哲学家最令人佩服的地方就在于他们对一切的好奇与洞察。《倦怠社会》解释了当下我们熟视无睹的日常：追求功绩、追去增长，“在现代世界，一切神性和节日已不存在。世界成了一座百货商店。”</p> 
<p>虽然碍于行文措辞，或晦涩术语的缘故，本作阅读难度较大，但结合《工作、消费主义和新穷人》中关于近现代“工作伦理”的讨论，以及《毫无意义的工作》中更“平易近人”的阐述一起阅读，还是很有意思。</p> 
<h3>15. 《没有女人的男人们》──村上春树</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-20.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35693950/">豆瓣</a> | 小说 | 2014年</p> 
<p>《没有女人的男人们》是村上2014年发行的短篇小说集，共收录了七个故事。大部份于2013年发表在《文艺春秋》之类的刊物。唯最末一篇同名小说《没有女人的男人们》是为本辑而作。这个标题取自海明威的短篇小说集：Men Without Women。</p> 
<p>我在看了电影《驾驶我的车》之后买了本书。电影剧本改编自其中几个短篇，影片名则取自第一个短篇《Drive My Car》。影片故事有点杂糅缝合的意思，但氛围表现不错，我很喜欢。红色的萨博小车行驶在濑户内海蜿蜒的公路上，背景音是男主角的话剧台词。推开旧式旅馆的木窗，可以看到波光粼粼的景色。挺舒服。</p> 
<p>我的书评: <a href="https://justinyan.me/post/4893">枫影夜读 #178 村上春树 – 《没有女人的男人们》</a></p> 
<h3>16. Sony Design: Making Modern</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-21.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/26336791/">豆瓣</a> | 工业设计 | 2015年</p> 
<p>几年前在日本旅行时恰逢位于东京银座的 Sony Building 准备关闭拆除，当时索尼开放大楼给群众参观，有各种各样的展品，非常受欢迎。但可惜的是我们到达的时候已经是最后一天，只有受邀请的人才允许进去。</p> 
<p>于是心存遗憾，一直记着这事情。今年买了这本出版于2015年的 Sony Deisgn，用高质量的印刷展示了索尼几十年来生产的各种电子产品。</p> 
<p>索尼的产品线多如牛毛，我接触到的不过凤毛麟角，Walkman，Playstation大概是最常见的，剩下的各类产品琳琅满目，尽收本书，索尼粉丝可以收藏一下。</p> 
<h3>17. 《柏林日记》──威廉·夏伊勒</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-22.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35193637/">豆瓣</a> | 日记 | 1941年</p> 
<p>William Shirer 1903 年出生于美国芝加哥，二战前夕他在德国做美国报社的记者和播音员。历史上记载的二战是从1931年德国入侵波兰开始，到1945年日本宣布投降结束。这本书是夏伊勒记者 1934-1941 年间在德国的日记。</p> 
<p>历史书写是纯粹的事后之见，仿佛一切历史事件都是那么井然有序，以某某事件为标记，“爆发”了某某某战争。但身处其中的人却未必能看到这么多“爆发”。甚至在德国入侵法国之后，在战争前线，在德国柏林，一切都是那么歌舞升平，鸡犬相闻。这边在打仗，那边在游艇开Party。</p> 
<p>夏伊勒的日记让我们跟随一个“普通记者”的视角，亲历二战前期，甚至近距离观察希特勒，这位改变历史的风云人物。这份日记在2022年读来，意味颇为微妙，毕竟近些年国际大事瞬息万变，捧卷时每每有镜花水月之感。</p> 
<h3>18. 《Measure What Matters》──约翰·杜尔</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-23.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/30137889/">豆瓣</a> | 2017年</p> 
<p>John Doerr 2017年出版的这本 Measure What Matters 早有耳闻，简体由中信出版，书名为<a href="https://book.douban.com/subject/30396635/">《这就是OKR》</a>（简体出版社编辑的起名倾向总是令人惋惜）。英文版读下来十分流畅，生僻词不多，推荐阅读英文版。亚马逊中国有售，配合 Kindle Wordwise 阅读会更轻松一些。</p> 
<p>我的书评: <a href="https://justinyan.me/post/4886">枫影夜读 #177 John Doerr – Measure What Matters</a></p> 
<h3>19. 《运动解剖学图谱(第3版)》──顾德明/缪进昌/丁誉声</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-24.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/25848402/">豆瓣</a> | 2013年</p> 
<p>因为健身，想了解下身体各个肌肉群，尤其各个主要关节的运动平面与肌肉的关系，找了半天发现运动科学的中文材料稀少，这本图谱是我找到还蛮详细的一本。</p> 
<p>基本都是解剖图，有健身习惯的小伙伴可以参考一下。</p> 
<h3>20. 《你一生的故事》──特德·姜</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-25.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/34672178/">豆瓣</a> | 小说 | 2019年</p> 
<p>特德·姜 (Ted Chiang) 是一位华裔美国科幻小说家，他的作品多次获得星云奖、雨果奖等奖项。但知道这位作家还是因为改变他的小说而成的电影──《降临》。</p> 
<p>《你一生的故事》就是电影《降临》的原作。这是一部中篇小说，与以视觉和台词演出为主要信息载体的电影不同，小说的文字天然会附带更多细节与讨论。这点所有基于小说改编的影视作品，必然会在不同程度上损失一些细节。而如果有人不作取舍地把小说照搬上荧幕，恐怕也不是是一部好电影。所以这是两种不同的信息呈现形式之优劣所在。</p> 
<p>我阅读的这本书是特德姜的小说选集，收录了八部作品，除了《你一生的故事》，还有《巴比伦塔》、《领悟》、《除以零》、《七十二个字母 》、《人类科学之演变》、《地狱是上帝不在的地方》和《赏心悦目》。</p> 
<h3>21. 《“活在当下”指南》──萨姆·哈里斯</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-26.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/35706913/">豆瓣</a> | 心理学 | 2014年</p> 
<p>美国的播客主播 Sam Harris (萨姆·哈里斯)关于冥想、正念的代表作: <em>Waking Up</em>。我在听《Steve说》的<a href="https://www.xiaoyuzhoufm.com/episode/61ecd4f1c495915ea61938f9">这期播客节目</a>时知道了这本书，嘉宾 Jess 和学霸猫是这本简体版的译者。节目中也讲到了编辑对书名、标题、内容审查等多处地方的“取舍”，满有趣的。</p> 
<p>对我来说，<em>Waking Up</em> 以不带宗教和超自然解释的方式让我接触到了正念、冥想，让我学习了一段时间的呼吸观察。只有亲自去体会才知道正念、冥想对自己有没有用处，对我来说，正念训练的好处还是显而易见的。</p> 
<p>正念不是什么都不想，而是当我的脑袋不断发散不断冒出各种念头的时候，能自然而然地把它拉回到我希望它注意的地方。通过这种注意力掌控的锻炼，能帮助我们以亲身实践的方式去理解大脑的运作。虽然无法一蹴而就，立地成佛，但一旦掌握注意力操控方法，至少能从眼花缭乱的纷繁世界中脱开身来，把我们宝贵的注意力用在最应该使用的事情上。</p> 
<h3>22. 《黑天鹅》──纳西姆•尼古拉斯•塔勒布</h3> 
<p><img decoding="async" height="320" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/2022-Books-27.jpg" /></p> 
<p style="text-align: center"><a href="https://book.douban.com/subject/6854525/">豆瓣</a> | 2007年</p> 
<p>Nassim Nicholas Taleb (纳西姆•尼古拉斯•塔勒布)是个很有趣的人，去年我读了他写的《随即漫步的傻瓜》之后，知道他还有部代表作《黑天鹅》，于是便找来看了。</p> 
<p>基本上一整本书都在讲《序言》里的东西，即“在发现澳大利亚黑天鹅之前，所有的欧洲人都确信天鹅全部是白色的。”。</p> 
<p>始于2020年的全球新冠大流行显示是近几十年来的黑天鹅事件。我想经过这几天大大小小的“突发”、“小概率”、“百年一遇”之后，大家可能会发现“黑天鹅”比想象的要常见。</p> 
<h2>三、其他</h2> 
<p>还有一些看过但不到四星以上的书，也在下文一一列出，以供读者参考。</p> 
<ol> 
 <li><a href="https://book.douban.com/subject/35792850/">《被抹去的一家》</a>，根据1996-1998年日本发生的“北九州监禁杀人案”写成，案件非常可怕，令人致郁。主犯不仅使用语言暴力PUA，而且使用电击惩罚，社会隔绝，指使谋杀等手段，让被害人一家自相残杀，并分尸销毁证据。读来令人瑟瑟发抖。因为这个案件过于可怕读来令人不适，所以不推荐阅读😂。</li> 
 <li><a href="https://book.douban.com/subject/25745879/">《物种起源》</a>，达尔文1859年发表的重要著作，是当年最具争议的作品之一。原作全称On the Origin of Species by Means of Natural Selection, or the Preservation of Favoured Races in the Struggle for Life，即論處在生存競爭中的物种之起源（源於自然選擇或者對偏好種族的保存）。出于对历史重要作品的好奇而读，但发现若不是生物学专家有大量内容根本不知所云，更遑论以现代生物学角度评判。本作之撰写风格较学术化，并不十分轻松有趣，故不作推荐。</li> 
 <li><a href="https://book.douban.com/subject/35479856/">《无名之町》</a>，东野圭吾2020年以新冠防疫为背景的应景之作。本作谜题设计一般，套路较为常规，最终解谜方式略显敷衍，在东野圭吾的作品中属于下乘之作，故不作推荐。</li> 
 <li><a href="https://book.douban.com/subject/35240614/">《九宫格写作法》</a>，日本山口拓朗总结的写作方法，基于上文提及的 OW64，对写作主题进行扩展。该方法最早由松村寧雄提出，山口拓朗将其运用在写作这件事情上。因为不是太具有创意且我需要精炼写作不是扩充字数所以不太需要，不作推荐。</li> 
 <li><a href="https://book.douban.com/subject/34899655/">《创意选择》</a>，苹果前员工 Ken Kocienda 所写，回忆当时在苹果参与 Safari，iPhone 等苹果重要早期研发的故事。读起来有些意思，但意思不是很多，故不作推荐。</li> 
 <li><a href="https://book.douban.com/subject/3109981/">《体适能基础理论》</a>，为了学习运动科学而读，但这本书面向非常入门的科普，内容乏善可陈，故不作推荐。</li> 
</ol> 
<h2>四、祝大家平安</h2> 
<p>最近国内疫情政策放开，北京广州有不少朋友确诊。虽说奥密克戎目前轻症更多，但毕竟发烧、喉咙痛、全身无力这样的症状还是很难受的。</p> 
<p>所以，希望大家都能平平安安，顺利渡劫吧。</p> 
<p>顺颂时祺</p> 
<p>枫影 Justin Yan</p> 
<p>2022年12月15日<br /> 于广州</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 79 &#x4E3A;&#x4EC0;&#x4E48;&#x201C;&#x6211;&#x4EEC;&#x201D;&#x4E0D;&#x542C;&#x65B0;&#x6B4C;&#x4E86;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/DCC55C70-01A8-4AF9-BC12-DF8281B5B815/</link>
        <guid>https://justinyan.eth.limo/DCC55C70-01A8-4AF9-BC12-DF8281B5B815/</guid>
        <pubDate>Tue, 13 Dec 2022 10:30:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/12/Podcast-Cover-v79-c.png" alt="" /></p> 
<p>本期节目我们聊音乐，久违的人文话题，当然也少不了科技的声音，全程高潮迭起，层层递进(FàngFēi)，超长待机。</p> 
<p><em>P.S. 本期自力的音轨出了点小故障，部分采用了备用音轨</em><br /> <em>P.P.S. 片尾曲来自《故事FM》的前声音设计总监彭寒的作品──《摩的士高 More Disco》</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00:56 本期主题的由来</li> 
 <li>00:02:27 何为“新歌”？</li> 
 <li>00:06:15 我们听歌的类型</li> 
 <li>00:10:52 爱听的歌留在18岁</li> 
 <li>00:13:45 第一次听流行音乐</li> 
 <li>00:17:17 最近一次购买实体唱片</li> 
 <li>00:21:37 黑胶的那些事</li> 
 <li>00:25:56 流媒体与数字专辑</li> 
 <li>00:32:24 经典老歌屠榜的现象</li> 
 <li>00:31:48 (录音故障-备用音轨)</li> 
 <li>00:35:48 欧美音乐市场的小观察</li> 
 <li>00:38:18 新专辑面向的是年轻人？</li> 
 <li>00:42:15 商业行为对音乐作品的影响</li> 
 <li>00:47:04 用心做音乐却很难养活自己</li> 
 <li>00:52:44 “诗人不幸诗家幸”</li> 
 <li>00:56:13 独立音乐人的处境</li> 
 <li>00:59:00 音乐 Newletter 制作心得</li> 
 <li>01:02:06 30岁后，你的歌单就定型了？</li> 
 <li>01:07:53 获取新歌的渠道</li> 
 <li>01:12:05 算法推荐 vs 订阅歌单</li> 
 <li>01:15:29 爬虫式找歌和 ChatGPT</li> 
 <li>01:21:00 沉浸式听歌的能力“退化了”</li> 
 <li>01:27:08 AI 能帮助我们找歌吗？</li> 
 <li>01:30:30 主动获取与被动喂养</li> 
 <li>01:32:30 权威推荐 vs 大数据</li> 
 <li>01:34:54 音乐的解读</li> 
 <li>01:39:56 音乐推荐的现状</li> 
 <li>01:44:05 多巴胺—演唱会上的老歌</li> 
 <li>01:52:57 片尾曲：《摩的士高demo》</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>片尾曲: <a href="https://music.163.com/#/album?id=71982455">摩的士高 More Disco - 彭寒</a></li> 
 <li>Justin今年在写的音乐Newsletter: <a href="https://replay.cafe/">Re:Play Cafe</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>封面来自DALL·E</li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。 荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x88AB;&#x96C6;&#x4E2D;&#x9694;&#x79BB;&#x9700;&#x8981;&#x51C6;&#x5907;&#x4EC0;&#x4E48;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/8D1813E3-F891-4872-A425-1EC8118A47C3/</link>
        <guid>https://justinyan.eth.limo/8D1813E3-F891-4872-A425-1EC8118A47C3/</guid>
        <pubDate>Thu, 24 Nov 2022 15:49:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/11/qurantine-cover-1.jpg" alt="" /></p> 
<p>人在江湖飘，哪能不挨刀。</p> 
<p>生活在2022年的中国，“行政区被封”、“小区被封”、“被判密接”、“被赋码”、“被转运”等等这些“被们”都是随机发生的，而且无法为个人左右。所以要让自己做好准备，减少这些不可控的东西给自己带来的负面影响。</p> 
<p>本文以我“被判密接集中隔离”的主观经验总结，结合2022年11月18日<a href="http://www.gov.cn/xinwen/2022-11/18/content_5727653.htm">“二十条”</a>规定编写，适用于<strong>当地不加码</strong>的情况，希望读者朋友们身体健康，运气爆棚，永远都用不上。（笔芯🤌❤️）</p> 
<p><em>我去过的集中隔离酒店同时也是入境隔离酒店，所以也许适用于入境中国的小伙伴们。</em></p> 
<h2>〇、如何“被判”、隔离多久、在什么地方隔离</h2> 
<p><strong>变颜色之前的确认电话务必要确认红码原因，务必要确认“他们认为的你，真的是你”。</strong>因为我被误判过一次，工作人员在电话里上来就“通知”我是密接，说是通过监控判定，还带时间点，语气非常肯定，我自己都信了。最后在我的要求下，看了监控截图发现并不是我🤦‍♂️，最后没给红码。对我来说是虚惊一场但足见“误判”案例不乏有之。</p> 
<p>一旦健康码变成了黄码红码之后，不管真实情况如何，目前我并未见过申诉有效的例子（黄码申诉转绿其实只是做了核酸后转绿）。但大家如果遇到了，还是可以申诉的，万一中了头彩，申诉居然管用了呢。申诉的电话可以询问居委会，他们会给出街道办和区的电话号码。居委会是民间自治组织，不是政府官员，通常都是邻居，人很好的。</p> 
<p>“第九版”判定密接的原则有9条，前8条很清晰但可以忽略，只看万能的第9条就可以了:</p> 
<blockquote> 
 <p>现场调查人员评估认为其他符合密切接触者判定标准的人员</p> 
</blockquote> 
<p>一般从“被判跟患者密切接触”那天开始算起，集中隔离5天，然后转居家隔离3天（所谓5+3）。</p> 
<p>比如“判了”1月1日密接，那么1月5日会收到酒店通知，说第二天（1月6日）可以离开了。1月6日上午做核酸检测的时候会发一张解除隔离通知书，签名后等待大巴来接走。送回自己居住地社区，由居委会签名接收，然后居家隔离。</p> 
<p>隔离酒店地点一般是居住地所在行政区的同个区，费用由区政府承担。比如人在广州市天河区被判密接，但居住在番禺区，则由番禺区政府来安排隔离酒店。</p> 
<p>但是如果所在区有疫情爆发，比如2022年11月居住在广州市海珠区，那么也有可能允许居家隔离，社区（也即居委会）会上门贴封条，贴“门磁”（即门窗感应器）。当然也有另一种可能：直接被运走到完全不知道什么城市什么地区的盲盒隔离点。</p> 
<p>有些社区会说清楚什么时间开始封，什么时间解除，但也有的一句话不说，没有统一标准。</p> 
<p>如果居住在广州市，穗康码和粤康码会变成红码，穗康码会显示红码原因（如“密切接触者”），医学观察隔离方式（如“居家”、“集中”），解除隔离日期，如1月5日（实际6日才能离开）。下图为官方示例。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/11/yue-kang-ma-1.png" alt="" /></p> 
<p>但这些信息跟全国其他城市一样，并不作为权威，具体执行时按“行政区防疫办”说了算。比如我的例子是穗康码显示隔离方式“居家”，但依然会被“贯彻落实”集中隔离。打电话申诉会被告知“你就听街道说的就好啦”（请辅以不耐烦爹味语气食用）。</p> 
<h2>一、必备物品</h2> 
<ol> 
 <li>衣物 
  <ul> 
   <li>至少3天换洗衣物，包括内衣裤（按隔离5天算）</li> 
   <li>睡衣睡裤</li> 
   <li>夏天也记得带一套长袖外套和长裤，防止空调吹一整天着凉</li> 
  </ul> </li> 
 <li>食物 
  <ul> 
   <li>一般不能点外卖（曰“非必需品不送”，奶茶、饮料之类的都是非必需品），但是酒店前台卖的泡面则可以跟酒店买</li> 
   <li>酒店包三餐盒饭，一般来说份量比成年男性一餐所需略低，吃完属于半饱，当减肥吧</li> 
   <li>时不时有领导视察，影响范围几个小时，遇上饭点就没有饭吃，所以多带点食物以备不时之需</li> 
   <li>建议带上罐头、方便面、饼干、高热量的巧克力等存放时间较长的便捷食物</li> 
   <li>行李箱塞一些水果、零食，进酒店只会喷大量酒精消毒不会开箱</li> 
  </ul> </li> 
 <li>电子设备 
  <ul> 
   <li>手机</li> 
   <li>远程办公记得带笔记本和电源</li> 
   <li>充电器与充电线，建议带那种多口充电器，一个解决多台设备</li> 
  </ul> </li> 
 <li>日常用品 
  <ul> 
   <li>毛巾、牙膏、牙刷</li> 
   <li>刮胡刀、指甲钳</li> 
   <li>洗发水、沐浴露</li> 
   <li>拖鞋</li> 
   <li>垃圾袋</li> 
   <li>水杯</li> 
   <li>抽纸</li> 
   <li>运动鞋（室内运动用）</li> 
   <li>女性记得带上经期用品</li> 
   <li>有条件可带自己的床单和被套（酒店的床确实挺脏的，我这个直男都后悔没带🤦‍♂️）</li> 
  </ul> </li> 
 <li>防疫用品 
  <ul> 
   <li>酒店会提供一些物资，包括湿纸巾、抽纸、卷纸、瓶装水、N95口罩、一次性医用手套、免洗洗手液、黄色医疗废弃物垃圾袋和体温计。</li> 
   <li>建议自带湿纸巾（擦拭房间物体表面以消毒）</li> 
   <li>口罩（酒店只给了两个N95，因为不出门所以一般是够用的）</li> 
  </ul> </li> 
 <li>随身物品 
  <ul> 
   <li>身份证（办入住用）</li> 
   <li>钱包</li> 
   <li>钥匙</li> 
  </ul> </li> 
 <li>药物 
  <ul> 
   <li>如果有慢性疾病或鼻炎、过敏之类的，记得带齐平时用的药</li> 
   <li>一般不需要其他药品，酒店卫健组会保障健康需求，但响应是否及时就不一定</li> 
  </ul> </li> 
</ol> 
<h2>二、提升幸福感的物品</h2> 
<ol> 
 <li>热水壶 
  <ul> 
   <li>有看到有人去了新建的集装箱隔离点，装备了新热水壶的案例。但毕竟属于小概率事件，自带热水壶会好一些。</li> 
  </ul> </li> 
 <li>降噪耳机 
  <ul> 
   <li>我之前待的隔离酒店在一个老小区里，隔壁是公园。上午有人在公园放声高歌，下午有社区大喇叭喊“请大家下来做核酸，琴日做完今日都要做”，晚上有广场舞，凌晨有年轻男女在楼下分手痛哭，清晨有带着几只大桶的三轮车哐哐碾过减速带。居民们生活非常精彩而且十分规律，降噪耳机绝对大大提升幸福感。</li> 
  </ul> </li> 
 <li>Switch 
  <ul> 
   <li>是时候捡起买了没时间玩的游戏了，《塞尔达：旷野之息》，《集合啦！动物森友会》，《星露谷物语》都很不错。</li> 
  </ul> </li> 
 <li>Kindle或带本书 
  <ul> 
   <li>建议阅读情绪积极向上的，虽然被隔离情绪很糟糕容易被情绪负面的作品吸引。</li> 
   <li>比如虚构类可以读类似《简·爱》或者《火星救援》的，获得主角的勇气，不是很建议读《一九八四》，心情可能会变得更糟糕。</li> 
   <li>比如非虚构类可以读弗洛姆的《逃避自由》或者刘瑜的《可能性的艺术》，不是很建议读日本连环杀人案《被抹去的一家》。</li> 
  </ul> </li> 
 <li>iPad 
  <ul> 
   <li>如果有喜欢的电视剧或番剧，就忘我地追吧。</li> 
  </ul> </li> 
 <li>褪黑素 
  <ul> 
   <li>担心环境不适应睡不着的小伙伴可以带上，但不是人人都有效</li> 
  </ul> </li> 
 <li>拌饭酱/老干妈</li> 
 <li>咖啡（挂耳或速溶）和茶包 
  <ul> 
   <li>平时喝惯咖啡、茶的小伙伴可以带上</li> 
  </ul> </li> 
</ol> 
<h2>三、在隔离酒店每天会发生什么</h2> 
<p>上大巴之前工作人员会发一个透明面罩、一对医用橡胶手套和一个N95口罩，穿戴完毕之后才上车拉走。</p> 
<p>到了隔离酒店时会被穿着防护服的工作人员喷洒大量消毒酒精，所以带过去的包和箱子尽量不要选太娇贵的。</p> 
<p>酒店一般是改造过的，工作人员全副武装，前台也是完全隔开的透明玻璃，但是用的材料都是裸的三合板，所以刚到酒店的时候有点末日既视感，但实际上也没什么，放轻松就好。</p> 
<p>办好入住手续后会加微信群，有事情会在群里通知（比如领导来视察，晚不知道几个小时才送餐之类的），同时每天上午测体温发到群里。另外会给一个“目的地信息登记”的二维码，登记解除隔离之后要去的地方。</p> 
<p>房间门口有一个垃圾桶和一张小凳子，小凳子放盒饭用的。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/11/quarantine-03-c.jpg" alt="" /></p> 
<p>三餐有固定的时间，由工作人员送到门口然后敲门，此时戴上口罩出去拿就好。</p> 
<p>根据“二十条”的说法，“集中隔离医学观察的第1、2、3、5天各开展1次核酸检测”，但实际情况由酒店的卫健组自行判定。我当时是一天至少三次核酸检测，一般是饭后一小时左右的时间，也有人不需要每天做核酸检测，由卫健组自行决定，但不会提前告知。</p> 
<p>解除隔离的前一天，来做核酸检测的医务人员会对门把手之类的地方进行“环境采样”。如果当天的咽拭子与环境核酸检测结果正常，则第二天做核酸检测的时候，会给你发一张“集中隔离医学观察解除告知书”，让你签字。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/11/quarantine-04-c.jpg" alt="" /></p> 
<p>签完字等酒店前台电话通知即可离开。</p> 
<p>入境隔离的可以自己打车离开，密接隔离的要坐政府的大巴，怎么来怎么回。居委会有人来签字接收。</p> 
<p>回到家之后居委会还会有人上门确认你的“解隔书”做一些登记工作，之后就自行居家隔离即可。</p> 
<h2>四、Life Goes On</h2> 
<p>整个隔离的过程和需要准备的东西如上文所述。现在回想过去当然会觉得比较轻松，但是身处其中时会觉得十分不安。</p> 
<p>其中最难受的就是对“未知”的恐惧。</p> 
<p>我经历过的“行政区被封”、“小区楼被封”和“被判密接隔离”之类的事情，工作人员一般不会作出详细的解释，多数时候不会明确告知何时解封，即便提起也会加上“应该”，并且不同工作人员给出的时间和隔离方式也会互相矛盾，以致产生“谁都不靠谱，未来还不知道会怎样”的不安。</p> 
<p>所以我能做的是把我知道的东西写出来，如果其他人也遇到了这种情况，至少有个参考可以稍微减弱一点不安感。</p> 
<p>无论是集中隔离还是居家隔离，我觉得除了不安感之外，最令人不适的是每天不出门导致精神上的压抑。</p> 
<p>虽然我“身经百封”但是也没摸索出什么好办法让自己随时高兴起来（如果可以的话大概我已悟道成仙了吧），所以大家放心，被封时的抑郁是非常正常的情绪，什么都不想做，什么都提不起精神也很常见。不过我们要在这种抑郁中扛下去，不能让魔法击败我们。</p> 
<blockquote> 
 <p>People change, Things go wrong, Shit happens, But life goes on.</p> 
</blockquote> 
<p>无论是阅读，看电影电视剧，玩游戏，做什么都可以，如果一直“输入”累了那就尝试输出，给自己写日记，拿起手机拍摄隔离记录，发发推特微博即刻，通过网络跟朋友聊聊天，打电话，做什么都可以。</p> 
<p>试图让自己一直保持情绪高涨是不现实的。人类的状态本来就是起伏的。如果人生遇到了低谷，那就当作是放了一个长假，慢慢积攒能量。如果一直没什么输出，那也没什么关系，毕竟这是自己的人生啊。</p> 
<p><em>updated at 2022-12-08: 终于一切要恢复正常了，希望以后永远不再有用到这篇文章的时候。</em></p> 
<h2>五、相关链接</h2> 
<ul> 
 <li><a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/vBAcTYh_0_s" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;YouTuber ElenaLin 青青 从上海回到广州的隔离视频</a></li> 
 <li>封面来自Unsplash <a href="https://unsplash.com/@markuswinkler">@markuswinkler</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Node.js + MongoDB &#x4E2D;&#x6587;&#x5206;&#x8BCD;&#x5B9E;&#x73B0;&#x5168;&#x6587;&#x641C;&#x7D22;</title>
        <link>https://justinyan.eth.limo/C3BFA483-04DD-4185-A97E-1E3FFB5778BF/</link>
        <guid>https://justinyan.eth.limo/C3BFA483-04DD-4185-A97E-1E3FFB5778BF/</guid>
        <pubDate>Fri, 18 Nov 2022 16:37:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/11/mongodb-fts-compressed.jpg" alt="" /></p> 
<p>前阵子在做一个辅助我写作的小工具，需要对中文进行全文搜索。因为小工具的Web版是用Node.js(TypeScript) + MongoDB写的后端，所以自然想到直接在MongoDB里操作。</p> 
<p>假设我们有这样一个Model:</p> 
<pre><code>// https://mongoosejs.com/docs/guide.html
import mongoose from 'mongoose';
const { Schema } = mongoose;
</code><p><code>const blogSchema = new Schema({<br /> title: String, // String is shorthand for {type: String}<br /> author: String,<br /> body: String,<br /> comments: [{ body: String, date: Date }],<br /> date: { type: Date, default: Date.now },<br /> hidden: Boolean,<br /> meta: {<br /> votes: Number,<br /> favs: Number<br /> }<br /> });</code></p></pre>
<p></p> 
<p>我们希望<code>title</code>和<code>body</code>可以被搜索到，接下来我们看如何实现。</p> 
<h2>1. 给Model建立Text Index</h2> 
<p>根据<a href="https://www.mongodb.com/docs/manual/core/index-text/">官方文档</a>，一个Collection只能有一个Text Index，但可以有多个字段组合:</p> 
<pre><code>blogSchema.index({
    title: text,
    body: text
})</code></pre> 
<p>如果希望修改不同字段的权重(Weights)，可以通过增加<code>weights</code>来设置:</p> 
<pre><code>blogSchema.index({
    title: text,
    body: text
}, 
{
    weights: {
        title: 10,
        body: 2
    }
})</code></pre> 
<p>默认权重是1，数字越大权重越高。权重会影响搜索得分 Text Score，计算代码<a href="https://github.com/mongodb/mongo/blob/master/src/mongo/db/fts/fts_spec.cpp">在这里</a>，主要逻辑在<code>_scoreStringV2</code>方法，有兴趣的读者可以看看:</p> 
<pre><code>void FTSSpec::_scoreStringV2(FTSTokenizer* tokenizer,
                             StringData raw,
                             TermFrequencyMap* docScores,
                             double weight) const</code></pre> 
<p>简单来说分为四步</p> 
<ol> 
 <li>Tokenization（分词）</li> 
 <li>去掉Stop Words（类似for, has, our, to之类的词，<a href="https://github.com/mongodb/mongo/blob/master/src/mongo/db/fts/stop_words_english.txt">代码在这里</a>）</li> 
 <li>循环计算每个分词的得分并加到一起</li> 
 <li>针对当前document把所有全文索引字段跑一遍1-3并加权平均得出最终分数</li> 
</ol> 
<p><a href="https://ananya281294.medium.com/mongo-maths-676469e55f78">这篇文章</a>对于该计算逻辑有比较详细的解释，感兴趣的读者可以看一下。</p> 
<p>建立完全文索引后对我们的Model进行搜索结果发现基本上只使用关键词基本搜不出东西来，比如有这样一篇文章:</p> 
<pre><code class="language-json">{ 
title: Node.js + MongoDB 中文分词实现全文搜索，
body: Lorem Ipsum，也称乱数假文或者哑元文本， 是印刷及排版领域所常用的虚拟文字。由于曾经一台匿名的打印机刻意打乱了一盒印刷字体从而造出一本字体样品书，Lorem Ipsum从西元15世纪起就被作为此领域的标准文本使用。
}</code></pre> 
<p>仅搜索“全文”、“搜索”是无法命中的。</p> 
<h2>2. 中文分词</h2> 
<p>这是因为MongoDB原生不支持中文的分词，所以我们还需要对中文进行分词。拍脑袋想，我们可以把需要被搜索的文本里每一个字拆出来单独分一个词，然后组合第二字一个词，第三个字一个词……可想而知这会让document变得巨大很浪费。</p> 
<p>后来我找到这个流行的中文分词项目: <a href="https://github.com/fxsjy/jieba">fxsjy/jieba: 结巴中文分词</a>，非常好用。</p> 
<pre><code class="language-python"># encoding=utf-8
import jieba
<p>jieba.enable_paddle()# 启动paddle模式。 0.40版之后开始支持，早期版本不支持<br /> strs=[我来到北京清华大学,乒乓球拍卖完了,中国科学技术大学]<br /> for str in strs:<br /> seg_list = jieba.cut(str,use_paddle=True) # 使用paddle模式<br /> print(Paddle Mode: + '/'.join(list(seg_list)))</p>
<p>seg_list = jieba.cut(我来到北京清华大学, cut_all=True)<br /> print(Full Mode: + / .join(seg_list)) # 全模式</p>
<p>seg_list = jieba.cut(我来到北京清华大学, cut_all=False)<br /> print(Default Mode: + / .join(seg_list)) # 精确模式</p>
<p>seg_list = jieba.cut(他来到了网易杭研大厦) # 默认是精确模式<br /> print(, .join(seg_list))</p>
</code><p><code class="language-python">seg_list = jieba.cut_for_search(小明硕士毕业于中国科学院计算所，后在日本京都大学深造) # 搜索引擎模式<br /> print(, .join(seg_list))</code></p></pre>
<p></p> 
<p>输出:</p> 
<pre><code>【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
<p>【精确模式】: 我/ 来到/ 北京/ 清华大学</p>
<p>【新词识别】：他, 来到, 了, 网易, 杭研, 大厦 (此处，“杭研”并没有在词典中，但是也被Viterbi算法识别出来了)</p>
</code><p><code>【搜索引擎模式】： 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造</code></p></pre>
<p></p> 
<p>我只是想做个辅助工具而已，数据量不大，所以默认用全模式即可。</p> 
<p>这样我们可以跟Model增加两个分过词的冗余字段:</p> 
<pre><code class="language-js">// https://mongoosejs.com/docs/guide.html
import mongoose from 'mongoose';
const { Schema } = mongoose;
<p>const blogSchema = new Schema({<br /> title: String,<br /> titleToken: String,<br /> author: String,<br /> body: String,<br /> bodyToken: String,<br /> comments: [{ body: String, date: Date }],<br /> date: { type: Date, default: Date.now },<br /> hidden: Boolean,<br /> meta: {<br /> votes: Number,<br /> favs: Number<br /> }<br /> });</p>
</code><p><code class="language-js">blogSchema.index({<br /> titleToken: text,<br /> bodyToken: text<br /> })</code></p></pre>
<p></p> 
<p>这里有Jieba的Node.js版本: <a href="https://github.com/yanyiwu/nodejieba">yanyiwu/nodejieba: 结巴中文分词的Node.js版本</a>。</p> 
<p>这样中文的分词问题就解决了，搜索关键词也能找到对应的document。</p> 
<h2>3. 自己动手分词</h2> 
<p>我有些document是固定的用法，比如成语，一般就四个字。但是在这个场景下，我希望搜索四个字中的任意一个字都能找到匹配的结果，这时候Jieba就不适用了，所以我们得自己分。</p> 
<p>因为一般来说成语不多，而且基本都是四个字，所以我们完全可以每个字单独切分。</p> 
<pre><code class="language-typescript">// 每个字单独分出来
let chars = word.split('')
let tokens: string[] = []
</code><p><code class="language-typescript">for (let i = 0; i &lt; chars.length; i++) {<br /> const char = chars[i];<br /> // 一个字先塞进去<br /> tokens.push(char)<br /> // 循环剩下的字，逐个组合塞进结果集，比如：兴高采烈<br /> // ['兴', '兴高'， '兴高采', '兴高采烈', '高', '高采', '高采烈', '采', '采烈']<br /> for (let j = (i + 1); j &lt; chars.length; j++) {<br /> const char2 = chars[j]<br /> const last = tokens[tokens.length - 1] as string<br /> tokens.push(last + char2)<br /> }<br /> }</code></p></pre>
<p></p> 
<h2>4. What's Next</h2> 
<p>如上只是实现了一个非常简单的中文分词搜索，足以应对我的小工具。但如果数据海量或者设备性能很差怎么办呢？</p> 
<p>比如移动端，SQLite也有FTS支持，但相较之下手机性能弱，存储空间有限，这就需要开发者充分发挥聪明才智了。</p> 
<p>微信客户端技术团队的这两篇文章有兴趣的读者可以参考一下:</p> 
<ul> 
 <li><a href="https://mp.weixin.qq.com/s/Ph0jykLr5CMF-xFgoJw5UQ">iOS微信全文搜索技术优化</a></li> 
 <li><a href="https://mp.weixin.qq.com/s/AhYECT3HVyn1ikB0YQ-UVg?">微信全文搜索优化之路</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 78 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;12</title>
        <link>https://justinyan.eth.limo/E0C5F76D-BF9A-490C-A0E2-1C97CF575AB7/</link>
        <guid>https://justinyan.eth.limo/E0C5F76D-BF9A-490C-A0E2-1C97CF575AB7/</guid>
        <pubDate>Sun, 13 Nov 2022 23:06:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/11/Podcast-Cover-v78.png" alt="" /></p> 
<p>好久不见各位听众朋友们，想死你们啦！ 近来两位主播业务繁忙，科技圈也是发生了各种事情，让我们立马进入本期快乐星球，好好畅聊一番吧！</p> 
<p><em>P.S. 口误纠正：新战神（越肩视角）按代际算是战神4，续作诸神黄昏应该算战神5</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 久违的一期节目</li> 
 <li>01:00 苹果发布新版iPad和Apple TV 4K</li> 
 <li>08:20 美股科技股第三季度财报表现不佳</li> 
 <li>09:17 硅谷多家科技企业开始裁员</li> 
 <li>11:26 Meta股价重挫、裁员</li> 
 <li>16:50 字节收购PICO一年，近期大量投广告</li> 
 <li>20:11 App Store允许上架NFT App</li> 
 <li>22:21 币圈大瓜: FTX一夜崩盘</li> 
 <li>26:17 关于B站</li> 
 <li>29:00 欧盟统一充电接口或让苹果每年损失百亿</li> 
 <li>31:12 谷歌又炫技：派个AI，帮科幻大师刘宇昆把小说写了</li> 
 <li>40:13 200 亿美元「卖身」巨头，Figma 不是 SaaS 的「终极出路」</li> 
 <li>45:50 “Hey！Siri”没了？苹果修改语音助手指令：唤醒更方便 Siri</li> 
 <li>49:31 9000多万人的“孤独感”又撑起了一条赛道（宠物创业）</li> 
 <li>53:47 《战神：诸神黄昏》正式发售</li> 
 <li>56:17 《利刃出鞘2》预告片</li> 
 <li>片尾曲: 《战神：诸神黄昏》主题曲</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/V5Ar0dKnl6Y" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Bear McCreary - God of War Ragnarök </a></li> 
 <li>节目中提到的日本家庭机器人动画片: <a href="https://www.bilibili.com/bangumi/play/ss3339">夏娃的时间</a></li> 
 <li>之前聊B站的一期节目: <a href="https://fyfy.fm/episode/26">Vol. 26 哔哩哔哩(゜-゜)つロ干杯\~</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。 荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 11 - &#x7ECF;&#x9A8C;&#x4E3B;&#x4E49;&#x7684;&#x72ED;&#x9698;</title>
        <link>https://justinyan.eth.limo/5BFDD79B-0446-49F3-B3C4-FB029248AA12/</link>
        <guid>https://justinyan.eth.limo/5BFDD79B-0446-49F3-B3C4-FB029248AA12/</guid>
        <pubDate>Thu, 22 Sep 2022 13:02:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/jingyanzhuyi.jpg" alt="" /></p> 
<p>今天看到B站Up主<a href="https://space.bilibili.com/170948267/">“衣戈猜想”</a>的影片<a href="https://www.bilibili.com/video/BV1NT411T7pn">“我来回应一下吧”</a>（封面标题《二舅的互联网奇幻漂流》），从文字的角度看，写得非常好。</p> 
<p>该视频是针对他今年7月发布的影片<a href="https://www.bilibili.com/video/BV1MN4y177PB">“回村三天，二舅治好了我的精神内耗”</a>在“火爆”之后伴随各路自媒体、新闻媒体、互联网等渠道的质疑之回答。</p> 
<p>“二舅影片”现在在B站有4423万播放，在国内各大平台广为传播。人们管这叫“火了”，是很多人如狼似虎地期待的那种“火”。</p> 
<p>可不知道为什么，我总是在有意跟这些“火”保持距离。</p> 
<p>“二舅”火的现象让我联想到，曾经我跟“畅销书”也保持距离，看到中文书本腰封上的“某某大师盛赞”、“诺奖得主blabla”就如看到“网红”二字退避三舍。可我偏偏又喜欢读书，还喜欢读电子书。Kindle简体书店的书名都被出版社以“书名【营销语】”污染得面目全非，几乎无一幸免。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/jingyanzhuyi-books-compressed.jpg" alt="" /></p> 
<p>截图是我的Kindle电子书（防杠声明: Kindle允许购买后自行下载），简体和英文书名的差距一目了然。如果这个世界就是由这些组成的，我退无可退，避无可避了呢？难道我就不读书了吗？为了不因噎废食，我进化出了自动忽略营销语的能力。</p> 
<p>“二舅”影片在7月份广为传播的时候，我第一反应也是退避三舍。但接下来全世界都在说这个的时候，我又觉得很好奇，为什么大家都在说这个影片。于是我看完了，但我还是没明白为什么他会“火”，为什么那么多人喜欢/不喜欢/讨论/争论“精神内耗”这个词。</p> 
<p>影片的作者“衣戈猜想”大概也没有想到。他在第二支影片提到，当时准备发布“二舅”影片的时候，跟二舅说好了把这支影片在B站的所有激励收入都给他。考虑到可能播放量并不高，如果激励不到三千元，那就自己补足三千给他，如果够了就全都给他。也就是说，作者当初也没想到这支影片会这么“火爆”。</p> 
<p>不管他是真的想不到还是假的想不到，反正我是想不到。作者在第二支影片中说，不会蹭热度用“二舅”来变现，他也坦承“二舅”给他的频道带来了更多流量，未来可以用这份流量继续把频道好好做下去。不蹭热度的变现，这样的人应该挺稀有的。我不知道这样的人占创作者比例有多少，但作者所说的我挺同意的。</p> 
<p>就好像“畅销书”是“畅销”的，但未必就是好的。有非常多的书写得很好，很有价值，很给我启发，但是完全不畅销，甚至早就不再版了，连盗版电子书都找不到。写书的人，是更想写出自己不认可但畅销的书还是写出自己认可的但不畅销的书呢？也许写书人最理想的还是写出认可的书的同时，顺便畅销一下吧。</p> 
<p>可能“衣戈猜想”在制作“二舅”影片的时候也顾虑到通过影片的形式讲述二舅的故事，势必要把二舅推向人前。这跟虚构作品不同，没有演员饰演另一个人的生活，“衣戈猜想”所拍摄的“二舅”，就是真实的二舅。影片火了之后给二舅、村子，和自己都带来了意料之外的打扰，我想这也让作者很苦恼吧。能够在热度火爆时期退出，尽管事出有因，我也还是非常佩服作者。</p> 
<p>但是这位Up主也不是完全放弃流量的。他的文字写得很好，在“二舅”影片里能引发这么多人的共鸣，或争议，在“回应”影片里能做到针锋相对又不失幽默，颇有点诸葛亮舌战群儒的风范。所以写作可能是一种表达方式，也可能是这位Up主很擅长的表达方式。但他没有止步于文字表达，他选择了当下最广为接受的表达方式：影片。作者以前在猿辅导做历史课老师，他很能说。优秀的文笔加上能说会道，这是他影片的核心魅力。</p> 
<p>Neil Postman在1985年写的<a href="https://justinyan.me/post/4664">《娱乐至死》（ Amusing Ourselves to Death: Public Discourse in the Age of Show Business）</a>对电视机带来的未来抱有非常悲观的态度。我从电视机时代长大，从小就看电视，也喜欢电视，电视给年幼的我带来了世界各地的精彩。不过我觉得更幸运的是，<a href="https://justinyan.me/post/4575">我小时候喜欢阅读，并且刚好家里有台电脑，并且刚好买错了盗版游戏光盘，并且刚好里面都是金庸的小说，并且我喜欢爱金庸小说，顺便从此彻底爱上阅读</a>。</p> 
<p>从“电视机祸害青少年”，到“电子游戏是精神鸦片”、“如何帮助青少年远离“、“刷手机成瘾，怎么办？”、“如果不读书那么你的知识就只能被微信公众号定义”、“网民人均每天刷短视频1.5个小时！”等等，每个时代流行的东西几乎都被曾是“洪水猛兽”过。你可以说这叫悲观，也可以说这叫反思。</p> 
<p>对于“二舅”影片，对于“畅销书”，我的想法是：<strong>“热度”和“好坏”是两个维度的事情</strong>。不应该用“畅销”来衡量“好坏”，因为“畅销”就趋之若鹜和因为“畅销”就敬而远之一样，都不过是经验主义的狭隘。一个东西能分出“好坏”意味着有标准，每个人标准不同，好坏自然就不一样。大部分人不接受这种不一样，所以“二舅”会在舆论的摇摆中反复登上微博热搜。</p> 
<p>大部分人啊。这四个字，可太重要了。重要到是资本会且只会关注的程度。</p> 
<p>这大概是资本在几百年时间里，使大部分人的创造力与积极性得以发挥，推动人人平等的理念在全球传播，让地球上所有大陆连接到一起的空前进步的同时，所带来的局限吧。</p> 
<p>依稀记得是在Jazz Styles: History and Analysis这本书看到，说以前本地音乐家只需要受到小镇的人喜欢，他就能靠演奏活下去，既不需要成为全国知名艺术家，也不需要全球巡演。而现代社会让知名音乐家能为全世界欣赏，同时也让更多小有名气的本地音乐家们消失殆尽。</p> 
<p>我多么希望这个世界，作家可以在“不畅销”的前提下，也能好好地活下去，书写着不那么火爆但有趣的文字。我多么希望这个世界，这样的“作家”，还能被世人认可为“作家”。</p> 
<p>太宰治在《人间失格》里，以主角视角自问：</p> 
<blockquote>
 <p> 所谓世人，不就是你吗？ </p>
</blockquote> 
<p>2022.09.21/中午</p> 
<h2>参考资料</h2> 
<ul> 
 <li>封面来自 <a href="https://unsplash.com/@ajing_">aj_aaaab (@ajing_) | Unsplash</a></li> 
 <li><a href="https://space.bilibili.com/170948267/">衣戈猜想的哔哩哔哩空间</a></li> 
 <li><a href="https://www.bilibili.com/video/BV1NT411T7pn/">我来回应一下吧_哔哩哔哩_bilibili</a></li> 
 <li><a href="https://www.bilibili.com/video/BV1MN4y177PB/">回村三天，二舅治好了我的精神内耗_哔哩哔哩_bilibili</a></li> 
 <li><a href="https://justinyan.me/post/4664">枫影夜读 #173 Neil Postman – 《娱乐至死》 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/4575">漫无目的 03 – 电子书和纸质书你更喜欢哪一个呢？ | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 77 JJ: &#x5728;&#x4E0A;&#x6D77;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F; Anyway.FM &#xD7; &#x67AB;&#x8A00;&#x67AB;&#x8BED;</title>
        <link>https://justinyan.eth.limo/2B5830E8-44FD-4893-8000-BDFE6120C92E/</link>
        <guid>https://justinyan.eth.limo/2B5830E8-44FD-4893-8000-BDFE6120C92E/</guid>
        <pubDate>Mon, 19 Sep 2022 16:42:41 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/Podcast-Cover-v77-compressed.jpg" alt="" /></p> 
<p>久违的世界各地系列来啦🥳，这期我们邀请到友台<a href="https://anyway.fm/">Anyway.FM</a>的主播<a href="https://twitter.com/JJYing">@JJ</a>，跟我们讲讲上海这座城市的工作与生活。</p> 
<p>顺便借本期shownotes恭喜我台主播自力新发的App: <a href="https://locklauncher.com/">锁屏启动</a> 荣登App Store免费榜第一名🥇🥳🥳🥳</p> 
<p>本期串台链接👉🏻 <a href="https://www.xiaoyuzhoufm.com/episode/63282c13aafc5c394512df60">№157: 串台枫言枫语——在上海生活和工作是什么体验？</a></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 Anyway.FM × 枫言枫语串台开场</li> 
 <li>01:00 本期节目缘起与播客数据统计</li> 
 <li>03:34 在上海录播客</li> 
 <li>04:54 JJ什么时候搬到上海的？（翻车现场）</li> 
 <li>07:23 关于上海话、粤语</li> 
 <li>10:51 在做什么工作呢？在游戏公司做UI设计师？</li> 
 <li>12:12 游戏引擎项目跟之前做的设计有什么区别？</li> 
 <li>15:28 现在更多使用Figma吗？</li> 
 <li>17:42 技术美术补足技术与美术的Gap？</li> 
 <li>19:38 在上海做设计师机遇如何？</li> 
 <li>23:49 上海人才招聘的异同</li> 
 <li>25:24 深圳比较像一个赚钱的地方？没有生活？</li> 
 <li>28:38 上海的生活，多么，美妙~疫情与后疫情的上海</li> 
 <li>34:12 上海的交通，高架桥，隧道</li> 
 <li>41:30 上海丰富的艺术展览</li> 
 <li>43:20 周末好去处</li> 
 <li>48:17 上海人文的多元化</li> 
 <li>50:56 上海的美食？上海本地菜好接受吗？</li> 
 <li>53:56 上海的住房情况？房价？购房条件？</li> 
 <li>01:00:00 有娃之后生活有什么变化吗？鸡娃？</li> 
 <li>01:05:11 现场催更，录播客这件事情</li> 
 <li>01:14:08 Anyway.FM巨🐮🍺的官网</li> 
 <li>01:16:30 灵魂三问</li> 
 <li>01:25:13 Green Day - Ordinary World</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://twitter.com/JJYing">JJ Ying</a></li> 
 <li><a href="https://anyway.fm/">Anyway.FM官网</a></li> 
 <li>促成了本期节目的「<a href="https://sourl.cn/rcA6sQ">折线图</a>」</li> 
 <li>JJ 正在做的<a href="https://sourl.cn/YZYKEy">游戏编辑器</a></li> 
 <li><a href="https://sourl.cn/P2MZNL">探索用 Figma 做游戏 UI 设计</a></li> 
 <li>上海城区主干道的<a href="https://sourl.cn/zA53J7">三纵三横规划</a></li> 
 <li>上海最高的山——<a href="https://sourl.cn/sAPvr8">佘山</a></li> 
 <li>Anyway.FM 2021 年的<a href="https://sourl.cn/tGzNG2">年度总结</a></li> 
 <li>Leon 的「<a href="https://sourl.cn/jcViTx">离职进度条</a>」</li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/X1Tj6HZAXH4" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Green Day - Ordinary World</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。 荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #182 &#x5F17;&#x6D1B;&#x59C6; -&#x300A;&#x9003;&#x907F;&#x81EA;&#x7531;&#x300B;</title>
        <link>https://justinyan.eth.limo/E180379A-439F-4C5B-9C42-269781CCCE3B/</link>
        <guid>https://justinyan.eth.limo/E180379A-439F-4C5B-9C42-269781CCCE3B/</guid>
        <pubDate>Fri, 16 Sep 2022 13:51:55 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/Escape-from-Freedom.jpg" /></p> 
<p>读刘瑜的书时见她提到弗洛姆这本《逃避自由》，便读了。这本书写得真好，如今81年过去，人类世界仍是一般相似。</p> 
<p>作者全名艾里希·弗洛姆（Erich Fromm），1900年出生于德国法兰克福一个犹太人家庭。1922年弗洛姆在海德堡大学获哲学博士学位，次年到慕尼黑大学专攻精神分析学。弗洛姆一生致力于修改弗洛伊德（Sigmund Freud）的学说，用以分析两次世界大战后的社会。</p> 
<p>1941年出版的这本《逃避自由》（Escape From Freedom）是他发表的首部重要著作。新教改革到资本主义带来“个人自由”，但社会结构变更却相对滞后，人们在“挣脱”中世纪传统束缚的同时，也失去了传统的保护。获得“自由”的现代人被迫作为齿轮服务于一台更大的社会机器，这种不可调和的矛盾必然导致人们心理结构的变化。社会运转的单位是人，研究社会多数人的心理结构，就能解释现代人普遍存在的焦虑与孤独。</p> 
<p>新教改革以前，人从属于一个更大的组织，教会，行会，这些“传统”给个人提供稳定的保护。如果你是个铁匠，那么只要做铁匠该做的事情就好了；如果你是个面包师，那就每天做面包就好了。人的自主创造性体现在如何让武器锻造得更锋利，如何让面包烘焙得更好吃。</p> 
<p>“传统”也是一套严格的规则，生活在其中的每个人都被分配了一个角色，有既定的剧本，不需要思考，不需要原创，只要照着剧本演就好。这样的“安全”自然极大地限制了个人的发展。</p> 
<p>最近有个20年前央视《半边天》栏目访谈农村妇女刘小样的视频广为传播。刘小样生长在一个传统力量强大的环境里，几乎从她呱呱坠地那一刻起，人生就被写死在不断循环的“传统”里。</p> 
<blockquote>
 <p> 在农村，有钱可以盖房，但不可以买书；<br /> 可以打牌闲聊，但不可以去西安。<br /> 不可以交际，不可以太张扬，不可以太个性，不可以太好，不可以太坏。<br /> 有约定俗成的规矩，要打破它就会感到无助、无望、孤独，好像好多眼睛在盯着你。<br /> 不需要别人阻止你，你会自觉自愿地去遵守这些规矩。 </p>
</blockquote> 
<p>刘小样的冲突不在于“传统”本身，而在于“外面的世界”存在自由的可能。</p> 
<p>从这个角度讲，现代人的焦虑是有意义的，因为对“另一种生活”完全没有期望的人是不会感到焦虑的。以马丁·路德为代表的新教改革，呼应了人们在资本主义发展过程中，既获得“自由”又失去“传统”保护的心理状态。</p> 
<p>一脚踏入自由，这是多么令人恐惧的事情啊！孤独感，无能为力感扑面而来。我们现在回看历史会觉得那时候的大冒险是理所应当的，但历史只有过去了才叫历史，只有尘埃落定了才是历史，当下不是历史，当下只是未知。一个人从“集体”出走，从“传统”挣脱，他即将踏入的世界到底是阳光明媚还是波澜壮阔，不踏进去的时候又如何得知呢？但正是这份恐惧，带给了现代人无限的焦虑，前有未知，后有齿轮，夹缝中的现代人该如何生存？</p> 
<p>弗洛姆在书中分析了一个极端的例子：纳粹执政时期的社会心理结构。</p> 
<p>在面对自由焦虑的过程中，人可以选择鼓起勇气，在恐惧与孤独的伴随中与黑暗搏杀，也可以选择逃避自由，放弃个性，消融在一个更伟大的东西里。对于中世纪的人们来说，这个更的伟大的东西是宗教，而对二战期间的德国人来说，这个更伟大的东西，是纳粹主义。</p> 
<blockquote>
 <p> 任何一种学说或思想的影响取决于它所吸引的那些人性格结构中的心理需求程度大小。要是该思想答复了某些社会群体的强大心理需求，它将成为历史上的一种强大力量。 </p>
</blockquote> 
<p>前几年“贩卖焦虑”的内容比比皆是，如今短视频、“下沉市场”诸如此类不可谓不强大。在“积极自由”与“逃避自由”之间，后者是人类的天性，是大多数，是会被资本关注的“市场”。</p> 
<blockquote>
 <p> 资本在中世纪制度下是人的奴仆，但在现代制度下它却成了主人。<br /> 在资本主义经济活动中，成功，获得物质利益成了目的本身。<br /> 人成了巨大经济机器上的一个齿轮，如果他有很多资本，便是一个重要的齿轮；如果没有资本，便是个无足轻重的齿轮，但都总是一个服务于自身目的之外的齿轮。 </p>
</blockquote> 
<p>“服务于自身目的之外”啊，是不是听着跟这些年川普在美国搞的MAGA（Make America Great Again）有异曲同工之妙呢？在纳粹这里，放弃自我，放弃自由，服从于一个更伟大的“神秘”，实际上是不愿负起对自己应尽的责任。选择一个“超级英雄”，相信他能给自己带来美好的明天。当他做得很好的时候，无条件地崇拜他，而一旦他出了点问题，失望就随之而来。这种既臣服于权威，又带有破坏欲的施虐心理的杂糅，可不仅出现在纳粹主义盛行的时代。</p> 
<p>纳粹的历史已经证明了这种彻底放弃自我的危险性。但想要积极自由，人就需要先找到自我。Michael Singer在<em>The Untethered Soul : The Journey Beyond Yourself</em>（简体译为《清醒地活》）一书中试图说明“能被自我感知的自我不是自我”这一观点，并以冥想为技巧帮助读者更进一步了解真正的自我。这份练习入门很简单，但持续地自我观察，发掘出真正的自我却不容易。</p> 
<p>在分析完纳粹德国民众的心理结构之后，我有点期待作者能给出一个“答案”，但没有。就像我阅读《清醒地活》时，在Micheal解构完一切之后我期待他“立”些什么，但没有。也许这跟人生的意义是一样的，不存在所谓的“答案”。至少不存在一个普世的答案，而属于自己的答案，需要在了解自我之后，“积极自由”地，去发掘和追寻自己真正想要的生活。</p> 
<p>刘小样在接受完央视的采访之后，终于忍不住去追寻她的“另一种生活”，做过售货员，打过一些工，几次出走最终都“灰溜溜”回到老家。她的旅程在他人眼中似乎是“失败”的，但她在走出去的那一刻，就已经成功了。在追寻真正属于自己的人生的路上，没有他人眼中的失败，也没有他人。</p> 
<p>英国小说家夏洛蒂·勃朗特，她的人生历程比较坎坷，在她的小说《简·爱》里，女主角简·爱多次出走，离开自己的“传统”，带着强烈的不安全感与孤独，一次次走入未知。我想她在1847年那个女性备受歧视的时代，充满热情地创作小说，并费尽心机地促成出版（以男性名字Currer Bell署名），已经是她对“另一种人生”的勇敢追求。这份追求在现实世界里虽未实现，但在小说中，女主角简·爱的结局至少还算圆满。</p> 
<p>硅谷有名的投资人Naval Ravikant（纳瓦尔）在以他名字出版的书<em>The Almanack of Naval Ravikant</em>（简体译为《纳瓦尔宝典》）中提到：</p> 
<blockquote>
 <p> 我的体能教练耶日·格雷戈雷克是个非常聪明的人。他总是说：“选择简单模式，人生会越来越困难；选择困难模式，人生会越来越简单。” </p>
</blockquote> 
<p>所以，“积极自由”，“逃避自由”；困难模式，简单模式。</p> 
<p>Good luck, my friend.</p> 
<p>2022.09.15</p> 
<h2>关于“归属感”</h2> 
<p>小时候我一直对没有“归属感”这件事情感到消极，因为身边的小伙伴们好像都很喜欢自己是“某某村”的人，某姓的，似乎这是一件特别“光荣”的事情。我从小就不住在老家的村子里，所以我一直不能体会小伙伴们的光荣感。后来上大学，我也不能理解“啊你也是某某地方的，老乡啊”的不明所以的“集体感”。再后来在某家公司工作，我甚至能看到有人在内部论坛发文以“身为某某人”开头（此处之某某是公司名），我都惊呆了，还能这样。如果说“在某地出生/上学/工作”还比较好理解的话，我见过最离谱的“归属感”是：“我是国内最早做某某行业的第一人（语带骄傲状）”。</p> 
<p>读完《逃避自由》我明白了。这种“从属于某个更伟大的东西”的感觉，是真的能给人“安全感”的。不需要思考我应该怎么办，不需要从一片空白开辟出一个全新的东西，只要“归属于某个已经很伟大的东西”就好了。就好像跟明星站在一起合个影，我也是明星了一样。</p> 
<p>所以，我不再觉得“没有归属感”是一件可怕的事情，毕竟，“归属感”好像也并不是什么好东西。</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️⭐️(5/5)</li> 
 <li>标题: 逃避自由</li> 
 <li>原作名: Escape from freedom</li> 
 <li>作者: Erich Fromm（艾里希·弗洛姆）</li> 
 <li>出版社: 上海译文出版社</li> 
 <li>出版日期: 2015年6月（原作首版于1941年）</li> 
 <li>ISBN: 9787532769186</li> 
 <li>版本: 纸质书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x89E3;&#x51B3;CORS&#x8DE8;&#x57DF;&#x8D44;&#x6E90;&#x5171;&#x4EAB;&#x95EE;&#x9898;</title>
        <link>https://justinyan.eth.limo/342A292D-29D1-4186-B3E0-73EEBD7BB585/</link>
        <guid>https://justinyan.eth.limo/342A292D-29D1-4186-B3E0-73EEBD7BB585/</guid>
        <pubDate>Tue, 13 Sep 2022 19:09:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/cors-1.png" alt="" /> 因为浏览器的<a href="https://en.wikipedia.org/wiki/Same-origin_policy">同源安全策略</a>，我们在访问一个网站的时候，只能请求同一个域名，同一种协议下的JS文件。 <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/cors_principle.png" alt="" /> 上图如果我们开启了CORS检查，在打开 <code>domain-a.com</code> 页面时请求 <code>domain-a.com</code> 域名的所有资源都很正常，但是请求 <code>domain-b.com</code> 的东西就会被拒绝。 所以当我们需要跨域请求时就很麻烦了。以前我们使用 <a href="https://www.w3schools.com/js/js_json_jsonp.asp">JSONP</a> 来解决跨域问题，大致是在 DOM 中加入一个 <code>&lt;script&gt;</code> Tag，由它去请求跨域资源，请求结束后会调用 <code>callback</code> 参数指定的函数，类似这样:</p> 
<pre><code>let s = document.createElement("script");
s.src = "jsonp_demo_db.php?callback=myDisplayFunction";
document.body.appendChild(s);
</code><p><code>// 函数myDisplayFunction会被调用<br /> </code></p></pre>
<p></p> 
<p>后来（2009年）有了Cross-Origin Resource Sharing(CORS, 跨域资源共享)之后就不再需要 JSONP 了。 CORS的工作原理很简单，被请求的服务器在Response Header里告诉客户端（这里是浏览器）是否允许被跨域请求，以及允许的域名是哪些，如果不符合条件就拒绝: <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/simple-req.png" alt="" /> 比如上图，服务器返回 <code>Access-Control-Allow-Origin: *</code> 意味着允许任意域名请求该资源。这样即使从 <code>domain-a.com</code> 的页面请求 <code>domain-b.com</code> 的资源也可以正常放过。</p> 
<h2>1. Nginx 修改支持跨域</h2> 
<p>如果 <code>domain-a.com</code> 在自己手里那修改 http repsonse header 是小事，比如修改 nginx 配置文件:</p> 
<pre><code>location ~* \.(eot|ttf|woff|woff2)$ {
    add_header Access-Control-Allow-Origin *;
}
</code></pre> 
<h2>2. CDN 修改支持跨域</h2> 
<p>我上一次遇到 CORS 错误是在 <code>domain-a.com</code> 请求托管在 <code>domain-cdn.com</code> 的资源的时候，修改配置稍微有点麻烦。 以腾讯云 CDN 为例，这里有两层服务。一个是对象存储（Cloud Object Storage），即文件的实际存储功能；另一个是内容分发网络（Content Delivery Network，CDN），即用户实际接入的CDN节点。 <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/cdn-use-cases-static-files.jpg" alt="" /> 以前腾讯云的对象存储支持默认域名访问，官方也提供了<a href="https://cloud.tencent.com/document/product/436/13318">跨域访问 CORS 设置</a>。有些 Google CORS 错误的结果会告诉你到这里设置，但其实这并不是用户实际接入的网络，所以配置也没什么用（以前可以单独使用默认cos域名访问对象存储内容，现在不支持了，都需要自己接入自定义域名）。 所以要解决用户端的CORS错误，我们需要修改自定义CDN域名的配置。 在<strong>内容分发网络CDN → 域名管理 → 高级配置 → HTTP响应头配置</strong>，这个地方新增规则，可以修改CDN服务器的HTTP response。</p> 
<h2>3. 有哪些Response Headers可以设置？</h2> 
<ul> 
 <li>Access-Control-Allow-Origin 允许跨域访问的域名， * 表示任意域名。</li> 
 <li>Access-Control-Allow-Methods 允许的HTTP Method，比如 GET/POST。</li> 
 <li>Access-Control-Allow-Credentials 如果客户端发上来的Request credential设置为<code>include</code>，则只有当我们把<code>Access-Control-Allow-Credentials</code>设置为<code>true</code>时，浏览器才会把response暴露给前端JS。</li> 
 <li>Access-Control-Expose-Headers 告诉浏览器哪些response headers可以暴露给前端JS。</li> 
 <li>Access-Control-Max-Age 一个CORS preflight request的有效期。浏览器会自动发起 <a href="https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request">CORS 预检请求(preflight requests)</a>给服务器，检查是否支持跨域访问。比如在客户端发起一个真正的 <code>DELETE</code> 请求之前，先preflight一下，如果服务器说允许，浏览器再发起真正的请求。</li> 
 <li>Access-Control-Allow-Methods 允许的跨越请求Methods，*表示都允许。比如: <pre><code>Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Methods: *
</code></pre> </li> 
 <li>Access-Control-Allow-Headers 可以支持自定义response header。有几个<a href="https://developer.mozilla.org/en-US/docs/Glossary/CORS-safelisted_request_header">安全的响应头</a>无需列出，其他的可以自行设置，比如: <pre><code>Access-Control-Allow-Headers: X-Custom-Header, Upgrade-Insecure-Requests
</code></pre> </li> 
</ul> 
<h2>4. 为什么 tag不设置type="module"就不会有CORS报错？</h2> 
<p>tag 加了 <code>type="module"</code> 就意味着这是一个module script，相对的，不带这个属性则为classic script。我们可以写个简单的 Demo 测试一下:</p> 
<pre><code class="html">    &lt;!doctype html&gt;
    &lt;html lang="en"&gt;
<pre><code>&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
    &amp;lt;a href="#" id="test-link"&amp;gt;Test CORS&amp;lt;/a&amp;gt;
    &amp;lt;script type="module" crossorigin&amp;gt;
        function test() {
                var url = 'https://some-domain.com/some.js';
            var xhr = new XMLHttpRequest();
            xhr.open('HEAD', url);
            xhr.onload = function () {
                var headers = xhr.getAllResponseHeaders().replace(/\r\n/g, '\n');
                alert('request success, CORS allow.\n' +
                    'url: ' + url + '\n' +
                    'status: ' + xhr.status + '\n' +
                    'headers:\n' + headers);
            };
            xhr.onerror = function () {
                alert('request error, maybe CORS error.');
            };
            xhr.send();
        }

        const link = document.getElementById("test-link")
        link.addEventListener('click', function() {
            test()
        })
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;
</code></pre>
</code><p><code class="html"></code></p></pre>
<p></p> 
<p>如果 'https://some-domain.com/some.js' 不支持CORS response headers，浏览器就会报错。 原因是浏览器支持 module scirpts 时规定了必须使用 CORS 协议作为跨域资源请求，可以<a href="https://html.spec.whatwg.org/multipage/scripting.html#prepare-a-script">参考这里</a>。</p> 
<blockquote>
 <p> Unlike classic scripts, module scripts require the use of the CORS protocol for cross-origin fetching. </p>
</blockquote> 
<p>所以同样的代码，如果不使用 <code>&lt;script type="module"&gt;&lt;/script&gt;</code>，就不会触发 CORS 报错。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://en.wikipedia.org/wiki/JSONP">JSONP - Wikipedia</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Same-origin_policy">Same-origin policy - Wikipedia</a></li> 
 <li><a href="https://www.w3schools.com/js/js_json_jsonp.asp">JSONP</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 76 &#x82F9;&#x679C;2022&#x79CB;&#x5B63;&#x53D1;&#x5E03;&#x4F1A;: &#x63A5;&#x7740;Ultra!</title>
        <link>https://justinyan.eth.limo/F8E3D685-4CC5-4C7C-A604-449BD6B4D896/</link>
        <guid>https://justinyan.eth.limo/F8E3D685-4CC5-4C7C-A604-449BD6B4D896/</guid>
        <pubDate>Fri, 09 Sep 2022 00:51:35 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/Podcast-Cover-v76-compressed.png" alt="" /></p> 
<p>苹果2022年秋季发布会！<br /> Tim Cook带着他的Apple Watch Ultra，AirPods Pro第二代，以及iPhone 14向我们走来，没有令人失望，苹果还是“看，头更大了”的苹果！<br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/apple-iphone14-ad.jpg" alt="" /></p> 
<p><em>P.S. 纠正节目中的口误，Garmin的中文品牌名为佳明，不是高明。😂</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场</li> 
 <li>02:02 Apple Watch</li> 
 <li>22:52 AirPods Pro 第二代</li> 
 <li>31:00 iPhone 14</li> 
 <li>58:57 准备买什么呢？</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/ux6zXguiqxM" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Apple Event Intro</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 10 - Inspired by Apple</title>
        <link>https://justinyan.eth.limo/AC1BB7CB-FE19-434B-866E-BD122CADFA51/</link>
        <guid>https://justinyan.eth.limo/AC1BB7CB-FE19-434B-866E-BD122CADFA51/</guid>
        <pubDate>Wed, 07 Sep 2022 20:17:50 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/Inspired-by-Apple-compressed.jpg" alt="" /></p> 
<p>本文是我发表在 <a href="https://newsletter.replay.cafe/">Re:Play Cafe</a> 的<a href="https://newsletter.replay.cafe/issues/re-play-cafe-issue-15-1323544">一期</a>音乐分享。</p> 
<p>Re:Play Cafe 是由 <a href="https://twitter.com/MapleShadow">@Justin</a>，<a href="https://twitter.com/oscarlee_">@Oscar</a> 和 <a href="https://twitter.com/designedbyclu">@Clu</a> 三位不专业音乐爱好者所发起，“两周一会”的 newsletter，欢迎大家<a href="http://newsletter.replay.cafe/">到这里订阅</a>。</p> 
<hr /> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/sgt-pepper.png" /><br />  <a href="https://music.apple.com/cn/album/sgt-peppers-lonely-hearts-club-band/1441164604?l=en">Apple Music</a> | 🎵 <a href="https://open.spotify.com/album/6QaVfG1pHYl1z15ZxkvVDW?si=79U4vZDtSuuaxaPfXpUBKg">Spotify</a></p> 
<p>@Justin 分享</p> 
<p>不出意外的话，本期Newsletter会在9月5日星期一发出，而星期四凌晨就是苹果秋季发布会召开的日子。Clu说要写品牌相关的音乐，Oscar说可以写Inspired by Apple，于是对本期主题的建设毫无建树但又身为果粉的我说：“好的”。</p> 
<p>可是到底分享什么跟苹果有关的音乐比较好呢？网友Tgreenfi08曾经利用Mac的开机音效做过一首Remix的歌，而iPhone默认铃声的Remix大家也耳熟能详。但这些都属于“民间二创”，苹果第一方有什么好音乐吗？</p> 
<p>有的。苹果公司创办至今已经46年了，这期间苹果发布了非常多的产品，也就有了非常多的广告。而且别忘了还有每年举办的“全球开发者大会”（WWDC，Worldwide Developers Conference），1983年举办第一届的时候叫做“苹果独立软件开发者大会”（The Apple Independent Software Developers Conference）。</p> 
<p>我在 <a href="https://www.applemusic.info">AppleMusic.info</a> 这个网站找到了自1984年以来苹果在广告和发布会中使用的音乐，总共有两千多首歌。两千多首啊！看着这个长长的列表，我突然好奇用得最多的是谁的音乐。我想起乔布斯很喜欢Bob Dylan，会不会就是他呢？于是我<a href="https://gist.github.com/justinyanme/a54c78b6437dd7063309f68b73c324ca">写了个简单的脚本</a>分析了一下。</p> 
<p>结果很有趣，除了107个暂未识别出来的曲目以及13个空白格子，被使用最多的艺人如下(次数 - 名字):</p> 
<ol> 
 <li>15 - Coldplay</li> 
 <li>15 - OK Go</li> 
 <li>13 - Vampire Weekend</li> 
 <li>11 - The Beatles</li> 
 <li>10 - Jang Young-gyu</li> 
 <li>10 - Beck</li> 
 <li>10 - Imagine Dragons</li> 
 <li>9 - Phoenix</li> 
 <li>9 - Rob Simonsen</li> 
 <li>8 - Bob Dylan</li> 
</ol> 
<p>Coldplay居然排第一诶，Bob Dylan在第十，印象中出场很多次的OneRepublic以七次引用排在第二十三。看上去摇滚乐队、歌手比较多，符合我的印象，但我没想到的是，苹果还用过一些非常传统同时知名度很高的爵士乐，比如<a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/Vbv2IROfmjI" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;iPhone 4发布会广告</a>用到Louis Armstrong的When You’re Smiling，以及<a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/GXN7TF0NjKw" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;iBook广告中</a>用到Miles Davis的Flamenco Sketches。</p> 
<p>每个人分享4首歌，于是我打算从中找出4首。比如我最喜欢的乐队The Beatles，当年苹果唱片(Apple Corp)与苹果公司(Apple Inc.)之间关于商标这件事情还打过官司，Apple Corp跟发行The Beatles唱片的EMI公司又常年打架，于是The Beatles上架iTunes这件事情直到<a href="https://www.apple.com/newsroom/2010/11/16The-Beatles-Now-on-iTunes/">2010年大家才谈妥</a>。次年11月乔布斯去世，Beatles的 Yellow Submarine 电子书作为纪念乔布斯的礼物在iTunes免费开放下载，同时苹果也发布了一系列新广告，名为”The Beatles on iTunes”。本期我们每人分享四首歌，所以第一首我选择有纪念意义的“Yellow Submarine”。</p> 
<p>第二首歌我选择2007年乔布斯在MacWorld上发布第一代iPhone，拿着手机演示iTunes时，播放”Sgt. Pepper's Lonely Hearts Club Band”这张唱片的”With A Little Help From My Friend”，也是我本期分享的封面。第三个首歌是当时演示时播放的Bob Dylan的”Like A Rolling Stone”。乔布斯除了喜欢The Beatles之外也很喜欢Bob Dylan，所以第四首歌是2006年Bob Dylan在<a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/8NZbIUCqD8E" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Apple iPod 5G iPod + iTunes广告</a>中唱的”Someday Baby”。</p> 
<p>小时候我没有购买苹果产品的经济条件，那时候“苹果牌”对我来说意味着“好看，很贵”。等到我能靠自己的努力购买第一台苹果产品的时候，已是2009年前后，当时乔布斯刚发布完 iPhone 3GS，病情恶化，日渐消瘦。次年的 iPhone 4 发布会上大家一度怀疑他可能来不了了。2011年乔布斯去世，当时我刚开始做iOS开发，一个精神领袖的离世对刚开始接受社会毒打的年轻人来说，打击异常沉重。</p> 
<p>如今过去十一年了，苹果在吃瓜群众的议论声中依然稳坐科技公司第一把交椅。虽然没有了每年的 One More Thing 惊喜，但至少这一次离开了乔布斯的苹果没有沉船，毕竟乔布斯不可能再回来一次，说:</p> 
<blockquote>
 <p> Apple is like a ship with a hole in the bottom, leaking water and my job is to get the ship pointed in the right direction. </p>
</blockquote> 
<p>2022.09.04/下午<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 09 - &#x662F;&#x554A;&#xFF0C;&#x6210;&#x672C;&#x592A;&#x9AD8;&#x4E86;</title>
        <link>https://justinyan.eth.limo/DBA5DA5F-118B-4596-AFB2-3BA5BBF85655/</link>
        <guid>https://justinyan.eth.limo/DBA5DA5F-118B-4596-AFB2-3BA5BBF85655/</guid>
        <pubDate>Tue, 06 Sep 2022 12:59:30 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/price-too-high.jpg" alt="" /></p> 
<p>最近读特德·姜（Ted Chiang）的一个短篇，关于一个门，打开了之后可以去到二十年前或二十年后的。我想二十年前的我，可能怎么都无法预料到2022的周末将被“核酸检测”唤醒吧。</p> 
<p>前几天我<a href="https://twitter.com/MapleShadow/status/1564819201822720000?s=20&amp;t=SnUnmpYDJ8BVBnnh4ukmng">突发奇想</a>：“不知道反复地核酸检测对培养公众排队习惯这件事情有没有帮助。”那时候我正在一个人不算多的地方排队做核酸检测，看着井然有序的样子，让我对在广州排队这个千古难题多了一丝毫无来由的信心。</p> 
<p>事实证明这丝信心确实毫无来由。同样是排队做核酸检测，今天我就体会到了见缝插针的插队者在无动于衷的队伍间如入无人之境一般。我终于忍不住要拨乱反正了，于是呐喊一声“你好！请到后面排队”。插队者回到队尾的同时嘟囔了一句“你们又不好好排队”。</p> 
<p>他说的没错。今天的“排队”可谓集亚热带地区人民的传统智慧之大成。众所周知，广州常夏无冬，烈日炎炎之下，谁都不想暴露于骄阳之中。于是阳光与树荫把这条长长的队伍切割成了好几个部分，仿佛小学课堂上磁铁吸引的铁屑实验，一片片树荫就是一个个磁场。于是见缝插针者们正义起来了，说这“缝”也太大了，既然称不上缝隙，自然也不能叫插队了！</p> 
<p>我想起在很会排队的国家旅行时，训练有素的排队者们让我这个见惯了人仰马翻的旅行者有点犯怵：生怕我的一不小心破坏了什么我不知道的排队规则，被人高喊一声课本里的单词：“Queue Jumper!”结果确实也有人喊我，只不过是提醒我可以过去收银台了。</p> 
<p>排队需要学习，学习意味着成本。</p> 
<p>今天我还跟朋友说起各种“人格测试”的流行大抵跟“占星术”是类似的。通过贴标签对自我进行解释可以获得一种心理上的安全感，把这个世界60亿人塞进16个格子是否合理这并不重要，重要的是：“啊！原来我是XXXX人格呀！”重要的是，如果不用这些测试，我要怎么了解我自己呢？什么？有很多种学习的选择？不了不了，自由的成本太高了。</p> 
<p>是啊，成本太高了。排队的时候低头玩手机就好，为什么要多管插队的“闲事”呢？</p> 
<p>快轮到我做核酸检测的时候，有个年轻人跑到我前面，拍了前面大爷的肩膀，两人开心地聊了起来。年轻人就这么面不改色心不跳，熟练地融入到队伍中。于是我拍了年轻人的肩膀，一语不发，只是用大拇指做了个战术手势：到队伍后面去。年轻人显然是“见惯了大场面的”，开始热情地给我介绍前面这位大爷：“这我公公（广州人称自己的外公），嘿嘿嘿。”见我不为所动，年轻人又迅速转移话术：“你到前面来吧，我到你后面站着。”说着摆出了酒楼服务员迎宾的姿势。</p> 
<p>是啊，成本太高了。<br /> 后来我选择放弃，他就在我的注目礼下如此这般完成了一次天衣无缝的插队。</p> 
<p>是啊，成本太高了。<br /> 他插队了之后我一直在想，如果由我一个人来制止这些插队现象我需要付出多少成本呢？瑞·达利欧（Ray Dalio）说看清现实很重要。现实是什么呢？生活在2022年的今天，随时可能被封在某个地方是“新常态”，集体排队做核酸检测是“新常态”。这就意味着“做不做核酸”没得选择，“做核酸”的地点没得选择，跟什么样的人一起排队“做核酸”也没得选择。</p> 
<p>我陷入了消极，陷入了绝望，一度在伟大的A主义与漂亮的B主义之不同的悲哀之中沉沦长达三秒钟之久。</p> 
<p>然后就轮到我“做核酸”了。“医护人员”熟稔地撕开一次性医用棉签包装，伸进我的喉咙一顿奋笔疾书有如王羲之在世──掏了一通空气。</p> 
<p>咦？正儿八经地“做核酸”不是应该掏到人快吐出来的吗？</p> 
<p>是啊，成本太高了。<br /> 我又想起西方发达国家正把工厂迁移到东南亚的事情，又想起我在越南旅行时被海关工作人员索要贿赂不成然后被骂了几句的事情，又想起苹果在印度的工厂品控难做的事情。在东南亚国家建立工厂的成本真的更低吗？</p> 
<p>回家路上，我好像渐渐明白了今日所见插队者的行云流水与排队者们的云淡风轻这一鸡犬相闻老死不相往来的“美景”之由来。</p> 
<blockquote>
 <p> Truth – more precisely, an accurate understanding of reality – is the essential foundation for producing good outcomes. </p>
</blockquote> 
<p><em>封面来自马来西亚的艺术家 <a href="https://chowhonlam.com/">Chow Hon Lam/丘漢林</a>的作品: <a href="https://www.instagram.com/tuandted/">Tu and Ted</a></em></p> 
<p>2022.09.04/下午<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 08 - &#x65F6;&#x901F;100&#x7684;&#x5916;&#x5356;&#x5C0F;&#x54E5;</title>
        <link>https://justinyan.eth.limo/721F9D69-237B-4A5D-8B72-30DADC8C62BA/</link>
        <guid>https://justinyan.eth.limo/721F9D69-237B-4A5D-8B72-30DADC8C62BA/</guid>
        <pubDate>Fri, 02 Sep 2022 14:24:00 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/09/delivery.jpg" alt="" /></p> 
<p>我也不知道他骑的是电动车还是摩托车，总之，前几天晚上我正开着车往右并线的时候，突然从盲区冲出来一个骑着两个轮子的外卖小哥。</p> 
<p>上高架桥的时候我喜欢深踩一脚油门，因为上了桥以后就是开阔的直线，一般也没什么车子。外卖小哥就在我即将深踩油门的时候冲了出来，我愣了一下松开了油门。</p> 
<p>他没戴头盔，身子往前趴，迎面的风把他的头发、衣服吹得“呼呼作响”（我猜是的吧，反正我在车里也听不到）。从他穿越多辆汽车的速度来看，应该已经达到时速100公里了。原来现在电动车的技术已经这么发达了啊！</p> 
<p>这条直道很长，长到我看着外卖小哥的背影像在看一个节奏缓慢的电影的长镜头，长到我想起刚才他从我右边冲出来的时候正好处在车子的盲区，长到我一直在想象如果他的车子前轮压到了一颗足够大的石头，或者正好冲进另一辆车子的盲区时对方打了下方向盘……</p> 
<p>时速100公里的外卖小哥，他在想什么呢？<br /> 就像我深踩一下油门，超越一辆辆汽车的时候，我在想什么呢？<br /> 当他扭动车头，以垂直倾角接近45度切入我的车子前方时，他的侧脸显然是带着笑。我想起周润发演的《阿郎的故事》，陈浩南演的《古惑仔》，一切毫无道理的“英雄气”在盯着慢镜头的小孩子眼里显得那么正义。</p> 
<p>也许我深踩油门的时候，侧脸也是带着笑的吧。今天我松了油门，缓慢滑行在城市深夜的高架桥上。我想起刚到广州不久的时候，和朋友在市区逛街，抬头看到天空被城市的灯光映照得比呼唤蝙蝠侠的探照灯还要明亮。城市，是看不到星星的。</p> 
<p>我松了油门，看着时速100公里的外卖小哥消失在直道的末端，没有突然出现的石头，没有突然打方向盘的汽车，也没有星星出现在桥的另一端。</p> 
<p><em>封面来自: <a href="https://unsplash.com/@mrsimonfischer">Szymon Fischer (@mrsimonfischer)</a>，经过裁剪。</em></p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 75 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;11</title>
        <link>https://justinyan.eth.limo/D8F3345B-21C0-46A2-B989-90A4656F118D/</link>
        <guid>https://justinyan.eth.limo/D8F3345B-21C0-46A2-B989-90A4656F118D/</guid>
        <pubDate>Fri, 26 Aug 2022 15:51:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/08/Podcast-Cover-v75-compressed.png" alt="" /></p> 
<p>又快又欢乐的“科技快乐星球”来啦🥳<br /> 虽然最近科技圈的大新闻不多，但有趣的新闻却不少，让我们开始本期的快乐吧！</p> 
<p>另外，苹果将于美国时间9月7日(周三)举行秋季发布会，rumors 说有 iPhone 14，新 iPad 等等一众产品亮相，届时我们节目见~</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场</li> 
 <li>00:54 苹果新闻串烧：苹果要换 C 口？</li> 
 <li>05:01 台积电将为苹果生产3纳米芯片</li> 
 <li>05:58 苹果部分生产线转移到越南</li> 
 <li>07:20 iPhone 14 配货扩大</li> 
 <li>09:02 Nreal AR 眼镜</li> 
 <li>11:15 iPhone 地图应用、Outlook广告那点事</li> 
 <li>16:33 抖音推出悟空搜索</li> 
 <li>22:54 抖音联合饿了么进军外卖</li> 
 <li>29:08 亚马逊的「刷手支付」</li> 
 <li>34:28 由谷歌数据中心发生爆炸引发的思考</li> 
 <li>37:01 Tesla 上玩 Steam 游戏？</li> 
 <li>38:58 掌机：Steam Deck</li> 
 <li>43:00 近期的一些影视作品</li> 
</ul> 
<h2>新闻来源</h2> 
<ul> 
 <li><a href="https://www.toutiao.com/article/7051895023041987105/?&amp;source=m_redirect">苹果要换C口？工信部发话：将制定标准，促进统一手机充电接口</a></li> 
 <li><a href="https://www.feng.com/post/13597174">台积电将于2022年底开始为苹果生产3纳米芯片</a></li> 
 <li><a href="https://www.feng.com/post/13597029">Apple Watch和MacBook Pro生产可能转移到越南</a></li> 
 <li><a href="https://www.163.com/dy/article/HE8R9S8K0511RIVP.html">传iPhone 14新机扩大备货至9500万部较原预期增加约5%</a></li> 
 <li><a href="https://m.cnbeta.com/view/1307821.htm">Nreal AR眼镜正式进军中国市场</a></li> 
 <li><a href="https://www.feng.com/post/13597873">苹果计划明年开始在iPhone上的地图应用显示搜索广告</a></li> 
 <li><a href="https://www.landiannews.com/archives/95169.html">微软在Outlook里添加难以分辨的置顶广告</a></li> 
 <li><a href="https://3c.ltn.com.tw/news/49935">新版 Gmail 操作介面「變身變色」正式推送！</a></li> 
 <li><a href="https://news.mydrivers.com/1/854/854329.htm">抖音推出悟空搜索App：主打搜索结果无广告</a></li> 
 <li><a href="https://www.36kr.com/p/1882085816618113">抖音联手饿了么，敌人的敌人暂时是朋友</a></li> 
 <li><a href="https://www.ithome.com/0/634/350.htm">亚马逊正大力推广「刷手支付」功能，扫描手掌秒付款</a></li> 
 <li><a href="https://www.leiphone.com/category/industrynews/6mGxIOLKzYcSti5z.html">谷歌数据中心发生爆炸，事故疑致谷歌搜索、谷歌地图、Gmail多项服务全球性宕机</a></li> 
 <li><a href="https://mashable.com/article/steam-tesla">Steam games are coming to Tesla cars soon</a></li> 
 <li><a href="https://sspai.com/post/75032">Steam Deck 半月谈：让 Valve 再一次变酷</a></li> 
 <li><a href="https://collider.com/dc-movies-10-year-plan-warner-bros-ceo-david-zaslav-comments/">New Warner Bros. CEO David Zaslav Announces 10-Year Plan For DC Movies</a></li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/-TqQESkQJT0" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Westworld - Season 4 Opening Credits - Intro Sequence</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 74 &#x5185;&#x6838;&#x6050;&#x614C; &#xD7; &#x67AB;&#x8A00;&#x67AB;&#x8BED;: &#x5982;&#x679C;&#x4E0D;&#x505A;&#x7A0B;&#x5E8F;&#x5458;&#x6211;&#x4EEC;&#x4F1A;&#x505A;&#x4EC0;&#x4E48;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/98460235-CBAF-4854-9D67-D7BD09FD2B9F/</link>
        <guid>https://justinyan.eth.limo/98460235-CBAF-4854-9D67-D7BD09FD2B9F/</guid>
        <pubDate>Mon, 15 Aug 2022 00:24:57 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/08/Podcast-Cover-v74-compressed.png" alt="" /></p> 
<p>《内核恐慌》是我(Justin)很多年前就常听的播客节目，所以一直想什么时候能串台聊一下，苦于一直没想到什么有趣的话题。有一天我突然想到我们四个人(自力、Rio、吴涛)都至少曾经是程序员，那是不是可以把我台的“灵魂三问”发展一下，变成全场灵魂，于是就有了这期串台节目。</p> 
<p>这些问题确实相当灵魂，很难回答，不过也因此我们收获了很多有趣的观点。</p> 
<p>让我们一起跟着四位主播的角度收听这场全程的灵魂问答吧😘</p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">00:00 节目联动：内核恐慌 ✕ 枫言枫语</span></li> 
 <li><span class="pd-timestamp">01:13 本期节目缘起</span></li> 
 <li><span class="pd-timestamp">02:30 为什么曾经选择做一名程序员？</span></li> 
 <li><span class="pd-timestamp">18:31 自力和Rio当初为什么从程序员转行？</span></li> 
 <li><span class="pd-timestamp">33:23 Justin和吴涛对程序员这个职业有什么新的理解呢？</span></li> 
 <li><span class="pd-timestamp">1:03:02 如果不考虑收入你想做什么？</span></li> 
 <li><span class="pd-timestamp">1:34:30 来一首什么样的片尾曲呢？</span></li> 
 <li><span class="pd-timestamp">1:37:06 两台版本的outro</span></li> 
 <li><span class="pd-timestamp">1:38:31 片尾曲: Portal - 'Still Alive'</span></li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>内核恐慌: <a href="https://dao.fm/">官网</a> | <a href="https://twitter.com/pan_icu">推特</a></li> 
 <li>内核恐慌主播: <a href="https://twitter.com/riojot">Rio</a></li> 
 <li>内核恐慌主播: <a href="https://twitter.com/_vonAntares">吴涛</a></li> 
 <li>吴涛在节目中提到的开锁频道:<a href="https://www.youtube.com/c/lockpickinglawyer">YouTube - LockPickingLawyer</a></li> 
 <li>节目中提到的<a href="https://www.pirsigsjourney.com/pirsig-pilgrims">摩托车骑行路线ZMM route</a></li> 
 <li>Justin在节目中提到的德国程序员小哥: <a href="https://yetanmoney.com/">也谈钱</a></li> 
 <li>吴涛的Blog: <a href="http://blog.metaphox.com/">Yet Another Awkward Predicament | Metamorphosis</a></li> 
 <li>片尾曲相关游戏<a href="https://developer.valvesoftware.com/wiki/Portal">Portal: Still Alive</a>，及其 <a href="https://www.xbox.com/en-us/games/store/portal-still-alive/br30gbnh63f9?activetab=pivot:overviewtab">Xbox 链接</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/Y6ljFaKRTrI" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Portal - 'Still Alive' - YouTube</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 73 &#x672A;&#x6765;&#x6211;&#x4EEC;&#x8FD8;&#x9700;&#x8981;&#x6D4F;&#x89C8;&#x5668;&#x5417;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/FBC16E07-BC10-43F7-B864-D09176C036D9/</link>
        <guid>https://justinyan.eth.limo/FBC16E07-BC10-43F7-B864-D09176C036D9/</guid>
        <pubDate>Mon, 01 Aug 2022 07:30:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/Podcast-Cover-v73-1.png" alt="" /></p> 
<p>2022年6月15日，微软宣布服役超过25年的<a href="https://blogs.windows.com/windowsexperience/2022/06/15/internet-explorer-11-has-retired-and-is-officially-out-of-support-what-you-need-to-know/">IE浏览器正式退休</a>，官方博客称:</p> 
<blockquote>
 <p> After 25+ years of helping people use and experience the web, Internet Explorer (IE) is officially retired and out of support as of today, June 15, 2022. To many millions of you, thank you for using Internet Explorer as your gateway to the internet. </p>
</blockquote> 
<p>于是我们跟友台<a href="https://dao.fm/%E4%B9%B1%E7%82%96%E6%96%B0%E9%B2%9C%E4%BA%8B%E5%84%BF/">《科技乱炖》</a>一起从浏览器市场现状讨论到未来。</p> 
<p>本期节目是我台参加“技术播客月活动”与《科技乱炖》串台直播的录音，对“技术播客月”感兴趣的朋友可以查看此 <a href="https://github.com/opensource-f2f/episode/issues/96">GitHub issue</a>。</p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">00:00 技术播客月：科技乱炖×枫言枫语</span></li> 
 <li><span class="pd-timestamp">01:02 从 IE 退休说起...</span></li> 
 <li><span class="pd-timestamp">12:01 桌面端 VS 移动端流量占比</span></li> 
 <li><span class="pd-timestamp">14:21 网络购物的习惯？</span></li> 
 <li><span class="pd-timestamp">22:47 手机浏览器占有率哪家强？</span></li> 
 <li><span class="pd-timestamp">32:42 桌面浏览器占有率哪家强？</span></li> 
 <li><span class="pd-timestamp">35:38 为什么有很多系统仍需IE？</span></li> 
 <li><span class="pd-timestamp">46:22 未来我们还需要浏览器吗？</span></li> 
 <li><span class="pd-timestamp">46:46 从未停止的浏览器技术更新</span></li> 
 <li><span class="pd-timestamp">51:50 PWA VS 各种小程序</span></li> 
 <li><span class="pd-timestamp">1:00:51 新的浏览器出现？Web3？</span></li> 
 <li><span class="pd-timestamp">1:06:35 更远的未来，全新交互方式出现？VR？</span></li> 
 <li><span class="pd-timestamp">1:11:25 无边浏览器？</span></li> 
 <li><span class="pd-timestamp">1:14:26 脑机接口直接互联</span></li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>津津乐道: <a href="https://dao.fm/">官网</a> | <a href="https://twitter.com/jinjinledaofm">推特</a></li> 
 <li>科技乱炖主播: <a href="https://twitter.com/zhufengme">朱峰</a></li> 
 <li>科技乱炖主播: <a href="https://twitter.com/philonis3">某高老师</a></li> 
 <li>节目中提到Livid做的 <a href="https://www.planetable.xyz/">Planet App</a>，以及我们和Livid录的<a href="https://www.xiaoyuzhoufm.com/episode/626ba660bf39836fd02b78e9">一期节目</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li><a href="https://sigmaos.com/">Sigma OS</a></li> 
 <li><a href="https://thebrowser.company/">Arc 浏览器</a></li> 
 <li><a href="https://moonvy.com/blog/post/2022/zeroG-beta/">zeroG 无边浏览器</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x7684;&#x7F51;&#x9875;&#x52A0;&#x8F7D;&#x901F;&#x5EA6;&#x4F18;&#x5316;&#xFF1A;&#x770B;&#x4F3C;&#x65E0;&#x7528;&#x6240;&#x5B66;&#xFF0C;&#x7EC8;&#x6709;&#x7528;&#x6B66;&#x4E4B;&#x5730;</title>
        <link>https://justinyan.eth.limo/0F4FD494-15C7-42E9-8ACE-EB0D3D202183/</link>
        <guid>https://justinyan.eth.limo/0F4FD494-15C7-42E9-8ACE-EB0D3D202183/</guid>
        <pubDate>Thu, 21 Jul 2022 13:28:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" loading="lazy" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/web-page-speed-compressed.jpg" alt="我的博客加载速度优化：看似无用所学，终有用武之地" width="928" height="516" class="alignnone size-full wp-image-5047" /></p> 
<p>前段时间给我的博客做了一下加载速度优化，同事笑称我的“优化”都是好几百年前的技术了😂。不过我很多年没有认真做前端了，这个博客 <a href="https://justinyan.me">justinyan.me</a> 搬过几次Server，但一直用的是Wordpress，接入是Nginx。除了最近两年把图片搬到腾讯云CDN之外就没做过什么优化，也难怪要被同事嘲笑。</p> 
<p>以下是我对这个陈年老博客做过的优化，有些是之前做过的，记录一下供以后参考。这些想必早成前端基础，专业人士莫笑。😁</p> 
<p><em>P.S. 这篇文章是6月份开始写的，7月18日我们发布了<a href="https://xyzrank.com/">《中文播客榜》xyzrank.com</a>也用上了了所有的优化，现在想来，技术的东西总是一开始折腾，后来就成为下一个项目的基础了。</em></p> 
<h2>一、把静态资源搬到CDN</h2> 
<p><img decoding="async" loading="lazy" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/web-page-cdn-2-compressed.png" alt="cdn" width="800" height="440" class="alignnone size-full wp-image-5057" /></p> 
<p>一般是图片、音频、视频等较大体积的资源，不会跟着 HTML 一起接收的，就托管到 CDN 上。JS/CSS 等一般不怎么变化的文件也可以托管到 CDN 上。</p> 
<p>早年间JS/CSS文件由服务器直接host，我们一般在URL后面加上 <code>?version=xxx</code> 参数来解决浏览器缓存问题。现在要搬上CDN就不能这么干了，因为CDN缓存的是文件，跟URL的query无关。这时候就需要用上Webpack的content hash来解决这个问题。</p> 
<p>我现在建站一般使用Webpack或Vite (for Vue 3项目)作为流程构建工具，如果大家使用Webpack的话，可以参考官方文档: <a href="https://webpack.js.org/guides/caching/">Caching | webpack</a></p> 
<p><img decoding="async" loading="lazy" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/web-page-speed-content-hash.png" alt="webpack config content hash" width="1462" height="848" class="alignnone size-full wp-image-5049" /></p> 
<p>原理是为正式环境编译文件时，根据文件内容计算content hash并作为URL路径的一部分，这样每次修改代码hash就会变，浏览器和CDN的Cache也就跟着变了。</p> 
<p>CDN 服务的话，如果面向的用户群体在国内的话，建议选择国内的云服务，腾讯云，阿里云，七牛，又拍云等非常多可选。虽然国外的 Cloudflare 有免费的 CDN 额度，但是因为众所周知的原因，如果想要国内用户有较好的浏览体验的话还是用国内的吧。</p> 
<p>另外想用国内的 CDN 服务需要走“各种繁琐的手续”，但（¯_(ツ)_/¯），还是走一遍吧。</p> 
<p>搞定 CDN 服务之后，Wordpress上我安装了 <a href="https://wordpress.org/plugins/cdn-enabler/">CDN Enabler</a> 插件，它做的事情就是在下发 HTML 之前，把我文章里所有的 https://justinyan.me 开头的 URL，替换成我的 CDN 域名。非常简单。</p> 
<p>其他静态站点可以直接手动传到CDN，想做自动化的话一般各家都有自己的SDK可用。我的 <a href="https://getjustfocus.com/">Just Focus for Mac</a>就是自己写了脚本，一键编译，打包，自动上传CDN，更新Server地址的。（感谢前同事 <a href="http://dangrover.com/">@dangrover</a>多年前给我介绍的 <a href="https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/">The Joel Test: 12 Steps to Better Code – Joel on Software</a>，自那以后我所有的项目都必须支持一键编译部署。）</p> 
<h2>二、使用Lighthouse找出优化点</h2> 
<p><img decoding="async" loading="lazy" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/Google-PageSpeed-Insights-Tool-1.jpeg" alt="lighthouse" width="800" height="424" class="alignnone size-full wp-image-5055" /></p> 
<p>刚开始工作的时候我针对公司项目一个大文件读取进行了优化，因为读取量是以前的三分之一，所以我当时跟我的 Leader 说我的优化效果理论上可减少三分之二的耗时，性能提升三倍。我的 Leader 跟我说，优化必须要有数据，不能靠猜，所以需要跑一下 Profile 来证明我的结论。</p> 
<p>自那以后我就记得，<strong>一切优化必须有数据做支撑</strong>，否则你也许做了负优化都未可知。</p> 
<p>前端的优化工具很多，Chrome 自带的 Dev Tools 里就有个超好用的 <a href="https://developer.chrome.com/docs/lighthouse/overview/">Lighthouse</a> 工具，可以帮我们分析出当前页面存在的问题。Lighthouse分为几个大项:</p> 
<ol> 
 <li>Performance</li> 
 <li>Accessibility</li> 
 <li>Best pratices</li> 
 <li>SEO</li> 
 <li>Progressive Web App</li> 
</ol> 
<p>为了减少缓存优化带来的误判，建议在“隐身模式”（Incognito）下运行。跑完一次分析之后，工具会给出各种相关的优化建议。</p> 
<ol> 
 <li>First Contentful Paint</li> 
 <li>Time to Interactive</li> 
 <li>Speed Index</li> 
 <li>total Blocking Time</li> 
 <li>Largest Contentful Paint</li> 
 <li>Cumulative Layout Shift</li> 
</ol> 
<p>每一项点开都会有更具体的优化策略，十分贴心。大家只需根据 Lighthouse 的建议进行优化即可。</p> 
<h2>三、CDN和Nginx开启HTTP/2</h2> 
<p><img decoding="async" loading="lazy" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/web-page-speed-http2-compressed.png" alt="http2-nginx" width="1024" height="300" class="alignnone size-full wp-image-5056" /></p> 
<p>HTTP/2 的多路复用（Multiplexing）可以使用一个连接发起多个请求，在需要并发请求大量资源(JS/CSS/Images/…)的 Web 场景可以大幅缩短页面请求时长。</p> 
<p>关于 HTTP/2 的直观效果大家可以参考一下<a href="https://http2.akamai.com/demo">Akamai这个demo</a>。至于HTTP/2能否直接上线呢？可以参考 <a href="https://caniuse.com/?search=http2">CanIUse.com</a>，已经是非常成熟的技术了。</p> 
<p>使用 wordpress.com 或其他平台服务提供的博客通常不需要管到这么具体的配置，自建站点如果使用了“各种面板”一般也会帮你打开。</p> 
<p>手动安装部署 Nginx 的小伙伴可以看一下自己的 nginx conf 有没有开启 http2。</p> 
<p>在 Linux 服务器上先找到自己博客域名的配置文件:</p> 
<pre><code>sudo vim /etc/nginx/sites-available/xxxx.com
</code></pre> 
<p>也有可能在 <code>sites-enabled</code> 目录。</p> 
<p>编辑域名配置文件，在 listen 后面加上 <code>http2</code> 即可:</p> 
<pre><code>  listen 443 ssl http2; 
</code></pre> 
<p>编辑完记得 reload 一下:</p> 
<pre><code>sudo service nginx reload
</code></pre> 
<p>除了站点配置之外，<strong>CDN 的配置也记得打开</strong>:</p> 
<ul> 
 <li><a href="https://www.tencentcloud.com/zh/document/product/228/35215">腾讯云配置 HTTP2.0</a></li> 
 <li><a href="https://help.aliyun.com/document_detail/65103.html">阿里云配置 HTTP/2</a></li> 
</ul> 
<h2>四、CDN和Nginx开启文本Gzip压缩</h2> 
<p><img decoding="async" loading="lazy" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/web-page-speed-gzip.png" alt="gzip" width="3086" height="1628" class="alignnone size-full wp-image-5050" /></p> 
<p>我们知道 html/js/css/json 都是纯文本资源，纯文本就存在压缩空间。现在 Gzip 压缩在各种主流浏览器已经非常普及了。所以我们可以在后台开启 Gzip 压缩支持，当客户端的 HTTP 请求头带有 <code>Accept-Encoding: gzip</code> 时，我们就可以返回使用 gzip 压缩过的包。可以参考 MDN 的文档: <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding">Accept-Encoding - HTTP | MDN</a></p> 
<p>gzip 的原理很有意思，大致是利用了<strong>人类语言中的“重复性”</strong>，通过把重复的片段提取出来，以backpointers形式进行编码，然后再进行霍夫曼编码得出压缩后的文本，可以达到惊人的 70-90% 压缩率。也因此 gzip 对于不怎么具有重复性的二进制数据效果不佳，对于已经混淆压缩过的各种 <code>.min.js</code> 的效率也会低于原文:<a href="https://web.dev/optimizing-content-efficiency-optimize-encoding-and-transfer/#:~:text=However%2C%20in%20practice%2C%20GZIP%20performs,yields%20little%20to%20no%20improvement.">Optimizing Encoding and Transfer Size of Text-Based Assets</a></p> 
<p>Joshua Davies的这篇长文 <a href="http://www.infinitepartitions.com/art001.html">Dissecting the GZIP format</a> 对Gzip算法进行非常详尽的解释，超级棒，有兴趣的小伙伴可以留言扣个 1 我有空可以翻译一下（挖坑小能手）。</p> 
<p>总而言之言而总之，服务端开启 gzip 就完事了。</p> 
<h2>五、对图片资源进行处理</h2> 
<p><img decoding="async" loading="lazy" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/tinypng-website.jpg" alt="tinypng" width="800" height="400" class="alignnone size-full wp-image-5052" /></p> 
<p>我们在 Web 中难免用到大量 jpg/png 格式的图片，所以第一步是确保上线前这些图片资源都经过合适的压缩。<strong>在保证图片质量的前提下尽量将体积压缩到最小</strong>。</p> 
<p>最常使用到的服务无疑是 <a href="https://tinypng.com/">tinypng.com</a> 啦。tinypng有开放 API，也有 Figma 插件，Wordpress 插件，免费额度已经非常足够，大家自行上官网取用即可。</p> 
<p>压缩完图片之后我们<strong>还需要对 <code>&lt;img&gt;</code> 标签进行 Lazy Loading 懒加载优化</strong>。</p> 
<p>浏览器的默认行为是解析完 DOM 发现有 <code>&lt;img&gt;</code> 就直接请求图片，即便这些图片并未被渲染在屏幕上。很多人进来看文章，还没看到图片就关掉页面了，这时候这些请求不仅导致浏览器体验不佳，还会浪费CDN流量。</p> 
<p>现在大部份浏览器都支持 <code>loading="lazy"</code> 的写法，可以参考:<a href="https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading">Lazy loading - Web Performance | MDN</a> 这篇文章。</p> 
<p>如果嫌浏览器的行为不够激进的话，还可以使用<a href="https://apoorv.pro/lozad.js/">Lozad.js</a>这样的库实现更激进的图片懒加载。</p> 
<h2>六、使用WebP格式的图片取代jpg/png</h2> 
<p><img decoding="async" loading="lazy" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/WebP-Image-File-Format-compressed.jpg" alt="webp format" width="800" height="450" class="alignnone size-full wp-image-5053" /></p> 
<p>Webp 是 Google 推出的一种图片格式，同等显示质量下，可比 PNG 小 26%，比JPEG 小 25-34%（<a href="https://developers.google.com/speed/webp">参考这里</a>）。</p> 
<p>但<a href="https://caniuse.com/?search=webp">并不是所有浏览器都支持 Webp</a>，所以我们可以使用各种云服务提供的云端转码能力，当浏览器支持 Webp 时，向云端请求 Webp 格式的图片。</p> 
<p>比如<a href="https://cloud.tencent.com/document/product/460">数据万象简介-腾讯云</a>这样的接口，数据万象应该在国内各家云服务都有接口，大同小异，大家根据自己购买的云服务查看文档即可。</p> 
<p>一般可在对应 CDN 的图片文件 URL 末尾拼接参数实现:</p> 
<pre><code>https://xxxx.png?imageMogr2/format/webp
</code></pre> 
<p>具体支持的参数与收取费用大家查看文档即可。</p> 
<h2>七、缓存静态HTML</h2> 
<p><img decoding="async" loading="lazy" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/web-page-speed-html-compressed.jpeg" alt="html cache" width="800" height="351" class="alignnone size-full wp-image-5058" /></p> 
<p>虽然我的博客是个“动态网站”，但我更新并不频繁，也没多少可实时变更的数据。所以大部份页面都可以在 PHP 输出一份静态 HTML 之后 Cache 起来。</p> 
<p>我使用的是 <a href="https://wordpress.org/plugins/wp-super-cache/">WP Super Cache</a> 这个插件，大家也可以使用其他的。</p> 
<p>把服务器动态生成的静态 HTML 缓存减少服务端开销。我们近期发布的 <a href="https://xyzrank.com/">《中文播客榜》xyzrank.com</a> 直接就是个静态网站。反正数据更新只需要隔一段时间跑一次，没必要接服务端接口。</p> 
<p>而且这样好处是永远不会Crash，哈哈哈。</p> 
<h2>八、What's Next?</h2> 
<p>本文总结的“老掉牙优化”技术就这么多了。我在六月份做博客优化的时候还没有想到会在七月份发布新站，结果这些东西立马就用上了。</p> 
<p>刚刚翻我过去的文章，发现写 <a href="https://justinyan.me/post/4319">Typescript</a> 是2020年，写 <a href="https://justinyan.me/post/4670">Vue 3 + Vite</a> 是2021年，这些东西一开始折腾的时候都是痛并快乐着，现在都成了能用来实现各种想法的基础工具了。</p> 
<p>我们播客的监控后台就是使用 ts + Express 做后端， Vue 3 + Vite 做前端实现的，Webpack 也没落下，用在了 <a href="https://xyzrank.com/">xyzrank.com</a> 这个公开项目上。</p> 
<p><img decoding="async" src="https://xyzrank.justinbot.com/public/og-image-2.png" /></p> 
<p>所以不断学习的感觉很棒，大家也不要觉得现在学一个什么东西可能没啥用，因为指不定哪天信手拈来就能做一个很好玩的东西了。</p> 
<p>所以我前段时间在玩的 <a href="https://justinyan.me/post/4919">Golang</a> 什么时候用上呢？🤔</p> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://http2.akamai.com/demo">HTTP/2: the Future of the Internet | Akamai</a></li> 
 <li><a href="https://caniuse.com/">Can I use... Support tables for HTML5, CSS3, etc</a></li> 
 <li><a href="https://web.dev/optimizing-content-efficiency-optimize-encoding-and-transfer/#:~:text=However%2C%20in%20practice%2C%20GZIP%20performs,yields%20little%20to%20no%20improvement.">Optimizing Encoding and Transfer Size of Text-Based Assets</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 72 &#x6211;&#x4EEC;&#x505A;&#x4E86;&#x4E2A;&#x80FD;&#x5E2E;&#x5927;&#x5BB6;&#x53D1;&#x73B0;&#x64AD;&#x5BA2;&#x7684;&#x5C0F;&#x73A9;&#x5177;</title>
        <link>https://justinyan.eth.limo/4F01D925-8A25-4604-859B-B1C946F39EDF/</link>
        <guid>https://justinyan.eth.limo/4F01D925-8A25-4604-859B-B1C946F39EDF/</guid>
        <pubDate>Tue, 19 Jul 2022 00:31:16 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/07/Podcast-Cover-v72-compressed.png" alt="" /></p> 
<p>这是两位主播做的一个小玩具: <a href="https://xyzrank.com">xyzrank.com</a></p> 
<p><a href="https://twitter.com/MapleShadow">@Justin</a>因为<a href="https://twitter.com/MapleShadow/status/1543159321915142144">抢到一张服务器的优惠券</a>，不知道用来做什么，于是写了个小工具替代之前的手动记录。<a href="https://twitter.com/hzlzh">@自力</a>觉得“这挺有意思啊！”就参与进来🤯</p> 
<p>在整理数据的过程中，我们发现了很多宝藏节目，就想着是不是可以帮助更多朋友发现喜欢的播客？于是<a href="https://xyzrank.com">《中文播客榜》</a>就诞生了🐣。 更多制作小玩具的故事，欢迎收听本期节目。</p> 
<p><em>P.S. 封面为<a href="https://www.nasa.gov/image-feature/goddard/2022/nasa-s-webb-delivers-deepest-infrared-image-of-universe-yet">NASA</a>于2022年7月11日公布的，韦伯望远镜第一张深空照片，来自SMACS 0723星团。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">02:21</span> 播客中文榜 | xyzrank.com</li> 
 <li><span class="pd-timestamp">03:16</span> 本台 OKR 首次公开</li> 
 <li><span class="pd-timestamp">08:36</span> 到底有多少中文播客呢？</li> 
 <li><span class="pd-timestamp">11:48</span> 除了 ASO 还有 PSO</li> 
 <li><span class="pd-timestamp">12:25</span> 虽然数据有限，但却十分有趣</li> 
 <li><span class="pd-timestamp">14:46</span> 小数据颁奖礼：谁是播客一哥？</li> 
 <li><span class="pd-timestamp">18:47</span> 平均播放量：最佳观众缘奖</li> 
 <li><span class="pd-timestamp">21:04</span> 平均更新频率：最佳劳模奖</li> 
 <li><span class="pd-timestamp">26:00</span> 总集数：播客生死线</li> 
 <li><span class="pd-timestamp">29:11</span> 平均时长：超长待机奖</li> 
 <li><span class="pd-timestamp">31:30</span> 单集最佳时长是多少？</li> 
 <li><span class="pd-timestamp">32:41</span> 有趣的 Apple Podcast 分类</li> 
 <li><span class="pd-timestamp">35:21</span> 播客有厂牌，声音矩阵初具规模</li> 
 <li><span class="pd-timestamp">39:05</span> 播客起名那些事</li> 
 <li><span class="pd-timestamp">42:12</span> 小宇宙，大能量</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>中文播客榜: <a href="https://xyzrank.com">xyzrank.com</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑:<a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 71 &#x8001;&#x82CF;: &#x5728;&#x5317;&#x4EAC;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/CD319991-B2A4-457E-8782-3B3468D8376D/</link>
        <guid>https://justinyan.eth.limo/CD319991-B2A4-457E-8782-3B3468D8376D/</guid>
        <pubDate>Mon, 27 Jun 2022 07:30:56 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/06/Podcast-Cover-v71-compressed.jpg" alt="" /></p> 
<p>世界各地·北京篇！</p> 
<p>我们的世界各地系列终于来到国内一线城市啦！本期节目我们邀请到在北京生活了几十年的老苏，跟我们科普一下北京的文化、美食种种有意思的话题。</p> 
<p>让我们一起跟着老北京的视角走进这座文化古都🤓</p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">00:00</span> 开场，介绍嘉宾 @老苏</li> 
 <li><span class="pd-timestamp">02:34</span> 在北京长大</li> 
 <li><span class="pd-timestamp">04:11</span> 北京排外吗？</li> 
 <li><span class="pd-timestamp">10:18</span> 北京各区分布</li> 
 <li><span class="pd-timestamp">14:14</span> 互联网公司的选址由来？</li> 
 <li><span class="pd-timestamp">18:11</span> 老苏在做什么工作？</li> 
 <li><span class="pd-timestamp">20:36</span> 北京互联网行业近况</li> 
 <li><span class="pd-timestamp">22:13</span> 政治中心，也是文化中心</li> 
 <li><span class="pd-timestamp">26:31</span> 应届生就业情况</li> 
 <li><span class="pd-timestamp">29:06</span> “你”VS“您”，如何使用“怹”？</li> 
 <li><span class="pd-timestamp">33:52</span> “儿化音”里头门道多</li> 
 <li><span class="pd-timestamp">35:08</span> 相声越来越好</li> 
 <li><span class="pd-timestamp">37:31</span> 北京天气：已经没啥问题了</li> 
 <li><span class="pd-timestamp">41:04</span> 北京游玩：怎样玩才够味？</li> 
 <li><span class="pd-timestamp">46:39</span> 北京美食：烤鸭不是北京的？</li> 
 <li><span class="pd-timestamp">52:06</span> 北京户口：有啥用？咋买房?</li> 
 <li><span class="pd-timestamp">58:27</span> 北京通勤：地铁依然很饱和</li> 
 <li><span class="pd-timestamp">1:01:43</span> 再谈“逃离北上广”？</li> 
 <li><span class="pd-timestamp">1:03:26</span> 灵魂三问</li> 
 <li><span class="pd-timestamp">1:07:04</span> 片尾曲：小柯-《藤》</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: 老苏</li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>节目中提到的<a href="https://book.douban.com/subject/30200516/">《北京四合院》一书</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/RtJJeii6KQM" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;小柯作词、作曲的《藤》</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x4F55;&#x5728;&#x4E00;&#x53F0;Mac&#x4E0A;&#x5EFA;&#x7ACB;&#x5206;&#x533A;&#x5B89;&#x88C5;&#x6B63;&#x5F0F;&#x7248;&#x4E0E;Beta&#x53CC;&#x7CFB;&#x7EDF;</title>
        <link>https://justinyan.eth.limo/A307131C-AD74-4ADC-A8E3-F36BC208331C/</link>
        <guid>https://justinyan.eth.limo/A307131C-AD74-4ADC-A8E3-F36BC208331C/</guid>
        <pubDate>Sun, 12 Jun 2022 16:37:53 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/06/Apple-WWDC22-macOS-Ventura-hero-220606_big.jpg.large_.webp" alt="" /></p> 
<p>北京时间6月7日凌晨1点钟，苹果WWDC 2022如期而至，带来了macOS Ventura的更新。目前Beta版本还只是针对开发者开放，大家可以在<a href="https://developer.apple.com/">https://developer.apple.com/</a>上下载。</p> 
<p>以往我一般会在一台旧的Mac上安装Beta版，因为不想破坏主力Mac的生产环境。今年我可以选择在我的主力MacBook上建立一个APFS分区来安装Beta版啦。</p> 
<h2>一、 对Mac进行分区</h2> 
<ol> 
 <li>首先确保你的系统至少是 macOS High Sierra 或以上的版本。</li> 
 <li>打开Disk Utility.app（在<code>/Applications/Utilities/Disk Utility.app</code>）<br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/06/macOS-Beta-001.webp" alt="//cdn.justinbot.com/macOS-Beta-001.png" /></li> 
 <li>选中侧边栏的Macintosh HD这个卷，然后点右边菜单栏上的<code>+</code>号，选择<code>Edit &gt; Add APFS Volume</code>。（只有对APFS分区的卷才可以这样操作）</li> 
 <li>输入卷名然后选择<code>Add</code><br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/06/macOS-Beta-002.webp" alt="//cdn.justinbot.com/macOS-Beta-002.png" /></li> 
</ol> 
<p>这样就分区好啦。分区的时候可以选择Size Options，我啥都没选直接默认搞定。</p> 
<h2>二、下载macOS Beta版</h2> 
<ol> 
 <li>首先你得有一个Apple Developer Account，可以到<a href="https://developer.apple.com/">官网</a>注册一个。我记得现在免费的帐号也是可以登录的。</li> 
 <li>然后我们到这个页面<a href="https://developer.apple.com/develop/">https://developer.apple.com/develop/</a>，点一下Downloads:<br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/06/macOS-Beta-003.webp" alt="//cdn.justinbot.com/macOS-Beta-003.png" /></li> 
 <li><del>找到想要下载的macOS beta然后点Install Profile下载:</del><br /> 官方Profile下载后需要从System Preferences里去更新，可以到 <a href="https://twitter.com/ClassicII_MrMac">@ClassicII_MrMac</a>的博客 <a href="https://mrmacintosh.com/">https://mrmacintosh.com/</a>下载完整的pkg安装包。(请读者下载时确认pkg链接来自苹果CDN)</li> 
 <li>下载完成后会得到一个<code>InstallAssistant.pkg</code>安装包，直接打开一步步continue到结束。</li> 
 <li>安装完成后，你的<code>/Applications</code>目录会多出来一个<code>Install macOS 13 beta.app</code>这样的App，打开它。在选择安装硬盘界面时，点击<code>Show All Disks…</code><br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/06/macOS-Beta-005.jpeg" alt="//cdn.justinbot.com/macOS-Beta-005.jpeg" /></li> 
 <li>然后选中刚才第一步里建立的<code>macOS Beta</code>分区，如果你看不到这个分区，说明请返回<strong>第一步</strong>重试。<br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/06/macOS-Beta-006.jpeg" alt="//cdn.justinbot.com/macOS-Beta-006.jpeg" /><p></p> </li> 
 <li> <p>接下来就是安装啦，安装结束后会提醒你重启，重启后直接就进入新的操作系统啦。</p> </li> 
</ol> 
<h2>三、如何旋选择用哪个macOS版本启动</h2> 
<ol> 
 <li>打开<code>System Preferences</code>（Ventura叫System Settings），选择<code>Startup Disk</code><br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/06/macOS-Beta-007-compressed.webp" alt="//cdn.justinbot.com/macOS-Beta-007.png" /></li> 
 <li>选择你想要启动的系统盘，然后重启Mac即可。<br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/06/macOS-Beta-008.webp" alt="//cdn.justinbot.com/macOS-Beta-008.jpg" /></li> 
</ol> 
<h2>四、这样就实现两个macOS系统同时存在啦</h2> 
<p>我如此这般体验了一下Ventura，比之前用两台Mac体验好的地方在于，我可以用更好的硬件来跑原生的macOS beta啦！之前都是旧的MacBook其实体验起来总是各种问题。</p> 
<p>在不安装任何第三方的Window Tiling/Management的状态下，Ventura的Stage Manager还是挺好用的。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/06/macOS-Beta-009.webp" alt="//cdn.justinbot.com/macOS-Beta-009.jpg" /></p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://support.apple.com/en-us/HT208891">Use more than one version of macOS on a Mac - Apple Support</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 70 WWDC 2022 X &#x79D1;&#x6280;&#x65E9;&#x77E5;&#x9053;</title>
        <link>https://justinyan.eth.limo/D969E450-A2D5-4E5D-A510-1F7BC6B72D1D/</link>
        <guid>https://justinyan.eth.limo/D969E450-A2D5-4E5D-A510-1F7BC6B72D1D/</guid>
        <pubDate>Wed, 08 Jun 2022 21:00:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/03/Podcast-Cover-v70.jpg" alt="" /></p> 
<p>又一年"Dub-Dub"来啦！<br /> 今年的WWDC节目我们继续跟友台<a href="https://guiguzaozhidao.fireside.fm/">《科技早知道》</a>合作录制👏</p> 
<p>这波发布会苹果不仅带来了iOS 16, iPadOS 16, macOS Ventura软件上的众多更新，M2 芯片也闪亮登场，相比去年内容还是丰富了很多的。</p> 
<p>今年我台也参加了SwiftGG举办的<a href="https://swift.gg/wwdc22/">WWDC.playground直播活动</a>，直播结束后再跟声动活泼的小伙伴们深夜录制了本期节目，又肝又开心😁</p> 
<p>感谢<a href="http://swiftgg.org/">SwiftGG</a>的邀请，感谢<a href="https://www.shengfm.cn/">声动活泼</a>的小伙伴们陪我们加班😂</p> 
<p><em>本期节目由<a href="https://www.shengfm.cn/">声动活泼</a>团队制作，<a href="https://www.xiaoyuzhoufm.com/episode/62a0a167cd9b181e67a2e88f">串台链接在此</a>。</em></p> 
<p><em>P.S. 感谢听友提醒，节目中提到的Garmin中文翻译应该是佳明。</em><br /> <em>P.S.S. 感谢听友提醒，节目中提到的CarPlay合作车企有电车，比如Volvo旗下的电车企业Polestar。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">00:53</span> iOS 16 的亮点！四川话也能被语音识别了？</li> 
 <li><span class="pd-timestamp">09:33</span> 没啥用的 Apple Wallet 也支持分期付款了！苹果离亲自造车还有多远？</li> 
 <li><span class="pd-timestamp">17:20</span> Apple Watch 能适配专业运动爱好者了？Stage Manager 让苹果生态融合更上一层？</li> 
 <li><span class="pd-timestamp">28:05</span> PassKeys让多账号更安全了？Mac 上 体验3A大作也更好了？谁为 Xcode Cloud 买单？</li> 
 <li><span class="pd-timestamp">40:19</span> iPadOS 16 让我们梦回乔布斯时代？主题演讲里看见苹果的元宇宙未来？</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>声动活泼监制: 刘灿</li> 
 <li>声动活泼后期: Luke</li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>WWDC2022 的主题演讲回放视频在这儿：<a href="https://techcrunch.com/2022/06/06/watch-apples-wwdc-keynote-live-right-here-2/">Watch Apple’s WWDC keynote live right here</a> </li> 
 <li>「Tech Crunch」关于 WWDC2022 的系列报道：<a href="https://techcrunch.com/tag/wwdc-2022/">wwdc 2022</a> </li> 
 <li>关于 WWDC2022 更多介绍的官方信息：<a href="https://developer.apple.com/wwdc22/">WWDC2022</a> </li> 
 <li>「The Verge」关于 WWDC2022 必须了解的16 件大事的总结：<a href="https://www.theverge.com/2022/6/6/23141939/apple-wwdc-2022-biggest-announcements-ios-16-macbook-air-macos-watchos">Apple WWDC 2022: the 16 biggest announcements</a> </li> 
 <li>「Wired」关于 iOS16 和 iPadOS 16 新功能的总结：<a href="https://www.wired.com/story/apple-iphone-ios-16-ipados-16-new-features/">The Top New Features in Apple’s iOS and iPadOS 16</a> </li> 
 <li><a href="https://www.inputmag.com/tech/apple-hints-ar-mixed-reality-wwdc-2022#:~:text=There%20were%20signs%20of%20a,iPadOS%2016%2C%20and%20macOS%20Ventura.&amp;text=The%20weather%20at%20Apple%20Park,for%20hosting%20Apple's%20WWDC%202022.">Apple’s AR headset was hiding in plain sight at WWDC 2022</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #28 &#x8679;&#x5F71;-&#x300A;&#x9965;&#x997F;&#x7684;&#x5973;&#x513F;&#x300B;</title>
        <link>https://justinyan.eth.limo/D960C771-34DD-40E7-ABB8-5D175B2D2830/</link>
        <guid>https://justinyan.eth.limo/D960C771-34DD-40E7-ABB8-5D175B2D2830/</guid>
        <pubDate>Wed, 01 Jun 2022 21:36:37 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://justinyan.eth.limo/D960C771-34DD-40E7-ABB8-5D175B2D2830/fyyd-028.jpg" alt="fyyd-028.jpg" /></p> 
<p>最近刚读完中国作家虹影写的自传体小说《饥饿的女儿》，同期在读的是MIT经济学教授夫妇写的<a href="https://justinyan.me/post/4901">《贫穷的本质》</a>。朋友介绍这部小说给我的时候，令他印象深刻的是其中对于女性欲望的描写。这种直白的文字在1997年应是特别不寻常的。</p> 
<p>可能我身处这个时代（2022年），只觉此类表达已司空见惯。所以我对《饥饿的女儿》中关于主角与历史老师发生的爱与性并不特别关注，也未觉“震撼”。我最喜欢的是这部小说关于重庆贫民区在三年饥荒、文革时期的背景下翔实而生动的细节。</p> 
<p>开始时我抱着读虚构小说的心态在看（我通常会跳过《序》、《前言》直奔正文），结果读完第一章我就觉得“为什么作者可以把这些贫民生活的细节写得如此深刻？”于是翻阅了作家虹影的资料，确认这就是虹影的自传体小说。</p> 
<p>虹影出生于1962年的重庆贫民区，网络上关于她的介绍一般有一句“曾经就读于北京鲁迅文学院、上海复旦大学”。为什么不是“毕业于”？或者获得某某学位？我内心有点打鼓。后来读到<a href="http://shjs.myhuayu.com/html/shjs17/m/e9503fc1170cf494fa20b1e6e0df47db.html">这篇文章</a>，大意可以理解为是特殊时代的特殊情况。虹影在《饥饿的女儿》最后一章中对此有所提及：</p> 
<p>“1989年2月，我乘火车到了北京，在鲁迅文学院作家班读书。3月份，一些小型或不太小型的聚会已在大学校园里举行，学生们在热情地辩论中国应当成为什么样的国家。4月，北京学生开始走出校门，走上街头。到处是歌声，到处是激情澎湃的人群。”</p> 
<p>再后来（1991年），虹影与任教于伦敦大学亚非学院的学者赵毅衡结婚，自此在英国生活。相较她悲惨的童年，浪迹天涯的20岁时代，在英国的日子算是巨大的飞跃了。也正是在这段时期，她开始尝试小说创作。《饥饿的女儿》首次出版于1997年，虹影的三十五岁之作，自此名声大噪。</p> 
<p>作者在这部小说里写的是自己的童年，核心人物均为自己的家人。故事围绕主角“六六”（虹影在家中排行第六，是最小的女儿）对自己身世之谜的探索，在丰富的支线展开中，生动地还原了旧时代的贫民窟生活。其中对市井群众之间的生活琐事之着墨，尤其角色刻薄之处，个个栩栩如生，跃然纸上。</p> 
<p>1962年六六出生，正是全国性饥荒的最后一年。1966年，文化大革命开始。</p> 
<blockquote> 
 <p>“‘文革’开始时，我四岁，‘文革’结束，我十四岁，十年有七年时间本应坐在教室里，大部分时间却在义务劳动：造梯田支援农村，在工厂垃圾堆里扒拾废钢铁，甚至夜里摸进工厂，偷好好的零件去交给收购站，换回一张交了废铁多少斤的证明条子。”</p> 
</blockquote> 
<p>我有点沮丧。因为我在读书的过程中常不自觉想到:"写作这个时代的文字，在今天是会从网络上消失的。"为什么我竟然要有这样的“不自觉”啊？</p> 
<p>我想本作的这段描写有异曲同工之妙：</p> 
<blockquote> 
 <p>“大人打孩子，天经地义，看热闹的人只看不劝。就跟到江边看淹死的人、山上看无头尸体、路上看突发病昏厥的人一样。人们的眼睛一般都睁着，很少伸出援手，倒不是怕死鬼替身。生生死死疯疯傻傻本是常事，不值得大惊小怪，每人早晚都要遇到。”</p> 
</blockquote> 
<p>是啊，“生生死死疯疯傻傻本是常事，不值得大惊小怪”。</p> 
<p>其实除了时代背景下的“天灾人祸”，小说的主线“六六通过各种努力探寻自己的身世之谜”已经有一个不错的悬念，在多次追问大姐的过程中一步步逼近真相，张力十足。所以阅读起来非常流畅。对于没有亲历旧时代的我来说，饥荒年代血淋淋的描写也让这部小说变得更加丰满。</p> 
<p>22.04.28/夜</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 饥饿的女儿</li> 
 <li>作者: 虹影</li> 
 <li>出版社: 四川文艺出版社</li> 
 <li>出版日期: 2016年3月（首次出版于1997年）</li> 
 <li>ISBN: B001JAFYRY</li> 
 <li>ASIN: B09964TTJ1</li> 
 <li>版本: Kindle</li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4901">枫影夜读 #27 - 《贫穷的本质》</a></li> 
 <li><a href="http://shjs.myhuayu.com/html/shjs17/m/e9503fc1170cf494fa20b1e6e0df47db.html">回望复旦作家班</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #29 David Rock -&#x300A;&#x6548;&#x7387;&#x8111;&#x79D1;&#x5B66;&#x300B;</title>
        <link>https://justinyan.eth.limo/F4BD4C93-8CB7-43AF-8FAD-2B28D10F214D/</link>
        <guid>https://justinyan.eth.limo/F4BD4C93-8CB7-43AF-8FAD-2B28D10F214D/</guid>
        <pubDate>Wed, 01 Jun 2022 21:34:16 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img src="https://cdn.justinbot.com/wp-content/uploads/2022/05/%E6%9E%AB%E5%BD%B1%E5%A4%9C%E8%AF%BB-29.jpg" alt="枫影夜读 #29 David Rock -《效率脑科学》" /></p> 
<p>《效率脑科学》是今年我读过的第一本想给五星好评的书。原作名为<em>Your Brain at Work: Strategies for Overcoming Distraction, Regaining Focus, and Working Smarter All Day Long</em>。以脑神经科学的方式讲述我们在工作中会遇到的多种困境，并一一提出解决方案。</p> 
<p>本书的整体思路跟此前我在<a href="https://justinyan.me/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">枫影夜读系列</a>中介绍过的心理学著作异曲同工，但阐述的角度不同。比如我近期翻译的<a href="https://justinyan.me/post/4911">《凯文·凯利70岁生日写的103条人生忠告》</a>，以 K.K. 自己的人生经验总结为主，能引发思考，但未详谈原因。<a href="https://justinyan.me/post/4237">陈海贤老师写的《了不起的我》</a>会从心理学的角度解释人类行为与选择的理由，但并不怎么涉及生物学基础。<a href="https://justinyan.me/post/4802">丹尼尔·列托（Daniel Nettle）写的《追究幸福》（Happiness）</a>在实践与哲学层面与本书颇有相通之处，但丹尼尔也不怎么解释其生物学基础。</p> 
<p>所以《效率脑科学》一书我最喜欢的就是作者提供的脑神经科学解释。作者David Rock来自澳大利亚，现居美国。本书原名为Your Brain At Work，主要讲述的是工作场合下的问题，对我来说也十分实用。我在阅读过程中一直有一个想法：作者肯定不止是个学者吧，他怎么能对工作中遇到的问题了解得这么深入？后来发现David不仅拥有Middlesex University脑神经科学博士学位，并且还创办了NeuroLeadership这家公司，担任公司CEO。这就难怪David对工作中的各种问题了如指掌了。</p> 
<p>本书分为五个部分，通过四幕工作场景的演绎，在层层递进中以脑神经科学的角度解释这些案例中不同角色遇到的问题，并提供可行的解决方案。其实我不是很喜欢作者写作这四幕的故事，给我的感觉是作者好像不太擅长写小说一样，哈哈。但我还是读完了，这四幕对应作者想要表达的四个概念，每一幕又分为多个独立的场景，所以其实有好几十个故事在其中。这四幕分别是：</p> 
<ol> 
 <li>第一幕 - 问题与决策</li> 
 <li>第二幕 - 在压力下保持冷静</li> 
 <li>第三幕 - 与他人协作</li> 
 <li>第四幕 - 推动改变</li> 
</ol> 
<p>现代人每天的工作和生活往往是在信息爆炸与决策爆炸中度过的。我们在工作中每天都要做的任何非重复性脑力活动，包括计划、组织、优先级排序、创作等，都需要用到大脑中一个微小、脆弱又耗能的区域，即前额皮质。</p> 
<p>这就是为什么我们很容易在每天下班后感到精疲力尽的生物学原理。最近比较热门的一部电影《瞬息全宇宙》（Everything Everywhere All at Once）开场时由杨紫琼饰演女主角需要在准备父亲生日、春节派对的同时，煮饭，准备应对下午税务局的查税任务，回答顾客的提问，还要解决自己的女儿带着女朋友回来见自己古板的外公等事件。我们在日常工作中虽然不会这么极端，但是手机上不断弹出的提醒，公司内部通信软件永远消不完的红点，邮箱中各式各样的邮件等等，又何尝不是另一种维度的爆炸呢？</p> 
<p>自从有了手机以来，让我们“永远在线”的科技给我们带来的是无时无刻不在“警戒状态”的神经紧绷。这无疑使我们本就弱小的前额皮质不堪重负。</p> 
<p>所以要想知道为什么我们在繁重的工作中表现不佳，为什么我们在面对各种问题时容易产生情绪，并在情绪高涨的同时做出糟糕的选择；要想知道怎么让我们变成一个能自如应对各种突发事件，从容自信的人，那么首先要了解我们自己。脆弱的“前额皮质”就是我们需要了解的第一关。</p> 
<p>我想这大约是“自我意识”的脑神经科学解释吧。现实中有相当多人，也许在随波逐流中从未思考过自己应该做出怎样的选择和决定。只是因为走入这个车站，刚好遇上这趟列车，于是被挤进车厢，运往下一站而已。我在我的<a href="https://justinyan.me/post/tag/%E4%B8%AA%E4%BA%BAOKR%E5%AE%9E%E8%B7%B5">《个人OKR实践系列》</a>对此有过浅层的讨论。读完这本书，我大约知道为什么会这样：因为大脑是节能的，思考这些问题是十分耗能的。</p> 
<p>也正因此，大脑更倾向于解决当前印象深刻的问题， 而不是“更重要”的问题。本书中给我最大启发的是这句：</p> 
<blockquote> 
 <p>要思考最有用的问题，而不是最有趣的。</p> 
</blockquote> 
<p>意识到大脑的弱小之后，作者把我们的意识以“舞台”作比，前额皮质能容纳的信息就是一个极小的舞台，运行这个舞台需要大量能量。舞台上一次只能容纳少数几个演员，按照作者的说法，<strong>我们一次能记住的事物的个数是 4 个，而不是 7 个。</strong>（于是最近我把我的个人OKR中的O缩减为 4 个）。这些演员上台之后，一次只能演一幕。一旦我们同时让多个演员上台，同时演绎多幕故事，我们就会陷入混乱。</p> 
<p>在陈海贤老师的《了不起的我》中有提到一个东方哲学上的“大象与骑象人”比喻，我想David在本书中给了这个比喻一个科学解释：前额皮质只占大脑总体积的4%。从进化的角度，我们的原始祖先需要保持高度警惕，一有风吹草动就警觉的人更容易活下来。而我们24小时在线的手机成了不断给我们风吹草动的假象。</p> 
<p>了解大脑的局限性之后，我们需要有意识地观察到"此时此刻我们已经分心了"，我们的注意力没有用在需要解决的问题上。5年前我在<a href="https://justinyan.me/post/3599">这篇文章</a>提到<strong>一切都需要训练</strong>，当时也提到了70年代不太科学的大脑模型，现在《效率脑科学》给出了更为中肯的解释。而我这几个月也在尝试一项新的训练：冥想。因为众所周知的原因，冥想在简体出版物中会变成“正念”，或像《“活在当下”指南》（Sam Harris - Waking Up）一样被编辑改为别扭的“专念”。</p> 
<p>我就是读了Same Harris这本 <em>Waking Up</em> 之后开始做冥想练习的。以我浅薄的训练经验来看，冥想训练给我带来的好处是：我可以在情绪产生的时候，更快地察觉到这一点，并通过呼吸观察法将我的思绪拉回到当下，跳出问题，寻找解决方案。换言之，我可以意识到我正被我的大脑控制，并反过来训练自己控制我的大脑。</p> 
<p>冥想训练很大一部分是注意力的训练。方式多种多样，其中呼吸观察是最常见的一种：找一个安全的空间，坐在椅子上，靠着椅背。轻轻闭上眼睛，开始感受肩膀放松，感受背与椅子接触的感觉，感受臀部与椅子接触的感觉。然后有意识地呼吸，把注意力集中到鼻尖，一呼一吸，一呼一吸。</p> 
<p>如果你是第一次训练，不到10秒你就会发现注意力根本无法集中在呼吸上，短短10秒钟脑子里就诞生了无数的念头。但是没有关系，每次念头出现的时候，就把它拉回来，或者随它去，告诉自己，我现在只需要关注呼吸就好。</p> 
<p><strong>一切皆需练习。</strong></p> 
<p>注意力的运用更需要练习。</p> 
<p>David Rock的这部作品，从了解大脑局限开始，到如何让这个有明显缺陷的工具，远离威胁，接近奖赏，安抚情绪，专注解决问题。贯穿其中最重要的就是这个小小舞台的导演。我想，Sam Harris的 Waking Up 已经在试图以不带宗教性质的方式解释正念、冥想的重要性，而David Rock的脑神经科学解释无疑是强有力的补充。</p> 
<p>这些年我阅读的心理学书籍让我的心智获得不少成长，除了阅读以外，最重要的就是实践训练。读过的书我大都在实践中尝试过，寻找其中适合我的部分，比如读完这本《效率脑科学》，我的个人OKR实践就开始以“The Magic Number Is 4”做修改。</p> 
<p>舞台资源很有限，要用来思考最有用的问题，而不是最有趣的问题。</p> 
<p>最后借用本书作者的书末祝福结束本文吧:</p> 
<blockquote> 
 <p>愿你保持较低的皮质醇水平，较高的多巴胺水平；<br /> 愿你的催产素浓厚而丰富，血清素又高又平稳；<br /> 愿你在一生中都能观察自己的大脑。<br /> 祝你旅途愉快！</p> 
</blockquote> 
<p><em>Justin Yan</em><br /> <em>2022年5月24日</em><br /> <em>于灯下</em></p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️⭐️(5/5)</li> 
 <li>标题: 效率脑科学</li> 
 <li>原作名: Your Brain at Work: Strategies for Overcoming Distraction, Regaining Focus, and Working Smarter All Day Long</li> 
 <li>作者: David Rock</li> 
 <li>出版社: 人民邮电出版社</li> 
 <li>出版日期: 2022年1月1日（首次出版于2009年）</li> 
 <li>ASIN: B09R7LXRD2</li> 
 <li>版本: Kindle</li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4802">枫影夜读 #23 丹尼尔·列托-《追究幸福》 </a></li> 
 <li><a href="https://justinyan.me/post/4635">枫影夜读 #18 蛤蟆先生去看心理医生</a></li> 
 <li><a href="https://justinyan.me/post/4625">枫影夜读 #17 - 岸见一郎、古贺史健《被讨厌的勇气》</a></li> 
 <li><a href="https://justinyan.me/post/4369">枫影夜读 #7 —— Kieran Setiya 《重来也不会好过现在》</a></li> 
 <li><a href="https://justinyan.me/post/4237">枫影夜读 #2 —— 陈海贤《了不起的我》</a></li> 
 <li><a href="https://justinyan.me/post/4196">枫影夜读 #1: Jordan Peterson《人生十二法则》</a></li> 
 <li><a href="https://justinyan.me/post/4911">凯文·凯利70岁生日写的103条人生忠告（中文翻译）</a></li> 
 <li><a href="https://neuroleadership.com/your-brain-at-work-the-book/">Your Brain at Work The Book - NeuroLeadership Institute</a></li> 
 <li><a href="https://neuroleadership.com/personnel/david-rock/">Dr. David Rock | Co-founder &amp; Chief Executive Officer</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 69 &#x56FE;&#x62C9;&#x9F0E;&#xFF1A;&#x5728;&#x676D;&#x5DDE;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/78D84714-507B-4FA8-9C52-0252B50B6B8A/</link>
        <guid>https://justinyan.eth.limo/78D84714-507B-4FA8-9C52-0252B50B6B8A/</guid>
        <pubDate>Tue, 31 May 2022 13:40:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/05/Podcast-Cover-v69-2-compressed.webp" alt="" /></p> 
<p>世界各地系列！强势回归！</p> 
<p>本期节目我们邀请到的是独立开发者<a href="https://imtx.me">图拉鼎</a>，他在杭州也是工作生活多年，创作过 PasteNow, One Switch, 奇点，Manico等多款受欢迎的 App。</p> 
<p>图拉鼎也是我们节目邀请到的又一位爆栈工程师，就让我们跟随他的视角，一起看看独立开发者在杭州这座城市的生活吧！</p> 
<p>P.S. 本期节目图拉鼎和自力也给我们带来听友抽奖福利哦~<br /> P.P.S. 本期录制时我台又双叒叕事故啦！😂我们的剪辑小哥努力把backup的音频与录音机的优质音频剪到一起，大家收听的时候可能会感觉有部份音质差异，请多多包涵😘</p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">00:00</span> 嘉宾介绍：@图拉鼎</li> 
 <li><span class="pd-timestamp">03:09</span> 定居杭州的独立开发者</li> 
 <li><span class="pd-timestamp">10:25</span> 为何选择全职做独立开发</li> 
 <li><span class="pd-timestamp">14:46</span> 当前营收是否良好，可持续</li> 
 <li><span class="pd-timestamp">20:21</span> 与设计师或团队的合作</li> 
 <li><span class="pd-timestamp">23:13</span> 杭州的技术氛围</li> 
 <li><span class="pd-timestamp">25:57</span> 房价、社保、签证</li> 
 <li><span class="pd-timestamp">29:09</span> 天气、交通、环境</li> 
 <li><span class="pd-timestamp">32:30</span> 杭州的良渚文化</li> 
 <li><span class="pd-timestamp">37:42</span> 杭州是美食荒漠吗？</li> 
 <li><span class="pd-timestamp">43:04</span> 咖啡探店与办公体验</li> 
 <li><span class="pd-timestamp">49:40</span> 移动端 VS Web端</li> 
 <li><span class="pd-timestamp">57:28</span> Mac生态 VS iOS生态</li> 
 <li><span class="pd-timestamp">1:02:51</span> 给全职独立开发者的建议</li> 
 <li><span class="pd-timestamp">1:07:01</span> 灵魂三问</li> 
 <li><span class="pd-timestamp">1:23:21</span> 爱人错过 - 告五人</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://imtx.me">图拉鼎</a> | <a href="https://twitter.com/tualatrix">推特</a> | <a href="https://weibo.com/tualatrix">微博</a></li> 
 <li><a href="https://fireball.studio/oneswitch">One Switch App</a>: 菜单栏多合一开关工具集合</li> 
 <li><a href="https://pastenow.app/">PasteNow App</a>: macOS &amp; iOS 剪贴板管理工具</li> 
 <li><a href="https://manico.im/">Manico App</a>: 快速启动及切换 App</li> 
 <li>自力的 <a href="https://menubarx.app/">MenubarX App</a>: 一款菜单栏浏览器</li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/6D79CYTxvOM" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;告五人 Accusefive 【愛人錯過 Somewhere in time】</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> </li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #181 David Rock -&#x300A;&#x6548;&#x7387;&#x8111;&#x79D1;&#x5B66;&#x300B;</title>
        <link>https://justinyan.eth.limo/97330CDD-2E1B-46F9-AF11-E8285DB0CC11/</link>
        <guid>https://justinyan.eth.limo/97330CDD-2E1B-46F9-AF11-E8285DB0CC11/</guid>
        <pubDate>Wed, 25 May 2022 13:46:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/05/枫影夜读-29-1.jpg" alt="枫影夜读 #29 David Rock -《效率脑科学》" /></p> 
<p>《效率脑科学》是今年我读过的第一本想给五星好评的书。原作名为<em>Your Brain at Work: Strategies for Overcoming Distraction, Regaining Focus, and Working Smarter All Day Long</em>。以脑神经科学的方式讲述我们在工作中会遇到的多种困境，并一一提出解决方案。</p> 
<p>本书的整体思路跟此前我在<a href="https://justinyan.me/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">枫影夜读系列</a>中介绍过的心理学著作异曲同工，但阐述的角度不同。比如我近期翻译的<a href="https://justinyan.me/post/4911">《凯文·凯利70岁生日写的103条人生忠告》</a>，以 K.K. 自己的人生经验总结为主，能引发思考，但未详谈原因。<a href="https://justinyan.me/post/4237">陈海贤老师写的《了不起的我》</a>会从心理学的角度解释人类行为与选择的理由，但并不怎么涉及生物学基础。<a href="https://justinyan.me/post/4802">丹尼尔·列托（Daniel Nettle）写的《追究幸福》（Happiness）</a>在实践与哲学层面与本书颇有相通之处，但丹尼尔也不怎么解释其生物学基础。</p> 
<p>所以《效率脑科学》一书我最喜欢的就是作者提供的脑神经科学解释。作者David Rock来自澳大利亚，现居美国。本书原名为Your Brain At Work，主要讲述的是工作场合下的问题，对我来说也十分实用。我在阅读过程中一直有一个想法：作者肯定不止是个学者吧，他怎么能对工作中遇到的问题了解得这么深入？后来发现David不仅拥有Middlesex University脑神经科学博士学位，并且还创办了NeuroLeadership这家公司，担任公司CEO。这就难怪David对工作中的各种问题了如指掌了。</p> 
<p>本书分为五个部分，通过四幕工作场景的演绎，在层层递进中以脑神经科学的角度解释这些案例中不同角色遇到的问题，并提供可行的解决方案。其实我不是很喜欢作者写作这四幕的故事，给我的感觉是作者好像不太擅长写小说一样，哈哈。但我还是读完了，这四幕对应作者想要表达的四个概念，每一幕又分为多个独立的场景，所以其实有好几十个故事在其中。这四幕分别是：</p> 
<ol> 
 <li>第一幕 - 问题与决策</li> 
 <li>第二幕 - 在压力下保持冷静</li> 
 <li>第三幕 - 与他人协作</li> 
 <li>第四幕 - 推动改变</li> 
</ol> 
<p>现代人每天的工作和生活往往是在信息爆炸与决策爆炸中度过的。我们在工作中每天都要做的任何非重复性脑力活动，包括计划、组织、优先级排序、创作等，都需要用到大脑中一个微小、脆弱又耗能的区域，即前额皮质。</p> 
<p>这就是为什么我们很容易在每天下班后感到精疲力尽的生物学原理。最近比较热门的一部电影《瞬息全宇宙》（Everything Everywhere All at Once）开场时由杨紫琼饰演女主角需要在准备父亲生日、春节派对的同时，煮饭，准备应对下午税务局的查税任务，回答顾客的提问，还要解决自己的女儿带着女朋友回来见自己古板的外公等事件。我们在日常工作中虽然不会这么极端，但是手机上不断弹出的提醒，公司内部通信软件永远消不完的红点，邮箱中各式各样的邮件等等，又何尝不是另一种维度的爆炸呢？</p> 
<p>自从有了手机以来，让我们“永远在线”的科技给我们带来的是无时无刻不在“警戒状态”的神经紧绷。这无疑使我们本就弱小的前额皮质不堪重负。</p> 
<p>所以要想知道为什么我们在繁重的工作中表现不佳，为什么我们在面对各种问题时容易产生情绪，并在情绪高涨的同时做出糟糕的选择；要想知道怎么让我们变成一个能自如应对各种突发事件，从容自信的人，那么首先要了解我们自己。脆弱的“前额皮质”就是我们需要了解的第一关。</p> 
<p>我想这大约是“自我意识”的脑神经科学解释吧。现实中有相当多人，也许在随波逐流中从未思考过自己应该做出怎样的选择和决定。只是因为走入这个车站，刚好遇上这趟列车，于是被挤进车厢，运往下一站而已。我在我的<a href="https://justinyan.me/post/tag/%E4%B8%AA%E4%BA%BAOKR%E5%AE%9E%E8%B7%B5">《个人OKR实践系列》</a>对此有过浅层的讨论。读完这本书，我大约知道为什么会这样：因为大脑是节能的，思考这些问题是十分耗能的。</p> 
<p>也正因此，大脑更倾向于解决当前印象深刻的问题， 而不是“更重要”的问题。本书中给我最大启发的是这句：</p> 
<blockquote>
 <p> 要思考最有用的问题，而不是最有趣的。 </p>
</blockquote> 
<p>意识到大脑的弱小之后，作者把我们的意识以“舞台”作比，前额皮质能容纳的信息就是一个极小的舞台，运行这个舞台需要大量能量。舞台上一次只能容纳少数几个演员，按照作者的说法，<strong>我们一次能记住的事物的个数是 4 个，而不是 7 个。</strong>（于是最近我把我的个人OKR中的O缩减为 4 个）。这些演员上台之后，一次只能演一幕。一旦我们同时让多个演员上台，同时演绎多幕故事，我们就会陷入混乱。</p> 
<p>在陈海贤老师的《了不起的我》中有提到一个东方哲学上的“大象与骑象人”比喻，我想David在本书中给了这个比喻一个科学解释：前额皮质只占大脑总体积的4%。从进化的角度，我们的原始祖先需要保持高度警惕，一有风吹草动就警觉的人更容易活下来。而我们24小时在线的手机成了不断给我们风吹草动的假象。</p> 
<p>了解大脑的局限性之后，我们需要有意识地观察到"此时此刻我们已经分心了"，我们的注意力没有用在需要解决的问题上。5年前我在<a href="https://justinyan.me/post/3599">这篇文章</a>提到<strong>一切都需要训练</strong>，当时也提到了70年代不太科学的大脑模型，现在《效率脑科学》给出了更为中肯的解释。而我这几个月也在尝试一项新的训练：冥想。因为众所周知的原因，冥想在简体出版物中会变成“正念”，或像《“活在当下”指南》（Sam Harris - Waking Up）一样被编辑改为别扭的“专念”。</p> 
<p>我就是读了Same Harris这本 <em>Waking Up</em> 之后开始做冥想练习的。以我浅薄的训练经验来看，冥想训练给我带来的好处是：我可以在情绪产生的时候，更快地察觉到这一点，并通过呼吸观察法将我的思绪拉回到当下，跳出问题，寻找解决方案。换言之，我可以意识到我正被我的大脑控制，并反过来训练自己控制我的大脑。</p> 
<p>冥想训练很大一部分是注意力的训练。方式多种多样，其中呼吸观察是最常见的一种：找一个安全的空间，坐在椅子上，靠着椅背。轻轻闭上眼睛，开始感受肩膀放松，感受背与椅子接触的感觉，感受臀部与椅子接触的感觉。然后有意识地呼吸，把注意力集中到鼻尖，一呼一吸，一呼一吸。</p> 
<p>如果你是第一次训练，不到10秒你就会发现注意力根本无法集中在呼吸上，短短10秒钟脑子里就诞生了无数的念头。但是没有关系，每次念头出现的时候，就把它拉回来，或者随它去，告诉自己，我现在只需要关注呼吸就好。</p> 
<p><strong>一切皆需练习。</strong></p> 
<p>注意力的运用更需要练习。</p> 
<p>David Rock的这部作品，从了解大脑局限开始，到如何让这个有明显缺陷的工具，远离威胁，接近奖赏，安抚情绪，专注解决问题。贯穿其中最重要的就是这个小小舞台的导演。我想，Sam Harris的 Waking Up 已经在试图以不带宗教性质的方式解释正念、冥想的重要性，而David Rock的脑神经科学解释无疑是强有力的补充。</p> 
<p>这些年我阅读的心理学书籍让我的心智获得不少成长，除了阅读以外，最重要的就是实践训练。读过的书我大都在实践中尝试过，寻找其中适合我的部分，比如读完这本《效率脑科学》，我的个人OKR实践就开始以“The Magic Number Is 4”做修改。</p> 
<p>舞台资源很有限，要用来思考最有用的问题，而不是最有趣的问题。</p> 
<p>最后借用本书作者的书末祝福结束本文吧:</p> 
<blockquote>
 <p> 愿你保持较低的皮质醇水平，较高的多巴胺水平；<br /> 愿你的催产素浓厚而丰富，血清素又高又平稳；<br /> 愿你在一生中都能观察自己的大脑。<br /> 祝你旅途愉快！ </p>
</blockquote> 
<p><em>Justin Yan</em><br /> <em>2022年5月24日</em><br /> <em>于灯下</em></p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️⭐️(5/5)</li> 
 <li>标题: 效率脑科学</li> 
 <li>原作名: Your Brain at Work: Strategies for Overcoming Distraction, Regaining Focus, and Working Smarter All Day Long</li> 
 <li>作者: David Rock</li> 
 <li>出版社: 人民邮电出版社</li> 
 <li>出版日期: 2022年1月1日（首次出版于2009年）</li> 
 <li>ASIN: B09R7LXRD2</li> 
 <li>版本: Kindle</li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4802">枫影夜读 #23 丹尼尔·列托-《追究幸福》 </a></li> 
 <li><a href="https://justinyan.me/post/4635">枫影夜读 #18 蛤蟆先生去看心理医生</a></li> 
 <li><a href="https://justinyan.me/post/4625">枫影夜读 #17 - 岸见一郎、古贺史健《被讨厌的勇气》</a></li> 
 <li><a href="https://justinyan.me/post/4369">枫影夜读 #7 —— Kieran Setiya 《重来也不会好过现在》</a></li> 
 <li><a href="https://justinyan.me/post/4237">枫影夜读 #2 —— 陈海贤《了不起的我》</a></li> 
 <li><a href="https://justinyan.me/post/4196">枫影夜读 #1: Jordan Peterson《人生十二法则》</a></li> 
 <li><a href="https://justinyan.me/post/4911">凯文·凯利70岁生日写的103条人生忠告（中文翻译）</a></li> 
 <li><a href="https://neuroleadership.com/your-brain-at-work-the-book/">Your Brain at Work The Book - NeuroLeadership Institute</a></li> 
 <li><a href="https://neuroleadership.com/personnel/david-rock/">Dr. David Rock | Co-founder &amp; Chief Executive Officer</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 68 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;10: Google I/O&#x53D1;&#x4E86;&#x5565;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/7086F5B9-BBC8-4057-9E20-5DCC4785E495/</link>
        <guid>https://justinyan.eth.limo/7086F5B9-BBC8-4057-9E20-5DCC4785E495/</guid>
        <pubDate>Mon, 16 May 2022 07:20:01 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/03/Podcast-Cover-v68.jpg" alt="" /></p> 
<p>5月份啦，我们又快又欢乐的科技快乐星球系列更新到了两位数，最近除了刚刚落幕的 Google I/O 大会之外，还有哪些有意思的科技新闻呢？<br /> 赶紧跟着我们的节目一起快乐一下吧！</p> 
<p>以下为本届 Google I/O 发布的硬件渲染图，对于这些新产品你有什么看法呢？快来留言区告诉我们吧！<br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/05/Google_IO_2022_hardware.webp" alt="" /></p> 
<p><em>P.S. 更正 14:57 一处口误：发布了两个软件更新，不是硬件。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">00:00</span> 科技快乐星球第10期啦！</li> 
 <li><span class="pd-timestamp">00:53</span> 1️⃣第一部分: 刚刚结束的 Google I/O 大会</li> 
 <li><span class="pd-timestamp">01:58</span> Pixel Watch 率先登场</li> 
 <li><span class="pd-timestamp">04:35</span> Pixel 6A 手机和 Tensor 芯片吐槽</li> 
 <li><span class="pd-timestamp">08:30</span> 新旗舰手机 Pixel 7 发布</li> 
 <li><span class="pd-timestamp">10:08</span> Pixel Buds Pro 真·无线降噪耳机</li> 
 <li><span class="pd-timestamp">11:06</span> 未来的 Pixel Tablet 平板电脑</li> 
 <li><span class="pd-timestamp">13:34</span> Scene Exploration 摄像头搜索</li> 
 <li><span class="pd-timestamp">14:57</span> Google Assistant 更新无需Hey Google</li> 
 <li><span class="pd-timestamp">16:12</span> 隐私特性更新: My Ad Center &amp; Removal Requests</li> 
 <li><span class="pd-timestamp">17:55</span> Android 13 发布，Android 生态：车机、智能家居发力？</li> 
 <li><span class="pd-timestamp">25:21</span> AR Glasses: 又出一款眼镜？</li> 
 <li><span class="pd-timestamp">29:58</span> 2️⃣一个时代的落幕：苹果宣布 iPod Touch 停产</li> 
 <li><span class="pd-timestamp">32:06</span> 3️⃣Elon Musk收购推特？</li> 
 <li><span class="pd-timestamp">35:18</span> 4️⃣AI作画: DALL·E 2 和 NVIDIA Studio</li> 
 <li><span class="pd-timestamp">38:56</span> 5️⃣刘畊宏毽子操爆火，腰间的肥油咔咔掉~</li> 
 <li><span class="pd-timestamp">43:35</span> 结尾，片尾曲《本草纲目》</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/8CD06hC1KGU" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;周杰倫【本草綱目】</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Golang&#x7684;&#x53CD;&#x5C04;&#xFF08;reflect&#xFF09;</title>
        <link>https://justinyan.eth.limo/C52D18FA-F51F-427F-A81D-EDD6B868B86E/</link>
        <guid>https://justinyan.eth.limo/C52D18FA-F51F-427F-A81D-EDD6B868B86E/</guid>
        <pubDate>Tue, 10 May 2022 13:45:07 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/05/Golang-Reflect-1.webp" alt="Golang的反射（reflect）" /></p> 
<h2>0. Golang struct 声明时的特殊标记</h2> 
<p>用 Golang 肯定见过类似这样的标记:</p> 
<pre><code class="golang">type Model struct {
    ID             string `json:"id"`
    CustomerMobile string `json:"customerMobile"`
    CustomerName   string `json:"customerName"`
}
</code></pre> 
<p>定义一个 <code>struct</code> 后我们可以在每一个字段(field)后面使用 `` 符号作特殊标记。<code>json:</code> 后面表示这个字段映射到 JSON 数据的自定义 Key。下面这段则是使用 GORM 作数据库字段绑定时的模型定义:</p> 
<pre><code class="golang">type Model struct {
  ID        uint           `gorm:"primaryKey"`
  CreatedAt time.Time
  UpdatedAt time.Time
  DeletedAt gorm.DeletedAt `gorm:"index"`
}
</code></pre> 
<p>那么这样的字段映射关系到底是如何实现的呢？答案是使用 Golang 的 Reflect（反射）。</p> 
<h2>1. Golang Reflect</h2> 
<p><a href="https://pkg.go.dev/reflect">官方文档</a>提供了 reflect 包的所有接口说明，我们可以使用这些接口在 run-time 修改实例对象。通常我们会使用这些接口获取当前实例的值、静态类型，或者使用 <code>TypeOf</code> 接口获取的动态类型。跟多数语言的反射功能类似。</p> 
<p>一般我们使用 GORM 一定会有打开数据库的地方:</p> 
<pre><code class="golang">func main() {
  db, err := gorm.Open(sqlite.Open("test.db"), &amp;gorm.Config{})
  if err != nil {
    panic("failed to connect database")
  }
</code><p><code class="golang">// Migrate the schema<br /> db.AutoMigrate(&amp;Model{})<br /> //…<br /> }<br /> </code></p></pre>
<p></p> 
<p><code>GORM</code> 的 <code>AutoMigrate()</code> 方法最终会在 <code>schema.go</code> 的实现中，通过 <code>func Parse(dest interface{}, cacheStore *sync.Map, namer Namer) (*Schema, error)</code> 函数取得上述 <code>&amp;Model{}</code> 这个实例对象，然后再针对它使用 reflect API 获取相关类型信息。以下是关键代码:</p> 
<pre><code class="golang">// 这里的 dest 就是 &amp;Model{} 这个对象
value := reflect.ValueOf(dest)
<p>// 这里取得 Model 的反射信息<br /> modelType := reflect.Indirect(value).Type()</p>
</code><p><code class="golang">// 这里通过遍历他的所有 Fields，针对每个 Field 作反射解析<br /> for i := 0; i &lt; modelType.NumField(); i++ {<br /> if fieldStruct := modelType.Field(i); ast.IsExported(fieldStruct.Name) {<br /> if field := schema.ParseField(fieldStruct); field.EmbeddedSchema != nil {<br /> schema.Fields = append(schema.Fields, field.EmbeddedSchema.Fields...)<br /> } else {<br /> schema.Fields = append(schema.Fields, field)<br /> }<br /> }<br /> }<br /> </code></p></pre>
<p></p> 
<p>在 <code>func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field</code> 函数中，获取上述 <code>gorm:"primaryKey"</code> 之类的额外标签信息:</p> 
<pre><code class="golang">tagSetting = ParseTagSetting(fieldStruct.Tag.Get("gorm"), ";")
</code></pre> 
<p>如此一来，我们写 <code>struct</code> 声明的时候也就把相应的 ORM 信息一并写了进去。</p> 
<h2>2. Golang reflect 有什么可玩的？</h2> 
<p>我们已经知道 <code>TypeOf()</code> 和 <code>ValueOf()</code> 是 reflect 的基础，如果我们要解析的对象是集合类型（如Array, Map等），可以使用 <code>t.Elem()</code> 遍历，如果是 <code>struct</code> 类型，则可用 <code>t.NumField()</code> 循环遍历 <code>t.Feild()</code>。</p> 
<pre><code class="golang">package main
<p>import (<br /> "fmt"<br /> "reflect"<br /> "strings"<br /> )</p>
<p>type TestData struct {<br /> ID int <code>tag1:"Tag1" tag2:"Tag2"</code><br /> Title string<br /> }</p>
<p>func main() {<br /> aSlice := []int{1, 2, 3}<br /> aStr := "Hello World!"<br /> aStrPtr := &amp;aStr<br /> aTestData := TestData{ID: 1, Title: "Test"}<br /> aTestDataPtr := &amp;aTestData</p>
<pre><code>aSliceType := reflect.TypeOf(aSlice)
aStrType := reflect.TypeOf(aStr)
aStrPtrType := reflect.TypeOf(aStrPtr)
aTestDataType := reflect.TypeOf(aTestData)
aTestDataPtrType := reflect.TypeOf(aTestDataPtr)

printReflect(aSliceType, 0)
printReflect(aStrType, 0)
printReflect(aStrPtrType, 0)
printReflect(aTestDataType, 0)
printReflect(aTestDataPtrType, 0)
</code></pre>
<p>}</p>
<p>func printReflect(t reflect.Type, depth int) {<br /> fmt.Println(strings.Repeat("\t", depth), "Type: (", t.Name(), ") Kind: (", t.Kind(), ")")<br /> switch t.Kind() {<br /> case reflect.Struct:<br /> for i := 0; i &lt; t.NumField(); i++ {<br /> field := t.Field(i)<br /> fmt.Println(strings.Repeat("\t", depth+1), "Field: (", field.Name, ") Type: (", field.Type, ") Tag: (", field.Tag, ")")<br /> if field.Tag != "" {<br /> fmt.Println(strings.Repeat("\t", depth+2), "Tag is", field.Tag)<br /> fmt.Println(strings.Repeat("\t", depth+2), "tag1 is", field.Tag.Get("tag1"), " tag2 is", field.Tag.Get("tag2"))<br /> }<br /> }<br /> case reflect.Array, reflect.Slice, reflect.Chan, reflect.Map, reflect.Ptr:<br /> fmt.Println(strings.Repeat("\t", depth+1), "Element type: (", t.Elem(), ")")<br /> }</p>
</code><p><code class="golang">}<br /> </code></p></pre>
<p></p> 
<p>上述代码的 gist <a href="https://gist.github.com/justinyanme/6ba86ee278a2f9de2062c8f98b26b606">在这里</a>。打印出来的结果如下:</p> 
<pre><code> Type: (  ) Kind: ( slice )
         Element type: ( int )
 Type: ( string ) Kind: ( string )
 Type: (  ) Kind: ( ptr )
         Element type: ( string )
 Type: ( TestData ) Kind: ( struct )
         Field: ( ID ) Type: ( int ) Tag: ( tag1:"Tag1" tag2:"Tag2" )
                 Tag is tag1:"Tag1" tag2:"Tag2"
                 tag1 is Tag1  tag2 is Tag2
         Field: ( Title ) Type: ( string ) Tag: (  )
 Type: (  ) Kind: ( ptr )
         Element type: ( main.TestData )
</code></pre> 
<p>在 run-time 拿到了这些数据之后，我们就可以动态修改他们的值，比如说:</p> 
<pre><code class="go">func main() {
    // 声明一个 string
    aStr := "Hello World!"
<pre><code>// 修改它的指针内容
aStrValue := reflect.ValueOf(&amp;amp;aStr)
aStrValue.Elem().SetString("Hello, Goodbye")

// 我们也可以修改一个 struct
aTestData := TestData{ID: 1, Title: "Test"}
aType := reflect.TypeOf(aTestData)

// 手动创建一个新对象
aVal := reflect.New(aType)
aVal.Elem().Field(0).SetInt(2)
aVal.Elem().Field(1).SetString("Test2")
aTestData2 := aVal.Elem().Interface().(TestData)
fmt.Printf("%+v, %d, %s\n", aTestData2, aTestData2.ID, aTestData2.Title)
// 输出如下内容:
// {ID:2 Title:Test2}, 2, Test2
</code></pre>
</code><p><code class="go">}<br /> </code></p></pre>
<p></p> 
<p>除了动态创建对象还可以创建函数。</p> 
<pre><code class="go">func MakeTimedFunction(f interface{}) interface{} {
    rf := reflect.TypeOf(f)
    if rf.Kind() != reflect.Func {
        panic("expects a function")
    }
    vf := reflect.ValueOf(f)
    wrapperF := reflect.MakeFunc(rf, func(in []reflect.Value) []reflect.Value {
        start := time.Now()
        out := vf.Call(in)
        end := time.Now()
        fmt.Printf("calling %s took %v\n", runtime.FuncForPC(vf.Pointer()).Name(), end.Sub(start))
        return out
    })
    return wrapperF.Interface()
}
<p>func timeMe() {<br /> fmt.Println("starting")<br /> time.Sleep(1 * time.Second)<br /> fmt.Println("ending")<br /> }</p>
<p>func timeMeToo(a int) int {<br /> fmt.Println("starting")<br /> time.Sleep(time.Duration(a) * time.Second)<br /> result := a * 2<br /> fmt.Println("ending")<br /> return result<br /> }</p>
<p>func main() {<br /> timed := MakeTimedFunction(timeMe).(func())<br /> timed()<br /> timedToo := MakeTimedFunction(timeMeToo).(func(int) int)<br /> fmt.Println(timedToo(2))</p>
<pre><code>// 输出:
// starting
// ending
// calling main.timeMe took 1.001339833s
// starting
// ending
// calling main.timeMeToo took 2.001299666s
// 4
</code></pre>
</code><p><code class="go">}<br /> </code></p></pre>
<p></p> 
<p>reflect还有一堆可以 <code>Make</code> 的东西：</p> 
<pre><code class="go">func MakeChan(typ Type, buffer int) Value
func MakeFunc(typ Type, fn func(args []Value) (results []Value)) Value
func MakeMap(typ Type) Value
func MakeMapWithSize(typ Type, n int) Value
func MakeSlice(typ Type, len, cap int) Value
</code></pre> 
<p>理论上以前在 iOS 上通过 Objective-C Runtime 实现的 JSPatch，也可以在 Golang 使用 reflect 来实现，不过完全没有必要。</p> 
<h2>3. 所以</h2> 
<p>可以看到使用 reflect 来构建对象不仅代码写得很绕，而且没有编译器静态检查，很容易写出有问题的代码。目前看来用在 GORM, JSON, YAML 之类的声明是很不错的。ORM 实际上是把一种数据结构转换成另一种，所以我们也可以考虑用 reflect 来实现 <code>AToB()</code> 这样的转换器，而无需显式编写胶水代码。</p> 
<h2>4. 参考资料</h2> 
<ul> 
 <li><a href="https://medium.com/capital-one-tech/learning-to-use-go-reflection-822a0aed74b7">Learning to Use Go Reflection. Post 5 in a Series on Go | by Jon Bodner | Capital One Tech | Medium</a></li> 
 <li><a href="https://github.com/go-gorm/gorm">go-gorm/gorm: The fantastic ORM library for Golang, aims to be developer friendly</a></li> 
 <li><a href="https://gorm.io/docs/index.html">GORM Guides | GORM - The fantastic ORM library for Golang, aims to be developer friendly.</a></li> 
 <li><a href="https://pkg.go.dev/reflect">reflect package - reflect - pkg.go.dev</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #180 &#x8679;&#x5F71; -&#x300A;&#x9965;&#x997F;&#x7684;&#x5973;&#x513F;&#x300B;</title>
        <link>https://justinyan.eth.limo/97177E64-475B-4CEA-99B7-599BC89242BB/</link>
        <guid>https://justinyan.eth.limo/97177E64-475B-4CEA-99B7-599BC89242BB/</guid>
        <pubDate>Sat, 07 May 2022 13:31:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/05/fyyd-028-1.jpg" alt="枫影夜读 #28 虹影-《饥饿的女儿》" /></p> 
<p>最近刚读完中国作家虹影写的自传体小说《饥饿的女儿》，同期在读的是MIT经济学教授夫妇写的<a href="https://justinyan.me/post/4901">《贫穷的本质》</a>。朋友介绍这部小说给我的时候，令他印象深刻的是其中对于女性欲望的描写。这种直白的文字在1997年应是特别不寻常的。</p> 
<p>可能我身处这个时代（2022年），只觉此类表达已司空见惯。所以我对《饥饿的女儿》中关于主角与历史老师发生的爱与性并不特别关注，也未觉“震撼”。我最喜欢的是这部小说关于重庆贫民区在三年饥荒、文革时期的背景下翔实而生动的细节。</p> 
<p>开始时我抱着读虚构小说的心态在看（我通常会跳过《序》、《前言》直奔正文），结果读完第一章我就觉得“为什么作者可以把这些贫民生活的细节写得如此深刻？”于是翻阅了作家虹影的资料，确认这就是虹影的自传体小说。</p> 
<p>虹影出生于1962年的重庆贫民区，网络上关于她的介绍一般有一句“曾经就读于北京鲁迅文学院、上海复旦大学”。为什么不是“毕业于”？或者获得某某学位？我内心有点打鼓。后来读到<a href="http://shjs.myhuayu.com/html/shjs17/m/e9503fc1170cf494fa20b1e6e0df47db.html">这篇文章</a>，大意可以理解为是特殊时代的特殊情况。虹影在《饥饿的女儿》最后一章中对此有所提及：</p> 
<p>“1989年2月，我乘火车到了北京，在鲁迅文学院作家班读书。3月份，一些小型或不太小型的聚会已在大学校园里举行，学生们在热情地辩论中国应当成为什么样的国家。4月，北京学生开始走出校门，走上街头。到处是歌声，到处是激情澎湃的人群。”</p> 
<p>再后来（1991年），虹影与任教于伦敦大学亚非学院的学者赵毅衡结婚，自此在英国生活。相较她悲惨的童年，浪迹天涯的20岁时代，在英国的日子算是巨大的飞跃了。也正是在这段时期，她开始尝试小说创作。《饥饿的女儿》首次出版于1997年，虹影的三十五岁之作，自此名声大噪。</p> 
<p>作者在这部小说里写的是自己的童年，核心人物均为自己的家人。故事围绕主角“六六”（虹影在家中排行第六，是最小的女儿）对自己身世之谜的探索，在丰富的支线展开中，生动地还原了旧时代的贫民窟生活。其中对市井群众之间的生活琐事之着墨，尤其角色刻薄之处，个个栩栩如生，跃然纸上。</p> 
<p>1962年六六出生，正是全国性饥荒的最后一年。1966年，文化大革命开始。</p> 
<blockquote>
 <p> “‘文革’开始时，我四岁，‘文革’结束，我十四岁，十年有七年时间本应坐在教室里，大部分时间却在义务劳动：造梯田支援农村，在工厂垃圾堆里扒拾废钢铁，甚至夜里摸进工厂，偷好好的零件去交给收购站，换回一张交了废铁多少斤的证明条子。” </p>
</blockquote> 
<p>我有点沮丧。因为我在读书的过程中常不自觉想到:"写作这个时代的文字，在今天是会从网络上消失的。"为什么我竟然要有这样的“不自觉”啊？</p> 
<p>我想本作的这段描写有异曲同工之妙：</p> 
<blockquote>
 <p> “大人打孩子，天经地义，看热闹的人只看不劝。就跟到江边看淹死的人、山上看无头尸体、路上看突发病昏厥的人一样。人们的眼睛一般都睁着，很少伸出援手，倒不是怕死鬼替身。生生死死疯疯傻傻本是常事，不值得大惊小怪，每人早晚都要遇到。” </p>
</blockquote> 
<p>是啊，“生生死死疯疯傻傻本是常事，不值得大惊小怪”。</p> 
<p>其实除了时代背景下的“天灾人祸”，小说的主线“六六通过各种努力探寻自己的身世之谜”已经有一个不错的悬念，在多次追问大姐的过程中一步步逼近真相，张力十足。所以阅读起来非常流畅。对于没有亲历旧时代的我来说，饥荒年代血淋淋的描写也让这部小说变得更加丰满。</p> 
<p>22.04.28/夜</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 饥饿的女儿</li> 
 <li>作者: 虹影</li> 
 <li>出版社: 四川文艺出版社</li> 
 <li>出版日期: 2016年3月（首次出版于1997年）</li> 
 <li>ISBN: B001JAFYRY</li> 
 <li>ASIN: B09964TTJ1</li> 
 <li>版本: Kindle</li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4901">枫影夜读 #27 - 《贫穷的本质》</a></li> 
 <li><a href="http://shjs.myhuayu.com/html/shjs17/m/e9503fc1170cf494fa20b1e6e0df47db.html">回望复旦作家班</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x51EF;&#x6587;&#xB7;&#x51EF;&#x5229;70&#x5C81;&#x751F;&#x65E5;&#x5199;&#x7684;103&#x6761;&#x4EBA;&#x751F;&#x5FE0;&#x544A;&#xFF08;&#x4E2D;&#x6587;&#x7FFB;&#x8BD1;&#xFF09;</title>
        <link>https://justinyan.eth.limo/520B5910-0595-445E-8D41-E3701EA528C6/</link>
        <guid>https://justinyan.eth.limo/520B5910-0595-445E-8D41-E3701EA528C6/</guid>
        <pubDate>Mon, 02 May 2022 22:30:35 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/05/kevin_kelly-1-1.jpg" alt="凯文·凯利70岁生日写的103条人生忠告（中文翻译）" /></p> 
<p>2022年4月28日，凯文·凯利（Kevin Kelly）在他的网站上发布了 70 岁生日的文章：<a href="https://kk.org/thetechnium/103-bits-of-advice-i-wish-i-had-known/">103 Bits of Advice I Wish I Had Known</a>，意为：103条我希望早点知道的人生忠告。他 <a href="https://kk.org/thetechnium/99-additional-bits-of-unsolicited-advice/">69 岁</a>，<a href="https://kk.org/thetechnium/68-bits-of-unsolicited-advice/">68 岁</a>生日时也写了这样的文章。朋友转发给我之后，我觉得有些内容很有启发，于是在做笔记的时候想：不如直接翻译过来好了。</p> 
<p>K.K. 写的这103句忠告既幽默又睿智，但毕竟只是短短一句话，缺乏上下文，也就不够精确。我觉得读者朋友可以不必咬文嚼字，只要这些话能引起思考就已经很不错了。以下是我在阅读过程中觉得有启发的部分，不想看我的思考的小伙伴也可以<a href="#full_translated">点这里</a>直接跳转到翻译。</p> 
<hr /> 
<p style="text-align: center; margin: 0;">以下是我觉得有启发的几句</p> 
<hr /> 
<p>大部分 K.K. 写的我都深表赞同，这里只选出部分我认为比较有意思的，没写在这里的不代表我不认同。比如关于密码管理器这点，我认同并且实践多年，自然无需多言。</p> 
<blockquote>
 <p> 1.99%的时间里，真正关键的时刻就是此刻。<br /> About 99% of the time, the right time is right now. </p>
</blockquote> 
<p>我们很常听说“我要等到某某时刻就去做某某事情”，但其实多数时候，the timing is never right。寻找合适时机往往只是我们拖延的借口罢了。</p> 
<blockquote>
 <p> 3.不要为你不想成为的人工作。<br /> Dont ever work for someone you dont want to become.<br /> 48.你无法让聪明的人只为了钱而特别努力地工作。<br /> You cannot get smart people to work extremely hard just for money. </p>
</blockquote> 
<p>一般来说，办公室里比你多工作三五年的人就是你未来的样子，你的老板/上级就是你未来会成为的人。一个聪明的人找工作的时候自然希望这份工作能带来正面的作用，不仅因为钱，所以会被领袖吸引进某家公司是很正常的事情。但是这种希望是会变的，当你有一天发现你根本不想成为你的老板那样的人时，就是你该离开的时候了。</p> 
<blockquote>
 <p> 4.好好耕耘12个爱你的人的关系，因为这12个人远比1200万人喜欢你重要得多。<br /> Cultivate 12 people who love you, because they are worth more than 12 million people who like you. </p>
</blockquote> 
<p>我认真使用个人OKR帮助我回顾与计划以来，“人际关系”一直在我其中一个O里，但是目前我做得远不够好，所以看到这句我深有感慨。</p> 
<blockquote>
 <p> 7.“但是”之前的话都是废话。<br /> Anything you say before the word “but” does not count. </p>
</blockquote> 
<p>就是说，我上面关于OKR那句话，在“但是”之前都是废话。</p> 
<blockquote>
 <p> 5.不要一直重复犯错；试着去犯新的错。<br /> Dont keep making the same mistakes; try to make new mistakes.<br /> 97.重复别人是一个很好的开始。重复你自己则是一个令人失望的终点。<br /> Copying others is a good way to start. Copying yourself is a disappointing way to end. </p>
</blockquote> 
<p>犯错需要勇气，这大概是为什么大多数人都不会主动去犯新的错误的重要原因。Tim Urban 在 <a href="https://waitbutwhy.com/2018/04/picking-career.html">How to Pick a Career (That Actually Fits You) — Wait But Why</a> 这篇文章中对此有不错的分析，推荐阅读。Tim Urban也在文末说到:"My goal for the future isn’t to avoid mistakes, it’s for the mistakes I do make to be my own."</p> 
<blockquote>
 <p> 8.当你原谅其他人的时候，他们不一定会知道这件事，但你自己却会被治愈。原谅不是我们给予他人的东西；而是我们给自己的礼物。<br /> When you forgive others, they may not notice, but you will heal. Forgiveness is not something we do for others; it is a gift to ourselves. </p>
</blockquote> 
<p>原谅他人，其实是在治愈自己。我想起台湾的电视剧<a href="https://movie.douban.com/subject/30181230/">《我们与恶的距离》</a>，其中“原谅”在几个关键角色身上都是一道极难跨越的坎。</p> 
<blockquote>
 <p> 10.无论什么时候，看到争论基于两个对立面进行时，要找到第三个面。<br /> Whenever there is an argument between two sides, find the third side.<br /> 16.如果在一个游戏中，获胜变得过于重要，那么我们可以修改游戏规则以便从中获得更多乐趣。而修改规则本身就可以成为一个新的游戏。<br /> If winning becomes too important in a game, change the rules to make it more fun. Changing rules can become the new game.<br /> 88.当你跟别人谈判的时候，不要把目光瞄准蛋糕中最大的一片；要瞄准如何把蛋糕做大。<br /> When negotiating, dont aim for a bigger piece of the pie; aim to create a bigger pie. </p>
</blockquote> 
<p>这几句都颇有跳出圈子的感觉，当你发现形成非黑即白的局面，深陷其中难以解脱时，试着跳脱出来。</p> 
<blockquote>
 <p> 18.生产力反而经常分散我们的注意力。不要试图寻找更快完成任务的方法，而是把精力放在你根本不想停下来的任务上。<br /> Productivity is often a distraction. Don’t aim for better ways to get through your tasks as quickly as possible, rather aim for better tasks that you never want to stop doing. </p>
</blockquote> 
<p>读到这句我深有同感，以前“枫影夜读”还名为“每周读书”系列的时候，为了“每周”这个看似有用的目标，我不得不放弃一些无法短时间内读完的书，反而损害了我本身“喜欢阅读”这件事的体验。还不如就继续喜欢阅读，然后顺便写点书评来得愉悦与持久。</p> 
<blockquote>
 <p> 14.人生的课程将以它们需要的顺序出现在你面前。任何你需要掌握的课程其实都在你身上。当你真正掌握了一节课之后，下一节课就会出现。如果你还活着，这就意味着你还有课程需要学习。<br /> Life lessons will presented to you in the order they are needed. Everything you need to master the lesson is within you. Once you have truly learned a lesson, you will be presented with the next one. If you are alive, that means you still have lessons to learn.<br /> 21.你作为一个意识生物的成长，将以你愿意接受的令人不舒服的对话的次数来衡量。<br /> Your growth as a conscious being is measured by the number of uncomfortable conversations you are willing to have.<br /> 30.请教一位你崇拜的人: 他们的幸运转折往往来自于跟主要目标无关的弯路。所以拥抱这种弯路。对任何人来说，人生都不是一条直线。<br /> Ask anyone you admire: Their lucky breaks happened on a detour from their main goal. So embrace detours. Life is not a straight line for anyone.<br /> 34.不要等着暴风雨自己过去；要在雨中跳舞。<br /> Don’t wait for the storm to pass; dance in the rain.<br /> 44.你在低谷时做的事情比在好日子时做的更重要。<br /> What you do on your bad days matters more than what you do on your good days.<br /> 85.你跟那些惹怒你的事物一样大。<br /> You are as big as the things that make you angry. </p>
</blockquote> 
<p>人的一生很奇妙，我们会在感觉很美好的同时经历许多的不愉快。而现代人“成长”的标志之一似乎就是能够适应这种复杂的痛苦。不管是面对复杂的人事也好，超出预期的事件也罢，不管是遇到跌宕起伏的股市也好，碰上别人都是傻逼的事情也罢，试着把这些都当作锻炼自己心智的课程。下一次你碰到一样的情况，如果能至少表面上镇静地应对的话，那就说明你可以学下一课了。</p> 
<blockquote>
 <p> 24.你的努力（锻炼、陪伴、工作）的一致性远比数量重要。没有什么可以击败每天坚持做的小事，这比偶然做的事情重要得多。<br /> The consistency of your endeavors (exercise, companionship, work) is more important than the quantity. Nothing beats small things done every day, which is way more important than what you do occassionally. </p>
</blockquote> 
<p>除了不积跬步无以至千里这样的至理名言以外，我之前<a href="https://justinyan.me/post/4352">写过文章介绍的 Atomic Habits 一书</a>对此有更为细致的分析，推荐阅读。</p> 
<blockquote>
 <p> 27.你必须具备的三种能力: 在确认一件事情能运作之前永不言弃的能力，在确认一件事情无法工作下去时放弃他的能力，以及信任能帮助你区分二者的人。<br /> Three things you need: The ability to not give up something till it works, the ability to give up something that does not work, and the trust in other people to help you distinguish between the two. </p>
</blockquote> 
<p>通常来说，普通人往往在还没成功之前就放弃，却迟迟不愿放弃前景糟糕的事情，哪怕有人这么明确地跟他说了，他也不愿意相信。什么？你问我这个普通人是不是我？还好这里不是TVB😂</p> 
<blockquote>
 <p> 38.设定一个野心得荒谬的目标的好处是，上限足够高，这样即使最后失败了，以通常的标准来衡量也可以算某种程度上的成功。<br /> The advantage of a ridiculously ambitious goal is that it sets the bar very high so even in failure it may be a success measured by the ordinary. </p>
</blockquote> 
<p>此理与 OKR 相同。</p> 
<blockquote>
 <p> 39.了解自己的一个好办法是，仔细地分析自己做的会惹怒其他人的每一件事情。<br /> A great way to understand yourself is to seriously reflect on everything you find irritating in others. </p>
</blockquote> 
<p>以前我从 <a href="http://steveshuo.com/">Steve说播客</a>学到：“最好的观察自己的时候，就是产生情绪的时候”。我记住了这点并由外向内观察了数年，而 K.K. 提到的这点则是从自己往外看时的分析，是个不错的补充。</p> 
<blockquote>
 <p> 50.所有东西的90%都是垃圾。如果你觉得自己不喜欢歌剧，浪漫小说，抖音，乡村音乐，素食，NFTs，那你可以试试看自己能否找出不是垃圾的10%。<br /> 90%of everything is crap. If you think you don’t like opera, romance novels, TikTok, country music, vegan food, NFTs, keep trying to see if you can find the 10% that is not crap. </p>
</blockquote> 
<p>今年（2022年）我听了大量我以前根本不会听的音乐，经常在推上以 <a href="https://twitter.com/search?q=%23%E4%BB%8A%E6%97%A5%E5%94%B1%E7%89%87&amp;src=typed_query">#今日唱片</a> 分享音乐。我开始发现诸多音乐流派、门类的奇妙之处，甚至开始<a href="https://replay.cafe/">发布音乐分享 newsletter</a>。有太多的音乐在一开始听的时候都是很难接受不好入耳的，我们需要更多的训练来形成欣赏的能力。而最开始的时候，需要一点原初动力，K.K. 这个 10% 不妨成为引发好奇心的导火索。</p> 
<blockquote>
 <p> 51.你如何对待那些对你无能为力的人，将成为评价你的标准。<br /> You will be judged on how well you treat those who can do nothing for you.<br /> 54.你无法说服一个人接受一个他自己也无法说服他自己的理念。<br /> You cant reason someone out of a notion that they didn’t reason themselves into. </p>
</blockquote> 
<p>没有什么必要说服另一个人，毕竟这世界上还是有很多人坚信地球是平的。</p> 
<blockquote>
 <p> 55.最好的工作是你需要被拉伸才能合格的工作。其实最好只申请你的能力尚不合格的工作。<br /> Your best job will be one that you were unqualified for because it stretches you. In fact only apply to jobs you are unqualified for.<br /> 62.”我现在该做什么？”的唯一有效回答是，先找出“我想成为什么人？”的答案。<br /> The only productive way to answer “what should I do now?” is to first tackle the question of “who should I become?” </p>
</blockquote> 
<p>好吧，那我想成为什么人呢？</p> 
<blockquote>
 <p> 89.如果你重复今天你做的事情365天，那一年后你会成为你想成为的人吗？<br /> If you repeated what you did today 365 more times will you be where you want to be next year? </p>
</blockquote> 
<p>我刚刚问了这个问题，你立刻就把我否定了啊，OMG🤦‍♂️<br /> 这个问题太直击灵魂了啊！</p> 
<blockquote>
 <p> 92.我们的后代将创造令我们惊叹的成就，但其实只要我们的足够的想象力，他们会创造的部分东西，用今天的材料和工具就已经能实现了。所以，要想得更大一点。<br /> Our descendants will achieve thins that will amaze us, yet a portion of what they will create could have been made with today’s materials and tools if we had had the imagination. Think bigger.<br /> 93.为了丰厚的回报，请对你完全不感兴趣的事物保持好奇。<br /> For a great payoff be especially curious about the things you are not interested in.<br /> 95.所有的突破在一开始都是看起来很可笑和荒谬的。事实上如果它在一开始看起来不够可笑和荒谬的话，它也称不上是一种突破。<br /> Every breakthrough is at first laughable and ridiculous. In fact if it did not start out laughable and ridiculous, it is not a breakthrough. </p>
</blockquote> 
<p>看到这里，我在思考是不是我应该要试着在我完全不感兴趣的事情里，寻找那 10%？</p> 
<blockquote>
 <p> 99.与其让你的人生规避“出人意料”，还不如直接瞄着它们而去。<br /> Rather than steering your life to avoid surprises, aim directly for them.<br /> 103.防止变老的最佳实践是保持惊讶。<br /> The chief prevention against getting old is to remain astonished. </p>
</blockquote> 
<p>保持好奇心是一个创造者应该有的常态，而可笑的 breakthrough，需要一点想象力加持的出人意料，会不会就隐藏在我不感兴趣的 10% 里呢？</p> 
<p>感谢 K.K. 在 70 岁生日时的真诚分享，我深受启发。</p> 
<p><em>P.S. 写完才发现原来已经有其他人翻译过了。Anyway，我有我自己的思考就足够了。</em></p> 
<hr /> 
<p id="full_translated" style="text-align: center; margin: 0;">以下是全文翻译</p> 
<hr /> 
<p>今天是我的生日。我今年70岁了。活到现在我也算学到了一点可能可以帮助到其他的人东西。过去几年，我每年都会写一点人生建议之类的东西（当然没人请我写这个）。出乎我意料之外的是，今年好像我想讲的话特别多。所以接下来是我给各位读者的一份小小的礼物：我希望我年轻时就知道的103条人生智慧。</p> 
<p>（之前写的东西大家可以看<a href="https://kk.org/thetechnium/99-additional-bits-of-unsolicited-advice/">这里</a>，和<a href="https://kk.org/thetechnium/68-bits-of-unsolicited-advice/">这里</a>）。</p> 
<ol> 
 <li>99%的时间里，真正关键的时刻就是此刻。</li> 
 <li>除了你以外，没有人会真的记得你拥有什么东西。</li> 
 <li>一定不要为你不希望成为的人工作。</li> 
 <li>好好耕耘12个爱你的人的关系，因为这12个人远比1200万人喜欢你重要得多。</li> 
 <li>不要一直重复犯错；试着去犯新的错。</li> 
 <li>如果你在街上停下来聆听音乐人或街头艺人的表演一分钟，那么你欠他们一美元。</li> 
 <li>“但是”之前的话都是废话。</li> 
 <li>当你原谅其他人的时候，他们不一定会知道这件事，但你自己却会被治愈。原谅不是我们给予他人的东西；而是我们给自己的礼物。</li> 
 <li>礼貌几乎没有成本。上完厕所之后，把马桶座放下。进电梯之前，让里面人先出来。把购物车推回到商场指定的位置。借了别人的东西，让它以比借到的时候更好的状态（比如把消耗了的材料装满，比如把东西清洁好）还回去。</li> 
 <li>无论什么时候，看到争论基于两个对立面进行时，要找到第三个面。</li> 
 <li>“效率”被过度高估；“偷懒”被过度贬低。有规律地安排休息日、休假、度假、小憩、漫无目的地散步和暂停时间对任何一种高产出状态都至关重要。最佳职业伦理需要具备一个好的休闲伦理。</li> 
 <li>当你在领导时，你真正的任务是创造出更多领导者，而不是更多追随者。</li> 
 <li>私下批评，公开赞扬。</li> 
 <li>人生的课程将以它们需要的顺序出现在你面前。任何你需要掌握的课程其实都在你身上。当你真正掌握了一节课之后，下一节课就会出现。如果你还活着，这就意味着你还有课程需要学习。</li> 
 <li>学生的责任是从老师身上学会一切，老师的责任是从学生身上学会一切。</li> 
 <li>如果在一个游戏中，获胜变得过于重要，那么我们可以修改游戏规则以便从中获得更多乐趣。而修改规则本身就可以成为一个新的游戏。</li> 
 <li>当你跟投资人要钱的时候，他会给你建议；而如果你跟他要建议，他会给你钱。</li> 
 <li>生产力反而经常分散我们的注意力。不要试图寻找更快完成任务的方法，而是把精力放在你根本不想停下来的任务上。</li> 
 <li>及时支付你的欠款给卖主，员工，承包商。下一次你他们会第一时间跑来跟你合作。</li> 
 <li>我们对自己说的最大的谎言就是：“我不需要把这些写下来，我会记得的。”</li> 
 <li>你作为一个意识生物的成长，将以你愿意接受的令人不舒服的对话的次数来衡量。</li> 
 <li>自信地发言就像你是对的一样，仔细的聆听就像你是错的一样。</li> 
 <li>方便的测量方法：双手展开与肩膀平齐，此时从左手指尖到右手指尖的长度就是你的身高。</li> 
 <li>你的努力（锻炼、陪伴、工作）的一致性远比数量重要。没有什么可以击败每天坚持做的小事，这比偶然做的事情重要得多。</li> 
 <li>艺术创造并不自私；它是为我们其他人而作的。如果你不好好创作，你就是在欺骗我们。</li> 
 <li>永远不要问一位女士她是否怀孕了。等她自己告诉你。</li> 
 <li>你必须具备的三种能力: 在确认一件事情能运作之前永不言弃的能力，在确认一件事情无法工作下去时放弃他的能力，以及信任能帮助你区分二者的人。</li> 
 <li>公开演讲的时候，常作暂停。开始讲新内容的之前暂停一下，讲完你觉得重要的内容之后暂停一下，把暂停作为让听众吸收内容的缓冲。</li> 
 <li>“准时”从不存在。你要嘛迟到要嘛早到。这是你的选择。</li> 
 <li>请教一位你崇拜的人: 他们的幸运转折往往来自于跟主要目标无关的弯路。所以拥抱这种弯路。对任何人来说，人生都不是一条直线。</li> 
 <li>在互联网上寻找正确答案的最佳实践是发布一个明显错误的答案，然后等待其他人纠正你。</li> 
 <li>奖励好行为比惩罚坏行为带来的结果要好上十倍，尤其对象是小孩和动物时。</li> 
 <li>要花跟写邮件正文一样的时间来雕琢邮件标题，因为很多时候邮件标题是人们唯一会读的东西。</li> 
 <li>不要等着暴风雨自己过去；要在雨中跳舞。</li> 
 <li>老板/雇主在查看求职者的推荐信时，一般不太愿意或者被禁止说出负面评价。这时候你可以留言说：“如果你觉得这位求职者很不错的话请通知我哦。”如果他们没有回复的话那就是负评价。</li> 
 <li>使用密码管理器: 更安全，更易用，更好。</li> 
 <li>教育的一半作用是学习哪些东西可以被忽略。</li> 
 <li>设定一个野心得荒谬的目标的好处是，上限足够高，这样即使最后失败了，以通常的标准来衡量也可以算某种程度上的成功。</li> 
 <li>了解自己的一个好办法是，仔细地分析自己做的会惹怒其他人的每一件事情。</li> 
 <li>住酒店的时候记得把所有的东西都放在可以看得到的地方，不要放进抽屉里，都堆在一个地方。这样你在离店的时候永远不会忘记任何东西。如果有些东西需要放在一边的，比如充电器，那你可以放多两件大的东西在它隔壁，因为相比起一件东西，你更不可能同时忘记拿三件。</li> 
 <li>拒绝或转移别人的赞美是不礼貌的。可以用感谢接受它，即使你相信你根本不值得这个赞美。</li> 
 <li>纪念碑旁的那块说明，必读。</li> 
 <li>当你获得某种成功的时候，你可能会有种自己的能力不配这个位置，自己是个骗子感觉。我在骗人吗？但如果你创造了某种只有你独特的天赋与经验才做得到的东西，那你就绝对不是一个骗子。你是注定要做这件事情的。做好只有你才能做的事情，这是你的责任所在。</li> 
 <li>你在低谷时做的事情比在好日子时做的更重要。</li> 
 <li>做对人有益的东西。</li> 
 <li>当你打开一罐油漆时，无论你有多么小心，你的衣服一定会沾上一点，即便只是很小一点。所以记得穿合适的衣服。</li> 
 <li>在汽车旅行的路上让小孩子乖乖听话的办法：捎一袋他们最喜欢的糖果，每次只要不乖就扔一把出去。</li> 
 <li>你无法让聪明的人只为了钱而特别努力地工作。</li> 
 <li>当你不知道应该为了某件工作给人支付多少费用的时候，你可以问他“你觉得给多少是合适的”，他们通常会给出合适的报价。</li> 
 <li>所有东西的90%都是垃圾。如果你觉得自己不喜欢歌剧，浪漫小说，抖音，乡村音乐，素食，NFTs，那你可以试试看自己能否找出不是垃圾的10%。</li> 
 <li>你如何对待那些对你无能为力的人，将成为评价你的标准。</li> 
 <li>我们向来高估了一天能做的事情，也低估了十年能达成的事情。只要给十年时间，奇迹也能达成。长期坚持能累计大量小成就，攻克大问题。</li> 
 <li>感谢改变了你人生的那位老师。</li> 
 <li>你无法说服一个人接受一个他自己也无法说服他自己的理念。</li> 
 <li>最好的工作是你需要努力跳起来都不一定够得着工作。其实最好只申请你的能力尚不匹配的工作。</li> 
 <li>购买二手书。它们和新书有一样的文字。图书馆的书也是。</li> 
 <li>你可以成为任何你想成为的人，所以让自己成为那个早点结束会议的人吧。</li> 
 <li>一个智者曾经说过，“在你开口之前，先让你的语言经过三道门的检验。第一道门是问你自己，‘这是真话吗？’第二道门是‘这是必要的吗？’第三道门是‘这是善的吗？’”</li> 
 <li>走楼梯。</li> 
 <li>你支付给某样东西的钱事实上是它标价的两倍，因为你还需要付出额外的能源，时间，和金钱来安装它，学习使用它，维护它，修复它，以及最后丢掉它。不是所有的价格都打在标签上。真正的付出是标价的两倍。</li> 
 <li>当你到达你酒店房间时，记得看一眼紧急出口在哪里。只需要一分钟。</li> 
 <li>”我现在该做什么？”的唯一有效回答是，先找出“我想成为什么人？”的答案。</li> 
 <li>在一段超过平均水平的时间里，一直保持平均水平的回报，也会产生超凡的结果。买入并一直持有。</li> 
 <li>对粗鲁的陌生人表现得特别礼貌是一件令人毛骨悚然的事情。</li> 
 <li>一个不太聪明但能很好沟通的人，是可以做得比很聪明但不善沟通的人更好的。这是一个好消息，因为提高你的沟通技巧要比提高智力容易得多。</li> 
 <li>偶尔被骗是信任所有人的一个很小的代价，因为当你以最大诚意信任其他人的时候，他们通常会给你最好的对待。</li> 
 <li>艺术是你无论如何都能超然避世的东西。</li> 
 <li>为了让你的孩子获得最好的成长，你应该只花你认为应该花的一半的钱给他们，但花两倍的时间陪他们。</li> 
 <li>购买你的家乡或所在区域的最新的旅游指南。你会在每年的旅游中学会很多。</li> 
 <li>不要排长队等着吃某样很有名的东西。因为几乎没有哪样出名的食物值得这份等待。</li> 
 <li>想要快速了解一个刚认识的人的真实性格，让他们使用一个超级慢的网络，然后观察他们。</li> 
 <li>达成世俗成功的良方：做点奇怪的事情。培养自己独特的奇怪的习惯。</li> 
 <li>要成为一个专家。记得备份你的备份。至少有一份物理备份与一份云端备份。每个备份不要少于一份。当你丢失了你的数据，照片，与笔记时，你愿意花多少钱把他们找回来呢？相比于后悔，备份一定是更便宜的选项。</li> 
 <li>不要相信你认为你相信的一切。</li> 
 <li>发出紧急信号请使用“三次法则”: 三次大喊，三次喇叭，或三次口哨。</li> 
 <li>你在一家餐馆里会点吃过的好吃的菜，还是尝试新的？你会做你知道有销路的东西，还是会尝试新的？你会一直跟新的人约会还是会尝试跟已经认识的人确立关系？最理想的探索新事物与找到了之后在其中深耕的平衡是: 1/3。用 1/3 的时间去探索，用 2/3 的时间去深耕。随着年龄的增长，花时间去探索新事物会越来越难，因为那看起来并不高效，但试着做到 1/3 吧。</li> 
 <li>真正的好机会不会在额头上大书“好机会”三个字。</li> 
 <li>在你被介绍给别人的时候，看着对方的眼睛，数到四。这样你们都会很好地记住对方。</li> 
 <li>在你思考“我的好刀在哪里？或者我的好笔在哪里？”时，记下来。这意味着你还有坏的刀或笔。把它们都丢掉吧。</li> 
 <li>当你在某件事情卡住了时候，试着给其他人描述你的问题。经常你只需要简单地把问题描述出来，答案就会自然呈现。把“描述这个问题”作为你解决问题的的一部分。</li> 
 <li>在购买一根花园水管，一根延长线，或者一把梯子的时候，选那个比你认为需要长度更长的。通常那个就是正确的尺寸。</li> 
 <li>不要和旧事物作斗争；直接建设新的。</li> 
 <li>你只需要向大家赞扬你的团队做得很好，他们就会做出远超预期的成就。</li> 
 <li>当一个人跟你提起人类历史的巅峰一年，那段时间所有的事情都极其美好，然后就开始走下坡路。这一年永远是他们10岁的时候──这也是人类个体的巅峰。</li> 
 <li>你跟那些惹怒你的事物一样大。</li> 
 <li>当你对着听众们演讲时，眼神注视某几个人比扫描全场更好。你的眼神会告诉在场的人，你是不是真的相信你所说的东西。</li> 
 <li>习惯远比灵感来得可靠。要为培养习惯而努力。不要关注身材变好的样子，要专注成为那个永不缺席训练的人。</li> 
 <li>当你跟别人谈判的时候，不要把目光瞄准蛋糕中最大的一片；要瞄准如何把蛋糕做大。</li> 
 <li>如果你重复今天你做的事情365天，那一年后你会成为你想成为的人吗？</li> 
 <li>你只能看到其他人的 2%，别人也只能看到你的 2%。所以调整好自己的 98%。</li> 
 <li>你的时间和空间都是有限的。移除，送人，或者直接丢掉那些在你的人生中不再带来幸福的东西，把时间与空间留给那些能带来幸福的。</li> 
 <li>我们的后代将创造令我们惊叹的成就，但其实只要我们有足够的想象力，他们会创造的部分东西，用今天的材料和工具就已经能实现了。所以，要想得更大一点。</li> 
 <li>为了丰厚的回报，请对你完全不感兴趣的事物保持好奇。</li> 
 <li>专注于方向而不是目的地。毕竟有谁能知道他的命运终点呢？但只要保持一个正确的方向，你终会到达你想到的地方。</li> 
 <li>所有的突破在一开始都是看起来很可笑和荒谬的。事实上如果它在一开始看起来不够可笑和荒谬的话，它也称不上是一种突破。</li> 
 <li>如果你借给别人 20 美元并且你再也见不到这个人了，因为他不想还钱，那么这 20 美元花得值。</li> 
 <li>重复别人是一个很好的开始。重复你自己则是一个令人失望的终点。</li> 
 <li>找工作跟别人商量薪酬的最佳时机是在他们说要请你了<strong>之后，</strong>而不是之前。从这时开始就变成了一场胆小鬼博弈，双方都等着对方先开口报价，但这时你的优势就是可以让对方先开出价码。</li> 
 <li>与其让你的人生规避“出人意料”，还不如直接瞄着它们而去。</li> 
 <li>如果你是用信用卡租的车，不要购买额外的保险。</li> 
 <li>如果你关于一个主题的意见可以根据你另一个主题的意见预测得出，那你可能陷入了某种意识形态的掌控。如果你认真审视你自己的意识，你的结论其实是无法预测的。</li> 
 <li>争取在死前破产。在你死掉之前，把你所有的财产交给你的受益人；这很有趣而且很有用。把所有的财产花光。你的最后一张支票应该支付给殡仪馆，它应该会被退回。</li> 
 <li>防止变老的最佳实践是保持惊讶。</li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 67 Livid: &#x5341;&#x5E74;V2EX&#xFF0C;&#x590D;&#x53E4;&#x6E38;&#x620F;&#xFF0C;&#x548C;&#x672A;&#x6765;</title>
        <link>https://justinyan.eth.limo/235861B7-117B-4BDE-B05E-1DA26B1587C0/</link>
        <guid>https://justinyan.eth.limo/235861B7-117B-4BDE-B05E-1DA26B1587C0/</guid>
        <pubDate>Fri, 29 Apr 2022 16:43:44 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/04/Podcast-Cover-v67-2.jpg" alt="" /></p> 
<p>我（Justin）最早知道 <a href="https://livid.v2ex.com/">@Livid</a> 还是在 2010 年看到他发布的 <a href="https://github.com/livid/rework">Rework 的中文版翻译</a>。<br /> 没想到一晃十二年过去了，我们邀请到这位“用十年时间做了一个叫 <a href="https://v2ex.com/">V2EX 的网站</a>”的人，跟我们闲谈 V 站，畅聊去中心化技术。</p> 
<p>岁月如梭，十二年后，我们是否还充满着理想主义激情迸发，是否还纵情于技术世界流连忘返？<br /> 在跟 <a href="https://livid.v2ex.com/">@Livid</a> 录节目的时候，常常让我回想起那个天真的年代，也让我感受到在下一个十年，继续热情澎湃地脚踏实地，有何不可？</p> 
<p>希望听众朋友们跟随我们的声音，一起笑对人生。</p> 
<p><em>P.S. 本期节目开场3分钟的全损复古音质来自在线软件直录，因为保留了录音事故现场很有趣所以采用，请诸位坐和放宽，安心享用🙇‍♂️</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">00:00</span> 嘉宾介绍 @Livid</li> 
 <li><span class="pd-timestamp">02:54</span> 录音事故现场大放送</li> 
 <li><span class="pd-timestamp">03:29</span> ---高清音质分割线---</li> 
 <li><span class="pd-timestamp">03:53</span> 十年 V2EX 的故事</li> 
 <li><span class="pd-timestamp">10:57</span> Livid 喜欢逛哪些节点？</li> 
 <li><span class="pd-timestamp">14:15</span> 关于做产品的一些思考</li> 
 <li><span class="pd-timestamp">16:30</span> 复古游戏爱好者</li> 
 <li><span class="pd-timestamp">24:51</span> 从暴雪被收购说起</li> 
 <li><span class="pd-timestamp">28:57</span> 最近 Livid 在做啥呢？</li> 
 <li><span class="pd-timestamp">32:04</span> 中心化 vs 去中心化</li> 
 <li><span class="pd-timestamp">35:43</span> IPFS 技术：星际文件系统</li> 
 <li><span class="pd-timestamp">39:00</span> 区块链和 DHT 的区别</li> 
 <li><span class="pd-timestamp">45:51</span> 去中心化内容平台优劣势</li> 
 <li><span class="pd-timestamp">53:27</span> Web3 和 EIP1577 提案</li> 
 <li><span class="pd-timestamp">58:39</span> 如何实现去中心化的评论</li> 
 <li><span class="pd-timestamp">1:05:29</span> 社交网络的反思</li> 
 <li><span class="pd-timestamp">1:10:06</span> 远程办公也能结对编程</li> 
 <li><span class="pd-timestamp">1:13:23</span> 听友问：V2EX 是否盈亏平衡</li> 
 <li><span class="pd-timestamp">1:16:53</span> 喂鱼养花</li> 
 <li><span class="pd-timestamp">1:19:01</span> 远离末日刷屏</li> 
 <li><span class="pd-timestamp">1:23:30</span> 灵魂三问</li> 
 <li><span class="pd-timestamp">1:31:57</span> Lost For Words - Pink Floyd</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://livid.v2ex.com/">Livid</a> | <a href="https://twitter.com/Livid">推特</a></li> 
 <li><a href="https://v2ex.com/rework">Rework 中文版翻译</a></li> 
 <li>V2EX 网站: <a href="https://v2ex.com/">https://v2ex.com/</a></li> 
 <li>节目中提到的P2P方式文件托管服务: <a href="https://ipfs.io/">IPFS</a></li> 
 <li>很好用的 Retro Game 模拟器: <a href="https://www.retroarch.com/">RetroArch</a>，以及 Livid 写的<a href="https://livid.v2ex.com/guides/2021/01/08/retroarch.html">相关文章</a></li> 
 <li>NES 游戏忍者蛙 Battletoads 游戏截图（来自 V2EX GameDB 复古游戏截图项目）: <a href="https://www.v2ex.com/gamedb/nes/battletoads">V2EX › Battletoads</a></li> 
 <li>以太坊的 ENS 内容哈希字段 Proposal: <a href="https://eips.ethereum.org/EIPS/eip-1577">EIP-1577: contenthash field for ENS</a></li> 
 <li>V2EX 团队及开源贡献者们开发的一个 macOS 上的后端开发服务器进程管理工具: <a href="https://cl.v2ex.pro/">CodeLauncher</a></li> 
 <li>还有 YC 的 Hacker News 网站: <a href="https://news.ycombinator.com/">Hacker News</a></li> 
 <li>用 UE4 重制的 Metal Gear Solid 1 Intro: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/sdYFmnQGtbU" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Metal Gear Solid 1998 Intro</a></li> 
 <li>片尾曲: <a href="https://open.spotify.com/track/4Ev1LZ4uzjnSvDHpgdyBZK?si=b9c9bae7f09f464b">Lost For Words - Pink Floyd</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> </li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #179 -&#x300A;&#x8D2B;&#x7A77;&#x7684;&#x672C;&#x8D28;&#x300B;</title>
        <link>https://justinyan.eth.limo/B1985E26-9F4D-45FF-8077-6C7B6804238C/</link>
        <guid>https://justinyan.eth.limo/B1985E26-9F4D-45FF-8077-6C7B6804238C/</guid>
        <pubDate>Mon, 25 Apr 2022 17:46:16 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/04/fyyd-027-1.jpg" alt="枫影夜读 #27 - 《贫穷的本质》" /></p> 
<p>什么样的状况可以称为“贫穷”？<a href="https://www.un.org/zh/millenniumgoals/poverty.shtml">联合国千年发展计划</a>有一个“消灭极端贫穷和饥饿”的目标，其中具体提到：1990年至2015年间，将每日收入低于1.25美元的人口比例减半。</p> 
<p>所以日收入低于1.25美元（约8.13人民币）的群体就是“穷人”吗？联合国官网（2003年）数据显示：自1990年以来，已有超过十亿人口脱离极端贫困，但仍有八亿人生活在赤贫之中。全球穷人数量惊人。</p> 
<p>多数人关于富裕与贫穷的概念可能都不是与生俱来的。我记得小时候过年家族聚餐，大门口会有乞讨的人过来唱歌。长辈会给我们这些小孩子几毛钱，让我们拿去给乞讨者。那可能是我印象中对“贫穷”这个模糊概念最早的视觉化呈现。我记得小时候有些长辈会说：“这些人年纪轻轻，有手有脚不去好好干活，就是因为懒才来要饭的。”</p> 
<p>所以穷人是因为懒才穷的吗？所谓“贫穷陷阱”理论在现实生活中存在的吗？</p> 
<p>MIT的经济学教授 Abhijit V. Bannerjee 和他同为 MIT 教授的妻子 Esher Duflo 合著的这本书──<em>Poor Economics: A Radical Rethinking of the Way to Fight Global Poverty</em>──试图为现行的经济学理论寻找证据，证明或证伪某些专家对“大问题”的“大思考”。</p> 
<p>我阅读的是本作的简体中文版本，由中信出版，景芳翻译。简体中文名为《贫穷的本质》，副标题是：我们为什么摆脱不了贫穷。翻译质量很高，感谢译者。中文书本标题多为编辑所定，不再讨论。</p> 
<p>全书分为两个部分，第一部分是生活案例，通过全球多个地区的案例分析，讨论了饥饿、健康、教育、生育等话题；第二部分是慈善机构，从穷人每天都需要面对的风险开始，到小额信贷，到被迫“创业”，到政治政策，讲述穷人面对的各种问题。</p> 
<p>我在阅读的过程中总能收获一些反直觉的东西。比如“我们与穷人的差别其实很小，因为我们的认识比我们想象中要少得多…我们真正的优势在于，很多东西是我们在不知不觉中得到的。”比如自来水、电、疫苗等等。</p> 
<p>“我们不需要使用自己有限的自控及决断能力，而穷人时时刻刻在运用这种能力。”这点我深以为然。书中提到类似非洲穷人不愿购买消毒蚊帐防止疟疾，亚洲农民不愿购买化肥提高产力等案例，我觉得如果换了我身处其中，估计也差不了多少。</p> 
<p>我想到我认识的朋友们，如果自小在条件不差的环境中成长，成年后往往有更多选择，可以把时间、精力放在自己想做的事情上。不管是成为某方面的专家也好，还是不断拓展视野也罢，总之，这样的朋友的人生轨迹充满了更多的可能性，环境、家人对他的限制更小。这让我想起多年前那篇网络热文：《我奋斗了18年才和你坐在一起喝咖啡》。该文作者描写的境遇更极端，但因为这些条件限制带来的不利却是普遍存在的。这世上不乏有内裤开局单挑Boss的高手存在。这个过程极其痛苦，历经无数磨难，可能性并不为零，但十分渺茫。</p> 
<p>因为贫困线以下的群体多在发展中国家，所以作者分析的案例集中在非洲、印度、印尼等国。作者Abhijit在印度出生，他关于印度习俗的分析让我觉得地方虽然不同，但管理国家的毕竟都是人类。比如印度不同邦的人对于发烧的看法：马哈拉施特邦的人觉得大米可以帮助患者快速退烧，而孟加拉邦的人认为发烧的时候不可以吃大米。这让我想到小时候老家关于感冒的人能不能洗澡、洗头、这个能吃那个不能吃的各种禁忌，现在看来有些哭笑不得。</p> 
<p>这个世界上有各种各样的组织在试图改善穷人的生活，抗击全球贫困。牵涉全球多个不同的国家，不同的制度，不同的风俗，不同的习惯。尽管在抗击贫困这件事情上，有些地区做得比较好，另一些地区比较糟糕，但即使是最糟糕的地区，也有改善的空间。作者把这些可以改善穷人生活的事情总结为五个方面：</p> 
<p><strong>1. 穷人通常缺少信息来源，相信那些错误的事情。</strong></p> 
<p>这一点不通过科学手段无法获取信息的网民们恐怕深有体会。但除了这种外部的限制以外，本人是否有足够的自我意识，是否有形成正向循环的信息渠道也是非常重要的一环。书中提到至少要让小孩子们学会阅读，这样可以通过阅读学习其他知识。我想到李笑来写过一本书──关于他的争议我们暂且不论──标题为《学习学习再学习》。就是要先学会如何学习，然后再去学习。有点文字游戏是意思，但颇有道理。</p> 
<p>经历过高考的读者对此可能有所体会。对于理科考试而言，通过无脑刷题来提升考试分数是一种方法，但是学会从题目中找出设计规律，总结每个科目每种题型的解答方法也许更加高效。也就是学会方法，再做刷题训练。</p> 
<p><strong>2. 穷人肩负着生活中的多种责任。你越富有，越容易做“正确”的决定。</strong></p> 
<p>诚然，阅读本文的多数人可能不需要每天为喝井水还是喝河水而发愁。我在阅读本书的同时也在阅读中国作家虹影的自传体小说《饥饿的女儿》。虹影出生于1962年的重庆，家境贫寒，在母亲肚子里经历饥荒年代，随后是接踵而来的文化大革命。她童年的经历在很多细节上印证了《贫穷的本质》中提及的穷人案例。</p> 
<p>穷与富是相对的。即便在温饱线以上，中产与1%的富人依然有极大差距。这些差距带来的做出“正确”决定的难易程度，也见诸其中。所以阅读本书，了解穷人的困境与改善方法，也是在提升自我的意识。比如给自己买保险，给家人买保险。</p> 
<p>这种看似简单的，具有明显好处的，应该趁年轻的时候早点做的事情，我就需要在多年以后，通过学习才逐渐有此意识。亡羊补牢，为时未晚。很多事情不是穷人好吃懒做，不是目光短浅，而可能只是他不知道而已。</p> 
<p>北大法学博士，B站有名的Up主罗翔老师说过类似的话：“一个农民去城市乱闯马路，你不能说这位农民蠢，他只是不理解为什么有交通规则。一位知识分子去乡下，分不清稻谷和麦子，他不是蠢，他只是不理解。所以不要带着知识的优越感。”</p> 
<p><strong>3. 一些服务于穷人的市场正在消失，或是在这些市场中，穷人处于不利地位。</strong></p> 
<p>这一点对大部分不处于贫困线以下的人来说算是比较幸运。因为目前大部分行业服务于人数最多的“普通人”（我也不知道有什么其他更好的词），通常只会给富人开设 VIP 通道，但不会拒绝普通人。</p> 
<p>当然存在一些活动是需要一定经济实力才可能参与的。比如 F1 运动就需要小孩子自小参加卡丁车训练和比赛。家长要负担小孩的训练费，出场费，车费，油费，维修费等等。普通家庭出身的孩子即便有天赋也很难支撑他一路晋级直到进入 F1 围场。</p> 
<p><strong>4. 贫穷的国家不会因为贫穷或其不堪回首的历史而注定失败。</strong></p> 
<p>曾经贫穷的人亦如此。</p> 
<p>我的老家属于“沿海城市”，改革开放几十年，我见过太多做生意起起落落的人。小时候没什么感觉，现在想来，各有各的幸运与不幸。回顾过去，我们总能给历史找出一堆原因，看似今天是过去的必然结果，但事实上，从来没有人能够预测未来。</p> 
<p>上文提到的女作家虹影，她小时候的教育条件并不算好。但她写的小说文笔极佳，至少《饥饿的女儿》写得很好，我看不出来作者小时候的经历会是如此悲惨。</p> 
<p>人生有太多东西无法选择，但始终我们可以选择乐观或悲观。而且别忘了，“无法选择”它也是一种选择。</p> 
<p><strong>5. 对于人们能做什么或不能做什么，最终常变为自我实现的预言。</strong></p> 
<p>一个人往往会对自己有一个预设。这种预设既来自自己的判断也来自外部的评价。很有趣的是，当你预设自己是一个怎样的人的时候，往往你会不自觉地，下意识地做出能够印证这个预设的行为。最后变成自我实现的预言。</p> 
<p>所以当你对自己的某一方面很没有自信的时候，可以试着往“I Can Do It”的方向去想。只要学会了如何学习的方法，加上足够的训练，大部分人都可以胜任大部分工作。又不是去奥运会赛场，只有到这种级别的地方才真的到了拼天赋的时候，我们在学校里，在工作上做的大部分事情，都完全没有“不自信”的必要。</p> 
<p>我喜欢《贫穷的本质》里涉及全球多个国家的实验与具体案例分析。作者作为经济学教授，除了分析经济学主流的“大理论”以外，会通过具体的案例与随机对照实验，用证据证明这些“大理论”到底适用还是不适用。这种讲求实证的方式让我非常佩服。</p> 
<p>虽然我不是经济学方面的专家，也没有Bill Gates那么大的能量可以帮助全球抗击贫困。但至少通过阅读本书，我可以知道自己还存在哪些问题，可以提升自我。</p> 
<p>就像盲区会被我们的大脑忽略一样，现实生活中有太多事情被我们忽略了。抬起头，多看看不一样的角度，不要让自己陷入缺少有效信息的屏障里。</p> 
<p>22.04.24/夜</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: Poor Economics: A Radical Rethinking of the Way to Fight Global Poverty</li> 
 <li>简体译名: 贫穷的本质: 我们为什么摆脱不了贫穷</li> 
 <li>作者: Abhijit Banerjee &amp; Esther Duflo</li> 
 <li>出版社: 中信出版社</li> 
 <li>出版日期: 2018年9月</li> 
 <li>ISBN: 9787508687216</li> 
 <li>版本: 纸质版</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #178 &#x6751;&#x4E0A;&#x6625;&#x6811; - &#x300A;&#x6CA1;&#x6709;&#x5973;&#x4EBA;&#x7684;&#x7537;&#x4EBA;&#x4EEC;&#x300B;</title>
        <link>https://justinyan.eth.limo/6E6A2C9D-178A-49E2-A2E8-96A4A8899FFA/</link>
        <guid>https://justinyan.eth.limo/6E6A2C9D-178A-49E2-A2E8-96A4A8899FFA/</guid>
        <pubDate>Tue, 12 Apr 2022 17:59:38 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/05/fyyd-026.jpg" alt="枫影夜读 #26 村上春树─没有女人的男人们" /></p> 
<p>我挺喜欢村上春树的，读过他多部作品，但很少撰文评论。可能是因为我看不懂，不知该评论什么。<br /> 你可能会说：“看不懂也能谈得上喜欢吗？”<br /> 我不太确定。可能喜欢的感觉和是否“看懂”没有必然联系也未可知。总而言之，村上春树的小说，我“感觉”挺喜欢。</p> 
<p>《没有女人的男人们》是村上2014年发行的短篇小说集，共收录了七个故事。大部份于2013年发表在《文艺春秋》之类的刊物。唯最末一篇同名小说《没有女人的男人们》是为本辑而作。这个标题取自海明威的短篇小说集：Men Without Women。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/04/fyyd-26-2.jpg" alt="电影《驾驶我的车》" class="photo-frame" width="600" /></p> 
<p>我在看了电影《驾驶我的车》之后买了本书。电影剧本改编自其中几个短篇，影片名则取自第一个短篇《Drive My Car》。影片故事有点杂糅缝合的意思，但氛围表现不错，我很喜欢。红色的萨博小车行驶在濑户内海蜿蜒的公路上，背景音是男主角的话剧台词。推开旧式旅馆的木窗，可以看到波光粼粼的景色。挺舒服。</p> 
<p>这七个短篇延续了村上一贯的写作风格，各种必备元素：性、伦理边界、爵士乐或 The Beatles，威士忌，女人，男主角，神秘，见诸各个作品。其中第二第二篇的小说名《Drive My Car》与《Yesterday》均为 The Beatles 的经典曲目。村上春树果然很爱披头四啊。</p> 
<p>七个短篇中我最喜欢的还是《木野》。这个小故事算是典型的“村上套路”：妻子出轨，男主角消沉之余寻找开启第二人生。有酒吧，有爵士乐，有猫，有美女，也有神秘力量。这些元素在村上笔下渲染出难以言喻的气氛，有点阴郁有点诡怖，有点怀旧又很有质感。</p> 
<p>作为一个“看不懂”村上小说的读者，我大概还是更欣赏这种奇妙的空气吧。这种空气可以在阅读完之后绵延一段时间。像我在读完《恋爱的萨姆沙》这篇之后就做了个体验极为真实的梦，但毕竟那个梦的感受不算很好，所以没给此篇加分。</p> 
<p>读完本辑，感觉有点像以前读《刺杀骑士团长》，余韵停留在免色那过于理想的形象，捷豹上山时的引擎声，以及纸片人傲慢的表情。对我来说，这就挺好了。</p> 
<p>22.04.11/中午<br /> 于自居</p> 
<p>P.S. 作为一个南方人，读村上的小说照例要推荐台湾赖明珠翻译的版本。相较之下，大陆林少华译本的用词较容易使我跳出小说氛围，更不用提由于简体出版标准导致的种种细节问题了。</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 女のいない男たち</li> 
 <li>简体译名: 没有女人的男人们</li> 
 <li>作者: 村上春树</li> 
 <li>出版社: 時報文化出版</li> 
 <li>出版日期: 2014年10月24日</li> 
 <li>ISBN: 4712966626779</li> 
 <li>版本: 纸质版</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 66 &#x98CE;&#x8D77;&#x4E91;&#x6D8C;&#x7684; F1 &#x5B9E;&#x5728;&#x592A;&#x503C;&#x5F97;&#x5165;&#x5751;&#x5566;!</title>
        <link>https://justinyan.eth.limo/763CDAE9-0804-4B7A-9085-9A859D877256/</link>
        <guid>https://justinyan.eth.limo/763CDAE9-0804-4B7A-9085-9A859D877256/</guid>
        <pubDate>Mon, 11 Apr 2022 07:30:13 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/04/Podcast-Cover-v66-compressed.webp" alt="Vol. 66 风起云涌的 F1 实在太值得入坑啦!" /></p> 
<p>F1 2021 赛季给我们带来十几年未见之精彩。今年（2022）随着 F1 规则大改，车队之间实力洗牌，又将给我们带来怎样的一个新赛季呢？非常值得期待。</p> 
<p>本期节目我们邀请到老朋友：老黄（黄不了），跟我们一起畅谈 F1 这项激动人心的极限运动。</p> 
<p><em>P.S. 节目中提到的老黄新挂上去的唱片是 Miles Davis 的名盘 Kind of Blue，本期片尾曲选择的也是 Chet Baker 的现场专辑 Chet Baker in New York 里演奏的，Miles Davis 所写的曲子：Solar</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">00:00</span> 开场，商业互吹</li> 
 <li><span class="pd-timestamp">01:59</span> 为什么想到要录 F1 的节目</li> 
 <li><span class="pd-timestamp">07:55</span> 什么时候入坑 F1 的？</li> 
 <li><span class="pd-timestamp">12:19</span> 卡丁车体验职业车手与普通人的差距</li> 
 <li><span class="pd-timestamp">19:41</span> 2021 赛季决赛圈 Sergio Pérez 的高光时刻</li> 
 <li><span class="pd-timestamp">22:45</span> F1 最让你着迷的一点是什么？</li> 
 <li><span class="pd-timestamp">37:03</span> 开 F1 座舱模拟器是什么体验？</li> 
 <li><span class="pd-timestamp">40:10</span> 2021 赛季决赛圈的策略</li> 
 <li><span class="pd-timestamp">46:13</span> F1 新赛季加入机器判罚取代部分人工判断</li> 
 <li><span class="pd-timestamp">47:54</span> 新赛季比赛超出预期的精彩</li> 
 <li><span class="pd-timestamp">50:17</span> 除了网飞纪录片，还有其他影视推荐吗？</li> 
 <li><span class="pd-timestamp">1:11:18</span> 片尾曲：Chet Barker - Solar</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: 黄不了</li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> </li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/xEnMGu5Kt5w" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Solar - YouTube</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>节目中提到的 F1 Netflix 纪录片是 <a href="https://www.netflix.com/title/80204890">一级方程式：疾速争胜(Drive to Survive)</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #177 John Doerr - Measure What Matters</title>
        <link>https://justinyan.eth.limo/CA86F6BD-B9BE-4C24-82ED-EEF8D7D2AEBF/</link>
        <guid>https://justinyan.eth.limo/CA86F6BD-B9BE-4C24-82ED-EEF8D7D2AEBF/</guid>
        <pubDate>Tue, 22 Mar 2022 13:33:34 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/03/fyyd-025-1-1.jpg" alt="枫影夜读 #25 John Doerr - Measure What Matters" /></p> 
<p>John Doerr 2017年出版的这本 Measure What Matters 早有耳闻，简体由中信出版，书名为《这就是OKR》（简体出版社编辑的起名倾向总是令人惋惜）。英文版读下来十分流畅，生僻词不多，推荐阅读英文版。亚马逊中国有售，配合 Kindle Wordwise 阅读会更轻松一些。</p> 
<p>John Doerr 1974年加入 Intel，当时 Intel 正在研发奠定后来 x86 架构地位的 8086 处理器。当时 Intel 与 Motorola 的竞争达到白热化阶段，Intel 面临生死存亡的危急关头。时任 Intel CEO 的 Andrew Grove 凭借优秀的管理方法成功将全公司上下统一，全员朝研发出超越时代的 CPU 发力，给 John Doerr 留下深刻印象。John 后来也成功在 Intel 成为最优秀销售。离职 Intel 后把 Andrew Grove 的方法总结为 OKR，作为 VC 带给当时还十分年轻的 Google。后来的故事大家都知道了，OKR 成为 Google 的管理基础，直至今日仍在发光发热。</p> 
<p>理论上 OKR 不仅适用于大公司、大组织，它也适用于个人。我从去年（2021年）开始尝试把 OKR 用于我的人生目标，所以对 John 的“正统 OKR”实践很感兴趣。这本书也给我带来了不少启发。所以对 OKR 有兴趣的读者不妨也找来看看。</p> 
<h2>关于本书</h2> 
<p>全书主要分为三个部分：</p> 
<ol> 
 <li>PART ONE: OKRs in Action</li> 
 <li>PART TWO: The New World of Work</li> 
 <li>Resources, e.g. Google's OKR Playbook</li> 
</ol> 
<p>第一部分从作者把 OKR 带到 Google 写起。讲故事的部分居多，也算有趣，不过有时候我觉得还是比较啰嗦。最重要的是第一部分，作者引出 OKR 的四个 Superpower:</p> 
<h3>1. Focus and Commit to Priorities</h3> 
<p>OKR 对大组织来说最重要的作用莫过于上下统一，全员聚焦于最重要的事情。同时也提供给公司老板一种更加合理的衡量方法：<strong>关注产出（Output）而不是动作（Activity）</strong>。比如一般认为只看工作时长是“管理懒政”，因为加班多并不代表产出多。</p> 
<p>OKR 提供了另一种合理的视角：看组织成员对于组织方向的目标（Objective）有多大贡献，而不是看他加了多少班。</p> 
<p>对我的个人 OKR 实践来说，这点尤为重要。在我的个人 OKR 中，健康目标非常难以衡量。过去我直接让这个 Objective 和我的 Habit Tracker 挂钩，比如这个月我一共去了 N 次健身房，做了 N 次不少于 5 分钟的 Meditation 等等。这些事实上都是对“行为”的衡量。作为习惯追踪（Habit Tracker）非常有用，因为习惯养成最重要的是频率（<a href="https://justinyan.me/post/4352">参阅 <em>Atomic Habits</em> 一书</a>）。但我是否健康，是否自信，是否每天都很有精神其实无法被这些 KRs 衡量。</p> 
<p>OKR 有个非常重要的点，就是 Objective 可以被 KRs 衡量，当 KRs 都完成的时候，Objective 就达成了。但是我完成了本月的健身房训练次数之后，Objective 达成了吗？不见得。所以更合理的 KRs 应该是我的体重、体脂率、睡眠质量（App 打分）等能被量化的数字的提升或维持。</p> 
<p>除非我的 Objective 是“在这个月里，养成xx习惯”。</p> 
<p>另外是优先级（Priorities），不管是大组织也好，个人也罢。资源总是有限，像大家耳熟能详的 Time, People, Money 三者不可兼得之说。这就是优先级存在的意义。<strong>我们一段时间内只能解决一个问题，不要试图解决所有问题</strong>。</p> 
<blockquote>
 <p> "Real artists ship." </p>
</blockquote> 
<p>没有产出，一家公司就会倒闭；没有产出，一个团队再有创意也只是空谈。前段时间看了 Netflix 纪录片《通用魔术》（英文名 <em>General Magic</em>，<a href="https://github.com/JJYing/General-Magic-Chinese-Subtitle">推荐友台主播 @JJYing 翻译的字幕</a>），虽然这家创业公司每个成员都很厉害，大家野心也很大，受到资本界的追捧，可以说要啥有啥。但是最终他们无法在合适的时间交付一款足够好用的产品，所以结局是个悲剧。虽然历史无法重来，但是如果当时他们有一位类似 Andrew Grove 这样的管理者，可能智能手机的历史会被改写也不一定。</p> 
<p>对我个人的 OKR 实践来说。人生需要关注的方方面面实在太多。2022 年 2 月，我试着在我的 OKR 里加入更多目标（Goals），结果导致我大部分目标都无法达成。3 月份，我从我的目标中只挑选出最重要的三个。每个都从我的大 Objective 派生出来，以 KRs 为衡量目标，完成 KRs 即达成本月目标，最终结果只有达成✅与未达成❌两种，没有中间状态。</p> 
<h3>2. Align and Connect for Teamwork</h3> 
<p>这一项是 OKR 对大组织最有效的地方。书中举了多个例子，也邀请了多位硅谷大公司的高管来讲述他们的故事。在一个大公司工作，因为体量的关系，很多人会感觉自己就是一个流水线上拧“螺丝钉”的人。互联网有个笑话，“面试造核弹，工作拧螺钉”说的便是此理。</p> 
<p>OKR 理论上可以解决<strong>其中一部分问题</strong>。这部分书里举了 MyFitnessPal 这个例子。公司的目标是: Help more people around the world.</p> 
<p>KRs 设定为新用户增长和总用户数。一线员工做用户增长时可以明白自己可以帮助到更多的人。</p> 
<p>这也是我说为什么可以解决“一部分问题”。要想让一线员工觉得自己的工作的有意义，首先这家公司的产品或服务得令人觉得有意义。毕竟这世界上还存在许多除了赚钱以外没什么正面价值的产品和服务。</p> 
<p>对于个人 OKR 来说，这点也至关重要。我希望在每个计划与回顾周期暂停脚步，看看我过去做的事情对我的人生都产生了哪些影响。我想要的目标是靠近了还疏远了。</p> 
<h3>3. Track for Accountability</h3> 
<p>有时候目标制定好了，大脑就体会到“我做完了”的感觉。“set them and forget them”十分常见。</p> 
<p>所以一个能够被执行的计划一定是经常“追踪”（Track）的。前面讲到一个 KR 在周期结束时只会有“完成与否”的二元回答，但是在周期结束前呢？Google 的做法是采用 0-1.0 之间的数字做追踪记录。</p> 
<p>而因为下面要提到的“大目标”（Stretch，Think Big）特性，通常一个 OKR 的目标都不容易 100% 被实现，所以 Google 认为进度 0.7-1.0 即可算作目标完成，他们称为“绿色”（Green），0.4-0.6 是“黄色”, 0.0-0.3 是红色。因为“通常无法100%完成的特性”，Google 还额外加入了“打分”（Score）机制。</p> 
<p>假设我的销售任务是谈成 10 个交易额 100 万的订单，有两种做法。一种是我一直拖延到截止日期前一个礼拜才开始积极打电话销售，熬了好几个通宵想方法做渠道投放，最终谈了 170 个客户完成了 3 个订单。另一种是我合理分配到周期内的各个时间段，经常想办法拓展渠道，虽然只谈了 100 个客户，也不需要熬夜通宵，但是谈成 7 个订单。两者应该鼓励哪种一目了然。</p> 
<p>周期内追踪时也会对每个 KR 做标记，红色进度的 KR 需要考虑是负责人本身的问题，还是目标设定的问题，情况严重的可以考虑放弃该 KR。黄色进度的可能需要盯紧项目环节，看是否需要调配资源等支持。绿色进度的表示状态良好，继续保持。</p> 
<p>对我的个人 OKR 来说，中期回顾有助于我发现 KR 设定的不合理之处，也让我知道当前周期内我的个人目标被实现了多少。看到一些目标有进度是个好信号，看到一些目标毫无进展则给我警告：是不是我的目标设定太多了？是不是这个目标对我来说其实并没有那么重要？</p> 
<p>对于组织 OKR 来说，“正统”的做法是不与绩效考核（Performance Review）挂钩，避免大家为了保险起见选择一定能完成的目标。对于个人 OKR 来说，对自己保持“绝对诚实”至关重要。因为自己是自己唯一的裁判，如果为了 OKR 结果好看，我完全可以在中期随意修改 KR，变更目标，多一些 Greens, 少一些 Reds。但这样做真的有用么？</p> 
<p>跟组织 OKR 要保持公开、透明、负责一样，个人 OKR 也要对自己诚实、负责。</p> 
<h3>4. Stretch for Amazing</h3> 
<p>前面也提到 OKR 一个特点是需要 Think Big，目标制定需要有野心，令人感觉不舒服，不太可能 100% 达成的。</p> 
<p>书中提了 Google Chrome 的例子。当一个目标足够大的时候，即使只完成了 70%，也已经是个非常了不起的成就。OKR 的百分比进度与打分机制给予这种富有野心的目标一种合理的衡量方法。</p> 
<p>这也是我在本书中学到的一点，除了“把目标都变成绿色”，还可以“引入打分机制”。</p> 
<p>不过我也想到一个问题：如果大家都知道 70% 即完成，那么我制定目标的时候就可以定一个 70% 可以被完成的目标，然后上报一个 100% 的数字。所以这些规则漏洞还是必须有“不与利益挂钩”加持才有可能规避啊。</p> 
<h2>Focus on What and How</h2> 
<p>传统的任务派发式工作方法让一线员工感觉像个“拧螺丝”的流水线工人，OKR 可以解决一部分上下统一的问题。OKR 应用到个人也可以让自己更清楚自己在朝什么方向前进。</p> 
<p>如我在<a href="https://justinyan.me/post/4752">《个人 OKR 实践》系列</a>中想表达的，OKR 也只是一种工具，跟 GTD 一样，需要自己去实践，去尝试，然后发现适合自己的部分，不适合自己的部分。找到有用的东西为我所用，对于不合适的部分抛弃就好了。</p> 
<p>读这本书对我产生最大的启发是"As Measured by…"。所有的 Objectives 都应该问这个问题，它如何才能被衡量呢？如果这个 Objective 无法被衡量，那么是否设置的时候就已经有问题了呢？</p> 
<p>回顾我的个人 OKR，可以改进的部分还有很多，挺好的。</p> 
<p>22.03.21/中午</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: Measure What Matters</li> 
 <li>简体译名: 这就是OKR</li> 
 <li>作者: John Doerr</li> 
 <li>出版社: Portfolio</li> 
 <li>出版日期: 2018年4月24日</li> 
 <li>ASIN: B078FZ9SYB</li> 
 <li>版本: Kindle版</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4352">枫影夜读 #5 - James Clear “Atomic Habits”</a></li> 
 <li><a href="https://github.com/JJYing/General-Magic-Chinese-Subtitle">JJYing/General-Magic-Chinese-Subtitle: 电影《General Magic 通用魔术》的中文字幕翻译</a></li> 
 <li><a href="https://justinyan.me/post/4752">我的个人 OKR 实践 01</a></li> 
 <li>封面来自： <a href="https://rickkettner.com/measure-what-matters-book-summary/">Measure What Matters Book Summary &amp; Review - Rick Kettner</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x4F55;&#x5B9E;&#x73B0;&#x6587;&#x672C;&#x7F16;&#x7801;&#x8F6C;&#x6362;</title>
        <link>https://justinyan.eth.limo/DC3A163C-3BDF-4DDD-A0DA-72C91C1E5C4D/</link>
        <guid>https://justinyan.eth.limo/DC3A163C-3BDF-4DDD-A0DA-72C91C1E5C4D/</guid>
        <pubDate>Mon, 14 Mar 2022 13:46:58 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/03/encoding-cover-compressed.webp" alt="如何实现文本编码转换" /></p> 
<p>今天在中文世界我们处理文本文件一般都采用UTF-8编码，但这是1993年Unicode标准出来以后，才随着互联网兴起而流行起来。所以我们在处理一些“老旧”系统的时候难免还是会遇到不同编码的文本文件，比如从某银行下载的账单就经常以意想不到的编码方式出现。</p> 
<p>这时候直接对裸数据进行读取会失败，为了让整个流程更自动化一些，我们需要针对这些文件进行转码处理。</p> 
<h2>一、检测当前文本文件的编码</h2> 
<p>除了Unicode以外，世界上还存在非常多种不同的编码，仅汉字就有BIG5, GB，GBK，GB 2312等等。Google提供的<a href="https://icu.unicode.org/">ICU(International Components for Unicode)</a>项目可以很好地帮我们找出当前文本最可能的编码格式。ICU项目应用广泛，Apache也用了，不过这个库比较大，Google还有一个简化版的库: <a href="https://github.com/google/compact_enc_det">compact_enc_det</a> 也做了类似的事情。</p> 
<p>输入文本bytes，库内部会循环多次进行匹配，匹配出来分数高的就是最可能的文本编码。为了优化效率，compact_enc_det 会先扫描前 16KB 的bytes，然后针对接下来最多 256KB 的bytes，之检测高于 0x80 的编码，以提高检测效率。这个库一共能检测出75种不同的文本编码。</p> 
<p>另外针对我们最常用的UTF-8编码，还需要对文件头进行BOM处理。</p> 
<p>BOM是Byte order mark的缩写，在Unicode标准出来以前，大家会在一个文本文件的开头写入16位的数据，用来表示当前文本的编码和大小端。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/03/bom.png" alt="BOM" /></p> 
<p>比如上图就是UTF-8文件头的BOM。在Web浏览器中，HTML的BOM一般是必须的，但是更好的做法是我们在HTML的Meta标签中写明当前文件的Encoding。</p> 
<p>所以遇到此类带BOM的文件，我们在解码的时候需要先去掉BOM，再编码时还要记得写回BOM。</p> 
<h2>二、进行编码转换</h2> 
<p>NodeJS这个库<a href="https://github.com/bnoordhuis/node-iconv">bnoordhuis/node-iconv</a>采用C语言实现了一个iconv方法。</p> 
<p><code>index.js</code>部分只是接口封装，核心逻辑在 <code>binding.c</code> 里面。</p> 
<pre><code class="javascript">//JS入口
const conv = bindings.make(fixEncoding(fromEncoding),
                             fixEncoding(toEncoding));
</code></pre> 
<pre><code class="c">//对应C的make()函数
conv = iconv_open(to, from);
</code></pre> 
<p>这里具体实现引入了 iconv_open1.h 和 iconv_open2.h，应该是使用了libconv里的代码，我们主要关注unicode的loope convert方法:</p> 
<pre><code class="c">static size_t unicode_loop_convert (iconv_t icd,
                                    const char* * inbuf, size_t *inbytesleft,
                                    char* * outbuf, size_t *outbytesleft)
</code></pre> 
<p>其中最关键的是 <code>incount = cd-&gt;ifuncs.xxx_mbtowc(cd,&amp;wc,inptr,inleft);</code>，因为UTF-8是一种可变宽度的编码，所以一次循环要读入多个bytes才能决定是否合成一个完整的Unicdoe字符。</p> 
<p>作者把不同编码的转换函数都统一到<code>mbtowc()</code>，我们可以从 <code>encodings.def</code> 里找到 UTF-8 的对应函数:</p> 
<pre><code>DEFENCODING(( "UTF-8",                  /* IANA, RFC 2279 */
            /*"UTF8",                      JDK 1.1 */
            /*"CP65001",                   Windows */
            ),
            utf8,
            { utf8_mbtowc, NULL },        { utf8_wctomb, NULL })
</code></pre> 
<p>其实现根据 RFC 3629 规范来:</p> 
<pre><code>static int
utf8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, size_t n)
</code></pre> 
<p>里面就有一大堆的<code>if-else</code>实现了该规范。我们<a href="https://datatracker.ietf.org/doc/html/rfc3629">查表可知</a>，UTF-8主要分为四个区域:</p> 
<pre><code>   Char. number range  |        UTF-8 octet sequence
      (hexadecimal)    |              (binary)
   --------------------+---------------------------------------------
   0000 0000-0000 007F | 0xxxxxxx
   0000 0080-0000 07FF | 110xxxxx 10xxxxxx
   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
</code></pre> 
<ul> 
 <li><code>0x0000-0x007F</code>: ASCII字符</li> 
 <li><code>0x0080-0x07FF</code>: 带符号的拉丁文、希腊文等字符</li> 
 <li><code>0x0800-0xFFFF</code>: 大部份常用字，比如汉字。这也是为什么有些当前文本是否中文的正则判断会直接判断这个区间。</li> 
 <li>剩下的就是很少使用的辅助平面(Plane)，放各种奇怪的符号、古老语言、表情等等。</li> 
</ul> 
<p><code>utf8_mbtowc()</code>会根据该规范读入相应长度的字节，返回给上层解出来的字节长度。上述四个区间，每个区间只有一种编码方式，如第一个区间，<code>0x0000-0x007F</code> 以下就是 1 个 byte，对应ASCII。</p> 
<p>如果落入第二区间<code>0x0080-0x07FF</code>，就要看高位的bit，<code>110</code>开头的就填入<code>110xxxxx</code>，<code>10</code>开头的就填入<code>10xxxxxx</code>。每一个子区间都是固定的。</p> 
<h2>三、看来实现一个iconv也不是那么简单</h2> 
<p>本文以UTF-8编码为例，简述了如何检测纯文本的编码以及如何做编码转换。可以看到UTF-8还是相对简单的编码规范，已经具备一定工作量。如果要自己写一个<code>iconv</code>的话，支持75种以上的编码，工作量可想而知。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://www.w3.org/International/questions/qa-byte-order-mark">The byte-order mark (BOM) in HTML</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Byte_order_mark">Byte order mark - Wikipedia</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/UTF-8#:~:text=UTF%2D8%20is%20a%20variable,Transformation%20Format%20%E2%80%93%208%2Dbit.">UTF-8 - Wikipedia</a></li> 
 <li><a href="http://svn.apache.org/repos/asf/tika/tags/1.3/tika-parsers/src/main/java/org/apache/tika/parser/txt/CharsetDetector.java">svn.apache.org/repos/asf/tika/tags/1.3/tika-parsers/src/main/java/org/apache/tika/parser/txt/CharsetDetector.java</a></li> 
 <li><a href="https://icu.unicode.org/">ICU - International Components for Unicode</a></li> 
 <li><a href="https://github.com/google/compact_enc_det">google/compact_enc_det: compact_enc_det - Compact Encoding Detection</a></li> 
 <li><a href="https://datatracker.ietf.org/doc/html/rfc3629">RFC 3629 - UTF-8, a transformation format of ISO 10646</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 65 &#x82F9;&#x679C;2022&#x4E09;&#x6708;&#x53D1;&#x5E03;&#x4F1A;&#xFF1A;Very Ultra</title>
        <link>https://justinyan.eth.limo/7C76866D-3DD3-4BB8-85E0-9918E55459FE/</link>
        <guid>https://justinyan.eth.limo/7C76866D-3DD3-4BB8-85E0-9918E55459FE/</guid>
        <pubDate>Fri, 11 Mar 2022 07:30:11 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/03/Podcast-Cover-v65-1.webp" alt="Vol. 65 苹果2022三月发布会：Very Ultra" /></p> 
<p>苹果的春季发布会如期而至，虽然没有 M2 芯片，但苹果带来了全新的 M1 Ultra，一个顶俩 M1 Max？<br /> 不知道各位听众朋友，有没有期待的产品没在发布会上看到的呢？<br /> 又或者你会买船新的 Mac Studio 吗？<br /> 欢迎在留言区跟我们交流哦</p> 
<p><em>P.S. 感谢听友 @MatthewMa 指正，我们节目中关于Studio Display价格的部分说错了，显示器是11499元，纳米玻璃13499元，支架附赠，升级款支架多加3000元。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">01:27</span> 无人问津的 Apple TV Plus</li> 
 <li><span class="pd-timestamp">02:40</span> iPhone SE 有 iPod Touch 的味儿了</li> 
 <li><span class="pd-timestamp">05:32</span> iPad Air 平平无奇的生产线更新</li> 
 <li><span class="pd-timestamp">07:48</span> 重头戏 M1 Ultra</li> 
 <li><span class="pd-timestamp">10:03</span> Mac Studio vs Mac Pro</li> 
 <li><span class="pd-timestamp">13:05</span> M1 Max 早有伏笔：1+1=2</li> 
 <li><span class="pd-timestamp">20:31</span> CPU 工艺对方案的影响</li> 
 <li><span class="pd-timestamp">25:22</span> Mac Studio 售价感人</li> 
 <li><span class="pd-timestamp">31:07</span> 扛着 Mac Studio 外出办公</li> 
 <li><span class="pd-timestamp">34:08</span> AirPods Pro 2 和无损音频</li> 
 <li><span class="pd-timestamp">37:18</span> 片尾曲：Brazilian Love Song - Keys N Krates</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>苹果发布会开头吹他们家的自制剧，我们<a href="https://fyfy.fm/episode/61">春节前的节目</a>有提到一些</li> 
 <li>节目中提到友台<a href="https://anyway.fm/general-magic/">Anyway.fm翻译的《通用魔术》影片</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: <a href="https://twitter.com/hzlzh">自力 hzlzh</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 64 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;09: &#x8001;&#x5934;&#x73AF;&#x8650;&#x6211;&#x5343;&#x767E;&#x904D;</title>
        <link>https://justinyan.eth.limo/F9819B47-A145-481D-8E9F-60E1368F3E5E/</link>
        <guid>https://justinyan.eth.limo/F9819B47-A145-481D-8E9F-60E1368F3E5E/</guid>
        <pubDate>Thu, 03 Mar 2022 17:35:38 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/01/Podcast-Cover-v64-1-compressed.jpg" alt="科技快乐星球09: 老头环虐我千百遍" /></p> 
<p>万众期待之下，宫崎英高的新作 <em>Elden Ring</em> （《艾尔登法环》，俗称老头环）终于在2月25日正式发售啦！<br /> 我（Justin）也第一时间开始了受虐之旅。节目录制时我还在被小兵狂虐，现在已经开始反杀宁姆格福区的Boss啦。</p> 
<p>魂系列一直是硬核游戏玩家心中的神作，本作因为各种原因出圈，吸引了大批新玩家入坑。不知道听众朋友们开始玩环了吗？<br /> 来留言区跟我们讲讲你的受虐史吧🤓</p> 
<p>“褪色者，出发吧！”</p> 
<p><em>P.S. 不要忘了订阅我们“两周一会”的音乐分享newsletter哦👉🏻 <a href="https://replay.cafe">https://replay.cafe</a></em><br /> <em>P.P.S. 感谢听友 @周叶舟 指正，黑魂2不是宫崎英高制作的，这一代也被玩家戏称为黑魂外传。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li><span class="pd-timestamp">00:33</span> ①全球90万人在艾尔登法环受苦</li> 
 <li><span class="pd-timestamp">02:40</span> 什么是“魂系列”游戏？</li> 
 <li><span class="pd-timestamp">08:11</span> 回合制？“节奏大师”？</li> 
 <li><span class="pd-timestamp">09:59</span> 老头环的开放世界和细节设定</li> 
 <li><span class="pd-timestamp">17:54</span> 媒体评分高但还有优化空间</li> 
 <li><span class="pd-timestamp">22:16</span> 老头环的玩家趣事</li> 
 <li><span class="pd-timestamp">25:05</span> ②纽约时报百万美金收购Wordle</li> 
 <li><span class="pd-timestamp">27:09</span> 每天1个词不过瘾，做个练习版</li> 
 <li><span class="pd-timestamp">29:59</span> ③微软687亿美元收购暴雪</li> 
 <li><span class="pd-timestamp">31:19</span> ④深圳疫情，又开始远程办公了</li> 
 <li><span class="pd-timestamp">33:00</span> ⑤程序员做饭指南霸榜 Github</li> 
 <li><span class="pd-timestamp">36:52</span> 片尾曲：艾尔登法环主题曲</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>Wordle 练习版小程序：<a href="https://wordlex.app">WordleX.app</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: hzlzh</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 63 &#x9ED1;&#x80F6;&#x4FF1;&#x4E50;&#x90E8;02 &#x26; Re:Play Newsletter &#x9996;&#x53D1;</title>
        <link>https://justinyan.eth.limo/AF89C32E-D9B0-4317-BFD9-B123AA192F74/</link>
        <guid>https://justinyan.eth.limo/AF89C32E-D9B0-4317-BFD9-B123AA192F74/</guid>
        <pubDate>Tue, 22 Feb 2022 17:14:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/01/Podcast-Cover-v63-v2-compressed.webp" alt="Vol. 63 黑胶俱乐部02" /></p> 
<p>没想到我们黑胶俱乐部居然有第二期啦！而且由我们三个不专业音乐爱好者 <a href="https://twitter.com/MapleShadow">@Justin</a>, <a href="https://twitter.com/oscarlee_">@Oscar</a> 和 <a href="https://twitter.com/designedbyclu">@Clu</a> 发起的 <a href="https://replay.cafe">Newsletter - Re:Play</a> 也正式发布了！</p> 
<p>欢迎大家到 <a href="https://replay.cafe">RePlay.cafe</a> 订阅我们的 Newsletter 哦！<br /> 以后每期 Newsletter 也可以在这里阅读: <a href="http://newsletter.replay.cafe/">Re:Play Newsletter | Revue</a></p> 
<p>One more thing…<br /> 好朋友 @61 的新 App <a href="https://mdvinyl.app">谜底黑胶</a> 也上线了，配合 iPad 超大 Widget 使用风味绝佳，欢迎大家下载哦。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/02/MDVinyl-widget.jpg" alt="MDVinyl Widgets" /></p> 
<p>@61 也给我们带来 <strong>10 个会员福利</strong>，请大家踊跃在小宇宙评论区留言参与抽奖😘</p> 
<h2>本期福利</h2> 
<ul> 
 <li>谜底黑胶 App 会员 x 10</li> 
 <li>在小宇宙评论区留言即可参与抽奖</li> 
</ul> 
<h2>时间轴</h2> 
<ul> 
 <li>02:09 开场，嘉宾 Oscar, Clu</li> 
 <li>02:52 不专业音乐爱好者的免责声明</li> 
 <li>03:22 过来录音的路上都在听什么？</li> 
 <li>07:46 中国风的爵士？</li> 
 <li>11:10 听音乐的大环境、心态和认知有什么改变？</li> 
 <li>11:35 对QQ音乐十大热歌的看法？</li> 
 <li>19:11 潮流、先锋、实验、LoFi</li> 
 <li>22:45 黑胶复兴，磁带复兴，流媒体无损</li> 
 <li>28:46 Justin 分享: Kings of Convenience - Rocky Trail</li> 
 <li>33:35 Oscar 分享: Stacey Kent - I Wish I Could Go Travelling Again</li> 
 <li>41:55 Clu 分享: Justin Bieber - Lonely (Acoustic)</li> 
 <li>49:46 如何挖掘、发现新音乐？</li> 
 <li>52:14 疫情影响下的个人创作</li> 
 <li>55:03 咖啡厅、艺术空间的音乐，Live与录音室</li> 
 <li>1:03:21 Clu 分享: Charlie Parker - Bebop</li> 
 <li>1:15:26 Justin 分享: Sonny Rollins - Kiss and Run</li> 
 <li>1:23:13 Oscar 分享: Lisa Ekdahl - When Did You Leave Heaven</li> 
 <li>1:33:15 结尾，感谢大家收听</li> 
</ul> 
<h2>本期歌单</h2> 
<p>节目中分享的音乐以及提到但未播出的音乐，我们也整理了 Playlists，欢迎大家收听，记得点赞哦👍🏻。</p> 
<ul> 
 <li><a href="https://open.spotify.com/playlist/3HoK7e35ekU6y2gsj0MlFN?si=edd6884ad40c4cdc">Spotify 歌单</a></li> 
 <li><a href="https://music.apple.com/playlist/枫言枫语-黑胶俱乐部02歌单/pl.u-BNA6LBbCp2q4KR?l=en">Apple Music 歌单</a></li> 
 <li><a href="https://y.qq.com/n/ryqq/playlist/8359420699">QQ音乐歌单</a></li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://twitter.com/oscarlee_">OSCΛR_ 奥叔</a> | <a href="http://instagram.com/oscarlee.gz">Instagram</a></li> 
 <li>嘉宾: <a href="https://twitter.com/designedbyclu">Clu</a> | <a href="https://www.instagram.com/thexclu/">Instagram</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>剪辑: Justin</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 62 &#x4F0A;&#x6D2A; &#x26; Kenshin&#xFF1A;&#x5728;&#x5927;&#x8FDE;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/402E3DE1-205A-462E-B136-4B8EF0A6A5FA/</link>
        <guid>https://justinyan.eth.limo/402E3DE1-205A-462E-B136-4B8EF0A6A5FA/</guid>
        <pubDate>Mon, 14 Feb 2022 10:06:25 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/02/Podcast-Cover-v62-004-compressed.jpg" alt="Vol. 62 在大连工作和生活是什么体验？" /></p> 
<p>世！界！各！地！<br /> 大连篇！</p> 
<p>本期节目我们邀请到在大连工作的<a href="https://twitter.com/yihong0618">伊洪</a>和<a href="https://twitter.com/wanglei001">Kenshin</a>来跟我们唠嗑。</p> 
<p>Kenshin 还给我们送出 10 个<strong>简悦终生 VIP 会员</strong>大礼包哦！<br /> 欢迎大家在评论区留言抽奖~</p> 
<h2>本期福利</h2> 
<ul> 
 <li><a href="https://simpread.pro/">简悦终生 VIP 会员 x 10</a></li> 
 <li>在评论区留言即可参与抽奖</li> 
</ul> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场、嘉宾介绍</li> 
 <li>2:06 什么机缘来到大连的？</li> 
 <li>3:18 两位嘉宾在大连做什么工作</li> 
 <li>8:31 互联网工作好找吗？外包？</li> 
 <li>10:43 东软、华信都在做什么？COBOL</li> 
 <li>13:57 加班情况如何</li> 
 <li>20:34 大连互联网行业竞争状况，卷吗？</li> 
 <li>22:47 Kenshin: 不在公司打工了心态有什么区别？</li> 
 <li>25:07 大连的旅游特色？天气？</li> 
 <li>31:31 伊洪: 在大连跑步</li> 
 <li>33:47 大连的通勤</li> 
 <li>35:28 大连的海鲜</li> 
 <li>38:20 大连的房价、物价</li> 
 <li>41:23 灵魂三问</li> 
 <li>41:46 最眼前一亮的时刻</li> 
 <li>43:37 最艰难的时刻</li> 
 <li>47:54 给想来大连的朋友的建议</li> 
 <li>49:22 片尾曲有两首哦</li> 
 <li>52:26 WANDS - 直到世界的盡頭…</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://twitter.com/wanglei001">Kenshin</a> | <a href="http://ksria.com/simpread/">简悦</a> | <a href="https://github.com/Kenshin">GitHub</a></li> 
 <li>嘉宾: <a href="https://twitter.com/yihong0618">伊洪 yihong0618</a> | <a href="https://github.com/yihong0618">GitHub</a> | <a href="https://www.gcores.com/users/60793">机核</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: Justin</li> 
 <li>Kenshin 推荐片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/jxVXSHWJuy8" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;WANDS - 直到世界的盡頭…</a></li> 
 <li>伊洪推荐片尾曲: <a href="https://c.y.qq.com/base/fcgi-bin/u?__=FAxkO4">山崎将义 - One more time, One more chance</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 61 2021 &#x770B;&#x8FC7;&#x54EA;&#x4E9B;&#x6709;&#x610F;&#x601D;&#x7684;&#x6587;&#x5316;&#x4F5C;&#x54C1;&#xFF08;&#x5F55;&#x97F3;&#x4E8B;&#x6545;&#x7279;&#x522B;&#x7248;&#xFF09;</title>
        <link>https://justinyan.eth.limo/6574E5D6-3065-4C88-8840-19F7E2BF17BB/</link>
        <guid>https://justinyan.eth.limo/6574E5D6-3065-4C88-8840-19F7E2BF17BB/</guid>
        <pubDate>Sat, 29 Jan 2022 14:11:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/01/Podcast-Cover-v61-3-compressed.jpg" alt="Vol. 61 2021 看过哪些有意思的文化作品（录音事故特别版）" /></p> 
<p>哈喽大家好！</p> 
<p>这里是《枫言枫语》播客。就快过年啦！我（Justin）和自力在这里先祝大家新年快乐，虎年大吉！</p> 
<p>本期节目非常特别，我们本来录了一个多小时的声音，但是最后我从录音机把文件导出的时候发现它居然只有几百 KB！当时已是凌晨两点多，这下打击实在有点沉重，让我完全失去睡意。</p> 
<p>本来我们计划要做一期春节前的节目，跟大家分享我们去年看过的有意思的文化作品，希望可以给春节期间无法回家的小伙伴们带来一点陪伴。但是因为这次录音事故导致节目无法播出。</p> 
<p>之前我的录音机已经出现过几次故障，第一次出现是在《<a href="https://justinyan.me/post/4751">Vol. 55 在成都工作和生活是什么体验</a>》这一期，我为此独自重录了我的部分。第二次出现的节目还没播出，但是那次我完美抢救回来了，所以给了我一种蜜汁自信，录音前甚至连backup plan都没有准备，最终促成了这次节目的损失。</p> 
<p>即便如此，我们也不希望这期节目完全地消失，所以想要以一种特别的方式给到大家。我们把节目中提及的作品全部收集起来，放在Show Notes里面，希望诸位听众朋友在假期有空的时候，可以从中获得欢乐，获得勇气，在新的一年可以充满热情地追求与探索自己的人生。</p> 
<p>顺颂</p> 
<p>时祺</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 有趣的录音事故</li> 
 <li>03:50 有趣的电视剧们</li> 
 <li>09:02 有趣的电影们</li> 
 <li>25:00 有趣的节目预告</li> 
 <li>27:23 有趣的片尾曲：秒速五厘米 主题曲</li> 
</ul> 
<h2>一、有趣的电视剧们</h2> 
<h3>1. <a href="https://movie.douban.com/subject/35332289/">《开端》</a>(中国大陆 2022年) → 自力 &amp; Justin 分享</h3> 
<p>科幻/言情</p> 
<p>近期大热的腾讯视频独播剧，主演赵今麦曾出演过《巴拉巴拉小魔仙》，在本剧造型清甜可人，网络可见“金麦郎”之梗（金麦郎成最大赢家？）。</p> 
<p>剧情设定的想法很好，时间循环概念，年轻演员的演技稍显青涩但胜在节奏不错，悬念十足，是一部可以一看的国产悬疑电视剧。</p> 
<p>时间循环概念的影视作品：<a href="https://www.douban.com/link2/?url=https%3A%2F%2Fmovie.douban.com%2Fsubject%2F4746257%2F&amp;query=%E6%98%8E%E6%97%A5%E8%BE%B9%E7%BC%98&amp;cat_id=1002&amp;type=search&amp;pos=0">《明日边缘》</a>、<a href="https://www.douban.com/link2/?url=https%3A%2F%2Fmovie.douban.com%2Fsubject%2F3075287%2F&amp;query=%E6%BA%90%E4%BB%A3%E7%A0%81&amp;cat_id=1002&amp;type=search&amp;pos=0">《源代码》</a>、<a href="https://www.douban.com/link2/?url=https%3A%2F%2Fmovie.douban.com%2Fsubject%2F25936147%2F&amp;query=%E6%84%8F%E5%A4%96%E7%A9%BA%E9%97%B4&amp;cat_id=1002&amp;type=search&amp;pos=0">《意外空间》</a>、<a href="https://movie.douban.com/subject/1946839/">《寒蝉鸣泣之时》</a></p> 
<h3>2. <a href="https://movie.douban.com/subject/34926405/">《无罪之最 El inocente》</a>(西班牙 2021年) → Justin 分享</h3> 
<p>悬疑/犯罪</p> 
<p>这是一部悬疑电视剧，第一集以鸟瞰的形式带观众粗略走过了整个故事将会发生的时空，并在结尾引发一个巨大的悬念。</p> 
<p>接下来的剧集围绕初始悬念展开，几乎每个人物都可以自成一个分支，是一部非常不错的悬疑电视剧。</p> 
<h3>3. <a href="https://movie.douban.com/subject/26992330/">暗黑 Dark</a> (德国 2017年第一季) → Justin 分享</h3> 
<p>科幻/悬疑</p> 
<p>以科幻为背景的悬疑电视剧，一共三季，第三季在 2020 年播出。制作精良，设计巧妙。故事的重点在与空间不大，人物不算太多的情况下如何设计出错综复杂的人物关系和道德抉择，每一集带来的反转令人咋舌。</p> 
<p>因为有科幻元素的加持，人物关系比《无罪之最》更复杂，剧情也更烧脑。</p> 
<h3>4. <a href="https://movie.douban.com/subject/26895171/">四重奏 カルテット</a> (日本 2017年) → Justin 分享</h3> 
<p>剧情/稍微有点悬疑</p> 
<p>四个心怀音乐梦想的“Loser”聚在一起组成一个四重奏，在梦想与现实之间反复拉扯。编剧<a href="https://movie.douban.com/celebrity/1143305/">坂元裕二</a>也写过 1991 年经典日剧<a href="https://movie.douban.com/subject/1438760/">《东京爱情故事》</a>的剧本，帮初出茅庐的铃木保奈美塑造了一个国民级别的莉香角色。《东爱》这部电视剧 Justin 非常喜欢，在博客也<a href="https://justinyan.me/post/3942">写过介绍</a>。</p> 
<p>在《四重奏》中，坂元裕二继续发挥他撕碎美好的“痛人”手法，四个小人物的故事在哭笑之间一一展开。女一号松隆子演技出色，女二号满岛光造型甜美，两位男性角色也是演技到位，细节之间见出日本文化中对极致的追求和令人脑洞大开的讨论。</p> 
<p>P.S. 这部电视剧的 ED 非常用心，第一次看甚至分不清是剧情还是 ED。是少见的可以不跳 ED 的电视剧。</p> 
<h3>5. <a href="https://movie.douban.com/subject/27140017/">非自然死亡 アンナチュラル</a> (日本 2018年) → Justin 分享</h3> 
<p>剧情/悬疑</p> 
<p>石原里美出演的经典日剧。“UDI”是负责解剖非正常原因死亡的遗体，协助找出真实死因的民间组织。石原里美饰演解剖医师。这部电视剧的精彩之处在于每一集一个独立故事，表面看一个人可能是因为显而易见的原因死去的，比如溺水。但是尸检结果却往往道出一个惊天大秘密。</p> 
<h3>6. <a href="https://movie.douban.com/subject/34927946/">国王排名 王様ランキング</a> (日本 2021年) → 自力 &amp; Justin 分享</h3> 
<p>动画番剧/剧情</p> 
<p>英雄王子成长复仇之路的类型动画番剧，2021 年不知道为什么火出圈的大热 IP。小王子波吉与 Loser 卡克的身形在作品中被塑造得极其弱小，相较之下，普通人的体型几乎是他们的五、六倍。</p> 
<p>可能是因为波吉的弱小、善良、先天缺陷和可爱的造型，再加上他的英雄成长之路，给很多人以共鸣和勇气，所以这部番剧才会火起来吧。</p> 
<h3>7. <a href="https://movie.douban.com/subject/34813210/">鬼灭之刃·游郭篇</a> （日本 2021年）→ 自力 &amp; Justin 分享</h3> 
<p>动画番剧/热血</p> 
<p>鬼灭 2019 年一经播出就是大热番，2021 年出了新的续集《游郭篇》。这部番剧的主题框架跟热血番类似，也是身负巨大潜能的少年英雄，被迫踏上成长之路。</p> 
<p>几位主要角色个性鲜明，各有惹人喜爱的特点。动画经费很足，战斗场面十分炫酷，可以一追。</p> 
<h3>8. <a href="https://movie.douban.com/subject/35250199/">见面五秒开始战斗</a> (日本 2021年) → 自力 分享</h3> 
<p>奇幻/冒险</p> 
<p>非常奇特的异世界设定，每个人会有一句话描述的技能，之后全屏高智商的发挥，确实做到了见面就开打的热血，这部爽剧一度还因为尺度原因被禁播停播了，这就更引起人的好奇了。</p> 
<h3>9. <a href="https://movie.douban.com/subject/34812928/">鱿鱼游戏</a> (韩国 2021年) → 自力 分享</h3> 
<p>悬疑/惊悚</p> 
<p>去年现象级的出圈的韩剧，大逃杀题材，差点年会的 Cosplay 就要选剧里的服装了，还好某宝不让卖。据说今年会拍第二部，也很值得期待。</p> 
<h2>二、有趣的电影们</h2> 
<h3>1. <a href="https://movie.douban.com/subject/30337388/">失控玩家 Free Guy</a> （美国 2021年）→ 自力 &amp; Justin 分享</h3> 
<p>科幻/游戏/爆米花电影</p> 
<p>制作精良的商业娱乐大片，节奏紧凑，结构清晰。娱乐大片该有的搞笑、对立、爱情、反转和特效大场面都齐备了。Justin写过一篇影评: <a href="https://justinyan.me/post/4651">漫无目的 06 - 我看电影《失控玩家》</a></p> 
<h3>2. <a href="https://movie.douban.com/subject/3001114/">沙丘</a> (美国 2021年) → 自力 &amp; Justin 分享</h3> 
<p>科幻</p> 
<p>年度大戏，五星好评，无需多言。我们这期节目有详细讨论，传送门： <a href="https://fyfy.fm/episode/50">Vol. 50 沙丘 2021</a></p> 
<h3>3. <a href="https://movie.douban.com/subject/26897885/">芬奇 Finch</a> (美国 2021年) → 自力 &amp; Justin 分享</h3> 
<p>科幻/苹果</p> 
<p>2021 年苹果制作了不少优秀的电影，这一部设定在末日废土背景，孤独的主角与基于 AI 的初生机器人共同逃难的遭遇。讨论的话题不新，还机器人于人性之类。背景设定有点像 Will Smith 2007 年出演的优秀电影<a href="https://movie.douban.com/subject/1820156/">《我是传奇》（I Am Legend）</a>。</p> 
<h3>4. <a href="https://movie.douban.com/subject/35258381/">天鹅挽歌 Swan Song</a> (美国 2021年) → Justin 分享</h3> 
<p>科幻/剧情</p> 
<p>主演马赫沙拉·阿里曾出演过<a href="https://movie.douban.com/subject/27060077/">《绿皮书》</a>里的黑人钢琴家唐雪莉，演技优秀。这部电影讨论的是死亡与亲情的话题，整体节奏比较缓慢，主角面临万难抉择时代入感很强。</p> 
<h3>5. <a href="https://movie.douban.com/subject/34902323/">盲琴师</a> (波兰 2019) → 自力 分享</h3> 
<p>剧情/传记</p> 
<p>讲述了一位天才盲人钢琴家对抗不公命运的传奇故事。被命运几经捉弄，几乎毫无还手之力的弱者，唯一能够用来反抗的，便是他的音乐，音乐是他重新认识、沟通世界并且对抗不公命运的唯一途径……</p> 
<h3>6. <a href="https://movie.douban.com/subject/33390298/">骇人来电 Calls</a> (美国 2021年) → Justin 分享</h3> 
<p>科幻/悬疑/苹果</p> 
<p>这里是后期的Justin: <strong>纠正一下，其实这是一部电视剧，不是电影，当时讲错了，但是为了跟语音保持一致所以还是放在这里。</strong></p> 
<p>苹果 Apple TV 上映的一部形式上非常有创意的电影，全程没有出现一个真人画面。电影情节主体由声音对话构成，画面则采用多元的视觉化元素，有音频波形，有文本消息等等。根据情节的发展和节奏不同，视觉元素也会产生相应的诸多变化。</p> 
<p>情节设定虽然算不上出彩，但也还蛮有趣，创意无敌，值得一看。</p> 
<h3>7. <a href="https://movie.douban.com/subject/30176393/">误杀</a> (中国 2019年) → Justin 分享</h3> 
<p>悬疑/犯罪</p> 
<p>翻拍自印度电影《误杀瞒天记》，因为众所周知的原因，故事背景设定在泰国而非国内。剧情本身设计得比较优秀，悬念十足，整体节奏也把握得很好。再加上导演本身在剧中夹带私货，提及和致敬了前辈的优秀作品，算是一部值得一看的国产悬疑片。</p> 
<h3>8. <a href="https://movie.douban.com/subject/33432655/">困在时间里的父亲 The Father **</a>** （英国/法国 2021年）→ Justin 分享</h3> 
<p>剧情</p> 
<p>安东尼·霍普金斯 （Anthony Hopkins）演技超神之作，看得人真的揪心。利用普通的拍摄手法代入阿兹海默症患者的视角的时空，感染力十足。</p> 
<h3>9. <a href="https://movie.douban.com/subject/34841067/">你好李焕英</a> (中国 2021) → 自力 分享</h3> 
<p>剧情/喜剧</p> 
<p>改编自贾玲在《欢乐喜剧人》里的同名小品《你好，李焕英》，笑点密集，感情充沛，是贾玲先给母亲的礼物，也是非常适合全家观看的温情电影。</p> 
<h3>10. <a href="https://movie.douban.com/subject/35235502/">驾驶我的车 ドライブ・マイ・カー</a> （日本 2021年）→ Justin 分享</h3> 
<p>剧情</p> 
<p>改编自村上春树短篇小说集《没有女人的男人们》的其中一篇。演员的演技，拍摄的画面，整体的氛围营造都非常精彩。当然主旨表达也跟村上一贯的小说一样：让人看得一头雾水。</p> 
<p>看到主角推开日式传统旅馆的木窗，濑户内海映入眼帘那一幕，看到主角驾驶红色的萨博小车，在蜿蜒的岸边一面驾驶一面念话剧台词的那一幕，沉浸其中，听着话剧台词与故事发展娓娓，一时不知是话剧的情节还是电影的情节。</p> 
<h3>11. <a href="https://movie.douban.com/subject/24733428/">心灵奇旅 Soul</a> (美国 2020年) → Justin 分享</h3> 
<p>动画/音乐</p> 
<p>2020 年 Pixar 制作，迪士尼发行的这部动画片在国内首映是 12 月 25 日，很多人应该都是 2021 年 1 月去看的。主角是一名中学音乐教师，乔伊·高纳，一直心怀爵士乐梦想而不得。一天突遭意外身亡，却心有不甘，千方百计要回到人世。</p> 
<p>又是一部现实与梦想拉扯的作品，跟《四重奏》相比，这部电影的整体基调要柔和一些，也是一部非常动人的作品。配乐也是本作的一大特色。</p> 
<h3>12. <a href="https://movie.douban.com/subject/1292329/">牯岭街少年杀人事件</a> （中国台湾 1991年）→ Justin 分享</h3> 
<p>剧情/犯罪</p> 
<p>这是一部有点门槛的作品，时长接近 4 个小时。故事背景是国民党刚到台湾的时候。改编自当时的真实事件，导演以写实的手法，还原了那个年代的诸多细节。</p> 
<p>剧情虽然有些看不懂，但是整体的写实风格非常有意思，男主角是年轻时的小男孩张震，他也在 2021 年的电影《沙丘》中出演岳医生一角。</p> 
<h3>13. <a href="https://movie.douban.com/subject/30300279/">法兰西特派 The French Dispatch</a> (美国/德国 2021年) → Justin 分享</h3> 
<p>剧情</p> 
<p>一部拍摄手法颇具特色的作品。故事发生在一座虚构的 20 世纪法国城市，拍摄时很多场景是室内布景，打光，构图极具艺术性。故事情节多有诙谐和讽刺之感。蕾雅·赛杜 (Léa Seydoux)出演其中一个故事，美女非常好看。</p> 
<h3>14. <a href="https://movie.douban.com/subject/30300277/">猎杀T34</a>（俄罗斯 2019年）→ Justin 分享</h3> 
<p>战争/动作</p> 
<p>T34是苏联于二战前研发的中型坦克，电影的背景是在二战时期苏联与德国对战的前线。主要还是一部热血爽片，看作为坦克长的主角如何带领几个人组成的坦克小团队，用一台 T34 冲出重围。</p> 
<p>用坦克打架的场景是本作的一绝，现场张力非常强，主角和死对头之间的战术较量看得人血脉贲张，是一部非常不错的动作爽片，只不过不是用拳脚，而是用炮弹。</p> 
<p>节目中提到基努里维斯的枪斗术电影：<a href="https://movie.douban.com/subject/25798131/">疾速追杀 John Wick</a></p> 
<h3>15. <a href="https://movie.douban.com/subject/25728006/">速度与激情 9</a> (美国 2021年) → 自力 分享</h3> 
<p>动作/犯罪</p> 
<p>2021 年看的第一部爽片，适合喜欢汽车和爆米花爽片的朋友，看豪车，无脑爽就完了，结尾真的大为震撼，就不剧透了。</p> 
<h2>三、有趣的书籍们</h2> 
<p>书的部分比较闷，我们就不说太多了，有兴趣的小伙伴可以看 Justin 写的 《<a href="https://justinyan.me/post/4824">枫影夜读 #24 - 2021 我的读书</a>》</p> 
<h3>1.<a href="https://book.douban.com/subject/26943161/">《未来简史》</a> → 自力 &amp; Justin 分享</h3> 
<p>大家可以去听本台 2021 年第一期节目: <a href="https://fyfy.fm/episode/32"> Vol. 32 未来简史，当旧神遇上新科技</a></p> 
<h3>2.<a href="https://book.douban.com/subject/27030507/">《上瘾》</a> → 自力分享</h3> 
<p>既然自力提到《上瘾》，那我（Justin）也提一下<a href="https://book.douban.com/subject/1255434/">《上瘾五百年》</a>。<br /> 《上瘾》这本书原名 * Hooked: How to Build Habit-Forming Products<em>，是讲产品设计的。《上瘾五百年》原名是 * Forces of Habit: Drugs and the Making of the Modern World</em>，讲的是烟、酒、咖啡之类的精神药物的历史。</p> 
<h3>3.<a href="https://book.douban.com/subject/30573490/">《博弈论》</a> → 自力分享</h3> 
<h3>4. 塔勒布的<a href="https://book.douban.com/subject/6854525/">《黑天鹅》</a>与<a href="https://book.douban.com/subject/10773362/">《随机漫步的傻瓜》</a> → Justin 分享</h3> 
<p>既然自力分享《博弈论》，那我（Justin）就提一部跟他所提倡的观点完全相反的作品，塔勒布的《黑天鹅》。</p> 
<p>换一个角度看世界。<br /> 另外丹尼尔·卡尼曼的<a href="https://book.douban.com/subject/10785583/">《思考，快与慢》</a>也是非常不错的作品。</p> 
<h2>微信红包封面</h2> 
<p>我们播客也有微信红包封面啦！欢迎大家使用微信扫码领取哦<br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/01/pp3.png" alt="" /></p> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: Justin</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://c.y.qq.com/base/fcgi-bin/u?__=FAxkO4">山崎将义 - One more time, One more chance</a></li> 
 <li>封面: Unsplash <a href="https://unsplash.com/@jeremyyappy">@jeremyyappy</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 60 Sofish: 35&#x5C81;&#x4E0D;&#x5DE5;&#x4F5C;&#x4E86;&#xFF0C;&#x4E2D;&#x573A;&#x4F11;&#x606F;&#x65F6;&#x4ED6;&#x662F;&#x600E;&#x4E48;&#x60F3;&#x7684;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/205BFE5A-8A2F-48B6-A6D0-4C0BD7973FEA/</link>
        <guid>https://justinyan.eth.limo/205BFE5A-8A2F-48B6-A6D0-4C0BD7973FEA/</guid>
        <pubDate>Mon, 17 Jan 2022 07:30:56 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/01/Podcast-Cover-v60-compressed.jpg" alt="Vol. 60 35岁不工作了，中场休息时他是怎么想的？" /></p> 
<p>过去的 2021 年对于中国互联网行业来说可能是非常震荡的一年，各种负面新闻涌现，“内卷”这个词也从戏谑泛滥成消极。</p> 
<p>身在江湖的打工人们都不容易。但是今天来到我们节目的<a href="https://sofi.sh/">小鱼（sofish）</a>却选择在 35 岁时退休，来一次中场休息。</p> 
<p>小鱼为什么会作出这个不同寻常的选择呢？</p> 
<p>在休息的过程中又有怎样有趣的遭遇和思考呢？</p> 
<p>让我们一起在节目中共同探索吧！</p> 
<p>如果大家在收听过程中有任何启发或思考，也非常欢迎在评论区一起互动交流哦~</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 嘉宾介绍：@小鱼Sofish</li> 
 <li>02:53 为什么选择中场休息？</li> 
 <li>05:17 突然不工作之后的心态变化</li> 
 <li>08:27 “我的人生充满了各种意外”</li> 
 <li>13:01 要休息多久呢？</li> 
 <li>15:35 正念、冥想</li> 
 <li>17:05 “我们的生活应该有留白”</li> 
 <li>19:59 团队管理的心得</li> 
 <li>28:08 创业经验的分享</li> 
 <li>32:21 面向未来、拥抱未来</li> 
 <li>36:42 财务自由？投资经验？</li> 
 <li>43:43 投资是一种对世界的理解</li> 
 <li>45:19 粉丝福利：4 问小鱼</li> 
 <li>47:05 如何解决收入问题和社交问题?</li> 
 <li>52:56 你会教孩子编程吗？</li> 
 <li>56:57 灵魂三问</li> 
 <li>1:06:07 片尾曲：Fandango - Marcello Vitale</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>嘉宾: <a href="https://twitter.com/sofish">小鱼（sofish）</a> | <a href="https://sofi.sh/">个人网址</a></li> 
 <li>剪辑: 自力 hzlzh</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://music.apple.com/album/fandango/693437012?i=693437052">Fandango - Marcello Vitale</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 59 &#x6B4C;&#x8BCD;&#x7ECF;&#x7406;&#xFF1A;&#x5728;&#x65E5;&#x672C;&#x4E1C;&#x4EAC;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/A700379D-EC81-4753-A4CB-601C33D8C225/</link>
        <guid>https://justinyan.eth.limo/A700379D-EC81-4753-A4CB-601C33D8C225/</guid>
        <pubDate>Tue, 04 Jan 2022 07:05:37 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2022/01/Podcast-Cover-v59-v3.jpg" alt="Vol. 59 在日本东京工作和生活是什么体验？" /></p> 
<p>世界各地又一次来到日本东京。</p> 
<p>本期嘉宾是我们的老朋友<a href="https://twitter.com/lyricwai">歌词经理 Lyric</a>，他最近刚搬到东京不久，让我们一起听听看中国人在东京创业都有哪些有意思的故事吧！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 嘉宾介绍：@歌词经理</li> 
 <li>02:32 公司就是应该盈利的</li> 
 <li>06:07 受疫情影响下的日本生活</li> 
 <li>07:57 刻板影响：街头不一定是干净的？</li> 
 <li>11:15 在日本工作，会说日语重要吗？</li> 
 <li>16:43 日本办理政务的体验</li> 
 <li>21:15 日本加密货币行业</li> 
 <li>31:03 “我们不加班”因为法律管的严</li> 
 <li>32:25 衣食住行：东京是美食天堂</li> 
 <li>36:26 30年以后房子价格就归零了</li> 
 <li>45:02 便利店是个百宝箱，还能买小黄书</li> 
 <li>50:55 沉迷写代码，Copilot 写文档很棒</li> 
 <li>53:00 买房压力比国内小很多</li> 
 <li>57:43 灵魂三问</li> 
 <li>1:02:28 片尾曲：Still Loving You - Chris Hart</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>嘉宾: <a href="https://twitter.com/lyricwai">歌词经理 Lyric</a> | <a href="https://lyric.im/">个人网址</a></li> 
 <li>剪辑: 自力 hzlzh</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://i.y.qq.com/v8/playsong.html?songid=106484213&amp;songtype=0#webchat_redirect">Still Loving You - Chris Hart</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; 2021 &#x6211;&#x7684;&#x8BFB;&#x4E66;</title>
        <link>https://justinyan.eth.limo/90EA0F69-EFD4-4828-AB95-6CCF0C54AEEC/</link>
        <guid>https://justinyan.eth.limo/90EA0F69-EFD4-4828-AB95-6CCF0C54AEEC/</guid>
        <pubDate>Wed, 29 Dec 2021 16:19:41 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-cover.jpg" alt="枫影夜读 #24 - 2021 我的读书" /></p> 
<p>亲爱的读者朋友：</p> 
<p>你好，我是 Justin。</p> 
<p>还有几天 2021 年就要结束了。十一年前大约这个时候，我开始写<a href="https://justinyan.me/?s=%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《每周读书》系列</a>，把读过的有趣的书记录下来，后来又改为<a href="https://justinyan.me/?s=%E6%9E%AB%E5%BD%B1%E5%A4%9C%E8%AF%BB">《枫影夜读》</a>，以减少“每周”对我阅读习惯的束缚。多亏了这些文字，我后来总能回忆起这些作品中有趣的部分。</p> 
<p>过去几年，我不知道为什么总在春天立下一年想要达成的目标。到了年底再回顾下一路跌跌撞撞磕得鼻青脸肿的自己，感叹一下今年好像没白过的样子。</p> 
<p>为什么每年不管过得多么糟糕，一到年底总感觉还不错呢？今年读了丹尼尔·卡尼曼的《思考，快与慢》，他说这叫做峰终定律。大意是在一段时间里，如果我们体验到的高峰和结尾是比较愉悦的，那么“记忆自我”会认为整个过程都挺愉悦的，哪怕低谷阶段其实非常痛苦。</p> 
<p>感谢人类神奇的大脑，年底我的“记忆自我”总还记得今年读过的有趣书，看过的优秀的影视作品，听过的美妙的音乐。现在我把今年体验到的这些美好记录下来，分享给未来的自己，也分享给你。</p> 
<p><em>我读过的书都会在<a href="https://www.douban.com/people/3113941">豆瓣</a>上标记，所以接下来我将以豆瓣的星星表示我的评价。</em></p> 
<h2>一、我的五星好评 ⭐️⭐️⭐️⭐️⭐️</h2> 
<h3>1. 《艺术的故事》——恩斯特·贡布里希</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/fyyd-012.jpg" /></p> 
<p><a href="https://justinyan.me/post/4525">书评</a> | <a href="https://book.douban.com/subject/3162991/">豆瓣</a> | 艺术史 | 1950年</p> 
<p>非常轻松好读的一部艺术史，贡布里希的文笔流畅易读，措辞浅近而独特，以时间为主线也不至迷失，读起来毫不费力。书中包含大量插图，所以文字并没有书的厚度看上去那么多。书本的印刷质量很好，阅读过程中时不时停下来欣赏画作也是十分令人愉悦的。</p> 
<p>我的书评：<a href="https://justinyan.me/post/4525">枫影夜读 #12——恩斯特·贡布里希《艺术的故事》</a></p> 
<h3>2. 《局外人》 ——阿尔贝·加缪</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/07/fyyd-016.jpg" /></p> 
<p><a href="https://justinyan.me/post/4619">书评</a> | <a href="https://book.douban.com/subject/6021092/">豆瓣</a> | 小说 | 1942年</p> 
<p>加缪的《局外人》是一部充满荒诞哲学思考的小说。小时候我不太喜欢读“名著”，总感觉累，所以读此书我也是抱着试一试的态度。没想到一拿起本书就手不释卷，被这个荒诞又现实，奇妙又赤裸的虚构故事深深吸引，读得津津有味。</p> 
<p>我的书评：<a href="https://justinyan.me/post/4619">枫影夜读 #16 - 阿尔贝·加缪《局外人》</a></p> 
<h3>3. 《简·爱》——夏洛蒂·勃朗特</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/fyyd-019.jpg" /></p> 
<p><a href="https://justinyan.me/post/4643">书评</a> | <a href="https://book.douban.com/subject/5063804/">豆瓣</a> | 小说 | 1847年</p> 
<p>《简·爱》是一部超越时代的作品。作者是天才作家勃朗特三姐妹的夏洛蒂·勃朗特（Charlotte Brontë）。小说主角的经历跟作者的人生息息相关。我喜欢小说中明明十分弱小却从不肯低头的简·爱。</p> 
<p>人生的真相是残酷的，提到现实我们不是先想到美好而是想到屈服。什么时候才能像简·爱一样，面对现实毫无畏惧地反抗呢？</p> 
<p>我的书评：<a href="https://justinyan.me/post/4643">枫影夜读 #19 - 夏洛蒂·勃朗特《简·爱》</a></p> 
<h3>4. 《被讨厌的勇气》——岸见一郎、古贺史健</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/fyyd-017.jpg" /></p> 
<p><a href="https://justinyan.me/post/4625">书评</a> | <a href="https://book.douban.com/subject/26369699/">豆瓣</a> | 心理学、哲学 | 2013年</p> 
<p>今年我读到角度最清奇的一部作品，之前无论在<a href="https://justinyan.me/post/4752">《我的个人 OKR 实践系列》</a>还是在我的<a href="https://fyfy.fm/">播客节目</a>中均多次提及本书。</p> 
<p>写作的是身为记者的古贺史健，记录的是跟岸见一郎的谈话，谈话的内容是跟弗洛伊德同期的心理学先驱阿尔弗雷德·阿德勒的学说。跟弗洛伊德从过去找原因的心理分析不同，阿德勒是 180 度的超级大转弯，读来令我大受冲击。</p> 
<p>虽然读到最后关于“人类共同体”的部分我实在难以理解，但是前半部分已给了我许多帮助，非常棒的一部作品。</p> 
<p>我的书评：<a href="https://justinyan.me/post/4625">枫影夜读 #17 - 岸见一郎、古贺史健《被讨厌的勇气》</a></p> 
<h3>5. 沙丘（Dune）系列小说——Frank Herbert</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/mwmd-001.jpg" /></p> 
<p><a href="https://book.douban.com/subject/26836970/">豆瓣</a> | 小说 | 1965年</p> 
<p>从 1965 年发表第一部开始，作者 Frank Herbert 一直写到 1985 年，整整 20 年时间，小说的体量跟它的写作时间跨度一样壮观。</p> 
<p>今年由丹尼斯·维伦纽瓦执导的《沙丘》快上映之前，我觉得必须在看电影之前补习一下小说原著，于是一口气读到第三部，实在是巨著无疑。</p> 
<p>电影上映后我也第一时间去看了，非常喜欢。当时写了<a href="https://justinyan.me/post/4701">一篇影评</a>，还录了一期<a href="https://justinyan.me/post/4720">播客节目</a>。</p> 
<p>作者构筑的沙丘星球十分宏大，不知道怎样一颗头脑才能塞得下这样的世界。</p> 
<h2>二、我的四星推荐 ⭐️⭐️⭐️⭐️</h2> 
<p>接下来是读完觉得还不错，但我还没感觉特别惊喜的书。</p> 
<h3>1. 《神经漫游者》——威廉·吉布森</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-neuromancer.jpg" /></p> 
<p><a href="https://book.douban.com/subject/24107596/">豆瓣</a> | 科幻小说 | 1984年</p> 
<p>威廉·吉布森（William Gibson）的这部《神经漫游者》（Neuromancer）我很早就想读了，几年前读了前面一点没觉得多有趣。但是去年底打通了《赛博朋克2077》之后对 Cyberpunk 的设定特别感兴趣，于是读了这部赛博朋克早期作品。"Cyberspace"这个词就来自于这部小说，《赛博朋克2077》里的千叶城，超梦之类的设定也能从这部作品中找到痕迹。</p> 
<h3>2. 《仿生人会梦见电子羊吗？》——菲利普·迪克</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-do-androids-dream-of-electric-sheep.jpg" /></p> 
<p><a href="https://book.douban.com/subject/27041533/">豆瓣</a> | 科幻小说 | 1968年</p> 
<p>这是 Philip K. Dick 1968 年出版的作品，比《神经漫游者》早了近 20 年。赛博朋克是 1980 年代才开始在美国流行起来的。那是日本经济景气，科技爆炸的时代。所以后来的赛博朋克小说里都少不了日本高科技企业的身影。</p> 
<p>但菲利普·迪克的这部小说却没有这些。小说主要讨论的是仿生人（以假乱真的机器人）与人类之间的冲突。主角作为赏金猎人，在追捕逃亡的仿生人的过程中看到的、体会到的诸多事件，扰动本来冷静沉着的内心。</p> 
<p>我很喜欢小说开场能够改变人类情感的小机器，也很喜欢可爱的仿生人 Rachael。这部小说很早就被改编电影，名为《银翼杀手》（Blade Runner）。1982 年由雷德利·斯科特（Ridley Scott）导演，2017 年又由丹尼斯·维纶纽瓦（Denis Villeneuve）导演了新版《银翼杀手2049》。</p> 
<p>第一次看这两部电影的时候我完全没看懂，读完小说再看，忽然觉得电影里很多令人迷惑的情节有了合理的解释。抛开电影不谈，这部小说我还是挺喜欢的。</p> 
<h3>3. 《S. : 忒修斯之船》——J.J.艾布拉姆斯、道格·道斯特</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-s.jpg" /></p> 
<p><a href="https://justinyan.me/post/4571">书评</a> | <a href="https://book.douban.com/subject/26356515/">豆瓣</a> | 科幻小说 | 2013年</p> 
<p>这是一本形式上非常有趣的书，也是一本无法被电子化的书。</p> 
<p>书本身分为小说、笔记和道具三个部分。小说设定为一本在学校图书馆存放多年的旧书，由虚构的作家 V.M. 石察卡所写，这是整部作品的第一条线。这位作家的身份扑朔迷离，珍和埃里克两位主人公是这位作家的粉丝，他们在书页空白处留下了大量的对话，构成了这部作品的第二条故事线。第三条则是书页间夹着的各种餐巾纸、复印件、明信片之类的小道具。</p> 
<p>刚拿到这本书的时候我感觉挺兴奋的，真的有手捧旧书，窥视前人故事的感觉。</p> 
<p>不过可惜故事本身比较一般，所以我没给五星好评。</p> 
<p>我的书评：<a href="https://justinyan.me/post/4571">枫影夜读 #13——《S. 忒修斯之船》</a>。</p> 
<h3>4. The Body──Bill Bryson</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-the-body.jpg" /></p> 
<p><a href="https://justinyan.me/post/4616">书评</a> | <a href="https://book.douban.com/subject/35041685/">豆瓣</a> | 科普 | 2019年</p> 
<p>这本书的中文名叫《人体简史 : 你的身体30亿岁了》，营销意味太强，书的内容跟“简史”没有任何关系，副标题是 A Guide for Occupants，意思是“写给居住在这副身体里的人（就是我们）的指南”。编辑改这个名字应该是为了跟 Bill Bryson 的上一部畅销作品《万物简史》挂上号，总之我不喜欢这种做法。</p> 
<p>但是书本身挺有趣的，延续了 Bill Bryson 一贯的写作风格，既硬核又幽默。</p> 
<p>我的书评：<a href="https://justinyan.me/post/4616">枫影夜读 #15 - Bill Bryson "The Body" （《人体简史》）</a>。</p> 
<h3>5. 《鼠疫》──阿尔贝·加缪</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-la-peste.jpg" /></p> 
<p><a href="https://justinyan.me/post/4676">书评</a> | <a href="https://book.douban.com/subject/26908211/">豆瓣</a> | 小说 | 1947年</p> 
<p>读完《局外人》之后我又读了《鼠疫》。这部小说发表于 1947 年，讲述了发生在前法国殖民地阿尔及尔的奥兰市因一场鼠疫而封城，民众与疫病斗争直到退散的故事。2020 年初突如其来的 COVID-19 迅速席卷全球，把全世界打得措手不及。于是这部 74 年前发表的作品也因此契机再次流行起来。</p> 
<p>我的书评：<a href="https://justinyan.me/post/4676">枫影夜读 #21 ——阿尔贝·加缪《鼠疫》</a>。</p> 
<h3>6. 《蛤蟆先生去看心理医生》──Robert de Board</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-counselling-for-toads.jpg" /></p> 
<p><a href="https://justinyan.me/post/4635">书评</a> | <a href="https://book.douban.com/subject/35143790/">豆瓣</a> | 小说 | 1983年</p> 
<p>这本书是 Robert Board 于 1983 年出版的心理学作品，英文名是 Counselling for Toads: A Psychological Adventure。书里主要讲述陷入抑郁的蛤蟆先生，在朋友河鼠与鼹鼠的鼓励下——或者说要求下——去见心理咨询师苍鹭，在经过一系列谈话治疗后重获新生的过程。</p> 
<p>我的书评：<a href="https://justinyan.me/post/4635">枫影夜读 #18 蛤蟆先生去看心理医生</a>。</p> 
<h3>7. 《人類文明的黎明與黃昏》──青柳正規</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-xwsjs-01.jpg" /></p> 
<p><a href="https://book.douban.com/subject/30189603/">豆瓣</a> | 历史 | 2019年</p> 
<p>日本讲坛社出的这套全球史──《兴亡的世界史》──我很早就想读了。本来在亚马逊买了简体中文的电子版和实体版，结果推友 <a href="https://twitter.com/songma">@songma</a> 告知简体版删减严重，原作 21 卷硬生生被删剩 9 卷，实在荒谬至极。</p> 
<p>也因此我开始在<a href="https://readmoo.com/">Readmoo讀墨</a>上充值买书。一套繁体版的《興亡的世界史》价格不菲，但物有所值。</p> 
<p>《人類文明的黎明與黃昏》是这套丛书的第一卷。书中多次讲到令文明繁榮之主因往往亦成為文明衰亡之主因。一個文明之衰亡，往往與其興起之時期雷同，時間漫長。但經歷成長期的人們與經歷衰退期的人所經受之體驗，卻大不相同。</p> 
<h3>8. 《亞歷山大的征服與神話》──森谷公俊</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-xwsjs-02.jpg" /></p> 
<p><a href="https://book.douban.com/subject/30314739/">豆瓣</a> | 历史 | 2019年</p> 
<p>这是《兴亡的世界史》丛书第二卷，讲述了传奇帝王亚历山大的一生。</p> 
<p>亚历山大的个人魅力毋庸置疑，但也无需将其视为神明，过分夸大希腊化世界的“巨变”。阅读过程中我总是不自觉要把大帝的所作所为映射回我们这个世界遇到的大人物们，颇有穿越时空之感。</p> 
<p>每个人都有自己对待人生的方式。影响无论大小，总之自己的人生只有自己才能把握。</p> 
<h3>9. 《娱乐至死》── Neil Postman</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-amusing-ourselves-to-death.jpg" /></p> 
<p><a href="https://justinyan.me/post/4664">书评</a> | <a href="https://book.douban.com/subject/26319730/">豆瓣</a> | 社会学 | 1985年</p> 
<p>1985 年美国 Neil Postman 所著《娱乐至死》（Amusing Ourselves to Death: Public Discourse in the Age of Show Business），距今三十六年依然畅销，个中缘由，大约不管书中所提及之“电视”也好，现今互联网之“长视频”、“短视频”，甚或“电子游戏”也罢，多有相通之处。</p> 
<p>我的书评：<a href="https://justinyan.me/post/4664">枫影夜读 #20 - Neil Postman 《娱乐至死》 </a>。</p> 
<h3>10. 《雪崩》──Neal Stephenson</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-snow-crash.jpg" /></p> 
<p><a href="https://book.douban.com/subject/30314739/">豆瓣</a> | 小说 | 1992年</p> 
<p>今年“元宇宙”（Metaverse）这个词因为扎克伯格把 Facebook 改名为 Meta 再次被炒得火热。这个单词本身从《雪崩》（Snow Crash）这部小说里来，但是小说跟现在被炒上天的所谓“元宇宙”其实没多大关系。</p> 
<p>小说挺好看的，我很喜欢开场时踩着电子滑轮鞋送快递的小姑娘潇洒的身姿，也喜欢看主角穿梭于虚拟和现实之间，在落差巨大的两个平行世界展转腾挪，逢凶化吉时的勇气与坚持。虽然故事主线的推进有赖一个非常古怪的设定，但是总体来说还是比较有趣的。</p> 
<h3>11. 《万物简史》──Bill Bryson</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-a-short-history-of-nearly-everything.jpg" /></p> 
<p><a href="https://justinyan.me/post/4689">书评</a> | <a href="https://book.douban.com/subject/1225983/">豆瓣</a> | 科普 | 2003年</p> 
<p>七月读完 Bill Bryson 的 The Body 之后就觉得他的写作风格不错，于是顺理成章地也把他的畅销作品《万物简史》（A Short History of Nearly Everything）读了，同样是一部很有趣的作品。写作风格上两本书一脉相承，作者擅长以风趣幽默、浅显易懂的文本讲述深奥玄妙的科学原理。大到宏观天体，小到微观粒子，远及宇宙起源，近临人类发展，一场时空远超人类想象力之旅展开，读来酣畅淋漓，令人大呼过瘾。</p> 
<p>我的书评：<a href="https://justinyan.me/post/4689">枫影夜读 #22 - Bill Bryson《万物简史》 </a>。</p> 
<h3>12. 《随机漫步的傻瓜》──纳西姆·尼古拉斯·塔勒布</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-fooled-by-randomness.jpg" /></p> 
<p><a href="https://book.douban.com/subject/10773362/">豆瓣</a> | 投资、经济学、概率、随机、黑天鹅 | 1992年</p> 
<p>塔勒布有一本畅销书叫做《黑天鹅》，大意为：你可以说你见过的天鹅都是白色，但你不可以说世界上所有的天鹅都是白色。这时候只要出现一只黑色的天鹅，你的理论就被推翻了。</p> 
<p>这位作者研究的是概率，随机性，曾经从事过市场金融投资行业。他的写作风格十分风趣幽默，虽然总觉得一整本书好像翻来覆去都在讲同一件事情。</p> 
<p>这是我第一次接触塔勒布的书，感觉还是满有趣的。</p> 
<h3>13. 《追究幸福》──丹尼尔·列托</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-happiness.jpg" /></p> 
<p><a href="https://book.douban.com/subject/4737101/">豆瓣</a> | 哲学 | 2005年</p> 
<p>“幸福到底是不是正确的？”</p> 
<p>通常人们觉得希望获得幸福快乐是理所当然的事情，却很少有人会问为什么。</p> 
<p>丹尼尔·列托（Daniel Nettle）是英国纽卡斯尔大学（Newcastle University）的行为科学教授（Professor of Behavioural Science），《追究幸福：微笑中的科学》（Happiness: The Science Behind Your Smile）是他 2005 年由牛津大学出版社出版的关于心理学、哲学的一部作品。</p> 
<p>我的书评：<a href="https://justinyan.me/post/4802">枫影夜读 #23 丹尼尔·列托-《追究幸福》 | 枫言枫语</a>。</p> 
<h3>14. 《第一人稱單數》──村上春树</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-di-yi-ren-cheng-dan-shu.jpg" /></p> 
<p><a href="https://book.douban.com/subject/35249422/">豆瓣</a> | 小说 | 2021年</p> 
<p>村上春树今年的新书《第一人稱單數》。这是一部短篇小说集。</p> 
<p>我其实很喜欢村上春树的小说，几乎读完了他所有的作品，却从来没写过他的书评。原因很简单：我没看懂。</p> 
<p>虽然我没看懂，但阅读的过程却很享受。这也是让我感到惊奇的地方。虽然川端康成和三岛由纪夫的文字也同样令人心醉，但他们的作品好歹我能读明白主人公在做些什么。哪怕是青山七惠写的小说，我即使无法清晰地还原角色的心理状态，也还是能从朦胧中获得人物的情感体验。</p> 
<p>但是村上的书非常奇特。看不懂就是看不懂。</p> 
<p>《第一人稱單數》跟他写的长篇有很大不同，一个个小短篇大体还是能读懂人物在做些什么。故事内容真假参半，不知是写虚构人物还是写村上自己。</p> 
<p>读村上的书我总能收获一些新的音乐，比如 The Beatles，比如 Arthur Rubinstein 演奏的 Schumann 的 Carnaval。</p> 
<h3>15. 《思考，快与慢》──丹尼尔·卡尼曼</h3> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-thinking-fast-and-slow.jpg" /></p> 
<p><a href="https://book.douban.com/subject/10785583/">豆瓣</a> | 小说 | 2011年</p> 
<p>丹尼尔·卡尼曼（Daniel Kahneman）写的《思考，快与慢》（Thinking, Fast and Slow）真是越往后读越精彩。</p> 
<p>一开始我对这本书的书名抱有偏见以为是鸡汤畅销书差点错过一部好作品。</p> 
<p>希望后面可以写一篇文章记录一下对本作的学习。</p> 
<h2>三、其他</h2> 
<p>还有一些看过但不推荐的书，也在下文一一列出，以供读者参考。</p> 
<ol> 
 <li><a href="https://book.douban.com/subject/4746312/">《我们需要多少钱》</a>，完全没必要读。</li> 
 <li><a href="https://book.douban.com/subject/35252483/">《解密 Instagram : 一款拍照软件如何改变社交》</a>，简体版不推荐，此文有详述: <a href="https://justinyan.me/post/4606">枫影夜读 #14 - 《解密Instagram：一款拍照软件如何改变社交》（No Filter）</a>。</li> 
 <li><a href="https://book.douban.com/subject/35254632/">《详谈：左晖》</a>，以访谈形式记录的小书，前半部分我还挺喜欢，后半部分比较平庸。</li> 
 <li><a href="https://book.douban.com/subject/27039296/">《幸福的勇气》</a>，《被讨厌的勇气》的续作。可能因为第一作已经把阿德勒的哲学讲得差不多了，所以续作没有什么可以发挥的地方。作为第一部的补充可以看一下，但不建议单独阅读，所以感觉价值不高。</li> 
 <li><a href="https://book.douban.com/subject/1787729/">《单向度的人》</a>，这是我放弃阅读的一本作品，因为翻译完美符合“每个汉字我都认得但是组合在一起就看不懂”的特征。一开始我兴致勃勃地把每句话读两三遍，尽量去揣测原意，记了不少笔记。但是越往后越吃不消，希望哪天想起可以重拾本作吧。</li> 
 <li><a href="https://book.douban.com/subject/6021092/">《希绪弗斯神话》</a>，同样是因为阅读问题放弃的一本书。这部作品的翻译问题少一些，但是加缪的行文本来就极其晦涩费解，所以也是读不下去放弃了。</li> 
</ol> 
<h2>四、读书是一件有趣的事情</h2> 
<p>印刷术在民间普及以前，人们如何传授知识与信息呢？大约是口口相传吧。电报发明以后，电话、传真、电视、互联网等信息传播手段爆炸式发展。现在人们盯着电子屏幕看短视频娱乐，跟以前人们捧着纸书娱乐的区别在哪里呢？</p> 
<p>有人相信 Neil Postman 在《娱乐至死》中的论述，也有人觉得未来总有一种新的信息传播手段要替代书本阅读。</p> 
<p>不管怎样，至少在 2021 年，我庆幸依然有这么多伟大的文字作品，能以文本的形式被读到。</p> 
<p>不知道读者朋友，你 2021 年读了什么有趣的书呢？不妨在留言区分享下吧。​</p> 
<p>读有趣的书，真是令人愉悦的事情啊。</p> 
<p>顺颂时祺</p> 
<p>枫影 Justin Yan</p> 
<p><em>2021年12月28日</em><br /> <em>于自居</em></p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 58 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;08: &#x672A;&#x6765;&#x519C;&#x573A;&#x5DF2;&#x6765;</title>
        <link>https://justinyan.eth.limo/AA6BB59B-D707-49A3-A997-D45306002421/</link>
        <guid>https://justinyan.eth.limo/AA6BB59B-D707-49A3-A997-D45306002421/</guid>
        <pubDate>Mon, 27 Dec 2021 07:00:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/Podcast-Cover-v58-compressed.webp" alt="Vol. 58 科技快乐星球08: 未来农场已来" /></p> 
<p>科技快乐星球更新啦，有点久没更新了，差点变成凹凸曼星球了。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>0:00 开场</li> 
 <li>0:28 垂直农场 Infarm 成“独角兽”</li> 
 <li>4:12 垂直森林项目从意大利到中国</li> 
 <li>14:49 挪威将于 2025 年停止销售油车，新晋电车车主自力有话说</li> 
 <li>18:38 苹果推出用户自助维修计划</li> 
 <li>21:26 苹果 M2 处理器开发进展，Justin 的 M1 笔记本使用体验</li> 
 <li>24:57 B站率先推出 8K 视频</li> 
 <li>27:35 基于 Unreal 5 的黑客帝国游戏 Demo 放出</li> 
 <li>32:54 片尾曲: White Rabbit - 黑客帝国4预告片主题曲</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/uetE5C2Tmfg" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;White Rabbit - The Matrix Resurrections Official Trailer Song Music</a></li> 
 <li><a href="https://www.ifanr.com/1461945">垂直农场的欧洲「独角兽」出现了，可种植 75 种果蔬</a></li> 
 <li><a href="https://electrek.co/2021/09/23/norway-bans-gas-cars-in-2025-but-trends-point-toward-100-ev-sales-as-early-as-april/">Norway bans gas car sales in 2025, but trends point toward 100% EV sales as early as April</a></li> 
 <li><a href="https://www.apple.com.cn/newsroom/2021/11/apple-announces-self-service-repair/">Apple 宣布将推出自助维修计划</a></li> 
 <li><a href="https://www.cls.cn/detail/898413">苹果M2处理器开发已近完成 传采用台积电4纳米制程</a></li> 
 <li><a href="https://www.36kr.com/newsflashes/1515559614027524">B站宣布上线8K超高清视频画质</a></li> 
 <li><a href="https://www.ifanr.com/app/1461879">看了黑客帝国游戏画面，我开始相信其电影剧情</a></li> 
 <li>节目中提到的相关信息 
  <ul> 
   <li><a href="https://www.stefanoboeriarchitetti.cn/project/%E5%9E%82%E7%9B%B4%E6%A3%AE%E6%9E%97/">垂直森林项目</a></li> 
   <li><a href="https://www.bilibili.com/video/BV1zJ411a7DZ/">NHK的纪录片《沸腾都市》，东京篇由押井守监督</a></li> 
   <li><a href="https://www.goodreads.com/book/show/34928122-artemis">Andy Weir 的月球殖民背景小说《ARTEMIS》（他的成名作是《火星救援》）</a></li> 
  </ul> </li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6765;&#x4E2A;&#x6709;&#x8DA3;&#x7684;Terminal motd&#x5427;</title>
        <link>https://justinyan.eth.limo/97986E60-D1CE-45BC-A446-C0B6655449DA/</link>
        <guid>https://justinyan.eth.limo/97986E60-D1CE-45BC-A446-C0B6655449DA/</guid>
        <pubDate>Wed, 22 Dec 2021 17:09:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/Terminal-motd-cover-compressed.jpg" alt="来个有趣的Terminal motd吧" /></p> 
<p>程序员大都离不开终端(Terminal)，之前我写过一个 <a href="https://justinyan.me/?s=macos+%E6%95%88%E7%8E%87%E7%B3%BB%E5%88%97">macOS 效率系列</a>，还有<a href="https://justinyan.me/post/4286">这篇文章</a>都提到这个黑漆漆的窗口。</p> 
<p>本文给大家介绍一下每次我的 Terminal 打开之后会展示的欢迎信息 <a href="https://en.wikipedia.org/wiki/Motd_(Unix)">motd</a>。</p> 
<h2>一、简单静态文本</h2> 
<p>motd 是 Message of the Day 的缩写，大部分 Unix-like 系统都有这个 feature。原理很简单，就是在 shell login 之前一刻，把 <code>/etc/motd</code> 这个文件打印出来。macOS 的这部分实现在 <a href="https://opensource.apple.com/source/system_cmds">system_cmds</a> 里:</p> 
<pre><code class="c">/*
* Display the contents of a file (such as /etc/motd).
*/
static int
motd(const char *motdfile)
{
sig_t oldint;
FILE *f;
int ch;
</code><p><code class="c">if ((f = fopen(motdfile, "r")) == NULL)<br /> return (-1);<br /> motdinterrupt = 0;<br /> oldint = signal(SIGINT, sigint);<br /> while ((ch = fgetc(f)) != EOF &amp;&amp; !motdinterrupt)<br /> putchar(ch);<br /> signal(SIGINT, oldint);<br /> if (ch != EOF || ferror(f)) {<br /> fclose(f);<br /> return (-1);<br /> }<br /> fclose(f);<br /> return (0);<br /> }<br /> </code></p></pre>
<p></p> 
<p>只要修改 <code>/etc/motd</code> 文件，往里面放你喜欢的文本，它就会自动打印出来啦。</p> 
<p>比如说想要打印出 JUSTIN 的 ASCII ART 形式，那我们可以<a href="https://patorjk.com/software/taag/#p=display&amp;f=Graffiti&amp;t=Type%20Something%20">到这里</a>把你想要打印的文本转成 ASCII Text，粘贴到 motd 文件即可。</p> 
<h2>二、天天都有彩虹新花样</h2> 
<p>如果要动态生成文本，带点小花样，最好来个 RGB 艺术呢？😂</p> 
<p>motd 本身只是个纯文本，不支持执行 shell script，所以我们可以考虑在 <code>~/.profile</code> （<code>zsh</code> 用户可修改 <code>~/.zshrc</code>）里调用一个 shell script 来打印内容。</p> 
<p>首先我们使用 <a href="http://www.figlet.org/">FIGlet</a> 把纯文本变成 ASCII Text:</p> 
<pre><code>brew install figlet
</code><p><code>echo "JUSTIN" | figlet<br /> </code></p></pre>
<p></p> 
<p>figlet 可以选择多种字体，可以<a href="http://www.figlet.org/examples.html">参考这里</a>。</p> 
<pre><code>Font: banner3
## ## ####### #######
### ### ## ## ## ##
#### #### ## ## ## ##
## ### ## ## ## ## ##
## ## ## ## ## ##
## ## ## ## ## ##
## ## ####### #######
<p>Font: isometric1</p>

  <hr />
<p>/_<em>\ /\ \ /\ <br /> /::| | /::\ \ /::\ <br /> /:|:| | /:/:\ \ /:/:\ <br /> /:/|:|<strong>|</strong> /:/ :\ \ /:/ :\ <br /> /:/ |::::_</em>\ /:/<strong>/ :__\ /:/</strong>/ :__<br /> /<strong>/~~/:/ / :\ \ /:/ / :\ \ /:/ /<br /> /:/ / :\ /:/ / :\ /:/ /<br /> /:/ / :/:/ / :/:/ /<br /> /:/ / ::/ / ::/ /<br /> /</strong>/ /<strong>/ /</strong>/</p>
</code><p><code></code></p></pre>
<p></p> 
<p>然后我们再用 <code>cowsay</code> 把小牛加上去</p> 
<pre><code>brew install cowsay
echo "Hello World!" | cowsay
</code></pre> 
<p><a href="https://en.wikipedia.org/wiki/Cowsay">cowsay</a> 默认是一头小牛，自带多种动物可以选择，比如来一头堕拉贡:</p> 
<pre><code>___________
&amp;lt; different &amp;gt;
-----------
\ / \ //\
\ |\___/| / \// \\
/0 0 \__ / // | \ \
/ / \/_/ // | \ \
@_^_@'/ \/_ // | \ \
//_^_/ \/_ // | \ \
( //) | \/// | \ \
( / /) _|_ / ) // | \ _\
( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-.
(( / / )) ,-{ _ `-.|.-~-. .~ `.
(( // / )) '/\ / ~-. _ .-~ .-~^-. \
(( /// )) `. { } / \ \
(( / )) .----~-.\ \-' .~ \ `. \^-.
///.----..&amp;gt; \ _ -~ `. ^-` ^-_
///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~
/.-~
</code></pre> 
<p>还可以选择是 <code>cowsay</code> 还是 <code>cowthink</code>。我的做法是随机生成一只动物:</p> 
<pre><code>cowsay -f $(cd /opt/homebrew/Cellar/cowsay/3.04_1/share/cows &amp;&amp; ls *.cow | shuf -n1)
</code></pre> 
<p>中间的 <code>cows</code> path 需要自己找出来，只选 <code>*.cow</code> 是因为 <code>.pm</code> 的 cowfile 会解析失败。另外用到一个随机 shuffle 的命令 <code>shuf</code> 需要额外安装 <code>coreutils</code></p> 
<pre><code>brew install coreutils
</code></pre> 
<p>效果还不错，但是 RGB 彩虹效果不能妹有啊，用 <code>lolcat</code> 整起来：</p> 
<pre><code>brew install lolcat
echo "Hello World" | cowsay | lolcat
</code></pre> 
<p>很好，我们再加点动画:</p> 
<pre><code>echo "Hello World" | cowsay | lolcat --animate -s 1000
</code></pre> 
<p>Woohoo! 不过每次都显示 "Hello World!" 也太单调了，再加一个 <code>fortune</code>，天天都有不同的 fortune cookie:</p> 
<pre><code>fortune | cowsay | lolcat --animate -s 1000
</code></pre> 
<p>最终效果如下:</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/terminal-motd.gif" alt="" /></p> 
<p>我创建了一个 <a href="https://gist.github.com/justinyanme/62ab86fa7c0361eefc0c20b4b19fe2f5">gist</a>，有兴趣的朋友可以参考看一下。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #176 &#x4E39;&#x5C3C;&#x5C14;&#xB7;&#x5217;&#x6258; -&#x300A;&#x8FFD;&#x7A76;&#x5E78;&#x798F;&#x300B;</title>
        <link>https://justinyan.eth.limo/9233627E-1739-4320-AFF9-CB3E5A6801DD/</link>
        <guid>https://justinyan.eth.limo/9233627E-1739-4320-AFF9-CB3E5A6801DD/</guid>
        <pubDate>Tue, 21 Dec 2021 08:00:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-23.jpg" alt="枫影夜读 #23 丹尼尔·列托《追究幸福》" /></p> 
<p>以前读<a href="https://justinyan.me/post/3421">《后物欲时代的来临》</a>，郑也夫在书中驳斥了“快乐哲学”，即人类不是为了追求快乐而活着，但他没有说清楚人类活着是为了什么。后来读<a href="https://justinyan.me/post/4625">《被讨厌的勇气》</a>，岸见一郎提到“一切烦恼皆来自人际关系”，所以我们应该追求“共同体”的体验。非常玄乎。</p> 
<p>这两本书我都挺喜欢的，两位作者也在各自擅长的领域中解决了一些问题。但是，“幸福快乐”是什么？我们应不应该追求？要怎么追求？如果不追求幸福，又该追求什么？这一系列相关问题这两本书都没有解决。</p> 
<p>不久前我在 Newsletter 《Steve说每周通讯》中看到<a href="https://weibo.com/1930551133">叶壮</a>推荐丹尼尔·列托（Daniel Nettle）《追究幸福：微笑中的科学》（Happiness: The Science Behind Your Smile）这本书：</p> 
<blockquote>
 <p> 叶壮：本周想推荐一本十年前的老书，就算今天读来，依然能有新意。我们很多时候，把幸福看作一个绝对正确的追求目标，却在一定程度上忽视了这种观点的思想背景。幸福到底是不是正确的？幸福是不是应该成为人生的终极目的？幸福的体验，更多的是叩动意识，还是生物性的表达？在积极心理学火了十几年的今天，我们反而需要警惕不要被错误的幸福观带跑偏。有人诟病这本书过于思辨，且学术味太重，不好读，在我看来却恰恰相反，本书会让曾经反思过幸福这个事物的人获得充分共鸣，一旦在阅读中打开思路，可以很顺畅的用一个下午读完。不厚，好看。 </p>
</blockquote> 
<p>这段话中，“幸福到底是不是正确的？”引起了我的注意。通常人们觉得希望获得幸福快乐是理所当然的事情，却很少有人会问为什么。</p> 
<p><a href="https://www.danielnettle.org.uk">Daniel Nettle</a> 是英国纽卡斯尔大学（Newcastle University）的行为科学教授（Professor of Behavioural Science），《追究幸福》是他 2005 年由牛津大学出版社出版的关于心理学、哲学的一部作品。接下来我们跟随作者一起讨论下“幸福”这个主题。</p> 
<h2>一、幸福是什么？</h2> 
<p>很难有人能定义清楚什么是“幸福（Happiness）”，本书也一样，作者先从情感切入展开第一章节，因为“幸福”通常伴随着“快乐”。</p> 
<p>作者提到心理学研究情感方向的先驱保罗·艾克曼（Paul Ekman）的理论。保罗把人类的基本情感分为六种：恐惧、伤心、厌恶、愤怒、惊讶和快乐。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/daniel-nettle-happiness-expressions.jpg" alt="Paul Ekman - Basic Emotions" /></p> 
<p>随后作者又引入了<a href="https://zh.wikipedia.org/wiki/演化心理學">进化心理学</a>，从自然选择的角度解释这六种基本情感的作用。</p> 
<p>比如“恐惧”。在我们漫长的进化过程中，大部分时间都要担心大型食肉动物的袭击。在这种亡命时刻我们不会深度思考，而是即刻产生应激反应，启动逃命程序：撒腿就跑。我们的祖先因为有这样的保命程序才存活了下来。而这些基本情感就是这样的程序。</p> 
<p>今天我们害怕疯牛病，害怕汽车，也是源自这套程序。</p> 
<p>进化心理学给了我们看待幸福的新视角。如果说基本情感有其对“生存”的意义，那么“幸福快乐”也同样具有某种意义。</p> 
<p>丹尼尔在书中把幸福快乐分为三个级别：</p> 
<ul> 
 <li>第一级幸福：一种短暂的情感，感到愉悦、快乐。</li> 
 <li>第二级幸福：对情感的判断，回顾一段时间的快乐和痛苦负债表，可以判断出是正数还是负数。是康乐，满足，满意生活，是感情和对感情判断的混合物。</li> 
 <li>第三级幸福：一种更宽泛的幸福。作者引用亚里士多德理想的好生活 <em>eudaimonia</em> 一说：人在其中变得旺盛，成就他们真正的潜能。这种时候，幸福不是一种感情状态，所以无法以典型的现象表述。</li> 
</ul> 
<p>全书主要围绕第一级和第二级幸福展开论述，尤其着重于“效用”更持久的第二级幸福。第三级幸福篇幅很少，我感觉像阿德勒心理学讲到“共同体”话题时一样，不经过一定程度的训练，难以感同身受。有如寺中老僧，多年修行始得顿悟。</p> 
<h2>二、世界上不存在完美的幸福</h2> 
<p>人类的六种基本情感中，有四种是消极的，一种积极，还有一种是惊讶。大概是因为在数百万年的进化过程中，消极情绪能更好保证物种延续。这个过程中，人类也对积极与消极情绪产生了<strong>不对称的适应性：快乐情绪适应得很快，消极情绪则适应得很慢</strong>。</p> 
<p>这就解释了为什么我们在消费社会通过“买买买”获得的“快乐”情绪是十分短暂的。因为进化过程中我们大部分时候要保持对外来威胁的警惕，今天找到了一个绿洲，我们可以沉浸其中高兴一会，但是这种忘我的享乐必须足够短，让我们及时回到残酷的现实世界，这才是人类情感体验的真相。</p> 
<p>这就是为什么现代人拥有比过去任何一个时代多得多的物质资源，却感受不到同比增长的幸福快乐：人很快就适应了这种快乐。</p> 
<p>亚瑟·叔本华（Arthur Schopenhauer）说：</p> 
<blockquote>
 <p> 不幸和苦难是生活的规则，而不是生活的例外。 </p>
</blockquote> 
<p>作者称叔本华是“幸福悲观主义者”。与之相对的是古罗马讽刺作家尤维纳利斯（Juvenal），他说：</p> 
<blockquote>
 <p> 公众老早就摆脱了种种忧虑……他们渴求的只有两种东西：面包和马戏。 </p>
</blockquote> 
<p>接下来作者又列举了拉金(Larkin)，弗洛伊德（Freud），尼采（Nietzsche）等多位伟大的思想家各自对生活或积极或悲观的对立观点，引出<strong>人类“幸福系统”的作用除了给我们提供一个看似更好的方案之后，还提供了追求它的动力</strong>。</p> 
<p>无论人们实现了多少外在条件，他们都不会完全幸福。看到这里，至少我可以庆幸即使富有如马云、比尔·盖茨，他们也有各有各的不幸福。这些不幸福可能来自金钱和时间的冲突，爱的人不爱你，野心和舒适生活等等。这些冲突无法消除，只能对其管理和调整。</p> 
<p><strong>这个世界上根本不存在完全的幸福，任何宣称不分时间、地点和组织形态都能产生完美幸福的说法，都应立刻抛弃</strong>。</p> 
<p>在《随机漫步的傻瓜》一书中，作者塔勒布提到有一对高学历，高收入的夫妇搬到富人区之后渐渐感动非常不幸福。因为他每天遇到的人都比他们更富有，更富学识。理智上我们可以说“世上不存在完全幸福”，但是人类毕竟不是“绝对理性的经济人”。</p> 
<p>《了不起的我》里的情感的大象和理智的骑象人，《思考快与慢》里的系统1和系统2，都说没人类有一套自动反应的系统，这套系统可以不经过意识直接行动。在上述例子中，无意识响应外部对比带来的烦恼无法被轻易消除，所以这对夫妇最终通过搬家解决这个问题。</p> 
<h2>三、“那些说金钱买不来幸福的人是不知道去哪儿买”</h2> 
<p>作者在书中引用了多份调查研究，作出了大量科学分析，写作手法严谨。第三章《爱与工作》中，作者讨论了财富和幸福的关系。金钱与幸福在曲线前端有较强的相关性，越富有的人越幸福，但是到了一定程度之后，这个相关性就不那么明显了，收入的增长并没有带来等比例的幸福度增长。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/fyyd-024-profession.jpg" alt="" /></p> 
<p>可能的原因是，在满足了温饱需求之后，金钱可以带来教育水平提升，自己选择工作的自由，工作以外的自由时间等等。这些东西在曲线初期有显著提升，但是到了后期反而就没那么明显了。所以：</p> 
<ol> 
 <li>作为较高社会等级的一员，幸福的事与收入无关，而与其他事情相关</li> 
 <li>在对满意度进行判断时，最有意义的是自己和其他人所得的相对比较</li> 
</ol> 
<p>看到这里我想到《也谈钱》和“且慢”都比较赞同的理财方法：<strong>如果你还没有足够的财富，那么现阶段就是先专心赚钱，其他的都不要想</strong>。</p> 
<p>一个初出茅庐的毕业生，通常只需要专心赚钱就好了。随着自己在职场的时间越来越久，技能越来越熟练，相应的报酬和社会地位也会有所提升，这个阶段确实是什么都不需要想的阶段。那么在这之后呢？</p> 
<p>作者给出的下一个调查结果很有趣：<strong>已婚的人给的分高于未婚的人</strong>。婚姻似乎是比收入提升更能产生持久“幸福效用”的事情。</p> 
<p>作者引用了经济学家罗伯特·弗兰克的说法：地位商品和非地位商品（positional and non-positional goods）。非地位商品带来的幸福无法与其他人比较的基础上作出判断。车子是地位商品，婚姻不是。一辆车可以跟别人比较，谁的更贵，马力更大，更舒适豪华，但是婚姻却不可以。<strong>地位商品属于我们进化中的适应性遗产</strong>。这个说法我以为妙哉。</p> 
<p>人类社会进步太快，过去几百年的发展比整个人类进化史的变化更剧烈，这种剧变带来的副作用是：<strong>大脑还没来得及进化到能充分适应当前社会的状况</strong>。甚至我们不提大脑进化，仅仅是这两百年来人文、政治、社会上的变革，也远不如科技变革来得迅猛。这在一定程度上，<strong>造成了现代人的智慧无法与掌握的物质世界相匹配的结果</strong>。</p> 
<p>作者还提到除了婚姻，还有健康、自洽、融入社会、环境质量等等，这些才是幸福的真正来源。金钱也好婚姻也罢，这些可以看作是“表象”，更深层驱动人类幸福的到底又是什么呢？</p> 
<h2>四、内向？外向？忧虑者？热情者？</h2> 
<p>我没想到作者居然说我们对“康乐”的感知程度会跟基因和个性有关系。作者引入“个性心理学”，分析更外向、积极的人更容易影响幸福感受度，这个影响因子称为“神经过敏症”。在艺术和公共生活方面有创造性和影响力的人神经过敏症往往强于普通人。这让我想起梵高（Vincent Van Gogh）和乔布斯（Steve Jobs）。从旁人看来，这两位名人一生的快乐与苦难负债表未必能轻易算出正负数，但他们的成就世人皆知，无需赘言。在讨论他们超然物外的第三级幸福之前，我们先回到个性问题上。</p> 
<p>如果一个外向、热情的人更容易影响幸福感受度的话，<strong>我们能从中获得什么启示，从而帮助我们控制操控幸福呢</strong>？</p> 
<p><strong>幸福并不主要产生于这个世界，而是来自于对待这个世界的方式</strong>。有活力的人更愿意尝试各种稀奇古怪的东西，也更愿意相信自己的尝试能够成功。在这个过程中，因为他们的信念，有更多人愿意帮助他们，最终成功的概率会提高。而他们跟普通人最大的区别是：<strong>在开始时候可以更加上心的启动这些活动</strong>。</p> 
<p><strong>启动很重要</strong>。我在写<a href="https://justinyan.me/post/4752">《个人OKR实践》系列</a>时也觉得：<strong>最重要的是必须去实践，唯有实践才能证明或证伪</strong>。</p> 
<h2>五、需要 ≠ 喜爱</h2> 
<p>科学界费了很长时间才搞明白，“想要”的东西不一定被我们享受。我们经常花费很大的精力和时间，去做一些我们根本不喜欢的事情。多部心理学作品都提到一个叫做“脑内刺激汇报”（brain stimulation reward）的现象。科学家把小型电极植入老鼠的脑袋里面，然后给它一个开关，接通电流就会产生刺激。结果老鼠可以没日没夜不吃不喝只为了按这个按钮。20 世纪六七十年代，这个实验甚至在人类身上也做了。受试者的所作所为跟老鼠别无二致。</p> 
<p>这种按开关的“需要”，实际上并未给受试者和老鼠带来享受的感觉，他们只是觉得自己“需要”而已。换言之，“需要机制”和“喜爱机制”是两套独立的系统。</p> 
<p>这些系统在人体内表现为多种化学物质刺激的结果，比如多巴胺系统。比如名为欣喜剂（Ecstasy）的药物，含有 MDMA（亚甲二氧甲基苯丙胺）成分的。还有血清素相关的药物。这些药物现在在大部分国家都不是合法药物。这里引发的一个思考是：<strong>幸福是由这些化学反应决定的吗？如果我们离开了这些药物和基因工程的尝试，我们还有可能变得更加幸福吗？</strong></p> 
<h2>六、幸福没有银弹</h2> 
<p>书店里经常摆放这“一本书让你变得幸福”的万能解药，这些书就跟“成功学”一样毫无价值。不过我们也不用太沮丧，虽然无法获得完全的幸福，但依然有些方法可供操作，让人生过得更好受一些：</p> 
<ol> 
 <li>减轻消极情感的作用</li> 
 <li>增加积极情感</li> 
 <li>作者称为“主题转移”（changing the subject）</li> 
</ol> 
<p>第一点，关于消极情感前文说是进化的遗产。作者举了一个例子：猎豹和瞪羚（the life/dinner problem）。瞪羚被猎豹追的时候，驱动它的是恐惧，它会一直疯狂地跑，直到跑不动力竭而亡。因为如果瞪羚跑慢了一点，也会被猎豹吃掉，一样是死。但是猎豹的心态就轻松多了，激励它的是欲望，为了一顿大餐而跑。实在追不动了就算了，反正还有下一餐。</p> 
<p>这种不对称性解释了为什么消极情感的作用时间比积极情感的要长。减轻消极情感的负面作用，我们可以采用认知-行为疗法（cognitive-behavioural therapy），或者冥想。<strong>自然选择只是希望我们活着、生子，如果需要，就让我们生活在苦难之中</strong>。所以通过一定程度的训练，我们可以减轻消极情感带来的影响。</p> 
<p>第二点，增加积极情感，也是显而易见却常常被人忽略的。人类这个系统非常神奇，我们作出决策的时候往往不是为了幸福考虑的。我们的祖先“选择了能活下去的策略”才有了我们。这就是为什么 21 世纪了我们还是本能地依赖于“需要”系统的原因。所以，通过跟自己对话的训练，我觉得我们可以一定程度上避免欲望系统的诱惑。这个过程当然非常艰难。以我个人的经验，<a href="https://waitbutwhy.com/2018/04/picking-career.html">How to Pick a Career (That Actually Fits You)</a> 提到的采用地下审讯室审讯个人欲望八爪鱼的方法会有一些效果。</p> 
<p>作者提到，约翰·斯图亚特·米尔（John Stuart Mill）说:</p> 
<blockquote>
 <p> 那些幸福的人……他们的心灵不是固定在自己的幸福上，而是放在某个其他标的物上。目标定在其他事物上，他们发现幸福随之同行。 </p>
</blockquote> 
<p>正如前文所述，<strong>幸福不来自外部世界，而是来自我们对待这个世界的方式</strong>。适时放弃那些无法完全实现，又填不满、喂不饱的欲望和需求就很重要。物质主义培育了我们对物质的不满足，消费社会指望我们通过消费获得“商家所谓的幸福”，却使得幸福更加难求。</p> 
<h2>七、在追求其他事物时幸福起来</h2> 
<p>进化给了我们基本情感，欲望系统，追求幸福的本能。但是恰如纳撒尼尔·霍桑（Nathaniel Hawthonrne）所言：</p> 
<blockquote>
 <p> 幸福宛如一只蝴蝶，当你紧随其后时，它会离你而去；而当你静坐不动时，它可能翩然而至，落在你身上。</p> 
 <p> Happiness is like a butterfly which, when pursued, is always beyond our grasp, but, if you will sit down quietly, may alight upon you. </p>
</blockquote> 
<p>阅读《追究幸福》我受到不少启发，也想重新再读一遍赫胥黎的《美丽新世界》。感叹为什么作者可以从中读出这么多东西，而我十年前却好像什么也没看懂一样。</p> 
<p>读书不过是接触他人以文字写就的思想而已，能够从中领悟多少与当时的状态有关。领悟了之后能够去实践和尝试的，才能从中受益。</p> 
<p>2021.12.18/下午<br /> 于自居</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 追究幸福</li> 
 <li>英文标题: Happiness: The Science Behind Your Smile</li> 
 <li>作者: Daniel Nettle</li> 
 <li>译者: 胡燕平</li> 
 <li>出版社: 重庆出版社</li> 
 <li>出版年: 2010年4月1日</li> 
 <li>ISBN: 9787229018504</li> 
 <li>版本: 纸质书</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/3421">每周读书 #149 -《后物欲时代的来临》</a></li> 
 <li><a href="https://justinyan.me/post/4625">枫影夜读 #17 -《被讨厌的勇气》</a></li> 
 <li><a href="https://www.danielnettle.org.uk">Daniel Nettle</a></li> 
 <li><a href="https://zh.wikipedia.org/wiki/演化心理學">进化心理学</a></li> 
 <li><a href="https://justinyan.me/post/4752">《个人OKR实践》系列</a></li> 
 <li><a href="https://waitbutwhy.com/2018/04/picking-career.html">How to Pick a Career (That Actually Fits You)</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 57 &#x6881;&#x6770;&#xFF1A;&#x5728;&#x52A0;&#x62FF;&#x5927;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/FF189E9C-5DAD-4162-B2FF-678540AA1BC2/</link>
        <guid>https://justinyan.eth.limo/FF189E9C-5DAD-4162-B2FF-678540AA1BC2/</guid>
        <pubDate>Mon, 20 Dec 2021 07:00:01 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/Podcast-Cover-v57-compressed.jpg" alt="Vol. 57 在加拿大工作和生活是什么体验？" /></p> 
<p>世 界 各 地！加拿大篇！<br /> 梦 幻 联 动！ggtalk!</p> 
<p>又是一期世界各地系列，本期节目我们邀请到正在加拿大过冬的友台主播梁杰，跟我们分享下加拿大与国内的文化差异。</p> 
<p>各位亲爱的听友们还希望听到哪座城市的节目呢？在留言区告诉我们吧~</p> 
<p><em>P.S. 嘉宾勘误: 节目中提到的 5 发子弹限制是长枪，手枪是10发。所以左轮手枪是可以装满子弹的。因为手枪只能在靶场用，所以子弹限制放宽了一点。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>0:00 嘉宾介绍：@梁杰</li> 
 <li>5:46 加拿大的房价和疫情现状</li> 
 <li>15:16 做播客 ggtalk 的那些事</li> 
 <li>17:27 加拿大的 10 个文化差异</li> 
 <li>21:52 深恶痛绝的小费文化</li> 
 <li>30:59 为什么人人都爱说 Sorry</li> 
 <li>35:58 一定会出错，但也一定能帮你解决</li> 
 <li>39:03 两人同居一年就算“结婚”</li> 
 <li>40:53 购物习惯的差异</li> 
 <li>44:40 梁杰：我网购过一把🔫 500 发子弹</li> 
 <li>50:57 打猎 = 枪证+打猎证+打鹿证+运气</li> 
 <li>54:49 人力成本很高，工作效率很低</li> 
 <li>1:05:19 社会问题靠大量引进移民解决</li> 
 <li>1:18:01 灵魂 3 问：最艰难的时刻是何时？</li> 
 <li>1:20:23 有小孩以后有什么变化吗？</li> 
 <li>1:22:10 如果能重来，还会选择加拿大吗？</li> 
 <li>1:26:39 片尾曲：Numb - Linkin Park</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>嘉宾: <a href="https://talk.swift.gg/">梁杰</a> | <a href="https://www.weibo.com/numbbbbb">微博</a></li> 
 <li>播客 ggtalk 官网: <a href="https://talk.swift.gg">https://talk.swift.gg</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/kXYiU_JCYtU" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Linkin Park - Numb</a></li> 
 <li>Justin 的悄悄话：继上一期成都节目录音事故之后，本期节目我继续遭遇剪辑事故——剪到一半的时候我的 Audition 崩溃了！😂我的工程文件居然直接消失了！于是只能重头再来，花了整整一天才剪完😭真是后期十大悲剧啊</li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x7684;&#x4E2A;&#x4EBA; OKR &#x5B9E;&#x8DF5; 05</title>
        <link>https://justinyan.eth.limo/1DD1FCFB-B153-4029-8EC2-788DCC42D88A/</link>
        <guid>https://justinyan.eth.limo/1DD1FCFB-B153-4029-8EC2-788DCC42D88A/</guid>
        <pubDate>Tue, 14 Dec 2021 18:54:41 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/personal-okr-05-cover-2-compressed.jpg" alt="我的个人 OKR 实践 05" /></p> 
<p>你好，我是 Justin。</p> 
<p>2021 年就快结束了，以前我不怎么关注年份交替，四季变换。但今年因为个人 OKR 实践，日期仿佛也变得重要了起来。</p> 
<p>这是我的个人 OKR 实践第五篇，我将在本文讲述<strong>我的回顾/修正方法，和具体执行时所采用的工具</strong>。</p> 
<p>至此，本系列也将告一段落，希望明年再看时我又能有新的进展。</p> 
<h2>一、回顾与修正</h2> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/11/long-term-planning-syllogism.png" alt="" /></p> 
<p>在<a href="https://justinyan.me/post/4755">第二篇</a>中我提到 OKR 需要有自我修正的能力：</p> 
<blockquote>
 <p> 这就好比在大海中航行，先有一个目的地，然后设计航线，再升帆起航，在途中对抗风雨，披荆斩棘最终抵达。但是这个过程中需要时时测量是否偏航，需要决策是否修正方向，甚至是否需要变更目的地。所以上述三段论还需要测量与修正以实现自我完善。 </p>
</blockquote> 
<p>我一直有做月度回顾的习惯，所以今年尝试 OKR 时我延续了这个做法：在每月底回顾这个月都做了什么，设想下个月需要做什么。</p> 
<p>具体来说，我使用 Google Calendar 设置每月 30 号的重复提醒事件，二月份则单独设置为 28 号每年提醒。如果读者朋友想要实现更完美的“每个月最后一天提醒”可以<a href="https://woorkup.com/google-calendar-last-day-of-month/">参考这里</a>。</p> 
<p>那么<strong>如何进行回顾呢</strong>？</p> 
<p>以前我会把这个月发生的<strong>重要事件</strong>罗列出来，看看都发生了什么，大概长这样：</p> 
<ul> 
 <li>2021/12/01: 发布了xxxx文章</li> 
 <li>2021/12/03: 发布了xxxx播客</li> 
 <li>2021/12/06: 到xxx旅行</li> 
</ul> 
<p>诸如此类。另外我还有 OKR 计划的 Todo List，Habit Tracker 记录的数据等等。把这些汇总到一起可以看出本月的进展。</p> 
<p>但只记录不分析的话“莫得灵魂”，所以后来我参考 <a href="https://www.youtube.com/channel/UC-ga3onzHSJFAGsIebtVeBg">Lavendaire</a> 的做法，每个月 Review 时问自己下述问题:</p> 
<ul> 
 <li>Describe November in one word</li> 
 <li>Rate from 1-10: "This month, I took steps to get closer to my goals and dream life."</li> 
 <li>Highlights from the past month</li> 
 <li>One thing I learned</li> 
 <li>One thing I'm proud of</li> 
 <li>How can I improve for next month?</li> 
</ul> 
<p>Lavendaire 每次更新影片还会带一个 bonus question。比如十二月在美国因为临近圣诞节，大家会跟家人朋友们相聚，所以十二月的 bonus question 就是:</p> 
<ul> 
 <li>What type of relationships and energy from people do I want to invite into my life?</li> 
</ul> 
<p>我觉得这个结构算是不错的启发，涉及整体评价，做得好的部分，需要改进的部分，甚至还有对未来的想象。</p> 
<p>概括一下，我采用的回顾方法是：</p> 
<ol> 
 <li>罗列本月发生的事情</li> 
 <li>回顾月度计划的实现情况，给出各项数据是否达标及原因分析</li> 
 <li>根据上述问题进行分析与回答</li> 
</ol> 
<p><strong>在第二步进行分析时可以对目标进行修正</strong>。比如我的 Habit Tracker 有一项是“减少咖啡因摄入”，月度目标设置为“一天只能喝少于等于一杯的咖啡，总计 24 天”。当我发现这个目标已经连着好几个月无法达成的时候，我可以降低目标，改为总计 15 天。如果完成情况不错，则可在此基础上适当提高目标，循序渐进。这种调整比较适用于 Objective 被我认可，但 Key Results 的设定高于/低于评估的情况。</p> 
<p>设定目标时我采用 <a href="https://zh.wikipedia.org/wiki/SMART%E5%8E%9F%E5%88%99">SMART 原则</a>，即：Specific（明确）、Measurable（可衡量）、Achievable（可达成）、Relevant（相关）和Time-bound（有时限）。简单易懂，读者朋友们可以参考一下。</p> 
<p>另一种情况是在回顾阶段我发现这个 Objective 定得不合理，“这都是什么玩意儿”。这种情况下我会删除或修改这个 Objective。</p> 
<p>关于 OKR 这个东西，大家从公司、组织的层面接触到的可能跟以前的 KPI 大差不差。事实上合理的 OKR 不应该跟 Performance Review 挂钩。因为 OKR 设计的原则是要“挑战自己不一定做得到的事情，不太舒服，且有野心”。如果跟 Performance Review 挂钩，大家就不愿意设定做不到的目标了。另外公司的 OKR 或多或少都是由老板给员工指派的，再理想化的宏大愿景，拆分到一线员工身上也不一定能完全符合员工的意志，所以会带有一点强制的意味，让人产生“OKR 就是要强迫我做一些事情”的感觉。</p> 
<p>但是个人 OKR 不应该是这样的。</p> 
<p><strong>如果一个计划不是我发自内心认同的，我肯定坚持不下来</strong>。最好的计划是让我根本想不到“坚持”两个字，因为它怎么也带点苦闷的感觉，最理想的计划应该是“享受其中”，哪怕遭受一定程度的痛苦和磨难。</p> 
<p>所以我自己实践下来，KR 设定必须是：</p> 
<ol> 
 <li>运用 SMART 原则或类似工具制定的清晰计划</li> 
 <li>我内心认可的，不受外力强迫的，自愿去做的事情</li> 
</ol> 
<p>在回顾阶段，如果我发现 KR 或 Objective 并不是我真正认可的，那么<strong>它可能只是一个“想要”的东西的表象</strong>。</p> 
<p>比如大多数人都“想要”变得富有，但是富有本身不是目标。<strong>富有给我带来的美好生活，才是我“真正想要”的</strong>。所以这样的 OKR 就可以在回顾阶段发现并修改。</p> 
<p>那为什么是在“回顾”阶段才能修改呢？我一开始不制定这样的目标不就好了吗？</p> 
<p>原因就在于，<strong>不经过实践就没法知道</strong>。只有实践才能证伪或证明，所以必须尝试过，才知道适不适合自己。</p> 
<p>至于实践之后如何分析，我觉得可以参考 Tim Urban 的<a href="https://waitbutwhy.com/2018/04/picking-career.html">这篇文章</a>的做法：</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/personal-okr-05-octupus.png" alt="欲望八爪鱼" /></p> 
<p>作者把人的欲望比作一只八爪鱼，每只触手代表一种欲望。这只八爪鱼不仅触手多，而且触手之间会互相打架，甚至触手内部有时候都达不成一致。所以分析自己的 OKR 是否合理的时候，可以利用文章介绍的“地下审讯室”的办法，把一个个“想要”的欲望关进去做一次深度的审讯。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/personal-okr-05-InterrogationRoom.jpg" style="width: 200px;" /></p> 
<p>一层一层剖析完自己的想法之后，这些“想要”有时候并不真的是自己想要的，可能是你的父母，或者朋友想要的。在个人 OKR 的回顾阶段，这些“想要”就可以揭开面纱，从中找出自己真正想要的东西，或抛弃属于别人的“想要”。</p> 
<p>只有这样，才能修正自己的航向，才能找到内心认可的 OKR，才能充满斗志地“享受其中，哪怕遭受痛苦”。一条船要航向自己想要的目的地，顺流而下当然比较省力，但是一路顺风顺水到达的地方，就是自己想要的地方吗？如果不是，那最好这条船得有自己的动力，能够时时修正自己的方向。哪怕现在我还不知道自己要驶向哪里，至少不是被大风推着我随波逐流。</p> 
<p>Tim Urban 在文末有句话写得非常好:</p> 
<blockquote>
 <p> My goal for the future isn’t to avoid mistakes, it’s for the mistakes I do make to be my own. </p>
</blockquote> 
<p>希望未来我们犯的错都是属于自己的。</p> 
<h2>二、帮助我顺利执行计划的工具们</h2> 
<p>这个系列我提到的工具很多，都是我平时留意积累的：</p> 
<ol> 
 <li>月度回顾</li> 
 <li>地下审讯室</li> 
 <li>自我分析：个人成长史、阿德勒心理学</li> 
 <li>Bullet Journal, Habit Tracker</li> 
 <li>FWP，阅读与写作</li> 
 <li>2-minutes law</li> 
 <li>Hooks: 寻找自己的钩子</li> 
 <li>...</li> 
</ol> 
<p>这些是适合我的工具们，当然不适合所有人。所以接下来我分享一下我自己是怎么发现或发掘它们的。</p> 
<h3>二之一、阅读和笔记</h3> 
<p>我从小就喜欢读书，小时候最喜欢做的事情是爬父亲的书架，也经常把我姐姐的课本拿来读，觉得非常有趣。印象中，学生时代老师给我们布置的每月读书笔记作业我是做得比较轻松的。所以从喜欢做的事情上真的能收获一些东西，只是需要一点小技巧。</p> 
<p>早期读书的时候我更希望保持一本书的绝对整洁，翻页时小心起皱，甚至连页角都舍不得折起来。后来也许是受我父亲读书时在书中留下的划线和笔记的影响，我也开始在书本中写了起来。</p> 
<p>现在我不管阅读纸书还是电子书，都会划线做笔记。读完之后我再在笔记本上做读书笔记。做笔记的过程是我二次思考的过程，有些想法在第一次阅读时候我会在书本空白处写下，或者电纸书上留下备注，做笔记的时候我会把这些想法再次发挥。</p> 
<p>我的读书笔记几乎都在笔记本上用钢笔写成。一般做三种标记：</p> 
<ol> 
 <li>✴ 相关资料</li> 
 <li>△ 摘抄原文</li> 
 <li>⃝ 我的想法</li> 
</ol> 
<p>一般做完了笔记我对一本书值得学习的部分会更具印象。</p> 
<p>阅读和做笔记是我非常喜欢的一种学习方式，如果读者朋友们有自己喜欢的学习方式也可以试着发掘一下，可能会有意想不到的效果。</p> 
<p>大部分时候我会在完整读完第一遍之后才做读书笔记，但也有少量例外。比如我在阅读《被讨厌的勇气》这本书时，因为作者阐述的阿德勒心理学的分析方法很多，所以我干脆边读边在笔记本上用我自己的例子进行分析。</p> 
<p>这种阅读不限于“书本”这个形式，像《Steve 说》节目提到的“个人成长史”，刚才提到的 Tim Urban 的文章也适用。</p> 
<p>我从阅读和笔记中学到的东西很多，像 <em>Sleep</em>、<em>Atomic Habits</em>、《怦然心动的人生整理魔法》、《自控力》、《影响力》、《了不起的我》、《人生十二法则》、《随机漫步的傻瓜》这些书都给了我不少启发。在我的博客上，我以<a href="https://justinyan.me/?s=%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《每周读书》</a>为系列名写了 153 篇文章，<a href="https://justinyan.me/?s=%E6%9E%AB%E5%BD%B1%E5%A4%9C%E8%AF%BB">《枫影夜读》</a> 为系列名写了 22 篇（截止2021年12月）。对我来说，读一遍书我不太容易记住有趣的部分，但<strong>做笔记给我带来的二次思考却可以轻松加强这种印象</strong>。有知有行引用的屠夫1868的<a href="https://youzhiyouxing.cn/n/materials/655">这篇文章</a>把做笔记、写书评这件事情称为“长半衰期”的事情，我觉得还满贴切的。</p> 
<p>与看短视频获得感官刺激相比，阅读、写作这件事情并不轻松。我的做法是尽量让自己乐在其中。即便我本来就喜欢阅读，但读一本书总会有高低起伏的时候，读到引人入胜之处自然茶饭不思，但难免也会有平平无奇食之无味的时候。所以我会用喜欢的钢笔来划线，提升阅读的愉悦感，在 iPad 上我就用 Apple Pencil 模拟持笔的感觉，在 Kindle 上虽然无法用笔，但它的纸感屏幕却带来额外的纸书模拟加成。</p> 
<p>做笔记的时候，我一般分为三个部分：</p> 
<ol> 
 <li>✴ 相关资料，如作者信息、出版信息，只要抄写就行</li> 
 <li>△ 书中重要观点摘抄，也是抄写就行</li> 
 <li>⃝ 我的想法，穿插在摘抄观点之中，最后组织变成一篇书评</li> 
</ol> 
<p>这个过程我尽量用钢笔在笔记本上书写完成。变成电子版之后我也想在纸上修改，为此我还专门买了一台打印机，把文字打印出来之后用我喜欢的红色钢笔，沾上百利金的红色墨水来修改。尽量把这件苦差事变成一件令我享受的事情。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/personal-okr-05-printed-out.jpg" alt="" /></p> 
<p>当然对于自己真正喜欢的事情来说，要想达成还不算太难。但是如果要我去叠衣服，那我就必须另寻他法了。</p> 
<h3>二之二、对付不得不做的事情：两分钟法则</h3> 
<p><a href="https://jamesclear.com/how-to-stop-procrastinating">James Clear 的 2-Minute Rule</a> 是我经常使用的小工具。</p> 
<p>我完全不是一个喜欢叠衣服的人，但这又是一件不得不做的事情。所以每次把烘干的衣服拿出来之后，我会把它们放在一个明显妨碍我正常生活的地方。这样当我看到这些衣服的时候，我就提醒自己：<strong>收拾衣服这件事情，我就做两分钟，两分钟后如果我觉得真的不想做了，那就不做了</strong>。</p> 
<p>通常情况下我都顺利把衣服收拾完了。这可能跟人类的心理状态或思维方式什么的有关系我不清楚，总之对我来说是一个非常实用的技巧。</p> 
<p>James Clear 就是 Atomic Habits 的作者，可见阅读和笔记还是让我学到不少小技巧。</p> 
<p>有时候我会用这个技巧帮助我剪播客。我的工作上下班时间都比较晚，每天回到家之后我什么也不想干，只想看点不用动脑的娱乐视频然后洗洗睡。但如果播客节目的排期摆在了那里，那么剪节目就成了另一件我很不想做但是不得不做的事情。</p> 
<p>这时候我会跟自己说：<strong>我就新建一个 Audition 的工程，把音频文件放进去，就这样</strong>。结果一般情况下我就开始调音量，降噪，对齐时间轴，顺利地剪起了节目。</p> 
<p>我觉得这个小技巧就像一个钩子（Hook），它帮助我启动了脑袋里的某个引擎，然后大脑就像被放上了轨道的火车一样，嘟嘟嘟往前跑了。所以，<strong>发现更多脑袋里的钩子</strong>，是我一直在做的事情。</p> 
<h3>二之三、钩子：约定了就不会爽约</h3> 
<p>这是我在<a href="https://justinyan.me/post/4752">第一篇文章</a>就提到的：一般我只要跟人约好了就不会爽约。</p> 
<p>所以很多事情我可以通过跟人约定时间来解决，比如录节目、去健身之类。这样的钩子很好用，但是它也有两面性：我不喜欢爽约的人。</p> 
<p>如果有人跟我约好了时间但是他放鸽子了，一次临时有事还可以理解，两次以上我就把他加入黑名单了。这样的人我不会喜欢跟他有更多来往，除非万不得已。</p> 
<p>有时这会让我错过一些不守时但其实很有趣的人。</p> 
<p>不过，反正也没什么不能错过的，对吧。</p> 
<h3>二之四、记录平时的自我观察</h3> 
<p>自我认知是个人 OKR 的基础，即使是第五篇了我也再次重复一遍。平时我会把自我观察中发现的细节记录到一个地方，时不时更新一下。</p> 
<p>最近我使用的工具是 Notion，它的 Synced Block 可以很方便地管理个人 OKR。我的大 Objective 单独占一个主 Page，每个子 Objective 都是一个 subpage。每个月会有个 subpage 作为月度回顾和计划。计划的部分放进 Synced Block，把所有的 KR 链接到对应的子 Objective Page 里。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/personal-okr-05-notion.png" alt="" /></p> 
<p>因为我经常要看月度计划，提醒自己今天该干嘛，所以打开 Notion 会成为我的日常习惯。为此我还在 iPhone 桌面放了一个 Notion Widget，直达 OKR Page。这样当我发现自己有个什么新的特点可以发展成钩子的时候，我就往 Notion 里记录一下，后续继续思考看怎么发展利用一下。</p> 
<p>比如之前跟同事聊天他说我聊工作话题跟聊其他话题很不一样，反应很快，很职业化。当时我就留意到这个有趣的观察，然后把它记录下来。后来我的播客搭档问我是否要尝试一个新的节目形式时，我作出了类似的反应，仿佛风险与我无关似的。我发现这可能是一个可以被我利用起来的钩子。</p> 
<p>如果我自己想到新尝试的风险，此时内部的自我肯定会打退堂鼓。但如果我能找一个朋友代替我问出这个问题，可能瞬间我就换了另一个视角，果断帮自己作出了决定。这在旁人看来，似乎就是叫做“勇气”这样的东西。所以最近在我的桌上摆了一只小公仔，想以“小黄鸭调试法”这样的方式试着发展一下这个钩子。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/personal-okr-05-kitty.jpg" alt="" /></p> 
<p>这是我寻找和发展钩子的办法：记录平时的自我观察。</p> 
<h3>二之五、FWP：我的写字练习</h3> 
<p>之前我在 YouTube 看到有些人会做 Morning Pages 练习，就是拿起一个空白笔记本，往上面随便写东西，过程中可以不需要思考，天马行空，想到什么写什么，直到写满三页为止。</p> 
<p>我在<a href="https://justinyan.me/post/3599">这篇文章</a>提到我想要 Hack 我自己的大脑，所以用自称为 Flow Writing Practice 的方式进行书写练习。先不用管这个中二的名字，当做一个代号就行。平时我会在开头写上 FWP xxx 和日期，然后就往笔记本里倒入我的想法。</p> 
<blockquote>
 <p> FWP 271 21.12.12<br /> ... </p>
</blockquote> 
<p>多数时候我会选择一个最近在思考的话题来写，有时我什么也不想，乱写。有朋友说我这不是在写日记嘛。其实我会用加密的 Day One app 来写日记，写 FWP 的时候跟写日记稍有不同。不过读者朋友们如果有写日记的习惯，直接用日记来做这个练习也没什么问题。</p> 
<p>截止目前我已经写了 271 个 FWP，每次书写会尽量填满一页 A5 的 LEUCHTTURM1917 笔记本。多数时候我不会回过头去阅读，因为有意思的东西大部分已经变成一篇或多篇完整的文章发出来了。比如你正在阅读的这个 OKR 系列，就是从 FWP 的一两篇思考开始的。</p> 
<h3>二之六、人受工具与环境的影响很大</h3> 
<p>昨晚写完这篇文章，今早开车上班的时候想到一个新的钩子：我受工具与环境的影响很大。</p> 
<p>比如我的车，马力不大但调教得很好，操控感和油门响应性也很不错。所以我在马路上会倾向于开快一点，每次遇到慢车并排时就觉得郁闷。但是回想我在旅行时租的更小马力的软绵绵的车子，即便油门踩到底也是超车无力，这种的情况下我反而开得特别放松。反正也开不快，索性就慢慢开吧。</p> 
<p>所以工具给我带来的影响挺大的。我倾向于用纸笔书写替代键盘也是想通过物理的方式降速。因为打字的速度比写字快，能跟上我的思维，但这往往意味着罗里吧嗦和不严谨。</p> 
<p>我听黑胶唱片，去幽暗的自习室，选一个能看到海的地方看书度假，都是在利用环境带来的刺激。</p> 
<p>我也不记得从什么时候开始意识到这点的。</p> 
<p>也许是 2014 年读到《怦然心动的人生整理魔法》受到了启发？也许是听黑胶时感受到无法快进，无法选歌，隔一段时间要去翻面，却能欣赏一张专辑的完整作品带来的体验？</p> 
<p>总之，环境与工具对我的影响很大。所以我会有意识地利用这一点，尽量营造一个适合吸收或产出的环境。</p> 
<h2>三、人生也有周期，波动才是常态</h2> 
<p>跟金融市场所谓的“周期”一样，人也会有周期。一般每年四月份我的情绪会偏向多愁善感，七八月份会进入全年低谷，十月份之后又会迎来高产时期。不仅一年有起伏，一个月，一天，甚至阅读一本书的过程也会有起伏。</p> 
<p>所以我给自己设定每个月要发布多少文章，多少期播客节目的目标，不一定每个月都能完成。但是没有关系，只要平衡了高峰低谷之后，平均下来今年能够达成，那结果就还不赖。</p> 
<p>所以给自己的预期就不应该是，这个月的指标没达成啊，我是不是懈怠了啊，或者这个月我超额完成了，我真是个天才，下个月挑战 dobule!</p> 
<p>如果这样想的话，恐怕这个 OKR 计划不出两个月就要凉凉。</p> 
<p>我觉得个人 OKR 的好处是，可以通过一年的数据来验证 OKR 是否达成，而不需要过度关注陷在局部时期，导致自我膨胀或自怨自艾。</p> 
<p>今年枫言枫语播客超额完成了播出 24 期节目的目标，平均下来达到了我的预期，但是我们每个月都能播出两期吗？</p> 
<p>没有。</p> 
<p>月有阴晴圆缺，人有潮涨潮落，一直保持高产并不合理，周期波动才是常态。</p> 
<h2>三、惟有实践，方知真假</h2> 
<p>从 2021 年四月至今，我的个人 OKR 实践了不到一年，却已收获颇丰。</p> 
<p>我觉得不管是 David Allen 的 GTD，还是 Ryder Carroll 的 Bullet Journal。这些方法适合创始人却不一定适合所有人。能从这些系统中学到适合自己的技巧才是最重要的。</p> 
<p><strong>而要做到这一点，只有一个办法：实践</strong>。</p> 
<p>只有真的去尝试过 GTD，才知道为什么 Things, Omni Focus 要这样设计，才知道为什么它不适合我，顺便在学会 GTD 把模糊任务转变成具体可执行的 Action 的处理方法之后，全身而退，继续寻找和学习适合我的方法。</p> 
<p><strong>最终在不断的实践中，探索出属于自己的，无需坚持，只需享受的方法。</strong></p> 
<p>希望读到这里的朋友们，都能找到适合自己的长期计划实践。</p> 
<p>感谢你读到这里，我是 Justin，希望明年我们都能向理想的自己靠近。</p> 
<p><em>2021.12.13/夜</em></p> 
<h2>个人OKR实践系列</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4752">我的个人 OKR 实践 01</a></li> 
 <li><a href="https://justinyan.me/post/4755">我的个人 OKR 实践 02</a></li> 
 <li><a href="https://justinyan.me/post/4765">我的个人 OKR 实践 03</a></li> 
 <li><a href="https://justinyan.me/post/4779">我的个人 OKR 实践 04</a></li> 
 <li><a href="https://justinyan.me/post/4790">我的个人 OKR 实践 05</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://woorkup.com/google-calendar-last-day-of-month/">How to Set up Repeating Event in Google Calendar on Last Day of Month</a></li> 
 <li><a href="https://www.youtube.com/channel/UC-ga3onzHSJFAGsIebtVeBg">Lavendaire - YouTube</a></li> 
 <li><a href="https://waitbutwhy.com/2018/04/picking-career.html">How to Pick a Career (That Actually Fits You) — Wait But Why</a></li> 
 <li><a href="https://zh.wikipedia.org/wiki/SMART%E5%8E%9F%E5%88%99">SMART原则 - 维基百科，自由的百科全书</a></li> 
 <li><a href="https://jamesclear.com/how-to-stop-procrastinating">How to Stop Procrastinating by Using the "2-Minute Rule"</a></li> 
 <li><a href="https://justinyan.me/post/3599">为什么加到 To Do List 里的任务就永远 To Do 了？ | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 56 2021&#x5E74;&#x5EA6;&#x56DE;&#x987E;&#x6765;&#x5566;&#xFF01;</title>
        <link>https://justinyan.eth.limo/59C5A1EF-81DE-48DA-BC26-9D44D6888CCB/</link>
        <guid>https://justinyan.eth.limo/59C5A1EF-81DE-48DA-BC26-9D44D6888CCB/</guid>
        <pubDate>Mon, 13 Dec 2021 07:00:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/Podcast-Cover-v56-2.jpg" alt="Vol. 56 2021年度回顾来啦！" /></p> 
<p>2021 年快结束啦！</p> 
<p>今年我台经历了不少事情，两位勤奋的主播不仅实现了半月更的小目标，甚至在年底实现了一小段时间周更，可喜可贺。</p> 
<p>今年一路过来有欢喜有忧愁，我们在运营和节目内容上也尝试了很多不同的东西，收到了很多热心听众的反馈，这种感觉很奇妙。</p> 
<p>感谢听众朋友们一直以来的陪伴，让我们在科技与人文的声音中共同成长吧！</p> 
<h2>互动抽奖</h2> 
<p>欢迎大家在小宇宙 App 评论区参与本期节目互动，我们将随机抽取 8 位听众送出小礼物哟~</p> 
<ul> 
 <li>互动话题：留下你想对本台或者两位主播说的话~</li> 
 <li>奖品介绍：QQ音乐/网易云音乐 VIP月卡×1</li> 
 <li>活动说明：下周一开奖，中奖名单将在小宇宙评论区公布</li> 
</ul> 
<h2>时间轴</h2> 
<ul> 
 <li>0:46 本台年度 KPI 首次公开</li> 
 <li>2:18 总结回顾 2021</li> 
 <li>4:10 主播默契fānchē挑战</li> 
 <li>5:44 年度最喜欢节目</li> 
 <li>11:43 年度最遗憾的节目</li> 
 <li>16:50 年度最难剪的节目</li> 
 <li>25:30 科技快乐星球 VS 科技007</li> 
 <li>30:30 “播客的听友是一群可爱的人”</li> 
 <li>34:04 “世界各地”系列的来历</li> 
 <li>38:13 节目预告？杭州/苏州/大连/青岛</li> 
 <li>45:03 本期福利活动：评论抽奖送会员</li> 
 <li>46:07 如果出周边，大家想要吗？</li> 
 <li>47:06 灵魂三问：最想做客哪档播客？</li> 
 <li>52:55 如果有一天，我们不再做节目…</li> 
 <li>59:00 2022 年的期待</li> 
 <li>1:05:10 片尾曲：Aloha Heja He - Achim Reichel</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/vBtYtWlO8Kg" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Achim Reichel - Aloha Heja He</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x7684;&#x4E2A;&#x4EBA; OKR &#x5B9E;&#x8DF5; 04</title>
        <link>https://justinyan.eth.limo/21F35A19-134F-4DAD-9C01-147E025B8ED5/</link>
        <guid>https://justinyan.eth.limo/21F35A19-134F-4DAD-9C01-147E025B8ED5/</guid>
        <pubDate>Fri, 10 Dec 2021 17:30:56 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/personal-okr-04-cover.jpg" alt="我的个人 OKR 实践 04" /></p> 
<p>你好，我是 Justin，这是我写给自己看的个人 OKR 实践第四篇。</p> 
<p>我的个人 OKR 是给自己量身定做的，所以不建议读者朋友们照搬，但希望我的实践过程能对大家所有启发。<a href="https://justinyan.me/post/4765">上一篇</a>分析“身心健康”时我发现每个领域都应该当做专业领域来学习。但是健身这个领域个性化的特点比较强，男的、女的，想纠正体态的，想练成大肌霸的，想练成小鲜肉的，饮食与训练计划差别很大，上手曲线并不低。所以有没有简单一点的，通用一点的办法，可以直接抄别人作业的呢？</p> 
<p>我发现“财务状况”这一项就有这样的“简单方法”，这里我选择抄且慢的作业。</p> 
<h2>一、有些专业领域反而更好入门</h2> 
<p>资产配置、个人如何投资，这样的话题看起来特别专业，<strong>不过也正因为专业，所以学习资料很多，反而更容易入门。</strong></p> 
<p>在<a href="https://justinyan.me/post/4752">第一篇</a>里我说，今年（2021年）股市牛熊转换之后，我认真学起了孟岩和张潇雨联合设计的<a href="https://youzhiyouxing.cn/curriculum">《有知有行投资第一课》</a>。这是一份免费的课程，帮助我从一个小白初步窥得投资的大门。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/personal-okr-04-01.jpg" alt="" /></p> 
<p>所以我的资产配置和财务管理基本照搬<a href="https://qieman.com/static/qiemanandm4.html">且慢的“四笔钱”框架</a>，根据我的实际情况进行微调，这“四笔钱”分别是：</p> 
<ul> 
 <li>活期现金</li> 
 <li>稳健理财</li> 
 <li>长期投资</li> 
 <li>保险保障</li> 
</ul> 
<p><strong>如同个人 OKR 的基础是自我了解，财务规划的基础是对自己财务状况的了解</strong>。此前我已经做过一段时间的全面财务统计，在<a href="https://justinyan.me/post/4427">这篇文章</a>介绍过。简单说就是我写了个简单的服务，把每个月的电子账单导进去，它就可以帮我自动分类，接着我再导入财务管理软件（比如 MoneyWiz）进行分析。当时我在文末留下了一个疑问：</p> 
<blockquote>
 <p> 接下来我也不知道能从中分析出什么，能给我带来什么。我希望掌握全面财务状况之后，能帮助我更好地作出投资金融、投资自己或者其他的决策，但是我发现我并不知道应该怎么做。 </p>
</blockquote> 
<p>且慢的“四笔钱”如同一本操作手册，给了我一个非常好的实践机会。对照“四笔钱”进行资产调整是相对简单的，<strong>先结合个人的状况进行分析，然后就是简单的数学计算了</strong>。每次制定计划时，我只需要算好这个月内需要投入多少钱到什么地方，是否需要调整资产配置即可。</p> 
<p>实际执行过程可以参考有知有行的温度计进行月度定投、根据分析好的资产调整，“从A配置中买/卖N份，转移到B配置”等等。执行基本没有什么难度。</p> 
<p>所以<strong>我的“财务状况”规划基础是：了解自己的财务状况</strong>。具体来说，我可以统计到我的全部账户（细分到银行、股票、理财、信用卡），每年每月每日的收支概况，精确追踪到某一笔支出/收入/转账。</p> 
<h2>二、四笔钱分析</h2> 
<p>首先，<strong>留出足够的“活期现金”</strong>，如果知道自己每月支出的话就比较好估算，如果不知道的话，可以预留月收入的两到三倍（月入百万的大佬应该不会看我这种穷人的分享吧😂）。且慢的建议是把这部分钱放到活期理财，比如各种宝，或者银行理财。我的做法是在银行的“xx宝”预留一个小池子，作为每个月信用卡还款和部分日常支出。月工资到账后，先把这个小池子填满，剩下的钱再流到其他的池子。</p> 
<p>活期需要关注的是所谓的“流动性”，也就是转出来需要多长时间。一般都是实时到账、T+1之类的，有些“XX宝”的实时到账额度有限制，比如 1 万人民币。所以买入这种产品时需要考虑额度是否足够。</p> 
<p>在研究这些各种宝的时候我发现，其实我对这些理财产品的认识都流于表面，完全不知道他们是如何实现“稳定保本收益”的。在不了解一个产品是什么东西的情况下就直接投钱进去，是不是有点不可思议。所以后来我读完了有知有行 App 里《投资知识体系》的全部文章，受益匪浅。里面不仅有货币基金是怎么获得收益的，“固收+”是个什么东西之类的知识，也有来自各个有名的“大V”的非常有启发的文章。我平时不喜欢读所谓“大V”的流行文，感觉像一本书被打上了“畅销书”的标签一样。但这也是一种偏见，并非所有的“流行”和“畅销”都没有价值，至少从 Tim Urban 的<a href="https://waitbutwhy.com/2018/04/picking-career.html">这篇文章</a>我收获挺多，有知有行的中文翻译也非常不错，值得阅读。</p> 
<p>第二笔钱是<strong>“稳健理财”，主要是预留半年以上、三年以内有可能会用到的钱</strong>。比如你计划明年买个房，或者已经买了房要准备一笔装修款。那么这笔钱就不适合放进股市，因为你不知道明年要用到的时候它是涨是跌。但如果你没有类似的打算，直接不留也可以。<a href="https://mp.weixin.qq.com/s/Vl2RNyLcIAiocZ_JCqsG1A">且慢的孟岩就说他暂时没有这个需求</a>，所以跳过。</p> 
<p>第三笔钱<strong>“保险保障”主要是给你自己和家人买保险的钱</strong>。保险不是为了收益，是为了在你的人生遭遇不测时，可以托底的资本。简单分为四种：<strong>基础医疗险、重疾险、意外险和寿险</strong>。一般在福利比较好的公司工作的话，公司可能会给你投团体保险，这四项都会覆盖。大部分是离职就失效，或者一年期，额度也不会很高。</p> 
<p>所以还是需要给自己单独买一份保险，按年缴费。一般医疗险和寿险跟被保人年龄相关，越年轻保费越便宜，而且会按照第一期的保费交到期满。除了自己，家人的保险保障也需要考虑。即使从最“自私”的角度来说，如果家人生病了，需要由你来支付医疗费用，一般人都会支付的。这时候如果有一笔保险金支持，肯定比动用到自己的投资本金更好。我挺喜欢的博主<a href="https://yetanmoney.com/">《也谈钱》</a>不仅提到给自己和家人买保险，还提前设定了遗嘱并时不时更新，可谓看得甚远。</p> 
<p>虽然有些所谓“保险”自带理财属性，可以在符合某某条件后获得一定的收益。但是我把保险当做一项支出，认为这是一笔花出去就没有了的钱。人生是会波动的，这笔保险的支出不会影响我当下的生活，却可以减少我未来的人生可能受到的影响。</p> 
<p>其实在我开始考虑购买保险之前，对保险行业知之甚少，甚至都不知道我们公司给每个员工都投保了哪些产品。但是亡羊补牢，为时未晚。现在开始学起，未来只会变得越来越好XD。不过保险行业细节太多，真要把自己变成专家其实也没有必要，所以我选择<strong>把如何挑选合适的险种这个难题交给专业人士来</strong>。我在某平台上预约了他们的免费保险顾问，他会打电话给我，根据我的实际情况给出建议。电话过程中我提出了很多小白问题，顾问会很耐心地一一解答，体验非常不错。最终顾问会给我一个具体购买的方案列表，由我自己决定是否下单，非常贴心。</p> 
<p><strong>四笔钱的最后一笔是“长期投资”</strong>。用作长期投资的钱，必须是<strong>“三年到五年用不上也没关系”</strong>的钱。像今年牛转熊的时候，很多人在股市中大起大落，情绪跌宕起伏，这种就属于仓位过高。<strong>最好的用于长期投资的钱，就是哪怕你全部输光了，也不影响你现在生活的钱</strong>。可以认为把前面三笔钱：活钱、保险、稳健理财都留好了之后，接下来三五年即便市场波动跌到谷底，也不会影响现在的生活质量。</p> 
<p>这样每当股市、币圈大起大落的时候，社交网络充斥的各种搞笑的段子也好，看似真诚的说教也罢，全都可以无视。我会这样看待市场起伏：<strong>惟有长期收益才能看出投资策略的好坏，短期涨跌只是一种赌博</strong>。</p> 
<h2>三、根据自己的实际情况进行调整</h2> 
<p>“四笔钱”是且慢提出的做法，具有一定的通用性。但我使用的时候还是需要根据我的情况进行调整。比如也谈钱在<a href="https://mp.weixin.qq.com/s/8onR2i8yQ71VmE3gvbJtqA">这篇文章</a>提到，他把资产分为三个池子：</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/640.webp" alt="" /></p> 
<p>跟且慢的四笔钱有异曲同工之妙。我在思考财务的 Objective 时参考了也谈钱的想法，把目标定为“躺着赚钱，小有所成”。</p> 
<p>我不是一个会因为财富的涨跌而感到特别兴奋的人。所以我不太适合整天盯着市场波动和各种公开的不公开的信息进行短线操作，更何况我根本也不专业，跟投行的高手们博弈无异于肉包子打狗。所以我的 Objective 的前半段是“躺着赚钱”，晚上必须要睡得着才行。后半段则是根据我的能力设定为<strong>不努力踮起脚来就够不着的目标</strong>，毕竟太舒服的目标无法让人产生动力。</p> 
<p>那么如何实现“躺着赚钱”呢？首先我会把当下手里风险过高的资产慢慢转移到风险更低，收益也更低的地方。比如把某些个股卖掉，换成能代表中国未来经济发展的指数基金。（看到这里，2021 年手里还持有大量“中丐股”的读者应该都能感同身受吧😂）。我的策略是分步进行，因为且慢的有知有行 App 也建议分批买入。我会设定一个金额和期限，比如 10 个月内，从某资产转移多少钱到另一个资产。因为是定投，至少要持有 1 年以上才可能盈利，所以我完全可以忽略短期波动带来的影响，晚上睡得香。</p> 
<p>另外是“小有所成”。什么是小有所成呢？其实就是年化收益目标。也谈钱他针对自己的家庭状况和居住在德国的环境，设定了 500 万人民币本金，年化 10% 的收益目标。我觉得我也应该给自己设定一个目标。但是众韭菜皆知：股神巴菲特的长期年化收益也不过 20%，我一介凡夫俗韭岂可与金字塔尖相提并论？</p> 
<p>参考且慢给出的年化收益阶梯：</p> 
<ol> 
 <li>跑赢通胀，获得 4%～6% 的收益</li> 
 <li>小有所得，获得 8%～10% 的收益</li> 
 <li>大有所成，年化收益率在 20% 以上</li> 
</ol> 
<p>可以看到我们至少要<strong>跑赢通胀</strong>，手里的血汗钱才不会贬值。能够超过这条线，才算投资“小有所得”。至于“大有所成”反正我是有自知之明，知道不需要考虑的。所以我的投资收益目标是至少跑赢通胀，最好能小有所得。这就是前面我说的需要努力踮脚。</p> 
<p>有了战略目标，再加上四笔钱的战术手册，我就可以开始调整资产配置了。希望能跟也谈钱一样，做到投资躺赚，好好努力工作。因为根据以上分析，<strong>通过投资收益赚钱远不如当打工人 996 来得快</strong>。虽然很多人觉得打工挣钱太慢太辛苦，可惜现实就是这么残酷。</p> 
<h2>四、道理我都懂</h2> 
<p>最近跟朋友聊天，他提到无论《思考，快与慢》、《影响力》、《自控力》还是《被讨厌的勇气》这些书，它们讲的很多道理都是相通的，甚至是重复的。我说道理相通很正常，唯一不同的地方在于，<strong>学完了这些理论之后，有没有亲自去实践过，有没有通过实践去验证过</strong>。有句流行的电影台词说：“听过很多道理，依然过不好这一生。”原因也很简单，多数人听完一个道理，觉得“好有道理啊！”，然后就没有然后了。</p> 
<p>这是为什么呢？今年<a href="https://justinyan.me/post/4643">我读了《简·爱》这本书</a>，我觉得女主好有勇气啊！我也要像她一样勇敢才行。但是我怎么才能像她一样呢？我不知道。所以我觉得，道理对于指导实践的作用其实很有限。<strong>可以被实践的，被证伪的理论比有道理的废话更有意义。</strong></p> 
<p>我根据且慢的“四笔钱”规划，设计了计划，然后开始行动。<strong>通过行动去验证这些方法到底适不适合我，有没有效果。</strong></p> 
<p>四笔钱的操作动作都很简单，一般只要真的想做都能完成。比如长期投资一项，我们可以设置一个定投提醒，发工资那天就在 App 上进行转账。那每次投入多少钱呢？看上面四笔钱的分析，留出足够的活钱、保险保障和稳健理财之后，剩下的就可以投了。如果你发现每月流进来的钱还不够注满前面的池子，嗯，那现阶段还是先别考虑这些劳什子玩意了，好好努力赚钱吧（这也是且慢和也谈钱都建议的法子）。如果还有剩下的钱，那可以参考有知有行 App 里的市场温度计，跟着他的指示投钱。</p> 
<p>其实除了投资这种带有详细战术手册的事情之外，生活中我们还会遇到更多无法“一步兩步三步四步望著天手牽手”的事情。所以下一篇文章我会分享一些我个人的自我驱动小技巧，这些技巧当然不会适合每一个人，但是希望我寻找适合自己小技巧的方法能给你带来一点启发。</p> 
<p>不知道在读这篇文章的你是否有在做长期计划呢？如果你也有长期计划经验的话，不妨在留言区分享一下你的做法吧。</p> 
<h2>个人OKR实践系列</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4752">我的个人 OKR 实践 01</a></li> 
 <li><a href="https://justinyan.me/post/4755">我的个人 OKR 实践 02</a></li> 
 <li><a href="https://justinyan.me/post/4765">我的个人 OKR 实践 03</a></li> 
 <li><a href="https://justinyan.me/post/4779">我的个人 OKR 实践 04</a></li> 
 <li><a href="https://justinyan.me/post/4790">我的个人 OKR 实践 05</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://youzhiyouxing.cn/curriculum">《有知有行投资第一课》</a></li> 
 <li><a href="https://qieman.com/static/qiemanandm4.html">且慢的“四笔钱”框架</a></li> 
 <li><a href="https://justinyan.me/post/4427">我是如何统计个人财务状况的 | 枫言枫语</a></li> 
 <li><a href="https://waitbutwhy.com/2018/04/picking-career.html">How to Pick a Career (That Actually Fits You) — Wait But Why</a></li> 
 <li><a href="https://mp.weixin.qq.com/s/Vl2RNyLcIAiocZ_JCqsG1A">从「四笔钱」说起</a></li> 
 <li><a href="https://yetanmoney.com/">《也谈钱》</a></li> 
 <li><a href="https://mp.weixin.qq.com/s/8onR2i8yQ71VmE3gvbJtqA">50 万本金，应该咋配置？</a></li> 
 <li><a href="https://justinyan.me/post/4643">枫影夜读 #19 - 夏洛蒂·勃朗特《简·爱》 | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x7684;&#x4E2A;&#x4EBA; OKR &#x5B9E;&#x8DF5; 03</title>
        <link>https://justinyan.eth.limo/C01FB31F-DE2F-42F0-B178-D7F0B7875CE9/</link>
        <guid>https://justinyan.eth.limo/C01FB31F-DE2F-42F0-B178-D7F0B7875CE9/</guid>
        <pubDate>Tue, 07 Dec 2021 10:00:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/personal-okr-3-cover.jpg" alt="我的个人 OKR 实践 03" /></p> 
<p>你好，我是 Justin，这是我写给自己的个人 OKR 实践第三篇。如果你还没有读过前面两篇（<a href="https://justinyan.me/post/4752">01</a>、<a href="https://justinyan.me/post/4755">02</a>）的话，不妨先移步读一下。</p> 
<p>前面两篇，我给自己设定了一个非常含糊的大 Objective：<strong>向理想的自己靠近</strong>，然后又把这个大 O 按照“生命之轮”的启发拆解成了五个小 O:</p> 
<ul> 
 <li>身心健康</li> 
 <li>财务状况</li> 
 <li>人际关系</li> 
 <li>职业生涯</li> 
 <li>创造成长</li> 
</ul> 
<p>我不建议读者照搬这些目标，每个人应该根据自己的情况进行拆解，每次回顾时也可以进行更新。前面两篇我也介绍过，我的 Objectives 一直处于变化当中，所以建议大家通过实践寻找适合自己的 Objectives。</p> 
<p>得到这一堆小 O 之后，一开始我也不知从何下手，经过这段时间的实践我领悟到一个道理：我需要把每一个方面都当作一个“专业领域”来学习。所谓“专业”就是<strong>不经过一定程度的学习无法制定合理的计划</strong>。</p> 
<p>我想这可能是很多人（包括我自己）照搬别人的方法，写好了计划却无法实施的关键原因。比如我在进行系统性健身训练之前就学习高手的五分化课表，结果不仅没有显著的进步，反而容易受伤，甚至越练越瘦。</p> 
<p>所以接下来我以“身心健康”为例子讲述我走过的弯路。</p> 
<h2>一、健身是一个专业领域</h2> 
<p>作为一个长期坐在电脑前的码农，整日不运动，饮食不均衡，肩颈酸痛，作息日夜颠倒是常事。前几年我在经过一段非常艰难的新项目冲锋之后，觉得不仅身体疲惫，心理状态也受到不小影响。</p> 
<p>后来在阅读了多种书籍之后，我猜想大体<strong>身体健康与心理健康是分不开</strong>的，正如 Jordan Peterson 在 <a href="https://justinyan.me/post/4196">12 Rules for Life（《人生十二法则》）</a>一书中的第一条法则:</p> 
<blockquote>
 <p> Stand up straight with your shoulders back </p>
</blockquote> 
<p>研究表面人体内的血清素和章鱼胺水平会影响人的心理状态，从而影响身体表现。书中以龙虾为例，血清素高、章鱼胺低的龙虾往往会变得趾高气昂，斗志满满，反之则垂头丧气，毫无战意。所以健康的身体理论上可以给我带来更加精力充沛，积极向上的心态。</p> 
<p>过去我也经常上健身房，经常看健身博主的视频，读文章，学习怎么做分化训练计划诸如此类。但彼时的我并不明白，盲目参考别人的课表并不不可取。<strong>因为健身也是一个专业领域</strong>，新手看了一些视频，读了一些文章，感觉好像理论知识掌握了，但是一进健身房却怎么练怎么不对。更可怕的是，<strong>作为新手我还有一种迷之自信，这种自信不仅没带来好处，反而严重阻碍了我进行真正的提高</strong>。</p> 
<p>所以年初我开始请教练，帮助我做系统性的健身计划。除去因为生病、疫情等不可抗力导致的中断，我大约进行了 6 个月的训练。期间我获得了看视频读文章无法学到的东西，比如正确的训练动作，肌肉发力感，合适的训练容量等等。当我作为一个小白在健身房模仿视频里的动作进行训练时，很多细节其实没做到位，导致力量分散，无法孤立刺激单一肌群。只有当教练用手指点到合理的肌肉发力位置，修正了细节，感受到孤立肌群肌肉充血的膨胀感时，才算真正学会了一个训练动作。</p> 
<p>所以这是我在训练中学到的第一个教训：<strong>健身是一个专业领域，不仅需要理论知识，也需要累积足够并且正确的训练量。</strong></p> 
<p>以此类推，财务管理，人际关系等方面无一不是专业领域。</p> 
<h2>二、入门专业领域之后的正向反馈</h2> 
<p>我在训练中学到更多的知识，获得更好的身体状态，更好的睡眠，更健康的饮食，又反过来让我获得更加充沛的精力，更加坚定的态度。</p> 
<p><a href="https://justinyan.me/post/4755">第二篇</a>我提到《思考，快与慢》里把认知系统分为直觉的系统 1 和深度思考的系统 2。当身体状态变好了之后，我发现<strong>我在日常工作中也能更多运用系统 2 来解决问题了！</strong>这无疑是一个非常棒的正向反馈。</p> 
<p>另一方面，在健身房冲击大重量时，也是对压力应对能力的训练。<a href="http://steveshuo.com/">《Steve 说》</a>的主播史秀雄经常练习巴西柔术，他提到一定要体验一下被人打懵的感觉，对你的个人成长会很有帮助。虽然我不练柔术，但当我在健身房冲击重量，举起远比上一个循环更重的哑铃的一瞬间，只觉泰山压顶。这时候你必须回忆起之前训练时的发力感，才能在保护好自己的同时把哑铃推起。</p> 
<p>最近我正在冲击下一个阶段的重量，每次去健身房无论练什么都感到压力山大。因为教练会根据我当下的状态，把重量加到我不带辅助绝对无法推完的程度。这样的训练无疑非常<strong>有助于在现实生活中遇到突如其来的重压时保持冷静，沉着应对</strong>。</p> 
<p>这些都是我从健身训练获得的正向反馈，而想要获得这种正向反馈<strong>就必须要去实践，去尝试</strong>。在我开始进行系统性训练之前，这些好处是我完全没有想象到的，甚至可能会被我的迷之自信给抹杀掉。所以<strong>一个合理的 Objective 一定是自己亲自实践后修正的得到的，而不是呆坐着靠沉思想出来的</strong>。</p> 
<h2>三、核心是习惯</h2> 
<p>在我的个人 OKR 中，<strong>身心健康的核心其实不是“健身”，而是“习惯”</strong>。健身只是其中一个习惯。</p> 
<p>那么怎样的习惯有助于身心健康呢？我从以下几个方面入手：</p> 
<ul> 
 <li>运动</li> 
 <li>饮食</li> 
 <li>睡眠</li> 
 <li>疾病</li> 
 <li>体重，体脂等数据监测</li> 
</ul> 
<p>并据此设置 Key Results。运动我可以用去健身房训练的次数来表达，比如把 KR 设置为：11月内，一共去健身房进行 12 次训练（平均一周三次）。饮食则增肌减脂不同阶段有不同计划，不再赘述。</p> 
<p>后来我从<a href="https://book.douban.com/subject/10773362/">塔勒布的《随机漫步的傻瓜》</a>中学到：<strong>真正的科学应当是可以被证伪的</strong>。比如牛顿物理学是科学，因为它允许我们证明它是错误的，而且确实已经被爱因斯坦的相对论推翻了。所以个人 OKR 是否有效也可以被证伪，而它的适用只限于自己，所以需要自己来提供可被验证的条件。</p> 
<p>比如我自己设定的“减少咖啡因摄入可以提升我的睡眠质量”就是一个假设，我需要收集证据证明它为真或假。因为有些假设可能在统计学上成立，但对个体而言却未必有效。有些人每天喝咖啡喝到醉了都能睡得很香，但我不行。所以我在回顾阶段加入了监测和证明的步骤，如此，<strong>我就可以有效地甄别 KR 制定是否合理，后续应当保留还是舍弃</strong>。</p> 
<p>我们以睡眠为例。睡眠的重要性奇高，受影响的因素又很多。所以我用 Sleep Cycle 记录睡眠时间和质量到 Apple 的 Health 里，这样我就有了可以观测的数据。因为闹钟也用这个 App，所以起床时它就可以自动记录睡眠时间，不容易漏记。根据我长期记录和观察的结果来看，睡眠质量低于 70% 时我当天的状态就会很差，高于 70% 之后不会有显著变。另外咖啡和酒精会对我的睡眠造成明显影响，通常过量之后第二天的状态会很糟糕。</p> 
<p>会造成睡眠质量差的习惯就是坏习惯，反之则是好习惯。那我要怎么制定 KRs，提升睡眠质量呢？</p> 
<p>James Clear 在 <a href="https://justinyan.me/post/4352"><em>Atomic Habits</em> （《原子习惯》）</a>一书中写到：</p> 
<blockquote>
 <p> It's not about time, it's about frequency. </p>
</blockquote> 
<p>要知道 frequency 就得做记录，我把这些习惯放进我的 Habit Tracker，以天为单位记录，每月回顾，这些习惯分别是:</p> 
<ul> 
 <li>Workout：是否进行了训练</li> 
 <li>Sleep：是否睡够了</li> 
 <li>Coffee: 是否喝咖啡过量</li> 
 <li>Alcohol：是否饮酒过量</li> 
 <li>Carbs：是否吃了高热量宵夜</li> 
</ul> 
<p>我采用的 Habit Tracker 表格跟这个长得差不多：</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/personal-okr-3-habit-tracker.jpg" alt="" /></p> 
<p>咖啡和酒精都是精神成瘾类饮品，David Courtwright 在 <a href="https://book.douban.com/subject/25908552/"><em>Forces of Habit</em> （《上瘾五百年》）</a>一书中曾作过非常有趣的描述，上面提到的 <em>Atomic Habits</em> 也有不错的养成好习惯，戒除坏习惯的具体做法。我的想法很简单：<strong>想减少坏习惯发生的频率，就要先了解这些坏习惯的原理，然后再对症下药</strong>。跟本文所说的，把每个方面都当做专业领域对待是一个道理。我从 <a href="https://justinyan.me/post/4352">Atomic Habits 的 <strong>Crue → Crave → Response → Reward</strong> 四个阶段</a>获得了一些灵感，找到了能帮我减少咖啡因摄入的方法，所以非常推荐诸位从阅读中找到适合自己的办法。</p> 
<p>目前我控制每日咖啡因摄入量之后收获了一个非常棒的正反馈：<strong>晚上到了 12 点左右我开始有想睡觉的感觉了</strong>。已经很多年没有这种感觉的我还挺开心的。反过来我的睡眠质量检测和自我观察也表明上述假设是正确的，应该继续执行。</p> 
<p>顺便再分享一个小技巧。我在读完 Matthew Walker 的 <a href="https://www.amazon.com/dp/B06Y649387"><em>Why We Sleep</em></a> 和 Nick Littlehales 的 <a href="https://www.amazon.com/dp/B073Q3LFN9"><em>Sleep</em></a> 之后明白了昼夜节律的重要性，最好的睡眠应该有固定的入睡和起床时间。所以我给家里的卧室装上了电动窗帘，每天早上定时自动打开窗帘，让阳光把我唤醒。书中还有诸如调节空调温度，使用太阳灯代替我说的电动窗帘之类的做法，有睡眠障碍的朋友可以试着读一下。</p> 
<p>以上是我目前针对身心健康所作的分析和计划，<strong>具体到每日执行的任务其实就很简单：记录</strong>。因为我有<strong>跟人约定了就会守时</strong>的弱点（以后我称之为<strong>钩子</strong>），所以只要跟教练约好时间，我的训练执行就不会有问题。这样保持健身频率之后很快可以养成好习惯。</p> 
<p>至于戒除坏习惯，如果要展开说也会比较复杂，我就直接把锅甩给 <em>Atomic Habits</em> 这本书了，书里有非常具体的办法。</p> 
<p>有了记录之后就可以制定月度目标。比如我的健身训练已经比较上轨道了，结合近期我脚上有伤不适合安排太密集的训练，所以目标设定为每周三次训练就足够了。等脚伤痊愈后可以试着一周四分化，每次训练后再加点有氧。属于不太需要照顾的目标。</p> 
<p>减少咖啡因摄入的目标比较需要关注。一开始我设定的目标是：一个月 24 天满足“不多于一杯咖啡”。但这个目标对我来说还是太困难了，所以经过多次调整之后，最终下调到 15 天。11 月份因为实现的效果非常好，所以可以适当把目标往上调到 18 天。</p> 
<p>可以看到我对身心健康设定的目标都是浮动的，每次回顾的时候进行调整。<strong>计划是做给我自己一个人的，只有我可以对自己负责</strong>。所以一定要设计一个踮踮脚能够到的目标，不要害怕一开始给自己的设定太低。因为<strong>根本无所谓跟别人比高低，只有跟自己比而已</strong>。</p> 
<p>这样小 O 拆解也有了，计划也有了，剩下就是每日记录健康数据了。</p> 
<p>人类身体的变化是极其缓慢的，一套训练动作如果按照一周三次的训练量，至少两三个月才有比较明显的变化。所以这段时间以来的训练也在给我的个人 OKR 带来正向反馈——<strong>健身是一个“我想要的现在要不到”的项目，非常适合长期计划。</strong></p> 
<p>而且说实在的，在现代社会这个复杂得难以理解的世界里，健身已经是少有的只要付出就一定看得到回报的事情了。</p> 
<p>所以在这个环节我学到的：</p> 
<ol> 
 <li>任何方面都是专业领域，需要学习才能合理计划</li> 
 <li>制定计划只是提出假设，需要实践来证实或证伪</li> 
</ol> 
<h2>四、爱自己并不容易</h2> 
<p>关注自己的身心健康，关注自己的财务状况，看起来好像天经地义，但还是有很多人暴饮暴食，烟酒不忌，对自己的财务状况一无所知。为什么呢？爱自己不应该是再自然不过的事情吗？</p> 
<p>其实并不。</p> 
<p>因为这世界上最了解自己的人就是自己，所以自己是最清楚自己有多么糟糕，多么黑暗的。前文我提到可以使用<a href="http://blog.sina.com.cn/s/blog_4d3997c20102v62l.html">史秀雄介绍的“个人成长史”的方法</a>跟过去的自己对话，也可以学习<a href="https://justinyan.me/post/4625">《被讨厌的勇气》里的阿德勒心理学</a>，建立分离的课题。下一步就是要在了解自己的基础上，试着去跟自己和解。</p> 
<p>做自己的长期计划的过程，就是跟自己对话的过程，也是一个试图跟自己和解的过程。</p> 
<p>修改本文的时候我已经做好了 12 月份的计划，我给“身心健康”设定了一个 Objective：Love Myself。爱自己真的很难，所以我在 12 月的计划中加入了一点小练习，希望能对此有所帮助。</p> 
<p>最近我想到了一个有点蠢但挺有用的方法，我把身体分为头、上肢、核心、下肢四个部分，然后拆解每个部分，比如头部有眼耳鼻喉。每个部分分析一下是否有需要改进的地方，或者值得关注的地方。比如我觉得最近我的视力是不是下降了？那我是不是应该去眼科中心看一下，由专业的医生给我建议。</p> 
<p>这种对自我表象的观察和由此产生的应对策略，我以为也是爱自己的一种表象。希望各位读者朋友都能发现自己，了解自己，爱自己。</p> 
<p>因为唯有真的爱自己，才有可能做出适合自己的长期计划，才有可能真的执行下去。</p> 
<p>下一篇我将介绍如何通过抄作业的方式，拆解我的“财务状况”小 O。</p> 
<p>不知道在读这篇文章的你是否有在做长期计划呢？如果你也有长期计划经验的话，不妨在留言区分享一下你的做法吧。</p> 
<p>更新于 21.12.05/下午</p> 
<blockquote>
 <p> P.S. 抱歉我在文中多次提及自我了解，因为这是我觉得个人OKR能成立的基础，所以不厌其烦地重复。 </p>
</blockquote> 
<h2>个人OKR实践系列</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4752">我的个人 OKR 实践 01</a></li> 
 <li><a href="https://justinyan.me/post/4755">我的个人 OKR 实践 02</a></li> 
 <li><a href="https://justinyan.me/post/4765">我的个人 OKR 实践 03</a></li> 
 <li><a href="https://justinyan.me/post/4779">我的个人 OKR 实践 04</a></li> 
 <li><a href="https://justinyan.me/post/4790">我的个人 OKR 实践 05</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4196">枫影夜读 #1: Jordan Peterson《人生十二法则》</a></li> 
 <li><a href="http://steveshuo.com/">我常听的播客《Steve 说》</a></li> 
 <li><a href="https://justinyan.me/post/4352">枫影夜读 #5 - James Clear “Atomic Habits”</a></li> 
 <li><a href="https://book.douban.com/subject/25908552/">Forces of Habit （《上瘾五百年》）</a></li> 
 <li><a href="https://youzhiyouxing.cn/curriculum">《有知有行投资第一课》</a></li> 
 <li><a href="https://qieman.com/static/qiemanandm4.html">且慢的“四笔钱”计划</a></li> 
 <li><a href="https://yetanmoney.com/">《也谈钱》</a></li> 
 <li><a href="http://blog.sina.com.cn/s/blog_4d3997c20102v62l.html">史秀雄介绍的“个人成长史”的方法</a></li> 
 <li><a href="https://justinyan.me/post/4625">《被讨厌的勇气》里的阿德勒心理学</a></li> 
 <li>Matthew Walker 写的 <a href="https://www.amazon.com/dp/B06Y649387"><em>Why We Sleep</em></a></li> 
 <li>Nick Littlehales 写的 <a href="https://www.amazon.com/dp/B073Q3LFN9"><em>Sleep</em></a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 55 &#x6653;&#x5CF0;&#xFF1A;&#x5728;&#x6210;&#x90FD;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;?</title>
        <link>https://justinyan.eth.limo/93C94C62-FD18-4E26-8B5D-8D98992DB040/</link>
        <guid>https://justinyan.eth.limo/93C94C62-FD18-4E26-8B5D-8D98992DB040/</guid>
        <pubDate>Mon, 06 Dec 2021 07:00:38 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/Podcast-Cover-v55.jpg" alt="Vol. 55 在成都工作和生活是什么体验" /></p> 
<p>世界各地系列！国~内~篇！</p> 
<p>本期节目我们邀请到成都的程序员 <a href="https://twitter.com/meterscao">@晓峰</a>，跟我们侃下“耍都”的工作和生活。</p> 
<p>大家还希望听到哪些城市出现在节目中，请在评论区告诉我们哟~</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 世界各地系列！来到成都</li> 
 <li>00:50 嘉宾介绍：@晓峰</li> 
 <li>01:42 缘起成都</li> 
 <li>03:40 在成都工作是悠闲？还是忙碌？</li> 
 <li>08:20 成都招人好招吗？</li> 
 <li>09:30 茶铺：余生很长，何事慌张。</li> 
 <li>11:29 开车 vs 骑车的体验</li> 
 <li>13:00 摩托骑行之旅 - 独库公路</li> 
 <li>24:12 晓峰：“买过最贵的装备：近视眼手术”</li> 
 <li>33:57 术后，我的世界变美了</li> 
 <li>40:36 手术有副作用吗？</li> 
 <li>42:30 术后眩光效果的硬核解读</li> 
 <li>45:35 印象·成都</li> 
 <li>49:25 灵魂三问</li> 
 <li>57:39 片尾曲：Beautiful Boy - John Lennon</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>嘉宾: <a href="https://twitter.com/meterscao">@晓峰</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/nljk5gmRFSo" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Beautiful Boy - John Lennon</a></li> 
 <li>节目中提到对联的茶社：陈锦茶铺</li> 
 <li>Justin: 不知道大家收听本期节目时有没有觉得我的音轨有点奇怪（讲话跟平时不太一样）。其实这期节目本来是自力来剪，但是我的声音文件因为不明原因炸裂了😵‍💫。想尽了一切办法都救不回来，所以最后只能我自己对着空气重新录了一遍再剪进去🤦‍♂️。所以感觉会有点奇怪，还请大家多多包涵。</li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x8A00;&#x67AB;&#x8BED;&#x64AD;&#x5BA2;&#x7528;&#x4EC0;&#x4E48;&#x8BBE;&#x5907;&#x548C;&#x8F6F;&#x4EF6;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/631DABF2-C199-43DC-8A55-3264916AF314/</link>
        <guid>https://justinyan.eth.limo/631DABF2-C199-43DC-8A55-3264916AF314/</guid>
        <pubDate>Fri, 03 Dec 2021 14:52:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/equipment.jpg" alt="枫言枫语播客用什么设备和软件？" /></p> 
<blockquote>
 <p> 枫言枫语，听见科技与人文的声音。 </p>
</blockquote> 
<p>因为近期有些朋友向我们询问播客录音设备的问题，所以我们觉得可以直接写出来，给大家参考一下。</p> 
<p></p> 
<h2>一、新手想尝试做播客</h2> 
<p>非常建议使用 iPhone 或其他苹果设备录音。</p> 
<p>我们很多节目要跟嘉宾远程聊天，嘉宾一般没有自己的麦克风，这时候一台 iPhone 就是一个非常好的录音设备。只要在一个足够安静的地方录制即可。</p> 
<p>不用担心 iPhone/iPad/MacBook 的录音质量问题，播客节目对音质的要求并不高，只要后期做好降噪处理，一般都能符合要求。</p> 
<p>我们<strong>非常不建议一开始做播客就买昂贵的设备</strong>，因为没把节目做上正轨之前，你不知道是不是真的想一直做下去。先用 iPhone 开始，<strong>重点是要把第一期节目发出去</strong>。</p> 
<h2>二、想要提升节目录音质量</h2> 
<p>如果已经决定好好做节目的话，那么可以考虑升级下设备，提升节目的音质。</p> 
<p>我台的设备基本上照搬<a href="https://etw.fm/articles/-equipment-">《声东击西》的一套</a>。2019 年我们<a href="https://justinyan.me/post/3686">这期节目</a>是在一个非常嘈杂的咖啡厅里录制的。当时徐涛的这套设备惊艳了我，所以回来我就直接买了一套（见文首图片）。</p> 
<p>这套设备包括便携式录音机和话筒：</p> 
<ul> 
 <li><a href="https://zoomcorp.com/en/us/handheld-recorders/handheld-recorders/h6-audio-recorder/">Zoom H6 录音机</a></li> 
 <li><a href="https://www.shure.com/en-US/products/microphones/sm58">舒尔 SM58S 动圈麦克风</a></li> 
 <li>卡农母转 6.5MM 话筒线</li> 
 <li>麦克风三角支架</li> 
</ul> 
<p>录音机带四个 6.5MM 话筒接口，顶部还有一个 XY 双声道接口，随机赠送了几个双声道麦克风，但是我很少用到，一般都用舒尔的话筒。</p> 
<p>这个话筒录出来的音轨是单声道的，所以有音乐录制需求的小伙伴可以考虑升级。</p> 
<h2>三、录制时的注意事项</h2> 
<ol> 
 <li>我们试过网红的电容式麦克风 Blue Yeti，但是效果不佳。一般我们在家录音，环境无法做到工作室那样安静，很容易拾到环境噪音，所以不推荐。</li> 
 <li>如果买了话筒架把话筒放在桌上录音，那么录制过程务必记得不要敲桌子。很多人思考的时候有碰桌子的习惯，这些都会成为后期的噩梦。</li> 
 <li>理论上使用带线控的 EarPods 比直接对着 iPhone 录效果更好，我们现在都用 AirPods 无线耳机，更自由。</li> 
 <li>不管用什么录音设备，尽量不要放在发出噪音的设备旁边，比如随手把 iPhone 放在了 Intel 芯片的 MacBook Pro 上面。</li> 
 <li>录制过程建议开启云录制，作为备份，防止录制事故或者音轨故障，我台选择的是腾讯会议的云录制。</li> 
</ol> 
<h2>四、后期制作的小技巧</h2> 
<p>我们使用 <a href="https://www.adobe.com/products/audition.html">Adobe Audition</a> 进行后期制作。这个软件中国官网无法直接下单，需要在美国官网下单，建议使用美国的 Paypal 账号。</p> 
<ol> 
 <li>录制时最好每个人一个音轨，方便剪辑。</li> 
 <li>开始录制时可以由一个人带领读秒1-10，其他人跟读，方便后期把音轨对齐（远程时还能依此判断出延迟高低）</li> 
 <li>把音轨对齐后可以分开每个音轨把音量拉高，最好通过耳机收听效果，尽量把大家的音量调到差不多水平。</li> 
 <li>调好音量后可以开始降噪，选择一段采样音频，然后对全局音轨进行降噪处理。</li> 
 <li>最后再对整个音轨打开强制限幅器，这样声音就不会忽高忽低。</li> 
 <li>导出的时候一般选择 44.1KHZ, 192 kbps 即可，播客的音质要求不会很高。</li> 
</ol> 
<p>更新于: 2021/12/03</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x7684;&#x4E2A;&#x4EBA; OKR &#x5B9E;&#x8DF5; 02</title>
        <link>https://justinyan.eth.limo/8C5451A4-8869-4BEA-8176-5BA5CD45D17B/</link>
        <guid>https://justinyan.eth.limo/8C5451A4-8869-4BEA-8176-5BA5CD45D17B/</guid>
        <pubDate>Fri, 03 Dec 2021 12:37:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/11/personal-okr-2-cover.jpg" alt="我的个人 OKR 实践 02" /></p> 
<p>你好，我是 Justin，这是我写给自己的个人 OKR 实践第二篇。</p> 
<p><a href="https://justinyan.me/post/4752">上一篇文章</a>提到一开始我也没想那么多，只是把手里能用的工具都用上了。直到今年（2021年）十月底，我在做十月份的回顾和开启十一月计划的时候发现我根本不知道如何形容我的 dream life。于是我开始做大目标的拆解和分析，并在分析的过程中发现一个非常简单的道理：<strong>计划的三段论</strong>。</p> 
<h2>一、计划的三段论</h2> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/11/long-term-planning-syllogism-2.png" alt="" /></p> 
<p>单纯从逻辑上讲，假定我知道<strong>“目标”</strong>是什么，假定对目标的<strong>“分析和计划”</strong>是合理的，那么只要我能够顺利<strong>“执行”</strong>完拆解出来的计划，我距离目标就更进一步了。</p> 
<p>这就好比在大海中航行，先有一个目的地，然后设计航线，再升帆起航，在途中对抗风雨，披荆斩棘最终抵达。但是这个过程中需要时时测量是否偏航，需要决策是否修正方向，甚至是否需要变更目的地。所以上述三段论还需要<strong>测量与修正</strong>以实现自我完善。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/11/long-term-planning-syllogism.png" alt="" /></p> 
<p>这个测量和修正的过程我放在<strong>“回顾”</strong>阶段来做。周期性的回顾可以对我们的执行状况进行评估，也可以对目标进行评估和修正。</p> 
<p>这个假设看起来没什么问题，但是<strong>如何确保每一阶段都能做到“合理”呢</strong>？根据我为时不长的实践，我觉得每个阶段都没法一步到位，<strong>回顾和修正</strong>在这里就显得尤其重要。</p> 
<p>个人 OKR 不是公司 OKR，没有办法由一群人讨论敲定然后层层传递。个人 OKR 是自己跟自己的对话，<strong>只有我自己去尝试了才知道每个阶段到底适不适合自己</strong>。虽然无法集思广益，但是个人 OKR 的试错成本低，修正每个阶段也相对容易，这是个人 OKR 与组织 OKR 相比最大的优势。</p> 
<h2>二、怎么设定一个合理的目标呢？</h2> 
<p>这真的是一个很难的问题。</p> 
<p>一开始我参考 <a href="https://rework.withgoogle.com/guides/set-goals-with-okrs/steps/introduction/">Google 制定 OKR Objectives 的方法</a>:</p> 
<blockquote>
 <p> Objectives are ambitious and may feel somewhat uncomfortable </p>
</blockquote> 
<p>他说要足够 ambitious 甚至 uncomfortable，结合<a href="https://justinyan.me/post/4352">我在 <em>Atomic Habits</em> 这本书</a>学到的，我应该关注我本人这个 Entity，我希望成为一个怎样的人，往这个方向思考。孟岩的<a href="https://mp.weixin.qq.com/s/1T8r7HIX8NAQqUowFOV0rg">这篇文章</a>讲了他制定组织 OKR 的思路，可供参考。但是我觉得从非常宏观的视角去看使命、愿景之类的还不适合现阶段的我。所以我干脆把目光放得短浅一些，<strong>先关注当下的我</strong>。</p> 
<p>去年（2020年）我觉得自己太弱了，所以在播客中立了个 Flag: <a href="https://justinyan.me/post/4208">Be a Tough Guy</a>。这个 Flag 去年完成得还不错，所以今年我希望更进一步。</p> 
<p>去年我的理论依据是：“一个人看上去从容自信，是因为它具备了解决所有问题的能力。”所以我觉得<strong>只要变得足够强大就好了，一切问题都可以迎刃而解</strong>。</p> 
<p>真的是这样吗？我观察了一下身边的人，能力出众的很多，其中也有不受大家欢迎，我也不喜欢的。如果我都不喜欢，那我肯定也不想成为这样的人。</p> 
<p>年初我受另一句话的启发，修改了我的理论:</p> 
<blockquote>
 <p> Title makes you a manager. Followers make you a leader. </p>
</blockquote> 
<p>这种 title 一般是在学校、职场等地方，由其他在该体系中更高级的单位授予你的。你可以在这个体系中获得一定的权力与地位，可是一旦离开了这个体系，这个 title 啥也不是。我回想现实生活中认识的人们，确实有些人是值得追随的，有些不。那么我希望成为哪一种人呢？</p> 
<p>这就是我年初设定目标时的思考，虽不完美，但好过没有。这个不完美的思考经过几个月的迭代更新，现在变成了：<strong>向“理想的自己”靠近</strong>。</p> 
<p>这个目标显然还不够好，它不够具体，也缺乏可执行性，但它是现阶段的我希望航向的目的地，<strong>是受我的情感认同的</strong>。</p> 
<p>丹尼尔·卡尔曼（Daniel Kahneman）在《思考，快与慢》（Thinking, Fast and Slow）一书讲认知系统分为系统 1 和系统 2。系统 1 大意是我们耗能低的，直觉的，快速判断决策的，多数时候无意识作出行动的系统；系统 2 则是耗能高，需要意识深度参与计算的，反应慢的系统。每年一到年底年初，就有很多人列出一堆新年愿望之类的，列完了就感觉好像做完了，搁一边不管了。我觉得这里面系统 1 的影响功不可没。因为列出来的东西满足了想象中的欲望，所以反而说了之后就再也不做了。既然它是系统 1 的缺陷，那就应该以毒攻毒，使用系统 1 来对付它。这也是我不断提醒自己的一点，<strong>设定的目标一定要是我的情感认同的，否则一定会影响后面的执行</strong>。</p> 
<p>哪怕这个目标它缺乏可执行性也没有关系，因为这个缺陷，我可以交给“分析和计划”阶段来补充。</p> 
<p>所以在设立大目标这里，我采用了 OKR 的做法，并在每个回顾周期重新审视我的 Root Objective，时时对其进行更新。在 OKR 中，大 O 又可以被拆解成多个小 O，我会针对每个小 O 设定 KR（Key Results），最终落到每个月的计划表中，成为 Bullet Journal 中的 Daily Tasks。</p> 
<p>关于 OKR 是什么，如何实践，在网络上已经有非常详尽的资料，原理本身也不复杂，所以这里不再赘述。</p> 
<h2>三、大 O 拆小 O：生命之轮</h2> 
<p>严格来讲把 Objective 定为<strong>向“理想的自己”靠近</strong>不太符合 OKR 的要求，但既然是我的个人 OKR，又不是给组织用的，怎么对我有效就怎么来好了。</p> 
<p>我的大 O 拆解过程跟定大 O 的探索是类似的，都是摸着石头过河。一开始我只是把手头已经在做的项目，或者把自己想到的没做好的事情简单罗列了之后进行归类：</p> 
<ul> 
 <li>播客</li> 
 <li>写作</li> 
 <li>财富</li> 
 <li>健康</li> 
 <li>人际关系（就是家人朋友）</li> 
 <li>App</li> 
 <li>工作</li> 
 <li>…</li> 
</ul> 
<p>然后我再对每个项目进行分析，试图制定一些看起来符合 <a href="https://en.wikipedia.org/wiki/SMART_criteria">SMART 原则</a> （SMART criteria）的任务（tasks）。因为我有一些小技巧可以促使我完成任务（比如<a href="https://justinyan.me/post/4752">上一篇文章</a>提到的遵守约定），所以看上去这个东拼西凑的计划好像运转得还可以。</p> 
<p><strong>后来我发现这个做法并不科学</strong>，哪有人大 O 下来直接就拆成项目的。于是我想到去年上过的一个<a href="https://en.wikipedia.org/wiki/Coaching">Coaching 培训课</a>，老师在课上提到过一个小工具，叫做“生命之轮”(Wheel of Life)，大概长这样：</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/11/personal-okr-2-wheel-of-life.jpg" alt="Wheel of Life" /></p> 
<p>假设用一个圆表示一个人的人生，图中每一个扇形就是人生最重要的八个方面（可以自己选）。每个方面有 0-10 的打分点，自己给自己打分后再把点连成黑线，如上图模样。</p> 
<p>上课的时候，老师说“这个黑线连起来的轮子就是驱动人生的轮子”。结果在场参加培训的人，画出来的轮子都不会很圆。老师用这个工具来提醒大家，<strong>人生中是否有些非常重要的东西被自己忽略了</strong>。比如某个事业上成就很高的人，忽略了自己的家庭。理想化的人生应该每个方面都很圆满，没有短板，但现实是我们的时间精力有限，做不到尽善尽美。</p> 
<p>即便如此，我们还是可以通过长期计划，试图在每个重要的“扇形”都做出一点行动，不至于完全不管不顾。</p> 
<p>所以最近我又借用这个“生命之轮”的分法，重新给我的大 O 进行了拆分，目前分为五个部分：</p> 
<ul> 
 <li>身心健康</li> 
 <li>财务状况</li> 
 <li>人际关系</li> 
 <li>职业生涯</li> 
 <li>创造成长</li> 
</ul> 
<p>看上去比按项目拆解好多了，暂时就这样，等下一个回顾周期我再看看是否需要更新（做 12 月计划的时候我又更新了一次）。</p> 
<p>每个人的生命之轮各不相同，上班族的，自由职业的，有小孩的，没有小孩的。暂时我只分析了这几个方面，找出问题，提出目标，制定方案，然后分配到每个计划周期内执行。</p> 
<p>假定我的简单三段论是成立的，那么<strong>只要我能按计划完成任务</strong>，理论上生活就变得越来越理想啦！</p> 
<h2>四、正因为不简单，所以更需要学习</h2> 
<p>做出一个好的计划很难，仅仅是制定大 O，拆解小 O 这里我就已经费尽九牛二虎之力，脑袋都想秃了几个。但是我很喜欢 Paypal 黑手党的 Peter Thiel 在 <a href="https://justinyan.me/post/1868"><em>Zero to One</em> （《从零到一》）</a>一书中说的:</p> 
<blockquote>
 <p> Bad plan is better than no plan. </p>
</blockquote> 
<p>并且从上文叙述也可以看出，我给自己设定的大 Objective 一直在变，一直在“迭代”。拆解小 Objectives 的办法也在时时更新。所以诚如<a href="https://justinyan.me/post/4752">第一篇文章</a>所云：<strong>一定要对自己足够诚实</strong>。</p> 
<p>个人 OKR 是做给自己看的，你可以不公开给任何人。我个人的体会是，有些计划一旦说出来了，大脑就好像在告诉我“已经做完啦！”，反而再也不会去做了。所以我的建议也是除非是合作项目的 OKR，比如我和搭档一起做的播客节目，否则其他计划都只给自己看就可以了。Objective 是不是自己想要的，设定的计划能否真的被实现，这些务必务必要对自己坦诚。</p> 
<p>只要能时时修正自己的 Objective 和计划，它就可以自我完善。所以计划做得再差也没关系，慢慢把它变得更好吧！</p> 
<p>下一篇我将介绍我是如何根据小 O 设计具体计划的。</p> 
<p>不知道在读这篇文章的你是否有在做长期计划呢？如果你也有长期计划经验的话，不妨在留言区分享一下你的做法吧。</p> 
<p>2021.11.21/下午<br /> 于自居</p> 
<blockquote>
 <p> P.S. 其实个人OKR这个话题的文章我10月底做回顾的时候就开始写，但是怎么写都不对劲，推翻重来好几次。我觉得作为一个还在探索中的人，不应该写这种看上去像在“教别人怎么做计划”的文章。所以最后我把写作的目标修正为“分享我自己的思考和实践过程”。即便如此，写了四篇之后我又犹豫该不该发了。有一天我做完11月份的回顾和计划，觉得比10月份又多了一些心得（比如我想到需要在回顾阶段增加一个“证明我的假设是正确的”的验证环节），于是在夜深人静的时候发出了第一篇。没想到读者朋友们不仅没有差评，还给我点赞了，这种真的很棒。谢谢大家。 </p>
</blockquote> 
<h2>个人OKR实践系列</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4752">我的个人 OKR 实践 01</a></li> 
 <li><a href="https://justinyan.me/post/4755">我的个人 OKR 实践 02</a></li> 
 <li><a href="https://justinyan.me/post/4765">我的个人 OKR 实践 03</a></li> 
 <li><a href="https://justinyan.me/post/4779">我的个人 OKR 实践 04</a></li> 
 <li><a href="https://justinyan.me/post/4790">我的个人 OKR 实践 05</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li>封面图来自 <a href="https://unsplash.com/@jessbaileydesigns">unsplash.com Jess Bailey</a></li> 
 <li><a href="https://rework.withgoogle.com/guides/set-goals-with-okrs/steps/introduction/">re:Work - Guide: Set goals with OKRs</a></li> 
 <li><a href="https://justinyan.me/post/4352">枫影夜读 #5 - James Clear “Atomic Habits”</a></li> 
 <li><a href="https://justinyan.me/post/1868">Paypal 黑手党(每周读书 六十七《Zero to One》)</a></li> 
 <li><a href="https://mp.weixin.qq.com/s/1T8r7HIX8NAQqUowFOV0rg">孟岩 - 找到最重要的事</a></li> 
 <li><a href="https://justinyan.me/post/4208">枫言枫语播客 Vol. 17 Be a Tough Guy</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/SMART_criteria">SMART criteria</a> | <a href="https://zh.wikipedia.org/zh-hans/SMART%E5%8E%9F%E5%88%99">SMART 原则</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Coaching">Coaching，中文翻译为“教练”，一种类似心理咨询形式的技巧</a></li> 
 <li><a href="https://innerpicturestories.com/2020/02/creating-a-balanced-life/">“生命之轮”（Wheel of Life）可以参考这里</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 54 &#x6B7B;&#x540E;&#xFF0C;&#x6570;&#x5B57;&#x9057;&#x4EA7;&#x8BE5;&#x600E;&#x4E48;&#x529E;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/0C9C7583-56C8-4CBB-A9FC-1F187AB85884/</link>
        <guid>https://justinyan.eth.limo/0C9C7583-56C8-4CBB-A9FC-1F187AB85884/</guid>
        <pubDate>Thu, 02 Dec 2021 12:03:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/12/Podcast-Cover-v54.jpg" alt="Vol. 54 死后，数字遗产该怎么办？" /></p> 
<p>苹果的 iOS 15.2 系统终于把今年 WWDC 上演示的<a href="https://www.macrumors.com/guide/legacy-contact/">数字遗产联系人功能（Legacy Contact）</a>发布了，两位主播就数字遗产这个话题展开了讨论。</p> 
<p>法外狂徒张三客串本期，可怜的张三又是出门嗝屁，又是维护项目被谋杀的，他的数字遗产应该如何处理呢？</p> 
<p>两位主播都不是法律专业，纯瞎扯，如果听众朋友们关于这个话题有任何想法，欢迎在评论区留言讨论哦</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 从苹果 iCloud 数字遗产聊起</li> 
 <li>02:47 什么是数字遗产？</li> 
 <li>07:07 数字资产和隐私是否应该剥离开来</li> 
 <li>12:42 暴雪的“帐号继承”、快手的“悼念帐号”</li> 
 <li>16:29 程序员和 Github</li> 
 <li>21:52 帐号由 AI 接管活跃，能接受吗？</li> 
 <li>27:43 长期和短期计划：立个遗嘱先</li> 
 <li>34:32 给开源项目找一个继承人</li> 
 <li>35:29 电影桥段：遗嘱被谋害风险</li> 
 <li>38:46 转移资产而不是继承帐号密码</li> 
 <li>43:23 Justin: “把所有的东西放进 1Password”</li> 
 <li>45:55 数字公墓在哪里</li> 
 <li>49:14 自力: “把没用的帐号注销掉”</li> 
 <li>52:39 如何向平台证明“我死了”</li> 
 <li>55:33 由当事人对隐私和资产划分</li> 
 <li>57:43 第三方隐私处理业务</li> 
 <li>1:01:38 片尾曲：Nameless story - 寺岛拓笃</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 自力 hzlzh</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/W2_V7X6fJ18" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Nameless story - 寺岛拓笃</a></li> 
 <li><a href="https://36kr.com/p/1481136296001920">苹果新增数字遗产功能，可指定联系人继承iCloud数据</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x7684;&#x4E2A;&#x4EBA; OKR &#x5B9E;&#x8DF5; 01</title>
        <link>https://justinyan.eth.limo/3ED84CD9-DD4F-41DB-AFE5-E02753EBA56A/</link>
        <guid>https://justinyan.eth.limo/3ED84CD9-DD4F-41DB-AFE5-E02753EBA56A/</guid>
        <pubDate>Tue, 30 Nov 2021 19:21:11 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/11/Personal_OKR_01.jpg" alt="我的个人 OKR 实践 01" /></p> 
<p>大概是去年，<a href="https://twitter.com/liuyi0922">@61</a> 在推上问：“大家会做多长时间的计划?”我随手回复：“三五年前我也不知道自己会在哪里做什么，所以我无法计划三五年后我会在哪里做什么。”（提问与回答皆为大意）</p> 
<p>彼时的我混淆了一个概念：计划跟未来是两件事情。</p> 
<p><strong>长期计划并不等于预知未来。</strong></p> 
<p>未来是混沌的，我无法预知未来，但长期计划可以在混沌中给我带来一点方向感。</p> 
<p>今年我的长期计划包括健康、播客、写作、工作、财富、家人朋友等多个方面。</p> 
<p>在制定、执行和回顾计划的过程中，一方面让我有机会在埋头奔跑中暂停一下，看看是不是有些重要的人，重要的事被我忽略了；另一方面也让我得以重新审视正在奔跑的方向是否已经偏航，是否需要修正。</p> 
<p>从四月份（2021年）至今，我的实践虽然还在非常初级的探索阶段，目标的拆解不够合理，执行得也不够到位。但这个过程已经给了我一些可控的感觉，所以我希望把这个过程写下来，一方面帮我<strong>把零散的碎片整理为更好被大脑理解的框架</strong>，另一方面也想随着<strong>实践的自我完善进行更新</strong>，以供未来参考。</p> 
<h2>一、现阶段我收获了什么？</h2> 
<p>以前我根本不做长期计划，总觉得即便做了计划也难以实现。这是因为我根本不懂得怎样去制定一个<strong>合理的、可执行的、可自我完善的、能形成正向反馈</strong>的计划。</p> 
<p>只有能从中获益，才可能持续。</p> 
<p>去年疫情席卷全球，美股港股币圈却逆势上涨，这个奇怪的趋势在今年初终于扭转。股市上涨的时候，随便买点什么都在涨，人人觉得自己是股神。我虽然没有痴迷到这种程度，但是也难免遐想通过投资带来更多的被动收入。当时好朋友 <a href="https://twitter.com/RoCry">@夏天</a> 推荐了<a href="https://weibo.com/n/%E5%AD%9F%E5%B2%A9">孟岩</a>和<a href="https://weibo.com/1977585731">张潇雨</a>设计的<a href="https://youzhiyouxing.cn/curriculum">《有知有行·投资第一课》</a>。一开始我没特别在意，但随着股市急转直下，学费交够了之后，我终于肯老老实实承认自己就是个小白，学起了这个课程。</p> 
<p>课程非常棒，理论浅显易懂，方法具体可行。我顺便也读了孟岩的其他文章，其中有一篇文章他提到自己已经实行了好些年的 OKR，他觉得 OKR 带来的好处是<strong>有机会强迫自己停下来思考</strong>。</p> 
<p>这一点非常打动我。</p> 
<p>前段时间跟一位同事聊天，他说当他跟我聊工作话题的时候，我好像切换了一种不同的模式，应对很快，态度也很坚决，跟聊其他话题的时候很不一样。我觉得非常有趣，因为我自己从来没有发现过这一点。</p> 
<p>现在我觉得这可能是因为工作多年形成的一种模式化的应对。人类的大脑设计是非常节能的，会根据经验形成各种各样的模式。这些模式在我下一次遇到类似的信息就可以跳过思考直接得出结论。（可以<a href="https://justinyan.me/post/3062">参考《影响力》这本书</a>）。工作多年形成的固有思维可以帮助我快速作出决策，但是也带来一个非常明显的副作用：<strong>我不再停下来思考了</strong>。</p> 
<p>一直埋头奔跑的我偶尔抬起头总觉得不知道跑到哪里去了。虽然人生的每个决策都是我自己做出来的，但总有一种随波逐流的失控感。我很少能够清晰地说出我的人生想要怎样，我接下来应该做什么，达成怎样的目标。</p> 
<p>上个月在做回顾和计划时，我参考了 <a href="https://www.youtube.com/channel/UC-ga3onzHSJFAGsIebtVeBg">YouTube Channel Lavendaire</a> 的 <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/kZd_sHbL9fY" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Questions</a>。结果我在回答第一个问题的时候就卡住了:</p> 
<blockquote>
 <p> Rate from 1-10: “This month, I took steps to get closer to my goals &amp; dream life.” </p>
</blockquote> 
<p>我不知道我的 dream life 是什么。</p> 
<p>当我拿这个问题去问我的朋友们时，有些人也跟我有类似的困惑，有些人则可以毫不犹豫地回答出来。虽然他们脱口而出的 dream life 好像有点虚无缥缈，但我依然能从中感受到情感的认同。这点非常重要。换句话说，这个 dream life 也好，我自己想要的目标也好，它可以是逻辑推理出来的也可以不是，但<strong>它必须是我的情感认同的</strong>。</p> 
<p>虽然我无法像这些洒脱的朋友一样，明确地知道自己的 dream life 是什么，就跟我四月份第一次写下个人 OKR 的 Objective 一样，茫然不知所措。但万事开头难，不知道写什么那就随便写一个吧。这个随便写经过几次迭代之后现在是：<strong>“成为理想化的自己”</strong>，然后我开始分析什么才是理想化的自己。</p> 
<p>事实证明这个策略非常成功。随着过去这几个月的尝试，我的理想化目标比刚开始的时候要清晰多了。虽然未知的部分依然是多数，但现在我感觉就像拨开迷雾，拼对了好几块拼图一样，这感觉真棒！</p> 
<p>比如说我希望自己的身体可以变得更健康，健身训练能更进步。于是年初我开始请教练帮我做系统性的训练，不仅学会了更多知识，身形也产生了变化——即健身所谓的“新手福利期”。这种朝着自己想要的方向去的变化就是<strong>正向反馈</strong>，会成为我走下去的动力。</p> 
<p>所以虽然我的长期计划实践仍十分初级，但至少我感受到了：</p> 
<ul> 
 <li>埋头奔跑中暂停看看</li> 
 <li>理想化目标逐渐清晰</li> 
 <li>正反馈成为新的动力</li> 
</ul> 
<p>看上去还不错，所以我是怎么达成这些的呢？</p> 
<h2>二、寻找适合自己的工具</h2> 
<p>工欲善其事，必先利其器。</p> 
<p>一开始我直接照搬孟岩的个人 OKR 做法，试着对我自己也做 OKR 计划。但是除了 OKR 这个工具以外，我还有一些一直在使用的工具，它们各自在解决特定的问题上<strong>对我有不错的效果</strong>。所以我的实践里有很大一部分来自以前积累的工具们。</p> 
<p>前两天在有知有行 App 上读到<a href="https://podcasts.cosmosrepair.com/">《晚风说》</a>的主播 Jade 写的<a href="https://youzhiyouxing.cn/materials/524">一篇文章</a>，里面提到:</p> 
<blockquote>
 <p> 在所有金融类经典书籍里，我最喜欢的还是杰西·利弗莫尔（Jesse Livermore，以下简称「利弗莫尔」）的《股票作手回忆录》，也是我人生中唯一的老板送给我的第一本书。因为所有人都在讲道理，只有他在讲经历。道理今天对，明天错，在一个人那适用，在另一个人那不适用。但经历就是经历，他辉煌过，落寞过，功亏一篑过，卷土重来过。他是一个真实的人啊。 </p>
</blockquote> 
<p>我的长期计划实践亦如是。接下来我要提到的方法符合我的喜好，放在另一个人身上却未必。但<strong>如何寻找适合自己特点的工具</strong>，这点应该是相通的。</p> 
<p>比如许多人都有工作任务超出大脑记忆容量的情况，这时候一个能用于记录、整理、安排任务的工具就很重要。以前我使用 <a href="https://gettingthingsdone.com/">David Allen 的 GTD 方法</a>，尝试过 Things, Omni Focus 等一系列 App，也试过 1-3-5 Notes, 最终采用纸笔书写的 <a href="https://bulletjournal.com/">Bullet Journal</a>。我写 Bullet Journal 已有两年多时间，这个系统是我目前最喜欢的任务规划和管理系统。</p> 
<p>因为我非常喜欢纸笔书写的体验。在 LEUCHTTURM1917 笔记本上使用喜欢的钢笔写字，<br /> 对我来说就已经十分享受了。所以我不会忘了 Bullet Journal 的每日计划和每日回顾，也不会忘了去做每月的日历与回顾，因为这是一件很令人开心的事情呀。所以如果你也喜欢笔尖划过纸张的感觉，纸笔系统的 Bullet Journal 我会非常推荐。</p> 
<p>另外因为 Bullet Journal 鼓励在空白纸张（或者点阵纸）上创建属于自己的个性化系统，所以每个人的 Bullet Journal 都不尽相同。比如我就不喜欢官方模板里的 Future Logs 部分，那我不加进来就好了。比如我希望有个能追踪我的健康目标的东西，所以我在每个月的 Page 上画了一个表格，用来做我的健康 Habit Tracker。</p> 
<p>所以是 Bullet Journal 的这两个特点完美命中了我的喜好:</p> 
<ol> 
 <li>我非常喜欢纸笔书写体验</li> 
 <li>我需要经常更新这个系统</li> 
</ol> 
<p>过去不管是 Things 也好，OmniFocus 也好，这些工具都具有一定的可扩展性。OmniFocus 甚至可以当做一个好看的 SQLite Select 工具。但毕竟这些工具都挂靠在一个既定的系统上，跟空白纸张比起来，自定义能力还是有不少限制。</p> 
<p>所以我寻找合适工具的早期阶段是<strong>多尝试，并且要做深度尝试</strong>。</p> 
<p>这个过程其实也是跟自己对话、了解自我的过程。比如我对纸笔书写的喜好，就是一种浅层的自我发现。随着实践的进行我还发现了更多我的可被加以利用的弱点，适当跟这些弱点挂钩可以确保我的计划能被执行。</p> 
<p>比如我一般只要跟人约好了时间就不会爽约。所以利用这个弱点，我可以跟我的播客搭档约好节目录制时间，这样约定时间到了之后一切就自然发生了。</p> 
<p><strong>那么如何更好地发现自我，了解自我呢？</strong>我尝试过两种思路完全相反的方法。</p> 
<p><strong>第一种方法是回顾过去，寻找自己变成今天这个样子的原因。</strong>这个方法我是《Steve 说》的主播史秀雄介绍的。Steve 是一名心理咨询师，这个方法是以前他在加拿大上学的时候做的期末作业：<strong>写一份个人成长史</strong>。</p> 
<p>大意是把人生从出生到现在划分为 8 个阶段，每个阶段罗列 10 个重大事件，每个事件问自己三个问题：</p> 
<ol> 
 <li>这个事件给你带来了哪些认知和想法上的变化？</li> 
 <li>这个事件给你带来了哪些情感上的冲击或者影响？</li> 
 <li>这个事件和现在的你有什么关系？换句话说，事件如何塑造了今天的你？</li> 
</ol> 
<p>因为这份个人成长史只写给自己一个人看，所以写的过程中必须对自己足够诚实。这个过程可能会很长，可能会触碰到自己尘封多年不愿触及的黑暗一面，可能会哭可能会笑，但这是我目前实践下来对了解自我非常有帮助的一个方法。更详细的方法大家可以<a href="http://blog.sina.com.cn/s/blog_4d3997c20102v62l.html">参考这里</a>，我们就不再赘述了。</p> 
<p><strong>第二个方法来自我今年阅读的由<a href="https://justinyan.me/post/4625">岸见一郎和古贺史健合著的《被讨厌的勇气》</a>。</strong>如果说个人成长史是从过去寻找塑造当下自我的原因，那么《被讨厌的勇气》里所阐述的阿德勒的心理学，就是在以 180 度全然相反的方向直面自我。<strong>有时候换一种角度审视自己真的会有奇效</strong>。</p> 
<p>比如今年有一段时间我正好处于周期低谷，当时我继续试图从过去分析自己，越分析就越觉得这是命中注定的，反而越来越丧了。然后我读到《被讨厌的勇气》，有如醍醐灌顶，当头棒喝，瞬间打开一扇窗：原来我不过是在自寻烦恼。</p> 
<p>书中有个脸红症的例子很有意思。一个女孩来找心理咨询师，说她很怕见人，只要一到人前就会脸红，希望治好她的脸红症。心理咨询师问她如果治好了她想要做什么呢？她回答如果脸红症治好了就可以去跟喜欢的男孩子表白了。</p> 
<p>按照“原因论”的思路我们应该去寻找女孩脸红症的成因，分析她的过去，儿时的遭遇等等。但是阿德勒心理学从“目的”出发，她会脸红的目的，正是因为她不想去跟这个男孩子表白，所以她自己“制造了脸红恐惧症”。她害怕表白了之后被男孩子拒绝，所以只要有脸红恐惧症存在，她就可以用“我之所以不能和他交往都是因为这个脸红恐惧症”这样的想法来进行自我逃避。</p> 
<p>只要一天还有“脸红症”，她就不需要去表白，也就不需要承担失败的痛苦，可以一直保留“只要我去做了我也能行”的幻觉，在幻觉中舒服地活下去。</p> 
<p>从这点我们可以看到阿德勒心理学是一种非常残忍的分析方法，所以按照我自己的体验，我会比较建议先做<strong>个人成长史</strong>，从过去寻找自我，然后再读《被讨厌的勇气》，<strong>换个角度看到不一样的自我</strong>。</p> 
<p>至于如何对这本书作深度阅读，我的方法是把我的读书笔记放在旁边，读到有所感悟的段落时就在笔记本上记录我当下的想法，对照我个人的事例进行分析。</p> 
<p>人生有许多困惑来自对事物本身的不理解，所以至少这种问题上我可以通过新习得的分析方法作进一步的理解，有相当多的问题在分析过程中就已经烟消云散了，还有一部分问题则需要我的下一步行动，可以放进我的计划里。</p> 
<p>所以两种了解自我的方法：</p> 
<ol> 
 <li>回顾过去，寻找成因</li> 
 <li>换个角度，分析自己</li> 
</ol> 
<p>可以看到这两种方法都有一个共同点：<strong>分析过程对自己绝对诚实</strong>。</p> 
<p>这个看似简单的事情其实很多人都做不到，也包括我自己。因为自己实在太了解自己了，这个人所有的阴暗面他都知道。如果一直把这些东西暴露出来，自己也会受伤，所以一般情况下我们会把这些黑暗封锁起来。而对自己诚实的过程就是要解开封锁的过程，会有点残忍。</p> 
<p>我的做法是在 Mac 上创建一个加密的 DMG，然后把所有写的东西都扔进去，确保除了我之外其他人都看不到。这样我就创造了一个足够安全的写作空间，至少可以减弱一部分心理负担。你也可以使用其他的加密工具来实现，关键是要创造一个安全的空间，达成对自己的绝对诚实就对了。</p> 
<p>有了足够的自我了解之后，分析目标时才能找到自己想要什么，不想要什么，做计划时才能知道自己能够做到什么，做不到什么，执行的时候才能知道自己喜欢什么，不喜欢什么。</p> 
<p>如此方能对症下药，药到病除。</p> 
<p>这个过程很漫长，无法一蹴而就，所以需要有一点耐心，在不断的循环中慢慢了解自己。</p> 
<h2>三、我需要长期计划吗？</h2> 
<p>我也不知道。</p> 
<p>每个人都有自己的活法。在今年尝试这些劳什子 OKR 之前，我浑浑噩噩也活了几十年。长期计划有它的好处，我希望借着这个工具能帮我解决一些困惑，给我的人生带来更多的可控感。</p> 
<p>今天我在修改本文时正好听到<a href="http://steveshuo.com/259">《Steve 说》的节目</a>，他们提到（大意）：</p> 
<blockquote>
 <p> 现代社会随着科技和经济的发展，给了我们的人生很高的自由度。这当然是一件好事，但是同时也给我们带来相应的困惑，我们一下子不知道该怎么去应对这种自由度了。</p> 
 <p> 再加上资本主义追求效率，我们在大公司的工作被分成了无数精细的工种，每个人都只是承接上下游中的一环，就是一个流水线上的螺丝钉。于是螺丝钉也就失去了对工作价值的感知，时间久了之后也就是丧失了可控的感觉。 </p>
</blockquote> 
<p>我想我的个人 OKR 实践也是对自己重新掌握人生的尝试吧。正如前文所述，这些方法会随着实践而不断自我完善，哪天如果它不再适合我了也不意外。只是目前这些方法对我还有用，而且仍存在不少需要改进的地方，所以我还希望继续完善它，继续利用好它的能力。</p> 
<p>下一篇我将介绍我目前的实践方法和工具们，如果你也有好用的工具和方法，或者对这个话题有什么建议的话，不妨在评论区分享一下。</p> 
<p>2021.11.21/下午<br /> 于自居</p> 
<h2>个人OKR实践系列</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4752">我的个人 OKR 实践 01</a></li> 
 <li><a href="https://justinyan.me/post/4755">我的个人 OKR 实践 02</a></li> 
 <li><a href="https://justinyan.me/post/4765">我的个人 OKR 实践 03</a></li> 
 <li><a href="https://justinyan.me/post/4779">我的个人 OKR 实践 04</a></li> 
 <li><a href="https://justinyan.me/post/4790">我的个人 OKR 实践 05</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://unsplash.com/@omarprestwich">封面来自: Unsplash Omar Prestwich</a></li> 
 <li><a href="https://youzhiyouxing.cn/curriculum">《有知有行·投资第一课》</a></li> 
 <li><a href="https://justinyan.me/post/3062">每周读书 #135 玩狼人杀的厉害人更容易说服别人？——《影响力》 | 枫言枫语</a></li> 
 <li><a href="https://www.youtube.com/channel/UC-ga3onzHSJFAGsIebtVeBg">Lavendaire - YouTube</a></li> 
 <li><a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/kZd_sHbL9fY" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Plan With Me: November 2021</a></li> 
 <li><a href="https://podcasts.cosmosrepair.com/">晚风说播客</a></li> 
 <li><a href="https://youzhiyouxing.cn/materials/524">认识你自己，才是投资这件事的终极乐趣</a></li> 
 <li><a href="https://gettingthingsdone.com/">Getting Things Done® - David Allen's GTD® Methodology</a></li> 
 <li><a href="https://bulletjournal.com/">Bullet Journal</a></li> 
 <li><a href="http://blog.sina.com.cn/s/blog_4d3997c20102v62l.html">提升自我认知的最有效方法<em>史秀雄Steve</em>新浪博客</a></li> 
 <li><a href="https://justinyan.me/post/4625">枫影夜读 #17 - 岸见一郎、古贺史健《被讨厌的勇气》 | 枫言枫语</a></li> 
 <li><a href="http://steveshuo.com/259">Steve说: Steve说259期 - 梁永安 - 精神生命是没有年龄的</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 53 Kevin&#xFF1A;&#x5728;&#x4F26;&#x6566;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;?</title>
        <link>https://justinyan.eth.limo/4C11BC7B-8C37-43DC-A81A-46DCB2CF70D8/</link>
        <guid>https://justinyan.eth.limo/4C11BC7B-8C37-43DC-A81A-46DCB2CF70D8/</guid>
        <pubDate>Mon, 22 Nov 2021 07:30:34 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/11/Podcast-Cover-v53v-3.jpg" alt="Vol. 53 在伦敦工作和生活是一种什么样的体验" /></p> 
<p>世界各地程序员系列又来啦！<br /> 继上一期<a href="https://fyfy.fm/episode/46">在硅谷的 Apple 工作的节目</a>之后，这一次我们请到了在伦敦 Meta 公司（Facebook）工作的 Kevin 同学来跟我们聊天。</p> 
<p><strong>大家还希望听到哪些城市出现在节目中，请在评论区告诉我们哟~</strong></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 世界各地程序员系列</li> 
 <li>00:25 嘉宾介绍，ComponentKit</li> 
 <li>01:53 在 Facebook 伦敦团队做什么</li> 
 <li>05:14 伦敦疫情如何？WFH?</li> 
 <li>10:14 伦敦交通，拥堵费</li> 
 <li>14:38 深圳、新加坡工作经历</li> 
 <li>17:18 大英帝国<del>黑暗</del>料理</li> 
 <li>20:07 伦敦工作节奏如何？PIP？</li> 
 <li>23:22 司庆活动？扎克伯格直播？</li> 
 <li>26:20 在 Facebook 的日常工作</li> 
 <li>27:21 工程师的晋级之路，Engineer，Manager</li> 
 <li>28:31 Infra 团队如何进行项目管理和推进</li> 
 <li>34:20 关于晋级、评审，Engineer 和 Manager 路线转换</li> 
 <li>40:10 伦敦生活之美好</li> 
 <li>49:21 工作之余，有意思的娱乐活动</li> 
 <li>53:35 灵魂三问</li> 
 <li>57:52 嘉宾推荐片尾曲：松田彬人 - Feel Your Heart</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>嘉宾: <a href="https://www.instagram.com/kevin.lyn/">@Kevin.Lyn</a> | <a href="https://github.com/kevin-lyn">GitHub</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>封面来自嘉宾 <a href="https://www.instagram.com/kevin.lyn/">@Kevin.Lyn</a> 的摄影作品</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://c.y.qq.com/base/fcgi-bin/u?__=CqcWMx">松田彬人 - Feel Your Heart</a></li> 
 <li><a href="https://justinyan.me/post/4725">Vol. 51 科技快乐星球07: 扎克伯格的 Meta 元宇宙</a></li> 
 <li><a href="https://justinyan.me/post/4666">Vol. 46 在硅谷工作和生活是一种什么样的体验</a></li> 
 <li><a href="https://justinyan.me/post/3846">Vol. 13 在新西兰做程序员是什么样的体验？</a></li> 
 <li><a href="https://justinyan.me/post/3927">Vol. 16 在日本工作和生活是一种什么样的体验</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 52 &#x548C;&#x8349;&#x5E3D;&#x6765;&#x4E00;&#x6BB5;&#x5BF9;&#x53E3;&#x76F8;&#x58F0; F&#xED;gma~</title>
        <link>https://justinyan.eth.limo/0BF8E378-040F-4884-B7B1-5C459B95C673/</link>
        <guid>https://justinyan.eth.limo/0BF8E378-040F-4884-B7B1-5C459B95C673/</guid>
        <pubDate>Mon, 15 Nov 2021 06:50:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/11/Podcast-Cover-v52-v4.jpg" alt="Vol. 52 和草帽来一段对口相声 Fígma~" /></p> 
<p>本期节目我们邀请到了B站Up主：<a href="https://space.bilibili.com/108104104">@草帽sMao</a> 同学，他制作了一系列 Figma 教程很受欢迎。这一期 Justin 临时有事，来听听 @自力和@草帽的对口相声吧~</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 嘉宾介绍</li> 
 <li>05:56 Figma 令人心动的功能</li> 
 <li>11:15 FigJam 白板怎么样</li> 
 <li>13:12 Figma 在国内的发展</li> 
 <li>15:31 插件管理工具：FigmaEX</li> 
 <li>17:18 中国特供版？</li> 
 <li>19:07 Figma 的社区生态</li> 
 <li>21:10 Roam Research 和双链接</li> 
 <li>23:29 “我在B站磨刀的视频火了”</li> 
 <li>26:44 开发者和产品经理怎么看？</li> 
 <li>29:33 Sketch 迁移 Figma</li> 
 <li>32:25 多人协作会上瘾</li> 
 <li>42:27 Figma 会被收购吗？</li> 
 <li>44:02 还没上手？试一下吧！</li> 
 <li>45:55 片尾曲：信心花舍 - 陈奕迅</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>嘉宾: <a href="https://space.bilibili.com/108104104">@草帽sMao</a> | <a href="https://weibo.com/lijxse">微博</a></li> 
 <li>剪辑: 自力 hzlzh</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/fJBEUt3wCbY" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;信心花舍 - 陈奕迅</a></li> 
 <li>Figma 插件管理: <a href="https://moonvy.com/figmaEX/">FigmaEX</a></li> 
 <li>笔记应用: <a href="https://roamresearch.com/">Roam Research</a></li> 
 <li>草帽的其他视频: <a href="https://www.bilibili.com/video/BV1M4411M7vb">从零到入门磨刀系列教程</a></li> 
 <li>救火用的铜草帽出处：<a href="https://www.bilibili.com/video/BV1Gs411Z7xd/">岳云鹏/孙越《当行论》</a></li> 
 <li>谐星聊天会：<a href="https://www.xiaoyuzhoufm.com/episode/5e539eb8418a84a0463fe8ab">《胖是可爱的最高点！》</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 51 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;07: &#x624E;&#x514B;&#x4F2F;&#x683C;&#x7684; Meta &#x5143;&#x5B87;&#x5B99;</title>
        <link>https://justinyan.eth.limo/18FEB518-0273-456D-91AC-4D9E29791684/</link>
        <guid>https://justinyan.eth.limo/18FEB518-0273-456D-91AC-4D9E29791684/</guid>
        <pubDate>Mon, 08 Nov 2021 07:30:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/11/Podcast-Cover-v51-v4-1.jpg" alt="Vol 51. 科技快乐星球07: 扎克伯格的 Meta 新世界" /></p> 
<p>又快又欢乐的科技快乐星球来啦！</p> 
<p>扎克伯格是个真男人，说到做到直接把公司改名 Meta，他所设想的所谓 Metaverse 到底是个什么东西呢？和科幻电影所展示的世界有什么区别呢？<br /> 一起到节目中快乐讨论一下吧！</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:51 上期节目互动获奖名单</li> 
 <li>01:44 Facebook 改名 Meta</li> 
 <li>05:30 扎克伯格元宇宙的特色</li> 
 <li>10:05 元宇宙的交互方式 Teleport</li> 
 <li>12:39 区块链的技术用在哪？</li> 
 <li>13:28 元宇宙会解决了什么问题，游戏？色情？</li> 
 <li>17:25 Oculus 的研发进展</li> 
 <li>22:42 元宇宙里我们长啥样？</li> 
 <li>25:26 主播打算在元宇宙里做什么？</li> 
 <li>30:20 《夏日大作战》《雪崩》</li> 
 <li>33:46 Notability 改订阅制被骂上热搜</li> 
 <li>38:05 网盘需保障免费用户下载速率</li> 
 <li>41:34 字节或将实施 1075 工作制</li> 
 <li>46:28 片尾曲：僕らの夏の夢 - 山下达郎</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/wCtPpQXkICk" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;山下达郎 - 僕らの夏の夢</a></li> 
 <li><a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/tszveicEfKA" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>&amp;t=1525s"&gt;Sara Dietschy 采访 Mark Zuckerberg</a></li> 
 <li><a href="https://about.facebook.com/">Facebook 官网介绍什么是 Meta</a></li> 
 <li><a href="https://fyfy.fm/episode/35">关于软件收费、订阅制的讨论：Vol. 35 科技007: Setapp还值得续费吗？</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 50 &#x6C99;&#x4E18; 2021</title>
        <link>https://justinyan.eth.limo/62D677D6-E18C-4A9D-ACC1-3188E5C2D4F0/</link>
        <guid>https://justinyan.eth.limo/62D677D6-E18C-4A9D-ACC1-3188E5C2D4F0/</guid>
        <pubDate>Mon, 25 Oct 2021 05:30:30 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/Podcast-Cover-v50-3.png" alt="Vol. 50 沙丘 2021" /></p> 
<p>五十期啦！🥳🥳🥳<br /> 没想到我们这个小破节目居然播出五十期了，感谢各位听众朋友们一直以来的支持🙇🏻<br /> 接下来我们要再接再厉，往一百期进发，希望给大家带来更多的好内容👏</p> 
<p>最近丹尼斯·维纶纽瓦导演的《沙丘》在国内上映了，两位主播看完都激动不已。<br /> Justin 看过了小说原著，自力则没有，两位主播在节目中友好地交流了原著党和非原著党的感受。</p> 
<p>P.S. 本期节目从 11:43 开始涉及剧透，请还没看过的小伙伴们记得收藏一下本期节目，等电影看完了之后再回来听哦</p> 
<h2>互动有礼</h2> 
<p>欢迎大家在小宇宙评论区参会与互动，将随机抽取 5 位听众送出小礼物哟～</p> 
<ul> 
 <li>互动话题：沙丘观后感</li> 
 <li>奖品介绍：QQ音乐 或 网易云音乐 VIP 月卡 1 张</li> 
 <li>活动说明：中奖名单将在小宇宙评论区和下期节目公布</li> 
</ul> 
<h2>时间轴</h2> 
<ul> 
 <li>00:01 互动有礼：庆祝本台第 50 期节目播出</li> 
 <li>01:26 [无剧透] 沙丘观影前：游戏党 vs 原著党</li> 
 <li>11:43 ==== 剧透预警分割线 ====</li> 
 <li>12:09 主播观影评分</li> 
 <li>17:11 沙丘世界的设定</li> 
 <li>24:57 家族背景和矛盾纷争</li> 
 <li>27:31 角色与演员选角</li> 
 <li>32:30 母亲杰西卡的真实战力</li> 
 <li>39:18 有必要杀人取水吗？</li> 
 <li>50:42 岳医生为何讲古老语言？</li> 
 <li>01:04:14 翻白眼的晶算师</li> 
 <li>01:10:00 反重力反派：男爵</li> 
 <li>01:18:30 原著与电影改编的取舍</li> 
 <li>01:24:07 姐妹会的育种计划</li> 
 <li>01:27:45 神奇武器：音言/屏蔽场/匕首/枪炮</li> 
 <li>01:34:05 神奇动物：虫/鼠/牛/蜻蜓</li> 
 <li>01:45:24 对下一部的期待</li> 
 <li>01:48:22 片尾曲：Herald of the Change - 电影原声</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/HOvfo9ycY7Q" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;DUNE Official Soundtrack | Herald of the Change - Hans Zimmer | WaterTower</a></li> 
 <li>Justin 写的影评: <a href="https://justinyan.me/post/4701">漫无目的 07 — 原著党的狂喜：电影《沙丘》</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 07 - &#x539F;&#x8457;&#x515A;&#x7684;&#x72C2;&#x559C;&#xFF1A;&#x7535;&#x5F71;&#x300A;&#x6C99;&#x4E18;&#x300B;</title>
        <link>https://justinyan.eth.limo/AA478F1F-1662-4F7D-A9D2-303973B072DE/</link>
        <guid>https://justinyan.eth.limo/AA478F1F-1662-4F7D-A9D2-303973B072DE/</guid>
        <pubDate>Sun, 24 Oct 2021 11:13:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/mwmd-001.jpg" alt="漫无目的——原著党的狂喜：电影《沙丘》" /></p> 
<p>《沙丘》（Dune）在国内上映之前一个月各种社交媒体就经常看到大家的讨论，我最早接触《沙丘》这个 IP 还是小时候玩<a href="https://zh.wikipedia.org/wiki/%E6%B2%99%E4%B8%982000">《沙丘2000》</a>这个由西木工作室发售于 1998 年的即时战略游戏。但一直以来我对《沙丘》的理解也仅止于此，直到看到新版电影即将上映的消息。于是我果断在亚马逊买了<a href="https://www.amazon.cn/dp/B07YJGCQFZ">《沙丘六部曲》</a>。从 1965 年发表第一部开始，作者 Frank Herbert 一直写到 1985 年，整整 20 年时间，小说的体量跟它的写作时间跨度一样壮观。今年（2021年）由丹尼斯·维纶纽瓦（Denis Villeneuve）导演的这部电影，片头称 Part One，实际上也只容下了《沙丘》系列第一部的前 1/3 左右的故事，可见此作体量之庞大。目前我只读完了前两部（《沙丘》和《沙丘救世主》），第三部《沙丘之子》在读。</p> 
<p>看完这部电影，我觉得无论是选角、配乐，还是视觉呈现效果都非常出色。故事情节上，这部电影基本忠实于原著，除了少数几个关键情节因为篇幅需要做了合并修改，其他在电影中呈现出来的画面、情节和台词，基本没有改编，可谓深得原著党之心。但是这也给没看过原著的观众带来较高的理解难度。因为小说体量太大，浓缩进两小时的时间里，势必要删减大量的背景介绍，人物的情感转变也随着篇幅缩减而显得突兀，故事的转折更是缺少必要的过度，所以本作的观众打分会出现褒贬不一也是十分合理的。</p> 
<h2>一、人物角色选择</h2> 
<p>这部电影预算高达 1.65 亿美元，导演 Denis 此前曾导过《银翼杀手2049》和《降临》等科幻大片，都算是有点理解门槛的作品。我没读过《降临》的小说原作，但是《银翼杀手》的原作菲利普·迪克（Philip Kindred Dick）的《仿生人会梦见电子羊吗？》（Do Androids Dream of Electric Sheep？）我很喜欢，这部电影也是比较忠于原著的。我想也许是导演的原著党风格使得文本作品在荧幕上呈现时天然存在的距离造成了这类电影的理解门槛。</p> 
<p>但是无论如何，《沙丘》这部电影的选角是非常棒的，观影时我觉得基本符合我对小说人物的想象，除了 Jason Momoa 饰演的邓肯·爱达荷（Duncan Idaho）。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_016.jpg" alt="" /></p> 
<p>首先男主角是年轻的<strong>保罗·厄崔迪斯（Paul Atreides）</strong>，这个角色是一个天才角色，也即电影字幕翻译中的“天选之人”，在宗教中属于先知救世主的角色。选择的演员是身材纤细，五官精致的 Timothée Chalamet，我觉得还是十分符合一个青涩少年英雄的形象的。虽然保罗是后来的救世主，即将面临九九八十一难，但是毕竟第一部电影的情节止于走进沙漠。这时候的保罗完全就是一个贵族出身的王子，尚未经历真正的磨难，只是依靠他过人的智慧，从小受过的严苛的训练，以及他的天赋（预知幻觉）而走到现在。所以我觉得 Timothée 的形象跟这一阶段的保罗非常契合。但是如果到了后期，保罗在沙漠中披荆斩棘成为英雄救世主了以后，我比较希望看到一个相对沧桑成熟的形象，而不是依旧白白净净，纤细柔弱的少年。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_002.jpg" alt="" /></p> 
<p>然后是保罗的母亲<strong>杰西卡·厄崔迪斯（Jessica Atreides）</strong>，这个角色非常厉害，出身于神秘而又强大的贝尼·杰瑟尼特姐妹会（Bene Gesserit），自小受到超人般的身体和心智训练，能够使用“音言”操控他人，心思缜密，功夫过人。选角是曾在《碟中谍》中饰演阿汤哥的对手，黑衣女杀手的 Rebecca Ferguson，强大又智慧的形象真是合适不过。可惜的是电影篇幅太短，留给 Rebecca 的镜头时间不够多，而为了突出贝尼·杰瑟尼特的自我控制能力和超能力，导演又给了太多情绪崩溃的镜头，导致这个角色在电影中的表现比她看上去要脆弱太多。希望第二部电影中，杰西卡成为圣母那段可以有更好的发挥。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_003.jpg" alt="" /></p> 
<p>接下来是保罗在沙漠的真命天女<strong>契尼（Chani）</strong>这个角色，选择的是年轻演员 Zendaya。她曾经在《蜘蛛侠：英雄归来》中饰演小蜘蛛的同学兼暗恋对象，现实生活中她也是小蜘蛛的扮演者 Tom Holland 的女朋友。她还是个歌手，唱功不错，歌曲《Replay》上过 Billboard Top 100。Zendaya 目前的影视作品不多，但是形象和沙漠的年轻女子还是非常契合的。在第一部中契尼的出场戏份很少，大部分时间只出现在保罗的幻象里，第二部她就要展示沙漠女子的智慧与勇敢了。不过同样出于电影篇幅关系，契尼在这部影片中也没什么发挥空间。本来小说中保罗与杰西卡两人同沙漠众人的遭遇战中契尼还是发挥了点作用的，但是电影中没有表现出来。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_004.jpg" alt="" /></p> 
<p>跟着我们看<strong>厄崔迪斯公爵</strong>，这真是个难以用三言两语形容的角色。他是个成熟稳重的中年人，又是个有权有势的大家族首领，在江湖中摸爬滚打多年，本应行事谨慎，却终因错信岳医生而被埋伏中招。这个角色由出演过《机械姬》、《星球大战》等作品的老演员 Oscar Isaac 非常合适。可惜电影中对于保罗遭遇暗算的调查情节大幅缩水，在亲信中寻找内奸的情节几乎没有，使得这位本应在刀口中舔血的老江湖，在背叛之夜显得是那么脆弱，那么大意。甚至唯一给公爵单独表现机会的，甘冒生命危险，驾驶扑翼飞机拯救香料车上的工人于沙虫临近之威胁的一幕，也从“侦察机构没人发出告警”改编为了“哈克南人留下的运输机太垃圾无法运起香料车”。本来这个情节正是公爵危机重重的因素之一的，配合后来被完全删减掉的晚宴，一步步将故事推入背叛之夜。这样看来，晚宴情节的删减对背叛之夜的影响还是巨大。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_005.jpg" alt="" /></p> 
<p>最后我们看两个重要配角，一个是<strong>邓肯·爱达荷（Duncan Idaho）</strong>，在故事中是顶级战士的存在，同时也是一位门泰特（Mentat）。门泰特是一种经过特别训练的人，可以用人脑模拟计算机的功能，收集大量数据进行极其理性的计算，然后给出逻辑上的结果。所以这个角色应该是相当理智的，但同时 Duncan 又是一名剑术大师。所以在我的想象中，Duncan 的身材不会太壮，应该是中等剑士身材，但是性格非常冷静和理智，不应该是奔放外向的。所以当 Jason Momoa 饰演的 Duncan 登场的时候我一度感到奇怪。虽然我挺喜欢这位演员，但总感觉哪里有点怪怪的，却说不上来。后来才发现，原来是 Jason Momoa 那壮硕的身材和豪迈的演出跟我心中的门泰特的形象冲突了。当然电影中对于门泰特这件事情绝口不提，也许是改编时觉得这点没什么用？门泰特的出现是历史上曾经发生过一场圣战，圣战的结果是彻底消灭计算机技术，使得人工智能的出现变得不可能，人类不再依靠计算机来解决问题。这个场景与我们今天大相径庭，而且以我们当下的认知，宇宙航行、大型远程武器等等少不了计算机参与。在小说中，宇宙航行虽然改为以香料为辅助的宇航员的预知能力来领航，但是问题是驱动飞船总得有一套系统吧？我想也许是因为这点所以电影中直接忽略了门泰特这个职业，而 Duncan 也几乎没有表现出门泰特的计算能力，只有胖男爵身边的那个门泰特还翻过白眼计算了一下。当然这要是没有任何旁边解释，想必新观众也是一头雾水不知道他在干什么。Duncan 在整部沙丘作品中是一个非常重要的人物，选择大牌演员我觉得无可厚非，不过 Jason Momoa 的身材和演出跟这个角色本身的冲突是显而易见的，就看续集中编剧要如何调整剧本了。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_015.jpg" alt="" /></p> 
<p>另一个重要配角是<strong>岳医生(Dr. Wellington Yueh)</strong>，由台湾演员张震出演。我刚看到张震出场的时候是有一点惊讶的，但是立刻就醒悟过来，因为小说中圣母杰西卡是会跟岳医生使用一种非常古老的语言进行交流的。所以当荧幕上岳医生开口跟杰西卡讲中文的时候，影院里的观众们都在笑，但是原著党肯定会觉得“哇塞神还原”。岳医生也是一个复杂的角色，在寻找内奸的过程中，岳医生和杰西卡有过一场针锋相对的互相试探。这场戏既表现了杰西卡过人的能力，也展示了这件阴谋的复杂程度，在背叛情节中我以为不可或缺，可惜电影中直接删去了。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_007.jpg" alt="" /></p> 
<p>至于反派的<strong>哈克南男爵（Baron Vladimir Harkonnen）</strong>，一个几百斤的无法支撑自己身体只能靠浮空设备活动的大胖子，由老戏骨 Stellan Skarsgård 饰演，演技了得。不过这个角色跟灭霸一样几乎全程特效出镜所以只能通过台词和动作来感受了。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_008.jpg" alt="" /></p> 
<p>至于<strong>侄子野兽拉班（Beast Rabban Harkonnen）</strong>，则是由扮演过《银河护卫队》里的大块头德拉克斯（Drax）的 Dave Bautista 出演。可能因为他憨憨的形象过于深入人心，所以刚一出场就有点搞笑的样子。但是拉班这个角色在小说中本来就是有点笨的，所以这点我觉得挺合适，反而是这位 WWE 运动员过于庞大的身材，显得他在跟叔叔哈克南男爵对比时不够弱小。原本男爵是一个阴险狡诈的大魔头，对于拉班是全面压制的，这种恐怖的氛围只在跟临终的公爵对峙那一幕有所体现，其他的场景总感觉还差一点。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_009.jpg" alt="" /></p> 
<p>另外是沙丘科学家列特·凯恩斯（Liet Kynes），小说中是一个男性角色，在这部电影中变成了女性。一开始看有点错愕，不过因为这个角色出场时间不长，所以其实男性女性都不影响整体效果。</p> 
<h2>二、视觉效果呈现</h2> 
<p>电影的视觉效果非常赞，卡拉丹星球的多雨、厄拉克斯星球的干旱、各种飞行器的巨型体量、贝尼·杰瑟尼特姐妹会的着装都十分到位，还有各种沙丘道具，比如保存人体水分的蒸馏服、吸引沙虫的沙槌、骑行控制沙虫的钩镰，还有身着屏蔽场打斗的效果，都令原著党欣喜不已。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_010.jpg" alt="" /></p> 
<p>开场时公爵迎接皇帝派来的宇航公会的人所举行的仪式，新观众可能会疑惑为什么一万年后的世界还要举行这么古老的仪式，以及为什么要用这么巨大的飞行器，为什么要打开了之后让人从上面走下来。实际上《沙丘》小说的后续在解释巨型建筑时有提到这种对比会使身处其中的人类自觉自己的渺小，而衬托出权力的高大。这也是令原著党舒服而新观众迷惑的一点。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_011.jpg" alt="" /></p> 
<p>沙虫（Sandworm）的还原也很棒。现在有很多作品使用了沙虫这一设定，但是形象各自不同。在《沙丘2000》中，香料车是一只金龟子一样的车，沙虫完全就是一条鱼，我猜是制作组节省经费的关系。到了《沙丘帝国》就变成了跟现在电影中看到的类似的深渊巨口一条虫。其他使用到类似沙虫设定的还有《塞尔达：旷野之息》，沙漠中的大鱼。电影中的沙虫在最后保罗母子逃上石头的那一刻有一个巨大的对比镜头，当沙虫被沙槌吸引翻身的时候，沙子掀起的沙浪如同海浪一般，波澜壮阔。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_014.jpg" alt="" /></p> 
<p>总的来说电影的视觉效果是绝对可以打满分的，很多沙漠的镜头就像电影的宣传海报一样，童叟无欺。</p> 
<h2>三、情节与改编</h2> 
<p>整部电影看下来，只要在荧幕中有演出的，基本上都完全忠于原著，甚至台词都没怎么改编。但是这部 1965 年出版的系列小说的第一部，其篇幅是巨长的。即便电影只改编了第一部的三分之一左右的情节，也依然不得不对这三分之一进行大量的删减。我觉得有些删减和改编对整体效果会有比较大的影响，而整体不进行改编也对电影有很大影响。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_012.jpg" alt="" /></p> 
<p>首先电影的前半小时几乎和小说一致，主角以做梦开场，然后把重要人物一个个登场。这里母亲杰西卡在餐桌上训练保罗使用“音言”（电影翻译为“音控力”）能力的情节是电影增加的，不失为一种提前交代特殊能力的方式。圣母使用盒子对保罗进行测试的一段是故事早期的一段小高潮，但是电影中呈现这一段时间的剪辑方式却有点迷。保罗在测试过程中应该杂糅着极度的恐惧和痛苦，然后慢慢使用贝尼·杰瑟尼特训练习得的自我控制能力一点点把自己控制住。但是画面却在保罗的表情达到巅峰时突然插入一个不太痛苦的平静表情，我以为是比较失败的。后来保罗的表情慢慢舒缓展示了演员的演技，还是可圈可点的。这段场景以天降大雨为背景，展示了制作组的小心思：卡拉丹是个多雨的星球，沙丘是个从未下过雨的星球。这个设定非常棒。</p> 
<p>厄崔迪斯家族到达沙丘星球之后的地貌俯视航拍镜头十分壮阔，是个很赞的长镜头。沙丘被完全封闭的城市，沙漠中的地下城，扑翼飞机，香料车，以及主角后来逃难用的高科技帐篷，都是绝佳的还原。不过军队的还原还是稍微差点意思，首先步兵们的装备感觉上不太结实的样子，虽然说人人都有屏蔽场不需要那么多坚实的盔甲，但是观感上还是感觉有点弱。然后监狱星球培育出来的怪兽士兵，萨多卡军团，本来是一个野兽军团，但是除了声音做了特殊处理之外，也没看出来有多怪兽，无论是装备上还是战斗场面都差得不够多，视觉震慑力不足。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/dune_013.jpg" alt="" /></p> 
<p>Jason Momoa 本来作为剑术大师，我期待有非常惊艳的战斗场景，但是整部电影除了一开始保罗和哥尼的训练室打斗算有点意思之外，其他的镜头总是有点小孩打架的感觉。虽然真实的生死搏击可能就是这样，但作为一部大片来说，就少了一点效果。尤其是最后保罗在沙漠跟詹米决斗的一场，保罗的内心戏，杰西卡的担忧，契尼的提醒和后来对保罗看法的转变，这些甚至比决斗本身还重要。但是电影在这一场戏的表现却十分草率，可谓全场最差一幕。</p> 
<p>其他的改编问题，比如前面提到的岳医生的背叛，因为寻找内奸的情节完全被删掉了，所以感觉有点突兀。另外就是公爵到了沙丘之后，举办晚宴的场景。读者朋友可能还记得沙漠首领斯第尔格第一次出现在公爵面前时，不肯卸下晶牙匕，然后上来就先吐口水的打招呼方式。这一幕本来是出现在晚宴上的，但是因为晚宴被删掉了，所以就变成了出现在会议厅里。晚宴本来是公爵、保罗、杰西卡跟当地势力的言语较量，一来一回之间，颇有舌战群儒的畅快感，再加上斯第尔格的出现，种种事件导致本来我以为平平无奇的晚宴变得险象环生，可谓妙哉妙哉。这场晚宴中的种种黑天鹅迹象也给足了读者内心准备：即将有大事发生。如此一来岳医生的背叛之夜也就一点也不突兀了。可惜篇幅关系少了这场大戏。</p> 
<p>另外是保罗和杰西卡在沙漠中逃亡的过程。这是年轻保罗死去，公爵保罗觉醒的心理成长时刻，可惜电影只用了他怒气冲冲地对着母亲发火一幕来表现，后面的成熟机智的转变只有手持戒指之类的无说明镜头。对于新观众而言，会比较难以理解。这点跟詹米莫名其妙地发起对杰西卡，实则保罗的决斗一事也是同理。在沙漠中成长的人们，有自己的信仰和规则，行事风格跟普通人大相径庭。这些规则如不作任何说明，其结果就是观众朋友看了觉得一头雾水。</p> 
<p>以上是改编后的一些问题，但是电影整体是很少改编，这也会产生问题。要知道《沙丘》这部小说的节奏和篇幅设计跟当下流行的三幕剧结构是不同的。一般来说，畅销小说和商业大片都会采用开场直奔主题，遇到大事进入第二幕，酝酿和成长然后开始大决战进入第三幕，最终大团圆结局这样的套路。漫威的《复仇者联盟》第一部就是这样典型的结构。开场先搞一波宇宙魔方危机，然后钢铁侠开始召集英雄就进入第二幕，英雄们初次组团需要磨合，第二幕就是从不合到团结的过程，最终大决战就是洛基打开时空隧道那一刻开始。观众们非常熟悉这样的讨论，也很好理解。但是《沙丘》却很奇怪，直到走进沙漠那一刻，才只是第一部的三分之一。主角保罗在沙漠中的种种成长加起来占了第一部的绝大部分，反而最后的复仇大决战篇幅不长。这样会造成前面的故事给人一种不停地压抑的感觉，而压抑到最后居然没有足够多的释放，会有点遗憾。用最近的流行语来说，观众会觉得：“就这？”</p> 
<p>所以 Denis 导演的这部电影如果紧跟原著，势必落得跟商业大片相反的一个效果。原著党当然开心了，但是新观众却会有点疲倦。</p> 
<h2>四、期待续集</h2> 
<p>作为一个原著党，对我来说这部电影的观看体验是非常赞的。一部作品如果既有小说也有影视形式，一般我会更喜欢读小说，因为想象出来的东西都在我自己的脑中，不受任何技术实现的束缚。而影视作品即使做得再好，他也是一个固定的形象，是制作组心中的还原，跟读者的想象肯定会有差距。小说是非常重人物的作品，所以我猜可能因为这样，所以国内的小说搬上荧幕的我总认为不如原作。比如不食人间烟火的小龙女，至今也只有刘亦菲的造型比较贴近我的感觉，但是这部电视剧的整体效果却不够及格。但是想象外国作品又是另一回事了，这部电影的人物还原除了过于壮硕的 Jason Momoa 和Dave Bautista 之外我觉得都蛮符合我对小说的想象，也许是因为本来我就不太能想象一个沙漠星球的人应该长什么样子，而接近中东人的波斯王子形象会比较贴近吧。</p> 
<p>这部电影显然是会让原著党狂喜而新观众莫名其妙的作品，但是看导演 Denis Villeneuve 之前的片子，《银翼杀手2049》和《降临》，就知道这部电影简直是一脉相承了。</p> 
<p>个人而言我非常喜欢这部电影对《沙丘》小说的呈现，期待看到下一部的出现，期待保罗在下一部中能以更加成熟壮实的形象扛起救世主的大旗。</p> 
<h2>相关资料</h2> 
<ul> 
 <li><a href="https://zh.wikipedia.org/wiki/%E6%B2%99%E4%B8%982000">沙丘2000 - 维基百科，自由的百科全书</a></li> 
 <li><a href="https://www.amazon.cn/dp/B07YJGCQFZ">亚马逊中国《沙丘六部曲》Kindle版</a></li> 
 <li><a href="https://www.imdb.com/title/tt1160419/">Dune (2021) - IMDb</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 49 &#x82F9;&#x679C;2021&#x5341;&#x6708;&#x53D1;&#x5E03;&#x4F1A;&#xFF1A;&#x5F3A;&#x8005;&#x7684;&#x5F3A;</title>
        <link>https://justinyan.eth.limo/B150D505-8C28-4454-B3D2-5B3B96EECD9A/</link>
        <guid>https://justinyan.eth.limo/B150D505-8C28-4454-B3D2-5B3B96EECD9A/</guid>
        <pubDate>Wed, 20 Oct 2021 17:09:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/Podcast-Cover-v49.png" alt="Vol. 49 苹果2021十月发布会：强者的强" /></p> 
<p>强者的强！<br /> Supercharged for pros.</p> 
<p>时隔多年，苹果终于给 MacBook Pro 产品线进行了一次像样的大更新！继去年推出的 M1 芯片大受好评之后，苹果再次大手一挥，给出了两颗超超超大杯的芯片，M1 Pro 和 M1 Max。这两个芯片给出的理论数据确实惊人，到底有多惊人呢？让我们在节目中一起聊一聊吧！</p> 
<p>P.S. 欢迎各位加入我们的微信听友群，在微信搜索 <code>fyfyFM</code> 添加小助手麦克枫，他会拉你入群。<br /> P.P.S. 近期如果大家发现自己收听的国内平台上少了几期我们的节目，那基本可以离开这平台了，推荐大家使用泛用型播客客户端来订阅收听我们的节目。详情请参考<a href="https://fyfy.fm/about">https://fyfy.fm/about</a><br /> P.P.P.S. 新的 MacBook Pro 在中国已经可以下单了，10 月 26 日发售。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>01:20 从 HomePod mini 聊起</li> 
 <li>03:13 AirPods 3 &amp; Apple Music Voice Plan</li> 
 <li>06:28 M1 Pro &amp; M1 Max</li> 
 <li>13:39 M1 的统一内存架构</li> 
 <li>19:55 M1 在 GPU 上的升级</li> 
 <li>28:06 MacBook 那些肉眼可见的升级和回归</li> 
 <li>39:02 一些购买建议</li> 
 <li>46:53 M1 的软件生态</li> 
 <li>51:48 两位主播的购机计划</li> 
 <li>57:26 片尾曲：Apple Event Unleashed</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/exM1uajp--A" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Apple Event Unleashed</a></li> 
 <li>Mac刘海模拟器：<a href="https://github.com/megabitsenmzq/Notch-Simulator">Notch Simulator</a></li> 
 <li>Menu Bar管理软件：<a href="https://www.macbartender.com/">Bartender</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 48 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;06: &#x8138;&#xB7;&#x5143;&#x5B87;&#x5B99;&#xB7;&#x4E66;&#x5B95;&#x673A;&#x4E8B;&#x4EF6;</title>
        <link>https://justinyan.eth.limo/7EB48324-9716-434D-8E3E-D5CE0D768B22/</link>
        <guid>https://justinyan.eth.limo/7EB48324-9716-434D-8E3E-D5CE0D768B22/</guid>
        <pubDate>Tue, 19 Oct 2021 09:42:42 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/Podcast-Cover-v48.jpg" alt="Vol. 48 科技快乐星球06: 脸·元宇宙·书宕机事件" /></p> 
<p>尊敬的新老听友，欢迎光临本台。好消息！好消息！特大好消息！<br /> 我台终于开通微信听友群啦！<br /> 还在等什么？马上打开你的微信，搜索微信号 <code>fyfyFM</code> 加入枫言枫语播客听友群吧！</p> 
<p>长假过后，一期又轻快又欢乐的科技快乐星球星球~<br /> 除了加入我们的微信听友群之外，不要忘了在评论区扣 1 哦<br /> 你们的支持就是我们更新的动力~</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 微信听友群开通咯！加「fyfyFM」拉进群</li> 
 <li>01:07 Facebook 10月4日所有服务宕机6个小时</li> 
 <li>08:13 亚马逊发布智能家庭机器人 Astro Bot</li> 
 <li>17:39 小米注册「小爱女友」商标</li> 
 <li>23:53 Epic Games 和苹果的官司更新</li> 
 <li>26:09 聊起最近爆火的「元宇宙」</li> 
 <li>33:08 SpaceX首个「全平民机组」成功返回地球</li> 
 <li>38:21 片尾曲：嘉然 -《Hopeful Dreamer》</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>微信听友群：加<code>fyfyFM</code>进群</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://www.bilibili.com/video/BV1V64y1k7TA/">嘉然《Hopeful Dreamer》</a></li> 
 <li>封面: <a href="https://unsplash.com/@orwhat">Richard Horvath (@orwhat) | Unsplash Photo Community</a></li> 
 <li>节目 32:27 提到的VR战争短片：<a href="https://www.bilibili.com/video/BV1ks411r7VQ/">《恐怖谷 Uncanny Valley》</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #175 Bill Bryson - &#x300A;&#x4E07;&#x7269;&#x7B80;&#x53F2;&#x300B;</title>
        <link>https://justinyan.eth.limo/98E4A5CA-30B0-4EB9-8930-1D2CFB2FC441/</link>
        <guid>https://justinyan.eth.limo/98E4A5CA-30B0-4EB9-8930-1D2CFB2FC441/</guid>
        <pubDate>Fri, 15 Oct 2021 17:44:39 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/10/fyyd-022.jpg" alt="枫影夜读 #22 - Bill Bryson《万物简史》" /></p> 
<p>今年七月我曾介绍过 Bill Bryson 于 2020 年出版的科普作品——《人体简史》（The Body，简体译名有点离谱），我近来读完作者的另一部畅销作品《万物简史》（A Short History of Nearly Everything），感觉十分有趣。已经有一阵子没遇到让我手不释卷的书了。后来出版的《人体简史》在写作风格上跟本作一脉相承，作者擅长以风趣幽默、浅显易懂的文本讲述深奥玄妙的科学原理。大到宏观天体，小到微观粒子，远及宇宙起源，近临人类发展，一场时空远超人类想象力之旅展开，读来酣畅淋漓，令人大呼过瘾。</p> 
<p>从书名的“万物”已可看出作者的野心，虽然原文加了个 "Nearly" 但毕竟还是 "Everything"。在作者序中，Bryson 谈及编写本作是因为他在学生时代没学好科学课，自觉科学知识过于贫瘠，于是花三年时间“走遍五大洲是一个国家，阅读了许许多多的书籍、杂志、手稿和专著，向许多世界领先的研究机构不同学科的极为友善而又耐心的专家请教了无数问题。”最终写成本书。</p> 
<p>在宇宙的尺度上，人类不仅渺小，而且对宇宙了解之匮乏到了令人吃惊的地步。自近代以来，人类社会几乎一切领域都在飞速发展，这也许给了大家一种错觉，即人类无所不知，科学无所不能。</p> 
<p>但事实却是，人类不仅所知甚少，而且在宇宙面前根本无能为力。Bill Bryson 在讲述地球陨石坑的研究一章中提到，以人类现在所掌握的科技水平，如果遇到彗星撞击地球事件，不仅无法及时预测彗星的轨迹、撞击时间和地点，而且即便真的预测到了，对此也无能为力。</p> 
<p>首先公众可能以为地球上的天文台每天晚上都在扫射整个天空，观察所有能被观察到的角落。但事实上绝大部分天文望远镜在大多数时候只是盯着宇宙中一个非常小的点，而且能获得的图像也是极其模糊的。不仅 NASA 放出来的各种星球、星云图像都经过艺术家丰富想象力的二次创作，甚至我们课本上的太阳系示意图也是不成比例的（如果按真实比例绘制的话书本要嘛放不下要嘛看不清），可以说跟真正的天文学观测到的图像是截然不同的两码事。</p> 
<p>即便是我们所在的太阳系，人类也知之甚少。想要在宇宙的尺度上进行全面的观察和预测，这几乎是不可能的事情。即便正好有一个天文望远镜观测到了一个即将撞击地球的彗星，甚至准确地预测了它的轨迹，人类也拿它完全没有办法。首先我们并未掌握能够飞离地球的导弹，即便我们具备了太空导弹技术，在搭载了人类目前最强核武器精准打击了彗星之后，我们也只是从一个完整彗星的撞击变成漫天花雨式的撞击，而且这些碎石还充满辐射。</p> 
<p>另外即便没有彗星撞地球，我们的地球也足够危险到让人类灭绝。比如位于美国的黄石国家森林公园就是一个地球上的超级火山，没人知道它什么时候会爆发，但是它一旦爆发，地球将迎来导致恐龙灭绝的那次撞击一样的灾难。人类知道的越多就越知道自己无知。现在的科学，不管在哪一方面都还有无穷无尽的未知等着人类去探索。</p> 
<p>跟《人体简史》类似，作者在本书中也提到了很多著名的科学家的故事，比如牛顿和爱因斯坦。这些天才的故事与我们在教科书中得到的印象大相径庭。牛顿是个怪人，聪明过人又离群索居，沉闷无趣又敏感多疑。他觉得普通数学的局限性很大于是发明了微积分，但是在27年时间里他对谁也没有提起过这件事。更离谱的是，“真正的科学只占他兴趣的一部分，他至少有一半工作时间花在炼金术和反复无常的宗教活动上。”当然我们不要忘了牛顿生活在十六世纪，那个时代宗教依然占统治地位。</p> 
<p>爱因斯坦则在早年经历中看不出天才的迹象，他在瑞士专利局工作了7年，“他很喜欢这份工作：它很有挑战性，能使他的脑子忙个不停，但又不至于转移他对物理学的注意力。就是在这种背景下，他于1905年创立了狭义相对论。”但狭义相对论并未让爱因斯坦名扬天下，直到10年后他发表了广义相对论。</p> 
<p>科学史上许多为现代科学奠定基础的天才，可能一辈子都是默默无闻的，直到去世多年才被人们发现。牛顿和爱因斯坦已经是少有的在生前功成名之人。每个时代都有无数聪明的人在从事各项研究，而最终能名留青史的实在太少。</p> 
<p>读到史前生物大灭绝事件时我想到小岛秀夫制作的游戏《死亡搁浅》（Death Stranding）。读到冰期、彗星撞地球、黄石公园火山喷发等灾难研究时好莱坞有太多这样的电影。读到人类学目前掌握的的化石资料之匮乏，以至于人类的发展史几乎大半建立在想象力之上时，我一方面深觉当下人类所知实在太少，另一方面又为后来考古学每年的新发现感到欣喜。不积跬步无以至千里，这个世界这样严酷，人类要生存下去只能愈发坚强。</p> 
<p>从宇宙的时空尺度看仿佛一切都没有意义，但也许所谓的“意义”可能从来就不曾存在过呢？</p> 
<p>2021.10.14</p> 
<h2>关于翻译</h2> 
<p>本书的简体翻译大体上是比较流畅易读的，选词也比较用心，书本前部也声明邀请过许多学界的专家帮忙校对，非常不错。</p> 
<p>但是 Bryson 的原文使用了大量的破折号作转折、补充表达，也常用非常长的句子。在英文中也许是个常规写法，但是翻译成中文经常让我跳出当前的思路，需要一段时间适应才能很好地接回原句。</p> 
<p>另外还有些翻译非常的奇怪，虽然不多，但偶尔出现的时候还是感觉很违和，比如：</p> 
<blockquote>
 <p> The scheme failed because there were no pearls and anyway Norwood’s bell didn’t work, but Norwood was not one to waste an experience.<br /> 这个计划没有成功，因为那里没有珍珠，而且诺伍德的潜水钟也不灵，但诺伍德是个不愿意浪费一次经历的人。 </p>
</blockquote> 
<p>虽然如此，但整本书的翻译不影响主旨，这些瑕疵只要接受了就可以流畅阅读了。</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 万物简史</li> 
 <li>英文标题: A Short History of Nearly Everything</li> 
 <li>作者: Bill Bryson</li> 
 <li>译者: 严维明 陈邕</li> 
 <li>出版社: 接力出版社</li> 
 <li>出版年: 2017年9月1日</li> 
 <li>ASIN: B01L8UPTNS</li> 
 <li>版本: Kindle</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4616">枫影夜读 #15 - Bill Bryson "The Body" （《人体简史》）</a></li> 
 <li><a href="https://justinyan.me/post/4398">枫影夜读 #10——Jared Diamond《枪炮、病菌与钢铁》</a></li> 
 <li><a href="https://justinyan.me/post/4415">枫影夜读 #11——尤瓦尔·赫拉利《未来简史》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 47 &#x82F9;&#x679C;2021&#x79CB;&#x5B63;&#x53D1;&#x5E03;&#x4F1A;&#x53D1;&#x4E86;&#x5565;</title>
        <link>https://justinyan.eth.limo/EF1989D4-E931-496D-AAD4-F761AC80FE63/</link>
        <guid>https://justinyan.eth.limo/EF1989D4-E931-496D-AAD4-F761AC80FE63/</guid>
        <pubDate>Thu, 16 Sep 2021 00:00:00 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/09/Podcast-Cover-v47-4.jpg" alt="Vol. 47 苹果2021秋季发布会发了啥" /></p> 
<p>一年一度的苹果秋季发布会来啦！iPhone 13 “强得很”，到底有多强呢？<br /> 新出炉的 iPad Mini 又有什么黑科技呢？<br /> Watch Series 7 屏幕好像更大了一点哦，要买一个吗？</p> 
<p>本期节目让我们一起吐槽今年的“Oh. So. Pro.”更新吧！</p> 
<p>P.S. 听众朋友们你们看了发布会吗？有什么想买的东西吗？欢迎大家在评论区留言讨论哦，扣个 1 也可以呀，笔芯♥️<br /> P.P.S. 11:05 Universal Control 从 Beta 5 开始可以从 Terminal 打开，但是苹果并不建议使用</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:00 开场</li> 
 <li>01:34 Apple TV+ 能干啥？</li> 
 <li>03:13 iPad 产品线更新</li> 
 <li>13:05 Watch Series 7 芜湖起飞</li> 
 <li>21:49 iPhone 13 “强得很”，“Oh. So. Pro.”！</li> 
 <li>47:56 有什么想买的硬件吗？</li> 
 <li>50:50 片尾曲：California Soul(苹果改编版)</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: 本次发布会开场曲，原作是 <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/CUosSQZSw5c" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Marlena Shaw 的 California Soul</a></li> 
 <li>全场回放: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/EvGOlAkLSLw" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Apple Event — September 14 - YouTube</a></li> 
 <li>中场还采用了 <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/1z6lcJ093FA" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;NoMBe 的 Paint California</a> 作为插曲介绍，也非常棒</li> 
 <li>我台介绍 5G 的一期节目: <a href="https://fyfy.fm/episode/30">Vol. 30 科技007: 5G只能用来凡尔赛吗？</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #174 &#x963F;&#x5C14;&#x8D1D;&#xB7;&#x52A0;&#x7F2A; - &#x300A;&#x9F20;&#x75AB;&#x300B;</title>
        <link>https://justinyan.eth.limo/20998260-188E-4DC9-9A99-206F76BFAC64/</link>
        <guid>https://justinyan.eth.limo/20998260-188E-4DC9-9A99-206F76BFAC64/</guid>
        <pubDate>Tue, 14 Sep 2021 13:47:58 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/09/fyyd-021.jpg" alt="枫影夜读 #21 ——阿尔贝·加缪《鼠疫》" /></p> 
<p>此前我曾介绍过<a href="https://justinyan.me/post/4619">阿尔贝·加缪（Albert Camus, 1913-1960）的代表作《局外人》</a>（法: "L'Étranger", 英: "Stranger", 繁: 《異鄉人》），该作的主角默尔索先生不合主流道德却合乎情理的冷漠给人留下深刻的印象。随后我又读了加缪的另一部小说——《鼠疫》（法：La Peste， 英：The Plague）。</p> 
<p>这部小说发表于 1947 年，讲述了发生在前法国殖民地阿尔及尔的奥兰市因一场鼠疫而封城，民众与疫病斗争直到退散的故事。主角里厄医生（Dr. Bernard Rieux）是第一个察觉可能是鼠疫的人。在小说中，他努力推进相关机构采取措施，封城后不分昼夜治疗患者，组织指挥志愿者抗疫队，见证了许多可歌可泣的生死别离。故事虽是虚构，作者亦未曾亲历鼠疫，但其笔下人物百态却栩栩如生，动人心弦。</p> 
<p>2020 年初突如其来的 COVID-19 迅速席卷全球，把全世界打得措手不及。于是这部 74 年前发表的作品也因此契机再次流行起来。读罢本书，我以为主线情节比较常规，乏善可陈。第一幕鼠疫初露迹象，里厄报告鼠疫推进封城，揭开第二幕。大伙组织志愿者抗疫队，与鼠疫战斗期间悲剧连连，在所有人都疲惫不堪的时候，故事进入第三幕，鼠疫开始退散，一切仿佛又回到过去。我最喜欢的是加缪笔下形形色色的人物，在面对鼠疫封城时有人欢喜有人愁，主线虽不算惊心动魄，但人物却充满勇气，细节则精彩纷呈。</p> 
<p>里厄医生自不必说，身为医者，面对鼠疫保持冷静和理性，坚决要求省长采取封城措施。过程中也获得名医里沙尔（Dr. Richard）的支持，但多数人其实是惧怕“鼠疫”这个词的。“鼠疫”在中世纪曾夺走欧洲一半以上人口的生命，如果确实发生鼠疫，免不了要给这座小城带来极大的恐慌，若判断失误却采取严格措施，则做出决策之人免不了重责。里厄坚持说：</p> 
<blockquote>
 <p> ……因此，叫它鼠疫或增长热都无关紧要，唯一重要的是你们得阻止它夺去城里一半人的生命。 </p>
</blockquote> 
<p>我们经常希望世界是美好的，一切是理想的，有这样的愿望当然是必须的，不然世界就不知道怎么往美好的方向改变了。但现实是这个世界并不按理想化的规则运行，只要我们还活在这个世界里就得先接受这个事实。坚持在一个不完美的世界里以理想的态度行事无疑是艰难而痛苦的。在这方面，里厄医生不仅有跟鼠疫战斗的勇气，更有看清了现实却依然拥抱现实的勇气。在政府发布鼠疫公告之后，民众们看待里厄医生的神色也带上了几分不信任。里厄医生更要在接下来的日子里不断看到自己认识的人们痛苦地死去，身心俱疲。再加上封城之前里厄医生刚把自己的妻子送到城外养病，原本分隔两地还有聚首可能，现在解封遥遥无期，不免心中怅然。我想可能里厄医生后来慢慢变得冷漠，正是把这些“没有用的”情绪封印起来的结果。在疫情面前，人类不过沧海之一粟罢了。</p> 
<p>包括主角里厄医生在内，《鼠疫》中积极勇敢地对抗鼠疫的角色们，都是城中的小人物。比如任劳任怨几十年，看不到升职和转正期望的公务员格朗（Joseph Grand），天天纠结于小说的第一句该如何措辞，始终未曾完成这部作品。在旁人看来，格朗可谓是一个彻头彻尾的失败者。但格朗在志愿者抗疫队中展现出他勤勤恳恳，认真负责的一面，更不畏染病的风险，这一点实在令人敬佩。</p> 
<p>还有因为私人原因几周前到奥兰城的塔鲁（Jean Tarrou），在本作中作者称写作过程参考了塔鲁的日记。在医疗人手短缺的时候，塔鲁主动发起组织志愿者队伍。后来在志愿者队伍中也是一马当先，竭尽全力，终于在鼠疫退散的时候，塔鲁还是染病身亡。</p> 
<p>小说中有多次对鼠疫患者发病死亡时的描述，包括预审法官的小儿子，一个十几岁的少年，包括神甫（Father Paneloux），以及塔鲁。对于这些悲惨的场景，作者之笔墨可谓直通地府，患者临死的挣扎，苦痛，哀嚎，锋利地刺入读者的内心，令人胆寒。所以我说《鼠疫》最精彩的部分，不在故事情节，而在个中细节。现在大家都经历过去年足不出户的时候，也经历过戴着口罩对身边所有人投来怀疑目光的时候，所以书中细节读来会更有共鸣。</p> 
<p>2021 年 5 月 21 日，广州荔湾区出现一个本土病例。当时我心存侥幸以为离我的住处尚远，没想到数日后荔湾区就开始要求全员做核酸检测，紧接着我居住的行政区域就被整个封锁起来，几十万人一夜之间与世隔绝。在封锁期间，我体会最深的是对“不知何时可以解封”的期待与担忧。而这些心理变化，竟全在《鼠疫》中得到描述，让我不由得对作者大感佩服。</p> 
<p>封锁给人们带来的影响无疑是巨大的，且不说物资供应因此变得短缺，光是对未来无从预期就足以让人陷入绝望。《鼠疫》里的人物，无论是里厄医生还是格朗还是塔鲁们，大家都看清了现实，同时充满了勇气去挑战现实。与其他小说不同的是，加缪在人物的思考与评论上多费了不少笔墨，而我以为，这些才是加缪小说中最精彩的部分：</p> 
<blockquote>
 <p> 但笔者更愿意相信，过分重视高尚行为，结果反而会变成对罪恶间接而有力的褒扬。因为那样做会让人猜想，高尚行为如此可贵，只因它寥若晨星，所以狠心和冷漠才是人类行为更经常的动力。而这种想法正是笔者不能苟同的。人世间的罪恶几乎总是由愚昧造成，人如果缺乏教育，好心也可能同恶意一样造成损害。</p> 
 <p> 事实上，献身于卫生防疫事业的人们也不一定功勋卓著，他们那样做只因他们知道那是唯一需要做的事情，而在那样的时刻不下此决心才真叫不可思议。</p> 
 <p> 自然，各家报纸必须服从上司的命令，宣扬乐观主义。一读报纸，就会看见对当前形势特点的描写，那就是：居民表现为“沉着和冷静的动人典范”。然而，在一个自我封闭、无密可保的城市里，谁也不会欺骗自己去相信什么共同作出的“典范”。 </p>
</blockquote> 
<p>不知道大家读了这些评论会有什么感想。今年我被封锁在家时我体会到了跟去年同样待在家里时截然不同的感觉。去年所有人都只能待在家里，不敢出门，今年我是被限制了出门的自由，物资供应也受限，终日为柴米油盐担忧。我那时加入了以前不会加入的各种邻居买菜群，试图掌握更多更快的讯息以便买到物资。也刷起了以前不怎么使用的微博，试图从中寻找可能解封的蛛丝马迹。但即便是“广州疫情”这个热度，在微博，在知乎之类的地方，也不过持续短短一日而已。网络上充斥着各种正能量宣传，有用之资讯少之又少，在《鼠疫》中，加缪说：</p> 
<blockquote>
 <p> 这起码是里厄大夫在报上或广播里看到或听到外界呼唤和鼓励这座疫城时的想法。外界通过空运和陆运发来了救援物资，与此同时，每晚还在无线电波里或报纸上向这座孤城发出大量表示怜悯或赞扬的评论。大夫每次一听到那念史诗或演讲竞赛般的腔调就感到心烦。诚然，他也知道这种关怀并非假装出来的，但这样的关怀只能用人与人唇齿相依之类的套语表示。 </p>
</blockquote> 
<p>现在已经解封几个月了，生活好像从一个临时的状态又回到了另一个所谓“正常”的状态。我想，在这场封锁中，在这本《鼠疫》中，我看到了世界的不完美，也看到了愿意接受并热爱这个不完美的世界的勇气。</p> 
<p>2021.09.13/下午</p> 
<p>于广州三十四度阳光的缝隙里</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 鼠疫</li> 
 <li>原作名: La Peste</li> 
 <li>译者: 柳鸣九</li> 
 <li>作者: Albert Camus</li> 
 <li>出版社: 译林出版社</li> 
 <li>出版年: 2017-1</li> 
 <li>ASIN: B01MSEK3GL</li> 
 <li>版本: Kindle版</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4619">枫影夜读 #16 - 阿尔贝·加缪《局外人》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4F7F;&#x7528; Vue 3 + Vite.js &#x5FEB;&#x901F;&#x5B9E;&#x73B0;&#x5C0F;&#x578B;&#x670D;&#x52A1;&#x524D;&#x7AEF;</title>
        <link>https://justinyan.eth.limo/8A8FFD74-FB73-4C82-8937-282912B72959/</link>
        <guid>https://justinyan.eth.limo/8A8FFD74-FB73-4C82-8937-282912B72959/</guid>
        <pubDate>Fri, 10 Sep 2021 09:37:53 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/09/VueVite.jpg" alt="使用 Vue 3 + Vite.js 快速实现小型服务前端" /></p> 
<p><a href="https://github.com/yyx990803">尤雨溪（Evan You）</a>主创的前端框架 <a href="https://vuejs.org/">Vue.js</a> 首发于 2014 年，距今已经 7 年过去了。我作为一个曾经的前端工程师，虽然代码写得不怎样，但经常还会折腾点小工具什么的。去年我用上 TypeScript 之后感觉给自己的小工具找到了“可维护”之路，于是写了<a href="https://justinyan.me/post/4319">《TypeScript + ExpressJS 快速搭建小工具服务》</a>作为记录，今年我又学了下 Vue.js，从 Vue 2.x 开始试着上手，因为 2.x 流行多年，相关生态和第三方库最全。</p> 
<p>但使用 Vue 2.x 的我配合的是臃肿的 <a href="https://webpack.js.org/">webpack</a>，虽然工具链成熟但开发过程总觉得笨重且慢。近来我改用 Vue 3 配合官方的 <a href="https://vitejs.dev/">Vite.js</a>，感受到了轻量级自动化工具带来的闪电般的开发体验，于是把我的播客<a href="https://fyfy.fm">枫言枫语官网</a>的前端搬到 Vue 3 上来，效果还不错，遂写此文以记之。</p> 
<h2>一、选择 Vue 3 和 Vite.js</h2> 
<p><a href="https://fyfy.fm">枫言枫语官网</a>非常简单，只有一个 Episodes 列表和一个 About 页面，很适合用来练手新技术。早期我用的是简单的 Express.js 做后端，Pug（Jade）做 HTML 前端引擎，用户访问官网时直接吐一个后端渲染好的 HTML 静态页面。</p> 
<p>我练习 Vue 2 的项目还用上了 <a href="https://bootstrap-vue.org/">BootstrapVue</a> 这个库，基本上把所有的 <a href="https://getbootstrap.com/">Bootstrap</a> 官方控件都包装成了 Vue Component，引入后直接用就行，非常方便。用上 Vue 3 之后我就自己 import bootstrap 自己写控件逻辑了，好在页面简单这点不成问题。对于这个项目来说，Vue 3 和 2 的区别并未造成大的影响，如果你的项目规模较大可以参考<a href="https://v3.cn.vuejs.org/guide/migration/introduction.html">官方迁移文档</a>。</p> 
<p>在 Vue 2 的项目中，我需要用 webpack 实现:</p> 
<ol> 
 <li>ts → js</li> 
 <li>scss → css</li> 
 <li>html 自动打包</li> 
 <li>dev server 实现 Hot reload</li> 
</ol> 
<p>因为 webpack 的设计目标具有普适性，所以为了实现我这种比较特别的开发环境，我的 webpack 配置文件会比较庞大。如果 dev server 的逻辑涉及在前端用到的数据结构，我还得把 webpack.config.js 也用 ts 来写，才能引入相关的数据类型。</p> 
<p>Vite.js 的出现直接解决所有问题，使用 <code>npm init vite@latest</code> 直接构建脚手架:</p> 
<pre><code>➜ npm init vite@latest
Need to install the following packages:
  create-vite@latest
Ok to proceed? (y)
✔ Project name: … vite-project
✔ Select a framework: › vue
✔ Select a variant: › vue-ts
</code></pre> 
<p>如此就完成了使用 ts 开发 Vue 3 项目的脚手架，<code>assets</code> 目录里也支持 <code>scss</code>，非常方便。</p> 
<p>Vite 项目的开发预览直接跑 <code>vite</code> 命令即可，在去年的文章中我还是比较多用 <code>Makefile</code>，但现在我更喜欢用 <code>package.json</code> 里的 <code>scripts</code> 了，因为可以直接用 local node modules，无需 <code>npx</code> 前缀。</p> 
<pre><code>npm run dev
</code></pre> 
<p>Dev server 就跑起来了，Vue 文件的任何修改几乎都是秒刷新，非常赞。目前我唯一觉得慢的就是修改 <code>scss</code> 文件，要等十多秒的编译时间，不过 CSS 的修改我可以直接在浏览器里做，然后再复制过来，所以影响不大。</p> 
<h2>二、引入 Bootstrap 和 Fontwaesome</h2> 
<p><a href="https://getbootstrap.com/">Bootstrap</a> 和 <a href="https://fontawesome.com/">Fontawesome</a> 都可以通过 npm 安装。</p> 
<p>Bootstrap 的 scss 文件在 style.scss 里通过 @import 引入，Fontawesome 在 main.ts 通过 import 引入。</p> 
<h2>三、Vue Router History Mode</h2> 
<p>引入 <a href="https://router.vuejs.org/">Vue Router</a> 如果使用 History Mode 需要 Server 端配合。比如我们配置两个路由:</p> 
<pre><code>const routes = [
    {
        path: '/',
        name: 'Home',
        component: Home
    },
    {
        path: '/about',
        name: 'About',
        component: About
    }
]
</code></pre> 
<p>当我们使用 <code>&lt;router-link&gt;</code>直接跳进 <code>/about</code> 页面时， Vue Router 会使用<a href="https://developer.mozilla.org/en-US/docs/Web/API/History_API">History API</a> 实现页面跳转和浏览器 URL 的修改，并不会真的发起一次 GET /about 的请求。</p> 
<p>但是如果用户直接访问了 <code>/about</code> 这个 URL，我们希望他能直接见到 about 页面的 UI，所以我们需要在服务端做一次 fallback，当一个请求不 match 我们 server 端的路由时直接返回 <code>index.html</code>，这样 Vue Router 会自行处理页面渲染。</p> 
<p>服务端我用的还是 express.js 所以直接在 Router 配置完之后，末尾加了一个 <code>app.all("*", () =&gt; {})</code> 的处理，简单粗暴。</p> 
<pre><code>app.use('/episode', episodeRouter)
<p>app.all("*", (_req, res) =&gt; {<br /> try {<br /> res.sendFile(path.join(g_publicFolder, 'index.html'));<br /> } catch (error) {<br /> res.json({ success: false, message: "Something went wrong" });<br /> }<br /> });</p>
</code><p><code></code></p></pre>
<p></p> 
<h2>四、Vite Dev Server 转发请求到 API 后端</h2> 
<p>Vite 默认用 `http://127.0.0.1:3000` 来 serve Vue 的前端页面，我们对前端文件的任何修改都会自动触发 Vite 的自动编译然后 reload。但是如果我们在前端需要使用 JS 发起 API 请求到后端呢？</p> 
<p>一般如果用 <a href="https://github.com/axios/axios">axios</a> 来发起一个 GET 请求我们这样写:</p> 
<pre><code>const response = await axios.get(`/episode/all`)
</code></pre> 
<p>如果在浏览器中跑起来这个请求就会发到 Vite server 而不是真正的后端。所以我们还需要在 <code>vite.config.ts</code> 中配置 Dev Server Proxy：</p> 
<pre><code>export default defineConfig({
    plugins: [vue()],
    build: {
        rollupOptions: {
            input: resolve(__dirname, 'index.html')
        }
    },
    server: {
        host: '0.0.0.0', // 把服务暴露给内网其他设备，比如同个WiFi下的手机
        proxy: {
            '^/episode/.*': 'http://127.0.0.1:3001', // 所有 episode 的请求都会被转发到 3001 端口，我们在这个端口启动一个后端的 server 就可以实现前后端联调了
        }
    }
})
</code></pre> 
<h2>五、解决 ts 的 this.property does not exist 编译错误</h2> 
<p>在 Vue 2 里使用 js 的单独的 vue 文件大约是这样的:</p> 
<p><img decoding="async" src="https://vuejs.org/images/vue-component.png" alt="Single-file component example (click for code as text)" /></p> 
<p>但是 Vue 3 里使用 ts 的话需要加上 <code>defineComponent()</code> 不然 <code>this</code> 的类型推断就会出错，比如:</p> 
<pre><code>export default defineComponent({
    data() {
            return {
                foo: 0,
            }
    },
    methods: {
        bar() {
            console.log(this.foo); // 如果没有 `defineComponent()` 这里会报错
        }
    }
})
</code></pre> 
<h2>六、总结</h2> 
<p>目前用着感觉 Vue 3 + Vite.js 的组合非常地轻便好用，适合我这种不做大型项目但又需要方便可维护的特性的场景。</p> 
<p>从一个 iOS 程序员的角度来看，单文件的 <code>.vue</code> 可以类比为 iOS 的 <code>ViewController</code> 或者 <code>View</code>。当我写一个 <code>About.vue</code> 这样的页面时，他就是一个 View Controller， <code>&lt;script&gt;</code> 是他的 View Model，<code>&lt;template&gt;</code> 包起来的部分就是他的 UI 布局代码。</p> 
<p>Vue framework 的整体设计使得复杂的逻辑只能放在 <code>&lt;script&gt;</code> 部分编写，所有的用户行为操作通过事件或函数回调进 <code>methods</code> 里面，再修改自己的 <code>this.data</code>。通过 <code>this.data</code> 与 <code>template</code> 中元素的绑定关系更新 UI。</p> 
<p>在 iOS 开发中，如果要实现这样比较纯粹的单项数据流动的写法，我们可以使用类似 RxSwift 的库实现 UI 绑定，然后从 View Controller 中分离 View Model 来达成。但约束就没有 Vue 来得单一和严格。</p> 
<p><code>ts</code> 带来了使用 JS 实现大型项目的可能，比如 Angular.js 和 VS Code，Vue 带来相比 Angular, React 更加轻量的响应式编程体验，Vite.js 也以轻量迅捷的优势用起来比 webpack 舒服得多，以后我的小工具如果需要 Web UI 应该都会用这套方案，简单又优雅。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #173 Neil Postman - &#x300A;&#x5A31;&#x4E50;&#x81F3;&#x6B7B;&#x300B;</title>
        <link>https://justinyan.eth.limo/CC881C9A-6F56-48DF-A00B-EEA76D5443BF/</link>
        <guid>https://justinyan.eth.limo/CC881C9A-6F56-48DF-A00B-EEA76D5443BF/</guid>
        <pubDate>Tue, 07 Sep 2021 11:01:54 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/09/fyyd-020.jpg" alt="枫影夜读 #20 - Neil Postman 《娱乐至死》" /></p> 
<p>近来“短视频人均使用时长”、“短视频用户规模”云云似乎又常见起来，更早之前可能是“网民平均上网时长”、“手机用户时长”、“注意力”之流。其所谓“热度”也不过一日之长，现如今能保持在“热榜”超过七日者，已可载入“年度热榜”也。然而即称“年度”，也鲜有被记住一年的。</p> 
<p>此类“热点”自然没有讨论之价值，但自互联网发明、普及以来，人类社会适应所谓“信息爆炸”时代也不过数十载。此间有何深远之影响，倒颇可研究。1985 年美国 Neil Postman 所著之《娱乐至死》（Amusing Ourselves to Death: Public Discourse in the Age of Show Business）距今三十六年依然畅销，个中缘由，大约不管书中所提及之“电视”也好，现今互联网之“长视频”、“短视频”，甚或“电子游戏”也罢，多有相通之处。</p> 
<p>Neil Postman 生于 1931 年，彼时电视机已逐渐有席卷全球之势，1936 年柏林奥运会就是第一次通过电视转播的奥运会。但是紧接着二战的爆发让全球的电视行业停滞了 10 年之久，战后才迎来新一波发展。Neil Postman 就在这样的时代长大，但他并不是一个喜欢新科技的人，既不喜欢电视，也不喜欢后来兴起的互联网。他一生中大部分时光都在纽约度过，在纽约大学执教超过四十年，写了不少书。其中最有名的作品除了《娱乐至死》外，还有 1992 年出版的《科技奴隶》（Technopoly: The Surrender of Culture to Technology）。我虽未读过后者，但望标题而生义，已足见作者对科技之负面感慨。</p> 
<p>《娱乐至死》首版于 1985 年，正是乔治·奥威尔（George Orwell）的小说《一九八四》所预言之下一年。然而世界并没有在外部的奴役下失去自由，反而更像奥尔德斯·赫胥黎（Aldous Huxley）在《美丽新世界》所书，人们心甘情愿地毁于自己热爱的事物。Postman 在《前言》中表明本书试图论证世界正走向《美丽新世界》而不是《一九八四》。虽然书中以美国社会为例，但在全球化发展之当下，这些例子在多数国家都有借鉴意义。</p> 
<p>我挺喜欢书中关于林肯和道格拉斯在市集上辩论的例子。两人分别发言长达 3-4 小时，而观众也兴致勃勃地听了 7 小时，这在今天是难以想象的。一个“短视频”多在一分钟以内，即便是 B 站、YouTube 这样所谓“长视频”平台，视频也多在十分钟上下。视频制作者有个金科玉律，称为“八秒原则”、“三十秒原则”之类，大意是一个视频必须在前面极短的时间内引起观众的注意，这样视频的播放量才会高，“完播率”才会高，才会有更多点赞，更多“流量”。去年 Netflix 播出的纪录片《监视资本主义：智能陷阱》（The Social Dilemma）也指出了通过算法加强的社交成瘾现象，可以说是当年电视节目在全球普及时的翻版，或称加强版。讽刺的是，Netflix 自己也在收集“观众”的行为数据，试图利用所谓的“大数据”帮助制作组制作出更受欢迎的节目，这大抵也是好莱坞制作爆米花大片的加强版吧。</p> 
<p>作者在书中提到，人类社会经历过几次重大的文化变革。第一次是从口头文化进入书写文化，关于那时候发生的事情我们可以读一读柏拉图。第二次是印刷机的出现，我们可以读约翰·洛克（John Locke）。第三次则是电子革命，或电视机之普及，我们可以读马歇尔·麦克卢汉（Marshall McLuhan）。每次变革我们总会获得一些东西，又失去一些东西。但是总得来说，印刷机的出现利大于弊。</p> 
<p>我个人喜欢阅读多于看影片，所以作者在书中关于“铅字文化”的优点我十分认同。但作为在电视机中长大的一代，经历过互联网诞生到繁荣的一代，我也认可电视机与互联网所带来的更多样的体验以及更快的讯息流通。作者认为电视机不是“铅字文化”的传承，而是“电报”与“摄影术”的传承，它不是要禁止阅读，而是要取代阅读。这番理论与现今所谓之“内卷”颇有相似之处。每个人每天只有 24 小时，如果把时间用在 A 服务就无法用在 B 服务，所以一直有一个论调称互联网公司制作这些服务是在“抢用户注意力”。而且随着手机性能的越来越强大，“画中画”（Picture in Picture）功能已经可以让人们在观看一个视频的同时进行其他的操作。我想诸位读者可能都见过这样的场景：躺在沙发上开着电视机，手里的屏幕一边划一边还有个视频在播放。</p> 
<p>18 世纪科勒·律治（Samuel Taylor Coleridge）曾说：“到处是水却没有一滴水可以喝。”我不知道近来所谓“躺平”是否也有相似意味，当一个人同时接收这许多影像、听觉的巨量信息刺激的时候，是否已放弃了思考，成为一个等待喂养的躯壳呢？从来也没有这样一个时代，一个人的声音可以瞬间被全世界的人听到。也从来没有这样一个时代，这些声音可以瞬间被海量的信息所掩埋。</p> 
<p>Neil Postman显然不喜欢这样的时代，他为此表示担忧。他认为自从“电报”发明以来，所谓“新闻”就不再是跟本地人息息相关的事情，而是远在大洋彼岸女王的狗发生了什么事情。这种“异闻”我们现在叫做“八卦”。而这样的“八卦”并不能给我们接下来的“行动”带来任何价值。作者在书中称之为“信息-行动比”，有点像近来流行之所谓“信噪比”。作者虽在书中多次强调他并不极端，亦不全盘否定“电视娱乐时代”之滥觞，但纵观全书也未见作者提及信息时代之好处，所以我以为作者还是偏否定的态度居多。</p> 
<p>作为一个身处互联网时代之人，信息的环境和科技的脚步并不为我左右，但工具使用之目的可以为我控制。朋友曾问我“你说你不喜欢抖音但是又经常看 B 站，这又有什么区别呢？”我当时回答的是：“B 站的视频是我自主选择的，抖音的视频则是被动喂养的。”事实上 B 站的视频真的是我主动选择的吗？跟选择读什么书比起来还是差得远了，这主要是由两个行动所付出的代价差异造成的，读书代价显然大于读一篇长文，长文大于长视频，长视频又大于短视频。</p> 
<p>这让我想起 Google Reader 宣布关闭之时，网上曾有过关于“主动筛选信息的 RSS 订阅”和“被动等待喂养的推荐信息”之争。关于二者区别之讨论我想本书中援引的约翰·杜威（John Dewey）在《经验与教育》（Experience and Education）一书中所云颇为中肯：</p> 
<blockquote>
 <p> 也许人们对于教育最大的错误认识是，一个人学会的只有他当时正在学习的东西。其实，伴随学习的过程形成持久的态度……也许比拼写课或地理课更为重要……因为这些态度才是在未来发挥重要作用的东西。 </p>
</blockquote> 
<p>“授人以鱼不如授人以渔”，学习“如何学习”是学习过程中非常重要的一环。躺在沙发里等待被动喂养固然付出了最少的代价，却也少了学习“如何学习”的过程。</p> 
<p>作者在书中提到，读书时你需要长时间保持不动，需要时刻注意文字的形状从中读懂文字所表述之意义，需要区分文字的语气、情感、逻辑，并进行判断，还需要接收一个抽象的世界。这一切对于很多人来说可能不是非常容易的事情，但是它所带来的想象力的释放是无与伦比的。我是书中所云喜欢铅字文化的人，一部我感兴趣的作品如果既有影像又有小说，我会尽量先读小说。这对于欣赏故事类作品来说，好处是十分明显的。比如我很喜欢金庸的小说，《神雕侠侣》中的小龙女是我的最喜欢的金庸的女性角色。但是《神雕侠侣》这许多个电视剧版本却没有哪一位女演员能符合我心目中小龙女的形象。我非常庆幸我先读了小说，不然可能就像我最近读柯南·道尔爵士的《福尔摩斯探案全集》一样，脑袋里都是电视剧中演员的形象了（好在读多了几篇后我慢慢可以在脑中建立自己的福尔摩斯的形象了）。</p> 
<p>总而言之，正因着铅字阅读的诸多想象空间以及长时间保持不动的训练，我们不仅读到了作品本身，更在阅读过程中训练了自己。我以为此番训练是十分有趣的，在想象空间中徜徉之乐趣丝毫不亚于影像文化给我们带来的刺激。诚如前文所述，在阅读的想象空间里，其美好程度相比已经成型的影像作品而言是全方面超越的。</p> 
<p>可以看到，在本文中我甚至没有提及劣质影像作品，没有以缺失上下文的电视节目为例，没有提及因时长受限而绝无可能做出深刻表达的娱乐视频为例。我是喜欢影像作品中的佳作的，而电影、电视剧和现在的网络视频作为娱乐功能也是极好的。我不认为电视、互联网之类新科技的出现会在当下将人类文明毁于一旦，不过我既不是人类学家也不是预言家，未来会怎样更无人能说清楚。</p> 
<p>我想起近来所阅读之《講談社·興亡的世界史》第一册《人類文明的黎明與黃昏》中关于苏美文明的例子。苏美文明诞生于“新月沃地”，大约公元前 4500 年苏美人在此建立了强大的灌溉系统，凭空创造了一个不太受自然气候影响的繁荣文明。但彼时的人们并不知道农地需要休耕的原理，随着灌溉与耕耘的多年发展，土地肥力逐步下降，而土地越是贫瘠人们于是勤奋耕耘，终于导致文明之消亡。在历史上“成也萧何败也萧何”之例子比比皆是。2021 年，科技依然是人类社会发展的主题，自工业革命以降，人类社会也确实在科技的造福下解决了多项重大问题，当然也付出了巨大的代价。有关气候变暖，环境保护云云且不论，至少人类社会已经多年不关注精神文化层面之衰减了，仿佛万能之科技可以解决一切问题。而终于科技也十分高效地在“娱乐时代”发光发热了。</p> 
<p>只是啊，我们需要娱乐，也应该娱乐，但我们不能只有娱乐。</p> 
<p>21.09.02/下午<br /> 于午后的光影摇曳之间</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 娱乐至死</li> 
 <li>原作名: Amusing Ourselves to Death: Public Discourse in the Age of Show Business</li> 
 <li>译者: 章艳</li> 
 <li>作者: Neil Postman</li> 
 <li>出版社: 中信出版集团</li> 
 <li>出版年: ‎2015-5</li> 
 <li>ASIN: B06XFR194H</li> 
 <li>版本: Kindle版</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li>关于科技在未来可能造成的负面影响，<a href="https://justinyan.me/post/4415">尤瓦尔·赫拉利的《未来简史》</a>亦有所讨论</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 46 Dennis&#xFF1A;&#x5728;&#x7845;&#x8C37;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;?</title>
        <link>https://justinyan.eth.limo/5662D947-99A5-4D2B-A8D6-FF7A523F34EB/</link>
        <guid>https://justinyan.eth.limo/5662D947-99A5-4D2B-A8D6-FF7A523F34EB/</guid>
        <pubDate>Mon, 06 Sep 2021 10:41:08 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/09/Podcast-Cover-v46.png" alt="Vol. 46 在硅谷工作和生活是一种什么样的体验" /></p> 
<p>本台曾经做过一个不成系列的系列：在世界各地做程序员是一种什么样的体验。感兴趣的朋友们可以听一下已经播出的<a href="https://justinyan.me/post/3846">第 13 期新西兰</a>和<a href="https://justinyan.me/post/3927">第 16 期日本</a>。</p> 
<p>本期节目我们邀请到在美国硅谷工作的 Dennis the Menace 来我台做客，跟大家分享一下在硅谷做程序员是一种什么样的体验。另外 Dennis 也正好在疫情期间回过一趟国内，经历了 14 + 7 的隔离待遇，有些小技巧也值得分享一下。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:37 介绍嘉宾</li> 
 <li>01:48 隐私政策声明</li> 
 <li>02:25 当下美国疫情的影响</li> 
 <li>06:22 新旧办公室有什么不同</li> 
 <li>08:02 在苹果开发 Core Motion, watchOS…</li> 
 <li>10:54 现在在做 Home App 相关的工作</li> 
 <li>14:06 内部开发工具有什么不同吗？</li> 
 <li>19:07 硅谷工作选择除了 FANNG 还有别的吗</li> 
 <li>22:13 苹果有司庆和年会吗？</li> 
 <li>26:42 在湾区的生活感受</li> 
 <li>32:36 传统艺能：灵魂三问</li> 
 <li>39:24 回国隔离是一种什么样的体验</li> 
 <li>49:00 嘉宾推荐一首片尾曲，梁静茹 - Beautiful</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>嘉宾: <a href="https://weibo.com/u/1930406257">Dennis the Menace</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/A00HC71vMLo" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;梁靜茹 Fish Leong【Beautiful】</a></li> 
 <li><a href="https://justinyan.me/post/3846">Vol. 13 在新西兰做程序员是什么样的体验？</a></li> 
 <li><a href="https://justinyan.me/post/3927">Vol. 16 在日本工作和生活是一种什么样的体验</a></li> 
 <li>疫情刚起时我们和各地的朋友聊远程办公：<a href="https://justinyan.me/post/4259">Vol. 19 疫情之下，谈谈远程办公</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 45 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;05: &#x7279;&#x65AF;&#x62C9;&#x8981;&#x9020;&#x4EBA;&#x5F62;&#x673A;&#x5668;&#x4EBA;&#x5566;</title>
        <link>https://justinyan.eth.limo/97B6E590-BA98-4DCE-9C03-5585797C3F63/</link>
        <guid>https://justinyan.eth.limo/97B6E590-BA98-4DCE-9C03-5585797C3F63/</guid>
        <pubDate>Tue, 31 Aug 2021 08:45:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/Podcast-Cover-v45.png" alt="Vol. 45 科技快乐星球05: 特斯拉要造人形机器人啦" /></p> 
<p>最近特斯拉和苹果都有大新闻，两位主播不得不勤奋啊，新一期“科技快乐星球”立马送到！</p> 
<p>8 月 20 日特斯拉 AI 日（Tesla AI Day）召开，噱头大师 Elon Musk 又在发布会的最后十分钟整了个超前的概念：特斯拉明年的某个时间会发布人形机器人 Tesla Bot 的原型。以往只有在科幻作品里才能看到的人形机器人啊，终于快要进入我们家里啦。如果 Tesla Bot 完成度足够高的话，你会买一台吗？欢迎在评论区留言讨论。</p> 
<p>苹果最近在一场官司中开出了七条和解协议，包括了援助基金、支付方式等修改，不由得让人遐想尚未结束的 Epic vs. Apple 的官司将会往哪个方向发展呢？</p> 
<p><em>P.S. 本期片尾曲播完后有彩蛋！请务必听到最后哦！</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:30 特斯拉要开始造人形机器人了</li> 
 <li>05:59 机器人一定要长得像人一样吗？</li> 
 <li>17:33 苹果向开发者开出亿元和解方案</li> 
 <li>32:49 Intel推出高性能显卡品牌Intel Arc</li> 
 <li>34:14 苹果发布新版 iCloud for Windows</li> 
 <li>35:40 Github OpenAI 发布 Codex 语音编程</li> 
 <li>40:55 片尾曲：Put On Your Sunday Clothes</li> 
 <li>42:09 彩蛋：片尾曲是怎样讨论出来的 &gt;_&lt;</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/6sGYbCOsY58" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;WALL•E - Put On Your Sunday Clothes</a></li> 
 <li>苹果官方新闻: <a href="https://www.apple.com/newsroom/2021/08/apple-us-developers-agree-to-app-store-updates/">Apple, US developers agree to App Store updates - Apple</a></li> 
 <li>特斯拉 AI 日全场回放: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/j0z4FweCy4M" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Tesla AI Day - YouTube</a></li> 
 <li>本期提到的上期节目: <a href="https://justinyan.me/post/4637">Vol. 44 1Password 8 使用 Electron 重写，社区炸了</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 06 - &#x6211;&#x770B;&#x7535;&#x5F71;&#x300A;&#x5931;&#x63A7;&#x73A9;&#x5BB6;&#x300B;</title>
        <link>https://justinyan.eth.limo/EEBB0B16-81D8-44BD-B471-75C463B282C1/</link>
        <guid>https://justinyan.eth.limo/EEBB0B16-81D8-44BD-B471-75C463B282C1/</guid>
        <pubDate>Mon, 30 Aug 2021 13:51:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/mwmd-006.jpg" alt="漫无目的 06 - 我看电影《失控玩家》" /></p> 
<p>最近 Ryan Reynolds 主演的电影《失控玩家》（Free Guy）上映了，豆瓣（7.8）与IMDb（7.6）的评分都还不错，身边的朋友们看完也不乏给出好看的评价。我自己也看了感觉算是一部不错的商业娱乐大片，制作精良，节奏紧凑，结构清晰。娱乐大片该有的搞笑、对立、爱情、反转和特效大场面都齐备了。但是我观看过程中还是看到了一些有问题的部分，让我比较难接受，所以只给了本作三颗星（3/5）的评价。</p> 
<p><em>关于这部电影，你是否有喜欢或不喜欢的地方呢？欢迎在评论区留言哦。</em></p> 
<hr /> 
<p></p>
<center>
 以下内容涉及关键情节透露
</center>
<p></p> 
<hr /> 
<h2>一、简单的故事线</h2> 
<p>Ryan Reynolds 饰演的角色 Guy 是《自由之城》（Free City）里的一个 NPC 角色，一出场就是非常阳光的笑容和夸张的打招呼方式。这里以游戏世界作为背景设定有点像《头号玩家》（Ready Player One），Guy 的呆萌设定有点像《楚门的世界》（The Truman Show）里的主角，后期角色自我觉醒的转折则有点像《异次元骇客》（The Thirteenth Floor）。</p> 
<p>电影的故事设定比较简单，Guy 一开始像平时一样作为 NPC 跟自己的好兄弟 Buddy 一起走路去银行上班。Guy 是银行柜员，Buddy 是保安。这一段展示了 NPC 眼中游戏的样子，面对“戴着太阳眼镜的玩家”在游戏中的暴力肆虐，NPC 们只是服从，被屠杀，任由城市被破坏，看到街坊被扔出自己的店面倒在地上依然正常地打着招呼，讽刺意味十足。</p> 
<p>接下来 Guy 看到了自己的“真命天女”——一个带着太阳眼镜的玩家 Millie（Jodie Comer 饰演），然后内心中了一箭，开启了寻找真爱之旅，电影由此进入第二幕。随着 Guy 和 Millie 的故事线交缠，发现 Millie 在现实世界中曾经一个天才程序员，和朋友 Keys（Joe Keery 饰演）一起创作了《无限人生》（Life Itself）这款游戏，多年前被资本家 Antwan（Taika Waititi 饰演）收购。本想背靠资本可以让这款游戏大放异彩，但是没想到 Antwan 却将其彻底雪藏。现在 Keys 还在给 Antwan 打工维护《自由之城》这款游戏，而 Millie 却一直怀疑 Antwan 在《自由之城》中偷偷使用了他们之前创作的游戏的代码，于是潜入游戏试图寻找证据。</p> 
<p>就在 Guy 偏离自己的剧本，一不小心打死一个玩家拿了他的太阳眼镜之后，一切发生了天翻地覆的改变。这一段还是非常有趣的，Guy 通过太阳眼镜看到自己不曾见过的世界，特效制作和镜头运用都很自然，另一边 Keys 和同事 Mouser （键鼠兄弟啊这是）两人追踪这个打死了其他玩家，又穿着一个 NPC 皮肤的不良玩家 Guy 的一段戏也非常精彩，我个人觉得是整部电影最好的部分。</p> 
<p>接下来的故事就比较简单了，现实世界的 Keys 和游戏中的 Guy 一起帮助 Millie 寻找线索。Guy 和 Millie 两人产生感情，Millie 居然喜欢上了一个游戏里的 AI。故事一路向前推进，Keys 发现 Guy 就是他们之前写的代码，又因为 Antwan 宣布抛弃第一代而全新制作的《自由之城 2》将于两天后上线，这意味着将给这个 AI 判死刑，于是故事推进到第三幕大决战。Guy 与 Millie 前往地图边缘，Keys 在现实世界造桥帮助他通过“空气墙”，试图找到两人以前开发《无限人生》时留下的场景，作为犯罪证据状告 Antwan。</p> 
<p>以这样的故事线推进，无论节奏还是内容都算充实，只是故事比较简单和形式化，所谓“你们可以去做任何事情，而不是受限于此”的升华主题也算老生常谈，谈不上新意，更遑论要表达深刻内涵。当然这部电影从一开始就不是为深刻寓意而拍的，所以有这样“及格”的剧本已经足够支撑票房了。</p> 
<h2>二、单薄的人物角色</h2> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/漫无目的-006-2.jpg" alt="男主角 Guy" /></p> 
<p>角色方面，Guy 作为一个搞笑 NPC，Ryan Reynolds 的表演非常赞。整部电影里所有的角色都比较单薄，但是 Guy 作为一个 NPC，一个只有四岁的 AI，Ryan Reynolds 的演出效果轻松搞笑兼具深刻讽刺，我很喜欢。此前 Ryan 曾出演过漫威的《死侍》和 DC 的《绿灯侠》的主角，早期也曾出演过 ABC 的情景喜剧《Two Guys and a Girl》，喜剧功力十足。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/漫无目的-006-3.jpg" alt="女主角 Milly" /></p> 
<p>女主角 Millie 本来是一个女硬汉的形象，后来也在码头和 Guy 吃冰淇淋的时候展现出柔情一面。但是她的游戏实力与智商却忽高忽低，也是颇为费解。电影中只在偷录像带的一幕见她发挥过一次，后来就都是男主在输出了。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/漫无目的-006-4.jpg" alt="男二号 Keys" /></p> 
<p>男二号程序员 Keys 也是相当刻板，有点《头号玩家》中对程序员刻板印象的影子。直到电影的末尾都需要女主角主动跑到马路边，安排一场不顾一切往前冲才获得大团圆结局。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/漫无目的-006-5.jpg" alt="反派 Antwan" /></p> 
<p>反派角色可能是这部电影里最蠢的一个了。我是不相信 Antwan 蠢成这样还能管理一家大受欢迎的游戏公司的，除非他还有有实力强悍的助手。但这部电影里显然一切指令都来自 Antwan 亲自下达。这个角色的搞笑成分有点刻意，Taika Waititi 的表演也让人觉得油腻，有点黄教主演少年杨过的意思。</p> 
<p>所以整部电影的角色我觉得只有 Ryan Reynolds 演的最好。</p> 
<h2>三、重要情节的问题</h2> 
<p>故事以三幕剧形式展开并没有问题，主题鲜明，但是几处转折的安排却过于生硬。前期 Guy 按照往日流程在银行玩家抢劫时伏地投降，然后碰巧看到女主角，产生要去追上她的冲动，意外地干翻了一个玩家抢了他的眼镜，从而开启一个新世界。这一段直到 Guy 被两位运维小哥干翻之时都是非常棒的，张力十足，世界的转换也给了观众一个非常有趣的体验。</p> 
<p>但是接下来就开始变得奇怪了。首先是运维小哥 Keys 说他干翻了 Guy 之后看到在线人数没有变少从而产生怀疑。但是一款这么受欢迎的游戏在线人数肯定每一秒钟都在变化啊，编剧想点别的疑点行不行，非要想一个这么不科学的。比如后期 Keys 说在地图上根本看不到其他玩家在线，那他们两个人去追这个玩家的时候是怎么定位的？那时候就看得到他是个在线玩家吗？把这个点拿出来说事都比在线人数变化要强。</p> 
<p>后来 Keys 发现了这是个 AI，没想到这个角色在游戏里大火，反派 Antwan 没干掉他反而要以他为原型开发一个新的角色放进《自由之城2》里。再后来因为 Guy 在游戏中行侠仗义导致游戏体验不佳，Antwan 又要想办法干翻他了。这时候本来担心这个 AI 被发现的男主角突然就冲着 Antwan 说这人是个 AI。这我是无法理解的。然后好基友 Mouser 立刻就表忠心就说我们可以重启服务器干翻 Guy。我当时观影时脑袋里一片问号，难道这个 AI 被训练了之后数据是不落地保存的，全都在内存里？然后好基友 Mouser 可是全程当 Antwan 的忠心小弟啊，完全没有半点好基友的意思，只是在最后 Antwan 不行了才“改邪归正”，这个角色也是相当刻板。</p> 
<p>接下来在好基友的支持下，游戏立马就重启了一遍服务器，Guy 被重置，回到原来 NPC 的生活。于是 Millie 再次进入游戏试图唤醒 Guy 的记忆。这里也插播了一段 Keys 对 Millie 的视频告白，但是因为事态紧急 Millie 没来得及看作为最终伏笔。然后 Guy 就被唤醒了，还召集了所有 NPC 准备罢工。而反派这次采取对付 Guy 的办法，不是重启，也不是关机，而是放那个以 Guy 为原型制作的大块头 Dude（这里还呼应了电影中一个梗：“I'm not dude, I'm guy.”，电影中类似的梗还有“My good buddy, Buddy.”）。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/漫无目的-006-6.jpg" alt="Free Guy - Dude" /></p> 
<p>首先作为一个非常重要的犯罪证据，一个完整的老游戏的场景，为什么还会被保留在这个新游戏里没有删掉？而且还在 Guy 的百叶窗里被反射了出来。这点如果要强行解释可以说是新的工程师因为工期短不敢随便删代码。但是 Keys 作为继续给 Antwan 打工的人，从来就没有看到过这段代码吗？作为一个要实现第三幕反攻的重要道具，选择还是比较草率的，跟第一幕里说在线人数没有往下掉有异曲同工之妙。</p> 
<p>但是最诡异的还是当大块头 Dude 被 Guy 神奇反转打败了之后，Antwan 没有选择“关闭服务器”，而是冲进服务器室，以消防斧头物理攻击的方式一个个干翻服务器。这个干翻服务器的过程就造成了游戏世界的局部崩塌，一个一个场景地消失，对应一台台服务器的损坏。首先服务器和游戏场景并不存在这样一个个砍掉就一点点消失的对应关系，这个我们可以作为电影设定且不管他。但是这时 Keys 已经被 Antwan 炒鱿鱼了，Antwan 也踢掉了所有游戏玩家，只有 Keys 一个人还在通过笔记本偷偷直播整个游戏画面。但是 Antwan 没有去阻止 Keys 直播，也没有用简单快速的方法关闭服务，而是采用物理方式去砍坏服务器，这一段真是看呆我了。（也许前面把这个大反派设定为一个蠢人是为了这一段做铺垫也不一定Orz）</p> 
<p>最后 Millie 及时出现阻止 Antwan 砍掉最后一台服务器，说钱都给你，我只要代码。所以这家公司的代码是都放在生产环境的服务器上是吗？不存在代码托管服务器，也不存在生产环境与开发环境分离的大概。不过这一段也算是娱乐电影的设定，还是不要深究这些细节算了。</p> 
<p>所以如果是程序员朋友去观看这部电影，请试着忘记这些明显的漏洞，在接受这些设定的情况下来享受这部电影。但是即便如此，Guy 在被 Millie 几句说辞之后就彻底接受了自己是一个 AI 不是真人这个转折也是过于勉强。当然电影时长有限，无论是剧情设定只剩两天就世界末日，还是只剩半小时就要结束电影，留给 Guy 思考的时间都极短。这也是娱乐片无法表达深刻内容的遗憾。所以除了技术上的不合理，其实本作的剧本也经不起推敲。</p> 
<h2>总结</h2> 
<p>总的来说我觉得这部电影还是蛮有趣的，尤其是前半部分。我还是很乐于接受“NPC 戴上了游戏玩家的太阳眼镜之后就看到不一样的世界”这样的设定的，无论是 Guy 的不知所措还是运维对他展开的追逐战都充满惊喜。但是从“在线人数没有下降”开始，我就已经出戏了。所以说程序员看电影，还是不要太较真，享受电影带来的乐趣就好啦。</p> 
<p><em>关于这部电影，你是否有喜欢或不喜欢的地方呢？欢迎在评论区留言哦。</em></p> 
<p>2021.08.30/晨<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #172 &#x590F;&#x6D1B;&#x8482;&#xB7;&#x52C3;&#x6717;&#x7279; - &#x300A;&#x7B80;&#xB7;&#x7231;&#x300B;(Jane Eyre)</title>
        <link>https://justinyan.eth.limo/705FC875-11F4-406A-BB54-CD1DC44B1B74/</link>
        <guid>https://justinyan.eth.limo/705FC875-11F4-406A-BB54-CD1DC44B1B74/</guid>
        <pubDate>Wed, 25 Aug 2021 21:32:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/fyyd-019.jpg" alt="枫影夜读 #19 - 夏洛蒂·勃朗特《简·爱》" /></p> 
<p>《简·爱》这部作品，真不知从何下笔为好，小说里外太多令人欣喜又让人唏嘘的故事了。从人物上讲，简·爱是一个超越她所处的时代的勇敢的姑娘；海伦是一个令人恋爱又困在时代里的孩子；谭波尔小姐是一个近乎完美又普普通通的女神；罗切斯特先生是一个外表傲慢又内心脆弱的男人。从故事发生的阶段来讲，简·爱在童年甫一出场就获得读者喜爱，经过教会学校的成长，终于在桑菲尔德庄园展开人生最精彩的一段。至于结局，作者既可以选择悲剧也可以选择大团圆，二者都合情合理。虽然译者祝庆英对本作的结局不甚满意，但我个人而言，无论作者夏洛蒂选择何种处理，我都觉得无可厚非。</p> 
<p>《简·爱》是我近来所读之佳作，全书充满了勇气与抗争，考虑到这是 1847 年大英帝国维多利亚时代由女作家出版的作品，称其超越时代应是恰如其分的。好了，接下来是对小说人物与情节的讨论，尚未读过本作的朋友们，建议读完再看。</p> 
<p></p>
<center>
 <em>以下内容涉及关键情节透露</em>
</center>
<p></p> 
<p>我特别喜欢《简·爱》这个译名，不仅“简·爱”与英文原名 Jane Eyre 发音相近，而且“爱”字既是主角之姓氏，也暗示了本作是关于“爱人”与“自爱”的作品。这个译名似乎最早出自于 1935 年李霁野的译本《简·爱自传》。虽然不是第一个翻译《简·爱》的，但使用这个称呼的是头一回。第一个译本是 1927 年伍光建节选翻译的《孤女飘零记》。很感谢这些前辈们开的好头，不然放在今天我实在担心这部作品会被叫做“珍·埃尔”之类的，那就太糟糕了。</p> 
<p>《简·爱》这部小说写的是简·爱这位女孩从童年到成人到结婚的故事，时间跨度很长但是作者编排巧妙，节奏非常好。从简·爱的成长来看可分为四个阶段：童年寄养时期，劳渥德（Lowood）女子教会学校寄宿时期，桑菲尔德（Thornfield）家庭教师时期，以及最后的惠特克劳斯小镇（Whitcross）与三兄妹生活时期。</p> 
<p>简·爱的遭遇与作者夏洛蒂·勃朗特（Charlotte Brontë）的人生经历息息相关，小说中诸多情节都有夏洛蒂本人经历的影子，所以我们先来简单介绍一个作者。如前文所述，《简·爱》发表于 1847 年，这个年代女作家出版小说并不受待见，所以夏洛蒂出版本作时使用的是柯勒·贝尔（Currer Bell）这样一个男性化的名字。本作出版以后在英国轰动一时，因为小说采用的是第一人称叙事，文笔优雅细腻，女性心思表露无遗，所以当时许多评论家都在讨论作者到底是男性还是女性。这在今日看来当然有点莫名其妙，但在 1847 年却是平常不过。要知道 1840 年还是第一次鸦片战争爆发之时，那会女性解放之议题远未如今日这般普及。</p> 
<p>后来夏洛蒂终于以真名示人，享誉一时，也算在写作领域颇为成功。夏洛蒂出生于一个家境清寒的家庭，父亲是牧师。夏洛蒂八岁母亲时因病去世，留下五个女儿一个儿子。后来父亲把女孩们送去一所女子教会学校，该校环境十分艰苦。夏洛蒂在孩子中排行第三，两个姐姐在次年离开学校之后均因肺结核死去。这一段经历在《简·爱》中以劳渥德女子教会学校的形式展现，简·爱在学校遇到的孤僻女孩海伦也因肺结核死去。那一夜简·爱偷偷爬上海伦的小床，亲吻她的额头，抱着她入梦。后来，简·爱睡着了，海伦死了。</p> 
<p>我记得读到此处我的内心大受震撼。简·爱童年寄养在舅母家时备受欺侮，但是她勇敢的反抗在第一章就赢得读者的喜爱。好不容易离开舅母家庭来到教会学校，似乎又是从一个火炕跳进另一个火坑。幸得遇到善解人意的教师谭波尔小姐还有不容易靠近却又充满智慧的女孩海伦。海伦是一个非常特别的角色，她年纪很小，却跟着谭波尔小姐学习各国语言，善读各类历史与哲学著作，对神学也颇有研究，俨然一个小小哲学家的感觉。海伦在学校也被他人排挤，与简·爱可谓惺惺相惜。当简·爱被“黑柱子”校长罚站的时候，是海伦伸出援手，告诉简·爱没人会看不起你。单论人物而言，我最爱海伦。可惜海伦染上肺结核，这在当时是不治之症，谭波尔小姐也早知海伦时日无多，是以每次见她眼中都充满怜爱。</p> 
<p>夏洛蒂写学校的生活与海伦死去这一段想必是映照了自己在女子教会的那段日子，以黑暗时代称之亦不为过。后来夏洛蒂与两个妹妹均以家庭教师为业，辗转多年。三姐妹都酷爱写作，曾经在自己家里“发行”自己的刊物。在《简·爱》发表以前，三姐妹就曾自行写过一些作品。1847 年，妹妹艾米莉·勃朗特（Emily Brontë）出版《咆哮山庄》（Wuthering Heights），安妮·勃朗特（Anne Brontë）出版《荒野庄园的房客》（The Tenant of Wildfell Hall），这两部作品与《简·爱》几乎同时问世，轰动一时，三人并称为“勃朗特三姐妹”。</p> 
<p>她们还有一位兄弟勃兰威尔·勃朗特（Branwell Brontë）也是青年才俊，我想《简·爱》的最后一个阶段，简·爱和圣约翰三兄妹住在一起的那段快乐时光，可能也有夏洛蒂与兄弟姐妹在一起生活时的影子。可惜天妒英才，四人均英年早逝。夏洛蒂是活得最久的一个，享年 38 岁。</p> 
<p>《简·爱》从寄养到教会学校的阶段篇幅并不长，但简·爱的成长离不开童年的这些经历，这些人物与故事对她的性格塑造有极大的影响。海伦死后再过数年，教会学校的“黑柱子”主理人被人揭发，于是学校的环境变好了，简·爱度过了平静的时光，还成了学校的教师。在小说中，这十年时间被一句话带过，有点像现在电影的一幕“10 years later”。后来谭波尔小姐结婚后也离开了学校，于是简·爱也失去了继续留下来的理由，开始了她人生的第二次迁徙。</p> 
<p>她登报求职，获得一个家庭教师的工作机会。于是再次孤身上路，来到桑菲尔德庄园。她教育的对象阿黛勒是一个讲法语的可爱的小女孩，庄园的主人罗切斯特先生的私生女，虽然他并不愿意正面承认。简·爱并不是一个漂亮的角色，夏洛蒂在写作时也跟她的妹妹们说她想要创作一个并不好看，但是受人喜欢的角色。根据文字记载，似乎夏洛蒂本人也并不是特别好看的女子，但是显然夏洛蒂高超的创作水平足以迷倒众生。</p> 
<p>简·爱在小时候并未过多注意自己的容貌，直到十八岁时才开始自怜自叹，这非常正常。简·爱并不自卑，她知道自己长得矮又不好看，但是她依然爱她自己，也因着这份自爱，简·爱收获了读者们的喜爱，也收获了庄园主人，高傲的罗切斯特先生的喜爱。在桑菲尔德期间发生的事情，是小说的主体部分。</p> 
<p>夏洛蒂在这一段安排了整部小说最精彩的内容，从一开始简·爱初到庄园时，就以诡异可怖的女子笑声埋下伏笔。此后与罗切斯特先生的感情由浅到深，双方互相试探，读来可谓令人心潮澎湃。不过我在阅读这一段的过程，总有一种在看舞台剧的角色念台词的感觉，想来是因为作品的年代所限。</p> 
<p>诡异笑声的悬念线在经过放火、伤人之后吊足了读者胃口，但是作者迟迟不愿揭露真相，卯足了劲要在最后时刻一鼓作气，千里泄洪。而两位主角的情感纠缠过程也并不乏味，中间插入了圣诞期间罗切斯特先生邀请多位贵族男女到家里玩乐的情节。出身贫寒的简·爱被要求加入晚饭后的谈话，面对漂亮富有、刻薄高傲的女人们，简·爱要如何脱困呢？这场晚宴后的谈话十分精彩，你来我往之间尽显刀光剑影。后来罗切斯特的乔装出场也是怪异之极，令人莞尔。</p> 
<p>终于简·爱与罗切斯特从互相试探走向表明心迹，虽然此时的罗切斯特依然傲慢，算不上理想伴侣，但是读者朋友可以为一生孤苦的简·爱终于找到她所爱之人而感到欣慰了。结果在婚礼上一个回马枪，打回原形。这一段转折无疑是精彩的，疯女人的悬念埋了整整一个桑菲尔德时光啊，中间起伏跌宕，既有放火又有伤人，婚礼前甚至还闯入简·爱的卧室撕毁面纱，终于在关键时刻喷薄而出，罗切斯特果然不是个好人！</p> 
<p>可简·爱却居然说：“读者朋友啊！我当下就原谅了他！”读到这里我是不可接受的，为什么啊？接下来简·爱毅然离开桑菲尔德，走向人生的下一个阶段。</p> 
<p>简·爱离开时本就没带多少东西，又因为行囊落在马车上现在更是身无分文。作者在这一段安排了简·爱三天的痛苦折磨，没有食物，没有住所，更找不到工作，只能流浪街头。最后她抱着一丝希望去寻找当地牧师的帮助，倒在牧师家门前。因而认识牧师圣约翰·里弗斯（St. John Rivers）与他的两个妹妹。这一段简·爱算是过上了平凡又幸福的生活，和三兄妹住在一起，同时自己又重操旧业，在小镇的公益学校教镇上的农村姑娘们读书。到此为止都还算合情合理，但是接下来就该给本作选择一个结局了。</p> 
<p>我阅读的祝庆英译版，译者在序中颇为不喜欢这个结局，我以为然，但同时也觉得作者兴许是无可奈何。首先圣约翰这个角色本身就非常机械，他几乎是一个为基督教献身的冷酷无情的机器人。面对可爱的奥利佛（Oliver）小姐的追求，他内心是感动的，却始终表现得无动于衷。因为爱情并不是他想要追求的东西，他一心要把自己奉献给上帝，他要去印度传教（当时印度还是大英帝国的殖民地）。于是后期他开始“突然地”向简·爱求爱，要简·爱嫁给他。当时读到这里我都觉得莫名其妙，这都什么跟什么。简·爱一开始还能坚持自己不会嫁给自己不爱的人，如果想要简·爱一起去她可以去，但只是兄妹，不是夫妻。而这个“机器人”居然说为了奉献给上帝必须要以夫妻名义出行，兄妹或者助手是不合适的，并且更莫名其妙的是，简·爱慢慢地居然被他说服了。噢我的上帝！</p> 
<p>就在我感觉快要绝望，简·爱居然真的要跟这个机器人结婚去印度的时候，作者来了个超自然唤醒，简·爱听到了罗切斯特先生的呼唤，然后毅然决然地拒绝了圣约翰。这期间还有一件转折，就是简·爱的叔父多年前就希望把她接过去，但是舅母隐瞒了这件事情，甚至藏起了叔父给她的一封信，直到舅母将死之际才拿给简·爱。这个叔父是一个富有的商人，后来他终于打听到了简·爱的下落，在死时立下遗嘱把遗产交给简·爱。而这个圣约翰三兄妹的母亲的兄弟，恰恰好就是简·爱的叔父，于是通过圣约翰的转达，简·爱突然就变成富有的人了。简·爱坚持遗产平分给三兄妹，然后她在拒绝了圣约翰的求婚之后，回到桑菲尔德去寻找罗切斯特。此时的桑菲尔德早已物是人非，一场大火把庄园烧毁了，罗切斯特先生也在火灾中受伤，双目失明，回到另一座荒凉偏僻的庄园生活。简·爱找到了这座庄园，找到了罗切斯特。现在他们地位调换过来了，简·爱成了富有的简爱，罗切斯特先生成了失意又失明的罗切斯特。但是简·爱还是跟罗切斯特结了婚，过上了幸福的生活。后来罗切斯特先生也奇迹般地治好了眼睛，可算是一个大团圆结局。</p> 
<p>这个结尾有几个不尽如人意的地方，首先是简·爱的逆来顺受。虽然从小如此，一定要到忍无可忍时才会爆发反抗，但是面对圣约翰极其无理的要求，从情理上讲我希望简·爱能够反抗到底，而不是通过罗切斯特的超自然呼唤才悬崖勒马，这一段我不太能接受。</p> 
<p>另外是简·爱收获的这笔意外财富。小说前面的部分虽然多有巧合之处，但在作者的安排下皆有合情合理之原因。但是叔父与圣约翰的关系如此凑巧，则显得有些刻意。而且以简·爱那天不怕地不怕的勇敢的小女孩形象，似乎不需要这笔意外之财也能很好地把握自己的人生。我想也许作者在本作中代入了自己美好的希望也不一定。</p> 
<p>近来我读倪匡写的《我看金庸小说》，里面提到《神雕侠侣》中小龙女在十六年后的出现是个败笔，但是倪匡也提及作为读者依然是希望看到小龙女和杨过能够重逢。套用到《简·爱》这部作品亦然。虽然我觉得这个结尾如果作悲剧处理可能更加感人，但是我同时也希望简·爱能够获得幸福，能够在经历这么多苦难之后，依然勇敢而开心地开启下一段未知的旅程。</p> 
<p>简·爱是勇敢的，小说是理想化的。并不是所有的勇敢的人都能拥有幸福的结局，但是所有勇敢的人，都是能把握自己人生的人。</p> 
<p>2021.08.25/晨<br /> 于自居</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️⭐️(5/5)</li> 
 <li>标题: 简·爱</li> 
 <li>原作名: Jane Eyre</li> 
 <li>译者: 祝庆英</li> 
 <li>作者: Charlotte Brontë</li> 
 <li>出版社: 上海译文出版社</li> 
 <li>出版年: ‎2010年8月</li> 
 <li>ASIN: B0099MSKX4</li> 
 <li>版本: Kindle版</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #171 Robert de Board  - &#x300A;&#x86E4;&#x87C6;&#x5148;&#x751F;&#x53BB;&#x770B;&#x5FC3;&#x7406;&#x533B;&#x751F;&#x300B;</title>
        <link>https://justinyan.eth.limo/9A29236C-FFB7-4174-AD1B-35F7FF06A8DF/</link>
        <guid>https://justinyan.eth.limo/9A29236C-FFB7-4174-AD1B-35F7FF06A8DF/</guid>
        <pubDate>Mon, 16 Aug 2021 23:23:42 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/fyfd-018.jpg" alt="枫影夜读 #18 蛤蟆先生去看心理医生" /></p> 
<p>1908年英国，有一个叫做 Kenneth Grahame 的人刚从英格兰银行退休，搬家到河边整日无所事事。有天他想到可以把以前给儿子讲的睡前故事以动物角色的形象写成一本儿童读物，于是《柳林风声》（The Wind in the Willows）就这样出版了。这本书一经出版就大受好评，书中塑造的“蛤蟆先生”（Mr. Toad）形象似乎在西方世界颇具人气。迪士尼在1949年还制作过蛤蟆先生的动画电影《伊老师与小蟾蜍大历险》（The Adventures of Ichabod and Mr. Toad）。如果放在今天的网络流行文化里，迪斯尼此举要被称为“二创”（二次创作）或者“同人”了。</p> 
<p>今天我要介绍的这本书也是根据《柳林风声》的“同人二创”，它是英国的 Robert de Board 于 1983 年出版的心理学作品《蛤蟆先生去看心理医生》（Counselling for Toads: A Psychological Adventure）。</p> 
<p>书中所有角色均来自《柳林风声》，主要讲述陷入抑郁的蛤蟆先生，在朋友河鼠与鼹鼠的鼓励下——或者说要求下——去见心理咨询师苍鹭，在经过一系列谈话治疗后重获新生的过程。整个过程对蛤蟆先生来说是一次对自我的探索，是理解自己，走向新生的冒险，所以原书名用了“一次精神冒险”（A Psychological Adventure）这样的副标题，非常贴切。</p> 
<p>这本书面向全年龄读者，一出版就广受好评，被译作多国语言畅销全球，是一本浅显易读的心理学科普作品。我所阅读的是天津人民出版社出版，陈赢翻译的版本，原作 Routledge 出版的 Kindle 版我也买了作浏览对比。英文版用词非常简单好读，门槛不高，所以这本书的中文翻译也没什么好说的，应该哪个译本都不会有问题。</p> 
<p>这本书的思路比较符合弗洛伊德式的精神分析，苍鹭在与蛤蟆先生对谈的过程中，不断引导他从童年和原生家庭中寻找重要事件，分析当时的情感体验，帮助蛤蟆先生建立基本的心理学认知，从而理解自己当下的困惑和抑郁的来源。人一旦能分析和理解自己的情绪就不会一直让阴郁笼罩自己。因为我刚读完阿德勒心理学科普的《被讨厌的勇气》，他的学说与弗洛伊德是一百八十度地相反，所以再读本书对我来说就是一次 U 形掉头，过程还是蛮有趣的。</p> 
<p>虽然本书是面向全年龄的，小孩子也能读，但其实作者讲得比较深刻和专业。比如蛤蟆先生因为朋友们极力要求他去见心理咨询师，所以他就去了。见到苍鹭医生的时候他先是等着苍鹭开口（因为他习惯了别人对他一通说教的对话），在看到苍鹭不讲话的情况下又询问苍鹭医生我应该怎么办？怎么治好我的抑郁？</p> 
<p>苍鹭没有立刻回答他的问题，因为心理咨询师并不是“给予来访者答案”的老师，而是需要引导来访者自己发现问题，最终自己解决问题。所以苍鹭问他：“你为什么要来见我呢？”蛤蟆说是朋友们要他来的。</p> 
<blockquote>
 <p> “那么谁是我的来访者呢？是你还是你的朋友们呢？”（So who is my client, you or them?） </p>
</blockquote> 
<p>蛤蟆先生的朋友们让他来见心理咨询师，这样他的朋友们就可以在对蛤蟆先生的担忧中松一口气，所以苍鹭说我觉得我真正的来访者不是你，而是你的朋友们。</p> 
<p>心理咨询是需要双方自愿参与的，如果蛤蟆先生想要解决自己的问题，那就需要他发自内心地接受心理咨询，与咨询师共同合作，咨询才会有效果。我在听《Steve说》播客的时候，主播史秀雄提过这个例子，当时我就觉得这本书挺棒的，于是才买了本作。</p> 
<p>后来随着心理咨询的展开，蛤蟆先生终于了解到可能是自己给自己的人生设定了一个悲伤的剧本，为了让这个“悲剧”能够应验，为了让自己的“人生预言”能够被实现，他自己创造了许多条件来促成这场人生悲剧。因为人无法在没有目标，没有方向的状态下活着，这样的状态会让灵魂迷失、痛苦，哪怕只是存在于潜意识里，人也会感到扭曲，感到矛盾。所以人必须有方向，哪怕是一个悲剧的剧本，也好过没有剧本。读到这里我想起我们在学校时被设定的目标：考试要有一个好的分数，要上一个好的学校；然后到了工作阶段，又被设定要赚好多的钱，要升职，要买大房子。这些不也是人生剧本吗？</p> 
<p>人不可能孤立地活着，所以社会化的定义就是环境给我们强加的剧本，但是根据这样的剧本活着是有多累啊。阿德勒的学说里把这种追求目标的活着比喻为登山，今天好不容易登上了一个山顶，后面还有很多很多山顶。但是人生不是登上山顶那一刻，人生是整个登山的过程。如果一个人只关注考试分数，录取通知书，薪酬职位，房子车子，那么当这些东西没有实现的时候，他是痛苦的，当这些东西实现了的时候，他又是痛苦的。</p> 
<p>在《蛤蟆先生去看心理医生》这本书中，也得出了类似阿德勒心理学的结论。作者在书中画了个人生坐标，分为四个象限：</p> 
<ol> 
 <li>你不好，我好</li> 
 <li>我不好，你好</li> 
 <li>你好，我不好</li> 
 <li>我好，你好</li> 
</ol> 
<p>然后对这四种情况逐一分析。最后蛤蟆先生选择了“我好，你也好”。这是非常需要勇气的选择，因为选择了“我好，你也好”的人生，不再是一种封闭的状态，而是一种开放的，持续的过程。</p> 
<p>我并非心理学专业人士，近两年读的书却让我有一种殊途同归的感觉。各家思想百花齐放，但始终人类都要解开内心的束缚，拾起自己应负的责任，走向开放自由。当然造成今天这一切负面情绪的，说是人类社会作茧自缚也不为过。但是我们降生何处是我们无法控制的，我们的人生如何选择却是我们的可以控制的。</p> 
<p>控制我们能控制的，不要试图控制我们无法控制的。陈海贤老师在《了不起的我》一书中也这么说过。</p> 
<p>21.08.15/中午<br /> 于自居</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 蛤蟆先生去看心理医生</li> 
 <li>原作名: Counselling for Toads: A Psychological Adventure</li> 
 <li>译者: 陈赢</li> 
 <li>作者: Robert de Board</li> 
 <li>出版社: 天津人民出版社</li> 
 <li>出版年: ‎2020年8月1日</li> 
 <li>ASIN: B08RN3BBTS</li> 
 <li>版本: Kindle版</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4625">枫影夜读 #17 - 岸见一郎、古贺史健《被讨厌的勇气》</a></li> 
 <li><a href="https://justinyan.me/post/4237">枫影夜读 #2 —— 陈海贤《了不起的我》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 44 1Password 8 &#x4F7F;&#x7528; Electron &#x91CD;&#x5199;&#xFF0C;&#x793E;&#x533A;&#x70B8;&#x4E86;</title>
        <link>https://justinyan.eth.limo/778838C1-A64D-447B-B2A6-EC3046EB297A/</link>
        <guid>https://justinyan.eth.limo/778838C1-A64D-447B-B2A6-EC3046EB297A/</guid>
        <pubDate>Mon, 16 Aug 2021 01:19:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/Podcast-Cover-v44.png" alt="Vol. 44 1Password 8 使用 Electron 重写，社区炸了" /></p> 
<p>8月11日，<a href="https://blog.1password.com/1password-8-for-mac-is-now-in-early-access/">1Password 8 发布 Early Access 版本</a>，作为苹果平台上最流行的密码管理器应用，这是 1Password 沉寂多年后更新的第一个大版本，用户自然期待很高。结果 Early Access 一经释出，1Password 的用户社区就炸了！</p> 
<p>“这都是什么玩意儿啊！”“拿到融资就做出来这么个体验降级的东西吗？”</p> 
<p>几乎一边倒的负面舆论一时充斥网络。结果第二天技术VP Michael就跑出来<a href="https://blog.1password.com/1password-8-the-story-so-far/">发了一篇长文</a>解释为什么 1Password 团队要做出使用 Electron 重写 Mac 版的决定，但是用户似乎并不买账。</p> 
<p>所以 Electron 到底有什么问题呢？1Password 为什么要用 Electron 来重写呢？</p> 
<p>本期我们有幸请到了前石墨文档技术总监、《Redis 入门指南》的作者李子骅做客节目，子骅目前在 <a href="https://slab.com/">Slab.com</a> 工作，同时也与<a href="https://twitter.com/Blankwonder">刘亚晨</a>合作开发了 <a href="https://elpass.app/">Elpass</a> 这款密码管理器，一起听听看他的看法吧。</p> 
<p>欢迎听众朋友们在评论区留言，加入我们的讨论吧~</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:34 回顾 1Password 8 的发展</li> 
 <li>06:19 那些常用的 Electron App</li> 
 <li>10:33 为什么 1Password 转用 Electron 会被吐槽？</li> 
 <li>14:42 选择 Electron 有哪些原因?</li> 
 <li>24:40 你还会继续订阅 1Password 吗？</li> 
 <li>30:40 前端开发者 vs 原生开发者</li> 
 <li>32:37 1Password 的竞争对手们</li> 
 <li>38:45 跨平台方案有哪些好的选择？</li> 
 <li>53:26 片尾曲：「白日」- King Gnu</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>嘉宾: <a href="https://twitter.com/luinlee">子骅 luin</a> | <a href="https://weibo.com/u/1692762313">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/ony539T074w" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;King Gnu「白日」</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>1Password 8 &#x4E0E; Electron</title>
        <link>https://justinyan.eth.limo/43499074-019E-4CB1-9E41-96CA4BA57AD0/</link>
        <guid>https://justinyan.eth.limo/43499074-019E-4CB1-9E41-96CA4BA57AD0/</guid>
        <pubDate>Thu, 12 Aug 2021 16:09:41 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/1password8.png" alt="1Password 8 与 Electron" /></p> 
<p><em>后续: 因为这次更新社区争议太大，1Password 的技术 VP 在次日就发布了<a href="https://blog.1password.com/1password-8-the-story-so-far/">一篇长文</a>解释团队的技术选型过程。我们也邀请了 <a href="https://twitter.com/luinlee">@子骅 luin</a> 做客<a href="https://fyfy.fm/episode/44">枫言枫语播客</a>，一起聊聊 1Password 8 选择 Electron 这件事。</em></p> 
<p>昨天（20201-08-11）1Password 官方发布新闻<a href="https://blog.1password.com/1password-8-for-mac-is-now-in-early-access/">《1Password 8 for Mac is now in Early Access! 🎉》</a>引起了大家的讨论。1Password 是目前最受欢迎的密码管理器之一，我自己也是 1Password 多年的老用户，大家关注的主要是 1Password 8 使用 Electron 重写了。这点十分令人惊讶。</p> 
<p>像 <a href="https://twitter.com/parrots/status/1425466671762972672?s=20">Curtis Herbert 的这串推文</a>所说，大家担心换成 Electron 之后用户体验变差了。</p> 
<p><a href="https://www.electronjs.org/">Electron</a> 是基于 Node.js 和 Chromium 项目整合的一个跨平台 GUI 开发框架，应用层使用的是 Web 技术栈，HTML + CSS + JS。最早是 GitHub 官方开发 <a href="https://github.com/atom/atom">Atom 编辑器</a>时开发的 Atom Shell，2015 年<a href="https://www.electronjs.org/blog/electron">改名</a>为 Electron。</p> 
<p>跨平台开发从来就不是一件容易的事情，无论是桌面端的 macOS/Windows/Linux，还是移动端的 iOS/Android，从底层逻辑代码到 UI 渲染，每个平台都有各自的编程语言和设计规范。但喜欢折腾的程序员们似乎乐此不疲。近些年除了 Electron，还有 React Native，Flutter 等各种各样的跨平台开发技术，更古老的还有 Java 的跨平台 App，曾经的微软 Silverlight，Adobe Air 等等数不胜数。</p> 
<p>这么多年下来大家基本上有一个共识：<strong>想要获得最佳用户体验，最好的做法是使用该平台的原生开发技术栈</strong>。这也是为什么大家反对 1Password 8 采用 Electron 技术，除了让 1Password 这家公司节省开发人力之外（这点亦存疑），用户感受不到 Electron 带来的好处，甚至会导致这个 App 的体验变差。</p> 
<p>Electron 的逻辑层采用 Node.js 运行，效率很高，NPM 的生态也让程序员们有丰富多样的库可供使用，开发起来很方便。渲染层采用 Web 技术，Chromium 的渲染效率也很高，HTML+CSS也非常成熟，可以做出自由度很高的 UI。大部分跨平台的逻辑 Electron 在底层已经解决了，理想情况下只需要一套业务代码就可以运行在 macOS/Windows/Linux 上。</p> 
<p>但是，需要连接平台特定接口的部分就不行了。比如 macOS 版本的 1Password 有一个 mini window，这个东西出现 macOS 的全局菜单上，是 macOS 的专属 feature。所以 1Password 的程序员势必要为 macOS 专门写一些平台专属代码。如果这个项目足够复杂，平台之间的差异足够大，那“一套代码通吃”就没有那么大的优势了。而且因为 Electron 的特殊性，公司招人的时候就要求程序员既要熟悉 Electron，JS 技术栈，又要熟悉平台相关技术栈，反而更难招人。2018年 Airbnb 宣布使用放弃 React Native 技术时写的<a href="https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a">这篇文章</a>就提到招人的难处。</p> 
<p>当然 Electron 并不是一无是处，它有它适用的场景。我们常用的网络调试工具 <a href="https://www.postman.com/">Postman</a>就是一个非常适合 Electron 的 App。这样的调试工具并不需要非常高的用户体验，“能用就行”是他的及格线甚至 80 分。而且早期的 Postman 还是基于 Chrome Extension 编写的 Web App，它转型使用 Electron 打包要容易得多。</p> 
<p>另一个极端的例子是 VS Code，这个可能是世界上最好的开发者编辑器之一的 App，由微软顶级的 IDE 开发团队维护。这个项目本身就基于 Electron 来做，而且团队成员在开发过程中也反向给 Electron 项目输出了很多性能优化和特性开发。说 VS Code 是目前世界上最好的 Electron App 应该没有什么异议，而且这个项目也确实成为了跨平台应用的典范。凭借它的架构优势，VS Code拥有极高的可扩展性，所以插件市场也非常丰富，是当之无愧的神之编辑器。</p> 
<p>当然如果你用 VS Code 来编写大型项目的时候，它启动也会卡。不过，说到启动卡的话，无论苹果的 Xcode，还是微软的 Visual Studio，还是 Google 的 Android Studio，只要是个大工程好像没有不卡的。所以这点大家算扯平了吧。</p> 
<p>Electron App还有一个缺点是，即使你只写一个 Hello World 它也十分臃肿，因为打包进了一个 Chromium 渲染内核，加上一个完整的 Node.js，想不臃肿都难。</p> 
<p>无论如何，这次 1Password 8 的重写，大家其实最担心的是用户体验问题。我觉得 Electron 有他适用的场景，如果产品的核心体验不受影响，用户可能并不介意 App 采用何种技术，何种表现形式。比如 <a href="https://www.notion.so/desktop">Notion</a> 的桌面端应用。Notion的使用体验谈不上最佳，因为每次点开一个 Page 都需要经历像打开网页一样的 Loading 过程，即便这个过程只是“一闪而过”，也依然不如拥有本地数据，原生渲染的 App 来得流畅。但这并不影响 Notion 的核心体验，它的扩展性，它的跨平台，它的 Block based editor，才是 Notion 最大的优势。</p> 
<p>我平时在使用 1Password 7 时，主要是网页端自动填入密码，这个功能使用 Chrome/Safari Extension 已经可以很好地完成。至于快捷键呼出主 App 进行数据查询，理论上 Electron 应该也可以胜任。我下载了 1Password 8 Beta 版本简单尝试了搜索、新增密码等功能，和原生体验比是差一点，但是本身这些功能即使体验打折也不影响它的核心功能：保存密码。所以我短期的试用觉得 1Password 这样的 App 使用 Electron 是可用的，希望长期不要给我带来困扰。</p> 
<p>我不知道 1Password 改用 Electron 的动机是什么，官方 Blog 上面各种“Next Gen”标题但我体验下来除了 UI 改了而且也没有变得多好看之外，似乎并未带来用户可感知的提升。文章也没有提及 Electron 的事情。但是在密码管理器 App 如雨后春笋，各大操作系统和浏览器也争相改进自己的密码管理的情况下，1Password 这一招可能不是明智之举。他没有把精力放在用户能感受到提升的功能上，而是做了一个这样的“大版本”，这对他在未来的密码管理器竞争中恐怕不是什么好事。</p> 
<p>P.S. Figma App 可能是另一个用户体验做到极致的 Electron App，但是它的性能更多来自于 <a href="https://webassembly.org/">Webassembly</a> 加成。换句话说，无论 VS Code 还是 Figma，想要利用 Electron 做出用户体验极佳的 App 需要付出的努力并不小。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 43 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;04: &#x82F9;&#x679C;&#x786E;&#x8BA4;&#x5C06;&#x626B;&#x63CF;&#x624B;&#x673A;&#x4E0A;&#x7684;&#x7167;&#x7247;</title>
        <link>https://justinyan.eth.limo/5F382EBB-1327-4AF6-88C6-AB64D484D2DD/</link>
        <guid>https://justinyan.eth.limo/5F382EBB-1327-4AF6-88C6-AB64D484D2DD/</guid>
        <pubDate>Tue, 10 Aug 2021 10:58:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/Podcast-Cover-v43.png" alt="Vol. 43 科技快乐星球04: 苹果确认将扫描手机上的照片" /></p> 
<p>爷青回！</p> 
<p>近期苹果<a href="https://www.apple.com/child-safety/">官方声明</a>将在手机本地扫描 CSAM 内容，掀起了轩然大波。许多颇具影响力的大V都跑出来发声谴责苹果，甚至有些人要放弃使用iPhone，转安卓阵营。有意思的是，这次苹果说是“为了大家好”所以扫描你的手机，但是<a href="https://www.apple.com/customer-letter/">2016年Tim Cook发给苹果用户的一封信里</a>却义正言辞地回绝了 FBI “为了大家好”的请求，非常地有意思。这件事情争议很大，正反两面都有人站队，非常欢迎大家在评论区参与讨论。</p> 
<p>除了苹果这件事情以外，我们还准备了满满一期的快乐星球，欢迎大家在评论区留言一起讨论。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:32 iOS 15 将会扫描 iCloud 里的违规照片</li> 
 <li>14:54 微软正式发布 Windows 365，开启云PC时代</li> 
 <li>17:01 字节投资 Manner 咖啡，便利蜂入局精品咖啡</li> 
 <li>21:11 iOS 15 "查找"支持关机追踪</li> 
 <li>23:08 「一周工作四天」实验在冰岛成效喜人</li> 
 <li>29:01 刘慈欣加入商汤科技，担任科幻星球研究中心主任</li> 
 <li>30:45 任天堂发布 Switch OLED Model</li> 
 <li>31:47 资本爱上智能健身镜</li> 
 <li>35:16 片尾：Heres To The Crazy Ones - Steve Jobs</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/-z4NS2zdrZc" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Apple Steve Jobs Heres To The Crazy Ones</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #170 &#x5CB8;&#x89C1;&#x4E00;&#x90CE;&#x3001;&#x53E4;&#x8D3A;&#x53F2;&#x5065; - &#x300A;&#x88AB;&#x8BA8;&#x538C;&#x7684;&#x52C7;&#x6C14;&#x300B;</title>
        <link>https://justinyan.eth.limo/586D85B2-191D-4EC3-BA45-D16A3C9E4F21/</link>
        <guid>https://justinyan.eth.limo/586D85B2-191D-4EC3-BA45-D16A3C9E4F21/</guid>
        <pubDate>Mon, 09 Aug 2021 12:11:01 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/fyyd-017.jpg" alt="枫影夜读 #17 - 岸见一郎、古贺史健《被讨厌的勇气》" /></p> 
<p>现代生活中心理学的重要性已无需多言，就连我这样的门外汉，不管对自己还是对他人的观察中都能体会到。应该说现代人对健全积极的心理状态的追求变得越来越明显了。</p> 
<p>近些年来我在《Steve说》播客学到的尤其多，曾经学着主播史秀雄提过的“写下自己的个人成长史”（参考<a href="https://www.zhihu.com/question/21769032/answer/33100227">知乎的回答</a>），以文字的方式回顾和思考了我的过去。这种分析方法是有趣的，今天的我之所以如此这般地活着，是因为过去尤其儿时的我在遇到一些重要事件中给我带来的影响。</p> 
<p>我在阅读郑也夫的<a href="https://justinyan.me/post/3421">《后物欲时代的来临》</a>中关于人生意义的章节，Jordan Peterson的<a href="https://justinyan.me/post/4196">《人生十二法则》</a>（12 Rules for Life）中关于人生是行走在太极阴阳曲线的比喻，Kieran Setiya的<a href="https://justinyan.me/post/4369">《重来也不会好过现在》</a>（Midlife: A Philosophical Guide）中关注“存在主义价值”而非“缓和性价值”的观点，陈海贤的<a href="https://justinyan.me/post/4237">《了不起的我》</a>中关于心理免疫的X光与情感大象、理智骑象人等方法时，总有一种这些方法万变不离其宗的感觉。虽然各有差异，各有所长，问题各不相同，解决方式甚至也有些相左，但我从中体会的，对于如何展开自我分析，对于心灵与身体分离的思考都比较符合我对弗洛伊德的精神分析学说的浅薄印象。虽然我并未读过弗洛伊德本人的著述。</p> 
<p>这种分析方式对于了解自我是十分有效的，但是对于思考未来这个课题来说却是危险的。尤其是当你的人生陷入瓶颈不知道该去向何方的时候。仿佛在一片广袤又幽暗的平原上奔跑，看不清方向，不知道该往哪去，又不得不走入黑暗的柔波。相信诸位读者都曾有过类似的体验。这时如果还去分析儿时的回忆，试图从中找到未来的出路，就很容易陷入“决定论”，得出像“宿命”一样无奈的结果，反而变成走出平原的障碍。</p> 
<p>无边无际的平原就像放在宙斯神庙里的戈耳狄俄斯之结（Gordian Knot）一样。这个绳结没有绳头，神谕说“解绳结者得天下”。几百年来尝试者无数，却始终无人能解，直到有一天亚历山大大帝率兵至此。他没有动手解绳结，而是拔出宝剑一挥而断。他说：</p> 
<blockquote>
 <p> 命运不是靠传说决定而是要靠自己的剑开拓出来。我不需要传说的力量而要靠自己的剑去开创命运。 </p>
</blockquote> 
<p>当人生陷入绳结问题时，我们需要另一个看待世界的维度，而跟弗洛伊德、荣格同时代的阿尔弗雷德·阿德勒（Alfred Adler），就提出了一种跟弗洛伊德截然相反的学说。一开始阿德勒和弗洛伊德都是维也纳精神分析学会的核心成员，后来因为跟弗洛伊德的理念不同而决裂，自创“个体心理学”。</p> 
<p>近来我读了日本岸见一郎与古贺史健合著的《被讨厌的勇气》，这本书以“青年”和“哲人”的辩论对话为形式，由浅入深，通俗易懂地阐述了阿德勒心理学。因其反常识的理论使我读来大受冲击，也因此让我收获了一个新的角度来看待自己，看待世界。</p> 
<p>认真来说，《被讨厌的勇气》是经过岸见一郎吸收，由古贺史健的执笔书写的阿德勒学说。我没有读过阿德勒本人写的书，并不知道二者差异有多大，但本书已足够深刻，值得一读。</p> 
<p>前文我提到一个人如果走入无边的黑暗平原时，再试图从自己的过去寻找出路是危险的，因为容易陷入“决定论”，觉得自己有今天是过去所决定的，这种思路考虑的是造成今天这种“结果”的“原因”，书中称为“原因论”。而阿德勒心理学要考虑的不是过去的原因，而是现在的“目的”，称“目的论”。</p> 
<p>书中有个脸红症的例子很有意思。一个女孩来找心理咨询师，说她很怕见人，只要一到人前就会脸红，希望治好她的脸红症。心理咨询师问她如果治好了她想要做什么呢？她回答如果脸红症治好了就可以去跟喜欢的男孩子表白了。</p> 
<p>按照“原因论”的思路我们应该去寻找女孩脸红症的成因，分析她的过去，儿时的遭遇等等。但是阿德勒心理学从“目的”出发，她会脸红的目的，正是因为她不想去跟这个男孩子表白，所以她自己“制造了脸红恐惧症”。她害怕表白了之后被男孩子拒绝，所以只要有脸红恐惧症存在，她就可以用“我之所以不能和他交往都是因为这个脸红恐惧症”这样的想法来进行自我逃避。</p> 
<p>类似的问题在我们日常生活中十分常见，阿德勒心理学这个 180° 相反的角度给出了一个全新的思考方式，我觉得是一个非常好的突破口，让我们得以从另一个维度重新审视自己，然后发现自己百思不得其解的绳结竟然被宝剑轻易地斩断了。</p> 
<p>阿德勒心理学有一套完备的理论，“脸红症”的例子只是其中之一，但我们从中可以看出这个分析过程是非常残忍的。能达成类似效果的分析方式在<a href="https://justinyan.me/post/4237">陈海贤的《了不起的我》</a>一书中也有提及，名为“心理免疫的X光片”，我之前的文章也介绍过。相比之下陈海贤提到的方法要柔和得多。不过有时候，人也许得下猛药才能有效治疗也不一定。</p> 
<p>《讨厌的勇气》以青年与哲人之间的相互辩论组成，全书都是对话，两位作者也在后记中提到这是有意想模仿《柏拉图对话录》的形式。我读下来感觉”青年“所述之苦恼、焦虑，是比较符合现代人日常所见的，而“哲人”轻描淡写又逻辑缜密的回答总让人拍案叫绝。实际上在阅读过程中，我常常有“哲人你的理论在走钢丝啊”的感觉，常常觉得他的想法很危险，轻易就不攻自破呀！而往往当我这么想的时候，“青年”就会把我心中的疑惑热血澎湃地表达出来，再被哲人睿智的回答化于无形之中。</p> 
<p>比如关于“人生课题分离”一说，“我”有我的课题，别人有别人的课题，不应该互相干涉。哪怕是自己的父母、夫/妻、儿女亦如是。这样看似乎很不近人情，非常以自我为中心，但书中提出了一个非常棒的比喻。以自我为中心是觉得“我”是“世界”的中心，全世界都应该满足“我”的期待，一旦有些人，有些事情不符合“我”的期待了就要觉得世界是不公的。但其实“我”只是“世界地图”的中心，就好像中国、法国、澳大利亚的世界地图是非常不同的，大家各自把自己的国家放在了世界的中心，南半球的澳大利亚甚至跟北半球的地图是反过来的。人生课题的分离绝对不是要以自我为中心，只是要认识到每个人的世界地图各不相同，并且事实上你也无法替别人解决他的人生课题，你唯一能改变的只有你自己，而唯一能改变你自己的也只有你。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/08/fyfy-017-world-maps.jpg" alt="中国、法国、澳大利亚的世界地图" /></p> 
<p>除了世界地图之外本书还有很多睿智的说法，也因此虽然本书篇幅不长，我却读得很慢。我一般的阅读习惯是读书，划线，少量笔记，读完一遍之后，再回过来根据划线和笔记做一次完整笔记。但这一次我边读边写，读到有启发的地方就把我自己遇到的事情写进去分析一下。虽然费时，但体会更深。这个过程中我也发现《被讨厌的勇气》并不适合所有人，如果存在完全按照书中的阿德勒学说处世之人，我想这样的人恐怕不会是改变世界的乔布斯，也不会是写出《简·爱》的夏洛蒂吧。毕竟这个世界丰富多样，阿德勒的学说不过其中之一而已。</p> 
<p>无论如何，这本书是我今年读到的又一本五星好评的书。诚如书中所云，“可以把马带到水边，但不能强迫其喝水”。《讨厌的勇气》虽然篇幅不长，但理论完备。从接纳自我到他者贡献再到共同体归属感，每个部分读来都有“在悬崖边上行走”的感觉。</p> 
<p>写作本文时我开始觉得困难，本书所包罗之内容不可能以三言两语说清。但是这有什么关系呢？我只要简单地把我自己的感受书写下来就好了。如果有哪位朋友对本书感兴趣，读来对他有帮助那就太令人开心了。如果没有也没关系，分享本书是我的课题，喜不喜欢这本书是其他人的课题。马带到了水边，喝不喝水是它的事情，也许它并不口渴呢？</p> 
<p>2021/08/08 下午<br /> 于自居</p> 
<h2>关于从哪里开始阅读</h2> 
<p>不知道诸位平时会怎么开始读一本书，我自己一般会选择跳过所有的《序》、《推荐》，直接从作者本人的文字开始阅读。这本书我所读的是机械工业出版社 2017 年出版的，渠海霞翻译的版本。因为这个版本前部加入了许多“赞誉”、各种非作者二人写的序，这些内容带有比较强的吸引读者购买的目的性，用处不大。所以如果读者朋友也买的这个版本，我会建议跳过前面这些，读完作者写的文字之后，若有兴趣再回来读这些其他人写的东西。</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️⭐️(5/5)</li> 
 <li>标题: 被讨厌的勇气</li> 
 <li>原作名: 嫌われる勇気</li> 
 <li>译者: 渠海霞</li> 
 <li>作者: 岸见一郎、古贺史健</li> 
 <li>出版社: 机械工业出版社</li> 
 <li>出版年: 2017年5月1日</li> 
 <li>ASIN: B07N67L1RT</li> 
 <li>版本: Kindle版</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4369">枫影夜读 #7 —— Kieran Setiya 《重来也不会好过现在》</a></li> 
 <li><a href="https://justinyan.me/post/4196">枫影夜读 #1: Jordan Peterson《人生十二法则》</a></li> 
 <li><a href="https://justinyan.me/post/4237">枫影夜读 #2 —— 陈海贤《了不起的我》</a></li> 
 <li><a href="https://justinyan.me/post/3421">每周读书 #149 不要成为被消费操控的人——《后物欲时代的来临》</a></li> 
 <li><a href="https://www.zhihu.com/question/21769032/answer/33100227">如何进一步提升自我认知？ - 史秀雄Steve的回答</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #169 &#x963F;&#x5C14;&#x8D1D;&#xB7;&#x52A0;&#x7F2A; - &#x300A;&#x5C40;&#x5916;&#x4EBA;&#x300B;</title>
        <link>https://justinyan.eth.limo/A4716FF3-D3FF-48E3-8791-980F48C6EBDA/</link>
        <guid>https://justinyan.eth.limo/A4716FF3-D3FF-48E3-8791-980F48C6EBDA/</guid>
        <pubDate>Fri, 30 Jul 2021 12:52:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/07/fyyd-016.jpg" alt="枫影夜读 #16 - 阿尔贝·加缪《局外人》" /></p> 
<blockquote>
 <p> Aujourd'hui, Maman est morte. Ou peut-être hier, je ne sais pas.</p> 
 <p> Maman died today. Or yesterday maybe, I don't know.</p> 
 <p> 今天，妈妈死了。也许是昨天，我不知道。 </p>
</blockquote> 
<p>短短两句，以死亡开幕。本应承接悲伤与肃穆情绪的第二句，却转折出平淡冷漠的气息。再读这个著名的开场，依然为之动容。这是法国作家阿尔贝·加缪（Albert Camus, 1913-1960）于1942年出版的小说《局外人》（法: "L'Étranger", 英: "Stranger", 繁: 《異鄉人》）的开场。</p> 
<p>我因为在“Steve说”播客中听到杜素娟老师（华东政法大学文伯书院教授）提及此作，遂开始阅读。小时候读“名著”只感觉累，所以我此番也是抱着试一试的态度，没想到一拿起本书就手不释卷，被这个荒诞又现实，奇妙又赤裸的虚构故事深深吸引，读得津津有味。</p> 
<hr /> 
<p></p>
<center>
 <em>以下内容涉及重要情节透露，建议读完原作再看</em>
</center>
<p></p> 
<hr /> 
<p>小说以法语写成，几个中译本均行文流畅，颇为好读。本作以第一人称视角叙述了男主人公默尔索先生（Meursault）从参加母亲葬礼到杀人被判死刑的短暂又波澜起伏的故事。默尔索先生是一个奇怪的人，但不古怪。古怪好歹有些活跃的色彩，他更像一个心如死灰，麻木冷漠，在城市囚笼中默默行走的旁观者。</p> 
<p>故事开篇他回到养老院后，不愿开棺再见母亲最后一眼，第二天的葬礼，主角毫无波澜而养老院的老人却哭得晕厥过去，种种细节让男主角显得十分无情。可偏偏读者通过作家的笔触读到了主角内心的思考，这些思考既冷酷无情又理所当然：他并不伪善。读者跟随这些思考看到的默尔索，和其他角色看到的默尔索截然不同。</p> 
<p>也许只有默尔索的女朋友玛丽（Marie）是最接近读者视角，能够理解默尔索的人。他们的第一次约会是在默尔索母亲葬礼的第二天。他们看了场喜剧电影，回到默尔索的公寓做爱。当玛丽知道他的母亲昨天刚下葬的时候，她“吓得往后一退，但没有发表什么意见”。</p> 
<p>默尔索为人处世显露着一种“无所谓”的态度。与其说他过着“生活”，毋宁说是他被定义在了所谓“生活”的框架中。</p> 
<p>后来默尔索卷入了朋友莱蒙德（Raymond）的情妇纠纷之中。也是因为这种“无所谓”，他帮莱蒙德写信给这位情妇。这个情妇来了，和莱蒙德发生争吵，被殴打，警察也来了。这件事情导致情妇的阿拉伯人兄弟前来复仇。默尔索与莱蒙德前去度假的时候，在海滩上遭遇阿拉伯人三次，打架，持枪，最终默尔索枪杀了其中一个阿拉伯人，就此展开故事的第二部分。</p> 
<p>入狱之后默尔索在关押期间与律师、预审法官进行预审谈话，在庭审期间检察官、律师、法官的辩论构成了第二部分的主要内容。最终默尔索在被判死刑后，最后一次见神甫（他一直拒绝见神甫）时把全部的力量喷薄而出，并在爆发中结束本作。</p> 
<p>《局外人》是名作，自然有许多人会做“深度解析”。我所写的既不“深度”也不“解析”。我只是在阅读时常有一种莫名的感觉横在心头，像一块大石，不知从哪里来，到哪里去。可能是西西弗斯的巨石，推上去又滚下来，再推上去再滚下来。</p> 
<p>默尔索在书中的所作所为无疑是不符合“常理”和“道德”的，而庭审时人们争论的焦点也是这份“常理”与“道德”。默尔索这个人物其实是一个“普通人”的内心一角的放大版，是一个极端的案例。这种极端与反常，作者在另一部书中称之为“荒诞”。默尔索的这份“荒诞”无疑引发了世人的警醒与反思。作者加缪在1957年被授予诺贝尔文学奖，授奖词是：</p> 
<blockquote>
 <p> “因他的重要文学作品透彻认真地阐明了当代人的良心所面临的问题。”</p> 
 <p> "for his important literary production, which with clear-sighted earnestness illuminates the problems of the human conscience in our times." </p>
</blockquote> 
<p>我喜欢作者描写阿尔及尔街头落日的片段，喜欢以旁观者观察世界的角度，喜欢主角每次内心波动时随之而来的晃眼的阳光，夏日的气息，街头的声音。加缪的写作技巧无疑是高超的。</p> 
<p>比如主角从葬礼到回到阿尔及尔的转场：</p> 
<blockquote>
 <p> “以后的一切都进行得如此迅速、准确、自然，我现在什么也记不得了。除了一件事，那就是在村口，护士代表跟我说了话。她的声音很怪，与她的面孔不协调，那是一种抑扬的、颤抖的声音。她对我说：“走得慢，会中暑；走得太快，又要出汗，到了教堂就会着凉。”她说得对。进退两难，出路是没有的。我还保留着这一天的几个印象，比方说，贝莱兹最后在村口追上我们时的那张面孔。他又激动又难过，大滴的泪水流上面颊。但是，由于皱纹的关系，泪水竟流不动，散而复聚，在那张形容大变的脸上铺了一层水。还有教堂，路旁的村民，墓地坟上红色的天竺葵，贝莱兹的昏厥（真像一个散架的木偶），撒在妈妈棺材上血红色的土，杂在土中的雪白的树根，又是人群，说话声，村子，在一家咖啡馆门前的等待，马达不停的轰鸣声，以及当汽车开进万家灯火的阿尔及尔，我想到我要上床睡它十二个钟头时我所感到的喜悦。” </p>
</blockquote> 
<p>比如男主被判死刑，回到法庭接受宣判时的场景：</p> 
<blockquote>
 <p> “接着，我听见大厅中一个低沉的声音在读着什么。铃又响了，门开了，大厅里一片寂静，静极了，我注意到那个年轻的记者把眼睛转到别处，一种奇异的感觉油然而生。我没有朝玛丽那边看。我没有时间，因为庭长用一种奇怪的方式对我说要以法兰西人民的名义在一个广场上将我斩首示众。我这时才觉得认清了我在所有这些人脸上所看到的感情。我确信那是尊敬。法警对我也温和了。律师把手放在我的腕上。我什么也不想了。庭长问我还有什么话要说。我说：“没有。”他们这才把我带走。” </p>
</blockquote> 
<p>仅凭这些优秀的文字就足以吸引我把它再读一遍。至于默尔索的被动地活着，他的漫无目的的不知道属于谁的人生，我想多数人都会有同感。那么怎么办呢？</p> 
<p>《局外人》没有给出答案。哪怕是最后的默尔索的爆发，也只是向死亡思考，思考重新开始的希望。但只是希望，他没有重新开始，他在希望中结束了。</p> 
<blockquote>
 <p> Life is rough so you gotta be tough. - Johnny Cash </p>
</blockquote> 
<p>2021.07.29/中午<br /> 于夏日的灯下</p> 
<h1>关于本书</h1> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️⭐️(5/5)</li> 
 <li>标题: 局外人</li> 
 <li>原作名: L'Étranger</li> 
 <li>译者: 郭宏安</li> 
 <li>作者: Albert Camus</li> 
 <li>出版社: 译林出版社</li> 
 <li>出版年: 2011年6月</li> 
 <li>ISBN: B005GNOUVG</li> 
 <li>版本: Kindle版</li> 
</ul> 
<h1>相关链接</h1> 
<ul> 
 <li><a href="http://steveshuo.com/242">Steve说242期 - 杜素娟 - 人无法摆脱灵魂生活</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #168 - Bill Bryson - The Body &#xFF08;&#x300A;&#x4EBA;&#x4F53;&#x7B80;&#x53F2;&#x300B;&#xFF09;</title>
        <link>https://justinyan.eth.limo/A2310A38-B399-4A2F-BF5F-23683525084C/</link>
        <guid>https://justinyan.eth.limo/A2310A38-B399-4A2F-BF5F-23683525084C/</guid>
        <pubDate>Fri, 23 Jul 2021 13:14:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/07/fyyd-015.jpg" alt="枫影夜读 #15 - Bill Bryson &quot;The Body&quot; （《人体简史》）" /></p> 
<p>《人体简史》是一部既硬核又有趣的科普作品，Bill Bryson语带幽默的写法让本作读起来十分轻松有趣，值得一读。</p> 
<p>我所阅读的是文汇出版社的简体中文版，原作标题<em>The Body: A Guide for Occupants</em>被翻译为《人体简史：你的身体30亿岁了》完全是八竿子打不着。出版社强行使用“简史”为名可能是为了跟作者之前的作品《万物简史》（A Short History of Nearly Everything）挂钩形成系列，我以为这种做法并不合适。另外目录中的章节标题简体也差得比较多，故此前置声明，希望读者朋友们不要受其影响。</p> 
<p>作者Bill Bryson原名William McGuire Bryson，美国人，出生于1951年。他年轻时在美国德雷卡大学读了两年之后就开启了间隔年，两次到欧洲旅行。旅途中他在打工的医院里认识了一位名叫Cynthia Billen的护士，后来Cynthia成为他的太太。1975年他们回到美国以便Bryson完成他的学业，两年后他们搬到了英国生活。</p> 
<p>定居英国二十多年，Bryson打算回美国生活，于是在搬家之前他进行了最后一次旅行，并写成旅行笔记于1995年出版。这部作品叫 <em>Notes from a Small Island</em>。出版后广受英国人民欢迎，Calrton Television甚至还基于本书制作了电视节目。</p> 
<p>Bryson本人也以此成名。他除了写旅行游记之外也写历史故事和科普作品，<em>The Body</em> 是作者2019年出版的关于人体方方面面的科普。现代人可能已经习惯了生病就去医院，医生就会把你治好。仿佛现代医学无所不能，其实不然。阅读过程中我最常读到的就是:</p> 
<blockquote>
 <p> 这是科学无法解释的部分。 </p>
</blockquote> 
<p>这让我想起<a href="https://justinyan.me/post/2393">Atul Gawande写的 <em>Being Mortal</em> （简体译为《最好的告别》）</a>。现代医学无能为力的地方数不胜数。不过比起 <em>Being Mortal</em> 中因为癌症带来的生离死别，Bryson在本书所写多为神秘而有趣的细节。比如关于“痒”这种感觉，像蚊虫叮咬、皮疹这种瘙痒很容易解释，但是还有更多的“痒”是莫名其妙的。比如最令人发狂的“幻痒”，“通常伴随截肢出现，可怜的患者在根本没法抓挠到的部位（因为该部位已经被截去）产生持续的痒感”。想想就可怕。</p> 
<p>又或者人类的嗅觉，也是一种神奇的感知方式。这种感知方式不经过下丘脑介导。“出于未知的原因，每当我们闻到某种味道信息会直接传递到嗅觉皮层，嗅觉皮层又靠近塑造记忆的海马体。一些神经科学家认为，这可以解释为什么某些气味能强烈唤起记忆。”</p> 
<p>书中反直觉的科普知识点比比皆是。我想可能医学生在上课时均已学过，但对于没在医学院上过课的我来说，这些小知识非常有趣，甚至让我回忆起小时候读《十万个为什么》的感觉。</p> 
<p>这本书另一个引人入胜的特点是，作者引用了大量的历史故事，并对当前流行版本的错谬进行了纠正。比如1928年亚历山大·弗莱明（Alexander Felming）发现青霉素的故事。通常的版本认为青霉素的发现是一种偶然，当时弗莱明离开实验室去度假期间，一些来自青霉属的霉菌孢子飘进了他的实验室并降落在无人看管的培养皿上。弗莱明出发前正好没有清理培养皿，那个夏天又正好比较凉爽适合孢子生长，弗莱明的假期正好长得足够孢子长大。等弗莱明回来的时候他发现培养皿中的细菌生长受到明显的抑制，就这样“正好”发现了青霉素，是个“奇迹”。但是弗莱明后来也没能好好利用自己的发现，直到多年以后才由其他人把他的发现变成可供使用的药物。</p> 
<p>这个版本的故事里弗莱明看上去有点“蠢”和“好运气”。但事实上落在弗莱明实验室的霉菌在伦敦是很常见的，所以在培养皿里扎根生长并没有什么大不了。值得称赞的是弗莱明认真研究了在这个培养皿里发生的现象，换作一个比较粗心的科学家可能回到实验室就把培养皿清洗掉了。而且弗莱明尽职尽责地报告了自己的发现，甚至在期刊中发表了这对抗菌的意义。只是当时要把这项发现变成可以生产的药物需要大量的科研技术支持，而弗莱明那会已经是一个事业有成的杰出科学家了，他手头还有其他更重要的课题需要去研究，所以这件事就暂时搁置了。</p> 
<p>我喜欢Bryson在讲述这些看似简单的小故事时严谨的态度。在另一个故事“链霉素发现”的故事中，学生阿尔伯特·沙茨（Albert Schatz）认为土壤微生物也许能带来另一种抗生素，于是他致力于研究最终研制出了第一种能够消灭革兰阴性菌的药物——链霉素。“这是20世纪微生物学最重大的突破之一。”</p> 
<p>但是呢，这项荣誉却被他当时的指导员塞尔曼·瓦克斯曼（Selman Waksman）“窃取”了。1952年，塞尔曼·瓦克斯曼被授予诺贝尔生理学或医学奖，一生享誉无数，1973年瓦克斯曼去世时多份讣告称他为“抗生素之父”。Bryson在书中称“这是现代科学史上最不公正的一件事”。直到瓦克斯曼去世20年后，美国微生物学会才邀请沙茨发表演讲，表彰他的贡献以弥补过失。而会上授予沙茨的却是“瓦克斯曼奖”，非常讽刺。</p> 
<p>Bryson用通俗易懂的语言和各种医学界里程碑式的故事构建了这本“十万个为什么式”的科普，轻松惬意又让读者有所收获。如果读者朋友没有研习过医学课程的话，本作还是值得一读的。</p> 
<h2>关于翻译</h2> 
<p>关于书名和章节标题的刻意修改这里不再赘述，各位读者自行忽略中文版标题即可。本作整体行文的翻译很好，人名也都有括号标注，比较用心。</p> 
<p>不过我再单独提一个令我不满的地方。在本书第十七章，章节标题是“Into the Nether Regions”，字面意思就是“来到下面的地方”，这一章主讲生殖系统。但是简体中文被翻译成“进入不可描述的地带：Y染色体将在460万年后消失”。</p> 
<p>随意地篡改标题，在原标题后面用冒号后强行加戏这种做法虽然令人讨厌，但是如果影响不大也就算了。然而“不可描述”这四个字却让我联想起近来在视频字幕上常见的“拼音字母缩写”，比如把中国写成“ZG”之类的。两者同样引起我的强烈不适，我为在正式出版物中见到这样的文字表达感到遗憾。</p> 
<h2>关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 人体简史</li> 
 <li>副标题: 你的身体30亿岁了</li> 
 <li>原作名: The Body: A Guide for Occupants</li> 
 <li>译者: 闾佳</li> 
 <li>作者: Bill Bryson</li> 
 <li>出版社: 文汇出版社</li> 
 <li>出版年: 2020-6-1</li> 
 <li>ASIN: B08BLJ3WZ6</li> 
 <li>版本: Kindle版</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/2393">[每周读书 九十八] Atul Gawande——《Being Mortal》 | 枫言枫语</a></li> 
 <li><a href="https://www.imdb.com/title/tt0278171/">Bill Bryson: Notes from a Small Island (TV Series 1999– ) - IMDb</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 05 - &#x5C01;&#x9501;</title>
        <link>https://justinyan.eth.limo/7F7C17CA-F08E-4453-903C-A8B83DDC9F6E/</link>
        <guid>https://justinyan.eth.limo/7F7C17CA-F08E-4453-903C-A8B83DDC9F6E/</guid>
        <pubDate>Wed, 07 Jul 2021 14:01:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/07/mwmd-005.jpg" alt="漫无目的 05 - 封锁" /></p> 
<p>手握方向盘，驶入黄黑条纹围蔽的警戒线，后视镜里警灯不安地闪烁红蓝。身穿制服的警察站在各个出入口，戴着口罩，警惕地盯着路人行走。</p> 
<p>我被封锁了。</p> 
<p>2021年6月，在广州。</p> 
<p>一个月前我得知Delta毒株在印度出现时还心存侥幸，没想到传播竟如此迅猛。公路边竖起高大的水马，不留一丝缝隙。步行在水马的阴影下，疫情来到我身边了。</p> 
<p>这世界有很多东西平时就像呼吸一样自然，只有失去了才意识到它的存在。</p> 
<p>禁止快递、外卖、超市之后，平日习以为常的物资补给变得极其匮乏，像末日电影。2020年疫情初期，大家因为恐惧不敢出门，现在大家被禁止出门。我想起去年在户外奔波送货的快递员们，像末日游戏《死亡搁浅》那样以近乎英雄的身姿联系起各个孤立的地方，现在被禁止了。</p> 
<p>如果说封锁带来的匮乏与禁足是可以预期的物理困难，那失去对第二天会发生什么的稳定预期就是日夜不安的心理折磨。</p> 
<p>物资何时供给，如何供给，如何领取；<br /> 检测何时进行，如何进行，何时结束；<br /> 封锁如何决定，有何进展，何时结束…</p> 
<p>问题无穷无尽，答案整齐划一，无穷无尽的“没人知道”。</p> 
<p>27天后，新闻发布会开始十分钟后，我已坐在车里。</p> 
<p>手握方向盘，驶出黄黑条纹围蔽的警戒线，车窗外是阴郁但广阔的天空。后视镜里的警察推开水马与围栏，终于可以回家。</p> 
<p>我漫无目的地在高速公路上行驶，不知去向何方。</p> 
<p>所谓自由，是我可以选择不行使的权利。</p> 
<p>FREEDOM IS NOT FREE.</p> 
<p>21.07.06 夜<br /> 于灯下</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #167 Sarah Frier - &#x300A;&#x89E3;&#x5BC6;Instagram&#x300B;&#xFF08;No Filter&#xFF09;</title>
        <link>https://justinyan.eth.limo/A45792DE-8D4A-4E36-8D6F-C0DAEE647E41/</link>
        <guid>https://justinyan.eth.limo/A45792DE-8D4A-4E36-8D6F-C0DAEE647E41/</guid>
        <pubDate>Tue, 29 Jun 2021 13:57:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/06/枫影夜读-14.jpg" alt="枫影夜读 #14 - No Filter: The Inside Story of Instagram" /></p> 
<p>相比简体版的书名《解密Instagram：一款拍照软件如何改变社交》，我更喜欢英文版的 <em>No Filter: The Inside Story of Instagram</em>。</p> 
<p>诚然 #nofilter 一语双关需要读者有更多背景信息才好理解，简体版选改成这样似乎也更好卖。但这个标题差点让我错过这本书，对我而言这个“好卖”可能起了反效果。</p> 
<p>本书作者Sarah Frier是彭博（Bloomberg）的记者，常年追踪报道Facebook，Twitter，Instagram和Snapchat等多家互联网公司。编写本书时，Sarah采访了Instagram和Facebook的多位前员工，以及Instagram创始人，拿到了许多内部故事。正如副标题所云“The Inside Story”，这些故事向读者展示了一个更加真实的Instagram，成为是本作最吸引人的地方。</p> 
<p>本作措辞朴素，文风流畅，阅读时颇有一种读科技新闻之感。中英文版我均已购入，简体版完整读过，英文版浏览对比。我觉得英文版更佳，个中分析我们文末再作讨论。</p> 
<p>2009年10月，凯文·斯特罗姆（Kevin Systrom）启动了一个名为Burbn（意指波本威士忌）的创业项目。这是一个LBS社交产品，使用网页开发原型。Burbn提供照片分享、地理位置分享、积分赚取等多种功能，还获得过50万美元的风投。2010年麦克·克雷格（Mike Krieger）以技术合伙人身份加入Burbn项目，同年他们发布了一个全新的产品——Instagram。</p> 
<p>Instagram上线第一周就获得10万用户，迅速成为当时的明星应用。发布一年多以后，2012年4月，Facebook以10亿美元的天价收购了这个只有13人的小团队，轰动一时。此前还从未有过数额如此巨大的手机App收购。</p> 
<p>2011年9月我在Instagram上传了第一张照片，自此成为重度用户至今。现在回想起来，只依稀记得当年的报道称该团队人均身价1亿美元，随后Facebook IPO跌破发行价，为众人热议。那时国内互联网正是“创业潮”如日中天之际，印象中比起Facebook收购背后的原因，大家更关心Instagram团队一夜暴富这件事情。</p> 
<p>然而直到读完本书我才知道，真正暴富的只有两位创始人，其他成员只是从Instagram员工变成了Facebook员工而已，10亿美元跟他们没有多大关系。其中一位员工Zollman备受打击，她说:</p> 
<blockquote>
 <p> If Kevin had just given each of us one of his millions, they’d say to each other, we wouldn’t have to rent apartments anymore. We could invest in startups, or start our own. </p>
</blockquote> 
<p>我想起苹果在上市的时候也发生过类似的分配问题，只是苹果当时的团队规模要更大。职场是残酷的，IG是在一个创始人拥有无上话语权的行业中成长起来的团队。Facebook的10亿美元要买的不是13个人，而是IG的“魔法”。扎克伯格对Facebook的CTO Michael Schroepfer说:</p> 
<blockquote>
 <p> “Schrep, we are buying magic. We’re paying for magic. We’re not paying $1 billion for thirteen people. The worst thing we could do is to impose Facebook on them prematurely.” </p>
</blockquote> 
<p>而整个Instagram团队，只有斯特罗姆和克里格两位创始人是扎克伯格买下的“魔法”。人类是哺乳动物，进化赋予我们天生的同理心，但是无论乔布斯、扎克伯格还是斯特罗姆，这些成功的企业家身上总存在一些看起来“反人性”的品质。也许这也是他们能常人所不能的原因之一吧。</p> 
<p>扎克伯格曾试图招募斯特罗姆加入Facebook。但是当时的斯特罗姆更想完成学业，到意大利学艺术。他还学过摄影课，第一节课老师就没收了他的单反，给了他一台傻瓜胶片机。这些经历也造就了Instagram早期只能拍摄正方形图片的设计。Instagram是一家传奇的公司，Facebook依然，两家公司的创始人有太多相似之处，既惺惺相惜，又水火不容。后来斯特罗姆与克里格宣布一起辞职的时候，发出的公告里依然把Instagram当做一家独立的公司来看待，只字未提扎克伯格。</p> 
<p>十年之间，沧海桑田，个中情由，令人唏嘘。这些故事能被Sarah Frier写出来真是太好了。不过可能作者掌握的素材比较多，有时候为了证明一个观点举例无数，有点倾倒素材的感觉。比如Chapter 11: The Other Fake News讲述了包括卡戴珊家族、 Fyre节造假事件等多个例子。这些事情单独看都挺有意思，但在一本书里，我会更希望看到主次分明的编排。其实十年虽长，但斯特罗姆与扎克伯格之间的矛盾与冲突是渐进的，不像小说跌宕起伏。所以这些素材如何取舍对作者而言是一项不小的挑战，就本书而言，还可以做得更好。</p> 
<p>至于阅读门槛，本书在讲述团队创业挑战、分析产品决策时多以互联网从业人员的视角解读。普通读者虽然也能读懂，却未必觉得有趣。所以我觉得本书可能更适合互联网从业者阅读。</p> 
<p>通读下来这本书我比较喜欢，英文版给出四星推荐，简体版因为翻译的关系三颗星。</p> 
<h2>关于简体翻译</h2> 
<p>简体翻译比较流畅，但是夹带私货较多，用词有点过分“本地化”，俗称“接地气”。我不是很喜欢译者时不时加入网络流行词的做法。除了使用“网红”、“这下员工们不淡定了”这样的翻译之外，克里格下班时让司机掉头回去解决紧急Bug的时候说:</p> 
<blockquote>
 <p> “We need to turn the cab around.” </p>
</blockquote> 
<p>被翻译成:</p> 
<blockquote>
 <p> “师傅，麻烦掉头。” </p>
</blockquote> 
<p>我不确定这样的本地化翻译在专业人士看起来怎样，但是我读起来感觉十分别扭。文本最好能具备超越岁月的价值，如果写书多用一时流行的网络词汇，一来过了这段时间就缺乏上下文，二来显得辞藻过于贫瘠，不太合适。</p> 
<p>另外译者可能没有技术背景，文中存在个别谬误。比如斯特罗姆重构JavaScript代码的几句话被翻译成让Java有更好的语法。这里可能译者并不知道Java和JavaScript两种语言。再有是Instagram提供比Facebook更优质的免费咖啡，希望和Facebook员工搞好关系，原文是:</p> 
<blockquote>
 <p> “Instagrammers could offer good coffee, the kind that came from the pour-over kits and espresso machines they had learned to prefer.“ </p>
</blockquote> 
<p>被翻译成”但Instagram提供的是优质咖啡——手冲和滴滤咖啡“。我当时读到这里的时候很疑惑，明明都提供手冲咖啡了，怎么还会给滴滤咖啡呢？（因为滴滤咖啡并不比全自动咖啡机出来的咖啡好多少。）</p> 
<p>所以虽然简体版并未破坏主体表达，但是读起来还是让我感到有些不适。所以介意这点的读者朋友可以阅读英文版。</p> 
<h2>参考资料</h2> 
<p><em>英文版四颗星，简体版三颗星。</em></p> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️(3/5)</li> 
 <li>标题: 解密Instagram</li> 
 <li>副标题: 一款拍照软件如何改变社交</li> 
 <li>原作名: No Filter: The Inside Story of Instagram</li> 
 <li>译者: 张静仪</li> 
 <li>作者: Sarah Frier</li> 
 <li>出版社: 中信出版社</li> 
 <li>出版年: 2020年11月1日</li> 
 <li>ASIN: B08PV9YZ84</li> 
 <li>版本: Kindle版</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 42 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;03: Windows 11 &#x751C;&#x871C;&#x871C;~</title>
        <link>https://justinyan.eth.limo/0908F18B-6EF0-4CA9-BFE2-77960507D1CC/</link>
        <guid>https://justinyan.eth.limo/0908F18B-6EF0-4CA9-BFE2-77960507D1CC/</guid>
        <pubDate>Mon, 28 Jun 2021 08:30:39 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/06/Podcast-Cover-v42.png" alt="Vol. 42 科技快乐星球03: Windows 11 甜蜜蜜~" /></p> 
<p>又一期《科技快乐星球》啊，伴随着微软 Windows 11 发布以及蜜雪冰城甜蜜蜜的洗脑霸榜，让我们一起快乐一下~</p> 
<p>欢迎大家在评论区留言一起吐槽。</p> 
<p><em>P.S. 更正口误：贝索斯上太空的 $28 million 是 2800 万美元，折合人民币 1.8 亿，依然是一笔巨款。</em><br /> <em>P.P.S. Windows 11 此次发布还有一个重点我们在节目中忘记提了，就是该版本操作系统完全免费，这在微软历史上还是第一次。</em><br /> <em>P.P.S. Bezos要上太空搭乘的是自家Blue Origin公司的火箭</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:24 Windows 11 发布，支持运行 Android App</li> 
 <li>18:38 Apple Music 支持无损音频和空间音频</li> 
 <li>22:06 贝索斯要上太空，5万网民请愿：“别回来了”！</li> 
 <li>24:08 快手宣布 7 月起取消大小周</li> 
 <li>27:15 抖音推出网页版，瞄准长视频</li> 
 <li>31:20 美团推出智能头盔，骑手可直接和用户沟通</li> 
 <li>34:34 片尾曲：Stephen Foster's OH! SUSANNA</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/qSIj17xbAyk" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Stephen Foster's OH! SUSANNA - Original 1848 Lyrics - Tom Roush</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 41 WWDC 2021 X &#x79D1;&#x6280;&#x65E9;&#x77E5;&#x9053;</title>
        <link>https://justinyan.eth.limo/D7CBAF28-2590-4D84-AC44-BA3E924E2319/</link>
        <guid>https://justinyan.eth.limo/D7CBAF28-2590-4D84-AC44-BA3E924E2319/</guid>
        <pubDate>Thu, 10 Jun 2021 12:58:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/06/Podcast-Cover-v41.png" alt="Vol. 41 WWDC 2021 X 科技早知道" /></p> 
<p>WWDC 2021的节目来啦！今年我们继续到一年一度的好朋友《科技早知道》串台唠嗑。</p> 
<p>iPadOS果然不负众望地没有足以充分发挥超强硬件实力的更新，这届Dub-Dub的观看过程也有很多人表示看着看着快睡着了。</p> 
<p>不过这次macOS居然有了不少更新，也是令人欣慰的事情。</p> 
<p>不知道你对这届WWDC有什么想要吐槽的或者称赞的地方吗？<br /> 有没有什么新特性是让你感到惊艳的，或者有什么是你期待看到但没有出现的呢？</p> 
<p>欢迎大家在评论区留言一起吐槽。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>01:13 让人「发困」的 WWDC 2021 都发布了啥？</li> 
 <li>12:50 还好让我发现了令人眼前一亮、印象深刻的功能</li> 
 <li>15:00 疫情影响着科技企业产品新方向</li> 
 <li>34:52 一些小众好用但又强大的「小功能」</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li><a href="https://www.xiaoyuzhoufm.com/episode/5ef31b4b418a84a046fc85e2">科技早知道 #26 对，我们又和开发者聊了聊今年的WWDC</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 04 - &#x5347;&#x5E06;&#xFF01;</title>
        <link>https://justinyan.eth.limo/CA1BD612-D8E3-4D75-8BAD-7A17892241D4/</link>
        <guid>https://justinyan.eth.limo/CA1BD612-D8E3-4D75-8BAD-7A17892241D4/</guid>
        <pubDate>Fri, 04 Jun 2021 13:12:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/06/mwmd-004-001.jpg" alt="漫无目的 04 - 升帆！" /></p> 
<p>不想连着两篇“漫无目的”都在怀念小时候，但是没有办法，《大航海时代4威力加强版HD》这一串长长的名字实在唤醒了太多人的童年回忆。最近这款1999年的游戏的重制版终于登陆了Switch平台，许多老玩家纷纷给童年那个“特殊时期”补票，我自然也在其列。</p> 
<p>看到自己小时候在电脑上玩过的游戏，以高清缩小的形式出现在掌中的Switch里，真是一种奇妙的感觉。仿佛穿越时空回到过去，与那个在寒冷的冬夜里裹着棉被，只伸出两只小手抓着键盘鼠标的，专注地盯着屏幕的小男孩隔空对话一般。</p> 
<p>当菅野洋子在游戏体积苛刻的限制下努力制作的电子乐从Switch那算不上多高级的喇叭里播放出来的时候，思绪一下子就被吸进游戏的漩涡里了。</p> 
<p>我喜欢这种感觉。</p> 
<p>我喜欢这种可以穿越时空，反复品味的游戏。在书本的世界里，这样的作品被称为名著。实体化的书本，即使随着时间的流逝，只要书没有坏掉就还可以读。</p> 
<p>但电子游戏却依托于开发商的维护。在几十年软硬件的高速发展中，有太多经典被永久尘封在历史的沙砾之中。所幸光荣公司还愿意重制这款游戏。这被戏称为“炒冷饭”，而且因着这款作品的定价与内容的特殊性，老玩家觉得这份冷饭太贵了，新玩家则觉得这游戏的画质太糟糕，玩起来莫名其妙的。</p> 
<p>我不太关心这些争议，光荣能够把这份22年前的回忆原汁原味地翻出来，我已经心满意足了。毕竟现在的游戏大作，画质越来越好，叙事与玩法却趋于雷同。皮囊好看了，却失了灵魂。</p> 
<p>说资本是逐利的，但逐利不应该是全部。就像电影《头号玩家》(Ready Player One)里创造了绿洲的詹姆士·哈勒代(James Halliday)，他追求的是在绿洲里找到往日的回忆，去追求失去的梦想啊！</p> 
<p>梦想啊！</p> 
<p>在大航海时代把我拉回到那个小男孩面前时，我是否也问了他这个问题呢？</p> 
<p>梦想啊！</p> 
<p>游戏的首页，白色的宋体字赫然写着：</p> 
<p>“升帆！”</p> 
<p>不知道你回到过去，看到那个曾经的小男孩/小女孩专注于某件事情的表情时，你会问什么呢？</p> 
<p>“提督，我们要出港了吗？”</p> 
<p>2021.06.03/于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 40 &#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;02</title>
        <link>https://justinyan.eth.limo/7C478FF5-6A43-4196-A8B2-4958A030BA9E/</link>
        <guid>https://justinyan.eth.limo/7C478FF5-6A43-4196-A8B2-4958A030BA9E/</guid>
        <pubDate>Fri, 04 Jun 2021 10:50:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/06/Podcast-Cover-v40.png" alt="Vol. 40 科技快乐星球02" /></p> 
<p>各位好！最近广州疫情再起，于是我们临时加更一期《科技快乐星球》，希望给在广州居家办公的小伙伴们带来一点陪伴感。</p> 
<p>本期片尾曲是来自动漫《Megalobox》的主题曲，主角“野狗Joe”是一个非常有斗志的战士，希望各位小伙伴们也能从中获得一些勇气，希望广州的疫情快快过去，希望全球的疫情也快快结束。</p> 
<p><em>P.S. 更正口误：6:26 微软的Exchange漏洞是已经修复了，只是Colonial没有升级。</em></p> 
<h2>时间轴</h2> 
<p>00:50 美国燃料公司向黑客支付 440 万美元<br /> 13:32 FBI逮捕了被盜賬戶最大市場 Deer.io 的所有者<br /> 15:13 Google 发布了 Fuchsia OS<br /> 21:38 我国网民日均刷视频时间超越刷网页时间<br /> 24:36 数字人民币无网络也可以使用<br /> 28:25 网易云音乐赴港递交招股书<br /> 31:57 片尾曲：mabanua (マバヌア) - Megalobox</p> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>剪辑: 枫影 Justin Yan</li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>封面图片: <a href="https://unsplash.com/@cbpsc1">Unsplash - Clint Patterson</a></li> 
 <li>片尾曲: <a href="https://c.y.qq.com/base/fcgi-bin/u?__=GTRNd6">mabanua (マバヌア) - Megalobox</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 03 - &#x7535;&#x5B50;&#x4E66;&#x548C;&#x7EB8;&#x8D28;&#x4E66;&#x4F60;&#x66F4;&#x559C;&#x6B22;&#x54EA;&#x4E00;&#x4E2A;&#x5462;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/8C1340E1-2848-4C0F-BF23-B3DA40EEBF5B/</link>
        <guid>https://justinyan.eth.limo/8C1340E1-2848-4C0F-BF23-B3DA40EEBF5B/</guid>
        <pubDate>Mon, 24 May 2021 13:25:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/漫无目的003-1.jpg" alt="漫无目的03 - 电子书和纸质书你更喜欢哪一个呢？" /></p> 
<p>现在回想起来，在手机、平板、电子墨水屏等技术尚未普及的年代，阅读电子书确实不算太轻松的体验。小时候家里有一台586 CPU（第一代奔腾Pentium处理器）的电脑，屏幕是一台硕大的凸起的CRT显示器，相当笨重。那时候上网还需要外接一只“猫”（调制解调器Modem），拨号时发出奇怪的尖叫。</p> 
<p>有一天我和小伙伴去买盗版游戏光盘的时候——很抱歉曾经支持过盗版事业，小时候既买不起正版光盘，也不存在售卖正版的地方——看到一张封面上印有帅气的拳皇人物的，以为是个格斗游戏。结果买回来才发现里面净是拳皇、铁拳之类的宣传片，以及大量“金古温梁”（金庸、古龙、温瑞安、梁羽生）的武侠小说。</p> 
<p>所以在很长一段时间里我就对着这个圆鼓鼓的屏幕阅读武侠小说。躬身埋头对着发光屏幕的姿势，确实不如背靠椅子手捧纸书来得舒服。我记得那时候还有关于电子书和纸质书哪种更好的争论，现在大概已经烟消云散了。</p> 
<p>2007年苹果发布第一台iPhone，那一年也是Amazon发售第一台Kindle的一年。十四年过去了，软硬件发展极大地提升了电子书的阅读体验，人们也完全接受了电子书。近些年我在买书时也优先选择电子版，阅读软件最好是没有干扰，专注阅读的，所以我几乎只买Kindle版的电子书，软件中“受欢迎的高亮”、“广告推荐”之类的功能当然统统要关掉。Kindle的类纸质阅读体验很好，但是设备性能比较差，所以做笔记时我会使用iPad上的Kindle软件。</p> 
<p>但是始终有些书是只能买实体版的，比如最近两期<a href="https://justinyan.me/post/category/literature/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">#枫影夜读</a>提到的<a href="https://justinyan.me/post/4525">《艺术的故事》</a>和<a href="https://justinyan.me/post/4571">《S.》</a>。</p> 
<p>《艺术的故事》有大量插图，阅读时也常常需要前后翻页。无论电子墨水屏还是iPad的屏幕，与高质量的印刷品仍不可同日而语。所以插图本还是实体书阅读起来更加舒适。但对印刷质量要求也很高，像《艺术的故事》的中英文版就采用了不同的纸张与印刷工艺，在细节和色彩还原上差距不小。至于《S.》这样的书则专门为实体设计，捧着做旧的书本，翻着信纸阅读是这部作品的核心体验。</p> 
<p>多数时候我购买实体书只是因为它没有电子版。像是村上春树的作品，台湾赖明珠翻译的版本在大陆并没有发售电子版，也有些新书是还没来得及电子化的。虽然如此，现今电子出版物已浩如烟海，想买的书通常都能买到。除了少量新书尚未引进以外，通过亚马逊中国也可以很方便地购买英文书了，科技给生活带来的变化真是不可思议啊。</p> 
<p>回想在CRT屏幕前点开HTML文件逐字阅读的情景，不知道什么时候高清的全息投影技术可以成熟呢？到时候不仅便携，而且可以伸缩放大。这样一来，还原起需要领会作品尺度的艺术书籍恐怕会有更好的阅读体验吧。</p> 
<p>如果这天到来了，我就带一本精装本的纸质书，找一个靠近河边的地方，阳光要好但不能太强烈，天气要晴朗但不能太闷热，打开这本书，当然油墨的味道不能太刺鼻。于是乘着暖阳和风，一头掉进文字的世界里面了。</p> 
<p>果然，手捧纸质书的体验还是更有趣啊！</p> 
<p>21.05.21/夜<br /> 于阁楼</p> 
<blockquote>
 <p> 你好，这里是《漫无目的》，我是枫影Justin Yan，一个虚度光阴的人。<br /> 感谢你的阅读。 </p>
</blockquote> 
<h2>参考资料</h2> 
<ul> 
 <li>封面图片: <a href="https://unsplash.com/@felipepelaquim">Unsplash @felipepelaquim</a></li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4525">枫影夜读 #12——恩斯特·贡布里希《艺术的故事》</a></li> 
 <li><a href="https://justinyan.me/post/4571">枫影夜读 #13——《S. 忒修斯之船》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 39 &#x4EC0;&#x4E48;&#xFF0C;&#x662F;&#x79D1;&#x6280;&#x5FEB;&#x4E50;&#x661F;&#x7403;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/8CFA6030-5744-4119-880F-7640D208C814/</link>
        <guid>https://justinyan.eth.limo/8CFA6030-5744-4119-880F-7640D208C814/</guid>
        <pubDate>Mon, 24 May 2021 10:54:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/Podcast-Cover-v39.png" alt="Vol.39 什么，是科技快乐星球？" /></p> 
<blockquote>
 <p> 什么，是科技快乐星球？<br /> 什么，是科技快乐星球？<br /> 如果你想知道什么是科技快乐星球的话，<br /> 现在，就带你研究! </p>
</blockquote> 
<p>各位好！这波我们又挖了个新坑——《科技快乐星球》，专门闲聊一些科技新闻，或者旧闻。如果各位听众朋友们觉得有意思的话，不妨点个赞再走。如果对我们这个新栏目有什么意见或建议的话，也欢迎在评论区留下你的想法。</p> 
<h2>时间轴</h2> 
<p>00:50 新系列：科技快乐星球<br /> 01:14 吐槽 AirTags<br /> 05:15 用意念打字，在脑中写字<br /> 09:20 YouTube Shorts 奖金激励<br /> 14:33 复活恐龙计划<br /> 19:14 Google Photos 将取消免费，照片怎么办？<br /> 23:44 虚拟机 Paralles 支持 M1 芯片了<br /> 25:46 第三代 AirPods &amp; HiFi Apple Music<br /> 26:50 Lofi 音乐<br /> 29:40 彩蛋：一个段子<br /> 31:44 片尾曲：Shrimpnose - Lavender</p> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>封面图片: <a href="https://unsplash.com/@nasa">Unsplash @nasa</a></li> 
 <li>片尾曲: <a href="https://www.di.fm/tracks/2952184/lofihiphop">Shrimpnose - Lavender</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #166 Doug Dorst and J.J. Abrams - &#x300A;S. &#x5FD2;&#x4FEE;&#x65AF;&#x4E4B;&#x8239;&#x300B;</title>
        <link>https://justinyan.eth.limo/7B00EBC4-5ED8-48DF-BFB2-E829678077C5/</link>
        <guid>https://justinyan.eth.limo/7B00EBC4-5ED8-48DF-BFB2-E829678077C5/</guid>
        <pubDate>Thu, 20 May 2021 13:57:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2016/10/fyyd-013.jpg" alt="枫影夜读 #13——《S. 忒修斯之船》" /></p> 
<p>以前因为经常搬家的缘故，不太敢买实体书。现在虽然不搬家，却也形成了优先购买电子书（Kindle版）的习惯。不过总有些书是非纸质版不可读的，比如<a href="https://justinyan.me/post/4525">上一期我们介绍的贡布里希的《艺术的故事》</a>，插图很多且质量颇高。以及2013年美国的道格·道斯特(Doug Dorst)与 J·J·艾布拉姆斯(J. J. Abrams)联名创作的无法被电子化的作品——《S.》。</p> 
<p>J·J·艾布拉姆斯是一位有名的电影导演、制作人和编剧。他参与导演和编剧的作品包括2009年的《星际迷航》(Star Trek)，2015年的《星球大战：原力觉醒》(Star Wars: The Force Awakens)，2019年的《星球大战9：天行者崛起》(Star Wars: The Rise of Skywalker)等等，还有一部非常有名的美剧《迷失》(Lost)也是他参与编剧并执导。一提到 <em>Lost</em> 读者朋友们就应该知道这是一位擅长挖坑不填的选手。而《S.》这部多线叙事，层层嵌套的作品也是一个非常好的天坑，可惜虎头蛇尾，浪费了这个好想法。</p> 
<p>本作就故事内容本身我给两星或三星评价（满分五星），但设计巧妙，文本之外的加成较高，所以两星给本作的设计巧思，全书评价为四星。本文接下来的内容涉及剧透，如果还没有读过本作的朋友建议读完再回来看。</p> 
<hr /> 
<p></p>
<center>
 剧透分割线
</center>
<p></p> 
<hr /> 
<p>珍是波拉德州立大学(Pollard State University)一名大四的学生，有天她在学校图书馆捡到一本书，名为《忒修斯之船》(Ship of Teseus)。作者名叫 V.M. 石察卡(V.M. Straka)，是一个已故的作家，石察卡是他的笔名。他生前身份扑朔迷离，死后还有很多人研究他的作品试图发现他的真实身份。珍捡到的这本书，“原主人”叫埃里克（Eric），他就是这样一位研究者，16岁就开始读这本书，并在其中留下了许多划线和笔记。珍在阅读的过程中不觉为其吸引，于是也留下了她的笔记，然后把书留在原来的地方交还给埃里克。两个素未谋面的陌生人就这样你来我往，在书本的空白处用文字交谈。</p> 
<p>所以《S.》这部作品，大体上由两个部分组成，一是《忒修斯之船》这本小说本身，二是珍和埃里克在书中留下的手写笔记。一开始拿到这本书我感到非常兴奋，形式新颖，代入感很强。黑色的印有“S”符号的函套是唯一印有《S.》的真实作者和相关信息的地方。取出本体，这是一本刻意做旧的《忒修斯之船》，作者名为石察卡，出版社是飞天鞋出版社，全为虚构。书脊上还贴有图书馆常用的杜威十进制分类法标签——813.54意味着这是一本美国英语的虚构作品(American fiction in English)。</p> 
<p>翻开第一页，赫然写着“借阅用书”，泛黄的书页、图书馆的借阅盖章，珍和埃里克的手写笔记，这种超越文本的打破第四面墙的做法让读者仿佛身临其境。而书中夹带的多个附件更加强化了这种体验，就像在故事中的波拉德大学图书馆捡到了它，见证了笔谈二人从互不相识到相爱的故事。</p> 
<p>我的阅读习惯是划线，偶尔批注笔记（笔记一般只在Kindle），所以初读本书的《译者序》（Translator's Note and Foreword）时，看到这些乱七八糟的划线和批注有一种由衷的亲切感。再跟随虚构的译者 F. X. 柯岱拉（F. X. Caldeira）叙述的她与作家石察卡的渊源及作家之死，结合珍与埃里克的第一次互相留言的幽默对话，以及书中夹带的附件，很有见证真实故事的感觉。</p> 
<p>比如第一份附件是在《译者序》中，F.X.C说“石察卡在寥寥几次可验证的公开声明中确认了，他也认为作者身份的争议被误导……”。珍读到这里，划线并留言给埃里克：“是哪些？你有复印件吗？”于是埃里克附上了一张石察卡写给葛兰的信件的复印件。在你阅读这张复印件的时候，你的手指所触，目光所读，就完全是珍的体验啊！这也是本书最大的优点和特色。</p> 
<p>《译者序》里提出了石察卡身份之谜，译者F.X.C.去拿《忒修斯之船》的手稿是最后一次见石察卡，见证了他被绑架消失的瞬间。后来大家都认为石察卡已死。于是《忒修斯之船》小说作为石察卡的最后一部作品，就颇具解谜线索之意味。小说第一章引出了一个失忆的男主角 S.，他一心要找回自己的身份，可谓与石察卡的故事线有异曲同工之妙。很快 S. 被一个陌生的大汉捂住口鼻迷晕了之后带上了一艘可怕的船。</p> 
<p>故事到这里感觉非常不错，节奏把握很好，谜题有了，悬念也有了，无论是小说主体还是手写体笔记都发展得很顺利。但是，从第二章开始，两条故事线全面崩塌，情节冗长，叙述无趣，内容晦涩，不知所云，加塞了许多看似高深莫测，实则意味不明的隐喻。也因此我想给小说本身打出不推荐的评价，加分项全靠创意。</p> 
<p>我们先说创意编排的部分。《忒修斯之船》的故事线主要在小说本体，道斯特创作时也是把小说作为独立作品先写出来，所以这部分我们像看普通小说一样阅读就行。不过小说译者 F.X.C. 的注解部分经常颠倒黑白，暗藏谜语。所以小说本体也有两条线，译者注解的这条线我们需要结合珍和埃里克的手写笔记来解析，因为不管是作家、译者还是故事背景都是虚构的，有太多场外信息需要手写笔记补充。</p> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/fyyd-013-02.jpg" alt="多色笔记" /></p> 
<p>但即使手写笔记这条线本身也有多条时间线。最早埃里克的笔记是铅笔痕迹，珍的初次留言用的是蓝色珠笔，埃里克的初次回复是黑色钢笔，后来还有红色、橙色、紫色、绿色等多种不同的颜色，用于区分不同时期的留言。虽然留言时间不同，出现的位置却可能在一起。所以你就可能在小说开头的一页读到珍和埃里克后期的故事，最初阅读有种多了一团迷雾的兴奋感，但是读多了之后就感觉衔接不上，令人懊恼。</p> 
<p>所以有人推荐这本书要读六遍，每次只读不同的部分，比如第一遍只读小说原文，第二遍读铅笔字的笔记之类。我只读完了一遍简体中文版，英文版只简单浏览了一下，我认为如果不是特别喜欢这本书，大可不必读上六遍，徒然浪费时间。</p> 
<p>不过话说回来，探索哪种方式最适合自己也是阅读本书的一大乐趣。我尝试过两种读法，一种是一页页顺序阅读小说本体，读到翻页处情节告一段落就回来读手写笔记，大体上小说与笔记同步阅读。另一种是一次过读完小说的一章，然后再回过头来，从头读一遍手写笔记。</p> 
<p>两种读法各有优劣，相较之下我更喜欢第一种顺序阅读。这种读法的缺陷是，小说情节多数时候不会在翻页处告一段落，我总是要翻过去多读两段然后再翻回来看笔记，小说本体的流畅性常常要被打断。这种迫不及待要抽离小说本体，去读珍与埃里克的故事的感觉，在夹带附件的地方更加明显。</p> 
<p>第二种读法则照顾了小说本体的流畅性，但是读手写笔记的时候，那种类似视频网站弹幕的陪伴感却被削弱了不少。不知道诸位读者是否曾有过上课时偷偷递小纸条的经验。小时候因为某些活动课的关系我们会换教室上课，曾因此机会跟坐在我的位置的同学在互不相识的情况下交换了一段时间书信，比递小纸条更好玩。所以当我读到本书的开端时，小时候的感觉再次袭来，十分令人怀念。对我来说这就是《S.》最大的优点（因为故事写得太烂了），所以如果不能得到手写笔记的陪伴，那此书势必要大打折扣的。另外正因为小说本体写得不知所云，所以即便小说的体验被打断了也没多大关系（叹息）。综上，我个人推荐顺序阅读的方式来体验本书。</p> 
<p>《忒修斯之船》这部小说，一开始的主线和悬念应该是 S. 试着找回自己的记忆。但是第一章里他遇上似乎认识自己的女人“索拉”之后，很快就被人迷晕囚禁于一艘神秘的古船，船上一堆呆滞的水手，嘴巴被针线缝起来，十分诡怖。唯一会讲话的大块头则是暴力的代表，口音也很奇怪，类似方言，含糊不清。</p> 
<p>S. 试图逃离这艘船，结果在暴风雨中被冲上岸，遇上了大游行，特务和爆炸案，莫名其妙地就跟着一群游行的人被通缉然后逃亡。本来他又一次遇到了索拉，但是场面混乱没能追上，还导致自己卷入爆炸案中。S. 与众人一起逃亡的这一段写得张力十足，我认为是本书情节描写最好的部分。</p> 
<p>最后以伙伴全部死亡、失踪，自己跳下水又回到那艘恐怖的船上告一段落。到这里，作者揭示了船上的时间比陆地时间流逝得更慢的超自然现象，所以 S. 每次遇到索拉都觉得她好像又老了一点。接下来故事的走向有了急转直下的变化，紧张的情节没有了，开始了大量不知所云的隐喻。S. 刻在船上的文字也出现了超自然现象——刻出来的文字跟他所想的完全不一样。</p> 
<p>S. 一直抱有的好奇心是大块头不让他进入的船的底层，他终于还是想办法进去了，发现了一个像书房一样的房间，可以用纸笔尽情写作。然后 S. 就被针线把嘴巴缝起来了，一转身变成了一个身手过人的特工，一个使毒高手。这一部分是全书最无聊的部分，也是最不知所云的地方。船的隐喻，大游行的故事，索拉的作用，刻字和时间流逝的超自然现象，直到读完全书，都没有解释。</p> 
<p>“忒修斯之船”原本指的是古希腊的一个哲学悖论：如果把忒休斯船上的木板一块一块全部换掉，那最后这艘船还是原来的船吗？在 S. 的故事里，他每次遇到那艘神奇的船也确实看到它被修补了很多地方，几乎全部换过，但是如上所述，船在小说中并未言明寓意为何。</p> 
<p>可能因为我无法读懂《忒修斯之船》这部小说那藏得极深的寓意，所以我给小说本体的打分很低，开场不错，但狗尾续貂（让我想起 J.J. 艾布拉姆斯的美剧《Lost》）。</p> 
<p>另一条故事线则是珍和埃里克通过笔谈表达的爱情故事。以前在<a href="">评价《偷影子的人》</a>时我曾经说小说家偷懒的时候就会说某某爱上了某某，因为爱情是无法解释的。在《S.》的这条爱情故事线中，珍和埃里克两人也在尚未见面的情况下，直接表白成功（因为有不同时间的笔记穿插在一起，这种感觉比实际发展看起来更突兀）。接下来的故事涉及珍和埃里克两人各自小时候的故事，现在因为追查石察卡的线索而遇到的危险等等。平心而论，在阅读信件的时候我觉得体验蛮有趣的，但是故事本身很一般，综合体验跟阅读《S.》完整作品是一样的，形式有趣，内容普通。</p> 
<h2>关于翻译</h2> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/fyyd-013-01.jpg" alt="S. 中英文" /></p> 
<p>本作的原版是英文，由Mulholland Books出版社于2013年出版，次年台湾的寂寞出版社出版了繁体中文版，译者是颜湘如。2016年中信出版社出版了简体中文版，同一位译者，只是做了一些本地化处理，比如人名、地名的简体标准化（比如新华社翻译标准），修改部分措辞。三本书都名为《S.》，副标题: Ship of Theseus，简体译为《忒修斯之船》，繁体为《希修斯之船》。</p> 
<p>本作原文多用缩写，用词晦涩，又因涉及暗语解谜，页数需要和英文版保持一致，翻译起来非常困难。是以中文版的高质量翻译令人叹服，向译者表示敬意。中信的简体版读来流畅，手写字迹娟秀，看着很舒服，比繁体的好看太多。但简体的问题是珍与埃里克的笔迹十分相似，除了颜色以外难以分辨。在英文版中，两人的笔迹相差很大，埃里克的部分全为大写，容易分辨。</p> 
<p>繁体版的包装是一个翻盖的大匣子，比较占空间，且附件被放到独立的袋子里，而简体则跟英文一样都是函套设计(Slipcase)，附件夹在书页中。其实阅读过程中附件出现的位置是有用意的，所以简体版的做法更佳，收纳也更方便。</p> 
<p>中英文版都在做旧上下足了功夫，不论是纸张泛黄的效果，不小心留下的咖啡的渍印，书写过程中被抹到的钢笔、珠笔的痕迹，还是写错了字划掉重写的线条，都非常逼真和亲切。</p> 
<p>最后是简体版附带了可以作为书签的小绳子而英文版没有。这点挺贴心的，不过一开始我误以为是附件类型的东西一直不敢动，哭笑不得。</p> 
<h2>购买建议</h2> 
<p>初读本书我的评价很高，所以当时想着读完简体版再买英文版回来对比一下。但读到尾声时却为其故事之平平无奇而感到为难。最后我还是趁着还没读完先下单买了英文版，不过我并不建议读者朋友购买多个版本。</p> 
<p>如果想尝试不同的阅读体验的读者，这本书非常值得一试。但是不要期望读到一本有趣的小说就是。另外中文版的本地化做得非常不错，质量很高，英文版则因为手写体及多用缩写的的缘故，较难阅读。所以如果不是很喜欢这本书，想要集齐全套的话，同样也不建议购买英文版和繁体版。</p> 
<h2>参考资料</h2> 
<p><em>三颗星给故事内容，一颗星给设计巧思。</em></p> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: S.</li> 
 <li>副标题: 忒修斯之船</li> 
 <li>翻译: 颜湘如</li> 
 <li>作者: 道格·道斯特(Doug Dorst)与 J·J·艾布拉姆斯(J. J. Abrams)</li> 
 <li>出版社: 中信出版社</li> 
 <li>出版年: 2016-06-01</li> 
 <li>ISBN: 9787508650951</li> 
 <li>版本: 纸质版</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4525">枫影夜读 #12——恩斯特·贡布里希《艺术的故事》 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3045">每周读书 #134 可惜了一个有意思的设定——《偷影子的人》</a></li> 
 <li><a href="https://m.thepaper.cn/newsDetail_forward_1483504">测评｜烧脑神书《S.》英文版、繁中版、简中版，哪个好？</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/S._(Dorst_novel)">S. (Dorst novel) - Wikipedia</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 02 - HELP!</title>
        <link>https://justinyan.eth.limo/CDACF7F1-5301-464E-9BAF-45F8FF6B55FF/</link>
        <guid>https://justinyan.eth.limo/CDACF7F1-5301-464E-9BAF-45F8FF6B55FF/</guid>
        <pubDate>Fri, 14 May 2021 13:49:16 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/漫无目的002-cover.jpg" alt="漫无目的02 - HELP!" /></p> 
<p>子夜，广州的街头灯火通明。车里的音响传来披头四干净的声线。习惯了开快车的我今晚却试着缓缓驶入夏夜。</p> 
<p>结果在一条并不拥挤的街上，与我并肩的一辆蓝色车子漠然挤了过来。在时速不高的情况下把刹车踩出ABS我也是第一次体验。</p> 
<p>蓝色车子没有开转向灯，就像他的左侧空旷一片。然后悠然自得地，扬长而去了。</p> 
<p>他的危险驾驶行为令我恼火，不过那天还有一个思考一直萦绕在我的脑海里：预期和期望。</p> 
<p>我并不喜欢诸如“降低预期”、“存在即合理”这类语焉不详、模棱两可的句子。不过在我刻意把车子开得比平时慢（跟车流一样的速度，我平时总是开得比较快）的夜晚，我反复提醒自己要有预期：左/右前方的这辆车很可能会不打转向灯突然靠过来哦。</p> 
<p>我只是没想到蓝色车子会在并肩的情况下也这么做。于是恼火。</p> 
<p>恼火是因为实际情况不符合预期。</p> 
<p>就像沙盘游戏环世界(RimWorld)里的殖民者一样。游戏设定在一个生存环境险恶的星球，玩家操控殖民者在星球上建造基地、生产物资，艰难求生。一开始虽然什么都没有，但是殖民者的“预期”很低，愿意在地上睡觉，吃着袋装食物。随着基地的发展，殖民者的“预期”越来越高，需要宽敞的卧室，豪华的餐厅，和奢侈的食物。如果满足不了，殖民者的“心情值”就会降低直到崩溃。</p> 
<p>游戏中使用“期望”这个词，但我觉得“预期”更加中性，“期望”是带着正面、积极的词，像希望。</p> 
<p>现实生活中我们经常遇到“不符合预期”的事情，像蓝色车子的突然加塞一样。所以我们需要时时调整预期，使其匹配客观事实，让自己的内心好过一点。通常这种“调整”只是“降低”。</p> 
<p>但我们不应该失去“期望”。正是因为我们“期望”美好，所以这个世界才会越来越美好不是吗？“调整预期”是在适应生存环境，而“抱有期望”则是在改善生存环境。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/the-beatles-help.jpg" class="photo-frame" alt="The Beatles - HELP!" /></p> 
<p>1965年列侬写《Help!》这首歌的时候，本想以悲伤的形式演唱。那年正是他们如日中天的时候，披头四想要探索音乐的理想被商业演出、电影拍摄逼到角落艰难喘息。“Help! I need somebody!”的呐喊就是当时披头四内心的真实写照，但最终这首歌还是以我们听到的版本面世了。</p> 
<p>尽管与预期不符，但披头四从未放弃过他们的期望。不然也不会出现《佩珀军士的孤独之心俱乐部乐队》(Sgt. Pepper's Lonely Hearts Club Band)这样一张无论在录音和编曲上都取得突破的极具实验精神的专辑。</p> 
<p>我并不懂音乐，但我喜欢披头四干净的声音，喜欢他们对自己所爱的诚挚而热烈的追求，以及义无反顾的勇气。更不用说，他们是打败了现实的成功的乐队。</p> 
<p>现实，像一个大漩涡。</p> 
<p>子夜，城市的车流划出漩涡的弧线。我握着方向盘，在披头四的歌声中，漫无目的地驶向漩涡的边缘。</p> 
<blockquote>
 <p> 你好，这里是《漫无目的》，我是枫影 Justin Yan。感谢你的阅读。 </p>
</blockquote> 
<p>2021.05.13/下午<br /> 于T.i.T创意园</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6F2B;&#x65E0;&#x76EE;&#x7684; 01 - &#x5B81;&#x9759;&#x96BE;&#x5F97;</title>
        <link>https://justinyan.eth.limo/E77CB97A-10E1-48B8-B87C-E403A7C62F73/</link>
        <guid>https://justinyan.eth.limo/E77CB97A-10E1-48B8-B87C-E403A7C62F73/</guid>
        <pubDate>Sun, 09 May 2021 12:51:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/漫无目的001.jpg" alt="漫无目的01: 宁静难得" /></p> 
<p>设想在一个夏日的午后，凉风穿过树影摇曳的青草地，抚皱水面漾成粼粼波光。从停车场走上清水混凝土包围的小径，拐过迷宫似的正门，水潭中一座小桥通往“和美术馆”的主入口。不用说，小桥也是清水混凝土作成。</p> 
<p>真是难得宁静的地方。</p> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/mwmd-001-001-squashed.jpg" /></p> 
<p>信步走进建筑主体，这是个双螺旋楼梯，让我想起巴黎卢浮宫的大回环出口，只是和美术馆的更小，亦省去了繁复的扶手雕饰，是安藤忠雄一贯的风格。</p> 
<p>所幸来得早，拍照的青年男女不多，可以静静欣赏从天井泻下来的阳光，落在阶梯上留下的好看的金色。</p> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/mwmd-001-002-squashed.jpg" /></p> 
<p>和美术馆原计划是2020年3月底开放，但因为疫情的关系推迟到年底。我此番前往，也算早鸟。我是冲着安藤忠雄的建筑及其展览而来。</p> 
<p>这是和美术馆的首展，名为“超越：安藤忠雄的艺术人生”。参观当日恰逢威尼斯双年展的中国部分巡展来到广州，所以也顺便看了。</p> 
<p>看双年展其间，我时不时想起<a href="https://justinyan.me/post/4525">贡布里希所不屑的掉书袋之人</a>，所以我尽量只欣赏作品本身，不带多余的个人偏见，却还是找不到感动之处。后来我在咖啡馆坐下，通过网络和朋友交流这场展览的时候，我才想到：“我到底对当代艺术抱有什么不切实际的期待呢？”</p> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/mwmd-001-003-squashed.jpg" /></p> 
<p>这个展览我比较喜欢一块石膏板上的抽象画以及陈琦的《荷之舞》水印木刻，前者很有想象的余地，而后者颇具灵性。至于进门的3D互动装置和摄像头采集的影像装置，则在技术上显得落伍，不像一个前沿艺术家应该摆出来的东西。不过也许艺术家本身不想表达前沿，但作品本身也乏善可陈。至于用泥土做雕塑的影像资料，称致敬米开朗基罗的，则相去甚远。</p> 
<p>所以匆匆路过之后来到本次参观的重点：安藤忠雄的展览。展览分为三个部分，第一部分是安藤忠雄早年在世界各地游历时对他有影响的艺术家们。这一部分其实比较牵强，代入了策展人比较多想法，展出的作品都不是安藤忠雄的，只在每一个陈列室前面留下安藤忠雄手书的，与该艺术家的渊源。</p> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/mwmd-001-005.jpg" /></p> 
<p>一开始我抱着来看安藤忠雄的心态，觉得这个展览诚意不足。但却也从中发现了有意思的作品，比如达明安·赫斯特(Damien Hirst)的蝴蝶拼画《神圣》(Confession，字面意思是告解，不知道为什么翻译为“神圣”)，他用了许多蝴蝶来完成这幅画，作品的尺度也够大，布展的陈列室四面是镜子，圆心的白色墙面上挂着这幅蓝光闪闪的画作，像万花筒。不过参观的时候我心想：不知道爱蝶人士会不会抗议呢？</p> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/mwmd-001-004.jpg" /></p> 
<p>杉本博司的摄影作品《日本海、隐岐》是我在这一部分最大的收获。在一间长方形的陈列室里，阳光透过白色窗帘，把房间晕染出神秘又宁静的气息。中间置两张长凳，正对着前后两幅挂在墙上的影像。坐在雾气弥漫的相片前面，心情也平静了下来。如果不是因为旁边的工作人员站得很近而且一直微微摇晃我觉得这里真是一个绝佳的冥想场所。</p> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/mwmd-001-006-1.jpg" /></p> 
<p>展览的第二部分是安藤忠雄的手稿、他给自己的建筑作品拍摄的相片。不过这一部分最有意思的地方应该是和美术馆建筑的V型柱，在临窗过道间展示出别致的一面。安藤忠雄拍摄的相片也透出一种清水混凝土般的朴素和宁静。我所在的这个建筑，外面是商场，是高楼，是成片的别墅，还有高尔夫球场。只因着墙面的隔离与水波的倒影，才显得遗世而独立。</p> 
<p>这一部分有一个小小展厅，一次只允许一人进入，可以“跟安藤忠雄对话”。其实只是在一个桌面上摆了一只话筒，话筒上方安藤忠雄正在iPad里介绍他的“青苹果”，介绍这次展览的背景。话筒的录音是开着的，你可以留下想对安藤忠雄说的话。</p> 
<p>虽然参观的人不多，但我对着话筒，却不知该说些什么。安藤忠雄是一个在年轻的时候就明白自己要做什么，并全力去追逐的人。因着时代，因着他的努力，他可以说获得了个人追求上的，和世俗意义上的成功。但是那些跟他一样全力去追逐，然后失败了的人又怎样呢？不知道他们是什么想法呢？至少不会后悔吧。挺好的。</p> 
<p>展览的第三部分有一些模型，也有相片，颇有凑数之嫌。以我愚见，这一次的展览布置跟建筑物的空间结合得很好，陈列墙、光线、导览标识等各方面都很优秀，只是还嫌不够丰富。和美术馆的空间足够布陈更多内容，以及更大尺度的作品。也许是因为和美术馆才刚刚开放，能有这样的展览已经十分难得。不过也是因为展品不多，所以布展的时候才可以如此奢侈地一件展品占满一个独立空间吧。</p> 
<p>和美术馆入场是需要收费的，135元的门票在过滤饭后遛弯人群的效果十分显著。带小孩入场的母亲也会注意到让孩子不要高声叫喊。相比之下广东美术馆自从免费以后沦为回荡着尖叫声的游乐场，还是十分可惜。</p> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/mwmd-001-007-1.jpg" /></p> 
<p>参观结束后，我在长凳上坐着发呆了一阵子。都市中这样清净的时刻太难得。周邦彦写黄昏的水是这样的：</p> 
<blockquote>
 <p> 叶下斜阳照水，卷清浪、沉沉千里。 </p>
</blockquote> 
<p>隔着玻璃窗，望着窗外阳光下波光粼粼的水池，我想起小时候的假日时光。那是真正的假日，小伙伴们搬起小板凳坐在池塘前，佯装是坐在大船上，呼呼往前驶去。风向变了，哦，又呼呼往后退了。</p> 
<p>叮叮！我的手机响了。</p> 
<p>2021.05.08/夜</p> 
<p>于自居</p> 
<blockquote>
 <p> 你好，这里是《漫无目的》，我是枫影Justin Yan，感谢你的阅读。 </p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #165 &#x6069;&#x65AF;&#x7279;&#xB7;&#x8D21;&#x5E03;&#x91CC;&#x5E0C; - &#x300A;&#x827A;&#x672F;&#x7684;&#x6545;&#x4E8B;&#x300B;(The Story of Art)</title>
        <link>https://justinyan.eth.limo/BE3F5D43-009A-4B2B-B72A-DD89D1C16AEA/</link>
        <guid>https://justinyan.eth.limo/BE3F5D43-009A-4B2B-B72A-DD89D1C16AEA/</guid>
        <pubDate>Thu, 06 May 2021 08:36:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/fyyd-012.jpg" alt="枫影夜读 #12——恩斯特·贡布里希《艺术的故事》" /></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/fyyd-012-quote.jpg" alt="There really is no such thing as Art. There are only artists." /></p> 
<blockquote>
 <p> 没有<strong>艺术</strong>这回事，只有艺术家而已。 </p>
</blockquote> 
<p>你好，这里是《枫影夜读》，我是枫影Justin Yan。</p> 
<p>2016年我读完《剑桥艺术史》（感兴趣的读者请翻到底部扩展阅读）之后就一直想读<strong>恩斯特·贡布里希爵士(Sir Ernst Hans Josef Gombrich)的这本举世闻名之著作——《艺术的故事》(The Story of Art)</strong>，却拖到今天(2021年)才读完。</p> 
<p>2016-2018这几年我非常幸运，每年有机会到世界各地旅行，走进以前只能通过谷歌街景欣赏的建筑兴奋地四处张望，也到过一些特别有意思的博物馆。但是近几年因为疫情和工作的关系，旅行的余裕不再，不过此番读起贡布里希的《艺术的故事》，徜徉在作者精心挑选的艺术作品之中，又仿佛神游古迹，再度穿越时空与文艺复兴的天才们相遇。</p> 
<p>贡布里希在本书开篇《导论：论艺术和艺术家》中直言:</p> 
<blockquote>
 <p> “For Art with a capital A has come to be something of a bogey and a fetish.”</p> 
 <p> “事实上，大写的艺术已经成为叫人害怕的怪物和为人膜拜的偶像。” </p>
</blockquote> 
<p>对生活在21世纪的我们而言，“艺术是什么？”(What is Art?)恐怕是一个令人十分费解的问题。经历过20世纪实验性艺术的爆发、备受质疑和迅速地为大众所接受之后，当代艺术确实成了一种不知道该从何下手的艺术。古埃及陵墓的人偶有灵魂陪葬的意义，古希腊神庙的雕像有诸神的灵气，中世纪的基督教艺术有明确的宗教教育意义，甚至文艺复兴的母题依然是艺术家在为赞助人制作目的明确的作品。只是到了当代，“何为艺术”却似一团迷雾笼罩在公众的视野里。</p> 
<p>我们没有了诸神的献祭仪式，没有了圣经的教育意图，没有了肖像传世的贵族需求，艺术到底应该是什么？艺术家们应该做什么？</p> 
<p>为什么马塞尔·杜尚拿起一件小便器起名之为《泉》(Fountain)然后再署上大名就可称其为艺术？签我的名字可以吗？</p> 
<p>为什么村上隆用水墨在白纸上画一个圈起名为《圆相》就有那么多人抢购？我也去画个圈有人买吗？</p> 
<p>如果说以前的艺术家是受雇于某些人，带着具体的目的在制作艺术品，那从什么时候开始他们不再这么做了，而是面向大众市场，面向谁也说不清的东西在“创作”呢？</p> 
<p>贡布里希没有在《艺术的故事》里正面回答这个问题，但是如果能跟随作者的笔触，漫游原始艺术到当代艺术，相信这个迷雾会有所消散。</p> 
<p>贡布里希全名Ernst Hans Josef Gombrich，他出生于1909年的维也纳。维也纳是当时世界列强之一——奥匈帝国的首都，这座城市培养过不少传奇人物。斯蒂芬·茨威格(Stefan Zweig)生于维也纳，西格蒙德·弗洛伊德(Sigmund Freud)在此上学和工作，还有二战的大Boss阿道夫·希特勒(Adolf Hitler)曾在维也纳街头流浪。贡布里希的家庭环境很好，父亲Karl Gombrich是一位律师，母亲Leonie Hock是一位出名的钢琴家。</p> 
<p>1936年27岁的贡布里希和Ilse Heller结婚，她是贡布里希母亲的学生，也是一位出色的钢琴家。同年贡布里希出版了生平第一本著作《世界小史》(A Little History of the World)，是一部用德语写就的作品。这本书在当时非常受欢迎。后来在朋友Ernst Kris的劝说下，贡布里希搬到英国伦敦，在瓦尔堡研究所教学。二战期间，贡布里希还跟Kris一起帮BBC监听德国的无线通信，贡布里希是第一个把希特勒的死讯传达给丘吉尔的人。贡布里希在瓦尔堡研究所工作多年，从助理研究员到教授到被授予爵士，一生获奖无数。</p> 
<p>贡布里希不仅是众所瞻望的学者，更是一个妙笔生花的作家。阅读《艺术的故事》的过程中，我每每为其渊博之学识，谦恭之姿态，优雅之文笔，严谨之思考所折服。虽然从内容尺度上看《剑桥艺术史》跟本作差不多甚至当代艺术的部分要更加丰富，但那毕竟是剑桥大学多位学者合著的作品，而《艺术的故事》则完全来自贡布里希爵士个人的知识储备。这种一以贯之的个人品味也造就了本作始终如一的写作风格和评价姿态。</p> 
<p>贡布里希在评价艺术时通常小心翼翼，不带过于强烈的个人情感，以至于我在最喜欢的文艺复兴三杰部分，却迟迟等不到他对米开朗基罗的《最终审批》和晚年的未竟雕塑之评价。历史上著名的艺术家很多，代表作更多。如何选择最有代表性的作品，服从于艺术史之主题，就十分考验作者的取舍，而多数时候，只是“舍”。</p> 
<p>米开朗基罗(Michelangelo)无疑是艺术史上最天才的艺术家之一。他自称为“雕刻家米开朗基罗”。当年受教皇之命去画西斯廷礼拜堂上的天顶画时，他其实心心念念的都是那个未竟的陵墓工程：从他精挑细选的大理石中唤醒一个个内心早已设想完全的形象。米开朗基罗在西斯廷画的《创世纪》无疑是宏伟的，是和谐的，而西斯廷墙上的巨型祭坛画《最后的审判》(The Last Judgment)更是他毕生热情的倾泻。但贡布里希并没有在书中对米开朗基罗进行狂风暴雨式的热情的描写，提到西斯廷天顶画他只是说:</p> 
<blockquote>
 <p> “One can feel how he enjoyed his stupendous mastery and how his disappointment and his wrath at being prevented from continuing to work in the material he preferred spurred him on even more to show his enemies, real or suspected, that, if they forced him to paint - well, he would show him!”</p> 
 <p> “人们能够感觉到他是多么欣赏他的伟大技艺，当他受到阻挠不能继续用他更为喜爱的材料进行工作，他的失望和愤怒是怎样激励他更加奋发，向他的真正的和猜想的对手表明，既然要逼迫他作画——好吧，他就索性画给他们看看！” </p>
</blockquote> 
<p>米开朗基罗一生留下的作品很多，值得评述得也很多，但是贡布里希只选择了天顶画以及他的雕塑《垂死的奴隶》(Dying Slave)来作点评，可以说非常克制。另一位同样热情洋溢的画家文森特·梵高(Vincent van Gogh)在书中也并未多着笔墨，只拣了三张梵高的画作点评，且不包含大众所熟知的《向日葵》(Sunflowers)和《星空》(The Starry Night)。</p> 
<p>《艺术的故事》涵盖的时间尺度很大，作家在编写时必须有所取舍，只有符合贡布里希所要讲述的主线的他才会包含进来。这对于熟悉了“主流艺术评论”的读者来说也可以是一种新鲜的视角。不过我也发现贡布里希似乎特别喜欢伦勃朗，因为在讲述伦勃朗的一幅肖像画时他说：</p> 
<blockquote>
 <p> “We feel we know this man. We have seen other portraits by great masters which are memorable for the way they sum up a person's character and role. But event the greatest of them may remind us of characters in fiction or actors on the stage. They are convincing and impressive, but we sense that they can only represent one side of a complex human being. Not event the Mona Lisa can always have smiled. But in Rembrandt's great portraits we feel face to face with real people, we sense their warmth, their need for sympathy and also their loneliness and their suffering. Those keen and steady eyes that we know so well from Rembrandt's self-portraits must have been able to look straight into the human heart.”</p> 
 <p> “我们觉得我们认识这个热闹。我们已经看过出自其他大师笔下的肖像，它们之所以令人难以忘怀，在于它们概括一个人的性格和角色的方式。然而连它们之中最伟大的作品也可能使我们联想起小说中的人物或舞台上的演员。它们令人幸福，感人至深，但是它们只能表现一个复杂人物的一个侧面。甚至蒙娜·丽莎也不可能总是刚刚笑过的样子。而伦勃朗的伟大肖像画让我们觉得是跟现实的人物面对面，我们感觉出他们的热情，他们所需要的同情，还有他们的孤独和他们的苦难。我们在伦勃朗自画像中已经非常熟悉的那双敏锐而坚定的眼睛，想必能够洞察人物的内心。” </p>
</blockquote> 
<p>这一段可以说是全书非常少见的情感饱满的赞誉了，可见贡布里希有多喜欢伦勃朗，达芬奇、米开朗基罗和拉斐尔可没有这待遇。</p> 
<p>当然贡布里希也意识到好像赞过头了，于是他说：</p> 
<blockquote>
 <p> “I realize that such an expression may sound sentimental, but I known no other way of describing the almost uncanny knowledge Rembrandt appears to have had of what the Greeks called the 'workings of the soul', page 94.”</p> 
 <p> “我认识到这种讲法听起来可能感情用事，但是伦勃朗对希腊人所谓的‘心灵活动’（见94页）似乎具有近乎神奇的真知灼见，这一点我不知道还有什么方式能够加以描述。” </p>
</blockquote> 
<p>这里读者朋友们发现有一个(见94页)的提醒，这是贡布里希在《艺术的故事》里贯穿始终，提醒读者往回翻页参考的做法。比如在讲述提香(Tiziano Vecelli)的圣母祭坛画时提醒读者回到216页参考把供养人肖像放进画里的传统。这个细节让我在阅读的过程中深受感动，贡布里希就像一位老师，亲手在指点读者们不忘前后对照，以获得更加深刻的理解。同时我也在思考一个问题：这个中文译本的出版社要针对页数进行校对，工作量可不小啊。</p> 
<p>本书的英文版是1950年由Phaidon出版社出版，我阅读的中文版是由中国美术学院的范景中教授与好友中国社会科学院语言研究所的杨成凯先生共同翻译，由广西美术出版社的版本。中文翻译质量出乎意料的好，除了有些人名比如Jacques-Louis David大家都习惯翻译为雅克-路易·大卫，但是这个译本却翻译为雅克-洛易·达维德，让我十分费解。后来发现在后记中，范景中教授称本书最早翻译于1980年代(2013年的后记，称30年前)，可能有所关联。后记中也提及人名翻译参考了新华通讯社的译名手册,不过除此之外几乎没有翻译问题。更可贵的是书中斟酌之处皆标原文，所有人名也都给出原名，本人表示十分感激。可惜这样的翻译质量，在近几年国内出版的英文中译本里已是凤毛麟角。</p> 
<p>至于前面说的页数问题，我一开始担心中文翻译之后排版上跟英文肯定对不上，这样页数和插图排版势必也要跟着重制。正巧我太太有一本Phaidon出版的英文版，我打开一看，天呐，页数和插图排版一模一样！只能说我自己真笨，这么好的解决办法我怎么没想到呢？只要修改中文的排版，使其与英文版完全对齐，就不存在页数和插图重新校对的问题了。</p> 
<p>这本书非常厚实，采用787mmx1092mm 1/16规格，页数将近700页，但是附录也很长，除去附录为637页，采用胶版纸印刷，整体看上去跟一部大词典一样，乍看之下令人望而生畏。但是读者完全不用担心是在啃大部头：</p> 
<p>一、贡布里希的文笔非常流畅易读，措辞浅近而独特，以时间为主线也不至迷失，读起来毫不费力。</p> 
<p>二、书中包含大量插图，所以其实文字内容并没有看上去那么多，而且印刷质量很好，阅读过程中时不时停下来欣赏画作也是一种适时的放松。</p> 
<p>所以整个阅读过程是非常愉悦而轻松的，但是我必须提醒一点：Phaidon这本英文版的纸张采用的是铜版纸，印刷质量更好，画作还原更佳。中文版和英文版放在一起，色差对比明显，我想应该还是中文书的低价倒逼成本缩减所致。所以如果英文好的话建议阅读英文版，如果像我一样不想读这么大一本英文书的话，同时买两本也是不错的收藏。</p> 
<p>另外我不建议大家买电子版，现在应该也买不到电子版（截止写稿日期2021年5月3日）。之前我阅读《大英博物馆世界简史》(A History of the World in 100 Objects)是在Kindle上阅读，但是因为需要翻页参考插图，即便有iPad Pro加持我也还是翻得很辛苦，所以建议大家不要在电子设备上阅读此类读物。</p> 
<p>最后是关于观看插图和欣赏原作的差别，贡布里希爵士在书中的态度是非常坚定的，插图是永远无法代替原作来欣赏的。我深感赞同。且不说挪不动的建筑物必须亲临其境，即便是绘画艺术，仅凭插画永远无法还原其真实尺度，原作在现实光线下的效果，画家的笔触，非实物无以比拟。所以如果有条件的话，阅读完本作之后还是应该到博物馆好好看一下原作。只是如果贡布里希爵士知道现在去卢浮宫也无法在拥挤的人潮中好好体验到蒙娜丽莎的神秘的话，不知道他会作何感想。</p> 
<p>回到最初的问题，什么是艺术？我还是没有办法回答。因为艺术从一个具有明确目的性的事情演化到了今天，已经失去了原本的目的了。所以贡布里希才会说“没有艺术这回事，只有艺术家而已”吧。不管怎样，有件事情是肯定的，那就是艺术家都在追求美的东西，虽然大家对美的定义不一样。作为一个当代的艺术小白，学习如何欣赏美，就是在学习如何欣赏艺术了。我不懂得如何去画一幅画，也不懂得如何给一个小便器签名让它变成艺术，但是我喜欢艺术家们的故事，希望他们对美的极致追求。我不想变成《午夜巴黎》里面那个在女主角面前掉书袋的半吊子“知识分子”，我更想要的是站在一幅画的前面，能够从容地欣赏到它的美，与不美。而其实这个能力我们早就拥有了，不需要负手在一幅画面前沉默，点点头，然后走向下一幅。画就在那里，看画的我们觉得美那就是美的，不美就是不美的，差别只在于如何发现美而已。</p> 
<p>2021.05.03/夜<br /> 于自居</p> 
<h2>参考资料</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️⭐️(5/5)</li> 
 <li>标题: 艺术的故事</li> 
 <li>英文标题: The Story of Art</li> 
 <li>翻译: 范景中</li> 
 <li>校译: 杨成凯</li> 
 <li>作者: 恩斯特·贡布里希(Ernst Gombrich)</li> 
 <li>出版社: 广西美术出版社</li> 
 <li>出版年: 2018年3月第1版第11次印刷</li> 
 <li>ISBN: 978-7-80746-372-6/J·882</li> 
 <li>版本: 纸质版</li> 
</ul> 
<h2>扩展阅读</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/2710">每周读书 #113 学会欣赏画作——《剑桥艺术史：绘画观赏》</a></li> 
 <li><a href="https://justinyan.me/post/2736">每周读书 #114 古希腊罗马艺术为何令人着迷——《剑桥艺术史：古希腊罗马艺术》 </a></li> 
 <li><a href="https://justinyan.me/post/2748">每周读书 #115 教堂！教堂！教堂！——《剑桥艺术史：中世纪艺术》</a></li> 
 <li><a href="https://justinyan.me/post/2762">每周读书 #116 天才辈出的时代——《剑桥艺术史：文艺复兴》 </a></li> 
 <li><a href="https://justinyan.me/post/2780">每周读书 #117 所谓巴洛克——《剑桥艺术史：十七世纪艺术》 </a></li> 
 <li><a href="https://justinyan.me/post/2794">每周读书 #118 从洛可可到新古典主义——《剑桥艺术史:18 世纪艺术》</a></li> 
 <li><a href="https://justinyan.me/post/2811">每周读书 #119 从浪漫主义到印象派——《剑桥艺术史：19 世纪艺术》</a></li> 
 <li><a href="https://justinyan.me/post/2825">每周读书 #120 什么是艺术？什么是艺术家？——《剑桥艺术史：20 世纪艺术》</a></li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://zh.wikipedia.org/wiki/%E6%81%A9%E6%96%AF%E7%89%B9%C2%B7%E8%B4%A1%E5%B8%83%E9%87%8C%E5%B8%8C">https://zh.wikipedia.org/wiki/恩斯特·贡布里希</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Ernst_Gombrich">https://en.wikipedia.org/wiki/Ernst_Gombrich</a></li> 
 <li><a href="https://www.nytimes.com/2001/11/07/obituaries/e-h-gombrich-author-and-theorist-who-redefined-art-history-is.html">https://www.nytimes.com/2001/11/07/obituaries/e-h-gombrich-author-and-theorist-who-redefined-art-history-is.html</a></li> 
 <li><a href="https://www.bbc.co.uk/sounds/play/b0bcdd8j">https://www.bbc.co.uk/sounds/play/b0bcdd8j</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 38 QQ&#x97F3;&#x4E50;&#x64AD;&#x5BA2;&#x7EBF;&#x4E0B;&#x6C99;&#x9F99;(&#x756A;&#x5916;)</title>
        <link>https://justinyan.eth.limo/43897599-0835-4D52-B57E-A518A7C5D796/</link>
        <guid>https://justinyan.eth.limo/43897599-0835-4D52-B57E-A518A7C5D796/</guid>
        <pubDate>Wed, 28 Apr 2021 10:31:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/04/Podcast038.png" alt="Vol. 38 QQ音乐播客线下沙龙(番外)" /></p> 
<p>哈喽大家好！这是一期迟来的线下活动番外。上个月(2021年3月)我们作为“尾部播客”受邀到深圳参加“QQ音乐播客线下沙龙”活动，见到了像《大内密谈》、《凑近点看》等“头部播客”的主播们，非常开心。</p> 
<p>晚上结束了之后我们俩在腾讯大厦里找了个会议室又聊了一顿。我(Justin)大概有七、八年没回来这个地方了，颇有感慨，再加上我是《大内密谈》多年的粉丝，一个正儿八经的大密蜜，能见到相征而且还合影了，内心十分激动。</p> 
<p>所以这是一期很多感慨的节目，感谢收听我们节目的听众朋友们，感谢有你们的陪伴，希望我们的节目未来能越做越好。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/04/IMAGE-2021-04-27-165437.jpg" alt="QQ音乐播客线下沙龙" /></p> 
<h2>时间轴</h2> 
<p>00:50 回顾QQ音乐播客线下沙龙<br /> 09:09 录制播客节目的一些思考<br /> 17:43 做播客的初衷是什么？<br /> 24:57 身边的同事和朋友反馈如何？<br /> 30:43 做播客时遇到的趣事<br /> 39:10 本台迟到的年终总结<br /> 49:08 黑话与专业失语症<br /> 56:55 本台2021的展望<br /> 59:20 片尾曲: Kula Shaker - Hush</p> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://c.y.qq.com/base/fcgi-bin/u?__=ToPzr2w">Kula Shaker - Hush</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 37 2021&#x82F9;&#x679C;&#x6625;&#x5B63;&#x5410;&#x69FD;&#x5927;&#x4F1A;</title>
        <link>https://justinyan.eth.limo/ABAF67E6-DBF1-4FB3-AE8C-EAFDA91C876A/</link>
        <guid>https://justinyan.eth.limo/ABAF67E6-DBF1-4FB3-AE8C-EAFDA91C876A/</guid>
        <pubDate>Thu, 22 Apr 2021 15:57:40 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/04/Podcast037-01.png" alt="Vol. 37 2021苹果春季吐槽大会" /></p> 
<p>2021年四月苹果发布会刚刚结束，这一次苹果给我们带来了全新的产品 AirTag，七彩涂装的iMac，性能再次爆表的iPad Pro等一系列新品。</p> 
<p>两位主播照例熬夜看发布会，Tim Cook在Apple Park里闲庭信步，给我们带来槽点满满的新科技，我们当然要吐槽一期啦。</p> 
<p>各位听众小伙伴们，这一波你们有想买的新品吗？欢迎在评论区留言交流哦</p> 
<p><em>P.S. 纠正节目中说19世纪就有UWB技术了，这是错误的。最早的UWB技术是1960年代开始研发的，那时候还不叫这个名字。<a href="https://www.ntia.doc.gov/legacy/osmhome/uwbtestplan/barret_history_(piersw-figs).pdf">详情参看这里</a>。</em></p> 
<h2>时间轴</h2> 
<ul> 
 <li>01:28 AirTag</li> 
 <li>23:46 Apple Podcast</li> 
 <li>26:15 Apple TV 4K</li> 
 <li>35:09 iMac with M1</li> 
 <li>45:43 iPad Pro with M1 </li> 
 <li>54:42 互动问题：这次新品硬件你会买吗？</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://c.y.qq.com/base/fcgi-bin/u?__=BY2CCde">Better In Color - Lizzo</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 36 &#x97ED;&#x83DC;&#x662F;&#x5982;&#x4F55;&#x641E;&#x94B1;&#x7684;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/8D5C6E3A-097D-4165-9CEF-F36CDEE57BEC/</link>
        <guid>https://justinyan.eth.limo/8D5C6E3A-097D-4165-9CEF-F36CDEE57BEC/</guid>
        <pubDate>Mon, 29 Mar 2021 13:54:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/Podcast-Cover-v36.png" alt="Vol. 36 韭菜是如何搞钱的？" /></p> 
<p>哈喽大家好我是Justin，3月中我和自力参加QQ音乐的播客沙龙活动，见到了《大内密谈》的划水怪本怪，还认识了好多做播客的朋友，甚是开心。</p> 
<p>既然难得有见面的机会肯定要录上两期节目再走啦！于是本后期小哥在活动结束后就开始补剪之前录的节目，本期为深圳之行的第一期，两位韭菜主播再次聚首，分享韭菜养成经验😂</p> 
<p>不管是韭菜还是大佬，本着“你不理财，财不理你”的想法（很接地气吧🤦‍♂️），两位主播在股市大跌的日子里抱团取暖，互相分享理(jiu)财(caì)经验。</p> 
<p>如果听众朋友们也有关于投资理财或者韭菜修养的想法，欢迎大家在评论区留言交流哦。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>04:00 为什么要投资理财？</li> 
 <li>20:00 基金、股票和BTC</li> 
 <li>33:52 长线投资 vs 短线投机</li> 
 <li>50:15 普通人如何挑选优质标的</li> 
 <li>55:49 时间该投向何处?</li> 
 <li>59:58 投资身体与健康</li> 
 <li>01:07:04 互动话题：你的财富密码是什么？</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://c.y.qq.com/base/fcgi-bin/u?__=SSfoOc">Taylor Swift - Red</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 35 &#x79D1;&#x6280;007: Setapp&#x8FD8;&#x503C;&#x5F97;&#x7EED;&#x8D39;&#x5417;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/B29B94ED-D601-4CEA-8758-5DE4A915C541/</link>
        <guid>https://justinyan.eth.limo/B29B94ED-D601-4CEA-8758-5DE4A915C541/</guid>
        <pubDate>Mon, 22 Mar 2021 08:50:01 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/Podcast-Cover-035.png" alt="Vol. 35 科技007: Setapp还值得续费吗？" /></p> 
<p>Setapp 刚出来的时候两位主播都成为了第一波吃螃蟹的人，没想到一晃四年过去了，Setapp 也从当年的 Beta 版发展到了拥有 200+ Apps 的成熟订阅服务。</p> 
<p>截止到节目录制时间，Setapp 收费是 $9.99 USD per month，年付是 $107.88 USD per year，并且所有的 Plan 都限制了单设备使用。如果需要在多台设备上使用 Setapp，你还需要为每台设备单独付费，价格为 $2.49 USD per month。</p> 
<p>这样的定价已经算非常高了，所以本期"科技007"，我们来讨论下，价格昂贵的 Setapp 还值得续费吗？</p> 
<p>欢迎大家在评论区留下你的想法。</p> 
<h2>时间轴</h2> 
<ul> 
 <li>00:30 从 Setapp 聊起</li> 
 <li>06:02 当年为何选择入坑 Setapp?</li> 
 <li>09:51 有哪些很值的 App 加入了 Setapp?</li> 
 <li>18:55 在 Mac 上买过什么不值的 App？</li> 
 <li>31:24 期望什么 App 未来加入 Setapp?</li> 
 <li>36:08 从开发者和消费者角聊付费生态</li> 
 <li>47:00 macOS 和 iOS 付费生态的差异</li> 
 <li>52:40 畅想 macOS 付费生态的未来</li> 
 <li>01:08:00 Setapp还值得续费吗?</li> 
</ul> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://c.y.qq.com/base/fcgi-bin/u?__=C3JF6">OneRepublic - Counting Stars</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x4F55;&#x4F7F;&#x7528;Sparkle&#x5B9E;&#x73B0;Mac App&#x81EA;&#x52A8;&#x66F4;&#x65B0;</title>
        <link>https://justinyan.eth.limo/029C1E7C-BD6C-408E-A229-171D0BE58CF2/</link>
        <guid>https://justinyan.eth.limo/029C1E7C-BD6C-408E-A229-171D0BE58CF2/</guid>
        <pubDate>Mon, 15 Mar 2021 17:22:41 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/blog-sparkle-cover-1.jpg" alt="如何使用Sparkle实现Mac App自动更新" /></p> 
<p>有做Mac App开发的朋友应该多少都听说过<a href="https://sparkle-project.org/documentation/">Sparkle Framework</a>。因为macOS允许在Mac App Store以外进行App分发，所以如果你的App不上App Store那就得自己解决App更新问题。Sparkle就是一个非常好用的解决方案。</p> 
<p>Sparkle的原理也很简单，以<code>appcast.xml</code>文件为数据规范，提供客户端的检查更新、下载、数据校验、自动替换等通用能力。App的CDN存储、更新信息的XML文件hosting由开发者自行解决。</p> 
<p>客户端的部分提供了多个进程，被打包进主App，non-sandbox app逻辑比较简单，直接由<code>Autoupdate.app</code>来下载更新就行，但是sandboxed app就比较麻烦了，光是xpc的部分Sparkle就做了<a href="https://sparkle-project.org/documentation/sandboxing/">多个binary processes</a>。</p> 
<p>Sparkle的接入并不复杂，一般根据<a href="https://sparkle-project.org/documentation/">Sparkle官方文档</a>操作就能完成，这里我把接入过程和遇到的问题写出来记录分享一下。</p> 
<h2>1. 接入Sparkle</h2> 
<p>推荐使用<code>CocoaPods</code>接入，最简单。</p> 
<pre><code>use_frameworks!
//...
pod 'Sparkle'
</code></pre> 
<p>主工程里初始化<code>SUUpdater</code>，我一般放在<code>AppDelegate.swift</code>里面，或者跟它同级别的实例:</p> 
<pre><code>var updater: SUUpdater!
</code><p><code>func setupUpdater() {<br /> updater.feedURL = URL(string: url)<br /> updater.automaticallyChecksForUpdates = true<br /> updater.updateCheckInterval = 60<em>60</em>12 // 12hrs<br /> updater.sendsSystemProfile = true<br /> updater.delegate = self<br /> }<br /> </code></p></pre>
<p></p> 
<p><code>url</code>就是你的server host的<code>appcast.xml</code>，比如Just Focus的就是这样的:</p> 
<pre><code>&lt;rss xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" version="2.0"&gt;
    &lt;channel&gt;
        &lt;title&gt;JustFocus&lt;/title&gt;
        &lt;item&gt;
            &lt;title&gt;2.0.0&lt;/title&gt;
            &lt;pubDate&gt;Mon, 15 Mar 2021 00:28:29 +0800&lt;/pubDate&gt;
            &lt;sparkle:minimumSystemVersion&gt;10.13&lt;/sparkle:minimumSystemVersion&gt;
            &lt;enclosure url="https://your/update/file.zip" sparkle:version="601" sparkle:shortVersionString="2.0.0" length="15981682" type="application/octet-stream" sparkle:edSignature="&lt;you-ed-signature&gt;"/&gt;
            &lt;description&gt;
                &lt;h2&gt;2.0.0 (Beta 1)&lt;/h2&gt;
                &lt;p&gt;Build 599, 14 March 2021&lt;/p&gt;
                &lt;ul&gt;
                    &lt;li&gt;New: Custom quotes supported.&lt;/li&gt;
                &lt;/ul&gt;
            &lt;/description&gt;
        &lt;/item&gt;
    &lt;/channel&gt;
&lt;/rss&gt;
</code></pre> 
<p>最好是自己有一个一键打包上传脚本，自动更新一下<code>appcast.xml</code>文件。其中<code>edSignature</code>是Sparkle用于校验下载的包的，采用<code>EdDSA (ed25519)</code>算法，是一种非对称加密算法。</p> 
<p>我们可以通过Sparkle提供的<code>./bin/generate_keys</code>工具来生成公私钥，公钥写进App的<code>Info.plist</code>文件里，私钥默认存进Mac的Keychains。每次打包完就用Sparkle提供的<code>generate_appcast</code>工具自动生成签名和xml文件即可。</p> 
<p><strong>需要注意的是:</strong>如果你换了一台编译机，那么私钥务必记得带过去，否则工具可能不会报错，但是会无法生成<code>edSignature</code>导致App自动更新失败。</p> 
<h2>2. Hardened Runtime &amp; Notarization</h2> 
<p>以往开发者最熟悉的安全需求应该是Code Signing，macOS可以很好地校验代码的安全性，主要是防止被第三方篡改，后来苹果在此基础上又增加了一大堆有的没的权限校验，给开发者带来不少麻烦。</p> 
<p>苹果在2018年发布的macOS Mojave系统带上了一个安全性更新:<a href="https://developer.apple.com/documentation/security/hardened_runtime">Hardened Runtime</a>。在code signing阶段，Xcode会自动给app打上一个flag，这样Cocoa runtime会在运行时进行一系列检查校验，未经授权的操作就会失败。对于开发者来讲，就是要在Xcode工程中的Capability选项中打开Hardened Runtime，并且勾选自己需要的权限，比如说<code>MAP_JIT</code>允许你的App用<code>mmap()</code>分配一块可写可运行的内存，比如<code>JSCore</code>需要的JIT优化。</p> 
<p>这个选项本来不是必须的，但是2019年WWDC之后苹果要求所有在Mac App Store以外分发的应用都需要进行Notarization。简单说就是把编译好的App上传到苹果的服务器，进行机器安全校验（不进行App Store的人工审核），如果校验通过就会在服务器端记录这个请求，并返回给你一个标记，你可以打进你的App里面(使用苹果的<code>xcrun stapler</code>工具)。</p> 
<p>这样macOS的<code>Gatekeeper</code>在打开你的App时，如果有联网就会去服务器请求这个App是否通过了检查，否则默认阻止用户打开(需要右键打开)。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/notarization.png" alt="" /></p> 
<p>断网时就可以通过你staple进去的tag来识别。</p> 
<p>那么这跟Sparkle有什么关系呢？前文提到Sparkle自带了几个App比如<code>Autoupdate.app</code>，这些不在我们的主工程里做code signing但会带进我们的包里，所以传到notary服务器就会报错，notarization失败: Your Mac software was not notarized。</p> 
<p>解决方案是针对这些自带的app做一次重签名:</p> 
<pre><code>post_install do |installer|
    system("codesign --force -o runtime -s '&lt;your-deveoploer-id-cert&gt;' Pods/Sparkle/Sparkle.framework/Versions/A/Sparkle")
    system("codesign --force -o runtime -s '&lt;your-deveoploer-id-cert&gt;' Pods/Sparkle/Sparkle.framework/Resources/Autoupdate.app/Contents/MacOS/Autoupdate")
    system("codesign --force -o runtime -s '&lt;your-deveoploer-id-cert&gt;' Pods/Sparkle/Sparkle.framework/Resources/Autoupdate.app/Contents/MacOS/fileop")
end
</code></pre> 
<h2>3. Sandboxing</h2> 
<p>众所周知，Mac App Store要求上传的app全部都要打开App Sandbox，而Sparkle默认的实现无法对sandboxed app进行安装更新。如果你的app不上App Store那一切都好说，直接去掉就好了，但是如果App Store和自己的官网都要分发呢？</p> 
<p>我们有两个做法：</p> 
<ol> 
 <li>针对App Store外的Build禁用Sandbox，引入Sparkle，App Store Build删掉Sparkle，开启Sandbox</li> 
 <li>采用<a href="https://sparkle-project.org/documentation/sandboxing/">Sparkle 2.x的Sandboxing</a>做法</li> 
</ol> 
<p>我还没有试过第二种方法，所以本文先看第一种方法，第二种以后试了再分享吧。</p> 
<p>首先在Xcode中，我们在Project Settings里面设置两种Configurations，我这里设置的是<code>Beta</code>和<code>AppStore</code>。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/blog-sparkle-xcode-configuration.jpg" alt="" /></p> 
<p>因为我用<code>xcconfig</code>文件来管理多个不同Schemes的宏变量，所以对应的<code>Configuration Set</code>也要选好。关键是针对不同的Scheme增加标识宏:</p> 
<pre><code>// Beta的
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 BETA=1
</code></pre> 
<p>接下来新建对应的两个Schemes，Archive的Build Configuration选择对应的Configuration，我这里分别是<code>Beta</code>和<code>AppStore</code>。</p> 
<p>这样在代码中引用到Sparkle的地方，都是用宏包起来即可:</p> 
<pre><code>#if BETA || DEBUG
import Sparkle
#endif
</code></pre> 
<p>这样就只有<code>Beta</code>和<code>Debug</code>对应的Build才有Sparkle Framework了。但是这样还是会导致Sparkle被打包进去，只是没被使用而已，所以我们还得修改<code>Podfile</code>:</p> 
<pre><code>  pod 'Sparkle', :configurations =&gt; ['Debug', 'Beta']
</code></pre> 
<p>这样Sparkle就不会出现出现在App Store Build里了，完美。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Just Focus for Mac 2.0 Beta &#x6765;&#x5566;&#xFF01;</title>
        <link>https://justinyan.eth.limo/57B802DE-9905-4CD7-AB8B-F311B86B5113/</link>
        <guid>https://justinyan.eth.limo/57B802DE-9905-4CD7-AB8B-F311B86B5113/</guid>
        <pubDate>Mon, 15 Mar 2021 08:00:34 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/blog-just-focus-mac-2.0-beta-01.jpg" alt="Just Focus for Mac 2.0 Beta 来啦！" /></p> 
<div style="display: block;text-align: center; padding-bottom: 20px;">
 <a href="https://apps.apple.com/cn/app/just-focus/id1142151959">2021-03-24: Just Focus for Mac 2.0已正式上架Mac App Store</a>
</div> 
<div style="display: block;text-align: center; padding-bottom: 20px;">
 <a href="https://getjustfocus.com/">➡️ 请点这里到官网下载Beta版 ⬅️</a>
</div> 
<p>最近有时间修复了一下Just Focus for Mac的几个小问题，上线了1.6.8，没想到就上了Mac App Store的首页!</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/JustFocus2.0-001-compressed.jpg" alt="Mac App Store - Apps and Games We Love Right Now" /></p> 
<p>于是本懒人受到了鼓舞，赶紧在周末把2.0版本开发一通，现在终于可以开始2.0版本的Beta测试啦！(<a href="https://getjustfocus.com/">官网直达链接</a>)</p> 
<p>Just Focus for Mac的第一个版本是大约5年前(2016年)发布的。当时只是我学习Swift语言的一个练手作品，没想到上架App Store后一直有忠实用户每天都在使用。知道这个App帮到了一些人还是蛮开心的，虽然说这几年收到Feedback邮件的时候我总是有(jiù)心(shì)无(lǎn)力(duò)，更新的不多。</p> 
<p>所以2.0版本也将试图解决用户反馈最多的老问题，除了修复Bug之外还做了不少改进，加入了一些新功能。</p> 
<h2>1. 解决关闭休息后忘记开启的问题</h2> 
<p>Just Focus采用标准番茄钟工作法，默认设置为工作25分钟，休息5分钟，而且我在<a href="https://justinyan.me/post/2982">第一个版本的发布介绍</a>里也提到，我需要一个全屏提醒，强迫我放下键盘鼠标，进行一次真正的休息。</p> 
<p>只有适时的休息，才能让你更加专注。</p> 
<p>所以虽然同类的很多产品在休息界面弹出的时候会有“推迟”按钮，但是我并不希望有这个按钮，怕我会一直不停地“推迟”休息，反而失去了这个App的效果。所以第一个版本就设计为“只能停止休息”，不能“推迟”。但是这样带来的问题是：<strong>很容易忘记重新开启番茄钟</strong>。</p> 
<p>所以在2.0版本里，我试图做了几个小改进，第一是在点击停止按钮时，弹出选单，你可以选择"直接开始下一个番茄钟"或"停止休息"。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/JustFocus2.0-002-compressed.jpg" alt="" /></p> 
<p>另外是在全局菜单栏图标上增加了一个饼图进度展示，当一个番茄钟结束的时候正好这个饼图会被填满。如果此时你选择了跳过“休息”阶段，则这个饼图会一直以被填满的状态待在菜单栏上。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/JustFocus2.0-003-compressed.jpg" alt="" /></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/JustFocus2.0-004-compressed.jpg" alt="" /></p> 
<p>最后是不允许在休息时钟完成后直接中断整个流程，而是只保留了“开始下一个番茄钟”选项:</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/JustFocus2.0-005-compressed.jpg" alt="" /></p> 
<p>这样在休息结束界面也没有机会中断整个流程而忘记开启番茄钟了。希望做了这几个改进之后，使用Just Focus的朋友们可以少一点忘记开启番茄钟的问题。</p> 
<h2>2. 时钟属性有更多自定义选项了</h2> 
<p>想要更详细的番茄钟自定义在Just Focus的邮件反馈里可以排到前三，所以2.0版本也增加了不少自定义能力:</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/JustFocus2.0-006.png" alt="Timers customization" /></p> 
<h2>3. 休息界面自定义升级</h2> 
<p>在休息时自动展示来自unsplash.com的高清大图是Just Focus的特色之一。不过并不是所有人都希望展示来自unsplash.com的随机图片，所以2.0版本我加入了“使用桌面图片”的选项，算是1.0版本的“当前屏幕截图”的一个技术实现上的简化版本。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/03/JustFocus2.0-007.png" alt="Screen customization" /></p> 
<p>另外除了可以展示来自quotesondesign.com的quotes之外，还内置了几百个乔帮主的句子，以及可以填入自己喜欢的句子了。</p> 
<h2>4. 其他改进</h2> 
<p>其他的小改进包括更新了App Icon，Preferences和官网的设计，改进了使用Touch ID解锁后可以直接完成操作不需要再次点击按钮，支持Apple Watch解锁，重写更换了一批底层的逻辑(Path之类)，改进了Daily Build机制，以及支持Beta版以自建CDN托管形式分发，然后修复了一些Bug。</p> 
<p>接下来如果有时间可能会继续改进统计功能之类，欢迎大家使用2.0 Beta版，欢迎大家来反馈问题哦。</p> 
<p>你可以到官网<a href="https://getjustfocus.com/">https://getjustfocus.com/</a>下载最新的Beta版进行测试。</p> 
<p>反馈邮箱是: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></p> 
<h2>相关链接:</h2> 
<ul> 
 <li><a href="https://getjustfocus.com/">https://getjustfocus.com/</a></li> 
 <li><a href="https://itunes.apple.com/us/app/just-focus/id1142151959?ls=1&amp;mt=12">Just Focus for Mac</a></li> 
 <li><a href="https://itunes.apple.com/us/app/just-focus-pomodoro-timer/id1135331024?ls=1&amp;mt=8">Just Focus for iOS</a></li> 
 <li><a href="https://justinyan.me/post/2982">免费 Mac 全屏休息提醒 Just Focus 上架咯 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3226">Just Focus iOS 版发布啦 | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 34 &#x6765;&#x9ED1;&#x80F6;&#x4FF1;&#x4E50;&#x90E8;&#x559D;&#x9152;&#x804A;&#x5929;&#x554A;&#xFF01;</title>
        <link>https://justinyan.eth.limo/48026A01-F2BC-4C4F-9024-6354A6C45157/</link>
        <guid>https://justinyan.eth.limo/48026A01-F2BC-4C4F-9024-6354A6C45157/</guid>
        <pubDate>Sat, 13 Feb 2021 09:30:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/02/podcast-034-02.jpg" alt="Vol. 34 来黑胶俱乐部喝酒聊天啊！" /></p> 
<p>缘起于我(Justin)有天在家听黑胶的时候，一时兴起在某俱乐部直播，跟大家一起分享唱片，于是想到不如邀请一两好友一起到俱乐部分享一下自己与黑胶的故事，顺便还能钓钓看有没有大鱼来给我们科普一下。没想到大家约好录音直播的晚上，鱼塘就消失了，真是令人哭笑不得😂。</p> 
<p>但是我们四人还是非常兴奋地聊了两个小时，互相分享了自己珍藏的唱片，即便没有俱乐部直播连麦，我们也还是收获了很多。尤其是当大家通过耳机用全损音质互相分享音乐的时候，那种 Clu 形容的“拼命去抓住歌曲要表达的东西”的感觉真的很赞。</p> 
<p>所以本期节目就让我们和嘉宾 <a href="https://twitter.com/oscarlee_">Oscar</a>, <a href="https://twitter.com/designedbyclu">Clu</a> 一起走进仪式感满满的黑胶俱乐部吧！</p> 
<p><em>P.S. 本期分享的内容很多所以 Show Notes 会比较长，如果你也有想要跟大家一起分享的音乐，欢迎在收听的平台留言哦</em></p> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>时间轴</h2> 
<ul> 
 <li>01:08 又是一期特别的节目</li> 
 <li>03:33 喝点什么才配黑胶呢</li> 
 <li>05:02 是什么契机让你入坑黑胶的</li> 
 <li>14:18 大家都在哪里买唱片的</li> 
 <li>26:33 旅行时如何带唱片回来</li> 
 <li>34:10 现代歌手中你最期望谁出黑胶唱片</li> 
 <li>42:26 由 Oscar 分享第一首歌</li> 
 <li>46:52 黑胶专辑编排的魅力</li> 
 <li>51:46 在设计上印象深刻的黑胶唱片</li> 
 <li>58:34 分享一下你觉得特别珍贵的唱片 </li> 
 <li>58:43 Oscar 的分享</li> 
 <li>01:06:04 Justin 的分享</li> 
 <li>01:13:08 Clu 的分享</li> 
 <li>01:25:38 分享你不喜欢黑胶的地方</li> 
 <li>01:36:10 玩黑胶也要烧钱？</li> 
 <li>01:44:18 如何看待把黑胶作为营销手段的做法</li> 
 <li>01:52:04 你觉得黑胶的未来会是怎样的</li> 
 <li>01:57:43 今天的片尾曲会是什么呢？</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>嘉宾: <a href="https://twitter.com/oscarlee_">OSCΛR_ 奥叔</a> | <a href="http://instagram.com/oscarlee.gz">Instagram</a></li> 
 <li>嘉宾: <a href="https://twitter.com/designedbyclu">Clu</a> | <a href="https://www.instagram.com/thexclu/">Instagram</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/VqhCQZaH4Vs" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>&amp;ab_channel=SoulfulSounds"&gt;Louis Armstrong - What A Wonderful World</a></li> 
</ul> 
<h3>OSCΛR_ 奥叔 的分享</h3> 
<ul> 
 <li>专辑：Where did Everyone Go? (1963) by Nat King Cole, 2010 年美版</li> 
 <li>Dream pop 曲风的“入坑”专辑：Four-Calendar Café (1993) by Cocteau Twins</li> 
 <li>对王菲的音乐风格影响深远的两个前辈级组合：Cocteau Twins, The Cranberries</li> 
</ul> 
<h3>Clu 的分享</h3> 
<ul> 
 <li>吉隆坡跳蚤市场的唱片摊位 Amcorp Mall</li> 
 <li>马来西亚倒闭的唱片行 Rock Corner</li> 
 <li>推荐歌曲：Charlie Parker - Relaxing at Camarillo</li> 
 <li>专辑：Charlie Parker “Bird” Symbol</li> 
 <li>Leonard Cohen - Song from a room</li> 
</ul> 
<h3>Justin 的分享</h3> 
<ul> 
 <li>The Dark Side of the Moon - Pink Floyd</li> 
 <li>The Beatles - White Album</li> 
 <li>The Beatles - Sgt. Pepper's Lonely Heart's Club Band</li> 
 <li>Louis Nelson - Everybody's Talking About the Prion Band</li> 
 <li>Louis Armstrong - What A Wonderful World</li> 
 <li>Leon Bridge - Coming Home</li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 33 &#x6C89;&#x8FF7;Clubhouse&#xFF0C;&#x5F53;&#x58F0;&#x97F3;&#x5728;&#x6B64;&#x76F8;&#x9047;</title>
        <link>https://justinyan.eth.limo/E1D9FE5E-66E0-47C4-9FC0-160509FB0F27/</link>
        <guid>https://justinyan.eth.limo/E1D9FE5E-66E0-47C4-9FC0-160509FB0F27/</guid>
        <pubDate>Mon, 08 Feb 2021 12:14:41 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/02/podcast_033_3.jpg" alt="Vol. 33 沉迷Clubhouse，当声音在此相遇" /></p> 
<p>今天是一期非常特别的节目，截至录制当天，两位主播已经沉迷 Clubhouse 多日无法自拔，我们都觉得这期节目是离不开 Clubhouse 这个主题的了，那不如直接在 Clubhouse 上面直播我们的录制过程好了。</p> 
<p>所以这期节目我们是一边录节目一边在 Clubhouse 上直播的。录制过程我们也发现了 Room 和 Podcast 的区别，也发生了一点小事故。</p> 
<p>不知道有多少人已经在 Clubhouse 上找到自己喜欢的角落，又或者只是看了一眼发现并不适合自己转头就走了。</p> 
<p>本期节目，两位主播用声音，用播客，用 Clubhouse 的形式，来讲述 Clubhouse。</p> 
<p><em>P.S. 欢迎大家在 Clubhouse 上 follow 我们: Justin(@mapleshadow) 和 自力(@hzlzh)，以后有开新的 Room 大家就可以看到推送哦</em><br /> <em>P.P.S. Justin 在节目中提到"产品蝗虫"来自这本书: Marty Cagan 写的《启示录》，不过似乎并不准确，有知道这个梗起源的欢迎评论区留言</em></p> 
<h2>话题征集</h2> 
<p>欢迎各位听众朋友们通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>时间轴</h2> 
<ul> 
 <li>00:40 从沉迷 Clubhouse 聊起</li> 
 <li>04:18 聊聊最吸引人的点</li> 
 <li>06:52 那些令人惊艳的“普通人”</li> 
 <li>11:38 好久不见！大型网友见面会</li> 
 <li>14:43 有趣的 Room，有趣的玩法</li> 
 <li>18:52 “产品蝗虫”的梗</li> 
 <li>29:21 粤语里可以用水果骂人吗？</li> 
 <li>30:19 通讯录和数据安全</li> 
 <li>38:14 推荐算法和通知机制</li> 
 <li>49:56 从技术实现看 Clubhouse</li> 
 <li>56:06 从交互体验看 Clubhouse</li> 
 <li>1:01:32 一个录制小事故</li> 
 <li>1:02:44 声音纹的隐私和安全</li> 
 <li>1:09:53 Room 和 Podcast 有何区别？</li> 
 <li>1:18:59 畅想 Clubhouse 的未来</li> 
 <li>1:27:59 上期片尾曲彩蛋：AI创作的乡村音乐</li> 
 <li>1:29:15 Clubhouse 图标上的音乐人是谁？</li> 
 <li>1:33:34 片尾曲《Oral Fixation》 - Bomani X</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://soundcloud.com/iambomanix">Oral Fixation - Bomani X</a></li> 
 <li>Justin 在节目中提到"产品蝗虫"来自这本书: Marty Cagan 写的《启示录》，不过似乎并不准确，有知道这个梗起源的欢迎评论区留言</li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x662F;&#x5982;&#x4F55;&#x7EDF;&#x8BA1;&#x4E2A;&#x4EBA;&#x8D22;&#x52A1;&#x72B6;&#x51B5;&#x7684;</title>
        <link>https://justinyan.eth.limo/8848F1D3-8701-4D05-BA9A-1F505F0D3D72/</link>
        <guid>https://justinyan.eth.limo/8848F1D3-8701-4D05-BA9A-1F505F0D3D72/</guid>
        <pubDate>Sun, 31 Jan 2021 15:09:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/01/blog-finance2-squashed.jpg" alt="我是如何统计个人财务状况的" /></p> 
<p>昨天我在统计个人财务状况的时候想到了一个很难解决的问题，<strong>就是现在我有个人全面财务数据，我能从中分析出什么？</strong></p> 
<p>这个问题非常难，可能需要经过一段时间的学习和实践。但是我也发现“如何统计个人全面财务数据”是个值得分享的话题，所以在此抛砖引玉，如果有读者朋友知道能从中分析什么的话，非常欢迎你的分享。</p> 
<h2>一、为什么我要统计个人财务状况？</h2> 
<p>我是从几年前开始认真做个人财务全面统计的，觉悟得比较晚。契机是有一天跟我的朋友聊天，提起程序员收入这个话题。</p> 
<p>大家可能认为程序员收入是比较高的，但是在整个社会来看，普通程序员的年收入算是多高呢？在互联网行业来看，你的收入又算多高呢？</p> 
<p>因为薪酬保密制度的关系，我想除了在互联网公司管薪酬的HR，或者能看到大家薪酬的管理层，应该很少人能真正了解一个人的收入在业界算是什么水平。不然也不至于会有知乎人均博士，年薪百万哭穷的段子了。</p> 
<p>我也不例外，我也没有行业内薪酬水平的具体分布数据。当时我感到十分茫然，我自己一年的收入到底有多少，我一年的支出有多少，这些我只有个模糊的概念，却没有具体的数值。同时我也感到十分危险：<strong>如果我不知道个人财务的真实情况，那么我基于财务状况的决策很可能就会有所偏差，轻则无法发挥最大效益，重则做出错误决策，这是不合理的</strong>。</p> 
<p>想要分析，就得有数据，所以那天回去后我就开始想办法统计自己的财务数据。</p> 
<h2>二、我是怎么做统计的？</h2> 
<p>并不是说在那次聊天以前我就没有统计，每个月的工资单，各银行的账单，各支付平台、投资平台的统计数据，只要耐心把所有平台都看一下做个加减法计算，也能知道个大概。</p> 
<p>但问题是：他们只能统计自家平台的数据，无法统一分析。比如说我从银行卡里转了一笔钱到某理财平台，这笔钱本应算作“投资”，但是在银行统计里这个是“支出”，哪天我把钱转回来就变成了“收入”。所以如果看年度账单你就会发现各种莫名其妙收支，无法反映真实财务状况。</p> 
<p>所以统计的第一步就是要把手里所有的账户统一到一个地方。</p> 
<h3>2.1 账户分类</h3> 
<p>我把手里的账户分为几类：</p> 
<ol> 
 <li>信用卡账户</li> 
 <li>活期账户: 各银行活期账户、微信零钱、支付宝零钱、现金钱包</li> 
 <li>理财账户: 各理财平台如某银行自家理财、财付通之类</li> 
 <li>股票账户: 各股票交易平台</li> 
 <li>其他账户: 公积金、医保等</li> 
</ol> 
<p>我的记账方式非常依赖电子支付，现金交易的部分基本上忽略不计。原因是我需要<strong>自动化</strong>。</p> 
<p>在微信支付、支付宝这些电子支付尚未普及以前，我曾使用类似“随手记”这样的App手动记账，每消费一笔就得打开App记录一次。就这样记了一年多，但是效果不佳。原因是靠人工记录非常容易漏记，一旦漏记账目就对不上，事后也非常难以找回当时买了什么。</p> 
<p>上述账户中，信用卡本来就会每月发送电子账单，微信支付、支付宝等互联网支付渠道也均可导出账单，再写一个工具把各家账单转换成统一格式的文件（比如CSV）就能实现自动化统计了。</p> 
<p>目前需要手动记录的部分比较少，都是低频交易，即使忘记事后也可以通过平台账单找回再手工录入。</p> 
<h3>2.2 交易类型和收支分类</h3> 
<p>每一笔交易只有三种类型：</p> 
<ol> 
 <li>收入: 工资收入、理财收益、赞赏收入等</li> 
 <li>支出</li> 
 <li>转账: 从自己的A账户转到B账户，一般是投资理财操作，或信用卡还款</li> 
</ol> 
<p>交易类型这里需要注意的只有“转账”类型。因为要统计信用卡的每一笔支出都用来干什么，所以“还信用卡”这笔账一定不能算作支出，否则会重复计算。投资理财也是一样的，把钱转到某个理财账户，然后在理财账户内部操作。</p> 
<p>收支分类就很多了，设计这个分类主要是为了区分收支都用是从哪里来，往哪里去的。每个人的收支分类各不相同，我的支出分类很多，主要分为两个层级。比如汽车大类里面会有加油、高速费、维修费等子类。</p> 
<p>收入分类则相对简单，工资、投资和赞赏收入是最多使用的分类。</p> 
<h3>2.3 自动化解放双手</h3> 
<p>上面提到的交易分类和收支分类将作为我们最后数据统计与分析的基础，所以每一笔收支都应该有这些信息。从交易平台导出的账单不会自带这些信息的，所以除了把各平台的数据结构转成统一的数据结构之外，这个小工具还需要自动给每一笔交易打上分类信息。</p> 
<p>交易类型很好处理，正数收入，负数支出，有一个Account加一个Transfers的一行则为转账，比如像这样:</p> 
<pre><code>Date,Description,Amount,Account,Payee,Category,Time,Transfers
2021-01-01,美团外卖xxx,-45.34,微信零钱,Online,Food &amp; Dining &gt; 外卖,23:32:20,
</code></pre> 
<p>收支分类就比较麻烦，目前我比较简单粗暴地使用两个事先写好的关键词列表，一个收入一个支出，然后把每一笔交易的描述做一个关键词匹配，匹配到了就把相应的分类自动填上。</p> 
<p>比如这样一条微信支付记录:</p> 
<pre><code>扫二维码付款-xx汽车维修中心-收款方备注:二维码收款
</code></pre> 
<p>匹配到<code>汽车维修</code>关键字就会自动填入汽车分类，然后因为这个地方是我日常停车的地方，所以我就特别把他匹配到<code>停车费</code>这个子分类里面。</p> 
<p>如此这般，只需要下载对应平台的交易记录，就可以自动转换成一条可以被统计分析的交易记录了。</p> 
<p>但是微信支付既可以用零钱支付，也可以用银行卡支付。如果是微信零钱支付，那么这笔钱记录在微信账户里就行，但如果他是用银行卡支付的，这笔钱就应该记录到对应的银行卡账户里。</p> 
<p>但是同一笔交易在银行账单描述往往是有差异的，上面这笔支出在银行的账单里是这样的:</p> 
<pre><code>财付通 - 微信转账
</code></pre> 
<p>可以说什么信息都没有。</p> 
<p>于是我做了一个简单粗暴的转换，直接拿银行当天的支付记录，去微信支付记录里面查找当天同样金额的记录，如果找得到，就直接用微信支付的记录补充到描述里面。因为同一天里同一个支付平台完全相同的支付并不常见，所以匹配成功率很高，这就弥补了银行账户描述的不足。</p> 
<p>通过以上方式，目前只要能自动导出账单的平台，我都可以做到分毫不差的自动化统计。</p> 
<p>除了“支付宝”。支付宝跟微信一样可以用其他卡来支付，但是他们的账单里却不包括“支付方式”。比如我在某宝买一个手机，即可以用余额宝支付也可以用信用卡支付，但是账单里什么也没有，那自动化工具就不知道应该记录到哪一个账户。</p> 
<p>所以目前我能使用微信支付就不会用支付宝，不得不用支付宝的时候尽量选择不用他的余额支付，这样其他账户的记录还能通过匹配查找自动入账。但是如果哪天忘记选择了余额支付那就很惨了，需要在支付宝的网页上手动一笔笔交易点开，看看哪一条交易是通过它的账户完成的。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/01/MoneyHelper-squashed.png" alt="Money Helper" /></p> 
<h2>三、有了全面数据之后可以做什么？</h2> 
<p>通过上述方式，我用自动化工具解决了大部分记账需求，剩下的账户基本上都是低频交易，一个月一次或者几个月一次作手动录入也问题不大。</p> 
<p>我目前用来管理全面数据的工具是MoneyWiz，但是这个工具并不是很好用，只是我需要一个支持import/export，自带分析的工具而已。理论上我的自动化导入工具是前端，MoneyWiz被我用作数据库存储和查看分析界面，只要数据能导出，我就可以用迁移到任意平台。MoneyWiz它最大的卖点是可以直接连接银行系统自动记账，但是在国内这是不可能的，所以并不推荐购买，我只是没找到其他工具而已。</p> 
<p>有了这些数据以后，首先我可以一览各账户的财务状况，比如当时第一次整理完我的所有账户之后，才真正了解到我的总资产数值。在这之前，可能我最了解的是我的银行活期账户，但那并不是全部。比如说可能很多人在买房之前都不一定知道自己的公积金账户具体有多少钱，比如说自己在股市的投入占自己可支配资产的百分比是多少，比如说自己到底年收入是多少，支出是多少，有多少用在了房贷、车贷，有多少用在了衣食住行，有多少用在了投资自己。</p> 
<p>前文我说不了解自己的财务状况可能就无法作出合理的决策。投资自己永远是一个合理的决策，这点也很容易被人们所忽略。</p> 
<p>使用MoneyWiz我可以很容易分析出我一年的收支当中，房贷、车贷、衣食住行的占比，也能根据我的收入判断我是否可以负担得起更好的服务。比如更大更稳定的宽带服务，更好的服务器，更快的设备等等。还有你换工作的时候，你可以更好地判断你的总收入和别人offer的总收入孰高孰低。</p> 
<p>但是我当完成这些工作，开始回顾2019年的全面财务状况时，我发现顶多就是跟2018年一样看看饼图知道我的财务状况，<strong>但是接下来呢</strong>？</p> 
<p>接下来我也不知道能从中分析出什么，能给我带来什么。我希望掌握全面财务状况之后，能帮助我更好地作出投资金融、投资自己或者其他的决策，但是我发现我并不知道应该怎么做。所以在2021年1月的最后一天，我写下了这个分享，希望读者朋友们有什么想法都可以分享一下，谢谢。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #164 Yuval Noah Harari - &#x300A;&#x672A;&#x6765;&#x7B80;&#x53F2;&#x300B;</title>
        <link>https://justinyan.eth.limo/079642CE-6D93-40DF-9D9C-B7F27B1A1D9E/</link>
        <guid>https://justinyan.eth.limo/079642CE-6D93-40DF-9D9C-B7F27B1A1D9E/</guid>
        <pubDate>Wed, 20 Jan 2021 15:15:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/01/fyyd-011.jpg" alt="枫影夜读 #11——尤瓦尔·赫拉利《未来简史》" /></p> 
<p></p>
<center>
 <em>“枫言枫语·每周读书”在 153 期后结束 以“枫影夜读”为名重新开始</em>
</center>
<p></p> 
<p>上一期我们介绍了贾雷德·戴蒙德(Jared Diamond)的《枪炮、病菌与钢铁》(“Guns, Germs and Steel”，简称 GGS)，阅读过程中一直让我想起<a href="https://justinyan.me/post/2157">尤瓦尔·赫拉利的《人类简史》(Sapiens: A Brief History of Humankind)</a>，无疑后者深受前者影响。不过相比起 GGS 有些佶屈聱牙的学术派写法，赫拉利的语言要流畅得多，这也许是他的作品近些年来在多国畅销的原因之一。</p> 
<p>今天我们要介绍的是赫拉利《人类简史》的续作——<strong>《未来简史》(Homo Deus: A Brief History of Tomorrow)</strong>。关于这个颇具营销意味的书名我们放到最后作为花絮讨论。抛开书名，《未来简史》是我个人在 2020 年读到的第二本五星好评的书，话题新颖且内容翔实，语言流畅更旁征博引，逻辑严密而发人深省。喜欢本书并不代表赞同全书观点，我更喜欢的是他十分有趣且引发思考的部分。</p> 
<h2>21 世纪的现象与问题</h2> 
<p>生活在 21 世纪的我们，每日目睹许多奇人异事，各种热点潮来又潮去。过去几千年不可能发生的奇迹现在可能每隔两年就会出现一次。特斯拉自动驾驶，Alpha Go 打败人类棋手，川普当选美国总统，“能够 996 是修来的福报”等超乎想象的事件层出不穷。</p> 
<p>人类觉得“万事皆有因”，喜欢追根究底。《枪炮、病菌与钢铁》就是作者 Jared 面对新几内亚的朋友耶利的问题而引起的深度思考。《人类简史》的分析方法与GGS 雷同，而《未来简史》则构筑于《人类简史》的理论基础之上，通过对历史的回顾总结人类社会现状，再根据现状推导未来。</p> 
<p>开篇第一章作者提出了人类世界的新议题：<strong>在基本解决了饥荒、瘟疫和战争之后，人类还能做些什么？</strong>作者认为，随着科技的发展，人类可以用生物工程、半机械人工程和非有机生物工程来“升级自己”，而这种追求也使得人类成为“超人类”，从智人(Homo Sapiens)变成智神(Homo Deus)。未来的人类可能会追求永生，而永生则使得“如何达成幸福快乐”成了关键问题。</p> 
<p>接下来本书分为三个部分，层层递进，探讨人类为什么会走向这个道路，如何走向这个道路，以及未来的我们在道德、伦理、政治等各个方面会受到什么样的挑战。讨论未来需要想象力，需要通过在脑中构建尚未到来的条件，并以此推演出各种全新的现象。所以作者在开篇就提醒大家，这不是一本预言书：</p> 
<blockquote>
 <p> 研究历史，就是为了挣脱过去的桎梏，让我们能看向不同的方向，并开始注意到前人无法想象或过去不希望我们想象到的可能性。 </p>
</blockquote> 
<p>作者甚至还举了马克思的《资本论》的例子，用来说明马克思的思想一旦为资本家所研究，资本主义也就发生了变化，马克思所预言的世界也就不会到来。一方面这种说法规避了“预言不准”、“大言不惭”的评论，另一方面如果真的可以引发读者思考而改变未来，那未尝不是一件好事。</p> 
<p>在全书结尾，作者也根据自己的基础论点提出了三个问题，我们可以很方便地思考这三个问题来驳斥作者的理论基础，从而让本书的语言彻底崩塌。不过这不仅需要敏锐的洞察力也需要渊博的知识和丰富的想象力，更需要在作者已经搭建好的理论框架下进行驳斥，门槛非常高。</p> 
<h2>关于未来</h2> 
<p>科幻小说家可能是最喜欢想象未来的人群之一，科幻作品也是我个人非常喜欢的类别。不过小说作品侧重点在讲故事，科幻元素往往只是提供背景，帮助人物构建新的冲突，并在新技术的突破和限制下讨论问题。而《未来简史》则是基于当下，想象新技术普及的未来将会面临的种种挑战。</p> 
<p>如果说种植牙对身体改动太小不算义体改造的话，那么义肢、义眼、人工心脏这些重要器官的植入算是眼下能看到的较大的身体改造了。以目前人类科技的发展趋势，实现赛博朋克式的全身义体化指日可待。现代医学的出现改变了人类求神拜佛多于求医问药的历史，挽救生命于危急关头似乎成了所有人的基本预期。但纵观人类历史，“自然死亡”只占每年死亡原因的很小部分，战争、疾病、饥荒是大头，是现代医学给人们带来“生病了就找医生治好”的希望。按照这样的趋势发展，未来人类追求的可能是“升级”，更进一步则是“永生”。</p> 
<p>假如未来人类真的实现了永生，那么现行的道德伦理和社会法律将不再适用，未来社会将发展出全新的伦理观。赛博朋克小说把未来描述成拥有一切又一无所有，科技发达又生活低下的废土社会；反乌托邦小说把未来描述成基于科技的高度统一与控制，冷冰冰的绝对理性社会。而我们的作者则把人工智能搬上舞台，展开了一场从人文主义到数据主义的讨论。至少在我看来，这三种未来都是悲凉的。</p> 
<p>我曾经问过几位不同的朋友这几个问题：</p> 
<blockquote>
 <p> 如果种牙的你还是你，那么更换了义肢、义眼、人工心脏、人工肺的你还是不是你？<br /> 如果更换全身部件后你还是你，那把你的意识与记忆复制一份到云端，这个复刻的你还是不是你？<br /> 如果云端的你是你，现在又有这样的科技与机会，你会把自己上传到云端获得永生吗？ </p>
</blockquote> 
<p>事实上目前没有人知道复刻的你还是不是你，许多人强调人的唯一性，但是如果肉身的你死掉了，只剩下存活在网络中的基于数据与人工智能构建的你，这个你还是不是你？你愿意通过这种方式获得永生吗？</p> 
<p>过去长寿或者永生常常带来一个问题：身体是否可以保持年轻的状态？否则以一副衰退到无法使用的躯壳显然无法安度晚年。现在有了义体植入的科技，这点已不再是问题。那么剩下的问题与肉身衰退基本是同质的：<strong>没有质量的永生是没有意义的，不幸福快乐的永生是人间地狱。</strong></p> 
<p>所以人类幸福快的秘密到底是什么？这同样是一个无法回答的问题。而科技也无法解决这个问题。且不说现在的科技对大脑的理解十分有限，即便我们实现了《仿生人会梦到电子羊吗？》（电影《银翼杀手》的原著小说）那样通过植入电极电脑，可以用按钮操控自己情绪的技术，仅仅是调节情绪获得快感那就是人类所追求的幸福吗？看看全球多数国家禁止的各类精神药物吧，这个东西显然不是人类所要追求的幸福快乐。</p> 
<p>在《后物欲时代的来临》中更提出人类的终极目标不是追求快乐。在《重来也不会好过现在》中作者通过哲学推理同样否定了可达成的目标对于幸福快乐的意义。那么在一个“996 是福报”的时代，什么样的东西才是幸福快乐呢？什么样的非终结性目标才是人类幸福的关键呢？我觉得这是《未来简史》中第二个没有答案的问题。</p> 
<p>作者在本书的讨论中，基本上避开了无法回答的哲学问题，用“无法刹车”来忽略哲学上的讨论，仅从比较好推测的科技发展趋势入手，这点可谓十分明智。上述问题诸如“我还是不是我？”、“什么样的东西对我来说才是幸福快乐的？”，归根结底是“人文主义”问题，是人类观察自己内心的体验和感受，从人本身出发去思考的问题。但如果未来并不是人文主义的天下，未来并不需要人类，并不需要意识，不需要情感，不需要主观体验呢？</p> 
<p>在围棋界大放异彩的 Alpha Go 有主观意识吗？它需要知道复刻的它是不是它吗？它需要追求“人类认为的幸福快乐吗”？答案是否定的。</p> 
<p>人类社会已经存在大量的 AI 渗透了，未来也只会越来越多。虽然目前世界的大多数还是人类，但是很抱歉，“掌握历史方向的从来就不是大多数，而是一小群向前看的创新者”。在《银河系漫游指南》(“The Hitchhiker’s Guide to the Galaxy”)中作者提到有一个由老鼠文明建造的超级计算机，他从很多很多亿年前开始，就为了计算一个宇宙的终极问题。这个超级计算机就是地球，地球上的老鼠都是老鼠文明能用来监视地球运算的。但是很多很多亿年后老鼠文明早就忘了这个终极问题是什么，但是他们都在等待这个答案，最终这个答案快计算出来的时候，地球被要修建宇宙隧道的拆迁队拆掉了。</p> 
<p>虽然这是一个夸大的反讽故事，但是同样的道理也可以用在 AI 领域。《未来简史》举了一个例子：一开始可能某一位科学家设计了一个 AI，希望它以最高优先级，尽可能计算 π 的精度。如果这个 AI 连上全球物联网，它可能会攫取一切可能的资源用于计算。如果它发现地球的资源不够它可能会发展太空文明，去其他的星球获取更多资源，这些后果是不可预知的，而一切的起源都来自计算 π 的精度这件小事。</p> 
<p>我在阅读尤赫拉这本书的时候，一开始是越读越兴奋，然后是越读越沮丧，最后是越读越悲观。作者知识渊博，逻辑严密，论点掷地有声，难以反驳。如果说读完本书我还能够保持比较乐观的态度的话，我觉得主要有以下几点：</p> 
<ol> 
 <li>没人能预测未来，未来是多维的，存在多种可能性。尤赫拉所说的不过是其中一种，我也不知道未来会是哪一种。本书的基本论点还是基于作者熟悉的“西方文化”，所举事例也多为亚伯拉罕诸教（作者身在耶路撒冷），对东方文化甚少提及。所以我觉得至少除了基于“西方文化”推导的未来以外，人类世界丰富多彩的文化也许会诞生形形色色的未来。</li> 
 <li>尤赫拉的推理基础有部分事例不一定能符合发展预期，比如他提到 Windows 的助理 Cortana 很智能，现实是这东西真的很难用。当然他提到的 DeepMind 的发展目前还符合预期。另外是对于医学发展是否一定会用于人类升级和永生一事上，有人提出未来更可能通过基因工程做针对每一个病人做“个性化”定制，而非用一种药物治疗所有人，我觉得在理。基于这两个例子，我以为尤赫拉虽然是历史专家，却不一定是生物工程、计算机工程的专家，所以他的推理基础其实也没有那么严密。</li> 
 <li>尤赫拉写出本书本意也不是为了断言未来，而是为了引发讨论，我以为这点十分有效。阅读过本书的朋友不一定同意他的观点，但多数都受他启发而引出不少思考。</li> 
</ol> 
<h2>尾声</h2> 
<p>我觉得是作者的思维和前提给本书做了一个极强的约束和限定，以至于在他的逻辑框架内一切都那么自然合理，所以被作者的推理带着走到了一个近乎悲凉的，没有人性的未来——人类会被无意识的高智能所取代。</p> 
<p>作为一名人类读者，一边读一边觉得害怕，我抱有一半的悲观和一半的乐观。相信未来不是单一直线而是丰富多彩的多种版本，人类才更有勇气活下去不是吗？连作为人的快乐都被否定的未来就太不未来了。</p> 
<p>人类不是纯粹理性的动物，人类是有主观意识，情感体验的动物。尽管不同的场合，不同的事件，不同的目标，需要不同的策略来达成。但是人类天然的情感体验不也是十分重要的部分吗？比起全盘否定人文主义，我更希望把头埋进土里，呼吸浪漫主义的芬芳，让自己保有一丝美好的幻想。</p> 
<h2>花絮：关于书名</h2> 
<p>本来我还想吐槽一下这个书名的中文翻译，颇有营销的意味，但是稍作研究发现这译名还是挺忠实于原著的。前作《人类简史》是赫拉利根据他在耶路撒冷希伯来大学教授时一系列讲稿，用希伯来语写成。原作名为 קיצור תולדות האנושות‎（从右往左书写），于 2011 年出版。英文版书名则译为 "Sapiens: A Brief History of Humankind"，于 2014 年出版，是赫拉利在朋友的帮助下自行翻译的。所以这两个标题都可以代表作者的本意。</p> 
<p>中文译名采用的是英文的副标题，我本来想说如果书名为《智人：人类简史》那可能就没什么市场了，结果根据我不彻底的 Google 和几个希伯来语翻译网站对比，希伯来语的原名应该就是“人类简史”，所以中文译名是忠于原著的。</p> 
<p>同样的，《未来简史》的原书名为 ההיסטוריה של המחר，英文版名为 "Homo Deus: A Brief History of Tomorrow"，直译是《智神：明日简史》。至此，这两本书的中文译名虽有营销意味，但忠实原著。不过 2018 年赫拉利出版的另一本书 "21 Lessons for the 21st Century" 则被译为《今日简史》，这就真·强行“简史”了。</p> 
<h2>相关播客节目</h2> 
<p>我在<a href="https://fyfy.fm">"枫言枫语"播客</a>节目中也对本书进行了讨论，欢迎大家收听。</p> 
<p>推荐使用泛用型播客客户端搜索"枫言枫语"订阅收听。</p> 
<p>这里是节目链接: <a href="https://fyfy.fm/episode/32">枫言枫语播客 - Vol. 32 未来简史，当旧神遇上新科技</a></p> 
<h2>参考资料</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️⭐️(5/5)</li> 
 <li>标题: 未来简史</li> 
 <li>英文标题: Homo Deus: A Brief History of Tomorrow</li> 
 <li>作者: Yuval Noah Harare</li> 
 <li>出版社: 中信出版社</li> 
 <li>出版年: 2017 年 2 月 15 日(原作希伯来语版 2015 年出版，英文版 2016 年出版)</li> 
 <li>ASIN: B01MYH8A99</li> 
 <li>版本: Kindle</li> 
</ul> 
<h2>扩展阅读</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/2157">每周读书 #82 尤瓦尔·赫拉利——《人类简史》</a>: 尤瓦尔·赫拉利的成名作</li> 
 <li><a href="https://justinyan.me/post/4398">枫影夜读 #10——Jared Diamond《枪炮、病菌与钢铁》</a></li> 
 <li><a href="https://justinyan.me/post/2393">每周读书 #98 Atul Gawande——《Being Mortal》</a>: 生病就医和未来永生的话题在 “Being Mortal” 中文名《最好的告别》一书中亦有所讨论</li> 
 <li><a href="https://justinyan.me/post/1200">每周读书 #37 道格拉斯·亚当斯——《银河系漫游指南》</a>: 关于地球是老鼠的超集计算机用于计算终极问题的幽默科幻小说</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 32 &#x672A;&#x6765;&#x7B80;&#x53F2;&#xFF0C;&#x5F53;&#x65E7;&#x795E;&#x9047;&#x4E0A;&#x65B0;&#x79D1;&#x6280;</title>
        <link>https://justinyan.eth.limo/07A769E7-1B76-4645-B992-3C4546ED07EC/</link>
        <guid>https://justinyan.eth.limo/07A769E7-1B76-4645-B992-3C4546ED07EC/</guid>
        <pubDate>Wed, 20 Jan 2021 08:00:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/01/podcast-032-home-deus2.jpg" alt="Vol. 32 未来简史，当旧神遇上新科技" /></p> 
<p>2021 年第一期节目来啦！两位主播就赫拉利的《未来简史》进行的超级多的思考，带来了本期长达 100 分钟的畅谈，内容可谓是相当丰富。</p> 
<p>赛博朋克世界所展示的未来，人类的高度义体化，人工智能的高度发展，这些诞生自 1980 年代的科幻元素在今天似乎到了一个可以触及的阶段。因为《人类简史》而火起来的以色列历史教授赫拉利在他的续作《未来简史》中认为，这样的未来可能在接下来的一二十年就会到来。</p> 
<p>如果想象 5G 网络联通物联网，自动驾驶普及还算现实，那想象脑机接口，人工智能机器人统治世界呢？</p> 
<h2>话题征集&amp;互动有奖</h2> 
<p>欢迎大家在小宇宙 App 评论区参与话题互动，我们将随机抽取 2 位听众送出小礼物哟~</p> 
<ul> 
 <li>互动话题：你觉得未来会是怎样的？</li> 
 <li>奖品介绍：QQ音乐/网易云音乐 VIP月卡×1</li> 
 <li>活动说明：中奖名单将在小宇宙评论区公布</li> 
</ul> 
<p>你也可以通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
</ul> 
<h2>时间轴</h2> 
<ul> 
 <li>01:21 上期互动话题发奖</li> 
 <li>02:34 正片：从“简史强行三部曲”聊起</li> 
 <li>09:14 《未来简史》印象最深的是什么？</li> 
 <li>14:54 你会选择“永生”吗？</li> 
 <li>18:26 自由意志是否存在</li> 
 <li>30:00 大脑被复制的我还是我吗？</li> 
 <li>38:04 记忆被修改后，我是谁？</li> 
 <li>44:26 聊聊人文主义</li> 
 <li>52:17 当意志上传到云端</li> 
 <li>59:12 打工人 VS 打工AI</li> 
 <li>1:07:08 科学算命：基因检测</li> 
 <li>1:12:23 AI 如何面对电车难题？</li> 
 <li>1:17:22 硅基生命有感情吗？</li> 
 <li>1:27:25 互动话题：你觉得未来是怎样的？</li> 
 <li>1:43:45 片尾曲彩蛋</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:hi@fyfy.fm">hi@fyfy.fm</a></li> 
 <li>片尾曲: <a href="https://soundcloud.com/openai_audio/jukebox-86115728">Country, in the style of Alan Jackson - Jukebox</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4F7F;&#x7528; Helmet &#x7ED9;&#x4F60;&#x7684;&#x7AD9;&#x70B9;&#x52A0;&#x4E2A;&#x5934;&#x76D4;</title>
        <link>https://justinyan.eth.limo/1B167EE0-F5AD-4586-A07F-B50F75FE002D/</link>
        <guid>https://justinyan.eth.limo/1B167EE0-F5AD-4586-A07F-B50F75FE002D/</guid>
        <pubDate>Mon, 04 Jan 2021 22:44:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/01/helmetexpress.jpg" alt="使用 Helmet 给你的站点加个头盔" /></p> 
<p>小型站点我一般直接用 ExpressJS 加个 <a href="https://helmetjs.github.io/">Helmet</a> 就可以跑了，不过之前没仔细看 helmet 都做了什么，所以简单了解了一下。</p> 
<p>helmet 配合 express 的用法十分简单:</p> 
<pre><code class="javascript">const express = require("express");
const helmet = require("helmet");
<p>const app = express();</p>
</code><p><code class="javascript">app.use(helmet());<br /> </code></p></pre>
<p></p> 
<p>如果把 <code>helmet()</code> 展开，可以看到它其实做了挺多事情:</p> 
<pre><code class="javascript">// This...
app.use(helmet());
</code><p><code class="javascript">// ...is equivalent to this:<br /> app.use(helmet.contentSecurityPolicy());<br /> app.use(helmet.dnsPrefetchControl());<br /> app.use(helmet.expectCt());<br /> app.use(helmet.frameguard());<br /> app.use(helmet.hidePoweredBy());<br /> app.use(helmet.hsts());<br /> app.use(helmet.ieNoOpen());<br /> app.use(helmet.noSniff());<br /> app.use(helmet.permittedCrossDomainPolicies());<br /> app.use(helmet.referrerPolicy());<br /> app.use(helmet.xssFilter());<br /> </code></p></pre>
<p></p> 
<h2>Helmet 各项安全防范</h2> 
<ol> 
 <li>CSP(Content-Security-Policy) <p>在 HTTP 头里返回给浏览器，支持 CSP 的浏览器就可以开启 XSS 保护，只允许配置的域名或本域名的脚本运行。可自定义 header options，默认为空。阮一峰有一篇博客讲解如何设置 CSP 的可以<a href="https://www.ruanyifeng.com/blog/2016/09/csp.html">参考一下</a>。</p> </li> 
 <li> <p>Referrer Policy</p> <p><a href="https://developer.mozilla.org/en-US/docs/Web/Security/Referer_header:_privacy_and_security_concerns">参考 MDN 关于 Refferer Header 的隐私安全文章</a>，原本这个 HTTP 头是为了统计当前页面来源的，但是携带的无用信息太多，反而可能导致用户信息泄露。比如说邮件退订这种页面，一般是不需要登录就可以操作，如果这个页面里又有其他外部链接可以跳出去，带上了当前页面的链接地址，则另一个页面就可以轻易拿到这个可操作链接，直接让用户退订邮件。</p> <p>helmet 默认返回 <code>no-referrer</code>。</p> </li> 
 <li> <p>Expect-CT</p> <p>CT 是 <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Certificate_Transparency">Certificate Transparency</a> 的缩写。今时今日，多数网站都已经配置了 https 保证网络流量加密，大家用的证书都是各大 CA 颁发的。但是实践证明， CA 也有可能干坏事，或者CA证书也有可能被偷了之类的，这样其他人拿到这个证书，再做一个恶意网站钓鱼劫持一下就可以为所欲为了。</p> <p>所以 Google 就发起了 CT 这个项目，把所有颁发的证书记录到 Log Server。服务器可以在 HTTP 回包头里告知浏览器是否需要验证一下 CT，当然只对 https 请求生效。</p> <p>如果你设置了 <code>reportUri</code>，则浏览器当 CT 验证失败之后，会通过填入的 url 上报给你的服务器。</p> </li> 
 <li> <p>Strict-Transport-Security</p> <p>强制使用 HTTPS，这没什么好说的，如果是新服务，也没什么旧的客户端依赖的话，开启 HTTPS 肯定是更安全的。</p> </li> 
 <li> <p>X-Content-Type-Options: nosniff</p> <p>这其实是针对浏览器（主要是 IE） MIME Sniffing 特性的一个对抗。比如说 IE 会忽略服务器返回 MIME 类型，自行猜测推断出正确的 MIME 然后执行。因为历史原因，MIME Sniffing 特性允许浏览器嗅探包括 <code>application/javascript</code>，<code>text/javascript</code> 等多种类型。这个特性在服务器返回错误 MIME 的时候当然很有用，但是也会引发安全问题。</p> <p>比如有个服务器它专门 host 图片资源的，然后有恶意用户上传了一张精心设计的图片（其实是一堆 JS 代码），然后把链接发给用户诱导用户打开它。这时候浏览器如果支持 MIME Sniffing 就可能下载完自动探测为 JS 类型然后执行了。</p> <p>现代浏览器基本都支持 <code>X-Content-Type-Options: nosniff</code>，helmet 默认会打开。</p> </li> 
 <li> <p>X-DNS-Prefetch-Control</p> <p>这个 HTTP 头可以告知浏览器是否要提前做 DNS 域名解析，以便在用户点击页面链接的时候省去 DNS 这一步的时间，提升浏览体验。</p> <p>网页端可以加一个 <code>&lt;meta&gt;</code> 或 <code>&lt;link&gt;</code> 标签来开启这个功能:</p> <pre><code>&lt;meta http-equiv="x-dns-prefetch-control" content="on"&gt;
</code><p><code>&lt;link rel="dns-prefetch" href="//xxx.github.io"&gt;<br /> </code></p></pre><p></p> <p>helmet 默认把这个功能关了，理由是保护用户隐私。我觉得 HTTP 头关掉挺合理的，需要的话可以在网页端的首页加上相关域名的预解析标签来解决。</p> </li> 
 <li> <p>X-Download-Options: noopen</p> <p>这是针对 IE 8 一个特性而设置的。IE 8 支持在当前页面下载一个附件后直接打开，这个“打开”如果是一个 HTML 文件，它里面的脚本就可以盗取当前页面的所有信息。</p> <p><img decoding="async" src="https://dpsvdv74uwwos.cloudfront.net/statics/img/blogposts/cookie_theft_example_forced_download.png" alt="" /></p> <p>比如上图的例子，这个 HTML 文件被打开了之后就可以轻松盗取当前页面的 cookie。解决这个问题的方法就是设置 <code>X-Download-Options: noopen</code>。</p> </li> 
 <li> <p>X-Frame-Options: deny</p> <p>这个设置项是为了防止 ClickJacking 攻击，这种攻击手段就是在你的页面上覆盖一个透明的 iframe，然后诱使用户去点你的页面。这时候用户就可能一不小心点到了这个 iframe 从而执行了他的恶意代码。</p> <p>helmet 默认返回 <code>X-Frame-Options: deny</code>，这样浏览器就不会响应 iframe 的点击事件了。需要的话也可以改成 <code>sameorigin</code>，当前域名。</p> </li> 
 <li> <p>X-Permitted-Cross-Domain-Policies</p> <p>这个是针对 Adobe 产品(Flash/Acrobat)的跨域策略，默认不允许: <code>none</code>。鉴于 Flash 已经凉凉了，改为 <code>none</code> 应该没什么问题。</p> </li> 
 <li> <p>删掉 X-Powered-By</p> <p>严格来讲这并不是安全原因，只是当你用 PHP/ASP.net/Express 的时候，默认 HTTP 头会填上这个属性，有点广告的意思。删掉这个省点流量（并没有什么流量）。</p> </li> 
 <li> <p>X-XSS-Protection</p> <p>这是把浏览器自己的 XSS Filter 给 disable 掉，因为实在太 buggy XDDD</p> </li> 
</ol> 
<h2>What's Next</h2> 
<p>看完了一圈其实 Helmet 也没做特别复杂的事情，源码也很简单，大家可以<a href="https://github.com/helmetjs/helmet">参考 github 仓库</a>。每个小点就是一个中间件，接受 <code>req</code>/<code>res</code>，然后自行处理一下再传给下一层。</p> 
<p>上述默认配置看起来也是比较简单的通用配置，但作为一个小白，如果不细看 Helmet 的配置我对这些“基本安全知识”也是知之甚少，还是颇有收获的。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://www.ruanyifeng.com/blog/2016/09/csp.html">Content Security Policy 入门教程 - 阮一峰的网络日志</a></li> 
 <li><a href="https://developer.mozilla.org/en-US/docs/Web/Security/Referer_header:_privacy_and_security_concerns">Referer header: privacy and security concerns - Web security | MDN</a></li> 
 <li><a href="https://zhuanlan.zhihu.com/p/31757673">Certificate Transparency——证书数据解析 - 知乎</a></li> 
 <li><a href="https://tools.ietf.org/html/rfc6962">RFC 6962 - Certificate Transparency</a></li> 
 <li><a href="https://transparencyreport.google.com/https/certificates">HTTPS encryption on the web – Google Transparency Report</a></li> 
 <li><a href="https://www.certificate-transparency.org/">Certificate Transparency</a></li> 
 <li><a href="https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME 类型 - HTTP | MDN</a></li> 
 <li><a href="https://mimesniff.spec.whatwg.org/">MIME Sniffing Standard</a></li> 
 <li><a href="https://riboseyim.github.io/2017/08/31/CyberSecurity-Headers/">Cyber-Security:Web应用安全：攻击、防护与检测 | Ribose Yim's Home</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 31 2077&#xFF0C;&#x4F60;&#x8D5B;&#x535A;&#x670B;&#x514B;&#x4E86;&#x5417;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/DC3B09A7-1AFA-45F1-99BD-409A98F5E939/</link>
        <guid>https://justinyan.eth.limo/DC3B09A7-1AFA-45F1-99BD-409A98F5E939/</guid>
        <pubDate>Sun, 13 Dec 2020 08:50:23 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/12/podcast031.jpg" alt="Vol. 31 2077，你赛博朋克了吗？" /></p> 
<p>最近主播 @Justin 入手了一台 PS5，据说是为了玩《赛博朋克2077》，谁知拿到手才发现这游戏要明年才会适配 PS5 XDDD</p> 
<p>《赛博朋克2077》大热，两位主播虽然没时间玩太久游戏，但热情不减，于是有了这一期吹水的节目！</p> 
<h2>话题征集&amp;互动有奖</h2> 
<p>欢迎大家在小宇宙 App 评论区参与本期节目互动，我们将随机抽取 2 位听众送出小礼物哟~</p> 
<ul> 
 <li>互动话题：你想玩《赛博朋克2077》吗？是什么最吸引你？</li> 
 <li>奖品介绍：QQ音乐/网易云音乐 VIP月卡×1</li> 
 <li>活动说明：下周一开奖，中奖名单将在小宇宙评论区公布</li> 
</ul> 
<p>你也可以通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<h2>时间轴</h2> 
<ul> 
 <li>00:28 上期抽奖公布</li> 
 <li>01:44 PS5 入手有感</li> 
 <li>03:53 有钱买游戏，没时间玩游戏</li> 
 <li>05:38 捏脸还是捏鸡，都是营销套路</li> 
 <li>09:10 流浪者 vs 街头混混 vs 公司狗</li> 
 <li>10:28 现实里缺什么，游戏里就补什么</li> 
 <li>11:40 赛博朋克的自由度如何？</li> 
 <li>20:11 BUG尚存，优化仍再继续</li> 
 <li>24:38 色情+暴力+血腥+粗口</li> 
 <li>31:10 细节狂魔 CDPR</li> 
 <li>37:11 灵魂一问：给 2020 的一句话</li> 
 <li>41:07 互动问题：2077 你想玩吗？</li> 
 <li>41:31 片尾曲《Kill Kill》 - 2077游戏原声带</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/X_dcUIjiiZc" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>&amp;ab_channel=LakeshoreRecords"&gt;Kill Kill</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #163 Jared Diamond - &#x300A;&#x67AA;&#x70AE;&#x3001;&#x75C5;&#x83CC;&#x4E0E;&#x94A2;&#x94C1;&#x300B;</title>
        <link>https://justinyan.eth.limo/9C0DFF40-00A3-4552-B3B0-45D426AD1768/</link>
        <guid>https://justinyan.eth.limo/9C0DFF40-00A3-4552-B3B0-45D426AD1768/</guid>
        <pubDate>Thu, 10 Dec 2020 14:33:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/12/fyyd-010.jpg" alt="枫影夜读 #10——Jared Diamond《枪炮、病菌与钢铁》" /></p> 
<p></p>
<center>
 “枫言枫语·每周读书”在 153 期后结束，以“枫影夜读”为名重新开始
</center>
<p></p> 
<p>上一期我们介绍过<a href="https://justinyan.me/post/4393">黄仁宇的《中国大历史》一书</a>，其中有两个我觉得比较有意思的问题：</p> 
<p><strong>一、中国的经常统一</strong>: 相对的，欧洲则处于长期分裂，所以我初次接触欧洲历史时感到手足无措。</p> 
<p><strong>二、 中国近代之一边倒的屈辱</strong>: 中国自改革开放以来经过爆发式的增长，可谓已跻身世界强国之列，<a href="https://justinyan.me/post/2690">與那霸润在《中国化的日本》中</a>则说中国只是回到了他以前的位置。不过，目前世界上多数“发达”国家还是“西方国家”。</p> 
<p>为什么现代社会中，总体强势的依然是曾经的“西方列强”们呢？上述黄仁宇的《中国化的历史》和與那霸润的《中国化的日本》虽有涉及但多以历史事件，社会制度，结合当时之社会弊病而谈。如果我们把这个问题的答案追溯得更远，把讨论的范围扩大到现代社会的人种差异，国家差异，大陆差异呢？</p> 
<p>今天我们要介绍的是一部非常有名的作品——Jared Diamond (贾雷德·戴蒙德)的著作——<strong>“Guns, Germs, and Steel”</strong>(简繁译名均为《枪炮、病菌与钢铁》)，副标题为 "The Fates of Human Societies" (人类社会的命运)。</p> 
<p>这不是一本容易读的书，但又是一本非常值得阅读的书，所以我利用碎片时间断断续续读了大半年才终于读完。作者 Jared Diamond 1937 年生于美国波士顿，早年在哈佛毕业后到英国剑桥的圣三一学院进修拿下博士学位，现在是 UCLA 的地理学教授。</p> 
<p>1972 年， 35 岁的他在新几内亚研究鸟类的演化，这是他的爱好之一。有一天他和当地一个知名的政治家耶利一起散步时，耶利问了他一个问题：</p> 
<blockquote>
 <p> 为什么你们白人制造了那么多的货物并将他们运到新几内亚来，而我们黑人却几乎没有属于我们自己的货物呢？</p> 
 <p> “Why is it that you white people developed so much cargo” – meaning manufactured goods, medicines, clothing – “but we black people had little cargo of our own?” Diamond elaborates: “Peoples of Eurasian origin … dominate the modern world in wealth and power … why did wealth and power become distributed as they now are, rather than in some other way? For instance, why weren’t Native Americans, Africans and Aboriginal Australians the ones who decimated, subjugated or exterminated Europeans and Asians?” </p>
</blockquote> 
<p>这个看似简单的问题其实困扰了教授很久。1985 年他获得麦克阿瑟奖（MacArthur Fellowship Award），这个奖项不是奖励过去的成就，而是鼓励有创意，有潜力的人。但是 Diamond 获奖后却压力重重，于是接下来 10 年，他写出了多本有影响力的作品，《枪炮、病菌与钢铁》是他的第二部著作，也是最有影响力的一部。这部作品简单地说就是要回答耶利的问题，而且值得注意的是本书于 1997 年在美国出版，要知道黑人旅行手册的《绿皮书》直到 1967 年还在美国销售，所以本书的主题很容易会陷入种族歧视的争论。</p> 
<p>现在我们当然知道不同肤色的人之间并没有能力差别，但如果只回答因为大航海时期欧洲的社会制度、经济发展、科技实力都强于新几内亚，那显然还没有触及问题的本质：<strong>为什么是欧洲征服其他大陆而不是反过来，非洲、新几内亚征服欧洲？</strong></p> 
<p>作者以非常硬核的科学分析方法，从人类几十万年前的历史开始讲起。这里的硬核既是本书最有趣的地方，也构成了本书较高的阅读门槛。</p> 
<p>本书分为四个部分，第一部分讲述了人类从 700 万年前起源，到 50 万年前智人的出现，再到现代人类最大的人口变迁：欧洲到美洲新大陆的巨大冲突。这次冲突就是回答耶利问题的直接原因：欧洲人有马、枪炮、钢刀、远洋船只，有中央集权的行政组织，有文字，有因为常年跟家畜生活在一起的流行疾病，而美洲大陆则处于弱势。</p> 
<p>而导致这一局面的终极原因，作者则在第二部分引出了各大陆的地理特点：<strong>欧亚大陆的东西轴线走向更适于物种传播，同时也有比其他大陆多的更适合驯化的野生动植物</strong>。比如大麦小麦的驯化，猪、绵羊、山羊的驯化，这些动植物在相同纬度下更容易适应环境，所以相较于美洲大陆和非洲大陆的南北走向，传播更为容易。</p> 
<p>有了驯化动植物之后会产生粮食剩余和定居生活，也就有了余粮可以养活不耕作的上层阶级，从而产生规模更大的定居，产生等级社会，接着催生了技术进步，行政组织进化，和流行疾病的免疫。作者在第三部分讲述了从粮食生产到技术发展，文字产生和传播，以及病菌在文明冲突中的影响。最后第四部分作者把他的理论用于解释新几内亚，中国，非洲的文化形成以及东西半球的碰撞。</p> 
<p>我所读的是上海译文出版社，谢延光翻译的版本。虽然有些句子颇有机器翻译的感觉，但总体翻译质量还不错，词句拗口虽多，但应该归咎于原文多术语所致，原文本来就挺难读的。虽不好读，但本书的视角非常独特。涉及的历史时间跨度大，在举证动植物驯化时也采用科学的方法列举大量表格和数据，一方面读起来相对枯燥，但另一方面推理的过程却令人兴奋。相比于《全球通史》，本书的分析部分更多。类似世界上最重要的已驯化的大型哺乳动物只有 5 种，欧亚大陆全都有，而美洲大陆在哥伦布登陆的时候是没有马的，也几乎没有可用作畜力的大型哺乳动物。这样的分析既深刻又有趣。</p> 
<p>但是跟经济学类似，历史也是无法实验的。你不可能为了证明“如果希特勒不存在世界会变成怎样”然后就去做个实验看看结果。所以历史的推论分析部分往往多于实践证明。这难免使历史作品陷入舆论争辩之中。同时 Diamond 在本作中以科学分析的角度解读各大陆之间的冲突，抹去了道德因素（这在第一章已经声明本书并不是要寻找到的原因），所以本书出版后就有人评论他是在给欧洲殖民主义洗白，说他是一个民族主义者。但根据我的理解，作者并没有表达出种族优越感或者因为某些大陆的领先优势就鄙视另外的大陆，他只是客观地着墨于环境对人类社会的影响，就像我们做完实验之后写的实验报告一样。</p> 
<p>但是这样的结论也容易落下“宿命论”的痕迹。<a href="https://justinyan.me/post/1762">《人类群星闪耀时》</a>里提到的天才人物在 Diamond 的环境影响理论中显得只是宿命的一个闪光点。Diamond 的理论也无法用来解释短时间跨度的文化、物种传播，也无法预测是否会出现希特勒或没有希特勒世界会变成怎样。但无论如何，《枪炮、病菌与钢铁》因着提出了一种新颖的看待历史的角度，翔实的数据佐证，科学的理论推导，还是不失为一部非常有趣的上佳之作。</p> 
<p><em>P.S. National Geographic Society (国家地理协会)跟 Diamond 合作拍过一部同名纪录片，于 2005 年播放，B 站和 YouTube 都可观看。</em></p> 
<p><em>P.P.S. 本文与本书封面均为英国画家 John Everett Millais 于 1846 年所作的油画作品 "Pizarro seizing the Inca of Peru"，直译即《皮萨罗抓住秘鲁的印加》。现藏于英国V&amp;A博物馆。</em></p> 
<h2>参考资料</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️⭐️(5/5)</li> 
 <li>标题: 枪炮、病菌与钢铁</li> 
 <li>英文标题: Guns, Germs, and Steel</li> 
 <li>作者: Jared Diamond</li> 
 <li>出版社: 上海译文出版社</li> 
 <li>出版年: 2016 年 8 月 2 日(原作首次出版于 1997 年 3 月)</li> 
 <li>ASBN: B01JKS94VI</li> 
 <li>版本: Kindle</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4393">枫影夜读 #9 —— 黄仁宇《中国大历史》</a></li> 
 <li><a href="https://justinyan.me/post/2690">每周读书 #112 日本被中国赶超的担忧——《中国化的日本》</a></li> 
 <li><a href="https://justinyan.me/post/1762">每周读书 #55 茨威格——《人类群星闪耀时》</a></li> 
 <li><a href="https://www.theguardian.com/books/2014/oct/24/jared-diamond-bestselling-biogeographer-answers-critics">Jared Diamond: ‘Humans, 150,000 years ago, wouldn’t figure on a list of the five most interesting species on Earth’ | Jared Diamond | The Guardian</a></li> 
 <li><a href="https://www.tandfonline.com/doi/abs/10.1080/10455752.2013.846490">F**k Jared Diamond: Capitalism Nature Socialism: Vol 24, No 4</a></li> 
 <li><a href="https://www.bilibili.com/video/BV1Wt411w7ua?from=search&amp;seid=14262493192876710283">【国家地理频道】枪炮病菌与钢铁 Guns Germs And Steel (2005)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili</a></li> 
 <li><a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/dgGw8kZnJxE" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;National Geographic Guns Germs And Steel 1 of 3 Official - YouTube</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #162 &#x9EC4;&#x4EC1;&#x5B87; - &#x300A;&#x4E2D;&#x56FD;&#x5927;&#x5386;&#x53F2;&#x300B;</title>
        <link>https://justinyan.eth.limo/C4D876CF-FBAD-4101-B652-533DAA70B1B0/</link>
        <guid>https://justinyan.eth.limo/C4D876CF-FBAD-4101-B652-533DAA70B1B0/</guid>
        <pubDate>Wed, 02 Dec 2020 14:42:08 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/12/fyyd-009.jpg" alt="枫影夜读 #9 —— 黄仁宇《中国大历史》" /></p> 
<p>还记得第一次阅读欧洲历史时，为其长期之分裂而深感头疼。但其实中国因着与世隔绝的地理位置，以及游牧民族与农耕民族的长期斗争，才能有这几千年文化之延续。虽有春秋战国、五胡乱华、五代十国等分裂之时，但宏观上统一多于分裂。所以倘若以全球眼光来看，中国历史才是异类。</p> 
<p>今天我们要介绍的是美籍华人、历史学家黄仁宇(Ray Huang) 1993 年的作品：《中国大历史》。其英文版名为”China: A Macro History”，出版于 1988 年 11 月。</p> 
<p>黄仁宇生于 1918 年，曾在二战和国共内战时期担任中华民国国民党革命军长官。后来因故不再从军，转而到美国密歇根大学求学，获历史博士学位。用黄老先生自己的话说，此乃:</p> 
<blockquote>
 <p> 学书未成先习剑，用剑无功再读书。 </p>
</blockquote> 
<p>我最早听说此书大约在 2004 年前后，不过直到今日方才读完，颇有恨晚之感。上一次读黄仁宇的《万历十五年》距今已 10 年有余，犹记得是部有趣的作品。《中国大历史》亦然，虽然因为年代的关系，中文的使用有些生硬拗口，但内容翔实，不仅以高度压缩的方式叙述中国历史，也频频援引西方史料作为对照，更加入经济学、政治制度之分析，多种角度带来多种思考。</p> 
<p>在上个世纪，相较于《史记》这样更关注人对历史进程之影响的传统正传，以宏观视角看待历史的作品并不多见。此前我们介绍过的 1970 年出版的《全球通史》就是破除欧洲中心论的一种进步，黄仁宇的《万历十五年》也颇有这种鸟瞰视角。后来 1997 年 Jared Diamond 出版的《枪炮、病菌与钢铁》则更进一步，用科学研究的方式来讲述历史。</p> 
<p>我并不是历史专家，可能会有人认为这三本书均非学术论文之作，不过对于我这种门外汉来说，读来能有所收获便已十分满足。</p> 
<p>全书大体上以时间为主线，上启夏商周，下至香港回归前夕。篇幅安排上，秦、唐宋元明清以及近代史较多，而分裂局面之着墨占少。这可能跟本书在分析上之安排有关。纵观中华上下五千年，统一多而分裂少，每个朝代基本上开国盛世，中兴而后衰，再被下一个王朝取而代之。黄仁宇分析了每一个朝代的行政特色，提出中国历史上各王朝一直无法解决的一个问题：不能在数目上管理。</p> 
<p>这句话比较难理解，我自己在阅读过程中有些疑惑，本书在中文读者中流行后也引发了不少争议。我并非专家，无从论断其专业细节是否存在谬误，只从自身理解出发，“数目上之管理”应当指的是技术手段加上市场化制度。</p> 
<p>当日王安石欲施变法，即使有皇帝撑腰亦不可得，首先在于技术手段的不允许，比如变法中之“方田法”，“全面测量土地之后，以每边五千尺为一方，内中又按土地之肥瘠分作五等以便按出产量来征税”。这个方法并不具备技术基础，“公元 1082 年，开封府报告每年测量只及于两县，全府之十九县须十年才能测量完毕”。</p> 
<p>至于新法之目的是要将帝国财政商业化，要实现这一点，国家金融管制也需要到位。汇票、提货单、保险单、共同海损、借款、股份等等一系列业务都需要立法保障。这在中国几千年之过去是无法实现的。</p> 
<p>当然我们现在回顾历史，很容易带着现代的眼光去检视过去，但如果身处当时，却未必能有超越时代之见解。</p> 
<p>过去读中国历史，有几个时期总是模糊，一是五胡乱华，二是五代十国，三是近代史。都是中国处于分裂或混战变革的时期。本书以宏观视野高度压缩史料，是以历史上的分裂时期讲得也不多，但给出了一个大体的时代描述。其中原因大约在于历史资料之缺乏。至于近代史，晚清、民国、抗日、新中国，从屈辱、混乱、革命走向希望，则提供了相比教科书更加全面的视角。清政府并非一味屈辱无能，有其时代的局限，民国政府让位袁世凯也有他的无奈。</p> 
<p>唐太宗李世民曾说：</p> 
<blockquote>
 <p> 以铜为鉴，可正衣冠；以古为鉴，可知兴替；以人为鉴，可明得失。朕尝保此三鉴，内防己过。今魏徵逝，一鉴亡矣。 </p>
</blockquote> 
<p>无论中外历史，读之总有映射回当下之感慨。作者讲到维新变法依然仰赖光绪皇帝颁布新法时，我想到王安石之变法。作者称这种政策之颁布是一种“架空式设计”，只要皇帝下旨，就仿佛政策已经成功执行了。再提到武则天与李世民一样深得极权之真髓：既系最高之名位，则不能有任何条件的限制与约束。</p> 
<p>我又想起我最喜欢的小说作家金庸，他常以历史为舞台，让笔下人物驰骋沙场，与历史星辉同台竞技。其实那时候人们在做什么，现在还在做什么。</p> 
<p>2020.12.01/下午</p> 
<p><em>P.S. 题图来自故宫博物院，标题《爱上故宫》，摄影师张林</em></p> 
<h2>参考资料</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 中国大历史</li> 
 <li>英文标题: China: A Macro History</li> 
 <li>作者: 黄仁宇 (Ray Huang)</li> 
 <li>出版社: 生活·读书·新知三联书店</li> 
 <li>出版年: 2014-03-01</li> 
 <li>ISBN: 9787108010360</li> 
 <li>版本: 纸质书</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4290">枫影夜读 #3 L·S·斯塔夫里阿诺斯《全球通史》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 30 &#x79D1;&#x6280;007&#xFF1A;5G&#x53EA;&#x80FD;&#x7528;&#x6765;&#x51E1;&#x5C14;&#x8D5B;&#x5417;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/84EA5CE1-A664-431E-80E5-408928D66C73/</link>
        <guid>https://justinyan.eth.limo/84EA5CE1-A664-431E-80E5-408928D66C73/</guid>
        <pubDate>Tue, 01 Dec 2020 08:50:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/11/podcast-030.jpg" alt="Vol. 30 科技007：5G只能用来凡尔赛吗？" /></p> 
<p>哈喽大家好！</p> 
<p>上期节目播出之后，收到了多位小伙伴发来的问题，非常感谢大家。我们的节目也在继续征集问题，欢迎大家随心所欲地提问。</p> 
<p>本期节目我们要讨论的问题是：应不应该升级5G套餐？</p> 
<p>上个月(10月)苹果发布了 iPhone 12 系列手机，也再次掀起大家对手机 5G 套餐的讨论。无论你是 iPhone 12 的用户还是支持 5G 的安卓手机的用户，可能都会有是否应该升级 5G 的疑问。</p> 
<p>那就让两位主播带你走近科学，来一场关于下一代手机网络的科(lào)普(kē)。</p> 
<p><em>P.S. "科技007"是一个船新栏目，我们将以科（cū）普（qiǎn）的语言，问（lào）答（kē）之形式，回答各位朋友们关于科技圈的种种疑惑，欢迎诸位听众朋友随心所欲地提问。</em></p> 
<h2>话题征集 &amp; 互动有奖</h2> 
<p>欢迎大家在小宇宙 App 评论区回复你感兴趣的话题，或者参与本期节目互动，我们将从评论中随机抽取 2 位听众送出小礼物哟~</p> 
<ul> 
 <li>互动话题：你打算升级到 5G 套餐吗？为什么？</li> 
 <li>奖品介绍：QQ音乐或网易云音乐 VIP月卡×1</li> 
 <li>活动说明：下周一开奖，中奖名单将在小宇宙评论区公布</li> 
</ul> 
<p>你也可以通过以下方式联系我们：</p> 
<ul> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<h2>时间轴</h2> 
<ul> 
 <li>00:07 听众反馈 &amp; 互动有奖</li> 
 <li>01:35 一段凡尔赛表演</li> 
 <li>02:33 5G 套餐的网速和资费</li> 
 <li>05:58 5G 的优缺点感受</li> 
 <li>08:55 5大核心技术：① 毫米波技术</li> 
 <li>13:15 手机 5G 与 WiFi 5G 的异同</li> 
 <li>14:24 ② MIMO 技术解决信号穿透问题</li> 
 <li>15:59 ③ Small Cell 技术解决信号覆盖问题</li> 
 <li>20:06 ④ Beamforming 波束成形技术</li> 
 <li>24:26 ⑤ Full Duplex 全双功技术</li> 
 <li>27:29 5G 发展的初级阶段</li> 
 <li>29:03 5G 背后的“阴谋论”</li> 
 <li>32:00 运营商极力推荐</li> 
 <li>34:04 iPhone 12 在独立 5G 技术的坑</li> 
 <li>37:11 中美 5G 的差异</li> 
 <li>38:05 iPhone 5G 自动功能</li> 
 <li>39:41 技术野心：万物皆可 5G</li> 
 <li>40:10 暂不推荐升级 5G 套餐，零成本除外</li> 
 <li>42:31 国行和美版 iPhone 的差异</li> 
 <li>44:08 5G 未来展望</li> 
 <li>46:08 从业人员的机遇和挑战</li> 
 <li>50:30 新赛道的宠儿</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/A2tJ6P5POks" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Cyberpunk 2077 Trailer ft. Bullets by Archive</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用小宇宙等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。</p> 
<p>荔枝FM，喜马拉雅，蜻蜓FM等平台亦有同步。</p> 
<ul> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 29 &#x79D1;&#x6280;007: &#x4E3A;&#x4EC0;&#x4E48;iPhone&#x4E00;&#x6B21;&#x53EA;&#x80FD;&#x8FD0;&#x884C;&#x4E00;&#x4E2A;App&#xFF1F;</title>
        <link>https://justinyan.eth.limo/6B0FB3CE-B630-4DA1-81F8-E7F9F1EECA15/</link>
        <guid>https://justinyan.eth.limo/6B0FB3CE-B630-4DA1-81F8-E7F9F1EECA15/</guid>
        <pubDate>Mon, 23 Nov 2020 08:50:19 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/11/tech007-001.jpg" alt="Vol. 29 为什么iPhone一次只能运行一个App？" /></p> 
<p>各位亲爱的听众朋友们，你们好啊！</p> 
<p>本台居然出乎意料地完成了我们年初定下的 KPI：今年内要发布 12 期节目。</p> 
<p>值此新春佳节之际，祝您及家人幸福吉…诶不好意思串台了。为了庆祝本台 KPI 之超额完成，我们两位主播决定开个新坑，名目唤作：<strong>科技007</strong>。</p> 
<p>"科技007"是一个船新栏目，我们将以科（cū）普（qiǎn）的语言，问（lào）答（kē）之形式，回答各位朋友们关于科技圈的种种疑惑，欢迎诸位听众朋友随心所欲地提问。</p> 
<p>你可以通过以下任一方式进行提问：</p> 
<ul> 
 <li>在收听本节目的各大平台留言评论</li> 
 <li>填写<a href="https://shimo.im/forms/VDp8JgXpGcqJtD6t/fill">听众反馈表单</a></li> 
 <li>也可发送邮件到 <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>期待你的参与！</p> 
<p>第 1 期节目的话题是：“为什么iPhone一次只能运行一个App？”，欢迎收听。</p> 
<ul> 
 <li>00:07 新系列「科技007」介绍</li> 
 <li>01:48 话题：为什么 iPhone 一次只能运行一个 App？</li> 
 <li>03:35 回顾 iPhone 和 iOS 的发展</li> 
 <li>06:06 墓碑机制 与 生命周期</li> 
 <li>08:14 iOS 后台管理方式的演化</li> 
 <li>09:50 Android 真后台运行方案</li> 
 <li>11:03 iOS 推送通知服务的工作原理</li> 
 <li>14:58 官方后台进程可能会很耗电</li> 
 <li>16:01 苹果自家 App 的特权</li> 
 <li>18:04 也不光是硬件资源的问题</li> 
 <li>20:33 JAVA 和 Objective-C</li> 
 <li>22:25 iPad、大尺寸 iPhone 的多任务</li> 
 <li>24:59 M1 芯片给 macOS 带来新 App 生态</li> 
 <li>29:26 macOS 能否实现 iOS App 多开?</li> 
 <li>32:50 Andoird App 多进程的套路</li> 
 <li>34:40 iOS 目前的多进程</li> 
 <li>35:50 苹果会做应用多开、手机分身吗？</li> 
 <li>39:44 片尾曲「James Bond Theme」- 007电影主题曲</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li>片尾曲: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/1UssXdE4MFI" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>&amp;ab_channel=HDFilmTributes"&gt;Dr. No • James Bond Theme • Monty Norman &amp; John Barry</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。小宇宙，荔枝FM，喜马拉雅等平台亦有同步。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.xiaoyuzhoufm.com/podcast/5e2864f5418a84a04628e249">小宇宙 - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #161 Christian White - &#x300A;&#x6D88;&#x5931;&#x7684;&#x5973;&#x5B69;&#x300B;</title>
        <link>https://justinyan.eth.limo/9A3384D2-20A3-4495-BCAA-C895EAF25127/</link>
        <guid>https://justinyan.eth.limo/9A3384D2-20A3-4495-BCAA-C895EAF25127/</guid>
        <pubDate>Sun, 15 Nov 2020 15:06:25 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/11/fyyd-008.jpg" alt="" /></p> 
<p>近日广州秋意盎然，这意味着 2020 年即将结束了。许是受疫情之影响，今年所读多为非虚构类作品。所以当我在豆瓣收到私信，推荐我阅读小说时，我也觉得该换换口味了。</p> 
<p>《消失的女孩》来自澳大利亚本土作家 Christian White 的首部作品，原作名为"The Nowhere Child"。2017 年 Christian 凭借本作拿下维多利亚总督文学奖(Victorian Premier's Literary Awards)。当时参选的是“未发表手稿”(Unpublished Manuscript)类目，题为"Decay Theory"。直译成中文是"(记忆的)衰退理论"，也是小说里非常重要的情节。获奖次年该作重题为"The Nowhere Child"出版，作者也正式出道成为全职作家。这几年作者除了写小说之外，还参与了 Netflix 的电视剧 Clickbait 的编剧，还有恐怖电影 Relic 的制作。</p> 
<p>"The Nowhere Child"是一部悬疑作品，主要谜题是 1990 年美国肯塔基州一个两岁女孩萨米(Sammy Went)失踪事件。几十年后，主角金(Kimbery Leamy)遇到了一个陌生男子，声称主角就是当年失踪的女孩，由此展开身世解谜之路。</p> 
<p>我阅读时总觉得作者在转场处理上颇受好莱坞和美剧镜头切换之影响。如第一幕展开谜题之时，陌生男子说完"我认为，你就是萨米·温特"然后这一幕就结束了，下一段直接转到主角在摄影课上的场景。类似这样不带下文的转场在本作中随处可见。</p> 
<p>对于影视作品来说，这样的过渡通常会插入黑幕，加一个非常短的音效转场，或者直接放到一集结尾，进片尾曲留下悬念。影视作品的节奏是由最终剪辑好的成片决定的，观众只是被带着走。但是在文本中这样处理，如果读者像我一样阅读节奏很快的话就难免觉得衔接不上，转场有些突兀。</p> 
<p>另一个让我感觉不足的是本作的多重反转设计。传统的三幕剧设计在第一幕揭示完主要悬念之后，将把最大篇幅留给第二幕推进主线直到大决战，大决战的分量跟第一幕大约相近。不过本作存在多重反转，所以最后大决战的节奏稍显混乱，而第二幕的推进因为双线叙事的方式而稍显拖沓。而且这个多重反转的设计里依赖人物情感变化的部分比较多，相对不那么客观。同样是以谜题设计出名的阿加莎则更注重客观线索设计，读起来更加合理，本作的反转则有技巧炫示之嫌。</p> 
<p>不过总的来说，小说的主线悬念设计得不错，身世之谜能一直保持到全书结束。中间作者刻意显露的部分线索也不足以让读者猜出全部结局，给最终大结局留下神秘感。如果要类比的话，可能更像 <a href="https://justinyan.me/post/1327">2011 年 S. J. Watson 的 "Before I go to sleep"</a>。</p> 
<p>另外本作的一大特色是时间上的双线叙事。基本上从第二幕开始，作者就以 1990 年案发当时的“过去线”和金(Kim)追查自己身世的“现在线”各成一章，交叉推进。上一次我读到类似写法的还是 <a href="https://justinyan.me/post/1933">2015 年 Andy Weir 的 "The Martian"</a>，也就是后来马特·达蒙（Matt Damon）主演的《火星救援》的原作小说。那部作品是以困在火星的主角和地球指挥部两个地点，双线叙事，配合地球与火星的光速时差，十分有趣。不过诚如我那时阅读该作之感，这种多线切换叙事（如小说《冰与火之歌》"A Song of Ice and Fire"）容易让读者产生迷失感。当我好不容易把感情投入到主角身上的时候，就被迫要转换上下文，重新以另一个角色的视角去经验小说世界。我的情感投入是有限的，所以在“过去线”里失踪女孩 Sammy 的姐姐 Emma 的视角就让我觉得有点无聊。</p> 
<p>另外是本作黑暗势力的核心驱动力问题（心内之光教会的特殊仪式），相对来说动力比较弱。所以结局会有点虎头蛇尾，不过只是作为普通悬疑小说消遣倒无伤大雅。</p> 
<h2>关于简体翻译</h2> 
<p>我所阅读的是陕西师范大学出版社出版的，王一鹏所翻译的版本，翻译质量比较糟糕。欧美译作一般来说对话部分有翻译腔我是可以理解的，英文长句如果直译过来会有些奇怪的语法倒装我也可以接受。但是这个译本让我频频出戏，读完第一章我就买了英文版，那读起来简直行云流水。但是为了评测简体版我只能把简体的读完，中间出戏的部分我再对照过去。阅读时总让我觉得是先用机器翻译之后，再手动微调一下就出版了。</p> 
<ol> 
 <li><strong>名词本地化</strong> <p>虽然结合上下文我能理解中文里的“散热器”(Radiator)、“冷藏器”(Cooler)、“蜂鸣器”(Buzzer)是什么，但是这可是一部小说作品的翻译啊，我觉得至少要有“暖气”、“冰箱”和“门铃”这种程度的本地化才合理。</p> <p>不过我读到把 Pizza 翻译为“比萨”而不是“披萨”的时候，我忍不住 Google 一下，却发现好像这样的翻译才是“政治正确”，不禁陷入深深的自我怀疑。</p> </li> 
 <li> <p><strong>不太好翻译的英文表达</strong></p> <p>中间有一段警官 Ellis 趁嫌疑人 Travis 不在的时候检查他的面包车，这时候 Travis 回来看到了，向他表达了不满，然后埃利斯的反应:</p> 
  <blockquote>
   <p> Ellis's storm-lit face was grave. 'I'm sorry, son. I guess I was being a snoop.' </p>
  </blockquote> <p>这里 <code>grave</code> 可以翻译为严肃的，但 <code>strom-lit face</code> 确实有点不好翻译，首先上下文里没有说天气有风暴，所以肯定不是天气。我的英文也不好，所以请教了两位英文好的朋友，他们都表示应该是表情变化比较快，比如“脸上青一阵白一阵”。但是我阅读的简体版则译为:</p> 
  <blockquote>
   <p> 风暴照亮了埃利斯的脸，他表情沉重：“很抱歉，孩子，我刚刚只是在调查。” </p>
  </blockquote> <p>另外 "I was being a snoop" 的歉意被吞掉了，换成了一个借口。类似这样的问题还有一些。</p> </li> 
 <li> <p><strong>中文语境下找不到对照的表达</strong></p> <p>这种问题倒是情有可原的，确实在中文语境下无法很好地译出原文语带双关，或者本地表达的信息。比如 Travis 在激怒他的同性情人 Jack 时说的:</p> 
  <blockquote>
   <p> "You used me one way, Jack. You may as well use me the other." </p>
  </blockquote> <p>简体译为:</p> 
  <blockquote>
   <p> “你已经利用过我了，你不妨再利用我一次。” </p>
  </blockquote> <p>丢失了“以两种方式使用我”的信息。</p> </li> 
</ol> 
<h2>关于简体的装帧排版</h2> 
<p>简体版为了区分“过去”和“现在”章节，以楷体印刷“现在”的内容，宋体印刷“过去”，其实挺多余的。在英文字体中，有衬线体与非衬线体之分，一般印刷主体内容使用非衬线体，然后用衬线体作为需要强调的不同的部分。原作"The Nowhere Child"就是用衬线体来表示角色的心理活动，非衬线体作为主要表述字体。中文字体因为没有衬线体与非衬线体之分，一般在印刷的时候会用楷体对应英文的衬线体部分。</p> 
<p>但是在这本书中，一方面楷体被用在整个“现在”篇幅，所以英文版用衬线标出的角色内心活动的部分，在简体版中就没有作出区分。另一方面，长时间阅读楷体中文，我还是觉得不太习惯，会有点累。</p> 
<p>综上，本作的楷体、宋体之分我觉得是多余了。至于原作的字体区分，只是印刷时的加分项而已，如果不做区分就会影响阅读的话，那还是作者没有写好，不能怪排版。</p> 
<p><em>P.S. 鉴于本作的翻译质量，推荐读者朋友阅读英文版。</em></p> 
<p><em>2020.11.15/于自居</em></p> 
<h2>参考资料</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️(3/5)</li> 
 <li>标题: 消失的女孩</li> 
 <li>原作名: The Nowhere CHild</li> 
 <li>作者: Christian White</li> 
 <li>译者: 王一鹏</li> 
 <li>出版社: 陕西师范大学出版社</li> 
 <li>出版年: 2020 年 8 月</li> 
 <li>ISBN: 9787569517453</li> 
 <li>版本: 纸质书</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/1933">火星救援（每周读书 七十一 Andy Weir《The Martian》） | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/1327">「每周读书」第四十二周——S. J. Watson Before I go to sleep | 枫言枫语</a></li> 
 <li><a href="https://www.christian-white.com/">Christian White 官网</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #160 Kieran Setiya - &#x300A;&#x91CD;&#x6765;&#x4E5F;&#x4E0D;&#x4F1A;&#x597D;&#x8FC7;&#x73B0;&#x5728;&#x300B;</title>
        <link>https://justinyan.eth.limo/56E1AA72-2043-4D2F-8A7A-8B21D39E5931/</link>
        <guid>https://justinyan.eth.limo/56E1AA72-2043-4D2F-8A7A-8B21D39E5931/</guid>
        <pubDate>Sun, 08 Nov 2020 17:57:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/11/fyyd-007-2.jpg" alt="枫影夜读 #7 —— Kieran Setiya 《重来也不会好过现在》" /></p> 
<p></p>
<center>
 <em>“枫言枫语·每周读书”在 153 期后结束</em>
</center>
<br /> 
<center>
 <em>以“枫影夜读”为名重新开始</em>
</center>
<p></p> 
<p>《重来也不会好过现在：成年人的哲学指南》来自 MIT (Massachusetts Institute of Technology)的语言学与哲学系教授 Kieran Setiya，本书原名为 "Midlife: A Philosophical Guide"。直译成中文应该是"中年：一份哲学指南"，我所阅读的这本由广西师范大学出版社出版的译本显然夹带了私货，不过我觉得这个译名还不错。</p> 
<p>作者 Kieran Setiya 出生于 1976 年，时年 44 岁。全书围绕“中年危机”(Midlife Crisis)之核心讨论。我相信一提起“中年危机”可能身处中年的男性同胞们都会有些闪避之色，毕竟这是一个连男歌手捧着保温杯都能上微博热搜的时代，现代人对于“中年”之不友好可见一斑。即连作者在选择研究本命题时，也逃不了要被朋友同事揶揄一番。</p> 
<p>所以 Kieran 为什么要研究这个命题并写下这本书呢？作者认为，“中年危机”并不是人到中年才有的问题，它所表现出的重复、错失、悔恨，以及对死亡的恐惧，可以在 20 岁或 70 岁时出现。这是一个贯穿人类一生的命题，只是在中年时期比较容易出现而已。同样作者也曾面对过类似的感觉，也曾试图从经典、哲学家、作家们的身上寻找过解决问题的方法，这些探索的过程都被写进本书。</p> 
<p>在本书的英文版中，作者在引言(Introduction)之后开门见山地介绍了"中年危机"一词产生的历史，以及这些年来人们就此展开的诸多讨论，题为《中年危机小史》(A Brief Hisotry of Midlife Crisis)。不过说实话，这篇“小史”有些冗长。可能是出于学术上的严谨，作者列举了很多位学者、作者及其作品，像是大家熟悉的歌德，和他写的《浮士德》。不太熟悉的精神分析家埃里奥特·杰奎斯(Elliott Jaques)，他在 1965 年发表的论文中首次使用了"中年危机"(Midlife Crisis)这个词。还有我们<a href="https://justinyan.me/post/2683">此前介绍过的约翰·威廉姆斯(John Williams)所写的小说《斯通纳》(Stoner)</a>。</p> 
<p>我觉得这个"小史"读起来有点无趣，所以我猜测简体版的编辑也是出于这样的原因，把它放到了全书的最末尾，仅在附录前面的位置，并且还冠以标题:"补充阅读"。我并不反对这样的编排，不过偶尔读到“我们此前提到过的某某在某某作品中说过的某某”时我会稍显错愣。另外我觉得“补充阅读”可能有点过分了，不过整体上并不影响阅读。</p> 
<p>如前文所述，作者并不认为“中年危机”是中年人的问题，而是所有与不可逆的时间搏斗的人的共同问题。所以开篇作者就约翰·斯图亚特·密尔(John Stuart Mill)为例，讲述了这位 19 世纪最有影响力的英国哲学家和公共知识分子，是如何在 20 岁时遭遇精神崩溃，以及他的自救之路。</p> 
<p>在这一章中，作者分析了利己主义悖论和密尔的自救方法，并解释了为什么密尔的方法并不适用于作者。这种结构基本上构成了本书五个主要章节的结构：先分析学者、名家的事例与应对方法，再分析是否适用。五个章节一共提出了十一个应对中年的策略。我认为阅读本书不应抱着寻找答案而来的观点，也与作者在“尾声”所述不谋而合：</p> 
<blockquote>
 <p> 作为一本自救性质的书，本书教给你的第一条法则是关注自身以外的事物，这可能有些反讽。务必读读这本书啊，但阅读它需要处于短暂人生中的兴趣，而不是改进自己的人生！根据利己主义悖论，这样的反讽会困扰自救的事业，它利用的动机恰恰阻碍了它的目标实现。</p> 
 <p> It is an irony in a self-help book that its first rule is to care about things other than yourself. By all means read the book, but do it out of interest in the temporality of life, not to improve your own! According to the paradox of egoism, this irony afflicts the very enterprise of self-hep, which exploits a motive that obstructs its goal. </p>
</blockquote> 
<p>当我写作本文的时候，我关心的是在写作过程中带给我的二次思考，是对一本有趣的书的深度回应。写作本身就是我的目的，完成本文不是。这既是以关注写作本身以外的事物之心态来写作，也是如书中提及的，关注“存在主义价值”而非“缓和性价值”。</p> 
<p>人在俗世，当有俗务。买房买车可谓当今世间（国内）俗事之主题。当你还没有达成这些目标时，你的一切都在为此而努力，当你达成之时，你只会感觉一阵空虚。因为这些都是可完成的“终结性目标”，它们的存在有如“众生皆苦”的预设，每达成一件事情，每改善一点生活（无论是独善其身还是兼济天下），你的人生就少一件目标。</p> 
<p>多年前还在上学的我对于写作的看法是：把文章写好，顺便把考试分数达到。</p> 
<p>多年后我对自己想做的产品的看法是：把产品做好，顺便拥有一些喜欢它的用户。</p> 
<p>阅读本书不会带来答案与改变，正如阅读《富爸爸，穷爸爸》不会让你财富自由。但是只要阅读能带来思考，而思考本身就已具备它的价值。</p> 
<p><em>2020.11.08/于自居</em></p> 
<p>P.S. 作者 Kieran Setiya 目前仍在 MIT 任教，官网是 <a href="http://www.ksetiya.net/">Kieran Setiya - Home</a>，推特 ID 是: <a href="https://twitter.com/KieranSetiya">@KieranSetiya<br /> </a></p> 
<h2>参考资料</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️(3/5)</li> 
 <li>标题: 重来也不会好过现在</li> 
 <li>副标题: 成年人的哲学指南</li> 
 <li>原作名: Midlife: A Philosophical Guide</li> 
 <li>作者: Kieran Setiya</li> 
 <li>出版社: 广西师范大学出版社</li> 
 <li>出版年: 2019年8月</li> 
 <li>ASIN: 9787559818980</li> 
 <li>版本: 纸质书</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="http://www.ksetiya.net/">Kieran Setiya - Home</a></li> 
 <li><a href="https://justinyan.me/post/2683">每周读书 #111 静静回响的一生——《斯通纳》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 28 &#x65E9;&#x5B89;&#xFF0C;&#x6253;&#x5DE5;&#x4EBA;&#xFF01;&#x7ED9;&#x81EA;&#x5DF1;&#x53EF;&#x63A7;&#x7684;&#x4EBA;&#x751F;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/D1490184-CC6F-4544-9CBB-C7472466B252/</link>
        <guid>https://justinyan.eth.limo/D1490184-CC6F-4544-9CBB-C7472466B252/</guid>
        <pubDate>Fri, 06 Nov 2020 10:01:13 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/11/podcast_028.jpg" alt="Vol. 28 早安，打工人！给自己可控的人生？" /></p> 
<p>上期节目结尾的时候我们提到一小段关于 <em>Atomic Habits</em> 和 <em>Minimalism</em> 的话题，这期我们结合最近火起来的“打工人”的梗一起聊一聊。</p> 
<p>不管上述两部作品还是近年流行的《断舍离》，曾经流行的《怦然心动的人生整理魔法》，其实都在以实践结合理论的方式给读者、观众们传达制作者行之有效的掌握人生的方法。毕竟两位主播作为打工人，平日的工作已经有太多身不由己，能掌握一些让生活变得可控的方法，就能少一些为了消解因此带来的焦虑而付出的时间和精力。</p> 
<ul> 
 <li>00:00 “打工人”梗的闲白 </li> 
 <li>04:00 阶层固化给“打工人”带来的失控感</li> 
 <li>07:49 从「极简主义」聊到消费主义陷阱</li> 
 <li>12:17 避免过度消费，断舍离</li> 
 <li>14:10 近藤麻理惠「怦然心动的整理魔法」</li> 
 <li>19:09 整理如何让生活变得更可控</li> 
 <li>31:07 「Atomic Habits」原子习惯由潜意识驱动</li> 
 <li>36:18 把潜意识里的东西意识化，让人生变得更可控</li> 
 <li>43:16 养成好习惯的实践：两分钟原则</li> 
 <li>54:32 子弹笔记术(Bullet Journal)</li> 
 <li>55:59 习惯循环(Habit Loop)：养成好习惯、戒掉坏习惯的方法</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li><a href="https://minimalismfilm.com/">Minimalism 纪录片</a></li> 
 <li><a href="https://justinyan.me/post/4208">Be a Tough Guy —— 枫言枫语播客 17 期 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/4241">聊聊《了不起的我》—— 枫言枫语播客 18 期 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/4352">枫影夜读 #5 - James Clear “Atomic Habits”</a></li> 
 <li><a href="https://justinyan.me/post/1786">[每周读书] 五十八 近藤麻理惠——《怦然心动的人生整理魔法》</a></li> 
 <li><a href="https://justinyan.me/post/1824">[每周读书] 六十三 凯利•麦格尼格尔《自控力》</a></li> 
 <li><a href="https://justinyan.me/post/3062">每周读书 #135 玩狼人杀的厉害人更容易说服别人？——《影响力》</a></li> 
 <li><a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/sC5im6vrKh8" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;盧廣仲 早安,晨之美MV 完整版</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #159 &#x89D2;&#x7530;&#x5149;&#x4EE3; - &#x300A;&#x5761;&#x9053;&#x4E0A;&#x7684;&#x5BB6;&#x300B;</title>
        <link>https://justinyan.eth.limo/F48D23FA-8204-41E2-ABEB-39FA28E5C11E/</link>
        <guid>https://justinyan.eth.limo/F48D23FA-8204-41E2-ABEB-39FA28E5C11E/</guid>
        <pubDate>Mon, 02 Nov 2020 08:00:04 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/11/fyyd_006.jpg" alt="枫影夜读 #6 - 角田光代《坡道上的家》" /></p> 
<p>从书名就可以看出来，这本书有着日本文化中典型的欲言又止，顾左右而言他的风格。《坡道上的家》讲述的是日本一位普通家庭主妇里沙子的故事，他们家住在东京一个小山坡上，与丈夫阳一郎育有一个两岁大的女儿文香。</p> 
<p>这个年纪的小孩正式号称“小恶魔”期的时候，虽然自己一个人带小孩很累，但日子过得还算平静。直到有一个，一封来自法院的信开启了本书的故事：里沙子被选中要去当候补陪审员了。而且很快她就要开始旁听第一个案子，这意味着在工作日她必须先把女儿送到住在浦和的婆婆家，然后再到法院参加庭审。（日本的铁路交通十分发达，即使住在东京涉谷，单程前往也只需一个小时）</p> 
<p>好巧不巧，这个案子是一起“虐婴致死案”：三十几岁的全职太太水穗，将八个月大的女儿扔进了放满水的浴缸里。本书采用双线叙事，审理案件的过程中通过被告人的供述道出水穗家庭的故事，同期参与陪审的里沙子则随着案情的展开，逐渐回忆起自己怀孕生子时的种种艰难，内心产生了极大的波澜。</p> 
<p>小说篇幅不算很长，26万字中包括了八天公审与一个周末。作者角田光代在表达人物心理细节上十分到位，手法多样，既有精准的独白，亦有文笔清雅的侧写。</p> 
<p>比如里沙子因陪审一事和丈夫的关系变得敏感时，作者安排了这样一幕：</p> 
<blockquote>
 <p> 里沙子心想公交车怎么还没来，一回头，发现阳一郎正站在早已变长的队伍中。她吓了一跳，心想他怎么这么早就回来了。莫非又怀疑我了吗？要是被他发现购物袋里有啤酒，又会被怎么数落呢？各种思绪一并涌入脑海，心跳也因此加速。这样真的很奇怪，看到老公会胆战心惊是不正常的——里沙子这么告诉自己，心跳却越来越快。 </p>
</blockquote> 
<p>虽为心理活动之直叙，却兼备起承转合，短短数句之间，完成从惊讶到担忧到自我安抚的转变。不过相较之下，本作直叙心意的部分还是少数，多数是人物动作与所处环境之侧写。</p> 
<p>比如在公审第三天，里沙子随着案件的展开慢慢觉察到自己遇到的问题时：</p> 
<blockquote>
 <p> 里沙子愣愣地眺望对面那扇灯光不断流逝的车窗。窗上映着自己疲惫的脸，映在窗上的脸缓缓变化着模样，一下子变成水穗，变成真琴，又变成在电车上看到的那些女性。 </p>
</blockquote> 
<p>从恍惚疲态到觉醒，再到自我意识的投射，这种不言自明的描写是我个人很喜欢的风格。日本文化中的欲言又止给日本文学带来很多这样的写法。无论是川端康成还是夏目漱石，或者更加极端隐晦的青山七惠，皆有这样的表达。随之而展开的情绪渲染饱满真实，沉浸其中十分迷人。</p> 
<p>全书通读下来，我以为这是作者写作手法上最为精妙之处，借由里沙子的内心转变，展示了一个普通日本主妇在日常生活中遇到的困难。这种个人内心所承受的巨大的压力，以及来自外界的看似轻描淡写的却令人挥之不去的不解，若非经由当事人的主观内心视角来剖析，恐怕会被当做“大惊小怪”而忽视掉吧。</p> 
<p>在小说中，里沙子在审理过程中与被告人将心比心，自己怀孕前后来自家庭保健员的关心到底是真诚还是监视？来自婆婆的建议和补品到底是关心还是指责？来自丈夫的不解和贬低是自己真的做得不好还是丈夫自己的不自信？文香对自己的无理取闹和对丈夫的百般顺从是自己没做好母亲的角色还是所有人都会遇到这样的问题？</p> 
<p>凡此种种，历历在目。看似琐碎的小事日渐累积，自己的自信如同被告的水穗一样，不知道被谁给夺走了。只是自己还算幸运，坚持了下来，可是水穗没有这样的机会，犯下了无可挽回的错误。但是，水穗在供词中说到当时发生的事情她已经完全不记得了，只知道被丈夫摇醒的时候孩子已经在水中死去。所以凶手真的是水穗吗？</p> 
<p>里沙子对水穗的分析就是对自己的分析，对水穗的审判就是对自己的审判。“家庭主妇”一职看似令人羡慕，实际一点也不轻松，作者借两位境遇不同的主妇引发了深刻的思考。这是本书的优点，同时也是本书的缺点：作者提出了问题，却没有给出解决方案。</p> 
<p>甚至连暗示也显得那么模糊，于是结局令人难受。说得好听叫“开放式结局”，说的不好听就是“虎头蛇尾”。庭审结束后，里沙子是选择勇敢地面对问题，尝试解决问题，还是回到原来的漩涡之中，继续消磨自己的自信呢？丈夫阳一郎用只有两人才听得懂的讽刺暗示自己做不来陪审员的工作时，是故意打压的冷暴力，还是因为阳一郎自己也很紧张呢？作者没有给出答案，最后一幕里沙子走向穿着白色衣服的女人时，那人应该是审判结束后走出法庭的水穗。</p> 
<p>我更愿意相信她的脚本是鼓起勇气后的坚定，走向水穗是对自己的觉醒，是去正面迎接自己的磨难。</p> 
<p><em>2020.10.31/于自居</em></p> 
<h2>参考资料</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 坡道上的家</li> 
 <li>原作名: 坂の途中の家</li> 
 <li>作者: 角田光代</li> 
 <li>出版社: 电子工业出版社</li> 
 <li>出版年: 2020年1月2日</li> 
 <li>ASIN: B0832HYGYP</li> 
 <li>版本: Kindle</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 27 &#x793E;&#x4EA4;&#x7F51;&#x7EDC;&#x7684;&#x53CD;&#x4E4C;&#x6258;&#x90A6;</title>
        <link>https://justinyan.eth.limo/778BA880-7345-4C59-84BE-704D09BDFD14/</link>
        <guid>https://justinyan.eth.limo/778BA880-7345-4C59-84BE-704D09BDFD14/</guid>
        <pubDate>Sun, 01 Nov 2020 23:03:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/10/podcast_027.jpg" alt="Vol. 27 社交网络的反乌托邦 " /></p> 
<p>前段时间 Netflix 发布了一部纪录片，叫 <em>The Social Delimma</em>，中文译为《监视资本主义》。</p> 
<p>虽然是新瓶装旧酒，讲的还是以前那一套大公司掌握了大数据和 AI 之后，通过无处不在的社交网络和推荐算法，深度影响用户甚至操控了用户的论调。但是纪录片拍得很不错，用非常形象生动的手法将晦涩高深的 AI 技术表达得浅显易懂。</p> 
<p>纪录片访谈了一些来自硅谷互联网公司的前高管或者资深员工，通过从业人员之口，讲述了社交网络发展至今遇到的不可预测的负面影响。</p> 
<p>两位主播都是互联网从业人员，看完本片颇有感触，于是我们就此展开了讨论。</p> 
<p><em>P.S. 因为我这次录音的时候用了个新的话筒结果翻车了，频频喷麦，后期制作时苦不堪言，已经尽力拯救。所以本期我的音频部分可能效果不佳，非常抱歉。</em><br /> <em>P.P.S. 节目中我口误把 OffScreen App 说成 OnScreen 😂，App Store 链接已贴在下方。</em></p> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li><a href="https://www.netflix.com/title/81254224">The Social Dilemma | Netflix Official Site</a></li> 
 <li><a href="https://www.bilibili.com/video/BV1D5411b7u5">【Netflix网飞中英文双语字幕超清1080P+画质收藏版】监视资本主义：智能陷阱/社交困境 The Social Dilemma_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili</a></li> 
 <li><a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/ETrtddhqcCI" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Apple Keynote Event 2020 Opening Song - "Good Day for Dreaming" by @Ruelle<br /> </a></li> 
 <li>节目中提到 <a href="https://twitter.com/liuyi0922">@61</a> 的自律番茄钟应用<a href="https://apps.apple.com/us/app/offscreen-less-screen-time/id1474340105"> OffScreen</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E86;&#x89E3; AES &#x52A0;&#x5BC6;&#x7B97;&#x6CD5;</title>
        <link>https://justinyan.eth.limo/F8D451D9-0C13-4591-A27D-0BD0E42C7322/</link>
        <guid>https://justinyan.eth.limo/F8D451D9-0C13-4591-A27D-0BD0E42C7322/</guid>
        <pubDate>Wed, 28 Oct 2020 21:59:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/10/blog-aes.jpg" alt="" /></p> 
<p>最近在开发一个简单接口的时候，因为敏感度不高所以前后台直接用对称加密解决。过程中遇到了点问题，让我想起几年前也遇到一样的问题，归根结底还是对 AES 的了解不多，所以学习了一下，其实在应用层面来说这个加密算法还是蛮简单的。</p> 
<p>首先 AES 是一种对称加密算法，加解密都用同一个 Key，简单理解为:</p> 
<pre><code>明文 + Key =&gt; 密文
密文 + Key =&gt; 明文
</code></pre> 
<p>不过实际使用中这个算法参数要更复杂些，通常会用到以下几个关键参数:</p> 
<ol> 
 <li>Key Length: 密钥长度</li> 
 <li>Key: 密钥本身</li> 
 <li>IV: 初始向量</li> 
 <li>Mode: 加密模式</li> 
 <li>Padding: 填充方式</li> 
</ol> 
<p>双方要对齐这五个参数才能完成加解密过程。我们用 node 来模拟后端加密:</p> 
<pre><code>const request = require('request');
const crypto = require("crypto");
<p>const key = "your-key"; // 256 bits for AES256<br /> const iv = "some-random-iv" // 128 bits for CBC mode</p>
</code><p><code>// 加密<br /> let data = "some-strings"<br /> cipher = crypto.createCipheriv('aes-256-cbc', key, iv);<br /> let encrypted = cipher.update(text, "utf8", "base64");<br /> encrypted += cipher.final("base64");<br /> console.log(encrypted)<br /> </code></p></pre>
<p></p> 
<p>关键代码是 <code>cipher = crypto.createCipher('aes-256-cbc', key);</code>，使用 256 位长度的加密 Key，CBC 模式，初始向量 IV 为 128 位随机字符串。</p> 
<p>AES 加密 Key 的长度一般是 128/192/256 位，唤作: AES128, AES192, AES256。这个好理解，那 iv 是用来做什么，为什么是 128 位呢？</p> 
<p>AES 是一种分组加密算法，由比利时密码学家 Joan Daemen 和 Vincent Rijmen 设计，唤作 Rijndael。AES 规定分块长度为固定的 16 bytes，把完整数据按 16 bytes 切分后，每块进行加密，最后再把所有加密后的块拼到一起。解密的时候也一样。</p> 
<p>如果原文本身不是 16 bytes 的整数倍时，就需要加上 Padding，而 AES 的 Padding 也有多种不同的方式。node 官方只提供了 <code>setAutoPadding()</code> 方法，使用 <a href="https://github.com/brix/crypto-js">CryptoJS</a> 则带有这些方法:</p> 
<ul> 
 <li>pad-pkcs7 </li> 
 <li>pad-ansix923</li> 
 <li>pad-iso10126</li> 
 <li>pad-iso97971</li> 
 <li>pad-zeropadding</li> 
 <li>pad-nopadding</li> 
</ul> 
<p>最后一个 <code>pad-nopadding</code> 自然是不填充，<code>pad-iso10126</code> 是当明文块少于 16 bytes 的时候，就在末尾补足，其中补足的字符里最后一个数字等于补全的字符数，剩下的就随机。</p> 
<p>比如: <code>[1, 2, 3, 4, 5, a, b, c, d, e]</code> 少了 6 bytes，那可能就补成:</p> 
<pre><code>[1, 2, 3, 4, 5, a, b, c, d, e, 5, c, 3, G, $, 6]
</code></pre> 
<p>其他的 padding 算法不再赘述。</p> 
<p>接下来我们看加密模式，AES 一共有五种加密模式:</p> 
<ul> 
 <li>ECB: 电码本模式（Electronic Codebook Book）</li> 
 <li>CBC: 密码分组链接模式（Cipher Block Chaining）</li> 
 <li>CTR: 计算器模式（Counter）</li> 
 <li>CFB: 密码反馈模式（Cipher FeedBack）</li> 
 <li>OFB: 输出反馈模式（Output FeedBack）</li> 
</ul> 
<p>其中 <code>ECB</code> 模式比较特别没有用到初始向量 IV，剩下的都比较相近。上面说 AES 是分组加密的，<code>ECB</code> 模式就是每一块独立加密，所以如果有两个块内容一样的话就会出现两个一样的密文。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/10/aes_Ecb_encryption-squashed.jpg" alt="" /></p> 
<p>而 <code>CBC</code> 则是前后两个分块链接的形式进行加密，后一个块跟前一个块加密后的密文进行异或运算，得到的结果再用密钥进行加密。类似于 MD5 加盐，前一块的密文就是后一块的“盐”。这样即使有两块一样的明文也会得到不一样的密文。而第一块所使用的“盐”就是 IV，初始向量(Initialization Vector)。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/10/aes_Cbc_encryption-squashed.jpg" alt="" /></p> 
<p>至此几个关键参数已介绍完毕，只要前后台把 Key, Key length, Mode, IV, Padding 对齐就好。我之前遇到的问题是这样的，node 端加密时用的是老接口:</p> 
<pre><code>cipher = crypto.createCipher('aes-256-cbc', key);
</code></pre> 
<p>这个接口从 node v10.0.0 开始就 deprecated 了，显然没带 IV，那这个 IV 从哪里来的呢？</p> 
<blockquote>
 <p> The password is used to derive the cipher key and initialization vector (IV). The value must be either a 'latin1' encoded string, a Buffer, a TypedArray, or a DataView.</p> 
 <p> The implementation of crypto.createCipher() derives keys using the OpenSSL function EVP_BytesToKey with the digest algorithm set to MD5, one iteration, and no salt. The lack of salt allows dictionary attacks as the same password always creates the same key. The low iteration count and non-cryptographically secure hash algorithm allow passwords to be tested very rapidly.</p> 
 <p> In line with OpenSSL's recommendation to use a more modern algorithm instead of EVP_BytesToKey it is recommended that developers derive a key and IV on their own using crypto.scrypt() and to use crypto.createCipheriv() to create the Cipher object. Users should not use ciphers with counter mode (e.g. CTR, GCM, or CCM) in crypto.createCipher(). A warning is emitted when they are used in order to avoid the risk of IV reuse that causes vulnerabilities. For the case when IV is reused in GCM, see Nonce-Disrespecting Adversaries for details. </p>
</blockquote> 
<p>根据 node 文档，其内部实现会拿 Key 过一遍 OpenSSL 的 <code>EVP_BytesToKey()</code> 然后做一次 MD5 获得 IV，理论上可以被暴力破解，所以 deprecated。(P.S. node 源码的实现是在有点绕，试图寻找 <code>createCipher()</code> 函数对 CBC 的实现而不得[捂脸])</p> 
<p>使用 node 原生的这个方法搭配 <code>crypto.createDecipher()</code> 可以解密得出原文，因为解密的 IV 同样可以通过 Key 计算得出。但是用 iOS CommonCrypto 的接口就尴尬了，少了好几个必要参数。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://www.cxyxiaowu.com/3239.html">什么是AES算法？（整合版）-五分钟学算法</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard">Advanced Encryption Standard - Wikipedia</a></li> 
 <li><a href="https://zh.wikipedia.org/wiki/%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86">高级加密标准 - 维基百科，自由的百科全书</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #158 James Clear - Atomic Habits</title>
        <link>https://justinyan.eth.limo/AEB85305-81C7-4F04-95DD-B6B4856F795D/</link>
        <guid>https://justinyan.eth.limo/AEB85305-81C7-4F04-95DD-B6B4856F795D/</guid>
        <pubDate>Wed, 28 Oct 2020 13:28:07 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/10/dushu004_atomic_habits_2.jpg" alt="Atomic Habits" /></p> 
<blockquote>
 <p> 不积跬步，无以至千里。<br /> 不积小流，无以成江海。<br /> 骐骥一跃，不能十步。<br /> 驽马十驾，功在不舍。<br /> 契而舍之，朽木不折。<br /> 锲而不舍，金石可镂。 </p>
</blockquote> 
<p>这段大家耳熟能详的古文节来自《荀子·劝学篇》，文意大抵是“水滴石穿”、“积少成多”之类。虽然不难理解，但是实践中我们常常陷入“道理我都懂”，“不过是些有道理的废话”之困境。</p> 
<p>今天我们要介绍的这本书，就是冲着如何让量变引起质变的实践方案而来。这本书是 James Clear 于 2018 年出版的《Atomic Habits》，并在 2020 年登上 New York Times Best Seller 榜首，所以最近在 YouTube 上可以看到很多 YouTubers 都在推荐本书。</p> 
<p>本书全名为 <em>Atomic Habits: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones</em>，简体译为《掌控习惯》，繁体译为《原子習慣》。我觉得还是繁体的直译比较好，简体只表达了“掌控”并不全面。本书的理论基础是累积不起眼的小习惯最终达成大成就，“掌控”习惯只是实操部分，前半部分的理论基础我反而觉得是更重要的。因为每个人都应该寻找适合自己的实践方法，千人千面，但理论基础不变。所以先掌握了理论基础，才可能探索出适合自己的实践。</p> 
<p>虽然本书在解释理论时有非常鸡汤的部分，比如说”1% BETTER EVERY DAY”理论：</p> 
<blockquote>
 <p> 1% worse every day for one year. 0.99^365=00.03<br /> 1% better every day for one year. 1.01^365=37.78 </p>
</blockquote> 
<p>读到这里的时候我不禁想起当年在学校操场上听到的高考动员：</p> 
<blockquote>
 <p> 每天一小步，天天都有新高度！ </p>
</blockquote> 
<p>因为感觉很好笑所以印象深刻。读这本书的时候也给我一样的感觉。但是我们不能因为一个过时的比喻就全盘否定这本书。</p> 
<p>首先 Atomic Habits 的语言通俗易懂，书中例子来自作者的亲身经历，或身边常见的习惯（如我们司空见惯的吸烟、饮酒行为），读者很容易感同身受。相比起学术派的严肃分析，这样的书读者基础会更广。</p> 
<p>再者本书开篇讲述 James 自己的经历时，有一句非常打动我，就是他在复健时期开始做一些看似对身体恢复没什么用的事情，形成一些小习惯。比如开始收拾自己的房间，保持一切干净整洁。这样做并不能让身体恢复得更快，但是在经历重伤后的日子里，不仅是身体在物理上需要复原，精神上也承受了不小的压力。而收拾房间这种小事情，”they gave me a sense of control over my life”。</p> 
<p>现代社会每个人都被各种各样的事情左右，无论你是在上学也好工作也罢，是一线员工也好公司高管也罢，我相信都受到相当程度的制约。我本人开始阅读本书正好处于工作繁忙的巅峰，所以”Feel More in Control of My Life”正中下怀。</p> 
<p>有些 YouTubers 介绍本书时会冠以“改变我人生的 N 本书”之类的标题，我觉得略显夸张。一般来说，并不是一本书、一部电影、一个人或者一件事情改变了你的人生，而是你的人生一直在往前跑，累积了很多的想法之后，正好遇上了这么一个东西，而这个东西或这件事情很可能本来就是你自己的选择。</p> 
<p>卡尔·荣格说：</p> 
<blockquote>
 <p> Util you make the unconscious conscious, it will direct your life and you will call it fate.<br /> 在你能把潜意识里的东西意识化之前，它会默默引导你的人生，而且你还会说这是命运使然。 </p>
</blockquote> 
<p>我们现代人类这副身体自几百万年前的旧石器时代以后，从基因层面上就没有明显的进化。那时的人类社会还处于采集狩猎时代，节能是我们身体的一大特点。而模式化则是我们大脑节能的重要手段之一。通过把一些常见事件的解决方案，以习惯的方式保存起来，下次遇到同样的事情则可以不假思索地作出反应，这样的反应甚至不需要意识参与，在潜意识层面就可以完成。（《自控力》、《影响力》均有提及。）</p> 
<p>比如说我们走进黑暗的房间时会找到开关开灯，比如说烟民在焦虑时会想到点燃一支烟。试想一下我们在日常生活中发生的大大小小的事情，有多少是由意识主动参与的，又有多少是由潜意识自动完成的。恐怕多数时候我们的行为和决策都不需要意识参与，而这些被称之为“习惯”的无意识的原子动作，很大程度上决定了我们的人生。</p> 
<p>所谓知己知彼，百战不殆。介绍完习惯的重要性之后，作者开始介绍他对习惯的理解。一个习惯的形成可以分为四个步骤，首尾相连，形成一个“习惯循环”（Habit Loop）。这四个步骤分别是：</p> 
<ol> 
 <li>线索（Cue）</li> 
 <li>渴望（Craving）</li> 
 <li>响应（Response）</li> 
 <li>奖励（Reward）</li> 
</ol> 
<p>Cue 可以是一个时间、地点，或一件事情，也可以是相互叠加的结果。比如一个烟民，在白天上班时间感到焦虑的时候会到办公室外的吸烟区吸烟。那么“感到焦虑”，或者看到“吸烟区”就构成了吸烟这个习惯的线索，当他被这些线索激发的时候，就会产生想要吸烟的欲望（Craving）。接下来他自然地选择走到吸烟区，点燃一支烟，这就是他对这个欲望的响应（Response）。而随着香烟被吸入肺里的还有刺激神经中枢的尼古丁，于是大脑会进入放松的状态。这种舒服的放松状态就是对这个动作的奖励（Reward）。</p> 
<p>人类的奖励机制通过多巴胺传递，越是强烈的奖励就越能促使人类重复进行这些行为。烟民的每一次吸烟都是在给这个习惯投票。要知道“你是一个什么样的人”并不由你的想法和口述的观点所决定，而是由你所做的每一件事情决定。</p> 
<p>James 在本书中针对习惯形成的四个阶段分别讲述了“培养习惯”和“戒除习惯”的两种方案，这也是本书的主体部分。</p> 
<p>养成好习惯：</p> 
<ol> 
 <li>让它变得显而易见：Make It Obvious (Cue)</li> 
 <li>让它变得充满吸引力：Make It Attractive (Craving)</li> 
 <li>让做这件事情变得简单：Make It Easy (Response)</li> 
 <li>让做这件事情令人满足：Make It Satisfying (Reward)</li> 
</ol> 
<p>戒除坏习惯:</p> 
<ol> 
 <li>让线索难以被发现：Make It Invisible (Cue)</li> 
 <li>让做这件事情不再吸引：Make It Unattractive (Craving)</li> 
 <li>提高做这件事情的门槛：Make It Difficult (Response)</li> 
 <li>让这件事情变得不让人满足：Make It Unsatisfying (Reward)</li> 
</ol> 
<p>作者也就此整理了一份 Atomic Habits Cheat Sheet，读者朋友们可自行 Google 下载。</p> 
<p>以前读自我成长类的书籍我会更在意作者有没有把具体可行的实践方法讲述出来，现在我更看重理论基础部分是否足够深刻。因为每个人在实践的层面各不相同，但是条条大路通罗马，只要理论基础是一致的，总能找到适合自己的办法。</p> 
<p>正如作者在分析一个行为的三层内在驱动时所分析的，最外层是结果导向（Outcomes），中间层是过程导向（Process），最底层是个人特征导向（Identity）。假如你跟别人聊天的时候有人过来递烟而此时你正在戒烟，你该如何回绝呢？</p> 
<p>回答说“不好意思，我正在戒烟”就是最外层的结果导向，而回答说“不好意思，我不抽烟（我不是个烟民）”则是最底层的个人特征导向。</p> 
<p>读完本书并不能让你轻易养成良好习惯同时戒除坏习惯，正如读完《自控力》你也不会变得更自控一样（《自控力》英文原名为 The Willpower Instinct，直译为“意志力本能”。）。但只要读书能发现一个新的视角，能收获一种新的思维，能拓展一点认知的边界，那就已经很有价值了。</p> 
<p><em>2020.10.27/于T.I.T创意园</em></p> 
<h2>参考资料</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: Atomic Habits</li> 
 <li>副标题: An Easy &amp; Proven Way to Build Good Habits &amp; Break Bad Ones</li> 
 <li>作者: James Clear</li> 
 <li>出版社: Avery Publishing</li> 
 <li>出版年: 2018年10月16日</li> 
 <li>ASIN: B07D23CFGR</li> 
 <li>版本: Kindle</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://jamesclear.com/">James Clear 官网</a></li> 
 <li><a href="https://s3.amazonaws.com/jamesclear/Atomic+Habits/Habits+Cheat+Sheet.pdf">Atomic Habits Cheat Sheet</a></li> 
 <li><a href="https://justinyan.me/post/1824">[每周读书] 六十三 凯利•麦格尼格尔《自控力》</a></li> 
 <li><a href="https://justinyan.me/post/3062">每周读书 #135 玩狼人杀的厉害人更容易说服别人？——《影响力》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 26 &#x54D4;&#x54E9;&#x54D4;&#x54E9;(&#x309C;-&#x309C;)&#x3064;&#x30ED;&#x5E72;&#x676F;~</title>
        <link>https://justinyan.eth.limo/5C20BAFC-153E-473A-B148-9FD4EE899B14/</link>
        <guid>https://justinyan.eth.limo/5C20BAFC-153E-473A-B148-9FD4EE899B14/</guid>
        <pubDate>Thu, 30 Jul 2020 01:51:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/07/podcast-026-bilibili-squashed.jpg" alt="Vol. 26 哔哩哔哩(゜-゜)つロ干杯~ " /><br /> <em>这是一期主观性很强的闲聊节目，如有谬误，还请诸君不吝雅正。</em><br /> <em>感谢热心听众指正，目前已经有部分Up主粉丝数超过千万了，比如老番茄。</em></p> 
<blockquote>
 <p> 正在准备播放…<br /> 插入栓 插入…<br /> 解放播放传导系统 准备接续…<br /> 探针插入完毕<br /> 神经同调装置在基准范围内<br /> 第一次接触…<br /> 插入栓注水…<br /> 主电源连接完毕…<br /> 开始进行第二次接触…<br /> 交互界面连接…<br /> 思考形态以中文作为基准，进行思维连接…连接没有异常<br /> 同步率为1000.0000%<br /> 第一锁定器解除…<br /> 第二锁定器解除…<br /> 移往播放口… </p>
</blockquote> 
<h2>P1</h2> 
<p>两位主播为何如此沉迷B站？<br /> 营收过亿的小破站为何仍在亏损？<br /> 百大UP主为何粉丝不多？</p> 
<p>敬请关注播客《枫言枫语》，让我们带你走进B站，唠一唠嗑。</p> 
<h2>P2</h2> 
<p><strong>自古P2无人看</strong></p> 
<p>在编辑文案的时候我发现B站早期加载视频时会有的EVA同步率文案不见了。以前视频404时会出现的机器人声“肥肠抱歉”也消失了。</p> 
<p>B站在很多方面已经不是当年纯宅向的小破站了。当年校内转人人的时候也是一样的道理：用户群在变化。但是可以看到，B站的转变是柔和而顺利的，希望B站以后越做越好。</p> 
<p><strong>各位听众姥爷们，这次一定哦！</strong></p> 
<h2>相关信息</h2> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li><a href="https://www.bilibili.com/read/cv4007592/">图解 B 站 2019 Q3 财报：小破站的商业化进展还不错哦 - 哔哩哔哩</a></li> 
 <li><a href="https://www.bilibili.com/read/cv293179/">极光大数据：B站月均DAU超2,000万，游戏代理和联运或成盈利关键 - 哔哩哔哩</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5173;&#x4E8E; Rosetta (Universal 2) &#x548C;&#x82F9;&#x679C;&#x7684; ARM &#x67B6;&#x6784;&#x8FC1;&#x79FB;</title>
        <link>https://justinyan.eth.limo/E63B4769-6D66-4B9B-8A1B-0FA1308CECF7/</link>
        <guid>https://justinyan.eth.limo/E63B4769-6D66-4B9B-8A1B-0FA1308CECF7/</guid>
        <pubDate>Mon, 29 Jun 2020 19:23:39 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/06/rosetta2.jpg" alt="关于 Rosetta (Universal 2) 和苹果的 ARM 架构迁移" /></p> 
<p>今年(2020年)的 WWDC 苹果宣布最快将于年底发布运行在自家设计的 CPU (Apple Silicon) 上的 Mac 硬件。在发布会上苹果也演示了搭载了 A12Z 芯片(iPad Pro 2020 同款芯片)的 MacBook Pro。</p> 
<p>在之前的播客节目里(<a href="https://justinyan.me/post/4321">枫言枫语 #24</a> 和 <a href="https://justinyan.me/post/4326">枫言枫语 #25</a>)我们也就这场 CPU 架构大迁移进行了讨论，感兴趣的朋友可以订阅"枫言枫语"播客收听。</p> 
<h2>CPU 迁移带来的影响</h2> 
<h3>硬件性能上的影响</h3> 
<p>老的 Mac 系列机器是基于 Intel 生产的 x86/x86_64 架构的芯片，所有的 App 也都是基于这个架构编译的。</p> 
<p>新的 ARM 架构实际上就是 iPhone/iPad 在用的同款 CPU。好处是 ARM 是为了低功耗场景设计的，未来 Mac 设备可以获得更好的续航，而苹果自己设计的 CPU 在经过 10 多年 iPhone/iPad 的迭代之后，性能也逐渐追上了英特尔。虽然有人拿 2019 年 iPad 的 A12X CPU 跟英特尔的 i7 对比跑了个分，但是 Mac 的实际性能表现还是需要拿到真机后才能见分晓，所以现在只能猜测 CPU 性能可能是差不多的。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/06/Catalina-squashed-2.png" alt="" /></p> 
<p>一台 Mac 的整体表现好不好还得看其他的关键组成部分，硬件上影响比较大的是显卡。但是 Mac 平台向来显卡的游戏性能就很差，可以看到我的 MacBook Pro (15-inch, 2017) 用的是一张 Intel HD Graphics 630 集显，游戏如 RimWorld/Factorio 这类型是没什么问题的，3A 大作就不必考虑了。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/06/BigSur.jpg" alt="" /></p> 
<p>上图是 WWDC 2020 上用了 A12Z 芯片的 MacBook 系统信息，可以看到不会再单独列出显卡一项了。理论上苹果自家芯片的性能在 iPad 上的表现还是很不错的，不过同样也是 3A 大作免谈。目前苹果是想直接搬运 iOS App Store 上的游戏大作来弥补。</p> 
<p>以往 Mac 上的重度游戏玩家可以通过 eGPU (External Graphics Processing Unit 外置显卡)获得不少性能的提升(得益于 Thunderbolt 的高速和大带宽)。不过目前 Apple 没有透露关于 ARM-based Mac 是否支持 eGPU 的消息。</p> 
<p>所以仅从硬件比较上来看，ARM-based 和 Intel-based 的 Mac 在 CPU/GPU 的差距上应该不会很大(毕竟老的 Mac 游戏性能已经很差了)。</p> 
<h3>软件上的影响</h3> 
<p>软件的影响是巨大且显而易见的：<strong>老的 Apps 可能无法在 ARM-based CPU 上直接运行</strong>。</p> 
<p>如我们在节目中所云，这并不是苹果第一次迁移 CPU 架构。历史上 Mac 平台曾经有过三次 CPU 架构迁移。</p> 
<p>第一次是 1994 年苹果的 Macintosh 从摩托罗拉的 68k 系列处理器迁移到苹果、摩托罗拉、IBM 三家联合设计的 PowerPC 处理器。这个处理器和 ARM 设计的一样，也是一颗 RISC (精简指令集处理器) CPU。</p> 
<p>第二次是 2005 年从 PowerPC 转到 Intel 处理器，这时候乔布斯已经回归苹果，并且成功了推出了 OS X 操作系统。</p> 
<p>第三次就是本届 WWDC 的 Intel 到 ARM 的迁移了。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/06/Universal2-Rosetta2-640x394-1.jpg" alt="Universal 2/Rosetta 2" /></p> 
<p>鉴于过往丰富的迁移经验，再加上制作 iPhone 时 Mac 与 iOS 共享 XNU 内核代码，此番过渡应该要比历史上的前两次简单一些。过渡时期苹果提供的解决方案有两个:</p> 
<ol> 
 <li>开发者要编译多一个 Universal (Fat) Binary，同时支持 Intel 和 ARM CPU 两种架构，曰: Universal 2。</li> 
 <li>提供 Rosetta 2 在 App 安装时自动转换代码</li> 
</ol> 
<p>第一种方案对于苹果第一方的 App 是完全可控的，在本届 WWDC 苹果也演示了自家的专业视频编辑软件 Final Cut Pro X (我个人比较怀疑 FCPX 可能还没完成全部代码的迁移，发布会上的演示版可能只是个初级 Demo 版) 跑在 ARM MBP 上的样子。第三方软件就需要开发者自行适配了。如果是简单软件，只依赖 AppKit 的，那应该只需要升级 Xcode，编译成带多一个 ARM 架构的 Universal Binary 就行了，应该也可以单独编译对应架构的 binary。</p> 
<p>第二种方案，Rosetta 2 对于开发者和用户都是无感知的。当你双击 App Icon 启动一个 Intel-based App 时，集成在系统中的 Rosetta 会对该 App 执行 JIT (Justin-in-Time)编译，将 x86 指令实时转成 ARM 指令并运行。Rosetta 2 还提供了安装时转译，这样只需一次安装以后就都不需要实时转译了。理想情况下这种转译就跟你跑 JS 代码一样，可以完美无痛过渡。</p> 
<p>05 年苹果推出的 Rosetta 是来自 Transitive 公司开发的 QuickTransit。那个年代 Windows/Linux/Mac 等多种桌面版操作系统同时存在，使用过桌面版 Linux 系统比如 Ubuntu 的朋友肯定都用过 Wine 这个软件，用于跨平台执行 Win32 应用，它可以把 Windows 调用转成 Mac 系统的调用。关于 QuickTransit/Rosetta 的技术细节文档很少，所以不太能确定它的内部实现。这家公司 2008 年被 IBM 收购了，所以今年苹果推出的 Rosseta 2 应该是自己研发的。Rosetta 2 的使用是有限制的，可以参考<a href="https://developer.apple.com/documentation/apple_silicon/about_the_rosetta_translation_environment">苹果这篇官方文档</a>:</p> 
<ul> 
 <li>不支持 Kernel extensions</li> 
 <li>不支持 <code>x86_64</code>平台的虚拟机</li> 
 <li>大部分 <code>x86_64</code> 指令都可以被转译，除了部分比较新的向量指令比如 AVX, AVX2 以及 AVX512。</li> 
</ul> 
<p>像 <code>AVX512</code> 这么高级的指令，iMac Pro 上的高级软件比如 Final Cut Pro X 应该用得到。但是就今年底会生产的第一台 ARM 设备来看，比较大可能是入门级设备，Rosetta 不支持很正常。另外苹果早就已经把 iMovie 之类的很多 Mac Apps 都搬到了 iOS 上，相信他们已经有丰富的 API 转换经验，所以这次过渡应该会比当年迁移到 Intel CPU 容易得多。</p> 
<p>另外使用 Rosetta 转译 Intel App 会产生额外的消耗，性能肯定没有原生编译的好，并且因为 Cache 了部分 JIT 代码，可能还会加大内存占用。所以原生 Mac 生态里寥寥无几的游戏在过渡初期就更少了，当然这点可以由 iOS 游戏的无缝过渡来弥补一部分。</p> 
<p><em>P.S. Mac 上的可执行文件是 Mach-O 格式，Mac-O 多年前就支持同时包含多种架构的代码。苹果从 iOS 9 开始就支持对在 App Store 分发的 App 进行 App Slicing。这样不同架构的 iPhone 只需下载对应的 Binary，可以减少下载时的文件体积。这套工作流已经非常成熟，如果使用 App Store 分发不会有什么问题，如果是自己签名分发的 Mac App，则可以选择编译成一个兼容两种架构的大文件，或者分开各自编译一个。</em></p> 
<p><em>P.P.S. Rosetta 这个名字来自于罗塞塔石碑(Rosetta Stone)，是一块来自公元前 196 年的刻有埃及象形文字的石碑，现收藏于大英博物馆。这里夹带下私货，没有看过<a href="https://justinyan.me/post/4311">枫影夜读 #4 ——《大英博物馆世界简史》</a>的朋友可以看一下，1822 年语言学家商博良正是通过对罗塞塔石碑的研究才破译了古埃及象形文字的。所以苹果才以此命名这个转译软件的吧。</em></p> 
<h3>ARM-based Mac 将不支持 Boot Camp</h3> 
<p>2005 年苹果宣布迁移到 Intel CPU 之后，第二年发布了 Boot Camp，用户可以在 Mac 机器上直接安装 Windows 操作系统。不过未来 ARM 架构的 Mac 将不支持 Boot Camp，并且目前也没有替代品。</p> 
<p>我自己在 Mac 上安装过 Boot Camp Windows 用来玩《欧洲卡车模拟》这个游戏，因为 Windows 对 G29 方向盘模拟器的支持比较好，Boot Camp 安装的系统效率也更高。但是这样安装的 Windows 蓝牙支持比较糟糕，所以未来的 Mac 支不支持倒是对我影响不大，需要的时候我可以选择 VMWare 或 Parallels 跑个虚拟机就行了。</p> 
<h2>其他影响</h2> 
<p>原先苹果开发新的 Mac 系列需要看 Intel 能否产出新技术，同时 Mac 系列也依赖 Intel 的产能。但是 Intel 近些年来作为牙膏厂，每一代新产品的性能提升非常有限。</p> 
<p>并且近几年关于苹果对英特尔的不满也时有报道，比如说 <a href="https://9to5mac.com/2019/05/15/apple-intel-divorce/">9to5Mac 报道的苹果的 5G modem 因为弃用英特尔改用高通的要等到 2025 年</a>，又比如<a href="https://venturebeat.com/2018/08/17/apple-reportedly-redesigned-basic-macbook-after-intel-chip-issues/">这篇报道称苹果因为英特尔的 10nm 工艺的 CPU 有问题改用旧的 14nm 工艺的 CPU 而不得不修改 MacBook 的设计</a>。</p> 
<p>商业上没有永远的敌人，也没有永远的伙伴。这位队友掉队了，苹果当然要有备选方案，他可以选隔壁的 AMD，或者自己来。目前看来苹果选择了后者。</p> 
<p>如此，苹果不仅对自家硬件生产的品控有了更好的掌握，而且未来 Mac 苹果的软硬件结合也会变得更好，就像 iPhone/iPad 一样。对于消费者来说，苹果自家硬件的成本降低了，也许可以带来产品价格的降低也不一定。</p> 
<h2>使用 Xcode Beta 迁移尝试</h2> 
<p>我尝试给 <a href="https://getjustfocus.com/">Just Focus</a> 编译一个 Universal 版本。因为 App 本身很简单，只是把编译架构变成 <code>arm64 arm64e i386 x86_64</code>，编译过程没有问题。但是引用的第三方库果然出了问题: <code>appcenter</code> 的 CocoaPods 版本因为用的是预编译的 binary，下载下来没有包含 <code>arm</code> 架构所以链接失败了。</p> 
<p>我尝试下载 <code>appcenter</code> 的源码自己编译。因为这个工程比较大，修复了几个简单的源码编译错误之后，还需要继续解决依赖问题。而 Beta 版的 Xcode 频频卡死，暂时没有耐心继续折腾下去。</p> 
<p>删除 <code>appcenter</code> 后可以编译成功，不过我手头没有 ARM 架构的设备没法真机调试。但是也印证了我之前的想法：<strong>简单 App 的迁移并不困难，麻烦的是引入的第三方库可能没那么快适配。</strong>这时候就看作者有没有动力去帮第三方库解决编译问题了。</p> 
<p><em>P.S. 截止本文发布日期 2020/06/29，已经有部分开发者收到了上周申请的 DTK，接下来可以看看有没有人发评测文章出来。</em></p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://en.wikipedia.org/wiki/Mac_transition_to_ARM">Mac transition to ARM - Wikipedia</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Apple_Silicon">Apple Silicon - Wikipedia</a></li> 
 <li><a href="https://opensource.apple.com/release/mac-os-x-1058.html">Mac OS X 10.5.8 - Source</a></li> 
 <li><a href="https://9to5mac.com/2019/05/15/apple-intel-divorce/">Report: Apple's custom 5G modems may not arrive until 2025 after 'long and painful divorce' with Intel - 9to5Mac</a></li> 
 <li><a href="https://venturebeat.com/2018/08/17/apple-reportedly-redesigned-basic-macbook-after-intel-chip-issues/">Apple reportedly redesigned basic MacBook after Intel chip issues | VentureBeat</a></li> 
 <li><a href="https://developer.apple.com/documentation/apple_silicon/about_the_rosetta_translation_environment">About the Rosetta Translation Environment | Apple Developer Documentation</a></li> 
 <li><a href="https://web.archive.org/web/20160303184122/https://www.apple.com/r/store/universal/">苹果 2006 年关于 Universal Apps 时的说明</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 25 WWDC 2020 &#x756A;&#x5916;&#x7BC7;</title>
        <link>https://justinyan.eth.limo/7BD8CA49-112D-4E43-95BF-C6614DAD952A/</link>
        <guid>https://justinyan.eth.limo/7BD8CA49-112D-4E43-95BF-C6614DAD952A/</guid>
        <pubDate>Fri, 26 Jun 2020 11:46:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/06/podcast-025.jpg" alt="Vol. 25 WWDC 2020 番外篇" /></p> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>录完<a href="https://justinyan.me/post/4321">上一期节目</a>之后，我(Justin)和自力意犹未尽，又瞎扯了一期番外。</p> 
<p>本着干啥啥不行，瞎扯第一名的原则，我们从 B 站/YouTube 到 WWDC 到曾经的苹果危机，和未来 ARM 架构与苹果游戏生态的畅想。希望听众朋友们喜欢我们本期的吹水。</p> 
<h2>时间线</h2> 
<ul> 
 <li>[00:40] 开场</li> 
 <li>[03:04] B 站和 YouTube</li> 
 <li>[07:21] WWDC 2020 发布的 ARM 架构的 CPU</li> 
 <li>[20:36] iOS App 跑在未来的 macOS 上</li> 
 <li>[34:00] 手游在 macOS 上的未来畅想</li> 
 <li>[38:43] 当年苹果的危机与今天的对比</li> 
 <li>[55:08] 谈谈下一次发布会期待什么</li> 
 <li>[01:00:23] 片尾曲</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>上期节目: <a href="https://justinyan.me/post/4321">对，我们又和开发者聊了聊今年的WWDC——枫言枫语播客 24 期(硅谷早知道 S4E26)</a></li> 
 <li>《硅谷早知道》播客节目链接：<a href="https://guiguzaozhidao.fireside.fm/wwdc">#26 对，我们又和开发者聊了聊今年的WWDC</a></li> 
 <li>反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 24 &#x5BF9;&#xFF0C;&#x6211;&#x4EEC;&#x53C8;&#x548C;&#x5F00;&#x53D1;&#x8005;&#x804A;&#x4E86;&#x804A;&#x4ECA;&#x5E74;&#x7684;WWDC (&#x7845;&#x8C37;&#x65E9;&#x77E5;&#x9053; S4E26)</title>
        <link>https://justinyan.eth.limo/5E5ADCAB-CBF7-4B90-B6FD-0138B247CE68/</link>
        <guid>https://justinyan.eth.limo/5E5ADCAB-CBF7-4B90-B6FD-0138B247CE68/</guid>
        <pubDate>Wed, 24 Jun 2020 18:09:54 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/06/podcast-024-cover.jpg" alt="Vol. 24 对，我们又和开发者聊了聊今年的WWDC (硅谷早知道 S4E26)" /></p> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>《硅谷早知道》主播: <a href="https://guiguzaozhidao.fireside.fm/hosts/diane">丁教</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>说好的 WWDC 2020 节目来啦！去年我(Justin)参加WWDC 2019 时<a href="https://justinyan.me/post/3686">做客《硅谷早知道》</a>，今年有幸再次合作，和自力、丁教一起录制了一期节目。《硅谷早知道》也是我常听的一档节目，有兴趣的朋友们可以到<a href="https://guiguzaozhidao.fireside.fm/">官网</a>订阅收听。</p> 
<p>录完这期节目之后我和自力意犹未尽，又瞎扯了一期番外，敬请期待下期节目发布。</p> 
<p>今年的苹果 WWDC 开发者大会于北京时间 6 月 23 日凌晨 1 点在 Apple Park 进行了全球线上直播。大会发布了 iOS、iPadOS、watchOS、tvOS 以及 macOS 五大系统的更新版本，以及 AirPods 支持的新功能等等。另外，苹果还正式宣布将推出搭载自研芯片的 Mac。</p> 
<h2>时间线</h2> 
<ul> 
 <li>[01:34] ARM 架构的芯片是今年最突出的内容</li> 
 <li>[02:31] 页面设计的变化</li> 
 <li>[05:31] 新的芯片对于开发者有什么变化</li> 
 <li>[10:10] 早期 iOS 和 iPad 使用自产芯片后转变过程是怎样的</li> 
 <li>[13:47] 发布会上的芯片性能演示能体现出什么</li> 
 <li>[15:11] Mac 软件如何调试才能适应新的芯片</li> 
 <li>[16:05] 对 Keynote 的创新程度打分</li> 
 <li>[18:37] 在 AirPods 上的软件更新</li> 
 <li>[20:05] iOS 允许修改默认邮箱</li> 
 <li>[20:55] 在 watchOS 上的软件更新</li> 
 <li>[21:40] 新的隐私条例</li> 
 <li>[22:36] NFC 功能的升级</li> 
 <li>[26:51] 在 tvOS 和 iPadOS 上的软件更新</li> 
 <li>[28:27] 期待但没有出现的内容</li> 
 <li>[30:05] 新系统的使用体验</li> 
 <li>[31:20] 开发者和苹果之间的分歧案例</li> 
 <li>[36:45] 这次更新对于未来改变的展望</li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>《硅谷早知道》播客节目链接：<a href="https://guiguzaozhidao.fireside.fm/wwdc">#26 对，我们又和开发者聊了聊今年的WWDC</a></li> 
 <li>反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li><a href="http://en.wikipedia.org/wiki/PowerPC">PowerPC</a>，（英语：Performance Optimization With Enhanced RISC – Performance Computing，有时简称PPC）是一种精简指令集（RISC）架构的中央处理器（CPU），其基本的设计源自IBM的POWER（Performance Optimized With Enhanced RISC）</li> 
 <li>Apple Clips: 一个 App Clip 是 App 中的一小部分，它易于发现并可在需要时快速启动，能让用户在短短几秒内针对该部分开始并完成一次体验。用户可以在不下载完整 app 的前提下，体验到 App 的核心功能。</li> 
 <li>NFC: Near Field Communication的缩写，中文含义是指“近距离无线通讯技术”，是飞利浦公司和索尼公司共同开发的一种非接触式识别和互联技术，可以在移动设备、消费类电子产品、PC 和智能控件工具间进行近距离无线通信。NFC 提供了一种简单、触控式的解决方案，可以让消费者简单直观地交换信息、访问内容与服务。</li> 
 <li>AirPods 空间音频: 空间音频又叫环绕音频，这项技术其实已经发展了多年，大到影剧院剧场，小到自家客厅，都有它的身影。但耳廓外的空间和耳廓内的空间是完全不一样的，很多用来解释家庭音响空间音效的技术，在 TWS 耳机上会以不同的逻辑实现。</li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>TypeScript + ExpressJS &#x5FEB;&#x901F;&#x642D;&#x5EFA;&#x5C0F;&#x5DE5;&#x5177;&#x670D;&#x52A1;</title>
        <link>https://justinyan.eth.limo/0889DE18-D773-44AE-805E-DB6C3D88D229/</link>
        <guid>https://justinyan.eth.limo/0889DE18-D773-44AE-805E-DB6C3D88D229/</guid>
        <pubDate>Sun, 21 Jun 2020 21:08:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/06/blog-ts-express.jpg" alt="TypeScript + ExpressJS 快速搭建小工具服务" /></p> 
<p>平时偶尔会需要用到一些小工具来替代重复的劳动，<code>Node.js</code> 一直是我的首选。虽然 Javascript 是一门神奇的语言，充满各种玄妙的“艺术机关”令新手迷失其间不知所措。而写小工具的初期因为代码量小，所以各种不规范和弱类型奇技淫巧一旦用上，将来项目大了就很可怕了，各种莫名其妙的 Crash 让你不知所措。</p> 
<p>还好大微软 2012 年推出了 TypeScript 语言，冲着原生 JS 的弱点，在保留弱类型语言优点的基础上，增加了强类型语言的特性。</p> 
<p>不过 <code>ts</code> 出来这么多年我都没怎么好好用过，作为一个业余前端开发，半年天翻地覆的技术更迭让我的印象还停留在早就过时的 <code>CoffeeScript</code> 以及新的 <code>ES6</code> 上。但是这两者都没有解决弱类型语言接口无法定义，类型检查代码极其冗长的问题。所以近来我投入了 <code>ts</code> 的怀抱，这里分享一下我平时如何用 <code>ts</code> + <code>express</code> 快速搭建小工具服务。</p> 
<h2>一、新建 Node 项目，配置 ts</h2> 
<pre><code class="javascript">mkdir new-project
cd new-project
npm init
</code></pre> 
<p>开发过 Node 项目的朋友都知道怎么用 <code>npm</code> 或 <code>yarn</code> 初始化项目，这里不再赘述，接下来简述下如何配置 <code>ts</code>。</p> 
<pre><code class="javascript"># 全局安装 typescript 用于编译
npm i -g typescript
<h1>创建 ts 配置文件</h1>
<p>touch tsconfig.json</p>
<h1>创建源文件目录与编译目录</h1>
</code><p><code class="javascript">mkdir src<br /> mkdir built<br /> </code></p></pre>
<p></p> 
<p>多数人应该都习惯用 <code>npm script</code> 跑项目命令，我比较习惯用 <code>make</code></p> 
<pre><code class="bash">touch Makefile
</code></pre> 
<p>把比较冗长的常用命令塞进去即可:</p> 
<pre><code class="bash">all:
    make build
build:
    tsc
watch:
    tsc -w src/**/*.ts src/*.ts --outDir built
</code></pre> 
<p>接下来是 <code>tsconfig.json</code> 的内容:</p> 
<pre><code class="json">{
    "compilerOptions": {
        "module": "commonjs",
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "sourceMap": true,
        "outDir": "built",
        "types": ["node"]
    },
    "include": [
        "src/**/*", "config.js"
    ]
}
</code></pre> 
<p>我常用的编辑器是 VS Code，可以在编辑器底下开两个 Console 窗口，一边开 <code>make watch</code>，保存即编译；一边用于调试。</p> 
<h2>二、搭配 Express 的项目结构</h2> 
<p>express, koa 和 hapi 我都试过，作为一个业余前端觉得，还是 express 更新多一点，插件生态更丰富一点，所以一直用 express 来做接入。</p> 
<p>一般我写的小工具要嘛是作为 API Server 吐 JSON 给客户端，要嘛是兼具前端展示部分，用 <code>pug</code> 做模板展示页面。两者大同小异，无非是客户端逻辑放在哪里而已。</p> 
<p>一般我把入口放在 <code>index.ts</code> 或者 <code>app.ts</code>。</p> 
<pre><code class="typescript">import express = require('express')
import bodyParser = require('body-parser')
import { log } from './Foundation/log'
import SendMessageHander from './RequestHandler/SendMessageHandler'
<p>const port = 3009<br /> const app = express()</p>
<p>// 配置 express 插件，这里用了 body-parser<br /> app.use(bodyParser.urlencoded({extended: false}))<br /> app.use(bodyParser.json())</p>
<p>// 配置路由，把请求转发到对应的 Handler 模块<br /> app.post('/sendMessage', new SendMessageHander().response)</p>
</code><p><code class="typescript">// Start<br /> app.listen(port, () =&gt; {<br /> log.info(<code>http://127.0.0.1:${port}</code>)<br /> log.info(<code>Running at port ${port}</code>)<br /> })<br /> </code></p></pre>
<p></p> 
<p>这样 <code>index.ts</code> 只需要定义好 <code>express</code> 的插件和 <code>GET</code>/<code>POST</code> 请求对应转发的 <code>handler</code> 即可。Server要新增插件或者接口就在这里定义。比如新增一个 <code>helmet</code></p> 
<pre><code class="typescript">//…
app.use(helmet())
//…
</code></pre> 
<p>一个简单项目的目录结构大致如下:</p> 
<pre><code class="bash">.
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
├── built
│   ├── Foundation
│   │   └──  log.js
│   ├── ReqeustHandler
│   │   ├── BaseHandler.js
│   │   └── SendMessageHandler.js
├── src #同 built 
├── tsconfig.json
└── yarn.lock
</code></pre> 
<h2>三、发挥类型检查优势</h2> 
<p>js 本身没有类型检查，如果参数传递过程中变量被修改或者内部类型检查不够全面就很容易崩。<code>ts</code> 利用和强类型语言一样的声明，允许编译器在编译时进行类型检查。比如下面这段代码:</p> 
<pre><code class="javascript">function greeter(person) {
    return "Hello, " + person;
}
</code><p><code class="javascript">let user = "Jane User";<br /> console.log(greeter(user));<br /> </code></p></pre>
<p></p> 
<p>js 对于 <code>person</code> 变量没有任何要求，传 <code>string</code>/<code>number</code>/<code>object</code> 都可以，但是在这个场景下，我们其实期望 <code>person</code> 是一个 <code>string</code>。所以常规 js 的写法需要判断一下参数类型</p> 
<pre><code class="javascript">if (typeof(person) == "string") {
    // blablabla
}
</code></pre> 
<p>使用 <code>ts</code> 我们可以在参数后面跟上参数类型声明:</p> 
<pre><code class="typescript">function greeter(person: string) {
    return "Hello, " + person;
}
<p>let user = "Jane User";<br /> console.log(greeter(user));</p>
</code><p><code class="typescript">console.log(greeter(1)); // Argument of type '1' is not assignable to parameter of type 'string'.<br /> </code></p></pre>
<p></p> 
<p>这样如果上层传入的参数不是就会获得编译错误。</p> 
<p>除了参数类型，还有变量类型声明，函数返回值声明，以及接口 <code>interface</code> 声明等静态语言才有的特性，是不是跟 <code>Swift</code> 有种相似之处？</p> 
<p>对于开发这种 API 式小工具的场景，一般我会写一个基类 <code>BaseHandler</code>，定义一个返回函数:</p> 
<pre><code class="typescript">export default class BaseHandler {
    response(req: express.Request, res: express.Response, next: express.NextFunction) {}
}
</code></pre> 
<p>然后每个 API 写一个子类，比如 <code>SendMessageHander</code>:</p> 
<pre><code class="typescript">export default class SendMessageHander extends BaseHandler {
    async response(req: express.Request, res: express.Response, next: express.NextFunction) {
        res.json(new BaseResponse(RetCode.success))
    }
}
</code></pre> 
<p>其中 <code>BaseReponse</code> 也是一个基类，里面的返回码 <code>RetCode</code> 则定义为一个 <code>enum</code>:</p> 
<pre><code class="typescript">export enum RetCode {
    success = 0,
    genericError = 1,
    invalidParameter = 2,
    serverInternalError = 3
}
</code></pre> 
<p>这样，一个小型 API 工具的框架就快速搭建好了，剩下的就是往里面增加 API，塞各种逻辑就行了。比如我做了个查询当前值班人员的小工具，配合 tg 机器人，你给机器人发 <code>duty</code> 命令，它就会把当前值班的人发回给你。虽然代码很简单，但是不如这个服务未来加上了更多功能，代码肯定会越来越复杂，所以早点用上合理的架构是给未来节省时间。</p> 
<h2>四、小问题</h2> 
<p><code>ts</code> 的编译器可以编成兼容各种环境的代码，节省了 Babel 的一步，结合 <code>async/await</code> 可以写出好看又安全的代码。但是毕竟 js 原生是不支持类型声明的，自己新写的代码还好都是可控的，但是第三方库就不一定了。有些库自带 <code>ts</code> 支持，但是比较少，大部分流行的库都可以通过 <code>npm i @types/express</code> 的方式装好声明，但依然有很多库不支持。</p> 
<p>这种情况下你只能是手动写 <code>.d.ts</code>，或者直接写类型为 <code>any</code>，其实就是一夜回到解放前了。</p> 
<p>另外涉及其他第三方 <code>Server</code> 端返回的 JSON API，如果有 Sample 我们可以放到 <code>https://app.quicktype.io/</code> 自动转换一下，但是通常官方 Sample 或者单次请求返回的 JSON 内容都不全，我们不得不补上一句 <code>key?: string | null</code>。如果是自家 Server 这些都好说，但是对方 Server 不可控，有时候反解类型会崩，只能自己手动解，比较麻烦。</p> 
<p>不过考虑到本文所述之场景只是“用 ts + espress 写写小工具”，那么这些缺点都还是可以接受的。如果项目大了有了性能和稳定性的要求的话那再说吧，毕竟大微软连 VS Code 这样的项目都能用 <code>ts</code> 解决了，已经证明了 <code>ts</code> 在大型项目的可用性。</p> 
<p>总之，把之前用 js 和 coffee 匆匆写出的小工具换成 <code>ts</code> 之后，作者不由得大呼：真香！</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #157 Neil MacGregor - &#x300A;&#x5927;&#x82F1;&#x535A;&#x7269;&#x9986;&#x4E16;&#x754C;&#x7B80;&#x53F2;&#x300B;(A History of the World in 100 Objects)</title>
        <link>https://justinyan.eth.limo/76E3C072-07E9-49F4-8104-7BF19760E6DF/</link>
        <guid>https://justinyan.eth.limo/76E3C072-07E9-49F4-8104-7BF19760E6DF/</guid>
        <pubDate>Fri, 05 Jun 2020 16:33:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/06/yedu-004.jpg" alt="大英博物馆世界简史" /></p> 
<p>在介绍<a href="https://justinyan.me/post/4290">《全球通史》</a>的一期我们提到作者以公元 1500 年为界，1500 年以后是地理大发现，全球走向统一的时期，其标志事件可以 1492 年哥伦布发现新大陆开始。那个年代之所以称为“地理大发现”，是因为此乃西方（或人类世界）第一次产生对全球的认知，西方从此不再认为“地中海”（Mediterranean Sea）是地球的中心，航海家们从世界各地发现千奇百怪的物种，带回大量的财富，也给当地文明带来毁灭性的灾难。这种全球地理大发现很大程度上归功于当时航海技术的飞速发展，以及欧洲政治上鼓励航海探险开辟新航线的政策。哥伦布在西班牙皇室的赞助下发现新大陆，达伽马在葡萄牙皇室的支持下绕过非洲开辟新航线。这些都对后来的经济全球化有极为深远的影响。</p> 
<p>1497 年达伽马的船队绕过好望角，抵达印度洋，随后在 1499 年返回里斯本。自此葡萄牙利用新航线优势开始在印度洋的扩张，征服者中就有赫赫有名的“东方凯撒”、“海上雄狮”、“葡萄牙战神”——阿方索·德·阿尔布克尔克（Afonso de Albuquerque）。1515 年，阿方索晚年时期曾派遣使者带着礼物去跟“Cambay”的统治者苏丹商讨在第乌(Diu)上兴建堡垒一事。虽然事情告吹但是苏丹回了许多礼物，其中就包括一只巨大的犀牛。</p> 
<p>阿方索也不知道该怎么处理这只大型动物，索性把它转赠给葡萄牙皇室。1515 年的欧洲，从来没有人见到过活的犀牛，另外要在海上运送一头将近一吨重的大型动物，在当时也是件极大的技术挑战。最终凭借葡萄牙先进的航海技术，这只犀牛漂洋过海，顺利运达里斯本，成为 1515 年欧洲一大新闻。当时有个叫 Valentim Fernandes 的印刷商在里斯本见到过这头犀牛，于是写了封信给德国纽伦堡的商会，描述了这头犀牛的外观。后来又有不知名的作者写了第二封信，附带一张犀牛的手绘草稿。当时我们知道 16 世纪的欧洲正处文艺复兴时期，当时身处纽伦堡的丢勒因为跟当地的印刷商颇有来往，所以他看到了这两封信。随后丢勒就创作了流芳百世的《丢勒的犀牛》木版画。他虽然没有亲眼见过犀牛，但仍凭文字描述和草稿画出了这幅极具表现力的作品。尽管有些细节并不符合现实，比如丢勒画的犀牛头顶有一个小角，腿上也覆盖了许多鳞片，但这并不妨碍丢勒的犀牛成为当时最流行的木版画。</p> 
<p><a href="https://www.britishmuseum.org/collection/object/P_1895-0122-714">如今英国伦敦的大英博物馆就收藏了几张丢勒的木版画</a>。所以今天我们要介绍的这本书正是来自大英博物馆和 BBC 广播四台（Radio 4）联合制作的《大英博物馆世界简史》，英文原名为 <em>A History of the World in 100 Objects</em>。英文书名非常简单直白，就是由大英博物馆选取 100 件具有代表性的藏品，时间跨度从 200 万年前人类起源到今天。简体的译名只取了前半部分，我觉得不太好，因为我个人被这本书吸引的点其实是后半部分：精选 100 件馆藏。不过繁体的译名就更跳跃了——《看得到的世界史： 99樣物品的故事 你對未來會有1個答案》，连 100 这个数字都被拆成了两半。如果说简体译名是信息缺失，繁体译名就是整个搞错了。因为这本书其实是 BBC Radio 4 跟大英博物馆合作项目的产物，据称筹备了 4 年之久，首播是在 2010 年 1 月 18 日，每周播出 5 期。所以本书的大部分文稿实际上是为了广播节目而写的，目的是让听众可以在“看不见文物”的情况下也能听到有趣的历史，而不是“看得到的世界史”。</p> 
<p>以文物的视角串联世界史是一件很特别的事情，大英博物馆始于 1753 年，距今 200 多年历史，馆藏十分丰富，像是来自帕台农神庙的浮雕，来自埃及的木乃伊，法老拉美西斯二世头像，以及来自复活节岛的摩埃石像等等。这世界上能够有底气拿出 100 件横贯人类史文物的博物馆没有几个，能把这件事情讲述得生动有趣，平易近人，则更是难得。</p> 
<p>鉴于该项目本是为了广播节目而制作，文稿纂写自然要用平实易懂的语言。当时的馆长 Neil MacGregor——本书的主要作者——在制作这档节目时还担心民众能否仅通过聆听就能理解历史，结果节目刚一播出就大受好评。<a href="https://www.bbc.co.uk/programmes/b00nrtd2/episodes/downloads">现在读者朋友们还可以在 BBC 的官网上下载该节目收听</a>。</p> 
<p>因为每周播出 5 集，所以 100 件文物被分为 20 个单元，每个单元 5 件。本书按照时间线来组织，除了第一节，馆长私心选择了“木乃伊”作为第一件藏品来讲述之外，其他的单元均按时间线排列。但是与此前介绍的《世界简史》不同，本书并没有把大家所熟知的（也许是西方所熟知的）历史大事件拿出来讲，比如像是原子弹爆炸，像是哥伦布发现新大陆之类的事件，本书并未细讲。相反，作者挑选了一些相对而言比较冷门的藏品，比如文首介绍的《丢勒的犀牛》。1515 年在世界史上可能并不算一个重大的转折点，但是促成丢勒画出犀牛木版画的前提条件却正好是世界史的转折期：地理大发现时期。如前文所述，如果不是奥斯曼土耳其帝国阻断了东西方贸易航线，那么就不会有那么多人去寻找新航线。如果不是达伽马在皇室的赞助下发现了绕过非洲好望角的新航线，就不会有后来的阿方索在印度洋的征服。如果不是西方航海技术的发展，这一切都不会发生，将近一吨的犀牛也不可能漂洋过海来到里斯本，丢勒也就不会画下这头想象中的犀牛。</p> 
<p>所以文物本身可能只是个静态的物件，但它却能给后人讲述很多动人的故事，甚至当时制作它的人也无法预知它将在后世成为历史的见证。对于没有文字且已经消失在历史上的文明，这点显得极为重要。</p> 
<p>在有文字的文明里，我们还可以通过文字资料来解读历史，但是像南美洲大陆很多文明尚未发展出文字就已经因为各种各样的原因消失了。比如阿兹克特帝国因为西班牙入侵者而毁灭，有自身分裂的原因，也有入侵者带来的枪炮与病菌。本书选择的《泰诺仪式用椅》就讲述了一个已经消失的美洲文明的故事。这个世界上没有留下文字就消失的文明还有很多，像古埃及文明的象形文字、美索不达米亚的楔形文字这些后人还可以通过新出土的文物来试图破解，但是想了解没有文字的文明就要困难得多。这种时候学者们“往往需要通过想象，穿过后世的重重解读去寻找真相，而这些做出解读的人常有着与失落族群不同的思维方式，本组语言中也没有能表达他们思想的现成词汇。”如果连学者都难以通过文物破解古代文明的谜题，作为外行的普通参观者就更难解其中奥妙了。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/06/Pectoral.jpg" alt="Pectoral" /></p> 
<p>面对由绿松石拼接成的阿兹特克文物“双头蛇”，外行人可能只会说“好看”二字。而了解阿兹特克的专家就知道，蛇在他们的文化中是重生和复活的象征。阿兹特克有个叫做奎兹特克的羽蛇神，这件双头蛇文物很可能就是神的象征。</p> 
<p>博物馆的展览有一个重要作用是教育民众，但是仅仅通过展品和旁边（可能）附带的简述其实是远远不够的。能够通过广播节目或书籍了解文物背后的故事是一件很棒的事情。不过因为本书的选品稍微有点另辟蹊径，所以可能在很大程度上绕过了读者朋友们的历史常识，虽然这并不影响我们阅读本作，但是如果能先了解“主流”世界史大事件，再读一次本作，则风味更佳。</p> 
<p>近来俗事缠身，工作繁忙不分昼夜，本书每篇一件文物的结构很适合时间不充裕的我在碎片时间阅读，当然也每每在临睡前沉迷其中不愿放下。读罢本作，我想再看看那条陈放在黑色背景展箱里熠熠生辉的双头蛇。</p> 
<p>2020.06.03/下午<br /> 于 T.i.T 创意园</p> 
<h2>参考资料</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 大英博物馆世界简史</li> 
 <li>英文标题: A History of the World in 100 Objects</li> 
 <li>作者: 尼尔·麦格雷戈 (Neil MacGregor)</li> 
 <li>出版社: 新星出版社</li> 
 <li>出版年: 2017年11月19日</li> 
 <li>ASIN: B07797VYK2</li> 
 <li>版本: Kindle</li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://en.m.wikipedia.org/wiki/A_History_of_the_World_in_100_Objects">A History of the World in 100 Objects</a></li> 
 <li><a href="https://en.m.wikipedia.org/wiki/Dürer%27s_Rhinoceros">Dürer's Rhinoceros</a></li> 
 <li><a href="https://www.britishmuseum.org/collection/object/P_1895-0122-714">大英博物馆 - 丢勒的犀牛</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 23 &#x662F;&#x65B0;&#x95FB;&#x9009;&#x62E9;&#x4E86;&#x4F60;&#xFF0C;&#x8FD8;&#x662F;&#x4F60;&#x9009;&#x62E9;&#x4E86;&#x65B0;&#x95FB;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/A9C19623-9A9D-4FA2-B6BC-5439A8E391F0/</link>
        <guid>https://justinyan.eth.limo/A9C19623-9A9D-4FA2-B6BC-5439A8E391F0/</guid>
        <pubDate>Sat, 30 May 2020 21:08:38 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/05/podcast-023-2.jpg" alt="Vol. 23 是新闻选择了你，还是你选择了新闻？ " /></p> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>新闻的获取渠道与接收方式多种多样，既可以主动订阅和筛选，也可以被动接收推送或训练推荐算法。</p> 
<p>本期节目我们分享了各自获取新闻资讯的渠道和方法，也讨论了不同方式的特点和各自的看法，其中不乏一些好的方法供大家参考，也欢迎大家一起交流获取新闻资讯的经验和心得。</p> 
<p>节目中我们提到的渠道和方式都会列在 Show Notes “相关信息”一栏中，如果在某些平台看不到 Show Notes 的朋友可移步我们官网阅读。</p> 
<h2>相关信息</h2> 
<ul> 
 <li>ED: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/tRgazhHCjqs" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Astronomia (Coffin Dance) | Piano Cover by Riyandi Kusuma</a></li> 
 <li>反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li>封面: <a href="https://unsplash.com/@romankraft">unsplash.com @romankraft</a></li> 
 <li>IT新闻广播： 
  <ul> 
   <li>微信小程序：极客早知道</li> 
   <li>微信小程序：36氪随身听</li> 
  </ul> </li> 
 <li>News Letters 
  <ul> 
   <li><a href="https://iosdevweekly.com/">iOS Dev Weekly</a></li> 
   <li>增长官会员每周通讯</li> 
   <li>轻芒通讯</li> 
  </ul> </li> 
 <li>产品发布相关 
  <ul> 
   <li><a href="https://www.producthunt.com/">ProductHunt</a></li> 
   <li><a href="https://v2ex.com/?tab=creative">V2EX 创意节点</a></li> 
  </ul> </li> 
 <li>提到的播客 
  <ul> 
   <li><a href="https://crazy.capital/">疯投圈</a></li> 
   <li><a href="https://steveshuo.com/">Steve说</a></li> 
   <li><a href="https://podcasts.apple.com/cn/podcast/blow-your-mind/id731738426">Blow Your Mind</a></li> 
   <li><a href="https://podbay.fm/podcast/1488080680">谐星聊天会</a></li> 
  </ul> </li> 
 <li>节目中提到的 <a href="https://feedburner.google.com/">FeedBurner</a> 的替代品是 FeedSky</li> 
 <li>RSS Reader App: <a href="https://reederapp.com/">Reeder</a>，服务提供 <a href="https://feedly.com/">Feedly</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x7531;&#x4E00;&#x4E2A;&#x975E; Unix Timestamp &#x60F3;&#x5230;&#x7684;</title>
        <link>https://justinyan.eth.limo/C92307C6-B748-4EC5-9F06-D908280A1577/</link>
        <guid>https://justinyan.eth.limo/C92307C6-B748-4EC5-9F06-D908280A1577/</guid>
        <pubDate>Wed, 27 May 2020 17:22:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/05/blog-non-unix-timestamp.jpg" alt="由一个非 Unix Timestamp 想到的" /></p> 
<p>今天同事提交了一个 Bug Fix，把基于 <code>CFAbsoluteTimeGetCurrent()</code> 计算的 Time Stamp 改成了基于 <code>[[NSDate date] timeIntervalSince1970]</code> 计算，原因是 <code>CFAbsoluteTimeGetCurrent()</code> 是从 2001 年 1 月 1 日 0 点开始计算的。</p> 
<pre><code>/* absolute time is the time interval since the reference date */
/* the reference date (epoch) is 00:00:00 1 January 2001. */
CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
</code></pre> 
<p>那么问题来了，为什么 CF 的时间戳不是从大家熟悉的 <code>1970-01-01 00:00:00-00</code> 开始，而是从 2001 开始呢？一开始我想，是不是很早以前那个 epoch 32 位 Int 用完的问题，但是那个是 2038 年问题，跟 2001 年接近的是 Y2K 问题，也跟这个无关。</p> 
<p>所以我们直接看 <a href="https://opensource.apple.com/source/CF/">CF 的源码</a>看看有没有线索。</p> 
<pre><code>CFAbsoluteTime CFAbsoluteTimeGetCurrent(void) {
    CFAbsoluteTime ret;
    struct timeval tv;
    gettimeofday(&amp;tv, NULL);
    ret = (CFTimeInterval)tv.tv_sec - kCFAbsoluteTimeIntervalSince1970;
    ret += (1.0E-6 * (CFTimeInterval)tv.tv_usec);
    return ret;
}
</code></pre> 
<p>很简单就是走内核接口取了下时间，然后 <code>- kCFAbsoluteTimeIntervalSince1970</code>，这个数字就是 1970 和 2001 的差距，以秒为单位。</p> 
<pre><code>const CFTimeInterval kCFAbsoluteTimeIntervalSince1970 = 978307200.0L;
</code></pre> 
<p>所以这个函数的实现就是简单地减去了这么多秒，也没有留下注释。</p> 
<p>最后在 Stack Overflow 的这个问题 <a href="https://stackoverflow.com/questions/2533563/why-are-dates-calculated-from-january-1st-1970"> Why are dates calculated from January 1st, 1970?</a> 发现原来历史上有一直存在多种不同的 Epochs。只是因为 1970 是 Unix 用的，也是 POSIX 标准所以比较多人知道而已。</p> 
<p>维基百科的 <a href="https://en.wikipedia.org/wiki/Epoch_(computing)">Epoch 词条</a>里列举了 15 种 Epochs:</p> 
<table> 
 <thead> 
  <tr> 
   <th>Epoch date</th> 
   <th>Notable uses</th> 
   <th>Rationale for selection</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>0 January 1 BC</td> 
   <td>MATLAB</td> 
   <td></td> 
  </tr> 
  <tr> 
   <td>1 January AD 1</td> 
   <td>Microsoft .NET, Go, REXX, Rata Die</td> 
   <td>Common Era, ISO 2014, RFC 3339</td> 
  </tr> 
  <tr> 
   <td>14 October 1582</td> 
   <td>SPSS</td> 
   <td></td> 
  </tr> 
  <tr> 
   <td>15 October 1582</td> 
   <td>UUID version 1</td> 
   <td>The date of the Gregorian reform to the Christian calendar.</td> 
  </tr> 
  <tr> 
   <td>1 January 1601</td> 
   <td>NTFS, COBOL, Win32/Win64 (NT time epoch)</td> 
   <td>1601 was the first year of the 400-year Gregorian calendar cycle at the time Windows NT was made.</td> 
  </tr> 
  <tr> 
   <td>31 December 1840</td> 
   <td>MUMPS programming language</td> 
   <td>1841 was a non-leap year several years before the birth year of the oldest living US citizen when the language was designed.</td> 
  </tr> 
  <tr> 
   <td>17 November 1858</td> 
   <td>VMS, United States Naval Observatory, DVB SI 16-bit day stamps, other astronomy-related computations</td> 
   <td>17 November 1858, 00:00:00 UT is the zero of the Modified Julian Day (MJD) equivalent to Julian day 2400000.5</td> 
  </tr> 
  <tr> 
   <td>30 December 1899</td> 
   <td>Microsoft COM DATE, Object Pascal, LibreOffice Calc, Google Sheets</td> 
   <td>Technical internal value used by Microsoft Excel; for compatibility with Lotus 1-2-3.</td> 
  </tr> 
  <tr> 
   <td>31 December 1899</td> 
   <td>Dyalog APL, Microsoft C/C++ 7.0</td> 
   <td>Chosen so that (date mod 7) would produce 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, and 6=Saturday. Microsoft’s last version of non-Visual C/C++ used this, but was subsequently reverted.</td> 
  </tr> 
  <tr> 
   <td>0 January 1900</td> 
   <td>Microsoft Excel,Lotus 1-2-3</td> 
   <td>While logically 0 January 1900 is equivalent to 31 December 1899, these systems do not allow users to specify the latter date. Since 1900 is incorrectly treated as a leap year in these systems, 0 January 1900 actually corresponds to the historical date of 30 December 1899.</td> 
  </tr> 
  <tr> 
   <td>1 January 1900</td> 
   <td>Network Time Protocol, IBM CICS, Mathematica, RISC OS, VME, Common Lisp, Michigan Terminal System</td> 
   <td></td> 
  </tr> 
  <tr> 
   <td>1 January 1904</td> 
   <td>LabVIEW, Apple Inc.'s classic Mac OS, JMP Scripting Language, Palm OS, MP4, Microsoft Excel (optionally), IGOR Pro</td> 
   <td>1904 is the first leap year of the 20th century.</td> 
  </tr> 
  <tr> 
   <td>1 January 1960</td> 
   <td>SAS System</td> 
   <td></td> 
  </tr> 
  <tr> 
   <td>31 December 1967</td> 
   <td>Pick OS and variants (jBASE, Universe, Unidata, Revelation, Reality)</td> 
   <td>Chosen so that (date mod 7) would produce 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, and 6=Saturday.</td> 
  </tr> 
  <tr> 
   <td>1 January 1970</td> 
   <td>Unix Epoch aka POSIX time, used by Unix and Unix-like systems (Linux, macOS), and programming languages: most C/C++ implementations, Java, JavaScript, Perl, PHP, Python, Ruby, Tcl, ActionScript. Also used by Precision Time Protocol.</td> 
   <td></td> 
  </tr> 
  <tr> 
   <td>1 January 1978</td> 
   <td>AmigaOS. The Commodore Amiga hardware systems were introduced between 1985 and 1994. Latest OS version 4.1 (December 2016). AROS, MorphOS.</td> 
   <td></td> 
  </tr> 
  <tr> 
   <td>1 January 1980</td> 
   <td>IBM BIOS INT 1Ah, DOS, OS/2, FAT12, FAT16, FAT32, exFAT filesystems</td> 
   <td>The IBM PC with its BIOS as well as 86-DOS, MS-DOS and PC DOS with their FAT12 file system were developed and introduced between 1980 and 1981.</td> 
  </tr> 
  <tr> 
   <td>6 January 1980</td> 
   <td>Qualcomm BREW, GPS, ATSC 32-bit time stamps</td> 
   <td>GPS counts weeks (a week is defined to start on Sunday) and 6 January is the first Sunday of 1980.</td> 
  </tr> 
  <tr> 
   <td>1 January 2000</td> 
   <td>AppleSingle, AppleDouble, PostgreSQL, ZigBee UTCTime</td> 
   <td></td> 
  </tr> 
  <tr> 
   <td>1 January 2001</td> 
   <td>Apple's Cocoa framework</td> 
   <td>2001 is the year of the release of Mac OS X 10.0 (but NSDate for Apple's EOF 1.0 was developed in 1994).</td> 
  </tr> 
 </tbody> 
</table> 
<p>最接近现在的时间是苹果的 <code>1 January 2001</code>。因为乔帮主回归苹果后发布的 OS X 就是在 2001 年(有点像纪念 iPhone 发布时间，<a href="https://www.engadget.com/2014-04-14-why-9-41-am-is-the-always-the-time-displayed-on-iphones-and-ipad.html">所有官方宣发的 iPhone 锁屏界面都停留在 9:41</a>)。</p> 
<p>所以 <code>CF</code> 接口的时间戳都从 2001 年开始，CoreData 也是。从上表可以看到，主流的编程语言如 C/C++, Java, JavaScript, Perl, PHP, Python, Ruby, Tcl, ActionScript 都是用的 1970 的 Unix Epoch，也许是因为这个所以给大家一种全世界都用 1970 的错觉。</p> 
<p>这种“约定但不俗成”的时间潜规则让我想起几年前为了给 Finder 下载中文件加一个下载中的进度条，用了 Progress API。但是怎么设置都不生效，后来在 StackOverflow 的帮助下发现需要把正在下载的文件加一个特殊日期时间戳(NSFileCreationDate): <code>1984-01-24 08:00:00 +0000</code> 才能生效。</p> 
<p>这个时间，就是<a href="https://www.wired.com/2008/01/dayintech-0124/">第一台 Macintosh 发布的时间</a>。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://stackoverflow.com/questions/15018052/how-to-show-a-progress-bar-on-files-icon">macos - how to show a progress bar on file's icon - Stack Overflow</a></li> 
 <li><a href="https://www.wired.com/2008/01/dayintech-0124/">Jan. 24, 1984: Birth of the Cool (Computer, That Is) | WIRED</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Epoch_(computing)">Epoch (computing) - Wikipedia</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E00;&#x4E2A; fork &#x7684;&#x9762;&#x8BD5;&#x9898;&#x5F15;&#x53D1;&#x7684;&#x601D;&#x8003;</title>
        <link>https://justinyan.eth.limo/824DEF26-F7C6-4347-B6EE-E84FA42A7B35/</link>
        <guid>https://justinyan.eth.limo/824DEF26-F7C6-4347-B6EE-E84FA42A7B35/</guid>
        <pubDate>Fri, 01 May 2020 19:43:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/05/fork.jpg" alt="一个 fork 的面试题引发的思考" /></p> 
<p>酷壳有个经典文章: <a href="https://coolshell.cn/articles/7965.html">一个fork的面试题</a> 挺有趣的，不仅涉及 <code>fork()</code> 函数，还有一个缓冲区继承的技术点。</p> 
<pre><code>#include &lt;stdio.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;unistd.h&gt;
<p>int main(void)<br /> {<br /> int i;<br /> for(i=0; i&lt;2; i++){<br /> fork();<br /> printf("-");<br /> }<br /> sleep(1);<br /> sleep(1);</p>
<pre><code>return 0;
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>简单解释一下，上述代码只考虑 <code>fork()</code> 的话应该输出 6 个 "-"。因为有两层循环，<code>i = 0</code> 和 <code>i = 1</code>。</p> 
<p><code>i = 0</code> 时 <code>fork()</code> 出一个子进程，此时有两个进程，<code>print</code> 两次。<code>i = 1</code> 时这两个进程又各自 <code>fork()</code> 出两个进程，一共四个，<code>print</code>四次，所以一共六次。</p> 
<p>但是这里还涉及 <code>printf()</code> 的缓冲设计，因为子进程在被 <code>fork()</code> 时会继承父进程的所有信息，包括缓冲区，所以有两个子进程在被 <code>fork()</code> 那一刻，拿到了父进程缓冲的 <code>"-"</code> 字符，加上自己的 <code>print</code>，总共会多出来两个 <code>"-"</code>。</p> 
<p>此前在<a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a>有介绍到被 <code>fork()</code> 的子进程会拿到所有的 <code>vmap</code> 之类的指针，所以理论上父进程所持有的内存就会自动被子进程继承，所以父进程<code>buffered</code> 数据子进程就可以接着往下走。</p> 
<p>原文也提到我们可以加上换行符 <code>"\n"</code> 或调用 <code>fflush()</code> 来强行清空缓冲区。</p> 
<p>我好奇的问题在于，这个 <code>printf()</code> 的缓冲是怎么设计的？他的源码是怎么写的？</p> 
<h2><code>stdout</code> 的缓冲设计</h2> 
<p>我们 <code>printf()</code> 实际上是往 <code>stdout</code> 标准输出写入数据。原文解释缓冲设计时还提到另外一个例子:</p> 
<pre><code>#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
int main()  
{
<pre><code>while(1)
{
    fprintf(stdout,"hello-std-out");
    fprintf(stderr,"hello-std-err");
    sleep(1);
}
return 0;
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>上述代码在 macOS 上不会输出 <code>stdout</code> 只会输出 <code>stderr</code>(未触及 buffer size limit 的前提下)。</p> 
<p>如果你把 "hello-std-out" 末尾加上 "\n" 他就能正常输出了。</p> 
<p><code>printf()</code> 的源码实现在 <code>Libc</code>, macOS 使用的版本可以在<a href="https://opensource.apple.com/tarballs/Libc/">这里下载</a>。</p> 
<pre><code>int
printf(char const * __restrict fmt, ...)
</code></pre> 
<p>顶层实现比较简单，封装了几层加锁，优化之类的内部实现，我们直接看最底层 <code>__sfvwrite</code>。</p> 
<pre><code>/*
 * Write some memory regions.  Return zero on success, EOF on error.
 *
 * This routine is large and unsightly, but most of the ugliness due
 * to the three different kinds of output buffering is handled here.
 */
int __sfvwrite(fp, uio)
</code></pre> 
<p>里面判断 <code>fp</code> 传入的 <code>flags</code>，有三种情况要处理:</p> 
<ol> 
 <li>不写入缓冲区(__SNBF) Unbuffered: write up to BUFSIZ bytes at a time.</li> 
 <li>完全缓冲 Fully buffered: fill partially full buffer, if any, and then flush.</li> 
 <li>行缓冲(__SLBF) Line buffered: like fully buffered, but we must check for new lines.</li> 
</ol> 
<p>而 Libc 里提供的 <code>stdin</code>, <code>stdout</code> 和 <code>stderr</code> 定义如下:</p> 
<pre><code>#define     STDIN_FILENO   0   /* standard input file descriptor */
#define    STDOUT_FILENO   1   /* standard output file descriptor */
#define    STDERR_FILENO   2   /* standard error file descriptor */
<p>FILE __sF[3] = {<br /> std(__SRD, STDIN_FILENO),<br /> std(__SWR, STDOUT_FILENO),<br /> std(__SWR|__SNBF, STDERR_FILENO)<br /> };</p>
<p>FILE *__stdinp = &amp;__sF[0];<br /> FILE *__stdoutp = &amp;__sF[1];<br /> FILE *__stderrp = &amp;__sF[2];</p>
</code><p><code>#define stdin __stdinp<br /> #define stdout __stdoutp<br /> #define stderr __stderrp<br /> </code></p></pre>
<p></p> 
<p>至此我们可以看到 <code>stderr</code> 带上了 <code>__SNBF</code> flag，表示完全不 buffer，所以只要一调用 <code>printf</code> 它就会写入。</p> 
<p>而 <code>stdout</code> 没有带这个 buffer，在 <code>__sfvwrite()</code> 的实现里，它先判断如果非 <code>__SNBF</code> 那就是要 buffer，然后判断 <code>fp</code> 没带上 <code>__SLBF</code> 那就是 fully buffered。</p> 
<p>看到这里大家会不会有个疑问，<code>__stdoutp</code> 声明的时候不带 <code>__SLBF</code> flag 那为什么上述例子加上换行它就自动 flush 了？</p> 
<p>这里 <code>fp</code> 的 flags 是随时可以被修改的，<code>stdio</code> 封装的 <code>setlinebuf()</code> 接口就可以把当前 <code>fp</code> 加上 <code>_IOLBF</code> mode，也就是带上 <code>__SLBF</code> flag。</p> 
<p>在我们上面的那个例子中，如果我们加上</p> 
<pre><code>setbuf(stdout, NULL);
</code></pre> 
<p>或者</p> 
<pre><code>setvbuf(stdout, NULL, _IONBF, 0);
</code></pre> 
<p><code>fp-&gt;flags</code> 就会被修改，<code>stdout</code> 就能及时被打印出来。</p> 
<p>所以虽然 <code>Libc</code> 声明的时候默认是 <code>fully-buffered</code> 但是中间可能会被修改。至于内核具体在什么地方修改了我暂时没找到，不过我们可以<a href="https://eklitzke.org/stdout-buffering">参考这篇文章</a></p> 
<p>GNU libc (glibc) uses the following rules for buffering:</p> 
<table> 
 <thead> 
  <tr> 
   <th>Stream</th> 
   <th>Type</th> 
   <th>Behavior</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>stdin</td> 
   <td>input</td> 
   <td>line-buffered</td> 
  </tr> 
  <tr> 
   <td>stdout (TTY)</td> 
   <td>output</td> 
   <td>line-buffered</td> 
  </tr> 
  <tr> 
   <td>stdout (not a TTY)</td> 
   <td>output</td> 
   <td>fully-buffered</td> 
  </tr> 
  <tr> 
   <td>stderr</td> 
   <td>output</td> 
   <td>unbuffered</td> 
  </tr> 
 </tbody> 
</table> 
<p>我跑上述例子的时候是在 terminal 用 gcc 编译然后 <code>./a.out</code> 运行的，符合预期。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://www.gnu.org/software/libc/manual/html_node/Flushing-Buffers.html">Flushing Buffers (The GNU C Library)</a></li> 
 <li><a href="https://opensource.apple.com/tarballs/Libc/">Source Browser Libc</a></li> 
 <li><a href="https://eklitzke.org/stdout-buffering">Stdout Buffering</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 22 &#x804A;&#x804A;&#x300A;&#x5168;&#x7403;&#x901A;&#x53F2;&#x300B;&#x548C;&#x52A8;&#x68EE;&#xFF08;&#x4E0B;&#xFF09;</title>
        <link>https://justinyan.eth.limo/8EDEF3EE-BE5E-4CF9-98C7-7784FA7341DD/</link>
        <guid>https://justinyan.eth.limo/8EDEF3EE-BE5E-4CF9-98C7-7784FA7341DD/</guid>
        <pubDate>Mon, 27 Apr 2020 11:47:23 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/04/podcast_022.jpg" alt="Vol. 22 聊聊《全球通史》和动森（下）" /></p> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>承接上期节目，我们继续讨论斯塔夫里阿诺斯的《全球通史》下册。</p> 
<p>我也写了篇博客介绍这本书，有兴趣的听众朋友可以点开看看：<a href="https://justinyan.me/post/4290">枫影夜读 #3 L·S·斯塔夫里阿诺斯《全球通史》</a></p> 
<h2>相关信息</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4290">枫影夜读 #3 L·S·斯塔夫里阿诺斯《全球通史》</a></li> 
 <li>片尾曲: "Freedom" by Anthony Hamilton and Elayna Boynton (来自电影《被解救的姜戈》Django Unchained)</li> 
 <li>反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 21 &#x804A;&#x804A;&#x300A;&#x5168;&#x7403;&#x901A;&#x53F2;&#x300B;&#x548C;&#x52A8;&#x68EE;&#xFF08;&#x4E0A;&#xFF09;</title>
        <link>https://justinyan.eth.limo/CE13E58F-171E-4643-BA66-4EC5292B7FCB/</link>
        <guid>https://justinyan.eth.limo/CE13E58F-171E-4643-BA66-4EC5292B7FCB/</guid>
        <pubDate>Sun, 19 Apr 2020 20:26:35 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/04/podcast_21_2.jpg" alt="Vol. 21 聊聊《全球通史》和动森（上）" /></p> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>3月猛男必玩的捡树枝游戏《动物森友会》你玩了吗？</p> 
<p>各位听众朋友们好久不见，本期节目我们两个不专业的历史门外汉跟大家一起闲聊历史，主要讨论的是以全球史观看待整个地球人类史的著作，斯塔夫里阿诺斯的《全球通史》。顺便再聊两句动森XD。</p> 
<p>我也写了篇博客介绍这本书，有兴趣的听众朋友可以点开看看：<a href="https://justinyan.me/post/4290">枫影夜读 #3 L·S·斯塔夫里阿诺斯《全球通史》</a></p> 
<h2>相关信息</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4290">枫影夜读 #3 L·S·斯塔夫里阿诺斯《全球通史》</a></li> 
 <li>片尾曲: 动森歌手 K.K 演唱的 K.K. Rock</li> 
 <li>反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #156 L&#xB7;S&#xB7;&#x65AF;&#x5854;&#x592B;&#x91CC;&#x963F;&#x8BFA;&#x65AF; - &#x300A;&#x5168;&#x7403;&#x901A;&#x53F2;&#x300B;</title>
        <link>https://justinyan.eth.limo/2EC9DE65-FA0A-45A2-B934-49F7B1839ED9/</link>
        <guid>https://justinyan.eth.limo/2EC9DE65-FA0A-45A2-B934-49F7B1839ED9/</guid>
        <pubDate>Wed, 15 Apr 2020 12:59:01 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/04/yedu-003.jpg" alt="枫影夜读 #3 L·S·斯塔夫里阿诺斯《全球通史》" /></p> 
<p>以前历史课老师曾给我们推荐过《全球通史》这部著作，因为老师的教授风格很有趣，所讲述的观点和视角也比课本上的丰富得多，所以一直记得这本书。最近北京大学出版社出版了第7版新校本，在全网热推，正好看到就买了，果然是一部佳作。</p> 
<h2>〇、背景</h2> 
<p>本书的全名为《全球通史：从史前到21世纪》(A Global History - from Prehistory to the 21st Century)，作者是L·S·斯塔夫里阿诺斯，一位在加拿大出生的希腊裔美国历史学家。这本书共分上下两册，以公元1500年划分，最早于1971年出版。</p> 
<p>我们在学校里学习世界史的时候，虽然会提及全球各个大陆的历史，但是通常都是以中国为中心去看的。比如说1840年鸦片战争，虽然前半部分会阐述工业革命以来英国生产力的大发展，但是后续就开始以中国视角面对帝国主义列强的入侵了。反过来说，西方的史学界也经常以“西欧中心论”来看待历史。</p> 
<p>作者写这本书时，试图以全球的视角来看待不同地区的文明直接的碰撞与交流，所以相较之下本书会更多着墨于各个地区之间的联系。当然，本作毕竟成书较早，通读下来依然有一种“西欧中心”的感觉，这主要来自于作者本身的局限性。一个人毕竟很难掌握世界上全部的语言，更罔论通读各个地区各个国家的历史资料了。所以编写全球史的人在论及自己不太熟悉的国家与地区时，通常都需要阅读第二手资料，而由此产生的谬误与浅层理解就无法避免。作者书写西欧历史时可谓神采飞扬，中东伊斯兰世界也可圈可点，但是书写中国、印度等地区时则显得较为单薄。</p> 
<p>不过作为一个习惯了中国视角的普通读者来说，本作依然能给我带来一个新颖的角度，从中也受到了不少有趣的启发，我以为本作非常适合作入门科普阅读。</p> 
<h2>一、历史分界</h2> 
<p>人类出现在地球上可以追溯到400万年前，但是文明的出现至今不足6000年，假如把人类历史缩放到一天，那么文明只占最后的两分钟(129秒)而已。</p> 
<p>但是人类世界的发展曲线却在最后几千年呈现指数爆炸的变化，越靠近现代变化速度越快，所以本书对历史的断代在时间上是不均匀的。</p> 
<p>另外，历史上的时间分界点也只是一个大概的日期，确定这样的时间点只是为了方便起见。事实上历史是过渡渐进的，所以不管把过渡时间指定为1年、10年还是100年都没有意义。</p> 
<p>作者为上下两册选择的分界点是公元1500年。在这个过渡阶段里有一个重要的标志性事件：1492年哥伦布发现新大陆。同样，这个事件也是全球各地一系列发展的结果，而不是1492年或者1500年历史的车头突然发生90度转弯。</p> 
<h3>1.1 上册：史前到公元1500年</h3> 
<p>本书上册主要讲的是史前人类到公元1500年这段时间。</p> 
<p>史前人类的历史有两个重要的转变：一是灵长类逐渐转变为有思维能力的真正的人类；二是人类的先祖从坐享大自然恩赐的食物采集者，转变为日益摆脱大自然束缚、掌握自己命运的食物生产者。所以简单来说史前这段数百万年的演化史最重要的是进化为人类和农业革命。</p> 
<p>接下来是文明出现（约公元前3500年）到公元500年之前，作者从美索不达米亚的苏美尔文明一路讲到西欧因蛮族入侵导致西罗马帝国灭亡。</p> 
<p>然后是公元500年到1500年漫长的中世纪。上册大量的篇幅在讲述欧亚大陆上各种族之间的互相影响，像是古希腊与埃及文化的交流，像是突厥人和蒙古人从东亚一路打到欧洲等等。然后作者又用两个“编”的篇幅讲述了非欧亚大陆世界和诸孤立地区的世界。</p> 
<p>相比于我们熟悉的中国中心的历史，这种相对来说更以“西欧”为中心的历史提供了一种不同的视角。虽然作者在本书中试图以“全球史观”来看世界，但是在我读来，全球除欧洲以外各地区的篇幅和分析仍不够西欧地区来得详尽。不过我并不是史学专家，能以这样的视角看世界已经是非常不错的体验了。</p> 
<h2>1.2 下册</h2> 
<p>如前文所述，人类世界在加速发展，1500年以后虽然只有短短数百年，但是却发生了比过去几千年加起来还多的巨变。其中对当今世界最为深刻的影响就是全球化。西方从文艺复兴时期开始兴起的技术革命、社会革命，在几百年时间里让一度落后于世界的地区，一跃成为征服全球的殖民者。</p> 
<p>下册的第一个阶段是1500-1763年。因为伊斯兰世界的兴盛，西方与东方的传统贸易路线被切断，西欧人想要买到东方的香料只能通过威尼斯人中转。于是让威尼斯和阿拉伯商人赚得盆满钵满。现在我们不太了解“香料”这个东西为什么在当时能有这么大的诱惑力，本书也未作详尽解释，这里我们知道“香料”的利润率极高就行。麦哲伦的船队绕地球一圈，整个舰队最后只剩一艘船摇摇欲坠，但是他带回的香料依然足够支付整条舰队的全部费用。可见“香料”是只要肯冒险走一趟就能发家致富的生意。</p> 
<p>于是1500-1763这段时间里，巨大利益的诱惑和陆上商路的阻隔促使西方人寻找新的贸易路线，此时积累的航海技术也得到一个正向循环的发展。于是有了寻找通往东方新航线的大航海时代，也即所谓的“地理大发现”时代。</p> 
<p>要知道这一阶段西方依然不是最强的地区，不论是与世隔绝的中国还是鼎盛时期的中东伊斯兰世界，都是比西方发达的地区。直到1763-1914时期，作者作为下册的第二阶段：西方据优势地位时期，西方列强才开始征服世界。</p> 
<p>我们上面也说过历史是渐进发展的，工业革命并不是一夜之间爆发的。长期以来主要是科学革命、工业革命和政治革命三个相互影响，相辅相成的重大转发在西方发生了，最终给了西方以不可阻挡的推动力和力量。</p> 
<p>这段时期包括我们所熟知的英国建立日不落帝国，西方对非洲的瓜分，亚洲的殖民，跟我们息息相关的鸦片战争等等。直到1914年第一次世界大战爆发。</p> 
<p>最后一个阶段是1914年以来，西方衰落与成功。一战二战对全球的影响无疑是巨大的，无论是战争摧毁的城市还是旧有国家制度，先破而后立，全世界在战后的废墟之上发生了天翻地覆的变化。</p> 
<p>殖民初期盛行的白人至上论，借着达尔文主义的兴起，成为西方殖民的正当理由。但是在几百年时间里建立起来的全球霸权，却在战后短短数十年时间里土崩瓦解。诸殖民地纷纷宣告独立，一个个新兴国家建立起来，最终才有了我们现在所生活中的世界。</p> 
<h2>二、历史对今天的启示</h2> 
<p>作者在每一编的最后都会专门写一章“历史对今天的启示”，在章节里也经常会对历史事件对今日的影响作出评述。像是黑奴在西方盛行的时期，借着达尔文的《物种起源》发展为“白人至上论”，可谓今日种族歧视之根源。其中我觉得最有意思的是技术革命与社会革命之间的脱节。</p> 
<p>人们一般都比较容易接受技术革命，因为技术上的发展通常都能提升我们生活的幸福感。这点在互联网兴盛的当下可以说体会至深。但是在人类智力发展的同时，却又不具备掌握该智力的智慧。“环保”这个概念喊了这么多年，但是在生产力发展，经济发展的大趋势下依然没有十分有效的手段可以两者兼备。互联网技术的发展也带来了极大的效率提升，但是机器取代人类之后，人类的工作时间反而增加了。种种矛盾现象实际上无不体现出人类在社会革命上与技术革命的严重脱节。</p> 
<p>史前时代的人类通常每周只需15到20小时采集食物，但是随着农业革命的到来，变化开始发生，直到第一次工业革命，直到二战后的高科技革命。个体的生产力在提升，但是工作时间也在剧增。1900年美国人每周平均工作60小时。以前可能听说日本有“过劳死”的案例，现在国内也时不时会有猝死的报道。虽然个人的生产力提升了，但是如果所有人都具备一样的生产力基础，那么相对生产力就没有差异。这时候竞争激烈的公司之间，只能通过堆人力堆时间来互相对抗，这个现象在国内的互联网行业尤为普遍。</p> 
<p>在信息时代，形成技术壁垒远比过去困难得多。大航海时代葡萄牙可以通过掌握自己的航线来跟西班牙竞争，先行者们也可以通过控制重要港口来打击对手。但是在信息流通如此迅速的今天，达成技术壁垒的门槛非常高。即使是领跑世界的科技公司Google也在近来开始取消其著名的20%时间，开始削减各项公司福利。</p> 
<blockquote>
 <p> 1992年，美国劳工联合会前主席威廉姆·格林断言：“唯一的选择就是失业或休息。”结果选择就是失业。公司高管都拒绝接受缩短工时的建议，因为这样增加的劳动成本将使他们的公司受到国内外竞争对手的攻击。 </p>
</blockquote> 
<p>所以可以说，在人类社会发展出新的正向循环的竞争机制之前，当下的社会就一定是有人会去做堆时间堆人力的竞争，而一旦有人这么做了，其他人就得跟进，最终结局就变成要嘛加班要嘛倒闭。</p> 
<p>作者在本书中还讲述了其他意义深刻的观点与启示，比如社会的不公平，比如自我毁灭倾向。可以看到人类历史上作出的重大发展都有其二元性，既有好的方面也有坏的方面，既是破坏也是进步。所以作为生存在地球上的一个普通个体，如何去看待这个世界呢？作者的态度还是比较乐观的。</p> 
<p>虽然我们的历史充满了矛盾，技术的进步带来了生产力的发展和“核冬天”的恐怖。但是人类之所以特别，是因为我们学会了利用自然环境来满足自身的需求——使环境来适应我们的遗传特点而不是相反。当然这种做法也引发了对自然环境的极大破坏，但是至少人类不是命运的产物，人类通过高科技已经摆脱了部分可能的灭绝威胁：绕地小行星的爆炸和早已形成的新冰川纪的袭击。</p> 
<p>纵观历史，我们不仅要看到人类科技、社会的进步，也要看到我们在公平性，时间上的倒退。作为一个普通的个体，历史的洪流在往前奔涌，我们能做到的无非是以史为鉴，少走弯路，看清自己所处的环境。在无法改变环境之前要适应，在能够改变的时候试图做些改变。这不仅需要勇气，也需要智慧与毅力。</p> 
<h2>三、本书的优点与局限</h2> 
<p>如前所述，编写全球史对作者有着极高的要求，他可能熟悉自己母语国家的历史，却很难精通世上所有语言。所以在讲述东亚诸国历史时，尤其是我们所熟悉的中国历史，总觉得作者的跳跃比较大，而且有些强行把中国历史切分到他所设定的断代节点中的感觉。比如说公元1500年上下，西方虽然开始了地理大发现时代，但是中国却处于闭关锁国之态，虽然1405-1433年间有过郑和下西洋事件可与地理大发现挂钩，但是总的来说并没有明显变化。所以这样的分界可能更靠近西方世界的变革多一些，如果以西方自地理大发现以来积累导致的技术革命，将对未来的全球造成统一的影响来看，那么还是合理的。只是对于与世隔绝的中国来说，硬套进这个框架里还是有点脱节。</p> 
<p>本书自1971年出版以后，作者对其进行了多次修订，增添了不少内容，比如冷战时期的内容。作为一部时空跨度极大的史书，可能许多人的刻板印象是按照时间轴陈列事件，内容艰涩生硬。但是本书却浅显易懂，文风流畅，读起来毫不费力。而且虽然主线是从古至今，但作者时时将历史事件与今日时势结合作出点评，发人深省。</p> 
<p>本书也需要对不同方面的内容作出取舍，所以如果想单独了解专一领域的历史就不合适了。比如基督教的诞生与发展的历史其实非常的迂回曲折，但是本书并不会过多涉及。这也带来另一个问题，假设你之前并不了解基督教，那么阅读起来在部分章节就会有点不知所云。像是基督教后来怎么分出天主教、东正教之类的，他们的教义有什么区别，教派有什么分歧之类的。这样完全没有背景的读者读起来可能会有点一头雾水。</p> 
<p>但是总的来说，我非常欣赏这种全球史观的作品，对于作者着墨于各地区的联系这点也觉得十分有趣。再加上阅读起来非常轻松，所以是值得推荐的好书。</p> 
<h2>四、参考资料</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 全球通史</li> 
 <li>副标题: 从史前到21世纪</li> 
 <li>作者: L·S·斯塔夫里阿诺斯</li> 
 <li>出版社: 北京大学出版社</li> 
 <li>出版年: 2020-01</li> 
 <li>ASIN: B082M6BXCZ</li> 
 <li>版本: Kindle</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5173;&#x4E8E; macOS &#x4F2A;&#x7EC8;&#x7AEF;(PTY)&#x7684;&#x5B66;&#x4E60;</title>
        <link>https://justinyan.eth.limo/86F58B90-C31A-45C0-AFCB-0E331B95BAC0/</link>
        <guid>https://justinyan.eth.limo/86F58B90-C31A-45C0-AFCB-0E331B95BAC0/</guid>
        <pubDate>Thu, 09 Apr 2020 23:06:53 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/04/macos_pty2.jpg" alt="关于 macOS 伪终端(PTY)的学习" /></p> 
<p>1973 年 Xerox PARC 第一次在 Xerox Alto 这款个人计算机上推出带有 GUI 界面的操作系统，自此让极大地降低个人计算机的使用门槛，也开启了更加丰富多彩的计算机发展。</p> 
<p>不过作为一个码农，终端依然是平日不可或缺的生产力工具。在 macOS 上，系统自带的 Termianl.app 或者更加好用的开源的 iTerm2.app 是最受欢迎的终端应用(其他 X Windows 系统也有像 xterm 之类的优秀应用)。他们也都是一个 Cocoa App。那么一个 Cocoa App 是如何把自己变成一个能跟用户通过键盘交互，有标准输入输出的“伪终端”(Pseudoterminal)的呢？</p> 
<h2>〇、历史上的终端 Terminal</h2> 
<p>在带有电子显示器的终端发明以前，人们真的就是在一台带键盘的打印机上，一边打字输入，一边等待计算机在纸上打印输出。所以大家写 Hello World! 的时候都是用 <code>print("Hello World!")</code>，因为它是真地在打印。</p> 
<p>第一台带有显示器，支持 ANSI escape codes 的终端是 DEC 公司生产的 VT100。在这之前他们已经生产过很多种型号的电子终端，不过这台机器是最成功的。</p> 
<h2>一、Cocoa App 如何调用系统自带的 Binaries</h2> 
<p>我们知道 <code>ls</code> 这个命令在 Unix 系统里就是一个 binary，一般放在 <code>/bin</code> 或者 <code>/usr/bin</code> 这样的目录里，用 <code>whereis</code> 可以找到它在哪里。</p> 
<pre><code>whereis ls
</code></pre> 
<p>ObjectiveC 在 Foundation 里提供了 <code>NSTask</code> 这样的高级封装，用它的接口可以非常简单地实现类似 <code>shell command</code> 的效果。</p> 
<p>但是首先一个沙盒 App 的能力是有限的，其次就算是沙盒外的 App，<code>NSTask</code> 也不允许直接访问 <code>/usr/bin</code> 目录里的 binaries，直接调用要嘛无响应要嘛直接 crash。</p> 
<p>所以我们还得迂回一下，我们不直接运行 binaries，而是利用 <code>bash</code> 来运行:</p> 
<pre><code>NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/bash"];
[task setArguments:@[ @"-c", @"/usr/bin/killall Dock" ]];
[task launch];
</code></pre> 
<p>但是即便如此，想要使用 <code>NSTask</code> 的接口来模拟终端还是非常困难的事情。所以，Termianl Apps 们是怎么实现的呢？</p> 
<h2>二、iTerm2</h2> 
<p><a href="https://github.com/gnachman/iTerm2">iTerm2 的代码是开源的</a>，历史原因内部实现比较复杂，而且 iTerm2 支持在 Cocoa App 里直接和 python 脚本交互，相当于他提供了一套桥接的接口，可以用 python 来实现对 iTerm2 App 的自动化，类似 Hammerspoon 这类 App 的效果。所以阅读过程中我还看到一堆 client/server 的通信，有点绕。</p> 
<p>最后我发现真正实现终端功能的地方在这里: <code>iTermPosixTTYReplacements.c</code>，关键函数是:</p> 
<pre><code>int openpty(int *amaster, int *aslave, char *name, struct termios *termp, struct    winsize *winp);
</code></pre> 
<p>这个函数的实现在 <code>Libc</code> 里，可以参考<a href="https://opensource.apple.com/source/OpenSSH/OpenSSH-57/openssh/openbsd-compat/bsd-openpty.c.auto.html">苹果开源页面</a>。</p> 
<p><code>openpty()</code> 是 BSD 函数，并不在 POSIX 标准里，不过 Linux 也有把这个函数 port 过去。从应用层的角度来看，<code>openpty()</code> 会跟 <code>open("/dev/ptmx")</code> 获取一个可用的 <code>pseudoterminal</code>。iTerm2 的做法就是通过该函数获得一个 pseudoterminal master 和 slave 的 <code>fd</code> 句柄，后续用户在 UI 界面上的输入都通过这两个句柄来交互。</p> 
<p>iTerm 在 <code>openpty()</code> 之后还 <code>fork()</code> 了一下自己，然后父进程释放所有的句柄，这样父进程处理 UI 输入，一个窗口对应一个子进程，一个子进程对应一个 <code>pty</code>。</p> 
<p>为什么 Unix 要这么设计 <code>pty</code> 接口呢？历史原因。</p> 
<p>早期的计算机比如 1970 年 DEC 生产的 PDP-11，他需要通过一系列的电线跟用户的终端(也就是键盘和打印机)连接到一起。这种只有键盘和打印机的终端也叫做 TTY。后来有了电子显示器之后，就得使用软件模拟一个硬件终端，也叫做"伪终端"(pseudoterminal)。</p> 
<p>UNIX 采用的设计是加入了一个中间层，当你使用 <code>openpty()</code> 打开一个伪终端的时候，会给你一个 master 一个 slave 句柄。GUI 软件把键盘输入作为 master 的 input 写入，master 的 output 就会作为 slave 的 input 写入，然后再作为 output 输出。所以对于我们的 Cocoa App 应用层来说，可以简单地把 master fd 作为 writer，把 slave fd 作为 reader。</p> 
<p>听起来好像没什么必要但是其实 slave 做了一些特殊的处理。比如 GUI 直接把键盘输入的 <code>CTRL+C(0x03)</code> 写入 master 句柄。这时候 slave 接收到后会把 <code>0x03</code> 转换成 <code>SIGINT</code> signal 发出。对此感兴趣的同学可以参考微软关于 ConPTY 的<a href="https://devblogs.microsoft.com/commandline/windows-command-line-introducing-the-windows-pseudo-console-conpty/">这篇文章</a>。</p> 
<p>所以 iTerm2 既是一个 Cocoa App 又是一个“终端模拟器”，你可以在这个 App 里跑任意 shell 命令。</p> 
<h2>三、其他应用</h2> 
<p><code>openpty()</code> 这种 master/slave fd 的设计还体现在 SSH 远程登录上。可以参考 macOS 的 <a href="https://opensource.apple.com/tarballs/OpenSSH/">OpenSSH 源码</a>。客户端通过 SSH 协议连上服务端时，服务端的 <code>sshd</code> 进程开了一个 <code>pty</code> 用来跑客户端输入的命令。</p> 
<p>另外 VSCode 也基于 Node.js 实现了一个编辑器内的 console，<a href="https://github.com/microsoft/node-pty">源码在这里</a>。</p> 
<p>回到我们的 Cocoa App 来，一个 <code>NSTask</code> 对象在被 <code>launch()</code> 之前我们可以当做是一个数据存储的结构体来对待。通常我们会直接调用它的 <code>launch()</code> 方法，然后使用 <code>NSPipe</code> 来读写。</p> 
<p>这里如果要绕过上文所述的 <code>crash</code> 问题，我们可以改用 <code>openpty()</code>:</p> 
<pre><code>NSCAssert(openpty(&amp;masterFD, &amp;slaveFD, NULL, NULL, NULL) == 0,
                  @"A pseudoterminal couldn't be opened.");
*readHandle = [[NSFileHandle alloc] initWithFileDescriptor:masterFD closeOnDealloc:YES];
*writeHandle = [[NSFileHandle alloc] initWithFileDescriptor:slaveFD closeOnDealloc:YES];
</code></pre> 
<p>有兴趣的读者朋友不妨一试。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://devblogs.microsoft.com/commandline/windows-command-line-introducing-the-windows-pseudo-console-conpty/">Windows Command-Line: Introducing the Windows Pseudo Console (ConPTY) | Windows Command Line</a></li> 
 <li><a href="https://github.com/inkling/Subliminal">inkling/Subliminal: An understated approach to iOS integration testing.</a></li> 
 <li><a href="https://github.com/microsoft/node-pty">microsoft/node-pty: Fork pseudoterminals in Node.JS</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 20 &#x524D;&#x7AEF;&#x6000;&#x65E7;&#x53F2;</title>
        <link>https://justinyan.eth.limo/0898C362-AF24-4CC2-82C9-1D2DC15BB706/</link>
        <guid>https://justinyan.eth.limo/0898C362-AF24-4CC2-82C9-1D2DC15BB706/</guid>
        <pubDate>Sun, 23 Feb 2020 21:39:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/02/podcast-020-4.jpg" alt="Vol. 20 前端怀旧史 " /></p> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>嘉宾: <a href="https://twitter.com/mienflying">神飞</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>大家好！这是一期怀旧节目，我和自力邀请了好朋友同时也是资深老前端，前端观察的站长——神飞，来跟我们一起漫谈前端史。</p> 
<p>前端的发展离不开网络基础的发展，自 1990 年从万维网演变至今天的互联网，短短几十年风云变幻，波澜壮阔。我们三个都曾经是前端开发，时间或长或短，如今在客户端、交互设计以及后台的岗位上继续随着浪潮起伏。前端领域里的技术更迭瞬息万变，有吐不完的槽也有怀不完的旧。各位听友不妨戴上耳机，跟着我们，一起回到过去，重温 96169 拨号上网的时代。</p> 
<h2>相关信息</h2> 
<ul> 
 <li>前端观察: <a href="https://www.qianduan.net/">https://www.qianduan.net/</a></li> 
 <li>BGM: <a href="https://store.steampowered.com/app/294100/RimWorld/">RimWorld OST - Moving On</a></li> 
 <li>反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li>封面: Apple.com 1984</li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 19 &#x75AB;&#x60C5;&#x4E4B;&#x4E0B;&#xFF0C;&#x8C08;&#x8C08;&#x8FDC;&#x7A0B;&#x529E;&#x516C;</title>
        <link>https://justinyan.eth.limo/0D5DE4E5-F5DC-487C-9639-FEA8A4086AA0/</link>
        <guid>https://justinyan.eth.limo/0D5DE4E5-F5DC-487C-9639-FEA8A4086AA0/</guid>
        <pubDate>Sun, 09 Feb 2020 10:08:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/02/podcast-019.jpg" alt="Vol. 19 疫情之下，谈谈远程办公" /></p> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>主播: <a href="https://twitter.com/hzlzh">自力 hzlzh</a> | <a href="https://weibo.com/hzlzh">微博</a></li> 
 <li>听众反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>因为最近新冠疫情的关系，很多团队已经开始尝试在家远程办公。但并非所有团队都有远程办公的经验，对我们两位主播来说也是首次尝试。</p> 
<p>所以本期节目我们邀请到 9 位业内朋友，听听看他们这次疫情对于他们的团队的影响，以及他们远程办公的看法。</p> 
<p>这些朋友来自国内外的创业团队，程序员，设计师，投资人，还有偏传统行业的朋友。每个人的访谈都很有意思，但是由于节目时长的关系，我们没法把所有人的录音都剪到正式节目里，所以我们把完整的采访录音也都放在 Show Notes 里面，大家可以点击链接进行收听。这里有各种不同的角度和看法，值得一听。</p> 
<h2>本期嘉宾与完整访谈录音</h2> 
<p><em>顺序不分先后</em></p> 
<ul> 
 <li>61: <a href="https://twitter.com/liuyi0922">@liuyi0922</a> | <a href="https://weibo.com/liuyi0922">微博 @im61</a> 
  <ul> 
   <li><a href="https://justinyan-1253943276.file.myqcloud.com/podcast/Podcast019-61.mp3">▶️ 采访录音</a></li> 
  </ul> </li> 
 <li>歌词经理: <a href="https://twitter.com/lyricwai">@lyricwai</a> | <a href="https://weibo.com/shellex">微博 @歌词经理</a> 
  <ul> 
   <li><a href="https://justinyan-1253943276.file.myqcloud.com/podcast/Podcast019-lyricwai.mp3">▶️ 采访录音</a></li> 
  </ul> </li> 
 <li>Clu: <a href="https://twitter.com/designedbyclu">@designedbyclu</a> | <a href="https://instagram.com/thexclu">Instagram @thexclu</a> 
  <ul> 
   <li><a href="https://justinyan-1253943276.file.myqcloud.com/podcast/Podcast019-Clu.mp3">▶️ 采访录音</a></li> 
  </ul> </li> 
 <li>汪智沛: <a href="https://twitter.com/wangzhipei">@wangzhipei</a> | <a href="https://weibo.com/60913940">微博 @汪智沛</a> 
  <ul> 
   <li><a href="https://justinyan-1253943276.file.myqcloud.com/podcast/Podcast019-wangzhipei.mp3">▶️ 采访录音</a></li> 
  </ul> </li> 
 <li>Rio: <a href="https://twitter.com/RioJot">@RioJot</a> | <a href="https://weibo.com/riobard">微博 @Riobard</a> 
  <ul> 
   <li><a href="https://justinyan-1253943276.file.myqcloud.com/podcast/Podcast019-Rio.mp3">▶️ 采访录音</a></li> 
  </ul> </li> 
 <li>xhacker: <a href="https://twitter.com/xhacker">@xhacker</a> | <a href="https://instagram.com/xhacker">Instagram @xhacker</a> 
  <ul> 
   <li><a href="https://justinyan-1253943276.file.myqcloud.com/podcast/Podcast019-xhacker.mp3">▶️ 采访录音</a></li> 
  </ul> </li> 
 <li>钟颖: <a href="https://twitter.com/cyanapps">@cyanapps</a> | <a href="https://weibo.com/0x00eeee">微博 @StackOverflowError</a> 
  <ul> 
   <li><a href="https://justinyan-1253943276.file.myqcloud.com/podcast/Podcast019-zhongying.mp3">▶️ 采访录音</a></li> 
  </ul> </li> 
 <li>Louis: <a href="https://twitter.com/louisyiwenluo">@louisyiwenluo</a> 
  <ul> 
   <li><a href="https://justinyan-1253943276.file.myqcloud.com/podcast/Podcast019-Louis.mp3">▶️ 采访录音</a></li> 
  </ul> </li> 
 <li>家乐: <a href="https://twitter.com/willerce">@willerce</a> | <a href="https://weibo.com/willerce">微博 @willerce</a> 
  <ul> 
   <li><a href="https://justinyan-1253943276.file.myqcloud.com/podcast/Podcast019-willerce.mp3">▶️ 采访录音</a></li> 
  </ul> </li> 
</ul> 
<h2>相关信息</h2> 
<ul> 
 <li>游戏: <a href="https://www.playstation.com/chs-hk/games/death-stranding-ps4/">死亡搁浅 PS4 主页</a></li> 
 <li>插曲: <a href="http://www.lowroarmusic.com/">Low Roar - Low Roar</a></li> 
 <li>反馈: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li>封面: <a href="https://unsplash.com/@andrewtneel">@andrewtneel on unsplash.com</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="https://music.163.com/#/djradio?id=792181476">网易云音乐 - 枫言枫语播客</a></li> 
 <li><a href="https://himalaya.com/en/show/856006">Himalaya</a></li> 
 <li>微信小程序已下架</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 18 &#x804A;&#x804A;&#x300A;&#x4E86;&#x4E0D;&#x8D77;&#x7684;&#x6211;&#x300B;</title>
        <link>https://justinyan.eth.limo/7D9D3499-D014-4127-BAAA-6B77024B766C/</link>
        <guid>https://justinyan.eth.limo/7D9D3499-D014-4127-BAAA-6B77024B766C/</guid>
        <pubDate>Fri, 31 Jan 2020 14:57:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/01/podcast_018.jpg" alt="Vol. 18 聊聊《了不起的我》" /></p> 
<ul> 
 <li>主播: 枫影 Justin Yan <a href="https://twitter.com/MapleShadow">推特</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>今年(2020年)的春节对全国人民来说都是非常特别的一个假期，由于"武汉肺炎"(新型冠状病毒)的爆发，全国进入警备状态，人均口罩，窝在家里不出门。同时年轻人劝自己的父母长辈戴口罩、取消家族聚餐等等举措亦成为一种新的流行。</p> 
<p>从我个人的角度来说，不仅劝说长辈一事遇到了一些矛盾与冲突，需要学习和尝试新的沟通技巧，而且在过去的几个月时间里，我自身也遇到了不少事情需要我不断打破过去的习惯，学习新的处事方式来应对不断变化的工作与生活。</p> 
<p>有些事情在已经掌握方法的人眼里:"这不就是件小事嘛"。但是对于没有门道或者掉进陷阱的人来说，这可能是难以逾越的高墙。如果你具备了解决问题的能力，那么能够理解高墙另一侧的人的心态就成为沟通的关键；如果你不具备解决问题的能力，那么如何提升自己的弹跳能力，或者想办法绕过高墙，就成为自我发展和成长的关键。</p> 
<p>上一期我们跟大家分享了 Jordan Peterson 的《人生十二法则》这本书，里面讲了许多切实可行且行之有效的人生道理。但是我在文章与播客都有提及，书中并未指出如何提升自我认知的方法，有些例子也比较北美，中国读者可能比较难感同身受。<strong>所以本期节目我们给大家分享另一本关于自我发展的心理学作品，就是心理咨询师陈海贤老师的《了不起的我》。</strong></p> 
<h2>相关信息</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4237">枫影夜读 #2 —— 陈海贤《了不起的我》</a></li> 
 <li>插曲: <a href="http://www.lowroarmusic.com/">Low Roar - Give Up</a></li> 
 <li>结尾曲: <a href="http://www.lowroarmusic.com/">Low Roar - The Painter</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li>封面: <a href="https://unsplash.com/@grakozy">@grakozy on unsplash.com</a></li> 
</ul> 
<h2>节目收听方式</h2> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://open.spotify.com/show/7K4KZoidZvhlIpIbSj17QG">Spotify - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="https://music.163.com/#/djradio?id=792181476">网易云音乐 - 枫言枫语播客</a></li> 
 <li><a href="https://himalaya.com/en/show/856006">Himalaya</a></li> 
 <li>微信小程序已下架</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #155 &#x9648;&#x6D77;&#x8D24; - &#x300A;&#x4E86;&#x4E0D;&#x8D77;&#x7684;&#x6211;&#x300B;</title>
        <link>https://justinyan.eth.limo/A109CAC1-E3C8-40EC-A330-480CC08F91CB/</link>
        <guid>https://justinyan.eth.limo/A109CAC1-E3C8-40EC-A330-480CC08F91CB/</guid>
        <pubDate>Thu, 30 Jan 2020 12:51:58 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/01/fyyd-02.jpg" alt="枫影夜读 #2 —— 陈海贤《了不起的我》" /></p> 
<p>今年(2020年)的春节对全国人民来说都是非常特别的一个假期，由于"武汉肺炎"(新型冠状病毒)的爆发，全国进入警备状态，人均口罩，窝在家里不出门。同时年轻人劝自己的父母长辈戴口罩、取消家族聚餐等等举措亦成为一种新的流行。</p> 
<p>从我个人的角度来说，不仅劝说长辈一事遇到了一些矛盾与冲突，需要学习和尝试新的沟通技巧，而且在过去的几个月时间里，我自身也遇到了不少事情需要我不断打破过去的习惯，学习新的处事方式来应对不断变化的工作与生活。</p> 
<p>有些事情在已经掌握方法的人眼里:"这不就是件小事嘛"。但是对于没有门道或者掉进陷阱的人来说，这可能是难以逾越的高墙。如果你具备了解决问题的能力，那么能够理解高墙另一侧的人的心态就成为沟通的关键；如果你不具备解决问题的能力，那么如何提升自己的弹跳能力，或者想办法绕过高墙，就成为自我发展和成长的关键。</p> 
<p>上一期夜读我们跟大家分享了 Jordan Peterson 的《人生十二法则》这本书，里面讲了许多切实可行且行之有效的人生道理。但是我在文章与播客都有提及，书中并未指出如何提升自我认知的方法，有些例子也比较北美，中国读者可能比较难感同身受。<strong>所以本期夜读我们给大家分享另一本关于自我发展的心理学作品，就是心理咨询师陈海贤老师的《了不起的我》。</strong></p> 
<h2>一、控制的两分法，心理免疫的 X 光片</h2> 
<p>1 月 21 日，还在公司加班的我看到"丁香医生"做的"武汉肺炎"的确诊报道页面，以及许多其他关于此病的报道，深感疫情严重。当时我和朋友说起希望劝说家里的长辈戴口罩，最好是春节哪儿都不要去，但是我当时的态度是"这是不可能的"。那天我的朋友已成功劝说他的父母春节不要出去，在家过，同时告诉我他的秘诀：不停往家人群里发各种疫情的报道。</p> 
<p>当时劝说戴口罩和春节在家的流行尚未起来，疫情报道还停留在 100 人以下确诊的时候。没有外部舆论的助力，我觉得我的劝说希望渺茫。但是那会儿我已经在阅读《了不起的我》这本书了。除了此前提到过的自我分为"情感的大象"和"理智的骑象人"以外，陈海贤老师还提到，要学会"控制的两分法"，即:<strong>努力控制自己能控制的部分，不要试图去控制自己无法控制的部分。</strong></p> 
<p>所以我当时听朋友这么说，虽然不抱太大期望，但也开始往我的家人群里各种转发疫情相关报道，每天发一两次，同时打电话给父母，告知他们疫情还是很严重的。一开始父母的态度在意料之中：我们老家不在疫区，不用紧张，口罩什么的不要紧的。当时公司前台已开始发口罩，我每天离开办公室都要戴上口罩。于是我戴着口罩发了张自拍发到家人群里，身体力行地告诉家人要重视这件事情。</p> 
<p>父母长辈怎么看待疫情我无法控制，他们要不要取消春节聚餐我也无法控制。我能控制的部分是多打电话，多往家人群里普及疫情的资讯。最后的结果是，今年春节的除夕、初一、初二三天的家族聚餐全部取消了。这大大出乎我的意料之外。当然这并不是我的功劳，我在其中起到的作用是微乎其微的。不过这出乎意料之外的结果却让我对本书理论的印象更深了。</p> 
<p>在本书第一章，作者援引了心理学家罗伯特·凯根(Robert Kegan)的"心理免疫的 X 光片"方法，分析了为什么我有时候明明想要改变，却总是往相反的方向做事情。我们可以用这个 X 光片的方法来分析一下劝父母取消家族聚餐这件事情。这个方法需要你把自己的心理分为四栏分别填入:</p> 
<ol> 
 <li><strong>希望达成的行为目标</strong> <p>这里当然是希望父母家人全都平安，但这是愿望不是行为，直接的行为是"取消家族聚餐"。</p> </li> 
 <li> <p><strong>我们正在做哪些跟目标完全相反的行为</strong></p> <p>一开始我觉得没必要去劝说，说了也没用，所以这个行为是"没有任何劝说，或者劝说力度很小"。</p> </li> 
 <li> <p><strong>这些与目标相反的行为有哪些隐含的好处或可以避免的损失</strong></p> <p>我觉得劝说没用，但是没用并没有损失，所以更深一层其实是害怕跟家人发生矛盾。怕这个劝说从"你不要过分紧张啦"之类的敷衍演变成更激烈的冲突。所以这里的好处是:避免冲突。</p> </li> 
 <li> <p><strong>内心有一个重大的假设，这个假设是什么？</strong></p> <p>这里 #3 的好处是避免冲突，那么为什么会冲突呢？因为我心里有一个重大假设，这个假设就是:<strong>说了也一定不会听</strong>。那么这个假设成立吗？从今年的结果来看，这个假设完全不成立。取消初一、初二的聚餐需要我的父亲和外公去行动，他们的行动已经表明了他们的态度：他们非常理解疫情的严重性和取消聚餐的必要性。</p> </li> 
</ol> 
<p>根据三段论，大前提都是错的，那么后面不管怎么推理都是错的。所以这个例子里面我的努力仅仅是转发了微信消息，告知疫情的严重性，实际上父母长辈是否真的有了解到疫情的讯息，是否真的觉得有取消聚餐的必要这些完全不是我能控制的。但是最终结果是:家族聚餐真的取消了。</p> 
<p>不管我的努力到底有没有作用，至少这个结果在鼓励我的情感大象，告诉我的大象这一小步走出去是有用的。只要能一小步一小步的往前走，跟自己比，总是能变成一个更加强大的自己。</p> 
<p>2020 年我立的一个 flag 是想变成一个 Tough Guy。我以前不是，希望未来是，所以这中间就需要"改变"。改变是一件很难的事情，即使对于掌握充分理论知识的心理学家来说也很难，何况一无所知的普通人。</p> 
<p>所以学习《了不起的我》，不能让你立刻就产生改变，但是可以帮助各位读者朋友，掌握多一点点的门道，学会多一些可以付诸实践的技巧，我觉得这已经很棒了。</p> 
<h2>二、从开始改变到绘制人生的地图</h2> 
<p>"焦虑感"仿佛已经成为现代人心理健康的头号大敌，各种营销号"贩卖焦虑"收割颇丰。如果你仔细观察你身边的同事你会发现，不管是初入职场的新人还是经验丰富的老人，无论是夹心饼干的基层管理还是收入爆表的公司大佬，多数人的脑门上都常常写着"焦虑"二字。虽然多数时候工作还是要继续，生活还是要照过，但是"焦虑来袭"可以说是在繁忙都市的白领中最常见的一种消极情绪了。</p> 
<p>我对这种情绪当然也十分熟悉。不过此前在《人生十二法则》的夜读/播客中我曾提到，遇到情绪是最好的分析自我的时刻。所以消极情绪并不可怕，是大脑给我们正常的也是必须的反馈。关键是我们遇到消极情绪时如何去应对。</p> 
<p>"改变"是应对消极情绪最常见的做法，只是我们可能对"改变"的了解不多。我们已经知道，当现实世界不符合我们的预期时，我们就会有怨恨、愤怒、悲伤等情绪出现。有的时候我们在工作中在学习中要做一些自己并不喜欢的事情时，会觉得"我没有选择"。</p> 
<p><strong>但其实"每个人都有选择"。你选择了"我没有选择"，这也是一种选择。</strong></p> 
<p>本书第一章，作者通过"每个人都有选择"，打破"我没有选择"的障碍。其实选择有很多，可能性有很多，你说没有，只是因为你已经在众多可能性中选择了当下这种而已。接下来作者用"情感的大象"和"理智的骑象人"作比喻，解释了为什么我们已经下决心要改变却很难做到。</p> 
<p>比如一个人如果想戒烟，他可能会说我从今天起不抽烟就好了。但是情感的大象是很强壮的，平时它听话的时候骑象人要它往左它就往左，但是当你要戒烟了，情感的大象平时收到抽烟的那些种种好处的反馈突然没了，它发怒了，这时候骑象人的力量是完全拉不动这头大象的。这就是为什么我们很难改变旧有经验的原因。</p> 
<p>再加上前文所述的<strong>"心理免疫原理": 人的心理免疫系统会阻碍一切改变，无论好坏</strong>。当你想要改变的时候，骑象人想往戒烟的方向走，可大象却会努力阻止骑象人。"就像一辆车，一脚踩着刹车一脚轰油门，只能原地打转，痛苦地消耗而已。"</p> 
<p>所以在第一章中，作者先讲述了难以改变旧有经验的原因，然后提出了"小步子原理"，像文首的例子一样，不要管长辈听还是不听，先把疫情文章转了，走出一小步。然后像情感的大象感受到这一小步带来的好处，才有助于让它缓和下来，配合骑象人一起往自己心中想要的方向去慢慢修正。</p> 
<p>但是在第一章的最后一节，作者又提出了一个打翻本章"改变"主题的观点: <strong>改变真的有效吗？</strong></p> 
<p>前面的小节都在说我们为什么难以改变，我们如何能够拉动大象实现改变。但是这个前提是: 改变真的有用，我们需要改变。然而我们的真的遇到什么问题都需要改变吗？不一定，有的时候"改变"反而会成为我们逃避问题的借口。</p> 
<p>书中举了一个例子，一个年轻人毕业三年换了五份工作，每次换工作的原因都是觉得这份工作不是自己想要的。所以看上去好像"换工作"是在积极"改变"，是在寻找自己的人生意义。但是真的是这样吗？</p> 
<p>改变有两层意义:</p> 
<ol> 
 <li>内容上的改变</li> 
 <li>应对方式的改变</li> 
</ol> 
<p>"有时候，改变作为应对方式本身，也需要改变，在心理学上这叫"第二序列改变"(保罗·瓦茨拉维克 Paul Watzlawick《改变：问题形成和解决的原则》)。例子中的年轻人想要改变的，是工作这个内容，但是他真正想要改变的却一直没有变的，是通过换工作来应对焦虑的这种方式。盲目寻求变化，没法安顿下来踏踏实实积累经验，这才是他真正的问题。"</p> 
<p>其实每次有朋友提到工作上遇到了什么什么困难的时候，总会有人说那可以选择换一个公司，然后就会有人说，那换了一个公司也会有啊。接下来的话题就会变成，哪家公司有这个问题哪家公司没有了。这其实没有意义，真正需要讨论的不是哪家公司有同样的问题，而是遇到问题的这位朋友，能否通过改变自身的应对方式来解决这个问题。</p> 
<p>如果能够解决，此时再选择什么公司，那都是自发自愿的选择，而不是为了逃避这个问题而选择。选择哪家公司和如何应对这个问题，本质上是两个平行的问题。</p> 
<h2>三、局部的真理</h2> 
<p>本书一共分为五章，每章一个话题，每个话题之间层层递进，从“开启行为的改变”到"推动思维的变化"，从"发展关系中的自我"到"走出人生的瓶颈"，最后"绘制人生的地图"。前面的章节可以说是为了最后能够把自己的人生故事写好而做的必要准备。</p> 
<p>同时每一章都有多个小节，从提出问题，分析问题，到切实可行的解决方法，再到最后一小节"部分推翻"自己前面的论述。</p> 
<p>可供具体执行的方法是自我发展类书籍一个非常重要的检验标准，缺乏具体方法的书顶多只能称为"心灵鸡汤"，喝过就忘了。《人生十二法则》和《了不起的我》就都是可以付诸实践的好书。而且《了不起的我》还指出了一个非常棒的观点: <strong>知识只是局部的真理，包括本书。</strong></p> 
<p>我们知道物理学的发展过程就是在不断地发现新的知识，推翻自己，重建，再推翻自己的过程。心理学和脑神经科学在不同的维度分析我们人类的大脑的运作方式，可能会得出各种看似矛盾的答案。但是我觉得，追求知识的过程就是在这样的矛盾和推翻中不断地向前螺旋滚动。2019 年我遇到也解决了许多问题，在这个过程中，有局部的真理，也有被我后来推翻的真理。从自我认知到接纳自我，自己的人生地图只有自己可以画，自己的人生故事只有自己可以写。</p> 
<h2>四、一半新知，一半旧识</h2> 
<p>《了不起的我》一共 360 多页，阅读的过程中一半是学习新知识，一半是印证旧想法。但是在学习了这两本书之后，"这不就是xxx嘛"的自大想法不会再有了，毕竟"知道自己什么都不知道"，还是挺难的，要学习。</p> 
<p>自我发展需要空间，能够退后一步，给自己空间很不容易。所以不要指望看完本书就能成仙，要不然岂不是所有的和尚读完佛经就成得道高僧了。学习是一小步，改变是一小步，用一句烂俗的话讲：每天一小步，天天都有新高度。</p> 
<p>全书的前半部分解答了我最近的一些疑惑，也提供了我可以付诸实践的方法，所以读起来感同身受，非常受用。但是到了后半部分，关于转折期与人生各个阶段的阐述，我阅读起来则比较有距离感。每个人阅读时的背景与经历不同，想必读起来自有不同的领悟。</p> 
<p>总体来说，作为一个自我发展的心理学读物，行文平易近人，用词简单易懂，少专业术语，多实例举证，很容易为读者所接受。而书中所提出之理论，亦多辅以文献佐证，令人信服。书本末尾更带有全部引用的文献作者和书名，读者可自行查阅。</p> 
<p>我觉得这本书更像一本工具书，适合摆在书架上，遇到问题时回头来查阅一番，寻找焦虑出口的路标，让本就焦头烂额的生活稍微平顺一点。毕竟 "shit happens, but life goes on."</p> 
<p><em>2020/01/30 凌晨</em></p> 
<p><em>于自居</em></p> 
<h2>五、关于本书</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>标题: 了不起的我</li> 
 <li>副标题: 自我发展的心理学</li> 
 <li>作者: 陈海贤</li> 
 <li>出版社: 台海出版社</li> 
 <li>出版年: 2019-10-23</li> 
 <li>ISBN: 9787516824344</li> 
 <li>版本: 纸质书</li> 
</ul> 
<h2>六、参考资料</h2> 
<p>想阅读"枫影夜读"栏目旧文("每周读书")的读者朋友可<a href="https://justinyan.me/post/category/literature/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">点此直达</a>。</p> 
<ul> 
 <li><a href="https://book.douban.com/subject/34836531/">了不起的我 (豆瓣)</a></li> 
 <li><a href="https://justinyan.me/post/4196">枫影夜读 #1: Jordan Peterson《人生十二法则》</a></li> 
 <li><a href="https://justinyan.me/post/4208">Be a Tough Guy —— 枫言枫语播客 17 期</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 17 Be a Tough Guy</title>
        <link>https://justinyan.eth.limo/8E8F5EEF-670A-4765-A2C1-B84908CAA911/</link>
        <guid>https://justinyan.eth.limo/8E8F5EEF-670A-4765-A2C1-B84908CAA911/</guid>
        <pubDate>Fri, 10 Jan 2020 10:55:44 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/01/podcast_017.jpg" alt="Vol. 17 Be a Tough Guy " /></p> 
<ul> 
 <li>嘉宾: <a href="https://www.weibo.com/hzlzh">自力(@hzlzh)</a></li> 
 <li>主播: 枫影 Justin Yan <a href="https://twitter.com/MapleShadow">推特</a> | <a href="https://www.weibo.com/1858516552">微博</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>各位听众朋友大家好，时间过得真快，转眼来到 2020 年。</p> 
<p>2019 年本播客顺利播出了 6 期节目，从 6 月份的 WWDC 开始，录制了有 7, 8 期节目，但是因为“真·技术原因(音频问题)”只播出了 6 期。希望 2020 年能有一个好的开始，今年内至少要播出 12 期节目😂。</p> 
<p>最近我读了 Jordan Peterson 的 <em>12 Rules for Life</em> 这本书，中文版是 Steve 说的主播史秀雄翻译的，名为《人生十二法则》。前几天我也发了<a href="https://justinyan.me/post/4196">一篇博客</a>聊这本书。</p> 
<p>读书的时候觉得他写得特别好，于是推荐给了本节目的常驻嘉宾<a href="https://www.weibo.com/hzlzh">自力(@hzlzh)</a>。所以本期节目就是我们俩对这本书的一个读后的讨论。秉持着本节目灌水的态度，我们以心理学门外汉的视角，非常水的讨论了一番。</p> 
<p>如果大家想获得一个专业的分析的话可以去听译者史秀雄的播客《Steve 说》。</p> 
<p>《人生十二法则》提供了面对残酷且艰难的人生时，我们如何积极应对的一种思路。希望 2020 年大家都能成长为足够坚强的人，在这个其实非常残酷的世界里活出自己人生的意义。</p> 
<blockquote>
 <p> Life is Suffering.</p> 
 <p> Be a tough guy. </p>
</blockquote> 
<p><em>P.S.</em></p> 
<blockquote>
 <p> 我们都生活在阴沟里，但仍有人仰望星空。<br /> We are all in the gutter, but some of us are looking at the stars.<br /> —— 出自 奥斯卡·王尔德《温夫人的扇子》 </p>
</blockquote> 
<p><em>P.P.S 12 Rules for Life</em></p> 
<blockquote> 
 <ol> 
  <li>Stand up straight with your shoulders back</li> 
  <li>Treat yourself like someone you are responsible for helping</li> 
  <li>Make friends with people who want the best for you</li> 
  <li>Compare yourself to who you were yesterday, not to who someone else is today</li> 
  <li>Do not let your children do anything that makes you dislike them</li> 
  <li>Set your house in perfect order before you criticise the world</li> 
  <li>Pursue what is meaningful (not what is expedient)</li> 
  <li>Tell the truth – or, at least, don’t lie</li> 
  <li>Assume that the person you are listening to might know something you don’t</li> 
  <li>Be precise in your speech</li> 
  <li>Do not bother children when they are skateboarding</li> 
  <li>Pet a cat when you encounter one on the street</li> 
 </ol> 
</blockquote> 
<h2>相关信息</h2> 
<ul> 
 <li>自力的微博: <a href="https://www.weibo.com/hzlzh">@hzlzh</a></li> 
 <li>自力的 Twitter: <a href="https://twitter.com/hzlzh">@hzlzh</a></li> 
 <li>结尾曲: Taylor Swift - Starlight</li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li>题图来自: unsplash <a href="https://unsplash.com/@mikael_k">@mikael_k</a></li> 
</ul> 
<h3>节目收听方式</h3> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="https://music.163.com/#/djradio?id=792181476">网易云音乐 - 枫言枫语播客</a></li> 
 <li><a href="https://himalaya.com/en/show/856006">Himalaya</a></li> 
 <li><del>微信小程序: 枫言枫语播客</del> 微信小程序已下架</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #154 Jordan Peterson - &#x300A;&#x4EBA;&#x751F;&#x5341;&#x4E8C;&#x6CD5;&#x5219;&#x300B;(12 Rules for Life)</title>
        <link>https://justinyan.eth.limo/F4323CAC-1DA5-49FC-A725-63458B1544A9/</link>
        <guid>https://justinyan.eth.limo/F4323CAC-1DA5-49FC-A725-63458B1544A9/</guid>
        <pubDate>Mon, 06 Jan 2020 12:50:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/01/fengyingdushu_001_blog.jpg" alt="枫影读书 #1 —— Jordan Peterson 《人生十二法则》" /></p> 
<p>各位读者朋友大家好，转眼来到 2020 年，因为本人拖更成性，“每周读书”系列的“每周”早已名存实亡。所以想着 2020 年我们干脆开一个新系列好了。</p> 
<p>其实就算按照本系列更新的巅峰时期我都很难做到真的每个礼拜输出一篇文章。我的输出流程是，一读书，二作笔记，三才是输出文章，这些都需要不少时间。2019 年我的时间分配有了比较大的变化，客观上不足以维持每周的输出。</p> 
<p>当然阅读依然是件很棒的事情。2019 年我一共读完了 16 本书，其中也有些我觉得很有趣、很实用，想要分享给大家的书。所以既然做不到，就不再给自己设定“每周”的标题，就叫<del>大白话“枫影读书”吧</del> (已更名“枫影夜读”)，希望能够输出更多的分享给大家。</p> 
<h2>一、混乱与秩序</h2> 
<p>曾经我们在聊<a href="https://justinyan.me/post/3421">《后物欲时代的来临》</a>一书时提到过人生的意义可能并不是能够被“寻找到”的，而是需要由自己来“拼凑”和“定义”。不过那本书主要讨论的还是“外部”的，而不是“自身”的。我们每个人生活在这世上，一直在探索“自我”，有的人探索得比较快，比较深，有的人可能懵懵懂懂，一辈子也不太有“自我意识”，一直被来自外部的压力、要求、规范、约束驱动着往前跑。</p> 
<p>一个婴孩降生于世，他是空白的。成长的过程中需要不断地学习，在课堂练习加减乘除是学习，在社会被生活的车轱辘碾压过去是学习，对自我意识的探索也是学习。曾经我介绍自己的纸笔思维练习方法 FWP 时说过凡事都需要练习，不仅木匠铁匠运动员需要练习，对自我的探索，对思维方式的修正也需要练习。</p> 
<p>我们在成长过程中有一个阶段是“大人不希望小孩子看到不该看的东西”，这不仅是现在引起社会关注的“性教育”问题，更基础的我觉得是“大人普遍没有在教授社会的混乱与黑暗”给小孩子。不仅是东方文明，西方社会也普遍希望教授给小孩一个理想的世界，(改编后的)童话故事里的结局大都是美好的，但是现实却并不如此。小孩子不在课堂里学会现实世界的真实样貌，他就得在面对社会的车轱辘时受到更大的冲击和挫折。</p> 
<p>前阵子有一个纪录片挺火的，叫做《美国工厂》(American Factory)。我留意到镜头中那些工作在福耀玻璃美国工厂里的美国本地员工们，他们抱怨工资太低，工作时间太长的委屈与无力的表情，像极了初入社会无法接受理想与现实之间巨大落差的年轻人们。</p> 
<p>我想这是两方面的问题造成的，一则外部世界并不如想象的那样美好，这个世界本质上是黑暗与残酷的，人生是痛苦且艰难的。在物质丰富，生活稳定的年代成长的孩子，容易产生这个世界很美好，所有的事物都应该像童话般美丽一样的错觉。比如说发达国家美国，比如说出生在摆脱了饥饿、战争等基本生存困境的今天的孩子们。</p> 
<p>另一方面，当外部世界不如预期的时候，从我们自身的角度，我们感受到的是混乱，而我们期望的是秩序。</p> 
<p>地球诞生至今大约有 45.4 亿年，历史上有过五次极大规模的生物大灭绝，距离我们最近的一次是白垩纪﹣古近纪灭绝事件，也就是我们熟悉的恐龙大灭绝，距今六千五百万年。而智人出现只有几十万年，人类文明有记载的也不过几千年。人类的寿命与这巨大的时间尺度比起来九牛一毛，甚至直到几十年前，全世界的人类还在因为饥饿问题而烦恼，二战距今也才 75 年。这个世界的历史几乎全部主题都是苦难，这才是世界本来的面目。我们的祖先从树上跑到草原，进化出双腿直立行走，能够活到今天是因为智人能够适应环境，能够在自然选择中占到优势生存下来。生存，才是这个世界的主要命题，既不是理想，也不是童话，更不是改变世界。</p> 
<p>当然我这里并不是说理想与改变世界不好，这些品质依然是人类所需要的，否则人类历史就没有办法往前进步了。但是我想说的是，想要改变世界是需要付出代价的，如果一心想要用理想来应对现实，没问题，请承担你的代价，而不是一边抱怨这个世界太糟糕，一边又逃避自己应该为此而付出的代价。</p> 
<p>说到底，这个世界的本质是痛苦，是混乱。人类通过通过改变自己，适应世界，达成某种程度的秩序。可以说没有混乱就没有秩序，没有秩序就没有历史的发展，如道家的太极，黑为混乱，白为秩序，人生的意义就是一只脚踩在混乱中，一只脚踩在秩序上，在黑白之间的曲线上弯曲前行。</p> 
<p>而这就是我所理解的，来自多伦多大学的心理学教授 Jordan Peterson 所著的 <em>12 Rules for Life</em> （中文版译为《人生十二法则》）的基础，在混乱与秩序中交替前行。</p> 
<h2>二、解决混乱的灵药</h2> 
<p>人类是动物的一种，动物有情绪，人类也有情绪，我们会愤怒，会开心，会哀伤，会哭泣。在大脑的进化中，这些情绪反应是由比较古老的部分所控制的，而现代人所推崇的所谓“理性”则是由后来发展出来的部分控制。所以当我们面对突发事情的时候，我们会脸红，会愤怒，所谓眼神会出卖你。</p> 
<p>通常大家都说要克制，要压抑自己的情绪，男儿有泪不轻弹之类云云。但其实 2019 年我学到非常有用的一句话是：</p> 
<blockquote>
 <p> 当你出现情绪的时候，就是你进行自我分析的最佳时机。 </p>
</blockquote> 
<p>情绪并不可怕，情绪并不需要被“压抑”，情绪是因为我们遇到“不符合预期”的事情时，旧脑非常快速的反应，也是我们可以了解自己的最佳时机。只是通常我们任由自己的情绪去直接应对突发事件的时候，都得不到一个好的结果，所以从表象上看似乎我们只要压抑了自己的情绪就好了。但其实不是的，<strong>能够从容面对各种状况的人往往不是他能够克制，而是因为他拥有解决一切问题的能力，所以他能够很自信地应对这些状况。</strong></p> 
<p>所以每一次情绪出现的时候，我当下或者事后都会好好分析自己，看看自己是什么地方没有自信，或者什么地方没做好，没能给这个问题一个解决方案。而不是说告诉自己下一次一定要压抑住，历史的经验告诉我，这是完全没用的。</p> 
<p>当然要做到这点，前提是必须有一定的自我意识，能够从一个剥离的角度回顾自己，这里涉及“自我意识”的训练，可以参考这本书的翻译者——"Steve说播客"的主播史秀雄——曾经介绍的“个人成长史”的练习(这个练习方法也是史秀雄在加拿大留学期间，Jordan Peterson 布置给他们的大作业)。根据我的观察，生活中还有很多人没办法从自己的驱壳中跳出来观察自己，这样他的一切情绪反应都只是本能与旧脑的应激反应，没有办法从中自省与改变，也就无法成长。所以“自我意识”是这一切的基础，我以为 Jordan Peterson 没有在这本书中提到这个前提，故在此一提。</p> 
<p>这本书还有个副标题：An Antidote to Chaos，中文翻译为解决混乱的灵药。前面我们分析了遇到“不符合预期”的事情时我们会觉得遇到了“混乱”。这本书的副标题大概是想让读者读完之后能够掌握应对“混乱”的解决方案，从而可以自信从容地，把突发事件消于无形之中。</p> 
<p>书里提到的十二条法则涵盖了人生的多个方面。现年 58 岁(1962 年生)的 Jordan Peterson，无论是学术上的成就还是人生阅历，完全有资格给年轻人建议。他也经常在 Quora 上面回答问题，这 12 条法则就是他给问题 "What are the most valuable things everyone should know?" 的回答。</p> 
<h2>三、人生十二法则</h2> 
<p>这十二条法则如下：</p> 
<ol> 
 <li>Stand up straight with your shoulders back</li> 
 <li>Treat yourself like someone you are responsible for helping</li> 
 <li>Make friends with people who want the best for you</li> 
 <li>Compare yourself to who you were yesterday, not to who someone else is today</li> 
 <li>Do not let your children do anything that makes you dislike them</li> 
 <li>Set your house in perfect order before you criticise the world</li> 
 <li>Pursue what is meaningful (not what is expedient)</li> 
 <li>Tell the truth – or, at least, don't lie</li> 
 <li>Assume that the person you are listening to might know something you don't</li> 
 <li>Be precise in your speech</li> 
 <li>Do not bother children when they are skateboarding</li> 
 <li>Pet a cat when you encounter one on the street</li> 
</ol> 
<p>单看这十二句话应该是云里雾里不知所云的，作者每一个法则都用完整的一章来解释，内容详实，极具深度，有些观点也颇为新颖，当然有些例子和观点跟美国文化相关度较高，我自己阅读的过程中有时候代入感不会很强，但是总体读下来，全书的质量还是很高的，是一本发人深省的好书。</p> 
<p>比如第一条法则："Stand up straight with your shoulders back"，中文译为:"获胜的龙虾从不低头：笔直站立，昂首挺胸"。前半句是译者自己根据章节内容加的，后半句是直译。</p> 
<p>这一章主要讲的是龙虾(Lobster)的故事。相比起人类的大脑，龙虾的神经系统要简单得多，所以科学家可以根据龙虾的行为和神经系统的反应，相对准确地解释二者的关系。研究这种简单的系统有助于科学家们更加复杂的系统，比如我们的大脑。</p> 
<p>龙虾是一种生活在海床上的动物，成年的龙虾每年都会脱壳一两次，脱壳的时候就会变得很脆弱，所以它需要寻找一个合适的地方，既能有足够的食物，又能保护自己免受天敌或者其他威胁的伤害。</p> 
<p>这样的地方当然很多龙虾都想去，那当两只龙虾遇到一起的时候，他们就有可能要互相攻击，抢夺地盘。但是如果说每一次遇到其他龙虾他们都要打一架的话，那这个伤亡的代价就太惨重了，如果实力悬殊那获胜的一方可能可以全身而退，但是如果实力相当，可能结果非死即伤，胜利的一方以后面对其他龙虾也会处于弱势。</p> 
<p>所以龙虾群体就演化出一种能够更好地生存下去的方法，就是斗争升级机制。第一阶段，两只龙虾会互相张牙舞爪，同时用眼睛下方的喷嘴向对方喷射液体，就跟吐口水似的。如果双方大小差异很大，弱的一方可以从对方的钳子大小以及喷射出的液体的信息知道对方比自己强壮很多，然后落荒而逃。</p> 
<p>如果这一阶段势均力敌，那就进入第二阶段：双方拼命抽打触须，钳子向下收起，一只前进，一只后退，然后轮到对方前进，另一只后退。这么来回几次，看看有没有人觉得自己不够打先逃。</p> 
<p>如果还不逃，那就继续第三阶段：真正开打了。这一阶段有点像摔跤，双方伸出钳子要把对方掀翻，先被掀翻的一方通常会承认对手厉害，然后逃走。</p> 
<p>但是如果都无法掀翻对方，或者说输了的那一方不服输，那么就是最后阶段，真刀真枪地，用钳子夹住对方的腿、触须、眼镜等软弱的部位，斗个你死我活。通常这种情况无论胜负，不管生死，双方都会受到很大的打击，从而在以后的战斗中很可能处于劣势，这也是龙虾们极力想要避免的局面。</p> 
<p>在斗争当中，战败的那只龙虾，无论它之前有多厉害，接下来的时间里他都会完全没有斗志，垂头丧气，信心全无。如果说这只龙虾之前还是在某片海域里占有统治地位的大龙虾，他的大脑甚至会彻底重构，以便适应他新的“卑微”的身份，否则他无法承受从“君王”降为“草民”的打击。像是从事业巅峰被打击到谷底的人类一样，也会有类似的情感转变。</p> 
<p>科学家就从龙虾的研究中发现了他们的神经元通信传递的化学递质——<strong>血清素和章鱼胺</strong>。血清素高、章鱼胺低的龙虾往往会变得趾高气昂，斗志满满，反之则垂头丧气，毫无战意。实际上血清素也被用于治疗人类的抑郁症。</p> 
<p>Jordan Peterson 在 YouTube 也有一个 Channel，专门放他的 TED，公开课之类的演讲视频，龙虾故事也是他非常受欢迎的一个，所以国内也有人叫他“龙虾教授”。他讲龙虾的故事主要是想带出一个非常重要的知识点：<strong>就是统治地位并不来自于人类文化，而是根植于大脑的</strong>。</p> 
<p>过去我们往往认为人类世界的统治阶级是文化的产物，但是通过龙虾的研究我们发现，其实在动物界这些“统治地位”的例子比比皆是，龙虾是一种，猩猩也是。说明这种等级制度基本上动物世界运行的基础，是这个世界的规则之一，只不过在人类社会，这种等级的划分往往包含了多个维度。一个学生在中国学校里，通常是以成绩论高低，当然家境、样貌、运动能力等都对一个人的综合水平有影响，但是一直以来“分数”才是中国学校里的“正统评价”。这种正统评价其实是非常单一的，所以当一个学生离开学校开始工作了之后，就会突然发现这种单一的评价标准不再管用了。</p> 
<p>当然人们又选择了另一个大多数人都认同的单一评价标准：财富。权力、能力、职位等等往往都与财富成正比例关系，所以当财富能够正确反映一个人的综合能力水平时，倒不失为一个不错的衡量标准。可惜的是，学校里的“分数”能够大致反应一个人的智力水平，而社会上公认的“财富”却可以由很多个维度共同决定，这中间当然也包括运气。</p> 
<p>于是你就会发现，在不同的组织里，通常会有不同的等级制度，不同的游戏规则。在规则下把游戏玩得好的人就是赢家，跟动物世界的赢家通吃一样，人类社会也是赢家通吃。金字塔顶端 1% 的人掌握的财富跟 50% 的底层人民掌握的财富一样多。</p> 
<p>但是今天没有把规则玩好并不代表一直玩不好，而且人类世界各种大大小小的组织非常多，如果留意观察就会发现，每一个稍微有点规模的组织都在构建自己的等级制度和游戏规则。每个人都有自己擅长的事情和不擅长的事情，在一个维度上不如别人做得好并不代表自己什么都做不好。这时候如果陷入战败龙虾的状态，就应该意识到是血清素和章鱼胺在作祟。</p> 
<p>只要你笔挺站立，昂首挺胸(Stand up straight with your shoulders back)，其他龙虾看到你就会觉得，哇塞，这是一只常胜龙虾诶。从而给自己带来一个良性循环，而不是任由战败情绪作祟，反而陷入恶性循环，掉进穷人陷阱，再也出不来。</p> 
<p>这话说起来简单，做起来很难。通常战败的人会告诉自己“我没得选择”，从而获得一种“受害者的安慰”。因为这是最简单，最不费力，最容易接受的一种战败者状态。如果你想要从战败者状态站起来，首先你得自省，得有自我意识，得知道“哦，原来我自己受到了血清素的影响”，然后你得有勇气，得有面对困难挑战极限的勇气。一只脚踩在黑色的混乱，另一只脚踏上白色的秩序，这样你的人生才能在黑白交替中拼凑出意义的地图，而不是浑浑噩噩，自己也不知道自己为什么要活在这个世界上。</p> 
<p>这本书讲了很多内容，而且都很深刻，龙虾一章从分析龙虾的神经系统与生理基础，讲到陷入焦虑、脆弱、抑郁的原因和陷阱，再然后告诉读者朋友如何能够走出失败者模式。我觉得 Jordan Peterson 讲的东西是非常具有启发性和实践意义的，但是阅读起来需要有自我意识前提，并且有些分析相对学术，有一定门槛，当然比起学术论文还是通俗得多。</p> 
<p>在后面的章节里 Jordan Peterson 还分析了自己如何跟自己和解，好好照顾自己，分析了如何放弃损友，分析了如何让自己不要跟别人比较，而是跟昨天的自己比较等非常具有积极人生意义的话题。</p> 
<p>我觉得读起来获益良多。虽然在玩滑板的例子、养狗养猫的例子、以及教育小孩的例子上我没有办法感同身受，但是很多道理在生活中曾经懵懵懂懂一知半解，读书的过程就像一盏灯突然照亮了这些模糊的地方，印证了自己的想法。</p> 
<p>我在阅读 Jordan Peterson 的这十二条法则的时候常常映照自己的生活实践来理解，往往会有额外的收获，这些收获并不一定直接来自于这本书，我对于这些法则的理解也是非常主观的个人理解。希望各位读者朋友在阅读这本书的时候，也能收获属于自己的理解。</p> 
<p>希望所有人都能昂首挺胸，做一只获胜的龙虾。</p> 
<p><em>2020.01.05/下午</em></p> 
<p><em>于自居</em></p> 
<h2>四、关于翻译</h2> 
<p>我购买了本书的英文版和中文版，皆为 Kindle 版本。英文版是 Random House Canada 在 2018 年 1 月出版的，ASIN 为 B0797Y87JC。中文版为史秀雄翻译的《人生十二法则》，由浙江人民出版社于 2019 年 11 月 1 日出版。史秀雄老师在加拿大留学的时候曾经上过 Jordan Peterson 的课，我在听他的播客时曾经听他提起过这本书，所以英文版很早就买了但是一直没读。最近听史秀雄的播客才知道原来他翻译了这本书并且已经开售了，于是完整地读完了中文版，翻译质量很好，非常流畅。</p> 
<p>英文原版并不算很难读，但是专门名词有点多，而且 Jordan Peterson 写书有点跳跃，比如第一章开头才刚讲了龙虾几句立刻就跳到鸟类关于领地之争去了。像是这句:</p> 
<blockquote>
 <p> High serotonin/low octopamine characterizes the victor. The opposite neurochemical configuration, a high ratio of octopamine to serotonin, produces a defeated-looking, scrunched-up, inhibited, drooping, skulking sort of lobster, very likely to hang around street corners, and to vanish at the first hint of trouble. </p>
</blockquote> 
<p>专有名词和非常长的句子对我这种英文水平一般的读者来说确实是一种挑战。所以如果只是想了解 Jordan Peterson 的十二法则的核心，那么阅读中文版是足够的。</p> 
<p>不过中文版对于这十二法则的翻译，基本都在前面加了半句译者对章节内容的总结，并非法则原文。除了我们上面提到的第一条法则的翻译之外，第三条是:</p> 
<blockquote>
 <p> Make friends with people who want the best for you. </p>
</blockquote> 
<p>翻译为:</p> 
<blockquote>
 <p> 放弃损友：与真心希望你好的人做朋友 </p>
</blockquote> 
<p>后面是直译，前半句则是总结。我觉得如果不太细心的读者可能会误以为原文就是整句，如果能说明一下更好。(译者曰此半句为编辑所加，我觉得很能理解😂)</p> 
<p>另外中文版每个章节前面都会截取一小段原文和翻译，这个英文版也是没有的，比如第一条龙虾法则，中文版截取了一小段:</p> 
<blockquote>
 <p> ATTEND CAREFULLY TO YOUR POSTURE. QUIT DROOPING AND HUNCHING AROUND. SPEAK YOUR MIND. PUT YOUR DESIRES FORWARD, AS IF YOU HAD A RIGHT TO THEM-AT LEAST THE SAME RIGHT AS OTHERS.<br /> 谨慎对待你的体态，别再低头徘徊。<br /> 说你所想，追你所求，<br /> 这是你和他人同样拥有的权利。 </p>
</blockquote> 
<p>这是中英文的一点差异，但是总的来说中文版翻译的很好，值得推荐。</p> 
<h2>五、关于本作</h2> 
<ul> 
 <li>我的评分: ⭐️⭐️⭐️⭐️(4/5)</li> 
 <li>书名: 人生十二法则(12 Rules for Life)</li> 
 <li>作者: 乔丹·彼得森(Jordan Peterson)</li> 
 <li>译者: 史秀雄</li> 
 <li>出版社: 浙江人民出版社; 第1版 (2019年11月1日)</li> 
 <li>ASIN: B08133KS2K</li> 
 <li>版本: Kindle电子书</li> 
</ul> 
<h2>六、参考资料</h2> 
<p>想阅读本栏目旧文("每周读书")的读者朋友可<a href="https://justinyan.me/post/category/literature/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">点此直达</a>。</p> 
<ul> 
 <li><a href="https://book.douban.com/subject/34870933/">人生十二法则 (豆瓣)</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Jordan_Peterson">Jordan Peterson - Wikipedia</a></li> 
 <li><a href="https://www.weibo.com/thesteveshi?is_all=1">史秀雄Steve的微博_微博</a></li> 
 <li><a href="https://www.ximalaya.com/jiaoyu/3385682/">Steve说在线收听<em>教育</em>喜马拉雅FM</a></li> 
 <li><a href="https://unsplash.com/@impatrickt">封面来自 Unsplash.com @impatrickt</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E3A;&#x4EC0;&#x4E48; arm64e &#x7684;&#x6307;&#x9488;&#x5730;&#x5740;&#x6709;&#x7A7A;&#x4F59;&#x652F;&#x6301; PAC&#xFF1F;</title>
        <link>https://justinyan.eth.limo/32C8E08D-9E1C-4C2F-9213-C091A3690B42/</link>
        <guid>https://justinyan.eth.limo/32C8E08D-9E1C-4C2F-9213-C091A3690B42/</guid>
        <pubDate>Sun, 17 Nov 2019 19:34:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/arm64e_pac_cover.jpeg" alt="为什么 arm64e 的指针地址有空余支持 PAC？" /></p> 
<h2>一、PAC</h2> 
<p>前两天同事提到苹果<a href="https://developer.apple.com/documentation/security/preparing_your_app_to_work_with_pointer_authentication">去年发布的 A12 芯片支持 arm64e 指令集，提供了指令地址加密功能</a>。说是虽然系统是 64 位的，但是 <code>arm64</code> 指令地址根本用不满，所以把高位的部分(upper bits)拿来存一个指针地址签名。</p> 
<p>当时我就很好奇，现在 <code>arm64</code> 的内存指针都是 64 位的，为啥会用不满？于是我学习了一下 ARMv8.3 新增的 PAC 功能。</p> 
<p>首先我们来看看 PAC 是啥。PAC 是 Pointer Authentication Code 的缩写，字面意思翻译就是指针验证码。在 CPU 执行指令前的时候先拿指针的高位签名跟低位的实际地址部分做一下校验，如果失败了就直接抛出异常，从而防止指令地址被篡改。</p> 
<pre><code>Exception Subtype: KERN_INVALID_ADDRESS at 0x0040000105394398 -&gt; 0x0000000105394398 (possible pointer authentication failure)
</code></pre> 
<p>为了实现这个 PAC 功能，<code>arm64e</code> 新增了两个指令：</p> 
<ul> 
 <li><code>PACIASP</code> 计算 PAC 加密并加到指针地址上</li> 
 <li><code>AUTIASP</code> 校验加密部分，并还原指针地址</li> 
</ul> 
<h2>二、PAC 应用举例</h2> 
<p>并不是所有的指针都需要 PAC 保护。<a href="https://www.qualcomm.com/media/documents/files/whitepaper-pointer-authentication-on-armv8-3.pdf">高通的 ARMv8.3</a>文档给这项新技术举了个例子:</p> 
<table> 
 <thead> 
  <tr> 
   <th>行为</th> 
   <th>没有栈保护</th> 
   <th>使用 PAC</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>函数入栈(入口)</td> 
   <td>SUB sp, sp, #0x40<br />STP x29, x30, [sp,#0x30]<br />ADD x29, sp, #0x30<br />…</td> 
   <td><strong>PACIASP</strong><br />SUB sp, sp, #0x40<br />STP x29, x30, [sp,#0x30]<br />ADD x29, sp, #0x30<br />…</td> 
  </tr> 
  <tr> 
   <td>函数出栈(返回)</td> 
   <td>...<br />LDP x29,x30,[sp,#0x30]<br />ADD sp,sp,#0x40<br />RET</td> 
   <td>...<br />LDP x29,x30,[sp,#0x30]<br />ADD sp,sp,#0x40<br /><strong>AUTIASP</strong><br />RET</td> 
  </tr> 
 </tbody> 
</table> 
<p>把函数返回地址加密，用于对抗缓冲区溢出攻击(buffer-overflow vulner-ability)。</p> 
<p><img decoding="async" src="https://www.coengoedegebure.com/content/images/2018/04/ram-1.png" alt="" /></p> 
<p>简单介绍一下缓冲区溢出攻击，上图是一个 App 在内存时的布局(memory layout)，在这个 case 中，我们只关注其中的 <code>stack</code> 和 <code>heap</code>。</p> 
<p><code>heap</code> 也就是堆，堆会往上长，<code>stack</code> 也就是栈，往下长。这项攻击利用的就是 stack 的缓冲区增长过程中的漏洞。</p> 
<p><img decoding="async" src="https://www.coengoedegebure.com/content/images/2018/08/stackbuffer.png" alt="" /></p> 
<p>一个函数被调用的时候需要在 <code>stack</code> 上入栈很多东西，从内存高位开始，参数名，函数的返回地址，接下来是函数内部要执行的指令。这样当指令执行完就一个个出栈，到了函数返回地址 CPU 就知道该往哪里去了。</p> 
<p><img decoding="async" src="https://www.coengoedegebure.com/content/images/2018/08/memoryoverflow-1.png" alt="" /></p> 
<p>可以看到栈底的东西是用来控制 CPU 指令往哪里跳的，而我们代码里分配的 buffer 跟它连在一起。关键点在于 buffer 的填充方向是从低位往高位去的。如果我们先分配一小块 buffer，然后往里面写一段超出 buffer 长度的数据，我们就能直接改变栈顶的数据，比如我们的目标：<code>return address</code>。</p> 
<p><a href="https://www.coengoedegebure.com/buffer-overflow-attacks-explained/">雪城大学有一个教程</a>教你怎么利用 <code>fwrite</code> 写一段超过 buffer 长度的数据，然后把准备好的调起 <code>shell</code> 的函数入口塞进去替换到原先的函数返回地址，这样 CPU 执行完写 buffer 指令后就拿到该函数地址，直接出栈打开了 <code>/bin/bash</code>。</p> 
<p>我们的程序是由内核运行在用户空间的，默认没有 <code>root</code> 权限。但是当内核执行我们修改过的返回地址打开 <code>/bin/bash</code> 的时候，就是以内核权限打开的。这时候我们就获得了一个有 <code>root</code> 权限的 <code>shell</code>，接下来想干啥就可以干啥了。</p> 
<p>有了 PAC 之后，我们编译的 App 就可以带上这个保护，遇到这种篡改过的地址就直接抛出异常。当然这个例子里的攻击很简单，操作系统早就有了多种防范手段，这里只是举一个 PAC 应用的例子。而 PAC 是在 CPU 指令层面加入的保护，理论上只是多耗了一个 CPU 周期而已，性能应该要比在软件层面的保护高得多。</p> 
<h2>三、为什么 arm64 的指针地址没有用满 64 位？</h2> 
<p>PAC 介绍完了，接下来我们来看看为什么指针地址用不满，还剩一半可以直接用来存 PAC 签名？</p> 
<p>翻了<a href="https://developer.apple.com/documentation/security/preparing_your_app_to_work_with_pointer_authentication">苹果的文档</a>，<a href="https://www.qualcomm.com/media/documents/files/whitepaper-pointer-authentication-on-armv8-3.pdf">高通的文档</a>都只是轻描淡写地说利用没有用到的高位。</p> 
<p>于是我们开脑洞想是不是一个 Mach-O 文件的 <code>(__TEXT,__text)</code> 段(机器码段)最大不能超过 4GB (一个 32 位指针的最大地址)，又或者是整个操作系统能够跑起来的所有进程加起来不能超过 4GB 之类的。</p> 
<p>但是其实 <code>__text</code> 段里的数据全都是只读的，内核随时可以换出(page out)，需要的时候再换入(page in)，如果忽略 <code>vm_pressure</code> 的话，理论上应该只要它不要超过虚拟内存大小就行（不可能有人写那么大的代码的）。最后推断其实现在的 App 根本用不了那么多的地址空间。因为用不了那么多，所以才可以利用起高位。</p> 
<p>不过这些脑洞都没有道理，其实正确答案是: <strong>系统虚拟内存的寻址设计根本不需要用满 64 位指针。</strong></p> 
<p>我们看 <a href="https://lwn.net/Articles/718895/">AARch64 Linux 的虚拟内存分级设计</a>。一个内存页大小为 <code>4KB</code>，整个虚拟内存被划分为 3 级或 4 级(level)，下面我们以 3 级为例。</p> 
<pre><code>Start           End         Size        Use
-----------------------------------------------------------------------
0000000000000000    0000007fffffffff     512GB      user
ffffff8000000000    ffffffffffffffff     512GB      kernel
</code></pre> 
<p>用户空间的地址把 <code>63:48</code> 位都置为 <code>0</code>，内核空间则都置为 <code>1</code>。</p> 
<pre><code>Translation table lookup with 4KB pages:
</code><p><code>+--------+--------+--------+--------+--------+--------+--------+--------+<br /> |63 56|55 48|47 40|39 32|31 24|23 16|15 8|7 0|<br /> +--------+--------+--------+--------+--------+--------+--------+--------+<br /> | | | | | |<br /> | | | | | v<br /> | | | | | [11:0] in-page offset<br /> | | | | +-&gt; [20:12] L3 index<br /> | | | +-----------&gt; [29:21] L2 index<br /> | | +---------------------&gt; [38:30] L1 index<br /> | +-------------------------------&gt; [47:39] L0 index<br /> +-------------------------------------------------&gt; [63] TTBR0/1<br /> </code></p></pre>
<p></p> 
<p>这样只需要 <code>L1</code> + <code>L2</code> + <code>L3</code> + <code>in-page offset</code> 就能定位到一个虚拟内存地址。在 <code>AARch64 Linux</code> 的设计里，一个用户空间的内存指针其实只需要用到 <code>0:47</code> 一共 48 位，剩下的就都是没用到的了(是不是回想起大学时计算机课的内容了😂)。</p> 
<p>那么 PAC 引入之后剩下的位是怎么利用的呢？参考高通的<a href="(https://www.qualcomm.com/media/documents/files/whitepaper-pointer-authentication-on-armv8-3.pdf)">这份文档</a>，分为两种情况:</p> 
<ul> 
 <li>指针有标记位 <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/arm64e_pac_with_tag-squashed.jpg" alt="PAC with pointer tagging" /></p> <p>有标记位的情况下因为高位部分可能已经被用来存储额外的指针标记了，所以只用了 <code>48:54</code> 一共 7 位来存储。</p> </li> 
 <li> <p>指针没有标记位</p> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/arm64e_pac_without_tag-squashed.jpg" alt="PAC without pointer tagging" /></p> <p>没有标记位的情况就往 <code>63:56</code> 写入 8 位，往 <code>48:54</code> 写入 7 位，一共用了 15 位。</p> </li> 
</ul> 
<p><a href="https://en.wikipedia.org/wiki/Tagged_pointer">Tagged pointer</a>其实用法很多，本质上跟 PAC 的原理是一样的，都是利用了指针的剩余无效空间。比如<a href="https://www.mikeash.com/pyblog/friday-qa-2012-07-27-lets-build-tagged-pointers.html">苹果在 iOS 7 引入的 <code>NSTaggedPointer</code></a>，利用指针的剩余空间来存数据的值。比如一个 <code>NSString</code> 如果内容很短，就可以利用指针剩余的 bits 把内容存起来，不需要另外开辟一个内存空间。</p> 
<p>高通的文档里如果用上了 15 位那可能剩下的空间就不够 <code>NSTaggedPointer</code> 发挥了，所以如果要对这类指针用 PAC 就只能用 7 位签名。当然一般这些数据应该不需要保护就是了。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://developer.apple.com/documentation/security/preparing_your_app_to_work_with_pointer_authentication">Preparing Your App to Work with Pointer Authentication | Apple Developer Documentation</a></li> 
 <li><a href="https://www.qualcomm.com/media/documents/files/whitepaper-pointer-authentication-on-armv8-3.pdf">Pointer Authentication on ARMv8.3 - Qualcomm https://www.qualcomm.com › media › documents › files › whitepaper-poi...</a></li> 
 <li><a href="https://zhuanlan.zhihu.com/p/32473371">什么是缓冲区溢出攻击？ - 知乎</a></li> 
 <li><a href="http://www.cis.syr.edu/~wedu/seed/Labs/Vulnerability/Buffer_Overflow/Buffer_Overflow.pdf">Buffer Overflow Vulnerability Lab - Computer and Information ... www.cis.syr.edu › ~wedu › seed › Labs › Vulnerability › Buffer_Overflow</a></li> 
 <li><a href="https://www.coengoedegebure.com/buffer-overflow-attacks-explained/">Buffer overflow attacks explained</a></li> 
 <li><a href="https://lwn.net/Articles/718895/">Documentation/arm64/memory.txt (v4.11) [LWN.net]</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Tagged_pointer">Tagged pointer - Wikipedia</a></li> 
 <li><a href="https://www.mikeash.com/pyblog/friday-qa-2012-07-27-lets-build-tagged-pointers.html">mikeash.com: Friday Q&amp;A 2012-07-27: Let's Build Tagged Pointers</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x4F55;&#x8BA1;&#x7B97;&#x4E00;&#x4E2A; Symbol &#x5728; Mach-O &#x91CC;&#x5360;&#x7528;&#x4E86;&#x591A;&#x5C11;&#x7A7A;&#x95F4;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/A6D16D60-36A3-4443-B778-4A6B5D0306A3/</link>
        <guid>https://justinyan.eth.limo/A6D16D60-36A3-4443-B778-4A6B5D0306A3/</guid>
        <pubDate>Sat, 16 Nov 2019 14:05:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/mach_o_cover.jpg" alt="如何计算一个 symbol 在 Mach-O 里占用了多少空间？" /></p> 
<p>因为推友<a href="(https://twitter.com/PofatTseng/status/1194890106290626561?s=20)">问了一个问题</a>:</p> 
<blockquote>
 <p> @PofatTseng: 發問：要怎麼測量 symbol 在 MachO 裡佔據的大小，如果只看 __Text.__text 後 + 的偏移量準嗎？</p> 
 <p> @MapleShadow: @PofatTseng 看 Load Command 的 LC_SYMTAB 能满足你的场景吗？like</p> 
 <p> otool -l xxxx | grep -i LC_SYMTAB -B 10 -A 10</p> 
 <p> @PofatTseng: @MapleShadow 我想問的是單一個物件的相關 symbol ，比如我有一個 struct Foo {}</p> 
 <p> 怎麼知道他在 MachO 裡佔去了多少空間？Foo 所有symbol 會在連續的位置上嗎</p> 
 <p> @MapleShadow: @PofatTseng 这个问题是个好问题，本来以为是一个简单的问题但是一点都不简单😂简单说通常情况下我们 App 的符号都被 strip 掉放进 dSYM 所以不占 Mach-O 空间，但是如果你是 debug 版或者动态库就会塞进去。至于长度，symbole table 的指针都是 8 字节(updated: 其实是 16 bytes)，但是指向的符号 string 不是定长的，在 string table 里面取 </p>
</blockquote> 
<p>我本以为是一个简单的问题，结果发现自己对 Mach-O 的很多细节都不太了解，于是学习了一下，以此文作为学习笔记。</p> 
<p>如果只对上述问题的答案感兴趣的可以直接跳到末尾看结论。</p> 
<p><em>P.S. 学习过程我参考了<a href="https://github.com/aidansteele/osx-abi-macho-file-format-reference">这篇文章</a>但是因为年代有点久远，里面有些字段已经弃用了，当做字典参考就行。</em></p> 
<h2>1. Mach-O 文件的结构</h2> 
<p>我们在 <a href="https://justinyan.me/post/3993">macOS 系统如何启动？</a>和 <a href="https://justinyan.me/post/4057">App 如何运行起来</a>均有涉及 Mach-O 文件结构的讨论，但不全面。这里我们再详细介绍一下 Mach-O 的结构。下文使用的例子需要对比 Debug 和 Release 版，所以用我的 Mac 全屏休息提醒工具: <a href="https://www.getjustfocus.com/">Just Focus</a> 为例。</p> 
<p>首先我们来看最简单的 64 位单架构 Mach-O 文件(Fat Binary 后面再讨论)，相关的数据结构定义在 XNU 源码的 <code>EXTERNAL_HEADERS/mach-o/loader.h</code> 里面。一个 Mach-O 文件有三个主要部分:</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/mach_o_format.png" alt="Mach-O Structure" /></p> 
<ul> 
 <li>Header: 定义了文件的基础信息</li> 
 <li>Load Commands: 包含了各种不同的 load command，用于决定文件在内存的初始布局，用于告知 <code>dyld</code> 动态链接的符号表，标示初始函数入口，标示动态库的地址等等。</li> 
 <li>Data: 这一部分被分为多个 <code>segment</code>，每个 <code>segment</code> 包含 0 个或多个 <code>section</code>。内核加载 Mach-O 时会根据 load commands 把相应的数据加载到内存里，根据 <code>XNU</code> 的注释，分 <code>segment</code> 是为了做数据对齐(segment alignment)以优化换页效率，下文分析 <code>section</code> 结构体时会讲到。</li> 
</ul> 
<h2>1.1 Header 部分</h2> 
<p>Header 是定长的，在 64 位 Mach-O 中表现为 <code>mach_header_64</code> 结构体。</p> 
<pre><code>struct mach_header_64 {
    uint32_t    magic;      /* mach magic number identifier */
    cpu_type_t  cputype;    /* cpu specifier */
    cpu_subtype_t   cpusubtype; /* machine specifier */
    uint32_t    filetype;   /* type of file */
    uint32_t    ncmds;      /* number of load commands */
    uint32_t    sizeofcmds; /* the size of all the load commands */
    uint32_t    flags;      /* flags */
    uint32_t    reserved;   /* reserved */
};
</code></pre> 
<ul> 
 <li><code>magic</code>: 大小端兼容性之用，<code>MH_MAGIC_64</code> 就是编译的文件和系统是同样的 byte order，<code>MH_CIGAM_64</code> 则是反过来。原因是曾经兼容 <code>PPC</code> 和 <code>Intel</code> 等多种 CPU，有兴趣的同学可以阅读: <a href="https://justinyan.me/post/4078">macOS 内核之 OS X 系统的起源</a>。</li> 
 <li><code>cputype</code>: CPU 类型定义，<code>CPU_TYPE_POWERPC</code> 用于 <code>PowerPC</code> CPU，<code>CPU_TYPE_I386</code> 就是 <code>Intel</code> 的 <code>x86</code>，当然还有 iPhone 的 <code>CPU_TYPE_ARM</code>。</li> 
 <li><code>cpusubtype</code>: 属于 <code>cputype</code> 的细分，比如 <code>i386</code> 全部支持 <code>CPU_SUBTYPE_I386_ALL</code>，或者只支持 <code>armv7</code> 的 <code>CPU_SUBTYPE_ARM_V7</code>。</li> 
 <li><code>filetype</code>: 文件类型，决定了这个 Mach-O 文件的布局，定义从 <code>MH_OBJECT 0x1</code> 到 <code>MH_DSYM 0xa</code>。 
  <ul> 
   <li><code>MH_OBJECT</code>: 编译过程产生的中间文件，这个文件比较特殊，其他文件分了多个 <code>segment</code> 和 <code>section</code> 但是这家伙只有一个 <code>segment</code>，把所有的 <code>section</code> 都塞进去。这个中间文件可以在 <code>DerivedData/JustFocus-xxxx/Build/Intermediates.noindex/JustFocus.build/Debug/JustFocus\ Helper.build/Objects-normal/x86_64/</code> 里面找到。</li> 
   <li><code>MH_EXECUTE</code>: 标准可执行文件</li> 
   <li><code>MH_BUNDLE</code>: 动态库，macOS 上跟资源文件打包为 <code>.bundle</code> 或 <code>.plugin</code>，比如 <code>/System/Library/Audio/Plug-Ins/HAL/AirPlay.driver/Contents/MacOS/AirPlay</code>。本质上是动态库，Unix-like 系统叫做 <code>.so</code>，但是在 macOS 历史上曾经有点特殊，可以参考<a href="https://justinyan.me/post/4125">macOS 上 bundle (.so) 和 dylib 的区别</a>。</li> 
   <li><code>MH_DYLIB</code>: 动态库，比如 <code>/System/Library/Frameworks/AppKit.framework/AppKit</code> 就是 <code>MH_DYLIB</code> 类型。</li> 
   <li><code>MH_PRELOAD</code>: 不在内核运行的特殊文件格式，比如内核还没加载前就要执行的 Bootloader，参考 <a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
   <li><code>MH_CORE</code>: core 文件，程序 crash 的时候保存地址空间里的数据，服务端开发的朋友应该很熟悉。不过 macOS 默认不会把 core 信息 dump 到 <code>/cores/</code> 目录，而是产生 crash log 放在 <code>/Library/Logs/DiagnosticReports</code>。可以<a href="https://stackoverflow.com/questions/9412156/how-to-generate-core-dumps-in-mac-os-x">参考这里</a>打开 core dump.</li> 
   <li><code>MH_DYLINKER</code>: 动态链接器类型，一般我们写的 App 都是用系统的 <code>/usr/lib/dyld</code>，这个文件就是 <code>MH_DYLINKER</code> 类型。</li> 
   <li><code>MH_DSYM</code>: 编译后的 <code>.dSYM</code> 包里最主要的就是用 Mach-O 文件存储的 symbol 信息，比如 <code>Alamofire.framework.dSYM/Contents/Resources/DWARF/Alamofire</code> 就是 <code>MH_DSYM</code> 类型的 Mach-O 文件。</li> 
  </ul> </li> 
 <li><code>ncmds</code>: load commands 个数</li> 
 <li><code>sizeofcmds</code>: load commands 总长度</li> 
 <li><code>flags</code>: 这里面有一堆 flags，大部分是跟编译相关的，我也没全部学明白，所以干脆不描述了，感兴趣的朋友可以<a href="https://github.com/aidansteele/osx-abi-macho-file-format-reference">看这里</a>。</li> 
 <li><code>reserved</code>: 应该只用来做字节对齐了 <pre><code>mh64-&gt;reserved = 0;     /* 8 byte alignment */
</code></pre> </li> 
</ul> 
<h2>1.2 Segment/Section</h2> 
<p>Mach-O 文件中，读完 Header 和 Load Commands 之后，就是各种 Data 数据了，这些数据是以 <code>segment</code> 组织的。</p> 
<p>一个 <code>segment</code> 有起始和终止的 offset，该范围内的数据就是 <code>segment</code> 的数据。<code>segment</code> 的标识是 <code>segment name</code>，宏以 <code>SEG_</code> 开头。</p> 
<p>但是 <code>segment</code> 的数据没有带上起始终止之类的信息，这些信息是在 Load Commands 中定义的。比如 <code>LC_SEGMENT_64</code> 会定义某个 <code>segment</code> 从哪里开始到哪里结束，名字是什么，虚拟内存的属性(比如 read-only)，有多少个 <code>section</code> 等等，相当于一个索引，我们要获得有意义的数据就得先解析 Load Commands 然后再去读取对应的数据。</p> 
<p><code>segment</code> 的数据会被 <code>dyld</code> 根据 <code>LC</code> 的布局信息加载到内存里，所以 <code>segment</code> 都是按页对齐的。在 <code>x86</code> 上一页是 <code>4096 bytes</code> 也即 <code>4 KB</code>。</p> 
<p><code>segment</code> 做按页对齐其实就是把它所包含的所有 <code>section</code> 加起来除以 <code>4 KB</code>，不能整除就在最后一个 <code>section</code> 补 <code>0</code>。</p> 
<p>理论上 Mach-O 文件里的 <code>segment</code> 有多大，加载后就会占多少的虚拟内存。但是实际上一个 <code>segment</code> 有可能在加载后比它在 Mach-O 里的数据大，比如 <code>__PGAEZERO</code> 这个 <code>segment</code>。在 Mach-O 里它其实是空的，只在 Load Command 记录了一个索引信息，但是加载到内存的时候，内核会给我们的 App 的地址开始端 <code>0x0</code> 分配一个空的页(到 <code>0x1000</code>)。这个空的内存页不带内存保护(声明为 <code>VM_PROT_NONE</code>)，不可读写不可执行，我们平时遇到的访问野指针(NULL)就会命中这个区域，然后内核就让我们的 App crash 了。</p> 
<p>上面 header 提到过 <code>.o</code> 文件比较特别，他是编译过程的中间文件(intermediate object file)，出于文件大小的考虑，他的所有 <code>sections</code> 全部放在一个 <code>segment</code> 里面，并且这个 <code>segment</code> 没有名字。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/mach_o_intermediate_file-squashed-scaled.jpg" alt="" /></p> 
<h2>1.3 Segment 的类型</h2> 
<p><code>segment</code> 用名字区分，定义了这么多种:</p> 
<pre><code>#define    SEG_PAGEZERO    "__PAGEZERO"    /* the pagezero segment which has no */
                                        /* protections and catches NULL */
                                        /* references for MH_EXECUTE files */
#define    SEG_TEXT    "__TEXT"    /* the tradition UNIX text segment */
#define    SEG_DATA    "__DATA"    /* the tradition UNIX data segment */
#define    SEG_OBJC    "__OBJC"    /* objective-C runtime segment */
#define    SEG_ICON     "__ICON"   /* the icon segment */
#define    SEG_LINKEDIT    "__LINKEDIT"    /* the segment containing all structs */
#define SEG_IMPORT "__IMPORT"  /* the segment for the self (dyld) */
                    /* modifing code stubs that has read, */
                    /* write and execute permissions */
#define SEG_UNIXSTACK  "__UNIXSTACK"   /* the unix stack segment */
</code></pre> 
<p>有些是历史遗留产物，对我们来说有用的字段是这些:</p> 
<ul> 
 <li><code>__PAGEZERO</code> 的作用讲过了不再赘述，这个东西是由静态链接器生成的。</li> 
 <li><code>__TEXT</code> 包含了所有的可执行代码，内存保护设置为 <code>VM_PROT_READ</code> 和 <code>VM_PROT_EXECUTE</code>。因为这一整段都是只读的，所以内核可以在内存不够的时候把这些数据换出(page out)，需要的时候再换回来(page in)。</li> 
 <li><code>__DATA</code> 可写的数据，比如 ObjC runtime 支持的库。像这样的系统库有可能被多个进程链接，因为这一段内存可写，所以写操作会触发 <code>copy-on-write</code>，以此实现逻辑上每个进程有一份 copy (不一定真的要 copy)。</li> 
 <li><code>__LINKEDIT</code> 动态链接器需要用到的数据，比如 symbol table, string table 之类的</li> 
</ul> 
<p>下面这些是历史：</p> 
<ul> 
 <li><code>__OBJC</code> Objective-C 的 runtime 支持，历史遗留字段，现在都放进 <code>__DATA</code> 里面了</li> 
 <li><code>__ICON</code> 应该是历史遗留产物，现在图标资源已经分离出去了，我们的 App 一般打包成 <code>.app</code> 文件夹。</li> 
 <li><code>__IMPORT</code> <code>i386</code>(IA-32) 也就是 32 位 <code>x86</code> 架构才会用到的一个字段，64 位改用 <code>__DATA,__la_symbol_ptr</code> 了。</li> 
 <li><code>__UNIXSTACK</code> 应该也是历史产物，<a href="https://aiya.ms.mff.cuni.cz/svn/rip/trunk/extlibs/valgrind-3.6.1-stacks/coregrind/m_ume/macho.c">参考这里</a>。</li> 
</ul> 
<h2>1.4 Sections</h2> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/mach_o_text_segment-squashed.jpg" alt="" /></p> 
<p><code>__TEXT</code> 和 <code>__DATA</code> 一般会包含多个 <code>sections</code>，这些 <code>sections</code> 的命名和用途也会随着系统和编译器更新而变化，想要了解全部 <code>section</code> 及其作用的可以参考 <a href="https://llvm.org/">LLVM 项目</a>。这里我们看几个关键 <code>section</code>。</p> 
<table> 
 <thead> 
  <tr> 
   <th>Segment, Section</th> 
   <th>作用</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>__TEXT,__text</td> 
   <td>可执行的机器码</td> 
  </tr> 
  <tr> 
   <td>__TEXT,__cstring</td> 
   <td>常量定义的 C strings，以 '\0' 结尾。编译器编译时会把所有 C String 合并优化，放在这个地方。</td> 
  </tr> 
  <tr> 
   <td>__TEXT,__const</td> 
   <td>初始化过的常量。编译器会把所有无需重定向的以 <code>const</code> 声明的常量放在这类。(多数编译器都把未初始化过的常量默认赋值为 0。)</td> 
  </tr> 
  <tr> 
   <td>__TEXT,__objc_ 开头的</td> 
   <td>以前放在 <code>__OBJC</code> 里 runtime 的支持，现在都放这里了。</td> 
  </tr> 
  <tr> 
   <td>__TEXT,__stubs 和 __TEXT,__stub_helper</td> 
   <td>动态链接需要用到的信息</td> 
  </tr> 
 </tbody> 
</table> 
<p>想要理解完所有 <code>__TEXT</code> 里的 <code>sections</code>，你得学习 <code>llvm</code> 的源码。并且这些字段也经常随着系统和编译器的更新二更新，所以我选择放弃。真的需要的时候再回过来反查就行。在这一个 <code>segment</code> 里最重要的就是 <code>__TEXT,__text</code>，可执行的机器码放在这里。</p> 
<table> 
 <thead> 
  <tr> 
   <th>Segment, Section</th> 
   <th>作用</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>__DATA,__data</td> 
   <td>初始化过的变量，比如一个可变的 C string 或者一个数组</td> 
  </tr> 
  <tr> 
   <td>__DATA,__la_symbol_prt</td> 
   <td>Imported 函数的指针表，比如 <code>libswiftFoundation.dylib</code> 这样的动态库的符号的指针地址</td> 
  </tr> 
  <tr> 
   <td>__DATA,__bss</td> 
   <td>未初始化的静态变量</td> 
  </tr> 
 </tbody> 
</table> 
<h2>1.5 Load Command</h2> 
<p>load command 的定义很简单:</p> 
<pre><code>struct load_command {
    uint32_t cmd;       /* type of load command */
    uint32_t cmdsize;   /* total size of command in bytes */
};
</code></pre> 
<p><code>cmd</code> 就是 <code>LC_</code> 开头定义的宏，非常多，我们只看关键的，全量的请参考 <code>loader.h</code> 里的定义。</p> 
<table> 
 <thead> 
  <tr> 
   <th>Command</th> 
   <th>结构体</th> 
   <th>作用</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>LC_UUID</td> 
   <td>uuid_command</td> 
   <td>编译出来的 image/dSYM 的 UUID，用于两者互相关联</td> 
  </tr> 
  <tr> 
   <td>LC_SEGMENT_64</td> 
   <td>segment_command_64</td> 
   <td>定义 segment</td> 
  </tr> 
  <tr> 
   <td>LC_SYMTAB</td> 
   <td>symtab_command</td> 
   <td>定义 symbol table</td> 
  </tr> 
  <tr> 
   <td>LC_DYSYMTAB</td> 
   <td>dysymtab_command</td> 
   <td>定义动态链接库需要用到的 symbol table</td> 
  </tr> 
  <tr> 
   <td>LC_UNIXTHREAD</td> 
   <td>thread_command</td> 
   <td>程序的入口。现在大部分 App 都用 <code>dyld</code> 调起了，内核的 Mach-O 和 <code>dyld</code> 则还是用 <code>LC_UNIXTHREAD</code> 声明入口</td> 
  </tr> 
  <tr> 
   <td>LC_MAIN</td> 
   <td>entry_point_command</td> 
   <td>程序的入口，需要配合 <code>LC_LOAD_LINKER</code> 使用，把该地址交给 <code>dyld</code> 然后由它来调起 App 的入口函数</td> 
  </tr> 
  <tr> 
   <td>LC_LOAD_LINKER</td> 
   <td>dylinker_command</td> 
   <td>声明用到的 dy linker, iOS/Mac 一般都是 <code>/usr/lib/dyld</code></td> 
  </tr> 
  <tr> 
   <td>LC_LOAD_DYLIB</td> 
   <td>dylib_command</td> 
   <td>该 Mach-O 需要用到的动态库</td> 
  </tr> 
 </tbody> 
</table> 
<p>通过 Load Command 获取了 <code>segment</code> 的 offset 和 size 之后就可以读取为 <code>segment_command_64</code> 和 <code>section_64</code> 结构体了。</p> 
<pre><code>struct segment_command_64 { /* for 64-bit architectures */
    uint32_t    cmd;        /* LC_SEGMENT_64 */
    uint32_t    cmdsize;    /* includes sizeof section_64 structs */
    char        segname[16];    /* segment name */
    uint64_t    vmaddr;     /* memory address of this segment */
    uint64_t    vmsize;     /* memory size of this segment */
    uint64_t    fileoff;    /* file offset of this segment */
    uint64_t    filesize;   /* amount to map from the file */
    vm_prot_t   maxprot;    /* maximum VM protection */
    vm_prot_t   initprot;   /* initial VM protection */
    uint32_t    nsects;     /* number of sections in segment */
    uint32_t    flags;      /* flags */
};
</code><p><code>struct section_64 { /* for 64-bit architectures <em>/<br /> char sectname[16]; /</em> name of this section <em>/<br /> char segname[16]; /</em> segment this section goes in <em>/<br /> uint64_t addr; /</em> memory address of this section <em>/<br /> uint64_t size; /</em> size in bytes of this section <em>/<br /> uint32_t offset; /</em> file offset of this section <em>/<br /> uint32_t align; /</em> section alignment (power of 2) <em>/<br /> uint32_t reloff; /</em> file offset of relocation entries <em>/<br /> uint32_t nreloc; /</em> number of relocation entries <em>/<br /> uint32_t flags; /</em> flags (section type and attributes)<em>/<br /> uint32_t reserved1; /</em> reserved (for offset or index) <em>/<br /> uint32_t reserved2; /</em> reserved (for count or sizeof) <em>/<br /> uint32_t reserved3; /</em> reserved */<br /> };<br /> </code></p></pre>
<p></p> 
<p>其中比较特殊的是，最后一个 <code>segment</code> 也就是 <code>__LINKEDIT</code> 存储 link edit information，里面有 symbole table, string table, dynamic symbol table, code signature 等信息。</p> 
<p>但是他的 <code>LC_SEGMENT_64</code> 里面却没有包含里面的 <code>sections</code> 信息，你需要配合 <code>LC_SYMTAB</code> 来解析 symbol table 和 string table。</p> 
<pre><code>// LC_SYMTAB 对应的结构体
struct symtab_command {
    uint32_t    cmd;        /* LC_SYMTAB */
    uint32_t    cmdsize;    /* sizeof(struct symtab_command) */
    uint32_t    symoff;     /* symbol table offset */
    uint32_t    nsyms;      /* number of symbol table entries */
    uint32_t    stroff;     /* string table offset */
    uint32_t    strsize;    /* string table size in bytes */
};
</code></pre> 
<h2>1.6 符号表放在哪里</h2> 
<p>没有对 Mach-O 文件的符号进行任何处理的时候，所有符号表信息都会放在 Mach-O 文件里。</p> 
<p>我们可以用 <a href="https://github.com/gdbinit/MachOView">MachOView</a> 直接查看 Symbol Table。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/mach_o_symbol_table-squashed.jpg" alt="" /></p> 
<p>这是 Just Focus Debug 版的符号表，但是 Xcode 在编译的时候默认会对 Release 版做一个优化: 把符号从 App 的 Mach-O 去掉，写进成对的 <code>dSYM</code> 文件。可以在你的 <code>Xcode Project -&gt; Build Settings -&gt; Build Options -&gt; Debug Information Format</code> 看到各个 scheme 的配置。</p> 
<p><code>DWARF</code> 是 <a href="https://en.wikipedia.org/wiki/Executable_and_Linkable_Format">Executable and Linkable Format</a> 配套的一个 Debug 数据格式。<code>ELF</code> 则是 Unix 的一个标准格式，多数 Unix 系统和 Linux 都采用这种格式定义可执行文件。macOS 虽然不支持 <code>ELF</code> 但是用了 <code>DWARF</code> 作为 debug 数据格式。</p> 
<ul> 
 <li><code>DWARF</code> 生成 debug 信息并塞进 Mach-O 文件</li> 
 <li><code>DWARF with dSYM File</code> 生成 debug 信息并放到配套的 <code>dSYM</code> 文件，以 <code>UUID</code> 匹配，App 的Mach-O 里不带符号信息。</li> 
</ul> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/mach_o_dwarf-squashed.jpg" alt="" /></p> 
<h2>2. 回答问题</h2> 
<ol> 
 <li>如何知道一个符号在 Mach-O 文件里占用的空间？ <p>可以读取 <code>LC_SYMTAB</code> 然后在最后一个 <code>segment</code> 里找到 symbol table。<code>LC_SYMTAB</code> 数据是一个定长的 16 bytes 数据。</p> <p>然后通过 <code>symbol table</code> 的 <code>string table index</code> 获取该 <code>symbol</code> 对应的 <code>string</code>，这个就不是定长的了，读到 <code>\0</code> 停止。所以符号的 <code>string</code> 越长占 Mach-O 的 size 就越大。</p> <p>2019-11-16 updated: 上面的说法是你使用 MachOView 这样的工具时，可以肉眼 filter 已知的 <code>string</code> 所以可以这样查。但是系统执行文件的时候，拿到的是 <code>(__TEXT,__text)</code> 里的一个个指针地址，crash 发生的时候内核会保存当前进程的内存空间快照，crash 时的指令地址反查 symbol 就能得到我们人能阅读的 crash 堆栈。所以如果你想要通过 <code>string</code> 裸读 Mach-O 文件来反查对应指针地址的话，因为 string table 里的存储是连续的 bits，没有索引就无法读出 string，所以只能解出所有结果，然后自己去 filter。</p> </li> 
 <li> <p>无用 <code>class/struct</code> 会占用 Mach-O 空间吗？</p> <p>如果是 <code>C/C++</code> 的符号，编译链接时会知道这个 <code>class/struct</code> 没人用，直接优化删掉，等于没有。</p> <p>如果是 <code>ObjC</code> 的符号，则还是会保留，因为有 <code>runtime</code>，你不知道它到底有没有被人用。</p> <p>所以 <code>ObjC</code> 无用的 <code>class/struct</code> 在 release 下不会占用 Mach-O 的 <code>Symbol Table/String Table</code> 空间，但是会占用 Mach-O 的 <code>(__TEXT,__text)</code> 空间。</p> </li> 
 <li> <p><code>foo</code> 的所有符号会连续吗？</p> <p>不连续，<code>link-editor</code> 比如 <code>dyld</code> 可以通过读取 <code>LC_SYMTAB</code>, <code>LC_DYSYMTAB</code> 等 load command，从对应的 Symbol Table 和 Dynamic Symbol Table 找到符号。</p> <p>比如 Just Focus 有一个 Swift enum <code>JFAppState</code> 在 Symbol Table 上它的符号并不连续。</p> </li> 
 <li> <p>什么符号可以从 Mach-O 去掉？</p> <p>默认情况下所有符号都会保留在 Mach-O 里，这样调试的时候就能显示全部符号，但是如前所述发布版本并不需要这些符号，完全可以去掉以节省空间。Xcode 对 <code>Strip Style</code> 也提供了多个选项可供设置: <code>Build Settings -&gt; Deployment -&gt; Strip Style</code></p> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/mach_o_strip_style-squashed.jpg" alt="" /></p> 
  <ul> 
   <li>All Symbols 全部删掉</li> 
   <li>Non-Global Symbols 删除全局符号以外的所有符号，保留外部符号(动态库)</li> 
   <li>Debugging Symbols 删除 Debug 符号，保留本地符号和全局符号</li> 
  </ul> <p>单独编译静态库是无法 <code>Strip All Symbols</code> 的，不然你引用这个静态库链接器就不知道该怎么链接了。但是打包成一个完成 App 的时候，静态库的符号可以被去掉。</p> <p>理论上动态库的符号无法去掉，但是编译器可以根据你调用的方法进行优化，只保留用到的符号。但是 <code>ObjC</code> 有 <code>runtime</code>，应该无法确定哪些符号用到哪些没有。<code>llvm</code> 用到的链接器 <code>ld</code> 提供了 <code>-strip-unneeded</code> 的选项，不过我还不知道他是怎么实现的，大概要把编译原理从头学一下然后再学一遍 <code>llvm</code> 才知道了。</p> </li> 
</ol> 
<h2>3. 小结</h2> 
<p>主流操作系统 Unix-like, Windows 和 macOS 虽然各有自己可执行文件的格式，但是设计上大同小异。</p> 
<p>Mach-O 文件格式随着系统与编译器的升级加入和删除了很多古老的 <code>segment</code> 或者 <code>section</code>，而这些特性都需要编译器(llvm)与执行环境(xnu)的配合开发。</p> 
<p>作为一个编译后的产物，Mach-O 里的字段有很多跟编译器的优化相关。这些字段如果要一个个理解清楚需要很多时间，并且需要熟悉编译原理以及 llvm 自家的特性(毕竟很多优化都是独有的)。所以没有必要细究每一个字段的作用，真的用到的时候再查就行了。</p> 
<p>但是以鸟瞰的视角了解 Mach-O 文件的结构，对于理解一些古怪的问题还是很有帮助的。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://adrummond.net/posts/macho">Inside a Hello World executable on OS X — Alex Drummond</a></li> 
 <li><a href="https://github.com/aidansteele/osx-abi-macho-file-format-reference#nlist_64">aidansteele/osx-abi-macho-file-format-reference: Mirror of OS X ABI Mach-O File Format Reference</a></li> 
 <li><a href="https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/LoadingCode/Tasks/LoadingBundles.html">Loading Bundles</a></li> 
 <li><a href="http://mirror.informatimago.com/next/developer.apple.com/releasenotes/DeveloperTools/TwoLevelNamespaces.html">Mac OS X 10.1 Two-Level Namespace Release Notes</a></li> 
 <li><a href="http://www.cilinder.be/docs/next/NeXTStep/3.3/nd/DevTools/14_MachO/MachO.htmld/index.html">MachO</a></li> 
 <li><a href="https://satanwoo.github.io/2017/06/29/Macho-2/">深入理解Macho文件（二）- 消失的__OBJC段与新生的__DATA段 | SatanWoo</a></li> 
 <li><a href="https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/MachOTopics/1-Articles/dynamic_code.html#//apple_ref/doc/uid/TP40002528">Position-Independent Code</a></li> 
 <li><a href="https://www.jianshu.com/p/11710e7ab661">Xcode中和symbols有关的几个设置 - 简书</a></li> 
 <li><a href="https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/OverviewOfDynamicLibraries.html">Overview of Dynamic Libraries</a></li> 
 <li><a href="http://ddeville.me/2014/04/dynamic-linking">Damien DeVille | Dynamic linking on iOS</a></li> 
 <li><a href="https://adrummond.net/posts/macho">Inside a Hello World executable on OS X — Alex Drummond</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x4E0A; bundle (.so) &#x548C; dylib &#x7684;&#x533A;&#x522B;</title>
        <link>https://justinyan.eth.limo/7A7CABF0-AD10-490E-8437-C4038C7FE4EF/</link>
        <guid>https://justinyan.eth.limo/7A7CABF0-AD10-490E-8437-C4038C7FE4EF/</guid>
        <pubDate>Fri, 15 Nov 2019 14:35:23 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_bundle_dylib.jpg" alt="" /></p> 
<p>今天和同事讨论到一个问题：</p> 
<blockquote>
 <p> <code>bundle</code> 和动态库一样吗？ </p>
</blockquote> 
<p>同事说 <code>bundle</code> 只是包含了其他资源而已，其实就是动态库。</p> 
<p>我看 Mach-O 文件类型里 <code>MH_BUNDLE</code> 与 <code>MH_DYLIB</code> 是分开的，所以觉得 <code>.bundle</code> 里面的 Mach-O 文件和 <code>dylib</code> 的 Mach-O 文件应该会有些不一样。不过我也不知道有什么不一样，所以学习了一下，以此文记之。</p> 
<p>定义一下动态库为 <code>dylib</code> Mach-O 文件, <code>bundle</code> 指的是 <code>.bundle</code> 文件夹里面的 Mach-O 文件，一般类 Unix 系统叫做 <code>.so</code> 库，不过苹果官方建议叫做 <code>.bundle</code>。</p> 
<p><em>P.S. 这里苹果官方不厚道，它推荐用 <code>.bundle</code> 作为 <code>MH_BUNDLE</code> 类型文件的后缀名但不强制，然后自己还把 <code>.bundle</code> 后缀名用作一个类似 <code>.app</code> 的资源与可执行文件打包。所以很容易就会混淆两个概念。实际上我看到的 <code>MH_BUNDLE</code> 类型的 Mach-O 基本上都没有后缀名，有 <code>.bundle</code> 后缀名的基本上都是资源与可执行文件的打包。</em></p> 
<p>先说结论: 通常语境下 <code>bundle</code> 和 <code>dylib</code> 没有区别。要较真的话也只有在 OS X 10.5 以前才有比较大的区别，所以同事说 <code>bundle</code> 和动态库没有区别是对的。</p> 
<p><em>P.S. ELF 系统(Executable and Linking Format，Unix-like 系统基本都是)上这两者完全相等，只有 Mac 的 dyld 对他们做了点区别对待。</em></p> 
<h2>一、File Type 不同</h2> 
<p>Mach-O 文件的 header 里有一个 <code>type</code> 字段表示当前文件的类型，如果把 <code>.bundle</code> 文件夹解开，里面的 Mach-O 文件的类型是 <code>MH_BUNDLE</code>，而 <code>dylib</code> 则是 <code>MH_DYLIB</code>。</p> 
<pre><code>➜ otool -hv AppKit
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
MH_MAGIC_64  X86_64        ALL  0x00       DYLIB    60       8344   NOUNDEFS DYLDLINK TWOLEVEL APP_EXTENSION_SAFE
</code><p><code>➜ AppKit.framework otool -hv /System/Library/Audio/Plug-Ins/HAL/AirPlay.driver/Contents/MacOS/AirPlay<br /> Mach header<br /> magic cputype cpusubtype caps filetype ncmds sizeofcmds flags<br /> MH_MAGIC_64 X86_64 ALL 0x00 BUNDLE 21 2544 NOUNDEFS DYLDLINK TWOLEVEL<br /> </code></p></pre>
<p></p> 
<h2>二、加载、链接时机不同</h2> 
<p>在 macOS 上，动态加载通过 <code>dyld</code> 进行。<code>bundle</code> 和 <code>dylib</code> 两种文件都可以使用 <code>dlopen</code> 加载。两者的区别要在 <code>dyld</code> 的<a href="https://github.com/opensource-apple/dyld">源码</a>里面找。</p> 
<p><code>dyld</code> 的 <code>dlopen()</code> 实现主要关注是这几个地方:</p> 
<ul> 
 <li><code>dlopen()</code></li> 
 <li><code>load()</code></li> 
 <li><code>loadPhase0()</code></li> 
 <li><code>loadPhase1()</code></li> 
 <li><code>loadPhase2()</code></li> 
 <li><code>loadPhase3()</code></li> 
 <li><code>loadPhase4()</code></li> 
 <li><code>loadPhase5()</code></li> 
 <li><code>loadPhase6()</code></li> 
 <li><code>checkandAddImage()</code> 
  <ul> 
   <li>如果是 <code>dylib</code> 就从 <code>sAllImages</code> 找到一样路径的 image 先删掉</li> 
   <li><code>dylib</code> 和 <code>bundle</code> 能使用的 API 不一样，所以这里还得判断 <code>context.mustBeBundle</code> 和 <code>isBundle()</code>是否匹配</li> 
  </ul> <pre><code>// some API's restrict what they can load
if ( context.mustBeBundle &amp;&amp; !image-&gt;isBundle() )
    throw "not a bundle";
if ( context.mustBeDylib &amp;&amp; !image-&gt;isDylib() )
    throw "not a dylib";
</code></pre> 
  <ul> 
   <li>如果是 <code>bundle</code> 就不会加到 global list，因为 <code>bundle</code> 可以只加载但不链接。</li> 
  </ul> </li> 
</ul> 
<p>所以结论是 <code>bundle</code> 可以只加载不链接，而 <code>dylib</code> 加载后就链接了。</p> 
<h2>三、<code>NSObjectFileImage</code> 只有 <code>bundle</code> 能用</h2> 
<p><code>dyld</code> 提供了 <code>NSObjectFileImage</code> 接口，这些接口只有 <code>bundle</code> 能用，只加载不链接就通过这个接口来实现。</p> 
<pre><code>NSObjectFileImageReturnCode NSCreateObjectFileImageFromFile(const char* pathName, NSObjectFileImage *objectFileImage)
</code></pre> 
<p>里面会调用 <code>load()</code> 方法加载 <code>bundle</code>，这类接口的 <code>context.mustBeBundle</code> 为 <code>true</code>，底下判断的时候遇到非 <code>bundle</code> 就会报错。</p> 
<p><code>load()</code> 之后再使用以下方法链接:</p> 
<pre><code>NSModule NSLinkModule(NSObjectFileImage objectFileImage, const char* moduleName, uint32_t options)
</code></pre> 
<h2>四、结论</h2> 
<p><code>NSObjectFileImage</code> 相关的接口从 OS X 10.5 开始已经被废弃了。</p> 
<p>在 Mac OS X 10.5 (2007 年) 以前，<code>bundle</code> 可以被 unload 但是 <code>dylib</code> 不可以，10.5 开始 <code>dylib</code> 也可以被 unload 了。<code>dlclose()</code> 的实现很简单，调用时减一下引用计数，为 <code>0</code> 就从走垃圾回收接口 <code>garbageCollectImages()</code> 删掉。</p> 
<p>经过以上调查，现如今的 <code>bundle</code> 跟 <code>dylib</code> 在使用上几乎可以完全对等。要说区别那就只有编译 <code>dylib</code> 为 shared library 的时候需要加上版本号，而 <code>bundle</code> 只会给自己的 App 用就没有必要了。</p> 
<pre><code>libbz2.1.0.5.tbd
libbz2.1.0.tbd
libbz2.tbd
</code></pre> 
<p>至于 Mach-O Header file type 的区别，只是给 <code>dyld</code> 作 <code>NSObjectFileImage</code> 接口判断而已，这些接口废弃了那自然就没有区别了。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="http://www.finkproject.org/doc/porting/porting.en.html#shared">Fink Documentation - Porting Unix software to Darwin and Mac OS X</a></li> 
 <li><a href="https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/dlclose.3.html">Mac OS X Manual Page For dlclose(3)</a></li> 
 <li><a href="https://docstore.mik.ua/orelly/unix3/mac/ch05_03.htm">Shared Libraries Versus Loadable Modules (Mac OS X for Unix Geeks)</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x5185;&#x6838;&#x4E4B; OS X &#x7CFB;&#x7EDF;&#x7684;&#x8D77;&#x6E90;</title>
        <link>https://justinyan.eth.limo/B539F4C0-9E75-4E74-859B-CF1B68C6124E/</link>
        <guid>https://justinyan.eth.limo/B539F4C0-9E75-4E74-859B-CF1B68C6124E/</guid>
        <pubDate>Thu, 14 Nov 2019 12:48:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_cover.jpg" alt="" /></p> 
<p>前面的文章都在讲内核代码细节，实在有点费脑，这次我们来聊点轻松的历史故事吧。现在我们已经知道 macOS 的内核主要是由 BSD 和 Mach 组成，但是为什么是这样的混合设计呢？</p> 
<p>Amit Singh 的 <em>Mac OS X Internals</em> 一书在开头就介绍了从 Apple OS X 诞生的历史，几年前刚买这本书的时候我还觉得为啥讲这么长的故事一直不进入“干货”部分。现在回过头来看，正是作者介绍了这段历史，后面内核中一些有点疑惑的地方才顺理成章。</p> 
<p>本文主要来自 Amit Singh 书中所述，再加上我查阅的资料所写。年代久远，如有谬误，烦请诸位不吝雅正。</p> 
<h2>一、苹果公司早期(1972-1991)</h2> 
<p>乔布斯(Steve Jobs)和史蒂夫·沃茲尼克(Steve Wozniak) 1976 创办苹果公司，关于这家公司的故事已经广为流传，OS X 的诞生也与乔布斯后来的回归息息相关。我们知道乔布斯离开苹果后创办了 NeXT 公司，也知道今天我们开发的 iOS/macOS 系统跟 NeXTSTEP 系统有千丝万缕的关系。但是乔布斯一回归 NeXTSTEP 就变成今天的 macOS 了吗？并不是，历史的道路是非常曲折的。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_appleii.jpeg" alt="Steve Jobs Apple II" /></p> 
<p>时间回到 1977 年，乔布斯在 West Coast Computer Faire 发布了 Apple II 这款个人电脑，这是苹果公司对外发售的第一款消费级个人电脑。这款产品大获成功，也让两位创始人成为百万富翁。</p> 
<p>1984 年 1 月 22 日，苹果在超级碗(Super Bowl)中场休息时播放了一个堪称历史经典的广告——<a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/2zfqw8nhUwA" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;《1984》</a>，以此发布新产品 <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/2B-XwPjn9YY" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Macintosh</a> 计算机。</p> 
<p>但是在苹果公司内部，与 Macintosh 研发的同一时期，乔布斯还带领了一个团队开发 Lisa 电脑(1983 年发布)。现在我们知道这是一个失败的产品，并且乔布斯也于 1985 年被董事会赶出了苹果，后来自己创办了 NeXT 公司。</p> 
<p>一晃四年过去，1988 年苹果的团队在开会讨论下一代操作系统应该带上什么特性。他们在白板上用三种颜色的便利贴表示不同的 idea:</p> 
<ul> 
 <li><strong>蓝色</strong>是对现有系统的改进，最终将合入 System 7 版本</li> 
 <li><strong>粉红色</strong>则代表革命性的特性: 面向对象特性，内存保护，轻量级多线程多任务处理等等</li> 
 <li><strong>红色</strong>是比粉红色还要革命的超前特性</li> 
</ul> 
<p>当时 Macintosh 上跑的系统版本是闭源的 System 6，1988 年 4 月发布，苹果自家的很多产品都使用这个系统。在这个阶段，苹果的图形界面操作系统依然还是处于比较领先的地位，市面上有 GUI 的操作系统<a href="https://www.webdesignerdepot.com/2009/03/operating-system-interface-design-between-1981-2009/">还不算多</a>，做得好的更没几个。但是苹果的下一代系统 System 7 的研发却出现了问题，一连好几年没法发布。</p> 
<p>这时候隔壁家微软已经在 1990 年发布了 Windows 3.0 (1.0 和 2.0 市场反响都一般)，借此一炮而红，成为当年最流行的图形界面操作系统。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_Windows_3.11_workspace.png" alt="" /></p> 
<p>1991 年苹果终于发布了 System 7 版本，但是这些“蓝色”的 idea 不过是对现有系统的改进，并没有特别大的突破。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_system7.jpg" alt="" /></p> 
<p>而微软在 Windows 3.0 成功后，又继续在操作系统上发力。当时微软内部有一个代号为 <em>Chicago</em> 的项目，原计划在 1993 年发布。但是项目一直延期，最终在 1995 年才终于面世。这款产品就是广为人知的 Windows 95。除了家用系统，微软在 1993 年也发布了面向服务器的 Windows NT 系统，自带网络服务， NTFS 文件系统，支持 Win32 API。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_windows95.png" alt="" /></p> 
<p>反过来看苹果，却陷入了深深的危机。1998 年开始苹果一直在探索自家操作系统未来的方向。除了已经发布的“蓝色” System 7，“粉红色”的部分苹果与 IBM 合作，成立 Taligent 公司试图研发下一代操作系统，但是该项目一直没有产出，直到最后公司被 IBM 收购也没有对外发布过任何系统。</p> 
<p>至于更加激进的“红色”项目，代号为 Raptor，则无疾而终。个中细节在网络上未有记录，只在《Mac OS X Internals》一书有所提及。可以说 1990 年代的苹果，正在一步步走向深渊。</p> 
<h2>二、苹果在操作系统上的尝试(1991-1997)</h2> 
<p>面对微软的挑战，苹果做了很多操作系统的探索和尝试，内部开发与外部合作兼备。当时的 CPU 还不像今天基本只剩 Intel 和 AMD 两家(手机端基本都是 ARM)，Macintosh 的机器使用的是摩托罗拉 68K 系列的 CPU，而 Windows 则使用的是 Intel 的 x86 系列 CPU。68K CPU 虽然能提供 Intel 486 一样的能力但是发热比 486 高，这时候如果苹果也开始迁移到 Intel 平台那可能历史就改写了。</p> 
<p>Intel 的 CEO Andy Grove 还找过苹果，期望能让 Macintosh 支持 Intel CPU。但是当时苹果评估之后觉得 Intel 的 CISC (复杂指令集) 设计未来肯定打不过 RISC (精简指令集)，所以没有投入 Intel 的怀抱。他们选择了与 IBM, 摩托罗拉合作成立 AIM 联盟，研发 RISC 的 PowerPC CPU。</p> 
<p>1994 年苹果发布的高性能机器 Power Macintosh 首次搭载了这颗芯片，在市场上获得不错的反响，在 9 个月内卖出超过 100 万台。但是长期来看当时没有选择 Intel 是个<a href="https://web.archive.org/web/20071208100556/http://macworld.co.uk/news/index.cfm?newsid=7045">错误的决定</a>。</p> 
<h3>2.1 Star Trek 项目 (1992-1993)</h3> 
<p>但是研发 PowerPC 的同时，苹果也没有放弃 Intel x86 架构。1992 年他们跟 Novell 公司合作，打算把 System 7 移植到 x86 架构上。苹果有操作系统经验，Novell 则有跨平台经验。但是 1993 年中，PC 价格战开始后因为业绩压力董事会把 CEO John Sculley (也就是那位著名的卖可乐的 CEO，也是他把乔布斯赶走的)辞退了，新任 CEO Michael Spindler 对 Intel 不感兴趣于是这个项目就被取消了。</p> 
<h3>2.2 Copland-Mac OS 8 (1994-1996)</h3> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_copland.jpeg" alt="" /></p> 
<p>Michael Spindler 在 CEO 的位子只坐了 3 年，他在职期间发布了 PowerPC 倒是挺成功的，但是后来的 Newton 和 Copland 操作系统却均是失之作。</p> 
<p>苹果一直以来都自信自家的产品能提供远超其他产品的用户体验，但是随着 Windows 95 的发布这种差距在缩小，并且随着 PC 价格的下降苹果的性价比已然极低，于是苹果急于让自家的操作系统提供远超微软 Windows 的能力。</p> 
<p>从 System 7.6 开始，Macintosh 的操作系统正式改名为 Mac OS 7.6。1994 年苹果宣布 Mac OS 8 将提供非常革命性的新特性，项目代号为 Copland。</p> 
<p>Copland 的目标包括拥抱 RISC 让整个系统原生支持 PowerPC 架构，集成并改进苹果现有的技术比如 OpenDoc，ColorSync 等等。保留现有的 Mac OS 界面并提供可自定义的能力。扩展系统能力，允许跟 DOS 和 Windows 系统协作。支持多用户登录。以及一些其他革命性的特性。</p> 
<p>一开始这个项目在公司内是非常激动人心的，1995 年还对 50 个 Mac 开发者放出了 Beta 版。但是从那以后，Copland 就再也没有更新过，也从来没有正式对外发布过。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_copland_dr.jpeg" alt="Mac OS 8 Copland DR" /></p> 
<p>当时的苹果公司以及负债累累，John Sculley 辞职的时候苹果公司还有 20 亿美元的现金与 2 亿美元的负债。到了 1996 年，有超过 500 名工程师投入到 Copland 项目中，光这个项目一年就要花去 2.5 亿美元的预算。那一年苹果亏损 7.4 亿美元，CEO Michael Spindler 被辞退，Gil Amelio 上任，该项目被正式取消。</p> 
<p>Gil 后来在他的 <a href="https://books.google.com.hk/books/about/On_the_Firing_Line.html?id=KSpPAAAAMAAJ&amp;source=kp_book_description&amp;redir_esc=y"><em>On the Firing Line: My 500 Days at Apple</em></a> 一书中是这样描述这个项目的:</p> 
<blockquote>
 <p> just a collection of separate pieces, each being worked on by a different team… that were expected to magically come together somehow… </p>
</blockquote> 
<p>Copland 项目虽然失败了，但是它让苹果重新思考了自家操作系统的定位，同时感受到了强烈的生存危机，毕竟从 1991 年发布 System 7 到 1997 年之间，苹果一直没能发布一个正式的大版本。</p> 
<p>此时的苹果急需寻找一款足够优秀的操作系统来拯救苹果。这时候收购一个操作系统公司的选项浮出水面。差不多是时候乔布斯要出场了，但是在他出现之前，还有另外一家公司成为苹果的候选。</p> 
<h2>三、收购与转折(1996-1997)</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_BeOS.png" alt="" /></p> 
<p>1996 年 Gil Amelio 上任后苹果已岌岌可危。当时考虑过跟微软合作，开发基于 Windows NT 的 Apple OS。同时也考虑采用 Sun 公司的 Solaris 系统，或者收购 Be 公司的 BeOS。</p> 
<p>Be 公司也跟 Apple 颇有渊源，甚至有点狗血。BeOS 的创始人 Jean-Louis Gassée 曾经是苹果公司欧洲运营负责人。1985 年 Gassée 得知乔布斯准备把当时人还在中国的 CEO John Sculley 赶走的时候，通知了 John Sculley，于是 Sculley 召开了董事会讨论这件事情。当时乔布斯在苹果内部可谓是众叛亲离，这是他自己盲目自信带来的后果。当时他利用自己的权威给 Macintosh 部门很多资源，员工的收入都比隔壁 Apple II 高得多，但实际上 Apple II 才是真正贡献公司利润的部门。1985 年初连创始人史蒂夫·沃茲尼克也离开了苹果，连带着很多高层也相继离开。所以最终董事会站在 Sculley 这边，反而把乔布斯赶走了。</p> 
<p>John Sculley 成功把乔布斯赶走了之后，就让 Gassée 主管 Macintosh 产品。1988 年 Gassée 主管苹果的高级产品开发和全球市场，有传言称他要取代 Sculley 成为 CEO。不过 1990 年他就被 Sculley 和其他董事会成员要求离职了。</p> 
<p>1991 年离开苹果之后 Gassée 创办了 Be 公司，带走了一堆苹果员工。他们开发了 BeOS，能在 PowerPC 上跑，目标很明确就是希望苹果可以收购他们，取代前面说的已经快挂掉的 Mac OS。BeOS 的特性很多，首先可以在 PowerPC 运行，然后支持内存保护，抢占式多任务，支持对称多处理等等。但是，BeOS 当时还没有完全实现，也并没有经历过市场的考验。</p> 
<p>1996 年苹果给 Be 开价 5000 万美元(Be 公司的总投资大约 2000 万美元)，但是 Gassée 非常自信地给出 5 亿美元回价。苹果又协商给 1.25 亿，Gassée 回 3 亿，苹果再开价 2 亿，但是 Gassée 仍不接受，给了个最终价 2.75 亿。</p> 
<p>于是交易告吹。</p> 
<p>苹果于同年底宣布以 4 亿美元收购了乔布斯的 NeXT，1997 年 2 月正式完成收购，乔帮主回归苹果，7 月份说服董事会辞退 Amelio，自己成为公司 CEO，开启了苹果的新世纪。</p> 
<h2>四、NeXT 篇章</h2> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_next_logo-300x200.jpg" alt="" /></p> 
<p>NeXT 的操作系统 NEXTSTEP (也写作 NeXTstep, NeXTStep) 跟 BeOS 不一样，它是经历过市场验证的。苹果当时的 CEO Amelio 还戏称这场收购是用 "plan A" 取代了 "plan Be"。</p> 
<p>最终 NEXTSTEP 与 Mac OS 的结合诞生了如今我们使用的 Mac OS X (macOS)。不过并不是说乔布斯一回到苹果这系统就整合完了，他的回归到 OS X 诞生大约隔了 3 年。</p> 
<h3>4.1 NEXTSTEP(1985-1997)</h3> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_NeXTSTEP.png" alt="" /></p> 
<p>1985 年乔布斯离开苹果的时候，带走了 5 个苹果员工创办 NeXT 公司，专做面向教育的产品。四年后，1988 年 10 月 12 日，<a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/92NNyd3m79I" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>&amp;feature=emb_logo"&gt;乔布斯在旧金山市区的 Davies Symphony Hall 发布了 NeXT Computer</a>，跑在上面的操作系统就是 NEXTSTEP。</p> 
<p>NeXT 公司的创始团队还包括来自 CMU Mach 内核的团队的成员 Avie Tevanian。他是 Mach 内核的主要设计者和开发者之一。所以 NEXTSTEP 系统从第一天起就是基于 Mach 和 BSD 内核进行开发。当时发布的第一个版本采用的是 Mach 2.0 版本和 BSD 4.3 版本。Avie Tevanian 后来也成为苹果公司软件工程的高级 VP，2003 年当上 CTO，2006 年离职。</p> 
<p>NEXTSTEP 系统提供了图形界面和 Unix 风格的命令行操作。可以说今天我们见到的 macOS 的很多特性都来自于 NEXTSTEP。比如说:</p> 
<ul> 
 <li>可以 "hide" 应用窗口，而不是完全关闭</li> 
 <li>在多个应用之间通过 Drag and Drop 传递复杂的对象(比如富文本和图片)</li> 
 <li>Service 菜单，虽然现在应该用的人不多，但是每个 App 的全局菜单下拉后都有一个 Services 的菜单，里面有当前 App 相关的 service 以及全局的 service</li> 
 <li>一直都在的 Dock</li> 
 <li>采用 Objective-C 作为原生开发语言</li> 
 <li>带有 Interface Builder 辅助界面开发</li> 
 <li>一堆开发 Kit 比如 <code>Application Kit</code></li> 
</ul> 
<p>1992 年，NEXTSTEP 发布了可以跑在 x86 架构上的版本。当时它们可以支持在 68K(摩托罗拉), x86(英特尔), PA-RISC(惠普), SPARC(Sun)等多种不同的芯片上运行。并且可以把多种架构的代码打包成一个 fat binary，也就是我们今天在 iOS 上常见的所谓 Universal Binary。</p> 
<h3>4.2 OpenStep(1993-1997)</h3> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_openstep.jpg" alt="" /></p> 
<p>NeXT 公司还和 Sun 公司合作开发了 OpenStep。这是一套能跑在 SunOS, HP-UX 和 Windows NT 上的面向对象的接口。基于这个接口，一个精简版的 NEXTSTEP 就可以跑在支持这个接口的机器上。1994 年 OpenStep 发布了第一个版本。</p> 
<p>不过没多久 NeXT 公司就转而专注在 WebObjects 技术上了。1996 年乔布斯还在微软的 Professional Developers conference 演示了这一技术: [Microsoft Professional Developers Conference 1996 Keynote Speaker: Steve Jobs](Microsoft Professional Developers conference)</p> 
<p>简单说这个技术就是用 Java 开发网站的技术。这里有一份<a href="https://developer.apple.com/library/archive/documentation/LegacyTechnologies/WebObjects/WebObjects_5/WebObjectsOverview/WebObjectsOverview.pdf">官方文档</a>有兴趣的读者可以看看。</p> 
<p>这项技术在 NeXT 被苹果收购之后也用在了部分苹果产品上，但是从 2008 年开始就不更新了，2016 年官方宣布中止开发。据称目前还用于 Apple Store 以及 iTunes Store 的一部分，不过除非内部负责该项目的开发者，不然无从考证了。</p> 
<h2>五、Mach 的历史</h2> 
<p>我们知道 Mach 是 NEXTSTEP 以及后来的 OS X 非常重要的组成部分。它是由 CMU (Carnegie Mellon University) 开发的微内核。它的前身是 CMU 开发的 Accent 内核，Accent 的前身则是 UR (University of Rochester) 开发的 RIG (Rochester's Intelligent Gateway) 项目的一部分。</p> 
<h3>5.1 Rochester's Intelligent Gateway (1976)</h3> 
<p>1975 年一群来自罗切斯特大学(University of Rochester)的学者在开发一个智能网关系统，叫做 RIG (Rochester's Intelligent Gateway)。这个项目跑在 <em>Aleph</em> 系统上，这个系统跑在 Data General 公司的 Eclipse 小型机上。</p> 
<p><img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Dg-eclipse.jpg/576px-Dg-eclipse.jpg" alt="" /></p> 
<p>这个内核的主要功能是提供 IPC 能力(interprocess communication)，也就是我们常说的“进程间通信”。我们可以从 Aleph 的 IPC 抽象上看到 Mach IPC 的设计。系统采用 Message 在多个进程间传递信息，采用 Port 来对应信息的接收方。跟后来的 Mach 设计是一样的。但是当时这个系统有几个非常严重的基础缺陷，比如说:</p> 
<ul> 
 <li>没有虚拟内存换页支持</li> 
 <li>一条消息最多只有 2KB (因为当时的硬件限制)</li> 
 <li>效率很低的 IPC 通信因为 message size 就 2KB</li> 
 <li>没有网络设计</li> 
</ul> 
<p>关于这个系统的论文可以在<a href="https://www.computer.org/csdl/journal/ts/1976/04/01702389/13rRUyYBli5">这里下载</a>，有兴趣的读者可以看看。</p> 
<h3>5.2 Accent (1981-1985)</h3> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_PERQ.jpg" alt="" /></p> 
<p>RIG 项目的其中一个成员——也是上述论文的作者之一——Richard Rashid 在 1979 年转到 CMU 当教授。在 CMU 工作的其中一个项目就是 Accent 内核，从 1981 年开始正式启动。这个内核面向的是网络操作系统。作为一个面向通信的系统，Accent 也采用了类似 RIG IPC 通信方式的设计，不过做了很多改进:</p> 
<ul> 
 <li>支持虚拟内存，进程有 4GB 内存可供使用</li> 
 <li>强大的虚拟内存管理设计，甚至连内核自身都能被换出，除了部分关键内存被 <code>wire</code> 到物理内存上(还记得我们之前<a href="https://justinyan.me/post/3982">分析内存接口</a>的时候有一个 wire 类型的内存占用吗？)</li> 
 <li>Cop-onwrite 技术支持更大的消息体</li> 
 <li>ports 的设计具备语义性和能力描述(应该指的是后来 Mach Port 的 rights)</li> 
 <li>消息体通过一个中间进程传递(跟后来的 Mach Port 设计非常像了)</li> 
</ul> 
<p>看起来 Accent 比 RIG 好多了，但是这个内核设计的时候是跑在 PERQ 工作站上的。虽然它拥有很多厉害的特性但是设计的时候非常依赖硬件，也不支持 Unix 软件运行。</p> 
<p>为了支持 Unix, Richard Rashid 开始了 Mach 项目，并于 1985 年发布了第一个版本。这位厉害的学者因为 Mach 一战成名，1991 年加入微软，后来成为微软的 VP 直到 2012 年。</p> 
<p>关于 Accent 的论文可以到<a href="http://cseweb.ucsd.edu/classes/wi19/cse221-a/papers/rashid81.pdf">这里下载</a>。</p> 
<h3>5.3 Mach (1985-1994)</h3> 
<p>Mach 内核的设计目标之一是要兼容 Unix 系统。在这个项目启动的时候，Unix 已经存在了 15 年之久，有大量的 feature 被集合到这个巨大的内核里。</p> 
<p>Richard 甚至把 Unix 戏称为"所有新特性或功能的垃圾场"(dumping ground for virtually every new feature or facility)。所以 Mach 项目就是要设计一个可以为其他操作系统内核基础的一个微内核，他们的目标包括:</p> 
<ul> 
 <li>提供完整的多进程支持</li> 
 <li>分离现代硬件相关架构实现代码，支持多种硬件架构。</li> 
 <li>支持透明性与分布式操作 
  <ul> 
   <li>原文是 Support transparent and seamless distributed operation</li> 
   <li>这个我没太理解，猜测和<a href="https://en.wikipedia.org/wiki/Distributed_operating_system#Distributed_computing_models">分布式操作系统</a>是类似的意思。理解的读者朋友可以留言指点一下。</li> 
  </ul> </li> 
 <li>精简内核特性，降低复杂度，给出最小的抽象接口，让 App 或者其他操作系统可以在 Mach 内核上运行</li> 
 <li>兼容 Unix</li> 
 <li>解决 Accent 系统中的一些缺陷与不足</li> 
</ul> 
<p>Mach 内核设计的时候主要 focus 在 CPU 支持与内存管理上，没有考虑支持文件系统，网络接口或者设备 I/O 接口。当初他们的设想是，真正的操作系统可以作为一个用户态的程序跑在 Mach 内核上。Mach 内核采用 C 语言开发，这意味着可以很轻易地移植到各个平台。</p> 
<p>Mach 内核开发的时候以 4.3BSD 为基础进行开发。Richard 由于有 RIG 和 Accent 的经验，在 Mach 内核的设计上可谓驾轻就熟。1986 年正式对外发布的时候，他们在论文上称这是"为 UNIX 开发的一个新内核"。</p> 
<p>当时选择新的 Mach 内核作为自家操作系统内核的，不止 NeXT 一家。1994 年苹果还没收购 NeXT 之前，在 Copland 项目中也用到了作为 Mach 3.0 作为系统内核。但是在对外公布的测试版中却极其不稳定。这个内核项目叫做 NuKernel，当然后来也随着 Copland 项目的结束也无疾而终。</p> 
<h4><strong>Mach 内核的基础抽象</strong></h4> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_Mach.jpg" alt="" /></p> 
<p>在前面的文章中我们也提到过 Mach 内核的一些基本抽象，这里还是简单介绍一下:</p> 
<ol> 
 <li><code>task</code> 表示一个或多个线程资源的集合，资源包括内存，ports(翻译成端口好像不太合适), CPU 核心等等。我们可以简单理解为大家熟悉的“进程”。</li> 
 <li><code>thread</code> (线程)是一个 <code>task</code> 的基本执行单元。<code>task</code> 负责提供线程的运行环境，多个线程共享相同的资源。这点与 Accent 不同，Process 被进一步分为 task 和多个 threads。</li> 
 <li><code>port</code> 跟 Accent 的 port 很像，也是一个内核维护的消息队列，用于 IPC 通信。在 Mach 里一个 <code>port</code> 表示为一个整数。</li> 
 <li><code>message</code> (消息)就是用于 IPC 的结构体，可以在不同的 <code>task</code> 之间通信，也可以在同一个 <code>task</code> 里的不同 <code>thread</code> 通信。</li> 
 <li><code>memory object</code> 可以看成是映射到一个 <code>task</code> 内存空间的的一个数据集合(包括文件数据)。Mach 的内存管理分为 <code>pmap</code> 物理内存层和 <code>vmmap</code> 虚拟内存层。需要 PMMU 硬件支持换入换出，现代 CPU 都集成 MMU 了，当年的 MMU 还是外置的。</li> 
</ol> 
<p>当年 CMU 做了一个非常重要的决定，就是 Mach 内核开源且无任何 licensing 约束。这意味着任何人都可以免费发行 Mach 内核。</p> 
<h3>5.4 MkLinux (1996)</h3> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_mklinux.gif" alt="" /></p> 
<p><a href="https://www.cnet.com/news/apple-acquires-next-jobs/">1996 年 12 月苹果宣布收购 NeXT 公司</a>， 但是在那之前，2 月份苹果就已经开始了一个特别的项目：把 Linux 移植到 PowerPC 平台，让 Macintosh 机器也能跑 <a href="https://en.wikipedia.org/wiki/MkLinux">Linux</a>。</p> 
<p>这个项目的产品叫做 <a href="http://mklinux.org/">MkLinux</a>, 由 OSF (<a href="https://en.wikipedia.org/wiki/Open_Software_Foundation">Open Software Foundation</a>) 和苹果公司联合开发的，目标是让 Linux 内核跑在 Mach 3.0 内核上。</p> 
<p>OSF 早期的成立是为了给 UNIX 系统提供一个开放标准。在 CMU 开发 Mach 2.5 版本的时候，OSF 宣布用于其开发的 OSF/1 系统，并将 host Mach 内核的未来版本。事实上 Mach 3.0 版本是从 CMU 开始，后来也是由 OSF 开发完成。当时 NEXTSTEP 用的是 Mach 2.x 内核。</p> 
<p>1996 年在 WWDC 上苹果公司<a href="https://tech-insider.org/linux/research/1996/0517.html">正式宣布将把 Linux 移植到 Power Macintosh 机器上</a>，名为 MkLinux (Microkernel Linux)。</p> 
<p>这个项目后来也随着 OS X 的整合而终止，交回给社区维护。但是这个项目对苹果整合 NEXTSTEP 帮助不小，在官方的 <a href="https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/About/About.html">Kernel Programming Guide</a> 有曰:</p> 
<blockquote>
 <p> OS X is based on the Mach 3.0 microkernel, designed by Carnegie Mellon University, and later adapted to the Power Macintosh by Apple and the Open Software Foundation Research Institute (now part of Silicomp). This was known as osfmk, and was part of MkLinux (http://www.mklinux.org). Later, this and code from OSF’s commercial development efforts were incorporated into Darwin’s kernel. </p>
</blockquote> 
<p>这也是为什么我们看 XNU 代码里面，Mach 的部分都放在 <code>osfmk</code> 目录下。目前 MkLinux 社区也没什么声音了，最后一个发版本在 2002 年。</p> 
<p><em>P.S. <code>osfmk</code> 就是 Open Software Foundation Mach Kernel 的缩写。</em></p> 
<h3>5.5 Mach 内核的性能问题</h3> 
<p>前面我们提到 CMU 开发 Mach 内核时嫌弃传统 UNIX 内核什么都干，过于臃肿。所以设计目标是要取代 UNIX，让 UNIX 跑在 Mach 内核的用户空间里。这个特性在 Mach 3.0 真正实现了。但是众所周知 Mach 内核并不提供文件系统和网络实现，所以依然需要和 UNIX 做大量的数据交换。这种交换的方式就是通过 Mach 的 IPC 通信。而让几乎所有进程都在两个空间之间做 IPC 通信是<a href="http://os.inf.tu-dresden.de/pubs/sosp97/">非常低效</a>的。</p> 
<p>所以 NEXTSTEP 系统修改了 Mach 内核的实现，让 Mach 和 BSD 都跑在同样的内核空间上，同时让用户空间发起的文件、网络请求等本来要通过 IPC 调用的接口都改成 system call。</p> 
<h2>六、OS X (1997-)</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/11/macOS_history_10.0.png" alt="" /></p> 
<p>1997 年 1 月份<a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/PEHNrqPkefI" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt; Macworld 上的演讲</a>是乔布斯回归后的第一次登台，讲了一堆苹果过去十年犯下的错误之后，宣布 Rhapsody 项目，很有救世主之风。</p> 
<p><a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/GnO7D5UaDig" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;同年 WWDC 是乔布斯</a>第一次演示了 Rhapsody 的 demo。在他登台之后，现场响起了绵延不绝的掌声。</p> 
<p>Rhapsody 基于 NeXT 的 OPENSTEP 开发，可以认为是 Mac OS X 的过渡产品。经过漫长的研发阶段，终于在 2000 年 12 月正式发布第一个 Public Beta 版。这期间大概的时间线是这样的:</p> 
<ul> 
 <li>1997 Rhapsody 项目开始</li> 
 <li>1999 发布 Mac OS X Server 1.0</li> 
 <li>2000 发布 Mac OS X Public Beta</li> 
 <li>2001 发布 Mac OS X 10.0</li> 
</ul> 
<p>其中在 1999 开始开源了系统的核心部分，名为 Darwin。其核心就来自 NEXTSTEP 的 XNU，也就是 Mach/BSD 混合内核。Mach 部分更新了 OSFMK 的 Mach 3.0 和部分来自 University of Utah 的 Mach 4 项目，BSD 部分更新了 FreeBSD 项目的代码。早期苹果甚至提供了 Darwin 安装包，可以作为一个独立系统安装到 x86 和 PowerPC 机器上。不过现在只开放源代码了。</p> 
<p>2000 年乔布斯在 Macworld Expo 上首次介绍了 Mac OS X，演讲风格非常乔帮主，有兴趣的朋友可以看看: <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/Ko4V3G4NqII" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Macworld San Francisco 2000-The Mac OS X Introduction (Pt.1) - YouTube</a></p> 
<p>严格来说现在我们接触到的 macOS 内核，官方叫做 Darwin，它的核心是 XNU，可以独立安装。严格意义上 XNU 和 Darwin 并不完全相等，较真地讲 XNU 只是 Mach/BSD 部分。在前面的文章里我基本上把 Darwin 和 XNU 当做同义词，这并不严谨。但是根据我的考证，目前 Darwin, XNU 和 macOS Kernel 基本等同于一个意思，只要读者朋友不会产生歧义即可。</p> 
<p>使用 <code>uname -a</code> 可以查看自己的系统版本:</p> 
<pre><code>Darwin xxx.local 19.0.0 Darwin Kernel Version 19.0.0: Thu Oct 17 16:17:15 PDT 2019; root:xnu-6153.41.3~29/RELEASE_X86_64 x86_64
</code></pre> 
<p>Mach 内核最初的设计是一个微内核，但是现在 Darwin 已经是一个什么都干的宏内核(Monolithic kernel)了。在看这段历史的时候颇有一种天下大势，分久必合，合久必分的感觉。想想从 1971 年第一个 Unix 版本到现在(2019 年)已经 48 年过去了，OS X 10.0 也过去 18 年了。2016 年，苹果在 WWDC 宣布 OS X 改名为 macOS。</p> 
<p>风云变幻几十年，既有技术的发展也有商业的博弈，很多今天看起来完全看不懂的代码，都是当年历史遗留的未解之谜。XNU 代码里的注释，也有历史的痕迹:</p> 
<pre><code>/*
 * Well-known UDP port, debugger side.
 * FIXME: This is what the 68K guys use, but beats me how they chose it...
 */
#define    KDP_REMOTE_PORT     41139   /* pick one and register it */
</code></pre> 
<p>至少现在我终于明白，什么是 68K guys 了。XDDD</p> 
<h2>内核系列文章</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4078">macOS 内核之 OS X 系统的起源</a></li> 
 <li><a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></li> 
 <li><a href="https://justinyan.me/post/4040">macOS 内核之网络信息抓包(三)</a></li> 
 <li><a href="https://justinyan.me/post/4023">macOS 内核之网络信息抓包(二)</a></li> 
 <li><a href="https://justinyan.me/post/4009">macOS 内核之网络信息抓包(一)</a></li> 
 <li><a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
 <li><a href="https://justinyan.me/post/3982">macOS 内核之内存占用信息</a></li> 
 <li><a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息</a></li> 
 <li><a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a></li> 
 <li><a href="https://justinyan.me/post/3961">macOS 内核之从 I/O Kit 电量管理开始</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="http://www.stats.gov.cn/ztjc/ztsj/gjsj/1999/200203/t20020306_50310.html">个人电脑普及率（1999年）</a></li> 
 <li><a href="http://www.stats.gov.cn/ztjc/ztsj/gjsj/2009/201004/t20100414_70199.html">个人计算机普及率</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Macintosh">Macintosh - Wikipedia</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Intel_80386">Intel 80386 - Wikipedia</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Windows_3.0">Windows 3.0 - Wikipedia</a></li> 
 <li><a href="https://web.archive.org/web/20071208100556/http://macworld.co.uk/news/index.cfm?newsid=7045">John Sculley admits Intel blunder - Mac - Macworld UK</a></li> 
 <li><a href="https://www.cultofmac.com/454396/copland-mac-tiah/">Today in Apple history: Apple's 'unreleased' Mac OS ships to devs | Cult of Mac</a></li> 
 <li><a href="https://www.goodreads.com/en/book/show/643880">On the Firing Line: My 500 Days at Apple by Gil Amelio | Goodreads</a></li> 
 <li><a href="https://www.huxiu.com/article/105956.html">1985年乔布斯被赶走冤不冤？-虎嗅网</a></li> 
 <li><a href="http://cseweb.ucsd.edu/classes/wi19/cse221-a/papers/rashid81.pdf">Accent: A communication oriented network ... - UCSD CSE cseweb.ucsd.edu › classes › cse221-a › papers › rashid81</a></li> 
 <li><a href="http://www.e-reading.club/chapter.php/143358/300/Tanenbaum_-_Distributed_operating_systems.html">8.1.1. History of Mach - Distributed operating systems</a></li> 
 <li><a href="https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/About/About.html">About This Document</a></li> 
 <li><a href="http://hitchhikersgui.de/Darwin_(operating_system)">Hitchhiker's Guide to the Galaxy on Darwin (operating system)</a></li> 
 <li><a href="https://www.macintoshrepository.org/">Old Mac Software Archive - Macintosh Repository</a></li> 
 <li><a href="https://medium.com/@andrewgreimann_62789/beos-review-extras-a-peek-at-the-old-website-and-pre-r3-topics-ef870dafa4d8">BeOS Review Extras: A peek at the old website and pre-R3 topics</a></li> 
 <li><a href="http://www.chilton-computing.org.uk/acd/sus/perq_history/part_3/c13.htm">PERQ History</a></li> 
 <li><a href="https://www.computerworld.com/article/2983507/the-evolution-of-macos-and-mac-os-x.html">The evolution of macOS (and Mac OS X) | Computerworld</a></li> 
 <li><a href="https://www.webdesignerdepot.com/2009/03/operating-system-interface-design-between-1981-2009/">Operating System Interface Design Between 1981-2009 | Webdesigner Depot</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x5185;&#x6838;&#x4E4B;&#x4E00;&#x4E2A; App &#x5982;&#x4F55;&#x8FD0;&#x884C;&#x8D77;&#x6765;</title>
        <link>https://justinyan.eth.limo/7F47E907-6814-4F88-8531-7584DF064572/</link>
        <guid>https://justinyan.eth.limo/7F47E907-6814-4F88-8531-7584DF064572/</guid>
        <pubDate>Wed, 06 Nov 2019 21:21:25 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/darwin_xnu_app_launching.jpg" alt="macOS 内核之一个 App 如何运行起来" /></p> 
<p>此前我们在<a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a>提到内核作为一个巨大的 Mach-O 文件如何被加载到内存运行的，不过内核是被 BootLoader(iBoot) 加载的，入口 <code>LC_UNIXTHREAD</code> 也是 <a href="https://en.wikipedia.org/wiki/Address_space_layout_randomization">ASLR</a> 应用之前的旧实现。</p> 
<p>那么内核是如何运行起一个 App 的呢？</p> 
<h2>〇、背景知识</h2> 
<p>在开始之前我们先了解几个简单的背景知识：XNU 的 Process (进程)的组成是怎样的？</p> 
<p>我们知道 Process 这个抽象概念是指一个 Program (程序)加上它所持有的 Resources (资源)。资源包括物理的 CPU 时间和内存，或者抽象的文件概念等等。</p> 
<p>我们知道 XNU 内核主要由 BSD 和 Mach 两个部分组成，BSD 作为 Unix 内核提供了 Unix Process，Mach 内核则把 Process 抽象为 Task 和 Thread，所以在 macOS 上，一个进程既是 Mach Task 也是 BSD Process。不过内核中比较多的 IPC 是通过 Mach 来完成的。</p> 
<p>Mach Task 的定义在 <code>osfmk/kern/task.h</code>，这个结构体非常大，持有 IPC space, memory address space, Mach threads, BSD info 等非常多进程相关信息。</p> 
<p>我们在用户空间给自己的 App 新起线程的时候，无论是用 <code>NSThread</code> 还是其他上层接口，系统都用 <code>pthread</code> 接口实现了(POSIX Threads)。进入到内核空间，一个 <code>pthread</code> 对应的是一个 Mach Thread，结构体定义在 <code>osfmk/kern/thread.h</code>，就是 <code>struct thread</code>。机器相关的定义在 <code>struct machine_thread</code>，不同的架构各有一个实现。<code>thread</code> 带有 <code>struct task *task;</code> 信息指向对应的进程。这个 Mach Thread 里也包含了 BSD 的 <code>uthread</code>。</p> 
<p>所以一个 pthread 既是 Mach thread 也是 Unix thread。所以内核在创建一个新进程的时候，就需要同时创建 Unix Process 和 Mach Task，以及他们需要的 threads, processors 等各种信息。</p> 
<h3>0.1 内核是有进程数上限设定的</h3> 
<p>我们可以通过 <code>sysctl</code> 查看：</p> 
<pre><code>➜  sysctl -a | grep -i proc
kern.maxproc: 4176
</code></pre> 
<p>内核也在 <code>bsd/conf/param.c</code> hardcoded 了数字 <code>NPROC</code>:</p> 
<pre><code>#if CONFIG_EMBEDDED
#define    NPROC 1000          /* Account for TOTAL_CORPSES_ALLOWED by making this slightly lower than we can. */
#define    NPROC_PER_UID 950
#else
#define    NPROC (20 + 16 * 32)
#define    NPROC_PER_UID (NPROC/2)
#endif
</code><p><code>/* NOTE: maxproc and hard_maxproc values are subject to device specific scaling in bsd_scale_setup <em>/<br /> #define HNPROC 2500 /</em> based on thread_max */<br /> int maxproc = NPROC;<br /> </code></p></pre>
<p></p> 
<h2>一、传统 Unix 方法 <code>fork()</code> 与 <code>exec()</code></h2> 
<p>在传统的 Unix 系统中，<code>fork()</code> 是唯一用来创建新进程的方法，该方法将复刻一个当前进程的完整结构，包括二进制代码。所以负责启动其他 App 的进程为了能跑其他人的程序，还需要配合 <code>exec()</code> 方法，把 <code>fork</code> 出来的进程的 image 覆盖成新 App 的。</p> 
<p>macOS 的 BSD 部分也提供了 <code>fork()</code> 方法，返回值是 <code>pid_t</code>，为 <code>0</code> 即表示当前跑在子进程，<code>-1</code> 是失败，其他就是父进程的 <code>pid</code>。参考 MTU 课程的一个示例代码:</p> 
<pre><code>#include  &lt;stdio.h&gt;
#include  &lt;sys/types.h&gt;
<p>#define MAX_COUNT 200</p>
<p>void ChildProcess(void); /* child process prototype <em>/<br /> void ParentProcess(void); /</em> parent process prototype */</p>
<p>void main(void)<br /> {<br /> pid_t pid;</p>
<pre><code> pid = fork();
 if (pid == 0) 
      ChildProcess();
 else 
      ParentProcess();
</code></pre>
<p>}</p>
<p>void ChildProcess(void)<br /> {<br /> int i;</p>
<pre><code> for (i = 1; i &amp;lt;= MAX_COUNT; i++)
      printf("   This line is from child, value = %d\n", i);
 printf("   *** Child process is done ***\n");
</code></pre>
<p>}</p>
<p>void ParentProcess(void)<br /> {<br /> int i;</p>
<pre><code> for (i = 1; i &amp;lt;= MAX_COUNT; i++)
      printf("This line is from parent, value = %d\n", i);
 printf("*** Parent is done ***\n");
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>BSD 提供的 <code>exec()</code> 方法有很多，可以<a href="https://www.freebsd.org/cgi/man.cgi?query=exec&amp;sektion=3">参考这里</a>:</p> 
<pre><code>execl, execlp, execle, exect, execv, execvp, execvP -- execute a file
</code></pre> 
<p>但最终都会进入 <code>execve()</code> 系统调用，这是内核提供给用户空间用于打开其他程序的唯一接口。</p> 
<h3>1.1 <code>fork()</code></h3> 
<h4>1.1.1 用户空间的准备工作</h4> 
<p>在进入内核实现之前，<code>fork()</code> 在用户空间还做了一大堆事情，这些是在 <code>libSystem</code> 里面实现的，<a href="https://opensource.apple.com/source/Libsystem/">源码可以在这里找到</a>。</p> 
<p>我们的示例代码在调用 <code>fork()</code> 函数之后，就会先进入 <code>libSystem</code> 调用 <code>libSystem_atfork_prepare()</code> 处理注册的 hooks，接下来如果是动态库就走 <code>dyld</code> 的 <code>_dyld_fork_child()</code> 方法，静态库就不走 <code>dyld</code> 了。(我找到了函数实现但是没有找到判断与调用的地方。)</p> 
<p><em>在 <code>dyld</code> 43 版本还有对静态库的处理 <code>_dyld_fork_parent()</code> 但是最新的版本（655.1.1）已经只剩下 <code>_dyld_fork_child()</code> 了。</em></p> 
<pre><code>// Libsystem-1252.250.1 
// init.c()
static const struct _libc_functions libc_funcs = {
    .version = 1,
    .atfork_prepare = libSystem_atfork_prepare,
    .atfork_parent = libSystem_atfork_parent,
    .atfork_child = libSystem_atfork_child,
};
</code></pre> 
<p>接下来 <code>libSystem</code>, <code>dyld</code> 和 <code>xnu</code> 会有一系列复杂的互相调用。《Mac OS X Internals》书中介绍的版本比较旧，新的代码和书中所说的稍有不同，但是原理是差不多的。这一部分直接阅读源码比较困难，所以我选择放弃，直接阅读书里的结论就好。XD</p> 
<p>大家可以到这里<a href="https://books.google.com.hk/books?id=K8vUkpOXhN4C&amp;pg=PA749&amp;lpg=PA749&amp;dq=dyld+fork+child&amp;source=bl&amp;ots=OMoiPUWy1A&amp;sig=ACfU3U0jmHxZ5hwavfAHlEPDcNBbT5AzNA&amp;hl=en&amp;sa=X&amp;ved=2ahUKEwjQsPC9itXlAhWSHXAKHaRuDnEQ6AEwAHoECAkQAQ#v=onepage&amp;q&amp;f=false">参考原文</a></p> 
<p><img decoding="async" src="https://justinyan.eth.limo/7F47E907-6814-4F88-8531-7584DF064572/" alt="" /></p> 
<pre><code>void
libSystem_atfork_child(void)
{
    // first call hardwired fork child handlers for Libsystem components
    // in the order of library initalization above
    _dyld_fork_child();
    _pthread_atfork_child();
    _mach_fork_child();
    _malloc_fork_child();
    _libc_fork_child(); // _arc4_fork_child calls malloc
    dispatch_atfork_child();
#if defined(HAVE_SYSTEM_CORESERVICES)
    _libcoreservices_fork_child();
#endif
    _asl_fork_child();
    _notify_fork_child();
    xpc_atfork_child();
    _libtrace_fork_child();
    _libSC_info_fork_child();
<pre><code>// second call client parent handlers registered with pthread_atfork()
_pthread_atfork_child_handlers();
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<h4>1.1.2 内核空间的实现</h4> 
<p>用户空间准备完了就开始进入内核的 <code>fork()</code> 函数了，实现在 <code>bsd/kern/kern_fork.c</code>:</p> 
<pre><code>int fork(proc_t parent_proc, __unused struct fork_args *uap, int32_t *retval)
</code></pre> 
<p>返回值 <code>0</code> 为成功，其他就是错误码。</p> 
<p>第一个参数 <code>parent_proc</code> 就是调用 fork 的那个 process，第二个参数 <code>uap</code> 已经弃置不用了，第三个参数就是返回的 <code>pid</code>。父进程会收到 hardcoded 的 <code>0</code>。</p> 
<p>关键实现在 <code>fork1()</code> 函数:</p> 
<pre><code>int
fork1(proc_t parent_proc, thread_t *child_threadp, int kind, coalition_t *coalitions)
</code></pre> 
<p>这个函数上来先取父进程的 <code>thread</code> 和 <code>uthread</code>，接着取当前用户 ID <code>kauth_getruid()</code>，也就是我们通过 <code>ps</code> 看到的当前进程由哪个用户创建的信息，我们在 shell 里经常需要 <code>sudo</code> 也就是切换成 root 身份来跑一个进程，这个权限就是通过 <code>kauth</code> 模块管理。</p> 
<p>接下来判断当前进程数是否超限，没问题就继续。</p> 
<pre><code>count = chgproccnt(uid, 1);
</code></pre> 
<p>这里把当前用户进程数 + 1，我想到内核启动的时候，也 hardcode 了一句 + 1 给 <code>launchd</code> 这个进程。接着会判断用户的进程数上限是否超限。</p> 
<p>接下来是安全检查，判断当前用户是否有权限 fork 新的进程，没问题就开始 switch kind 了，一共有三种类型:</p> 
<pre><code>/* process creation arguments */
#define    PROC_CREATE_FORK    0   /* independent child (running) */
#define    PROC_CREATE_SPAWN   1   /* independent child (suspended) */
#define    PROC_CREATE_VFORK   2   /* child borrows context */
</code></pre> 
<p>其中 <code>vfork()</code> 是 <code>fork()</code> 的变种，大部分 Unix-like 系统都有这两种 fork，区别是 vfork 创建的子进程会 block 住父进程，一直等到子进程跑完 exit 然后父进程才会继续，fork 则不会，可自行编译运行我们上文的小 demo。</p> 
<p>至于 <code>spawn</code> 则是给 <code>posix_spawn()</code> 用的，跟 <code>fork()</code> 类似，但是 fork 会继承(或者说复制)父进程的很多资源比如内存，而 spawn 不会。可以<a href="http://man7.org/linux/man-pages/man3/posix_spawn.3.html">参考 Linxu 关于 POSIX Spawn 的文档</a>，简单理解为是给那些性能比较低的设备(比如嵌入式设备)用的。</p> 
<p>我们继续看 <code>fork()</code>:</p> 
<ol> 
 <li><code>cloneproc()</code> // 创建新的 Mach Task (task_t), Unix Process (proc_t) 以及 thread_ 
  <ol> 
   <li><code>forkproc()</code> 
    <ol> 
     <li>主要作用是创建一个新的 <code>proc_t</code> 然后把父进程的信息都塞给他</li> 
     <li>查找可用的 <code>pid</code> 然后赋值给新的 <code>proc_t</code></li> 
     <li>这里参数 <code>inherit_memory</code> 如果为 <code>true</code>，则 <code>vm_map</code> 也会 fork 一份，否则就是重新创建一个 <code>vm_map</code> 然后赋值。<code>fork()</code> 进来的为 <code>true</code>, <code>posix_spawn()</code> 为 <code>false</code>。</li> 
    </ol> </li> 
   <li><code>fork_create_child()</code> 创建新的线程 <code>thread_t</code></li> 
   <li><code>procdup()</code> 这个在书中有提但是新版内核已去掉</li> 
  </ol> </li> 
 <li><code>thread_dup()</code> 
  <ol> 
   <li><code>machine_thread_dup()</code> 不同的架构各有实现，主要是复制了当前线程的寄存器信息，FPU 信息等硬件相关的上下文信息。</li> 
  </ol> </li> 
 <li><code>task_clear_return_wait()</code> 
  <ol> 
   <li><code>thread_wakeup()</code></li> 
   <li><code>thread_wakeup_with_result()</code> <pre><code>```
#define thread_wakeup_with_result(x, z)     \
thread_wakeup_prim((x), FALSE, (z))
```
</code></pre> </li> 
   <li><code>thread_wakeup_prim()</code><p></p> </li> 
  </ol> </li> 
</ol> 
<p>书中曰最终会进入 <code>thread_resume()</code> 但是我又没找到从哪里进入的🤦‍♂️。</p> 
<h3>1.2 <code>execve()</code></h3> 
<p>实现在 <code>bsd/kern/kern_exec.c</code>，我们来个示例代码看看:</p> 
<pre><code>#include &lt;stdio.h&gt; 
#include &lt;sys/types.h&gt; 
#include &lt;unistd.h&gt;  
#include &lt;stdlib.h&gt; 
#include &lt;errno.h&gt;   
#include &lt;sys/wait.h&gt; 
<p>int main() {<br /> pid_t pid;<br /> int status, died;</p>
<pre><code>pid = fork();

if (pid == 0) {
    printf("%s\n", "parent");

} else {
    int ret = execve("/bin/date",0,0);
    printf("%d\n", ret);
}
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>输出如下:</p> 
<pre><code>➜ ./a.out
parent
Wed Nov  6 18:55:45 CST 2019
</code></pre> 
<p>可以看到子进程已经被 <code>/bin/date</code> 覆盖了。同样的，这个函数也有用户空间和内核空间实现，上面示例我们用的接口是 POSIX 定义的:</p> 
<pre><code>int  execve(const char * __file, char * const * __argv, char * const * __envp);
</code></pre> 
<p>接受文件路径参数，参数列表和环境参数。</p> 
<p>到了内核这个函数则是:</p> 
<pre><code>// bsd/kern/kern_exec.c
int
execve(proc_t p, struct execve_args *uap, int32_t *retval)
</code></pre> 
<p><code>p</code> 是当前进程，<code>uap</code> 是用户空间传过来的参数，有三个:</p> 
<ul> 
 <li><code>uap-&gt;fname</code> 文件名</li> 
 <li><code>uap-&gt;argp</code> 参数列表</li> 
 <li><code>uap-&gt;envp</code> 环境参数</li> 
</ul> 
<p>对应用户空间里我们传的三个参数。最后 <code>retval</code> 是给上层的返回值，函数自身返回 <code>0</code> 则成功。</p> 
<p>该函数的主要实现在 <code>__mac_execve()</code>。</p> 
<p>先组装一个 <code>image_params</code> 数据结构:</p> 
<pre><code>struct image_params {
    user_addr_t ip_user_fname;      /* argument */
    user_addr_t ip_user_argv;       /* argument */
    user_addr_t ip_user_envv;       /* argument */
    int     ip_seg;         /* segment for arguments */
    struct vnode    *ip_vp;         /* file */
    struct vnode_attr   *ip_vattr;  /* run file attributes */
    struct vnode_attr   *ip_origvattr;  /* invocation file attributes */
    cpu_type_t  ip_origcputype;     /* cputype of invocation file */
    cpu_subtype_t   ip_origcpusubtype;  /* subtype of invocation file */
    char        *ip_vdata;      /* file data (up to one page) */
    int     ip_flags;       /* image flags */
    int     ip_argc;        /* argument count */
    int     ip_envc;        /* environment count */
    int     ip_applec;      /* apple vector count */
<pre><code>char        *ip_startargv;      /* argument vector beginning */
char        *ip_endargv;    /* end of argv/start of envv */
char        *ip_endenvv;    /* end of envv/start of applev */

char        *ip_strings;        /* base address for strings */
char        *ip_strendp;        /* current end pointer */

int         ip_argspace;    /* remaining space of NCARGS limit (argv+envv) */
int     ip_strspace;        /* remaining total string space */

user_size_t     ip_arch_offset;     /* subfile offset in ip_vp */
user_size_t     ip_arch_size;       /* subfile length in ip_vp */
char        ip_interp_buffer[IMG_SHSIZE];   /* interpreter buffer space */
int     ip_interp_sugid_fd;     /* fd for sugid script */

/* Next two fields are for support of architecture translation... */
struct vfs_context  *ip_vfs_context;    /* VFS context */
struct nameidata *ip_ndp;       /* current nameidata */
thread_t    ip_new_thread;      /* thread for spawn/vfork */

struct label    *ip_execlabelp;     /* label of the executable */
struct label    *ip_scriptlabelp;   /* label of the script */
struct vnode    *ip_scriptvp;       /* script */
unsigned int    ip_csflags;     /* code signing flags */
int     ip_mac_return;      /* return code from mac policy checks */
void        *ip_px_sa;
void        *ip_px_sfa;
void        *ip_px_spa;
void        *ip_px_smpx;        /* MAC-specific spawn attrs. */
void        *ip_px_persona;     /* persona args */
void        *ip_cs_error;       /* codesigning error reason */

uint64_t ip_dyld_fsid;
uint64_t ip_dyld_fsobjid;
</code></pre>
</code><p><code>};<br /> </code></p></pre>
<p></p> 
<p>组装完了之后就 active 一下 image:</p> 
<pre><code>static int
exec_activate_image(struct image_params *imgp)
</code></pre> 
<p>这个函数主要是分配内存，权限检查，通过 <code>namei()</code> 方法找到该二进制文件，使用 <code>vn</code> 接口(跟文件系统无关的抽象接口)读取文件头，最多读一页。</p> 
<pre><code>error = vn_rdwr(UIO_READ, imgp-&gt;ip_vp, imgp-&gt;ip_vdata, PAGE_SIZE, 0,
        UIO_SYSSPACE, IO_NODELOCKED,
        vfs_context_ucred(imgp-&gt;ip_vfs_context),
        &amp;resid, vfs_context_proc(imgp-&gt;ip_vfs_context));
</code></pre> 
<p>读到文件头信息之后再循环走一遍，判断是否如下三种:</p> 
<pre><code>{ exec_mach_imgact,     "Mach-o Binary" }, // 普通的单架构 Mach-o 二进制文件
{ exec_fat_imgact,      "Fat Binary" }, // 多架构 Mach-o 二进制文件
{ exec_shell_imgact,        "Interpreter Script" }, // 脚本
</code></pre> 
<p>找到了就使用对应 <code>imgact</code> 转成函数指针然后调用它，传入 <code>imgp</code> 参数。</p> 
<pre><code>error = (*execsw[i].ex_imgact)(imgp);
</code></pre> 
<p>我们直接看 <code>exec_mach_imgact()</code>:</p> 
<pre><code>static int
exec_mach_imgact(struct image_params *imgp)
</code></pre> 
<p>这个函数最重要的地方是：</p> 
<pre><code>lret = load_machfile(imgp, mach_header, thread, &amp;map, &amp;load_result);
</code></pre> 
<p><code>load_machfile()</code> 实现在 <code>bsd/kern/mach_loader.c</code> 里面。负责分配物理内存和虚拟内存，如果有 <code>ASLR</code> (就是内存 offset 加个随机偏移，默认开)就随机一下，然后解析 Mach-o 文件，根据 Mach-o 文件的 load commands 信息把二进制数据装进内存。</p> 
<p>其中用到了 <code>parse_machfile()</code> 方法处理 Mach-o 文件里的 load commands。我们知道有了 ASLR 之后大家的入口都从 <code>LC_UNIXTHREAD</code> 变成了 <code>LC_MAIN</code>。这个方法就把这些信息都保存到 <code>load_result_t</code> 里面然后返回， <code>load_result_t</code> 里包含了 <code>threadstate</code>，里面就有 <code>entry_point</code> 信息。</p> 
<p>load mach file 结束后 <code>activate_exec_state()</code></p> 
<pre><code>static int
activate_exec_state(task_t task, proc_t p, thread_t thread, load_result_t *result)
</code></pre> 
<p>这个函数会调用 <code>thread_setentrypoint()</code> 把之前函数入口 <code>entry_point</code> 地址塞进 <code>eip</code> 寄存器于是函数就愉快地被调用了。</p> 
<pre><code>thread_setentrypoint(thread, result-&gt;entry_point);
</code></pre> 
<pre><code>// i386 实现
#define CAST_DOWN_EXPLICIT( type, addr )  ( ((type)((uintptr_t) (addr))) ) 
<p>/*</p>
</code>
 <ul>
  <code> <li> <p>thread_setentrypoint:</p> </li> <li></li> <li> <p>Sets the user PC into the machine</p> </li> <li> <p>dependent thread state info.<br /> */<br /> void<br /> thread_setentrypoint(thread_t thread, mach_vm_address_t entry)<br /> {<br /> pal_register_cache_state(thread, DIRTY);<br /> if (thread_is_64bit_addr(thread)) {<br /> x86_saved_state64_t *iss64;</p> <pre><code> iss64 = USER_REGS64(thread);

 iss64-&amp;gt;isf.rip = (uint64_t)entry;
</code></pre> <p>} else {<br /> x86_saved_state32_t *iss32;</p> <pre><code> iss32 = USER_REGS32(thread);

 iss32-&amp;gt;eip = CAST_DOWN_EXPLICIT(unsigned int, entry);
</code></pre> <p>}<br /> }<br /> </p></li></code>
 </ul></pre>
<p></p>   
<p>这里涉及 <code>i386</code> 架构的寄存器设计，以底下的 32 位为例，<code>eip</code> 就是 PC 寄存器(Program Counter Register)。</p> 
<pre><code>#define REG_PC  EIP
#define REG_FP  EBP
#define REG_SP  UESP
#define REG_PS  EFL
#define REG_R0  EAX
#define REG_R1  EDX
</code></pre> 
<p>在 <code>i386</code> 或曰 <code>x86</code> 架构里面，这个寄存器就是下一个指令会访问到的内存地址。于是我们将它设置为函数入口，该函数就开始了。</p> 
<h2>1.3 <code>LC_MAIN</code> 的 entryoff</h2> 
<p>有了 <code>ASLR</code> 之后入口地址不再是静态的偏移量而是每次都会随机一下。如果是以前的入口在 <code>LC_UNIXTHREAD</code> 的，这时候取 entry point 就直接赋值。</p> 
<p>但是 <code>LC_MAIN</code> 入口的却会传给 <code>LC_LOAD_DYLINKER</code> 段里面指定使用的 <code>dyld</code>。由于 Release App 基本都会去掉 debugging symbol 放进 <code>dSYM</code>，方便起见我们直接看我的 Debug 版的 Just Focus for Mac:</p> 
<pre><code>Load command 11
       cmd LC_MAIN
   cmdsize 24
  entryoff 535536
 stacksize 0
</code></pre> 
<p><code>entryoff</code> 这个偏移量是基于文件初始位置的。</p> 
<p><code>535536</code> 转成 hex 就是 <code>0x000082BF0</code>，再加上 macOS 上的基准地址 <code>0x100000000</code> 就是 <code>0x100082BF0</code>。方便起见我们直接用 MachOView 来看看 <code>(__TEXT,__text)</code> 段里的数据</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/macos_app_justfocus_main.jpg" alt="" /></p> 
<p>可以看到这里就是我们的 <code>_main()</code> 函数入口。当然这些数值都是静态的，当 App 被加入内存时，内核会计算偏移量所以运行时的地址还得再加上那个偏移量。</p> 
<p>接下来 <code>parser_machinefile()</code> 就会去调用 <code>load_dylinker()</code>，初始化一些 <code>dylddata</code> 然后又回去调用 <code>parse_machinefile()</code> 一次。这一次，parse 的不是别人，而是 <code>LC_LOAD_DYLINKER</code> 里指定的 <code>dyld</code>，比如上面的 <code>/usr/lib/dyld</code>。</p> 
<p>这个家伙当然不用 <code>LC_MAIN</code> 而是 <code>LC_UNIXTHREAD</code> 啦:</p> 
<pre><code>Load command 12
        cmd LC_UNIXTHREAD
    cmdsize 184
     flavor x86_THREAD_STATE64
      count x86_THREAD_STATE64_COUNT
   rax  0x0000000000000000 rbx 0x0000000000000000 rcx  0x0000000000000000
   rdx  0x0000000000000000 rdi 0x0000000000000000 rsi  0x0000000000000000
   rbp  0x0000000000000000 rsp 0x0000000000000000 r8   0x0000000000000000
    r9  0x0000000000000000 r10 0x0000000000000000 r11  0x0000000000000000
   r12  0x0000000000000000 r13 0x0000000000000000 r14  0x0000000000000000
   r15  0x0000000000000000 rip 0x0000000000001000
rflags  0x0000000000000000 cs  0x0000000000000000 fs   0x0000000000000000
</code></pre> 
<p>于是设置好 entry point，通过 <code>dyld</code> 起飞！</p> 
<h2>二、dyld 如何调用 App 入口</h2> 
<p>内核的 <code>fork()</code> 和 <code>exec()</code> 任务到给 thread 设置 entry point 之后就结束了。至于为什么往寄存器里塞一个函数指针地址它就开始跑起来，那就涉及到汇编，CPU 如何执行指令了。<a href="http://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html">阮一峰的科普文章《汇编语言入门教程》</a>写得很浅显易懂可以参考一下。</p> 
<p>接下来我们切换到 <code>dyld</code> 的源码。<code>dyld</code> 在模拟器和真机上有不同的启动入口:</p> 
<pre><code>// configs/dyld.xcconfig
</code><p><code>ENTRY[sdk=<em>simulator</em>] = -Wl,-e,_start_sim<br /> ENTRY[sdk=iphoneos*] = -Wl,-e,__dyld_start<br /> ENTRY[sdk=macosx*] = -Wl,-e,__dyld_start<br /> </code></p></pre>
<p></p> 
<p>入口函数的实现是汇编，在 <code>dyldStartup.s</code> 文件。我们可以搜索关键词 <code>call</code>:</p> 
<pre><code>// i386 实现
    .text
    .align  4, 0x90
    .globl __dyld_start
__dyld_start:
    popl    %edx        # edx = mh of app
    pushl   $0      # push a zero for debugger end of frames marker
    movl    %esp,%ebp   # pointer to base of kernel frame
    andl    $-16,%esp       # force SSE alignment
    subl    $32,%esp    # room for locals and outgoing parameters
<pre><code>call    L__dyld_start_picbase
</code></pre>
<p>L__dyld_start_picbase:<br /> popl %ebx # set %ebx to runtime value of picbase</p>
<pre><code>movl    Lmh-L__dyld_start_picbase(%ebx), %ecx # ecx = prefered load address
movl    __dyld_start_static_picbase-L__dyld_start_picbase(%ebx), %eax
subl    %eax, %ebx      # ebx = slide = L__dyld_start_picbase - [__dyld_start_static_picbase]
addl    %ebx, %ecx  # ecx = actual load address
# call dyldbootstrap::start(app_mh, argc, argv, slide, dyld_mh, &amp;amp;startGlue)
movl    %edx,(%esp) # param1 = app_mh
movl    4(%ebp),%eax    
movl    %eax,4(%esp)    # param2 = argc
lea     8(%ebp),%eax    
movl    %eax,8(%esp)    # param3 = argv
movl    %ebx,12(%esp)   # param4 = slide
movl    %ecx,16(%esp)   # param5 = actual load address
lea 28(%esp),%eax
movl    %eax,20(%esp)   # param6 = &amp;amp;startGlue
call    __ZN13dyldbootstrap5startEPK12macho_headeriPPKclS2_Pm   
movl    28(%esp),%edx
cmpl    $0,%edx
jne Lnew

    # clean up stack and jump to "start" in main executable
movl    %ebp,%esp   # restore the unaligned stack pointer
addl    $4,%esp     # remove debugger end frame marker
movl    $0,%ebp     # restore ebp back to zero
jmp *%eax       # jump to the entry point

# LC_MAIN case, set up stack for call to main() 
</code></pre>
</code><p><code>Lnew: movl 4(%ebp),%ebx<br /> movl %ebx,(%esp) # main param1 = argc<br /> leal 8(%ebp),%ecx<br /> movl %ecx,4(%esp) # main param2 = argv<br /> leal 0x4(%ecx,%ebx,4),%ebx<br /> movl %ebx,8(%esp) # main param3 = env<br /> </code></p></pre>
<p></p> 
<p>所以在我们的 App 的函数入口被调用之前，<code>dyldbootstrap::start(app_mh, argc, argv, slide, dyld_mh, &amp;startGlue)</code>函数会先被调用，它的返回值是真正 App 的函数入口，比如说 <code>main()</code>。</p> 
<pre><code>uintptr_t start(const struct macho_header* appsMachHeader, int argc, const char* argv[], 
                intptr_t slide, const struct macho_header* dyldsMachHeader,
                uintptr_t* startGlue)
</code></pre> 
<p>这个函数调用了 <code>dyld::_main()</code> 这个函数才是重点，上面不同架构的汇编都会进这里，只是参数各有不同。这个函数会 load 所有的动态库 image，初始化，最后再拿到真正的 App 入口，然后返回。最后汇编代码里就会 <code>jmp</code> 到 App 入口，于是 App 就愉快地启动了。</p> 
<h2>三、launchd</h2> 
<p>如果你在 Activity Monitor App 里选中一个进程，点左上角的感叹号，你可以看到当前进程的 Parent Process。然后你就会发现基本上所有你通过 Finder, Launchpad 之类的方式启动的 App(命令行的 <code>open</code> 也是)，它们的 parent process 都是 <code>launchd</code> (当然 App 自行创建的子进程就不是，比如 Google Chrome Helper)。在 iOS 的 Crash Log 里，App 的 parent process 也是 <code>launchd</code>。</p> 
<p>在 macOS 上我们可以使用系统提供的 <a href="https://developer.apple.com/documentation/coreservices/launch_services">Launch Service</a> 来启动其他 App，最终也是由 <code>launchd</code> 来完成 <code>fork()</code> 和 <code>execve()</code>。</p> 
<p><code>launchd</code> 的 parent process 是 <code>kernel_task</code>。<code>kernel_task</code> 进程就是内核进程本程了，在内核启动时自行创建，实现在 <code>bsd/kern/bsd_init.c</code> 的 <code>bsd_init(void)</code> 函数。</p> 
<p><code>launchd</code> 是 Mac OS X Tiger 10.4 开始引入的特性，在 Kernel 启动时创建，然后它负责创建其他系统守护进程(Daemons)，也负责创建系统登录界面。</p> 
<p>还有另一个服务是 <code>launchctl</code>，可以跟 <code>launchd</code> 进行 IPC 通信，经常被用来做开机启动任务。<a href="https://www.soma-zone.com/LaunchControl/">LaunchControl.app</a> 就是非常好的 <code>launchctl</code>/<code>launchd</code> 图形界面。</p> 
<h2>四、小结</h2> 
<p>Unix 的 <code>fork()</code> 和 <code>execve()</code> 方法在上学的时候学校曾经教过。但是一则当时的讲解还比较偏高级抽象，二则年代久远已经记不太清了，所以回顾学习这一段的时候还是费了点力气去了解诸如汇编、寄存器之类的概念。Apple 开源的代码还是很多的，除了内核，大量的系统服务也都开源了，非常有助学习。最近学习内核代码，一边看代码一边跟着书本理解，总让我有一种“源码在手，天下我有”的错觉。XD</p> 
<h2>内核系列文章</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></li> 
 <li><a href="https://justinyan.me/post/4040">macOS 内核之网络信息抓包(三)</a></li> 
 <li><a href="https://justinyan.me/post/4023">macOS 内核之网络信息抓包(二)</a></li> 
 <li><a href="https://justinyan.me/post/4009">macOS 内核之网络信息抓包(一)</a></li> 
 <li><a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
 <li><a href="https://justinyan.me/post/3982">macOS 内核之内存占用信息</a></li> 
 <li><a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息</a></li> 
 <li><a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a></li> 
 <li><a href="https://justinyan.me/post/3961">macOS 内核之从 I/O Kit 电量管理开始</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="http://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html">汇编语言入门教程</a></li> 
 <li><a href="https://stackoverflow.com/questions/4358976/nsthread-vs-pthreads">objective c - NSThread VS pthreads - Stack Overflow</a></li> 
 <li><a href="http://www.csl.mtu.edu/cs4411.ck/www/NOTES/process/fork/create.html">The fork() System Call</a></li> 
 <li><a href="https://www.freebsd.org/cgi/man.cgi?query=exec&amp;sektion=3">exec(3)</a></li> 
 <li><a href="https://www.jianshu.com/p/72e34948dac0">App启动过程 - dyld加载动态库 - 简书</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x5185;&#x6838;&#x4E4B;&#x7F51;&#x7EDC;&#x4FE1;&#x606F;&#x6293;&#x5305;(&#x4E09;)</title>
        <link>https://justinyan.eth.limo/ED79A0B8-81BA-4320-AE7F-6CC50A5F4C03/</link>
        <guid>https://justinyan.eth.limo/ED79A0B8-81BA-4320-AE7F-6CC50A5F4C03/</guid>
        <pubDate>Mon, 04 Nov 2019 14:29:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/darwin_xnu_netowrk_03.jpg" alt="macOS 内核之网络信息抓包(三)" /></p> 
<p>经过前两篇提到的尝试之后，终于来到 BPF 了。由于 nstat 在内核中定义为私有接口，所以它的数据虽然现成，用起来却一点也不简单。那么有没有更厉害一点的方法呢？</p> 
<p>朋友听说我在学习这方面的技术，于是推荐了一个关键词: BPF。我们知道抓包界有一个大名鼎鼎的工具叫做 <code>tcpdump</code>，它的核心原理就是使用了 BPF 技术(基于 pcap 接口)。</p> 
<h2>一、什么是 BPF?</h2> 
<p>我阅读了 1992 年 BPF 发表的论文，顺带发现了 <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/XHlqIqPvKw8" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;Wireshake 的 SharkFest '11 Keynote</a> 的 <a href="https://sharkfest.wireshark.org/sharkfest.11/presentations/McCanne-Sharkfest'11_Keynote_Address.pdf">PDF</a>，才知道原来 TCPDump 是 Steve McCanne 1988 年在加州大学伯克利分校选修编译器课程的时候，跟其他同学一起做的，BPF 可以看做是当时他们做 <code>tcpdump</code> 时顺手开发的。有点像我们上大学时老师要求做的大作业，只不过人家的大作业是改变世界的大作业😂。</p> 
<p>当时 Steve 和同学组成一个四个人的 Research Group:</p> 
<ul> 
 <li>Steve McCanne</li> 
 <li>Van Jacobson</li> 
 <li>Sally Floyd</li> 
 <li>Vern Paxson</li> 
</ul> 
<p>其中 Steve McCanne 和 Van Jacobson 负责网络抓包的部分(他们俩也是论文的作者)。他们开始用 Sun 的抓包工具但是用起来非常抓狂，于是他们决定写一个自己的工具，也就是后来的 <a href="https://www.tcpdump.org/">tcpdump</a>。其中跑在 Unix 内核的部分就是 BPF，Berkeley Packet Filter 的缩写，最后于 1992 年 12 月发表论文。</p> 
<p>Packet Filter 这种技术是为了网络监控程序设计的，我们知道内核空间与用户空间的虚拟内存实现不同，如果要从内核传递数据到用户空间需要经过地址空间转换，还要 copy 数据，是一种比较耗时的操作。(这里 Unix 和 Linux 的虚拟内存实现还不一样，我尚未仔细学习，目前只知道操作耗时。)</p> 
<p>为了减少 copy 操作，早期有些 Unix 系统提供了包过滤技术，比如 CMU/Stanford Packet Filter。BPF 论文发表的时候称性能比 Sun's NIT 快 100 倍，吊打所有对手。这篇论文并不长有兴趣的读者可以看一下: <a href="http://www.tcpdump.org/papers/bpf-usenix93.pdf">The BSD Packet Filter: A New Architecture for User-level Packet Capture</a></p> 
<p>根据我的阅读理解，Packet Filter 技术应该都会提供 pseudo-machine (伪代码虚拟机)把 bytecode (字节码)转为机器码，也就是虚拟机，著名的虚拟机比如 Java 的 JVM，把源码转成 <code>.class</code> 的字节码然后每个平台各自跑个虚拟机从而实现跨平台。BPF 的操作也是通过 bytecode 编写。FreeBSD, NetBSD 都提供了 JIT 编译器给 BPF，Linux 也有不过默认是关的。</p> 
<p>由于 BPF 设计的时候摒弃了以前 Packet Filter 基于栈设计(Stack based)的虚拟机的做法(比如 JVM 就是)，改为使用基于寄存器(Register based)设计的虚拟机，充分利用了当时还算新技术的 CPU RISC (精简指令集)的优势。(题外: RISC 的发明者 David Patterson 也是加州大学伯克利分校的)</p> 
<p>另外 BPF 还做了一个看似非常小的改进：在内核层接到 device interface 丢过来的包时就进行 filter，不需要的包直接丢弃，不会多出任何无效 copy。从而比旧时代的技术有着显著的性能优势。论文中他们还提到 BPF 的多项优化细节，这里不再赘述，有兴趣的读者可自行阅读论文。</p> 
<p>总而言之 BPF 技术提供了一个原始接口，可以获取 Data Link Level (数据链路层)的数据包，并且支持数据包过滤，由于采用虚拟机在内核层直接执行 bytecode，所以过滤逻辑实际上跑在内核层，性能十分优越。在 OSI 模型中，Link Level 是最接近物理层的了，在这一层抓包当然是最王道的选择啦。</p> 
<p><em>P.S. 系统内核是没必要走 Packet Filter 的，这个技术是给用户空间的 App 用的，内核本来就有所有数据包，所以 nstat 不会用到这些技术。</em></p> 
<h2>二、BPF/pcap 抓包</h2> 
<h3>2.1 裸写 BPF 指令</h3> 
<p>如第一节所说，bpf 在内核层实现了一个可以执行 bpf 字节码的虚拟机，所以理论上我们可以裸写 bpf 指令，跟写汇编差不多。XNU 的 BSD 部分实现了 bpf，需要引入头文件:</p> 
<pre><code>#import &lt;net/bpf.h&gt;
</code></pre> 
<p>以下是 BPF program 示例代码(来自 <a href="http://newosxbook.com/bonus/vol1ch16.html">Mac OS X Internals</a>):</p> 
<pre><code>int installFilter(int   fd, 
         unsigned char  Protocol, 
             unsigned short Port)
{
    struct bpf_program bpfProgram = {0};
<pre><code>/* Dump IPv4 packets matching Protocol and (for IPv4) Port only */

/* @param: fd - Open /dev/bpfX handle.               */

const int IPHeaderOffset = 6 + 6 + 2; /* 14 */

/* Assuming Ethernet (DLT_EN10MB) frames, We have: 
 *  
 * Ethernet header = 14 = 6 (dest) + 6 (src) + 2 (ethertype)
 * Ethertype is 8-bits (BFP_P) at offset 12
 * IP header len is at offset 14 of frame (lower 4 bytes). 
 * We use BPF_MSH to isolate field and multiply by 4
 * IP fragment data is 16-bits (BFP_H) at offset  6 of IP header, 20 from frame
 * IP protocol field is 8-bts (BFP_B) at offset 9 of IP header, 23 from frame 
 * TCP source port is right after IP header (HLEN*4 bytes from IP header)
 * TCP destination port is two bytes later
 *
 * Note Port offset assumes that this Protocol == IPPROTO_TCP!
 * If it isn't, adapting this to UDP port is left as an exercise to the reader,
 * as is extending this to support IPv6, as well..
 */
</code></pre>
<p>struct bpf_insn insns[] = {</p>
<p>/* Uncomment this line to accept all packets (skip all checks) */<br /> // BPF_STMT(BPF_RET + BPF_K, (u_int)-1), // Return -1 (packet accepted)</p>
<p>BPF_STMT(BPF_LD + BPF_H + BPF_ABS, 6+6), // Load ethertype 16-bits from 12 (6+6)<br /> BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, ETHERTYPE_IP, 0, 10), // Test Ethertype or jump(10) to reject<br /> BPF_STMT(BPF_LD + BPF_B + BPF_ABS, 23), // Load protocol (= IP Header + 9 bytes)<br /> BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K , Protocol, 0, 8), // Test Protocol or jump(8) to reject<br /> BPF_STMT(BPF_LD + BPF_H + BPF_ABS, IPHeaderOffset+6),// Load fragment offset field<br /> BPF_JUMP(BPF_JMP + BPF_JSET+ BPF_K , 0x1fff, 6, 0), // Reject (jump 6) if more fragments<br /> BPF_STMT(BPF_LDX + BPF_B + BPF_MSH, IPHeaderOffset), // Load IP Header Len (x4), into BPF_IND<br /> BPF_STMT(BPF_LD + BPF_H + BPF_IND, IPHeaderOffset), // Skip hdrlen bytes, load TCP src<br /> BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K , Port, 2, 0), // Test src port, jump to "port" if true</p>
<p>/* If we're still here, we know it's an IPv4, unfragmented, TCP packet, but source port</p>

  <ul> 
   <li>doesn't match - maybe destination port does?<br /> */</li> 
  </ul>
</code><p><code>BPF_STMT(BPF_LD + BPF_H + BPF_IND, IPHeaderOffset+2), // Skip two more bytes, to load TCP dest<br /> /* port <em>/<br /> BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K , Port, 0, 1), // If port matches, ok. Else reject<br /> /</em> ok: <em>/<br /> BPF_STMT(BPF_RET + BPF_K, (u_int)-1), // Return -1 (packet accepted)<br /> /</em> reject: */<br /> BPF_STMT(BPF_RET + BPF_K, 0) // Return 0 (packet rejected)<br /> };<br /> </code></p></pre>
<p></p> 
<p>先初始化一个 <code>bpf_program</code> 结构体:</p> 
<pre><code>struct bpf_program {
    u_int bf_len;
    struct bpf_insn *bf_insns;
};
</code><p><code>struct bpf_insn {<br /> u_short code;<br /> u_char jt;<br /> u_char jf;<br /> bpf_u_int32 k;<br /> };<br /> </code></p></pre>
<p></p> 
<p>然后编写指令 <code>bpf_insn</code>，看上去像写汇编一样差不多(虽然我不会)。</p> 
<h3>2.2 使用 libpcap</h3> 
<p>除了写 *pcap 的人之外，在 Unix 上，一般开发者都用 bpf 作者写的 libpacp 封装来操作 bpf。我在 macOS 10.15 Catalina (19A583) 上用 libpcap 实现了一个简单的抓包逻辑，我们可以看一下去掉错误处理的关键代码:</p> 
<pre><code>// 创建一个 bpf_program
struct bpf_program fp;
<p>// 找一下 device interface<br /> char *dev = pcap_lookupdev(errbuf);</p>
<p>// 获取 IP 和 netmask<br /> bpf_u_int32 mask;<br /> bpf_u_int32 net;<br /> pcap_lookupnet(dev, &amp;net, &amp;mask, errbuf);</p>
</code><p><code>// 打开一个 pcap session<br /> pcap_t *handle = pcap_open_live(dev, BUFSIZ, 1, 1000, errbuf);<br /> </code></p></pre>
<p></p> 
<p>我们看下这个函数原型:</p> 
<pre><code>pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms,
        char *ebuf)
</code></pre> 
<p>第一个参数 <code>device</code> 就是 <code>pcap_lookupdev</code> 拿到的 device 了，第二个 <code>snaplen</code> 是 pcap 可以捕获的最大长度，这里填 <code>stdio.h</code> 定义的值 <code>BUFSIZ</code>，也就是 1024 bytes(官网教程说的是 <code>pcap.h</code> 有但是我没找到，只在 <code>stdio.h</code> 里找到了)。</p> 
<p>第三个参数 <code>promisc</code> 是 promiscuous mode 是否打开。promiscuous mode 中文翻译为混杂模式，没打开的时候我们只能获取目标地址为该 interface 的包，打开了之后经过它的包也可以被我们抓到。</p> 
<p>第四个参数 <code>to_ms</code> 是设置超时时间，以 ms 为单位，填 0 就是不设置超时。</p> 
<p>最后一个参数 <code>ebuf</code> 就是错误信息返回了。传入 <code>char *errbuf[PCAP_ERRBUF_SIZE];</code> 就行。</p> 
<p>上一篇我们讲过 PPP 和 Ethernet 包有所不同，如果你只想处理 Ethernet 包的话你可以通过 <code>pcap_datalink()</code> 接口判断 link-layer header。</p> 
<pre><code>if (pcap_datalink(handle) != DLT_EN10MB) {
        fprintf(stderr, "Device %s doesn't provide Ethernet headers - not supported\n", dev);
        return(2);
}
</code></pre> 
<p>前面说过 <code>bpf_program</code> 里都是存的字节码指令，所以我们得编译一下:</p> 
<pre><code>char filter_exp[] = "port 23";
pcap_compile(handle, &amp;fp, filter_exp, 0, net)
</code></pre> 
<p>最后把 filter 设置好:</p> 
<pre><code>pcap_setfilter(handle, &amp;fp)
</code></pre> 
<p>然后我们就可以愉快地抓包了。使用 <code>pcap_next()</code> 可以获得一个 filter 过的包。</p> 
<pre><code>/* Grab a packet */
packet = pcap_next(handle, &amp;header);
/* Print its length */
printf("Jacked a packet with length of [%d]\n", header.len);
/* And close the session */
pcap_close(handle);
</code></pre> 
<p>完整示例可以参考 tcpdump 官网的这篇文章: <a href="https://www.tcpdump.org/pcap.html">Programming with pcap</a></p> 
<h3>2.3 pcap_loop</h3> 
<p>一般情况下我们不会只抓一个包，我们可以用 <code>pcap_loop()</code> 来循环抓包:</p> 
<pre><code>int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
</code></pre> 
<p>第一个参数就是上面创建的 <code>handle</code> 了，第二个参数 <code>cnt</code> 是说抓了多少个包之后回调给你。第三个函数 <code>pcap_handler</code> 就是你的回调函数，最后一个是上下文参数，透传的。</p> 
<p>回调函数 <code>pcap_handler</code> 的原型如下:</p> 
<pre><code>typedef void (*pcap_handler)(u_char *arg, const struct pcap_pkthdr *, const u_char *packet);
</code></pre> 
<p>第一个参数 <code>arg</code> 就是 <code>pcap_loop()</code> 注册时最后一个上下文参数，你自己传的。</p> 
<p>第二个参数 <code>pcap_pkthdr</code> 是 pcap 包头，第三个参数 <code>packet</code> 就是网络包啦，解析这两个参数我们就能获得包信息。</p> 
<pre><code>struct pcap_pkthdr {
    struct timeval ts;   time stamp 
    bpf_u_int32 caplen;  length of portion present 
    bpf_u_int32;         lebgth this packet (off wire) 
}
</code></pre> 
<p>因为前面可以设置抓包阈值，所以包本身的时间放在 <code>pcap_pkthdr</code> 里面。</p> 
<p>我们只关心外网 IP 包，不关心 ARP 包，另外 PPP 先不处理，所以过滤一下:</p> 
<pre><code>if (ntohs (eptr-&gt;ether_type) == ETHERTYPE_IP) {}
</code></pre> 
<p>然后可以打印出来了:</p> 
<pre><code>int i;
u_char *ptr; /* printing out hardware header info */
/* copied from Steven's UNP */
ptr = eptr-&gt;ether_dhost;
i = ETHER_ADDR_LEN;
printf(" Destination Address:  ");
do{
    printf("%s%x",(i == ETHER_ADDR_LEN) ? " " : ":",*ptr++);
}while(--i&gt;0);
printf("\n");
</code><p><code>ptr = eptr-&gt;ether_shost;<br /> i = ETHER_ADDR_LEN;<br /> printf(" Source Address: ");<br /> do{<br /> printf("%s%x",(i == ETHER_ADDR_LEN) ? " " : ":",*ptr++);<br /> }while(--i&gt;0);<br /> printf("\n");<br /> </code></p></pre>
<p></p> 
<p>输出结果:</p> 
<pre><code>Ethernet type hex:800 dec:2048 is an IP packet
 Destination Address:   0:0:c:7:ac:ec
 Source Address:   dc:a9:4:77:9c:41
Ethernet type hex:800 dec:2048 is an IP packet
 Destination Address:   0:0:c:7:ac:ec
 Source Address:   dc:a9:4:77:9c:41
</code></pre> 
<p>这样，所有的 IP packet 的 Mac 地址都被我们打印出来了。如果我想打印 IPv4 地址，以及 TCP 协议的端口呢？</p> 
<h3>2.4 处理 TCP 包</h3> 
<p>TCP 是 IP 上层的协议，如果我们要抓 TCP 的包我们可以判断一下 IP packet 里的 protocol number。不过在那之前，我们要先从 packet 里面解出 IP 信息和 TCP 信息。我们参考一下整个包的内存结构：</p> 
<table> 
 <thead> 
  <tr> 
   <th>Variable</th> 
   <th>Location (in bytes)</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>Ethernet</td> 
   <td>x</td> 
  </tr> 
  <tr> 
   <td>IP</td> 
   <td>x + SIZE_ETHERNET</td> 
  </tr> 
  <tr> 
   <td>TCP</td> 
   <td>x + SIZE_ETHERNET + {IP header length}</td> 
  </tr> 
  <tr> 
   <td>payload</td> 
   <td>x + SIZE_ETHERNET + {IP header length} + {TCP header length}</td> 
  </tr> 
 </tbody> 
</table> 
<pre><code>// 原型可见 bsd/netinet/ip.h
// 这里参考 https://www.tcpdump.org/pcap.html
struct sniff_ip {
#ifdef _IP_VHL
    u_char  ip_vhl;         /* version &lt;&lt; 4 | header length &gt;&gt; 2 */
#else
#if BYTE_ORDER == LITTLE_ENDIAN
    u_int   ip_hl:4,        /* header length */
        ip_v:4;         /* version */
#endif
#if BYTE_ORDER == BIG_ENDIAN
    u_int   ip_v:4,         /* version */
        ip_hl:4;        /* header length */
#endif
#endif /* not _IP_VHL */
    u_char  ip_tos;         /* type of service */
    u_short ip_len;         /* total length */
    u_short ip_id;          /* identification */
    u_short ip_off;         /* fragment offset field */
#define    IP_RF 0x8000            /* reserved fragment flag */
#define    IP_DF 0x4000            /* dont fragment flag */
#define    IP_MF 0x2000            /* more fragments flag */
#define    IP_OFFMASK 0x1fff       /* mask for fragmenting bits */
    u_char  ip_ttl;         /* time to live */
    u_char  ip_p;           /* protocol */
    u_short ip_sum;         /* checksum */
    struct  in_addr ip_src,ip_dst;  /* source and dest address */
};
</code></pre> 
<p>出于学习目的我们只看 Ethernet 包，Ethernet 包的包头规定是 14 byets，所以我们偏移 14 bytes 就能得到包体。</p> 
<pre><code>#define SIZE_ETHERNET 14
ip = (struct sniff_ip*)(packet + SIZE_ETHERNET);
</code></pre> 
<p>IP 协议的规定比较复杂，他的 ip header 长度不是固定的，而是 4 字节长度的 word 的个数。</p> 
<pre><code>#define IP_HL(ip)      (((ip)-&gt;ip_vhl) &amp; 0x0f)
</code><p><code>ip = (struct sniff_ip*)(packet + SIZE_ETHERNET);<br /> size_ip = IP_HL(ip)*4;<br /> </code></p></pre>
<p></p> 
<p>TCP header 也不是定长的，同样也是取 4 字节 word 长度的个数。</p> 
<pre><code>tcp = (struct sniff_tcp*)(packet + SIZE_ETHERNET + size_ip);
size_tcp = TH_OFF(tcp)*4;
</code><p><code>// 剩下的就是 payload 了<br /> payload = (u_char *)(packet + SIZE_ETHERNET + size_ip + size_tcp);<br /> </code></p></pre>
<p></p> 
<h3>2.5 打印数据</h3> 
<pre><code>fprintf(stdout,"IP: %s", inet_ntoa(ip-&gt;ip_src));
fprintf(stdout,"Port: %s", ntohs(tcp-&gt;th_sport));
</code><p><code>fprintf(stdout,"IP: %s", inet_ntoa(ip-&gt;ip_dst));<br /> fprintf(stdout,"Port: %s", ntohs(tcp-&gt;th_dport));<br /> </code></p></pre>
<p></p> 
<p>这样我们就获得所有 TCP 包的数据了。</p> 
<p>这里使用 <code>ntohs()</code> 进行转换是因为网络层的 byte order 和 host (CPU 架构)的不一样，network byte order 是用大端(big-endian)，host 则根据 CPU 架构来，从 Mac OS X 支持 i386 开始就是小端了(little-endian)。所以必须把内存里的数据转换一下才能得到正确的数值。</p> 
<p><code>inet_ntoa()</code> 则是把 network byte order 的结构体 <code>in_addr</code> 转换成一个 IPv4 的 string。</p> 
<h2>三、小结</h2> 
<p>以上是如何使用 <code>pcap()</code> 接口抓包。由于我们在 link level 抓的包全都是 packet 数据，可以承载 TCP/UDP, IP/ARP, Ethernet/PPP 等多种非常"原始"的数据，所以处理起来非常感人。</p> 
<p>作为学习之用我觉得挺好的，要付诸生产环境还需要不少功夫。</p> 
<p>这些 packet 包本身是不带进程信息 pid 的，如果我们要把这些包跟进程关联到一起就还需要额外的处理。一种解决方法是根据每个 TCP 连接中系统给分配的 port，从系统调用反查该 port 对应的进程。但是有可能当我们去查询的时候这个连接已经断开了(虽然讲道理 bpf 截获数据包比真正接包的应用还早，但我们可以设置回调间隔，所以不一定)，所以也不一定靠谱。我本来也研究了一下如何从系统获取所有 process 和对应分配的 port，但是很笨地跟上面那一堆 <code>pcap</code> 代码一起忘记 commit 了。所以我重新学习了一遍 pcap 使用，但是不想再去尝试 process 获取 port 了 XD。</p> 
<p>网络层是我目前学习内核遇到最复杂的一部分，涉及的知识点太多，接口非常古老，缺乏文档，需要好好理解上述代码如何处理 packet 的话，我还得阅读 RFC 对 TCP/UDP/IP 等协议的规定。所以我选择了放弃，还是学点其他的知识好了。</p> 
<p>在阅读 BPF 论文的时候，也对这些能做出厉害东西的程序员十分叹服。同时也觉得有些时候我们认为一些技术非常神秘难懂，觉得非常黑科技，但如果能有源码可读，能有论文可辅助，其实原理并不是很难。难的是发明这些技术的人，不仅能理解和掌握这么复杂的技术，而且能把这些离散的点连接起来创造出厉害的东西。</p> 
<h2>内核系列文章</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></li> 
 <li><a href="https://justinyan.me/post/4040">macOS 内核之网络信息抓包(三)</a></li> 
 <li><a href="https://justinyan.me/post/4023">macOS 内核之网络信息抓包(二)</a></li> 
 <li><a href="https://justinyan.me/post/4009">macOS 内核之网络信息抓包(一)</a></li> 
 <li><a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
 <li><a href="https://justinyan.me/post/3982">macOS 内核之内存占用信息</a></li> 
 <li><a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息</a></li> 
 <li><a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a></li> 
 <li><a href="https://justinyan.me/post/3961">macOS 内核之从 I/O Kit 电量管理开始</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://www.freebsd.org/cgi/man.cgi?query=bpf">bpf</a></li> 
 <li><a href="https://www.freebsd.org/cgi/man.cgi?query=bpf">"bpf(4) Berkeley Packet Filter"</a></li> 
 <li><a href="https://www.usenix.org/conference/usenix-winter-1993-conference/bsd-packet-filter-new-architecture-user-level-packet">"The BSD Packet Filter: A New Architecture for User-level Packet Capture"</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Berkeley_Packet_Filter">Berkeley Packet Filter - Wikipedia</a></li> 
 <li><a href="https://sharkfest.wireshark.org/sharkfest.11/presentations/McCanne-Sharkfest'11_Keynote_Address.pdf">"libpcap: An Architecture and Optimization Methodology for Packet Capture"</a></li> 
 <li><a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/XHlqIqPvKw8" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;SharkFest '11 Keynote - YouTube</a></li> 
 <li><a href="https://www.tcpdump.org/pcap.html">Programming with pcap</a></li> 
 <li><a href="http://yuba.stanford.edu/~casado/pcap/section3.html">libpcap packet capture tutorial</a></li> 
 <li><a href="https://linux.die.net/man/3/inet_ntoa">inet_ntoa(3): Internet address change routines - Linux man page</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x5185;&#x6838;&#x4E4B;&#x7F51;&#x7EDC;&#x4FE1;&#x606F;&#x6293;&#x5305;(&#x4E8C;)</title>
        <link>https://justinyan.eth.limo/EAC0D00F-9074-4982-8714-A6316DE46542/</link>
        <guid>https://justinyan.eth.limo/EAC0D00F-9074-4982-8714-A6316DE46542/</guid>
        <pubDate>Fri, 01 Nov 2019 11:41:35 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/11/darwin_xnu_netowrk_02.jpg" alt="macOS 内核之网络信息抓包(二)" /></p> 
<p>书接<a href="https://justinyan.me/post/4009">上回</a>，我们讨论了如何使用 Unix 的 <code>sysctl()</code>接口以及 Unix Domain Socket 来获取系统 network interface 的流量信息。</p> 
<p>我们是从 Activity Monitor.app 开始的，这个 App 不仅能显示整体网卡的流量，还能分进程显示。这回我们还是在 macOS 上实验，看看有没有方法也跟他一样实现进程流量监控。</p> 
<p><em>先说结论: 以我的微末道行，暂未发现靠谱且简单实现方案。有简单的，不靠谱；有靠谱的，不简单。😂</em></p> 
<p><em>希望知道简单靠谱方案的读者朋友可以分享一下。</em></p> 
<h2>一、私有框架接口 NetworkStatistics.framework</h2> 
<p>使用 <code>otool -l</code> 我们可以看到 Activity Monitor.app 用了一个私有的系统库:</p> 
<pre><code>/System/Library/PrivateFrameworks/NetworkStatistics.framework/Versions/A/NetworkStatistics
</code></pre> 
<p>这个库同时也用在了 macOS 的 <code>nettop</code> 命令上。所以如果我们直接调用这个库的 API 那就非常省时省力了。</p> 
<p>使用 <a href="https://github.com/nygard/class-dump">class-dump</a> 把它的头文件 dump 出来:</p> 
<pre><code>class-dump /System/Library/PrivateFrameworks/NetworkStatistics.framework/Versions/A/NetworkStatistics
</code></pre> 
<pre><code>@interface NWStatisticsManager : NSObject
{}
</code>
 <ul>
  <code> <li>(BOOL)addAllUDP:(unsigned long long)arg1;</li> <li>(BOOL)addAllTCP:(unsigned long long)arg1;<br /> </li></code>
 </ul></pre>  
<p>这个可疑的类和接口想必就是我们要寻找的答案了。接下来就是凭经验观察接口猜想看看这些接口怎么用了。我实验过可以非常轻松地获得进程 <code>pid</code>，进程名字 <code>processName</code>，和对应的 <code>rxBytes</code>, <code>rtBytes</code>。</p> 
<p>首先，把 dump 出来的头文件引入自己的工程，同时把 NetworkStatistics.framework 加入 Link Binary With Libraries 列表。这一步比较简单各位可以自行 Google。</p> 
<p>我们以 TCP 为例看看如何使用它的接口:</p> 
<pre><code>NWStatisticsManager *mgr = [[NWStatisticsManager alloc] init];
mgr.delegate = self;
[mgr addAllTCP:0];
</code></pre> 
<p>加完 source 之后会通过回调告诉你所有的 TCP 连接的建立和销毁:</p> 
<pre><code>@protocol NWStatisticsManagerDelegate &lt;NSObject&gt;
<p>@optional</p>
</code>
 <ul>
  <code> <li>(void)statisticsManager:(NWStatisticsManager *)arg1 didReceiveDirectSystemInformation:(NSDictionary *)arg2;</li> <li>(void)statisticsManager:(NWStatisticsManager *)arg1 didRemoveSource:(NWStatisticsSource *)arg2;</li> <li>(void)statisticsManager:(NWStatisticsManager *)arg1 didAddSource:(NWStatisticsSource *)arg2;<br /> @end<br /> </li></code>
 </ul></pre>  
<p>我们获得 <code>NWStatisticsSource</code> 之后要加入它的 <code>delegate</code> 等待回调:</p> 
<pre><code>- (void)sourceDidReceiveCounts:(NWStatisticsSource *)arg1 {
    NWStatisticsTCPSource *tcp = (NWStatisticsTCPSource *)arg1;
    NWSTCPSnapshot *snapshot = [tcp currentSnapshot];
<pre><code>NSLog(@"NWStatisticsManager rx: %llu", snapshot.rxBytes);
NSLog(@"NWStatisticsManager tx: %llu", snapshot.txBytes);
NSLog(@"NWStatisticsManager processName: %@", snapshot.processName);
NSLog(@"NWStatisticsManager processID: %d", snapshot.processID);
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>有数据变化的时候这个回调会被 called 我们就可以愉快地获取各个进程的 tx/rx 数据了，不仅有 bytes, 还有 packets 数据。</p> 
<p><strong>但是正如前文所述，此法简单，却不靠谱。</strong></p> 
<p><code>NWStatisticsManager</code> 作为一个非常上层的接口，经常变更。比如旧版本的接口就是 C 风格的:</p> 
<pre><code>void *NStatManagerCreate(CFAllocatorRef allocator, dispatch_queue_t queue, void (^)(void *));
void NStatManagerDestroy(void *manager);
<p>void NStatSourceSetRemovedBlock(void *source, void (^)());<br /> void NStatSourceSetCountsBlock(void *source, void (^)(CFDictionaryRef));<br /> void NStatSourceSetDescriptionBlock(void *source, void (^)(CFDictionaryRef));</p>
</code><p><code>void NStatManagerAddAllTCP(void *manager);<br /> void NStatManagerAddAllUDP(void *manager);<br /> </code></p></pre>
<p></p> 
<p>有兴趣的朋友可以参考这里: <a href="http://newosxbook.com/bonus/vol1ch16.html">*OS Internals::User Space</a></p> 
<p>接口变更就意味着一旦系统升级我们的代码就得跟着改，而且是从头猜一遍他的接口应该怎么用。又由于里面的实现是黑盒的，我们的猜想不一定对，所以很容易出现用错接口和 Crash。</p> 
<h2>二、私有内核接口 NStat</h2> 
<p>留意到 <code>NetworkStatistics.framework</code> 里面用到的数据结构有 <code>nstat_msg_hdr</code>，据此我们猜测他用了内核的 <code>nstat.h</code> 里的接口。既然上层接口经常改，那么内核接口即使改应该也不会太频繁吧？直接上 <code>nstat</code> 可乎？</p> 
<p>先说结论：<strong>相对比较靠谱，但是非常不简单</strong>。</p> 
<p>我们需要的很多数据在内核代码里也被标记为 <code>PRIVATE</code>:</p> 
<pre><code>#define PRIVATE
</code></pre> 
<p>这些私有的数据结构和 API 都不会公开到 Xcode 能引用的头文件里，比如说最重要的文件 <code>ntstat.h</code> 整个都是 private。所以为了让 Xcode 能编译通过，我们得把这个头文件手动 copy 过来，附带的还有 <code>tcp.h</code>, <code>in_stat.h</code>, <code>net_api_stats.h</code> 等多个文件。</p> 
<h3>2.1 PF_SYSTEM socket 和 ioctl</h3> 
<p>跟上一篇讲 ppp connect 一样，我们需要创建一个 socket 跟内核进行 IPC 通信，不过这次不是用户空间的 <code>AF_LOCAL</code> 而是系统的 <code>AF_SYSTEM</code>/<code>PF_SYSTEM</code>。这是 Darwin XNU 专有的一种 Protocol Family，其他 Unix 系统并未实现。用于用户态的进程请求内核态进程的数据。</p> 
<p>对于 <code>PF_SYSTEM</code> 类型的 socket，XNU 提供了两种协议，分别是: <code>SYSPROTO_EVENT</code> 和 <code>SYSPROTO_CONTROL</code>。详情可参考: <a href="http://newosxbook.com/bonus/vol1ch16.html">http://newosxbook.com/bonus/vol1ch16.html</a></p> 
<p><code>SYSPROTO_EVENT</code> 用于监听内核提供的事件，通过 <code>kev_request</code> 传参，创建后 WiFi 切换、扫描事件，IP 地址更新等各种事件都会通过 socket 消息通知过来。</p> 
<p><code>SYSPROTO_CONTROL</code> 这个就是我们要找的主角了。这个 sockect 给用户空间和 XNU 内核空间的 providers 进程提供了控制通道，一般在 kernel extension 用的比较多，用户空间的 App 几乎没用到。并且，接口全部没有文档。</p> 
<p><code>SYSPROTO_CONTROL</code> 的 providers 用反域名作为 ID，一般都是 Apple 自己的代码，所以是 <code>com.apple</code> 开头，<code>NetworkStatistics.framework</code> 用到的 provider 叫做 <code>com.apple.network.statistics</code>。</p> 
<p>我们需要使用 <code>ioctl()</code> 接口跟这个家伙通信，我们常用的 <code>ifconfig</code> 命令也是通过这个方法。</p> 
<h3>2.2 创建 socket 连接 ioctl provider</h3> 
<p>由于根本没有文档，所以如何创建并连接上这个东西就非常困难，对着 XNU 的 <code>ntstat</code> 实现代码看半天也没用，因为他是通过 <code>ioctl</code> 模块通信的。好在 <a href="https://opensource.apple.com/source/network_cmds/network_cmds-543.260.3/">Apple Open Source</a> 有开源 <code>netstat</code> 的代码，我们可以通过它的代码学习一下，删掉错误处理之后代码如下:</p> 
<pre><code>struct sockaddr_ctl sc;
struct ctl_info    ctl;
int fd;
// 创建一个 PF_SYSTEM socket, protocol 为 SYSPROTO_CONTROL，用于 ioctl() 函数
fd = socket(PF_SYSTEM, SOCK_DGRAM, SYSPROTO_CONTROL);
<p>/* Get the control ID for statistics */<br /> bzero(&amp;ctl, sizeof(ctl));<br /> strlcpy(ctl.ctl_name, NET_STAT_CONTROL_NAME, sizeof(ctl.ctl_name));<br /> // 创建完 socket 之后要先调用 ioctl 获取 ctl_info，我们需要里面的 ctl_id 才能连接 socket<br /> ioctl(fd, CTLIOCGINFO, &amp;ctl)</p>
<p>/* Connect to the statistics control <em>/<br /> bzero(&amp;sc, sizeof(sc));<br /> sc.sc_len = sizeof(sc);<br /> sc.sc_family = AF_SYSTEM;<br /> sc.ss_sysaddr = SYSPROTO_CONTROL;<br /> sc.sc_id = ctl.ctl_id;<br /> sc.sc_unit = 0;<br /> // 连接 socket<br /> connect(fd, (struct sockaddr</em>)&amp;sc, sc.sc_len)</p>
</code><p><code>/* Set socket to non-blocking operation */<br /> // 使用 fcntl() 函数把 socket 读取设置为非阻塞读取<br /> fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK)<br /> </code></p></pre>
<p></p> 
<p>如此就成功创建了一个跟 "com.apple.network.statistics" 通信的 socket 了。</p> 
<h3>2.3 Add Source，获取网卡信息</h3> 
<p>接下来要发送 add source 请求，跟上面使用 <code>NWStatisticsManager</code> 的时候差不多。<code>netstat</code>的源码是发一个 <code>NSTAT_PROVIDER_IFNET</code> 类型的请求:</p> 
<pre><code>nstat_msg_add_src_req *addreq;
nstat_msg_src_added *addedmsg;
nstat_ifnet_add_param *param;
char buffer[sizeof(*addreq) + sizeof(*param)];
ssize_t result;
const u_int32_t    addreqsize =
    offsetof(struct nstat_msg_add_src, param) + sizeof(*param);
<p>/* Setup the add source request */<br /> addreq = (nstat_msg_add_src_req <em>)buffer;<br /> param = (nstat_ifnet_add_param</em>)addreq-&gt;param;<br /> bzero(addreq, addreqsize);<br /> addreq-&gt;hdr.context = (uintptr_t)&amp;buffer;<br /> addreq-&gt;hdr.type = NSTAT_MSG_TYPE_ADD_SRC; // 操作是 add source<br /> addreq-&gt;provider = NSTAT_PROVIDER_IFNET; // 关注的是 ifnet，还可以关注 TCP/UDP 等多个 provider<br /> bzero(param, sizeof(*param));<br /> param-&gt;ifindex = ifparam-&gt;ifindex;<br /> param-&gt;threshold = ifparam-&gt;threshold;</p>
</code><p><code>/* Send the add source request */<br /> result = send(fd, addreq, addreqsize, 0);<br /> </code></p></pre>
<p></p> 
<p>发送后收到的请求如下:</p> 
<pre><code>addedmsg = (nstat_msg_src_added *)buffer;
result = recv(fd, addedmsg, sizeof(buffer), 0);
<p>// addedmsg-&gt;hdr.type == NSTAT_MSG_TYPE_SRC_ADDED</p>
</code><p><code>// 这里我们收到了一个 source 指针，发送 <code>NSTAT_MSG_TYPE_GET_SRC_DESC</code> 请求时需要用到这个指针<br /> outsrc = addedmsg-&gt;srcref;<br /> </code></p></pre>
<p></p> 
<p>检查 interface 状态的部分我们就不看了，也是一样发个请求收个消息，我们直接看 src descriptor 的。</p> 
<pre><code>nstat_msg_get_src_description *dreq;
nstat_msg_src_description *drsp;
char buffer[sizeof(*drsp) + sizeof(*ifdesc)];
ssize_t result;
const u_int32_t    descsize =
    offsetof(struct nstat_msg_src_description, data) +
    sizeof(nstat_ifnet_descriptor);
<p>dreq = (nstat_msg_get_src_description *)buffer;<br /> bzero(dreq, sizeof(*dreq));<br /> dreq-&gt;hdr.type = NSTAT_MSG_TYPE_GET_SRC_DESC;<br /> dreq-&gt;srcref = srcref; // 这个就是刚才上一步收到的 source 指针<br /> result = send(fd, dreq, sizeof(*dreq), 0);</p>
<p>// 这里接收到 nstat_msg_src_description 了<br /> drsp = (nstat_msg_src_description *)buffer;<br /> result = recv(fd, drsp, sizeof(buffer), 0);</p>
</code><p><code>// link_status_type 还可以判断是 WiFi 还是 cellular<br /> // ifdesc.link_status.link_status_type ==<br /> NSTAT_IFNET_DESC_LINK_STATUS_TYPE_WIFI<br /> </code></p></pre>
<p></p> 
<p>最后把 WiFi 信息打印一下:</p> 
<pre><code>en0: 17:38:02 
interface state:
</code><p><code>wifi status:<br /> link_quality_metric: 0<br /> ul_effective_bandwidth: 6695<br /> ul_max_bandwidth: 237641040<br /> ul_min_latency: -1<br /> ul_effective_latency: 0<br /> ul_max_latency: 0<br /> ul_retxt_level: 4(high)<br /> ul_bytes_lost: -1<br /> ul_error_rate: 0<br /> dl_effective_bandwidth: 2955<br /> dl_max_bandwidth: 237641040<br /> dl_min_latency: -1<br /> dl_effective_latency: 0<br /> dl_max_latency: 0<br /> dl_error_rate: 8533<br /> config_frequency: 2<br /> config_multicast_rate: -1<br /> scan_count: -1<br /> scan_duration: -1<br /> </code></p></pre>
<p></p> 
<h3>2.4 获取进程信息</h3> 
<p><code>netstat</code> 命令没有打印所有进程信息，但是如果我们阅读 XNU 源码，这个 provider 支持返回 <code>nstat_tcp_descriptor</code> 这种数据，里面可是带了 <code>pid</code> 的。我们可以试着获取 TCP Descriptor 看看。</p> 
<p>这里我还是只能靠经验瞎猜，同时阅读 XNU 关于 <code>ntstat</code> 的实现代码，没有特别好的方法。如果读者朋友有比较聪明的方法请分享一下，非常需要😂。</p> 
<p>我们看到 <code>nstat_tcp_descriptor</code> 这个数据的 copy 在 <code>nstat_tcp_copy_descriptor()</code> 函数，这个函数的指针被赋值给 <code>nstat_tcp_provider.nstat_copy_descriptor</code>。所以我们需要这个 <code>tcp_provider</code> 给我们这些信息。</p> 
<p>所以我们猜测，先添加 tcp provider source，然后进行再获取他的 src description 就能获得这些数据。实验核心代码如下:</p> 
<pre><code>nstat_msg_add_all_srcs *addreq;
<p>char buffer[sizeof(*addreq)];<br /> ssize_t result;<br /> const u_int32_t addreqsize = sizeof(struct nstat_msg_add_all_srcs);</p>
<p>/* Setup the add source request */<br /> addreq = (nstat_msg_add_all_srcs *)buffer;<br /> bzero(addreq, addreqsize);<br /> addreq-&gt;hdr.length = sizeof(nstat_msg_add_all_srcs);<br /> addreq-&gt;hdr.context = 3; // 随便填<br /> addreq-&gt;hdr.type = NSTAT_MSG_TYPE_ADD_ALL_SRCS; // 所有 sources<br /> addreq-&gt;provider = NSTAT_PROVIDER_TCP_KERNEL;</p>
</code><p><code>result = send(fd, addreq, addreqsize, 0);<br /> </code></p></pre>
<p></p> 
<p>一开始填 <code>NSTAT_MSG_TYPE_SYSINFO_COUNTS</code> 这个最大值，我一直收到 error。且确认就是在 <code>nstat_control_begin_query()</code> 函数里返回的 <code>EAGAIN</code> 错误码:</p> 
<pre><code>// man 2 intro | less -Ip EAGAIN
 35 EAGAIN Resource temporarily unavailable.  This is a temporary condi-
         tion and later calls to the same routine may complete normally.
</code></pre> 
<p>正准备放弃的时候，看到 <a href="https://github.com/packetzero/libntstat">libnstat</a> 这个用 C++ 实现的库在这里填的参数是 <code>2</code>。他的头文件定义是 <code>NSTAT_PROVIDER_TCP = 2</code> 但我看到的 XNU 头文件却把内核空间与用户空间分开了:</p> 
<pre><code>enum
{
    NSTAT_PROVIDER_NONE    = 0
    ,NSTAT_PROVIDER_ROUTE    = 1
    ,NSTAT_PROVIDER_TCP_KERNEL    = 2
    ,NSTAT_PROVIDER_TCP_USERLAND = 3
    ,NSTAT_PROVIDER_UDP_KERNEL    = 4
    ,NSTAT_PROVIDER_UDP_USERLAND = 5
    ,NSTAT_PROVIDER_IFNET    = 6
    ,NSTAT_PROVIDER_SYSINFO = 7
};
</code></pre> 
<p>换成 <code>NSTAT_PROVIDER_TCP_KERNEL</code> 之后能成功连接上 socket，但是 get src description 却返回错误的数据。本想继续研究但是看到 libnstat 项目里针对不同版本的内核也用了不同的头文件和 cpp 实现，说明 Apple 对这部分代码的修改也还算比较频繁的。目前我使用的系统版本是 macOS Catalina 10.15 (19A583)，xnu 版本是: 6153.11.26~2。libnstat 项目准备了 5 个不同版本的 <code>nstat.h</code> 文件，他的项目里最新的是 xnu-4570.1.46。所以有理由猜想是内核又更新了这部分代码，不过无论如何，到这一步已经可以证明结论:</p> 
<p><strong>使用 <code>nstat.h</code> 的接口，不仅非常复杂，而且也不靠谱。</strong></p> 
<h2>三、小结</h2> 
<p>没想到 nstat 相关的内容也这么复杂，学习起来还是挺费劲的。本章我们通过 class-dump 私有库 <code>NetworkStatistics.framework</code> 的头文件接口，凭经验猜测和实验，用上了这个相对上层的接口，实现了网络包统计。</p> 
<p>接着我们尝试往下一层，通过 <code>ioctl()</code> 接口，使用 <code>PF_SYSTEM</code> 这种 XNU 独有的 socket 跟内核通信，从 <code>com.apple.network.statistics</code> 这个 provider 那里读取网络统计信息。</p> 
<p>但是这两种方法首先都使用到系统的私有方法，并且这两个东西历史上都有过比较大的 API 变动。framework 的接口好猜但变化频繁，nstat 的接口变化稍微少一点但是几乎没有文档，学习起来非常痛苦。</p> 
<p>总而言之就是这两个方法都不靠谱，那么有没有其他更有意思的方法呢？下一篇我们来试试 BPF (Berkeley Packet Filter)。</p> 
<p><em>P.S. 传 req 的时候我发现仅存可供参考的代码都没有传 <code>hdr.length</code>，同时内核代码有一段注释，说为了兼容旧版 client 的实现，拿到 <code>hdr.length</code> 如果为空就补刀一下。所以是内核本来为了兼容旧版的补刀逻辑让现在新实现的人都不填 length 了。😂</em></p> 
<h2>内核系列文章</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></li> 
 <li><a href="https://justinyan.me/post/4040">macOS 内核之网络信息抓包(三)</a></li> 
 <li><a href="https://justinyan.me/post/4023">macOS 内核之网络信息抓包(二)</a></li> 
 <li><a href="https://justinyan.me/post/4009">macOS 内核之网络信息抓包(一)</a></li> 
 <li><a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
 <li><a href="https://justinyan.me/post/3982">macOS 内核之内存占用信息</a></li> 
 <li><a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息</a></li> 
 <li><a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a></li> 
 <li><a href="https://justinyan.me/post/3961">macOS 内核之从 I/O Kit 电量管理开始</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="http://newosxbook.com/bonus/vol1ch16.html">*OS Internals::User Space</a></li> 
 <li><a href="https://github.com/packetzero/libntstat">packetzero/libntstat: C++ library for com.apple.network.statistics kernel events on MacOS/OS X/Darwin</a></li> 
 <li><a href="https://github.com/nygard/class-dump">nygard/class-dump: Generate Objective-C headers from Mach-O files.</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x5185;&#x6838;&#x4E4B;&#x7F51;&#x7EDC;&#x4FE1;&#x606F;&#x6293;&#x5305;(&#x4E00;)</title>
        <link>https://justinyan.eth.limo/95DBC50E-8DA6-4B30-81E9-A02D7D8286C5/</link>
        <guid>https://justinyan.eth.limo/95DBC50E-8DA6-4B30-81E9-A02D7D8286C5/</guid>
        <pubDate>Thu, 31 Oct 2019 11:09:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/10/darwin_xnu_netowrk_01.jpg" alt="macOS 内核之网络信息抓包(一)" /></p> 
<p>可以说这个世界有了网络之后，重新了计算机。网络是目前所有 PC 和手机设备不可或缺的东西。同时飞速发展的互联网行业也让这一层的技术更迭迅速，衍生出无数计算机网络技术。</p> 
<p>由于涉及的概念和技术点太多，所以一时半会我也不知从何学起，看到 Activity Monitor.app 的 Network 一项系统能够统计的数据挺多的，不如就试试做拿跟他一样的信息看看。</p> 
<p>讲道理我们的 App 和系统自带的 App 都是跑在用户空间的，大家用的 API 也差不多，他能做到我们也能做到对吧。</p> 
<p>事实证明我还是太天真了😂。</p> 
<h2>〇、计算机网络背景知识</h2> 
<p>有学过计算机网络的朋友应该都听说过 <a href="https://en.wikipedia.org/wiki/OSI_model">OSI Model(Open Systems Interconnection model)</a>，把计算机网络分为七层：</p> 
<table> 
 <thead> 
  <tr> 
   <th>#</th> 
   <th>Layer</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>7</td> 
   <td>Application (应用层, HTTP)</td> 
  </tr> 
  <tr> 
   <td>6</td> 
   <td>Presentation (表现层, HTTP)</td> 
  </tr> 
  <tr> 
   <td>5</td> 
   <td>Session (会话层, HTTP)</td> 
  </tr> 
  <tr> 
   <td>4</td> 
   <td>Transport (传输层, TCP)</td> 
  </tr> 
  <tr> 
   <td>3</td> 
   <td>Network (网络层, IP)</td> 
  </tr> 
  <tr> 
   <td>2</td> 
   <td>Data link (链路层, Frames)</td> 
  </tr> 
  <tr> 
   <td>1</td> 
   <td>Physical (物理层，Bits)</td> 
  </tr> 
 </tbody> 
</table> 
<p>这是 ISO 提出的逻辑分层标准，好处是分层隔离之后，各层的技术自行更新时不会影响到其他层的逻辑，比如最底层的 Physical Layer (物理层)发展到现在的万兆光纤，它只需要关心 Bits 怎么传输就行，上层的逻辑几乎不需要更新。</p> 
<p>但是人们实现这个分层标准的时候也并不完全按照分层来，比如最上面的几层，应用层(Application Layer)提供面向用户的协议比如 HTTP，其中数据压缩本来是表现层(Presentation Layer)的事情但是 HTTP 支持 Compression。然后 TLS/SSL 在传输层但是它支持加解密。</p> 
<p>实际上 <a href="https://en.wikipedia.org/wiki/Internet_protocol_suite">TCP/IP Model (Internet protocol suite)</a> 的四层模型比 OSI 七层简化了一些，也相对比较贴近大家的使用习惯。</p> 
<table> 
 <thead> 
  <tr> 
   <th>#</th> 
   <th>Layer</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>4</td> 
   <td>Application Layer (应用层, HTTP/ IMAP…)</td> 
  </tr> 
  <tr> 
   <td>3</td> 
   <td>Transport Layer (传输层, TCP/UDP…)</td> 
  </tr> 
  <tr> 
   <td>2</td> 
   <td>Internet Layer (网络层, IP/ICMP…)</td> 
  </tr> 
  <tr> 
   <td>1</td> 
   <td>Link Layer (链路层, MAC/PPP…)</td> 
  </tr> 
 </tbody> 
</table> 
<p>以 OSI 七层模型来看，XNU 内核负责的主要是第 2 到第 5 层, TCP/IP 模型则是 1 到 3 层(我们熟悉的 URLSession 是上层提供的，不在内核实现)。</p> 
<p>第 2 层里 XNU 提供了网络相关的 interface。如果在终端运行 <code>ifconfig</code> 的话大家会看到一堆信息，以 <code>en0</code>, <code>lo0</code> 开头的。这些是 device interface names，对应了物理或者虚拟网卡，这些设备不在 <code>/dev</code> 里表现，用户空间如果要访问它们就必须通过 Unix domain socket 进行通信(有别于 IP socket，下文将有描述)。</p> 
<p>所以如果我们要统计一台机器的网络流量，我们可以通过获取主要网卡的流量信息来解决。</p> 
<h2>一、统计网卡收发包信息 sysctl()</h2> 
<p>开源的系统监控软件 <a href="http://gkrellm.srcbox.net/">GKrellM</a> 项目在 macOS 上的实现就是通过 <code>sysctl()</code> 获取网卡数据来统计网络流量，实现入口在 <code>src/sysdeps/bsd-common.c</code> 里的 <code>void gkrellm_sys_net_read_data(void)</code> 函数。</p> 
<p>我们在<a href="https://justinyan.me/post/3935">本 macOS 内核系列的第一篇</a>有提到过利用 <code>sysctl()</code> 函数可以从内核获取很多有用的系统信息，同时系统也提供了 <code>sysctl</code> 命令可以在终端运行。<code>sysctl</code> 基本上是所有类 Unix 系统的标准命令之一。在 XNU 内核中，<code>sysctl</code>以及网络相关的接口由 BSD 内核实现。</p> 
<p>另一个非常常见的命令是 <code>ifconfig</code>，运行它可以获取我们所有网卡(network interface)信息。<code>ifconfig</code> 的代码是开源的可以<a href="https://opensource.apple.com/source/network_cmds/network_cmds-480/ifconfig.tproj/ifconfig.c.auto.html">在这里</a>找到。</p> 
<p>系统内核会维护一份以树形 MIB (<a href="https://en.wikipedia.org/wiki/Management_information_base">management information base</a>)形式存储的数据，里面包含了硬件信息、网络统计信息等一大堆数据，<code>sysctl</code> 接口会读取 MIB 数据然后返回。我们也可以通过别的接口来获取这些数据(下文将有介绍)，但是 <code>sysctl</code> 接口很方便也很快。</p> 
<p><code>sysctl</code>的 MIB 存储划分为多种类型，内存 <code>vm</code>, 网络 <code>net</code>, 硬件 <code>hw</code> 之类的。可以通过 <code>sysctl -A</code> 命令打出来。</p> 
<p><code>sysctl</code> 不仅可以读数据，也可以写数据。该函数原型 XNU 没有注释，我们(可以<a href="http://www.linux.it/~rubini/docs/sysctl/">参考这里</a>)在 Linux 上的定义:</p> 
<pre><code>int sysctl (int *name,
            int nlen, 
            void *oldval,
            size_t *oldlenp,
            void *newval, 
            size_t newlen);
</code></pre> 
<ul> 
 <li><code>name</code>: 一个整数的数组，里面是查询参数</li> 
 <li><code>nlen</code>: 第一个参数里有多少个整数</li> 
 <li><code>oldval</code>: 存储的数据通过这个指针返回，有可能为 NULL</li> 
 <li><code>oldlenp</code>: 存储的数据的长度</li> 
 <li><code>newval</code>: 用该参数写入新数据到 MIB，传 NULL 则不修改</li> 
 <li><code>newlen</code>: 新数据的长度</li> 
</ul> 
<p>在 GKrellM 里获取网卡信息的实现分为两步，第一步先取数据长度 <code>oldlenp</code>:</p> 
<pre><code>static int  mib_net[] = { CTL_NET, PF_ROUTE, 0, 0, NET_RT_IFLIST, 0 };
static char *buf;
static int  alloc;
size_t          needed;
</code><p><code>if (sysctl(mib_net, 6, NULL, &amp;needed, NULL, 0) &lt; 0)<br /> return;<br /> </code></p></pre>
<p></p> 
<p>第二步，取到长度之后分配一个足够长的内存然后正式读数据:</p> 
<pre><code>if (alloc &lt; needed)
{
    if (buf != NULL)
        free(buf);
    buf = malloc(needed);
    if (buf == NULL)
        return;
    alloc = needed;
}
</code><p><code>if (sysctl(mib_net, 6, buf, &amp;needed, NULL, 0) &lt; 0)<br /> return;<br /> </code></p></pre>
<p></p> 
<p><code>net</code> 前缀在宏定义里是 <code>CTL_NET</code>。</p> 
<p><code>PF_ROUTE</code> 是路由表相关的操作。前缀 <code>PF_</code> 是 Protocol Family 的意思，对应的还有 <code>AF_</code> Address Family。在 XNU 里，<code>PF_</code> 和 <code>AF_</code> 的定义是完全一样的(Linux 也是)。</p> 
<h3>1.1 PF 和 AF</h3> 
<p>前面说跟 interface 打交道得通过 Unix domain socket(跟 IP socket 稍有不同)，要创建 一个 Unix domain socket，第一个参数就是 Protocol Famil。我们知道 XNU 包含了 Mach 内核和 FreeBSD 内核，它本身最常用的 IPC 方式是 Mach 内核提供的 Mach Port 方式，BSD 提供的这种 socket 方式其实比较少见。</p> 
<p>BSD 中创建 socket 使用 <code>socket()</code> 函数:</p> 
<pre><code>int socket  (int family, int type, int protocol);
</code></pre> 
<p>第一个参数是 family，指的其实是 Protocol Family，也就是 <code>PF_</code> 开头的参数，但实际上我们可以用 <code>AF_</code> 来代替，这是一个历史遗留产物。在<a href="https://beej.us/guide/bgnet/html/">的书中提到</a>:</p> 
<blockquote>
 <p> (This PF_INET thing is a close relative of the AF_INET that you can use when initializing the sin_family field in your struct sockaddr_in. In fact, they’re so closely related that they actually have the same value, and many programmers will call socket() and pass AF_INET as the first argument instead of PF_INET. Now, get some milk and cookies, because it’s time for a story. Once upon a time, a long time ago, it was thought that maybe an address family (what the “AF” in “AF_INET” stands for) might support several protocols that were referred to by their protocol family (what the “PF” in “PF_INET” stands for). That didn’t happen. And they all lived happily ever after, The End. So the most correct thing to do is to use AF_INET in your struct sockaddr_in and PF_INET in your call to socket().) </p>
</blockquote> 
<p>大意是说以前大家曾经试图在 <code>socket</code> 上抽象出一个 Protocol Family 的概念，允许一个 Address Family 支持多种协议。但是这件事情一直没人实现过😂，所以遗留了这么个东西。Unix 和 Linux 的定义都是直接把 <code>PF_</code> 开头的宏定义为同名的 <code>AF_</code> 宏。</p> 
<p>第二个参数是 socket 类型：</p> 
<pre><code>/*
 * Types
 */
#define    SOCK_STREAM 1       /* stream socket */
#define    SOCK_DGRAM  2       /* datagram socket */
#define    SOCK_RAW    3       /* raw-protocol interface */
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#define    SOCK_RDM    4       /* reliably-delivered message */
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
#define    SOCK_SEQPACKET  5       /* sequenced packet stream */
</code></pre> 
<p>第三个是协议类型，比如 UDP, TCP:</p> 
<pre><code>// bsd/netinet/in.h
</code><p><code>#define IPPROTO_UDP 17 /* user datagram protocol <em>/<br /> #define IPPROTO_TCP 6 /</em> tcp */<br /> </code></p></pre>
<p></p> 
<p><code>bsd/netinet/in.h</code> 里还定义了上百个，我已放弃学习🤦‍♂️。</p> 
<p>在 IPv4 网络中，第一个参数我们传 <code>PF_INET</code>，IP 地址会保存在 <code>sockaddr_in</code> 结构体中:</p> 
<pre><code>struct sockaddr_in {
    short   sin_family;
    u_short sin_port;
    struct  in_addr sin_addr;
    char    sin_zero[8];
};
</code></pre> 
<p>IPv6 则是 <code>PF_INET6</code>，XNU 的相关定义在 <code>bsd/netinet/in.h</code>。</p> 
<h3>1.2 PF_ROUTE</h3> 
<p><code>PF_ROUTE</code> 获取的是系统路由表相关的信息，XNU 没什么文档，但是这是一个 BSD 标准，所以我们可以参考 <a href="https://www.netbsd.org/docs/internals/en/chap-networking-core.html">NetBSD 关于网络的文档</a>。BSD 中关于路由表的实现分为三个部分，以 Radix Tree (基数树)存储的数据库 <code>net/radix.c</code>，提供查询和修改接口的 <code>net/route.c</code>，以及提供给上层的 socket 接口 <code>net/rtsock.c</code>。系统的 <code>route(8)</code> 命令有用到 <code>PF_ROUTE</code>，可以到 <a href="https://opensource.apple.com/source/network_cmds/network_cmds-543.260.3/route.tproj/">Apple Open Source 找到源码</a>。</p> 
<p>在用户空间，我们和路由表的交互都是通过 protocol family 为 <code>PF_ROUTE</code> 的 socket 来跟 network interface 通信的。</p> 
<p>BSD 的 Network Routing 层负责转发数据包 packet 到目标网关，涉及到 ARP 解析(也就是 IP 地址与 Mac 地址的映射)。比如说一个 TCP/IP 协议的包到了路由这一层，就会根据 IP 地址寻找到目标网卡，把包发过去，比如发到 WiFi 网卡。所以我们可以通过路由这一层获得某一个网卡上所有的收发包数据，从而实现流量监控。</p> 
<p>我们通过 <code>sysctl()</code> 接口获取信息的时候，这个 socket 是由内核创建的，我们只需要传参数就行。可以参考 <a href="https://www.freebsd.org/cgi/man.cgi?sysctl(3)">FreeBSD 关于 <code>sysctl(3)</code> 的文档</a>。</p> 
<h3>1.3 NET_RT_IFLIST</h3> 
<pre><code>static int  mib_net[] = { CTL_NET, PF_ROUTE, 0, 0, NET_RT_IFLIST, 0 };
</code></pre> 
<p>留意到这里其实传了六个参数，<code>CTL_NET</code> 和 <code>PF_ROUTE</code> 已经解释过了。第三参数 0 是 hardcoded 的，以前留给 Protocol Family 的。第四个是 Address Family，这里填 0 可以表示获取所有 Family。第五个和第六个是有关联的，具体参考 <a href="https://www.freebsd.org/cgi/man.cgi?sysctl(3)">FreeBSD 文档</a>，我们只要知道传 <code>NET_RT_IFLIST</code> 时后面一个传 0。</p> 
<p>最近阅读内核代码，碰到这种有历史的 C 接口感觉都非常依赖文档，如果没有文档几乎寸步难行。T_T</p> 
<blockquote>
 <p> The NET_RT_IFLISTL is like NET_RT_IFLIST, just returning message<br /> header structs with additional fields allowing the interface to<br /> be extended without breaking binary compatibility.</p> 
 <p> The NET_RT_IFLISTL uses 'l' versions of the message header struc-<br /> tures: struct if_msghdrl and struct ifa_msghdrl. </p>
</blockquote> 
<p>根据文档，<code>NET_RT_IFLIST</code> 会返回 message header structs，用的是这个结构体 <code>if_msghdr</code>。</p> 
<h3>1.4 if_msghdr</h3> 
<pre><code>struct if_msghdr {
     u_short ifm_msglen;        /* to skip over non-understood messages */
     u_char  ifm_version;       /* future binary compatibility */
     u_char  ifm_type;      /* message type */
     int     ifm_addrs;     /* like rtm_addrs */
     int     ifm_flags;     /* value of if_flags */
     u_short ifm_index;     /* index for associated ifp */
     struct  if_data ifm_data;  /* statistics and other data about if */
 };
</code></pre> 
<p><code>sysctl</code> 返回的是一个数组，包含多个 <code>if_msghdr</code> 结构体，<code>ifm_msglen</code> 用于指针偏移量。我们可以通过一个循环来取每个 message header。</p> 
<pre><code>struct if_msghdr *ifmsg = (struct if_msghdr *)currentData;
if (ifmsg-&gt;ifm_type != RTM_IFINFO) {
    currentData += ifmsg-&gt;ifm_msglen;
    continue;
}
</code></pre> 
<p>这里只关心 <code>RTM_IFINFO</code> 这种类型，相关定义还有十几个，在 <code>bsd/net/route.h</code> 的 <code>RTM_</code> 开头的宏。</p> 
<pre><code>if (ifmsg-&gt;ifm_flags &amp; IFF_LOOPBACK) {
    currentData += ifmsg-&gt;ifm_msglen;
    continue;
}
</code></pre> 
<p>我们只关心真正和互联网通信的 interface，所以过滤本地 <a href="https://en.wikipedia.org/wiki/Loopback">loopback 网络</a>。这里我们可以简单理解包含了 <code>localhost</code> 的特殊网卡(可以<a href="https://www.juniper.net/documentation/en_US/junos/topics/concept/interface-security-loopback-understanding.html">参考这里</a>)，如果你在终端运行 <code>ifconfig</code> 看到 <code>lo</code> 开头的就是 loopback interface。</p> 
<pre><code>struct sockaddr_dl *sdl = (struct sockaddr_dl *)(ifmsg + 1);
if (sdl-&gt;sdl_family != AF_LINK) {
    currentData += ifmsg-&gt;ifm_msglen;
    continue;
}
</code></pre> 
<p>把 <code>ifmsg</code> 这个 <code>if_msghdr</code> + 1 我们得到 Header 之后的内存地址，也就是 <code>sockaddr_dl</code> 数据，这个数据是 Link-Level sockaddr。我们先取 <code>sdl_family</code>，如果是 <code>AF_LINK</code> 就说明我们的结构体取对了。这里取得 <code>sockaddr_dl</code> 之后， <code>sdl_data</code> 的前 <code>sdl_nlen</code> 长度的数据就是他的名字，后面的是 ll address。</p> 
<pre><code>/*
 * Structure of a Link-Level sockaddr:
 */
struct sockaddr_dl {
    u_char  sdl_len;        /* Total length of sockaddr */
    u_char  sdl_family;     /* AF_LINK */
    u_short sdl_index;      /* if != 0, system given index for interface */
    u_char  sdl_type;       /* interface type */
    u_char  sdl_nlen;       /* interface name length, no trailing 0 reqd. */
    u_char  sdl_alen;       /* link level address length */
    u_char  sdl_slen;       /* link layer selector length */
    char    sdl_data[12];   /* minimum work area, can be larger;
                             *  contains both if name and ll address */
#ifndef __APPLE__
    /* For TokenRing */
    u_short sdl_rcf;        /* source routing control */
    u_short sdl_route[16];  /* source routing information */
#endif
};
</code></pre> 
<p>我们直接读 <code>sdl_data</code> 里 <code>sdl_nlen</code> 这么长的数据，得到 interface name:</p> 
<pre><code>NSString *interfaceName = [[NSString alloc] initWithBytes:sdl-&gt;sdl_data length:sdl-&gt;sdl_nlen encoding:NSASCIIStringEncoding];
</code></pre> 
<p>接下来检查这个 interface 有没有在跑:</p> 
<pre><code>if (ifmsg-&gt;ifm_flags &amp; IFF_UP)
</code></pre> 
<p>然后就可以读 <code>ifmsg</code> 的 <code>if_data</code> 数据了:</p> 
<pre><code>/*
 * Structure describing information about an interface
 * which may be of interest to management entities.
 */
struct if_data {
    /* generic interface information */
    u_char          ifi_type;       /* ethernet, tokenring, etc */
    u_char          ifi_typelen;    /* Length of frame type id */
    u_char          ifi_physical;   /* e.g., AUI, Thinnet, 10base-T, etc */
    u_char          ifi_addrlen;    /* media address length */
    u_char          ifi_hdrlen;     /* media header length */
    u_char          ifi_recvquota;  /* polling quota for receive intrs */
    u_char          ifi_xmitquota;  /* polling quota for xmit intrs */
    u_char          ifi_unused1;    /* for future use */
    u_int32_t       ifi_mtu;        /* maximum transmission unit */
    u_int32_t       ifi_metric;     /* routing metric (external only) */
    u_int32_t       ifi_baudrate;   /* linespeed */
    /* volatile statistics */
    u_int32_t       ifi_ipackets;   /* packets received on interface */
    u_int32_t       ifi_ierrors;    /* input errors on interface */
    u_int32_t       ifi_opackets;   /* packets sent on interface */
    u_int32_t       ifi_oerrors;    /* output errors on interface */
    u_int32_t       ifi_collisions; /* collisions on csma interfaces */
    u_int32_t       ifi_ibytes;     /* total number of octets received */
    u_int32_t       ifi_obytes;     /* total number of octets sent */
    u_int32_t       ifi_imcasts;    /* packets received via multicast */
    u_int32_t       ifi_omcasts;    /* packets sent via multicast */
    u_int32_t       ifi_iqdrops;    /* dropped on input, this interface */
    u_int32_t       ifi_noproto;    /* destined for unsupported protocol */
    u_int32_t       ifi_recvtiming; /* usec spent receiving when timing */
    u_int32_t       ifi_xmittiming; /* usec spent xmitting when timing */
    struct IF_DATA_TIMEVAL ifi_lastchange;  /* time of last administrative change */
    u_int32_t       ifi_unused2;    /* used to be the default_proto */
    u_int32_t       ifi_hwassist;   /* HW offload capabilities */
    u_int32_t       ifi_reserved1;  /* for future use */
    u_int32_t       ifi_reserved2;  /* for future use */
};
</code></pre> 
<p>我们只统计流量所以只关心这两个数值:</p> 
<pre><code>u_int32_t       ifi_ibytes;     /* total number of octets received */
u_int32_t       ifi_obytes;     /* total number of octets sent */
</code></pre> 
<p>跟<a href="https://justinyan.me/post/3972">获取 CPU 信息</a>的原理差不多，上面的数据是一个累计数值，但是我们要计算的是一个瞬时速率，所以得获取两次数据作比较。</p> 
<h3>1.5 ifi_bytes 溢出</h3> 
<p>这里 <code>ifi_ibytes</code> 和 <code>ifi_obytes</code> 使用 <code>u_int32_t</code> 存的，但是内核在计算这个数值的时候会一直累加，也就是说这个数据会 overflow (溢出)。计数增长的方法在 XNU 源码的 <code>bsd/net/kip_interface.c</code> 里面:</p> 
<pre><code>if (s-&gt;bytes_in != 0)
        atomic_add_64(&amp;ifp-&gt;if_data.ifi_ibytes, s-&gt;bytes_in);
</code></pre> 
<p>所以如果我们要计算数据累加量的话，要自己处理这个 <code>u_int32_t</code> 的大小变化，如果发现保存的上一次的 <code>ifi_ibytes</code> 大于新的数值，说明新的数值已经溢出变小了。</p> 
<p><em>P.S. 所有的网络监控软件都无法统计到历史数据，只能统计他开始监控那一刻起的数据。系统内核因为是第一个启动的，所以它能统计到的数据一定比我们多。</em></p> 
<h3>1.6 Interface Naming</h3> 
<p>以上的处理是针对非 <a href="https://en.wikipedia.org/wiki/Point-to-Point_Protocol">PPP 连接</a>的 interface 的数据处理，PPP interface 比较麻烦，需要自建 socket 跟 interface 通信。在开始 PPP 连接处理之前，我们先岔开看看 interface naming。</p> 
<p>留意到在 macOS 上运行 <code>ifconfig</code> 和在 Linux 上看到的 interface 命名规则有点不同:</p> 
<pre><code># macOS
lo0: …
gif0: …
stf0: …
en0: …
en1: …
bridge0: …
p2p0: …
awdl0: …
llw0: …
utun0: …
utun1: …
<h1>Ubuntu</h1>
</code><p><code>eth0: …<br /> lo0: …<br /> </code></p></pre>
<p></p> 
<p>interface 命名规则是由操作系统自己实现的，BSD 和 Linux 各有自己的规则。早期的 Linux 系统会只有 <code>eth[0123…]</code>，根据内核启动时发现这些硬件的序号来命名。后来才加了 <a href="https://en.wikipedia.org/wiki/Consistent_Network_Device_Naming">Consistent Network Device Naming</a> feature。</p> 
<p>在 Unix 系统上，这些 interface 会根据不同的类别有不同的前缀，<a href="http://newosxbook.com/MOXiI.pdf">《Mac OS X and iOS Internals》</a>这本书的 Chap 17，Layer II: INTERFACES 对此命名规则有过介绍。大家可以参考看看。</p> 
<p>主要分为两大类，一类是 XNU 原生支持的 interfaces，比如 <code>bridge</code> 和 <code>lo</code>。另一类是通过 Kernel Extension 支持的 interfaces，比如 <code>en</code> 和 <code>ppp</code>。</p> 
<p><code>en</code> 的支持在 <code>IONetworkingFamily</code> kext 里，对应的是 Ethernet (以太网)标准，在我的 MacBook 上 <code>en0</code> 是无线网卡，如果接上有线网卡会多出来一个 <code>en1</code>，前缀是类型，后缀数字区分不同硬件。</p> 
<p><code>ppp</code> 在 <code>PPP</code> kext 里，支持 PPP 点对点协议。平时我们最常见到这个协议的应用就是 PPPoE (Point-to-Point Protocol over Ethernet) 了，这个协议主要是在 Ethernet 协议上加了一层身份认证和传输加密，这样电信运营商才可以知道你的帐号，判断你有没有交钱。如果你的机器通过 WiFi 连接到家里的路由器，那么我们只管看 <code>en</code> interface 的数据就好，但是你也有可能直接通过你的 Mac PPPoE 拨号上网，那就得统计 PPP 端口了。</p> 
<h3>1.7 PPP Connect</h3> 
<p>PPP interface 的数据处理起来比较麻烦，<code>sysctl()</code> 并没有直接返回数据，我们得另起一个 UNIX domain socket 跟它进行 IPC 通信(参考 <a href="https://github.com/yujitach/MenuMeters">MenuMeters</a>的实现)。</p> 
<p><em>UNIX domain socket 跟现在常见的 IP socket 不一样，不过接口差不多。UNIX domain socket 是 UNIX 独有的 IPC 通信方式，出现比 IP socket 还在，它可以用本地文件系统的路径作为 socket 地址(虽然不是真的文件，大部分都在 <code>/var/run</code> 里面)，可以直接通过 socket 传文件。当然 Mach Port 也可以传 file descriptor，我们之前的文章也有介绍过。不过Mach Port 和这种特殊 socket 都不是 POSIX 标准。</em></p> 
<pre><code>// PPP local socket path
#define kPPPSocketPath     "/var/run/pppconfd\0"
</code><p><code>pppconfdSocket = socket(AF_LOCAL, SOCK_STREAM, 0);<br /> struct sockaddr_un socketaddr = { 0, AF_LOCAL, kPPPSocketPath };<br /> if (connect(pppconfdSocket, (struct sockaddr *)&amp;socketaddr, (socklen_t)sizeof(socketaddr))) {<br /> NSLog(@"MenuMeterNetPPP unable to establish socket for pppconfd. Abort.");<br /> return nil;<br /> }<br /> </code></p></pre>
<p></p> 
<p>首先创建一个 UNIX domain socket，然后连接到 pppconfd:</p> 
<pre><code>int pppconfdSocket = socket(AF_LOCAL, SOCK_STREAM, 0);
struct sockaddr_un socketaddr = { 0, AF_LOCAL, kPPPSocketPath };
if (connect(pppconfdSocket, (struct sockaddr *)&amp;socketaddr, (socklen_t)sizeof(socketaddr))) {
    NSLog(@"MenuMeterNetPPP unable to establish socket for pppconfd. Abort.");
    return nil;
}
</code></pre> 
<p><code>AF_LOCAL</code> 就是 UNIX domain socket 类型，这种类型的 socket 只支持 <code>SOCK_STREAM</code> + TCP 或者 <code>SOCK_DGRAM</code> + UDP，所以第三个参数可以不传。接下来通过 connect 函数连接两个 socket。</p> 
<pre><code>// Create the filehandle
pppconfdHandle = [[NSFileHandle alloc] initWithFileDescriptor:pppconfdSocket];
if (!pppconfdHandle) {
    NSLog(@"MenuMeterNetPPP unable to establish file handle for pppconfd. Abort.");
    return nil;
}
</code></pre> 
<p>ObjC 的 <code>NSFileHandle</code> 可以来做 socket 通信，一个 <code>writeData:</code> 一个 <code>readDataOfLength:</code> 一发已收。</p> 
<pre><code>- (NSData *)pppconfdExecMessage:(NSData *)message {
<pre><code>// Write the data
[pppconfdHandle writeData:message];
// Read back the reply headers
NSData *header = [pppconfdHandle readDataOfLength:sizeof(struct ppp_msg_hdr)];
if ([header length]) {
    struct ppp_msg_hdr *header_message = (struct ppp_msg_hdr *)[header bytes];
    if (header_message &amp;amp;&amp;amp; header_message-&amp;gt;m_len) {
        NSData *reply = [pppconfdHandle readDataOfLength:header_message-&amp;gt;m_len];
        if ([reply length] &amp;amp;&amp;amp; !header_message-&amp;gt;m_result) {
            return reply;
        }
    }
}

// Get here we got nothing
return nil;
</code></pre>
</code><p><code>} // pppconfdExecMessage<br /> </code></p></pre>
<p></p> 
<p>接下来先查一下 interface status，我们跟 <code>pppconfd</code> 发一个 PPP 消息:</p> 
<pre><code>struct msg {
    struct ppp_msg_hdr  hdr;
    unsigned char   data[MAXDATASIZE];
};
<p>/* PPP message paquets */<br /> struct ppp_msg_hdr {<br /> u_int16_t m_flags; // special flags<br /> u_int16_t m_type; // type of the message<br /> u_int32_t m_result; // error code of notification message<br /> u_int32_t m_cookie; // user param<br /> u_int32_t m_link; // link for this message<br /> u_int32_t m_len; // len of the following data<br /> };</p>
</code><p><code>struct ppp_msg {<br /> u_int16_t m_flags; // special flags<br /> u_int16_t m_type; // type of the message<br /> u_int32_t m_result; // error code of notification message<br /> u_int32_t m_cookie; // user param, or error num for event<br /> u_int32_t m_link; // link for this message<br /> u_int32_t m_len; // len of the following data<br /> u_char m_data[1]; // msg data sent or received<br /> };<br /> </code></p></pre>
<p></p> 
<p>PPP 的实现不在 XNU 内核范围内，但也是开源的，可以<a href="https://opensource.apple.com/tarballs/ppp/">到这里</a>下载源码。可以看到不管是 <code>struct msg</code> 还是 <code>struct ppp_msg</code> 他的内存布局都是一样的，前面是 header 后面是数据。</p> 
<p>看到我们跟 PPP 通信需要带一个 <code>m_link</code> 参数，因为 PPP 协议是基于 link 进行数据传输的。PPP 协议主要由三个部分组成:</p> 
<ul> 
 <li>Link Control Protocol (LCP) — Link 控制协议，管理在两点之间通过 link 连接。</li> 
 <li>Authentication protocol — 校验协议，确保两点之间的通信安全。</li> 
 <li>Network control protocol (NCP) — 初始化 PPP 协议栈，用于处理多种网络层的协议，比如 IPv4，IPv6 等等。</li> 
</ul> 
<p>其中 LCP 协议规定了 PPP 端口通过 link 传输。并且，PPP 协议支持一点对多点通信，这也是为什么我们家里的宽带有可能通过多拨实现带宽翻倍的原因。多连接协议称为 Multi-Link PPPoE (MLPPP)。</p> 
<p>所以要跟 <code>pppconfd</code> 通信前我们还需要先拿到当前的 <code>link</code>:</p> 
<pre><code>// Get the link id for the interface
struct ppp_msg_hdr idMsg = { 0, PPP_GETLINKBYIFNAME, 0, 0, -1, (u_int32_t)[ifnameData length] };
NSMutableData *idMsgData = [NSMutableData dataWithBytes:&amp;idMsg length:sizeof(idMsg)];
[idMsgData appendData:ifnameData];
NSData *idReply = [self pppconfdExecMessage:idMsgData];
uint32_t linkID = 0;
if ([idReply length] != sizeof(uint32_t)) return nil;
[idReply getBytes:&amp;linkID];
</code></pre> 
<p>传入 message type <code>PPP_GETLINKBYIFNAME</code>，带一个 <code>ifname</code> 表示对应的 interface。PPP 源码中对应的实现在这个函数:</p> 
<pre><code>static
void socket_getlinkbyifname(struct client *client, struct msg *msg, void **reply)
</code></pre> 
<p>非常简单，遍历所有端口匹配一下然后 copy 信息返回。</p> 
<p><em>这个函数里的实现用到一个 bytes 转换函数叫做 <code>htonl()</code>，因为 host byte order 和 network byte order 的排序不一样。上层几乎不需要管，但是在后续使用 bpf/pcap 抓包实现的时候就需要自己手动转换这些数据了。</em></p> 
<p>获得 <code>linkID</code> 之后就可以问 PPP 要这条 link 的收发包数据了:</p> 
<pre><code>// Now get status of that link
struct ppp_msg_hdr statusMsg = { 0, PPP_STATUS, 0, 0, linkID, 0 };
NSData *statusReply = [self pppconfdExecMessage:[NSData dataWithBytes:&amp;statusMsg length:sizeof(statusMsg)]];
if ([statusReply length] != sizeof(struct ppp_status)) return nil;
struct ppp_status *pppStatus = (struct ppp_status *)[statusReply bytes];
if (pppStatus-&gt;status == PPP_RUNNING) {
    // pppStatus-&gt;s.run.inBytes
    // pppStatus-&gt;s.run.outBytes
    // pppStatus-&gt;s.run.timeElapsed
    // pppStatus-&gt;s.run.timeRemaining
}
</code></pre> 
<p>数据处理跟上面非 PPP Connection 的一样, <code>PPP_STATUS</code> 在 PPP 源码中对应的实现在:</p> 
<pre><code>static
void socket_status(struct client *client, struct msg *msg, void **reply)
</code></pre> 
<h2>二、小结</h2> 
<p>本来网络抓包的学习除了通过 <code>sysctl()</code> 接口和 <code>pppconfd</code> 的 socket 通信之外，我还尝试了 <code>NetworkStatistics.framework</code>，<code>NStat</code>, <code>BPF/pcap</code> 等多种实现。但是没想到第一种实现就已经这么复杂，所以我们把剩下的内容分开多篇来学习。</p> 
<p>计算机网络的出现是革命性的，互联网已经重塑了整个世界。相应的，他的蓬勃发展也带来技术的蓬勃发展。虽然历史遗留的问题很多，也有些设计上的缺陷经常被人用于恶意攻击(比如 ARP 的设计就非常不安全)，但是以我微弱的能力，对于这些计算机先辈的设计只有滔滔景仰的敬意，以及，缺少文档时阅读起来的痛苦😂。</p> 
<h2>内核系列文章</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></li> 
 <li><a href="https://justinyan.me/post/4040">macOS 内核之网络信息抓包(三)</a></li> 
 <li><a href="https://justinyan.me/post/4023">macOS 内核之网络信息抓包(二)</a></li> 
 <li><a href="https://justinyan.me/post/4009">macOS 内核之网络信息抓包(一)</a></li> 
 <li><a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
 <li><a href="https://justinyan.me/post/3982">macOS 内核之内存占用信息</a></li> 
 <li><a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息</a></li> 
 <li><a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a></li> 
 <li><a href="https://justinyan.me/post/3961">macOS 内核之从 I/O Kit 电量管理开始</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://library.netapp.com/ecmdocs/ECMP1114171/html/GUID-60DA02FA-B824-4B4E-862F-6862D1407453.html">Network interface naming</a></li> 
 <li><a href="https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/">PredictableNetworkInterfaceNames</a></li> 
 <li><a href="https://github.com/mikepj/XRG">mikepj/XRG: System monitor for OS X.</a></li> 
 <li><a href="https://www.netbsd.org/docs/internals/en/chap-networking-core.html">Chapter 4. Networking</a></li> 
 <li><a href="https://www.juniper.net/documentation/en_US/junos/topics/topic-map/security-interface-interface-encap-overview.html#jd0e327">Interface Encapsulation Overview - TechLibrary - Juniper Networks</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x5185;&#x6838;&#x4E4B;&#x7CFB;&#x7EDF;&#x5982;&#x4F55;&#x542F;&#x52A8;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/1A4580C0-B7A0-4D52-993C-F5265FED3458/</link>
        <guid>https://justinyan.eth.limo/1A4580C0-B7A0-4D52-993C-F5265FED3458/</guid>
        <pubDate>Mon, 28 Oct 2019 23:08:41 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/10/macos_kern_boot.jpg" alt="macOS 内核之系统如何启动？" /></p> 
<p>前面几篇关于 XNU 内核学习的文章里，经常会提到有些数据来自启动时外部传入的参数，比如 <code>mem_size</code>。因为内核本身也是一个巨大的程序，它也会被编译成二进制，然后在系统启动的时候加载到内存里，提供给上层诸如多核 CPU 运算，虚拟内存，线程，进程等一系列能力。</p> 
<p>那么问题来了，内核是在什么时候被加载到内存里的呢？谁来负责调用内核的入口函数呢？整个计算的启动过程是怎样的呢？</p> 
<p>我在阅读了 Amit Singh 的《Mac OS X Internals》一书中跟启动相关的章节之后，想以此文总结记录一下。希望看到详细内容的读者朋友们，我个人非常推荐 Amit 这本书，内容深入浅出，通俗易读。</p> 
<h2>一、Firmware 和 Bootloader</h2> 
<p>我们知道系统内核也是一堆代码，XNU 内核就是 C 写的(I/O Kit 部分是 C++)，最终会编译成一个二进制。在 macOS 上唯一能执行的二进制格式是 Mach-O。</p> 
<p>全称是 Mach object file format，但是较真起来这个文件格式跟 Mach 内核没有半毛钱关系 XD。因为在 XNU 中，文件系统是由 BSD 实现的，Mach 并不识别任何文件系统。</p> 
<p>在 macOS 操作的设计中，我们可以访问磁盘上的任何一个文件(当然有权限控制)，所以我们也可以找到内核这个二进制，就是 <code>/System/Library/Kernels/kernel</code>。理论上你可以删掉这个文件，或者自己编译一个内核替换他，但是我不建议你这么做😂。</p> 
<p><em>比 OS X 10.11 El Capitan 更早的系统直接就在 <code>/mach_kernel</code></em></p> 
<p>所以要让内核这个大程序跑起来，首先得有人把这个文件读取后放进内存里，找到入口，然后调用，这个过程大概是这样的：</p> 
<h3>1.1 开机，硬件启动。CPU(如果是多核则是主核)读取 ROM 上的 BIOS 并运行</h3> 
<p>ROM 即 Read Only Memory，在 PC 中通常是嵌在主板上的一块芯片。有自己折腾过 PC 攒机经验的小伙伴们肯定听说过 BIOS 这个东西。它的全称是 Basic Input/Output Service。CPU 从 ROM 中读取的就是 BIOS，在 Mac 上用的是 Intel 的 Extensible Firmware Interface(EFI) 接口，更老的 PowerPC CPU 则用的是 Open Firmware。</p> 
<p>这个接口和硬件强相关，所以是由硬件厂商制定的标准。EFI 是英特尔制定的，目前已经交给 Unified EFI Forum 来维护，接口也改名为 UEFI。</p> 
<p>因为这个东西并不是硬件 Hardware，也不是上层跑的软件 Software，所以取了个介乎中间的名字固件 Firmware。这东西是写在硬件上的，有些可以被擦写替换，有些则不可以。之前很火的利用 iOS Firmware 漏洞来越狱的工具非常强大的一点就在于此：这个固件写在硬件上，Apple 无法通过 OTA 让旧机器更新固件，也就无法修复漏洞，所以越狱对于旧机器会一直有效。</p> 
<h3>1.2 BIOS 加载会先做一系列硬件检查</h3> 
<p>这期间你甚至可以基于这个简单的系统开发软件，除了越狱之外还有很多可以做的。《Mac OS X Internals》提到 Open Firmware 还自带了 <code>telnet</code>, <code>tftp</code> 等工具，有点意思。</p> 
<h3>1.3 检查完之后就加载系统的 Bootloader</h3> 
<p>在 Mac 上以前用的是 <code>BootX</code>，后来 Apple 的所有产品，包括 iOS 都升级为 <code>iBoot</code> 了。这个东西~~也被编译为 Mach-O 文件~~是一个 efi 文件，可以<a href="https://www.lifewire.com/efi-file-2620983">参考这里</a>。这文件就放在这里 <code>/System/Library/CoreServices/boot.efi</code>。代码是闭源的，之前有人放出了泄漏代码在 GitHub 上:<a href="https://github.com/h1x0rz3r0/iBoot">https://github.com/h1x0rz3r0/iBoot</a>。不过现在仓库被关闭了。</p> 
<p>BootX 的代码是开源的，可以在这里找到: <a href="https://opensource.apple.com/tarballs/BootX/">https://opensource.apple.com/tarballs/BootX/</a></p> 
<p>BootX 负责初始化内核运行环境和加载内核，具体的分析可以看《Mac OS X Internals》的 4.10 章节。</p> 
<h3>1.4 最后 Bootloader 加载 kernel 到内存然后调用入口函数</h3> 
<p>前面已经讲过 kernel 是一个 Mach-O 文件，这个文件的结构大概是这样的:</p> 
<p><img decoding="async" src="https://lowlevelbits.org/img/parse-mach-o-files/macho_header.png" alt="mach_o_structure" /></p> 
<h4><strong>1.4.1 otool 工具</strong></h4> 
<p>开始加载内核之前，系统提供了 <code>otool</code> 这个工具用于分析 Mach-O 文件，这个有意思我们可以介绍一下。</p> 
<pre><code># file 命令查看 kernel 的文件格式
➜  Kernels file kernel
kernel: Mach-O 64-bit executable x86_64
<h1>otool 命令 -h 看一下 Mach Header 信息</h1>
</code><p><code>➜ Kernels otool -hv kernel<br /> Mach header<br /> magic cputype cpusubtype caps filetype ncmds sizeofcmds flags<br /> MH_MAGIC_64 X86_64 ALL 0x00 EXECUTE 18 3968 NOUNDEFS PIE<br /> </code></p></pre>
<p></p> 
<p><code>otool</code> 代码是开源的，可以在<a href="https://opensource.apple.com/">这里找到</a>。当我们运行 <code>otool</code> 命令时，会掉进它的 <code>main()</code> 函数，解析一大堆 <code>-h</code> 之类的 flag 之后，会调用内核的 <code>open()</code> 方法打开文件，位于 <code>bsd/vfs/vsf_syscalls.c</code>。</p> 
<h4><strong>1.4.2 Mach-O Header 信息</strong></h4> 
<p>BSD 的 Mach-O 文件读取实现在这个函数:</p> 
<pre><code>int
open1(vfs_context_t ctx, struct nameidata *ndp, int uflags,
    struct vnode_attr *vap, fp_allocfn_t fp_zalloc, void *cra,
    int32_t *retval)
</code></pre> 
<p><code>otool -h</code> 取得的是 Mach Header 信息，结构体如下:</p> 
<pre><code>/*
 * The 64-bit mach header appears at the very beginning of object files for
 * 64-bit architectures.
 */
struct mach_header_64 {
    uint32_t    magic;      /* mach magic number identifier */
    cpu_type_t  cputype;    /* cpu specifier */
    cpu_subtype_t   cpusubtype; /* machine specifier */
    uint32_t    filetype;   /* type of file */
    uint32_t    ncmds;      /* number of load commands */
    uint32_t    sizeofcmds; /* the size of all the load commands */
    uint32_t    flags;      /* flags */
    uint32_t    reserved;   /* reserved */
};
</code><p><code>/* Constant for the magic field of the mach_header_64 (64-bit architectures) <em>/<br /> #define MH_MAGIC_64 0xfeedfacf /</em> the 64-bit mach magic number */<br /> </code></p></pre>
<p></p> 
<p><code>MH_MAGIC_64</code> 和 <code>MH_CIGAM_64</code> 是不同大小端系统定义的常数，莫名有点喜感。</p> 
<p>CPU Type 和 SubType 都在 XNU 代码里定义，位于 <code>osfmk/mach/machine.h</code>，一堆 hardcode 的定义。诸如 CPU Type <code>CPU_TYPE_POWERPC64</code> 或者 <code>CPU_TYPE_x86_64</code> 之类的，满满的历史痕迹。SubType 则是虽然大家都是 <code>POWERPC</code> 但也有可能不兼容，如果所有都兼容就是 <code>CPU_SUBTYPE_POWERPC_ALL</code></p> 
<p><code>filetype</code> 定义在 <code>EXTERNAL_HEADERS/mach-o/loader.h</code>。<code>kernel</code> 打出来是 2，也即是 <code>MH_EXECUTE</code>，可执行文件。</p> 
<p><code>ncmds</code> 是 load commands 有多少条， <code>sizeofcmds</code> 是所有 load commands 加起来的 size，以字节为单位。</p> 
<p>详细的 Header 说明这里有篇文章大家可以参考一下: <a href="https://github.com/aidansteele/osx-abi-macho-file-format-reference">aidansteele/osx-abi-macho-file-format-reference: Mirror of OS X ABI Mach-O File Format Reference</a>。</p> 
<h4><strong>1.4.3 Load Commands</strong></h4> 
<p>Load command 就跟在 Mach Header 后面，应该算作 Header 的一部分，再往下就是编译好的二进制文件了。</p> 
<p>Load Command 描述了文件的逻辑结构，以及文件在内存里的布局信息。内核执行 Mach-O 文件的实现在 <code>bsd/kern/kern_exec.c</code>，入口是 <code>execve()</code> 方法。在 <code>parse_machfile()</code> 方法中会遍历所有的 load commands 然后执行不同的命令，遇到 <code>LC_MAIN</code> 就会执行 <code>load_main()</code>，创建一个线程，加载函数主入口。</p> 
<ol> 
 <li>execve()</li> 
 <li>__mac_execve()</li> 
 <li>exec_activate_image()</li> 
 <li>exec_mach_imgact()</li> 
 <li>load_machfile()</li> 
 <li>parse_machfile()</li> 
 <li>load_unixthread() // 赋值 entry point</li> 
 <li>activate_exec_state()</li> 
 <li>thread_setentrypoint() // entry_point 地址塞进 <code>eip</code> 寄存器(下一条指令)</li> 
</ol> 
<p>Load command 是有很多不同类型的。以前 <code>LC_THREAD</code> 或者 <code>LC_UNIXTHREAD</code> 是函数入口，不过从 10.8 开始就改成 <code>LC_MAIN</code> 了。</p> 
<p>现在我们用 <code>otool -l</code> 看看 <code>kernel</code> 的 load commands。</p> 
<pre><code># otool 命令 -l 查看 load commands
➜  Kernels otool -l kernel
kernel:
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
 0xfeedfacf 16777223          3  0x00           2    18       3968 0x00200001
Load command 0
      cmd LC_SEGMENT_64
  cmdsize 392
  segname __TEXT
   vmaddr 0xffffff8000200000
   vmsize 0x0000000000a00000
  fileoff 0
 filesize 10485760
  maxprot 0x00000005
 initprot 0x00000005
   nsects 4
    flags 0x0
...
</code></pre> 
<p><code>otool -l</code> 的结果非常长，可以 <code>&gt;&gt;</code> 到一个文本文件再打开。内核比较特殊，入口不在 <code>LC_MAIN</code> 而是 <code>LC_UNIXTHREAD</code>。我们找到 <code>LC_UNIXTHREAD</code> 所在的地方:</p> 
<pre><code>Load command 15
        cmd LC_UNIXTHREAD
    cmdsize 184
     flavor x86_THREAD_STATE64
      count x86_THREAD_STATE64_COUNT
   rax  0x0000000000000000 rbx 0x0000000000000000 rcx  0x0000000000000000
   rdx  0x0000000000000000 rdi 0x0000000000000000 rsi  0x0000000000000000
   rbp  0x0000000000000000 rsp 0x0000000000000000 r8   0x0000000000000000
    r9  0x0000000000000000 r10 0x0000000000000000 r11  0x0000000000000000
   r12  0x0000000000000000 r13 0x0000000000000000 r14  0x0000000000000000
   r15  0x0000000000000000 rip 0xffffff8000197000
rflags  0x0000000000000000 cs  0x0000000000000000 fs   0x0000000000000000
    gs  0x0000000000000000
</code></pre> 
<p>其中 <code>rip</code> 寄存器里的地址 <code>0xffffff8000197000</code> 就是内核函数的入口。我们可以用 <code>nm</code> 工具列出内核的所有符号然后匹配一下:</p> 
<pre><code>➜  Kernels nm kernel | grep -i 197000
ffffff8000197000 S __start
ffffff8000197000 S _pstart
</code></pre> 
<p>非常好，这样 XNU 内核就通过这个内存地址把 <code>__start()</code> 函数加载到内存里，愉快地开机了。</p> 
<h3>1.5 BootX 加载内核</h3> 
<p>看到这里不知道大家有没有个疑惑，就是 BSD 读取 Mach-O 的实现我懂，但是 BSD 不是在 <code>kernel</code> 里面的吗，这时候 <code>kernel</code> 自己都还没被加载啊喂😂。</p> 
<p>没错，上面描述的是普通 Mach-O 文件被内核加载的过程，但是内核自己是被 Bootloader 加载的，所以它的实现是在 Bootloader 里面。新的 <code>iBoot</code> 没有开源所以我们看看 <code>BootX</code> 的实现。</p> 
<p><code>BootX</code> 的整体入口在 <code>bootx.tproj/sl.subproj/main.c</code> 文件中:</p> 
<pre><code>const unsigned long StartTVector[2] = {(unsigned long)Start, 0};
</code></pre> 
<p><code>StartTVector</code> 指向 <code>Start()</code> 函数:</p> 
<pre><code>static void Start(void *unused1, void *unused2, ClientInterfacePtr ciPtr)
{
  long newSP;
<p>// Move the Stack to a chunk of the BSS<br /> newSP = (long)gStackBaseAddr + sizeof(gStackBaseAddr) - 0x100;<br /> <strong>asm</strong> volatile("mr r1, %0" : : "r" (newSP));</p>
</code><p><code>Main(ciPtr);<br /> }<br /> </code></p></pre>
<p></p> 
<p>调用 <code>Main()</code>，里面调用 <code>InitEverything()</code>，然后通过 <code>GetBootPaths()</code> 拿到 <code>kernel</code> 文件路径，然后 <code>DecodeKernel()</code> 获得内核的主入口内存地址:</p> 
<pre><code>gKernelEntryPoint = ppcThreadState-&gt;srr0;
</code></pre> 
<p>最后 <code>CallKernel()</code> 调用内核入口:</p> 
<pre><code>// Call the Kernel's entry point
  (*(void (*)())gKernelEntryPoint)(gBootArgsAddr, kMacOSXSignature);
</code></pre> 
<p>留意到这里内核的入口地址在 <code>srr0</code> 寄存器，这是老的 <code>BootX</code> 的代码，我们上面分析了一下 <code>kernel</code> 的 Mach-O 文件可以看到新的内核的入口是在 <code>rip</code> 寄存器上的。</p> 
<h3>1.6 为什么 <code>nm</code> 会输出一样地址的两个函数？</h3> 
<p>留意到我们刚用 <code>nm</code> 工具 <code>grep</code> 的时候有两个 <code>start</code> 函数:</p> 
<pre><code>➜  Kernels nm kernel | grep -i 197000
ffffff8000197000 S __start
ffffff8000197000 S _pstart
</code></pre> 
<p>这是为啥？原因是这两个函数的实现可能是完全一致的，然后被编译优化了。那么这两个函数的实现是怎样的呢？</p> 
<p>这两个函数是用汇编实现的，位置在 <code>osfmk/x86_64/start.s</code>。里面包含了 32 位和 64 位的兼容代码，比较长且我自己也看不懂😂。</p> 
<pre><code>.code32
    .text
    .section __HIB, __text
    .align  ALIGN
    .globl  EXT(_start)
    .globl  EXT(pstart)
LEXT(_start)
LEXT(pstart)
</code></pre> 
<p>不过可以看到上述代码声明了全局符号 <code>_start</code> 和 <code>pstart</code> 给链接器，并且 <code>_start</code> 和 <code>pstart</code> 底下的实现是一样的。所以编译优化后这两个函数的地址是一样的。</p> 
<p>那么为什么入口是 <code>_start</code> 呢？因为链接器默认的入口就是 <code>_start</code>。Linux 链接器 <code>ld</code> 的默认入口就是 <code>_start</code>，Apple 用的 Darwin Linker (ld64) 也是。可以到这里看看 Darwin Linker 的源代码: <a href="https://opensource.apple.com/source/ld64/ld64-97.2/">https://opensource.apple.com/source/ld64/ld64-97.2/</a></p> 
<p>如果想要自定义入口可以使用 <code>-e</code> 参数:</p> 
<pre><code>ld -e my_entry_point -o out a.o
</code></pre> 
<h3>1.7 <code>LC_MAIN</code> 和 <code>entryoff</code></h3> 
<p>Mac OS X 10.8 以及 iOS 10.6 以后，<code>ld64</code> 就把 <code>LC_UNIXTHREAD</code> 改成 <code>LC_MAIN</code> 了，同时整个系统所有 App 都实现了 <a href="https://en.wikipedia.org/wiki/Address_space_layout_randomization">ASLR(Address space layout randomization)</a>。</p> 
<p>每次程序加载到内存的时候都会加上一个随机的偏移量，用于防止恶意程序的攻击。ASLR 是内核实现的，所以内核自身当然没法动态偏移。</p> 
<p>我们用 <code>otool -l</code> 看看 TweetBot.app 的 Mach-O 文件。<code>LC_MAIN</code> 这个 cmd 不显示内存地址了，变成了 <code>entryoff</code>。</p> 
<pre><code>Load command 11
       cmd LC_MAIN
   cmdsize 24
  entryoff 7084
 stacksize 0
</code></pre> 
<p>但是符号表还在 Mach-O 文件中，存于 <code>__LINKEDIT</code>。</p> 
<p><code>entryoff</code> 是入口函数相对于文件头的偏移量，16 进制为 <code>0x1BAC</code>。</p> 
<p>再加上一个不同平台不一样的基准偏移量，在 Mac 上是 <code>0x100000000</code>，所以是 <code>0x100001BAC</code>。</p> 
<p>方便起见，可以使用 <a href="https://sourceforge.net/projects/machoview/">MachOView</a> 这个 App 打开 Mach-O 文件，但是 release App 一般都会去掉符号所以你也看不到这个地址对应的是不是 <code>main</code> 之类的函数。所以读者朋友可以自己编译一个 Debug 版来看，可参考 <a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a>。</p> 
<p>一个 App 如何启动可以参考这里: <a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></p> 
<h2>二、小结</h2> 
<p>其实 BIOS(UEFI) 启动时的硬件检查，Bootloader(BootX) 加载后做的事情，以及内核的主入口被调用之后，这一系列的操作都做了无数的事情。《Mac OS X Internals》书里对这些详细的步骤做了很好的解释，读起来对作者非常服气。</p> 
<p>最近读内核代码总会发现各种曾经似懂非懂的概念在阻碍我继续学习，并且东看一下西看一下也不能形成很好的整体印象。所以阅读《Mac OS X Internals》这样的书是一种非常好的辅助。同时也建议读者朋友们不要只是读书，或者只是读代码。最好是两者结合动手实践一下，可以获得更深刻的理解。</p> 
<h2>内核系列文章</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></li> 
 <li><a href="https://justinyan.me/post/4040">macOS 内核之网络信息抓包(三)</a></li> 
 <li><a href="https://justinyan.me/post/4023">macOS 内核之网络信息抓包(二)</a></li> 
 <li><a href="https://justinyan.me/post/4009">macOS 内核之网络信息抓包(一)</a></li> 
 <li><a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
 <li><a href="https://justinyan.me/post/3982">macOS 内核之内存占用信息</a></li> 
 <li><a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息</a></li> 
 <li><a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a></li> 
 <li><a href="https://justinyan.me/post/3961">macOS 内核之从 I/O Kit 电量管理开始</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface">Unified Extensible Firmware Interface - Wikipedia</a></li> 
 <li><a href="https://lowlevelbits.org/parsing-mach-o-files/">Parsing Mach-O files - Low Level Bits</a></li> 
 <li><a href="https://developer.apple.com/library/archive/documentation/Performance/Conceptual/CodeFootprint/Articles/MachOOverview.html">Overview of the Mach-O Executable Format</a></li> 
 <li><a href="https://github.com/aidansteele/osx-abi-macho-file-format-reference">aidansteele/osx-abi-macho-file-format-reference: Mirror of OS X ABI Mach-O File Format Reference</a></li> 
 <li><a href="http://www.nextop.de/NeXTstep_3.3_Developer_Documentation/DevTools/14_MachO/MachO.htmld/index.html">MachO</a></li> 
 <li><a href="https://stackoverflow.com/questions/17898989/what-is-global-start-in-assembly-language">nasm - What is global _start in assembly language? - Stack Overflow</a></li> 
 <li><a href="https://www.geeksforgeeks.org/executing-main-in-c-behind-the-scene/">Executing main() in C/C++ - behind the scene - GeeksforGeeks</a></li> 
 <li><a href="http://dbp-consulting.com/tutorials/debugging/linuxProgramStartup.html">Linux x86 Program Start Up</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Address_space_layout_randomization">Address space layout randomization - Wikipedia</a></li> 
 <li><a href="http://www.saitjr.com/ios/symbolicatecrash-3.html">Crash 符号化 3. Mach-O 与 atos</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x5185;&#x6838;&#x4E4B;&#x5185;&#x5B58;&#x5360;&#x7528;&#x4FE1;&#x606F;</title>
        <link>https://justinyan.eth.limo/3A09ED93-49CD-453D-872F-3FAB8D19F407/</link>
        <guid>https://justinyan.eth.limo/3A09ED93-49CD-453D-872F-3FAB8D19F407/</guid>
        <pubDate>Fri, 25 Oct 2019 22:42:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/10/macos_kern_memory.jpg" alt="macOS 内核之内存占用信息" /></p> 
<p>在 <a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息 | 枫言枫语</a> 一文我们分析了 iOS 和 macOS 获取 CPU 占用信息的方法和内核的实现，本篇我们来看看内存信息的实现。</p> 
<h2>一、iOS 获取自身 App 内存占用</h2> 
<p>照例先从 iOS 开始。iOS 由于系统限制，App 层面只能获取自身的内存信息，无法获取其他 App 的内存信息。所以我们先看如何获取自己 App 的内存信息。</p> 
<p>系统接口使用很简单，参考<a href="https://github.com/didi/DoraemonKit">滴滴开源的 DoraemonKit 的实现</a>如下:</p> 
<pre><code>+ (NSInteger)useMemoryForApp{
    task_vm_info_data_t vmInfo;
    mach_msg_type_number_t count = TASK_VM_INFO_COUNT;
    kern_return_t kernelReturn = task_info(mach_task_self(), TASK_VM_INFO, (task_info_t) &amp;vmInfo, &amp;count);
    if(kernelReturn == KERN_SUCCESS)
    {
        int64_t memoryUsageInByte = (int64_t) vmInfo.phys_footprint;
        return memoryUsageInByte/1024/1024;
    }
    else
    {
        return -1;
    }
}
<p>//设备总的内存</p>
</code>
 <ul>
  <code> <li>(NSInteger)totalMemoryForDevice{<br /> return [NSProcessInfo processInfo].physicalMemory/1024/1024;<br /> }<br /> </li></code>
 </ul></pre>  
<p>关键 API 还是 <code>task_info()</code>，取当前进程的信息，第一个参数为当前进程的 mach port(可参考<a href="https://justinyan.me/post/3972">上一篇讲过对这个 mach port 构造的实现</a>)，传入参数 <code>TASK_VM_INFO</code> 获取虚拟内存信息，后两个参数是返回值，传引用。</p> 
<p>可以看到 <code>task_vm_info_data_t</code> 里的 <code>phys_footprint</code> 就是当前进程的内存占用，以 <code>byte</code> 为单位。<a href="https://github.com/Tencent/matrix">腾讯开源的 Matrix</a>亦使用一致的实现。</p> 
<p><code>footprint</code> 这个术语在 Apple 的文档里有曰过: <a href="https://developer.apple.com/library/archive/technotes/tn2434/_index.html">Technical Note TN2434: Minimizing your app's Memory Footprint</a></p> 
<p>有了当前进程的内存，再获取整个手机的内存，比一下就有当前进程的内存占用率了。获取手机的物理内存信息可以用 <code>NSProcessInfo</code> 的 API，如上面 DoraemonKit 的实现。也可以像腾讯的 Matrix 一样用 <code>sysctl()</code> 的接口:</p> 
<pre><code>+ (int)getSysInfo:(uint)typeSpecifier
{
    size_t size = sizeof(int);
    int results;
    int mib[2] = {CTL_HW, (int) typeSpecifier};
    sysctl(mib, 2, &amp;results, &amp;size, NULL, 0);
    return results;
}
</code>
 <ul>
  <code> <li>(int)totalMemory<br /> {<br /> return [MatrixDeviceInfo getSysInfo:HW_PHYSMEM];<br /> }<br /> </li></code>
 </ul></pre>  
<h3>1.1 task_info() 函数实现</h3> 
<pre><code>kern_return_t
task_info(
    task_t          task,
    task_flavor_t       flavor,
    task_info_t     task_info_out,
    mach_msg_type_number_t  *task_info_count)
</code></pre> 
<p>这个函数位于 <a href="https://github.com/apple/darwin-xnu/blob/master/osfmk/kern/task.c"><code>osfmk/kern/task.c</code></a> 内部实现并不复杂，大家可以直接看源码。</p> 
<p>函数的第一个参数是用作内核与发起系统调用的进程做 IPC 通信的 mach port，第二个参数是获取信息的类型，函数里一顿 switch-case 猛如虎，剩下就是回传数据了。</p> 
<p>我们看看 <code>TASK_VM_INFO</code> 的 case，这个case 和 <code>TASK_VM_INFO_PURGEABLE</code> 共享逻辑，后者会多一些 <code>purgeable_</code> 开头的数据返回。</p> 
<p>首先内核会判断调用方是内核进程还是用户进程，内核进程取内核的 map，用户进程去该进程的 map，并加锁。接着就是一顿 map 信息读取了。最后解锁。</p> 
<pre><code>// osfmk/kern/ledger.c
// 赋值
vm_info-&gt;phys_footprint =
                (mach_vm_size_t) get_task_phys_footprint(task);
<p>// 取自 task_ledgers<br /> uint64_t get_task_phys_footprint(task_t task)<br /> {<br /> kern_return_t ret;<br /> ledger_amount_t credit, debit;</p>
<pre><code>ret = ledger_get_entries(task-&amp;gt;ledger, task_ledgers.phys_footprint, &amp;amp;credit, &amp;amp;debit);
if (KERN_SUCCESS == ret) {
    return (credit - debit);
}

return 0;
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p><code>task_ledgers</code> 是内核维护的对该进程的"账本"，每次为该进程分配和释放内存页的时候就往账本上记录一笔，并且分了多个不同的种类。</p> 
<pre><code>// osfmk/kern/task.c
void
init_task_ledgers(void)
</code></pre> 
<p>这个初始化函数里大概创建了 30 种不同类型的账本，<code>phys_footprint</code> 是其中一个。</p> 
<pre><code>// osfmk/i386/pmap.h
// osfmk/arm/pmap.h
<p>// 增加操作，即分配内存，以页为单位<br /> #define pmap_ledger_debit(p, e, a) ledger_debit((p)-&gt;ledger, e, a)</p>
</code><p><code>// 减少操作，即释放内存，以页为单位<br /> #define pmap_ledger_credit(p, e, a) ledger_credit((p)-&gt;ledger, e, a)<br /> </code></p></pre>
<p></p> 
<p>每次内核为该进程分配和释放内存时就往上记录一笔，以此来追踪进程的内存占用。这里假设各位读者都已了解虚拟内存以及为何按内存页(Memory Page)来分配的相关知识，如果有疑问可 Google 之。</p> 
<p><code>pmap</code> Mach 内核用来管理内存的一整套系统，代码古老且复杂，一个函数动辄四、五百行。而且 <code>pmap</code> 对于不同的机器有不同的实现，代码中区分了 <code>i386</code> 和 <code>arm</code> 两种实现。本人才疏学浅，一时半会也学不会，只能日后再做学习。不过通过以上代码追踪，我们可以知道为何在 iOS 中读取 <code>phys_footprint</code> 就能得到当前进程的内存占用。</p> 
<h3>1.2 <code>task_vm_info_data_</code> 数据结构</h3> 
<p><code>task_vm_info_data_t</code> 里除了 <code>phys_footprint</code> 还有很多别的东西，我们可以看看这个结构体的定义:</p> 
<pre><code>#define TASK_VM_INFO       22
#define TASK_VM_INFO_PURGEABLE 23
<p>struct task_vm_info {<br /> // 虚拟内存大小，以 byte 为单位<br /> mach_vm_size_t virtual_size;<br /> // Memory Region 个数<br /> integer_t region_count;<br /> // 内存分页大小<br /> integer_t page_size;<br /> // 实际物理内存大小，以 byte 为单位<br /> mach_vm_size_t resident_size;<br /> // _peak 记录峰值，写入时会作比较，比原来的大才会更新<br /> mach_vm_size_t resident_size_peak;</p>
<pre><code>// 带 _peak 的都是运行过程中记录峰值的
mach_vm_size_t  device;
mach_vm_size_t  device_peak;
mach_vm_size_t  internal;
mach_vm_size_t  internal_peak;
mach_vm_size_t  external;
mach_vm_size_t  external_peak;
mach_vm_size_t  reusable;
mach_vm_size_t  reusable_peak;
mach_vm_size_t  purgeable_volatile_pmap;
mach_vm_size_t  purgeable_volatile_resident;
mach_vm_size_t  purgeable_volatile_virtual;
mach_vm_size_t  compressed;
mach_vm_size_t  compressed_peak;
mach_vm_size_t  compressed_lifetime;

/* added for rev1 */
mach_vm_size_t  phys_footprint;

/* added for rev2 */
mach_vm_address_t   min_address;
mach_vm_address_t   max_address;
</code></pre>
</code><p><code>};<br /> typedef struct task_vm_info task_vm_info_data_t;<br /> </code></p></pre>
<p></p> 
<h2>二、iOS/Mac 上获取系统内存占用信息</h2> 
<p>在 macOS 上我们在终端运行 <code>vm_stat</code> 可以看到以下内存信息输出输出:</p> 
<pre><code>➜  darwin-xnu git:(master) vm_stat
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                              349761.
Pages active:                           1152796.
Pages inactive:                         1090213.
Pages speculative:                        22734.
Pages throttled:                              0.
Pages wired down:                        979685.
Pages purgeable:                         519551.
"Translation faults":                 300522536.
Pages copy-on-write:                   16414066.
Pages zero filled:                     94760760.
Pages reactivated:                      4424880.
Pages purged:                           4220936.
File-backed pages:                       480042.
Anonymous pages:                        1785701.
Pages stored in compressor:             2062437.
Pages occupied by compressor:            598535.
Decompressions:                         4489891.
Compressions:                          11890969.
Pageins:                                6923471.
Pageouts:                                 38335.
Swapins:                                  87588.
Swapouts:                                432061.
</code></pre> 
<p>这个系统命令就是通过 <code>host_statistics64()</code> 获取的，代码<a href="https://opensource.apple.com/source/system_cmds/system_cmds-805.250.2/vm_stat.tproj/vm_stat.c.auto.html">可见这里</a>。使用的是这个接口:</p> 
<pre><code>// osfmk/kern/host.c
kern_return_t
host_statistics64(host_t host, host_flavor_t flavor, host_info64_t info, mach_msg_type_number_t * count)
</code></pre> 
<p>照例第一个参数填 <code>mach_host_self()</code>，用于跟内核 IPC。第二个参数是取的系统统计信息类型，我们要取内存，所以填 <code>HOST_VM_INFO64</code>。剩下两个就是返回的数据了。</p> 
<p>返回的数据类型会 cast 成 <code>vm_statistics64_t</code></p> 
<pre><code>// osfmk/mach/vm_statistics.h
<p>/*</p>

  <ul> 
   <li>vm_statistics64</li> 
   <li></li> 
   <li>History:</li> 
   <li>rev0 - original structure.</li> 
   <li>rev1 - added purgable info (purgable_count and purges).</li> 
   <li>rev2 - added speculative_count.</li> 
   <li> <pre><code>----
</code></pre> </li> 
   <li>rev3 - changed name to vm_statistics64.</li> 
   <li> <pre><code> changed some fields in structure to 64-bit on 
</code></pre> </li> 
   <li> <pre><code> arm, i386 and x86_64 architectures.
</code></pre> </li> 
   <li>rev4 - require 64-bit alignment for efficient access</li> 
   <li> <pre><code> in the kernel. No change to reported data.
</code></pre> </li> 
   <li></li> 
  </ul>
<p>*/</p>
<p>struct vm_statistics64 {<br /> natural_t free_count; /* # 空闲内存页数量，没有被占用的 <em>/<br /> natural_t active_count; /</em> # 活跃内存页数量，正在使用或者最近被使用 <em>/<br /> natural_t inactive_count; /</em> # 非活跃内存页数量，有数据，但是最近没有被使用过，下一个可能就要干掉他 <em>/<br /> natural_t wire_count; /</em> # 系统占用的内存页，不可被换出的 <em>/<br /> uint64_t zero_fill_count; /</em> # Filled with Zero Page 的页数 <em>/<br /> uint64_t reactivations; /</em> # 重新激活的页数 inactive to active <em>/<br /> uint64_t pageins; /</em> # 换入，写入内存 <em>/<br /> uint64_t pageouts; /</em> # 换出，写入磁盘 <em>/<br /> uint64_t faults; /</em> # Page fault 次数 <em>/<br /> uint64_t cow_faults; /</em> # of copy-on-writes <em>/<br /> uint64_t lookups; /</em> object cache lookups <em>/<br /> uint64_t hits; /</em> object cache hits <em>/<br /> uint64_t purges; /</em> # of pages purged <em>/<br /> natural_t purgeable_count; /</em> # of pages purgeable <em>/<br /> /</em><br /> * NB: speculative pages are already accounted for in "free_count",<br /> * so "speculative_count" is the number of "free" pages that are<br /> * used to hold data that was read speculatively from disk but<br /> * haven't actually been used by anyone so far.<br /> *<br /> <em>/<br /> natural_t speculative_count; /</em> # of pages speculative */</p>
<pre><code>/* added for rev1 */
uint64_t    decompressions;     /* # of pages decompressed */
uint64_t    compressions;       /* # of pages compressed */
uint64_t    swapins;        /* # of pages swapped in (via compression segments) */
uint64_t    swapouts;       /* # of pages swapped out (via compression segments) */
natural_t   compressor_page_count;  /* # 压缩过个内存 */
natural_t   throttled_count;    /* # of pages throttled */
natural_t   external_page_count;    /* # of pages that are file-backed (non-swap) mmap() 映射到磁盘文件的 */
natural_t   internal_page_count;    /* # of pages that are anonymous malloc() 分配的内存 */
uint64_t    total_uncompressed_pages_in_compressor; /* # of pages (uncompressed) held within the compressor. */
</code></pre>
<p>} <strong>attribute</strong>((aligned(8)));</p>
</code><p><code>typedef struct vm_statistics64 *vm_statistics64_t;<br /> typedef struct vm_statistics64 vm_statistics64_data_t;<br /> </code></p></pre>
<p></p> 
<p><strong>Page Fault</strong> 中文翻译为缺页错误之类，其实就是要访问的内存分页已经在虚拟内存里，但是还没加载到物理内存。这时候如果访问合法就从磁盘加载到物理内存，如果不合法(访问 nullptr 之类)就 crash 这个进程。详细解释可以<a href="https://liam.page/2017/09/01/page-fault/">参考这里</a>。</p> 
<p><strong>Filled with Zero Page</strong>: 操作系统会维护一个 page，里面填满了 0，叫做 zero page。当一个新页被分配的时候，系统就往这个页里填 zero page。我的理解是相当于清空数据保护，防止其他进程读取旧数据吧。</p> 
<p><strong>空闲内存计算</strong></p> 
<p>speculative pages 是 OS X 10.5 引入的一个内核特性。内核先占用了这些 page，但是还没被真的使用，相当于预约。比如说当一个 App 在顺序读取硬盘数据的时候，内核发现它读完了 1, 2, 3 块, 那么很可能它会读 4。这时候内核先预约一块内存页准备给未来有可能会出现的 4。大概是这么个理解，可以<a href="https://apple.stackexchange.com/questions/347037/what-is-the-purpose-of-speculative-memory">参考这里的回答</a>。</p> 
<p>在上面的注释中，speculative pages 是被计入 <code>vm_stat.free_count</code> 里的，所以 <code>vm_stat</code> 的实现里，空闲内存的计算减去了这一部分:</p> 
<pre><code>pstat((uint64_t) (vm_stat.free_count - vm_stat.speculative_count), 8);
</code></pre> 
<p>以上我们就得到了系统内存信息了。不过通过 <code>host_statistics64()</code> 接口取到的数据加一起并不等于系统物理内存，这是由内核统计实现决定了，<a href="https://stackoverflow.com/questions/14789672/why-does-host-statistics64-return-inconsistent-results">这里有一个讨论有兴趣可以看看</a>。</p> 
<p>有了 <code>active_count</code>, <code>speculative_count</code> 和 <code>wired_count</code>，我们就可以计算内存占用率了？还差一个 <code>compressed</code>。</p> 
<p><strong>Memory Compression</strong></p> 
<p>内存压缩技术是从 OS X Mavericks (10.9) 开始引入的(iOS 则是 iOS 7 开始)，可以参考官方文档:<a href="https://images.apple.com/media/us/osx/2013/docs/OSX_Mavericks_Core_Technology_Overview.pdf">OS X Mavericks Core Technology Overview</a>。</p> 
<p>简单理解为系统会在内存紧张的时候寻找 inactive memory pages 然后开始压缩，以 CPU 时间来换取内存空间。所以 <code>compressed</code> 也要算进使用中的内存。另外还需要记录被压缩的 page 的信息，记录在 <code>compressor_page_count</code> 里，这个也要算进来。</p> 
<pre><code>(active_count + wired_count + speculative_count + compressor_page_count) * page_size
</code></pre> 
<p>这才是最终的系统内存占用情况，以 byte 为单位。这个接口 <code>host_statistics()</code> 在 iOS 亦适用。</p> 
<p>Mac 上的 iStat Menus App 就是这样计算内存占用的，但是，Activity Monitor.app 却有点不同。留意到他的 Memory Used 有一项叫做 App Memory。这个是根据 <code>internal_page_count</code> 来计算的，所以 Activity Monitor.app 的计算是这样的:</p> 
<pre><code>(internal_page_count + wired_count + compressor_page_count) * page_size
</code></pre> 
<h2>三、KSCrash 的 usableMemory 函数</h2> 
<p><a href="https://github.com/kstenerud/KSCrash">KSCrash</a> 是一个开源的 Crash 堆栈信息捕捉库，里面有两个关于内存的函数:</p> 
<pre><code>static uint64_t freeMemory(void)
{
    vm_statistics_data_t vmStats = {};
    vm_size_t pageSize = 0;
    if(VMStats(&amp;vmStats, &amp;pageSize))
    {
        return ((uint64_t)pageSize) * vmStats.free_count;
    }
    return 0;
}
</code><p><code>static uint64_t usableMemory(void)<br /> {<br /> vm_statistics_data_t vmStats = {};<br /> vm_size_t pageSize = 0;<br /> if(VMStats(&amp;vmStats, &amp;pageSize))<br /> {<br /> return ((uint64_t)pageSize) * (vmStats.active_count +<br /> vmStats.inactive_count +<br /> vmStats.wire_count +<br /> vmStats.free_count);<br /> }<br /> return 0;<br /> }<br /> </code></p></pre>
<p></p> 
<p><code>freeMemory()</code> 是直接返回的 <code>free_count</code>，<code>usableMemory()</code> 则是 <code>active_count + inactive_count + wire_count + free_count</code>。</p> 
<p>根据这两个函数的实现我猜测 <code>freeMemory()</code> 是想表达当前空闲内存的意思，<code>usableMemory()</code> 则是整个系统一共可以使用的内存有多少。</p> 
<p>理论上 <code>usableMemory</code> 可以用硬件信息代替，但实际上系统接口返回的数据加一起一般都比物理内存少。使用这种方式计算我猜可能也是想获得更准备的系统实际可用内存吧。</p> 
<p>但是根据上文我们已经知道，<code>free_count</code> 还包含了 <code>speculative_count</code>，最好去掉。并且 iOS 7 开始还加入了 memory compression，所以还得加上这个。</p> 
<p>KSCrash 用的接口是 <code>host_statistics()</code>，这个接口没有返回 compression 相关的信息，猜测应该是这个项目开始的时候还没有 <code>host_statistics64()</code> 接口，或者当时 iPhone 的 64 位机器还不够普及(iPhone 5s 开始有 64 位机器)。</p> 
<p>不过我自己实践了一下，即使用 <code>host_statistics64()</code> 接口，加上 <code>compressions</code> 和 <code>compressor_page_count</code> 之后的结果和不加的结果差不多。也有可能当时我的手机并没有使用大量内存所以压缩效果不明显就是。</p> 
<pre><code>mem: 2712944640
mem2: 2712961024
</code></pre> 
<h2>四、iOS 和 Mac 的差异</h2> 
<h3>4.1 Mac 有 page out 但是 iOS 没有</h3> 
<p>参考 Apple 官方文档 <a href="https://developer.apple.com/library/archive/documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html">About the Virtual Memory System</a>，Mac 上会有换页行为，也就是当物理内存不够了，就把不活跃的内存页暂存到磁盘上，以此换取更多的内存空间。</p> 
<p>具体的步骤是:</p> 
<ol> 
 <li>如果 active list 上的内存页最近没人访问过，就丢进 inactive list 里</li> 
 <li>如果一个在 inactive list 上的内存页最近没人访问，那就找到这个页的 VM object</li> 
 <li>如果这个 VM object 从来没被 paged (换入或者换出过)，就创建一个默认的 pager 给他</li> 
 <li>然后用这个默认的 pager 尝试把它换出(page out)</li> 
 <li>如果换出成功那就释放该页占用的物理内存，然后把该页从 inactive list 放进 free list</li> 
</ol> 
<p>但是在 iOS 上，系统不会有 page out 行为。这大概是 Apple 当年把 Darwin 系统移植到手机上时遇到的最头痛的问题之一：没有 swap 空间。桌面操作系统发展了几十年，有非常成熟的硬件条件，但是手机并不是。手机自带的空间也很小，属于珍贵资源，同时跟桌面硬件比起来，手机的闪存 I/O 速度太慢。所以普遍手机的操作系统都没有设计 swap。</p> 
<p>所以一旦空闲内存下降到边界，iOS 的内核就会把 inactive 且没有修改过的内存释放掉，而且还可能会给正在运行的 App 发出内存警告，让 App 及时释放内存不然就之间挂掉，也就是俗称的"爆内存"(OOM Out-of-Memory)。</p> 
<h3>4.2 iOS 有 jetsam 但是 Mac 没有</h3> 
<p>负责把 iOS App 干掉的杀手叫做 <code>jetsam</code>，这个东西在 Mac 上没有。</p> 
<h4><strong>jetsam 如何判断要干掉哪些进程？</strong></h4> 
<p>这篇 <a href="http://newosxbook.com/articles/MemoryPressure.html">No pressure, Mon! Handling low memory conditions in iOS and Mavericks</a> 和这篇 <a href="https://satanwoo.github.io/2017/10/18/abort/">iOS内存abort(Jetsam) 原理探究 | SatanWoo</a> 对于 jetsam 有些解析。不过 jetsam 相关的代码非常长，直接看的话是真的眼花缭乱。</p> 
<p>看完这两篇文章之后我发现几个地方不太清楚，所以还是自己去走了一遍，但是我从最终的 kill 那一步反推回去，读起来比从一开始看 memory status 一步步往下走要容易一些。所以有兴趣看这部分代码的朋友，建议也从 <code>memorystatus_do_kill()</code> 反推回去。</p> 
<ol> 
 <li>开机</li> 
 <li><code>arm_init()</code></li> 
 <li><code>kernel_bootstrap()</code></li> 
 <li><code>machine_startup()</code></li> 
 <li><code>kernel_bootstrap()</code></li> 
 <li><code>kernel_bootstrap_thread()</code></li> 
 <li><code>bsd_init()</code></li> 
 <li><code>memorystatus_init()</code></li> 
 <li><code>memorystatus_thread()</code></li> 
 <li><code>memorystatus_act_aggressive()</code></li> 
 <li><code>memorystatus_kill_top_process()</code></li> 
 <li><code>memorystatus_kill_proc()</code></li> 
 <li><code>memorystatus_do_kill()</code></li> 
 <li><code>jetsam_do_kill()</code></li> 
 <li><code>exit_with_reason()</code></li> 
 <li>对每个线程调用 <code>thread_terminate()</code></li> 
 <li><code>thread_terminate_internal()</code></li> 
 <li><code>thread_apc_ast()</code></li> 
 <li><code>thread_terminate_self()</code></li> 
 <li><code>threadcnt == 0</code> 时调用 <code>proc_exit()</code></li> 
</ol> 
<p>一共 20 层之多，内核代码果然年代久远。 XD</p> 
<p>其中 #1-#8 都是初始化，<code>memorystatus_init()</code> 里面创建了多个(hardcoded 为 3 个)最高优先级的内核线程:</p> 
<pre><code>int max_jetsam_threads = JETSAM_THREADS_LIMIT;
#define JETSAM_THREADS_LIMIT   3
</code><p><code>kernel_thread_start_priority(memorystatus_thread, NULL, 95 /* MAXPRI_KERNEL */, &amp;jetsam_threads[i].thread);<br /> </code></p></pre>
<p></p> 
<p>以下条件命中时，会采取行动:</p> 
<pre><code>static boolean_t
memorystatus_action_needed(void)
{
#if CONFIG_EMBEDDED
    return (is_reason_thrashing(kill_under_pressure_cause) ||
            is_reason_zone_map_exhaustion(kill_under_pressure_cause) ||
           memorystatus_available_pages &lt;= memorystatus_available_pages_pressure);
#else /* CONFIG_EMBEDDED */
    return (is_reason_thrashing(kill_under_pressure_cause) ||
            is_reason_zone_map_exhaustion(kill_under_pressure_cause));
#endif /* CONFIG_EMBEDDED */
}
</code></pre> 
<p><strong>thrashing</strong></p> 
<p><code>kill_under_pressure_cause</code> 为 <code>thrashing</code> 的条件:</p> 
<pre><code>kMemorystatusKilledFCThrashing
kMemorystatusKilledVMCompressorThrashing
kMemorystatusKilledVMCompressorSpaceShortage
</code></pre> 
<p>会在这里触发 <code>compressor_needs_to_swap(void)</code>，当内存需要换页的时候，<code>arm</code> 架构的实现就会判断当前 vm compressor 状态然后抛出上述三种 cause 之一，按照我的理解应该是内存压缩都开始告急了。</p> 
<p><strong>ZoneMapExhaustion</strong></p> 
<p><code>kill_under_pressure_cause</code> 为 <code>zone_map_exhaustion</code> 的条件:</p> 
<pre><code>kMemorystatusKilledZoneMapExhaustion
</code></pre> 
<p>这种情况则是由 <code>kill_process_in_largest_zone()</code> 函数发起，如果能找到 alloc 了最大 zone 的一个进程就干掉他，不行就记录 cause，走 jetsam 流程。</p> 
<p><strong><code>memorystatus_available_pages &lt;= memorystatus_available_pages_pressure</code></strong></p> 
<p>或者是可用内存页少于系统设定的阈值，这个阈值计算如下:</p> 
<pre><code>unsigned long pressure_threshold_percentage = 15;
unsigned long delta_percentage = 5;
</code><p><code>memorystatus_delta = delta_percentage * atop_64(max_mem) / 100;<br /> memorystatus_available_pages_pressure = (pressure_threshold_percentage / delta_percentage) * memorystatus_delta;<br /> </code></p></pre>
<p></p> 
<p>相当于 <code>atop_64(max_mem) * 15 / 100</code> 也就是最大内存的 15%。<code>max_mem</code> 是 <code>arm_vm_init()</code> 启动时传入的，应该就是硬件内存大小了。</p> 
<h4><strong>jetsam 如何杀进程？</strong></h4> 
<p><code>memorystatus_thread()</code> 会先取一波原因:</p> 
<pre><code>/* Cause */
enum {
    kMemorystatusInvalid                            = JETSAM_REASON_INVALID,
    kMemorystatusKilled                             = JETSAM_REASON_GENERIC,
    kMemorystatusKilledHiwat                        = JETSAM_REASON_MEMORY_HIGHWATER,
    kMemorystatusKilledVnodes                       = JETSAM_REASON_VNODE,
    kMemorystatusKilledVMPageShortage               = JETSAM_REASON_MEMORY_VMPAGESHORTAGE,
    kMemorystatusKilledProcThrashing                = JETSAM_REASON_MEMORY_PROCTHRASHING,
    kMemorystatusKilledFCThrashing                  = JETSAM_REASON_MEMORY_FCTHRASHING,
    kMemorystatusKilledPerProcessLimit              = JETSAM_REASON_MEMORY_PERPROCESSLIMIT,
    kMemorystatusKilledDiskSpaceShortage            = JETSAM_REASON_MEMORY_DISK_SPACE_SHORTAGE,
    kMemorystatusKilledIdleExit                     = JETSAM_REASON_MEMORY_IDLE_EXIT,
    kMemorystatusKilledZoneMapExhaustion            = JETSAM_REASON_ZONE_MAP_EXHAUSTION,
    kMemorystatusKilledVMCompressorThrashing        = JETSAM_REASON_MEMORY_VMCOMPRESSOR_THRASHING,
    kMemorystatusKilledVMCompressorSpaceShortage    = JETSAM_REASON_MEMORY_VMCOMPRESSOR_SPACE_SHORTAGE,
};
</code></pre> 
<p>如果是上一节 <code>memorystatus_action_needed()</code> 里的原因则走 <code>memorystatus_kill_hiwat_proc()</code>。<code>hiwat</code> 就是 <code>high water</code>。这时候不会立刻杀掉该进程，而是判断一下 <code>phys_footprint</code> 是否超过 <code>memstat_memlimit</code>，超过就干掉。</p> 
<p>这一步如果成功杀掉了，那么这个循环就先结束，如果杀失败了，那就要开始愤怒模式了:</p> 
<pre><code>static boolean_t
memorystatus_act_aggressive(uint32_t cause, os_reason_t jetsam_reason, int *jld_idle_kills, boolean_t *corpse_list_purged, boolean_t *post_snapshot)
</code></pre> 
<p><code>vm_pressure_thread</code> 也会监控 VM Pressure，判断是否要杀进程。</p> 
<p><code>memorystatus_pages_update()</code> 会触发 vm pressure 检查，非常多地方会触发这个函数，已无力读下去。</p> 
<p>不过最终大家都会会走 <code>memorystatus_do_kill()</code> 调用 <code>jetsam_do_kill()</code>，进入 <code>exit_with_reason()</code> 带一个 <code>SIGKILL</code> 信号。比较有意思是它的代码最末尾是:</p> 
<pre><code>/* Last thread to terminate will call proc_exit() */
    task_terminate_internal(task);
<pre><code>return(0);
</code></pre>
</code><p><code></code></p></pre>
<p></p> 
<p>我还以为是在 <code>task_terminate_internal()</code> 发了退出信号，但是并没有，这里面只是清理了 IPC 空间，<code>map</code> 之类的内核信息。注释说最后一个线程会调用 <code>proc_exit()</code>，原来是在这里调用的:</p> 
<pre><code>while (p-&gt;exit_thread != self) {
        if (sig_try_locked(p) &lt;= 0) {
            proc_transend(p, 1);
            os_reason_free(exit_reason);
<pre><code>        if (get_threadtask(self) != task) {
            proc_unlock(p);
            return(0);
                    }
        proc_unlock(p);

        thread_terminate(self);
        if (!thread_can_terminate) {
            return 0;
        }

        thread_exception_return();
        /* NOTREACHED */
    }
    sig_lock_to_exit(p);
}
</code></pre>
</code><p><code></code></p></pre>
<p></p> 
<p>遍历所有线程，然后都调用 <code>thread_terminate()</code> 结束线程，这个函数的实现里面有判断 <code>threadcnt == 0</code> 时就调用 <code>proc_exit()</code>，这里面就会发送我们熟悉的 <code>SIGKILL</code> 信号然后退出进程了。</p> 
<h4>4.3 <strong>iOS 如何判断 OOM</strong></h4> 
<p>但是这些信息内核却并没有抛给应用，所以应用也不知道自己 OOM 了。参考 <a href="https://github.com/Tencent/matrix">Tencent/matrix</a> 的实现，也只能用排除法。</p> 
<pre><code>if (info.isAppCrashed) {
    // 普通 crash 捕获框架能抓到的 crash
    s_rebootType = MatrixAppRebootTypeNormalCrash;
} else if (info.isAppQuitByUser) {
    // 用户主动关闭，来自 UIApplicationWillTerminateNotification
    s_rebootType = MatrixAppRebootTypeQuitByUser;
} else if (info.isAppQuitByExit) {
    // 利用 atexit() 注册回调
    s_rebootType = MatrixAppRebootTypeQuitByExit;
} else if (info.isAppWillSuspend || info.isAppBackgroundFetch) {
    // App 主动调用的，matrix 的注释曰: notify the app will suspend, help improve the detection of the plugins
    if (info.isAppSuspendKilled) {
        s_rebootType = MatrixAppRebootTypeAppSuspendCrash;
    } else {
        s_rebootType = MatrixAppRebootTypeAppSuspendOOM;
    }
} else if ([MatrixAppRebootAnalyzer isAppChange]) {
    // App 升级了
    s_rebootType = MatrixAppRebootTypeAPPVersionChange;
} else if ([MatrixAppRebootAnalyzer isOSChange]) {
    // 系统升级了
    s_rebootType = MatrixAppRebootTypeOSVersionChange;
} else if ([MatrixAppRebootAnalyzer isOSReboot]) {
    // 系统重启了
    s_rebootType = MatrixAppRebootTypeOSReboot;
} else if (info.isAppEnterBackground) {
    // 排除以上情况，剩下的就认为是 OOM，在后台就是后台 OOM
    s_rebootType = MatrixAppRebootTypeAppBackgroundOOM;
} else if (info.isAppEnterForeground) {
    // 在前台，判断下是否死锁
    if (info.isAppMainThreadBlocked) {
            // 死锁，来自 matrix 的卡顿监控，跟内存无关
        s_rebootType = MatrixAppRebootTypeAppForegroundDeadLoop;
        s_lastDumpFileName = info.dumpFileName;
    } else {
            // 前台 OOM
        s_rebootType = MatrixAppRebootTypeAppForegroundOOM;
        s_lastDumpFileName = @"";
    }
} else {
    s_rebootType = MatrixAppRebootTypeOtherReason;
}
</code></pre> 
<h2>五、小结</h2> 
<p>iOS/Mac 获取内存占用信息的接口比较简单，但是涉及的概念和实现却非常复杂和庞大，尤其是内核的实现，一个函数动不动就 500 行以上，如果没有配套的书籍讲解，阅读起来十分吃力。所以读这种类型的代码，还是找到关键函数往回推比较简单点。XDDD</p> 
<p><em>P.S. 使用 <code>kill -l</code> 命令可以看到所有的 tty 信号。<code>SIGHUP</code> 是 1，<code>SIGKILL</code> 是 9。所以我们经常使用的 <code>kill -9 &lt;pid&gt;</code> 命令就是告诉该进程你被 Kill 了。</em></p> 
<p><em>P.P.S. <code>memorystatus_do_kill()</code> 函数的参数叫做 <code>victim_p</code> XDDD</em></p> 
<h2>内核系列文章</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></li> 
 <li><a href="https://justinyan.me/post/4040">macOS 内核之网络信息抓包(三)</a></li> 
 <li><a href="https://justinyan.me/post/4023">macOS 内核之网络信息抓包(二)</a></li> 
 <li><a href="https://justinyan.me/post/4009">macOS 内核之网络信息抓包(一)</a></li> 
 <li><a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
 <li><a href="https://justinyan.me/post/3982">macOS 内核之内存占用信息</a></li> 
 <li><a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息</a></li> 
 <li><a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a></li> 
 <li><a href="https://justinyan.me/post/3961">macOS 内核之从 I/O Kit 电量管理开始</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://github.com/didi/DoraemonKit">didi/DoraemonKit</a></li> 
 <li><a href="https://zhuanlan.zhihu.com/p/49829766">iOS 内存管理研究 - 知乎</a></li> 
 <li><a href="https://github.com/Tencent/matrix">Tencent/matrix</a></li> 
 <li><a href="https://satanwoo.github.io/2017/10/18/abort/">iOS内存abort(Jetsam) 原理探究 | SatanWoo</a></li> 
 <li><a href="https://developer.apple.com/library/archive/technotes/tn2434/_index.html">Technical Note TN2434: Minimizing your app's Memory Footprint</a></li> 
 <li><a href="https://www.jianshu.com/p/553f34b03624">探索iOS内存分配 - 简书</a></li> 
 <li><a href="https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/vm/vm.html">Memory and Virtual Memory</a></li> 
 <li><a href="https://liam.page/2017/09/01/page-fault/">程序员的自我修养（七）：内存缺页错误 | 始终</a></li> 
 <li><a href="https://apple.stackexchange.com/questions/347037/what-is-the-purpose-of-speculative-memory">macos - What is the purpose of speculative memory? - Ask Different</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Virtual_memory_compression">Virtual memory compression - Wikipedia</a></li> 
 <li><a href="https://images.apple.com/media/us/osx/2013/docs/OSX_Mavericks_Core_Technology_Overview.pdf">OS X Mavericks CÓore Technology Overview</a></li> 
 <li><a href="https://www.lifewire.com/understanding-compressed-memory-os-x-2260327">Understanding Compressed Memory on the Mac</a></li> 
 <li><a href="http://newosxbook.com/articles/MemoryPressure.html">No pressure, Mon! Handling low memory conditions in iOS and Mavericks</a></li> 
 <li><a href="https://developer.android.com/topic/performance/memory-overview">Overview of memory management  |  Android Developers</a></li> 
 <li><a href="https://www.cnblogs.com/liqiuhao/p/9031803.html">解密TTY - 李秋豪 - 博客园</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x5185;&#x6838;&#x4E4B; CPU &#x5360;&#x7528;&#x7387;&#x4FE1;&#x606F;</title>
        <link>https://justinyan.eth.limo/D88330CE-77FC-4B60-82C9-EFAED585066A/</link>
        <guid>https://justinyan.eth.limo/D88330CE-77FC-4B60-82C9-EFAED585066A/</guid>
        <pubDate>Wed, 23 Oct 2019 16:36:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/10/macos_kernel_cpu.jpg" alt="macOS 内核之 CPU 占用率信息" /></p> 
<p>在 iOS/Mac 上开发 App，当我们需要性能监控能力的时候，往往需要 CPU 信息来辅助追查：比如当前时刻是否 CPU 高占导致 App 卡到掉渣之类。</p> 
<h2>一、iOS 的 CPU 占用率实现</h2> 
<p>iOS 由于系统的限制，在不越狱的情况下无法获知整个系统的 CPU 信息，只能拿到自己 App 的所有线程信息，然后把 CPU 时间全部加起来得到一个大概的数值以供参考。可以参考<a href="https://github.com/Tencent/matrix/blob/master/matrix/matrix-iOS/Matrix/WCCrashBlockMonitor/CrashBlockPlugin/Main/BlockMonitor/Handler/WCPowerConsumeStackCollector.mm">腾讯开源的Matrix 的实现</a>。代码太长我们只看核心部分:</p> 
<pre><code>    // 取当前进程基础信息，其实不取也没有关系
    kr = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t) tinfo, &amp;task_info_count);
<pre><code>// 取当前进程的所有线程
kr = task_threads(mach_task_self(), &amp;amp;thread_list, &amp;amp;thread_count);

 // 遍历所有线程，取一波 CPU 时间
for (j = 0; j &amp;lt; thread_count; j++) {
        // 取一下线程信息
    thread_info_count = THREAD_INFO_MAX;
    kr = thread_info(thread_list[j], THREAD_BASIC_INFO,
                     (thread_info_t) thinfo, &amp;amp;thread_info_count);

    basic_info_th = (thread_basic_info_t) thinfo;

        // 计算一下时间和 CPU Usage，需要除以一个 TH_USAGE_SCALE 的 scale factor
    if (!(basic_info_th-&amp;gt;flags &amp;amp; TH_FLAGS_IDLE)) {
        tot_sec = tot_sec + basic_info_th-&amp;gt;user_time.seconds + basic_info_th-&amp;gt;system_time.seconds;
        tot_usec = tot_usec + basic_info_th-&amp;gt;system_time.microseconds + basic_info_th-&amp;gt;system_time.microseconds;
        tot_cpu = tot_cpu + basic_info_th-&amp;gt;cpu_usage / (float) TH_USAGE_SCALE * 100.0;
    }

}

 // 最后释放一下
kr = vm_deallocate(mach_task_self(), (vm_offset_t) thread_list, thread_count * sizeof(thread_t));
</code></pre>
</code><p><code></code></p></pre>
<p></p> 
<p>或者<a href="https://github.com/didi/DoraemonKit/blob/master/iOS/DoraemonKit/Src/Core/Plugin/CPU/Function/DoraemonCPUUtil.m">滴滴开源的 DoraemonKit 的实现</a>，跟上面的实现基本是一样的，只是省略了<code>task_info()</code>和<code>user_time</code>, <code>system_time</code>的计算。</p> 
<p>留意到我们需要把 <code>cpu_usage</code> 取得的值除以 <code>TH_USAGE_SCALE</code> 后才能获得一个准确的值。为啥？这个东西用来干啥子的？</p> 
<h3>1.1 TH_USAGE_SCALE 是什么</h3> 
<p>我们直接看看 <code>darwin-xnu</code> 对 <code>thread_info()</code> 的实现。这个函数只是简单地加了个锁，真正的实现在 <code>thread_info_internal()</code>。位置在 <code>osfmk/kern/thread.c</code>。</p> 
<p>如果参数为 <code>THREAD_BASIC_INFO</code> 则走 <code>retrieve_thread_basic_info()</code>。这个函数先取了一波系统 <code>timer</code> 的数据给 <code>user_time</code> 和 <code>system_time</code>，然后就是重头戏了:</p> 
<pre><code>#define TH_USAGE_SCALE 1000
<pre><code>/*
 *  To calculate cpu_usage, first correct for timer rate,
 *  then for 5/8 ageing.  The correction factor [3/5] is
 *  (1/(5/8) - 1).
 */
basic_info-&amp;gt;cpu_usage = 0;
</code></pre>
<p>#if defined(CONFIG_SCHED_TIMESHARE_CORE)<br /> if (sched_tick_interval) {<br /> basic_info-&gt;cpu_usage = (integer_t)(((uint64_t)thread-&gt;cpu_usage<br /> * TH_USAGE_SCALE) / sched_tick_interval);<br /> basic_info-&gt;cpu_usage = (basic_info-&gt;cpu_usage * 3) / 5;<br /> }<br /> #endif</p>
<pre><code>if (basic_info-&amp;gt;cpu_usage &amp;gt; TH_USAGE_SCALE)
    basic_info-&amp;gt;cpu_usage = TH_USAGE_SCALE;
</code></pre>
</code><p><code></code></p></pre>
<p></p> 
<p><code>CONFIG_SCHED_TIMESHARE_CORE</code> 这个宏应该是分时调度线程的意思，<code>sched_tick_interval</code> 则是定义在 <code>osfmk/kern/sched.h</code> 的一个全局变量。在分时调度逻辑初始化的时候，这个值被赋值:</p> 
<pre><code>// void sched_timeshare_timebase_init(void)
</code><p><code>/* scheduler tick interval <em>/<br /> // #define USEC_PER_SEC 1000000ull /</em> microseconds per second */<br /> // #define SCHED_TICK_SHIFT 3<br /> clock_interval_to_absolutetime_interval(USEC_PER_SEC &gt;&gt; SCHED_TICK_SHIFT,<br /> NSEC_PER_USEC, &amp;abstime);<br /> assert((abstime &gt;&gt; 32) == 0 &amp;&amp; (uint32_t)abstime != 0);<br /> sched_tick_interval = (uint32_t)abstime;<br /> </code></p></pre>
<p></p> 
<p>这个值就是分时调度时(Time)每次 tick 的时间间隔，关于 FreeBSD 的分时模型(Time-sharing) <a href="http://www.informit.com/articles/article.aspx?p=2249436&amp;seqNum=4">这里有篇文章可以参考一下</a>。</p> 
<pre><code>void
clock_interval_to_absolutetime_interval(uint32_t   interval,
                                        uint32_t   scale_factor,
                                        uint64_t * result)
{
    uint64_t nanosecs = (uint64_t) interval * scale_factor;
    uint64_t t64;
<pre><code>*result = (t64 = nanosecs / NSEC_PER_SEC) * rtclock_sec_divisor;
nanosecs -= (t64 * NSEC_PER_SEC);
*result += (nanosecs * rtclock_sec_divisor) / NSEC_PER_SEC;
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p><code>NSEC_PER_SEC</code> 是每一秒中有多少的纳秒(<a href="https://developer.apple.com/documentation/dispatch/nsec_per_sec">参考这里</a>)。<code>nanosecs / NSEC_PER_SEC</code> 就得到秒了。</p> 
<p><code>rtclock_sec_divisor</code> 比较有意思。首先是 RTC，<a href="https://en.wikipedia.org/wiki/Real-time_clock">Real-time clock</a>，中文翻译为实时时钟，是一个小小的时钟芯片，一般装在主板上，使用 CMOS 电池。读者朋友如果有装过 PC 的话应该会在主板上看到一个纽扣电池的卡槽，这个东西可以给 RTC 模块供电。</p> 
<p><code>rtclock_sec_divisor</code> 这个数值来自于以下函数:</p> 
<pre><code>static void
timebase_callback(struct timebase_freq_t * freq)
</code></pre> 
<p>其中 <code>freq</code> 这个参数不同的平台有不同的实现。在时钟模块初始化的时候，内核会注册一个回调 <code>PE_register_timebase_callback(timebase_callback);</code> arm 架构的是是持有这个 callback 然后从硬件读取到相关信息后通过 callback 函数传回去:</p> 
<pre><code>void
PE_call_timebase_callback(void)
{
    struct timebase_freq_t timebase_freq;
<pre><code>timebase_freq.timebase_num = gPEClockFrequencyInfo.timebase_frequency_hz;
timebase_freq.timebase_den = 1;

if (gTimebaseCallback)
    gTimebaseCallback(&amp;amp;timebase_freq);
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p><code>timebase_freq_t</code> 结构体的定义如下：</p> 
<pre><code>struct timebase_freq_t {
  unsigned long timebase_num; // numerator 分子
  unsigned long timebase_den; // denominator 分母
};
</code></pre> 
<p>这种表示时间的方法叫做 Time Base，中文翻译为“时基”(注意这里所谓的时基和示波器的稍有不同，这里主要用作一个计时单位)。上面说到整个计算机的时序系统是建立在 RTC 模块上的，这个东西最重要的核心是一个时钟振荡器。目前多采用频率为 32.768 kHz (2^15) 的石英晶体制作。</p> 
<p>在 <code>arm</code> 架构(iPhone)的实现中，<code>timebase_freq</code> 的分母被 hardcode 为 1。</p> 
<p><code>i386</code>(Mac)则取了总线频率做了如下运算:</p> 
<pre><code>void PE_call_timebase_callback(void)
{
  struct timebase_freq_t timebase_freq;
  unsigned long          num, den, cnt;
<p>num = gPEClockFrequencyInfo.bus_clock_rate_num * gPEClockFrequencyInfo.bus_to_dec_rate_num;<br /> den = gPEClockFrequencyInfo.bus_clock_rate_den * gPEClockFrequencyInfo.bus_to_dec_rate_den;</p>
<p>cnt = 2;<br /> while (cnt &lt;= den) {<br /> if ((num % cnt) || (den % cnt)) {<br /> cnt++;<br /> continue;<br /> }</p>
<pre><code>num /= cnt;
den /= cnt;
</code></pre>
<p>}</p>
<p>timebase_freq.timebase_num = num;<br /> timebase_freq.timebase_den = den;</p>
</code><p><code>if (gTimebaseCallback) gTimebaseCallback(&amp;timebase_freq);<br /> }<br /> </code></p></pre>
<p></p> 
<p><code>gPEClockFrequencyInfo</code> 里的东西在系统启动时由外部传入，应该是硬件信息。其中 arm 架构的实现还根据硬件的不同写了一堆转换，比如三星的 s3c2410 处理器，OMAP 的 OMAP3430 之类的。不过不知道用来做什么，<a href="https://www.theiphonewiki.com/wiki/Alpine_1A420">the iPhone Wiki</a>倒是提供了一个线索，大意是 2009 年在 <a href="https://forums.macrumors.com/threads/i-got-some-iphone-prototypes.627449/">MacRumors</a>有人发了 iPhone 原型机的照片引起大家讨论。由于在系统的 <code>/System/Library/Caches/com.apple.kernelcaches</code> 里有一些其他 CPU 的处理，猜测是当时苹果不晓得要用哪一种 CPU 比较好，是遗留的代码。虽无法求证但是好像很有道理。</p> 
<p>在判断完一系列架构之后，如果都不符合就把 <code>timebase_frequency_hz</code> 设置为默认值 24000000，然后在再用 IOKit 接口取 <code>timebase-frequency</code>:</p> 
<pre><code>/* Find the time base frequency first. */
if (DTGetProperty(cpu, "timebase-frequency", (void **)&amp;value, &amp;size) == kSuccess) {
    /*
     * timebase_frequency_hz is only 32 bits, and
     * the device tree should never provide 64
     * bits so this if should never be taken.
     */
    if (size == 8)
        gPEClockFrequencyInfo.timebase_frequency_hz = *(unsigned long long *)value;
    else
        gPEClockFrequencyInfo.timebase_frequency_hz = *value;
}
</code></pre> 
<p>i386 的实现比较简单，基本就是 <code>vstart()</code> 函数里的启动参数 <code>boot_args_start</code> 带过来。</p> 
<pre><code>gPEClockFrequencyInfo.timebase_frequency_hz = 1000000000;
gPEClockFrequencyInfo.bus_frequency_hz      =  100000000;
gPEClockFrequencyInfo.bus_clock_rate_hz = gPEClockFrequencyInfo.bus_frequency_hz;
gPEClockFrequencyInfo.dec_clock_rate_hz = gPEClockFrequencyInfo.timebase_frequency_hz;
<p>gPEClockFrequencyInfo.bus_clock_rate_num = gPEClockFrequencyInfo.bus_clock_rate_hz;<br /> gPEClockFrequencyInfo.bus_clock_rate_den = 1;</p>
</code><p><code>gPEClockFrequencyInfo.bus_to_dec_rate_num = 1;<br /> gPEClockFrequencyInfo.bus_to_dec_rate_den =<br /> gPEClockFrequencyInfo.bus_clock_rate_hz / gPEClockFrequencyInfo.dec_clock_rate_hz;<br /> </code></p></pre>
<p></p> 
<p>所以 <code>bus_clock_rate_num</code> 是 100000000，<code>bus_clock_rate_den</code> 是 1。</p> 
<p><code>bus_to_dec_rate_num</code> 是 1, <code>bus_clock_rate_hz</code> 是 100000000， <code>dec_clock_rate_hz</code> 是 <code>1000000000</code>，所以 <code>bus_to_dec_rate_den</code> 是 0.1，但是要留意<code>gPEClockFrequencyInfo.bus_clock_rate_hz / gPEClockFrequencyInfo.dec_clock_rate_hz</code>这个式子里面，这两个参数都是 <code>unsigned long</code>，所以会变成 0。于是</p> 
<pre><code>// 100000000*1
num = gPEClockFrequencyInfo.bus_clock_rate_num * gPEClockFrequencyInfo.bus_to_dec_rate_num;
</code><p><code>// 1*0<br /> den = gPEClockFrequencyInfo.bus_clock_rate_den * gPEClockFrequencyInfo.bus_to_dec_rate_den;<br /> </code></p></pre>
<p></p> 
<p>i386 的 time base 中分子是 100000000 而分母是 0。这让我非常费解，因为底下还要对 <code>den</code> 做计算:</p> 
<pre><code>cnt = 2;
while (cnt &lt;= den) {
    if ((num % cnt) || (den % cnt)) {
      cnt++;
      continue;
    }
<pre><code>num /= cnt;
den /= cnt;
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>这段代码就废了，而且在 <code>timebase_callback(struct timebase_freq_t * freq)</code> 函数的实现中，0 是非法的:</p> 
<pre><code>static void
timebase_callback(struct timebase_freq_t * freq)
{
    unsigned long numer, denom;
    uint64_t      t64_1, t64_2;
    uint32_t      divisor;
<pre><code>if (freq-&amp;gt;timebase_den &amp;lt; 1 || freq-&amp;gt;timebase_den &amp;gt; 4 ||
    freq-&amp;gt;timebase_num &amp;lt; freq-&amp;gt;timebase_den)
    panic("rtclock timebase_callback: invalid constant %ld / %ld",
          freq-&amp;gt;timebase_num, freq-&amp;gt;timebase_den);

denom = freq-&amp;gt;timebase_num;
numer = freq-&amp;gt;timebase_den * NSEC_PER_SEC;
// reduce by the greatest common denominator to minimize overflow
if (numer &amp;gt; denom) {
    t64_1 = numer;
    t64_2 = denom;
} else {
    t64_1 = denom;
    t64_2 = numer;
}
while (t64_2 != 0) {
    uint64_t temp = t64_2;
    t64_2 = t64_1 % t64_2;
    t64_1 = temp;
}
numer /= t64_1;
denom /= t64_1;

rtclock_timebase_const.numer = (uint32_t)numer;
rtclock_timebase_const.denom = (uint32_t)denom;
divisor = (uint32_t)(freq-&amp;gt;timebase_num / freq-&amp;gt;timebase_den);

rtclock_sec_divisor = divisor;
rtclock_usec_divisor = divisor / USEC_PER_SEC;
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>为了防止是我脑内运算出的问题，我还实际 copy 了一遍这段代码跑了一下，<code>bus_to_dec_rate_den</code> 为 0 无疑。既已如此，不找到负责这个内核开发的人是无法知道问题的答案了。</p> 
<p>但是不管怎样我们现在知道 <code>sched_tick_interval</code> 是系统线程调度用的时间间隔，和硬件时钟频率有关。一开始的问题 <code>TH_USAGE_SCALE</code> 是在内核处理线程调度时，用在 ageing 算法的一个值，hardcode 为 1000，我们除以这个值就能获得一个 CPU 使用百分比数值 <code>basic_info_th-&gt;cpu_usage / (float) TH_USAGE_SCALE * 100.0</code>。这里涉及系统的线程优先级调度和 ageing 算法，我还没有完全搞明白，可以参考 <a href="https://books.google.com.hk/books?id=K8vUkpOXhN4C&amp;pg=PA796&amp;lpg=PA796&amp;dq=clock_interval_to_absolutetime_interval&amp;source=bl&amp;ots=OMogWXRuWD&amp;sig=ACfU3U1MXSGtfnn-NXYtFpHQTw6F7lof6w&amp;hl=en&amp;sa=X&amp;ved=2ahUKEwiW-ub_-q_lAhUPFogKHel9AOUQ6AEwAnoECAkQAQ#v=onepage&amp;q=clock_interval_to_absolutetime_interval&amp;f=false">Mac OS X Internals: A Systems Approach</a> 一书。</p> 
<h2>二、Mac 的 CPU 占用率实现</h2> 
<p>macOS 通过内核接口 <code>host_processor_info()</code> 可以取到 CPU Load Info，这个接口定义在 <code>mach_host.h</code>，实现在 <code>osfmk/kern/host.c</code>。</p> 
<p>接口定义如下:</p> 
<pre><code>kern_return_t
host_processor_info(host_t host,
                    processor_flavor_t flavor,
                    natural_t * out_pcount,
                    processor_info_array_t * out_array,
                    mach_msg_type_number_t * out_array_count)
</code></pre> 
<p><code>host</code> 是一个 mach port，传 <code>mach_host_self()</code> 就行。如果不知道 Mach Port 是什么可以参考 <a href="https://justinyan.me/post/3961">macOS 内核系列的上一篇 1.1 章节</a>。</p> 
<h3>2.1 mach_host_self 如何创建自己的 mach port 的</h3> 
<p>这里岔开聊一下 <code>mach_host_self()</code> 的实现。</p> 
<pre><code>// libsyscall/mach/mach_legacy.c
mach_port_t
mach_host_self(void)
{
    return host_self_trap();
}
<p>// osfmk/kern/ipc_host.c<br /> mach_port_name_t<br /> host_self_trap(<br /> __unused struct host_self_trap_args *args)<br /> {<br /> // 取以前当前发起系统调用的进程返回一个 <code>task_t</code>，实际上就是 <code>mach_port_t</code>。参考 2.2。<br /> task_t self = current_task();<br /> // 开源代码里没有 <code>ipc_port_t</code> 的定义但是有 <code>ipc_port</code>，字面意义上理解这是发送端的 mach port<br /> ipc_port_t sright;<br /> // port 名字，简单理解为 ID<br /> mach_port_name_t name;</p>
</code><p><code>// 内核用的一个互斥锁，加锁<br /> itk_lock(self);<br /> // copy 一下传入的 port 参数，如果是 active 的就计数 +1，如果不是就置为 DEAD，就是整数 0<br /> // itk_host 是进程创建的时候内核分配的一个 special port，这个在我们上一篇也有提到。这个创建的源头来自 <code>ipc_init()</code>，它的最上游就是各平台自己实现的启动入口，比如 i386 的 <code>i386_init()</code>，应该就是开机后干的事情了。<br /> sright = ipc_port_copy_send(self-&gt;itk_host);<br /> itk_unlock(self);<br /> // 这里有一个 space 的概念，可以看下面对 <code>current_space()</code> 实现的解释。 // 这里通过 space 和 sright 查找到 name 然后内部实现里操作一堆 table 信息的更新，返回 nanme<br /> name = ipc_port_copyout_send(sright, current_space());<br /> // 最后返回给上层<br /> return name;<br /> }<br /> </code></p></pre>
<p></p> 
<p>这就是内核如何创建一个自己的 mach port 然后返回给上层的过程。</p> 
<p>顺便看下 <code>current_space()</code> 的实现:</p> 
<pre><code>// osfmk/kern/ipc_tt.c
kr = ipc_space_create(&amp;ipc_table_entries[0], &amp;space);
</code><p><code>// osfmk/ipc/ipc_space.h<br /> #define current_space_fast() (current_task_fast()-&gt;itk_space)<br /> #define current_space() (current_space_fast())<br /> </code></p></pre>
<p></p> 
<p>这个 <code>ipc_space_t</code> 主要是用来存储一个表 <code>ipc_space_t</code>，这个表记录了一堆 IPC 相关信息 <code>ipc_entry_t</code>。根据我粗浅的理解，应该是里面有 name 和 entry 的 KV 对应关系，可以互相查询，之前我们说过 name 并不需要全局唯一，内核可以自行查找匹配到对应的进程(task)，应该就是通过这个 space 维护的表。</p> 
<h2>2.2 有点费解的 current_task()</h2> 
<pre><code>// bsd/kern/kern_prot.c
#include &lt;kern/task.h&gt;     /* for current_task() */
<p>// libsyscall/mach/mach/mach_init.h<br /> extern mach_port_t mach_task_self_;<br /> #define mach_task_self() mach_task_self_<br /> #define current_task() mach_task_self()</p>
<p>// libsyscall/mach/mach_init.c<br /> mach_port_t mach_task_self_ = MACH_PORT_NULL;</p>
</code><p><code>void<br /> mach_init_doit(void)<br /> {<br /> // Initialize cached mach ports defined in mach_init.h<br /> mach_task_self_ = task_self_trap();<br /> // ...<br /> }<br /> </code></p></pre>
<p></p> 
<p><code>current_task()</code> 比较费解的是一路追过去发现它定义为 <code>task_self_trap()</code>，而这个函数上来就先调用了 <code>current_task()</code>，死循环了。</p> 
<pre><code>// osfmk/kern/ipc_tt.c
mach_port_name_t
task_self_trap(
    __unused struct task_self_trap_args *args)
{
    task_t task = current_task();
    //…
}
</code></pre> 
<p>不过 <code>libsyscall/mach/mach_init.c</code> 里引用了 <code>osfmk/mach/mach_traps.h</code> 里的定义 <code>extern mach_port_name_t task_self_trap(void);</code>。也有可能他的实现并不在 <code>ipc_tt.c</code> 里，但是我根本找不到就是了。</p> 
<h3>2.3 host_processor_info() 取 CPU 信息</h3> 
<p>回到 <code>host_processor_info()</code> 这个函数，第一个参数填写由内核生成的自己进程的 mach port 用于 IPC，第二个参数则有以下定义:</p> 
<pre><code>/*
 *  Currently defined information.
 */
typedef int processor_flavor_t;
#define    PROCESSOR_BASIC_INFO    1       /* basic information */
#define    PROCESSOR_CPU_LOAD_INFO 2   /* cpu load information */
#define    PROCESSOR_PM_REGS_INFO  0x10000001  /* performance monitor register info */
#define    PROCESSOR_TEMPERATURE   0x10000002  /* Processor core temperature */
</code></pre> 
<p>我们需要 CPU 占用率所以选第二个 <code>PROCESSOR_CPU_LOAD_INFO</code>，剩下的三个参数都是 out 参数，传引用就行。</p> 
<pre><code>processor_info_array_t cpuInfo;
    mach_msg_type_number_t numCpuInfo;
    natural_t numCPUsU = 0U;
    kern_return_t err = host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO, &amp;numCPUsU, &amp;cpuInfo, &amp;numCpuInfo);
</code></pre> 
<p>四个参数可以获得不同的信息但是都会回传 <code>processor_info_array_t</code>，这是一个变长数组(variable-sized inline array):</p> 
<pre><code>/* processor_info_t: variable-sized inline array that can
 * contain:
 * processor_basic_info_t:   (5 ints) 可以参考 PROCESSOR_BASIC_INFO_COUNT
 * processor_cpu_load_info_t:(4 ints) 最大是 CPU_STATE_MAX
 * processor_machine_info_t :(12 ints)
 * If other processor_info flavors are added, this definition
 * may need to be changed. (See mach/processor_info.h) */
type processor_flavor_t     = int;
type processor_info_t       = array[*:12] of integer_t;
type processor_info_array_t = ^array[] of integer_t;
</code></pre> 
<p>CPU 占用率的数组 index 定义如下:</p> 
<pre><code>#define CPU_STATE_MAX      4
</code><p><code>#define CPU_STATE_USER 0<br /> #define CPU_STATE_SYSTEM 1<br /> #define CPU_STATE_IDLE 2<br /> #define CPU_STATE_NICE 3<br /> </code></p></pre>
<p></p> 
<p>由于现在的 Mac 基本都是多核 CPU，比如我的 Intel Core i7 CPU 有四核八线程，所以这个接口会返回每个线程 4 个 State 一共 32 个数据。我们可以通过 for 循环来取:</p> 
<pre><code>for(unsigned i = 0U; i &lt; numCPUs; ++i) {
            uint32_t inUser   = (uint32_t)cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_USER];
            uint32_t inSystem = (uint32_t)cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_SYSTEM];
            uint32_t inNice   = (uint32_t)cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_NICE];
            uint32_t inIdle   = (uint32_t)cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_IDLE];
}
</code></pre> 
<p><code>numCPUs</code> 就是八核，可以通过 <code>sysctl()</code> 传入 <code>hw.cpu</code> 来取。关于 <code>sysctl()</code> 接口可以参考<a href="https://justinyan.me/post/3935">之前的一篇文章</a>，这里不再赘述。</p> 
<p><strong>扩展: 超线程 Hyper-threading</strong></p> 
<blockquote>
 <p> 以前的 CPU 是一个物理核心对应一个物理线程，这里的线程和我们应用层的线程概念不一样。应用层可以开上百个线程，但是一个 CPU 可能只有一个核心，那么他只能把时间分片给不同的逻辑线程运行，由于速度太快所以感受不出来。后来英特尔开发了超线程技术(Hyper-threading)可以在一个物理核心里模拟出两个线程。那么对于系统内核来说，就相当于物理核心多了一倍。所以 i7 处理器通过 <code>sysctl()</code> 取到的 CPU 个数就是 8 个。 </p>
</blockquote> 
<p><code>user</code> 是用户层 CPU 占用，<code>system</code> 是系统占用，<code>nice</code> 是老系统的遗留属性，现在是 hardcode 返回 0，不过源码没有删掉，<code>idle</code> 就是空闲 CPU 了。</p> 
<p>按照之前的风格我们应该直接进入源码，不过这里先卖个关子。通过 <code>host_processor_info()</code> 取到的数据都是整数。直觉上我们认为把所有核心的 <code>user</code> + <code>system</code> + <code>idle</code> 就是全部 CPU，占用比全部就是 CPU 占用率了。</p> 
<p>非常合理，有理有据。赶紧试一试。结果出来的百分比很奇怪，基本都在 7% 左右。用 Xcode 编译大项目 iStat Menu 都 100% 了这个结果值还是 7%。一定是哪里出了问题。</p> 
<p>于是我参考了 <a href="http://www.hammerspoon.org/">Hammerspoon</a> 的代码，<a href="https://github.com/hishamhm/htop">htop</a> 的代码，确认取 CPU Load Info 肯定没问题。那么有问题的可能是我对数据的处理方式。</p> 
<p>留意到 <a href="https://www.hammerspoon.org/docs/hs.host.html#cpuUsageTicks">Hammerspoon 关于 cpuUsageTick() 的文档</a> 有曰这个接口取到的数据是自系统最近一次启动以来的的 <code>ticks</code> 数据。</p> 
<p>前面只说 <code>host_processor_info()</code> 的数组里全是整数但是没说单位是啥。那么 <code>ticks</code> 是什么呢？</p> 
<h3>2.4 CPU Ticks</h3> 
<p>准确来讲并不是 CPU ticks 而是 clock ticks，用于计算 CPU 时间的单位。一般会实现一个系统时钟，每隔一个非常短的时间间隔就发起一个 CPU 中断请求，把 tick 计数加一。</p> 
<p>但是 <code>host_processor_info()</code> 接口返回的数字都不算大，比如 CPU 比较空闲时 <code>idle</code> 比较多，大概是 <code>121033877</code>。这个数字相比于 CPU 每秒的频率也太小了吧。当然真实的数字是可以大到爆掉 UInt64 的，内核肯定做了 scaled，所以内核到底是怎么实现的呢？</p> 
<h3>2.5 host_processor_info() 的实现</h3> 
<p>主要实现在 <code>osfmk/kern/processor.c</code> 里的以下方法:</p> 
<pre><code>kern_return_t
processor_info(
    processor_t processor,
    processor_flavor_t      flavor,
    host_t                  *host,
    processor_info_t        info,
    mach_msg_type_number_t  *count)
</code></pre> 
<p>switch-case 一下遇到 <code>PROCESSOR_CPU_LOAD_INFO</code> 后直接去读取相应的数值。</p> 
<pre><code>cpu_load_info = (processor_cpu_load_info_t) info;
if (precise_user_kernel_time) {
    // #define PROCESSOR_DATA(processor, member)    \
    //              (processor)-&gt;processor_data.member
    // processor 通过 osfmk/kern/processor.h 定义的全局变量来取，这里相当于读 processor-&gt;processor_data.user_state
    // timer_data_t         user_state;
    // 拿到 user_state 之后再除以 hz_tick_interval
    // 在 osfmk/kern/clock.c 的实现中 hz_tick_interval 等于 NSEC_PER_SEC / 100，也就是 1/100 纳秒
    cpu_load_info-&gt;cpu_ticks[CPU_STATE_USER] =
                    (uint32_t)(timer_grab(&amp;PROCESSOR_DATA(processor, user_state)) / hz_tick_interval);
    cpu_load_info-&gt;cpu_ticks[CPU_STATE_SYSTEM] =
                    (uint32_t)(timer_grab(&amp;PROCESSOR_DATA(processor, system_state)) / hz_tick_interval);
} else {
    uint64_t tval = timer_grab(&amp;PROCESSOR_DATA(processor, user_state)) +
        timer_grab(&amp;PROCESSOR_DATA(processor, system_state));
<pre><code>cpu_load_info-&amp;gt;cpu_ticks[CPU_STATE_USER] = (uint32_t)(tval / hz_tick_interval);
cpu_load_info-&amp;gt;cpu_ticks[CPU_STATE_SYSTEM] = 0;
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p><code>hz_tick_interval = 1000000000ull / 100</code> 也就是 <code>10^7</code>，所以我们得到的结果被缩小了 <code>10^7</code> 倍，也就解释了为什么数字这么小了。</p> 
<p><strong>2019-11-1 updated: 后来我发现这里理解 tick 有问题</strong></p> 
<p>上面 <code>host_processor_info()</code> 获得的数字是内核时钟的 tick，在 XNU 里 hardcoded 为:</p> 
<pre><code>/*
 * The hz hardware interval timer.
 */
</code><p><code>int hz = 100; /* GET RID OF THIS !!! <em>/<br /> int tick = (1000000 / 100); /</em> GET RID OF THIS !!! */<br /> </code></p></pre>
<p></p> 
<p>也就是一秒钟有 100 ticks，每个 CPU 核心(虚拟)自行计算，我取了其中一个的数据可以算出 <code>3.8hr</code>，同时打印 <code>uptime</code> 为 <code>4hr 56m</code>，略少一点。这是因为当系统 sleep 的时候 CPU 是不计算 ticks 的。所以这个计算是正确的，目前 tick 就是 hardcoded 为 100 次每秒。</p> 
<p>顺便这两句 <code>GET RID OF THIS !!!</code> 的注释跟其他的 <code>XXX</code> 注释一样蜜汁幽默。</p> 
<h3>2.6 关于 idle 的计算</h3> 
<p>在 <code>processor_info()</code> 函数里还有这么一段注释:</p> 
<pre><code>/*
 * We capture the accumulated idle time twice over
 * the course of this function, as well as the timestamps
 * when each were last updated. Since these are
 * all done using non-atomic racy mechanisms, the
 * most we can infer is whether values are stable.
 * timer_grab() is the only function that can be
 * used reliably on another processor's per-processor
 * data.
 */
</code></pre> 
<p>大意是由于 idle 状态下的 processor 不会经常更新自己的 idle time，所以在该函数内针对 idle 这个数值，判断 idle state 与否并取了两次 idle time 和 time stamp，比较一下再返回给上层。</p> 
<pre><code>// 取一下 idle 的 timer
idle_state = &amp;PROCESSOR_DATA(processor, idle_state);
// 取第一次 idle state 数据
idle_time_snapshot1 = timer_grab(idle_state);
// 取第一次时间戳
idle_time_tstamp1 = idle_state-&gt;tstamp;
<p>if (PROCESSOR_DATA(processor, current_state) != idle_state) {<br /> // 如果当前核心不在 idle 状态，那就是忙咯，忙就说明会经常更新，那么可信赖，直接用<br /> cpu_load_info-&gt;cpu_ticks[CPU_STATE_IDLE] =<br /> (uint32_t)(idle_time_snapshot1 / hz_tick_interval);<br /> } else if ((idle_time_snapshot1 != (idle_time_snapshot2 = timer_grab(idle_state))) ||<br /> (idle_time_tstamp1 != (idle_time_tstamp2 = idle_state-&gt;tstamp))){<br /> // 如果是 idle 状态，再抓一次 state 和 timestamp 看看数据是否一致<br /> // 由于此时数据有可能是并发更新的，那么第二次的数据比较新，有可能是更值得信赖的数据，用第二个<br /> cpu_load_info-&gt;cpu_ticks[CPU_STATE_IDLE] =<br /> (uint32_t)(idle_time_snapshot2 / hz_tick_interval);<br /> } else {<br /> // 这里同样是 idle 状态，但是数据没有变化，那么大概率没有在并发更新，数据是稳定的，也可以直接用上<br /> idle_time_snapshot1 += mach_absolute_time() - idle_time_tstamp1;</p>
<pre><code>cpu_load_info-&amp;gt;cpu_ticks[CPU_STATE_IDLE] =
    (uint32_t)(idle_time_snapshot1 / hz_tick_interval);
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>这样忙时的数据和 idle 数据都有了，nice 数据就是 hardcode 的 0</p> 
<pre><code>cpu_load_info-&gt;cpu_ticks[CPU_STATE_NICE] = 0;
</code></pre> 
<p><strong>关于 <code>NICE</code></strong></p> 
<p>在历史上 Unix 系统有一个 <code>nice</code> 状态用来表示一个进程的执行优先级，-20 最高，19 最低。但是 Apple 的 Darwin-XNU 现在已经弃用了。我试了一下 <code>htop</code> 在 Mac 上的 <code>NI</code> 一列全是 0，但是在 Ubuntu 上 <code>NI</code> 一列有 0, -20, 19, 5 各种数字都有。可以参考阅读<a href="https://en.wikipedia.org/wiki/Nice_(Unix)">维基百科</a>或者<a href="https://blog.appsignal.com/2018/03/06/understanding-cpu-statistics.html">这篇文章</a>。</p> 
<h3>2.7 关于 <code>timer_grab</code> 方法</h3> 
<p>留意到上面的注释里有一句:</p> 
<blockquote>
 <p> timer_grab() is the only function that can be used reliably on another processor's per-processor data. </p>
</blockquote> 
<p>此时使用 <code>timer_grab()</code> 函数是唯一可以读取另外一个 processor 的 per-processor data 也就是 <code>processor-&gt;processor_data</code>。但是为什么呢？为什么 <code>timer_grab()</code> 是唯一可靠的函数呢？</p> 
<p>我们看看 <code>timer_grab()</code> 方法的定义:</p> 
<pre><code>/*
 * Read the accumulated time of `timer`.
 */
#if defined(__LP64__)
static inline
uint64_t
timer_grab(timer_t timer)
{
    return timer-&gt;all_bits;
}
#else /* defined(__LP64__) */
uint64_t timer_grab(timer_t timer);
#endif /* !defined(__LP64__) */
</code></pre> 
<p>在 64 系统上用静态内敛函数在头文件里实现了，直接返回 <code>all_bits</code>。在非 64 位系统则只是声明没有实现。我搜了整个 XNU 开源代码也没有实现。但是有另一个版本实现可以参考一下:</p> 
<pre><code>static uint64_t safe_grab_timer_value(struct timer *t)
{
#if   defined(__LP64__)
  return t-&gt;all_bits;
#else
  uint64_t time = t-&gt;high_bits;    /* endian independent grab */
  time = (time &lt;&lt; 32) | t-&gt;low_bits;
  return time;
#endif
}
</code></pre> 
<p>其实这个 if-else 的区别只是因为 64 位和 32 位的区别而已:</p> 
<pre><code>struct timer {
    uint64_t tstamp;
#if defined(__LP64__)
    uint64_t all_bits;
#else /* defined(__LP64__) */
    /* A check word on the high portion allows atomic updates. */
    uint32_t low_bits;
    uint32_t high_bits;
    uint32_t high_bits_check;
#endif /* !defined(__LP64__) */
};
</code></pre> 
<p>在 32 位系统上，内核用两个 <code>uint32_t</code> 来分开记录高位和低位数值，然后返回的时候拼成一个大的 64 位 <code>uint64_t</code>。一开始我以为 <code>timer_grab()</code> 是为了线程安全之类的，但是大家都只是读数值又不是写操作，而且看这个 safe 版本的实现，跟线程安全什么的没关系。所以应该只是因为要兼容，<code>timer_grabe()</code> 才是 only function。</p> 
<h3>2.8 关于 Timer 如何计时</h3> 
<p>Timer 计时的地方有点多，我还需要理解内核时钟的原理只能知道细节，这里大概看一下 Timer 的数据结构和 API。</p> 
<pre><code>struct timer {
    uint64_t tstamp;
    uint64_t all_bits;
};
</code></pre> 
<p>非 64 位的直接不看了，原理是一样的，存储结构不同而已。最关键的是 <code>tstamp</code> 这个 time stamp。 <code>timer_start()</code> 时会记录当前时间戳，<code>timer_stop()</code>, <code>timer_update()</code>, <code>timer_switch()</code> 都会调用 <code>timer_advance()</code>，计算两次时间戳的差异，加到 <code>all_bits</code> 上面。</p> 
<p>所以简单理解就是每次 CPU 把分配给了 <code>user</code> 或者 <code>system</code> 的时候，就会开启对应 timer 的计时，可以在二者之间切换时，或者闲时之类的变化就改变 timer 状态，更新计时数据。</p> 
<p>传入的时间从 <code>mach_absolute_time()</code> 获得。</p> 
<p>这个时间的实现 <code>arm</code> 和 <code>i386</code> 还不一样。</p> 
<p><code>1386</code> 的最终会到这里:</p> 
<pre><code>static inline uint64_t
rtc_nanotime_read(void)
{
    return  _rtc_nanotime_read(&amp;pal_rtc_nanotime_info);
}
</code></pre> 
<p>不过 <code>_rtc_nanotime_read()</code> 没有 C 实现，可能是汇编实现。但是反正读的是当前的 RTC 时间，以纳秒为单位。</p> 
<p><code>arm</code> 的实现则是:</p> 
<pre><code>uint64_t
mach_absolute_time(void)
{
    return ml_get_timebase();
}
</code><p><code>uint64_t<br /> ml_get_timebase()<br /> {<br /> return (ml_get_hwclock() + getCpuDatap()-&gt;cpu_base_timebase);<br /> }<br /> </code></p></pre>
<p></p> 
<p>为什么要两者相加呢？因为 <code>cpu_base_timebase</code> 在初始化的赋值是这样的:</p> 
<pre><code>if (!from_boot &amp;&amp; (cdp == &amp;BootCpuData)) {
        /*
         * When we wake from sleep, we have no guarantee about the state
         * of the hardware timebase.  It may have kept ticking across sleep, or
         * it may have reset.
         *
         * To deal with this, we calculate an offset to the clock that will
         * produce a timebase value wake_abstime at the point the boot
         * CPU calls cpu_timebase_init on wake.
         *
         * This ensures that mach_absolute_time() stops ticking across sleep.
         */
        rtclock_base_abstime = wake_abstime - ml_get_hwclock();
    }
cdp-&gt;cpu_base_timebase = rtclock_base_abstime;
</code></pre> 
<p><code>rtclock_base_abstime</code> 这个就是 <code>uint64_t</code> 的 RTC 时间，保存在 <code>rtclock_data_t</code> 的 <code>rtc_base</code> 结构体里，也是纳秒。</p> 
<pre><code>extern rtclock_data_t                   RTClockData;
#define rtclock_base_abstime           RTClockData.rtc_base.abstime
</code></pre> 
<p>这个初始化函数 <code>void cpu_timebase_init(boolean_t from_boot)</code> 会被调用多次，系统启动的时候可以直接取 <code>rtclock_base_abstime</code>，但是如果从睡眠中唤醒，有可能时钟已经不跑了，所以要计算一个差值。</p> 
<p>初始化是 <code>rtclock_base_abstime</code> 为 0。在所有核心 sleep 时 <code>ml_arm_sleep(void)</code> 函数记录一个时间到 <code>wake_abstime</code>。这个值通过 <code>ml_get_timebase()</code> 获取，此时如果从未 sleep 过则为硬件时钟时间 <code>ml_get_hwclock()</code>。</p> 
<p>当 CPU 被唤醒时计算差值 <code>wake_abstime - ml_get_hwclock()</code>，保存到 <code>cpu_base_timebase</code>。</p> 
<p>这样当你读取 <code>ml_get_timebase()</code> 时就加上这段差值，结果得到的是上一次保存的 <code>wake_abstime</code>，相当于从上一次 sleep 的地方开始继续往前 tick。</p> 
<p>虽然注释说有可能 <code>hwclock()</code> 在睡眠期间会继续 tick 也有可能不会，所以要修正，不过我还不清楚修正是为了什么。可能内核需要用到这个时间来做些什么事情吧。</p> 
<h3>2.9 最后，解决占用率计算问题</h3> 
<p>回到一开始用 <code>host_processor_info()</code> 的数据来计算占用率不准问题，因为我们用的是历史数据，我们应该关注的是一小段时间内的 CPU 数据，比如取时间 t1 和时间 t2 的 cpu load，然后作差值。这个差值就反应了 t1 到 t2 之间 CPU 的占用情况。所以修正一下上面的做法，只需要取两次样本，然后相减，得到的数据再做一次忙时除以全部的 ticks 就能得到 CPU 占用率了。</p> 
<p>Hammerspoon 里提供了一个用 LUA 封装的简单采用方法 <a href="https://www.hammerspoon.org/docs/hs.host.html#cpuUsage"><code>hs.host.cpuUsage([period], [callback]) -&gt; table</code></a> 可供使用。</p> 
<p>源码可以<a href="https://github.com/Hammerspoon/hammerspoon/blob/master/extensions/host/init.lua">参考这里</a>。</p> 
<pre><code>local convertToPercentages = function(result1, result2)
    local result = {}
    for k,v in pairs(result2) do
        if k == "n" then
            result.n = v
        else
            result[k] = {}
            for k2, v2 in pairs(v) do
                result[k][k2] = v2 - result1[k][k2]
            end
            local total = result[k].active + result[k].idle
            for k2, _ in pairs(result[k]) do
                result[k][k2] = (result[k][k2] / total) * 100.0
            end
        end
    end
    for i,v in pairs(result) do
        if tostring(i) ~= "n" then
            result[i] = setmetatable(v, { __tostring = __tostring_for_tables })
        end
    end
    return result
end
</code></pre> 
<p>非常简单地两个结果作差值。</p> 
<h2>三、小结</h2> 
<p>本文从 iOS 和 Mac 取 CPU 占用率的接口出发，简单介绍了 Time Base 的概念，RTC 时钟，内核层维护 space 和 table 以记录 mach port 和进程相关信息，CPU Ticks 等内核层用到的东西。</p> 
<p>操作系统越是往下走跟硬件设计打交道的东西就越多。平时做顶层面向用户的 App 开发基本不会碰到这些东西。对于 CPU 占用率这种代码，到 stackoverflow 抄一下就能用了。这并没有问题，但是探求一个系统接口的实现，寻找知其所以然的过程也十分有趣。</p> 
<p>系统内核的实现有些地方需要高超的算法能力，比如线程调度模型，有些地方需要追去稳定，还有些地方可能用了 C/C++ 的语法糖之类的，看起来有点困难。但实际上和平时开发一个 App 需求的路子是一样的，就是分析一个问题，找到一个问题的解决方法而已。</p> 
<p>当然了阅读和理解内核代码很容易，但是实践写出一个内核却是难如登天的一件事情，不仅非常强算法能力，也要求具备大型项目的管理能力。所以虽然我写不了内核，看一看这些神秘的 API 背后的实现也是很有意思的。</p> 
<p><em>updated: <code>osfmk</code> 目录下的代码就是 Mach 内核部分，由于进程是在 Mach 内核实现的，所以我们可以通过 Mach 内核接口获取相关信息。<code>host_info()</code> 类型的接口都由 Mach 内核提供。</em></p> 
<h2>内核系列文章</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></li> 
 <li><a href="https://justinyan.me/post/4040">macOS 内核之网络信息抓包(三)</a></li> 
 <li><a href="https://justinyan.me/post/4023">macOS 内核之网络信息抓包(二)</a></li> 
 <li><a href="https://justinyan.me/post/4009">macOS 内核之网络信息抓包(一)</a></li> 
 <li><a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
 <li><a href="https://justinyan.me/post/3982">macOS 内核之内存占用信息</a></li> 
 <li><a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息</a></li> 
 <li><a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a></li> 
 <li><a href="https://justinyan.me/post/3961">macOS 内核之从 I/O Kit 电量管理开始</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://en.wikipedia.org/wiki/System_time">System time - Wikipedia</a></li> 
 <li><a href="https://www.hammerspoon.org/docs/hs.host.html#cpuUsageTicks">Hammerspoon docs: hs.host</a></li> 
 <li><a href="https://github.com/hishamhm/htop">hishamhm/htop: htop is an interactive text-mode process viewer for Unix systems. It aims to be a better 'top'.</a></li> 
 <li>Historically on Unix based systems, the nice cpu state represents processes for which the execution priority has been reduced to allow other higher priority processes access to more system resources. </li> 
 <li><a href="https://blog.appsignal.com/2018/03/06/understanding-cpu-statistics.html">Understanding CPU statistics | AppSignal Blog</a></li> 
 <li><a href="https://github.com/Tencent/matrix">Tencent/matrix: Matrix is a plugin style, non-invasive APM system developed by WeChat.</a></li> 
 <li><a href="https://github.com/didi/DoraemonKit">didi/DoraemonKit: 简称 "DoKit" 。一款功能齐全的客户端（ iOS 、Android、微信小程序 ）研发助手，你值得拥有。</a></li> 
 <li><a href="https://github.com/apple/darwin-xnu">apple/darwin-xnu: The Darwin Kernel (mirror)</a></li> 
 <li><a href="https://developer.apple.com/documentation/dispatch/nsec_per_sec">NSEC_PER_SEC - Dispatch | Apple Developer Documentation</a></li> 
 <li><a href="http://www.informit.com/articles/article.aspx?p=2249436&amp;seqNum=4">4.4 Thread Scheduling | Process Management in the FreeBSD Operating System | InformIT</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Real-time_clock">Real-time clock - Wikipedia</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x5185;&#x6838;&#x4E4B;&#x4ECE; I/O Kit &#x7535;&#x91CF;&#x7BA1;&#x7406;&#x5F00;&#x59CB;</title>
        <link>https://justinyan.eth.limo/1DBA9A4F-370B-4751-9378-3971967965D6/</link>
        <guid>https://justinyan.eth.limo/1DBA9A4F-370B-4751-9378-3971967965D6/</guid>
        <pubDate>Thu, 17 Oct 2019 21:13:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/10/darwin_xnu_iokit.jpg" alt="macOS 内核之从 I/O Kit 电量管理开始" /></p> 
<p>在上一篇<a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a>我们提到 XNU 内核包含了 BSD 和 Mach，其中 Mach Kernel 提供了 I/O Kit 给硬件厂商写驱动用的。这个部分在 NeXT 时期是用 Objective-C 提供的 API，叫做 Driver Kit，后来乔布斯回到苹果之后，升级了 BSD 和 Mach 的代码，于是在 OS X 中提供了 C++ 接口的 I/O Kit。</p> 
<p>根据官方的<a href="https://developer.apple.com/documentation/iokit">这份文档</a>，以下系统支持 I/O Kit:</p> 
<ul> 
 <li>iOS 2.0+</li> 
 <li>macOS 10.0+</li> 
 <li>Mac Catalyst 13.0+</li> 
</ul> 
<p>I/O Kit 里我们可以通过三种不同的方式获取电池信息，位于 <code>IOKit/pwr_mgt</code> 的 Power Mangement 接口，位于 <code>IOKit/ps</code> 的 Power Sources 接口，以及通过 <code>IOServiceGetMatchingService</code> 获取 <code>AppleSmartBattery</code> Service 接口。</p> 
<h2>1. IOPM (Power Management) API</h2> 
<p>IOPM 接口需要使用 Mach Port 跟 IOKit 进行 IPC 通信，所以我们先来了解一点 Mach Port 的背景。</p> 
<h3>1.1 Mach Port</h3> 
<p>XNU 是一个混合内核，既有 BSD 又有 Mach Kernel，上层还有各种各样的技术，所以在 macOS 系统中，IPC (跨进程通信)的技术也多种多样。Mattt 在 NSHipster 上写过一篇 IPC 的文章: <a href="https://nshipster.com/inter-process-communication/">Inter-Process Communication - NSHipster</a> 对此有过详解。</p> 
<p>Mach Port 是在系统内核实现和维护的一种 IPC 消息队列，持有用于 IPC 通信的 mach messages。只有一个进程可以从对应的 port 里 dequeue 一条消息，这个进程被持有接收权利(receive-right)。可以有多个进程往某个 port 里 enqueue 消息，这些进程持有该 port 的发送权利(send-rights)。</p> 
<p><img decoding="async" src="https://2.bp.blogspot.com/-3p52XtevOOs/VeeYS9srL4I/AAAAAAAABFk/ucpthC8cZgQ/s1600/sf_01.png" alt="" /></p> 
<p>如上图，PID 123 的进程往一个 port 里发送了一条消息，只有对应的接收端 PID 456 才能从 port 里取出这条消息。</p> 
<p>我们可以简单把 mach port 看做是一个<strong>单向的数据发送渠道</strong>，构建一个消息结构体后通过<code>mach_msg()</code> 方法发出去。因为只能单向发送，所以当 B 进程收到了 A 进程发来的消息之后要自己创建一个新的 Port 然后又发回去 A 进程。</p> 
<p>手动构建 mach message 发送是比较复杂的，大概长这个样子(代码来自 Mattt 的那篇文章):</p> 
<pre><code>natural_t data;
mach_port_t port;
<p>struct {<br /> mach_msg_header_t header;<br /> mach_msg_body_t body;<br /> mach_msg_type_descriptor_t type;<br /> } message;</p>
<p>message.header = (mach_msg_header_t) {<br /> .msgh_remote_port = port,<br /> .msgh_local_port = MACH_PORT_NULL,<br /> .msgh_bits = MACH_MSGH_BITS(MACH_MSG_TYPE_COPY_SEND, 0),<br /> .msgh_size = sizeof(message)<br /> };</p>
<p>message.body = (mach_msg_body_t) {<br /> .msgh_descriptor_count = 1<br /> };</p>
<p>message.type = (mach_msg_type_descriptor_t) {<br /> .pad1 = data,<br /> .pad2 = sizeof(data)<br /> };</p>
<p>mach_msg_return_t error = mach_msg_send(&amp;message.header);</p>
</code><p><code>if (error == MACH_MSG_SUCCESS) {<br /> // ...<br /> }<br /> </code></p></pre>
<p></p> 
<p>其中最关键的是 <code>msgh_remote_port</code> 和 <code>msgh_local_port</code>。上述代码是发送消息，所以 <code>msgh_remote_port</code> 就是要接收这条消息的那个进程的 <code>port</code>。我们得先知道这个 <code>port</code> 信息我们才能往里面发消息。另外例子中使用的是 <code>mach_msg_send()</code> 函数。</p> 
<h4><strong>port name</strong></h4> 
<p>留意到在上图中，PID 123 往一个名为 <code>0xabc</code> 的 <code>port</code> 发消息，PID 456 则从名为 <code>0xdef</code> 的 <code>port</code> 里取消息。这里 port name 只对当前进程有意义，并不需要全局一致，内核会自动根据进程 ID 和名字信息找到对应的进程。</p> 
<h4><strong>Out-of-line memory</strong></h4> 
<p>我们的代码在用户层调用，需要进出内核层，这是一进一出如果消息体里带上大量的信息就会非常慢。所以如果需要使用 mach message 来发送体积较大的信息，可以使用 “out-of-line memory” descriptor。</p> 
<p>我们看到上面 Mattt 的代码使用 <code>mach_msg_send()</code> 函数来发送消息，<code>message.body</code> 带了一个 <code>msgh_descriptor_count</code> 为 1。这个 <code>descriptor</code> 是一个 <code>natural_t</code>。我看到这里的时候并没有搞懂系统是怎么做 OOL 的 copy-on-write 的。于是照例翻一下 XNU 的源码，我发现 Mattt 的例子并没有使用 OOL descriptor，而是使用了 type descriptor。</p> 
<pre><code>typedef struct
{
  natural_t         pad1;
  mach_msg_size_t       pad2;
  unsigned int          pad3 : 24;
  mach_msg_descriptor_type_t    type : 8;
} mach_msg_type_descriptor_t;
</code></pre> 
<p>ool descriptor 的结构如下:</p> 
<pre><code>typedef struct
{
  uint64_t          address;
  boolean_t             deallocate: 8;
  mach_msg_copy_options_t       copy: 8;
  unsigned int          pad1: 8;
  mach_msg_descriptor_type_t    type: 8;
  mach_msg_size_t           size;
} mach_msg_ool_descriptor64_t;
</code></pre> 
<p>使用时我们需要把内存地址发过去，内核只负责传递地址指针，等到进程接受到了这条消息之后才会从内存里 copy buffer。</p> 
<h3>1.2 使用 Master Port 和 IOKit 通信</h3> 
<p>在 IOKit 里面，所有的通信都通过 <code>IOKit Master Port</code> 来进行，使用以下函数可以获取 master port。</p> 
<pre><code>kern_return_t
IOMasterPort( mach_port_t   bootstrapPort,
          mach_port_t * masterPort );
</code></pre> 
<p>实际使用时如下:</p> 
<pre><code>mach_port_t masterPort;
IOMasterPort(MACH_PORT_NULL, &amp;masterPort)
</code></pre> 
<p>默认把 <code>bootstrapPort</code> 置空。如果返回值是 <code>kIOReturnSuccess</code> 就成功构建了一个 <code>mach_port_t</code> 用于跟 IOKit 通信。</p> 
<h4><strong>bootstrapPort</strong></h4> 
<p>不过在这个 API 里面，获取单一 master port 好理解，那 bootstrapPort 这个参数又是用来干啥的呢？</p> 
<p>在上面的例子中 PID 123 和 PID 456 是在已经获知对方的 port name 的前提下才有办法互相通信的。但是如果你不知道对方的 port name 呢？于是 XNU 系统提供了 bootstrap port 这个东西，由系统提供查询服务，这样所有的进程都可以去广播自己的 mach port 接收端的名字，也可以查询其他人的名字。</p> 
<p>查询接口大概是这样：</p> 
<pre><code>mach_port_t port;
kern_return_t kr = bootstrap_look_up(bootstrap_port, "me.justinyan.example", &amp;port);
</code></pre> 
<p>注册接口大概是这样:</p> 
<pre><code>bootstrap_register(bootstrap_port, "me.justinyan.example", port);
</code></pre> 
<p>同时 bootstrap port 是一个特殊的 port。其他的 mach port 在父进程被 <code>fork()</code> 的时候，子进程是不会继承 port 的，只有 bootstrap port 可以被继承。</p> 
<p>但是，自从 OS X 10.5 开始，苹果引入了 <code>Launchd</code> 这么一个服务，同时弃用了 <code>bootstrap_register()</code> 接口。关于这件事情当时 darwin 开发团队有个长长的邮件列表做了激烈的讨论: <a href="https://lists.apple.com/archives/darwin-dev/2009/Nov/threads.html#00060">Apple - Lists.apple.com</a></p> 
<p>新的接口可以参考 <code>CFMessagePortCreateLocal()</code> 和这篇文章: <a href="http://ddeville.me/2015/02/interprocess-communication-on-ios-with-mach-messages">Damien DeVille | Interprocess communication on iOS with Mach messages</a></p> 
<h3>IOPM 获取电池信息接口</h3> 
<p>上面罗里吧嗦一大堆全是 mach port 的事情，现在终于到正题了。代码非常简单:</p> 
<pre><code>NSDictionary* get_iopm_battery_info() {
    mach_port_t masterPort;
    CFArrayRef batteryInfo;
<pre><code>if (kIOReturnSuccess == IOMasterPort(MACH_PORT_NULL, &amp;amp;masterPort) &amp;amp;&amp;amp;
    kIOReturnSuccess == IOPMCopyBatteryInfo(masterPort, &amp;amp;batteryInfo) &amp;amp;&amp;amp;
    CFArrayGetCount(batteryInfo))
{
    CFDictionaryRef battery = CFDictionaryCreateCopy(NULL, CFArrayGetValueAtIndex(batteryInfo, 0));
    CFRelease(batteryInfo);
    return (__bridge_transfer NSDictionary*) battery;
}
return NULL;
</code></pre>
<p>}</p>
<pre><code>NSDictionary *dict = get_iopm_battery_info();
NSLog(@"iopm dict: %@", dict);
</code></pre>
</code><p><code></code></p></pre>
<p></p> 
<p>输出:</p> 
<pre><code>iopm dict: {
    Amperage = 0;
    Capacity = 6360;
    Current = 6360;
    "Cycle Count" = 113;
    Flags = 5;
    Voltage = 12968;
}
</code></pre> 
<p>可以看到电池循环次数、容量之类的信息，但是不多。<code>IOPMLib.h</code> 的注释说 不建议大家使用这个接口，可以考虑用 IOPowerSources API 代替。</p> 
<h2>2. IOPowerSources API</h2> 
<p>IOPowerSources 的接口比较简单，先用 <code>IOPSCopyPowerSourcesInfo()</code> 取到 info, 然后取 <code>IOPSCopyPowerSourcesList()</code>，最后再 copy 一下就完事了。</p> 
<pre><code>NSDictionary* get_iops_battery_info() {
    CFTypeRef info = IOPSCopyPowerSourcesInfo();
<pre><code>if (info == NULL)
    return NULL;


CFArrayRef list = IOPSCopyPowerSourcesList(info);

// Nothing we care about here...
if (list == NULL || !CFArrayGetCount(list)) {
    if (list)
        CFRelease(list);

    CFRelease(info);
    return NULL;
}

CFDictionaryRef battery = CFDictionaryCreateCopy(NULL, IOPSGetPowerSourceDescription(info, CFArrayGetValueAtIndex(list, 0)));

// Battery is released by ARC transfer.
CFRelease(list);
CFRelease(info);

return (__bridge_transfer NSDictionary* ) battery;
</code></pre>
<p>}</p>
<pre><code>NSDictionary *iopsDict = get_iops_battery_info();
NSLog(@"iops dict: %@", iopsDict);
</code></pre>
</code><p><code></code></p></pre>
<p></p> 
<p>输出:</p> 
<pre><code>iops dict: {
    "Battery Provides Time Remaining" = 1;
    BatteryHealth = Good;
    Current = 0;
    "Current Capacity" = 100;
    DesignCycleCount = 1000;
    "Hardware Serial Number" = D**********;
    "Is Charged" = 1;
    "Is Charging" = 0;
    "Is Present" = 1;
    "Max Capacity" = 100;
    Name = "InternalBattery-0";
    "Power Source ID" = 9764963;
    "Power Source State" = "AC Power";
    "Time to Empty" = 0;
    "Time to Full Charge" = 0;
    "Transport Type" = Internal;
    Type = InternalBattery;
}
</code></pre> 
<p>可以看到信息多了很多，还有 <code>BatteryHealth</code> 等信息，我们看到我的 MacBook 的电池设计循环次数是 <code>DesignCycleCount = 1000</code>，然后我已经循环 113 次了。</p> 
<p>但是，这批信息里面没有带电池的设计容量。</p> 
<h2>3. IOPMPS Apple Smart Battery API</h2> 
<p>IOKit 里提供了一套 IOService 相关的接口，你可以往里面注册 IOService 服务，带个名字，一样是通过 <code>IOMasterPort()</code> 来通信。IOKit 主要是面向硬件驱动开发者的，所以如果你的硬件依赖另外一个硬件，但是另外一个硬件还没有接入，这时候你可以往 IOService 注册一个通知。使用 <code>IOServiceAddMatchingNotification</code>，等到你观察的硬件接入后调用了 <code>registerService()</code> 你就会收到对应的通知了。</p> 
<p>这里我们直接用 <code>IOServiceGetMatchingService()</code> 来获取系统提供的 <code>AppleSmartBattery</code> service。</p> 
<pre><code>NSDictionary* get_iopmps_battery_info() {
    io_registry_entry_t entry = 0;
    entry = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceNameMatching("AppleSmartBattery"));
    if (entry == IO_OBJECT_NULL)
        return nil;
<pre><code>CFMutableDictionaryRef battery;
IORegistryEntryCreateCFProperties(entry, &amp;amp;battery, NULL, 0);
return (__bridge_transfer NSDictionary *) battery;
</code></pre>
<p>}</p>
<pre><code>NSDictionary *iopmsDict = get_iopmps_battery_info();
NSLog(@"iopmsDict: %@", iopmsDict);
</code></pre>
</code><p><code></code></p></pre>
<p></p> 
<p>输出：</p> 
<pre><code>iopmsDict: {
    AdapterDetails =     {
        Current = 4300;
        PMUConfiguration = 2092;
        Voltage = 20000;
        Watts = 86;
    };
    AdapterInfo = 0;
    Amperage = 0;
    AppleRawAdapterDetails =     (
                {
            Current = 4300;
            PMUConfiguration = 2092;
            Voltage = 20000;
            Watts = 86;
        }
    );
    AppleRawCurrentCapacity = 6360;
    AppleRawMaxCapacity = 6360;
    AvgTimeToEmpty = 65535;
    AvgTimeToFull = 65535;
    BatteryData =     {
        AdapterPower = 1106486026;
        CycleCount = 113;
        DesignCapacity = 6669;
        PMUConfigured = 0;
        QmaxCell0 = 6812;
        QmaxCell1 = 6859;
        QmaxCell2 = 6784;
        ResScale = 200;
        StateOfCharge = 100;
        SystemPower = 4625;
        Voltage = 12968;
    };
    BatteryFCCData =     {
        DOD0 = 128;
        DOD1 = 144;
        DOD2 = 128;
        PassedCharge = 0;
        ResScale = 200;
    };
    BatteryInstalled = 1;
    BatteryInvalidWakeSeconds = 30;
    BatterySerialNumber = D**********;
    BestAdapterIndex = 3;
    BootPathUpdated = 1571194014;
    CellVoltage =     (
        4323,
        4322,
        4323,
        0
    );
    ChargerData =     {
        ChargingCurrent = 0;
        ChargingVoltage = 13020;
        NotChargingReason = 4;
    };
    CurrentCapacity = 6360;
    CycleCount = 113;
    DesignCapacity = 6669;
    DesignCycleCount70 = 0;
    DesignCycleCount9C = 1000;
    DeviceName = bq20z451;
    ExternalChargeCapable = 1;
    ExternalConnected = 1;
    FirmwareSerialNumber = 1;
    FullPathUpdated = 1571290629;
    FullyCharged = 1;
    IOGeneralInterest = "IOCommand is not serializable";
    IOReportLegend =     (
                {
            IOReportChannelInfo =             {
                IOReportChannelUnit = 0;
            };
            IOReportChannels =             (
                                (
                    7167869599145487988,
                    6460407809,
                    BatteryCycleCount
                )
            );
            IOReportGroupName = Battery;
        }
    );
    IOReportLegendPublic = 1;
    InstantAmperage = 0;
    InstantTimeToEmpty = 65535;
    IsCharging = 0;
    LegacyBatteryInfo =     {
        Amperage = 0;
        Capacity = 6360;
        Current = 6360;
        "Cycle Count" = 113;
        Flags = 5;
        Voltage = 12968;
    };
    Location = 0;
    ManufactureDate = 19722;
    Manufacturer = SMP;
    ManufacturerData = {length = 27, bytes = 0x00000000 *** };
    MaxCapacity = 6360;
    MaxErr = 1;
    OperationStatus = 58433;
    PackReserve = 200;
    PermanentFailureStatus = 0;
    PostChargeWaitSeconds = 120;
    PostDischargeWaitSeconds = 120;
    Temperature = 3067;
    TimeRemaining = 0;
    UserVisiblePathUpdated = 1571291169;
    Voltage = 12968;
}
</code></pre> 
<p>可以看到比前面的两次输出多了很多。</p> 
<pre><code>CurrentCapacity = 6360;
DesignCapacity = 6669;
</code></pre> 
<p>有了当前电池容量和设计容量，就可以得到我的电池还剩 <code>95%</code> 的容量。</p> 
<h2>4. 列出所有 IOService</h2> 
<p>以上三种方法我都是从 Hammerspoon 的源码中习得。通过阅读这部分接口学习了相关的一些内核层 API 的概念，很有意思。那么在 #3 中 Hammerspoon 的作者是怎么知道系统有一个 IOService 叫做 "AppleSmartBattery" 的呢？我们不妨把系统所有的 IOService 打印出来，然后 grep 看看里面有没有带 <code>battery</code> 或者 <code>energy</code> 关键字的。</p> 
<p><code>IOKitLib.h</code> 里有一个接口 <code>IORegistryCreateIterator()</code> 可以创建一个迭代器，把所有已注册的 IOService 取出来。</p> 
<p>核心代码如下:</p> 
<pre><code>const char *plane = "IOService";
io_iterator_t it = MACH_PORT_NULL;
IORegistryCreateIterator(kIOMasterPortDefault, plane, kIORegistryIterateRecursively, &amp;it) 
</code></pre> 
<p>有一个开源库实现了这个功能，有兴趣的读者朋友可以看看这里: <a href="https://github.com/Siguza/iokit-utils">Siguza/iokit-utils: Dev tools for probing IOKit</a></p> 
<pre><code>➜  iokit-utils ./ioprint| grep -i battery
AppleSmartBatteryManager(AppleSmartBatteryManager)
AppleSmartBattery(AppleSmartBattery)
</code></pre> 
<p>结果出来两个 <code>battery</code> 相关的，<code>AppleSmartBattery</code> 就是上述例子用到的，<code>AppleSmartBatteryManager</code> 则打印出如下结果:</p> 
<pre><code>iopmsDict: {
    CFBundleIdentifier = "com.apple.driver.AppleSmartBatteryManager";
    CFBundleIdentifierKernel = "com.apple.driver.AppleSmartBatteryManager";
    IOClass = AppleSmartBatteryManager;
    IOMatchCategory = IODefaultMatchCategory;
    IOPowerManagement =     {
        CapabilityFlags = 2;
        CurrentPowerState = 1;
        MaxPowerState = 1;
    };
    IOProbeScore = 0;
    IOPropertyMatch =     {
        IOSMBusSmartBatteryManager = 1;
    };
    IOProviderClass = IOSMBusController;
    IOUserClientClass = AppleSmartBatteryManagerUserClient;
}
</code></pre> 
<p>只是一堆苹果自家驱动的信息而已。</p> 
<h2>5. 用于 iOS 系统</h2> 
<p>我在运行了 iOS 13.1.2 的 iPhone Xs Max 机器上进行了测试。iOS 工程引入 IOKit 会比较麻烦，因为这个 Framework 是不公开的，所以你得把所有的头文件导出来，并且把 <code>#import &lt;IOKit/xxx.h&gt;</code> 的地方都改掉。可以参考此文: <a href="https://garynil.tw/2017/01/298/tutorial-import-iokit-framework-into-xcode-project/">[Tutorial] Import IOKit framework into Xcode project | Gary's ...Lasamia</a></p> 
<p>实测 <code>IOPMCopyBatteryInfo</code> 在 iOS 上无效，估计是 iOS 直接不给 mach port 权限到上层。 <code>IOPSCopyPowerSourcesList</code> 和 <code>IOServiceNameMatching</code> 能用。</p> 
<pre><code>iops dict: {
    "Battery Provides Time Remaining" = 1;
    "Current Capacity" = 100;
    "Is Charged" = 1;
    "Is Charging" = 0;
    "Is Present" = 1;
    "Max Capacity" = 100;
    Name = "InternalBattery-0";
    "Play Charging Chime" = 1;
    "Power Source ID" = 2490467;
    "Power Source State" = "AC Power";
    "Raw External Connected" = 1;
    "Show Charging UI" = 1;
    "Time to Empty" = 0;
    "Time to Full Charge" = 0;
    "Transport Type" = Internal;
    Type = InternalBattery;
}
iopmsDict: {
    BatteryInstalled = 1;
    ExternalConnected = 1;
}
</code></pre> 
<p>可以看到信息比 macOS 的少了很多，并且没有包含 <code>cycleCount</code> 这个信息。</p> 
<h3>5.1 奇技淫巧 hack 之</h3> 
<p>但是毕竟 iOS 是有 IOKit 框架的，那么有没有什么奇技淫巧可以拿到 IOKit 的信息呢？<a href="https://github.com/eldade/UIDeviceListener">eldade/UIDeviceListener: Obtain power information (battery health, charger details) for iOS without any private APIs.</a>这个库可以在 iOS 7 - iOS 9.3 上捕获这部分信息。</p> 
<p>所使用之操作也是非常有趣。从 iOS 3.0 开始，UIDevice 增加了 <code>batteryState</code> 和 <code>batteryLevel</code> 这两个参数，并且允许开启电池监控 <code>batteryMonitoringEnabled</code>。通过上文我们已经知道，这些操作最终都是通过 IOKit 来进行的。</p> 
<p>IOKit 会从 <code>IORegistry</code> 获取一份最新的电池信息，就像我们的 <code>get_iopmps_battery_info()</code> 方法一样。留意到从 <code>IORegistry</code> 取数据的接口长这样:</p> 
<pre><code>IORegistryEntryCreateCFProperties(
    io_registry_entry_t entry,
    CFMutableDictionaryRef * properties,
        CFAllocatorRef      allocator,
    IOOptionBits        options );
</code></pre> 
<p>重点在第三个参数 <code>CFAllocatorRef</code>，通常情况下系统会用默认的 <code>CFAllocatorGetDefault()</code>。我们看看这个 allocator 长啥样<a href="https://github.com/mlabbe/CoreFoundation/blob/master/CFBase.c">CoreFoundation/CFBase.c</a>:</p> 
<pre><code>typedef const struct CF_BRIDGED_TYPE(id) __CFAllocator * CFAllocatorRef;
</code><p><code>// CFAllocator structure must match struct _malloc_zone_t!<br /> // The first two reserved fields in struct _malloc_zone_t are for us with CFRuntimeBase<br /> struct __CFAllocator {<br /> CFRuntimeBase _base;<br /> CFAllocatorRef _allocator;<br /> CFAllocatorContext _context;<br /> };<br /> </code></p></pre>
<p></p> 
<p>以及 CoreFoundation 提供了不少操作:</p> 
<pre><code>CFAllocatorGetDefault();
CFAllocatorGetContext();
CFAllocatorCreate();
CFAllocatorSetDefault();
</code></pre> 
<p>如果能把系统的默认 allocator 替换成自己的实现，那么当我们打开 <code>batteryMonitoringEnabled</code> 然后电池发生变更的时候，系统就回去用 <code>IORegistry</code> 取一份电池信息，就会掉进我们替换掉的 allocator。这时候就能截取 allocator 刚刚 allocate 的内存信息了。真的佩服作者的脑洞。详细的实现大家可以看原来的库: <a href="https://github.com/eldade/UIDeviceListener">eldade/UIDeviceListener</a>，我们只看关键代码:</p> 
<pre><code>// 获取默认 allocator
_defaultAllocator = CFAllocatorGetDefault();
<p>CFAllocatorContext context;</p>
<p>// 获取默认 allocator 的 context<br /> CFAllocatorGetContext(_defaultAllocator, &amp;context);</p>
<p>// 全部改成自己的实现, myAlloc/myRealloc/myFree 都是 C 函数<br /> context.allocate = myAlloc;<br /> context.reallocate = myRealloc;<br /> context.deallocate = myFree;</p>
<p>// 用修改后的 context 创建新的 allocator<br /> _myAllocator = CFAllocatorCreate(NULL, &amp;context);</p>
</code><p><code>// 把自己创建的 allocator 替换掉系统的默认 allocator<br /> CFAllocatorSetDefault(_myAllocator);<br /> </code></p></pre>
<p></p> 
<p>接下来看看 <code>myAlloc</code> 的实现：</p> 
<pre><code>void * myAlloc (CFIndex allocSize, CFOptionFlags hint, void *info)
{
    // 做一下线程检查
    VERIFY_LISTENER_THREAD();
<pre><code>// 实现一个新的 allocation
void *newAllocation = CFAllocatorAllocate([UIDeviceListener sharedUIDeviceListener].defaultAllocator, allocSize, hint);

// 失败就放过
if (newAllocation == NULL)
    return newAllocation;

// 有东西了，赶紧把新的内容塞进准备好的 allocations 变量里，这是个 C++ 的 std::set&amp;lt;void *&amp;gt;
if (hint &amp;amp; __kCFAllocatorGCObjectMemory)
{
    [UIDeviceListener sharedUIDeviceListener].allocations-&amp;gt;insert(newAllocation);
}
return newAllocation;
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>与此同时，通过 KVO 观察 <code>UIDevice</code> 公开的 <code>batteryLevel</code> 属性，接收 KVO 回调:</p> 
<pre><code>- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary&lt;NSString *,id&gt; *)change context:(void *)context
{
    if ([change objectForKey: NSKeyValueChangeNewKey] != nil)
    {
        std::set&lt;void *&gt;::iterator it;
        for (it=_allocations-&gt;begin(); it!=_allocations-&gt;end(); ++it)
        {
            CFAllocatorRef *ptr = (CFAllocatorRef *) (NSUInteger)*it;
            void * ptrToObject = (void *) ((NSUInteger)*it + sizeof(CFAllocatorRef));
<pre><code>        if (*ptr == _myAllocator &amp;amp;&amp;amp; // Just a sanity check to make sure the first field is a pointer to our allocator
            [self isValidCFDictionary: ptrToObject])   // Check for valid CFDictionary
        {
            CFDictionaryRef dict = (CFDictionaryRef) ptrToObject;

            if ([self isChargerDictionary: dict]) // Check if this is the charger dictionary
            {
                // Found our dictionary. Let's clear the allocations array:
                _allocations-&amp;gt;clear();

                // We make a deep copy of the dictionary using the default allocator so we don't
                // get callbacks when this object and any of its descendents get freed from the
                // wrong thread:

                CFDictionaryRef latestDictionary = (CFDictionaryRef) CFPropertyListCreateDeepCopy(_defaultAllocator, dict, kCFPropertyListImmutable);

                if (latestDictionary != nil)
                {
                    // Notify that new data is available, but that has to happen on the main thread.
                    // Because of the CFAllocator replacement, we generally shouldn't
                    // do ANYTHING on this thread other than stealing this dictionary from UIDevice...
                    dispatch_sync(dispatch_get_main_queue(), ^{
                        // Pass ownership of the CFDictionary to the main thread (using ARC):
                        NSDictionary *newPowerDataDictionary = CFBridgingRelease(latestDictionary);
                        [[NSNotificationCenter defaultCenter] postNotificationName:kUIDeviceListenerNewDataNotification object:self userInfo:newPowerDataDictionary];
                    });
                }

                return;
            }
        }
    }
}
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>上面一堆嵌套代码判断了一层又一层，最后做了一个 <code>CFPropertyListCreateDeepCopy</code> 然后通过通知转发出去。</p> 
<pre><code>CFDictionaryRef latestDictionary = (CFDictionaryRef) CFPropertyListCreateDeepCopy(_defaultAllocator, dict, kCFPropertyListImmutable);
</code></pre> 
<p>严格来说这种写法并没有用到私有 API，但是非常取巧。如果内核实现代码不用 default allocator 来取 IORegistry 的信息这里就失效了。事实上从 iOS 10 开始这个做法确实也失效了。但是整个思路非常有趣，值得观摩。</p> 
<h3>5.2 遍历所有的 IOService</h3> 
<p>上面我们在 macOS 上通过取 <code>AppleSmartBattery</code> 这个 IOService 可以获得更多电池信息，但是在 iOS 上没有。那么我们还能不能寻找其他的 IOService 看看是否有携带了电池信息的呢？</p> 
<p>此文<a href="http://www.lyonanderson.org/blog/2014/02/12/ios-iokit-browser/">iOS IOKit Browser - Christopher Lyon Anderson</a> 使用私有 API 遍历了 iOS 上所有的 IOService，并且在他的截屏中是包含了电池信息的。我 clone 下来发现已经没有 <code>cycleCount</code> 信息了，但是这个项目有个地方挺有意思:</p> 
<pre><code>NSString *bundlePath = [[NSBundle bundleWithPath:@"/System/Library/Frameworks/IOKit.framework"] bundlePath];
    NSURL *bundleURL = [NSURL fileURLWithPath:bundlePath];
    CFBundleRef cfBundle = CFBundleCreate(kCFAllocatorDefault, (CFURLRef)bundleURL);
<pre><code>self.IORegistryGetRootEntryShim = CFBundleGetFunctionPointerForName(cfBundle, CFSTR("IORegistryGetRootEntry"));
</code></pre>
</code><p><code></code></p></pre>
<p></p> 
<p>先取系统的 <code>IOKit.framework</code>，然后用 CoreFoundation 的接口来取函数指针，然后就可以使用这批 IOKit 的私有函数了。可惜此方法亦已无效。</p> 
<h2>6. 小结</h2> 
<p>iOS 方面暂时还未找到能展示 <code>cycleCount</code> 信息的方法，想必 Battery Health App 应该用了更加厉害的黑科技。可能只有越狱逆向一下才知道它是怎么做到的了。</p> 
<p>之前因为 <code>sysctl()</code> 的缘故看了一下 XNU 的源码，结果发现内核层还是有不少有意思的东西。IOKit 作为驱动层的 API，除了获取电池信息之外还能干很多事情。</p> 
<p>本文通过 IOKit 的简单接口，扩展学习了 XNU 的 IPC 通信机制 mach port。希望后续能通过这些工具做出点有意思的东西来。</p> 
<h2>内核系列文章</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></li> 
 <li><a href="https://justinyan.me/post/4040">macOS 内核之网络信息抓包(三)</a></li> 
 <li><a href="https://justinyan.me/post/4023">macOS 内核之网络信息抓包(二)</a></li> 
 <li><a href="https://justinyan.me/post/4009">macOS 内核之网络信息抓包(一)</a></li> 
 <li><a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
 <li><a href="https://justinyan.me/post/3982">macOS 内核之内存占用信息</a></li> 
 <li><a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息</a></li> 
 <li><a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a></li> 
 <li><a href="https://justinyan.me/post/3961">macOS 内核之从 I/O Kit 电量管理开始</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/IOKit/IOKit.html">I/O Kit Overview</a></li> 
 <li><a href="https://robert.sesek.com/2012/1/debugging_mach_ports.html">Debugging Mach Ports - Robert Sesek</a></li> 
 <li><a href="https://nshipster.com/inter-process-communication/">Inter-Process Communication - NSHipster</a></li> 
 <li><a href="http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/">Mach Kernel Interface Reference Manual</a></li> 
 <li><a href="https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/KernelProgramming/Mach/Mach.html">Mach Overview</a></li> 
 <li><a href="https://przhu.github.io/using%20mac/2012/08/25/mach-message-and-bootstrap-server-on-os-x/">Mach Message and Bootstrap Server on OS X ←</a></li> 
 <li><a href="https://github.com/Siguza/iokit-utils">Siguza/iokit-utils: Dev tools for probing IOKit</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x8389;&#x9999;&#x5C31;&#x662F;&#x7231;&#x4E0E;&#x5E0C;&#x671B;&#x2014;&#x2014;&#x5173;&#x4E8E;&#x300A;&#x4E1C;&#x4EAC;&#x7231;&#x60C5;&#x6545;&#x4E8B;&#x300B;&#x7535;&#x89C6;&#x5267;</title>
        <link>https://justinyan.eth.limo/B82995D6-13FE-4979-A81E-E26B6EC37E93/</link>
        <guid>https://justinyan.eth.limo/B82995D6-13FE-4979-A81E-E26B6EC37E93/</guid>
        <pubDate>Thu, 17 Oct 2019 00:18:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/10/tokyo_love_story.jpg" alt="莉香就是爱与希望——关于《东京爱情故事》电视剧" /></p> 
<p>在<a href="https://justinyan.me/post/3927">“枫言枫语播客”最近一期节目</a>里，嘉宾的推荐曲目是《东京爱情故事》的主题曲，由小田和正创作和演唱的《突如其来的爱情》。我听完这首歌觉得很赞，想起《东京爱情故事》这个名字经常听到却从未看过，于是找来看了一下。</p> 
<p>一开始并没对这部28年前的日剧有什么期待，但看完第一集之后就深陷其中不可自拔。</p> 
<p>最终我把这部电视剧看了两遍，部分Episode看了几遍，也把原著漫画看了一遍。虽然这部1991年的电视剧被标为“纯爱”故事，但我却觉得它不只有“纯爱”。这几十年来电视剧、电影、动漫这种形式的发展十分迅速，以爱情为主题的作品也层出不穷，相较之下《东京爱情故事》有其时代的局限性，但她却有一种超越时空的魅力，让人为之着迷，为之倾倒。</p> 
<hr /> 
<p></p>
<center>
 <strong>以下是剧透分割线，强烈建议还没有看过的读者朋友看完电视剧之后再看以下内容。</strong>
</center>
<p></p> 
<hr /> 
<h2>一、普通的故事</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/10/tokyo_love_story_manga-squashed.jpg" alt="东京爱情故事漫画" /></p> 
<p>电视剧改编自柴门文的同名漫画《东京爱情故事》。因为喜欢此剧的缘故，我把漫画完整看了一遍，不过我觉得漫画并不好看。这其中固有电视剧先入为主的原因，但最重要的是电视剧对原作人物进行了大幅改编，重新塑造了“赤名莉香”这个深受观众喜爱的角色。</p> 
<p>电视剧以从乡下（四国爱媛县松山市）初到东京的主角永尾完治在机场见到来接机的公司同事赤名莉香开场。两人同在东京一家小体育用品公司 Heart Sport 工作，完治刚下飞机，还没到公司报道就被莉香拉去仓库搬运货物。这样的快节奏让憨厚的完治对这个陌生与未知的城市产生些许不安。</p> 
<p>莉香笑着说：</p> 
<p>“就是不知道明天会发生什么事，才会充满希望的不是吗？”</p> 
<p>两人由此结缘。后来完治参加同学会，见到从小一起长大的关口里美和三上健一。里美是完治暗恋多年的对象，三上则是里美暗恋多年的对象。这样的三角恋情在今日看来是比较俗套了，再加上莉香看到完治对里美的深情与专一，喜欢上了完治，于是变成了四角。故事就此围绕这四个主要人物展开。</p> 
<h2>二、成功的人物——赤名莉香</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/10/tokyo_love_story_rika2.jpg" alt="" /></p> 
<p>《东京爱情故事》的电视剧版每集约45分钟，一共11集（特别篇不算），要在这个时长里把四卷漫画内容塞进来，势必要进行大幅裁减。编剧坂元裕二对原作的改动很大，主要人物、重要事件和故事主线得到了保留，但是最重要的人物从男主角永尾完治转移到了女主角赤名莉香，并且把女主角的黑暗情节几乎全部进行了改编。最终编剧只保留了女主角与部长过往的婚外情黑历史，但是重塑了一个阳光开朗，坚强执着，大胆超前，淘气可爱的莉香。</p> 
<p>莉香的扮演者铃木保奈美对该角色也起到极为重要的作用。1991年的化妆术没有今天那么精致，摄像机也没有自带美颜，画面略带灰蒙，东京街头车灯在胶片上留下长长的痕迹。铃木保奈美的脸型有点长，颧骨处有点外扩，眼睛不算大，眼角稍稍往下，并不是一眼见到就惊为天人的美女。在第一集刚出场的第一幕，我甚至觉得这个角色有点普通，可能是个配角。直到她和完治站在海边，笑着对完治说“正是因为陌生和未知，明天才会充满希望不是吗？”</p> 
<p>那笑容就像早晨的阳光，在拉开窗帘的一瞬间灌满房间，让美好的一天涌动着光明与希望。</p> 
<p>相比于今天过于完美的技术，当年的影像让观众感到更加真实，也更加亲切。人都是有缺点的，完全没有缺点的人看上去就不太像人，反而会让观众产生距离感。演员平凡的一面让她的笑容更加明亮了。</p> 
<p>同时铃木保奈美的声音也似银铃般动人。第一次听到她的声音我还以为在看动漫，以为有专门的声优给她配音。尤其是第二集开场，莉香为了预测天气好坏把鞋子踢上天空（类似硬币正反面）结果卡在树枝上，然后蹦蹦哒哒欲取鞋子而不得的样子，搭配这副嗓音，可以说非常漫画化了。</p> 
<p>铃木保奈美自身的条件讨人喜欢，不过人好看声音好听的演员也不少，同剧中扮演女二号里美的有森也实以及女三号长崎尚子的千堂晃穗都很好看，但是为什么莉香这个角色的人气却是全剧最高的呢？</p> 
<p>我觉得是演员的条件与角色塑造的完美结合。编剧坂元裕二居功至伟，是他把漫画中黑暗色彩很重的莉香改编成了阳光开朗的人物。</p> 
<p>漫画中的莉香小时候在非洲长大，以此解释她的野性和放荡不羁的行为。同时她患有精神疾病，在故事中有遭遇过精神恐慌袭击的情节。在漫画中，莉香和完治工作的地方是一个只有几个人的小公司，莉香和社长有过关系，并且到了后期，在没和完治分手的情况下，跟其他男性有过关系，还怀上了社长的孩子。这几件事情都成为推动漫画发展的重要情节，漫画家柴门文虽然有鼓励莉香对完治的执着而炽烈的情感，但是最终还是让两人分开，莉香在漫画中并不是一个正面的角色。这大概也是我先看完电视剧之后，再看漫画时倍感不适的原因吧。</p> 
<p>为了把莉香这个角色变成一个正面阳光的形象，坂元裕二可谓煞费苦心。我不会日语，而年代久远网络上能找到的相关资料不多，虽然有些文章称坂元裕二把自己关在酒店里通宵赶稿，参考演员铃木保奈美的形象做了特别修改云云，但是无从考证。所以这里我们只讨论电视剧成品本身。</p> 
<p>电视剧里的莉香，小时候在美国长大，年幼时因为经常转学所以失去过很多同学和朋友。但是每次离开莉香都会笑着告别，这给了她与完治交往过程中令人惊讶的自我治愈一个铺垫。每次完治由于里美的事情忘记赴约、迟到，或者讲错话给她造成的伤害，她总是可以在第二天表现得无关痛痒，依然精气十足地喊一声“丸子！“。这种事情在现实生活中是不可能发生的，实际上莉香也并不是毫不在乎，只是用她那招牌笑容掩盖了自己内心的疼痛。</p> 
<p>但是憨厚的乡下小子完治不知道啊，他以为里美所说的就是心里所想的。一开始观众还会有点狐疑，但是来到故事中期，当观众看到她熟练地发出违心的灿烂笑容时，内心所投射的却是她深沉的忧伤，这种鲜明的对比所带来的冲击，要比直白的哭哭啼啼来得更加猛烈。</p> 
<p>莉香的笑容太治愈，但笑容的背后太悲痛。所以当铃木保奈美用她那甜美的嗓音阳光灿烂地笑着喊出”丸子！“的昵称时，在不同的场景下观众都会自然地联想到笑容背后的伤痕，以及这种坚强背后的执着。</p> 
<p>莉香是许多人想要但在现实中不可得的“爱与希望”。</p> 
<p>失去了太多就害怕拥有，因拥有是下一个人失去。这是一种十分消极的态度，遇事选择逃避而不是面对，但省心省力，也因此成为多数人的选择。莉香失去的也多，但是每次离别她都选择笑着面对。这需要不可思议的勇气与精力。所以完治在午夜接到莉香的来电时说：“现在这个时间还精力充沛的，除了你就是便利店了。”</p> 
<p>人们喜欢超级英雄，喜欢用超人的能力去弥补现实的遗憾。这个世界是黑暗且残忍的，理想与美好可以给人活下去的勇气。童话故事如此，宗教信仰如此，小说、电影、电视剧皆如此。莉香所拥有的勇气是令人敬佩的，她的毅力与坚持是令人敬佩的，所以在故事后期当她在酒吧里跟三上说“我努力过了，我努力过了啊。”这样泄气的，很不“莉香式勇敢”的话的时候，不知有多少人为之动容。</p> 
<p>故事的大结局没有迎来大团圆。莉香在最后关头选择了主动离开。她跟完治说如果你改变主意了就来四点四十八分的列车，但她自己却坐了前一班车走了，在车上痛哭的样子令人心碎。悲剧比喜剧更让人遗憾，更让人断不了念想。假如莉香没有离开，完治在最后一刻赶上了会是怎样？据说曾经引起过观众们的热烈讨论。但是我觉得正是悲剧收场，让观众的内心总有一个不愿释怀的郁结，才成就了这部电视剧，才成就了莉香这个角色，才成就了经久不衰的一部经典。</p> 
<h2>三、情感起伏收放有度</h2> 
<p>但凡一个成功的角色，总能让读者愿意为其付出情感投入，因其忧郁而哀伤，为其欢笑而欣喜。为此，恰当合宜的行为很重要。村上春树的人物，悲恸时反而沉默，静静地握着手中的方向盘，漫无目的地开往冬天的北方。寂静的忧伤比嚎啕大哭更能深入人心。</p> 
<p>《东京爱情故事》里的人物，难免要在纠缠的感情线中受尽折磨，但不轻易痛哭，甚少哭泣特写，但角色的低语，沉默的表情，指尖的香烟，手中的威士忌，以及因为颤抖而无法握住的话筒，却恰如其分表达了情感的深沉。</p> 
<p>四个主角在遇到情感的转折点时各有不同的表现，但相同的是不到最巅峰的时刻不给抱头痛哭的镜头。</p> 
<p>女二号关口里美的设定是谨慎软弱，人畜无害的形象。虽有多个掩面而去的镜头，但是哭泣特写很少，与三上分手后也只是坐在地板上靠着墙，沉默无语，面带忧伤。</p> 
<p>男一号永尾完治更不必说，只要遇到事情就板着一副苦瓜脸，基本上没有机会流泪。只有在和莉香主动说出分手的那晚，因为颤抖无法握住话筒之后，终于失声痛哭。其他时候那张憨憨的脸上除了因为悲伤的扭曲，还充满对莉香无法理解的困惑。</p> 
<p>女主角莉香是坚强的代名词，只在最后大结局一集，主动选择离开完治后，在火车上忆及过往，泪流不止。</p> 
<p>这样处理方式与许多动则哭天抢地的电视剧可谓对比鲜明。人类具有共情能力，看到剧中人哭泣会为之动容。但情感的波动也有极限，如果全程都像过山车一样时不时就来要个眼泪那就过分了。而且最重要的是，现实世界并不如此，过度的情感渲染和释放只会让作品远离现实，反而造成距离感，更不容易共情。</p> 
<p>在这点上，本剧可谓收放有度。</p> 
<h2>四、时代的局限</h2> 
<p>毕竟是 1991 年拍的电视剧，今天看来还是有些不足之处。</p> 
<p>首先是技术类的硬件条件，比如化妆术和摄影技术的进步让当时的成像效果看起来比较普通，然后不知道是经费原因还是时间关系，电视剧的拍摄场地很少，看多了有点情景喜剧的感觉。再者后期制作的时候，一些特写镜头没做自然过渡，比如第一集结尾莉香与完治在代代木公园分开时，莉香喊了三声“丸子”，这时候镜头做了三次放大特写，但是没有任何过渡，就突然啪一下切换过去。第一次看到给我一种运用了恐怖片手法的感觉。 XD</p> 
<p>当然，硬件问题会随着技术的发展而解决，所以并不是什么大问题。对于整个电视剧来说，最大的一个不足是在编剧上，重要情节的设计过于碰巧，存在过多偶然。</p> 
<p>一个好的小说家，可以把许多碰巧用自然的方式讲述出来。这对电视剧来说也是一样的道理。《东京爱情故事》里有很多偶然和碰巧，囿于时代或者可能经费的局限，整部电视剧拍摄的场景不多。除了大结局去到松山市之外，有10集都在东京，并且只局限于一家酒吧、两家餐厅、一家KTV、办公室以及四个主要人物的家和周边。于是许多事件“碰巧地”在同一时间发生在同一地点碰到最不该碰到的人和事。</p> 
<p>比如许多推进故事发展的重要事件都在同一家酒吧发生的。</p> 
<p>东京是个很大的城市，现实生活中那么频繁地在街上、在同一家店遇到几乎是不可能的事情。当然其中也有比较合理的设定，比如完治与里美的第一次约会（中间三上自己跑进来变成三个）过程中，完治接到公司电话去处理紧急事件，完成后和莉香一同回到那家酒吧正好隔着一条马路遇上三上吻里美的场面。这个情节有因有果，只有时间是唯一的偶然，合情合理。</p> 
<p>但是在这之后，四个主角还是频繁地在这个酒吧，或者在另外一家餐厅偶遇并且由于偶遇发生推动故事发展的事件，那就很勉强了，一边看剧一边难免感受到“编剧之力”在把我拉扯出去。比如三上和里美分手后，完治与三上在一家餐厅谈到一半动手的时候正好遇到来这里吃饭的莉香。东京那么多餐厅，实际出现在这部电视剧里的只有这一家，这样的安排就显得过于巧合了。</p> 
<p>还有诸如完治与里美在街头碰面总能被莉香看到，莉香扇出言不逊的同事耳光时又正好被完治看到之类的，完全利用巧合来推进剧情还是比较偷懒的。</p> 
<p>但是瑕不掩瑜，况且也没有资料指明当时制作团队有多少时间可以用于修正细节。只要接受了这部剧的设定，好好沉醉在故事里，观看体验还是非常棒的。</p> 
<h2>五、关于成长，爱，与希望</h2> 
<p>其实故事主线的时间跨度很短，完治刚从乡下到东京工作就遇到莉香，几件事情的发生也就三个月而已。三个月，乡下小子还远没有到适应东京大城市的时候，还远没有成长到能理解莉香的内心感受的时候，还远没有到可以处变不惊，从容解决问题的时候。莉香和完治的问题是不对称的，完治面对前卫大胆的莉香完全是手足无措的。</p> 
<p>这在电视剧中表现为天真的情节，有时候和情侣间的亲密对话方式表现一致。比如明明面对面却互相用过家家式的打电话方式交流，比如莉香遇到状况的时候不是选择冷静交流而是直接开跑，比如完治遇到出状况的莉香表现为脑内一片空白不知道该说什么做什么。用通俗的一个词来说，这种表现被很多人称为“幼稚”。</p> 
<p>感情经验丰富的三上曾对莉香说过：“你的爱对那家伙（永尾完治）来说，可能过于沉重了。”</p> 
<p>而在大结局中部长对经过三年成长，已能独当一面的完治说：“现在的你，应该可以很好地接受她的爱了吧。”用另一个通俗的词来说，这种表现被很多人称为“成熟”。曾经我非常反感所谓“成熟”这个词，但是后来我发现我所反感的只是世人所理解的“成熟”，约等于圆滑、世故、违心和奉承。在部长与三上所想要表达的意思中，是完治的尚未成长，不叫“幼稚”，完治的成长，也不叫“成熟”。一个人能够从容冷静地解决问题，不是他表现为从容和冷静，而是他的能力已经成长到可以解决问题的时候了。</p> 
<p>完治的内心有对莉香的深爱，但是他分手时说的却是“我没有自信和你继续交往下去”。是“没有自信”，是他不具备解决问题的能力，是他不具备从容应对突发状况的能力，是他没有办法透过莉香阳光般的笑容读懂她内心深藏的孤独。而莉香一直在突发，一直在用笑容掩饰内心的哀伤，一直不愿正面坦然地表达内心的想法。</p> 
<p>一个不愿说，一个不理解。人类需要成长，需要随着岁月的沉淀与经验的历练，去增强自己的理解能力，去增强自己换位思考的能力，去波澜不惊地寻找沟通问题的核心与本质。但是成长后的人类啊，却也失去了“哔啵叭，莫西莫西”的天真与纯粹了。</p> 
<p>莉香是天真的，是勇敢的，是黑暗的世界行走时投下的灿烂的阳光。</p> 
<p>莉香，就是爱与希望。</p> 
<p><em>2019.10.17 凌晨</em><br /> <em>于自居</em></p>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x5185;&#x6838;&#x4E4B; hw.epoch &#x662F;&#x4E2A;&#x4EC0;&#x4E48;&#x4E1C;&#x897F;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/E192056F-BE62-40E2-92D2-308194997EFA/</link>
        <guid>https://justinyan.eth.limo/E192056F-BE62-40E2-92D2-308194997EFA/</guid>
        <pubDate>Wed, 16 Oct 2019 22:38:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/10/macos_kernel_hw_epoch.jpg" alt="macOS 内核之 hw.epoch 是个什么东西？" /></p> 
<p>今天在学习 macOS 系统的 <code>sysctl()</code> 函数时遇到了一个有意思的东西——<code>EPOCH</code>。遂写此文以记之。</p> 
<p>我们知道 macOS(OS X) 系统中有一层核心系统(Core OS)叫做 Darwin。iOS, watchOS 等苹果自家硬件的许多系统都是 Darwin 做的上层开发。所以 iOS 和 macOS 都可以使用 darwin 提供的 <code>sysctl()</code> 函数来获取系统硬件信息，比如 CPU 信息，内存大小之类。</p> 
<p><img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f2/Diagram_of_Mac_OS_X_architecture.svg/1112px-Diagram_of_Mac_OS_X_architecture.svg.png" alt="Diagram of Mac OS X architecture" /></p> 
<p>根据 2006 年的这张系统架构图我们可以看到，<code>Darwin</code> 里面主要包含 <code>System Utilities</code> 和 <code>XNU</code> 内核。<code>XNU</code> 即 X is Not Unix，最早由乔布斯离开苹果后创办的 NeXT 公司开发。XNU 是一个混合内核(hybrid kernel)，包含两个部分。FreeBSD 提供了文件系统，网络接口，POSIX 接口等实现，Mach 内核则提供了 IOKit 等硬件驱动接口(在 NeXT 时期叫做 Driver Kit)。</p> 
<h2>一、sysctl() 函数</h2> 
<p>我们在 iOS/Mac App 里面经常需要获取用户设备信息用于 Debug 或是针对不同硬件的差异化设计。所以大家应该对 <code>"hw.machine"</code>，<code>sysctlbyname()</code>这样的接口不陌生。</p> 
<p><code>sysctl()</code>接口是由 BSD 提供的，基本上所有 Unix-like 系统都有这个接口，同时也会提供一个跑在终端的命令。"hw.machine" 是其中一个 Key，通过它可以拿到设备信息。在 iPhone 上输出<code>iPhone6,1</code>这样的设备类型代码，Mac 上则是<code>x86_64</code>或者<code>i386</code>。</p> 
<p>在 macOS 上我们还可以通过终端运行以下命令:</p> 
<pre><code>sysctl -a
</code></pre> 
<p>输出所有的 key-value 结果，也可以指定 <code>sysctl -w key</code>输出指定 key 的结果。</p> 
<h2>二、什么是 EPOCH</h2> 
<p>在 <code>sysctl.h</code> 头文件中定义了一堆 CTL_HW identifiers，也就是上面的 Key。我发现里面有一个叫做 <code>HW_EPOCH</code> 的 Key 不晓得是啥。</p> 
<pre><code>#define    HW_EPOCH    10      /* int: 0 for Legacy, else NewWorld */
</code></pre> 
<p>看注释如果输出 0 就是老实现，其他就是新的。但是 EPOCH 是啥？</p> 
<p>其实这个词目前最常用于指代 Unix 时间戳，也就是我们熟悉的 <code>1970-01-01 00:00:00</code>。Epoch 是在计算机里本意用于计时的基准，比一个 epoch 的时间小的记为负数，大于则记为正数。而目前最广泛使用的是 Unix 以 1970 这个时间为基准的计算法。</p> 
<p>但是早期的计算机操作系统使用 32 位 Int 来存储这个时间戳，从 1970 开始计时，最长可以记到 <code>2038-01-19 03:14:07</code>，于是这个问题也被称为<a href="https://en.wikipedia.org/wiki/Year_2038_problem"> 2038 年问题</a>，和著名的 <a href="https://en.wikipedia.org/wiki/Year_2000_problem">2000 年问题(千年虫问题)</a>是类似的。</p> 
<p>那么解决问题的方法很简单，只要把负责存储时间的 <code>time_t</code> 由 32 位改为 64 位就可以了。现在所有的 iPhone, Mac 基本都是 64 位的，理论上不应该再有这个问题了。</p> 
<p>但是我运行<code>sysctl -w hw.epoch</code>结果却是 0.</p> 
<pre><code>➜  darwin-xnu git:(master) sysctl -w hw.epoch
hw.epoch: 0
</code></pre> 
<p>这就很费解了。</p> 
<h2>三、看看源码吧</h2> 
<p>既然注释信息量太少，那我们看看源码如何？好在 <a href="https://github.com/apple/darwin-xnu">darwin-xnu</a> 是开源的，我们 clone 下来看看 <code>sysctl()</code> 的实现。</p> 
<p>这份内核的代码是用 C 语言所写，使用了大量的宏。以我对 darwin 那浅薄的理解，读起来非常费劲。比如说 <code>sys/sysctl.h</code> 文件里定义了以下函数:</p> 
<pre><code>int sysctl(int *, u_int, void *, size_t *, void *, size_t);
</code></pre> 
<p>在不同的架构上(i386/arm/arm64)各有一个 <code>sysctl.c</code> 文件，但是全都没有 <code>sysctl()</code> 函数的实现。</p> 
<p>通过阅读头文件和宏的定义，我大致能理解类似 <code>SYSCTL_PROC</code> 和 <code>SYSCTL_INT</code> 是生成 <code>oid</code> 然后写入 <code>mib</code>。由此系统的 <code>sysctl</code> 就可以根据注册好的 key 来获取对应的硬件数据。我也在 <code>kern_newsysctl.c</code> 里找到了一个 <code>sysctl()</code> 函数的实现，但是它接受三个参数而不是上面定义的五个，而且格式也不一样:</p> 
<pre><code>int
sysctl(proc_t p, struct sysctl_args *uap, __unused int32_t *retval)
</code></pre> 
<p>于是我在遍寻 <code>sysctl</code> 文档无果的情况下，想到不如看看 <code>FreeBSD</code> 的代码里面是否有这个函数的实现。还真就在 <code>lib/libc/gen/sysctl.c</code> 里找到一个完全符合的函数实现:</p> 
<pre><code>int
sysctl(const int *name, u_int namelen, void *oldp, size_t *oldlenp,
    const void *newp, size_t newlen)
</code></pre> 
<p>该函数先调用 <code>__sysctl()</code> 看看是否能找到动态注册的 key-value，如果找得到并且不属于 <code>CTL_USER</code> 命名下的，就直接返回，否则用 switch-case 处理 <code>CTL_USER</code> 的值。</p> 
<p>但是 <code>__sysctl()</code> 函数用了 <code>extern</code> 关键字修饰:</p> 
<pre><code>extern int __sysctl(const int *name, u_int namelen, void *oldp,
    size_t *oldlenp, const void *newp, size_t newlen);
</code></pre> 
<p>并且我还是没有找到 <code>__sysctl()</code> 的具体实现，于是猜测可能是写进了宏里，拼接后注册到 mib (Management Infomation Base，简单理解为存储了一大堆叫做 oid 的键值对的文件格式即可)里面。</p> 
<p>darwin-xnu 的 <code>bsd/dev/i386/sysctl.c</code> 里倒是有这样的定义:</p> 
<pre><code>static int
_i386_cpu_info SYSCTL_HANDLER_ARGS
</code><p><code>#define SYSCTL_HANDLER_ARGS (struct sysctl_oid *oidp, void *arg1, int arg2, <br /> struct sysctl_req *req)<br /> </code></p></pre>
<p></p> 
<p>但是却没有定义 <code>_i386_cpu_info</code> 是什么，所以我只能猜测是编译时针对不同的平台会把类似 <code>_i386_cpu_info</code> 这样的东西展开成别的东西。但是我没有证据，于是寻找 <code>sysctl()</code> 函数实现就无果了。</p> 
<p>但是在 darwin-xnu 和 FreeBSD 两个项目中都有 <code>kern_mib.c</code> 文件。这倒是可以用来解释系统内核如何在初始化的时候把硬件信息存储起来以备查询。根据 FreeBSD 的<a href="https://wiki.freebsd.org/AlfonsoSiciliano/sysctlmibinfo#Userspace_mib_entry">这个文档</a>，所有的 sysctl 信息都存储在一个 mib entry tree 中，每条信息就是一个 mib entry。一个 mib entry 就是</p> 
<pre><code>{
    int *id 
    size_t idlevel
}
</code></pre> 
<p>其中 <code>idlevel</code> 是 1 到 SYSCTLMIF_MAXIDLEVEL 之间。在 darwin 的 <code>bsd/kern/kern_mib.c</code> 文件中，有这样一个定义:</p> 
<pre><code>SYSCTL_PROC(_hw, HW_EPOCH,        epoch, CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MASKED | CTLFLAG_LOCKED, 0, HW_EPOCH, sysctl_hw_generic, "I", "");
</code></pre> 
<p>其中 <code>SYSCTL_PROC</code> 定义如下:</p> 
<pre><code>#define SYSCTL_PROC(parent, nbr, name, access, ptr, arg, handler, fmt, descr) \
    SYSCTL_OID(parent, nbr, name, access, \
        ptr, arg, handler, fmt, descr)
<p>/* This constructs a "raw" MIB oid. */<br /> #define SYSCTL_STRUCT_INIT(parent, nbr, name, kind, a1, a2, handler, fmt, descr) <br /> { <br /> &amp;sysctl_##parent##_children, { 0 }, <br /> nbr, (int)(kind|CTLFLAG_OID2), a1, (int)(a2), #name, handler, fmt, descr, SYSCTL_OID_VERSION, 0 <br /> }</p>
</code><p><code>#define SYSCTL_OID(parent, nbr, name, kind, a1, a2, handler, fmt, descr) <br /> struct sysctl_oid sysctl_##parent##<em>##name = SYSCTL_STRUCT_INIT(parent, nbr, name, kind, a1, a2, handler, fmt, descr); <br /> SYSCTL_LINKER_SET_ENTRY(_<em>sysctl_set, sysctl</em>##parent##</em>##name)<br /> </code></p></pre>
<p></p> 
<p>最为关键的地方就是 <code>SYSCTL_OID</code> 这个宏，生成了一个 <code>sysctl_oid</code> 结构体:</p> 
<pre><code>struct sysctl_oid {
    struct sysctl_oid_list *oid_parent;
    SLIST_ENTRY(sysctl_oid) oid_link;
    int     oid_number;
    int     oid_kind;
    void        *oid_arg1;
    int     oid_arg2;
    const char  *oid_name;
    int         (*oid_handler) SYSCTL_HANDLER_ARGS;
    const char  *oid_fmt;
    const char  *oid_descr; /* offsetof() field / long description */
    int     oid_version;
    int     oid_refcnt;
};
</code></pre> 
<table> 
 <thead> 
  <tr> 
   <th>参数</th> 
   <th>描述</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>parent</td> 
   <td>key 里的父级结构，比如 <code>hw.machine</code> 里的 <code>hw</code></td> 
  </tr> 
  <tr> 
   <td>nbr</td> 
   <td>ID，基本上只要填 <code>OID_AUTO</code> 就行，会自动生成一个</td> 
  </tr> 
  <tr> 
   <td>name</td> 
   <td>key 里的子项名，比如 <code>hw.machine</code> 里的 <code>machine</code></td> 
  </tr> 
  <tr> 
   <td>kind/access</td> 
   <td>CTLFLAG_， 有好几个可选。 <code>CTLFLAG_ANYBODY | CTLFLAG_MASKED | CTLFLAG_LOCKED | CTLFLAG_KERN | CTLFLAG_WR</code></td> 
  </tr> 
  <tr> 
   <td>a1, a2</td> 
   <td>传给 handler 的参数</td> 
  </tr> 
  <tr> 
   <td>format string</td> 
   <td>告诉 <code>sysctl</code> 工具要如何显示数据。</td> 
  </tr> 
 </tbody> 
</table> 
<p>创建好结构体之后，使用 <code>SYSCTL_LINKER_SET_ENTRY</code> 宏注册。这里的 linker set 技术是 darwin 独有的，FreeBSD 则是生成了 raw oid 之后使用 <code>DATA_SET()</code> 宏。</p> 
<p>关于 linker set 技术，<code>sysctl.h</code> 的注释如下:</p> 
<pre><code> * USE THIS instead of a hardwired number from the categories below
 * to get dynamically assigned sysctl entries using the linker-set
 * technology. This is the way nearly all new sysctl variables should
 * be implemented.
 *
 * e.g. SYSCTL_INT(_parent, OID_AUTO, name, CTLFLAG_RW, &amp;variable, 0, "");
 * Note that linker set technology will automatically register all nodes
 * declared like this on kernel initialization, UNLESS they are defined
 * in I/O-Kit. In this case, you have to call sysctl_register_oid()
 * manually - just like in a KEXT.
</code></pre> 
<p>也就是说，该文件里类似 <code>SYSCTL_INT</code> 定义的宏就会会在内核初始化的时候自动进行注册，I/O-Kit 里的除外，这种情况下可以用 <code>sysctl_register_oid()</code> 函数来主动注册。<code>SYSCTL_PROC</code> 跟 <code>SYSCTL_INT</code> 类似，只是定义的返回值不一样，后者返回 int 类型，前者则会调用自定义的 handler 函数来进行处理。而 <code>HW_EPOCH</code> 就是注册为了 <code>SYSCTL_PROC</code>。</p> 
<p>它的 handler 是 <code>sysctl_hw_generic()</code>，我们可以在 <code>kern_mib.c</code> 里找到它的实现：</p> 
<pre><code>static int
sysctl_hw_generic(__unused struct sysctl_oid *oidp, __unused void *arg1,
    int arg2, struct sysctl_req *req)
</code></pre> 
<p>基本上一通 switch-case 找到 <code>HW_EPOCH</code>:</p> 
<pre><code>case HW_EPOCH:
        epochTemp = PEGetPlatformEpoch();
    if (epochTemp == -1)
        return(EINVAL);
    return(SYSCTL_RETURN(req, epochTemp));
</code></pre> 
<p>但是非常遗憾，<code>PEGetPlatformEpoch()</code> 我只找到 <code>IOKit</code> 里 <code>IOPlatformExpert.cpp</code> 的实现:</p> 
<pre><code>int PEGetPlatformEpoch(void)
{
    if( gIOPlatform)
    return( gIOPlatform-&gt;getBootROMType());
    else
    return( -1 );
}
<p>long IOPlatformExpert::getBootROMType(void)<br /> {<br /> return _peBootROMType;<br /> }</p>
</code><p><code>void IOPlatformExpert::setBootROMType(long peBootROMType)<br /> {<br /> _peBootROMType = peBootROMType;<br /> }<br /> </code></p></pre>
<p></p> 
<p><code>kern_mib.c</code> 里面引用了 <code>#include &lt;IOKit/IOPlatformExpert.h&gt;</code> 所以应该就是调用的这个函数。<code>_peBootROMType</code> 作为 <code>IOPlatformExpert</code> 类的私有成员，初始化默认值为随机数。也就是说，如果不调用 <code>setBootROMType()</code> 那么它就不是 0。但是我搜索了一下没有地方用到 <code>setBootROMType()</code>，那只能说这个代码并没有在我能看到的开源的部分里面了。</p> 
<p>所以我这趟为了回答为什么 <code>hw.epoch</code> 为 0 的解谜之旅到这里就结束了。虽然我还是不知道为什么 <code>hw.epoch</code> 打印出来是 0 😂。因为在终端 <code>sysctl -a</code> 时，打印出来的列表已经不带 <code>hw.epoch</code> 了，但是如果用 <code>sysctl -w hw.epoch</code> 是可以显示结果的:</p> 
<pre><code>➜  darwin-xnu git:(master) sysctl -w hw.epoch
hw.epoch: 0
</code></pre> 
<p>虽然这个问题有点无聊，但是寻找谜底的过程中却阅读了一部分 BSD 内核的代码，了解了 Darwin 的大致组成部分，知道使用 <code>sysctl()</code> 函数取 <code>hw.machine</code> 这种看上去有点奇怪的 API 内部的实现。就像某位参与某编译器项目的朋友说的，"there's no magic"。即使是高大上的内核，只要愿意读也是可以理解的，就是真的比较难读下去而已。</p> 
<p>另外 <code>sysctl.h</code> 里有不少有用的 key 定义，做 iOS/Mac 开发的朋友们可以从这里面找找需要的东西，另外 IOKit 也有一些可插拔外设的信息。一般情况下我们开发 App 并不需要使用内核层的 API，但是如果上层 API 不够用的时候不妨到这一层来找找看。</p> 
<h2>内核系列文章</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/4057">macOS 内核之一个 App 如何运行起来</a></li> 
 <li><a href="https://justinyan.me/post/4040">macOS 内核之网络信息抓包(三)</a></li> 
 <li><a href="https://justinyan.me/post/4023">macOS 内核之网络信息抓包(二)</a></li> 
 <li><a href="https://justinyan.me/post/4009">macOS 内核之网络信息抓包(一)</a></li> 
 <li><a href="https://justinyan.me/post/3993">macOS 内核之系统如何启动？</a></li> 
 <li><a href="https://justinyan.me/post/3982">macOS 内核之内存占用信息</a></li> 
 <li><a href="https://justinyan.me/post/3972">macOS 内核之 CPU 占用率信息</a></li> 
 <li><a href="https://justinyan.me/post/3935">macOS 内核之 hw.epoch 是个什么东西？</a></li> 
 <li><a href="https://justinyan.me/post/3961">macOS 内核之从 I/O Kit 电量管理开始</a></li> 
</ul> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://en.wikipedia.org/wiki/XNU">XNU - Wikipedia</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/File:Diagram_of_Mac_OS_X_architecture.svg">File:Diagram of Mac OS X architecture.svg - Wikipedia</a></li> 
 <li><a href="https://www.cocoawithlove.com/blog/2016/03/08/swift-wrapper-for-sysctl.html">Gathering system information in Swift with sysctl</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Year_2038_problem">Year 2038 problem - Wikipedia</a></li> 
 <li><a href="https://github.com/apple/darwin-xnu">apple/darwin-xnu: The Darwin Kernel (mirror)</a></li> 
 <li><a href="https://github.com/freebsd/freebsd">freebsd/freebsd: FreeBSD src tree (read-only mirror)</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 16 &#x4E01;&#x5B87;&#xFF1A;&#x5728;&#x65E5;&#x672C;&#x5DE5;&#x4F5C;&#x548C;&#x751F;&#x6D3B;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;?</title>
        <link>https://justinyan.eth.limo/7619FA8B-36C2-44B0-9A7D-008688BD2F37/</link>
        <guid>https://justinyan.eth.limo/7619FA8B-36C2-44B0-9A7D-008688BD2F37/</guid>
        <pubDate>Mon, 14 Oct 2019 11:27:19 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/09/podcast-016.jpg" alt="Vol. 16 在日本工作和生活是一种什么样的体验" /></p> 
<ul> 
 <li>嘉宾: <a href="https://twitter.com/felixding">丁宇(@felixding)</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>中日两国自古有极深的渊源，文化相近，饮食相似。但是在许多生活细节上又大相径庭。其间差异，不在日本住上一段时间是很难体会的。</p> 
<p>本期节目我们邀请到在日本工作的<a href="https://twitter.com/felixding">丁宇(@felixding)</a>来聊聊旅居日本这段时间来的工作与生活的体会。</p> 
<p><strong>时间线</strong></p> 
<ul> 
 <li>0:10 开场</li> 
 <li>0:50 为什么选择到日本工作</li> 
 <li>3:44 日本的工作签证</li> 
 <li>4:57 Japan Foodie是一家什么公司</li> 
 <li>6:11 日本的移动支付现状</li> 
 <li>11:23 在日本租房的体验</li> 
 <li>19:00 中日软件与互联网行业之差异</li> 
 <li>22:42 在日本软件公司工作的体验</li> 
 <li>26:41 赴日旅客近年大增是否对当地人的生活有所影响？</li> 
 <li>31:57 历史上日本与中国的关系</li> 
 <li>44:30 日本人把工作视为非常非常重要的一件事情</li> 
 <li>49:23 灵魂三问</li> 
</ul> 
<p><em>P.S. 如果你对海外工作与生活的故事感兴趣的话，欢迎收听本播客第13期的节目:<a href="https://justinyan.me/post/3846">在新西兰做程序员是什么样的体验？——枫言枫语播客13期 | 枫言枫语</a></em></p> 
<h2>相关信息</h2> 
<ul> 
 <li>丁宇的微博: <a href="https://www.weibo.com/felixding">@丁宇FelixDing</a></li> 
 <li>丁宇的Twitter: <a href="https://twitter.com/felixding">@felixding</a></li> 
 <li>丁宇的主页: <a href="https://dingyu.me/">https://dingyu.me/</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li><a href="https://justinyan.me/post/3846">Vol. 13 在新西兰做程序员是什么样的体验？ | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/4666">Vol. 46 在硅谷工作和生活是一种什么样的体验 | 枫言枫语</a></li> 
</ul> 
<h3>节目收听方式</h3> 
<p>推荐使用苹果的Podcast App, OverCast, 安卓的Pocket Casts等泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓FM - 枫影JustinYan</a></li> 
 <li><a href="https://music.163.com/#/djradio?id=792181476">网易云音乐 - 枫言枫语播客</a></li> 
 <li><a href="https://himalaya.com/en/show/856006">Himalaya</a></li> 
 <li>微信小程序: 枫言枫语播客</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x6548;&#x7387;&#x7CFB;&#x5217; 07 (&#x756A;&#x5916;): Vim &#x7EDF;&#x5929;&#x4E0B;</title>
        <link>https://justinyan.eth.limo/DC2785B5-8E84-44D3-821E-2465BDA627EF/</link>
        <guid>https://justinyan.eth.limo/DC2785B5-8E84-44D3-821E-2465BDA627EF/</guid>
        <pubDate>Wed, 18 Sep 2019 19:08:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/09/macOS-07-squashed.jpg" alt="macOS 效率系列 07 (番外): Vim 统天下" /></p> 
<p>本文为《macOS 效率系列》的番外，我们来聊聊 Vim 编辑器及其衍生品的前世今生。</p> 
<p>但凡是程序员，无论前端、后台、客户端都应该使用过或者听说 <a href="https://www.vim.org/">Vim</a> 这款所谓“编辑器中的神器”。多年以来和它的竞争对手 <a href="https://www.gnu.org/software/emacs/">Emacs</a> 一直是经典引战话题。跟“PHP 是最好的语言”、“缩进用 Tab 还是空格”、“大括号要不要换行”之类的战争类似，常在程序员中被人提及。</p> 
<p>我没有用过 Emacs 所以本文只谈 Vim。和大多数现代的文本编辑器一诞生就支持 GUI 相反，Vim 是从终端开始的一个编辑器，虽然它也支持 GUI (gVim) 但是喜爱 Vim 用户大都在黑乎乎的命令行里使用它。</p> 
<h2>一、 Vim 编辑器的历史</h2> 
<h3>1. vi 出现</h3> 
<p>Vim 是 <a href="https://en.wikipedia.org/wiki/Vi">vi 编辑器</a>的加强版(Vi IMproved)，vi 是几乎所有的类 Unix 系统的标配文本编辑器。读者朋友们若使用过 Linux 操作系统，无论用哪一个发行版，基本都开箱自带 vi。</p> 
<p>vi 是一代神人 <a href="https://en.wikipedia.org/wiki/Bill_Joy">Bill Joy</a> 开发的，我们在 <a href="https://justinyan.me/post/3726">macOS 效率系列 02: 在终端 Terminal 中运键如飞</a> 提到 <code>csh</code> 也是他写的。关于这位 Sun 公司创始人的传奇故事还有很多，比如拒绝把 <a href="https://en.wikipedia.org/wiki/BBN_Technologies">BBN</a> 写的 TCP/IP 栈引入 Berkeley Unix 系统，因为他觉得 BBN 的版本太垃圾了，于是自己手搓了一个高性能版本。比如 2000 年他在 Wired 发表了《<a href="https://www.wired.com/2000/04/joy-2/">Why the Future Doesn't Need Us | WIRED</a>》，里面提到未来的人工智能机器人，转基因技术和抗生素滥用等人类的科技发展对于整个地球生态这个复杂系统可能造成的深远影响的担忧。有兴趣的读者朋友不妨读读看。</p> 
<p>在电子显示器出现以前，计算机使用打字机来进行人机交互。当时流行的文本编辑器都是所谓的"行编辑器(<a href="https://en.wikipedia.org/wiki/Line_editor">line editor</a>)"。你通过键盘输入一行命令，然后计算机通过打印机把内容打印到纸上。所以你不可能实时看到所有文本内容，不然刷一下纸张就都打没了。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/09/WACsOperateTeletype.jpg" alt="靠打印机交互的计算机" /></p> 
<p>1970 年代贝尔实验室(Bell Labs)发行的 Unix 系统自带的文本编辑器叫做 ed，也是一个行编辑器，非常不友好。于是来自伦敦玛丽女王大学(<a href="https://www.qmul.ac.uk/">Queen Mary University of London</a>)的 George Coulouris 改进了一下写了个改进版叫做 em。</p> 
<p>他到伯克利大学的时候给很多人演示了这个编辑器。Bill 对这个东西非常感兴趣，于是要来了代码(装在一个磁带里)，和同学 Chuck Haley 一起写了个 em 的改进版叫做 en，然后又拓展了 en 成了 <a href="https://en.wikipedia.org/wiki/Ex_(text_editor)">ex(EXtended)</a>。再后来电子显示器开始出现了，Bill 给自己的 ex 编辑写了个全屏版，于是就有了 vi。</p> 
<p>现在 Vi 和 Vim 里还保留了 ex 模式，输入 <code>:</code> 就是 ex 模式。常见的命令比如:</p> 
<pre><code>:1,2 p // 打印 1-2 行的内容
:1,2 d // 删除 1-2 行的内容
:1,2 m 12 // 把 1-2 行移动到 12 行下面
:1,2 co 12 // 把 1-2 行的内容复制并粘贴到 12 行下面
:= // 显示总行数
</code></pre> 
<p>显然这些命令都是为了打印机交互而设计的。</p> 
<p>Bill 在开发 vi 的时候使用的是 Lear Siegler 公司的 ADM-3A 终端。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/09/440px-Adm3aimage.jpg" alt="ADM-3A" /></p> 
<p>他的键盘布局长这样:</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/09/880px-KB_Terminal_ADM3A.svg_.png" alt="ADM-3A Keyboard Layout" /></p> 
<p>看到这里大家应该就能明白为什么 Vim 的键盘设计是 hjkl 为左下上右了，以及为什么 Esc 键那么常用了。按照 ADM-3A 这么紧凑的键盘布局，基本上双手不需要过多移动就能完成大部分工作。</p> 
<p>题外：那么为什么现在常用的键盘用是 Tab 键取代了 Esc 键的位置呢？那是因为大 <a href="https://en.wikipedia.org/wiki/IBM_PC_keyboard">IBM</a> 崛起了 XD</p> 
<h3>2. Vim</h3> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/09/Vimlogo.jpg" alt="Vim" /></p> 
<p>vi 流行起来以后大家都想用这个编辑器，但当时 ex 和 vi 都是 AT&amp;T 的知识产权。如果想在 Unix 以外的平台使用 vi 你就得自己 clone 下来改一波。于是在这期间出现 vi 的许多个衍生版:</p> 
<ul> 
 <li>nvi - 1980 for 4BSD</li> 
 <li>calvin - 1987 for DOS</li> 
 <li>vile - 1990 for DOS</li> 
 <li>stevie - 1987 for Atari ST</li> 
 <li>elvis - 1990 for Minix and 386BSD</li> 
 <li>vim - 1991 for Amiga</li> 
 <li>viper - 1995 for Emacs</li> 
 <li>elwin - 1995 for Windows</li> 
 <li>lemmy - 2002 for Windows</li> 
</ul> 
<p>1988 年来自荷兰的程序员 Bram Moolenaar 为了在 Amiga 机器上(Commodore International 公司生产的机器。这家公司1954 年成立，曾开发过全球最畅销的台式电脑 Commodore 64，后来在 1994 年破产。)使用 vi 自己移植了一个版本，叫做"Vi IMitation"。直译成中文就是 Vi 的模仿版。后来改名为"Vi IMproved"也就是 Vi 的改进版，移植到了许多其他平台。当时 Vi 在 Unix 平台还是非常受欢迎的编辑器，大家对 Vim 心存疑虑，不知道它的质量是否真的称得上 Vi "改进版"。直到 1992 年 Vim 首次在 Unix 平台发布后迅速蹿升为最流行的文本编辑器。</p> 
<p>Vim 项目至今仍在活跃迭代，截止本文发布之日，Vim 最新的版本为 8.1.2052。</p> 
<table> 
 <thead> 
  <tr> 
   <th>时间</th> 
   <th>版本特性</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>1991 Nov 2</td> 
   <td>Vim 1.14: First release (on Fred Fish disk #591).</td> 
  </tr> 
  <tr> 
   <td>1992</td> 
   <td>Vim 1.22: Port to Unix. Vim now competes with Vi.</td> 
  </tr> 
  <tr> 
   <td>1994 Aug 12</td> 
   <td>Vim 3.0: Support for multiple buffers and windows.</td> 
  </tr> 
  <tr> 
   <td>1996 May 29</td> 
   <td>Vim 4.0: Graphical User Interface (largely by Robert Webb).</td> 
  </tr> 
  <tr> 
   <td>1998 Feb 19</td> 
   <td>Vim 5.0: Syntax coloring/highlighting.</td> 
  </tr> 
  <tr> 
   <td>2001 Sep 26</td> 
   <td>Vim 6.0: Folding, plugins, vertical split.</td> 
  </tr> 
  <tr> 
   <td>2006 May 8</td> 
   <td>Vim 7.0: Spell check, omni completion, undo branches, tabs.</td> 
  </tr> 
  <tr> 
   <td>2016 Sep 12</td> 
   <td>Vim 8.0: Jobs, async I/O, native packages.</td> 
  </tr> 
 </tbody> 
</table> 
<h2>二、什么人需要学习 Vim</h2> 
<p>一直以来 Vim 项目都以跨平台的目标在编写，所以代码非常容易被移植。造成的结果就是目前你可以在几乎所有平台上使用 Vim。</p> 
<p>从 Vi 到 Vim 我们可以看到这个编辑器有极重的历史痕迹。像是全键盘操作，Terminal Style 的 UI 之类的。对于已经习惯了鼠标操作的现代用户来说，Vim 的学习门槛确实比较高。但是入门以后可以在全平台轻松使用这个优点还是很棒的。</p> 
<p>作为一个程序员，除非是纯粹面向 Windows 生态并且不做也不需要了解任何服务器相关开发的人，否则几乎绕不开"终端"这个东西。我相信一个好的程序员不可能没用过终端命令行。</p> 
<p>当你设置一台新的服务器时，常见的选择是用 Linux 系统，远程 SSH 登录操作，就算使用 Docker，你也得先配置好 Docker 环境。</p> 
<p>当你使用 macOS 系统的时候，GUI 可以满足日常轻量任务，但是跑个脚本自动化，跑个 git 代码管理什么的还是终端更加高效。</p> 
<p>而只要你在终端使用文本编辑器，基本就会遇到 Vim。学会 Vim 可以一招鲜吃遍天。这大概是学习 Vim 最大的好处。</p> 
<p>至于用 Vim 来取代 IDE 进行工程项目我倒觉得不一定合适。许多现代编辑器和 IDE 都设计得非常优秀，可以帮我们节省大量的时间。iOS 和 Android 开发需要用 Xcode 和 Android Studio 有其特殊性且不提，Sublime Text，Visual Studio Code 都有非常实用的 UI 功能和丰富的插件库。通过鼠标和键盘结合，也能非常高效地完成任务，同时入门的难度也变得很低。</p> 
<p>所以虽然日常工作已不再依赖 Vim 编辑器了，但是学习实用 Vim 依然能帮助我们在多种系统间无缝切换。Vim 的键位设计也让用户双手无需离开基本位置就能完全所有任务，这点让许多追求高效的用户十分着迷。于是就有了很多 Vim-like 的插件。</p> 
<h2>三、Vim-like</h2> 
<p>Sublime Text, Visual Studio Code, Xcode 之类的编辑器都有 Vim 操作的插件。可以说只要是个主流编辑器都有人给他加了个 Vim 模式。</p> 
<p>不仅编辑器，浏览器也有许多 Vim 的忠实粉丝。比如早在 IE 6 还统治这个世界的时候，Firefox 强大的插件系统就催生了一个非常厉害的项目，叫做 <a href="http://vimperator.org/">Vimperator</a>。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/09/vimperator_completions.png" alt="Vimperator" /></p> 
<p>当时 Chrome 尚未崛起，Firefox 的插件能力还很强大，允许用户把浏览器改成千奇百怪的形态。再结合 Stylish 自定义浏览器的样式，可以实现没有标题栏，没有搜索框，没有 Tab，只有地址栏的全屏体验。使用全键盘操作，无需鼠标参与，受到一众 Geek 的喜爱。</p> 
<p>后来 Chrome 开始版本号大战之后，无需 Reload 的插件系统，极其迅速的启动、浏览体验把 Firefox 一举击垮。Firefox 也在版本号大战开始后不久，把插件系统改成类似 Chrome 的开发者友好向，同时也丧失了更加强大的自定义性。</p> 
<p>期间 Vimperator 项目团队还因为意见分歧，分裂出了 <a href="https://github.com/tridactyl/tridactyl">Tridactyl</a> 项目。Vimperator 在 Firefox 大幅修改插件系统之后宣告结束。Tridactyl 目前还活着，不过我早已转投 Chrome 阵营，没再使用过 Firefox 了。</p> 
<p>Chrome 上自然也有类似的插件比如: <a href="https://vimium.github.io/">Vimium</a>。但是由于 Chrome 插件的设计，这东西必须等到网页加载完后才能加载自己的逻辑，所以加载过程中你无法使用 hjkl 来滚动页面。同时 Chrome 插件的能力也相当有限，以前 Vimperator 可以通过 <code>:</code> 命令模式对整个浏览器进行各种操作，可以使用 <code>/</code> 进行当前页面搜索并对可点击区域弹出数字标签然后模拟鼠标点击等等。</p> 
<p>介绍如何使用这些类 Vim 体验的插件的文章很多，本文不再赘述，有兴趣的读者朋友可以自行 Google 尝试:</p> 
<ul> 
 <li>Xcode 的 XVim 插件: <a href="https://github.com/XVimProject/XVim">XVimProject/XVim: Xcode plugin for Vim keybindings</a></li> 
 <li>Visual Studio Code 的 Vim 插件: <a href="https://github.com/VSCodeVim/Vim">VSCodeVim/Vim: Vim for Visual Studio Code</a></li> 
 <li>Firefox 的 Vim 插件: <a href="https://github.com/tridactyl/tridactyl">Tridactyl</a></li> 
 <li>Chrome 的 Vim 插件: <a href="https://vimium.github.io/">Vimium</a></li> 
</ul> 
<p>Vim-like 软件还有很多，程序员圈子对 Vim 的热情不减，除了情怀，更多是因为其高效的特性。丰富的插件系统和同样丰富的插件管理器，可以自由 <code>map</code> 的快捷键设置，可以在多个系统共享的 <code>.vimrc</code> 配置文件，以及开源，这些非常 geek 的特质让 Vim 成为程序员们心之向往的一代神器。</p> 
<p><em>P.S. 感谢 <a href="https://twitter.com/RoCry">@RoCry</a>, @Jake 以及许多小伙伴在过去岁月中的推荐与交流，macOS 效率系列中提到的许多工具都来自和朋友们的交流与讨论</em></p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://en.wikipedia.org/wiki/Bill_Joy">Bill Joy - Wikipedia</a></li> 
 <li><a href="https://www.zhihu.com/question/19906424">关于比尔·乔伊（Bill Joy），有哪些有趣的故事？ - 知乎</a></li> 
 <li><a href="https://my.oschina.net/alphajay/blog/56286">vim的ex模式介绍 - AlphaJay的个人空间 - OSCHINA</a></li> 
 <li><a href="https://begriffs.com/posts/2019-07-19-history-use-vim.html">History and effective use of Vim</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/Bram_Moolenaar">Bram Moolenaar - Wikipedia</a></li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/3914">macOS 效率系列 07 (番外): Vim 统天下 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3815">macOS 效率系列 06: 眼观六路，方能运筹帷幄 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3796">macOS 效率系列 05: 能让机器做的事情就不要自己动手 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3776">macOS 效率系列 04: 快捷键是所有人的必修课 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3770">macOS 效率系列 03: 全键盘操作的快捷入口 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3726">macOS 效率系列 02: 在终端 Terminal 中运键如飞 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3712">macOS 效率系列 01: 窗口管理 | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 15 &#x4ECE; 2019 &#x82F9;&#x679C;&#x79CB;&#x5B63;&#x53D1;&#x5E03;&#x4F1A;&#x804A;&#x8D77;</title>
        <link>https://justinyan.eth.limo/5B76699F-28EA-407A-8DCF-CF3FBD688186/</link>
        <guid>https://justinyan.eth.limo/5B76699F-28EA-407A-8DCF-CF3FBD688186/</guid>
        <pubDate>Wed, 11 Sep 2019 21:11:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/09/podcast-015.jpg" alt="Vol. 15 从 2019 苹果秋季发布会聊起" /></p> 
<ul> 
 <li>嘉宾: <a href="https://www.weibo.com/hzlzh">自力(微博 @hzlzh)</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>今天凌晨(2019-09-11) 1 点，苹果在 Steve Jobs Theater 举办了秋季发布会，发布了包括 Apple Watch 5, iPhone 11, iPhone 11 Pro, iPhone 11 Pro Max 的多款硬件产品。</p> 
<p>发布会结束后网上很多人说这届苹果又没有创新啦什么的。</p> 
<p>今天我邀请了本播客的老朋友自力(@hzlzh)，从 2019 苹果秋季发布会聊起，谈天说地。</p> 
<p><em>P.S. 节目中提到的系统相机拍摄新交互名为 QuickTake</em><br /> <em>P.S. 节目中提到的 Arcade 发音为 /ɑr'ked/ 或 /ɑː'keɪd/ 😂</em><br /> <em>P.S. 经听友提醒，海王和马王是同一个演员 Jason Momoa</em></p> 
<h2>相关信息</h2> 
<ul> 
 <li>自力的微博: <a href="https://www.weibo.com/hzlzh">@hzlzh</a></li> 
 <li>自力的 Twitter: <a href="https://twitter.com/hzlzh">@hzlzh</a></li> 
 <li>MacTips 知乎专栏: <a href="https://zhuanlan.zhihu.com/MacTips">https://zhuanlan.zhihu.com/MacTips</a></li> 
 <li>MacTips 微信公众号: <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/09/mactips-qrcode.jpg" width="320" /></p> </li> 
 <li> <p>苹果原创剧《See》预告片: <a href="https://www.apple.com/apple-tv-plus">https://www.apple.com/apple-tv-plus</a></p> </li> 
 <li>结尾曲: Taylor Swift - I Forgot That You Existed</li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<h3>节目收听方式</h3> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="https://music.163.com/#/djradio?id=792181476">网易云音乐 - 枫言枫语播客</a></li> 
 <li><a href="https://himalaya.com/en/show/856006">Himalaya</a></li> 
 <li>微信小程序已下架</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 14 Price Tag &#x7684;&#x521B;&#x4E1A;&#x6545;&#x4E8B;</title>
        <link>https://justinyan.eth.limo/4F297620-0784-4CFB-9B54-5C4440308272/</link>
        <guid>https://justinyan.eth.limo/4F297620-0784-4CFB-9B54-5C4440308272/</guid>
        <pubDate>Mon, 02 Sep 2019 09:30:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/09/podcast-014-squashed.jpg" alt="Vol. 14 Price Tag 的创业故事" /></p> 
<ul> 
 <li>嘉宾: <a href="https://www.weibo.com/liuyi0922">61 (微博 @im61)</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>在<a href="https://justinyan.me/post/3846">上一期节目</a>我们聊到移民就像围城，有些人想移民出去，而移民出去的人又有些想回来。在大公司当社畜也是一样的道理，很多人想尽办法要到大公司上班，而在大公司的人又想着要出去创业。</p> 
<p>今天邀请到我们节目的是杭州谜底科技的 <a href="https://www.weibo.com/liuyi0922">61</a>，<a href="https://weibo.com/u/6087949803">PriceTag 应用推荐</a>就是他们运营的。谜底科技的团队很小，目前只有 4 个人，但是他们做了非常非常多的事情，实在令人佩服。61 在开始创业生涯之前也在大公司当过程序员，Price Tag 这个项目是他二次创业了。</p> 
<p>创业的过程既有追求自由的满足，也有举步维艰的困苦。</p> 
<p>让我们一起听听 Price Tag 的创业故事。</p> 
<h2>相关信息</h2> 
<ul> 
 <li>Price Tag 官方淘宝店: <a href="https://ptpt.taobao.com/">https://ptpt.taobao.com</a></li> 
 <li>61 的微博: <a href="https://www.weibo.com/liuyi0922">@im61</a></li> 
 <li>61 的 Twitter: <a href="https://twitter.com/liuyi0922">@liuyi0922</a></li> 
 <li>谜底科技官网: <a href="http://www.miidii.tech/">http://www.miidii.tech</a></li> 
 <li>Design+Code: <a href="https://designcode.io/">https://designcode.io</a></li> 
 <li>结尾曲: Psycho Killer - Talking Heads</li> 
 <li><a href="http://indiehacker.im/chuang-zao-xing-shi-xue-xi-gei-wo-dai-lai-zui-d-85981bbe">Just Focus for iOS 的 PriceTag 的开发者访谈</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<h3>节目收听方式</h3> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="https://music.163.com/#/djradio?id=792181476">网易云音乐 - 枫言枫语播客</a></li> 
 <li><a href="https://himalaya.com/en/show/856006">Himalaya</a></li> 
 <li>微信小程序: 枫言枫语播客</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 13 &#x8427;&#x5BB8;&#x5B87;&#xFF1A;&#x5728;&#x65B0;&#x897F;&#x5170;&#x505A;&#x7A0B;&#x5E8F;&#x5458;&#x662F;&#x4EC0;&#x4E48;&#x4F53;&#x9A8C;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/622EEF73-B38E-4826-82BF-15504583CE8F/</link>
        <guid>https://justinyan.eth.limo/622EEF73-B38E-4826-82BF-15504583CE8F/</guid>
        <pubDate>Mon, 26 Aug 2019 11:18:48 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/09/podcast-013-squashed.jpg" alt="Vol. 13 在新西兰做程序员是什么样的体验？" /></p> 
<ul> 
 <li>嘉宾: <a href="https://iiiyu.com/">萧宸宇 (iiiyu)</a></li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>这几年经常有朋友到海外去留学、工作和生活，不同的国家有不同的文化和风景。今天邀请到我们节目的是<a href="https://iiiyu.com/">萧宸宇 (iiiyu)</a>，一位曾经在国内工作后来移民新西兰的程序员。</p> 
<p>移民的过程有幸运的时候也有糟心时候，让我们一起来听听他的移民故事吧。</p> 
<p><em>PS: 节目中嘉宾的推荐曲目是《白日梦蓝》后更正为《火车驶向云外，梦安魂于九霄》</em></p> 
<h2>相关信息</h2> 
<ul> 
 <li>萧宸宇的博客: <a href="https://iiiyu.com/">https://iiiyu.com/</a></li> 
 <li>萧宸宇的 Twitter: <a href="https://twitter.com/iyunsn">https://twitter.com/iyunsn</a></li> 
 <li>结尾曲: 刺猬乐队 – 火车驶向云外，梦安魂于九霄(大家可以在各大音乐平台收听非 Live 版)</li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li><a href="https://justinyan.me/post/3927">Vol. 16 在日本工作和生活是一种什么样的体验 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/4666">Vol. 46 在硅谷工作和生活是一种什么样的体验 | 枫言枫语</a></li> 
</ul> 
<h3>节目收听方式</h3> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="https://music.163.com/#/djradio?id=792181476">网易云音乐 - 枫言枫语播客</a></li> 
 <li><a href="https://himalaya.com/en/show/856006">Himalaya</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 12 &#x201C;&#x5269;&#x4E0B;&#x559D;&#x5496;&#x5561;&#x7684;&#x4EBA;&#x201D;</title>
        <link>https://justinyan.eth.limo/8FE1B651-FF16-42FA-BEE1-8479A773B1E7/</link>
        <guid>https://justinyan.eth.limo/8FE1B651-FF16-42FA-BEE1-8479A773B1E7/</guid>
        <pubDate>Wed, 21 Aug 2019 12:23:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/09/podcast-012-02-squashed.jpg" alt="Vol. 12 “剩下喝咖啡的人”" /></p> 
<ul> 
 <li>嘉宾: 黄不了(6 号咖啡)</li> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<p>T.i.T 创意园有一家非常赞的小小咖啡店，在她刚开业的时候本节目<a href="http://justinyan.me/post/3429">第四期</a>的嘉宾 <a href="https://twitter.com/designedbyclu">Clu</a> 就在 IG 跟我说这家店很棒。于是我很快就被圈粉了。过去几个月的时间里，我几乎每天都过来买咖啡。</p> 
<p>店里好看的咖啡师 Tia 小姐姐给我们介绍了各种不同的豆子，有来自荷兰 <a href="https://keencoffee.com/">Keen Coffee</a> 的，来自日本的我已经忘记是什么类型的豆子，还有来自上海 T12 Lab 的 SOE 豆子，这款是我每天必喝的咖啡。</p> 
<p>今天非常开心邀请到了这家店的老板黄不了到我们节目来聊天。在 T.i.T 创意园的这家是第二分店，他们最早是在广州的北京路那里开了一家网红店，名为“6 号咖啡”。</p> 
<p>让我们一起来听听“6 号咖啡”的故事吧。</p> 
<h2>相关信息：</h2> 
<ul> 
 <li>结尾曲: 清醒乐队 – 好极了！？</li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li>新的录音设备来自<a href="https://www.etw.fm/articles/-equipment-">声东击西同款</a></li> 
</ul> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/podcast-012-equipment.jpg" alt="录音设备" /></p> 
<h3>节目收听方式</h3> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://himalaya.com/en/show/856006">Himalaya</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="https://music.163.com/#/djradio?id=792181476">网易云音乐 - 枫言枫语播客</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x6548;&#x7387;&#x7CFB;&#x5217; 06: &#x773C;&#x89C2;&#x516D;&#x8DEF;&#xFF0C;&#x65B9;&#x80FD;&#x8FD0;&#x7B79;&#x5E37;&#x5E44;</title>
        <link>https://justinyan.eth.limo/2004984B-4DB1-4791-A295-D24502FE48B4/</link>
        <guid>https://justinyan.eth.limo/2004984B-4DB1-4791-A295-D24502FE48B4/</guid>
        <pubDate>Thu, 15 Aug 2019 11:00:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-06-cover.jpg" alt="" /></p> 
<p><em>欢迎大家留言或者邮件 <a href="mailto:justin@justinyan.me">justin@justinyan.me</a> 分享你喜欢的效率工具或者效率技巧。</em></p> 
<h2>〇、资源有限</h2> 
<p>我们每天使用计算机系统实际上是在调配和运用计算机资源，这些资源包括网络、CPU、内存、磁盘、能量(电池、电源)。资源永远是有限的，虽然现在计算机的运算能力已经很强大了，我们仍然会时不时遇到系统卡顿、卡死、网络不畅等问题。处理这些问题的方式通常是等待、观察，或者粗暴一点直接重启，非常浪费时间。</p> 
<p>今天我们来聊聊如何利用 macOS 及其生态中的 App，让我们时刻掌握 macOS 的核心资源状态。</p> 
<h2>一、Activity Monitor</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-activitymonitor-squashed.jpg" width="128" /></p> 
<p>Activity Monitor.app 最早在 Mac OS X v10.3 被引入 Mac 系统，当时是合并了旧版系统里的 Process Viewer 和 CPU Monitor。和隔壁家 Windows 通过 <code>ctrl+alt+delete</code> 唤出的 Task Manager 的功能类似，可以用于查看 CPU/Memory/Network/Engergy/Disk 等资源的占用情况。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-activity-monitor-squashed.jpg" alt="" /></p> 
<p>选中某个进程亦可进行关闭和查看详情操作。在 CPU Tab 下双击左下角的图像可以弹出详情窗口，用于查看 CPU 负载历史:</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-actitivy-cpu-squashed.jpg" alt="" /></p> 
<p>不过 Activity Monitor 提供的信息还不够清晰易读，于是 macOS 生态出现了很多优秀的 App 弥补这部分能力的不足。</p> 
<h2>二、iStat Menus</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-hero-combined.jpg" alt="" /></p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-hero-menubars.jpg" alt="" /></p> 
<p><a href="https://bjango.com/">bjango</a> 出品的 <a href="https://bjango.com/mac/istatmenus/">iStat Menus</a> 就是一个非常优秀的 App，可以常驻在 Menu Bar 上。</p> 
<p>当我们发现网络下载不符合预期的时候，只要瞥一眼 Menu Bar 上的实时网络速率就知道到底是网络挂了还是带宽被占满了。</p> 
<p>当我们用 Xcode 编译一个比较大的项目的时候，我们期望它能吃满 CPU 以节省时间。</p> 
<p>当我们在内网拷贝一个大文件的时候，我们既想知道磁盘的读写速率，也要看看网络带宽是否被占满。</p> 
<p>只有当我们掌握了这些信息，我们才知道现在 macOS 到底发生了什么事情，而不是遇到问题的时候一脸懵逼，重启解决一切问题。</p> 
<p>iStat Menus 是我自己在用的 App，也有一些其他的 App 可以替代部分功能，有兴趣的朋友可以自行 Google 一下。</p> 
<p>本效率系列提到的 App 都不是为了给他们打广告，而是希望通过介绍 App 广播一个思维方式，即：<strong>找到问题，找到解决问题的方法</strong>。工具是会一直进化的，但是发现问题和解决问题的思路是不变的。</p> 
<h2>三、Verbose Log</h2> 
<p>iStat Menus 可以解决资源层面的监控，但是当我们在终端里跑一些命令的时候，我们需要指导当前命令的详细日志。比如 <code>npm install</code> 要看看是不是被源科学了，<code>brew update</code> 一般时间很长要看看是不是中间挂了。</p> 
<p>这时候我们可以使用类 Unix 系统都有的一个标准参数来解决这个问题，即:</p> 
<pre><code>#--verbose 长命令
#-v 短命令
</code><p><code>brew update --verbose<br /> </code></p></pre>
<p></p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-verbose-squashed.jpg" alt="" /></p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-verbose-brew-squashed.jpg" alt="" /></p> 
<p>这个 <code>option</code> 是经常接触终端者的常识，不过根据我的观察，不清楚这个通用 <code>opt</code> 的人还是比较多的，遂记之。</p> 
<h2>四、Bartender</h2> 
<p><img decoding="async" src="https://www.macbartender.com/assets/img/B2Icon/icon_512x512@2x.png" width="128" /></p> 
<p>官网: <a href="https://www.macbartender.com">https://www.macbartender.com</a></p> 
<p>用上 iStat Menus 之后本就局促的 Menu Bar 变得更加拥挤了，这时候我们需要用 Bartender 来管理整个 Menu Bar 上的所有 icon。</p> 
<p>使用这个 App 我们可以按住 <code>cmd</code> + 鼠标左键来移动 icon 的位置，还可以把不常用的 icon 隐藏起来。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-bartender-squashed.jpg" alt="" /></p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-bartender-hidden-squashed.jpg" alt="" /></p> 
<p>当这些被隐藏起来的 icon 有变更的时候，比如说 <code>Dropbox</code> 变成了 loading 状态，它就会临时放到常用列表中展示一下，loading 结束后又会进入隐藏列表。</p> 
<p>对于屏幕不大的 MacBook 来说比较有用。</p> 
<h2>五、磁盘空间管理</h2> 
<p>现在媒体文件随便上个 4K 就是几十 GB 的空间占用，如果读者朋友使用相机拍照拍视频的话，很容易我们的机器就被大文件填满。这时候我们需要知道哪些文件占用了多少空间，使用 Mac 上最优秀的动画 App - <a href="https://cleanmymac.com/">CleanMyMac</a> 可以自动清理文件。不过他的价格太贵了，大概钱都用在打广告营销上了，完全不值得这个价格。如果读者朋友有使用 <a href="https://setapp.com">Setapp</a> 套餐的话可以用一下，如果没有我不太建议单独购买。</p> 
<p>事实上我们只需要知道磁盘上的空间被谁占用得比较多，找到对应的位置，判断一下文件是否可以删除然后清理一下就行。在终端使用 <code>du</code> 命令我们可以递归查看任意文件夹及其子目录的空间占用情况，不过 UI 上不太友好。</p> 
<p>使用 <a href="https://daisydiskapp.com/">Daisy Disk</a> 可以用比较优雅的饼图来展示空间占用情况:</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-daisydisk-01-squashed.jpg" alt="" /></p> 
<p>Trial 版无需付费，但不能拖拽删除，启动 App 时需要等待几十秒。不过反正打开这个 App 的频率很少，删除通过终端执行就行了，所以我一直用着 Trial 版本(这样不对🤦‍♂️😂)。</p> 
<h2>六、顺带介绍一下 Setapp</h2> 
<p><a href="https://setapp.com/">Setapp</a> 是一个订阅服务，付费后可以在会员周期内免费下载和更新仓库里的 App。包括 iStat Menus, CleanMyMac X, Base, BetterTouchTool, CodeRunner, Ulysses 等多款知名的高价 App 都在上面。通过 Stack Social 上常年打折的 Bundle 购买非常划算: <a href="https://stacksocial.com/sales/setapp-1-yr-subscription">https://stacksocial.com/sales/setapp-1-yr-subscription</a>(不过目前好像 sold out 了，可以留意一下黑五之类的营销活动，一次买几年。)</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://support.apple.com/en-hk/HT201464">How to use Activity Monitor on your Mac - Apple Support</a></li> 
 <li><a href="https://macpaw.com/how-to/mac-task-manager">Activity Monitor: The Mac Task Manager — Control+Alt+Delete on Mac</a></li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/3914">macOS 效率系列 07 (番外): Vim 统天下 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3815">macOS 效率系列 06: 眼观六路，方能运筹帷幄 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3796">macOS 效率系列 05: 能让机器做的事情就不要自己动手 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3776">macOS 效率系列 04: 快捷键是所有人的必修课 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3770">macOS 效率系列 03: 全键盘操作的快捷入口 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3726">macOS 效率系列 02: 在终端 Terminal 中运键如飞 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3712">macOS 效率系列 01: 窗口管理 | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x6548;&#x7387;&#x7CFB;&#x5217; 05: &#x80FD;&#x8BA9;&#x673A;&#x5668;&#x505A;&#x7684;&#x4E8B;&#x60C5;&#x5C31;&#x4E0D;&#x8981;&#x81EA;&#x5DF1;&#x52A8;&#x624B;</title>
        <link>https://justinyan.eth.limo/BCB09FE2-4BDD-4157-AAF7-9A202B870166/</link>
        <guid>https://justinyan.eth.limo/BCB09FE2-4BDD-4157-AAF7-9A202B870166/</guid>
        <pubDate>Wed, 14 Aug 2019 13:33:35 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-cover.jpg" alt="" /></p> 
<p><em>欢迎大家留言或者邮件 <a href="mailto:justin@justinyan.me">justin@justinyan.me</a> 分享你喜欢的效率工具或者效率技巧。</em></p> 
<h2>〇、能让机器做的事情就不要自己动手</h2> 
<p>在 <a href="http://justinyan.me/post/3712">macOS 效率系i列 01: 窗口管理 | 枫言枫语</a> 我们简单介绍过 <a href="http://www.hammerspoon.org/">Hammerspoon</a> 这个 App，它可以用来做窗口管理，且已经有许多人编写了自己的窗口管理脚本，只需下载使用即可。</p> 
<p>当时我们亦提过，这个东西是一个自动化工具，它能做的事情非常多，不仅仅用于窗口管理。</p> 
<p>本系列此前的文章已经介绍过，使用 Alfred 之类的效率工具可以节省大量重复的机械劳动，但是每个工具的设计都是有针对性的。Alfred 也有它不太擅长的场景，比如说它的 UI 完全集中在输入框内，并不适合比较复杂的交互和内容展示。虽然它也有 iTunes Mini Player 这样的 UI:</p> 
<p><img decoding="async" src="https://www.alfredapp.com/media/pages/home/control@2x.jpg" alt="" /></p> 
<p>但是我觉得并不好用。本着“能用机器做的事情就不要自己动手”的想法，今天我们来聊聊如何利用 macOS 上的自动化工具帮助我们自动完成一些相对复杂的工作。</p> 
<h2>一、Automator</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/Automator-squashed.jpg" width="128" /></p> 
<p>和我们在 <a href="http://justinyan.me/post/3770">macOS 效率系列 03: 全键盘操作的快捷入口</a> 提到的 Spotlight Feature 一样，同在 2004 年的 WWDC 上由乔布斯首次介绍了 Automator 这个 App(<a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/hQm7Xr9jY0w" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>&amp;t=3324s"&gt;Steve Jobs Keynote WWDC 2004 - YouTube</a> 从 1:24:23 开始)。</p> 
<p>我接触 macOS(OS X) 比较晚，第一次使用的是 OS X 10.6 Snow Leopard。Automator 已经存在好几年了，我第一次使用 Automator 是用来压缩设计师给我的视觉稿。当时 iPhone 4 发布大约一年左右，大家第一次接触 Retina Display，图片资源也需要用 @2x 来区分高清版本。</p> 
<p>设计师给我的视觉稿是 2x 大小，我嫌自己把每一张图都缩小太麻烦，即便全程使用快捷键也依然是大量的重复工作。所以用上 Automator 写了一个 Workflow，作为一个Service(现在叫做 Quick Actions 了) 存在 Finder 的 Services 菜单里。以后设计师给我发图我只要全选然后跑一遍 Service 就可以把 2x 图缩成 1x 图并且自带后缀重命名了。</p> 
<p>年代久远已经找不到当年写的自动化 Service 了，大概是类似这样的感觉：</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-automator-squashed.jpg" alt="" /></p> 
<p>可视化编程是 Automator 最大的特点，无需写代码背景，只要使用鼠标拖拽点击就可以操作 Finder, Photos 等多个系统 App。这个来自 Apple Script 团队的作品，把自 1993 年以来随 System 7 发布的 Apple Script 又向前推了一步。</p> 
<p>创建好的 Service 和 Workflow 都可以用文件的形式进行分享。不过，还有比 Automator 更好用的可视化编程 App。</p> 
<h2>二、Keyboard Maestro</h2> 
<p><img decoding="async" src="https://www.keyboardmaestro.com/img/v8-kmindex.jpg" alt="" /></p> 
<p>官网: <a href="https://www.keyboardmaestro.com/main/">https://www.keyboardmaestro.com/main/</a></p> 
<p>最早于 2002 年由开发者 Michael Kamprath 发布的一款可视化编程的自动化工具，比 Automator 出现还要早。2004 年被位于西澳珀斯(Perth)的软件公司 Stairways Software 收购了，并在此基础上不断优化和改进。目前最新的版本是 2018 年 8 月发布的 8.2.4，相信今年 macOS Catalina 发布后这款 App 还有不少辅助功能限制授权的 API 要进行更新。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-keyboard-maestro-squashed.jpg" alt="" /></p> 
<p>相比 Automator，Keyboard Maestro 支持更多的系统事件通知，比如通过 WiFi SSID 变更可以驱动一个 Marcro 自动执行。</p> 
<p>Keyboard Maestro 也支持把操作入口挂到 Menubar 上自己 icon 的下拉菜单里。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-Keyboard-Maestro-menubar-squashed.jpg" alt="" /></p> 
<p>我曾经玩过一阵子 Auto Window Tiling 的 Serivce，叫做 KWM，这是它的项目地址: <a href="https://github.com/koekeishiya/kwm">koekeishiya/kwm: Tiling window manager with focus follows mouse for OSX</a>。因为这个东西是完全命令行操作的，所以当时我在 Keyboard Maestro 的菜单上挂了 KWM 的重启/启动/关闭的快速入口。</p> 
<p><img decoding="async" src="https://cloud.githubusercontent.com/assets/6175959/22448246/62db5a08-e758-11e6-9a87-cf9fc5c6f51b.png" alt="" /></p> 
<p>它的做法简单粗暴，就是自动把桌面上所有的窗口强行布局成配置文件里选中的 layout。支持通过鼠标加上快捷键来交换窗口位置。但是后来觉得这种强制的做法不太适合我就没再使用了。</p> 
<h3>支持录制</h3> 
<p>如果你没有任何编程基础，也完全不想动脑思考逻辑，那么你还可以使用 Keyboard Maestro 的录制功能。通过你的 UI 动作自动帮你生成对应的 Macro。</p> 
<p>创建一个新的 Macro，点击右下角的 Record 按钮即可开始录制:</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-record-squashed.jpg" alt="" /></p> 
<h3>支持打开本地网页 UI</h3> 
<p>Keyboard Maestro 支持的触发器(Triggers)和动作(Actions)很多，利用好这些工具可以组合出非常有意思的东西来。</p> 
<p>你甚至可以用触发器自动收集完所需信息之后，打开一个浮窗加载网页，把信息通过网页 UI 的方式展示出来:</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-km-html.png" alt="" /></p> 
<p>我们还可以把 Alfred 和 Keyboard Maestro 结合起来用，就看你的想象力了。</p> 
<h2>三、Hammerspoon</h2> 
<p><img decoding="async" src="http://www.hammerspoon.org/images/hammerspoon.png" alt="" /></p> 
<p>官网: <a href="http://www.hammerspoon.org/">http://www.hammerspoon.org/</a></p> 
<p>从官网的记录来看，Hammerspoon 最早的版本是 2014 年发布的 <a href="http://www.hammerspoon.org/releasenotes/0.9.4.html">0.9.4</a>，自那以后 Hammerspoon 一直是 0.9.x 的状态在更新。这个开源项目在 <a href="https://github.com/Hammerspoon/hammerspoon">Github</a> 上有超过 5k 个 star，发布了五年依然没有宣布 1.0。</p> 
<p>项目的主力开发者之一 <a href="https://github.com/cmsj">@cmsj</a> 今年 5 月也在 <a href="https://github.com/Hammerspoon/hammerspoon/issues/2098">issue</a> 中讨论这个 App 差不多该发布 1.0 然后往 2.0 前进了。</p> 
<h2>使用 Lua 的 App</h2> 
<p>和上文介绍的可视化编程 App 不同，Hammerspoon 是硬核的真·编程。你需要在用户侧编写 Lua 脚本，这个脚本将跑在 Hammerspoon 提供的 Lua 虚拟机上，通过项目提供的 luaskin 接口，和应用层进行通信，从而只用 Lua 脚本就能使用系统提供的各种能力，包括公开的和私有的 API。</p> 
<p>假如读者朋友已经有一定的编程经验但是不熟悉 lua 语言，这里推荐使用 <a href="https://learnxinyminutes.com/docs/lua/">Learn X in Y minutes</a> 来快速上手(亦有<a href="https://learnxinyminutes.com/docs/zh-cn/lua-cn/">中文版: X分钟速成Y</a>)。Lua 相比于其他特性丰富的语言来说要简单得多，很容易学，而且我们在 Hammerspoon 最主要的目的也只是实现自动化替代机械劳动而已，并不需要多么高深的 Lua 功力。</p> 
<h2>Get started</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-05-hammerspoon-window-squashed.jpg" alt="" /></p> 
<p>Hammerspoon 的 UI 非常简单，只有一个显示 Log 和可以进行全局设置的窗口，其他所有的配置都放在 <code>~/.hammerspoon</code> 目录下。</p> 
<pre><code>➜  .hammerspoon git:(dev) ls
README.md Spoons    hs        init.lua
</code></pre> 
<p><code>init.lua</code> 是 App 启动后会读取的初始化脚本，也是我们的主战场。通过 <code>require</code> 关键字我们可以引入官方提供的能力或者自己下载的第三方库:</p> 
<pre><code>local tiling = require "hs.tiling"
local hotkey = require "hs.hotkey"
local mash = {"ctrl", "alt"}
hotkey.bind(mash, "h", function() tiling.cycleLayout() end)
tiling.set('layouts', {
   'gp-vertical', 'columns'
})
</code></pre> 
<p>上述代码实现了通过快捷键 <code>ctrl+alt+h</code> 对当前 Workspace 下所有窗口进行重排布局，用到的 <code>hs.tiling</code> 来自 <a href="https://github.com/dsanson/hs.tiling">https://github.com/dsanson/hs.tiling</a>, <code>hs.hotkey</code> 则是 Hammerspoon 自带的能力。</p> 
<p><a href="https://www.hammerspoon.org/docs/index.html">Hammerspoon 官方文档</a>有所有 API 的说明。基本上 macOS 自带的能力 Hammerspoon 都有覆盖，包括 WiFi 触发器，蓝牙触发器，自带 SQLite，控制 Spotify，控制 iTunes，自定义弹窗，alert，notification 等等。</p> 
<p>如果官方提供的能力不能满足你的需求，你还可以自己把 <a href="https://github.com/Hammerspoon/hammerspoon">Github</a> 上的代码 clone 下来，自己实现需要的 API。</p> 
<p>这里还有个用户贡献的参考配置列表：<a href="https://github.com/Hammerspoon/hammerspoon/wiki/Sample-Configurations">https://github.com/Hammerspoon/hammerspoon/wiki/Sample-Configurations</a>。下载覆盖后即插即用。</p> 
<h2>一些用户分享的配置</h2> 
<ul> 
 <li><a href="https://github.com/dbmrq/dotfiles/blob/master/home/.hammerspoon/winman.lua">窗口管理</a></li> 
 <li><a href="https://github.com/dbmrq/dotfiles/blob/master/home/.hammerspoon/cherry.lua">番茄钟</a></li> 
 <li><a href="https://github.com/dbmrq/dotfiles/blob/master/home/.hammerspoon/collage.lua">剪贴板管理</a></li> 
 <li><a href="https://github.com/dbmrq/dotfiles/blob/master/home/.hammerspoon/mocha.lua">Caffeinate</a></li> 
</ul> 
<h2>我的使用</h2> 
<p>首先是用于窗口管理, <code>ctrl+alt+left/right</code>来实现水平三分屏(大屏幕用)，<code>ctrl+cmd+left/right</code> 实现两分屏(MacBook 用)。<code>ctrl+alt+h</code> 实现多列自动布局。</p> 
<p>然后是 WiFi Watcher，发现我连上了公司的 WiFi 就自动帮我把 MacBook 静音。</p> 
<p>加了一个快捷键自动 Reload Config 方便调试。</p> 
<p>当切换到 Finder App 的时候自动激活属于 Finder 的所有窗口，不然默认情况下只会激活最后一个，如果开很多就比较难找到我要的那一个。</p> 
<p>目前我只用了这一些，但是 Hammerspoon 的可扩展性非常强，基于它可以实现很多有意思的东西。如果读者朋友具备写代码的能力的话，用脚本实现是比可视化编程更灵活更高效的做法。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://www.raywenderlich.com/2553-automator-for-mac-os-x-tutorial-and-examples">Automator for Mac OS X: Tutorial and Examples | raywenderlich.com</a></li> 
 <li><a href="https://sspai.com/post/53992">免费又强大的 macOS 自动化工具，Hammerspoon 可以让你少买很多 App - 少数派</a></li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/3815">macOS 效率系列 06: 眼观六路，方能运筹帷幄 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3796">macOS 效率系列 05: 能让机器做的事情就不要自己动手 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3776">macOS 效率系列 04: 快捷键是所有人的必修课 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3770">macOS 效率系列 03: 全键盘操作的快捷入口 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3726">macOS 效率系列 02: 在终端 Terminal 中运键如飞 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3712">macOS 效率系列 01: 窗口管理 | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x6548;&#x7387;&#x7CFB;&#x5217; 04: &#x5FEB;&#x6377;&#x952E;&#x662F;&#x6240;&#x6709;&#x4EBA;&#x7684;&#x5FC5;&#x4FEE;&#x8BFE;</title>
        <link>https://justinyan.eth.limo/011FAE73-B0A7-49F7-B248-AF79D41EDDF8/</link>
        <guid>https://justinyan.eth.limo/011FAE73-B0A7-49F7-B248-AF79D41EDDF8/</guid>
        <pubDate>Tue, 13 Aug 2019 10:39:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-04-cover.jpg" alt="" /></p> 
<p><em>欢迎大家留言或者邮件 <a href="mailto:justin@justinyan.me">justin@justinyan.me</a> 分享你喜欢的效率工具或者效率技巧。</em></p> 
<h2>〇、快捷键是提高效率的捷径</h2> 
<p>不管使用哪一个 App 或者操作系统，掌握快捷键永远提高效率最简单的方法。就像它的名字"shortcuts"一样，它的设计就是为了让你节省时间的捷径。</p> 
<p>macOS 系统自带许多有用的快捷键，有全局的也有各个 App 自己的。Mac App 的特色是 Menubar 上的菜单如果是重要操作一般都会带有匹配的快捷键，而且实现起来非常简单。所以 macOS 生态里的快捷键非常统一。用户只需要学习一套快捷键操作，就可以复制到其他 App 里面。</p> 
<p>大部分使用 macOS 的读者朋友应该都习惯了相当一部的快捷键，但可能还有些有用的快捷键没有用到。我在写作此文的时候也发现有些快捷键之前都不知道，整理的过程也是我学习的过程。</p> 
<p>本文整理 macOS 几个大类的快捷键，希望能对读者朋友们有所帮助。更多主流 App 快捷键大家随时可以通过 Google 关键字: App Name + Shortcuts 或者是 App Name + Cheatsheat 来找到。</p> 
<h2>一、系统全局类</h2> 
<p>系统自带的快捷键有一部分可以从 System Preferences -&gt; Keyboard -&gt; Shortcuts 里面直接找到:</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-04-system-squashed.jpg" alt="" /></p> 
<p>这里我们介绍几个比较常用到的全局快捷键:</p> 
<table> 
 <thead> 
  <tr> 
   <th>Key</th> 
   <th>Action</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>cmd + tab</td> 
   <td>在已经打开的 App 之间进行切换，按住 shift 可以反向选择</td> 
  </tr> 
  <tr> 
   <td>ctrl + left/right</td> 
   <td>左右切换 Workspace</td> 
  </tr> 
  <tr> 
   <td>ctrl + up</td> 
   <td>显示 Mission Control</td> 
  </tr> 
  <tr> 
   <td>ctrl + down</td> 
   <td>显示当前 App 所有 Windows</td> 
  </tr> 
  <tr> 
   <td>option + cmd + l</td> 
   <td>在 Finder 打开 Downloads 目录</td> 
  </tr> 
  <tr> 
   <td>option + cmd + d</td> 
   <td>显示/隐藏 Dock</td> 
  </tr> 
  <tr> 
   <td>option + cmd + esc</td> 
   <td>打开 Force Quit App 列表</td> 
  </tr> 
  <tr> 
   <td>shift + option + cmd + esc</td> 
   <td>直接 Force Quit 当前 App</td> 
  </tr> 
 </tbody> 
</table> 
<p>即使有<a href="https://justinyan.me/post/3770">上一篇文章介绍的 Alfred</a>我也经常使用这些快捷键，比键入关键字搜索要快。当我同时需要打开多个应用或者多个窗口时也配合<a href="https://justinyan.me/post/3712">第一篇关于窗口管理的工具</a>进行多窗口排布，可以大大提高工作效率。</p> 
<h2>二、窗口类</h2> 
<table> 
 <thead> 
  <tr> 
   <th>Key</th> 
   <th>Action</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>cmd + `</td> 
   <td>在当前 App 的多个窗口直接切换</td> 
  </tr> 
  <tr> 
   <td>cmd + m</td> 
   <td>最小化当前窗口</td> 
  </tr> 
  <tr> 
   <td>cmd + h</td> 
   <td>隐藏当前 App</td> 
  </tr> 
  <tr> 
   <td>cmd + opt + h</td> 
   <td>隐藏除了当前 App 以外的所有窗口</td> 
  </tr> 
  <tr> 
   <td>cmd + ctrl + f</td> 
   <td>进入/退出最大化</td> 
  </tr> 
  <tr> 
   <td>cmd + w</td> 
   <td>关掉当前窗口或者当前 Tab</td> 
  </tr> 
  <tr> 
   <td>cmd + opt + w</td> 
   <td>关掉当前 App 的所有窗口</td> 
  </tr> 
 </tbody> 
</table> 
<h2>三、文本编辑操作</h2> 
<p>对于开发者或者文字工作者，每天都在敲键盘打开，能够不用鼠标就完成选择文本、替换文本之类的操作是最好的。以下是文本编辑常用的快捷键:</p> 
<table> 
 <thead> 
  <tr> 
   <th>Key</th> 
   <th>Action</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>ctrl + a</td> 
   <td>跳到当前行的最前面</td> 
  </tr> 
  <tr> 
   <td>ctrl + e</td> 
   <td>跳到当前行的最后面</td> 
  </tr> 
  <tr> 
   <td>cmd + left/right</td> 
   <td>跳转到当前行的开头/结尾</td> 
  </tr> 
  <tr> 
   <td>cmd + up/down</td> 
   <td>跳转到当前文档的最顶部或最底部</td> 
  </tr> 
  <tr> 
   <td>cmd + del</td> 
   <td>删掉当前光标到行首之间的所有文本</td> 
  </tr> 
  <tr> 
   <td>shift + up/down/left/right</td> 
   <td>按住 shift 和上下左右可以选中文本</td> 
  </tr> 
  <tr> 
   <td>鼠标点击某处，再按住 shift 点击另外一处</td> 
   <td>可以直接选中两次点击之间的所有文本</td> 
  </tr> 
  <tr> 
   <td>alt + left/right</td> 
   <td>向左/右跳一个单词</td> 
  </tr> 
  <tr> 
   <td>双击鼠标</td> 
   <td>选中最靠近的一个单词</td> 
  </tr> 
  <tr> 
   <td>三击鼠标</td> 
   <td>选中当前行</td> 
  </tr> 
 </tbody> 
</table> 
<h3>文本选择小技巧</h3> 
<p>当我们按下 <code>shift</code> 之后我们就可以通过上下左右方向键来选择文本。这时候按住 <code>cmd</code> + 方向键的效果就带上了选择效果。比如 <code>cmd + left</code> 本来是跳转到光标所在行的最前面，加上了 <code>shift</code> 就自带了选中效果。</p> 
<p>所以如果你想选择当前光标所在的位置到文本最底部，按住 <code>shift</code> + <code>cmd</code> + <code>down</code> 就可以了，非常方便。</p> 
<p>这里的文本编辑快捷键是针对通用的文本编辑器而言的，喜欢 Vim/Emacs 的朋友也可以安装对应的插件，实现更加高效的操作。</p> 
<p>比如在 Vim 里面，跳转到文档最顶部只需键入 <code>gg</code> 即可。选中当前光标到最顶部则只需 <code>vgg</code>，理论上是要更加省时间的做法。只是学习曲线要高得多，如非码农，一般也用不上。</p> 
<h2>四、截图类操作</h2> 
<table> 
 <thead> 
  <tr> 
   <th>Key</th> 
   <th>Action</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>shift + cmd + 3</td> 
   <td>截当前全屏并存文件到桌面</td> 
  </tr> 
  <tr> 
   <td>ctrl + shift + cmd + 3</td> 
   <td>截当前全屏并保存到剪贴板</td> 
  </tr> 
  <tr> 
   <td>shift + cmd + 4</td> 
   <td>按下后拖拽鼠标选择截图区域，或者按下 space 直接截取当前窗口并保存到文件</td> 
  </tr> 
  <tr> 
   <td>ctrl + shift + cmd + 4</td> 
   <td>按下后拖拽鼠标选择截图区域，或者按下 space 直接截取当前窗口并保存到剪贴板</td> 
  </tr> 
 </tbody> 
</table> 
<p>系统自带的截图已经非常之好用，但是藏得比较深。绝大多数人都使用第三方 App 来截图我觉得也无可厚非。</p> 
<p>我自己一般只用系统截图，只有需要对图片进行标注时会使用第三方 App。一般用: <a href="https://apps.apple.com/us/app/annotate-capture-and-share/id918207447?mt=12">‎Annotate - Capture and Share on the Mac App Store</a></p> 
<p><img decoding="async" src="https://is1-ssl.mzstatic.com/image/thumb/Purple71/v4/3d/91/b5/3d91b57c-1c55-48d0-9734-483e77ffc63b/AppIcon.png/230x0w.png" alt="" /></p> 
<p>它的快捷键和系统的一致，我无需再学一套快捷键，截图后会弹出主窗口用于编辑。</p> 
<h2>五、大多数 App 标准快捷键</h2> 
<table> 
 <thead> 
  <tr> 
   <th>Key</th> 
   <th>Action</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>cmd + ,</td> 
   <td>打开当前 App 的 Preferences 窗口</td> 
  </tr> 
  <tr> 
   <td>cmd + w</td> 
   <td>关闭当前窗口</td> 
  </tr> 
  <tr> 
   <td>cmd + 1/2/3</td> 
   <td>选中当前第 n 个窗口</td> 
  </tr> 
  <tr> 
   <td>ctrl + tab</td> 
   <td>切换到下一个窗口</td> 
  </tr> 
  <tr> 
   <td>shift + ctrl + tab</td> 
   <td>切换到上一个窗口</td> 
  </tr> 
  <tr> 
   <td>cmd + l</td> 
   <td>在 Safari/Chrome 中直接选中地址栏</td> 
  </tr> 
  <tr> 
   <td>cmd + r</td> 
   <td>在 Safari/Chrome 中刷新当前页</td> 
  </tr> 
  <tr> 
   <td>cmd + f</td> 
   <td>大部分支持搜索的 App 的搜索快捷键</td> 
  </tr> 
  <tr> 
   <td>cmd + opt + f</td> 
   <td>VSCode/Sublime 之类的 App 可以支持完整 Workspace 搜索</td> 
  </tr> 
  <tr> 
   <td>cmd + t</td> 
   <td>大部分多 Tab 应用支持以此创建新 Tab</td> 
  </tr> 
  <tr> 
   <td>cmd + shift + [</td> 
   <td>大部分多 Tab 应用支持以此往左切换 tab</td> 
  </tr> 
  <tr> 
   <td>cmd + shift + [</td> 
   <td>大部分多 Tab 应用支持以此往右切换 tab</td> 
  </tr> 
  <tr> 
   <td>cmd + shift + n</td> 
   <td>在 Finder 中创建新文件夹</td> 
  </tr> 
 </tbody> 
</table> 
<p>Apple 官方有一份非常详尽的快捷键列表，有兴趣的朋友可以到这里查看: <a href="https://support.apple.com/en-hk/HT201236">Mac keyboard shortcuts - Apple Support</a></p> 
<h2>六、如何自学快捷键</h2> 
<p>开发一个带 UI 的 Mac App 一般都会有一个 MainMenu 的 Storyboard，这个东西在创建工程的时候由 Xcode 生成，自带大量官方的操作和快捷键。开发者开发 Mac App 的时候只需往菜单上增加快捷键和对应的 Action 就能实现 App 内快捷键了，非常方便。有一个叫做 <a href="https://mediaatelier.com/CheatSheet/">CheatSheet</a> 的 App 就是遍历当前 App 的所有 menu 然后把得到的快捷键列出来给你。</p> 
<p><img decoding="async" src="https://mediaatelier.com/CheatSheet/imgs/main.png" alt="" /></p> 
<p>我们即使不用这个 App，自己点一下菜单也能知道大部分的快捷键。对于常用的 App 和操作，我觉得花几秒钟时间学习一下是非常划算的投资。</p> 
<p>至于主流 App，通常只需 Google App Name + Shortcuts 或者是 App Name + Cheatsheat 就可以得到别人整理好的列表。</p> 
<p>有些比较重的 Web App 比如 Trello 也是自带了大量快捷键。但是大家的快捷键都不是瞎定的，比如 Trello 的许多操作都和 Vim 相仿（通过按下 ? 可以看到 Trello 的全部快捷键）。所以只要学会了一套快捷键逻辑，基本上在多数 App 都是可以复刻的，这也是 Mac 生态非常优秀的地方。</p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="http://osxdaily.com/2013/03/22/5-simple-window-management-keyboard-shortcuts-to-improve-workflow-in-mac-os-x/">7 Simple Window Management Keyboard Shortcuts for Mac OS X to Improve Workflow</a></li> 
 <li><a href="https://www.amsys.co.uk/useful-mac-text-editing-shortcuts/">Useful Mac text-editing shortcuts | Amsys</a></li> 
 <li><a href="https://support.apple.com/en-hk/HT201236">Mac keyboard shortcuts - Apple Support</a></li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/3815">macOS 效率系列 06: 眼观六路，方能运筹帷幄 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3796">macOS 效率系列 05: 能让机器做的事情就不要自己动手 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3776">macOS 效率系列 04: 快捷键是所有人的必修课 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3770">macOS 效率系列 03: 全键盘操作的快捷入口 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3726">macOS 效率系列 02: 在终端 Terminal 中运键如飞 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3712">macOS 效率系列 01: 窗口管理 | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x6548;&#x7387;&#x7CFB;&#x5217; 03: &#x5168;&#x952E;&#x76D8;&#x64CD;&#x4F5C;&#x7684;&#x5FEB;&#x6377;&#x5165;&#x53E3;</title>
        <link>https://justinyan.eth.limo/25D9B642-BFB6-4796-B8A2-C5D990587F91/</link>
        <guid>https://justinyan.eth.limo/25D9B642-BFB6-4796-B8A2-C5D990587F91/</guid>
        <pubDate>Mon, 12 Aug 2019 10:53:50 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-cover.jpg" alt="" /></p> 
<p><em>欢迎大家留言或者邮件 <a href="mailto:justin@justinyan.me">justin@justinyan.me</a> 分享你喜欢的效率工具或者效率技巧。</em></p> 
<h2>〇、搜索是一个快捷入口</h2> 
<p>macOS 系统提供了 Dock, LaunchPad 这样的工具让用户可以方便地打开各种 App。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-launchpad-squashed.jpg" alt="" /></p> 
<p>同时 macOS 系统还带了一个叫做 Spotlight 的工具，大概长这个样子:</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-spotlight-squashed.jpg" alt="" /></p> 
<p>在 <a href="<iframe width=" 100%" style="aspect-ratio: 16/9" src="https://www.youtube.com/embed/hQm7Xr9jY0w" title="YouTube Video" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>"&gt;2004 年 Apple WWDC</a> 上乔帮主第一次介绍了 Spotlight 搜索，入口在 Finder 的右上角，主打是超快的全局文件、邮件、通讯录等数据的搜索。并随着第二年(2005)的 OS X Tiger(10.4) 发布。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/bcc550522b42bec30cbc576a500f3b59.jpeg" alt="" /></p> 
<p>如果读者朋友正在使用最近版本的 macOS(比如 macOS Mojave 10.14)，那么 Spotlight 已经足够好用了，可以作为快捷计算器，可以快速搜索整台 Mac 上的任意文件。也可以直接用于 Google Search，只需在 Spotlight 上输入需要搜索的词:</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-keywords-squashed.jpg" alt="" /></p> 
<p>然后按下 <code>cmd+B</code>，就会直接在你的默认浏览器里打开 Google 并进行搜索。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-spotlight-google-squashed.jpg" alt="" />l</p> 
<p>对于每日工作需要双手打字的开发者或文字工作者来说，让其中一只手离开键盘去抓住鼠标，找到指针在哪里，然后定位到目标位置按下左键，最后在回到键盘上。这个过程是非常浪费时间的，做一次两次无所谓，但是当我的主要工作都是双手打字的时候，鼠标就成了一种分心和累赘。</p> 
<p>即使是更多依赖鼠标的设计师们，常用的 Photoshop，Sketch 等多个主流设计 App，也是尽量让快捷键能够被一手完成，不需要让另一只手离开鼠标过来辅助。</p> 
<p>所以让双手尽量保持在应有的位置是高效的秘诀。不管是文字工作者还是开发者，Google 是每天都要进行不下数百次的操作。能够双手不离开键盘完成无疑是效率的保证。</p> 
<p>Spotlight 在最近几次 macOS 的更新中已经变得越来越好用，那么还有没有比他更好用的全键盘操作工具呢？</p> 
<h2>一、Alfred 更胜一筹</h2> 
<p>Spotlight 从 OS X 10.4 发布到今天的变化明显受到来自 macOS 生态中许多优秀 App 的影响。</p> 
<p><a href="https://github.com/quicksilver/Quicksilver">Quicksilver</a> 就是比较早做快捷入口的 App 之一。</p> 
<p>默认使用 <code>ctrl+space</code> 呼出，输入任意关键字即可进行全局搜索:</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-quicksilver-squashed.jpg" alt="" /></p> 
<p>同时它还支持多种系统事件 Triggers，支持 Plugins:</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-quicksilver-2-squashed.jpg" alt="" /></p> 
<p>同时它也在 Github 上开源。不过该项目已经远不如当年活跃，目前最主流的全键盘输入/输入工具是——<a href="https://www.alfredapp.com/">Alfred</a>。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-alfred-squashed.jpg" alt="" /></p> 
<p>Alfred App 本身免费，如果想用它的 Powerpack 则需要额外购买 License。免费版的 Alfred 已经支持许多实用的功能。首先全局搜索应用、文件、日历等信息是基本功能无需赘述。这里介绍几个非常实用的功能。</p> 
<h3>1. 剪贴板历史记录</h3> 
<p><img decoding="async" src="https://www.alfredapp.com/media/pages/home/clipboard@2x.jpg" alt="" /></p> 
<p>系统剪贴板 <code>cmd+c</code>/<code>cmd+v</code> 的操作现在已经成为所有用户的基础技能。但是默认情况下剪贴板只会保留最后一次复制的结果，当我需要复制多个数据，或者记得好像五分钟前复制了一个东西但是已经没了的时候，剪贴板历史记录非常有用。</p> 
<p>按下默认快捷键 <code>option+cmd+c</code>，Alfred 会显示你的剪贴板历史记录。支持图片，文本，和文件列表。你可以在设置里面选择保留时长，也可以主动清理缓存结果。</p> 
<p>对于经常需要回过头去重新复制一遍的情况，有一个完整的列表帮助我们节省了大量的时间，可以说是不可或缺的一个能力。</p> 
<p>如果你不使用 Alfred，有些其他的 App 也实现了同样的功能。比如: <a href="https://pasteapp.me/">Paste - The new way to copy and paste on Mac and iOS</a></p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-paste.jpg" alt="" /></p> 
<p>除了保留历史记录之外 Paste 还自带一个 Universal Clipboard，可以在 iOS 上同步 Mac 上复制的东西。不过我个人连系统自带的 Universal Clipboard 都不怎么用，所以只用 Alfred 就足够了。</p> 
<h3>2. System Commands</h3> 
<p><img decoding="async" src="https://www.alfredapp.com/help/features/system/system-command-shut.png" alt="" /></p> 
<p>Alfred 支持快速使用系统命令，比如关机、重启、清空回收站、启动屏保。</p> 
<p>我个人最常用的是输入 <code>em</code> 两个字母之后自动匹配第一个选择，清空垃圾桶。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-alfred-empty-trash-squashed.jpg" alt="" /></p> 
<h4>屏保小技巧</h4> 
<p>这里介绍一个小技巧，对于在开放式办公室工作的读者朋友可能有点用。平时我们用着自己的 Mac 工作时很多内容是相对敏感的，如果这时候想起身去个洗手间，有的人可能会选择 Lock 一下屏幕，回来后再密码或者指纹解锁，继续工作。</p> 
<p>我一般选择打开屏幕保护程序，用的是 IG 网红壁纸 <a href="http://fliqlo.com/">fliqlo</a>。</p> 
<p><img decoding="async" src="https://fliqlo.com/images/main.png" alt="" /></p> 
<p>那密码保护怎么办？在 System Preferences -&gt; Security &amp; Privacy 里面我们是可以设置屏保和 Sleep 之后多久要求输入密码的。这里我设置为 immediately。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-password-squashed.jpg" alt="" /></p> 
<h2>3. Google Search</h2> 
<p>Alfred 可以进行非常快速的 Google 搜索。Alfred 的绝大部分操作都是进行命令匹配，类似我们在终端命令行的使用体验。但是通常情况下我们要放进 Google 搜索的内容都不会 Match 到命令，这时候就会触发 Alfred 的默认行为：Search。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-search-squashed.jpg" alt="" /></p> 
<p>你可以在 Preferences 中设置默认的搜索引擎，或者进行添加、删除、修改等操作。如果真遇到我的搜索关键词和命令重复了，我才会在前面加上关键字，比如:</p> 
<pre><code>google shutdown
</code></pre> 
<p>我们每天都要进行成百上千次的 Google 搜索，能够把这个过程的时间节省一点，累积起来还是比较客观的。</p> 
<h2>4. 其他</h2> 
<p>Alfred 还支持计算器，也是非常有用的功能，简单计算直接快捷键呼出然后就得到结果了。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-alfred-dictionary-squashed.jpg" alt="" /></p> 
<p>Alfred 也支持查词典，用的是系统的词典 App。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-alfred-caculator-squashed.jpg" alt="" /></p> 
<p>不过词典这个东西好不好用得看词典本身，我比较常用的而是<a href="https://www.eudic.net/v4/en/app/eudic">欧陆词典</a></p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-eudict-squashed.jpg" alt="" /></p> 
<p>词库比较全，支持结果的网络 wiki 搜搜，支持在 Menubar 上使用全局快捷键快速查找，非常方便。</p> 
<h2>5. Alfred Workflows</h2> 
<p>以上 Alfred 自带的 Features 已经让这个工具足够应付许多场景了，但是它真正好用的地方还在于丰富的插件库——Workflows。</p> 
<p>我比较常用的 workflow 是:</p> 
<ol> 
 <li><a href="http://www.packal.org/workflow/kill-process">Kill Process</a> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-03-workflow-kill-squashed.jpg" alt="" /></p> <p>直接在 Alfred 里搜索并杀死某个进程，比起 <code>option+cmd+esc</code>，我比较喜欢这种方式。</p> </li> 
 <li> <p><a href="https://www.alfredforum.com/topic/3420-sleep-display-command/">Sleep Displays</a></p> <p>只是把屏幕关闭，但是不进入 Sleep 状态，保持网络连接和各种 App 的后台活动。通过快捷键触发，在我不想屏保的时候我会选择用这个。</p> </li> 
 <li> <p><a href="https://github.com/LeEnno/alfred-terminalfinder">TerminalFinder</a></p> <p>输入 <code>fi</code> 或者 <code>if</code> 可以在 iTerm 中打开 Finder 当前文件夹，或者在 Finder 中打开 iTerm 当前文件夹。</p> </li> 
</ol> 
<p>Alfred 的生态很好，搜索 Alfred Workflows 你可以找到许多非常有用的东西。</p> 
<p><a href="https://www.alfredapp.com/shop/">Powerpack</a> 分为 Single 和 Mega 两种（以前还有 Family），如果你用得多的话我建议买 Mega，只要升级两次就赚回来了。</p> 
<h2>二、工具和人一样不会一成不变</h2> 
<p>Alfred 是目前最流行好用的效率工具之一，但总有一天会有比它更好用的东西出现。这也是很多人鄙视写工具介绍类的文章的原因。</p> 
<p>“macOS 效率系列”也不打算作为一个“介绍”来写，而是希望之前没有想过抛弃“重复机械劳动”这件事情的朋友们如果看到可以有一些思维方式的启发。</p> 
<p>工具是为人服务的，人不会因为用了什么工具而变得更加高级或者更加优越。所以如今到处存在的各种“鄙视链”我们当做段子看看就好，拿它当真就非常可笑了。</p> 
<p>介绍 Alfred 和其他的效率工具是有意义的。以前公司有一段时间实行内外网分离，所有的员工每天都需要进行多次内外网切换的操作来实现无阻碍查资料和拉取、提交代码这些事情。</p> 
<p>我们当然可以通过鼠标点击右上角 WiFi 按钮，从列表中找到需要的 SSID，单击，等待网络连接成功，然后再去做自己该做的事情。</p> 
<p>但是这样的事情做多几次之后就应该要有一种思维：我不想做重复机械劳动。</p> 
<p>当时有一小部分同事（当然也包括我自己）使用 Alfred 或者直接用 Apple Script 来完成这件事情，只需要非常简单的快捷键触发，网络就切换好了。</p> 
<p>但是从绝对人数来看，这样的人还是占了非常非常少的比例。这是非常正常的，但是我也相信这 90% 手动切换网络的人里面也有相当一部分人不知道有更快捷的方式。一旦他们知道他们也会使用更高效的方法。</p> 
<p>所以科普类的文章，介绍效率工具的文章我一直觉得是非常有用的，并不是每一个人都可以只看接口和文档就知道如何使用一个足够复杂的工具，更不用说连这个工具都没听说过的人了。</p> 
<p>macOS 生态中有非常多实用的效率工具，也非常容易通过搜索找到。本文只是总结一二，也并不一定适合所有人，但是依然希望能对读者朋友们有一点点的帮助，那么这个系列的目的就达到了。</p> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/3815">macOS 效率系列 06: 眼观六路，方能运筹帷幄 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3796">macOS 效率系列 05: 能让机器做的事情就不要自己动手 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3776">macOS 效率系列 04: 快捷键是所有人的必修课 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3770">macOS 效率系列 03: 全键盘操作的快捷入口 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3726">macOS 效率系列 02: 在终端 Terminal 中运键如飞 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3712">macOS 效率系列 01: 窗口管理 | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x6548;&#x7387;&#x7CFB;&#x5217; 02: &#x5728;&#x7EC8;&#x7AEF; Terminal &#x4E2D;&#x8FD0;&#x952E;&#x5982;&#x98DE;</title>
        <link>https://justinyan.eth.limo/CA408184-B3FE-44FE-A64A-CE3D53BF464E/</link>
        <guid>https://justinyan.eth.limo/CA408184-B3FE-44FE-A64A-CE3D53BF464E/</guid>
        <pubDate>Fri, 09 Aug 2019 20:25:12 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/productivity-02-squashed.jpg" alt="" /></p> 
<p><em>欢迎大家留言或者邮件 <a href="mailto:justin@justinyan.me">justin@justinyan.me</a> 分享你喜欢的效率工具或者效率技巧。</em></p> 
<blockquote>
 <p> 光阴荏苒，日月如梭。 </p>
</blockquote> 
<p>如何把有限的时间和精力用在有意义的事情上是人类无法逃避的问题。作为 macOS daily user，高效用好 macOS 系统及其生态中的各种工具可以让我们少浪费一些生命在无意义的重复劳动中。</p> 
<p>关于 macOS 的效率工具网络上已经有非常多的文章可供参考，本系列不过总结一二，希望能对读者有所帮助。</p> 
<h2>一、Terminal, 终端, Shell</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/computer-terminal.jpg" alt="早期的终端" /></p> 
<p>终端(computer terminal)是一个历史遗留下来的名词，早期的终端机大概长这样。这个不是个人电脑，只是一台显示器，接了一个键盘(<a href="https://en.wikipedia.org/wiki/VT100">DEC VT100</a>)。背后有一台巨大的主机，对接很多台终端，这样每个终端就是一个输入输出设备。</p> 
<p>今天大家都在用个人电脑(PC)，普通用户基本不会遇到多终端共享同一个主机的情况。但也并不是完全没有终端，比如车站的刷卡机就是一台终端机。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/computer-terminal-ticket.jpg" alt="车站的终端机" /></p> 
<p>所以现在各种类 Unix 系统——比如 Linux 的各种发行版，和基于 FreeBSD 的 macOS——都在 UI 层虚拟了一个终端。</p> 
<p>当你打开虚拟终端的时候，和古老的物理终端一样，会运行一个最基本的人机交互程序，称为 Shell。</p> 
<p>在 Shell 中输入一行命令，它就解释执行这一行，然后显示结果。另外 Shell 也支持批量处理命令，需要写一个 Shell 脚本，然后执行它。历史上有多种不同的 Shell:</p> 
<ul> 
 <li><code>sh</code>: Bourne Shell，由 Steve Bourne 开发，绝大多数 UNIX 系统标配</li> 
 <li><code>csh</code>: Bill Joy 开发，BSD UNIX 系统标配</li> 
 <li><code>ksh</code>: David Korn 开发，兼容 <code>sh</code>，并支持 <code>csh</code> 的新功能</li> 
 <li><code>tcsh</code>: csh 的加强版</li> 
 <li><code>bash</code>: Bourne Again Shell，GNU 开发的，基本上是所有 Linux 系统默认的 shell 了</li> 
</ul> 
<p>想要知道你的系统自带了什么 shell，你可以在终端运行:</p> 
<pre><code class="shell">cat /etc/shells
</code></pre> 
<p>macOS 自带的是这些:</p> 
<pre><code class="shell">/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
</code></pre> 
<h2>二、Oh My Zsh</h2> 
<p><img decoding="async" src="https://camo.githubusercontent.com/5c385f15f3eaedb72cfcfbbaf75355b700ac0757/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6f686d797a73682f6f682d6d792d7a73682d6c6f676f2e706e67" alt="" /></p> 
<p>除开 Windows 的 cmd.exe，我最早接触终端是在 Linux 系统上，当时用的是 Ubuntu 桌面版。现在大多数人接触 PC 都是从桌面版带 GUI 的操作系统开始，所以相比之下命令行要显得稍微难操作一点。如果有读者朋友觉得命令行操作起来相对困难的话，可以参考著名的<a href="https://book.douban.com/subject/4889838/">《鸟哥的Linux私房菜》</a>这本书。作为入门读物还是非常容易上手的。</p> 
<p>接下来我们假定读者朋友们都已经比较熟悉 Shell 操作了。目前多数类 Unix 系统的默认 Shell 都是 <code>Bash</code>，它已经足够用了，但是还不够好用。</p> 
<p>目前比较流行的 Shell 是 <code>zsh</code> 和 <code>fish</code>。二者各有优劣，我个人使用的而是 <code>zsh</code>。</p> 
<p><a href="https://www.zsh.org/">ZSH</a> 称为 Z shell，是基于 <code>sh</code>(Bourne shell)的扩展，包括了 <code>ksh</code>, <code>Bash</code>和 <code>tcsh</code>等多种 shell 的特性。今年 WWDC 2019 上<a href="https://www.theverge.com/2019/6/4/18651872/apple-macos-catalina-zsh-bash-shell-replacement-features">苹果亦宣布将用 zsh 取代 bash 称为 macOS Catalina 的默认 shell</a>。</p> 
<p>zsh 的自动拼写纠错，大小写不敏感的自动补全，自带的 <code>where</code> 命令等都非常实用。在 macOS 上用 Bash 试图 <code>cd down[Tab]</code> 的人都应该有所体会。</p> 
<p>zsh 还支持各种插件和扩展，开发者可以基于 zsh 实现各种酷炫的命令行体验。<a href="https://ohmyz.sh/">Oh My Zsh</a>就是一个开源的项目，也是大多数 zsh 用户的选择。</p> 
<p>超过 1350+ 的贡献者为这个项目贡献了 250+ 的插件和 125+ 的主题。</p> 
<p>安装起来非常简单，通过 curl 或者按照官网指示安装即可:</p> 
<pre><code class="shell">sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
</code></pre> 
<p>oh my zsh 自带的 git 插件简直是开发者的福音。</p> 
<p><img decoding="async" src="https://ohmyz.sh/img/themes/eastwood.jpg" alt="" /></p> 
<p>还有多款主题任君选择: <a href="https://github.com/robbyrussell/oh-my-zsh/wiki/Themes">Themes · robbyrussell/oh-my-zsh Wiki</a></p> 
<h2>三、 autojump</h2> 
<p>在 shell 里进行文件夹路径变换我们用的是 <code>cd</code> 命令(change directory)。假如我们有一个层级比较深的路径: <code>~/Documents/ADir/BDir/CDir/DDir</code>。一般我们需要</p> 
<pre><code class="shell">cd ~ #或者 cd
cd Documents
cd ADir
cd BDir
cd CDir
cd DDir
</code></pre> 
<p>这还是我能记得这个路径的前提下。一般情况下我只记得它大概在哪里，所以还得多次 <code>ls</code> 看看是不是在当前目录。</p> 
<p>这时候你需要一个<strong>无论身处哪个路径都可以轻松跳转过去的 jump 操作</strong>。</p> 
<pre><code class="shell">j DDir
</code></pre> 
<p>这就是 <code>autojump</code> 干的事情。只要 <code>j keyword</code> 就可以到达关键词所在的地方，都不需要记得完整的名字。</p> 
<p><code>autojump</code> 会对你曾经到达过的路径做一个缓存，然后自己计算一个优先级。如果有多个同名文件夹，它会优先匹配最高优先级的那个。如果你觉得这个优先级不对，你可以使用 <code>j -i</code> 或者 <code>j -d</code> 来增加/减少当前目录的权重。</p> 
<p>oh my zsh 也提供一个类似效果的插件，叫做 <code>z</code>。github 地址在这里: <a href="https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/z">oh-my-zsh/plugins/z at master · robbyrussell/oh-my-zsh</a></p> 
<p>oh my zsh 除了直接把当前 git 仓库的信息展示在终端之外，还自带许多方便的 git 命令的 aliases，比如:</p> 
<table> 
 <thead> 
  <tr> 
   <th>Alias</th> 
   <th>Command</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>gaa</td> 
   <td>git add --all</td> 
  </tr> 
  <tr> 
   <td>ggp</td> 
   <td>git push origin $(current_branch)</td> 
  </tr> 
 </tbody> 
</table> 
<p>这些 git 命令我们每天都需要打无数次，能用 alias 还是非常方便省事的。</p> 
<p>完整的 aliases cheatsheet 可以参考这里： <a href="https://github.com/robbyrussell/oh-my-zsh/wiki/Cheatsheet">Cheatsheet · robbyrussell/oh-my-zsh Wiki</a></p> 
<h2>四、.bash_profile, .profile 和 .zshrc</h2> 
<p>如果我们不做任何修改，登录 shell 之后的所有配置就是默认的。但是我们通常都需要安装各种工具，这些工具需要前置配置，比如环境变量 <code>PATH</code>。这些东西都保存在 <code>.profile</code> 文件里。类 Unix 系统在登录 shell 的时候一般都会读取 <code>.profile</code> 文件。</p> 
<p>如果你在自己的 Home 目录(~) <code>ls -a</code> 一下一般可以看到这几个文件:</p> 
<pre><code class="shell">.profile
.bash_profile
# 如果装了 zsh 的话
.zshrc
</code></pre> 
<p>这几个文件的作用是类似的，但是读取顺序不同，其中 <code>.zshrc</code> 只会被 zsh 读取。关于这几个配置文件的顺序大家感兴趣的可以参考这里: <a href="https://medium.com/@abhinavkorpal/bash-profile-vs-bashrc-c52534a787d3">.bash_profile vs .bashrc - Abhinav korpal - Medium</a></p> 
<p>一般情况下我会在 Dropbox 里放一个 <code>.bash_profile</code> 文件，然后在多台 Mac 之间共享这个文件，只需使用 <code>ln -s</code> 在 Home 目录创建一个软链。</p> 
<pre><code class="shell">.bash_profile -&gt; /Users/xxx/Dropbox/bash_profile
</code></pre> 
<p>这个文件里面我们可以配置 shell 的 locale 信息，比如:</p> 
<pre><code class="shell">export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
</code></pre> 
<p>或者是 Go 的配置:</p> 
<pre><code class="shell"># Go
export GOPATH=$HOME
export GOPATH=$HOME/go
export GOBIN=$HOME/go/bin
</code></pre> 
<p>或者是一些常用的但是比较长的命令的 alias:</p> 
<pre><code class="shell">alias jcs="codesign -dvvv --entitlements :-"
</code></pre> 
<p>甚至可以写一个 shell 函数进来:</p> 
<pre><code class="shell">unproxy() {
    unset http_proxy
    unset https_proxy
    echo "Proxy Unset."
}
</code></pre> 
<p>这些写进 <code>.profile</code> 文件的东西在登录后，在任意路径下直接使用。把常用命令放进来是一个不错的选择。</p> 
<p>通常情况下修改完 <code>.profile</code> 之后我们都需要 <code>source</code> 一下让它生效:</p> 
<pre><code class="shell">source ~/.profile
</code></pre> 
<p>那么 source 命令和直接执行它有什么区别呢？感兴趣的读者朋友可以看看这一篇文章:<a href="https://blog.csdn.net/violet_echo_0908/article/details/52056071">Linux下source命令详解 - 在努力！ - CSDN博客</a></p> 
<p>简单来说就是使用 <code>sh filename</code> 与 <code>./filename</code> 来执行脚本的时候，shell 本身会创建一个子 shell 来执行这个脚本。所以在子 shell 里的变量并不会影响到当前的这个父 shell。而 <code>source</code> 执行的时候，并不会创建子 shell 而是直接就在当前 shell 执行了，所以这里面什么 <code>export</code>, <code>alias</code>之类的东西就直接在当前 shell 生效了。</p> 
<h2>五、iTerm2</h2> 
<p><img decoding="async" src="https://www.iterm2.com/img/logo2x.jpg" alt="" /></p> 
<p>macOS 自带的 Terminal.app 已经足够好用，虽然默认是白色底的，字体也比较小，但是你可以在 Preferences 里面修改 Profiles 和字体。在 macOS Mojave 以上你还可以使用 Dark Mode 来让它变成黑色的。</p> 
<p>不过还有比他更好用的终端 App — <a href="https://www.iterm2.com/downloads.html">iTerm2</a>。</p> 
<p>iTerm2 有很多非常实用的 Feature，我最常用的有几个:</p> 
<ol> 
 <li>自定义外观和 Profile <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/iterm2.png" alt="" /></p> <p>iTerm2 可自定义的外观项比 Terminal 的多，而且还挺酷炫的。最近更新的版本还可以在顶部加入 Status Bar 显示 CPU/Mem 以及当前路径的信息。虽然我不怎么用但是可以看到 iTerm2 的进化速度比 Terminal 快多了。一旦习惯了 iTerm2 的 UI 就回不去了。</p> </li> 
 <li> <p>实用的分屏功能</p> <p>Terminal 虽然也自带分屏和 Tab，但是 iTerm2 可以通过 <code>cmd+d</code> 和 <code>cmd+w</code> 来新建/关闭当前分屏，通过 <code>cmd+[</code> 和 <code>cmd+]</code> 来左右切换分屏。当我需要多任务操作的时候非常有用。比如我在左边看着本地的目录，右边通过 ssh 登录服务器对着服务器的目录，两边做数据交换。</p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/iterm2-split.png" alt="" /></p> </li> 
 <li> <p>随时用全局快捷键呼出的 Hotkey Window</p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/iTerm2-preferences.png" alt="" /></p> <p>在 Preferences 里面选择 Keys -&gt; HotKey -&gt; Create a Dedicated Hotkey Window… 之后可以创建一个专门对应全局快捷键的终端窗口。按下自定义快捷键之后就会 slide in。虽然我自己用的不多但这是 iTerm2 挺受欢迎的一个特性。</p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/iterm2-hotkey-window.png" alt="" /></p> </li> 
 <li> <p>实用的小细节</p> 
  <ul> 
   <li>可以按住 <code>cmd</code> 使用鼠标打开链接</li> 
   <li>Tab 顶部会显示当前的任务和状态</li> 
   <li>分屏的时候会让不活动的屏幕变浅色</li> 
  </ul> </li> 
</ol> 
<p>iTerm2 还有许多有用的小细节，在日常使用的时候不会觉得有什么了不起，但是当你到别人的机器上用什么都没改过的 Terminal 的时候忽然就发现：我擦，怎么这么难用？这就是好的设计应该有的感觉。</p> 
<h2>六、快捷键</h2> 
<p>大部分终端 App 都会支持一些非常实用的快捷键操作。我们无论使用哪一个 App，只要是经常用的 App，经常用的动作，都应该学习使用快捷键。</p> 
<p>在终端中我比较常用的几个快捷键有:</p> 
<table> 
 <thead> 
  <tr> 
   <th>Key</th> 
   <th>Action</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>alt+left</td> 
   <td>往左跳一个单词</td> 
  </tr> 
  <tr> 
   <td>alt+right</td> 
   <td>往右跳一个单词</td> 
  </tr> 
  <tr> 
   <td>ctrl+w</td> 
   <td>向左删掉一个单词</td> 
  </tr> 
  <tr> 
   <td>ctrl+u</td> 
   <td>删掉一整行</td> 
  </tr> 
  <tr> 
   <td>ctrl+l</td> 
   <td>clear 整个终端的输出</td> 
  </tr> 
  <tr> 
   <td>cmd+enter</td> 
   <td>iTerm2 的全屏/取消全屏快捷键</td> 
  </tr> 
 </tbody> 
</table> 
<p>不同的终端 App 设置的快捷键可能不一样但都大同小异，完整的 iTerm2 Cheat Sheet 在这里大家可以参考一下: <a href="https://kapeli.com/cheat_sheets/iTerm2.docset/Contents/Resources/Documents/index">iTerm2 Cheat Sheet - Kapeli</a></p> 
<p>有一个叫做 <a href="https://mediaatelier.com/CheatSheet/">CheatSheet</a> 的 App 可以长按 ⌘ 来查看当前 App 的所有快捷键，不过体验并不是很好。一般我会选择 Google: App + Cheat Sheet 来获得该 App 的 Cheat Sheet 列表。</p> 
<p>比如 Tower 就整理了一份不错的 Xcode Cheat Sheet 在这里: <a href="https://www.git-tower.com/blog/xcode-cheat-sheet/">Xcode Cheat Sheet</a>。对于 iOS 开发者来说，每天面对 Xcode 的时间贼多，不掌握点快捷键怎么可以呢？</p> 
<p><img decoding="async" src="https://www.git-tower.com/blog/content/posts/22-xcode-cheat-sheet/xcode-cheat-sheet-large01.png" alt="" /></p> 
<h2>七、参考资料</h2> 
<ul> 
 <li><a href="https://akaedu.github.io/book/ch31s01.html">Shell的历史</a></li> 
 <li><a href="https://www.theverge.com/2019/6/4/18651872/apple-macos-catalina-zsh-bash-shell-replacement-features">Apple replaces bash with zsh as the default shell in macOS Catalina - The Verge</a></li> 
 <li><a href="https://blog.csdn.net/violet_echo_0908/article/details/52056071">Linux下source命令详解 - 在努力！ - CSDN博客</a></li> 
</ul> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/3815">macOS 效率系列 06: 眼观六路，方能运筹帷幄 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3796">macOS 效率系列 05: 能让机器做的事情就不要自己动手 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3776">macOS 效率系列 04: 快捷键是所有人的必修课 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3770">macOS 效率系列 03: 全键盘操作的快捷入口 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3726">macOS 效率系列 02: 在终端 Terminal 中运键如飞 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3712">macOS 效率系列 01: 窗口管理 | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>macOS &#x6548;&#x7387;&#x7CFB;&#x5217; 01: &#x7A97;&#x53E3;&#x7BA1;&#x7406;</title>
        <link>https://justinyan.eth.limo/12D377C5-EC46-4586-82C9-51C52617124A/</link>
        <guid>https://justinyan.eth.limo/12D377C5-EC46-4586-82C9-51C52617124A/</guid>
        <pubDate>Thu, 08 Aug 2019 20:09:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/macOS-productivity-01-cover.jpg" alt="" /></p> 
<p><em>欢迎大家留言或者邮件 <a href="mailto:justin@justinyan.me">justin@justinyan.me</a> 分享你喜欢的效率工具或者效率技巧。</em></p> 
<h2>〇、一些有道理的废话</h2> 
<p>最近做了一次关于效率工具的小分享，工具类的东西，文章简介外加实际上手的效果要大于现场演讲，遂动此念以记之。</p> 
<p>光阴荏苒，日月如梭。有限的时间与精力是每个人每天都要面对的问题。不同的人有不同的选择，绝大多数人在找到一个能用的方法之后就不会再费心思去寻找更加高效的途径。这大概是人类设计的缺陷，为了节能而紧闭窗户。</p> 
<p>这个缺陷带来的后果就是本来就稀缺的时间与精力由于不采用更加高效的方法去解决问题而变得更加稀缺。</p> 
<p>“macOS 效率系列”将介绍在 macOS 系统上实用的工具来帮助读者朋友们提高解决问题的效率。</p> 
<p>工具只是表象，其背后是对高效的追求，是对重复机械劳动的不屑，是使用工具来进行自我增强。</p> 
<p><img decoding="async" src="https://m.media-amazon.com/images/M/MV5BMmNlYzRiNDctZWNhMi00MzI4LThkZTctMTUzMmZkMmFmNThmXkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_.jpg" width="256" /></p> 
<p>1968 年斯坦利·库布里克执导的电影<a href="https://zh.wikipedia.org/wiki/2001%E5%A4%AA%E7%A9%BA%E6%BC%AB%E9%81%8A_(%E9%9B%BB%E5%BD%B1)">《2001太空漫遊》（2001: A Space Odyssey）</a>是名留影史的佳作。其中有一幕是两拨原始的人猿部落为了争抢有限的水和食物等资源经常互相斗殴。这种情况下身体强壮的人猿就比较容易取胜。某天，一只身体瘦弱的人猿在巨兽的尸骨旁边捡到一根骨头。他尝试着敲击巨兽的头骨，发现坚硬的头骨居然能被打破——他发现了使用工具来自我增强的方法。于是他把这个想法分享给了部落的其他人猿。在下一次部落冲突的时候，手持巨兽骨头的人猿把对方打得屁滚尿流。这就是工具的力量。</p> 
<p>我们在生活与工作中经常会遇到重复的机械劳动，有的人习惯了一直重复，有的人则选择使用工具或者制作工具，让工具和机器替自己去重复。</p> 
<p>我想很多人其实并不是不想提升效率，只是不知如何下手，让我们通过"macOS 效率系列"抛砖引玉，希望能帮到想要高效工作的读者朋友们。</p> 
<h2>一、窗口管理</h2> 
<p>Windows 操作系统自带的窗口管理做得不错，支持鼠标拖拽吸附左右以及 <code>Win + left</code>，<code>Win + right</code>等快捷键。我们经常需要一边开着文本编辑器或者其他工具，另一边开着浏览器查资料。这种时候左右窗口布局就是非常好的辅助。</p> 
<p>macOS 系统原生并未支持此项功能，但是有不少优秀的 App 可以实现“窗口管理”(Window Managment)。</p> 
<h3>1. Magnet ($1.99)</h3> 
<p><img decoding="async" src="https://magnet.crowdcafe.com/imgs/icon.png" width="128" height="128" /></p> 
<p>官网: <a href="https://magnet.crowdcafe.com/">Magnet – Window manager for Mac</a></p> 
<p>Magnet for Mac 可以实现像 Windows 操作系统一样的体验，把窗口拖拽到左右边缘即可吸附并放大填满半个屏幕。同时也支持多个快捷键和多种布局，比如上下布局和四格布局。</p> 
<p><img decoding="async" src="https://magnet.crowdcafe.com/imgs/design-4.svg" alt="" /></p> 
<p>Magnet 是我曾经常用的窗口管理工具，但是向上拖动把窗口放大的时候经常触发 macOS 自己的多 workspace 预览功能，有点烦，后来改用 Hammerspoon 就没再使用这个 App 了。</p> 
<p>可以在 <a href="https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=441258766&amp;mt=12">Mac App Store 购买</a></p> 
<h3>2. Moom ($10)</h3> 
<p><img decoding="async" src="https://manytricks.com/moom/moomicon256.png" width="128" height="128" /></p> 
<p>官网: <a href="https://manytricks.com/moom/">Moom · Many Tricks</a></p> 
<p><a href="https://manytricks.com/">Many Tricks</a> 出品的窗口管理工具。</p> 
<p>特色是当鼠标在窗口左上角红绿灯那里悬停的时候可以选择左右上下的自动贴边布局。</p> 
<p><img decoding="async" src="https://manytricks.com/moom/images/v2/the_palette@2x.png" alt="" /></p> 
<p>同时也支持快捷键操作，也支持自定义布局。</p> 
<p><img decoding="async" src="https://manytricks.com/moom/images/v2/arrange_windows_s.png" alt="" /></p> 
<p>价格 $10，可以在<a href="https://manytricks.com/moom/">官网购买和下载体验版本</a>。</p> 
<h3>3. Slate (Free)</h3> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/08/slate-app-con.png" width="128" height="128" /></p> 
<p>Slate 是一个开源项目，GitHub 地址: <a href="https://github.com/jigish/slate">jigish/slate: A window management application (replacement for Divvy/SizeUp/ShiftIt)</a></p> 
<p>Slate 基本上没什么 UI，所有的自定义通过配置文件来实现，默认的配置文件在<a href="https://github.com/jigish/slate/blob/master/Slate/default.slate">GitHub这里</a>。</p> 
<p>可以在 GitHub Page 上直接<a href="[.dmg](http://slate.ninjamonkeysoftware.com/Slate.dmg)">下载 .dmg</a>或者<a href="http://slate.ninjamonkeysoftware.com/versions/slate-latest.tar.gz">下载 .tar.gz</a>文件。</p> 
<p>配置文件的格式大概是这样的:</p> 
<pre><code># Push Bindings
bind right:ctrl;cmd  push right bar-resize:screenSizeX/3
bind left:ctrl;cmd   push left  bar-resize:screenSizeX/3
bind up:ctrl;cmd     push up    bar-resize:screenSizeY/2
bind down:ctrl;cmd   push down  bar-resize:screenSizeY/2
</code></pre> 
<p>同时 Slate 还支持用 JS 文件来实现更加动态和复杂的配置，只需创建 <code>~/.slate.js</code> 即可。</p> 
<p>JS 配置文件的语法与文档可以<a href="https://github.com/jigish/slate/wiki/JavaScript-Configs">参考这里</a>。</p> 
<h3>4. Hammerspoon (Free)</h3> 
<p><img decoding="async" src="http://www.hammerspoon.org/images/hammerspoon.png" width="128" height="128" /></p> 
<p>官网: <a href="http://www.hammerspoon.org/">http://www.hammerspoon.org/</a></p> 
<p>GitHub 地址: <a href="https://github.com/Hammerspoon/hammerspoon">https://github.com/Hammerspoon/hammerspoon</a></p> 
<p>Hammerspoon 是我目前在使用的工具，它其实是一个自动化工具，可以做的事情非常多，窗口管理只是其中的一个。</p> 
<p>Hammerspoon 本身是跑在 macOS 上的一个 App，通过 Lua 虚拟机可以运行 Lua 脚本。用户通过 Lua 脚本和 Hammerspoon App 之间进行通信。Hammerspoon 提供了许多系统能力，以 Lua API 的形式暴露给用户脚本层。</p> 
<p>Hammerspoon 本身是开源的的，现在也有许多基于 Hammerspoon API 实现的开源组件可供调用，所以我们只需短短几行代码，就可以实现非常酷炫的窗口布局。</p> 
<pre><code class="lua">local tiling = require "hs.tiling"
local hotkey = require "hs.hotkey"
</code><p><code class="lua">hotkey.bind({"ctrl", "alt"}, "h", function() tiling.cycleLayout() end)<br /> tiling.set('layouts', { 'gp-vertical', 'columns' })<br /> </code></p></pre>
<p></p> 
<p>可以通过<a href="https://github.com/Hammerspoon/hammerspoon/releases/latest">官网下载</a>安装，然后创建初始化脚本 <code>~/.hammerspoon/init.lua</code>。参考一下官网的<a href="http://www.hammerspoon.org/go/">Getting Started</a>文档和<a href="http://www.hammerspoon.org/docs/">Hammerspoon Docs</a>，就可以愉快地实现自动化了。</p> 
<h2>二、未完待续</h2> 
<p>工具只是表象，最重要的其实是寻找高效方法的思维方式。现在有不少社区或者自媒体会分享各种效率工具，想要找到这些东西并不难，本系列不过总结一二，希望能对读者有所帮助。</p> 
<h2>相关链接</h2> 
<ul> 
 <li><a href="https://justinyan.me/post/3796">macOS 效率系列 05: 能让机器做的事情就不要自己动手 | 枫言枫语</a></li> 
 <li><a href="https://justinyan.me/post/3776">macOS 效率系列 04: 快捷键是所有人的必修课 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3770">macOS 效率系列 03: 全键盘操作的快捷入口 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3726">macOS 效率系列 02: 在终端 Terminal 中运键如飞 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/3712">macOS 效率系列 01: 窗口管理 | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 11 &#x8C08;&#x8C08; WWDC 2019</title>
        <link>https://justinyan.eth.limo/EBC1138B-9FF4-4A7F-B19B-45EFE5B6011C/</link>
        <guid>https://justinyan.eth.limo/EBC1138B-9FF4-4A7F-B19B-45EFE5B6011C/</guid>
        <pubDate>Fri, 07 Jun 2019 01:18:44 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/06/podcast-011.jpg" alt="Vol. 11 谈谈 WWDC 2019 " /><br /> 主播: <a href="https://twitter.com/pkuno">徐涛</a><br /> 嘉宾: <a href="https://twitter.com/cyanapps">钟颖</a> | <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></p> 
<p>Apple WWDC 2019 于美国时间 6 月 3 日在 San Jose 举办。今年我有幸以 Developer 的身份到 WWDC 现场参加。2016 年我曾经参加过一次不过那时候只是在这边出差顺便去看了一眼。</p> 
<p>今年苹果诚意满满，不仅在硬件上给出了性能怪兽，价格突破天际的 Mac Pro，还带来了 UIKit for Mac 以及跨（Apple）平台的 SwiftUI 等多项让开发者非常惊喜的技术。</p> 
<p>这次在湾区我见了几位老朋友也认识了一些新朋友。朋友 <a href="https://twitter.com/louisyiwenluo">Louis</a> 跟我说想介绍我给《声东击西》的主播，我可是《声东击西》的听众啊😂。于是非常荣幸地做客播客<a href="https://podcasts.apple.com/us/podcast/36%E6%B0%AA-%E7%A1%85%E8%B0%B7%E6%97%A9%E7%9F%A5%E9%81%93/id1361458105">《硅谷早知道》</a>节目，和同来参加 WWDC 的国内知名 iOS 开发者<a href="https://twitter.com/cyanapps">钟颖</a>一起录制了一期节目，从开发者的角度谈谈今年 WWDC 的一些看法。</p> 
<h3>相关信息</h3> 
<ul> 
 <li><a href="https://twitter.com/cyanapps">钟颖</a>: Cyan，曾在数家大公司做iOS开发，也是Pin、Timy和 JSBox的开发者，目前任职于 iOS Outlook Mobile 团队。</li> 
 <li><a href="https://twitter.com/pkuno">徐涛</a>: 现36氪海外内容总监，也是播客《硅谷早知道》、《声东击西》和《到海外去》的主播。</li> 
 <li><a href="https://www.etw.fm/">声东击西播客官网</a></li> 
 <li><a href="mailto:justin@justinyan.me">听众反馈信箱 justin@justinyan.me</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5723;&#x6BCD;&#x9662;&#x5927;&#x706B;&#x3001;&#x81EA;&#x62CD;&#x548C;&#x7A00;&#x7F3A;</title>
        <link>https://justinyan.eth.limo/124522DA-99B9-41BF-8536-FA176926B192/</link>
        <guid>https://justinyan.eth.limo/124522DA-99B9-41BF-8536-FA176926B192/</guid>
        <pubDate>Sun, 21 Apr 2019 11:41:13 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/04/Notre-Dame-de-Paris.jpg" alt="圣母院大火、自拍和稀缺" /></p> 
<p>今天早上（2019-04-16）各大社交平台都在发巴黎圣母院大火的事情。很多人在微信朋友圈发自己以前去巴黎圣母院时拍下的照片，微博也有 <a href="https://s.weibo.com/weibo?q=%23%E6%88%91%E5%92%8C%E5%B7%B4%E9%BB%8E%E5%9C%A3%E6%AF%8D%E9%99%A2%23">#我和巴黎圣母院#</a> 这样的话题供大家发自拍。</p> 
<p>我刚看到第一个发照片时有些不明所以，但是看到多个人都在发巴黎圣母院的时候，我第一时间 Google 了一下相关新闻，才知道圣母院大火的事情。这让我想起去年 9 月巴西国家博物馆的火灾。</p> 
<p>巴西国家博物馆的主体建筑有 200 年的历史，曾是葡萄牙王室的行宫。1889 年新成立的共和政府将其改造成博物馆，并向普通民众开放。馆藏据说有 2000 万件，包括有上万年历史的南美最早人骨化石“卢西亚”和世界上最大的陨石——渥拉斯顿环形山陨石等非常珍贵的藏品。播客“博物志”也对这场灾难做了一期节目：<a href="https://bowuzhi.fm/podcast/121">#121. 「这块陨石以后就是巴西国宝了。」 — 博物志</a>。我就是从这期节目知道这场灾难的。</p> 
<p>但是显然去年的这场灾难和今天发生的巴黎圣母院相比，热度完全不可同日而语。今天我在做纸笔书写的 FWP 思维练习时（<a href="https://justinyan.me/post/3599">参见此文</a>）自然地写到了相关的思考。我是通过微信朋友圈、Twitter、微博等社交平台知道这件事情的，这是社交平台最大的特点：<strong>对于有一定规模的大事件，传播速度极快</strong>。但是除此之外呢？Social Media 几乎给不出多少有效的信息。像是火势多大，造成的损失几何，火灾的原因等等。这些专业的分析是需要专家来做，由权威来发布的。而社交平台上极少有个体有能力可以到这点。这是理所当然的事情，毕竟绝大多数人都只是普通人，这也是我们分工合作的社会的基础。</p> 
<h2>发布和圣母院自拍的意义</h2> 
<p>充斥在社交平台上的“我和圣母院”的自拍让我颇感兴趣，他们发自拍的意义是什么？我觉得可以从几个角度来看：</p> 
<ol> 
 <li>巴黎旅行的炫耀</li> 
 <li>有爱有文化人设的塑造</li> 
 <li>蹭热点蹭热度</li> 
</ol> 
<p><strong>经济学的基础是“稀缺”</strong>，上述三点事实上归根结底都是在表达一个“稀缺性”，是一种对自己拥有“稀缺资源的炫耀”。怎么说？</p> 
<ol> 
 <li><strong>巴黎旅行的炫耀</strong> <p>虽然今天中国出境游的人数在逐年递增。在 2018 年中国出境游达到 1.4 亿人次，其中去法国的大约是 230 万人次。（注意：单位是“人次”而不是“人数”，数据参考文章底部链接。）假设这个单位是人数吧，也就是 230 万人没有重复的，那就是大约一千个人里面有一个人去了法国（而且不一定去了巴黎）。这里只讨论 2018 年一年的，假设十年内去法国的人完全不重复，并且过去十年每年都是 230 万人去（实际上越早时间人次越低），那么撑死也就是<strong>每一百个人里有一个人在过去十年去过法国</strong>。</p> <p>这样的人数放在中国的总人口来说依然是少数。所以“去巴黎旅行”这件事情在中国依然是一种“稀缺性资源”，而当时留下的照片就是自己“拥有稀缺资源”的证据。今天正好有这么一件事情，确实是一个好时机对自己的社交圈进行一次广播，提升一下社交印象分。</p> </li> 
 <li> <p><strong>有爱人设的塑造</strong></p> <p>如果只是普通的旅行照片，那炫耀出来的仅仅是“此时此刻我在哪里”的稀缺性，但在今天发出来却可以配上三两句话表达一下“惋惜”之情。而这种“惋惜”是建立在“我知道巴黎圣母院有多厉害”的基础之上的。</p> <p>这就比“我去过巴黎圣母院”要更进一步了。毕竟了解一座古老建筑物的历史，馆藏，在人类社会的地位等等这些额外信息，都是需要付出成本的。虽然普通人没法像高晓松一样对着摄像头一侃就是俩小时，但是发两句简单的漂亮话还是可以做到的。这其实是一种成本极低的人设塑造，而人设塑造为什么重要呢？就在于“有爱”、“有文化”也是一种“稀缺资源”。</p> <p>事实上发一条朋友圈或者微博，对远在地球另一端的一场灾难表达一下爱心，可能就是一个人能做到的最大的“有爱”了。法国总统马克龙现在表示要对全世界筹款重建圣母院，在朋友圈里表示痛心疾首的人群中，又会有多少人会主动去捐款呢？</p> <p>这正好是我最近所读的《薛兆丰的经济学讲义》一书中讨论过的一个例子，即人的爱心是非常有限的，这是一个客观事实。而人类社会又是紧密联系互相依赖的，那么这时候如果让人类社会跨域有限的爱心来互相帮助呢？<strong>答案是“市场”</strong>。所以很难说马克龙的纯粹“慈善募捐”能取得多大成效。假如这场“筹款”并不是一种募捐而是一种市场行为，做个不恰当的比喻：募捐最多的企业可以获得圣母院塔尖大 LOGO 的品牌露出之类的，那么也许会有更好的募捐效果也不一定。</p> </li> 
 <li> <p><strong>蹭热点蹭热度</strong></p> <p>对于微信公众号、微博大 V 之类的靠流量卖钱的人或者机构来说，流量即收入。现在有个天降热点，那当然不可暴殄天物，不仅要蹭，而且要蹭得精彩，蹭得高明，毕竟互联网时代群众的注意力极易被转移，<strong>热点就是一种时间上的稀缺性资源</strong>。况且像“圣母院大火”这样的热点，就是个非常容易往正面形象走的一个命题作文，只要中规中矩，就不会制造出负面文章。而自媒体如果想从这么多批量制造的文章中脱颖而出，可能就得写一些与众不同的观点出来。制造与众不同的过程，也是在制造自己文章的稀缺性。</p> <p>以前我们在聊<a href="https://justinyan.me/post/3421">郑也夫的《后物欲时代的来临》一书时曾经说过消费主义社会通过堆砌物质，或曰资源来彰显自己的能力</a>。其实拥有大量优质的物质也是一种“稀缺性”，毕竟优质即稀缺，能够拥有大量优质物品的人当然是稀缺的。</p> </li> 
</ol> 
<p>所以上面写了这么多关于发自拍，蹭热度之类的观点，好像我是在说这些东西不好，这些东西没有价值。其实不是。如果大家发朋友圈发微博没有任何好处，无论这个好处是炫耀也好，自我满足也好，人设塑造也好，只要没有适当的激励那就不会有人去发，我也就看不到这条消息，也就不知道原来发生了这么大一件事情。所以从信息触达的角度来看，当然是一件好事，但是对于信息传播过中信噪比来说就不一定了，毕竟从这么多人的自拍中想要找到有效信息的成本还是挺高的。所以从信息接收者来说，大量的自拍显然不是一种“优质信息”。</p> 
<p>对于大多数发图的人来说，有机会发一发陈年自拍，接受一些赞和围观，满足了这些心理需求就已经挺好了。但是如果发表的人能够发出“对接收者来说更有价值”的信息，是否会更好呢？根据我对薛兆丰的经济学科普的理解，我觉得绝大部分发表者是不会发出比现在这些“更有价值”的东西的，那些更有价值的东西会由专家来发布。这是一个客观的常态，因为“有价值的东西”本身就是一种“稀缺的东西”。</p> 
<p>对我来说，我通过朋友圈知道这件事情，那就已经足够了，剩下的信息我会通过其他渠道来获取，比如专业的新闻稿，比如博物志播客的评论等等。</p> 
<h2>抱怨与指责，来自我们的不理解</h2> 
<p>前几天写完上述文字之后我没有立刻发布，因为我并不知道是否要提及“做到更好”。首先我得定义什么是“更好”，而一旦我去定义这个词，我就发现这实际上就是一种“稀缺”资源。而“稀缺”本身就是一种大众所不具备的东西，所以似乎并没有必要去“做到更好”。</p> 
<p>但其实这个逻辑是错误的，是因果倒置的。我们不应该因为“稀缺”而不去做，反而是很难做到所以才“稀缺”。</p> 
<p>未来的社会应当是会随着人们的认知水平，教育水平的普遍提升而逐步改善的。<strong>“发表无用信息”来满足自己的炫耀心理需求的行为会随着时间的推移而逐渐减少，就好像蛇精的照片会随着大众越来越不买账而逐步减少一样</strong>。不过根据我的观察，现在是美颜水平变高了，让修图后的人更加接近自然人，但是加上极重美颜的照片已经充斥各大社交平台，说明重美颜依然有其市场，目前无法识别重美颜或者不关心是否美颜的人还是居多。</p> 
<p>今天我看到网络上有关于“如何看待朋友圈发圣母院合照的行为”之类的讨论，有人在批判发照片的行为，也有人在为发照片的行为正名。双方的措辞都稍显激烈。</p> 
<p>我想起《薛兆丰的经济学讲义》的前言，作者说：</p> 
<blockquote>
 <p> 它助你变得更理性、悦纳和进取。你将学会把愿望和结果分开来评判（理性）；你将学会先去探究现象背后的原因，而不是动不动就抱怨和指责（悦纳）；你将忘记经济学家们津津乐道的均衡世界，而着迷于由创新精神牵引的非均衡的开放社会（进取）。 </p>
</blockquote> 
<p>我在看到朋友圈里充斥这些照片的时候是有感到不舒服的，但由于最近一直在读这本经济学的科普，我很自然地就想要去分析这种“不舒服”背后的原因。</p> 
<p>做事从容应对是一个表象而不是一个人的品质或特性，而是由于此人有足够的能力解决他需要面对的问题。同样的，能够宽容待人也不是一个人的品质或特性，而是因为此人足够理解他所面对的不符合预期的事情背后的原因。</p> 
<p>读《薛兆丰的经济学讲义》并不能让我成为一名经济学专家，但是我非常喜欢作者笔下的经济学那种反直觉的思维方式。能够采用不同的角度来看待同一件事情，我们就可以用不同的结论来反思同一件事情，也就能够理解不同的人，能够审视不同的结论。</p> 
<p>我们在生活中会遇到很多不如意的事情，不符合预期的事情。遇到这些事情会让我们产生负面情绪。如果仅仅停留在负面情绪里我们是得不到进步和解脱的，追求表面的“宽容”也是没有意义的。惟有采用多元的思考，理解事物背后的原因，才有可能辨别真伪，寻找问题的解决之道。这件事情说起来容易做起来难，但是一个人如果不做难的事情，那他就会一直在原地踏步，我想喜欢原地踏步的人应该不会很多。</p> 
<p><em>2019.04.16 - 04.18</em></p> 
<p><em>于自居</em></p> 
<h2>参考资料</h2> 
<ul> 
 <li><a href="https://finance.sina.com.cn/roll/2019-01-08/doc-ihqfskcn5256140.shtml">2018中国出境游达1.4亿人次 已成南极游“超级大国”|中国出境游<em>新浪财经</em>新浪网</a></li> 
 <li><a href="http://www.sohu.com/a/283518300_100191052">2018年中国赴法国游客数预计将达230万人次_旅游</a></li> 
 <li><a href="http://www.chinaqw.com/hqly/2018/10-29/206592.shtml">法国旅游大数据发布：中国游客数量增多消费下降-中国侨网</a></li> 
 <li><a href="https://book.douban.com/subject/30280804/">薛兆丰经济学讲义 (豆瓣)</a></li> 
 <li><a href="https://justinyan.me/post/3421">每周读书 #149 不要成为被消费操控的人——《后物欲时代的来临》 | 枫言枫语</a></li> 
 <li><a href="https://bowuzhi.fm/podcast/121">#121. 「这块陨石以后就是巴西国宝了。」 — 博物志</a></li> 
 <li><a href="https://justinyan.me/post/3599">为什么加到 To Do List 里的任务就永远 To Do 了？ | 枫言枫语</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 10 &#x6211;&#x4EEC;&#x7684;&#x751F;&#x6D3B;&#x7F3A;&#x4E4F;&#x8BD7;&#x610F;&#x5417;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/97F7E93E-DA33-46EB-ACFD-351C656F9812/</link>
        <guid>https://justinyan.eth.limo/97F7E93E-DA33-46EB-ACFD-351C656F9812/</guid>
        <pubDate>Sun, 07 Apr 2019 17:34:54 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2019/04/podcast-010-shiyi.jpg" alt="Vol. 10 我们的生活缺乏诗意吗？" /></p> 
<ul> 
 <li>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<h2>相关信息：</h2> 
<ul> 
 <li>插曲: 坂本龍一 (Ryuichi Sakamoto) - andata, Raindrops, Funereal</li> 
 <li>结尾曲: Kings of Convenience – Winning a Battle, Losing the War</li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li><a href="http://justinyan.me/post/3652">每周读书 #153 我和缺乏诗意的我，在看曾经的我，写诗 ——廖伟棠《春盏》</a></li> 
</ul> 
<h3>节目收听方式</h3> 
<p>推荐使用泛用型播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听本节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://himalaya.com/en/show/856006">Himalaya</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="https://music.163.com/#/djradio?id=792181476">网易云音乐 - 枫言枫语播客</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #153 &#x5ED6;&#x4F1F;&#x68E0; - &#x300A;&#x6625;&#x76CF;&#x300B;</title>
        <link>https://justinyan.eth.limo/47906576-EB5B-49C0-90A9-BD05B0A836D1/</link>
        <guid>https://justinyan.eth.limo/47906576-EB5B-49C0-90A9-BD05B0A836D1/</guid>
        <pubDate>Sat, 06 Apr 2019 17:55:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/04/meizhoudushu153_chunzhan.jpg" alt="每周读书 #153 我和缺乏诗意的我，在看曾经的我，写诗——廖伟棠《春盏》" /></p> 
<p>这个世界缺乏诗意。</p> 
<p>这个表述不够精确，应该是我自己和我观测范围内的我眼中的世界，看上去缺乏诗意。不过一旦我犹豫表述是否精确时，我便已失去诗意。</p> 
<p>最近读起诗人廖伟棠的诗集《春盏》。我先是听了他在《看理想》上的电台节目——《诗意：关于新诗的三十种注脚》（截至本文写作之时，节目尚未连载结束）。我听了前九集，颇有感慨。到底是什么时候开始，我的世界，和我观测范围内的，我眼中的世界，开始缺乏诗意了呢？</p> 
<p>2008 年以前我写诗，那时候我在上学。</p> 
<p>学校是压抑苦闷的地方，囚禁着无数涌动炽烈的青春。那时的月亮大到从十五的窗前逃逸，吴刚的斧子在诗句间清晰可辨；现在的月亮被吞没在城市的夜晚，如晨间的白雾四散，霓虹荡漾的高塔取代斜阳的浪漫。</p> 
<p>每个人手上都有一部手机，每个人的眼神迷离，不同的 AI 在远端推送不同的内容给不同的大脑，吸引我们不停地看下去。我想起曾经被妖魔化的电视机，如今已成为一个时代的缩影。</p> 
<p>为什么我忘记了曾经的我写诗，为什么我停在十字路口，一袭白裙踏雨而来可我却无法穿越车窗，握住冰冷的伞柄？斑马线上匆匆的脚步声像迁徙的野牛群，我坐在车里悼念不知所踪的诗意。</p> 
<h2>诗人廖伟棠</h2> 
<blockquote>
 <p> 吾乡</p> 
 <p> 黄昏中她微倦。<br /> 吾乡在珠江以西<br /> 像一个小农妇，为傍晚莫名伤感，<br /> 说着一些别人无从意会的语言。<br /> 她那些清丽，已经难以分辨<br /> 是九十年代的新兴，还是二十年代的旧情。<br /> 可是我的名字就叫做新兴呵，她的蓝花小襟，<br /> 她的晚云揉碎了荡漾。<br /> 她准备晚饭，已经做不出更多新奇口味，<br /> 而水未沸腾前她尤独倚门，<br /> 向隆隆的未来索一把小葱。<br /> 吾乡吾乡，那些鸟铳倭刀我全卖掉，<br /> 梦中涨涌的大雾如酒，吃光了我的马头。<br /> 我是牵牛人还是蕉红花耶？<br /> 借月光抱住了她白细的肩头。</p> 
 <p> 2011.1.14 返乡（广东新兴县）途中 </p>
</blockquote> 
<p>诗人廖伟棠的故乡在广东，在《看理想》的节目中他用粤语念诗一下就吸引了我。我作为一个潮汕人，虽然粤语说得不标准但是听着格外亲切，像儿时在外婆家吹着夏风听着 TVB 电视般亲切。相比起现代国语来说，粤语和潮汕话与古汉语的关系要更加紧密，许多古诗词的韵脚非得用古汉语来读才能押韵。比如这首刘禹锡的《竹枝词》：</p> 
<blockquote>
 <p> 杨柳青青江水平，<br /> 闻郎江上踏歌声。<br /> 东边日出西边雨，<br /> 道是无晴却有晴。 </p>
</blockquote> 
<p>“平”字和“声”字在粤语中是同一个韵母，但在现代汉语里面已经不是了。最早的诗歌是能歌的，韵律对诗来说是十分重要的。于是听诗人用更靠近古汉语的语言读诗，仿佛一下穿越了几个世纪，那种恍惚的隔离感，要比现实与诗意的差异来得更加强烈。据说诗人廖伟棠很早就在北大旁的万圣书园用粤语念诗了。</p> 
<p>他现在与家人住在香港，摄影与写诗。</p> 
<h2>诗集《春盏》</h2> 
<p>《春盏》是廖伟棠 1996 - 2015 的诗选。有一些诗歌很有趣，有一些诗歌很有距离。但是总得来说非常好读也非常动人，我很喜欢诗人成熟的写作技巧，也很喜欢那种沉稳中带着悲凉的意味，比如《一九八三年夏天》最后一节：</p> 
<blockquote>
 <p> 一九八三年夏天，寂静的村庄神色黯然<br /> 在黑暗中仿佛有雨水滴落我的双手<br /> 我，一个夜了还站在门外的男孩<br /> 凝望着黑暗，突然听见了远方山神的歌唱 </p>
</blockquote> 
<p>有的诗我很欣赏其中的一句：</p> 
<blockquote>
 <p> 而我，我怀抱着写给你的信，在人群中走过，<br /> 像一个被抛弃的女子，不知道有雨点落在自己头上。 </p>
</blockquote> 
<p>这句来自《乡间来信》组诗的《第四封》。当然诗歌不可断章取义，诗歌不可只读金句。可以说这些片段是诗歌的亮点，做个不恰当的比喻，像流行歌的副歌部分。但是即使是流行歌，也不会只有副歌，一定要整首歌听才会完整。诗也是一样的。比如北岛的两句诗：</p> 
<blockquote>
 <p> 卑鄙是卑鄙者的通行证，<br /> 高尚是高尚者的墓志铭。 </p>
</blockquote> 
<p>是非常有名了。但是只知道这两句诗是不完整的，一定要读一下《回答》全诗，才能体会到“我——不——相——信！”四个字的战斗意味。</p> 
<p>本诗选的作品多写爱情主题，很多是写给妻子诗人曹疏影的，也有写给孩子的诗。另外也有乡土的诗歌，也有旅行时异国风情的诗歌。毕竟时间跨度较大，整部诗集收录的作品里，主题和写作手法多样，有些我很喜欢，比如《乡间来信》这组诗，有些我不太感冒，比如西藏主题的几首。每个人的主观喜好不同，但应该都会在这部诗集里找到喜欢的。</p> 
<h2>像一盏厌倦了光华的灯般寂灭</h2> 
<p>写到这里我在想：今天看起来好像非常高雅非常文艺的写作这个职业，在以前也许曾经是非常普通的赚钱养家的工作。这两天我读《对撼法律》这本书，里面xxx提到担心唱片业未来会和电影业一样，变成商业片当道的境况，再也没有人去做出好音乐了。似乎“商业”成了一切美好事物的罪恶的尽头。电影从艺术，从实验，变成商业变成流量骗钱，唱片从创作从音乐，变成搞笑变成口水歌赚钱。钱是这个时代的无法绕过的一个东西。在过去的人类历史上，钱一直都很重要，但是像今天这样以流水线生产为主流的社会结构里，钱的结果使越来越多的人们被送进工厂拧螺丝，工作赚钱和生活体验的分歧越来越大。</p> 
<p>工业革命以后，人类整体的社会生产力大发展，但是个体的重要性却越来越低。具体到互联网这个行业里，能够通过流水线工业化整个生产过程的公司，才能在目前的市场中占据有利地位。而流水线意味着抹平差异，流水线意味着头部的脑袋下达决策，底层的搬砖工只负责搬砖。在这样的过程里，甚至要刻意消除搬砖工与头部决策的差异，以达到整体效率的最大化。显然，这是一种对“个性”非常不友好的流程。</p> 
<p>而诗意，是需要进入个人的世界，和个人的内心交换柔软的部分，互相抚慰伤痕，舔舐新生的鹿角，走进黑夜的柔波的。当生活从“做自己喜欢的事情顺便养活自己”变成了“去大工厂流水线搬砖养活自己然后再好好休息体验生活的美好”时，生活可能就不那么容易美好了。</p> 
<p>想要看到天堂，先得扎根地狱。</p> 
<p>昨天看到 YouTube 上的一个纪录短片，主角是一位住在日本的 B 站 UP 主。她白天在日本公司上班，我脑中浮现的是我对日本公司的刻板印象：十分压抑，极度准时，等级森严。主角下班后脸上的表情当然也不可能是非常阳光的，但是当她谈起在 B 站拍视频的时候却是眉飞色舞的。有一个日本的讽刺漫画是把人比作一个电池，塞进名为公司的电池盒子里，为公司发电，用完即扔，题为“社畜电池”。在日本，公司的汉字是“会社”，“社畜”就是对“上班族”的一种比较极端的调侃。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/04/shechudianchi.jpg" alt="社畜电池" /></p> 
<p>在这样的一个社会主流大背景下，每天被自己不乐意做的“赚钱养家”的事情掏空了身体后的社畜们，下班后自然也不会望月生情，把盏吟诗了。</p> 
<p>这位 B 站 UP 主愿意凌晨 4 点半起床录视频然后再去上班并不是她“非常强大”可以强迫自己做普通人不愿意做的事情，而是因为她扎根于“上班”的现实，录视频这件事情是“快乐的事情”。如果早上起来录视频很快乐，那么当然会有足够的动力克服睡觉的吸引力了。</p> 
<h2>不为任何目的而唱歌</h2> 
<p>人类是需要目标的，人类是害怕孤独的，人类不是纯粹理性的，人类是有七情六欲的。</p> 
<p>人类是复杂的。</p> 
<p>我们之所以讨论理性大概是因为理性是可讨论的。但是人类并不是纯粹理性的。廖伟棠将本作名为“情诗集”，“不只是标明此选本以爱情诗为主，而是我突然想明白了：所有的好诗都是情诗。”人类的情感的部分是温软而美好的，是不应该被工业化的冰冷而冻结的。</p> 
<p>今天早上我在手机上浏览 Instagram 和 YouTube 的时候突然意识到这些内容提供商的“服务”与微信、抖音并无二致——它们都在利用我的弱点，吸引我在上面消耗大量的时间，而这些时间换来的却往往是虚无。内容服务产品可以利用每个使用者的使用习惯来建立适合不同用户的内容推荐，只要抓住你的兴趣点，你很难不陷进去。社交产品则利用的是人类的共同弱点：人类害怕孤独。从这个层面上，能够让人类不孤独的产品是具有积极意义的，但是利用人类喜欢群居害怕独处的弱点让用户沉沦则无疑是个陷阱。</p> 
<p>这个世界有很多陷阱。我想起电影《Wall-E》中，乘坐飞船的胖人类们，出行全靠飞行躺椅，沟通使用电子屏幕，整个社会由机器人来负责生产、清洁、服务、甚至决策的场景。AI 毫无疑问在今天越来越重要，但就像链式反应能力一样，既可以用于原子反应堆发电服务人类，也可以用于原子弹毁灭地球。技术是中立的，全看用的人而已。</p> 
<p>作为一个身在功利主义、实用主义、理性主义盛行的世界里的渺小人类，诗意是我仰望夜空时得以用想象穿越城市的灯火，穿越十字路口溅落的雨滴，穿越迁徙的匆匆脚步，拥抱黑暗与希望的火炬。</p> 
<p>2019.04.06/下午<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #152 Jostein Gaarder - &#x300A;&#x82CF;&#x83F2;&#x7684;&#x4E16;&#x754C;&#x300B;(Sophie&#x26;#8217;s World)</title>
        <link>https://justinyan.eth.limo/56F56001-848F-4499-991C-E74A9EFE977A/</link>
        <guid>https://justinyan.eth.limo/56F56001-848F-4499-991C-E74A9EFE977A/</guid>
        <pubDate>Wed, 03 Apr 2019 13:47:30 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2019/04/meizhoudushu152_sophiesworld.jpg" alt="每周读书 #152 真正的哲学家不会习惯这个世界——贾德《苏菲的世界》" /></p> 
<p>我看书的习惯不是很好，遇到有趣的书放不下，但是感到无聊的书又会很快放弃。这种感觉全凭主观，于是错过了不少佳作。好在有趣的书不少，即便穷尽一生也无法尽读，倒不怕没书可读。刘慈欣的《三体》是我挺喜欢的科幻作品，读第二部也是数度放弃，时隔数年才终于读完，至于《冰与火之歌》的第二卷，则至今还没能耐下性子读下去。</p> 
<p>今天要给大家介绍的这部作品，我最早是在 2006 年前后第一次读到，距离今天（2019年）也有十几年的光景。当时我对西方历史（尤指西欧）所知深浅。此番再读，颇有焕然一新之感。这部作品是挪威作家乔斯坦·贾德于 1991 年出版的哲学史小说——《苏菲的世界》。虽是“小说”，但叙事技巧平平，毕竟在本作中小说只是信息载体，不是作者的重点。</p> 
<p>贾德毕业于挪威奥斯陆大学，念的是斯堪的纳维亚语言和神学，毕业后在芬兰教授高中哲学课达 10 年之久。《苏菲的世界》是贾德写过的做种最畅销的一本，甫一出版即成为挪威 Best Seller，1994 年拿到“德国青少年文学奖”(Deutscher Jugendliteraturpreis)，1995 年英文版出版后更是享誉全球。截止到 2011 年，这部小说已被翻译成 59 种语言，售出超过 4000 万本。</p> 
<h2>这是一部西方哲学史的简明科普</h2> 
<p>小说的主角是一位年仅十四岁的挪威少女苏菲。有天她在自家的信箱里收到了一封神秘来信，上面只有一句话：</p> 
<blockquote>
 <p> 你是谁？ </p>
</blockquote> 
<p>写信的人是一个神秘的哲学老师艾伯特 (Alberto Knox)，以此开始他们的神奇哲学史课程。从古希腊哲学家一路到中世纪，文艺复兴，巴洛克，浪漫主义，存在主义，唯物主义，达尔文主义，最后回到宇宙大爆炸。作者以这两个人物之间的哲学课程，用十四岁女孩能听懂的语言，向读者科普了整个西方哲学史。</p> 
<p>“哲学”在大众普遍的印象里一直是深奥枯燥，晦涩难懂的，但作者在高中授课的经验却使他得以用浅显易懂的语言和生动形象的例子让读者一点就通。小说开头的神秘来信点出了人类的终极问题：</p> 
<blockquote>
 <p> 我是谁？我从哪儿来？要往哪儿去？ </p>
</blockquote> 
<p>刚出生的婴儿对一切都充满好奇，但是在他有自己的意识之前他就已经习惯了这个世界，慢慢变得不那么好奇了。这个世界上绝大多数的人就像始发站到终点站的有轨列车，每天来来去去，一成不变，连车上乘客的数目也能猜个八九不离十。但是真正的哲学家却一直保有好奇心，愿意去探寻司空见惯的日常背后的原因。</p> 
<p>多数读者应该都听说过 Big Bang 大爆炸理论，即我们的宇宙最初是从一个密度极大质量极大的奇点爆炸开的，从无到有，就像魔术师从帽子里突然抓出来一只兔子一样。但是和兔子不同的是，人类会思考是谁把我们拉出来的，我们是什么。习惯了这个世界的人就呆在兔毛的底端，没兴趣了解兔子以外是什么，而哲学家就是呆在兔毛尖端的人，试图通过思考去理解我们所在的世界。</p> 
<p>如果现在在客厅里有一只猫，它面前有颗球滚过去，那只猫多半会直接扑向那颗球。但如果是个人坐在客厅里，那他大概会先看看球滚过来的方向，试图搞明白球滚过来的原因是什么。</p> 
<p>尽管生活的平淡抹去了大多数人的好奇，但人与动物的区别不会消失，只是习惯了世界的人不想爬到兔毛尖端，只想留在兔毛底部安逸地度过而已。</p> 
<h2>温饱之后才有哲思</h2> 
<p>在古希腊时期，苏格拉底，柏拉图和亚里士多德都是公民，也即是“不用干活的人”。当时的社会，劳力工作都由奴隶做了，如此公民才有闲暇余裕可以讨论哲学，思考人生。在现代，工业革命带来社会生产力的极大发展，到今天（2019 年）人类已经基本告别温饱困扰，虽谈不上富裕，但不至于饿死。于是才会有越来越多人的像古希腊的哲学家一样对人生发出思考。</p> 
<p>人终有一死，相较于宇宙洪荒，人类的寿命可谓弹指一瞬。在这一瞬之间，我们该如何生活？人生的意义是什么？人生的价值是什么？这些问题非常重要也非常基础，但显然是我们的教育体系里所缺失的。于是在解决了温饱问题的现代社会，越来越多的人陷入空虚与迷茫。娱乐和商业成为社会的主流，借助感官的刺激来暂时忘却人生之困惑似乎是比较简单可行的一条道路。于是“精神刺激成瘾品”在我们这个时代空前的繁荣起来。这些东西包括合法的咖啡、茶、烟、酒，以及不合法的海洛因、大麻之类（参考《上瘾五百年》）。通过生物药剂的刺激来改变大脑的思考方式可以说是非常简单粗暴的做法，但从另一个侧面也可以看出在一个温饱的社会里，人类是多么无助和孤独。</p> 
<p>在我们所处的社会环境中，学生时代我们被周遭的环境（包括家长、学校等）赋予的意义和目的是考试的分数。在学校里只要考试就好了，只要分数高就行了。这其实是非常单一的衡量标准，从某种程度上来说，就是一个极简版的社会。多数人毕业以后开始工作，这时候要面对的却是一个高度复杂的社会。于是很多人开始产生不适，因为从来没有人跟他说生活在这个社会里，你的价值，你的意义，你的目标应该是什么。而现在社会的主流无疑是赚取足够的财富，或者更多的财富。这在保持了几十年高速经济发展的我国更甚。由于大家习惯了高速增长，一旦有一天增长没那么快了（而这一天是必然会到来或者已经到来了），就感觉自己好像落后了一样。这就是为什么最近这两年会出现鸡汤文，贩卖焦虑文，这些东西一下子热火朝天，一下又人人喊打。相信未来取代贩卖焦虑的东西又会被制造出来，反对这些东西的舆论又会随之而来。这些只是一种现象，产生这些现象背后的原因我个人觉得和人生意义的迷失有密不可分的关系。</p> 
<h2>追求事物的原因是人的天性</h2> 
<p>达尔文发表了《物种起源论》之后颠覆了整个人类自认为与众不同的认知，同时也让“适者生存”这个冷酷的法则为大众所知。我们从学生时代就已经知道竞争的残酷性，无法适应学校和考试制度的人就会被分数淘汰。工作亦如此，在这个社会生存亦如此。人会随着所处的环境的不同而不断调整自己来适应环境，这也是人类文明能够进化到今天的重要基础能力。</p> 
<p>世界一直在变，唯一不变的就是变。如果一个人安于现状，很容易就被时代的潮流淘汰，在高速发展的社会中尤为明显。相较之下，隔壁经济发展相对停滞的日本则可谓生活一眼望到头，不太会产生巨大的动荡。但那也会产生别的问题，过于压抑的社会氛围会让人窒息。贩卖焦虑文能够流行自然也是利用了环境高速发展的特点，“你的同龄人正在甩开你”。这固然是非常不道德的行为，但也反映了在这个社会环境里，一切都在变，如果你不变，很快你就无法适应这个环境了。</p> 
<p>而变的核心在于“好奇心”，在于探寻事物的本质。这是人类的天性，只是多数人在习惯了世界之后就遗忘了。在柏拉图设想的世界里，真实的世界分为两种，一种是我们所看到的世界的形式，另一种则是所有事物的“理型”。比如我们看到的每一匹白马黑马斑马，都是事物的形式，而它们背后有一种“理想的马”存在。前者是我们的感官能够接触到的世界，后者则是不变的本体世界。柏拉图用一个有名的“洞穴寓言”来解释他的理型世界：</p> 
<p>假设有一个地下洞穴，里面有有一条很长的通道通往地面。里面住着几个终生被关在那里的囚犯。他们被绑起来面向墙壁，所以他们看不到背后和出口。远方高处有燃烧的火炬照进来，他们只能看到照射在墙上的影子。有人在洞口搬东西的时候他们就看到墙上的影子在动，有人在外面说话时洞里的回声听来就像影子在讲话。于是他们认为这个世界上所有的东西都是影子。对于他们来说，墙上的影子都是真实的，他们甚至从影子的形象和出场频率中找出规律，研发出一套学问，预告接下来将会发生的事情。</p> 
<p>如果这个时候其中一个人被松绑了，可以转身看看洞口的影子的原型，他会怎么样？他可能会面对强光觉得眼睛不适，有点晕，会觉得看到的都不是真的，更想回到自己熟悉的位置，相信墙上的影子才是真的。</p> 
<p>这时候如果强行把它押到洞口，让他看看外面的世界，看到水里的倒影，有了阳光就有影子，亲眼看到这些东西，他终于相信他看到的是真的。而有了这样的经历之后，他应该不会再愿意回到洞里去讨论影子的学问了。如果他真的回去了的话，洞里的其他人可能会认为他被洞外的人弄坏了眼镜，会嘲笑他，甚至杀掉他。</p> 
<p>柏拉图的这个寓言非常深刻。虽然他是用来解释世界上是可能存在理型世界这种东西的。但是寓言所展现的新旧思想的冲突却是普适的，布鲁诺就因为声称太阳才是宇宙的中心而被烧死，达尔文则发表了《物种起源论》之后被认为是全英国最危险的人。</p> 
<p>但历史告诉我们，只有正确的才会留下来，或者只有留下来的才是正确的。当然这种“正确”也是在流动中变化的，真理是变化的，真理就是变化的这个过程。在高速发展的中国，在仍然发展中的互联网行业里，这种感受会更加明显。作为一个程序员，技术的发展和更迭尤其迅速，前端的技术更是有半年就过气的说法。处于这样的环境中，如果不能保持不断地学习，很快就被在一个又一个的半年中过气了。而保持学习的动力则来自人类的天性：好奇。</p> 
<h2>未曾经验则未有意识</h2> 
<p>李笑来有一句话叫做“学习学习再学习”，意思是先学习学习的方法，然后再去学习。虽然有点讨巧但是道理非常朴实。很多人不是不愿意去学习，而是他根本就不知道该怎么学习。就好像我在马路上开车，经常碰到变道不打灯直接整辆车怼过来的人，也经常遇到晚上开车不开灯的人，还有直接往窗外扔垃圾的人等等。这些人真的有这么坏吗？或者说做出这些行为的人，他们本身都很坏吗？</p> 
<p>其实不然。很多人只是并不知道这样做不好，他们不知道，于是也就没有意识。在他们的想法里，这样做是正确的，非常正常的，非常应该的。而他们既然没有“正确”的概念，当然也就做不出正确的行为。这也就是我们的教育系统非常重要的原因。为什么受教育程度越高的人外在表现越文明？因为受教育程度越高的人就越善良吗？并不是的，而是他们有了这样的经验，知道什么是对的什么是错的而已。</p> 
<p>学习也是同理。很多人停滞不前不是因为他不愿意去学习，而是因为他不知道应该怎么去学习。当然这里面还有一个非常重要的内在原因，即：好奇心。很多人在生活中已经磨灭了自己的好奇心，没有了好奇心也就没有了动力。遇到事情得过且过，能够应付过眼前的问题就好了。这样的心态非常容易造成固步自封，停滞不前。而按照我们现在的社会环境的要求，这样的人很容易就无法满足日益增长的变化需求了。网络上常有所谓“青春饭”、“大龄程序员”之类的调侃的段子。但事实却是，被淘汰的或者说不符合需求的人并不是因为他年龄变大了，而是他不再学习和变化了。如果他处于一个基本不变的社会环境，这种劣势并不会特别突出，但是在瞬息万变的中国互联网行业，这样的人将非常容易上知乎热榜。</p> 
<h2>改变环境或者适应环境</h2> 
<p>这样的说法有点像“你的同龄人正在抛弃你了”的调调。但其实我只是想表达人应该在不断的变化中成长。世界上唯一不变的就是变。但是怎么去变则是你自己的选择。</p> 
<p>“改变不了环境就改变自己”这句话可以说非常俗了。但是我自己其实不喜欢这种含糊其辞模棱两可的短句，它可以被解读的角度越多就越容易成为万金油。但是我认可的一点是“人要学会适应环境”，前提是这个环境是我选择并且接受的。这个世界有非常多的可能性，并不只有当下的无奈。真的不想要这个环境你可以换一个，即使是选择了当下，你也有无数种方式去适应它，并不只有一种。而会因为这句话而陷入烦恼和矛盾的人，往往只看到了其中的一种。就像洞穴寓言里的穴居人一样，只看到眼前的影子，不知道洞外的世界。</p> 
<p>所以并不是说改变自己就是不好的，并不是换一个环境就是糟糕的。这个世界有很多种可能性，你现在所处的只是其中一种。一个真正的哲学家不会轻易地想当然，不会觉得“就应该是这样”，“就只能是这样”，在他还没看到白色的乌鸦之前，他只能说可能没有白色的乌鸦，而不是断言根本不存在白色的乌鸦。</p> 
<p>绝对的好与坏亦不存在。留在自己熟悉的位置看着影子做学问是一种生活方式，安逸而舒适。但如果要我来选的话，我可能更愿意在变化中学习和成长。</p> 
<h2>凡事皆需练习</h2> 
<p>学习“学习的方法”也需要练习。其中一个途径是增强自己的见识和眼界。就像穴居人一样，走出洞穴看看外面的世界。在我们还未有实际经验之前，我们是未有意识的。就像我不曾去滑雪之前，我看再多的 YouTube 视频我也无法体会滑雪的感觉。就像我去过潜水之后再读《Artemis》，读到主角穿着宇航服在太空行走时我才有了一种感同身受的体验。作为一个程序员也是同理，未曾见过优秀的代码之前，只会觉得自己的代码就是最优秀的。</p> 
<p>保持好奇心，多去探究问题背后的本质，这是一种练习，也在练习中积累，积累增长见识，在见多识广中找到“学习的方法”。</p> 
<h2>本书的争议</h2> 
<p>作为一部简明西方哲学史，作者必须在漫长的历史中挑选出具有代表性的哲学家和主要思想。即使作者尽力去做到面面俱到和辩证思考，也难免有他本人的选择倾向。比如书中对于基督教的阐述就不够深入，逻辑学一笔带过之类的。作为一个具有怀疑精神的读者，相信你在读完这本书之后也会抱持一种怀疑态度来看待它。这本书其实是作者的主观选择，带有作者自身的立场和倾向，所以读者朋友们大可不必将它当做一部权威哲学史。从另一个角度讲，如果这本书能够让读者朋友对哲学，对人生终极问题的思考有一定的启发，从而让更多的人开始对哲学感兴趣，开始去学习哲学，那已经非常不错了。</p> 
<p>哲学史上不同的学派对于人生有不同的观点，企图通过一本简单的哲学科普来寻找到自己人生的意义是不可能的。我认为人生的意义也不是留在某个地方等着我们的去挖掘的，而是由自己在流动中，在变化中，在对永远的真，永远的善，永远的美的追求中，伴随着自己的成长而形成，而成熟，而完善的。</p> 
<p>人和动物不太一样，人生是需要有目标的。我希望自己可以在吸收和输出的过程中慢慢去构建和完善自己的人生意义和目标。</p> 
<p>与读者共勉。</p> 
<p>2019.03.24/夜</p> 
<p>于自居</p> 
<h3>关于本作</h3> 
<ul> 
 <li>书名: 苏菲的世界(Sofies verden)</li> 
 <li>作者: 贾德(Jostein Gaarder)</li> 
 <li>译者: 萧宝森</li> 
 <li>出版社: 作家出版社; 第1次 (2007年10月1日)</li> 
 <li>ASIN: B01120WBW6</li> 
 <li>版本: Kindle电子书</li> 
</ul> 
<h3>参考资料</h3> 
<ul> 
 <li><a href="https://justinyan.me/post/3421">每周读书 #149 不要成为被消费操控的人——《后物欲时代的来临》 | 枫言枫语</a></li> 
 <li><a href="https://web.archive.org/web/20140219004437/http://www.godoor.net/text/wenhua/sixiang40.htm">是谁的哲学史？—评《苏菲的世界》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 9 &#x4E3A;&#x4EC0;&#x4E48;&#x52A0;&#x5230; To Do List &#x91CC;&#x7684;&#x4EFB;&#x52A1;&#x5C31;&#x6C38;&#x8FDC; To Do &#x4E86;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/C2AE30A7-7E96-4EA7-BDDB-4AB65A11145C/</link>
        <guid>https://justinyan.eth.limo/C2AE30A7-7E96-4EA7-BDDB-4AB65A11145C/</guid>
        <pubDate>Sun, 02 Dec 2018 10:43:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/12/todo-podcast-cover.jpg" alt="Vol. 09 为什么加到 To Do List 里的任务就永远 To Do 了？" /></p> 
<p>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></p> 
<p>今天我们从 To Do List 说起，以“自我认知”为基础，脑神经工作原理为理论，OmniFocus、降低预期、分析负面情绪等多种工具为实践，瞎扯了一期有的没的。</p> 
<p>本期节目是我最近通过 Flow Writing 练习积累下来的思考，已整理发布为博客文章：<a href="https://justinyan.me/post/3599">为什么加到 To Do List 里的任务就永远 To Do 了？</a>。所以本期的 Show Notes 就无需多言，听众朋友们可以到<strong>枫言枫语博客</strong>上查看原文。</p> 
<p>简单地说在生物学上我们的大脑里负责思考、学习、探索等比较高级的功能在历史上是很后面才进化出来的（新皮质层），而大脑里亿万年前就存在的古老的神经系统，包括管心跳、呼吸的神经中枢，管吃喝拉撒的部分则远比新进化出来的部分要年长得多。当大脑运作的时候，这多个部分会同时活跃，于是我们就经常遇到各种自己和自己的冲突。To do list 完成不了，流行词“拖延症”大概就是这么来的。</p> 
<p>在本期节目我将和大家分享一下近期我通过思维练习，尝试去 Hack My Mind 得到的一些经验和方法。而这一切都基于一个前提：<strong>自我认知</strong>。惟有自我认知充分，才有办法找到适合自己的 Hack 途径。这听上去很鸡汤，但是我有一个工具可以让这件事情变得不那么鸡汤。那就是从播客节目“Steve说”的史秀雄老师那里学来的，他在上大学的时候老师教给他们的一个作业：写一部个人成长史。具体内容详见博客文章或者播客节目中亦有提及。</p> 
<p>本期节目是我第一次尝试接上耳机听着话筒里的耳返来录节目，一开始非常不习惯，总觉得声音滞后了很多，所以大概有一半的时间大家可能会觉得我的声音懒洋洋的，非常抱歉。探索过程中总会有得有失😂（自我安慰）。最后请依然非常欢迎大家发邮件到我们的听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a> 。非常感谢大家的收听。</p> 
<h3>播客订阅源的问题</h3> 
<p>最近因为我做播客经验不足，误把 Podcast Connect 上的 URL 换成了 ximalaya 的订阅源，而 ximalaya 是会对 Show Notes 做极大的裁剪的。又由于 Apple 的 Bug 导致我无法把 URL 修改回来，已和 Apple 邮件沟通半个多月，仍在处理当中，非常抱歉。已经订阅的用户如果看不到完整 Show Notes 麻烦请移步官网： <a href="https://justinyan.me">https://justinyan.me</a>。<strong>希望订阅我们播客节目的听众朋友麻烦请使用 Feed URL 来订阅</strong>: <a href="http://justinyan.me/feed/podcast">http://justinyan.me/feed/podcast</a></p> 
<p>此问题我会继续和 Apple 沟通解决，有更新会及时告诉大家。</p> 
<h3>相关信息：</h3> 
<ul> 
 <li>本期听众来信: <a href="https://twitter.com/trey_lin">@trey_lin</a></li> 
 <li>插曲: Emilíana Torrini - Tookah</li> 
 <li>结尾曲: Emilíana Torrini - Caterpillar</li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li><a href="https://www.leuchtturm1917.com/">LEUCHTTURM1917 笔记本</a></li> 
 <li><a href="https://www.zhihu.com/question/21769032/answer/33100227">如何进一步提升自我认知？ - 知乎</a></li> 
 <li><a href="https://www.zhihu.com/question/299741613">未来十年哪些基础科学突破会影响互联网科技产业？产业互联网和消费互联网融合创新，会带来哪些改变？ - 知乎</a></li> 
</ul> 
<h3>节目收听方式</h3> 
<p>推荐使用播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听我们的节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="http://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
 <li><a href="http://himalaya.com/en/show/856006">Himalaya</a></li> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E3A;&#x4EC0;&#x4E48;&#x52A0;&#x5230; To Do List &#x91CC;&#x7684;&#x4EFB;&#x52A1;&#x5C31;&#x6C38;&#x8FDC; To Do &#x4E86;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/FE05A902-FA1C-46F5-927E-FC45688FD557/</link>
        <guid>https://justinyan.eth.limo/FE05A902-FA1C-46F5-927E-FC45688FD557/</guid>
        <pubDate>Sun, 02 Dec 2018 10:42:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/12/todo-post-cover.jpg" alt="为什么加到 To Do List 里的任务就永远 To Do 了？" /></p> 
<p>一直以来，待办列表(To Do List)于我而言似乎收效甚微，加进 To Do 列表里的任务大都会沉没在 To Do 里。在过去几年里，我阅读过 David Allen 的 <em>Getting Things Done</em> （简称 GTD）也尝试学习过 GTD 的多种实践。使用的 iOS/Mac App 从 Wunderlist, Clear, Trello 到 Things 和 OmniFocus 全家桶。最终得出的结论都大同小异：</p> 
<blockquote>
 <p> 我不是一个受 To Do List Driven 之人。 </p>
</blockquote> 
<p>但是最近我又开始使用 OmniFocus 全家桶来帮助我记录和处理工作、健康、学习、生活琐事等各方面的事情了。这期间我经历了一些事情，做了一些思维练习，尝试 Hack My Mind，带来的改变很多，重拾 OF 是其中之一。我认为重新开始使用 OF 帮我解决了不少问题，遂作此文，分享给有需要的朋友们。</p> 
<h2>1. 正如石器时代的人们手中握持的石斧一般</h2> 
<p>人类的记忆非常不靠谱，不管是长期记忆还是短期记忆。我们记不得小时候背过的课文，也很容易忘记去洗手间的路上放在茶水间的水杯，总得等到发现了才回头去拿。这是我们大脑的设计，在脑容量有限的情况下，尽量只记住重要的信息，过滤无效内容。</p> 
<p>我们的认知模式也是类似的设计。每天我们要接收大量来自外界的信息：张三穿了件白色的衣服，李四剪了个头发。多数时候我们不会去在意这些细节，因为如果要处理和记住所有信息的话我们的大脑是忙不过来的。你可以想象用一台十年前的电脑来跑今天流行的 3A 游戏大作(忽略兼容性差异)，可能跑了一小时都还没进游戏主界面。</p> 
<p>大脑是我们身体的一部分，我们的身体会随着时间的推移慢慢进化，适应新的环境，这个过程是十分缓慢的。可是人类社会的发展又极其迅速，尤其是现代社会，简直是指数式陡峭。结果就是我们每天要接收和处理的信息远远超出我们经过几十万年的演化而发展出来的大脑所能承受的负荷。</p> 
<p>于是我们很自然地就想到<strong>利用工具</strong>来弥补人类的缺陷，提升记忆能力和处理能力，来应对互联网时代的信息洪流。正如石器时代的人们手中握持的石斧一般。</p> 
<h2>2. 但是人类的缺陷是多种多样的</h2> 
<p>如果我们大脑的缺陷只有记忆力差与处理能力弱的话，那么这件事情其实就非常好办了。拳头不够硬砸不了钉子，那就用锤子嘛。但人类却是极其复杂的生物体，To Do 任务也不是一颗已经放好位置的钉子。</p> 
<p>人之所以为人，是因为我们并不是纯粹理性的动物，而是理性与感性的结合体。我以为逻辑思考的理性部分和情感体验的感性部分是一样重要的。有些事情看上去逻辑合理，但情感上难以接受。这样的事情就会成为无法完成的任务。</p> 
<p>举一个极端的例子：《三体》里从末日战役中逃离的两艘飞船，所携带的资源根本不够飞到下一个星系，而且系统故障无法容纳足够的人进行冬眠。这时候最符合逻辑的做法是其中一艘船攻击另一艘船，把船上的人类当做蛋白质来源用以维持生命。如果你是舰长你会怎么做？</p> 
<p>这固然是一个极端的例子，但是我们在现实生活中也常常会遇到类似的冲突，只是没那么严重罢了。比如夜间不想把车停到某个门口坐着两只大狼狗的停车场里，因为“害怕”等会走出来的时候得经过它们。</p> 
<p>现在社会的主流所鼓励和倡导的，往往是纯粹的理性，而忽视了每个个体身上千差万别的缺陷。GTD(Getting Things Done)可以说是目前互联网上最流行的一套任务管理（或曰时间管理）系统了。我们常常看到网上的文章动辄教你如何实现 GTD，几乎要把 GTD 和“任务管理”等价了。但其实 GTD 只是我们所能利用的众多工具之一，只不过 GTD 不是一个工具，而是由多个工具组成的一套系统。他有着容易上手的特点，简单易懂的原理，清晰可达的目标，所以 GTD 比较受大家的欢迎。</p> 
<p>GTD 的基础想法是在大脑以外建立一个额外的存储区，把需要被处理的任务都捕捉起来，收集到一个靠谱的地方，从而把事情赶出大脑，消除焦虑。再通过 GTD 系统里的 Review Routine 等多种工具来确保重要任务会被执行。</p> 
<p>我们既可以用笔在便利贴上写下任务，扔进盒子里收集起来，也可以使用像 OmniFocus 这样强大的电子化工具。GTD 的核心在收集和处理任务的方法论而不在使用哪一种工具上。工具应该是为人服务的，而不是工具把人牵着走。</p> 
<p>OmniFocus 对我无效的原因就是我一直被这些工具和别人的实践牵着走。始终我没有触及使用工具的基础和本质：</p> 
<ol> 
 <li><strong>我遇到了什么问题？（即我为什么要使用 OmniFocus）</strong></li> 
 <li><strong>我期望达成什么目标？（即我对 OmniFocus 的预期是什么）</strong></li> 
</ol> 
<p>这两个问题是基础，把 OmniFocus 换做任何一个工具都适用。只要不解决这两个问题，To do list, GTD 之流对我就是无效的。</p> 
<h2>3. 自我认知是一切的基础</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/12/todo-self-wareness.jpg" alt="自我认知是一切的基础" /></p> 
<p>GTD 也好，番茄工作法，紧急重要四象限，SMART 原则等等一切流行的不流行的工具，都只是工具。他们就像斧子一样，我是个瘦子我抡不动程咬金的板斧，那我就应该用一把轻一点适合我的斧子。别人写的 GTD 的实践，有把自己的人生分为财富、健康、工作、生活等多个 Area 的，也有以角色出发来分的，每个人有自己最适合的划分方式。我追随他们分享的文章去尝试而不得，原因很简单：<strong>我并不知道我需要一个怎样的工具来解决怎样的问题。</strong></p> 
<p>要解决这个问题，就不得不提<strong>自我认知</strong>。我不太了解心理学无法下一个精确的定义，参考史秀雄老师的这篇文章（<a href="https://www.zhihu.com/question/21769032/answer/33100227">如何进一步提升自我认知？ - 知乎</a>），我们可以简单地把自我认知理解为<strong>自己对自己的了解程度</strong>。</p> 
<p>惟有了解自己的弱点，才有办法反过来利用自己的弱点来控制自己。有人可能会说难道自己不是最了解自己的人吗？还真不是。因为<strong>人会对自己说谎</strong>。这可能是出于认知失调，或者出于心理的保护机制，人会对自己隐藏一些不愿意去触及的事情。而能够做到这点还得归功于我们那不靠谱的记忆能力了——不仅记不住，而且可修改。</p> 
<p>这点是尤其生物学基础的。前段时间我在知乎上看到 [@谢熊猫君的这个回答](<a href="https://www.zhihu.com/question/299741613">未来十年哪些基础科学突破会影响互联网科技产业？产业互联网和消费互联网融合创新，会带来哪些改变？ - 知乎</a>)，他翻译了一篇关于人类脑神经发展历史的科普文章:<a href="https://waitbutwhy.com/2017/04/neuralink.html">Neuralink and the Brain's Magical Future - Wait But Why</a>，作者是 Tim Urban。内容非常生动有趣，简单地概括起来就是人脑有比较原始的部分和比较新的部分。人脑和身体各部分的通讯单元是神经元，神经元直接由突触发出神经信息传递素来传递信息。而神经元的连接强弱，结构之类的是可以被人类通过练习来改变的。也就是说我们的认知是可以被修改的。这里我讲得非常粗糙，大家可以看知乎答案中的详细解答，也可以听<a href="">枫言枫语播客第九期</a>里面有相对多一点的解释。</p> 
<p>我们的认知需要和行为保持一致，此为知行合一。如果做的和想的不一致，就会产生认知失调。比如多数人都相信公平的世界会更美好。但是现实世界却是极其残酷的，充满各种激烈斗争的，什么手段都有人用。我们就像在玩一个大型模拟游戏，游戏规则残忍而不公。我们当然希望未来的世界可以变得更完美更公平，但起码现在不是。于是当我们在现实生活中遇到不公的时候，就会产生负面的情绪。</p> 
<p>甚至我们都相信自己是善良（大概没人会希望自己的邪恶的吧），但其实每个人都有阴暗的一面。于是当自己在这场大型生存游戏中做了不符合自己心中所期望的行为的时候，我们就会产生不舒服的感觉。在职场中，讨好上司的行为并不罕见，对自己的老板点头哈腰似乎是一种公认的应该。但是做出这个行为的自己却不一定发自内心，于是认知失调产生了。</p> 
<p>人的认知是可以被自己的行为所改变的。为了达成知行合一，要嘛改变自己的行为始终表里如一，要嘛只能调整自己的认知接受这种行为。最近我因为工作很忙且 deadline 很紧，每天都在追着时间跑，这种处于高压环境下的战备行为就影响到了我的思考方式。我前段时间订了副新的眼镜，等了几天眼镜店没有打电话给我，于是有天中午我打电话过去问，店员说早上刚送到。当时我冲口而出问他：“那你为什么不告诉我？”结果话刚说完我就觉得有点不妥，因为我那段时间身处在追逐时间的环境中，不知不觉思维方式已经被改变了。</p> 
<p>这是人类的弱点之一。对一个普通人来说这一切的发生甚至是潜移默化的，是潜意识的，无法被意识观测和控制的。但是对一个自我认知足够强的人，一个能意识到自己是自己的人来说，他就可以跳脱自己旁观一切。观察自我的认知和行为之间的冲突，从而把控制权从大脑那里抢回来，有意识地做出调整。有人把这种能力称为自控或自律。在我看来，这种能力就是在 <strong>Hack My Mind</strong>.</p> 
<h2>4. Hack My Mind</h2> 
<p>如前文所述，人类有各种各样的缺陷，记忆力和处理能力弱势其中之一。而我近期因为在工作、生活等各方面的事情呈井喷式爆发，原本就不太够用的大脑更加处理不过来。我的认知很沮丧，但是我的行为却还和往常一样，每天上班工作，该读书读书，该写字写字，该写代码写代码，还搞起了自己的播客。一个人每天的时间只有 24 小时没有更多，精力和时间同样有限只是没法量化。于是有限的资源要投入到无底洞里就是一件非常棘手的问题。为了解决大脑能力的不足，我需要需要合适的工具。懂得使用工具也是人类能成为“地球公害”的一个重要原因。工具可以是物理的纸笔，可以是电子的 App，也可以是思维上不可见的方法论。而我最近所实践的工具其实不是 OmniFocus，而是更底层一点的能力：<strong>Hack My Mind</strong>。</p> 
<p>在我的自我认知有了更好的提升之后，我终于可以着手对自己进行一番分析。OmniFocus 的使用是 Hack My Mind 的一次实验和练习。首先工具是为了解决问题而存在的，问题我已在前文讲得很清楚了，就是脑子不够用了。这个问题一直都存在，如果工具能解决问题，我为什么还是没能一直用下去呢？</p> 
<p>还是回归到人是理性与感性的结合体这点上。逻辑上我应该要使用包括 GTD，紧急重要四象限，SMART 原则等等各种工具来辅助解决我的问题，但实践过程中我还需要面对两个重要的问题：</p> 
<ol> 
 <li><strong>正向的动力问题（+）</strong></li> 
 <li><strong>负向的打击问题（-）</strong></li> 
</ol> 
<p>这些问题同样地也需要利用工具来解决。两个问题加一起表现为流行词“拖延症”，明明有个任务很重要但是我就是不想去做。原因一是这个任务可能很枯燥，很无聊，我不想做。这时候如果我对自己有足够充分的理解，我可以知道自己平时做事做大的动力来源是什么。以我为例，我是兴趣驱动型的，自己感兴趣的东西会自发地完成，同时我的兴趣曲线也和多数人一样，一开始很兴奋，到了平台期就趋于缓和不再激动。所以我可以利用我的这项弱点，尝试从这件“重要而枯燥的任务”中找到我感兴趣的点，把它和我的兴趣挂钩，然后开始练习用自己的兴趣驱动去完成这件事情。</p> 
<p>比如说几年前学习 Swift 编程语言。学习一个全新的语言一定会遇到一堆问题，搓着无数，纯粹枯燥的学习是难以坚持的。我喜欢全新的东西，喜欢学习新技能时的挑战，但是一旦进入平台期可能就兴趣骤减了。于是我把学好 Swift 这个目标通过编写一个我自己需要的 App 来实现。初学 Swift 会有大量可玩的新技术，我完全不用担心动力问题。而到了中期，因为这个 App 是我自己需要使用的，所以至少可以驱动我把第一个版本做完发布。于是就有了 Just Focus 这个全屏休息提醒的番茄钟应用。</p> 
<p>此为以兴趣为驱动力的 Hack。另一个方面则是负向打击。因为 GTD 名气很大，我最早接触 GTD 时网上铺天盖地的各种 Best Practice，工具也是一个接一个换，一个接一个地学习。于是我对 GTD 的期待很高，我希望它真的能像书里说的一样，覆盖宏观目标和微观实践，可以全面接管我的工作、生活、学习、健康等等人生的方方面面。仿佛 adopt GTD 我就可以走向人生巅峰了一样。</p> 
<p>于是任务拖延完成不了了，当目标调整变得不符合预期了，当现实不得不向理想妥协了等等事情出现的时候。我的预期就很受打击。我继续使用 GTD 方法的热情也就一点点地衰减。</p> 
<p>为了应付负向打击带来的动力衰减，我采用了另一个工具：<strong>降低预期</strong>。原先我以为用了 OmniFocus 就可以整理我的人生了。但是其实不是的，我不应该有这样的预期。没有哪个工具可以让你的人生变得更美好，就像即使你手握杨过的玄铁重剑你也挥舞不起来一样。不是因为重剑让杨过有了对抗金轮法王的能力，而是杨过先练就了一身武艺，重剑让他有了加成，主次和因果必须搞清楚。</p> 
<p>于是这次我把 OmniFocus 当做一个数据库容器，而这这也恰恰是 OmniFocus 自己给自己的定位。它是一个收集器，我可以把所有任务都塞给他，有未经处理的，也有处理过的。然后通过各种不同的 Perspective 来过滤筛选出我当下需要注意的，需要投入我那有限得可怜的时间和经理去应对的事情。结果 OmniFocus 做得很好，因为这才是对它应该有的期待。</p> 
<h2>5. 一切能力皆需练习</h2> 
<p>前面我们提到很多工具，方法，和理论。<strong>而一切能力皆需练习：训练、习得</strong>。上数学课的时候听老师讲例题，推理，仿佛懂得了一条新的公式，但依然需要大量的习题练习，才能学会和掌握这个新的理论。不只是上学要练习，走路、跑步、吃饭、打篮球、骑自行车需要练习，思维也需要练习。</p> 
<p>比如我说降低预期可以让我更好地接受和使用 OmniFocus，从而真正地利用工具解决问题。但我并不是一听到这个理论立刻就学会降低预期的。这期间需要经过大量的思维练习，让我的大脑习惯和摸索降低预期的方法。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/12/todo-flow-writing-practice1.jpg" alt="Flow Writing Practice" /></p> 
<p>这里我用到的一个工具是写字，我把它称为 <strong>Flow Writing Practice</strong>。这个工具实践起来很简单，我会在平时写读书笔记的大约 A5 大小的本子上翻开空白的一页，写上日期和 Title，然后就放飞自我开始瞎写。想到什么写什么，内容可以是今天天气不错，或者是刚刚喝了一杯好喝的咖啡。但是很快我会把话题转向我最近关注的思维问题上。比如为什么 OmniFocus 会一次次被我抛弃又重拾，比如<strong>一切能力皆需练习</strong>这句话。这篇文章里的很多观点和工具都是我在 FWP 写作练习中思考而写下的。在做这个练习的时候，除了逗号和句号这种断句标点之外，不带任何其他格式，不做换行，也不做特殊标记。就这样密密麻麻地写，流水般写，直到写满一页。我常用的 Leuchtturm 1917 笔记本写满一页可能也就几百字，并不需要多长的时间。但是每天这样写一次却能给我一个很好的思维练习机会。</p> 
<p>这个方法对我有效，却不一定对所有人有效。所以我说一切的基础在于自我认知。我很清楚自己是一个喜欢纸笔写作的人，做这样的练习可以给我带来沉浸感和愉悦感。如果读者朋友更喜欢笔记本打字、录音或者找人聊天之类的方式，也可以进行尝试。前提是要对自己认知充分，知道自己喜欢采用哪种方式来进行思维练习。</p> 
<p>自我认知是可以提升的。自我认知较强的人可以意识到自己的存在，可以分清外部环境的影响和发自内心的诉求，可以从当前环境中抽离出来观察自己。就像杨过在海潮中练剑一样，可以稳稳当当地站在一块大石上，任他海潮澎湃，自以一柄玄铁重剑劈开风浪。而自我认知比较弱的人，则更像无舵的帆船，只能被海浪推着走，随波逐流。</p> 
<p>自我认知的练习同样有非常具体详细的方法，这个方法是我从史秀雄老师那里学来的。<strong>简单来说就是写一部自己的个人成长史</strong>，详细的方法可以参考这里：<a href="https://www.zhihu.com/question/21769032/answer/33100227">如何进一步提升自我认知？ - 知乎</a></p> 
<p>这里我简单说一下流程，就是把自己的人生从出生到现在划分为 8 个阶段，每个阶段找出 10 件对你来说十分重要的事情，然后对每件事情做三个层面的分析：</p> 
<ol> 
 <li><strong>这个事件给你带来了哪些认知和想法上的变化？</strong></li> 
 <li><strong>这个事件给你带来了哪些情感上的冲击或者影响？</strong></li> 
 <li><strong>这个事件和现在的你有什么关系？换句话说，事件如何塑造了今天的你？</strong></li> 
</ol> 
<p>这个过程可能会很长，但是做下来确实能一定程度上提升自我的认知。这个程度也是因人而异，至少我个人感觉是收获颇丰。因为人和历史是相似的，总在不停地重复着过去，小时候的自己在很大程度上决定了今天的自己。</p> 
<p>当我分析了自己过去的重大事件之后我发现，今天我在应对很多事情的时候所表现出来的行为，背后所产生的思考，其实和小时候的很多重大事件如出一辙。通过对这些事件的分析，我发现我会对自己说谎，而通过揭穿谎言和谎言所掩盖的伤疤，我发现了一个更加真实的自己。换句话说，我更了解我自己了。</p> 
<p>在做这是件事情的时候，请务必让自己身处一个相对安全封闭的空间里，不要被人打扰，对自己完全敞开心扉。在这个过程中你可能会欢笑可能会重新经历一遍早被掩藏的痛苦。但是唯有如此，才能重新认识自己，知道自己到底是个怎样的人。</p> 
<h2>6. 负面情绪是很好分析自己的时候</h2> 
<p>这里我再分享一个工具或者伎俩，就是当负面情绪产生的时候，正是非常适合分析自己的时候。一个自我认知比较强的人，可以在负面情绪产生的时候抽离自己，反过来分析这种情绪产生的原因。比如我在工作中被上级指出哪些地方做得不好的时候，如果确实是做得不好，那负面情绪其实很快就过了，改正做好就可以了，但是如果当下那一刻并不认同对方的观点的时候，可能这份负面情绪就没那么容易消失。</p> 
<p>负面情绪是一种不舒服的状态，是需要被消除的。很多人出于自我防御会下意识地抵抗和不认同的对方，把责任推给对方，这样自己就是对的，就可以轻松一点。也即除了自己，他人皆傻逼。但其实这并没有解决任何问题，该遇到的问题还是会遇到，该经历的不舒服还是会经历。</p> 
<p>这时候如果能把自己抽离出来，复盘一下事件本身，就会发现问题其实没那么复杂。比如我在工作中遇到这种问题无非是理想和现实的差距罢了。现实是需要大量 trade off 的，不存在乌托邦式的项目。如果老是按照乌托邦的想法去做事，最终得到的结果反而适得其反。这当然是唯结果论的说法，并不符合我的认知。但是现实就是残酷的，就是唯结果论的，你非得在这样的环境里理想行事，最终只能是两败俱伤。前文说这个世界是个大型残酷生存游戏，是个游戏就有游戏的规则。我去分析了一下我的负面情绪产生的原因，其实就是理想和现实的冲突罢了。而解决问题的方法也很简单，就是按照游戏规则办事。只是这种做法并不符合我的认知，于是产生认知失调，于是依然不舒服。于是我还得继续动用其他的思维工具，来调整我的认知，试图找到一个没那么残酷的平衡点。</p> 
<p>这时候自我认知就是内功了。内功修为够高的话，就可以立于海潮之中岿然不动，即使有所调整也是在可控范围内的。内功修为不够的话就直接被大浪冲走在沙滩上了。我认识许多人格饱满，有自己一套看到世界和外物方法的朋友，在生活和工作中都会遇到各种妥协，比如融资，比如谈一笔生意等等。但是他们并不会为一时的妥协而迷失，而是可以 take a step back，反过来观察自己，把这些调整和妥协控制在自己的期望内，也就是守住底线。</p> 
<h2>7. 结语</h2> 
<p>人是极其复杂的动物。我通过观察身边的人发现大部分人都没法像杨过一样岿然不动，哪怕是早期在深山里对冲瀑布也未必可行。但是我并不觉得这就如何，每个人有自己的生活方式，不存在非黑即白和比个高下。活着而已，何必那么累呢？</p> 
<p>但是如果读者朋友们对于自己是谁，从哪里来，要往哪里去有些兴趣，对于自己在生活中，工作中遇到的焦虑和烦躁感到不舒服，试图通过解决这些不舒服来提升自己的话。那么我以为提升自我认知是一项非常基础的功课。</p> 
<p>在我不知道这件事情以前，在我尚未开始思维练习以前，我以为自律是一件极难的事情。现在我知道，别人的自律，不过是他找到了 Hack 他自己的方法而已。就好像没学过高数的人觉得微积分是天书，学会了之后才知道这是基础。</p> 
<p>2018.11.30/夜<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 8 &#x533A;&#x5757;&#x94FE;&#x6280;&#x672F;&#x53EF;&#x4EE5;&#x600E;&#x4E48;&#x73A9;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/DB8DF299-0346-4C27-8E57-8A426AC78500/</link>
        <guid>https://justinyan.eth.limo/DB8DF299-0346-4C27-8E57-8A426AC78500/</guid>
        <pubDate>Wed, 14 Nov 2018 11:35:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/11/podcast-008.jpg" alt="Vol. 8 区块链技术可以怎么玩？" /></p> 
<p>网址: <a href="https://justinyan.me">https://justinyan.me</a><br /> 主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a><br /> 嘉宾: <a href="https://twitter.com/lyricwai">歌词经理 @lyricwai</a> | <a href="https://twitter.com/hzlzh">黄自力 @hzlzh</a></p> 
<p>近两年区块链和比特币的热度高涨，即使不了解其背后的技术原理的人也都听说过这两个名词或者相关的段子。本期节目我们请到了创业中的"歌词经理"来给我们科普一下区块链一些相关的知识。</p> 
<p>最早认识歌词经理是在多年以前他做了一个推特客户端： <a href="https://github.com/lyricat/Hotot">Hotot</a>，现在大家还可以在他的 GitHub 仓库里找到这个项目。</p> 
<p>现在歌词经理在做 <a href="https://www.fox.one/">Fox.one</a> 这个项目：</p> 
<blockquote>
 <p> Fox.One 是一个专注于数字资产的聚合平台，结合交换并集成易于使用的钱包，帮助投资者更轻松、更快速、更智能的进行交易，获得更多的机会和收益。 </p>
</blockquote> 
<p>区块链技术是目前的潮流的前沿，我作为一颗在科技行业里扑腾的微小浪花，了解和掌握其背后的原理，知晓其未来可能的应用还是很有必要的。很惭愧关于区块链我知之甚少，本期歌词经理的分享让我获益良多。</p> 
<h3>相关信息：</h3> 
<ul> 
 <li>插曲: Michael Jackson - Stranger In Moscow</li> 
 <li>听众信箱: <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
 <li>Fox.one: <a href="https://www.fox.one">https://www.fox.one</a></li> 
 <li>Hotot: <a href="https://github.com/lyricat/Hotot">https://github.com/lyricat/Hotot</a></li> 
 <li>歌词经理博客: <a href="https://lyric.im/">https://lyric.im/</a></li> 
 <li>黄自力的 GitHub: <a href="https://github.com/hzlzh">https://github.com/hzlzh</a></li> 
</ul> 
<h3>节目收听方式</h3> 
<p>推荐使用播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听我们的节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="http://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 7 &#x65C5;&#x884C;&#x53EF;&#x4EE5;&#x8BA9;&#x4F60;&#x66F4;&#x597D;&#x5730;&#x6210;&#x957F;</title>
        <link>https://justinyan.eth.limo/BD00FDFD-F975-4B0C-BC26-45D74181B28C/</link>
        <guid>https://justinyan.eth.limo/BD00FDFD-F975-4B0C-BC26-45D74181B28C/</guid>
        <pubDate>Mon, 05 Nov 2018 00:19:02 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/11/podcast-007.jpg" alt="Vol. 7 旅行可以让你更好地成长" /></p> 
<p>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></p> 
<p>我们的节目已经在 Apple Podcast，荔枝FM，喜马拉雅，蜻蜓 FM 等播客平台上架了，大家可以搜索“枫言枫语”四个字来订阅收听。同时我们从这一期节目开始，接受听众来信啦。如果你有什么问题想问我的，或者有什么感兴趣的话题想要我在播客节目里面说的，甚至是对我们的节目有什么不满，想要找地方吐槽的，都欢迎大家发邮件到来畅所欲言。我们的邮箱地址是 <a href="mailto:justin@justinyan.me">justin@justinyan.me</a>，欢迎大家来信。</p> 
<p>本期节目没有嘉宾，还是我一个人对着麦克风水了一小时，聊一聊关于旅行的一些事情。我是个蛮喜欢旅行的人，第一次学会自己做长途旅行是好朋友带我去的，自那以后就爱上了旅行。旅行的方式有很多种，我在博客文章：<a href="https://justinyan.me/post/3352">旅行，大概是件好玩的事情——村上春树《你說，寮國到底有什麼？》</a>里有所提及。我在文中说的：</p> 
<blockquote>
 <p> 很多信息的输入是无法通过浏览互联网，阅读书籍来获得的，不去亲自踏上碎石路，淋一场雨，捧一把雪，听一听海浪的声音，闻一闻鱼市场的味道，大抵感受不到这个地方的魅力。更不用说与当地人聊一聊天，尝一尝当地特色的食物了。 </p>
</blockquote> 
<p>也在某种程度上表达了我对旅行的态度。本期节目我闲扯了一些自己对旅行的思考，题图是我一个人去海南环岛骑行的时候拍的，当时的旅途很辛苦，被晒得很黑，但是那种体验也非常独特，成为我成长的一部分。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/11/podcast-007-bike-traveling.jpg" alt="" /></p> 
<h3>相关信息：</h3> 
<ul> 
 <li>BGM: Joel Hanson - Traveling Light</li> 
 <li>听众信箱： <a href="mailto:justin@justinyan.me">justin@justinyan.me</a></li> 
</ul> 
<h3>节目收听方式</h3> 
<p>推荐使用播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听我们的节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="http://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #151 Dan Brown -&#x300A;&#x672C;&#x6E90;&#x300B;(Origin)</title>
        <link>https://justinyan.eth.limo/7190C1A8-17C1-4A15-8638-EF77D3ECDE6C/</link>
        <guid>https://justinyan.eth.limo/7190C1A8-17C1-4A15-8638-EF77D3ECDE6C/</guid>
        <pubDate>Wed, 31 Oct 2018 14:16:25 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/10/meizhoudushu_151.jpg" alt="每周读书 #151 奔跑在午夜的巴塞罗那——丹·布朗《本源》" /></p> 
<p>2003 年由 Random House 出版社出版的小说《达芬奇密码》让作家丹·布朗(Dan Brown)名声大噪。小说里的主角——哈佛大学宗教符号学的教授——罗伯特·兰登(Robert Langdon)也从此开始为读者所熟知。但其实在《达芬奇密码》之前，兰登已在《天使与魔鬼》一书中出场过。此二作我们之前也曾有过介绍（详见文末链接）。</p> 
<p>丹·布朗的小说向来喜好把故事发生的主场景设置在世界著名的文化胜地，比如《达芬奇密码》中一开场就让巴黎卢浮宫的馆长在馆内遇刺死去，留下诡异的五芒星符号；比如《天使与魔鬼》中最终幕则发生在天主教世界最为重要的教堂——梵蒂冈圣彼得大教堂。2017 年丹·布朗发表了兰登系列小说的最新一部——《本源》(Origin)。这部小说延续了作家一贯的风格，把场景设定在西班牙的巴塞罗那，一座有着特殊魅力的城市，一座作品遍地的艺术之都。</p> 
<p>作为西班牙加泰罗尼亚的首府，巴塞罗那既有悠久的历史，也有高耸的现代建筑。这座热情的南欧海滨城市到处都是酒吧，虽然海水不像“蔚蓝海岸”那般蓝得独特，但也在市区有着长长的海岸线，居民游客在海滩边游泳，晒太阳，吹海风，打排球，一派祥和悠闲之景。这片海滩位于巴塞罗那扩展区(El Eixample) 。1859 年巴塞罗那政府出人意料地采纳了城市规划师 Cerda 在当时看来非常激进的方案建造而成。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/10/meizhoudushu_151_cerda.jpg" alt="Cerda 规划图" /></p> 
<p>这是欧洲大陆上唯一一个采用如此大规模网格、对角线设计的规划。每个网格采用八边形造型而不是现在常见的四边形，这样每个路口就会留下切角。据称最初是为了满足有轨电车的转弯半径而设计，后来被保留了下来。这些切角的坏处是让步行变得非常不便，每次过马路还得多走一半的路程，但是也解决了部分停车问题。如果现在大家到巴塞罗那旅行还可以看到这些切角基本都停满了车，甚至还有小型自助加油站直接建在切角里。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/10/meizhoudushu_151_eixample.jpg" alt="巴塞罗那扩展区俯瞰" /></p> 
<p>也许是这样激进的规划加上贯穿全城的对角线大街(Avinguda Diagonal)给了巴塞罗那的建筑师们以土壤和空间，去发挥他们无尽的想象力。1912 年由巴塞罗那最著名的建筑师——人称“上帝的建筑师”——高迪所建造的“米拉之家”(Casa Milà)公寓就坐落在对角线大街上。这座有着波浪外形，扭曲围栏的公寓大楼，在施工那天起就遭到邻居的质疑，而今天却成为巴塞罗那的地标。每个到巴塞罗那旅行的游客都要到米拉之家的顶楼看一看这些通风塔的卫兵们。米拉之家只是高迪年轻时期的作品，他的未尽之作“圣家堂”(Sagrada Família)从 1882 年开始修建，至今仍未完工，预计竣工时间为 2026 年。除了米拉之家和圣家堂，高迪还在巴塞罗那留下许多建筑作品，其中已有 8 座被联合国教科文组织收入世界遗产。</p> 
<p>选择这座城市作为小说发生的主战场完全不逊于罗马和梵蒂冈。《本源》在故事场所的选定上完全有足够的发挥空间，也有非常多的旁支可供作家选用。但是在阅读的过程中，我却感到正是由于可说的，想说的太多，反而妨碍了主线故事的流畅推进。</p> 
<p>《本源》的主角依然是兰登，这位曾在《达芬奇密码》中追踪破解了圣杯秘密的符号学教授，开得了飞车跳得了窗，甚至在《天使与魔鬼》中高空跳伞全身而退，简直是新一代的卫斯理，高学历版的阿汤哥。在本作中兰登甚至还上演了与海军上将自由搏击，在危急关头空手入白刃等场景，越来越勇武了。这大概也是我第一个发现不太自然的地方：这位主角的身份是在哈佛教书的文弱书生，但是动起手来不但一点不弱，还能单挑上过战场的正规军。我觉得这里强行要让读者接受运气成分就有点出戏了。希望未来的续作可以给主角多一些枷锁，要嘛通过强大的同伴护体，要嘛像韦小宝一样完全智取，可能会让人物更加真实好接受一点。</p> 
<p>本作延续了作家一贯阴谋论的做派，企图在小说中搞一个毁天灭地的大新闻。有点像《天使与魔鬼》里关于宗教与科学的讨论。本作带头搞事情的是兰登的学生，一个特别厉害的计算机科学家。这个人的形象有点像钢铁侠，有钱到为所欲为，又特别任性，自己相信的东西就要坚持到底。于是终于给他砸巨资秘密研究出了足以改变世界的 idea，这天要开个发布会来震撼整个世界。故事就此开始。</p> 
<p>本周读书决定不做剧透，所以剧情我们就不讨论了，只做评价。首先这个大新闻的铺垫很好，因为足够大，而且悬念设定得可以，虽然产生悬念使用的手法有点欠打和缺乏创意，但是读者还是会想要知道这个发布会的内容到底是什么的。接下来就是丹·布朗一直用的 POV 切换写作手法，通过在多个章节分布多个支线和人物视角，刻意遮挡关键信息，透露部分信息来诱导读者得出一个模糊的结论，最后再来个大反转。我只能说，这种手法真的用烂啦，很没有新意有没有。我在读 Andy Weir 的《The Martian》（火星救援）的时候就不喜欢这种突然切换 POV 的写法，很容易断档。《冰与火之歌》算是比较早用这种写法的出名的小说，但是反正人物很快就死了倒也没什么关系。但是在《本源》这样主角鲜明且戏份很重的小说里，既然不想群写，我觉得分开多个视角就很容易让我好不容易培养起来的对主角的兴趣突然遭到挑战。所以如果读者朋友们已经读过丹·布朗兰登系列的前作的话，可能会因此感到无趣，若是未曾接触过的读者也许会觉得还挺新鲜。</p> 
<p>既然有一个足够大的架空阴谋论，就得有足够丰富的细节来填充他，还得有一个足够明确的主线来推进他。《本源》的主线目标还是比较清晰的，典型的畅销小说写法，上来先死个人，主角有危机感，要找一下真凶或者什么更厉害的东西比如《达芬奇密码》里的圣杯什么的，于是进入第二幕。这一幕就上轨道啦，安排点打打杀杀和曲折回环找一下东西在哪里之类的，兰登系列一直都在解密码，所以就让兰登一环环地解密码就好了。解到最后字数凑得差不多了，是时候大决战了，这时候就正式进入第三幕了。然后就大决战，结束。</p> 
<p>这样的写法也是目前好莱坞大片的典型套路，一般不会产生质量太差的作品。但是如果细节填充得不好也会让人很无聊的。如前文所述，巴塞罗那是一座有非常多梗的城市，选择在这样一个地方上演，作家必须有所取舍。所以顺理成章的，米拉之家和圣家堂成为被作家选中的其中两个主战场。但是由于要分心去叙述场地的特殊性和背后的故事，反而削弱了当时主角身处其中的紧张性。而且对于去过这些地方的读者来说，圣家堂三立面的异同与壮观很容易浮现在脑海里，进入主殿堂之后悬空的华盖与光彩琉璃的玻璃窗等等也很让人感动。但是对于没去过的读者来说呢？这是被作者抛弃了吗？</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/10/meizhoudushu_151_sagra_familia.jpg" alt="巴塞罗那-圣家堂" /><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/10/meizhoudushu_151_casa_mila.jpg" alt="巴塞罗那-米拉之家" /></p> 
<p>第一次阅读《达芬奇密码》时没去过卢浮宫博物馆，但因为作者对环境的描写非常细致，读起来也没有非常生疏的感觉，反而日后再去卢浮宫看到倒着的三角形会想起书中将它视为圣杯的隐喻。而且《达芬奇密码》的主线非常紧凑，密码一环扣一环，而且有些密码还和场所本身紧密相关，比如“玫瑰线”这条线索。但是在《本源》中主线(寻找大秘密)反而变得不是那么紧要，即使主角背后一直有人在追杀他。这主要是因为密码的设定从一开始就限制在诗里，于是建筑本身对密码并没有什么贡献，而是成为角色背景故事的补充。这样一来，一旦作家去描写建筑相关的内容，这些内容就成了支线，但是如果作家不写又失去了在巴塞罗那选址的好处。两相权衡的结果就是建筑写得不够细致和吸引，也和主线不构成紧密的联系。这大概就是我觉得作家在本书中有很多想表达的但是最终都没有讲出来的原因。</p> 
<p>总的来说，《本源》有畅销写法加成，故事性和娱乐性不会太差，我个人的评价差强人意。如果在巴塞罗那旅行过，又对高迪建筑有兴趣的读者朋友们可以读一下，感受一下在高迪建筑枪战，降落直升机的幻想快感。但是除开这些加分项，仅以小说视之，我觉得只能算中规中矩，无甚出彩。</p> 
<p>2018.10.30 / 下午<br /> 于 T.i.T</p> 
<h3>关于本作</h3> 
<ul> 
 <li>书名: 本源(Origin)</li> 
 <li>作者: 丹·布朗(Dan Brown)</li> 
 <li>译者: 李和庆</li> 
 <li>出版社: 人民文学出版社</li> 
 <li>ASIN: B07BSWNC7W</li> 
 <li>版本: Kindle</li> 
</ul> 
<h3>相关链接</h3> 
<ul> 
 <li><a href="https://justinyan.me/post/3118">每周读书 #136 科学与宗教是对立的？——丹·布朗《天使与魔鬼》</a></li> 
 <li><a href="https://justinyan.me/post/3128">每周读书 #137 天才与“圣杯”——《达芬奇密码》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 6 &#x5C0F;&#x516C;&#x53F8;&#x4E0E;&#x5927;&#x516C;&#x53F8;</title>
        <link>https://justinyan.eth.limo/45CBC716-4D08-41D5-99D2-1E66D3B03EA3/</link>
        <guid>https://justinyan.eth.limo/45CBC716-4D08-41D5-99D2-1E66D3B03EA3/</guid>
        <pubDate>Mon, 22 Oct 2018 22:38:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/10/006-Big-Company-Small-Company.jpg" alt="Vol. 6 小公司与大公司" /></p> 
<p>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a><br /> 本期嘉宾: <a href="https://twitter.com/RoCry">夏天 @RoCry</a></p> 
<p>好朋友夏天创业的项目 Pop 前阵子终于上线了，于是我们在 Pop 的办公室里聊了一期播客。</p> 
<p>我们上班的地方离得不算远，平时也经常一起吃饭聊天，而且录播客并也不是头一回😂。几年前我第一次开始尝试做播客的时候就是和夏天录的第一期节目。不过即便如此，似乎 Yeti Microphone 霸气的身影还是给我们这次聊天带来了一丝拘谨（XD 上一期第一次用这个麦录音的时候我就已经感受到了）。</p> 
<p><img decoding="async" loading="lazy" src="http://cdn.justinbot.com/wp-content/uploads/2018/10/img_5bcdd5f10b172.png" width="300" height="640" /></p> 
<p><em>上图是夏天拍的 Pop，大家可以感受一下</em></p> 
<p>在这期节目里我们聊了 Pop，聊了主流社交软件随着关系链膨胀带来的压力，也聊了很多关于创业，关于在大公司和小公司里工作的事情。我是毕业后就一直在大公司里做程序员的，职业生涯比较普通。夏天则在多家创业公司呆过，也曾在微信团队工作过一阵子，他做过的事情比我是要丰富得多了。</p> 
<p>本期节目也是我第一次尝试给节目分上下半场，加入 BGM。我发现优秀的播客还会分不同的 Chapter。关于播客我需要学习的还有很多，现在的节目做得比较粗糙请大家见谅。希望以后可以越做越好。:]</p> 
<p><em>听完这期节目，对 Pop 有兴趣的听众朋友也可以点击下方链接或者发邮件到 <a href="mailto:jobs@sunday37.com">jobs@sunday37.com</a> 联系他们。(这波免费广告打得🤔)</em></p> 
<p><a href="https://www.sundayhi.com/pc-download" target="_blank" rel="noopener noreferrer"><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/10/006-Big-Company-Small-Company-Pop.jpg" /></a></p> 
<h3>相关信息：</h3> 
<ul> 
 <li>BGM: Maroon 5 - Sunday Morning</li> 
 <li><a href="https://www.sundayhi.com/">下载 Pop IM</a></li> 
 <li><a href="https://sunday37.com/">Sunday Morning 官网</a></li> 
</ul> 
<h3>节目收听方式</h3> 
<p>推荐使用播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听我们的节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="http://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 5 &#x5728;&#x5496;&#x5561;&#x9986;&#x91CC;&#x5F55;&#x79D1;&#x6280;&#x704C;&#x6C34;&#x64AD;&#x5BA2;</title>
        <link>https://justinyan.eth.limo/415E24C1-B83C-4B2A-B461-B66A4D855993/</link>
        <guid>https://justinyan.eth.limo/415E24C1-B83C-4B2A-B461-B66A4D855993/</guid>
        <pubDate>Sat, 20 Oct 2018 22:35:19 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/10/005-Podcast-in-a-Coffee-Shop.jpg" alt="Vol. 5 在咖啡馆里录科技灌水播客" /></p> 
<p>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a><br /> 本期嘉宾: <a href="https://twitter.com/imtangqi">汤奇 @imtangqi</a> | Echo</p> 
<p>本期节目是我和两位朋友在咖啡馆喝咖啡的时候临时起意录的，100% 灌水无添加，非常符合本播客的宗旨。欢迎听众朋友们选作背景白噪音使用。</p> 
<p>我们在节目中闲扯咖啡，小程序，播客，YouTube 等等海阔天空。我自己一直不太喜欢 Hybrid App 的形式，因为用户使用体验和开发者的开发体验都不太友好，而且开发者用到的能力也非常依赖于平台的限制，采用原生开发的方式则可以有更多的发挥。但是在聊天的过程中我也发现小程序其实还是有很多非常契合的应用场景的，最近小程序受到创业团队的欢迎也不是没有理由的。</p> 
<p>本期是第一次有女嘉宾到我们的节目来（但被我和 @imtangqi 的冷笑话吓走了😂）希望以后能和更多的女嘉宾录播客吧 XD</p> 
<p>相关链接：<br /> - Criminal Podcast: <a href="https://thisiscriminal.com/">https://thisiscriminal.com/</a><br /> - This is Love Podcast: <a href="https://www.thisislovepodcast.com/">https://www.thisislovepodcast.com/</a></p> 
<p>推荐大家使用播客客户端来收听。你可以使用 Podcast, OverCast, Castro 等 App 搜索“枫言枫语”四个字来订阅收听。我们也在国内的荔枝 lizhi.fm, 喜马拉雅等平台有同步音频。</p> 
<h3>节目收听方式</h3> 
<p>推荐使用播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听我们的节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="http://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #150 Sylvia Beach - &#x300A;&#x838E;&#x58EB;&#x6BD4;&#x4E9A;&#x4E66;&#x5E97;&#x300B;</title>
        <link>https://justinyan.eth.limo/0FF9CBE7-3F16-42FC-A0CB-ECDEEFD0CF8A/</link>
        <guid>https://justinyan.eth.limo/0FF9CBE7-3F16-42FC-A0CB-ECDEEFD0CF8A/</guid>
        <pubDate>Thu, 11 Oct 2018 12:43:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/10/cover-150-a-novel-in-three-words.jpg" alt="a-novel-in-three-words" /></p> 
<p>试想在咖啡馆的门口摆一排小小的圆桌，配上成双的椅子面朝马路，坐满了人。咖啡的香味飘散在树影摇曳的阳光里，路过时和坐在那里抽着烟的人们对望一眼。前面是绿色油漆的门面——莎士比亚书店。隔着并不算宽的塞纳河，那头是有名的巴黎圣母院，游人如织，熙熙攘攘。相形之下，左岸这间隐蔽的小书店顾客虽多，却仍显得格外宁静。</p> 
<p>一战的最后一年(1918 年)，美国人西尔维亚·毕奇(Sylvia Beach)来到巴黎定居，并于次年创办了英文书店 Shakespeare and Company (莎士比亚书店)。1921 年她把书店搬到剧院街 12 号(12 Rue de l'Odéon)。书店从创办之初就成了当时自我流放的作家们的聚集地。这其中有籍籍无名穷困潦倒的，也有功成名就夜夜笙歌的。毕奇对待这些作家朋友们非常友好，很多人把莎士比亚书店当做他们在巴黎的唯一通讯地址，以致于毕奇得在书店里做一个字母箱来分发信件。</p> 
<p>这些人后来被称为“迷惘一代”(Lost Generation)的代表。发明这个词的人是格特鲁德·斯坦因(Gertrude Stein)，后来由海明威(Ernest Hemingway)的小说《太阳照样升起》(The Sun Also Rises)发扬光大。而斯坦因和海明威，都是当时经常出入莎士比亚书店的会员们。</p> 
<p>二战末期，德军占领巴黎。但毕奇一直没有离开巴黎，没有离开莎士比亚书店。直到有一天，毕奇因为拒绝一个德国军官购买橱窗里展出的《芬妮根守灵夜》（Finnegans Wake）一书的要求而被威胁。于是她和朋友们花了几个小时清空书店里所有的东西，还把门口的店名粉刷干净，莎士比亚书店从此消失无踪了。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/10/shakespeare_and_company_winter.jpg" alt="shakespeare_and_company by Caterina Giannottu" /></p> 
<p>现在圣母院对面的这间书店是另一位美国人乔治·惠特曼(George Whitman)在 1951 年开的，当时的店名叫做“Le Mistral”（意为西北风）。二战结束后毕奇仍住在巴黎，惠特曼与毕奇颇有来往。1958 年毕奇在一次晚宴中公开宣布把莎士比亚书店的名字交给惠特曼。1964 年，在莎士比亚诞辰 400 周年之际，惠特曼把书店的名字正式改成了 Shakespeare and Company，也就是今天我们看到的样子。2011 年老人家惠特曼去世，现在是他的女儿 Sylvia Beach Whitman 在经营这家书店，这个名字直接就来自毕奇，可见惠特曼对毕奇的敬仰。</p> 
<p>惠特曼形容说莎士比亚书店是 "a novel in three words"。确实发生在这里的故事太多太多了。1956 年毕奇据此写了一本回忆录，书名就叫《莎士比亚书店》。惠特曼的书店也有许多故事，我非常喜欢的电影 Woody Allen 的《午夜巴黎》(<em>Midnight in Paris</em>)以及 Richard Linklater 的《爱在黄昏日落时》(<em>Before Sunset</em>)都在此取景。<em>Before Sunset</em> 的第一幕就在莎士比亚书店里拍摄，<em>Midnight in Paris</em> 虽然只有一个镜头，但是全片都在致敬 20 年代的伟大作家们，而他们都是当年经常出入毕奇的书店的会员。本周我们要介绍的书目是毕奇关于 20 年代时期的回忆录。</p> 
<p>我读书习惯不太好，常常读一半觉得无趣的书就会放下，也因此要反复重拾旧卷。比如《三体》我读了好几遍才读完，《冰与火之歌·第二卷》则反复几次都读不下去。《莎士比亚书店》大概就是这样一本让我觉得无趣的书。</p> 
<p>我终于读完的是由译林出版社出版，恺蒂翻译的版本。从写作技巧上看，这部回忆录乏善可陈，甚至部分章节只罗列了许多人物和出版社简介。当然人物故事写的很好，简单几笔人物即跃于纸上，许多故事也十分有趣。</p> 
<p>比如描写斯坦因的一段：</p> 
<blockquote>
 <p> 在我的书店开张之后不久，有两个女人就从杜普伊特伦街上散着步走向我的书店。一位面容姣好，身材硕壮，穿着件长衫，头上戴着的，与其说是一顶帽子，还不如说是一个篮子。陪同她的那个女人小巧，黑瘦，看上去有点古怪，让我想到一个吉卜赛人。她们是格特鲁德·斯坦因（Gertrude Stein）和艾丽斯·B.托克拉斯（Alice BToklas）。</p> 
 <p> ……</p> 
 <p> 她的任何看法和评论，都能得到艾丽斯的唱和，她们俩的这种一搭一唱，简直天衣无缝。很明显，就像许多完美结合在一起的人一样，她们也从同一个角度来评判和观察世界万物。但我觉得从性格上来说，她们是完全独立的，艾丽斯比格特鲁德要更为精明，也更成熟，格特鲁德就像一个孩子，是神童类的那种孩子。 </p>
</blockquote> 
<p>第一次读《莎士比亚书店》，除了海明威之外的作家我一概不认识（我为自己的无知掩面），所以阅读的过程就好像在看一个人的日记，今天店里来了一个朋友（我哪里认得是谁），明天又来了另一个朋友（这家伙又是谁）。大概是这样的感觉。</p> 
<p>后来我反复看了很多遍伍迪·艾倫(Woody Allen)的《午夜巴黎》(<em>Midnight in Paris</em> - Allen 既是此作的导演也是编剧)。电影中以美轮美奂的镜头，奇幻幽默的情节向 1920 年代主角心中的“黄金时代”的诸位致敬。影片中主角在午夜巴黎街头上了一辆古董汽车，穿越回 20 年代遇到了海明威，斯坦因，菲茨杰拉德等大文豪。这些人都是当年频繁出入莎士比亚书店的，于是我在阅读本书的过程中就频频想起电影里的形象。</p> 
<p>从内容来说，本作采用了大量的篇幅记述毕奇最崇拜的作家乔伊斯（James Joyce）的故事。乔伊斯是爱尔兰诗人和作家，他最著名的作品《尤利西斯》一开始由美国杂志《小评论》(<em>The Little Review</em>)连载，后来因为描写性行为而被认定为色情小说，被英国和美国两个主要的英语国家封禁。毕奇当时对出版业一无所知，但在听到乔伊斯抱怨没人愿意出版他的小说是，却仍鼓起勇气接下这桩无比艰巨的事业。莎士比亚书店出版《尤利西斯》使得小书店一举成名。此书遭禁让乔伊斯名声大噪，莎士比亚书店也成为该作唯一的购买地。当时甚至有游客专门到莎士比亚书店买一本，伪装成《圣经》(尤利西斯篇幅非常长)偷偷带回去。</p> 
<p>关于这段故事的回忆也许是本作最接近小说叙事的部分。但是作者毕竟不是在写小说，中间依然穿插了许多其他作家朋友的故事。所以看到有人说本书十分无趣，技巧平平，甚至章法杂乱我是一点也不惊奇，因为这就是事实。但是随着阅读的展开，我越来越喜欢毕奇本人。她是这样的谦卑，明明她认识了当时几乎整个文艺圈的明星们，明明她出版了被后人盛赞的伟大作品《尤利西斯》。她又是如此善良，尽管经济拮据，却仍毫无保留地帮助她的朋友们。不只是乔伊斯，她还让好友麦卡蒙帮助海明威出版了他的第一本书《三个故事十首诗》。她和海明威是好朋友，海明威后来还在回忆录《流动的盛宴》(<em>A Moveable Feast</em>)中赞扬了毕奇。现在的莎士比亚书店，进门后正中间的书架上就都是海明威的作品，其中就有以毕奇站在书店门口的照片作为封面的版本。</p> 
<p>小小的书店在巨大的书架和堆砌如山的书本之间显得无比拥挤。踏上相较欧洲人体型来说小得可怜的木梯到二楼，一股古旧图书的味道充斥这个空间。我不知道这里的旧书是否有从毕奇的书屋继承而来的，但即便是 1960 年代的书本也已足够古旧。房间的地板踩出岁月的痕迹，窗前的书桌斑斑驳驳，明亮翠绿的夕照从窗外洒落，枝叶遮挡间隐约可见隔岸的圣母院。钟声响起，由远至近地在脑海中惹起一波水痕。</p> 
<p><em>2018.10.10/夜</em></p> 
<p><em>于 T.i.T 创意园</em></p> 
<h2>关于本作</h2> 
<ul> 
 <li>书名: 莎士比亚书店(Shakespeare and Company)</li> 
 <li>作者: 西尔维亚·毕奇(Sylvia Beach)</li> 
 <li>译者: 恺蒂(郑海瑶)</li> 
 <li>出版社: 译林出版社</li> 
 <li>ASIN: B00IM9OPTS</li> 
 <li>版本: Kindle</li> 
</ul> 
<h2>购买建议</h2> 
<p>如前文所述，本书是毕奇的回忆录，写作技巧与内容并无特别出彩之处。如果读者期望的是一部小说那么可能会不太喜欢，但如果读者朋友对 1920s 有兴趣，也喜欢海明威、斯坦因等作家的话，那么也许会想要读一读这本书。举一个不太恰当的例子，读这本书就像读东野圭吾的《东野圭吾的最后致意》，是书迷向的馈赠。如果不是喜欢东野圭吾，也没有读过他许多作品的朋友，读起来可能会一头雾水不知所云。</p> 
<h2>其他</h2> 
<p>现在经营莎士比亚书店的是 Whitman 的独女 Sylvia Beach Whitman。父母离异后她随母亲到英国生活，2002 年回到巴黎和父亲一起经营书店。2006 年 Whitman 就已经让 Sylvia 来主管店里的业务。她建立了 <a href="https://shakespeareandcompany.com/">Shakespeare and Company</a> 网站，2015 年终于租到了隔壁的店面实现了父亲一直想开书店咖啡馆的梦想(隔壁的主人一直不愿意出租)。现在的莎士比亚书店依然是流浪作家们的家，你可以在这里免费看书，甚至可以住在这里。同时也开始举办各种文学活动，邀请作家来这里演讲，甚至有了官方的播客。随着电影的上映，原本不了解英文文学世界的观众们也开始知道莎士比亚书店，它的影响力在慢慢变大，这是件很令人开心的事情。</p> 
<p>一间小小的书店里有一个这么大的世界，她的前辈有这么丰富的故事，而且这些故事还在继续。真希望哪天 Sylvia 写一本回忆录来写写 Whitman 这家店的故事，希望我有机会可以读到这本回忆录。</p> 
<h2>参考资料</h2> 
<ul> 
 <li>莎士比亚书店官网：<a href="https://shakespeareandcompany.com/">Shakespeare and Company</a></li> 
 <li><a href="https://shakespeareandcompany.com/35/history/36/a-brief-history-of-a-parisian-bookstore">A Brief History of a Parisian Bookstore - History - Shakespeare and Company</a></li> 
 <li><a href="https://book.douban.com/review/6646913/">恺蒂：毕奇与莎士比亚书店（莎士比亚书店）书评</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 4 &#x7528;&#x5496;&#x5561;&#x4EA4;&#x670B;&#x53CB;</title>
        <link>https://justinyan.eth.limo/A9DBC1B1-A6E8-4570-9C58-FACAFF50162E/</link>
        <guid>https://justinyan.eth.limo/A9DBC1B1-A6E8-4570-9C58-FACAFF50162E/</guid>
        <pubDate>Thu, 20 Sep 2018 19:30:38 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/09/podcast-004.jpg" alt="Vol. 4 用咖啡交朋友" /></p> 
<p>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a><br /> 本期嘉宾: <a href="https://twitter.com/designedbyclu">Clu @thexclu</a></p> 
<p>今天很开心邀请到 Clu 来上“枫言枫语”播客节目。在 Clu 的办公室我喝到了新鲜的 Blue Bottle 的豆子(Single Origin)和他朋友送去参加 <a href="https://worldbaristachampionship.org/">WBC</a> 比赛用的豆子，非常惊艳。</p> 
<p>有关注我的听众朋友可能知道我是一个咖啡爱好者，但是也只是一个爱好者，不是专家。今天和 Clu 的聊天我学到了很多咖啡话题下的东西，包括他去旅行的过程中通过咖啡交朋友这件事情，给我的感觉是非常好玩的。做播客使我得以和很多不同的人聊天，当我听到一些和我已经固化了的观点有所不同的东西的时候，那种感觉很新奇很好玩。和朋友们的聊天就常常给我这样的感觉，而且大家都是逻辑自洽的。这个世界本来就是充满多样性的，每个人就是非常不同的。就算是咖啡这件事情，Clu 和我也有很多不一样的观点，这些不一样在我看来就是这个世界非常精彩的一面。</p> 
<p><em>很抱歉录音的时候我的嗓子还没好，一直咳嗽，请大家多多包涵。</em></p> 
<h3>节目收听方式</h3> 
<p>推荐使用播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听我们的节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="http://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #149 &#x90D1;&#x4E5F;&#x592B; - &#x300A;&#x540E;&#x7269;&#x6B32;&#x65F6;&#x4EE3;&#x7684;&#x6765;&#x4E34;&#x300B;</title>
        <link>https://justinyan.eth.limo/1497DDC2-72E4-420D-8D20-CDE92FF9CB71/</link>
        <guid>https://justinyan.eth.limo/1497DDC2-72E4-420D-8D20-CDE92FF9CB71/</guid>
        <pubDate>Wed, 19 Sep 2018 19:30:30 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/09/meizhoudushu149.jpg" alt="" /></p> 
<blockquote>
 <p> 在你的眼睛里我找到了童年的梦，<br /> 如在秋天的园子里找到了迟暮的花…… </p>
</blockquote> 
<p>这两句短诗来自诗人何其芳的散文诗集《画梦录》，名字就叫《迟暮的花》。我的书架上还有一本从二手书店里淘来的 1995 年香港出版的《何其芳文集》，搬家数次一直不舍得丢掉。昨晚手持本卷忽然想起：曾经这种沉浸在诗歌的情感体验，已多久不再有过了呢？</p> 
<p>现在我们讲“心流体验”（Flow），我们要把它运用到游戏中，运用到电影中、工作中，要提高效率，提高产出。这些我们已经习以为常的“正确”的东西，是从什么时候开始确立的？又是从什么时候开始为大众所普遍接受的呢？</p> 
<p>当然我并不是说心流体验不好，相反这是一种让人非常舒服的体验，在键盘上写作写到十指飞舞浑然忘我就是一种很赞的心流体验。我在思考的是我们的社会，我们的时代和潮流，在何年何月何时把所谓大众文化、主流文化，置于现在这样一种状态呢？我们消费，我们为了生存消费，我们为了好看消费，为了炫耀消费，为了缓解压力消费，为了消费而消费。我们把这个时代称为“消费时代”，我们批判消费，同时又身处其中无法逆流。</p> 
<p>这些东西我们可以从很多微信公众号的文章里读到，但是我觉得也许大多数都没有深入地进行解释，大多数只是利用了所谓“消费主义”这样一个流行词，甚至这个词之所以流行都有可能是消费在推动。我现在所写下的文字自然不可能对消费做出多么深刻的解释，但是我可以给大家分享一本我最近觉得相见恨晚的一本书，<strong>郑也夫所写的《后物欲时代的来临》</strong>。</p> 
<p>我是在张潇雨的播客《得意忘形》听他提到的这本书，也在他很多期节目里反复听他提及。张潇雨所表达的观点大多带有他个人的思考，我不敢说这就是普适的东西。但是就像我在自己的播客节目里面说的一样，张潇雨也好，《后物欲时代的来临》也好，这些信息所阐述的结论，举出来的例子，都有可能过时，但是我们完全可以从这些信息里抽象出其中的理论，把这些理论当做我们去理解世界，理解自己的工具。这个世界是一直在变的，工具也在变。我今天称这本书是相见恨晚的优质内容那是基于此时此刻我自己的认知水平所下的结论，随着我自身的变化也许这个评价在未来也会有所变化。</p> 
<p>我相信本书的作者未来也可能会发现当年的自己写的都是什么乱七八糟的东西。我并没有否定的意思，而是说作者可能十年后见识与能力持续增长，回过头来再看二十年前的自己，给出写得不怎样的评价是非常正常的一件事情。没有所谓的“永远最好”，只有一直在变化中去追求“越变越好”。</p> 
<p>这里的十年与二十年并非笔误。《后物欲时代的来临》一书初版于 2007 年，2017 年由中信出版社再版。作者给再版序写了几句，称自己并非在做预言，“一切预测并非科学”。我非常欣赏作者这样的态度，他并没有把 2007 年准确预言了未来这件事情拿来作为营销的热点（也许他的编辑想要。哈哈哈又黑一波编辑。），而是非常真诚地道出了他的想法：只是以前的理论推演被现实所印证罢了。</p> 
<p>作者在第一章首先反驳了“快乐哲学”这个可以说已经被全世界主流文化所接受的哲学。快乐哲学是什么？它的核心就是：人类做的一切事情——几乎所有人无一例外——的动机都是为了快乐。其思想可以追溯到“享乐主义”的创始人，19 世纪的哲学家边沁。但是作者在第一章就给出了种种证据有力地反驳了快乐哲学的基础。</p> 
<p>首先三大思想资源：宗教、传统道德、进化论都不支持享乐主义。我大概是在小学的时候接触到“享乐主义”这个说法的。当时我的第一直觉是“不是吧？人生的终极追求是快乐？那这样我不是只要整天玩就可以了吗？”但是慢慢地讲的人多了我也就被动地接受了。</p> 
<p>然后作者分析了为什么快乐哲学会变成主流。先说结论：因为在消费主义社会里，消费是最主要的行为。而消费的参与者除了“消费者”之外，还有“商人”。所以是商人在推动整个社会的消费，以及广泛宣传支撑其背后的消费理论基础：快乐哲学。</p> 
<p>大部分商业广告都在告诉你买了用了某个商品你就可以拥有怎样怎样的生活，高级一点的广告可能不会正面表达这件事情，但却会以巧妙的手法去塑造商家自己的企业形象。这点在专门讲“广告”的部分作者有做详细的分析。</p> 
<p>2007 年可能互联网广告还没有那么进步，现在的互联网广告会通过机器学习和大数据分析来做非常有针对性的投放。一个普通人天天接触大量的广告信息是很难影响他的行为和认知的。这也是为什么前段时期 Facebook 的数据泄露用于川普大选这件事情闹得沸沸扬扬，其背后的东西很有一种 Big Brother is Watching You 和 Skynet 已经建立起来的感觉。这让我联想起《安德的游戏》后期那个在通讯网络里诞生的人工智能的意识，凭借其极其迅速的成长，和不受时间影响（利用小说里的安塞波传输可以超越光速）等无敌技能，简直可以一统天下。同时我又想起《美丽新世界》里面试管婴儿批量生产然后通过广播不停地灌输各种刻板的东西制造出来的人类。</p> 
<p>回到 2018 年，广告的威力还没有那么强大，但是已经足够强大，不只是广告，还有我们能够接触到的所有的信息都有可能被主导了消费主义社会的人所操控。比如我最近想要解决的一个问题：“如何寻找优质内容？”郑也夫的这本《后物欲时代的来临》我认为就是优质内容，但这是我从播客节目听来的，如果播客不推荐别的优质内容怎么办？所以肯定不能把优质内容的源头交给其他人。</p> 
<p>现在微信公众号也好，微博也好，互联网上有太多的 KOL 在掌控话语权，在掌控流量。而我们去被动接受甚至主动寻找的过程中，经常受到这些东西的影响。比如说我想找一本好看的书，那我可能会去豆瓣看看榜单，亚马逊看看，Good Reads 看看，但是这些地方所认为的好书那就一定是好书吗？不一定，他们可以告诉我哪些是“热门书”，但是没法告诉我哪些是“好书”。</p> 
<p>所以为了能够“寻找到”优质内容，我以为首先要能清楚地认识自己，知道自己的能力边界，能够分辨“热门”和“优质”的区别，能够不被消费主义时代的霸主——商人——操控自己的行为。很多人被消费主义以各种各样的方式胁迫，随波逐流，别人干啥自己也干啥。之所以会这样，其基础都在于自己没有根，没有清楚地自我认知，没有办法认清自己想要的和别人塞给自己的东西有什么区别。</p> 
<p>阅读《后物欲时代的来临》并不能帮助任何人去认识自我，读完这篇文章更加不能。所谓“一个人如果不读书，那么他的人生观就只好被微信朋友圈所确定了。”这句话并不精确，但大概能表达我的想法。</p> 
<p>人需要消费，需要娱乐，这些是基础需求。就像不吃饭会饿死。但是人不能只有这个，否则就真的和咸鱼没什么两样了。为了填补“咸鱼”的空虚，大多数的人会选择 Easy 模式：用消费来填充自己，用购买来消除焦虑，然后更加焦虑。我觉得人应该要选择 Hard 模式：学习和提升自己的技能，往大了说比如成为一名音乐家、艺术家。</p> 
<p>在本书中，作者最后觉得消费主义最后的出路是人类要用艺术来取代曾经的“物质堆砌式炫耀”。但我觉得这里讲的有点含糊，因为即使“艺术”两个字也可以有 Easy 和 Hard 模式。越来越多的人去博物馆美术馆拍照，去听音乐剧就是这个道理。这和通过消费更多物质来彰显自己并没有区别，买张门票而已，完全没有门槛。我认为可以用来替代的，应该是自己掌握了艺术技能、鉴赏能力，能够成为自己的一部分，让自己成长，在未来带来更多持续的正向反馈的。</p> 
<p>《后物欲时代的来临》解释了消费，而且也只是解释了消费。他没有提供一个可供所有人参考的去应对的态度，或者所谓的人生目标，人生的意义。人生当然应该有意义，但是首先它必然不是任何其他人给你的意义，而且它也许是不能通过“寻找”来获得的，因为能被寻找就意味着它早已在那里了。我觉得可能人生的意义是需要自己的搭建起来的，是需要学习和探索的。很多事情在没有学习之前可能会觉得很难，比如让一个小学生去做泰勒展开，天哪这是个什么东西？但是你学会了高等数学，学会了微积分，就会发现噢原来这个很难的问题是有解决的方法，只是自己还没有找到而已。我自己也在学习自我认知，也在尝试搭建自己的人生意义。这篇文章也许是“每周读书”里话题扯得最大的一期了，但是没关系，因为这就是我正在做和思考的事情。希望不久的未来可以和大家分享这份学习的乐趣。</p> 
<p>2018.09.19/下午<br /> 于 T.i.T 创意园</p> 
<h3>参考资料</h3> 
<ul> 
 <li>本期书名: 后物欲时代的来临</li> 
 <li>作者: 郑也夫</li> 
 <li>出版社: 中信出版社</li> 
 <li>ASIN: B01M614KHQ</li> 
 <li>版本: Kindle</li> 
</ul> 
<p><em>[2018-10-10] 更正标题为 #149</em></p>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 3 &#x6DF1;&#x591C;&#x5355;&#x53E3;&#x804A;&#x8BFB;&#x4E66;</title>
        <link>https://justinyan.eth.limo/6AD6AEB6-7672-4183-88F7-B31F9C59250E/</link>
        <guid>https://justinyan.eth.limo/6AD6AEB6-7672-4183-88F7-B31F9C59250E/</guid>
        <pubDate>Wed, 19 Sep 2018 00:12:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/09/podcast-003.jpg" alt="Vol. 3 深夜单口聊读书" /></p> 
<p>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a></p> 
<p>今天的节目没有嘉宾，是我第一次做单口相声。晚上回家之后我本来想对最近看完的一本书做一下读书笔记，然后能产出一篇书评最好。但是最后坐在书桌前拿起笔也不知道该怎么下手比较好。于是就想要不直接对着麦克风随便聊点什么吧，也许就知道该怎么写了呢？</p> 
<p>事实证明我还是太天真了哈哈哈。结果就有了第一期的单口相声，从《后物欲时代的来临》这本书说起，扯淡到我自己写“每周读书”的过程，扯淡到诗歌等等乱七八糟的东西，非常符合本播客全是水货的风格。</p> 
<p>希望可以充当大家在上下班通勤的时候一个无聊的背景音 XD</p> 
<h3>节目收听方式</h3> 
<p>推荐使用播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听我们的节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="http://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 2 &#x6765;&#x804A;&#x804A;&#x5C0F;&#x6E38;&#x620F;&#x5427;</title>
        <link>https://justinyan.eth.limo/7948B34F-4AAB-4358-9A0E-CD1088D9EA05/</link>
        <guid>https://justinyan.eth.limo/7948B34F-4AAB-4358-9A0E-CD1088D9EA05/</guid>
        <pubDate>Sun, 16 Sep 2018 12:00:02 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/09/Podcast-002.jpg" alt="Vol. 2 来聊聊小游戏吧" /></p> 
<p>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a><br /> 本期嘉宾: <a href="https://twitter.com/hzlzh">黄自力 @hzlzh</a></p> 
<p>发完<a href="http://justinyan.me/post/3386">播客这个事情——枫言枫语播客节目第一期</a>之后，我和好朋友 <a href="https://twitter.com/hzlzh">@hzlzh</a> 聊了一期。</p> 
<p>几年前我和 @hzlzh 就录过一期播客，但是在上文我也说过当时自己没有能力解决一些做播客遇到的问题所以后来也就不了了之了。这次重启播客，正好最近<a href="https://tdw.tencent.com/">腾讯设计周</a> 刚刚结束，而 @hzlzh 也作为嘉宾去做了一场演讲。于是我和 @hzlzh 一合计，咱俩可以聊一波游戏话题是不。</p> 
<p>说聊就聊，赶紧把我压箱底的话筒拿出来，两人调试了半天 Remote 录音，最终有了这一期的播客。我们闲聊了一些关于微信小游戏的设计，游戏的妖魔化，游戏的价值的东西。</p> 
<p>秉承本播客一贯的作风，纯瞎扯，都是吹水闲聊，供诸君茶余饭后一听。</p> 
<h3>节目收听方式</h3> 
<p>推荐使用播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听我们的节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="http://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Vol. 1 &#x64AD;&#x5BA2;&#x8FD9;&#x4E2A;&#x4E8B;&#x60C5;</title>
        <link>https://justinyan.eth.limo/901A5A2D-4200-4863-82DA-E8D8281D9619/</link>
        <guid>https://justinyan.eth.limo/901A5A2D-4200-4863-82DA-E8D8281D9619/</guid>
        <pubDate>Sat, 15 Sep 2018 16:14:35 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/09/podcast.jpg" alt="Vol. 1 播客这个事情" /></p> 
<p>主播: <a href="https://twitter.com/MapleShadow">枫影 Justin Yan</a><br /> 本期嘉宾: <a href="https://twitter.com/imtangqi">汤奇 @imtangqi</a></p> 
<p>几年前（2015 年底）我和 @RoCry 闲聊的时候提到可以录一档播客节目，当时我们俩聊了第一期，后来我又找了几位朋友和我录了几期，然后就没有然后了。当时我自己对待播客的态度以及我解决问题能力等多方面的原因使得我没有办法一直做下去。</p> 
<p>几年过去了虽然播客和 YouTube Channel 没有更新但是播客一直在听 YouTube 也一直在看。当我看到 Matt D'Avella 的 YouTube Channel 的时候我感慨：啊，原来 YouTube 和 Podcast 还能这样结合在一起啊。虽然“每周读书”也没怎么更新但是书一直在读，最近读的书看的 YouTube 和听的播客给我了一些思考。这些思考也许是很久以前就开始了，但是最近因为某些契机使得这些思考开始由量变发生了质变。于是积攒了一堆的表达欲望。</p> 
<p>在我和朋友聊天的时候我突然想到其实我可以接着做播客。内容创作者经常面对的问题是时间分配，一人一天只有 24 小时，像我这样有全职工作的，在加班严重的互联网行业里的，基本上需要对自己个人的时间安排有非常好的掌握才有可能同时完成很多件事情，而且多数情况下只能是完成而不是做好。想要同时做好多件事情是一件极难的事情，为了做好这件极难的事情，你必须得有很强的内在驱动力，要有很大的能量去克服显而易见的巨大困难。</p> 
<p>昨天和 @imtangqi 瞎聊了一期播客之后，我觉得如果能够把同样的内容源以 Podcast、YouTube 和写作的方式沉淀下来其实是一件不错的事情，而且某种程度上可以节省很多时间。比如说我可以看完一本书之后，拍好 YouTube Video，把音频变成 Podcast，把内容写成文章。咋看上去好像还挺完美，其实要克服的困难依然很多。</p> 
<p>所以我想先从 Podcast 开始，和不同的人聊天，会收获很多不同的东西。这些思想的碰撞是可以帮助一个人突破思维局限性的。如果两个人放得开聊得足够嗨的话，其实剪辑音频并不需要花多少时间。</p> 
<p>几年前我开始做播客的时候，有人和我说现在已经不是播客的热门时期了。现在我依然做播客，显然就不是冲着播客能否带来流量这件事情。我很赞同“得意忘形”的主播张潇雨的态度，即做播客就是为了自己爽，为了和朋友聊天聊到爽（大意如此）。从这个角度来讲，播客只是其中一种形式，但是它也许会是一种相当不错的形式。</p> 
<p>以下是我的播客“枫言枫语”的第一期，和同样录了第一期节目的友台(Awake.fm) @imtangqi 一起录的，内容是关于 Apple 2018 秋季发布会新品的一次吹水闲聊。没有干活，全是水货，供诸君茶余饭后闲暇之余听个热闹。</p> 
<p><a href="https://www.lizhi.fm/138179806/2692447258144331782">枫言枫语01期 - 聊聊 Apple 2018 秋季发布会</a></p> 
<h3>节目收听方式</h3> 
<p>推荐使用播客客户端搜索<strong>“枫言枫语”</strong>来订阅收听我们的节目。我们也在国内的荔枝FM和喜马拉雅有同步音源。</p> 
<ul> 
 <li><a href="https://itunes.apple.com/cn/podcast/%E6%9E%AB%E5%BD%B1justinyan/id1069600190?mt=2">Apple iTunes Podcast - 枫言枫语</a></li> 
 <li><a href="https://www.lizhi.fm/user/2692246849576182828">荔枝 FM - 枫影JustinYan</a></li> 
 <li><a href="https://www.ximalaya.com/keji/18407168/">喜马拉雅 - 枫影JustinYan</a></li> 
 <li><a href="https://www.qingting.fm/channels/271110">蜻蜓 FM - 枫影JustinYan</a></li> 
 <li><a href="http://justinyan.me/feed/podcast">直接订阅 Feed URL</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x7684;&#x624B;&#x6307;&#x6CBE;&#x4E0A;&#x4E86;&#x94A2;&#x7B14;&#x58A8;&#x6C34;</title>
        <link>https://justinyan.eth.limo/F651D05C-0A50-4A14-B33D-D16C0B05BC06/</link>
        <guid>https://justinyan.eth.limo/F651D05C-0A50-4A14-B33D-D16C0B05BC06/</guid>
        <pubDate>Wed, 12 Sep 2018 14:30:44 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/09/cover-xiaofeizhuyi.jpg" alt="" /></p> 
<p>昨天下午我给钢笔上墨的时候发现手指沾上了一些，已经渗到指甲缝了。那瞬间我联想到的不是墨水很难洗，而是最近在读的一本书《后物欲时代》里面提到的关于“消费社会”的一些看法。</p> 
<p>提到“消费主义社会”就不得不提一个已经过气了的流行词“消费升级”。鉴于中国这几十年集中力量发展经济，整个中国社会处于蓬勃发展的繁荣状态。且不论“先富带后富”的可执行性，摆在眼前的现实就是一线城市已经优先发展起来，二线城市再走一线曾经的路子。有的人就把“后富”的过渡阶段称为“消费升级”。</p> 
<p>其实我觉得并没有所谓的“消费升级”，只有“消费”。作为“消费主义社会”浪潮里非常普通的一员，我日常也会消费，消费是无法避免的。那么为何今天的“消费主义”在主流舆论里面会变得好像带有贬义的色彩在里面呢？为什么“拜金”、“拜物”，或者“商品拜物”就是不好的代表呢？</p> 
<p>《后物欲时代》这本书我还没看完，所以在这篇文章里面我们不谈书，我来聊聊我最近的一些乱七八糟的思考。我的手指沾到的墨水是“鲶鱼墨水”（Noodler's Ink），用的笔套是 Pilot Pensemble， 里面的三支钢笔分别是 Lamy 2000, Pilot Mr. Animal, Lamy Safari，用来书写的笔记本是德国灯塔 Leuchtturm1917。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/09/xiaofeizhuyi-001.jpg" alt="" /></p> 
<p>这一堆东西无一不是非常“消费主义”的，无一不是非常“通过消费寻找身份认同和自我证明”的——也许有些人会给出这样的结论。我必须说明在几年前我买这些所谓“品质更好”的东西的时候是带有这样的心理的。那时候我刚有了自己挣钱的能力，有了可以自由支配的金钱。我需要一种社会认同感，需要用和所谓“上层社会”一样的东西来证明我更靠近所谓的“上层社会”。</p> 
<p>可以说这时期的我就是非常典型的“消费主义社会”成员，在大浪潮当中一脸懵逼地随波逐流。那么现在呢？消费主义就要完全弃之如敝履吗？我们要看上去好像非常清高地，彻底拒绝消费了吗？要通过嘲讽和贬低这些东西来让自己看上去好像层次很高吗？</p> 
<p>不是的，我得出的结论还是和以前一样：我应该要继续使用这些笔，笔袋和笔记本。但这不再是因为我需要通过物质来实现我的身份认同和社会认同，而是我有了足够的经济能力可以支撑我去使用品质更好的东西。如果今天我突然失业了，我没了收入，或者说因为什么原因我的经济能力不再能够支撑我去消费品质更好的东西了，那么我也能够接受用普通的圆珠笔和笔记本来作为书写工具。这里一个非常重要的区别就是，现在的我的消费，在“炫耀心理”或者说“通过物质来获取身份和社会认同”的部分变少了。</p> 
<p>用这样的变化来解释“消费升级”也许更加合适，但是我认为这并不是“升级”，而是回归到了“消费的本质”。真正合理的消费就应该是有怎样的消费能力就有怎样的消费，在自己的能力范围内满足自己的需求。但是在今天我所处的社会里，消费是由商人驱动的，消费者所处的地位非常弱势，商人通过对包括政治、广告和主流舆论在内的全方面控制，可以非常轻易地影响到绝大多数普通人的消费观念。而商人是逐利，所宣传的东西是在尽可能地扩大生产和销售，于是今天的人们在消费这件事情上就变得非常不理性。比如说通过获得稀缺物质来炫耀，获得身份认同这件事情在原始社会里面可能是一件非常高效的事情，它可以给你带来更多的地位，从而获取更多的资源，对于个体的生存是非常有帮助的。但是被商人利用起来之后就成了人性的一个弱点。现实生活中利用人性弱点来实现和达成的事情比比皆是，微信公众号的爆款文就是一个非常好的例子。</p> 
<p>现代人类的思考构成非常复杂，因为我们已经在很大程度上解决了温饱问题。在我们讨论的一二线城市的范畴里面，绝大部分人是不会再被饥饿这件事情所困扰的。这曾经是困扰了人类很长时间的一个问题，最近因为工业革命等生产力的极大发展，我们终于踏进这样一个不需要考虑温饱问题的阶段。这个阶段一开始可能大家会对资源匮乏仍怀有一种天然的恐惧，这种恐惧会让你在原始社会里获得更多的生存机会，但是在现代可能就会催生过度消费的行为。</p> 
<p>我作为一个普通家庭长大的孩子，很多东西其实是从小想要而得不到的。当我有了自己挣钱的能力之后，我很自然就会有要“大量占用某个东西”的想法。其实在一线城市工作的大多数还比较高级的白领，仅说收入的话是完全可以过上非常舒适的生活。但是即便如此，绝大多数的都市白领仍然处于一种非常焦虑的状态。这种奇怪的现象我觉得可以叫做“富有的穷人”。</p> 
<p>这些焦虑是来自于对比。我身边有很多比我富有得非常多的人，按照所谓“财务自由”的标准他们老早就自由了（当然“财务自由”在我看来也是个伪命题，这里我们且不展开讨论），但是他们简直比任何人都要焦虑，都要觉得自己穷。</p> 
<p>这种焦虑被很多写“微信公众号爆款文”的人看见，然后抓住这个点不停地去冲击这种焦虑的体验，给你灌输什么“连自己的身材都管理不好还能做成什么”，什么“财务自由的美好生活”等等等等诸如此类的垃圾。我认为这些人这么做是非常不道德的。我自己并不看这种类型的文章，但是我身边的朋友和家人会看，这些文章很擅长运用各种写作技巧来调动你的情绪，准确击中读者的心理，一旦你有一种“卧槽你说的好像很对”的感觉，读者就被写手牵着鼻子走了。</p> 
<p>这种事情和诓骗并没有两样，都是非常低级的做法。“消费社会”是我们现在所处的社会现状，因为经济发展阶段不同会有各种各样的变化，很多人会在变化中产生困惑和疑问。比如存在主义危机，中年危机等等凡此种种。很多人的焦虑好像产生得非常理所当然，却不知道去寻找或者问一个问题：为什么到了某个年纪我就得有这个危机？凭什么我身材不好就是罪恶？</p> 
<p>如果你去探索和思考这样的问题之后，很可能你就完全不存在这种焦虑和危机了。这是因为所有的这些所谓主流舆论也好，亲戚朋友的观点也好，全都来自外界。是外界在给你设定一个角色，然后你被迫地必须去扮演好这个角色，照着剧本来。比如你上学你得好好学习，考个好大学，去个好公司稳定工作，到了什么时间你就得结婚生个孩子。一切看上去都是“那么美好”，但是问题是这种美好是你自己想出来的还是别人告诉你的？</p> 
<p>每一个人都非常不一样，为什么可以说这种所谓的“美好生活”就一定适合所有人呢？</p> 
<p>问出这个问题其实就和“我是谁？我来自哪里？我要到哪里去？”这样的人类终极问题类似了，其实就是在说“人生的意义是什么？”。或者说得更具体一点，就是“我自己的人生意义到底是什么？”</p> 
<p>每一个人的人生都不一样，每个人的人生意义当然也完全不一样，人生意义不是别人告诉你的，也不是现成地摆在某个地方你去寻找回来的，而是必须由你自己去一点一点搭建起来的。</p> 
<p>我知道这个说法的时候很惊讶，然后我去和一些朋友交流的过程我发现他们其实也和我有同样的问题，这个问题就是：自我认知的不足。就是没有很清楚地认识到自己作为一个人，一个个体，是由独立的自我意识的这件事情。</p> 
<p>这里提到自我认知是因为外界或者说环境之所以可以给某个人产生非常巨大的影响，我认为是自我认知不足的关系。环境当然会对一个人产生影响，但是如果一个人的自我认知足够充分，说得流行一点就是内心足够强大（其实这种类型的话我非常不喜欢，说了跟没说一样，类似的还有什么存在即合理之类的），那么环境对他的影响就会非常有限。因为他会去吸收外界给他传递的信息，但是一定会经过自己的过滤和处理，最终决定对于自己来说，我应该要根据这些信息来做出什么样的反应，或者改变。</p> 
<p>回到消费主义的话题来。我现在之所以可以很坦然地承认几年前的我是随大流的，是消费主义社会的普通一员，而且今天也仍然是，那是因为我并不会在意我讲出这句话的时候，别人会揪着这个点怎么样地来评价我。这并不是说我完全不在意，而是说这种来自外界的东西对我的影响变少了。于是我就可以在一个相对孤立或者安全的空间里面，去思考我买文具和使用文具这件事情本身，他对我来说是一个什么样的事情。</p> 
<p>我得出的结论是：我喜欢这些文具，而且我有足够的经济能力可以负担我的这份喜欢。我可以去购买品质更好的文具来取悦我自己，但是某一天如果我买不起了，那我也完全能够接受使用更便宜的，品质比较一般的文具。也就是说，物质在这里变成了一个有实际使用价值的东西，我在购买它的时候所期待的它在“身份认同”方面能够带来的东西的欲望在降低，而期待的它的实际使用价值的必中在提高。</p> 
<p>所以如果从非常商业的角度来看待“消费升级”这件事情的话，我认为可能二三线城市未来的消费在“身份认同”这里的投入会变多。比如星巴克作为一家咖啡馆，他的本职是卖咖啡，但是也带有“身份认同”的属性在里面，无印良品在中国也是这样的路数。而随着越来越多人的觉醒，原本通过购买物质来获得身份认同的人可能会转向更多别的东西。</p> 
<p>比如说通过学习来提升自己的能力和素养，通过真正意义上的能力提高来获得身份认同。可以是学个乐器，学画画，提升鉴赏能力之类的。这种做法我认为是正向的，是会让整个社会变得越来越好的。</p> 
<p>但是学习毕竟是非常痛苦的过程，所以我认为还是会有相当多的人，会选择和购买某个物质一样的更加轻松的路子。比如说为了身份认同而旅行、逛博物馆、看艺术展之流。如果一个人是为了提升自我，或者纯粹为了享受旅行这件事情的话，他其实会觉得去趟欧美南北极发不发朋友圈都无所谓，但是应该还是会有相当一部分人认为，到了这个地方不拍照发朋友圈就亏了。</p> 
<p>现在很多博物馆的展览喜欢做色彩艳丽的装置艺术展，或者用纯度比较高的单色背景做幕墙，其实就是考虑到可能来参观的人会有相当一部分是想要拍张好看的照片去发朋友圈的。之前广州省博有一场穆夏的展览，他的插画非常漂亮也很适合拍照，吸引了大量的年轻女性观众前来参观。</p> 
<p>有艺术修养或者接受过专业艺术训练的人，可以从穆夏的插画里面看到很多东西。就像一个工程师可以看到淘宝背后极其庞大的系统而普通人可能会说“这不就是淘宝嘛”之类的，这属于专业认知上的差距。当然也并不是说光拍照发朋友圈这样就完全不好，毕竟每个人都有自己选择什么的自由，去一趟博物馆看一下画起码还培养了审美能力，这也是件好事。不过我想表达的点在于“消费内容的转变”。从以前购买稀缺物质来展示自己，到未来的购买稀缺的抽象象征的东西来展示自己。这大约就是所谓“消费升级”想要表达的东西吧。而其实真正意义上的身份认同，还是得回归到比如凭借自己的艺术修养对穆夏的画做出评价这方面来，相形之下，普通照片就是普通照片，既没法获得身份认同，除了自己留念之外也没有多大价值。所以有人喜欢拍照那就拍吧无所谓，只不过在看的人眼里，可能这并不是什么了不起或者有价值的信息罢了。</p> 
<p>回到我自己身上来，我作为消费社会里非常普通的一员，未来可能会怎么做呢？首先我要指出过去的我曾经受到消费主义的困扰，消费主义和身份认同给我带来过焦虑和负面的情绪，但是现在这种情绪已经不存在了。具体地说，比如某年出了一个新的电子产品，比如 iPhone，或者 Kindle，我就会不自觉地在脑袋里 Picture 出拥有这个产品了之后我可能可以获得的美好的场景，相当于自己给自己播广告。但是现在我不再有这样的困扰了，很长一段时间我看到新的电子产品也完全没有以前那种“噢好想买一个”这样的情绪在了。</p> 
<p>这可能是因为我在过去几年里也确实深受其害地买了很多我自己其实并不需要的东西，所以现在我会更理性地去看这些新产品，会去分析我是不是真的需要它然后再决定要不要买。</p> 
<p>消费这个事情虽然有它负面的一面，但是它也是日常生活里必不可少的一项活动，所以我还是会继续购买一些新的东西来取悦我自己。但是关于“身份认同”这里，我可能会尝试从其他方面来获取。比如我们讲得虚一点，鸡汤一点：</p> 
<blockquote>
 <p> 要做有价值的事，而不是有价格的事。 </p>
</blockquote> 
<p>如果哪一天我能够通过做了“有价值的事情”而获得更多人的认可，那才是一种真正意义上的身份认同，而不是比如毫无意义的物质炫耀，旅行炫耀，以及粉丝数炫耀。</p> 
<p>2018.09.12/上午</p> 
<p>于 T.i.T 创意园</p> 
<p><em>P.S. 最近看了听了很多颇具启发性的文章和播客，包括 Rio、张潇雨、史秀雄等人产出的优质内容，也与很多朋友交流和讨论了一些自己长时间以来所面临的困惑和疑问，内心涌动颇有无处宣泄之感，遂作此文。也许有很多观点各位读者曾经看过，会油然升起有“这不就是谁谁说的”这样的鄙视之感，关于“谁谁说过我还能不能说”这点我们可以在另外的文章讨论。如果读者朋友们对于这些话题有不同的看法或者有自己想要表达的东西，欢迎以留言、发消息等形式进行讨论。</em></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #148 &#x6751;&#x4E0A;&#x6625;&#x6811; - &#x300A;&#x4F60;&#x8AAA;&#xFF0C;&#x5BEE;&#x570B;&#x5230;&#x5E95;&#x6709;&#x4EC0;&#x9EBC;&#xFF1F;&#x300B;</title>
        <link>https://justinyan.eth.limo/567964C5-8F6B-4ED2-9ABD-CB30CC118BB7/</link>
        <guid>https://justinyan.eth.limo/567964C5-8F6B-4ED2-9ABD-CB30CC118BB7/</guid>
        <pubDate>Mon, 02 Jul 2018 10:20:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/06/traveling-cover.jpg" alt="旅行，大概是件好玩的事情" /></p> 
<p>“每周读书”以前介绍过<a href="https://justinyan.me/post/3195">安藤忠雄的《安藤忠雄都市彷徨》</a>，<a href="https://justinyan.me/post/1767">孙东纯的《迟到的间隔年》</a>，<a href="https://justinyan.me/post/1734">石田裕辅的《不去会死！》</a>，这些都是阅读起来十分愉悦的书。</p> 
<p>最近我读了村上春树的《你說，寮國到底有什麼？》，这本书读起来很舒服，不过和上述三者有所不同。安藤忠雄的思考有其专业深度，文笔优雅技巧娴熟；孙东纯的文字比较质朴，并不深奥，但是经历真实动人；石田裕辅的文风最为朴素，无甚技巧可言，但胜在故事独特，单车环游世界颇为奇幻。</p> 
<p>村上春树与这三者全然不同，虽是游记，但是行文继承其小说一贯的亲切，叙事方式与第一人称小说无异。这部文集的故事并不出彩，但作家的体验与思考十分独特，是一本可以在轻松阅读的过程中频频点头的书。</p> 
<p>我也翻阅过些并不好玩的游记，只是没有在博客发表出来。同样是旅行这件事情，同样是写作出版，为什么有些作品让人开心有些却令人厌烦呢？</p> 
<h2>如果把人比作一个黑盒</h2> 
<p>如果把人比作一个黑盒，旅行可以看做黑盒的输入，游记写作可以视为输出。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/06/blackbox001.jpg" alt="黑盒" /></p> 
<p><strong>输入</strong>的形式有很多种，旅行只是其中之一。旅行的方式又有不同，旅行社带团，多人自助游，单人随性游，或徒步或骑行或自驾或扬帆。每个人在旅途中所视所闻所体验所感受大抵决定了黑盒输入端的信息量与信息价值。</p> 
<p><strong>黑盒</strong>的处理能力因人而异。假使同样的时间地点同样的旅行方式产出基本雷同的信息量与信息价值，那么黑盒的处理能力与处理方式就决定了输出的信息量与价值。比如同样去冰岛，擅长讲故事编辑视频的 YouTuber 可以产出有趣的视频，擅长写作的村上春树可以产出游记，普通大众可能会产出剪刀手纪念照。同样是视频、游记和照片，<strong>黑盒的能力决定了是否能够输出以及输出物的质量</strong>。</p> 
<h2>输出质量的高低不会让人厌烦</h2> 
<p>令人厌烦的不是拍得模糊或者构图奇怪的照片，也不是过分抖动收音很差的视频，当然也不会因为小学生水平的写作技巧。以我读过的令人厌烦的游记来说，他们大抵都有一个共同的特点：<strong>自视过高</strong>。</p> 
<p>作者会有这种心理是很容易理解的，以前我们在介绍《影响力》的时候有提到，<strong>人类的认知模式会在潜意识认为相近的事物具有相似的属性</strong>（类似格式塔心理学之类），所以和名人合照的人似乎就获得了名人光环的庇佑一般。而炫耀心理又会让人们乐于把这种<strong>低成本取得的光环</strong>通过互联网对外广播。</p> 
<p>旅行大约是相似的东西。有些作者会在游记里或显式或隐式地透露出<strong>“能在这个地方旅行是非常厉害的一件事情”</strong>，而一旦读者意识到真相并不如此，在这个地方旅行的成本不过是一张机票一份签证而已的时候，就会有一种不过如此的感觉。</p> 
<p>前段时间我读到一本勇闯无人区的游记，这件事情本身难度系数很高，能做到这件事情的人在某种意义上值得尊敬。但因为作者在行文中再三提及自己的旅程是举世无双的创举，又因为不是职业作家，文笔繁冗无趣，作为读者来说阅读体验也是非常糟糕的。这本书技巧平平不是问题，但三句不忘吹捧自己让本就艰涩的阅读雪上加霜，终于读不下去。</p> 
<h2>《你說，寮國到底有什麼？》</h2> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/06/nishuo-liaoguodaodiyoushenme.jpg" alt="你說，寮國到底有什麼？" /></p> 
<p>《你說，寮國到底有什麼？》是一本游记文集，村上春树因为职业与兴趣的关系，多年以来旅居世界各地。所见所闻固然异于常人，作家的见识与态度，文笔与思考，决定了这部“输出”不会太差，至少不会令人厌烦。</p> 
<blockquote>
 <p> 那就是活著本身的自由，如果以一句話來說，大概就是這麼回事。那種自由在日本是很難嘗到的。 </p>
</blockquote> 
<p>这是书里我最喜欢的一句。大都市是一个巨型囚笼，行走在其中的囚徒们来来往往，日日夜夜，亦步亦趋地跟随时代的潮流。作为囚徒的一员，我也无可避免地会遇到各种各样的事情，疲累的时候我会想要踏上旅途，切换到另一个平行世界，假装在深山老林里悠闲地享受活着的自由。</p> 
<p>很多信息的输入是无法通过浏览互联网，阅读书籍来获得的，不去亲自踏上碎石路，淋一场雨，捧一把雪，听一听海浪的声音，闻一闻鱼市场的味道，大抵感受不到这个地方的魅力。更不用说与当地人聊一聊天，尝一尝当地特色的食物了。</p> 
<h2>旅行，只是件好玩的事情罢了</h2> 
<p>有人喜欢通过广告文案抬高“旅行”的价值，有人喜欢发照片的时候把“旅行”吹成神圣的仪式，但很少有人关注“旅行”本身。旅行，应该是一件好玩的事情。不管通过什么样的形式在什么样的时间去什么样的地方旅行，应该是令人开心的（除非你是在流浪），而且仅此而已。旅行并不神圣也不是人生必需品。</p> 
<p>我喜欢旅行，不仅因为可以暂时离开囚笼，也因为可以在旅行的过程中，体会活着本身的自由。</p> 
<p>2018.06.29/中午<br /> 于 T.i.T</p> 
<h2>参考资料</h2> 
<ul> 
 <li>本期书名: 你說，寮國到底有什麼？</li> 
 <li>作者: [日] 村上春树</li> 
 <li>译者: 賴明珠</li> 
 <li>出版社: 時報文化</li> 
 <li>ISBN: 9789571368559</li> 
 <li>版本: 纸质书</li> 
</ul> 
<h2>关于书名</h2> 
<p><em>P.S：书名日文为『ラオスにいったい何があるというんですか?』，直译成简体就是《老挝究竟是什么？》，繁体中的『寮国』即老挝。简体版本书译为《假如真有时光机》，是文集中关于纽约爵士俱乐部一篇的标题。我个人比较喜欢繁体版的译名，和原著书名完全一致。</em></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5728; Swift &#x91CC;&#x4F7F;&#x7528;&#x6307;&#x9488;</title>
        <link>https://justinyan.eth.limo/CA42D996-32EF-4A6D-BFF1-B9EE0EA69C4C/</link>
        <guid>https://justinyan.eth.limo/CA42D996-32EF-4A6D-BFF1-B9EE0EA69C4C/</guid>
        <pubDate>Thu, 28 Jun 2018 13:38:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/06/use-c-pointer-in-swift.jpg" alt="" /></p> 
<p>最近做的事情需要在 Swift 里调用 C 函数，要学的东西很多，经历颇为曲折，遂作此笔记以备忘。</p> 
<h2>1. 什么是指针？</h2> 
<p>参考这里： <a href="https://denniskubes.com/2017/01/24/the-5-minute-guide-to-c-pointers/">The 5-Minute Guide to C Pointers</a></p> 
<p>或者中文版： <a href="http://blog.jobbole.com/25409/">C 语言指针 5 分钟教程 - 文章 - 伯乐在线</a></p> 
<h2>2. Swift 里的不安全操作</h2> 
<p>Swift 大部分操作都是安全的，<code>Optional</code> 的引入也是为了安全。大部分情况下编译器会帮我们做静态校验，一个 <code>Int</code> 类型不能被当做一个 <code>String</code> 传参，一个 <code>Optional</code> 类型必须 <code>Unwrapped</code> 之后才能安全使用。</p> 
<p>但是 Swift 也支持对内存的直接操作，这些操作都是不安全的，所以涉及的 API 都带有 <code>Unsafe</code> 前缀，比如指针 <code>UnsafePointer</code> 类型。</p> 
<p>通过下标访问数组内容也属于不安全操作，比如：</p> 
<pre><code class="swift">let arr = []
let test = arr[1]
</code></pre> 
<p>编译时不会报错，运行时 crash。</p> 
<h2>3. MemoryLayout</h2> 
<p>C/C++ 里常见的 <code>sizeof()</code> 关键字在 Swift 里面原先也有，以及 <code>sizeofValue</code>, <code>strideof</code>, <code>strideofValue</code>, <code>align</code> 和 <code>alignOf</code>。在 Swift 3 中，这一堆“函数”被包进了 <code>MemoryLayout</code> 这个 Struct 里面，这里是<a href="https://github.com/apple/swift-evolution/blob/9cf2685293108ea3efcbebb7ee6a8618b83d4a90/proposals/0101-standardizing-sizeof-naming.md">当时的提案</a>。</p> 
<p>于是和内存对齐内存占用等相关的信息就都可以通过 <code>MemoryLayout</code> 获取，比如：</p> 
<pre><code class="swift">MemoryLayout&lt;UInt32&gt;.size // 4
MemoryLayout&lt;UInt32&gt;.alignment // 4
MemoryLayout&lt;UInt32&gt;.stride // 4
</code></pre> 
<p>UInt32 默认占 4 个字节，内存对齐为 4 字节。</p> 
<p>连续内存里多个实例排列时（比如数组），上一个实例开始地址到下一个实例开始地址的距离为 4 个字节。</p> 
<p>在我的 64-bit 机器上，Int 类型则和 UInt64 类型一样，占 8 个字节。</p> 
<h3>内存对齐</h3> 
<p>为什么需要做内存对齐可以参考这里：<a href="https://stackoverflow.com/questions/381244/purpose-of-memory-alignment">Purpose of memory alignment - Stack Overflow</a></p> 
<p>理论上物理内存的单位是一个字节(byte)，我们最小能访问的内存就应该是一个字节。但是实际上为了效率考虑，或者硬件限制，我们访问内存总是字长的倍数，字长由设备来决定，比如某机器 64 位机器以 8 字节为字长，这样设备每次访问内存都会以 8 字节为单位。如果内存里的某个值不在 8 字节的边界上，那么处理器想要获取这个值就得访问两次内存，为了性能考虑通常编译器会对这些值做内存对齐，用空间换时间。</p> 
<p>另外 App 能访问的内存地址都不是物理地址，而是通过操作系统访问到的虚拟地址。</p> 
<p>比如下面这个 <code>Struct</code>：</p> 
<pre><code class="swift">struct SampleStruct {
  let number: UInt32
  let flag: Bool
}
</code><p><code class="swift">MemoryLayout&lt;SampleStruct&gt;.size // returns 5<br /> MemoryLayout&lt;SampleStruct&gt;.alignment // returns 4<br /> MemoryLayout&lt;SampleStruct&gt;.stride // returns 8<br /> </code></p></pre>
<p></p> 
<p><code>UInt32</code> 长度 4，<code>Bool</code> 长度 1,总长其实是 5。但是因为内存对齐的存在，所以整个 <code>Struct</code> 塞进内存里会以 4 字节对齐，结果占用 8 个字节(64位机器)。</p> 
<p><code>Struct</code> 和 <code>Int</code> 一样是值类型 (Value Type)，但如果是引用类型(Reference Type) 比如类 class，就不太一样。</p> 
<p><strong>Swift class 在底层实现事实上是一个 Objectivce C Class(根据 mikeash 的<a href="https://academy.realm.io/posts/goto-mike-ash-exploring-swift-memory-layout/">这个视频</a> Xode 8, Swift 3)</strong>，我们创建一个新的 Swift class 实例的时候，会在堆上 (heap) 分配一块比较大的内存，用来保存诸如 <code>type</code>, <code>reference count</code>之类的信息，在栈上 (stack) 只分配一个指针，指向堆上的这块内存。所以对一个 <code>class</code> 执行 <code>MemoryLayout</code> 效果如下:</p> 
<pre><code class="swift">class SampleClass {
  let number: UInt32
  let flag: Bool
}
</code><p><code class="swift">MemoryLayout&lt;SampleClass&gt;.size // returns 8<br /> MemoryLayout&lt;SampleClass&gt;.alignment // returns 8<br /> MemoryLayout&lt;SampleClass&gt;.stride // returns 8<br /> </code></p></pre>
<p></p> 
<h2>4. Swift Pointer</h2> 
<p>Swift 一共有 8 种指针类型。基础是不可变指针 <code>UnsafePointer</code>，对应的会有可变指针 <code>UnsafeMutablePointer</code>。另外还有可以塞数组的 <code>Buffer</code> 指针和完全不知道是什么内容的 <code>Raw</code> 指针，也即没有指定泛型。</p> 
<p>四种带类型指针：</p> 
<ul> 
 <li>UnsafeMutablePointer
  <t></t></li> 
 <li>UnsafePointer
  <t></t></li> 
 <li>UnsafeMutableBufferPointer
  <t></t></li> 
 <li>UnsafeBufferPointer
  <t></t></li> 
</ul> 
<p>四种不带类型的 <code>RawPointer</code>:</p> 
<ul> 
 <li>UnsafeMutableRawPointer</li> 
 <li>UnsafeRawPointer</li> 
 <li>UnsafeMutableRawBufferPointer</li> 
 <li>UnsafeRawBufferPointer</li> 
</ul> 
<p>Apple Developer 文档里有 C 指针和 Swift 指针的对应表：</p> 
<table> 
 <thead> 
  <tr> 
   <th>C Syntax</th> 
   <th>Swift Syntax</th> 
  </tr> 
 </thead> 
 <tbody> 
  <tr> 
   <td>const Type *</td> 
   <td>UnsafePointer
    <type></type></td> 
  </tr> 
  <tr> 
   <td>Type *</td> 
   <td>UnsafeMutablePointer
    <type></type></td> 
  </tr> 
  <tr> 
   <td>Type * const *</td> 
   <td>UnsafePointer
    <type></type></td> 
  </tr> 
  <tr> 
   <td>Type * __strong *</td> 
   <td>UnsafeMutablePointer
    <type></type></td> 
  </tr> 
  <tr> 
   <td>Type **</td> 
   <td>AutoreleasingUnsafeMutablePointer
    <type></type></td> 
  </tr> 
  <tr> 
   <td>const void *</td> 
   <td>UnsafeRawPointer</td> 
  </tr> 
  <tr> 
   <td>void *</td> 
   <td>UnsafeMutableRawPointer</td> 
  </tr> 
 </tbody> 
</table> 
<h2>5. 特殊指针</h2> 
<p>上面提到的八种指针都比较常见，比如 <code>const int *</code> 对应 Swift <code>UnsafePointer&lt;Int32&gt;</code>。那如果有些比较复杂的需求上述指针无法满足的怎么办呢？</p> 
<h3>OpaquePointer</h3> 
<p>如果一个 C 指针类型无法在 Swift 中找到对应的类型，则可以用这个指针来表达，比如一个类型为 C Struct 的指针。</p> 
<p>该指针的初始化方法里有一个比较特别的方法：</p> 
<pre><code class="swift">init?(bitPattern: Int)
    // Creates an OpaquePointer from a given address in memory.
</code></pre> 
<p>可以用一个内存地址来初始化这个指针。举个例子，现在 Swift 要调用 C 函数，传入一个 <code>context</code> 指针，回调的时候 C 函数会把这个指针通过参数带回给 Swift，相当于 ObjC 常见的 <code>userinfo</code>。我们可以这样做：</p> 
<pre><code class="swift">// 把 self 用 OpaquePointer 指针表达
let pointer = UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque())
</code><p><code class="swift">// 传给 C 函数...<br /> // 在 C 函数的回调里面取会这个指针<br /> let someObj = Unmanaged&lt;ObjectClass&gt;.fromOpaque(context!).takeUnretainedValue()<br /> </code></p></pre>
<p></p> 
<h2>6. 小结</h2> 
<p>指针非常强大，在 C/C++/ObjC 语言中也是使用非常广泛的工具。但是同时直接操作内存也给程序带来非常高的风险。项目简单的时候问题不大，一旦复杂起来问题就很容易被淹没在茫茫代码里。</p> 
<p>Swift 的设计是倾向安全的，我们平时会用到的大部分特性都不需要和裸的内存数据打交道，所有的指针，内存绑定等事情都由已经封装好的高级类型帮我们搞定了。</p> 
<p>但是 Swift 也提供了不安全的内存操作 API，尽管相比起 C 接口，Swift 已经尽量做了相对安全的封装，但我们在使用这些 API 的过程中仍然需要小心谨慎。</p> 
<p>想要在使用过程中不犯错就必须先理解这些不安全的操作都做了什么，必须理解指针，理解内存，理解这些操作在 C/C++/Swift 里的差别。@mikeash 的演讲 <a href="https://academy.realm.io/posts/goto-mike-ash-exploring-swift-memory-layout/">Exploring Swift Memory Layout</a> 讲得非常好，值得一看。</p> 
<h2>7. 参考资料</h2> 
<ul> 
 <li><a href="https://onevcat.com/2015/01/swift-pointer/">Swift 中的指针使用</a></li> 
 <li><a href="https://academy.realm.io/cn/posts/nate-cook-tryswift-tokyo-unsafe-swift-and-pointer-types/">Swift 皇冠上的明珠：不安全的 Swift 和指针类型</a></li> 
 <li><a href="https://denniskubes.com/2017/01/24/the-5-minute-guide-to-c-pointers/">The 5-Minute Guide to C Pointers</a></li> 
 <li><a href="https://www.raywenderlich.com/148569/unsafe-swift">Unsafe Swift: Using Pointers And Interacting With C</a></li> 
 <li><a href="https://academy.realm.io/posts/goto-mike-ash-exploring-swift-memory-layout/">Exploring Swift Memory Layout</a></li> 
 <li><a href="https://juejin.im/entry/59156846a22b9d0058007283">Swift 对象内存模型探究（一） - iOS - 掘金</a></li> 
 <li><a href="https://developer.apple.com/documentation/swift/imported_c_and_objective_c_apis/using_imported_c_functions_in_swift">Using Imported C Functions in Swift | Apple Developer Documentation</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4EFB;&#x4F55;&#x590D;&#x6742;&#x7CFB;&#x7EDF;&#x90FD;&#x662F;&#x7531;&#x7B80;&#x5355;&#x6784;&#x5EFA;&#x8D77;&#x6765;&#x7684;&#x2014;&#x2014;Factorio &#x548C;&#x8F6F;&#x4EF6;&#x5DE5;&#x7A0B;</title>
        <link>https://justinyan.eth.limo/5F912810-5C3D-42CB-9AFF-223829B45821/</link>
        <guid>https://justinyan.eth.limo/5F912810-5C3D-42CB-9AFF-223829B45821/</guid>
        <pubDate>Thu, 21 Jun 2018 20:00:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/06/factorio_mp.jpg" alt="任何复杂系统都是由简单构建起来的——Factorio 和软件工程" /></p> 
<p>我很喜欢沙盘游戏，尤其是模拟建设类，不管是最近的 Rim World, Factorio 还是古老的《宙斯：众神之王》、《模拟城市 3000》，都能让我沉迷很长时间。</p> 
<p>我的职业是程序员，很多同事喜欢自己的产品被很多人使用的感觉，但我却更喜欢“由自己从零开始创造东西”的体验。在办公室里敲出来的东西往往是多人合作的结果，是多方 trade off 的产出。所以相比于在大公司敲代码，作为个人开发者做出来的东西更能让我感到愉悦，尽管用户量级无法相提并论。</p> 
<p><strong>玩沙盘游戏本质上就是在从零创造。</strong>只是比起在现实世界写代码，游戏里的规则更加明确，反馈更及时，也少了大量干扰元素，使得玩家可以全力集中在“创造”这件事情上。2012 年在 Steam 上架的 Factorio 是我目前玩过的游戏里最接近“写代码”这件事情的，在游戏里你要解决的问题和在软件工程中要解决的非常相似，在逻辑上两者的思路是一致的。</p> 
<h2>零、都是工程</h2> 
<p>Factorio 中文译名为“异星工厂”，游戏的背景是在外太空的某个荒凉的星球上，玩家可以操控一个唯一的人物，用他来挖矿，采集资源，建造工厂，通过流水线把原始的简单手工劳作变成极度复杂的自动化作业。玩家在游戏过程中不断面临各种复杂工程带来的问题，如何设计合理的区域规划，如何搭建纵横交错的物流系统，如何应对污染带来的虫族袭击等等等等，这些问题是环环相扣，相互联动的。</p> 
<p>在实际写代码的过程中，程序员也会面临项目变大以后带来的种种问题。以我熟悉的 iOS 客户端开发为例，在游戏中利用自动化替代重复低效的手工劳作就像在工程中把 Copy and Paste 的代码抽象成可复用的 Pure Function 从而一步步变成可重用的模块；在游戏中解决传送带规划问题就像保证数据传递在整个 App 里的可靠性（数据在流动过程中不被篡改）和及时性（性能）。还有很多类似的问题可以直接在软件工程中找到非常相近的映射，<strong>玩 Factorio 的过程就像在写代码一样。</strong></p> 
<h2>一、新的游戏</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/06/factorio_map.jpg" alt="" /></p> 
<p>游戏一开始人物出现在荒凉的星球上，周边有几种基础资源：</p> 
<ul> 
 <li>可用作燃料的煤炭</li> 
 <li>可制造其他东西的原料：铁矿、铜矿、石矿</li> 
 <li>还有水池和森林</li> 
</ul> 
<p>游戏初期我们只需要上述资源就可以开始动手建工厂了。游戏人物可以手动挖矿，效率非常低，玩家必须一直按住鼠标。挖到第一块煤之后就可以建造热力挖矿机，踏出生产力解放的第一步。但这个时期玩家还是要操作人物在地图上跑来跑去，从煤矿区拿煤到其他矿区补充给挖矿机，如果有自动添煤的东西就好了。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/06/factorio_steam_engine1.jpg" alt="" /></p> 
<p>于是我们开始在水池边放上水泵，抽出来的水导入锅炉里加热产生蒸汽，再造个蒸汽机可以发电了，再把电线拉到矿区，修上传送带和机械爪，把煤矿产出的煤通过传送带运到其他矿区，机械爪就可以自动给挖矿机填煤。于是游戏中最简单的自动化挖矿流程就跑起来了，玩家不再需要操作人物跑来跑去，一切就自动运转起来了，多么美好！</p> 
<p>这种从空地图开始构建新工厂的感觉和从零开始写一个新的项目是一样的。软件项目刚启动的时候，一切都是空白的，操作系统提供的能力就像游戏地图里提供的各类资源，我们根据这些资源构建出一个新的 App、网站、服务，就像在游戏里一步步修成一个巨大的工厂。</p> 
<p>写下第一行代码 "Hello World!" 之后我们就要开始写函数，形成独立模块，慢慢演变成一个更加复杂的项目。一旦项目复杂起来，数据传递就成了一个复杂的问题。比如现在大家一个很常见“头像”这个东西，他本质上是一个图片，可以用一个 URL 表达。这个 URL 有可能会发生改变，一旦改变我就要在整个 App 刷新用到这个头像的所有图片。从知道 URL 改变的那个地方，把这个新的 URL 传递给 App 里的所有地方这件事情，就是数据传递，这样的数据传递在软件工程里比比皆是，像极了游戏里把煤炭传送到各个矿区这件事情。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/06/factorio_avatar.jpg" alt="头像" /></p> 
<p>除了数据传递，还有封装(Encapsulation)。所谓封装就是把很多数据和对数据的操作放到一个黑盒子里，用的人不需要管里面具体长啥样，你只要丢一个数据进去，它就会变成另一个东西出来。我们还是以头像为例，头像的 URL 是一段很长的文本，光看文本鬼知道你长啥样，所以我们需要拿这个 URL 去下载对应图片然后显示到屏幕上。这样我们可以设计一个黑盒，他的输入是一个 URL 文本，输出就是一个图片。这就是非常简单的封装。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/06/factorio_blackbox.jpg" alt="黑盒" /></p> 
<p>在 Factorio 这个游戏里，我们通过传送带来实现输入输出。基础资源就那么几个，但是我们建造复杂产品需要用电路板，电路板需要铜线和齿轮，铜线需要铜片，铜片由铜矿石冶炼而成，齿轮则由铁矿石冶炼成铁片再加工而成。于是我们可以看到，负责产出电路板的流水线，他的输入是铁片和铜片（一般铁矿石都会冶炼完再上传送带），输出就是电路板。</p> 
<p>Factorio 的玩家社区里有很多非常聪明的玩家给出了各种黑盒设计图，其他玩家可以学习他的布局方法来实现自己的黑盒。这种分享行为在软件开发里叫做开源。在软件开发过程中，很多问题是大多数都会遇到而操作系统没有提供完善的解决方案，于是就有人把这些公共解决方案做成组件开源给大家用，在 Factorio 里你可以通过复制粘贴其他玩家开源的“蓝图”来建造别的玩家的设计。</p> 
<h2>二、升级扩张</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/06/factorio_conveyor.jpg" alt="堵车-传送带" /></p> 
<p>通过一段时间的建造，你在 Factorio 的工厂已经足够庞大，所生产的物品数量已经远远超过人物手搓生产的东西。但是你并不满足。在游戏里，玩家可以通过科学研究解锁更多可以制作的东西，科技越强生产效率就越高。于是玩家会试图用产量更大的铜炉来替代早期的石炉，从而更快生产出更多铁片。但是这时候就会发现老的传送带不够用了，因为传送带速度太慢，铜炉的单位产出量大于传送带的单位传送量，于是就会阻塞在那里，机械爪不动了，铜炉也不生产了。所以虽然铜炉的生产速度提高了，但是在整个冶炼区的生产速度却受限于传送带的速度，这就是典型的木桶短板了。这种时候玩家就应该考虑用更高速的传送带来替代老的慢速传送带了。但是一环扣一环，高速传送带又会让老的慢速机械爪错过物品抓不到东西，反而降低了生产区的实际产量。再加上以前规划传送带的时候很多地方错综复杂，是时候好好改建一把了！</p> 
<p>这样的事情在软件工程有一个术语，叫做重构（Refactor）。一个软件项目，不管是前端后台客户端，一开始都是从零构建的，所有的东西都非常简单，为避免过度设计，初期代码并不会从一个大型复杂项目的角度去考虑，于是在后期成长为一个巨型项目时就会遇到类似游戏里的传送带问题。我在游戏里也经常会从主传送带分流多个子传送带给不同的产区，然后发现传送带太多导致很多地方无法布局新的传送带，或者因为分流太多导致流量太少无法发挥全部产能。这里的流量控制问题既像交通堵车问题，也像软件工程里的多线程调度问题。</p> 
<p>一旦项目成长到复杂的地步，团队在人力和时间许可的情况下一般都会考虑重构（除非这个团队一直忙于应付业务成长，比如火速成长的互联网公司）。和在 Factorio 里升级建筑一样，软件工程的重构也会遇到牵一发动全身的问题。而且和游戏里的科技发展类似，现实世界的软件工程依然在高速发展中，尤其是前端，新技术号称半年过期，软件工程师可谓是最需要大量学习的职业了。玩家在游戏里得到了新的高效建筑想要升级，工程师们也会希望在自己的老项目里用上更高效的新工具。</p> 
<p>但是苦于老代码的错综复杂，重构起来往往非常痛苦，于是也有很多人喜欢推倒重来。在游戏里相当于在地图里开一个新的地区，或者开一张新图。但是现实比游戏复杂，<strong>往往重来的软件项目并不一定比原来的更好，原因之一就是时间投入</strong>。大多数软件项目都是由利益驱动的，时间是非常大的成本，尤其是在今天中国互联网高速发展的情况下，如果不能快速推出自己的产品，很容易就死在沙滩上。在游戏里重来，顶多再花 10 小时，在软件工程里重来，hmm…</p> 
<h2>三、火箭升空</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/06/factorio_rocket.jpg" alt="" /></p> 
<p>所有的软件都有其生命周期，今天中国互联网每年消失倒闭的大量服务大家有目共睹，即使是生命力顽强如操作系统也会有退出历史舞台的一天，类似的，Factorio 也有通关结束的时候。</p> 
<p>在游戏里，我虽然知道最终通关条件是造出火箭离开这个星球，但游玩的过程目标感并不强烈。是“造出更高效的自动化系统”这件事情在驱动我不停去设计、修改自己的工厂，看着自己从零创造的流水线跑起来之后享受传送带轰鸣声带来的另一种宁静。在现实世界中，我们也更容易顶着自己的短期目标，更容易相信当下所看到、所体验的事物。但是总有一天这些都会被新的东西替代，是个不争的事实。</p> 
<h2>四、回到现实</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/06/factorio_led.jpg" alt="LED" /></p> 
<p>Factorio 尽管在很多方面与软件工程非常接近，而且在游戏里能造运算器之后就和写 if else 没差了，有人甚至利用运算器和灯光组成游戏里的 LED 屏幕。但游戏毕竟是游戏，生活比游戏要困难多了。</p> 
<p>首先游戏的基础设计就是<strong>明确的反馈</strong>，有虫族入侵时系统会立刻告警，建一个工厂需要什么，能生产什么都一清二楚。但现实不是。即使有非常成熟的监控系统，某些故障依然很难被监控自动发现，隐藏在复杂系统里的某个大 Bug 可能得等到中招的那天才会有人知道。</p> 
<p>其次游戏非常重视<strong>沉浸的体验</strong>，玩家在玩游戏的过程中精神高度集中，几乎没有干扰。但办公室里的程序员……网络上已经有很多吐槽漫画和视频在表达“求求你们放过程序员吧”、“我只想安安静静地写代码”这样的情绪。虽然娱乐成分比较多，但也在侧面反映了程序员经常被中断的事实。Context Switch 可是开销很大的。</p> 
<p>这几年游戏开始被大众所接受，从以前的“洪水猛兽”慢慢变成“第九艺术”，虽然市面上流行的游戏有大量的粗制滥造和纯粹商业驱动的设计，但优秀的游戏也逐渐开始为大众所知。前段时间《头号玩家》(Ready Player One)也在传达游戏可以很优秀的概念。</p> 
<p>前几天在知乎上看到一个问题，大意是如何防止自己的小孩沉迷游戏。我比较认可高票回答的意见，答者是一位游戏策划，他的做法是让自己的小孩接触高质量游戏，提高刺激阈值，从而不再对市面上粗制滥造的圈钱游戏感冒。答者说很多家长自己都不了解游戏却要从专业的游戏开发者手里把孩子抢回来，这基本等于白扯，这点我非常赞同。小时候玩游戏大抵是游戏在玩我，这两年接触了几个优秀游戏，再看了很多从业者的分析之后才发现这个世界的广袤无垠。如果读者朋友也喜欢玩游戏，但并不十分了解游戏世界，不妨试着接触业界公认的顶尖游戏，体会一下和捞钱游戏的区别，也许就此打开新世界的大门也不一定。XD</p> 
<p><em>P.S.: 最近我开始玩起桌游，算是游戏的某个细分领域，很多游戏非常精彩，丝毫不亚于电子游戏。而且桌游可以和朋友们面对面玩，比起自己对屏幕鼠标又多了一层现实交互的乐趣。</em></p> 
<p>2018.06.21/中午</p> 
<p>于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #147 Andy Weir - Artemis</title>
        <link>https://justinyan.eth.limo/566D4D33-0D25-45F0-AAA8-DE060E8A8CCB/</link>
        <guid>https://justinyan.eth.limo/566D4D33-0D25-45F0-AAA8-DE060E8A8CCB/</guid>
        <pubDate>Fri, 25 May 2018 14:04:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/05/andy-weir-artemis.jpg" alt="" /></p> 
<p>今天在网上逛台版书店的时候看到 Andy Weir 去年的小说 <em>ARTEMIS</em> 台湾繁体版终于出版了。这本书在 goodreads 拿到 2017 科幻榜第一，他的第一本小说 <em>The Martian</em> 则是 2014 年 goodreads 科幻榜第一，改编的电影上映后也获得不少好评，简体版翻译为《火星救援》。</p> 
<p>ARTEMIS 即阿尔忒弥斯，阿緹蜜絲，希腊神话里的月亮女神。小说设定在近未来（2080 年代），故事发生在月球上人类建立的第一个（也是唯一一个）城市——ARTEMIS。繁体版把书名翻译为《月球城市》，简体版未见踪影，但电影版似乎会被翻译成《阿尔忒弥斯》。</p> 
<p>读书是很主观的事情，不同的人有不同的评价，同一个人在不同的时期看法也不一样。我个人觉得这本书挺好读的，Andy 在这本书上运用的写作技巧比上一本要进步多了。The Martian 里层出不穷的生存危机虽然有理论依据，却嫌铺垫不足，总有些爆炸突如其来。不过 The Martian 的创意很不错，我很欣赏主角在火星上各种稀奇古怪的解决方案，甚至连隔空结对写代码这种事情都想得出来。ARTEMIS 在叙事技巧上比 The Martian 要成熟得多，经典的三幕剧手法在这部作品结构明确，情节转折起伏跌宕，故事节奏也紧凑得多，事件总在看似完结的时候用一个转折揭开另一个更大的阴谋。必须指出 ARTEMIS 的创意比起 The Martian 要逊色不少，无论是 EVA（太空行走）的体验，真空环境下做焊接工作，月地引力差异，还是打斗场景，都称不上有多出彩。</p> 
<p>月球这个场景已经有不少科幻小说作过描述，对于喜欢创意的读者来说，这部作品恐怕要失望了。但我在阅读本作的过程中，仍然会期待黑暗势力的揭幕。前期的铺垫所引出的大阴谋到底是什么，贫民窟出身主角如何与强大的对手抗衡，是悬念吸引我不断地阅读下去。而且 Andy 一贯以来玩世不恭的幽默在这部作品里一点也不少。当然我不喜欢的 The Martian 里的日记叙事和月地通信视角切换，在 ARTEMIS 里也以 Jazz 和地球笔友通信的形式存在。</p> 
<p>总的来说 ARTEMIS 和 The Martian 相比创意不及，技巧更好，当做好莱坞大片来看也是很不错的。</p> 
<p>Andy 写过火星，写过月球，而都是近未来设定，所涉及的想象也都基于他对科学的兴趣作出（至少在我看来）还算严谨的推断，这样写固然乐趣盎然，但是如果能把时空维度放得更大的话，也许会有不一样的乐趣。</p> 
<p>2018.05.25/中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #146 Robert T. Kiyosaki and Sharon Lechter &#x2014;&#x300A;&#x5BCC;&#x7238;&#x7238;&#x7A77;&#x7238;&#x7238;&#x300B;(Rich Dad Poor Dad)</title>
        <link>https://justinyan.eth.limo/518B2B89-A521-424B-920D-4DC8F800073D/</link>
        <guid>https://justinyan.eth.limo/518B2B89-A521-424B-920D-4DC8F800073D/</guid>
        <pubDate>Tue, 08 May 2018 14:00:19 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/05/dushu_146.jpg" alt="" /></p> 
<p>多年前有一本火遍大江南北的奇书，即使你不曾读过也一定听说过，其书名就极具畅销意味——《富爸爸·穷爸爸》——由 Robert Toru Kiyosaki（日裔美国人罗伯特·清崎）和 Sharon L. Lechter 合作所写。</p> 
<p>自 2000 年正式出版以来（1997 年写成并自出版）该书共卖出超过 3200 万本，被翻译成 51 种以上的语言，在全球 109 个国家销售(Wiki: <a href="https://en.wikipedia.org/wiki/Rich_Dad_Poor_Dad#cite_note-Slate-1">Rich Dad Poor Dad - Wikipedia</a>)。现在“富爸爸”已经成为一个系列，不断吸引着全球的新读者。</p> 
<p>读完这本书我很有一种醍醐灌顶之感，也一度因为书里的观点而激动不已。但是冷静想想，有两个问题非常现实：</p> 
<ol> 
 <li>这本书为何如此畅销？</li> 
 <li>为什么没有一次而诞生与读者数量相当的富翁？</li> 
</ol> 
<h2>一、《富爸爸·穷爸爸》为什么畅销？</h2> 
<p>作者是一个成功的畅销书作家，但是畅销书不一定是好书，好书也不一定畅销。这本书之所以畅销是因为作者精确地抓住了这个世界上占人口总数最多的群体的心理，这个群体就是：<strong>穷人和中产</strong>。</p> 
<p>正如作者在开篇所言，人的内心充满两个极具驱动力的情感：<strong>恐惧与欲望</strong>。作者不仅在书中提及，也在实际运作中利用了这两点。首先作者摆出了一个工薪家庭常见的经济问题，以及大多数人选择的上学，工作，还房贷车贷的人生轨迹。接着作者又描绘了一个灰色的未来：你将一辈子打工，背负各种债务，资产一直在贬值，开销一直在上涨，你将永远跑不赢生活。</p> 
<p>听着像不像近两年网络流行的“中年焦虑”？这种焦虑事实上来自对欲望的不满足和对失去的恐惧。现代社会的大多数人收入结构单一，一旦哪天失业或事业碰到天花板就世界末日了。即使还没到那一天，光想着有这种可能性就足够焦虑了。</p> 
<p>基于此，作者提出了“现金流理论”(Cashflow)，即你的现金收入的流向。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/05/pay001.jpg" alt="" /><br /> </p>
<center>
 如果每个月的工资都用来支付房贷车贷，生活费用等等，则现金流向是这样的。
</center>
<p></p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/05/pay002.jpg" alt="" /><br /> </p>
<center>
 如果把收入用来购买能够自我增值的“资产”，则现金流向是这样的。
</center>
<p></p> 
<p>《富爸爸》这本书一开始是作者为他创造的类似“大富翁”一样的游戏 Cashflow 101 写的说明教程。大富翁游戏的致胜关键在于“谁先垄断一条街谁就可以盖房子，租金翻倍”，而现金流游戏的关键则在于<strong>“当被动收入大于总支出时”</strong>，钱就会自己生钱，这样玩家就可以离开“老鼠赛跑”的跑道，进入一条资产增值更快的跑道。</p> 
<p>逻辑合理，简单明晰，只要拥有小学水平的计算能力，这本书就能看得懂。于是恐惧自己一旦失业就什么都没有的人，担心未来的自己支付不起更多债务的人，都成为了这本书的目标。</p> 
<h2>二、为什么看完了你也成不了大富翁？</h2> 
<p><strong>因为这本书从头到尾就没有在教你成为大富翁。</strong></p> 
<p>这本书讲出了真理，却没有告诉你具体如何去执行。作者把道理讲得浅显易懂却缺乏实际操作细节。</p> 
<p>前些年互联网金融火过之后现在又有币圈区块链开始进入公众视野，要说这个时代里大家没有一点理财的意识是不太可能的。</p> 
<p>所以作者说把收入换成自我增值的资产，很有道理，但问题是“什么才算自我增值的资产”？作者在书里举的例子是投资房产和股票，却没有提及他是如何决策哪里房产值得投资，以及哪种股票可以增值的。作者说不要害怕风险，说他在股票上涨回本之后就撤出成本，用利润继续滚动。中国炒股的人不可谓不多，不怕风险者亦众，却不见得都能做到回本撤出。</p> 
<p>且不谈稳健高收益投资不存在，单是最早的这笔“启动资金”从何而来就已经难倒一大片读者。作者称他早期在某销售公司做到业绩前五，能做到这点已是少数。</p> 
<p>即使排除启动资金的问题，劳动收入抵消支出仍有剩余的情况下，我要如何把这份投入做到回本且利润可以继续滚动呢？</p> 
<p><strong>这本书并没有提及。</strong></p> 
<p>作者贯彻全书都在利用读者的恐惧和欲望心理，一边描绘债务缠身的地狱，一边描绘财务自由的美好。像极了宗教传播时常做的事情。只是主流宗教会告诉你通过祈祷等方式可以实现意识形态的转变，祷文和时间是有章可循的，但这本书没有。</p> 
<p><em>PS: 本书畅销以后作者又写了富爸爸系列指导创业、投资股票之类的书，但我没有读过，就不做评价了。</em></p> 
<h2>三、对本书的评价</h2> 
<p>看完上述观点，你可能会觉得我对这本书的评价挺低的。恰恰相反，我觉得这本书很赞，不仅因为他优秀的写作和精准的目标打击，更因为它给我带来一个很重要的启示：<strong>转变思维方式</strong>。</p> 
<p>当你长期使用同一种或者相似的思维方式去思考生活中遇到的各种问题时，你会发现这么多年来你的看法几乎没有质的改变，同样的事情不管好的坏的发生很多次你也会给出同样的结论。而《富爸爸》这本书却告诉我要离开现在的轨道，用更高维的角度去看事情。</p> 
<p>有一部叫《命运石之门》的动漫，设定与穿越时空有关。生活里的每一个选择都会产生一条时间线，但并不是每一条时间线之间都有巨大的差异。从更高的维度看，无数的时间线似一股股绳索，差异不大的时间线聚在一起，和差异大的时间线区分开。只有当时间线偏差大于某个阈值时才能实现跃变。比如动漫主角想要拯救的女主角，如果时间线差异不大，不管怎么穿越她都会死，男主角尝试了无数次终于实现足够大的偏差拯救了女主。</p> 
<p><img decoding="async" src="https://justinyan.eth.limo/518B2B89-A521-424B-920D-4DC8F800073D/" alt="" /></p> 
<p>这里的时间线和上文说的“思维方式”是类似的。尽管每次思考的角度略有不同，但只要偏差没达到阈值，那就还是在原地踏步。那么怎样产生足够大的差异呢？我目前想到的最大的差异就是“逆向思维”。首先要具备分析能力，找出问题的本质，解决根本，才能从 alpha 时间线穿越到 beta。</p> 
<p>富爸爸没有教我怎么变成富人，但是它教会我要看到一种全新的思维方式，让我意识到井底蛙的局限。我不指望换了一种思维就能拥有整个世界，还是务实一点，跳出这口井，看看更多的可能性。</p> 
<p>不知从哪天开始大多数人的人生轨迹变成出生，上学，毕业，工作，生儿育女再平凡老死。这样的人生轨迹一点也不好玩，但是很保险。人类总是喜欢规避风险，所以老一辈天天和你说要找一份稳定的工作。但这明显就是思维定式，是井底蛙，今天我们所处的世界，没有什么东西是真正“稳定”的。如果不能自己掌握自己的命运，始终你还是只能给政府打工，给老板打工，给房东打工，逃不开这个牢笼。</p> 
<p>富爸爸告诉我要看到更多的可能性，我觉得很有道理。至于他有没有告诉我具体怎么做，并不十分重要，想要真的自由？那你自己得拥有自由的能力。</p> 
<p>2018.5.7/夜</p> 
<p>于 T.i.T</p> 
<h3>参考资料</h3> 
<ul> 
 <li>本期书名: 富爸爸穷爸爸</li> 
 <li>作者: [美]清崎 [美]莱希特</li> 
 <li>译者: 萧明</li> 
 <li>出版社: 四川文艺出版社</li> 
 <li>ISBN: 9787541138126</li> 
 <li>版本: Kindle 电子书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x7ED9; Price Tag &#x505A;&#x7684;&#x4E13;&#x8BBF;</title>
        <link>https://justinyan.eth.limo/C4358581-3E57-4F26-B255-B5FF1C2AE5DC/</link>
        <guid>https://justinyan.eth.limo/C4358581-3E57-4F26-B255-B5FF1C2AE5DC/</guid>
        <pubDate>Fri, 20 Apr 2018 19:57:00 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/05//jf-pricetag-Banner.jpg" alt="" /></p> 
<p>最近 Just Focus iOS 版发布后收到了 Price Tag 的邀请做了个文字专访，转载到博客里以作记录存档。原文链接在这里：<a href="https://mp.weixin.qq.com/s/Lu3vRVW3BKUydSX-M_5HNA">INTERVIEW 21 | 「创造性」是学习给我带来最大的愉悦：专访 Just Focus</a></p> 
<p>以下是专访原文:</p> 
<hr /> 
<p>Just Focus 是一款 iOS 和 macOS 双平台的番茄钟工具，拥有极简设计，能够有效地让你在工作中保持专注，避免干扰。</p> 
<p>Just Focus 前不久刚刚上线了 iOS 版本，我们非常很好奇这样一款极简的番茄钟工具背后有着怎样的理念，特地邀请到了开发者 Justin 和他谈了谈 Just Focus 背后的故事，和对写作与学习的思考。</p> 
<h3>介绍一下你和你的作品</h3> 
<p>我是 Just Focus 的开发者 Justin，Just Focus 是运行在 iOS 和 macOS 平台上的极简番茄钟工具。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/05//jf-pricetag-JustFocus-iOS.jpg" alt="" /></p> 
<p>Just Focus 的 Mac 版在 2016 年 8 月就已经上线了，iOS 版是这个月刚发布的。</p> 
<p>Mac 版的 Just Focus 会在一个番茄钟结束后用漂亮的壁纸锁定屏幕，屏蔽所有的鼠标和键盘事件，强制进入休息时间。iOS 版则会在开启一个番茄钟之后，要求用户留在 Just Focus 应用内 (否则番茄钟会中断，不计入今天的番茄钟数)，在这期间不能玩手机。</p> 
<p>可以看出两个平台的设计目标有些不同，但总的目标是一致的：<strong>减少干扰，劳逸结合，以期让用户达到高效从容的工作状态。</strong></p> 
<h2>关于 Just Focus 和效率</h2> 
<h3>为什么想到要开发 Just Focus 这样一款番茄钟应用</h3> 
<p>最初的需求来自于我自己。我每天的工作需要长时间对着屏幕，一旦专注起来很容易就忘了休息。我相信最好的工作方式应是高效的，付出最少的时间得到最佳的效果，堆时间加班做出来的东西往往看似可用实际上却一团浆糊。而最高效的工作方式应是劳逸结合的，也许早晨到办公室会觉得精力充沛，但连续工作不休息的话几个小时后就会感到非常疲惫。</p> 
<p>我采用番茄工作法来尝试做到劳逸结合，但是 Mac 平台上流行的番茄钟提醒都不够强烈，我希望能用全屏的方式<strong>强迫我跳出当前的圈子</strong>。而且当时我也想在 Swift 上多点实践和学习，于是 Just Focus for Mac 就应运而生了。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/05//jf-pricetag-JustFocus-Mac.jpg" alt="" /></p> 
<p>Just Focus for Mac 的 v1.0 上线之后受到很多用户的喜爱，至今还有用户给我发邮件反馈、提 Bug 和提 Feature Request。每次收到用户的邮件都觉得很开心。</p> 
<p>有了 Mac 版之后，我就想做 iOS 版，但却在完成雏形后搁置了一段时间，直到最近才终于完成并发布了。</p> 
<h3>如果要你介绍 Just Focus，有哪些特性或特点是一定要介绍的</h3> 
<p>Just Focus 的设计理念是<strong>简洁优雅</strong>，项目开发过程中也贯彻 MVP（minimum viable product）原则，相同的元素：来自 Unsplash.com 的漂亮壁纸可以在两个平台的 App 中找到。</p> 
<p>Mac 版的强占屏幕提醒是核心特性，专为在 Mac 上专注太久忘了休息的人设计。</p> 
<p>iOS 版的“放下手机，专注要事”则是给学生党或者有觉得手机分散注意力非常困扰的群体而设计。</p> 
<p>我们看一个工具往往要看到它要解决的问题，番茄钟也好，GTD 也好，不是因为有了这些工具才使用，而是因为遇到了问题，而这些工具能帮助我们解决这些问题而使用。Just Focus 想要解决的问题就是<strong>“如何通过专注达成高效”</strong>。</p> 
<h3>你平时在工作中会如何使用番茄钟，有没有能够提高工作效率的工具或者技巧和我们分享</h3> 
<p>我在 macOS 平台工作，Apple 的软件生态非常好，有很多效率工具可以推荐。有些工具可能收费不菲，但考虑到用钱能换到的时间，还是非常值得的。</p> 
<p>写代码的工具链 Xcode, Sublime 和 iTerm2 以及终端等一系列生产工具已足够写篇长文，其他我最常用的效率工具有：</p> 
<ul> 
 <li>Alfred: 配合 Just Focus Workflow 可以不动鼠标就操作番茄钟</li> 
 <li>iStat Menu: 必须要有一个可以查看当前网速、CPU、内存、磁盘I/O 等系统状态的地方，这样一旦机器不太对劲，瞥一眼就能知道哪里出了问题</li> 
 <li>Little Snitch: 网络防火墙工具，第一次配置比较麻烦，但可以给内心一种安全感?（真遇到比 Little Snitch 权限还高的驱动估计他也没辙）</li> 
 <li>Surge: 本国特色必备工具，不必多言</li> 
 <li>Bartender: MacBook Pro 是我的主要生产力工具，受限于屏幕宽度，有 Bartender 的自动隐藏功能，Menubar 就清爽多了</li> 
 <li>1Password: 全副身家都在里面了，妈妈再也不怕我忘记密码了</li> 
 <li>Hammerspoon: 可以运行 Lua 脚本自己编程的强大工具，目前只用来管理窗口</li> 
 <li>Magnet: Hammerspoon 可以进行更细致的自定义，但是普通情况下 Magnet 就足够了，没买 Hammerspoon 之前一直用 Magnet</li> 
 <li>BetterTouchTool: 用于自定义 Touch Pad, TrackPad, Magic Mouse 等多种手势，我比较依赖 TrackPad 切换 Tab 的手势</li> 
</ul> 
<p>其他还有诸如 MacDown, Eudict, Grammarly, Evernote, Sketch 等大家熟知的 Apps 就无需赘述了。</p> 
<p>我一般要开始工作了就会用 Alfred 输入:</p> 
<pre><code>jf po
</code></pre> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/05//jf-pricetag-alfred.png" alt="" /></p> 
<p>开始一个番茄钟，然后开始写代码。每个人习惯的时长不同，我用的设定全是标准番茄钟时长，没有调整过。Just Focus 提醒我该休息了之后我就去倒杯水。</p> 
<p>晚上下了班回家我会做做个人项目，也是同样的办法。这样做时间分配也比较方便。比如今晚下班虽然很累，但还是得投入两个番茄钟时间在个人项目上。两个番茄钟，很快就过去了，这样一想好像就不那么累了。</p> 
<h2>关于写作和思考</h2> 
<h3>我们知道你经常在博客中分享各种书影音和读后感，坚持写博客对你有什么收获，对于那些想开始写博客却不知道有什么东西可写的人你有什么建议？</h3> 
<p>第一次开始写博客是 BBS 倒下，博客刚兴起的时候，中间换过几家不同的博客服务，后来博客时代过去之后好像也都没了。现在的这个博客是 2010 年自架 VPS 搭的 WordPress，这么多年过去了所幸一直没关。</p> 
<p>虽然更新频率不高，但还是记录了一点东西。我其实是很喜欢写作的人，虽然职业当了程序员 XD。也很喜欢看书，于是某天就想为何不把自己看过的书推荐一下呢？当时有推友说你觉得好的书不一定别人觉得好，我觉得很有道理，于是就不推荐书了，改为把自己的想法写下来。后来有了公众号，那一年就写得比较勤，现在也荒废了，虽然书一直在看，但书评却写的少了。如果有时间我应该还会继续写。</p> 
<p>如果把人看成一个黑盒，一端是输入，另一端是输出，那么看书就是输入的一种，而写作则是输出的一种。</p> 
<p>看电影电视剧，看动漫玩游戏，这些也是输入，也是我喜欢的项目。输入是点状的，是来自不同维度的信息在脑袋中留下的记忆。而写作和制作 Just Focus 的过程，就是把这些点变成面的过程。</p> 
<p>点状信息是分散的，孤立的，而思考过程则是把所有的点连成线，最终变成面。只有把孤立的信息通过自己的思考转换之后，这些信息才属于自己。这个过程和“学习新技能”的过程大抵也是类似的。</p> 
<p>所以在我写“每周读书”这个系列的过程中，我不仅是把书看了，做了笔记（做笔记的习惯倒是以前上学的时候就养成了），而且经过自己的思考，形成了个人的评价，并且沉淀为文字，传播出去。</p> 
<p>这大概是写博客给我带来最大的好处了：<strong>学会思考</strong>。</p> 
<p>至于浏览量订阅数，甚至是永久存档之类的，在思考这件事情面前，都不算什么。所以想开始写博客，那就写吧，把思考的过程记录下来就好啦。如果实在不知道写什么，可以尝试学点新东西，把学习的体验记录下来。学习是无止境的，那写博客的素材自然就无止境了。</p> 
<h3>你一直在社交网络上强调「创造性」(Being Creative)，对你来说「创造性」意味着什么，你如何让自己保持「创造性」？</h3> 
<p>Being Creative 对我个人来说非常重要，它几乎是驱动我去学习的最大动力。学习本身是一个痛苦的过程，你需要克服许多困难和障碍，如果没有足够的激励和愉悦来掩盖这份痛苦，你就很难想要尝试去攻克它。而我个人在学习的过程中体会到的最大的愉悦就是「创造性」。</p> 
<p>「保持」这两个字挺难的，我并不总能「保持创造性」。但我最常用的获取「创造性带来的愉悦」的手法是：学习。</p> 
<p>作为一个写代码维生的人，计算机界可供我学习的技术实在浩如烟海，所以不只是本职的 iOS / Mac 开发，前端技术，NodeJS、Docker、Ruby、PHP 等等许多奇奇怪怪的东西我都玩过，当然还有每年都被迫提升的和某大型障碍物斗争的技巧。每次去学习一个新技术的时候我想的不是「完全没用过好难上手」，而是「这个东西没用过诶好兴奋」。</p> 
<p>推而广之，在很多其他方面也可以运用「学习」技巧。</p> 
<p>比如玩游戏。在我买 PS4 以前我对游戏的认知还停留在古老的国产单机游戏，像《金庸群侠传》系列之类的情怀之作，虽然游戏本身很赞但我基本处于「不是我玩游戏而是游戏玩我」的状态。</p> 
<p>在接触了主机上的优秀大作，尤其是 Switch 发售没几天我在日本把《塞尔达传说：荒野之息》背回来以后，通过机核、Gamker 等诸多游戏资深大佬的节目开始了解游戏的世界观，一窥游戏设计的广袤世界。</p> 
<p>学习新技能的过程也是打开一个新世界的过程，你可以看到很多以前没有看到的东西，在脑袋里又多增加了一点。当这些点变多了之后，你就有机会连成新的线，形成新的思维方式，去思考这个世界，得出新的结论。</p> 
<h2>其他</h2> 
<h3>分享一下你的主屏吧，介绍一下对你最重要的几个软件</h3> 
<p>我的 iPhone 首屏现在是空的 XD (硬广一下：壁纸来自 <a href="getjustfocus.com">Just Focus</a>)</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/05//jf-pricetag-iPhone.jpg" alt="" /></p> 
<p>因为之前在推上抱怨我打开手机后容易跑进某几个 App，然后就忘了打开手机是想要干嘛了（比如本来只想查快递结果看到 Twitter 有提醒就开始刷推了），有推友说可以这么干我就一直这么用着了。</p> 
<p>目前放在 Dock 上的 App 是：</p> 
<ul> 
 <li>电话和 iMessage: 和家人联系</li> 
 <li>Tweetbot: 推特重度用户</li> 
 <li>Safari: 搜索用的基础工具</li> 
</ul> 
<p>另外当然要硬广一波自己的 App: <a href="getjustfocus.com">Just Focus</a> 啦 XD</p> 
<p>我在咖啡店看书的时候会用到，禁止在看书过程中碰手机，顺便遇到好看的壁纸还能更新一下桌面。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/05/jf-pricetag-Just-Focus.jpg" alt="" /></p> 
<h3>我们可以在哪里关注到你和你的产品动态</h3> 
<p>可以在以下地方找到我：</p> 
<ul> 
 <li>Twitter: <a href="https://twitter.com/MapleShadow">@MapleShadow</a></li> 
 <li>微博: <a href="https://weibo.com/windyshade">@枫影JustinYan</a></li> 
 <li>Just Focus 官网: <a href="http://getjustfocus.com/">getjustfocus.com</a></li> 
 <li>博客: <a href="https://justinyan.me/">justinyan.me</a></li> 
 <li>微信公众号: 枫言枫语 (微信号: MapleJustin)</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Just Focus iOS &#x7248;&#x53D1;&#x5E03;&#x5566;</title>
        <link>https://justinyan.eth.limo/B278DA64-3B26-4D65-AA86-943EF7958C89/</link>
        <guid>https://justinyan.eth.limo/B278DA64-3B26-4D65-AA86-943EF7958C89/</guid>
        <pubDate>Sun, 15 Apr 2018 13:58:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2018/04/JustFocus_iOS.png" alt="" /></p> 
<p><a href="https://itunes.apple.com/us/app/just-focus-pomodoro-timer/id1135331024?ls=1&amp;mt=8"><img decoding="async" loading="lazy" src="http://getjustfocus.com/images/iOSAppStore.png" width="126" height="42" /></a></p> 
<blockquote>
 <p> 简洁优雅，从容高效</p> 
 <p> 放下手机，专注要事 </p>
</blockquote> 
<p>2016 年 8 月我发布了 Just Focus for Mac (<a href="https://justinyan.me/post/2982">免费 Mac 全屏休息提醒 Just Focus 上架咯</a>)，想解决的问题是：<strong>我每天的工作需要长时间对着屏幕，一旦专注起来很容易就忘了休息。</strong>我相信最好的工作方式应是高效的，付出最少的时间得到最佳的效果，堆时间加班做出来的东西往往看似可用实际上却一团浆糊。而<strong>最高效的工作方式应是劳逸结合的</strong>，也许早晨到办公室会觉得精力充沛，但连续工作不休息的话几个小时后就会感到非常疲惫。</p> 
<p>番茄工作法(Pomodoro Technique)就是为了解决这个问题而被发明的。我用过几个 Mac 番茄钟应用，始终觉得提醒太弱无法满足我的需求，于是就写了 Just Focus for Mac，用强制锁屏的办法来解决我遇到的问题。有了 Mac 版就想有 iOS 版，事实上 Just Focus 的 iOS 版在一年前就已基本成型，但在那之后却没有继续做下去。</p> 
<p>为什么呢？因为：</p> 
<blockquote>
 <p> 我并没有需要 iOS 版的需求 </p>
</blockquote> 
<p>一直以来考虑如何去做一个产品我都会先从自身的需求出发：我觉得这个特性有用吗？我会怎样使用这个特性？<strong>成为自己的用户是最简单有效的思考方式。</strong>但在做 iOS 版时，我却是在<strong>试图解决其他人有而我没有的需求</strong>。</p> 
<blockquote>
 <p> 我能做好吗？ </p>
</blockquote> 
<p>也许是面对这个问题让我退缩，也许是自身没有需求让我缺乏动力。直到最近和朋友们的聊天成为我继续开发 iOS 版的契机。</p> 
<blockquote>
 <p> 我能否用自己的专业技能去做好一个满足其他人需求的产品？ </p>
</blockquote> 
<p>当时我们聊到了这样一个话题。后来我把这段思考发到<a href="https://twitter.com/MapleShadow/status/983882876952260608">推特上面</a>：</p> 
<blockquote class="twitter-tweet" data-lang="en"> 
 <p lang="zh" dir="ltr">从前几年的直播到最近的抖音快手，甚至全民都玩的王者吃鸡，越来越多我不用的服务、应用和游戏大火起来。除了一边感慨自己和时代脱节，最令我感到害怕的是：一直以来以自己为出发点做判断的这个能力似乎已不再适用。人性是普遍的，需求是客观存在的，能否超越自身看到别人的需求，才是终极能力。</p> 
 <p>— 枫影 Justin Yan (@MapleShadow) <a href="https://twitter.com/MapleShadow/status/983882876952260608?ref_src=twsrc%5Etfw">April 11, 2018</a></p>
</blockquote> 
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p> 
<p>有些人给出了中肯的想法，也有人没太理解原推的意思，毕竟用 140 字表达想法还是过于简短。</p> 
<p>有一位产品经理令我深感敬佩，他在产品设计的思考上比普通人深刻得多，而且得出的结论都非常朴素。有些他设计的特性他自己并不使用，但却能让产品的生态在他制定的规则下演化成一个繁荣的世界。我猜想也许等级这么高的人，他们的基础能力却是朴素的，就像 ARPG 游戏角色的基础点数一样，他们只是把其中一个点数加到最高了。</p> 
<p>作为现实沙盘里的一个小怪，我的基础数值不仅低而且不均衡，我希望通过学习收获更多的技能点，而 Just Focus for iOS，就是我最近的一次学习。在《<a href="https://justinyan.me/post/3209">我的 YouTube 频道继续更新啦!</a>》一文我说<strong>能让自己开心的事情其实一直都是创造性(Being Creative)的事情，我很喜欢从 0 到 1 的过程。</strong>做 YouTube 视频是学习新技能，做 Just Focus for iOS 的过程也是。</p> 
<p>而且在做这些事情的过程当中我获得了和这个世界上许多人交流的机会。自发布以来，Just Focus iOS 和 Mac 版已经收到上百封邮件反馈。很多人报 Bug 的时候会把他遇到的场景描述一遍，比如带着自己的笔记本去开会，要投影的时候发现因为外接屏幕被拔掉而导致 Just Focus 休息界面错位无法关闭，于是发来邮件提出要有全局快捷键的需求。也有人说每天会待在图书馆自习室里很长时间，于是专注计时 120 分钟都不太够用。</p> 
<p>总是有些有趣的人给出有意思的想法。想做好一个产品多数时候都不能直接按照用户的 Feature Request 去做，而是要<strong>发掘问题的本质，根据问题提出最好的解决方案</strong>。这个思考的过程就是学习的过程。和来自不同国家不同文化背景的人通过邮件交流，试图去解决其他人可能遇到的问题，还能收获别人的称赞，这个过程是很开心的。</p> 
<p>有人问我做了 Just Focus 为什么要免费。其实我并非没有考虑过付费的问题。在互联网行业高度发达的今天，我可以采用 App 下载付费，Pro Feature 付费，订阅付费等等方式。但是付费的目的是什么？</p> 
<p>如果是为了发家致富我觉得 Just Focus 并不适合达成这个目标，如果是为了给自己正向激励，那么当前最能给我激励的“从 0 到 1”我已经可以获得了。于是付费对我来说就不是当下最重要的事情。而且我其实更想做用户自愿捐赠付费。</p> 
<p>当然应用收费并不是一件坏事，不管是对开发者还是用户来说都是促进行业发展的正向反馈。而且不管是服务付费还是内容付费，“付费”这一手段都能作为 Marketing 的利器。而 Marketing 正是我需要学习的下一个技能，希望在不远的未来我能做出物超所值的付费产品来。</p> 
<p>学习的过程有点像长途骑行，路上往往会遇到各种困难，有时候痛苦得想要放弃。但是一旦咬着牙撑过去了，收获的就是无限风光的旖旎。而且苦尽甘来的景色，要比舒服坐车到达的地方，美好得多。</p> 
<p><a href="https://itunes.apple.com/us/app/just-focus-pomodoro-timer/id1135331024?ls=1&amp;mt=8"><img decoding="async" loading="lazy" src="http://getjustfocus.com/images/iOSAppStore.png" width="126" height="42" /></a></p> 
<p>2018.04.14/夜</p> 
<p>于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #145 &#x5C0F;&#x6CC9;&#x516B;&#x4E91; - &#x300A;&#x602A;&#x8C08;&#x300B;</title>
        <link>https://justinyan.eth.limo/C55CF528-009F-42FD-86CA-4594DF542E0D/</link>
        <guid>https://justinyan.eth.limo/C55CF528-009F-42FD-86CA-4594DF542E0D/</guid>
        <pubDate>Thu, 07 Dec 2017 19:55:40 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/05/mp_cover_146_guaitan.jpg" alt="每周读书 #145 质量参差不齐的鬼怪合集——小泉八云《怪谈》" /></p> 
<blockquote>
 <p> 声源越来越近，牛松的背脊微微发凉，他转过脸来，双眼被一张苍白脸孔盈满。那是一张女子的脸庞，脸色苍白得惊人。</p> 
 <p> “啊！”牛松发出一声惨叫，吓得连灯笼都忘了拿，转身就往外逃去。</p> 
 <p> 然而，室内一片黑暗，牛松看不见眼前的东西，连滚带爬地从台阶上摔了下来。他连忙站了起来，往门口走去，伸手用力推门，却发现怎么也推不开。</p> 
 <p> 转头一看，牛松看见那个满脸血污，一身白衣的女子，不知不觉地已从楼梯滑至了自己身旁。 </p>
</blockquote> 
<p>熟悉日本恐怖片的朋友一定看过或者听说过《咒怨》这部影片。我第一次看“咒怨”系列是在高中的某个深夜，与宿舍里的同学一起围着 DVD 播放器。看完之后我们去洗手间都要猜拳排队，决定谁最后一个关灯。自那时起，我印象中“日本恐怖片”就是恐怖的极致，不仅有突如其来的惊吓，更有深入内心的寒意。</p> 
<p>日本有许多著名的鬼怪传说，不仅出现在恐怖片里，也出现在动漫、文学等各种文化作品。比如哆啦A梦就在多个故事中提到了“无脸怪”（ノッペラボー）这个鬼怪。《滑头鬼之孙》更是直接把“百鬼夜行”都放进去了。就像中国的《聊斋志异》，日本也有人收集了民间各种鬼怪传说编写成册。<strong>今天我们要聊的就是就是小泉八云编写的民间鬼怪合集——《怪谈》。</strong></p> 
<p>开篇引用的文字来自其中《千沙》这个故事：木材场的主人忠兵卫娶了年轻貌美的千沙，却很快病死了。于是千沙与忠兵卫的得力助手松之助很快相好，却遭到家里人反对，终于二人在店铺阁楼割喉自杀，死状十分惨烈。引用的文段是店里的伙计在某个深夜不得不到殉情的阁楼拿工具时，遇上了殉情的鬼魂的场景。这段描写让我回忆起《咒怨》里四肢被折成诡异的姿态，伴着咯咯的怪声从楼梯上慢慢往下爬的画面。</p> 
<p>故事的结尾是伙计牛松病死，店里的伙计纷纷辞职，最后老板也离开了。</p> 
<p>《怪谈》里有许多这样的故事，它们来自于民间传说，没有主旨，没有说教，有的只是营造恐怖的气氛，述说一个鬼怪故事。就像今天网络上流传多年的都市传说。不过类似《千沙》这样的故事在《怪谈》里已算是情节丰富，有起承转合的，还有许多故事不仅主旨不明，连逻辑都十分奇特。</p> 
<p>比如《屏风里的少女》这个故事。开场就提及“绘画是人心神外化”，故事主角笃敬买了一副美少女画于是被画中人吸引，茶不思饭不想心心念念都是画中美人。故事的结尾是美女受感动从画里走了出来，两人过上了幸福的生活。</p> 
<p>看到这样的故事我是非常困惑的，一没转折二没主旨三则逻辑诡异，这个故事本身到底想说些什么？像这样的故事到底是如何作为一个传说被收录进来的？这样无趣的故事又是如何被人传说的？</p> 
<p>由于作品是 1904 年出版的，年代久远，而且作者小泉八云的身世也比较特殊。他的父亲是爱尔兰裔，在英军占领爱奥尼亚群岛时，和岛上的希腊女子结了婚，所以他是在希腊出生的英国人原名 Patrick Lafcadio Hearn。1890 年作者前往日本，与岛根县松江中学的英语老师小泉节子结婚，遂改国籍日本，名小泉八云。《怪谈》这本书写的就是他从妻子和朋友口中听到的民间故事。</p> 
<p>我所读的是“天津人民出版社”出版，余敏翻译的版本，共有四十三话（据称全集有将近六十话）。书中收录的许多故事是耳熟能详的，比如《雪女》，比如无脸怪的出处《貉精》等等。也许是年代久远也许是文化差异，相当一部分故事既无恐怖感亦无逻辑可言，在价值观与道德评判上更是与当今之世不可同日而语。像《骑在尸体上的男子》，讲的是负心汉的妻子在悲愤中死去，尸体怨气太重不可埋葬，要等负心汉回来复仇。于是一个道士相助，让男子骑在尸体上死死抓住死尸的头发不可放手，度过一个夜晚。然后就平安无事了。像这样坏人没有得到惩罚，受伤的女子也没有下文的故事，其实是很挑战现代人的“善有善报，恶有恶报”的观念的。还有像《守约》，一对结拜兄弟由于兄长要离开，相约重阳节相见。到了约定之日兄长被主公软禁无法赴约，于是切腹，所谓“人不能日行千里，而魂可至”，读完真是大呼奇葩。</p> 
<p>整体而言，《怪谈》的故事作为民间传说资料很有价值，这也是小泉八云的名气之所在。日本与黑泽明起名的导演小林正树曾于 1965 年把《怪谈》改编成电影。该片获得 1965 年坎城影展特别奖并入围当年奥斯卡最佳外语片奖，成为小林正树的代表作之一。但是对于想把这本书当作小说故事来看的读者，恐怕是要失望了。</p> 
<p>对我而言，我知道小泉八云这个名字是来自《方根书简》这个游戏，虽然游戏的评价不高，但却让我对本书兴趣盎然。于是在书店里看到小泉八云的名字时我就果断买下了。《怪谈》里有一些故事的恐怖氛围营造得很好，可读性很高，有一些故事则是有名传说的源头，这两者对我来说都是有价值的信息，剩下的一些既无逻辑又无教化意义，既无技术含量也并不有趣的故事，就只是为了“读完这本书而读”了。</p> 
<p>17.12.07/中午</p> 
<p>于T.i.T</p> 
<h2>参考资料</h2> 
<ul> 
 <li>本期书名: 怪谈</li> 
 <li>作者: 小泉八云</li> 
 <li>译者: 余敏</li> 
 <li>出版社: 天津人民出版社</li> 
 <li>ISBN: 9787201106830</li> 
 <li>版本: 纸质书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x7684; YouTube &#x9891;&#x9053;&#x7EE7;&#x7EED;&#x66F4;&#x65B0;&#x5566;!</title>
        <link>https://justinyan.eth.limo/2D2F2E52-1D27-4E3A-ADAE-9FAC3AA5D900/</link>
        <guid>https://justinyan.eth.limo/2D2F2E52-1D27-4E3A-ADAE-9FAC3AA5D900/</guid>
        <pubDate>Mon, 04 Dec 2017 20:14:11 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/12/BlogHeader.jpg" alt="My Desktop Setup" /></p> 
<p>哈喽大家好！我是 Justin，欢迎来到我的频道。Welcome back!</p> 
<p>对我来说，过去的这两年里发生了很多事情，有惊喜也有意外。最近我开始用各种工具分析自己，有一天意外地想到：<strong>能让我自己开心的事情其实一直都是创造性(Being Creative)的事情</strong>，我很喜欢从 0 到 1 的过程，却对 1 以后的成败不甚触动。</p> 
<blockquote class="twitter-tweet" data-lang="en"> 
 <p lang="en" dir="ltr">So I finally found out the source of my happiness comes from being creative. Try to be more creative, dude!</p> 
 <p>— 枫影 Justin Yan (@MapleShadow) <a href="https://twitter.com/MapleShadow/status/937361708942630912?ref_src=twsrc%5Etfw">December 3, 2017</a></p>
</blockquote> 
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p> 
<p>我的工作很大一部分内容是在写代码，令我沉浸其中的不是“写出牛逼的代码”而是“哇塞这个东西没试过好像很厉害的样子”。写博客和做视频也都是我曾经尝试过的东西。这些事情有一个共同点就是：<strong>处在我未知的领域，我需要通过学习去征服它们。</strong></p> 
<p>所以我终于明白为什么早期我写“每周读书”的时候动力十足，因为写书评，分析作品并不是我所擅长的。一边学习一边书写，看到自己写出来的东西被他人所认可令人成就感十足。然后我在还远没到学成的时候就遇到了平台期，我开始觉得写出来的东西陷入了一种套路。一旦有了套路，写这些书评就不再 Creative 了，而是在“完成任务”。我最不喜欢做的事情就是“完成任务”了。</p> 
<p>于是“每周读书”也就荒废了许久。</p> 
<p>前几个月我正好遇上了一个可以自由发挥的项目，我在这个项目里一边探索一边实现了许多自己的想法，陷入项目里的时候有种废寝忘食的感觉。这种感觉对于程序员来说是十分美好的。虽然后来我不得不从这个项目抽身，但是后来反思一下，我才明白对我来说 "Creative" 是多么好玩的东西。</p> 
<p>抱着这样的想法，某天早上，我开始决定继续学习“拍视频”这件事情。构思 Story 的过程，拍摄的过程，剪辑的过程对我来说都是新鲜感十足的体验。从中我体会到了“快乐”，真是奢侈啊。</p> 
<p>回归 YouTube 第一期，我拍了 "My Desktop Setup 2017!"，尽管之前已经有过视频剪辑的经验，这个只有三分半钟的视频依然花了我不少时间，但是值得。Being creative!</p> 
<hr /> 
<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/9bvcB6LtABQ" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe></p> 
<hr /> 
<p>我的 YouTube 频道：<a href="https://www.youtube.com/channel/UCqiKQwO3bNDE8LKB69g3AUQ">Justin Yan - YouTube</a></p> 
<p>My Desktop Setup 2017!</p> 
<p>如果你喜歡這樣的影片，請不要忘了按贊讓我知道 XD</p> 
<p>這兩樣在影片里忘記介紹了：<br /> - <a href="http://www.ikea.com/cn/zh/catalog/products/10252969/">桌子： IKEA BEKANT 电动升降桌</a><br /> - <a href="https://www.amazon.cn/gp/product/B00TKFEEBW/ref=oh_aui_search_detailpage?ie=UTF8&amp;psc=1">Seagate Expansion 5TB Desktop External Hard Drive:</a></p> 
<p>List of my desktop setup:<br /> - <a href="https://www.apple.com/macbook-pro/">MacBook Pro 2017</a><br /> - <a href="http://www.lg.com/us/monitors/lg-34UC98-W-ultrawide-monitor">顯示器：LG 34UC98-W</a><br /> - <a href="https://www.twelvesouth.com/product/hirise-iphone">TwelveSouth HiRise 2</a><br /> - <a href="https://www.playstation.com/en-us/explore/ps4/">PS4</a><br /> - <a href="https://www.nintendo.com/switch/">Nintendo Switch</a><br /> - <a href="https://www.diatec.co.jp/en/det.php?prod_c=1471">FILCO MINILA Keyboard(Bluetooth ver)</a><br /> - <a href="https://www.apple.com/shop/product/MLA02LL/A/magic-mouse-2?fnode=e83dd68166f2ac127b5aa6c52105a7cd71793a26b6d2e55397faf08e52f48c2759358a5c377373ff27fa4b6cd5325bb8e68cf906a96b32231262b2e2b3f20d415db362d996a20fe7b9724adf1457384e77a53a17a6537d6ba4245b6dc095c0ce">Magic Mouse 2</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #144 &#x4F0A;&#x5742;&#x5E78;&#x592A;&#x90CE; - &#x300A;&#x91D1;&#x8272;&#x68A6;&#x4E61;&#x300B;</title>
        <link>https://justinyan.eth.limo/F51E7B55-CFF4-4A11-9E93-BE1BD44D8B68/</link>
        <guid>https://justinyan.eth.limo/F51E7B55-CFF4-4A11-9E93-BE1BD44D8B68/</guid>
        <pubDate>Sat, 18 Nov 2017 18:02:48 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2018/05/jinsemengxiang_cover.jpg" alt="每周读书 #144 思路清奇的小说——伊坂幸太郎《金色梦乡》" /></p> 
<p>第一次听说过“伊坂幸太郎”是因为他的名句：</p> 
<blockquote>
 <p> 一想到为人父母居然不需要经过考试，就觉得真是太可怕了。 </p>
</blockquote> 
<p>这句话出自《一首小夜曲》的人物织田美绪之口。因着这句话我读了《一首小夜曲》这部小说，却留下“2016 年读得第一本烂书”的结论。</p> 
<p>情节荒诞，处理草率，简直把读者当猴耍。这是我当时的印象。</p> 
<p>本来所谓的“名言佳句”，也不过是断章取义罢了。</p> 
<p>不过我个人的阅读习惯是读了一半觉得不喜欢就放下，错过的佳作也多，我自己明白这部作品不一定就不好，只是跟我合不来罢了。</p> 
<p>《一首小夜曲》放下之后，又拿起了《死神的精确度》，却读到了 2016 年的第二次失望。</p> 
<p>直到一位读者提起《金色梦乡》这部小说。那会在 SNS 上我正好也看到有人称其为“神奇的小说”，就看了一小段堺雅人主演的电影，没能耐着性子看完。但是既然这么多人提起了，想来也不会太糟糕，于是开始读起这部小说来。</p> 
<blockquote>
 <p> 真是个思路清奇的故事啊！ </p>
</blockquote> 
<p>这大抵是我读完小说之后最大的印象了。这部小说有设计缺陷，有逻辑牵强，有幼稚简单，但整部作品流畅易读，给人感动，给人希望，这点十分难得。</p> 
<p>书中有 The Beatles，有肯尼迪遇刺，有超级英雄，有废柴男主角，有匪夷所思的操作，有不怀好意的正派人士。</p> 
<p>嗯，这简直让我想起 Marvel 每年上映的效果大片了。但是观众就是爱看啊，偶尔读点不需要动脑的故事不也挺好的嘛。</p> 
<p>小说原名《ゴールデンスランバー》，即英文 Golden Slumbers 的日文发音。繁体译为《Golden Slumbers——宅配男與披頭四搖籃曲》，简体译为《金色梦乡》。译名高下可见一斑，所以一开始听说“金色梦乡”这个名字我内心觉得还蛮掉价的。</p> 
<p>《Golden Slumbers》是 The Beatles 1969 年的专辑《Abbey Road》中收录的歌曲。因着村上春树的关系，我十分喜欢 The Beatles 的歌。1970 年 The Beatles 解散，1969 年团伙已经四分五裂，分崩在即。The Beatles 在日本的影响力十分深远，村上春树的作品里也多有提及，比如《挪威的森林》，书名也是 The Beatles 的歌名《Norwegian Wood》，一开头就是主角在飞机上听到 The Beatles 的歌回想起以前的故事。</p> 
<p>伊坂幸太郎也是 The Beatles 的粉丝，Golden Slumbers 更是多次出现在本作的关键情节。</p> 
<p>故事以新首相当选后，访问仙台时被人刺杀为契机切入，第一章即引爆大事件，效果摄人。小说的主角是快递员青柳雅春，在刺杀当天他便被警方认为凶手开始发起追捕行动。作为普通人的青柳雅春毫无抵抗能力，只能费尽一切力量全力躲避，企图逃脱警方的围捕。</p> 
<p>小说的情节没有特别精巧的设计，也没有匠心独运的谜题，但是多重反转，每每在主角绝望的时刻总能逢凶化吉，迎来光明与希望。主角在逃难的过程中得到了许多老朋友或者新朋友的帮助，有深交多年的，也有仅一面之缘的。虽然故事爆米花味十足，但是胜在简单直接，不需要动脑也能获得阅读的乐趣。</p> 
<p>我觉得在《金色梦乡》里，不合理之处甚多，比如那位超级英雄角色的出现与消失，比如作者如此微薄的力量在现实中根本不可能和国家力量对抗。但是小说就是要体验这种现实所没有的东西啊。</p> 
<p>小说虽然在结局上没有做到出人意料，在反转中没有更加自然，但是不同于常见的推理小说的设计，轻松易读的文风，都是本作的亮点。而我最喜欢的部分，大概就是每次山穷水尽的时候，突然出现的光明了吧。</p> 
<p>2017.11.18/下午<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #143 &#x5B89;&#x85E4;&#x5FE0;&#x96C4; - &#x300A;&#x5B89;&#x85E4;&#x5FE0;&#x96C4;&#x90FD;&#x5E02;&#x5F77;&#x5FA8;&#x300B;</title>
        <link>https://justinyan.eth.limo/2F9E8455-2F5D-45B2-8567-27E4C1DD4A49/</link>
        <guid>https://justinyan.eth.limo/2F9E8455-2F5D-45B2-8567-27E4C1DD4A49/</guid>
        <pubDate>Mon, 03 Jul 2017 14:21:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2017/11/143_antengzhongxiong.jpg" alt="每周读书 #143 旅途中的畅想与思考——安藤忠雄《安藤忠雄都市彷徨》" /></p> 
<p>我是在念大学的时候才有了第一次真正意义上的旅行。第一次看到壮阔绮丽的山水风光，迥然不同的民族风情，像第一次走进国画，像第一次坠入梦境。自那以后，我就喜欢上了旅行。</p> 
<p>随身带一本笔记本，在火车上，飞机上，忙碌的旅途中一有空隙就写个不停。如今本子已经换过几次内页，走过些有意思的地方。曾在懒洋洋的海滩上悠悠地行走，也曾在湿漉漉的碎石路匆匆地躲雨，旅行有悠闲有艰辛，旅途有原野有高楼。看过的风景也好，吃过的美食也罢，旅行中最有意义的，大约是潜移默化间带来的成长。这些年出国旅行已经是件轻而易举的事情，几乎哪里都有中国游客的身影。但是在 1960 年代，世界仍处于一片动荡之中，中国有“文化大革命”，法国有“巴黎五月风暴”，日本有“学运潮”。在这样的时代背景下，当年身无分文的年轻的安藤忠雄，开始了他在欧洲的流浪之旅。</p> 
<blockquote>
 <p> “旅行“不只是身体的移动，重要的是畅想、思考。 </p>
</blockquote> 
<p>当年抱着拜见建筑大师 Le Corbusier 想法开始流浪的安藤忠雄，如今已成长为一位名建筑师，他的许多建筑成为游客们朝拜的地点。他不仅是一位建筑师，亦是文笔极佳的作家。《安藤忠雄都市彷徨》一书，就是他在旅途中的畅想与思考。</p> 
<p>踏进光之教堂的那一刻我想：“啊，这就是那个有名的光之教堂啊，真小。”一眼可以看到尽头的十字架，嵌在清水混凝土的墙体里，装着干净的玻璃，光透过十字架浸润整个教堂。那天下着小雨，昏暗的教堂里立着小灯，光从建筑师设计的十字架与玻璃窗来，斜向贯穿整个教堂的墙体的空隙间也漏下迷蒙的光线。允许游客进入的时候，教徒们已经做完礼拜。空荡荡的教堂里仿佛呼吸可闻。没有梵蒂冈式繁复的纹理与形象，安藤忠雄用朴素的墙和光，打通了与上帝对话的信道。</p> 
<p>据说为了实现这些“朴素”的清水混凝土墙，其背后需要耗费的资源是十分可观的。清水混凝土类似石材的质感已极具装饰性，不需要额外的装饰性材料，所以为了防雨水侵蚀，需要增加额外的防水涂层。而为了这个“朴素”的装饰性，像是绝对平整的表面和完全对称的孔眼，对施工质量的要求极高，能够完成光之教堂建模的工匠，本身需要具备高超的技术和精度。这面看似普通的墙，其实一点都不简单啊，抚摸光之教堂的外墙时我想。</p> 
<p>这座位于小城茨木的普通教会尚且能够引发旅者的想象，更不用说矗立在欧洲几千年的建筑了。1968 年，27 岁的安藤忠雄开始了米开朗基罗的巡礼之旅。在罗马，端详着圣彼得大教堂的《圣母怜子像》，仰视着西斯廷礼拜堂的《创世纪》和《最后审判》；在佛罗伦萨，注视着美第奇家族礼拜堂的《昼》、《夜》、《晨》、《昏》。米开朗基罗的委托工作往往需要花费数十年的时间去完成，他既是文艺复兴三杰中寿命最长的一位，也是艺术热情最为旺盛的一位。有些人写游记会以自己的视角记录旅途的感动与快乐，读者仿佛跟随作者一同体验了旅途的艰辛与美好，而安藤忠雄的游记则会写出自己的思考，从米开朗基罗耗费三十四年建造教皇尤利乌斯二世的陵墓，联想到自己花费十四年建造“六甲集合住宅”的案子。</p> 
<p>对于现代建筑来说，这个案子真是非常耗时的作品。经历过这样的过程，安藤忠雄觉得米开朗基罗可以长时间做同一个项目真是令人吃惊。</p> 
<blockquote>
 <p> 这种近乎贪婪的工作态度，令我觉得所谓的艺术家“创作者”，还真是欲念深沉的人啊。<br /> ……<br /> 看到米开朗基罗在创作上如此强大的意念，是我不得不感到所谓的“创造力”，还真不是一个善良的人所能拥有的东西呢。 </p>
</blockquote> 
<p>不管是记录式的游记也好，思考式的游记也罢，能够让读者感动的文字就很可贵。读《安藤忠雄都市彷徨》，有些地方我曾去过，有些没有。去过的地方结合自己的体会，常有“没错就是这样”的感觉，也会有“啊原来还可以这样思考”的火花，没去过的地方读到有意思的段落会觉得“真想去一趟这个地方啊”。</p> 
<p>今年（2017 年）东京国立新美术馆开馆 10 周年，除了草间弥生史上最大展览以外，也办了名为“安藤忠雄——挑战”的展览，号称要在现场一比一还原“光之教会”建筑。虽然比较怀疑在有限的空间里“欣赏建筑”会有怎样的效果，但是能把安藤忠雄散落在各地的不同建筑通过照片、影片、模型等形式汇集到一起，应该也是件有趣的事情。</p> 
<p>如果可以的话，还真想去一趟雪地里的“水之教堂”看一眼啊。</p> 
<p>17.07.02/夜<br /> 于自居</p> 
<h3>参考资料</h3> 
<ul> 
 <li>本期书名: 安藤忠雄都市彷徨</li> 
 <li>作者: 安藤忠雄</li> 
 <li>译者: 谢宗哲</li> 
 <li>出版社:宁波出版社</li> 
 <li>ISBN: 9787807430193</li> 
 <li>版本: 纸质书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #142 1977&#xB7;2017&#x2014;&#x300A;&#x8BD7;&#x520A;&#x300B;&#x4E0E;&#x300A;&#x91CE;&#x767E;&#x5408;&#x300B;</title>
        <link>https://justinyan.eth.limo/A7C98275-6B08-4C5E-B8FC-67BAF09F7431/</link>
        <guid>https://justinyan.eth.limo/A7C98275-6B08-4C5E-B8FC-67BAF09F7431/</guid>
        <pubDate>Sat, 01 Jul 2017 15:50:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/07/142_shikanyuyebaihe.jpg" alt="# 每周读书 #142 1977·2017——《诗刊》与《野百合》" /></p> 
<p>我从旧书店里买来两本薄薄的诗集，泛黄的纸张有种历史的霉味，让我回想起小时候爬家里大书架的情景来。尽管中国出版物的定价和其他发达国家地区相比已是出奇的低，但小时候身上没几个零花钱，小城市也没几个有意思的书店，买书基本上是可望不可即的事情，所以父亲的大书架成了我小时候最喜欢探索的游乐场。再往后上中学了，则喜欢光顾便宜的书店买书，虽然老板声称是大书店清仓的尾货，但是根据错别字出现的概率来说，应当还是盗版书居多。再后来网络购书发达了，书店也去得少了，也嫌书本收藏麻烦，搬家太累，干脆以电子书为主了。</p> 
<p>但是书店依然是我很喜欢的去处。试想在安静的小屋里，不同的人坐在书桌前，或端坐或扶额，或惬意或锁眉，身处这样的地方，好像每个人都在享受阅读的乐趣。</p> 
<p>但并不是每家书店都有充裕的空间可供读者休憩，比如昨日，我去了一趟中大附近的“小古堂旧书屋”。数年前在此寻得一本 94 年港版的《何其芳选集》，甚是欢喜。与可供阅读的书店相比，在旧书屋里耐心寻觅则另有一番情趣。</p> 
<p>读书时一位老师给我介绍了何其芳的《画梦录》，自那以后我就很喜欢这位诗人，《画梦录》更是读了又读，每当文思枯竭时就会想起《迟暮的花》：</p> 
<blockquote>
 <p> 在你的眼里我找到了童年的梦<br /> 如在秋天的园子里找到了迟暮的花 </p>
</blockquote> 
<p>然后振作起来，胡乱写点什么。那次在“小古堂”找到这本书也是一次意外之喜，就在我翻遍店里所有书架，即将放弃的时候，在一堆不相干的书里发现了这本《何其芳选集》。心情一下就开朗起来。</p> 
<p>可是这次到小古堂却怎么也找不到港台版的书了。倒是在书与书的缝隙中找到两本薄薄的诗集，一本是 1977 年的《诗刊》三月号，另一本是 1981 年梁南的诗集《野百合》。</p> 
<p>《诗刊》创办于 1957 年，1965 年文革期间停刊，直到 1976 年一月才由毛主席批示同意复刊。我买到的这一期《诗刊》出版时间很特殊：1976 年四月毛泽东逝世，同年六月“四人帮”倒下，华国锋于次年 8 月正式当选主席并宣布文革结束。如此特殊时期出版的《诗刊》，自然全面登载“打倒四人帮”和歌颂华主席的诗文。</p> 
<p>像是什么《华主席给韶山造银河》、《华主席和我伲心连心》、《华主席送我一杯水》，以及《打倒“帮八股”发展新诗风》、《这笔账要清算》之类的云云。可以说这些刊载的所谓“诗歌”，除了押得上韵之外，文学性全无，通篇歌功颂德，读起来十分尴尬。</p> 
<p>那大抵是个痛苦的年代，我们既不能想象劫难时代的苦痛，也无法缅怀不曾体会过的悲伤。朦胧诗在新的时代里，凭借出色的文笔，暧昧的诗境唤起早被掩埋的自我意识与个人感情。这些今天看来理所应当的事情，在那场劫难中，是多么奢侈。</p> 
<p>1977 年的这本《诗刊》，虽然远不足以代表当年文坛的窘迫与苦闷，但阿谀奉承与虚情假意却可见一斑。那时候真正坚持创作的作者们真可怜。几年后，梁南这部《野百合》诗集，虽文采远不如朦胧诗派，但从诗文中可以看到作家们创作的内容已非常自由。这不得不说已是一种幸运。</p> 
<p>身处 2017 年，我们已经是幸运的一代了。</p> 
<p>在柜台结账的时候，我和老板说起以前在这里买过一本港版的书，但是今天却找不到港台的旧书了。老板无奈地说：“现在港台日本的书都不给卖了，只有像方所那样指定的书店可以卖。”</p> 
<p>我边收下找回的零钱边露出惊讶的表情：“啊，原来如此。”</p> 
<p>走出旧书屋，我把刚买的《诗刊》拿出来用手机拍了张照片。泛黄的纸张在镜头下更显出沧桑的历史感，正午的阳光有点刺眼，看不清封面上的年代，到底是一九七七，还是二零一七。</p> 
<p>17.07.01/下午<br /> 于自居</p> 
<h2>参考资料</h2> 
<ol> 
 <li>诗刊 
  <ul> 
   <li>书名: 《诗刊》</li> 
   <li>时间: 一九七七年三月号 </li> 
  </ul> </li> 
 <li>野百合 
  <ul> 
   <li>作者: 梁南</li> 
   <li>时间: 一九八一年</li> 
   <li>出版社: 江苏人民出版社</li> 
  </ul> </li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #141 &#x9752;&#x5C71;&#x4E03;&#x60E0; &#x2014; &#x300A;&#x788E;&#x7247;&#x300B;</title>
        <link>https://justinyan.eth.limo/E19BD36D-70AD-49C9-9A5D-A395E782E161/</link>
        <guid>https://justinyan.eth.limo/E19BD36D-70AD-49C9-9A5D-A395E782E161/</guid>
        <pubDate>Fri, 30 Jun 2017 13:33:59 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/07/141_suipian.jpg" alt="每周读书 #141 明净的暧昧——青山七惠《碎片》" /></p> 
<p>小说是讲故事的艺术。教科书里的“小说三要素”虽然片面，却也不失为传统小说之重要组成部分。此“三要素”为：</p> 
<ol> 
 <li><strong>人物</strong> <p>为了给读者一个能够报以情感投资的人物，其形象必须是符合读者内心的预期的。一般人不会对一个明显违背伦理道德的人报以同情，即便是亦正亦邪的人物，也必须给予其正面的形象，让读者产生“啊，原来这个坏人其实蛮可爱的嘛”这样的感觉。</p> </li> 
 <li> <p><strong>情节</strong></p> <p>紧凑的故事情节几乎成了今天畅销小说的标配。为了更好地推进故事发展，流畅易读的语言也是畅销小说的标识之一。</p> </li> 
 <li> <p><strong>环境</strong></p> <p>有了人物有了情节，就得有一个可以发生故事的地方。在科幻小说里，在浩瀚苍穹航行，在无限时空中穿梭有时甚至比上述二者更为重要。</p> </li> 
</ol> 
<p>但青山七惠的小说却不按套路出牌。如果要做个比喻的话，符合畅销套路的小说大概像一杯 Espresso（意式浓缩咖啡，使用短时间高压冲煮方法），会把豆子的优点和缺点同时放大，口感强烈，既有醇郁的香气，也有浓厚的酸苦。青山七惠的小说则更像现在流行的手冲咖啡，口感明净，层次丰富，咖啡豆原本的香气不会被放大的酸苦所掩盖，可以更好地品尝到豆子原本的风味。</p> 
<p>那么青山七惠的小说里，不同于“套路小说”的风味是什么呢？</p> 
<p>《窗灯》、《一个人的好天气》和《碎片》里的主角，都是平凡的年轻人，没有过人的本事，没有圣人的特质，也没有因为奇遇摇身一变成为超人。情节则更是平平无奇。在本期我们介绍的小说《碎片》中，女主角因为突发事情，原本计划一家人的出游计划成了自己和父亲两个人的摘草莓之旅，由于常年缺乏和父亲的沟通与相处，这场旅行其实是一场尴尬之旅。两人在旅行中从陌生与嫌厌慢慢转变为互相理解。</p> 
<p>这样的故事读起来绝不会有好莱坞式的酣畅淋漓，但却留下了绵长的余香，其原因恐怕就在“平凡”二字。</p> 
<p>青山七惠笔下的人物没有 Marvel 式的英雄光环，没有金庸式的天下第一，他们就是实实在在的普通人。通过人物细腻的心理变化，读者仿佛参与到了这些人的生活之中，参与了他们的思考，参与了他们的情感变化。这让我想起这些年 YouTube 上颇受欢迎的 Vlog 影片，观众们通过观看 Po 主们每天上传的影片，仿佛参与到了别人的生活中一般。除了自己的生活太无聊之后，经历别人的经历大抵是满足了人类的好奇心与情感体验吧。通过阅读小说来体会人物的心理历程，恐怕也是类似的体验。</p> 
<p>至于情节，不采用明确的冲突与悬念来推进的话，读者反而可以更加关注作者极力刻画的“心理旅程”。这里必须声明的是，有不少优秀的小说在情节推进上是既明烈且精彩的，青山七惠的涓涓细流只是风格上的不同罢了。在一口气读完她的几部小说之后，我总有一种如鲠在喉，意犹未尽的感觉，这种感觉和被起伏跌宕的故事所满足后长吁一口气的感觉是完全不同的。</p> 
<p>有人问我《碎片》好不好看，基于以上理由，我无法用“好看与否”来形容我读完这个短篇的感觉。直到做完读书笔记我也还无法从她的小说里找到明确的主题，更不用说寻找出获得“川端康成文学奖”的亮点。所以与其说这个短篇“好看”，不如说它是“特别”的。</p> 
<p>青山七惠笔下的暧昧与意义不明，是“特别”的。</p> 
<p>17.06.29/中午<br /> 于 Starbucks 珠影星光城店</p> 
<h3>关于本书</h3> 
<p>本书是收录了青山七惠三篇短篇小说的单行本，以获得川端康成文学奖的《碎片》命名。另外两篇一是《榉树的房间》，讲述男主角和前女友分手后仍住在同一栋公寓里，却几年没有再说过话，如今男主已经快和新的女朋友结婚了这期间内心产生的各种心理变化。</p> 
<p>另一篇是《山猫》，讲述的是住在乡下的侄女到东京参观大学，在亲戚家寄宿数日，从东京家女主人的视角看三人微妙的关系变化的故事。</p> 
<p>三个短篇都以人际关系中暧昧的气氛为主要描写，能够对人与人相处时的心情作出如此细腻的刻画，作者的洞察力真是了不起啊。</p> 
<h3>参考资料</h3> 
<ul> 
 <li>本期书名: 碎片</li> 
 <li>作者: 青山七惠</li> 
 <li>译者: 竺家荣</li> 
 <li>出版社: 上海译文出版社</li> 
 <li>ISBN: 9787532754854</li> 
 <li>版本: Kindle 电子书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #140 &#x9752;&#x5C71;&#x4E03;&#x60E0; &#x2014; &#x300A;&#x4E00;&#x4E2A;&#x4EBA;&#x7684;&#x597D;&#x5929;&#x6C14;&#x300B;</title>
        <link>https://justinyan.eth.limo/50F1EE5D-16EC-4BBF-9316-78467B33D4BB/</link>
        <guid>https://justinyan.eth.limo/50F1EE5D-16EC-4BBF-9316-78467B33D4BB/</guid>
        <pubDate>Thu, 29 Jun 2017 20:10:39 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/06/140_yigerendehaotianqi.jpg" alt="每周读书 #140 普通的故事，平凡的自己——青山七惠《一个人的好天气》" /></p> 
<p>黄昏。河堤上的归鸟作出最后的盘旋，隐入夕阳的余晖里。</p> 
<p>我怀想着故乡的夏季，有星月，有青草地。生活在长夏无冬的南方里，只能在旅途中寻找四季。东京樱花满盛的时候，皇居外的千鸟渊人头攒动。寒风中时有小雨，却挡不住人们赏樱的热情。粉红的花瓣在空中翻转飞舞，远看似雪，纷纷摇摇。</p> 
<p>这就是春天啊。</p> 
<p>青山七惠笔下的女主角却不喜欢“春天这样不上不下的季节”。她叫知寿，来自小说《一个人的好天气》。</p> 
<p>小说是讲故事的艺术，大凡故事总有个线索，在都市节奏瞬息万变的今天，人们都喜欢情节紧凑，起伏跌宕的故事。流行的小说也多用“三幕剧”手法推动情节的发展。读者心里也有预期，即将结尾，当有高潮。</p> 
<p>然而青山七惠的故事却不是。</p> 
<p>《一个人的好天气》像许多不温不火的日本电影一样，静静地讲述一个女子波澜不惊的成长。直到小说结束，你也不会有看了好莱坞大片的满足感，反而被作者欲言又止的文字弄得如鲠在喉，合上书本时甚至有一丝错愕：“这就结束了？”</p> 
<p>第一次读青山七惠的作品时我还在上大学，《窗灯》里主角脑中的种种想象让我觉着新奇，又迷惑。学生时代的我是体会不到作者笔下微观的心理世界的。</p> 
<p>时隔多年在书架上见到这本尘封的《一个人的好天气》。故事中女主角知寿生活在一个单亲家庭里，母亲因为工作的原因要到中国，留下女主角寄宿在东京一个远方亲戚，名叫吟子的老婆婆家里。</p> 
<p>与吟子相处的日子里，知寿从一个逃避社会的女孩终于成长为一个独立的人。这样的小说没有过山车般的体验，没有惊险刺激的情节，甚至连推荐故事的主线都十分模糊。于是作者就采用了“季节”作为贯穿本作的线索。</p> 
<p>没有大谈人生教训，没有鼓吹积极的人生态度，青山七惠在本书中，只用了平实的对话，真切的生活，细腻的情感给予读者一种触动心灵的体验。有点村上春树式的优雅，却更平淡，有点川端康成式的静穆，却更贴近生活。就像我们每天过的日子一样，平平无奇。</p> 
<p>但是啊，每个人都过着全然不同的人生。</p> 
<p>而我作为一个看客，却从知寿身上看到了善，看到了恶，看到了软弱，看到了勇气，看到了自己。正是因为小说的平凡，才看到了普通的自己。从《一个人的好天气》里，迎接了一个新的春天。</p> 
<p>17.06.27/夜<br /> 于自居</p> 
<h3>关于翻译</h3> 
<p>我读到的是上海译文出版社 2011 年 3 月出版的，由竺家荣女士翻译的版本。就译本来说，文笔清丽，行文流畅，不失为一个好读本。但译者常年生活在中国北方，译本中多用北方惯用语，对于我这个纯粹的广东人来说，每次读到这些表达，却难免觉得有点疙瘩，一下就出戏了。</p> 
<p>我更喜欢的翻译风格是趋向中性的用词，比如说“脑门”这种词，我会觉得翻译成“额头”更好接受。另外还有儿化音的使用等等。</p> 
<p>如果有广东的读者朋友想读这本书，可以尝试一下台湾時報出版的，由王蘊潔翻译的版本(ISBN: 9789571349312)。我试读了一下前面的部分，会有诸如“欧巴桑”之类的台湾词汇，若是不习惯台湾文化的朋友可能也会感觉有点奇怪。</p> 
<p>读者朋友可以分别试读一下再做选择。</p> 
<h3>其他</h3> 
<p>《一个人的好天气》于 2007 年拿下第 136 回芥川龙之介赏，当时作者才 24 岁。为什么一个如此年轻的作家，可以写出吟子老婆婆口中那样超然的思考呢？作者脑袋里的想法，真是不得了。</p> 
<h3>参考资料</h3> 
<ul> 
 <li>本期书名: 一个人的好天气</li> 
 <li>作者: 青山七惠</li> 
 <li>译者: 竺家荣</li> 
 <li>出版社: 上海译文出版社</li> 
 <li>ISBN: 9787532752980</li> 
 <li>版本: 纸质书</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4EFF;&#x4F5B;&#x6F29;&#x6DA1;&#x822C;&#x7684;&#x5F15;&#x529B;&#x2014;&#x2014;&#x8349;&#x9593;&#x5F4C;&#x751F;&#x5C55;&#x300C;&#x308F;&#x304C;&#x6C38;&#x9060;&#x306E;&#x9B42;&#x300D;</title>
        <link>https://justinyan.eth.limo/F458B6B1-403F-4126-8FA3-60899357BD08/</link>
        <guid>https://justinyan.eth.limo/F458B6B1-403F-4126-8FA3-60899357BD08/</guid>
        <pubDate>Wed, 26 Apr 2017 10:15:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/04/yayoi_kusama_my_eternal_soul_mp.jpg" alt="草間彌生展「わが永遠の魂」" /></p> 
<p>大抵写字的人都曾经历过一种“接近极限”的状态，情感饱满时笔尖成了唯一的宣泄口，将充斥胸臆的洪水一泻千里，却越写越是心潮澎湃，不能自已。今年春专程赶到东京，除了追逐开放的樱花外，也为了一睹草间弥生的作品。</p> 
<p>明烈的色彩，反复的波点和漩涡般扭曲的画面，看草间弥生的作品就像经历一场波涛汹涌的海上风暴，她的画里放射出的强烈的情感，透过画布渗透到空气中，将观者包围，吸引，拉扯进那个千万只眼睛的世界。</p> 
<p>这大约是我在东京国立新美术馆，站在草间弥生画前的感受。这种感受的强烈兴许和布展形式有关。这场名为草間彌生「わが永遠の魂」的展览分为两个部分，第一部展出的是草间弥生自 2009 年以来约 130 幅的大型画作。由于数量众多，画幅较大（多为 194cm x 194cm），布展方安排了一个大厅，把所有的画作分成两到三行，无缝地平铺在墙上。但是这样一来，放置标题的地方也就没有了。于是布展方在入口处提供了长长的名录供观众取阅。其实即使手握名册也很难与面前的画作对应起来，这大约是本次展览难以避免的缺失。毕竟比起标题信息来说，如何在这场展览中竭尽全力地放下草间弥生的所有作品，才是更令人头疼的事情吧。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/04/yayoi_kusama_part1.jpg" alt="第一部：21世紀の草間彌生" /></p> 
<p>展厅的中央放置了艺术家 2009 年的花朵雕塑：“FLOWERS THAT BLOOM AT MIDNIGHT”。这些姿态造型怪异的雕塑一共 7 朵，采用高强度的纤维增强塑料和金属制成，由画家亲自上色。纯度极高的颜色在现场灯光的映照下，散发出颇具活力的气氛。当你面向这些花朵，见到人群与它们开心地合影时，和观看墙上挂着的画作真是两种截然不同的心情。原本宽敞的展厅在人山人海的簇拥下，中间是情绪高涨的人群的笑脸，周遭是伫立的人们边看画边点头的严肃脸，站在一旁观察人群的我仿佛在看一场行为艺术，不禁莞尔。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/04/yayoi_kusama_FLOWERS_THAT_BLOOM_AT_MIDNIGHT.jpg" alt="草间弥生 FLOWERS THAT BLOOM AT MIDNIGHT" /></p> 
<p>波点（Polka-dot）是草间弥生的标识，从 2009 年后的画作来看，除了波点，画家也在尝试其他重复的意象，但用色依然明烈。如果说色彩同样艳丽的梵高的向日葵是阳光下燃烧的火焰的话，那么草间弥生的画作则更像在子夜中跃动的幽火，把迷失在雾霭茫茫的柔波中的人们，囚进黑暗的深渊。</p> 
<p>草间弥生今年已经 88 岁了，却和她年轻时一样，一直是个“前卫女王”。展览的第二部："20世紀の草間彌生"展示了艺术家早期的作品。知道草间弥生的读者应该都听说过她的波点与精神疾病，在看这个展览之前我对艺术家的认识也仅止于此，甚至内心有过怀疑，觉得她也许是拿自己的疾病作为商业噱头，直到在新干线上读完了草间弥生的生平，才对她深感佩服。</p> 
<p>自小深受幻觉困扰的草间弥生，眼中的世界充满诡异波点，严重时甚至有自杀倾向。</p> 
<blockquote>
 <p> “如果不是因为艺术，我可能早就自杀了。”<br /> "If it were not for art, I would have killed myself a long time ago." </p>
</blockquote> 
<p>这句话经常被人引用，我心中对其是否出自艺术家之口虽持怀疑态度，但她的作品中透露出来的诡怖的氛围是毋庸置疑的。画家儿时所作的铅笔画也在展览中，面对这张泛黄的纸张，满布的圆圈已可见今日之画风。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/04/kusama_mother.jpg" alt="草间弥生 铅笔画" /></p> 
<p><em>现场不允许拍照，此图源自 Pinterest</em></p> 
<p>画中人是草间弥生的母亲，据说是位脾气暴躁的女士，也极力反对草间弥生作画，是导致草间弥生最终孤身前往纽约的重要原因。20 世纪是颠覆一切的时代，有过嬉皮士反主流，有过毕加索、安迪·沃霍尔这些艺术家，草间弥生就在这样一个风起云涌的时代里独自奋斗。她做过行为艺术，给牛、马和自愿来找她的男女裸体贴上波点，在那个“性解放”仍未普遍的年代，这个亚洲女子通过极具性意味的作品展出，引起了相当的注意。</p> 
<p>国立新美术馆的这次展览野心很大，几乎展出了草间弥生全部的作品，第一部的 130 幅近作自不消说，第二部的早期作品里，既有儿时的画作，也有在美国时期的南瓜、银球、“千船展”和“无限镜屋”。</p> 
<p>“千船展”用无数状似阳具的造型布置成了一条船，放在今天也是件大胆的作品。“无限镜屋”则是可交互的装置艺术，观众在幽暗的环境里走进四面都是镜子的小房间里，小心翼翼，看着自己的影子在无尽的镜面中重复而消失。当观众走到一半时，灯光戏剧性地陡然一灭，陷入一片漆黑，引发一阵轻呼：我被吞没了！现在回想起来，灯光打开的那一瞬，悬在半空的球体熠熠生辉，让我想起在京都春日大社见过的藤浪之屋，万灯笼在黑暗中缓缓一如成排的渔火。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/04/chunridashe_wandenglong.jpg" alt="春日大社·万灯笼" /></p> 
<p>第二部还展出了 1967 年的短片——“草间弥生的自我消解（Kusama's Self-Obliteration）”。看着影片中骑着波点马匹的草间弥生，有种时代感与超前意识碰撞后的奇妙心情。走出美术馆时屋外下着雨，站在大南瓜前按下快门，镜头里捕获了最后一个展品，只觉此番真是不虚此行。</p> 
<p>在漫长的创作生涯里，草间弥生一直运用波点符号直到现在，波点是她的标识，这和村上隆的漫画形象、岳敏君的大笑男一样，很容易被大众辨识。若是回到文艺复兴时期，艺术家们则更常通过技法的差异来形成个人风格，看米开朗基罗、拉斐尔和达芬奇的画，可以在明暗色彩上感受到明显的不同。从绘画形象上，米开朗基罗粗旷健壮的人体，拉斐尔和谐饱满的圣母，达芬奇神秘诡异的氛围也都有代表性的区别，但这些区别是比较局限的。自 20 世纪以来，技术的革新与各种表现主义的风行，让当代艺术家几乎可以无拘无束地自由创作，从装置艺术到行为艺术，从性解放的主题到意义不明的重复形象，艺术创作从未如此空前地解放过，这不得不说是我们这个时代的进步与幸运。</p> 
<p>然而这种看似无尽的自由也会带来迷茫与困惑，在当代的语境下，艺术到底应该是什么？它似乎什么都是又什么都不是。在看 Andy Warhol, Salvador Dali<br /> 也好，看草间弥生、村上隆也罢，这些现当代的艺术还在发生<del datetime="2017-04-26T03:06:38+00:00">，还没有人把他们写进“艺术史”，还没有人能够对当下进行总结</del>。欣赏这样的艺术与追溯文艺复兴时期充满故事的作品是两种全然不同的体验。</p> 
<p>现代艺术仍呈现百花齐放的姿态，一如拓荒的先驱在旷野中迷茫地奔跑。也许在我们这个时代过去以后，会有某些天才站立在浪潮之巅，成为这个时代的标识，在某个向度上推进一种全新的艺术。但是对于现在的我们，好好享受自由世界带来的丰富多彩，也不失为一种幸福。</p> 
<p>2016.04.25/中午<br /> 于 T.i.T</p> 
<h2>相关展讯</h2> 
<ul> 
 <li>地址: 日本东京都港区六本木7-22-2 国立新美术馆</li> 
 <li>时间: 2017.2.22 - 2017.5.22</li> 
 <li>官网: http://www.nact.jp/</li> 
 <li>票价: 1600 円</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #139 &#x4E1C;&#x91CE;&#x572D;&#x543E; &#x2014; &#x300A;&#x62C9;&#x666E;&#x62C9;&#x65AF;&#x7684;&#x9B54;&#x5973;&#x300B;</title>
        <link>https://justinyan.eth.limo/7D54EE1D-30CD-45ED-A8B1-1FD858BD70A8/</link>
        <guid>https://justinyan.eth.limo/7D54EE1D-30CD-45ED-A8B1-1FD858BD70A8/</guid>
        <pubDate>Tue, 18 Apr 2017 13:27:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2017/04/139_lapulasidemonv.jpg" alt="每周读书 #139 未来向与复仇计划——东野圭吾《拉普拉斯的魔女》" /></p> 
<p>从《放学后》开始读到东野圭吾的小说，从此便成了这位作家的书迷。2015 年 5 月出版的《ラプラスの魔女》，直到今年（2017）1 月才有简体中文版，我第一时间就买下了。</p> 
<p>东野圭吾从 1985 年出道 32 年间，每年都能保持高产的出版数，年均出版 2.8 部单行本（90/32=2.8）的数字是非常可怕的（当然有些作品是连载完了才出的单行本）。这期间，他尝试过许多稀奇古怪的话题，探索过很多歪门邪道的领域。然而他获得评价最高（获奖）的几部作品，却大都是涉及人性的阴暗之作。像《嫌疑人x的献身》、《白夜行》、《幻夜》之类。在涉及脑科技、平行世界、超自然和性别认知障碍等比较少见的领域，作家都曾做过探索，但是这几部作品却都没获得普遍的好评。2015 年这部中译为《拉普拉斯的魔女》的小说，我个人觉得，也属于是中规中矩之作。</p> 
<p>故事以一场夺命的龙卷风自然灾害为序章，这场龙卷风夺走了女主角羽原圆华母亲的生命。当时圆华还是小学生，不太情愿地和母亲一同到天寒地冻的北海道外婆家探亲。这场事故成为后来主线的重要契机，这里且按下不表。</p> 
<p>故事进入主线之后，通过在负责护卫圆华的保镖武尾彻、圆华的助手桐宫玲、地方刑警中冈佑二、大学教授青江等主要人物的视角切换，盲人摸象式地还原两场命案的真相。每个人物都在“接近真相”这件事情上起着推动作用，但作家又非常狡猾地把重要线索隐藏在在每个人的盲区里。随着剧情的推进，多个不同的视角得以慢慢拼接在一起，揭示事实。这个过程是推理小说的经典手法，不过本作中人物的群写却是颇具难度的。因为群写容易让读者的注意力和情感投资分散，如果人物联系不足，就可能让读者产生困惑与断层，而一旦分不清谁是主角谁是配角，又容易造成读者的投资落空。在这点上，作家的群写能力之强，很值得称道。</p> 
<p>比如警卫视角里，女主角圆华的行为有些异常，这种异常从警卫的视角延续到了教授青江的视角里，而通过在两个看似没有关联的事件里安插同一个人物，让不同的视角有了一个共同的落脚点，自然地衔接了在了一起。其他人物的视角切换也多是通过这种手法，通过简单几句点出新出场人物的身份之后，很快地切换到两者之间有着强关联的事情上。这就让读者的阅读重心得以通过“接近真相”这条主线稳稳地向前行进。而在群写比较糟糕的小说里，最常遇到的就是，一个新人物以一种与前者毫无关联的姿态出场，直到平行情节过了很长一段之后才有所交织，简直就像看两个完全没关系的故事一样。</p> 
<p>除了群写手法娴熟之外，悬疑小说最重要的悬念设计，作者也是驾轻就熟。先是追踪“凶手是谁”，从而引出故事中的故事，通过多种“不可能”进行反转。小说就是讲故事，故事讲得好不好和巧合讲得是否自然有关系。如果巧合很多，但是解释得通，或者在故事的大背景下读者自然而然地接受了那就是一种设计得好的巧合。比如在《神雕侠侣》中，小龙女在谷底等了一十六年，若不是杨过刚好看到了老顽童养的蜜蜂上的小字，这一对苦命鸳鸯又怎能劫后重逢？而这等巧合虽然有很明显的人为痕迹，但是读者在读到这里的时候，早被黯然销魂掌给打得意志消沉，为这两人的悲惨遭遇深感惋惜。此时十六年之约已至，本抱着一丝希望的心情再次陷入绝望。此时看到“情谷底”，“我在绝”，又怎不觉得酣畅淋漓，苦闷的情感有了宣泄之口，成就一个情感波动的巅峰。</p> 
<p>但是这种处理巧合的心思很难。在《拉普拉斯的魔女》中，作家设计了一种“未来向”的技术，并以人脑潜力无限作为背景。然而这种类似“大脑的百分之十神话”早已被证伪，在这里用作全书基础显得有些薄弱。随着阅读的深入慢慢理解到“魔女”的真相时，会觉得这里的设计不够新颖，不足以支撑“魔女”的概念。</p> 
<p>作为一个娱乐向读者，遇到这种情况，如果不想放弃不读，最好的做法就是接受作者设计的大前提（不然我后半本书还没读完怎么办？）。就好像读科幻小说或者看超人动漫一样，必须接受了大前提，这些故事才有可以发挥的场景。而且，脑科技这种概念，虽然是本作的基础，却不是作家要表达的核心思想。核心还在于大魔王与复仇男主角之间的纠葛。</p> 
<p>小说中使用了大魔王的博客这样一个故事中的故事的手法。这种手法在今天的文字作品里也不算新鲜了（读者的要求真是越来越高了），但是大魔王的文笔不错，故事也算值得一读。只是还和前面提到的脑科技一样，依然觉得份量不足。</p> 
<hr /> 
<p></p>
<center>
 <strong>警告：以下内容含有剧透。</strong>
</center>
<p></p> 
<hr /> 
<p>首先故事的理论基础是：<strong>人类的大脑还有很大的空间没有发挥，一旦发挥出来能力堪比一台超级计算机</strong>。这个理论本身站不住脚，<strong>而作家也根本没有费力想让它“站得住脚”</strong>，本着能忽悠过去就忽悠过去的想法，和以往作家写过的涉及科幻和前沿科技的几部作品类似。接着小魔王男主角的故事里牵出一场多年前的命案，然后开始解释小魔王的犯罪动机，从而牵出大魔王与多年前的命案有关。<strong>而这个命案的动机很值得怀疑</strong>。作者大约是站在日本“匠人精神”的角度来看这件事情，如果读者熟悉日本文化，应该会听说过“寿司之神”与“豆腐之神”之类的故事。这算是日本人“花一生的时间，专注在一件事情上，能够把一件事情做好已经非常了不起”这种精神的典型例子。</p> 
<p>而大魔王在本作中被设计成一个有“匠人”般坚持的“电影人”。只不过他的这个坚持有些过分，已经到了丧心病狂的地步。而为了解释复仇的小魔王为什么和大魔王一样草菅人命，作者祭出了“罕见的遗传病”这个非常偷懒的理由。当然这个理由是在尾声的时候才揭示出来，尽管如此，读到这里，<strong>这部作品的理论基础和重要推动因子已经都被安排成一种巧合</strong>！</p> 
<p>而且这个巧合还不是出现在读者情感的高潮，没有什么自然的铺垫，就是在“需要转折的时候”，出现了。我本以为作者敲着密集的鼓点就要引出一个惊天大秘密了，很开心地期待着的时候，居然给出了这种薄弱的理论基础和转折的理由。真的是挺失望的。</p> 
<p>再提一个我觉得不合理的地方。当刑警因为追查命案的缘故找到圆华的医生父亲的时候，助手桐宫玲仅在一页纸的篇幅里就通过网络搜索找到了一个非常关键的人物——青江教授。前面说群写最怕的是多个人物之间没有联系，但是作者在我说的这个案例里面，却非常生硬地强行让这两拨对立的人正面联系上了。我不是不想让他们尽快相遇推动剧情，但是我很难接受这种“普通人也能像超人一样瞬间找到自己要找的人”这种牵强的理由的。</p> 
<p>最后，我想说，这本书是一部中规中矩的作品。放在东野圭吾的所有作品里绝不能算是上乘之作，但是单纯从推理小说的角度来看，作者优秀的群写（忽略上文提到的牵强），流畅易读的风格，娴熟的悬疑设计，仍然让本作具有不错的可读性。所以我的想法是，作为一本休闲读物，这本书可以一读，但是放在作家以往的作品里看，只能算中下之作。</p> 
<h3>参考资料</h3> 
<ul> 
 <li>本期书名: 拉普拉斯的魔女</li> 
 <li>作者: 东野圭吾</li> 
 <li>译者: 王蕴洁</li> 
 <li>出版社: 北京联合出版公司</li> 
 <li>ISBN: 9787550293151</li> 
 <li> <p>版本: 纸质书</p> </li> 
 <li> <p><a href="http://news.tvbs.com.tw/world/345539">龍捲風襲北海道　9死15傷6失蹤│TVBS新聞網</a></p> </li> 
 <li><a href="https://zh.wikipedia.org/wiki/%E5%A4%A7%E8%84%91%E7%9A%84%E7%99%BE%E5%88%86%E4%B9%8B%E5%8D%81%E7%A5%9E%E8%AF%9D">大脑的百分之十神话 - 维基百科，自由的百科全书</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4F60;&#x4E5F;&#x662F;&#x4E1C;&#x91CE;&#x572D;&#x543E;&#x7684;&#x4E66;&#x8FF7;&#x5417;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/0DA2EABD-956E-4C79-87E6-491AC1A0D6FC/</link>
        <guid>https://justinyan.eth.limo/0DA2EABD-956E-4C79-87E6-491AC1A0D6FC/</guid>
        <pubDate>Tue, 11 Apr 2017 14:07:37 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/04/东野圭吾_blog.jpg" alt="东野圭吾" /></p> 
<p>东野圭吾的轻松好读，话题多变，善于探索新的主题与技巧。尽管在以《放学后》出道后作家经历过十多年的沉寂时期，但这些苦闷的日子却丝毫不影响作家勤奋的创作，这点十分令人敬佩。在做《拉普拉斯的魔女》笔记的时候回顾了东野圭吾每年出版的图书，发现 90 部单行本作品里看过了 27 部，大约可算是东野圭吾的书迷了吧。</p> 
<p>其中有 14 部曾经在”每周读书“里做过介绍，没介绍的部分有些比较无聊，有些则是在旅途中看完，当时并没有留下笔记，后来就没再去翻阅，这部分的书还是有意思的，值得二次翻阅，以作笔记。以下是我看过的东野圭吾的小说，如果你也是东野圭吾的粉丝，欢迎你分享一下自己心目中作家最好的作品。 :]</p> 
<ol> 
 <li>《放学后》(每周读书 #20)</li> 
 <li>《沉睡的森林》</li> 
 <li>《宿命》</li> 
 <li>《变身》</li> 
 <li>《分身》</li> 
 <li>《平行世界爱情故事》(每周读书 #44)</li> 
 <li>《怪笑小说》</li> 
 <li>《毒笑小说》</li> 
 <li>《恶意》(每周读书 #90)</li> 
 <li>《秘密》(每周读书 #125)</li> 
 <li>《白夜行》</li> 
 <li>《单恋》(每周读书 #54)</li> 
 <li>《时生》</li> 
 <li>《绑架游戏》</li> 
 <li>《幻夜》(每周读书 #38)</li> 
 <li>《彷徨之刃》(每周读书 #126)</li> 
 <li>《嫌疑人X的獻身》(每周读书 #62)</li> 
 <li>《红手指》(每周读书 #35)</li> 
 <li>《东野圭吾的最后致意》</li> 
 <li>《流星之绊》(每周读书 #50)</li> 
 <li>《圣女的救济》</li> 
 <li>《新参者》</li> 
 <li>《布谷鸟的蛋是谁的》(每周读书 #31)</li> 
 <li>《盛夏的方程式》(每周读书 #51)</li> 
 <li>《解忧杂货店》(每周读书 #61)</li> 
 <li>《虚无的十字架》(每周读书 #89)</li> 
 <li>《拉普拉斯的魔女》</li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #138 &#x623F;&#x9F99; &#x2014; &#x300A;&#x5723;&#x7ECF;&#x7684;&#x6545;&#x4E8B;&#x300B;</title>
        <link>https://justinyan.eth.limo/9B2ACC1D-7717-4974-97F4-BC24C469FB98/</link>
        <guid>https://justinyan.eth.limo/9B2ACC1D-7717-4974-97F4-BC24C469FB98/</guid>
        <pubDate>Wed, 15 Mar 2017 13:48:07 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/03/138_the_story_of_the_bible.jpg" alt="每周读书 #138 通俗地阅读圣经的故事——房龙《圣经的故事》" /></p> 
<p>希腊神话、北欧神话和基督教在欧美世界就如《西游记》在中国一样，是家喻户晓的常识。漫威（Marvel）中的雷神索尔（Thor）来自北欧神话，DC Comics 的神奇女侠则是来自希腊神话。基督教更不用说，贯穿整个欧洲中世纪的主题，创世纪、诺亚方舟、耶稣受难、末日审判等故事想来多数人都耳熟能详。</p> 
<p>北欧神话是这三者之中最简单的神话体系，我们在 <a href="https://justinyan.me/post/2620">107 期：如何通俗易懂地认识北欧神话？——《北欧神话 ABC》</a>中作过介绍。北欧神话是曾肆虐欧洲的维京人的信仰，还在发展中就受到基督教的影响，尚未成熟就被同化。诸神的黄昏（Ragnarök）就是北欧神话版的“末日审判”。</p> 
<p>希腊神话则要丰富得多，我在读完《北欧神话 ABC》之后读了刘世洁的《古希腊神话故事大全集》，当时觉得文笔平庸，啰嗦冗长。但也是因为希腊神话故事太多，创世与诸神的部分已经够长，但和英雄传说部分相比还差一大截。所以全书读下来颇为辛苦，以后我们写一期分享一下。</p> 
<p>基督教却远比上述二者复杂。它在当今世上三大宗教之一（与伊斯兰教、佛教并称），信徒人数超过全球 30% 人口，是全世界信仰人数最多的宗教。基督教经历过 11 世纪东西教会分裂（East–West Schism）和宗教改革（Protestant Reformation）两次大规模分裂，在内部形成天主教、东正教和新教三大宗派，各自教义有所不同。这让本就历史悠久的基督教历史更加复杂。所以我们如果要了解基督教，应该怎么入手呢？</p> 
<p>《圣经》（Bible）无疑是所有基督徒会推荐的唯一经典。数年前同事 @Boas 送了我一本《圣经》，告诉我如果想了解耶稣的生平，读《圣经·新约》的四福音书就足够了。当时我回到家就开始读《新约》，至今回想仍十分感激 @Boas，若不是那时他激发了我对基督教的兴趣，不晓得我还要等多久以后才会读《圣经》，才会去读《西方艺术史》，才会明白那些画作与雕塑背后的故事。</p> 
<p>《圣经》分为两个部分，首先是《旧约》。基督教源于犹太教，耶稣本身就是犹太人，从耶稣殉难开始，门徒们四处奔走殉道，基督教才和犹太教越走越远。基督教所称的《旧约》，在犹太教称为《塔纳赫》，后来创立伊斯兰教的默罕默德，在年轻时受这两个宗教的影响很深，他生前口述的《古兰经》后来被信徒记录下来，内容与上述经典多有相似之处。这三个宗教同出一源，也为此他们被称为亚伯拉罕诸教（亚伯拉罕是三个宗教共同的先知）。</p> 
<p>《旧约》讲述的是上古时代的故事。大约从先知摩西带领犹太人出埃及开始记录，到耶稣诞生前 500 年完成，前后历时约 1000 年。这段时间对应到中国历史，就是夏商周，春秋战国的年代。回想一下我们的历史课就可以想象，这些记载该有多么难读。所以基督教为了在全世界布道，几千年来已经把《圣经》翻译为上千种语言，而且译本大都浅显易懂，只读圣经故事的话非常好读。只是这类古籍都无可避免地会有编排散乱，内容重复和枯燥无味等问题。于是，如何通俗易懂，生动有趣地阅读《圣经》，是一个富有挑战的问题。<strong>来自美国的通俗读物作家房龙于 1923 年出版了《圣经的故事》（The Story of the Bible）一书，试图用简单的语言，精心编排过的故事顺序，亲自绘制的插图来展示一个不一样的《圣经》。</strong></p> 
<p>房龙全名 Hendrik Willem van Loon，在本书中，作家试图通过生动诙谐的文笔，把圣经故事按照时间顺序讲述出来。</p> 
<blockquote>
 <p> “对于生活在现代都市快节奏下的读者来说，《圣经》有些过于复杂晦涩，特别是此书的前半部分，所以我在这里只是把这本书的概要告诉你。”</p> 
 <p> “如果我的这本小册子能激起人们阅读原著的愿望，能促使更多的人去潜心研究那些充满智慧的比喻，理解那位伟大导师的远见卓识，那么这本书就没有白写。”</p> 
 <p> “这就是我写这本书的终极目标。” </p>
</blockquote> 
<p>以我自己的经验来看，人名繁多和章节跳跃等问题确实影响阅读。毕竟是和《诗经》同时代的文字，不能要求它具有现代散文的可读性。《圣经的故事》确实比读原著要容易得多。</p> 
<p>当我读到大卫年轻时用鹅卵石与透视器击败敌人的时候，我能感受到米开朗基罗的《大卫》雕塑那坚毅的目光。</p> 
<p>当我读到摩西从山上带回刻有《十诫》的石板时，我能想象到这位长髯飘飘的老人面对族人的堕落时将手中石板愤怒地一摔。</p> 
<p>当我读到耶稣的《登山宝训》时，我终于明白这位不识文字却极具人望的犹太人，是如何地超脱与崇高。</p> 
<p>当我读到耶稣临终前平静地做出最后一次祷告时，我仿佛忽然从后人无数的圣殇主题的作品中看到了无言的悲恸。</p> 
<p>读《圣经的故事》，你能了解犹太人的故事，能了解耶稣的生平。但本书不是《圣经》，也不是《基督教史》。基督教几千年来的发展，其无论世俗的还是宗教上的种种，都是值得了解的精彩。文艺复兴三杰里，唯米开朗基罗最具宗教热情。对于“圣殇”这个主题，他年轻时所作的《哀悼基督》是他的成名作，他临终前最后一件未竞之作《圣殇》，依然是献给耶稣的艺术。可以说不了解基督教的故事，就看不懂中世纪到文艺复兴的艺术。今日罗马街头游客云集，设若你不识耶稣基督，只怕站在圣彼得大教堂里的摩西像前也不知这位老人竟是何人。</p> 
<p>17.03.15/凌晨<br /> 于自居</p> 
<h2>参考资料</h2> 
<ul> 
 <li>本期书名: 圣经的故事</li> 
 <li>作者: 房龙（Hendrik Willem van Loon）</li> 
 <li>译者: 朱振武 张海强 邓纯 </li> 
 <li>出版社: 上海译文出版社</li> 
 <li>ISBN: 9787532760688</li> 
 <li> <p>版本: 纸质书</p> </li> 
 <li> <p><a href="https://zh.wikipedia.org/wiki/%E4%BA%A8%E5%BE%B7%E9%87%8C%E5%85%8B%C2%B7%E5%A8%81%E5%BB%89%C2%B7%E6%88%BF%E9%BE%99">亨德里克·威廉·房龙 - 维基百科，自由的百科全书</a></p> </li> 
 <li><a href="https://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;cad=rja&amp;uact=8&amp;ved=0ahUKEwiVwpiew9bSAhXHGJQKHWvMBCUQFggcMAA&amp;url=https%3A%2F%2Fzh.wikipedia.org%2Fwiki%2F%25E8%2581%2596%25E7%25B6%2593&amp;usg=AFQjCNF7d6-t2Ngvb8pKeRuRG7ZbqaPG6Q&amp;sig2=t7jzDQ_PTu_tMQBXGKkinA">聖經- 维基百科，自由的百科全书</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB;  #137 Dan Brown &#x2014; &#x300A;&#x8FBE;&#x82AC;&#x5947;&#x5BC6;&#x7801;&#x300B;</title>
        <link>https://justinyan.eth.limo/9406ED80-01B9-479A-9282-9C68B983584E/</link>
        <guid>https://justinyan.eth.limo/9406ED80-01B9-479A-9282-9C68B983584E/</guid>
        <pubDate>Mon, 06 Mar 2017 13:43:11 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/03/da_vinci_code_mp-1.jpg" alt="每周读书 #137 天才与“圣杯”——《达芬奇密码》" /></p> 
<p>大凡好小说家总有其鲜明的写作特色，如同技术壁垒，他人轻易无法复刻。比如金庸以历史为舞台，伴以琴棋书画古色古香，飞花摘叶皆可伤人，又比如东野圭吾文笔通俗，话题涉猎广泛，读起来轻松愉快。上期读书中我们介绍的丹·布朗（<a href="https://justinyan.me/post/3118">#136 科学与宗教是对立的？——丹·布朗《天使与魔鬼》</a>）亦是如此。在《天使与魔鬼》中作家以艺术史上有名的大师为背景，结合精巧的谜题设计与好莱坞式的剧情，创作了一个惊心动魄的故事。其中梵蒂冈城内档案馆，圣彼得大教堂地下的史前墓穴都是鲜为人知的秘密处所，作家有办法以这些地方为故事场景本身就很难得。不过如上周所说，这部作品在主题的选择上相对有些门槛，后半部剧情的发展不够自然，这些都是缺点。<strong>本周我们继续介绍丹·布朗以哈佛大学符号学教授兰登（Robert Langdon）为主角的系列作品，也是让作家一夜成名的代表作——《达芬奇密码》。</strong></p> 
<p>今天我们所谓的“西方”，指的是工业革命以后强大起来的欧洲各国，以及后来崛起的超级大国美国。而美国虽然不属欧洲，却源于欧洲。欧洲的历史与我们所熟知的中国历史相去甚远，中国在历史上长期以来就是个统一版图的国家，尽管经历过春秋战国、五代十国、五胡乱华、南北朝等等多次分裂时期，但是我们回顾往昔，基本上都是这片土地上的演绎。可以说我们早就习惯了在同一片土地上分分合合、改朝换代的历史。如果用这样的思维去看欧洲历史，就会觉得混乱得很。欧洲一个国家的皇室，在国王驾崩没有后嗣的情况下居然可以由另一个国家的人来继承，也是匪夷所思。而且欧洲小国众多，通过打仗、联姻、继承等方式，可以诞生或者消灭许多小国。今天我们所看到的欧洲各民主国家，事实上是从 1648 年《威斯特伐利亚和约》之后才开始形成的。所以看欧洲的历史，绝不能从某个国家去看，像曾经西方文艺复兴摇篮的佛罗伦萨，它现在属于意大利，但是当时却属于神圣罗马帝国里的一个自治城市，这个帝国在拿破仑大帝时期分裂而最终覆灭了。许多历史上起过重要作用的行政区域的消失使得欧洲的历史无法从单个国家去看，得从整个欧洲去看。</p> 
<p>总体来说欧洲早期历史里最耀眼的文明是古希腊，然后被古罗马帝国征服，罗马期间算是统一的国家。罗马后期基督教兴起，欧洲进入中世纪，西边被各种蛮族入侵，东边又面临阿拉伯威胁，这段时期是欧洲的黑暗时期。所以为什么今天的人那么看重文艺复兴，就因为文艺复兴正处于欧洲近代的初期，科学技术的突飞猛进使得欧洲从野蛮走向文明。文艺复兴时期的艺术、建筑与文学都有着前所未有的突破，在知识、社会和政治各个方面引发了巨大变革，这段时间留下的作品，在今天看来都是一笔耀眼的财富。</p> 
<p>时至今日，艺术三杰（达芬奇、米开朗基罗与拉斐尔）的作品在世界各地展览都能引发观览热潮，而留在梵蒂冈、罗马和佛罗伦萨的雕塑、绘画与教堂，则更吸引了全球无数游客前往。三杰之中，拉斐尔最为年轻，他曾学习其他二位大师的作品，与米开朗基罗的关系并不愉快，病逝时年仅 37 岁。而米开朗基罗则是三人中最具宗教热情的，也是性格最孤僻，脾气最暴躁，生活最悲苦，却活得最久（享年 88 岁）的一个。他受教皇委托给西斯庭礼拜堂天顶作画，仰头 4 年，眼睛受颜料侵蚀，几乎成了瞎子。在《天使与魔鬼》中，故事的主要场景在罗马，两位大师在这部小说中均有提及，而米开朗基罗作画的西斯廷礼拜堂更是教会召开秘密会议选举新教皇的地方。对于熟悉基督教与文艺复兴的读者来说，当故事发展到教皇内侍站在《最终审判》的巨幅壁画底下时，耶稣基督那决绝的手掌朝天一挥的姿势与教皇内侍颓丧的表情相映，无疑是颇为动人的一幕。</p> 
<p>达芬奇算是三杰中最老也最古怪的一个，也是最具天才气息的一个。他的《蒙娜丽莎的微笑》是现在法国巴黎卢浮宫的镇馆之宝之一，神秘的微笑至今仍是世人讨论的话题，同样的神秘气息也出现在《岩间圣母》这样的画作之中。他的一生留下的草稿无数，但真正完成的画作却极少，目前大约有 15 张绘画作品被保留下来，与米开朗基罗留下的大量雕塑、拉斐尔在梵蒂冈博物馆留下一整个拉斐尔室和许多版本的圣母像对比，简直少得可怜。但就是这些极少的绘画作品，却有最具声明的肖像画——《蒙娜丽莎的微笑》，以及被人复制得最多的宗教画——《最后的晚餐》。这幅湿壁画现在还在意大利米兰多明我会院的墙壁上，米兰现在属于意大利，但在当时却是一个独立的米兰公国。达芬奇当时被引荐到米兰宫廷去，因其多才多艺而受上流社会追捧。达芬奇受命做这幅湿壁画的时候，由于湿壁画是需要在底下的颜料未干之时往上作画，不符合达芬奇做事三天打鱼两天晒网的风格，于是他选择了自己发明一种特殊的颜料，可以在底料干透的时候也继续作画，以此把一幅本来三个月就能画好的画用了一年时间完成。</p> 
<p>由此可见达芬奇性格之独特。达芬奇不仅是个艺术家还是个发明家，他喜欢用一种奇怪的镜像书写的手法记笔记，把他一生所想的各种独特的发明画出来。这些发明包括了坦克、直升机、降落伞等各种稀奇古怪的东西，但由于超前了几个世纪，在当时没人去把他的设计实践出来。这些手稿被后来有名的收藏家买下了，几易其手，目前真品的拥有者是比尔·盖茨，其影印稿则在世界各地均有出售，被其中一位收藏家命名为《哈默手稿》。今天意大利各大城市都设有陈列各种“达芬奇发明”的博物馆。（本人曾幸运地在江户东京博物馆看到都灵皇家图书馆收藏的《关于鸟类飞翔的手稿》与《圣母像》真迹，镜像文字完全看不懂。）</p> 
<p>达芬奇作为三杰之中最神秘的一个，其人本就极具故事性。丹·布朗选择这样一个广为人知的天才，要比上一部作品提到的“光照派”亲民得多。《达芬奇密码》的谜题设计主要围绕达芬奇的作品与发明来展开，而主题则选定在天主教会与峋山隐修会之间对于“圣杯”的争夺（天主教真是在两部作品都中枪）。</p> 
<p>“圣杯”（Holy Grail）一般认为是耶稣受难前最后的晚餐上所用的酒杯。但是达芬奇的《最后的晚餐》并没有画出这样的杯子，于是小说以这幅画展开了对“圣杯”的不一样的解读。这些解读基本上都来自于另一本书——《圣血与圣杯》。与教会把圣杯解释为一只酒杯不同，这本书把圣杯解读为“抹大拉的马利亚”，一位在基督教史上有着重要作用的女性。这种极具阴谋论性质的解释对于普通读者来说很有冲击性，对基督教来说则引发了强烈的争议。这些争议使得作品备受关注，而越多人关注则争议越大。甚至后来《圣血与圣杯》的作者还起诉丹·布朗抄袭，本书可谓一波未平一波又起。</p> 
<p>我们且放下这些争议，单看这部小说本身。选定教会与隐修会对于“圣杯”的争夺作为故事主题是很成功的一笔，不仅因其引发的社会关注度，也因其涉及教会与隐修会两个古老组织自身的存亡。这种会给人的事业、生命等意义重大的事物带来“死亡”与“终结”的事情，是极具驱动力的。小说中被“导师”操控的主教和白化病人塞拉斯就因这种这种强大的驱动力驱使，犯下凶杀案，拉开小说的序幕。而主角兰登与女主角一方面为了保全自己性命，一方面也为了寻找到传说中的“圣杯”，而在逃亡的途中解开一个个密码，最终走向故事的终幕。</p> 
<p>整个剧情的推动自然紧凑，除了一些巧合与不可思议之外，可以说无可挑剔。小时候读这部作品，因为对教会、艺术一无所知而不甚了了，后来再读此作，方觉惊为天人。如果说此作有什么做得不好的，那当属结尾。</p> 
<p>作者通过“圣杯”与教会、隐修会、文艺复兴大师之间虚构的联系，建立了一个可以摧毁拥有世界上最多信徒之一的宗教的惊天大阴谋。由于是虚构的，圣杯当然不可能存在，所以故事的最后必然是大团圆结局，这样的命题作文如何写得出彩是一个挑战。假如作者不再处理圣杯的下落和真相揭露与否的问题，而是让整个故事在大魔王倒下那一刻结束，或许会是一部起伏跌宕，余音绕梁的佳作，但是作者却不得不填好这个自己挖出来的大坑。于是在最终幕大决战之后，作者又花费了不小的篇幅，解释圣杯的下落，以及让所有的干戈化成玉帛。而恰恰是这里处理得过于柔弱，与前文的情节形成对比，给本作留下遗憾。</p> 
<p>丹·布朗这两部作品，不仅在主题上直接怀疑耶稣基督的神性而引发争议，还由于他在扉页上声明本书所写的地点和人事物都是真实可靠的这句话，遭到许多人质疑。对我来说，读小说就读小说吧，我本人尚未有宗教信仰（无宗教信仰不是无神论，无神论本身也是一种信仰），所以宗教争论我可以置身事外。对我来说，阅读最重要的是收获乐趣，我只是觉得读这本小说很有趣，这就已经足够了。</p> 
<h3>参考资料</h3> 
<p>本期书名：天使与魔鬼<br /> 作者：丹·布朗（Dan Brown）<br /> 出版社：人民文学出版社; 第1版 (2013年12月1日)<br /> ASIN: B01D1HJ8TW<br /> 版本: Kindle电子书</p> 
<ul> 
 <li><a href="https://zh.wikipedia.org/wiki/%E9%81%94%E6%96%87%E8%A5%BF%E5%AF%86%E7%A2%BC">達文西密碼 - 维基百科，自由的百科全书</a></li> 
 <li><a href="https://zh.wikipedia.org/wiki/%E5%9C%A3%E6%9D%AF">圣杯 - 维基百科，自由的百科全书</a></li> 
 <li><a href="https://en.wikipedia.org/wiki/The_Holy_Blood_and_the_Holy_Grail">The Holy Blood and the Holy Grail - Wikipedia</a></li> 
</ul> 
<h3>相关阅读</h3> 
<ul> 
 <li><a href="https://justinyan.me/post/3118">每周读书 #136 科学与宗教是对立的？——丹·布朗《天使与魔鬼》 | 枫言枫语</a></li> 
 <li><a href="http://justinyan.me/post/2762">每周读书 #116 天才辈出的时代——《剑桥艺术史：文艺复兴》</a></li> 
</ul> 
<p>2017.03.05/下午<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #136 Dan Brown &#x2014; &#x300A;&#x5929;&#x4F7F;&#x4E0E;&#x9B54;&#x9B3C;&#x300B;</title>
        <link>https://justinyan.eth.limo/6D6CB0B2-7F0F-4767-8F60-57F777D13A57/</link>
        <guid>https://justinyan.eth.limo/6D6CB0B2-7F0F-4767-8F60-57F777D13A57/</guid>
        <pubDate>Thu, 23 Feb 2017 13:59:42 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/03/136_tianshiyumogui.jpg" alt="每周读书 #136 科学与宗教是对立的？——丹·布朗《天使与魔鬼》" /></p> 
<p>在碎石铺就的道路上兜兜转转，左一个巴洛克时期的四河喷泉，右一座古罗马时期的万神殿。这里是意大利首都罗马，一座间距现代与古典的城市，这里既有古罗马时期气势恢宏的建筑，又有欧洲巅峰时期留下的诸多艺术品。贝尔尼尼、米开朗基罗、拉斐尔等艺术大师在这里留下了多少让后世敬仰的手笔。且不说文艺复兴之璀璨，也不提古罗马废墟之壮美，这里还有一个在人类文明中地位举足轻重的城堡。一个全世界领土面积最小，却是全球六分之一人口的信仰中心的国度，天主教教皇的住所——梵蒂冈。</p> 
<p>梵蒂冈与罗马之间的恩怨纠葛贯穿整个基督教历史，时至今日，梵蒂冈城国依然是一个十分神秘的地方。梵蒂冈对公众开放的地方只有博物馆、西斯廷礼拜堂以及圣彼得大教堂与广场。梵蒂冈博物馆是世界上最伟大的博物馆之一，毫不夸张地说，博物馆里随便捡一块地砖，放在许多博物馆里都是镇馆之宝。而西斯廷礼拜堂更有米开朗基罗在壁画艺术上的最高代表作：天顶的《创世纪》和祭坛后墙上的《最终审判》（详见<a href="https://justinyan.me/post/2762">每周读书 #116 天才辈出的时代——《剑桥艺术史：文艺复兴》</a>）。在游客如云的罗马与梵蒂冈，有太多值得叙述的故事，太多唾手可得的古迹，以及太多外人无从知晓的秘密。</p> 
<p>假使在这个天地尽是圣物，俯拾皆是故事的地方，释放一个精心设计的阴谋，动则让整个基督教世界为之震荡，将是多么惊心动魄！<strong>本周登场的小说《天使与魔鬼》，便选择了罗马与梵蒂冈城作为故事的主战场。此书想来读者们都有耳闻，作者丹·布朗（Dan Brown）便是写出《达芬奇密码》而火遍全球的那位。</strong></p> 
<p>小说发表于 2000 年，2003 年作家发表了《达芬奇密码》。后者让作家名声大噪，此后以符号学教授兰登为主角的续作纷纷发表，几部作品套路相近，都是通过解析历史上有名的大师作品，再串起一些鲜为人知的故事构成一个大阴谋，主要特色都在密码的设计上。这里我们且按下不表，今天我们只谈《天使与魔鬼》。</p> 
<p>科学与宗教是解答人类终极问题的两种不同形式。然而历史上几乎所有宗教都经历过宗教迫害，早期科学家由于提出与教会不同的观点而遭到迫害的例子屡见不鲜。时至今日，宇宙是有大爆炸起源的，还是由上帝“要有光，于是就有了光”开始的，依然是人类的未解之谜。在接受科技进步的现代社会里，似乎总有一种科学与宗教对立的印象，仿佛宗教即落后，科学即进步。</p> 
<p>《天使与魔鬼》一作以科学、宗教的对立作为主要矛盾，贯穿整个小说。这本是一个意义深刻的话题，如果探索得足够深入，解答得足够巧妙，是可以让这部作品的深度加分不少。然而这个相对艰深的话题也带来另一个问题：<strong>没有足够背景知识的读者较难代入到小说当中。</strong>我猜这是小说不如《达芬奇密码》流行的主要原因。首先要对这个主题有充分的了解，读者至少要简单了解基督教的教义，了解基督教的历史故事与现代基督教会的结构和运作机制，除此之外，最好额外了解书中涉及的建筑、雕塑与绘画的背景知识。尽管作者在书中也做了不少背景知识的补充，但是如果没有了解过贝尔尼尼最具争议的一件雕塑品《Ecstasy of Saint Teresa》背后的故事，则在小说发展到这件道具上场的时候，其感染力要逊色不少。同理，万神殿（Pantheon）的名气比它看似简单朴实的外观要大得多，如果不了解过这个曾是世界上最大的无支撑穹顶的建造工艺之难度，光是身处其中也很难感受到它的魅力。所以作家在罗马与梵蒂冈城中精心设计的生死角逐，在了解背景的读者眼中甚是过瘾，但在一无所知的读者看来，可能仅仅是一个普通的场景，其效果难免大打折扣。</p> 
<p>小说的结构是经典的三幕剧形式，符号学家兰登偶然地被欧核中心（CERN）的人带到瑞士实验中心，要他协助追查一宗凶杀案，由此引出一个尚未公开的威力极大的实验品。由这个实验品的消失让主角卷入一场不可思议的阴谋之中，从而进入第二幕。</p> 
<p>第一幕里作家写得非常好，情节紧凑，层层递进，推动自然。几个主要人物随着故事的展开逐一登场，三两笔就把人物的主要性格表现得活灵活现。在人物的对话中，简要地点到了科学与信仰之间的矛盾，以及科学家希望探索科学最终回归信仰的愿望。这期间由于出了人命，“凶手是谁”的悬念动力十足，所以推进到第二幕流畅自然。</p> 
<p>对我来说，<strong>唯一的问题可能在于“光照派”这个反派的选定</strong>。这个组织在西方世界里也许颇有名气，但我阅读本书的时候对此一无所知。而又由于“光照派”的设定是要“毁灭梵蒂冈”，做得出这种事情的，一般来说需要积累足够的仇恨，或者有什么特别的驱动力。而在第一幕中作者并未提及这个强劲的驱动力，所以使得这里的合理性不足。相比之下，《达芬奇密码》的峋山隐修会虽然我也未曾听说，但是比起几个世纪念念不忘要毁掉天主教这件事情，长年保守一个秘密显然要更容易接受得多。</p> 
<p>第二幕开始，男女主角被带到梵蒂冈，如前文所述，这个城国开放的地方并不多，而且守卫森严。所以进入梵蒂冈最秘密的地方的冒险，就成为一个非常精彩的看点。作者作为一个基督徒，对教诲颇为熟悉，再加上通晓内情的朋友相助，这段冒险写得真实而奇幻，是值得称赞的部分。</p> 
<p>这一段也是小说的主体，需要铺陈足够的内容，也需要在最后把故事扭转导向最后的大决战。<strong>作家在这里采用了一个比较传统的手法：利用土、气、水、火四个元素分别展开一个小情节</strong>。四段情节足以让故事丰满起来，但是如果安排好四个情节，让各自之间跌宕起伏，最后还要想个办法把故事推向大决战，是个挺严峻的挑战。</p> 
<p>这部分作家并没有处理得很好。第二幕的开端是教皇已死，教廷需要重选教皇而四个候选主教不见了。这里的四个主教的死就对应着上述四个元素，然而在我看来却乏善可陈。虽然主角很努力要赶在凶手之前破译科学祭坛（凶案地点）的密码，但是除了第一个科学祭坛的处理之外，其他的都平平无奇。最后作家通过让杀手把女主角抓走，而兰登又早对女主角动情这个设定，让两人合力把凶手除掉，进入最后大决战。</p> 
<p>首先，操控角色的情感来解释重大故事转折这种写法，一般是不得已而为之的，是作家觉得没什么更加巧妙的解释时才用的。所以这段处理在我看来，属于下乘。另外四个科学祭坛之间没能写出匠心独运的特色，也是比较可惜，看到第三第四个的时候就难免有点感觉重复，有种“为什么大结局还不来”，“啊还要再等两个”的感觉。最后两个业余的文弱之士把一个职业杀手给干掉了也是匪夷所思。</p> 
<p>最后第三幕交给已故的教皇身边的内侍主导。这一部分又是耶稣显圣又是大爆炸又是跳伞的，场面十分火爆，简直让人有一种好莱坞大片既视感。好莱坞大片的大场面固然精彩，却常常以极不合理的形式出现。尽管作者为了让诸多故事的变更更具合理性，早在小说的前半部分就埋下了许多伏笔，比如兰登对女主角动心的小细节，比如教皇内侍年轻的时候曾服过兵役（所以可能会开飞机，会跳伞？）之类。</p> 
<p>但是，即便如此，你让一个带着降落伞的人在大爆炸空气乱流的情况下还能自由操控落到哪里也就算了，居然一个文科教授（虽然作者老说他游永很厉害）在没有降落伞又不会轻功（郭靖通过人肉降落伞攻打花剌子模时带的人可都是轻功高手）的情况下安然无恙地摔在宽度仅需几分钟步行的台伯河里我真是难以接受。</p> 
<p>总而言之故事以一种匪夷所思的发展走完了最后的大决战。尽管不合理之处颇多，也需要读者付出额外理解的背景知识，但是在圣彼得大教堂地底深处仅有教皇和极少数几个红衣主教才能获准进入的圣彼得之墓午夜狂奔，在足有两个足球场大的圣彼得广场布置无数群众仰望从火光中安然脱身的神迹，在罗马城内最著名的几座建筑之间来回角逐，这些事情本来就是超乎想象的。</p> 
<p>小说最大的魅力在于给予读者一种不同的体验，这种体验可以是情感的，可以是想象的。站在圣天使堡的顶端吹着寒冷的夜风，圣彼得大教堂在远方亮起了昏黄的灯光。这座教堂曾由米开朗基罗、拉斐尔和贝尔尼尼先后主持设计，这些历史故事只存在于人的脑海里，然而当你看见这些经历过岁月涤荡而留下的东西时，就仿佛穿越了时空，曾经的故事汇成难以言说的感动。小说通过想象架设了一道桥梁，如果无法亲自站在这些艺术品面前，那就通过想象与这些曾见证过无数天才的地方，神游一会。</p> 
<p><em>17.02.23/凌晨</em><br /> <em>于自居</em></p> 
<hr /> 
<p>“每周读书”从本周起恢复周更。为了减轻写作压力，以后每周的内容不一定是介绍一本新书，也许会是与读书相关的话题。回想过去一段日子，没有持续更新既是“懒”在作祟，亦是焦虑在考验。</p> 
<p>直到我站在西斯廷礼拜堂仰头看着天顶的《创世纪》，看着祭台后的《最终审判》，彼时除了沉浸于米开朗基罗的摄人心魄的作品之外，也想到了对读书的感激。倘若不是读了艺术史，想必我站在《Ecstasy of Saint Teresa》面前也看不见其背后的故事。在那个烛火昏暗的小教堂里，这座雕像只会被我当做一个普通的装饰品匆匆路过。</p> 
<p>过去“每周读书”既驱使我个人持续阅读，更使我回顾总结所读作品且分享给各位读者。回顾断更的日子，焦虑并没有给我带来什么，而读书却让我知道各种千奇百怪的事情，在某个不经意的时刻带来惊喜。</p> 
<p>希望各位读者也能在读书的过程中，找到属于自己的快乐。</p> 
<hr /> 
<h3>参考资料</h3> 
<p>本期书名：天使与魔鬼<br /> 作者：丹·布朗（Dan Brown）<br /> 出版社：人民文学出版社; 第1版 (2013年12月1日)<br /> ASIN: B01D1HJ8T2<br /> 版本: Kindle电子书</p> 
<h3>相关阅读</h3> 
<ul> 
 <li><a href="https://justinyan.me/post/2762">每周读书 #116 天才辈出的时代——《剑桥艺术史：文艺复兴》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5C1D;&#x8BD5;&#x8DF3;&#x51FA;&#x7126;&#x8651;&#xFF0C;&#x6062;&#x590D;&#x6BCF;&#x5468;&#x8BFB;&#x4E66;</title>
        <link>https://justinyan.eth.limo/07727720-AD6C-4CC7-A259-BBC2890636E1/</link>
        <guid>https://justinyan.eth.limo/07727720-AD6C-4CC7-A259-BBC2890636E1/</guid>
        <pubDate>Sun, 19 Feb 2017 16:04:42 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2017/02/跳出焦虑.jpg" alt="尝试跳出焦虑，恢复每周读书" /></p> 
<p>美好的星期天，广州仿佛从寒冷的冬天一下跃进到舒服的初夏：阳光、咖啡、午后的书，真令人舒坦。从罗马 Tazza Doro (金杯咖啡馆)带回来的 La Regina Dei Caffe 略带点酸涩。意大利文艺复兴之旅带回来的，不只是咖啡、摩卡壶和旅行日记，还带来了抗击焦虑的决心：</p> 
<blockquote>
 <p> 我要跳出焦虑，恢复“每周读书”更新。 </p>
</blockquote> 
<p>2010 年底，还在上学的我想给博客一个主题内容，于是开始以书籍推荐为主的乱涂乱写。这期间能做到周更的也只有在微信公众号发表文章的 2015 年。2016 年发生了极好的事情，也经历了些极忙碌的项目。回顾去年，没有“坚持”写文章的根本原因，还是焦虑。</p> 
<p>一直以来我都觉得需要“坚持”的事情都是痛苦的，读书写作于我一直是一种乐趣，所以称不上坚持。我觉得这段时间没有更新了是因为自己“懒”。这诚然不假，然而真实的原因恐怕还是“焦虑”。</p> 
<p>我一直认为忙与没时间都不是一种合理的解释。每人每天只有 24 小时与有限的精力。把时间精力都花在一件事情就做不了另一件事情，这才是没有更新的根本问题。</p> 
<p>在不更新期间，我都把时间和精力放在了另一些事情上。2016 年首次断更时我在美国出差，其后是 Just Focus for Mac 获得比我自己预期要好的效果，于是写作的时间都用来维护更新这个 App 了，再后来年底遇到了一个棘手的紧急项目，不仅工作日，周末与中秋国庆都需要加班来完成。</p> 
<p>现在回顾这些事情，我可以很轻松地说：“把一部分精力拿出来就好啦。”然而当我身陷其中的时候，就是一叶障目的状态，根本看不见别的事情。</p> 
<p>最近我从文艺复兴的核心腹地回来，旅途中体会到欣赏艺术真品的喜悦，同时也对去年阅读了整套《剑桥艺术史》这件事情心怀感激。于是我开始回顾去年，想在 2017 年才开始的时候，下决心恢复读书写作的状态。</p> 
<ol> 
 <li>跳出思维圈子 <p>当我沉浸在一件事情当中的时候，我看不见周遭的环境，短期内的全力投入看似很重要，但如果能从更加高远的视角去重新审视这件事情，很可能会得出“不值一提”的结论。然而实际生活中我们只能看到细节，不一定能察觉出当前所遇之事的全貌。要防止自己掉进自己的陷阱，只有对每一件事情都仔细审视。</p> <p>为此，我开始写日记。</p> </li> 
 <li> <p>找到适合自己的 GTD 方法</p> <p>GTD 理论的基础是：大脑会因为信息过载忘掉一些事情，但是潜意识会记住所以产生“有些重要的事情我还没做”的焦虑。</p> <p>于是 GTD 鼓励大家把大脑里所有的东西，事无巨细地捕捉下来，再一件件消灭。其短期目标不在于完成所有事情，而在于让大脑放松，减轻甚至消除焦虑感。</p> <p>然而我自己接触和尝试 GTD 多年，也入手过全套 OmniFocus，却一直没能找到适合自己的方法。最近通过使用最原始的便利贴方式，把工作和生活分开，慢慢找到自己的 GTD 节奏了。</p> </li> 
 <li> <p>去尝试吧！</p> <p>执行力。想到了就去做吧！从本周开始，恢复“每周读书”的周更。但是为了写好“每周读书”，我不仅要读完一本书，还得在读完第一遍之后，根据划线部分做好笔记，然后才开始写作。这样的过程其实破费时间与精力。所以为了减轻负担，以后“每周读书”不一定是每周一本书，而是每周一篇文章。这样既可以让“每周读书”以后涉及的话题更广，也可以让今年的起点变得低一点，更容易接受也更容易持续下去。</p> </li> 
</ol> 
<p>2017 年刚刚开始，我希望这一年里既能收获到许多的美好与喜悦，也能少一些焦虑与不安。</p> 
<p>17.02.19/下午<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x4F55;&#x8BA9; Cocoa App &#x652F;&#x6301; AppleScript</title>
        <link>https://justinyan.eth.limo/1259ACDA-01D5-4BEB-AAB9-624174B1B77B/</link>
        <guid>https://justinyan.eth.limo/1259ACDA-01D5-4BEB-AAB9-624174B1B77B/</guid>
        <pubDate>Thu, 29 Dec 2016 12:44:16 +0800</pubDate>
        
        
        <description><![CDATA[
            <h2>一、AppleScript</h2> 
<p>AppleScript 是 Apple 自己开发和维护的一种脚本语言，最早在 Mac OS 7 时代（1993 年）就已经支持了。熟悉 macOS 系统的读者应该都听说过，它相当于应用对外的接口，其他人可以通过 AppleScript 调用这些接口，实现对应用的编程。</p> 
<p>所有的 Cocoa Apps 都自带一套支持基础能力的 Standard Suite，支持诸如启动、退出、保存等标准动作。所以即使开发者不做任何事，你也可以通过 AppleScript 实现绝大多数 Apps 的启动和关闭操作，这对于高级用户来说简直是居家旅行必备利器。</p> 
<h2>二、让一个标准的 Cocoa App 支持 AppleScript</h2> 
<h3>1. Alfred Workflow</h3> 
<p>Alfred.app 是 AppleScript 应用场景的一个极好的例子。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/12/EBF4DCAC0A2607B49743E6A9A34357F9.jpg" alt="" /></p> 
<p>上图这个 Workflow 就是基于 Evernote 提供的 AppleScript 接口实现的。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/12/EF5023786167DE2265E993465A4BFD6D.png" alt="2016-12-28 at 17.38.png" /><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/12/E5B807385BF7D375BACEFA2CBF6AA03D.png" alt="2016-12-28 at 17.39.png" /></p> 
<p>使用 Script Editor.app 的 Dictionary 功能可以看到 Evernote.app 提供的所有接口。</p> 
<h3>2. Info.plist 声明支持</h3> 
<p>要让你的 App 支持 Apple Script，首先要在 Info.plist 文件中声明 NSAppleScriptEnabled (Scriptable) 为 YES. 同时声明 .sdef 文件的名字，这里以 <a href="https://getjustfocus.com/">Just Focus for Mac</a> 为例：</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/12/4E096B7DC421518F97FEA0FA66A98DCF.jpg" alt="" /></p> 
<h3>3. 编写 sdef (Scripting Definition File) 文件</h3> 
<p>.sdef 文件是支持 AppleScript 中最重要的一步，它向 macOS 系统声明了这个 App 支持的 AppleScript 接口，其形式是一个 XML，结构如下：</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/12/A7804B4FB755E0FF82C61353353C8A69.jpg" alt="" /></p> 
<p>文件头两行是固定不变的，第一行声明 XML 版本，第二行指定对应这个 XML 的 DTD。这个我们可以看做是早期标记语言比如 SGML 的遗留产物，DTD 是规定了当前文档的合法结构。DTD 相关的内容可以自行参阅<a href="https://en.wikipedia.org/wiki/Document_type_definition">维基百科</a>和 <a href="http://www.w3schools.com/xml/xml_dtd_intro.asp">DTDW3schools</a>。这里我们只要 copy and paste 就好了。</p> 
<p>[code lang=sh]<br /> &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br /> &lt;!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd"&gt;<br /> [/code]</p> 
<p>接着是 XML 的主要内容，根节点为 dictionary，可以有多个 suite，每个 suite 支持多个 command</p> 
<p>[code lang=sh]<br /> &lt;dictionary title="JustFocus Scripting Terminology"&gt;<br /> &lt;suite name="Standard Suite" code="????" description="Common classes and commands for all applications."&gt;</p> 
<p> &lt;!-- …省略一万字… --&gt;</p> 
<p> &lt;command name="close" code="coreclos" description="Close a window."&gt;<br /> &lt;cocoa class="NSCloseCommand"/&gt;<br /> &lt;direct-parameter type="specifier" description="the window(s) to close."/&gt;<br /> &lt;/command&gt;</p> 
<p> &lt;/suite&gt;</p> 
<p> &lt;suite name="JustFocus Suite" code="JTFC" description="JustFocus Application Suite"&gt;<br /> &lt;cocoa name="JustFocus"/&gt;</p> 
<p> &lt;command name="start pomodoro" code="pomodoro" description="Start a Pomodoro timer."&gt;<br /> &lt;cocoa class="JustFocus.JFPomodoroCommand"/&gt;<br /> &lt;/command&gt;</p> 
<p> &lt;command name="short break" code="cmdshtbr" description="Take a short break."&gt;<br /> &lt;cocoa class="JustFocus.JFShortBreakCommand"/&gt;<br /> &lt;/command&gt;</p> 
<p> &lt;command name="long break" code="cmdlngbr" description="Take a long break."&gt;<br /> &lt;cocoa class="JustFocus.JFLongBreakCommand"/&gt;<br /> &lt;/command&gt;</p> 
<p> &lt;command name="stop" code="cmdstopt" description="Stop current timer."&gt;<br /> &lt;cocoa class="JustFocus.JFStopTimerCommand"/&gt;<br /> &lt;/command&gt;</p> 
<p> &lt;/suite&gt;</p> 
<p>&lt;/dictionary&gt;<br /> [/code]</p> 
<p>Standard Suite 是可以省略的，JustFocus Suite 才是我们要关注的。这里定义了几个 command，可以开始蕃茄钟，开始休息和停止计时。这几个命令都不带参数。</p> 
<h3>4. 实现 NSScriptCommand</h3> 
<p>接下来就可以使用 AppleScript 愉快地调用我们定义好的接口了：</p> 
<p>[code lang=sh]<br /> tell application "JustFocus"<br /> launch<br /> start pomodoro<br /> end tell<br /> [/code]</p> 
<p>launch 是自带的实现我们就不管了，我们以 start pomodoro 为例：</p> 
<p>[code lang=sh]<br /> &lt;command name="start pomodoro" code="pomodoro" description="Start a Pomodoro timer."&gt;<br /> &lt;cocoa class="JustFocus.JFPomodoroCommand"/&gt;<br /> &lt;/command&gt;<br /> [/code]</p> 
<p>JustFocus 是工程名，JFPomodoroCommand 是对应的处理的类名，这个类继承自 NSScriptCommand。这里有两点需要特别留意：</p> 
<ol> 
 <li>对于 ObjC 的实现 class 只要写 JFPomodoroCommand 就好了，但是 Swift 的实现需要写完整 Project.CommandClass，可以自己在 Swift 类里打印确认一下。</li> 
</ol> 
<p>[code lang=sh]<br /> class func getClassName() {<br /> return NSStringFromClass(self)<br /> }<br /> [/code]</p> 
<ol> 
 <li>sdef 文件里一个 command 的 code 属性，<strong>必须是 8 个字母组成</strong>。如果不是 8 个字符，在使用 Script Editor 调试的时候会报如下错误：</li> 
</ol> 
<blockquote>
 <p> The application has a corrupted dictionary. </p>
</blockquote> 
<p>这点可把我害惨了，虽说我是没仔细看文档就上手了，但是这个奇怪的设定本身就是个坑T^T。详情可以参考文档：<a href="https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ScriptableCocoaApplications/SApps_creating_sdef/SAppsCreateSdef.html">Preparing a Scripting Definition File</a>，截取重点如下：</p> 
<blockquote>
 <p> Note: The code for a command totals eight characters in length. Although the code can in fact be an arbitrary value, the first half (aevt in this case) has historically represented the suite (the Standard suite, formerly called the Core suite) and the second half (quit) the command. See Code Constants Used in Scriptability Information for more information on using codes. </p>
</blockquote> 
<p>接下来实现 JFPomodoroCommand 这个类就万事大吉了：</p> 
<p>[code lang=sh]<br /> // MARK: - Pomodoro<br /> class JFPomodoroCommand: NSScriptCommand {<br /> override func performDefaultImplementation() -&gt; Any? {<br /> // Do something…</p> 
<p> return nil<br /> }<br /> }<br /> [/code]</p> 
<p>这样当有人用 AppleScript 调用了 start pomodoro 方法的时候，这个类的 performDefaultImplementation() 方法就会被调用，在这里实现你的逻辑就行了。</p> 
<h3>5. 带参数的命令</h3> 
<p>[code lang=sh]<br /> &lt;command name="test parameter" code="jftestpa" description="Test parameter API"&gt;<br /> &lt;cocoa class="JustFocus.JFTestParameterCommand"/&gt;<br /> &lt;direct-parameter type="text" optional="yes" description="Just for test"/&gt;<br /> &lt;/command&gt;<br /> [/code]</p> 
<p>这个命令带有一个 direct-parameter，类型为 text，可选。AppleScript 的用法如下：</p> 
<p>[code lang=sh]<br /> tell application "JustFocus"<br /> test parameter "test blablabla"<br /> end tell<br /> [/code]</p> 
<p>[code lang=sh]<br /> // MARK: - Test<br /> class JFTestParameterCommand: JFASCommand {<br /> override func performDefaultImplementation() -&gt; Any? {<br /> JF.log.debug("\(directParameter)")</p> 
<p> return nil<br /> }<br /> }<br /> [/code]</p> 
<p>参数通过 directParameter 获取，这里打印的结果如下：</p> 
<blockquote>
 <p> Optional(test blablabla) </p>
</blockquote> 
<h2>三、尾声</h2> 
<p>Cocoa App 支持 AppleScript 的整个过程还是比较直观简洁的，就分为定义部分和实现部分，就像写 ObjC 的头文件 .h 和实现文件 .m 一样。</p> 
<p>但是，XML 的定义写法罗里吧嗦简直想死，本文仅仅介绍了最基础的 command 和 direct-parameter，除此之外，你还可以使用 class, parameter, property, enumeration 等多种特性，但是写起来繁琐得很。</p> 
<p>有兴趣的读者可以参考官方文档：<a href="https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ScriptableCocoaApplications/SApps_creating_sdef/SAppsCreateSdef.html">Preparing a Scripting Definition File</a>。最近在实现 Just Focus 的 AppleScript 支持，踩了一点坑，想起其实去年就已经在另外一个 App 做过一样的事情，但是总记不住，相关的教程也不多，故写此文以作记录。希望能对需要的人有一点帮助。</p> 
<p>16.12.28/夜</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #135 &#x73A9;&#x72FC;&#x4EBA;&#x6740;&#x7684;&#x5389;&#x5BB3;&#x4EBA;&#x66F4;&#x5BB9;&#x6613;&#x8BF4;&#x670D;&#x522B;&#x4EBA;&#xFF1F;&#x2014;&#x2014;&#x300A;&#x5F71;&#x54CD;&#x529B;&#x300B;</title>
        <link>https://justinyan.eth.limo/6C0B0E7B-83BC-4139-8265-B874999D1ABF/</link>
        <guid>https://justinyan.eth.limo/6C0B0E7B-83BC-4139-8265-B874999D1ABF/</guid>
        <pubDate>Wed, 21 Dec 2016 17:11:04 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/12/135_influence.png" alt="每周读书 135 影响力" /></p> 
<h2>一、狼人杀玩得好的人更容易说服别人</h2> 
<p>前段时间“狼人杀”这个游戏由于综艺节目“饭局的诱惑”而火爆起来，虽然这类“天黑请闭眼”的游戏已经有多年的历史，但是在节目里玩这样的游戏而且玩得这么好的，还是头一回见。我是玩狼人玩得特别水的人，参加这种游戏最大的乐趣就是躲在一边看其他“高玩”互撕，这些“高玩”们的发言往往都具有很强的说服力，能够让其他没有身份的平民玩家把票投向他们想要的结果。</p> 
<p>“饭局的诱惑”里玩这游戏的有两拨人，一拨是每期节目邀请的嘉宾，负责产出新内容；另一拨是节目组的固定演出，负责保证节目质量。节目的老板及主持人马东在此之前曾做过另一档娱乐辩论节目——“奇葩说”。这个节目专门挑选辩论队出身的，或很能瞎扯淡的人组队进行辩论，除了辩题比较奇葩以外，辩手讲的话也极具娱乐兴味。这样的节目既保留了传统辩论的激烈竞争，又大幅提升了节目的娱乐性。这拨人后来被马东拉到新节目里玩“狼人杀”，充当“高玩”的角色。</p> 
<p>辩论与狼人杀有什么关系呢？答案是：这些人都具有很强的影响力（Influence），即说服力。在“奇葩说”里辩论队的胜负由现场观众投票决定，而狼人杀里每回合都需要投票杀死一名玩家，两者的规则是一样的：想要赢得这场游戏，就得获得更多的票数。<strong>参与者做的事情是一样的：我要让别人信任我，说服别人按我想要的结果投票。</strong>有时候可能狼人阵营会为了自保互撕，甚至投死另一个狼人队友，从发言和投票的瞬时来看，这个狼人是在出卖队友，但是从长远来看，他需要自保以免暴露更多狼人。这个“狼人互撕”的过程，是以自损换取信任，本周要介绍的<strong>罗伯特·西奥迪尼（Robert Beno Cialdini ）所著的《影响力（Influence）》一书</strong>中就讲到了这个小技巧。</p> 
<p>我的工作平时需要和多个不同的团队合作，不同的团队会有各自不同的目标，让所有人都具有完全相同的目标是不可能，所以如何让多个团队在同一方向上的分量最大化是合作的关键。而具体到执行阶段，如何与人打交道，让大家尽量向同一方向靠拢，就涉及到“说服力”了。</p> 
<p>“同一方向”听上去很美好，理想情况下大家应该往中间方向靠拢，但现实是每个团队都希望其他人往自己的方向靠拢，这就有可能导致多个团队沟通的时候相持不下。想要说服别人，就需要掌握足够的“说服力”。这里我单指“说服力”，它是一种能力，既不是证据，也不是道理。为什么呢？玩过“狼人杀”的人都知道，当你是一个平民的时候，你听着“高玩”在那里滔滔不绝地长篇大论，他们往往有着缜密的逻辑，甚至洞悉了你的心理，而你由于掌握的信息极少，只能通过这些人的发言去判断他们是想主导言论破坏好人的狼，还是真正已经掌握了部分信息的神。往往一回合下来，你被某个人彻底说服了，觉得他是值得信任的，于是投出了他想要的那一票，然后你就输了。<strong>“狼人杀”这个游戏告诉我们，“被说服了”并不代表说服你的人就有道理，他说的不一定就是对的，他只是“说服”了你而已。</strong></p> 
<p>这种”说服力“本身是中立的，像一把刀，其产生的结果是好是坏完全取决于用刀的人。我在工作中常常无可避免地会碰到使用”说服力“的场合，很好奇为什么有些人在说服别人的时候可以思维敏捷口若悬河。这时候我读到《影响力》这本书，在阅读的过程中我发现，说服力强的或多或少都会用到这本书提及的技巧。在现实生活中，运用这些”技巧“的地方无处不在，电视广告，超市促销，商品限量版等等，”说服力专家“运用这些技巧让自己赚得盆满钵满。我并不想学习这些技巧用在不好的事情上，<strong>我只是想知道别人是怎么说服我的，了解这些技巧有助于分辨出别人是真心的还是在使用技巧，我不会再轻易上当了。</strong></p> 
<h2>二、影响力技巧的原理</h2> 
<p>现代社会纷繁复杂，技术的进步远超我们大脑的进化速度，我们的处理能力早跟不上爆炸式的信息增长。为了应对这种可怕的信息浪潮，<strong>我们需要捷径，需要模式，需要“自动反应”能力</strong>。比如说“一分钱一分货”，对价格不敏感的人群可以直接通过价格来筛选商品，一般来说卖的贵的的东西价值也会更高。比如说”相信权威“，我们穷极一生的努力也许可以成为某一个领域的专家，但我们不可能成为每一个领域的专家，所以当我们遇到细分领域的问题时，我们会选择相信这个领域的权威。类似这样的“捷径”还有很多，我们不仅需要这些捷径，而且通常情况下这些捷径都工作得很好，大部分情况下我们遵循这些规则并没有错。</p> 
<p>但是，在那些深谙个中奥妙，擅长操纵这些捷径的人手里，我们所依赖的“自动反应”就变成了他们手里的魔法棒。只要这些高手设定好了圈套，我们就会往主动往里钻。</p> 
<h2>三、我们知道的不知道的伎俩</h2> 
<p>《影响力》一书共分八个章节，除去最后一章之外，介绍了七类不同的技巧，每一章末尾都告诉读者如何防御这些技巧，其中举的例子最多的，就是销售。毕竟销售人员的工作就是“说服你买下他推销的商品”，小到超市里的新品上市，大到一辆车一套房子。甚至 Elon Musk 在创办 Tesla 早期也凭借过人的才能说服政府拿下一笔巨额的绿色能源补助。同属 <em>Paypal Mafia</em> 的 Peter Thiel 在 <em>Zero to One</em> 一书里就曾说过 Elon Musk 是个出色的销售(<a href="">每周读书 #67 Paypal 黑手党——《Zero to One》</a>(http://justinyan.me/post/1868))。《影响力》里提到的技巧很多，这里举一个房产中介的例子：</p> 
<p><strong>“对比原理”</strong>：中介带你去看房的时候，先给你看很破很破的房子，这房子本来就不是他们真心要租给你的，而是给你看一下降低你的心理预期：你这个预算能租到的就是这种质量的房子了。等你拒绝租这个房子之后，再带你去看他们真正准备好的房子，这时候一经对比你就会觉得这房子比之前的要好太多。</p> 
<p><strong>利用“公开承诺”漏洞</strong>，原理是人一旦公开做出承诺，就会产生来自内部和外部的压力，要求自己去遵守自己的诺言。我们从小到大的教育都告诉我们，做人要言行一致，这样的人受人尊敬，言而无信的人会遭人唾弃。所以一旦我们被销售哄骗说出了“承诺”，我们的内心就会产生压力，最终被迫遵守自己的诺言。比如说很多中介会先刻意提高房租，这样他给你的房租和房东的内心底线就留有一定的浮动空间，当你看中了一套房子之后，他就会假装帮你去和房东谈价格。这种时候他一般会逼问你：“如果我能把价格谈下来你是不是就一定租？你要表示一定租我才会去谈。”一旦你说了个“好”这字你就上钩了，因为中介早就知道这个价格肯定可以谈下来的，他要的就是你的承诺，一旦你公开承诺了这单生意就成功了一半。</p> 
<p>这个例子其实不止运用了“公开承诺”原理，还运用了<strong>“互惠原理”</strong>，即礼尚往来。我们的教育也是从小灌输这样的思想，别人帮了我们的忙，我们就得帮回去。这对于整个人类社会来说也是有好处的，正因为每个人之间互相帮忙，人类社会才有今天这般强大。这个原理是我们熟知的，但是有一点我们常常忽略：“人有送礼的义务，<strong>接受的义务</strong>，更有偿还的义务。”（Marchel Mauss）<strong>我们有接受的义务。</strong>上学的时候比较擅长社交的同学有时会买点吃的东西回宿舍，分享给其他人。这种时候如果你不拿就是“不给面子”。这一点我一直不清楚，拒绝了几次之后有人告诉我这样做不太好，我才恍然大悟。所以，当别人想强加给我们恩惠的时候，我们是很难拒绝的。中介在打电话讲价的时候会刻意让你觉得“我们是同一条战线的”，他为你争取价格是在帮助你。这种时候你的内心会产生负担，中介正在帮助你，你接受了他的帮助，所以也有义务帮助他拿下这笔生意。</p> 
<h2>四、尾声</h2> 
<p>以上这些伎俩也许很多人都遇到过，但如果只知其然不知其所以然的话，它们大可以演变成其他更先进的手法继续活动，你无法保证你的知识库可以更新得比他们快。<strong>《影响力》这本书一个很大的不足就是，没有写出一种令人信服的学术感。</strong>他举了很多例子，但是多数都没有标清楚来源、实验的总体、如何抽样等等细节。这就很容易让这本书出现一种浓浓的鸡汤味。我个人是抱着“想了解那些人怎么说服我”的想法来读这本书的，所以读书的过程中我可以和曾经遇到的人和事来一一印证，如果我觉得这些事例可以匹配到我过往的经验，我就觉得他是可信的。基于此，《影响力》一书虽然鸡汤味浓，对我来说却是一锅有益的鸡汤，最起码他能够把我们生活中遇到的案例总结提炼，抽象成一个可供讨论的原理，一旦我们了解其根本的原理，那么基于该原理所产生的各种新的骗术变种，也就不攻自破了。</p> 
<p>鉴于此，我认为即使是对于早已熟知销售伎俩的人来说，《影响力》一书还是有阅读与学习的价值。以前我在深圳呆过两年，常常在街头、火车站之类的地方遇到拍肩膀要钱吃饭的人，他们靠的都是博取你的同情，借助“互惠原理”来骗钱。大概几个月前我遇到了这种骗局的升级版：以前经常都是一个中年妇女搭配一个年轻女人，假装可怜的母女的样子，现在升级为一对夫妇模样的人推着一辆婴儿车，要你给小孩买吃的。先给你造成内心压力：带小孩不容易，已经可怜到小孩子都没饭吃了。如果你拒绝，则再施加外部压力，大声说出“连给小孩买吃的都不给”这样的话，让你觉得在公共场所你的形象受到了损失。</p> 
<p>本文里中介和拍肩膀要钱的例子是我自己的经历，我各上当过一次，至今记忆尤深。即使没有这些骗子，我们的世界也已十分复杂，我们需要这些捷径来帮助我们应对这个可怕的世界，但是这些人，利用了我们的捷径，利用了我们的弱点。在《影响力》的结尾，作者呼吁读者要反抗这些人，要营造一个洁净的环境。我觉得这些人是杀之不尽的，行骗欺诈固然是极端的手段，现在充斥各种媒体的广告也是一种看似柔和实则也在利用这些原理的手段。既然杀之不尽，我们最起码要学会保护自己，读《影响力》不是为了学习这些伎俩用在别人身上，更重要的是，通过识破别人的手段，好好保护自己。</p> 
<p><em>16.12.20/下午</em><br /> <em>于 T.i.T</em></p> 
<h2>五、参考资料</h2> 
<p>本期书名: 影响力（经典版）<br /> 出版社: 北京联合出版公司; 第1版 (2016年9月1日)<br /> ASIN: B01M326O11</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #134 &#x53EF;&#x60DC;&#x4E86;&#x4E00;&#x4E2A;&#x6709;&#x610F;&#x601D;&#x7684;&#x8BBE;&#x5B9A;&#x2014;&#x2014;&#x300A;&#x5077;&#x5F71;&#x5B50;&#x7684;&#x4EBA;&#x300B;</title>
        <link>https://justinyan.eth.limo/E005F64B-D0EA-4FA9-B4D2-259D3E7B9D0A/</link>
        <guid>https://justinyan.eth.limo/E005F64B-D0EA-4FA9-B4D2-259D3E7B9D0A/</guid>
        <pubDate>Mon, 31 Oct 2016 19:27:59 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/10/the-shadow-thief-cover.jpg" alt="每周读书 #134 可惜了一个有意思的设定——《偷影子的人》" /></p> 
<p>逃离办公室里弥漫的烟味，在屋外寻一张长凳坐下，阳光打在柔软的叶子上，疏落的影子摇摇晃晃，风从身后拥来，广州入秋了。这样一个美好的午间，本可好好地读一本书，写几个字，可惜路人两指间升起的二手烟，似鬼魅，像影子，怎样都甩不掉。假如我的影子有自己的意识，它会和这些影子打起来吗？</p> 
<p>来自<strong>法国的畅销小说作家马克·李维（Marc Levy）在《偷影子的人》</strong>一作中给出了一个有意思的设定。每个人在社交关系中都会给自己一张经过修饰的脸，真实的心情太原始，不可轻易示人。假如每个人的影子都有独立人格，相互之间可以交谈，影子间的对话将是世界上最大的八卦库。假如正好有一个人，只有他可以和影子讲话，可以和其他人交换影子，这就相当于他拥有了世界上最大的情报局，强大到足以改变世界。</p> 
<p>《偷影子的人》的设定很有意思，是支撑我读完整本书的动力。小说其实就是讲故事，好的小说就是讲出有趣的故事。小说的设定是骨架，小说的故事情节和人物描写是血肉。小说的设定可以是有理有据的，也可以是天马行空的。比如一个聪慧过人的日本高中生在路上捡到一本写上名字就可以杀人的笔记本，这个故事设定足够荒诞，却支撑起读者的幻想，驱动了两大阵营的激烈搏杀（《死亡笔记》）。我觉得《偷影子的人》至少在设定上很有意思，作家在第一章开始揭示主角的这个特别能力，当时我的精神为之一振，感觉拥有这能力之后大有可为啊。往中二方向走，主角可以自立一个比 CIA 还厉害的情报局，在暗处统治全世界；往犯罪方向走，主角也可以利用这个能力打击罪犯，然后遇到实力相当的对手，双方展开殊死搏斗，不到最后一刻不知道对手是谁；往悬疑方向走，主角可以去追查这个能力来自哪里，即使用老掉牙的方式指出主角是有精神问题的人，或者是最新的科技构筑了一个虚拟世界，也算是个不错的发展。</p> 
<p>但是，马克·李维偏偏是一个情感文学作家，用出版社的广告来说，《偷影子的人》是一部“温情治愈”小说。这样一来，整个故事的感情基调就不可能往超人方向发展了，主角的超能力成了用来窥视亲人朋友内心的工具，在各个人物遇到挫折的时候起到力挽狂澜的作用。基本上这个放在漫画里可以统治世界的能力，在这部小说里，就是“关键时刻用一下让情节起伏一下”的工具。</p> 
<p>在情感类文学中，作家手里最好用也最容易用错的工具就是人物的情感。人是善变的，不可预测的，什么时候需要转折一下情节了，需要进入下一幕了，需要大结局了，就对某个重要人物安排个重要事件，这样就能影响主角的情感，从而推动剧情的发展。由于人心的不可捉摸，作者即使对情感变化不作任何解释，读者也能勉强接受。正因为“可以不作任何解释”，所以“容易犯错”。事实上没有人可以接受毫无来由的变化，简单如中学生作文，我们可以用旁白的形式铺叙“她不爱他”的原因。而技巧熟稔的作家，像村上春树，则会直接把人物内心的苦闷表达出来：我不告诉你主角现在到底是爱还是不爱，而是把主角的苦痛、心酸、孤独，通过无言的沉默，通过黑夜里窗帘漾出的幽影，通过另一个人物的苦痛来告诉你。这样读者更能站在人物的视角，去体会人物的欢喜与忧愁，这样的作品，才能给予读者丰富的情感体验。如果再加上灵魂设定之深刻，就能出一部不错的作品。</p> 
<p>可惜的是《偷影子的人》在这方面做得非常糟糕。</p> 
<p>这部小说的人物描写，除了主角和朋友吕克还算比较立体，其他人物简直像粗线条白描，空洞得一触即碎。不过相比起情节转折之生硬，人物的欠缺还算小事。上文说作家赋予了主角无人可敌的超能力，但其实只用在了几个关键的故事转折。比如主角的童年时期，通过偷取马格的影子而获得了足够的勇气，能够和恶霸马格竞选班长，这个点用得非常好。然而明显弱势的主角要在这场竞争中胜出，就必须有奇迹出现，所以作家安排了一场“非常巧合”的火灾。</p> 
<p>讲故事的过程会遇到很多“巧合”，有了这些“巧合”故事才会生动有趣。但是好的小说家会把“巧合”讲得“自然”。很可惜作家在未做任何铺垫的情况下就引发了这场火灾，我读到这里一时愕然。</p> 
<p>再比如，故事的最后，主角找到了当年在海边遇到的又聋又哑的女孩，最后两人幸福地在一起。这条线本来大有可为，童年时期遇到的聋哑女孩，现在不可思议地成长为一个杰出的音乐家！这转折，多么动人啊！可惜，作家解释这个转折是这样的：因为主角喜欢大提琴，聋哑女孩就去学大提琴。她本来就不聋哑，只是因为内心的封闭才导致聋哑。遇到主角之后就打开了心扉。甚至这个解释是通过配角之口来讲述的，而且直接就说是打开了心扉就不聋哑了。我的天！作家是有多懒，就不能编排一个故事来促使这件事情的发生吗？</p> 
<p>然后主角第一次去找初恋的时候，他自己有女朋友的，而且见到这个女孩的时候，她是挽着另一个帅哥的手的。然后，主角就和自己的女朋友分手去找初恋，跟踪她回家之后就在她家门口放风筝（他们童年时在海边做的事情）。女孩二话不说就从家里跑出来，用风筝画了“我想你”。这结局之尴尬，我很有一种是不是出版社编辑催稿然后作家匆忙收尾的感觉。相比起这本书的名气，相比起这本书的设定，我是很失望的。</p> 
<hr /> 
<p>Hi! 大家好！我又回来了。</p> 
<p>最近我把我的时间用在了好多其他的事情上，非常感谢在没有更新的期间发来消息问候的读者朋友们。</p> 
<p>读书是一件挺主观的事情，同一本书一定有人喜欢有人不喜欢。《偷影子的人》是马克·李维还算畅销的作品，只是我个人不喜欢而已。如果你有什么想法，欢迎随时通过评论、消息等方式告诉我。</p> 
<p>希望所有读者都能在“每周读书”中找到属于自己的快乐。XD</p> 
<p>16.10.31/中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #133 &#x72AF;&#x7F6A;&#x7F8E;&#x5267;&#x5F0F;&#x7684;&#x7D27;&#x51D1;&#x548C;&#x53CD;&#x8F6C;&#x2014;&#x2014;&#x300A;&#x96EA;&#x4EBA;&#x300B;</title>
        <link>https://justinyan.eth.limo/AA6A3A5A-A9A1-46A2-A8C1-69FA48D57CCA/</link>
        <guid>https://justinyan.eth.limo/AA6A3A5A-A9A1-46A2-A8C1-69FA48D57CCA/</guid>
        <pubDate>Wed, 21 Sep 2016 00:43:19 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/09/Snømannen-mp.png" alt="每周读书 #133 犯罪美剧式的紧凑和反转——《雪人》" /></p> 
<p>挪威有一个叫 Di Derre 的乐队，从 94 年发行第一张专辑至今仍在活动，截至 2014 年 3 月，卖出的唱片超过 300 万张。他们唱的都是挪威语，我完全听不懂，令我颇感兴趣的是这个乐队的主唱兼吉他手——Jo Nesbø。1997 年，这个会唱歌写歌的乐队主唱出版了他的第一部小说 The Bat (Flaggermusmannen)，从此在乐队活动的同时也开始了他的作家生涯。如今他已出版超过 20 本书，作品被翻译为 40 多种语言在全球发行，是挪威著名的畅销小说家，称他人生赢家真是名副其实。</p> 
<p>《蝙蝠》（The Bat）是哈利（Harry Hole）系列的第一部，本周我们介绍尤·奈斯博（Jo Nesbø）于 2007 出版的，<strong>哈利系列的第七部——《雪人》（Snømannen）。</strong></p> 
<p>Harry Hole 系列是作家最广为人知的犯罪小说系列，主角 Harry 是一名挪威警探，聪明过人，我行我素，办案行事从不拘泥传统，是个很有意思的角色。东野圭吾笔下的名侦探虽然也有些行事古怪，但总的来说都是正派人物，有着典型的日本人的含蓄和内敛。阿加莎笔下的波罗神探给我的印象更近于卡通形象，不太像现实生活的人。而 Harry 警官则完全不同于这两种形象，他酗酒，却深深懊悔自己酗酒，所以又十分自制，一旦面临压力内心就处于欲望与克己的斗争之中。他也爱女人，与即将和他人结婚的前女友保持暧昧与床第关系，他既是正义的执法者，也为违背道德的刺激感所吸引。而且查起案子脚踏实地，并不是那种安安静静一句话不说却能突然指出真凶的帅气的角色，相比于东野圭吾的加贺警官或神探伽利略，他简直是窝在街角垃圾堆里的烂警察，但却因为 Harry 身上的颓唐，给了这部小说一种奇怪的魅力——这里面的人物都不是高高在上完美无缺的神，反而人人有在世人看来龌鹾肮脏的一面。</p> 
<p>小说从一个多年前的冬天开始，母亲莎拉开车带着自己的儿子去和男人私会，把儿子留在车上，这是莎拉和那个男人的最后一次私会。在两人行事的过程中男人一脸恐惧地说看见窗外有什么人，就此兴味索然。莎拉到窗边一看不过是一个雪人，回到车上的时候，儿子脸色苍白的说他看到了什么。莎拉感到一股寒意，她发动汽车，儿子被背后颤抖着说：</p> 
<blockquote>
 <p> “我们都得死。” </p>
</blockquote> 
<p>《雪人》在国内分为“犯罪小说”，其实在英文书分类里面还是属于 Thriller，即惊险/恐怖小说，有部分情节读来还是有些寒意。书名“雪人”连环杀人案件的凶手的代号，因为凶手寄了一封信给 Harry:</p> 
<blockquote>
 <p> 初雪即将降临，届时他将再现。冰雪融化之时，他将带走另一人。你应自问：“谁堆了雪人？谁会堆雪人？谁生下了睦里？因为雪人并不知道。” </p>
</blockquote> 
<p>“雪人”是个手段十分残忍的变态连环杀手，案件的追踪过程与一般的侦探推理小说类似，都是朝着“谁是凶手”这个目标去，不到最后一幕不揭露真相。这种写法的小说，亮点基本在层层反转的设计上，反转的层数越多，程度越大，就越能吸引读者。而我们的挪威作家在这部小说中，把这点发挥得淋漓尽致，不仅追查过程长，涉案人员多，犯案次数和犯案程度也在提升，嫌疑人随着调查的深入和剧情的转折一次又一次地变换，但总体篇幅却只有 400 页左右，所以情节非常紧凑，高潮迭起，最后的两波转折非常精彩，虽然有一个埋下的点没有展开（就是一个像扫地僧一样的人物），但是我读完已经觉得十分满足了，作者可能想把那个点留到下一部再写吧。这让我想起 James Scott Bell 说的：</p> 
<blockquote>
 <p> 好的开头可以让读者看完这本书，而好的结尾能让读者买下一本书。 </p>
</blockquote> 
<p>小说的转场非常独特，颇有优秀美剧的风范，每个章节的结尾多用长镜头或者特写，给读者意犹未尽之感，这点还算普通，神奇的是在同一章甚至同一小节内的转场，居然跟电影镜头直接切换一样，毫无预警地就在下一个段落换了人物，换了场景，换了上下文。一开始读起来非常不适应，电影是视觉作品，换个场景换个人物也就是切个画面的事情，一般来说如果上个镜头在家里 A 和 B 在对话，下个镜头切换到餐厅，人物是 C 和 D，那么应该会预留个一两秒的镜头描述一下餐厅的环境和人物的状态，然后再让人物开始说话，正式进入这一幕。但是作家非常任性地，毫无准备地，就直接让另一个毫不相干的人物开始了一段完全不同故事的对话……</p> 
<p>这也许是 Kindle 中文译版的问题，Google Books 的 <em>The Snowman</em> 显示英文版在这种情况下会加多一个空行，让读者有思想准备。但是即便是中文 Kindle 版这样的排法，我读了几章之后也还是慢慢适应了，只是每次切换心里都有点别扭。</p> 
<p>整本书读下来感觉非常舒服，悬念一直保留到最后，Harry 查案的启动和收尾都写的不错，最后揭露真相的时候还能呼应开头，把作为引子的那个多年前的恐怖故事补完，非常不错。再加上挪威这个地处北欧的国家，作者的写作风格对于中国读者来说颇有异国风情，书中提到许多挪威的本土风情，甚至还能偶尔写出像村上春树那样的哲思段落，给这部本来就不错的悬疑小说加了不少分。对于这部小说，我个人觉得应该给出五星推荐。</p> 
<p>16.09.20/夜<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #132 Fiona Barton &#x2014;&#x300A;&#x53EA;&#x6709;&#x5979;&#x77E5;&#x9053;&#x300B;(The Widow)</title>
        <link>https://justinyan.eth.limo/E07BDCC2-B1CF-4E91-9A10-980EEC3D81CC/</link>
        <guid>https://justinyan.eth.limo/E07BDCC2-B1CF-4E91-9A10-980EEC3D81CC/</guid>
        <pubDate>Wed, 07 Sep 2016 00:55:16 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/09/the-widow.png" alt="每周读书 #132 只有她知道——The Widow" /></p> 
<p>曾任英国每日邮报（Daily Mail）作家、每日电讯报（Daily Telegraph）编辑的 Fiona Barton 在今年（2016年） 2 月份发表了她的处女作——<em>The Widow</em>。前几天（9月），广西科学技术出版社刚发布了简体中文版——<strong>《只有她知道》</strong>。</p> 
<p>有幸在出版之初读到这部小说，故事的开头埋下的悬念还不错，足以吸引我读到谜题解开的地方，但是总体来说，相当一般，甚至我在想是否要写到“每周读书”里面——毕竟之前说过得是自己看过感觉还不错的书才会介绍给“每周读书”的读者——后来想想《一个人的朝圣》和 <em>The Girl on the Train</em> 我都有好好介绍了，这本书介绍一下也无可厚非，毕竟我之所以想读这本书也是因为万恶的小编拿这本书与 <em>Gone Girl</em> 和 <em>The Girl on the Train</em> 作比较。</p> 
<blockquote>
 <p> For fans of Gone Girl and The Girl on the Train, an electrifying thriller that will take you into the dark spaces that exist between a husband and a wife. </p>
</blockquote> 
<p>《消失的爱人》（Gone Girl）的名气有多大自不必提，同名电影比小说的知名度还要更高，这部小说全靠精巧的故事情节取胜，前段时间很火的日剧《我的恐怖妻子》也借鉴了小说的设计。<em>The Girl on the Train</em> 的情节设定相形之下逊色不少，但是原版文笔很不错，我个人十分受用这种漂亮的文字。那么 Fiona 的这部 <em>The Widow</em> 呢？</p> 
<p>Finoa 本身是报社的作家与编辑，写作是她的基本功，除了中文译作之后我还在 Google Books 上读了前几章，语言风格简洁直接，清晰易读，修饰主要靠句子之间的承接转折，没有刻意雕饰辞藻，所以读起来会有点白开水。</p> 
<p>小说的标题是 The Widow，直译为寡妇，也就是故事主角——简（Jean）。故事从一件女童失踪案开始，警方经过多方侦查怀疑上了简的丈夫格兰（Glen），经过媒体的曝光，一时间简的家庭成为英国社会的焦点，二人以往平静的生活掀起了巨大的波澜，但是在事情的真相尚未大白之前，格兰因为车祸死去了。格兰的死因是什么？自杀还是他杀？格兰到底有没有拐走女童贝拉（Bella）？下落不明贝拉此时是生是死？简了解她的丈夫吗？她知道格兰犯罪了还是没有？她一直维护格兰，替他开脱，是真心这样认为的还是另有隐情？</p> 
<p>小说开头就引入了这许多的悬念，每一个悬念展开都能成为一部不错的悬疑侦探小说，然而这部作品不是。这部作品与 <em>Gone Girl, The Girl on the Train</em> 均归为 Thriller，也即恐怖小说，既不言情，也不推理，虽然悬疑是 Thriller 的常用手段，但不是这类小说的核心。于是，一个很好的悬疑推理话题在这部作品里面并没有被发挥出来。和东野圭吾、阿加莎、柯南·道尔笔下的神探相比，这部小说里的警察简直智障，看他们办案的愚蠢程度简直要掀桌。这点非常影响故事的展开，局促不堪，缓慢无趣，看着捉急。反过来看情感描写方面，<em>The Girl on the Train</em> 虽然情节展开也很差，但是好歹写到女主角内心的寂寞与苦闷的时候还是非常细腻的，加上优雅的文笔，读起来内心波澜，很受感染。而同样采用多人物视角切换（POV Shifting）的 <em>The Widow</em>，在最能表达情感的寡妇女主角这个人物身上，却受限于要赋予人物一个很强的原因——替丈夫隐瞒实情——而抑制了大量真实的情感描写，结果这个人物简直就是一张白纸，在大部分切换到简的章节里，我都很难集中精力读下去，这个 POV 用的可是相当失败。</p> 
<p>论罗曼史太过牵强，论推理根本谈不上，这部作品还有什么可看的呢？首先这部作品涉及儿童色情，这个罪行在西方世界是非常严重的（国内连色情都是违法的，都没到区分儿童色情的地步），涉及这个话题的作品会带来比较高的关注度，<em>The Girl on the Train</em> 也涉及了家庭暴力、酗酒和毒品等黑暗话题，话题越严重越容易吸引眼球。其次作者身为几大报社的作家与编辑，在报社工作的经验可以给这部小说加分。故事一开场就是一个来自 Daily Mail 的报社编辑凯特（Kate）敲开简的家门，此时简已经习惯了每天躲避来自媒体的穷追不舍无孔不入，但是凯特却有她的一套方法可以让简敞开心扉，以朋友的心态与凯特对话。凯特与查办此案的负责警官私下里亦是好友，可以说是凯特这个人物在推动剧情的发展——作者还是习惯通过记者的视角来看事情呀！毕竟在扉页中作者就自述是因为多年的记者经验让她开始思考：如果一个对丈夫深信不疑的女人，一心维护丈夫，替丈夫辩护，但是忽然发现这个与自己生活多年的人其实自己一点也不了解，他可能就是一个恶魔，那时她会作何感想。</p> 
<p>这部作品我在豆瓣给了三星（还行）的评分，其实跟出版社拿它和名作相比有关系，这部作品明明在各方面都比不上 Gone Girl，拿来作比反而给它大大减分了。所以结论是：不要轻易相信小编的评价，还是自己挑的书比较靠谱。?</p> 
<p>16.09.07/夜<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #131 &#x6751;&#x4E0A;&#x6625;&#x6811; &#x2014; &#x300A;&#x632A;&#x5A01;&#x7684;&#x68EE;&#x6797;&#x300B;</title>
        <link>https://justinyan.eth.limo/ECEE6582-EE53-49B4-8078-7AC14AE9960C/</link>
        <guid>https://justinyan.eth.limo/ECEE6582-EE53-49B4-8078-7AC14AE9960C/</guid>
        <pubDate>Thu, 25 Aug 2016 13:41:16 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/08/norwegian-wood-mp.png" alt="每周读书 #131 Norwegian Wood —— 挪威的森林" /></p> 
<p>这是第二次读村上春树的《挪威的森林》了，较之多年前的浮躁，此番心境平和了不少，便被村上清雅忧郁的辞藻吸引，像雪夜木屋，在炉火摇曳的影子里听平淡而深刻的故事，被冬天包围，被喑哑的话语包围，被迷茫与虚空包围。</p> 
<p>书名来自 The Beatles 1965 年发行的专辑 Rubber Soul 里的歌曲：<em>Norwegian Wood</em>，是女主角直子最喜欢的一首歌。根据英文歌词的本意，Norwegian Wood 应当是投于壁炉中的木料，不过在日本，错译的“ノルウェーの森”却深入人心，所以村上在这部作品中就沿用了这个好听的名字。</p> 
<p>村上春树生于 1949 年，他在东京早稻田大学求学时正逢 60 年代日本学生运动的高潮，当时东京多所大学被迫停课，直到后来学校引入机动队才告结束。这期间村上遇到了同堂上课的高桥阳子，两人迅速堕入爱河并不顾家里反对结为夫妻。婚后夫妻二人在唱片店和咖啡店打工维生，后来又开了自己的咖啡店，白天卖咖啡晚上则作爵士酒吧。此时的村上还没开始写作，直到 29 岁那年，村上在棒球场看球赛，突然想写小说，于是球赛结束后当即买了纸笔开始写作。这部处女作即《且听风吟》，作品投稿给《群像》杂志，一举拿下 1979 年群像新人奖，从此开始了村上的作家之路。1986 年村上与妻子旅居欧洲，并写下《挪威的森林》，此作成为日本现代文学销量最高的作品之一，是名副其实的代表作。而村上曾经在早稻田戏剧系的经历，在唱片店打工的体验，以及自己开爵士酒吧的见闻，则成了小说非常重要的创作源泉。</p> 
<p>故事设定在 1969 年东京，那是东京学运高涨的一年，也是 The Beatles 的代表专辑之一 <em>Abbey Road</em> 发行的一年。在东京某大学戏剧系求学的渡边彻（男主角）偶遇高中同学直子（女主角），她是自己高中时唯一的好友木月的女朋友，三人常常形影不离。</p> 
<p>后来木月自杀了。</p> 
<p>在自家车库里，用胶布把车窗全部密封起来，胶管接上排气口，发动引擎。也不知道他花了多长时间让自己死去。木月的死对于渡边是一场沉重的打击。</p> 
<blockquote>
 <p> 死并非生的对立面，而作为生的一部分永存。</p> 
 <p> 死不是生的对立面，死本来就已经包含在“我”这一存在之中，我们无论怎样力图忘掉他都是徒劳这点便是实证。因为在 17 岁那年 5 月的一个夜晚俘获了木月的死，同时也俘获了我。 </p>
</blockquote> 
<p>大学时渡边逃离家乡到东京里，有一部分原因就是木月的死，而他现在遇到了同样来到东京的直子，从直子漠然盯视自己的眼睛里看到了仿佛同样的逃离。他与直子开始在东京街头漫无目的地散步，他开始喜欢直子了。如果说木月的死是一个未解的谜，那么直子与木月拥相同的谜面。村上自始自终没有解释清楚木月与直子的心理疾病到底是什么，不过不重要，只要知道直子被那突如其来的悲伤袭击时蜷缩的柔弱的哭泣，只要知道直子被那无法言说的苦痛缠住时迷茫的无助的孤寂，我们就站到了渡边的视角，从渡边的眼睛里看到了一个泪眼婆娑的直子，令人怜惜。</p> 
<p>直子 20 岁生日的晚上，出乎意料地多话，一个人喋喋不休地讲了 4 个小时，然后渡边一句“时候差不多了，电车该停了。”引爆了直子的悲伤。渡边与直子睡了。</p> 
<p>性在这部作品中占有非常重要的地位，但是村上在此强调的性却与众不同。渡边淳一笔下的性与爱是交融的，是互相转换的，是与道德冲突的。三岛由纪夫笔下的性是超脱的，是仪式的，是借以表达特殊意义的。但是村上在此强调的性，是与爱若即若离的，是可以轻松谈论的，是超出男女爱情的。</p> 
<p>第二天直子消失了。</p> 
<p>渡边与一个无论身家才貌都令人生羡的同学永泽成为朋友，直子消失之后，渡边就与永泽流连东京酒吧，与不同的女人睡觉。渡边觉得固然与女人睡觉是愉悦的，却十分厌恶这种毫无感情的连接。然后他遇到了与直子安静抑郁的性格截然相反的绿子，这位在大学一同上课的，极为生动活泼的女子。</p> 
<p>不同于一般的青春小说，这不是你爱我我不爱你我爱她她又不爱我，村上极少直接说明爱与恨，而是让人物做出符合他们性格特征的事情来，等读者自己揣摩。村上的情景通感与人物对话都写得非常精彩，比如渡边与直子偶然再见，然后开始漫无目的散步时，两人都没有讲话：</p> 
<blockquote>
 <p> 只有踩上路面硕大的法国梧桐落叶的时候，才发出“嚓嚓”的干燥声响，而一听到这种声响，我便可怜起直子来。她所希求的并非我的臂，而是某人的臂，她所希求的并非我的体温，而是某人的体温。而我只能是我，于是我觉得有些愧疚。 </p>
</blockquote> 
<p>渡边不是在可怜他自己，而是“觉得有些愧疚”。读《挪威的森林》我常想起日式的朴素的设计，是一种渗透生活的理念，看日本街头的男男女女大体一致的装束，上班族的西装，年轻人的便服，身上不超过三种颜色，看着多舒服！村上的文笔也是如此，把汹涌的情感裹藏在平平淡淡的文字下。2010 年陈英雄导演的同名电影，把全片的高潮安排在最后面：渡边知道直子自杀的讯息之后，面朝大海，展信而阅，波涛的怒吼，巨浪的拍打，以及背景乐的烘托，情感在那一刻达到高潮。而在村上的文字里，即使是全书的顶点，他也没有用多么沉重的字眼去形容这一切。只是把渡边再度徒步旅行，蜷缩在海边的事实写了出来。读一遍或者有些平淡，过后再想，就像电影里的画面，奔腾了起来。</p> 
<p>这是我感受到的村上文字的魅力，收放自如，挥洒有度。</p> 
<p>然而这部作品也不是全无缺点。小说开头写学校宿舍生活，升国旗，敢死队的每日早操，虽然是后续剧情的伏笔，却嫌冗长，敢死队突然之间好没来由的消失也缺乏解释。而占据了相当篇幅的，直子在疗养院的室友玲子自身的故事，固然有趣，却似乎有点偏离主旨。至于主旨，由于相当的朦胧，我能看到死于生的哲思，能看到渡边与直子与绿子的爱情，能看到不同的性在不同的情境下有不同的意味，却从来没有明确的结论。</p> 
<p>像读一首小诗。</p> 
<p>要什么明确的结论？</p> 
<p>16.08.23/中午<br /> 于 T.i.T</p> 
<p><strong>P.S.</strong></p> 
<p>封面为 2010 年陈英雄执导的同名电影《挪威的森林》，较原著有不少改编，根据电影的节奏删掉了许多剧情，仅保留了渡边、直子与绿子三人这条主线。但是电影效果很不错，甚有村上风味，有兴趣的读者可以看看。</p> 
<p><strong>P.P.S. The Beatles —— Norwegian Wood Lyrics</strong></p> 
<blockquote>
 <p> I once had a girl, or should I say, she once had me...<br /> She showed me her room, isn't it good, norwegian wood?</p> 
 <p> She asked me to stay and she told me to sit anywhere,<br /> So I looked around and I noticed there wasn't a chair.</p> 
 <p> I sat on a rug, biding my time, drinking her wine<br /> We talked until two and then she said, "It's time for bed"</p> 
 <p> She told me she worked in the morning and started to laugh.<br /> I told her I didn't and crawled off to sleep in the bath</p> 
 <p> And when I awoke, I was alone, this bird had flown<br /> So I lit a fire, isn't it good, norwegian wood. </p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #130 &#x90DD;&#x666F;&#x82B3; &#x2014; &#x300A;&#x5317;&#x4EAC;&#x6298;&#x53E0;&#x300B;(Folding Beijing)</title>
        <link>https://justinyan.eth.limo/A092A2CF-A26B-48A1-A5CE-0D0C3D569502/</link>
        <guid>https://justinyan.eth.limo/A092A2CF-A26B-48A1-A5CE-0D0C3D569502/</guid>
        <pubDate>Sun, 21 Aug 2016 17:04:42 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/08/foldingbeijing.png" alt="每周读书 130 不太硬的雨果奖作品——Folding Beijing《北京折叠》" /></p> 
<p>几个小时前，2016 年科幻小说最高奖之一的雨果奖（Hugo Awards）在美国密苏里州的堪萨斯城（Kansas City, Missouri）颁奖，来自中国的女作家郝景芳的作品《北京折叠》获得最佳中短篇小说奖。我读书一般不怎么迷某一个类目，今天新闻出来后我才第一次知道这位作家以及这部作品。于是我读了《北京折叠》的中文原版，以及由 Ken Liu (@kyliu99)翻译的英文版——<em>Folding Beijing</em>。</p> 
<p>这是部中短篇作品，读完并不需要多长时间。两部读下来我更喜欢英文版的语言，也许是地域差异，读中文版的过程总让我产生“这种语言表达有点奇怪”的想法。好的语言是内容的美丽外衣，像美貌的女子，仅美貌本身一足以让人产生好感。Ken Liu 的译本字字句句忠于原著，读起来像读大多数英文小说一样流畅。中英文版暂时都没有实体书出版，中文版在<a href=""><strong>豆瓣阅读</strong></a>可以免费阅读，英文版在<a href="http://uncannymagazine.com/article/folding-beijing-2/"><strong>uncannymagazine.com</strong></a>可以找到。</p> 
<p>《北京折叠》首先是一部科幻小说，背景设定在未来的北京，这座巨大的城市被改造成可翻转折叠的世界，分三层：</p> 
<blockquote>
 <p> 折叠城市分三层空间。大地的一面是第一空间，五百万人口，生存时间是从清晨六点到第二天清晨六点。空间休眠，大地翻转。翻转后的另一面是第二空间和第三空间。第二空间生活着两千五百万人口，从次日清晨六点到夜晚十点，第三空间生活着五千万人，从十点到清晨六点，然后回到第一空间。时间经过了精心规划和最优分配，小心翼翼隔离，五百万人享用二十四小时，七千五百万人享用另外二十四小时。 </p>
</blockquote> 
<p>很明显对应的是上中下层社会，主角是 48 岁的老刀（Lao Dao），第三空间 128 万垃圾处理工的其中之一，他生在第三空间，每天在垃圾站做垃圾分类回收的工作，在可预见的未来里也将一直垃圾处理。老刀所处的世界是不管再怎么努力也无法向上流动的世界，他抚养了一个捡来的小孩，小孩就要上幼稚园了，老刀需要钱。于是他开始铤而走险，帮助第二空间的人向第一空间带东西。这是一项危险的工作，很可能面临坐牢的风险，但成功了以后赚到的钱却是实实在在的。于是整个小说就通过老刀从第三空间到第二、第一空间的冒险，向我们描述了一个十分符合中国现实的“科幻故事”。</p> 
<p>总体来说小说节奏紧凑，故事流畅，通过最底层的“老刀逛大观园”式的冒险对中国现实进行了一番辛辣的讽刺。<strong>但如果要以“硬科幻”的标准来看的话，这部小说与真正的“硬科幻”还存在很大的差距</strong>，这座未来的北京，除了城市可以翻转之外，并没有太多可以体现“未来”的东西，对于硬科幻迷来说，想象过于匮乏。</p> 
<p><strong>从写作技巧来说，我始终觉得作者的写法有点奇怪</strong>，比如说老刀刚找到彭蠡，想知道怎么从第三空间偷渡到第一空间的时候，几句话里视角在老刀和彭蠡两个人物跳来跳去，读者容易出戏：</p> 
<blockquote>
 <p> 彭蠡愣住了，已经有十年没人跟他提过第一空间的事，他的牙签捏在手里，不知不觉掰断了。他有片刻没回答，见老刀实在有点急了，才拽着他向楼里走。“回我家说，”彭蠡说，“要走也从那儿走。” </p>
</blockquote> 
<p>可以看到第一句彭蠡愣住了的镜头是从彭蠡个人出发的，视角是彭蠡的，但是从“片刻没有回答”开始镜头就变成独立于两人之外的了，下一句“见老刀实在有点急了”则切换给老刀，没有一个连贯的视角与感受。再来看英文版：</p> 
<blockquote>
 <p> Peng Li was stunned. It had been ten years since anyone brought up First Space with him. He held the remnant of the toothpick in his fingers—it had broken between his teeth without his being aware of it. For some seconds, he said nothing, but then he saw the anxiety on Lao Dao’s face and dragged him toward the apartment building. “Come into my place and let’s talk. You have to start from there anyway to get to where you want to go.” </p>
</blockquote> 
<p>“见老刀实在有点急了”这一句被改写成”but then he saw the anxiety on Lao Dao’s face and dragged him toward the apartment building.”，这样就变成了彭蠡自身的视角，是从彭蠡的眼睛里看到的老刀的脸，不再是“老刀实在有点急了”，<strong>整体视角保持了统一和连续。这就是我为什么更喜欢英文版的原因。</strong>假如要根据英文版的写法，把视角连贯起来改写，那么可能是这样的：</p> 
<blockquote>
 <p> 彭蠡愣住了。十年来还是第一次有人跟他提起第一空间的事，捏在手上的牙签不知不觉被掰断了。他沉默了一阵，没有说话，直到他看到老刀脸上焦虑的神色，才一把拽过老刀，向他家里走去。“到我家里再说。“彭蠡说，”反正你就是要走也是从那儿走。” </p>
</blockquote> 
<p>语言表达是内容的外衣，表达流畅是挺重要的一环。这部小说写得最好的地方是老刀与小孩之间的深刻感情，老刀面临金钱诱惑时内心苦苦的挣扎是我最喜欢的一段。小说结尾也非常不错，老刀最后成功回到第三空间，面对邻居女孩与房东的争吵：</p> 
<blockquote>
 <p> 他忽然想让阿贝不要吵了，忘了这些细节，只是不要吵了。他想告诉她女孩子应该安安静静坐着，让裙子盖住膝盖，微微一笑露出好看的牙齿，轻声说话，那样才有人爱。可是他知道她们需要的不是这些。 </p>
</blockquote> 
<p>这种无奈与无助，读来令人心疼。最后老刀替女孩把钱交给房东，疲累地挥挥手，回自己房间了。这段既潇洒又心酸，“屌丝何苦为难屌丝呢”？其实啊，越是穷苦的人呐，就越是要为难更加穷苦的人，人在这世上都希望展示出自己的价值，为难更加穷苦的人，可以说是最残忍可也最简单的可以满足自己优越感虚荣心的途径了。</p> 
<p>16.08.21/下午<br /> 于自居</p> 
<h2>P.S.</h2> 
<p>《北京折叠》拿的是雨果奖的最佳中短篇小说，这次《三体 II》角逐的是长篇小说，两者不在一个公斤级的，不存在可比性。虽然我本身觉得《北京折叠》在质量上还不算上佳，但是能有中国作家获奖依然是件值得高兴的事情，奖项什么的，应该是有了就高兴，没了也没什么的事情吧。想想东野圭吾曾经十几年空窗无人问津，村上春树 09 年开始年年诺贝尔提名，至今没有获奖呢。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x514D;&#x8D39; Mac &#x5168;&#x5C4F;&#x4F11;&#x606F;&#x63D0;&#x9192; Just Focus &#x4E0A;&#x67B6;&#x54AF;</title>
        <link>https://justinyan.eth.limo/08A56655-0AA2-4BA0-B9DA-AB7247229651/</link>
        <guid>https://justinyan.eth.limo/08A56655-0AA2-4BA0-B9DA-AB7247229651/</guid>
        <pubDate>Thu, 11 Aug 2016 11:55:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/08/Screenshot-site.png" alt="Mac 全屏休息提醒 Just Focus" /></p> 
<p><a href="https://itunes.apple.com/us/app/just-focus/id1142151959?ls=1&amp;mt=1"><img decoding="async" loading="lazy" src="http://cdn.justinbot.com/wp-content/uploads/2016/08/MacAppStore.png" width="165" height="40" /></a></p> 
<p><em>更新: 2018 年 4 月 - <a href="https://justinyan.me/post/3226">Just Focus iOS 版发布啦 | 枫言枫语</a></em></p> 
<p>用 Swift 写过 iOS App 但是没试过 Mac App，也没试过全部 Storyboard + AutoLayout 的 UI layout 方式，所以这次就做了个小应用练练手。既然要练手就要挑对自己有用的东西来做，平时我常用番茄钟来协助专注工作，但是试了几个番茄钟应用感觉提醒不够强烈，我希望有这么几个 Features:</p> 
<ol> 
 <li><strong>全屏提醒，中断鼠标键盘事件</strong></li> 
 <li><strong>提前通知，心理有预期</strong></li> 
 <li>时间记录，方便每天回顾</li> 
</ol> 
<p>其实第一点才是最重要的，现有的 App 里面，Timeout Free 虽然可以全屏提醒，但是它在开始显示全屏界面的时候是渐变的，其实会很突兀感觉很不舒服，Pomodoro Timer 界面不错操作简单但是中断提醒不够强，我经常不知道一个 Timer 已经结束了。</p> 
<p>于是就决定：<strong>做一个符合自己需求的全屏提醒应用吧！</strong></p> 
<p>既然要做，就要学点新东西，所以我在这个 Mac 小应用里用了很多有意思的东西：</p> 
<ol> 
 <li><strong>100% Swift</strong>，包括所有的 Lib</li> 
 <li><strong>CoreData</strong> 用来记录每一个 Working Timer</li> 
 <li><strong>Storyboard + AutoLayout</strong> 布局，自虐一把，好在界面简单，用起来非常惬意</li> 
 <li><strong>一键自动化打包</strong>，方便自己测试和 App Store 外分发</li> 
</ol> 
<p>都不算新科技，但是各个点都有些可以玩的东西，回头可以整理后分享给大家。XD</p> 
<p>现在这个 App 已经在 <a href="https://itunes.apple.com/us/app/just-focus/id1142151959?ls=1&amp;mt=12">Mac App Store</a> 上架了，价格免费，欢迎大家下载使用，多提意见。:D</p> 
<p><a href="https://itunes.apple.com/us/app/just-focus/id1142151959?ls=1&amp;mt=1"><img decoding="async" loading="lazy" src="http://cdn.justinbot.com/wp-content/uploads/2016/08/MacAppStore.png" width="165" height="40" /></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #129 Paula Hawkins &#x2014; The Girl on the Train</title>
        <link>https://justinyan.eth.limo/DE3D8EE3-BD70-4828-AA9B-C8AECB1DA28F/</link>
        <guid>https://justinyan.eth.limo/DE3D8EE3-BD70-4828-AA9B-C8AECB1DA28F/</guid>
        <pubDate>Mon, 08 Aug 2016 13:03:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/08/thegirlonthetrain.png" alt="每周读书 #129 每个人都有自己的阴暗——The Girl on the Train" /></p> 
<p>在香港逛书店的时候，有两家书店把《The Girl on the Train》摆在了畅销书区显眼的位置，一开始我以为是《孤儿列车》，但是封面没见过，一想《孤儿列车》的英文名应该是《The Orphan Train》，于是对这本新的畅销书怀起兴趣来。</p> 
<blockquote>
 <p> One for sorrow, two for joy, three for a girl… Three for a girl. I’m stuck on three, I just can’t get any further. My head is thick with sounds, my mouth thick with blood. Three for a girl. I can hear the magpies — they’re laughing, mocking me, a raucous cackling. A tiding. Bad things. I can see them now, black against the sum. Not the birds, something else. Someone’s coming. Someone is speaking to me. <em>Now look. Now look what you made me do.</em> </p>
</blockquote> 
<p>揭开扉页，哀伤的文字扑面而来，疼痛仿佛夜的柔波，从四面八方向我包围，窗灯昏黄，夜色迷茫，开头不错。故事的主角是 Rachel，她本来与丈夫 Tom Watson 有过一段幸福的时光，却因为一直怀不上孩子而产生争执。Tom 日渐冷漠，Rachel 则开始酗酒，两人最终不欢而散。Tom 娶了离婚前的出轨对象 Anna，两人生了个孩子，继续住在原来的房子里享受天伦之乐。而 Rachel 却从此一蹶不振，工作也因为酗酒而被辞退，住在自己大学好友 Cathy 的房子里，穷困潦倒。Rachel 为了不让 Cathy 担心，每天早上搭乘同一班火车从郊区 Ashbury 前往伦敦市区，假装自己还在伦敦上班。他们以前的家就在火车站附近，每次经过 Blenheim Road 23 号 Rachel 总是心中一阵刺痛，她不愿去看，不想去看，不敢去看，却不得不看，看他们过往的曾经温馨的小房子里，现在却住着他爱着的不是自己的那个人，幸福一如往常。</p> 
<p>不远的地方，有另一座一模一样的房子，住着一对看上去很幸福的年轻的夫妻。每次经过火车站 Rachel 总会凝视这座房子，在她的幻想里，女主人是 Jess，男主人是 Jason，他们是 Rachel 曾经的幸福的影子，是 Rachel 幻想中的美好，每天透过车窗观察这对夫妻已经成为 Rachel 的精神支柱。酗酒、跟踪狂式的偷窥，Rachel 已经颓唐如同废人。<strong>这就是书名 The Girl on the Train 的由来，一切从车窗上每天的窥视与幻想开始，Rachel 用她的幻想弥补自己失败的人生。终于有一天，Jess 失踪了。</strong></p> 
<p>作者 Paula Hawkins 是一位来自英国的女作家，她从小在津巴布韦长大，17 岁时随父亲迁到伦敦并一直生活至今。从牛津大学毕业以后，Paula 成了泰晤士报商业版块的记者，在报社工作期间出版过一些理财建议类的书，也尝试过写浪漫小说，但都没有获得很好的反响。于是她决定尝试更黑暗，更沉重的话题。6 个月的全职写作，她在几乎断粮的情况下写完了《The Girl on the Train》，这部作品涉及酗酒、吸毒、暴力、凶杀，话题感十足。<strong>2015 年本书出版后，雄踞 The New York Times Fiction Best Sellers of 2015 榜首长达十三周，也无怪书店会把这本书放在最显眼的位置。</strong></p> 
<p>前面我们提到作者文笔优雅，文风哀伤，但这不是本书畅销的理由，黑暗沉重的话题，环环相扣的犯罪，真相在层层剖析中渐渐清晰，这才是吸引读者的地方。Rachel 幻想的 Jess 原名 Megan，在她失踪 48 小时之后事件开始登上新闻，Rachel 被警方调查，然而事发当晚 Rachel 一如既往地酗酒，对当晚的记忆一片空白。她只知道有可怕的事情发生了，但是不知道到底是什么，于是 Rachel 决定帮助她幻想的 Jason（真名是 Scott）查出真相。</p> 
<p>本书采用多人物视角切换（POV Shifting）的手法来写，所有章节都是第一人称，章节的标题为当前视角的人名与日期，好处是<strong>方便作家轻易地隐藏掉一些重要信息</strong>，给读者留下盲点，这样揭示新的线索时容易造成反转。坏处是容易令读者困惑，我一开始读的时候没有留意标题，读到一半觉得怎么好像说的是截然不同的两个人。而且也会给读者入戏带来一定的难度，毕竟你刚刚跟着 Rachel 发掘完一个可疑的线索，立刻就被切换到 Anna 的视角去了。不过读完几个章节适应了也就没什么问题了。</p> 
<p>以推理小说的角度来看，这部作品的推理成分不算多，谜题的设计也并不高明，好在伏笔埋得比较深，层层反转的感受比较强。不过作者的本意是想写精神濒临崩溃，走向人生低谷的 Rachel 如何应对人性的阴暗，强调的是精神与惊险，所以推理部分的不足可以理解。从人性的挖掘来看，每一个人物都被揭开羊皮，暴露出阴暗的一面，人物本身的故事已够足料，再加上作者极富煽情意味的文笔，给了读者一个不错的情感宣泄。</p> 
<p>总的来说这部作品还是挺适合作为闲适读物，语言流畅易读，英文版词汇量少，文法相对简单，却能制造出动人的效果。<strong>但是与它所获得的众多荣誉相比，还嫌名不副实，小说整体的故事框架比较简单，没能设计出足够精巧的谜题，也没有足够惊艳的结尾，甚至可说虎头蛇尾，匆促收笔。</strong>故事的格局也比较狭窄，人物不多就那么几个，地点也就是伦敦市区和虚构的郊区两点一线，火车上有个配角我本来期待可以在后期发展成杀手锏结果并没有发挥什么作用，非常失望。</p> 
<p>好话坏话都说完了，这部作品算在推荐阅读之列，但是请不要抱着“这是雄踞畅销书榜首的大作”这样的想法来读就好。英文版我读的是 Riverhead Books 出版的版本，ASIN 为 B00L9B7IKE，亚马逊中国与美国均有出售。另外，这部小说改编的电影即将在今年十月份上映，倒是可以期待一下。</p> 
<p>16.08.06/夜<br /> 于自居</p> 
<p>相关阅读：<br /> - <a href="http://justinyan.me/post/2341">每周读书 #93 Christina Baker Kline——《孤儿列车》</a><br /> - <a href="http://justinyan.me/post/2234">每周读书 #86 Gabrielle Zevin ——《岛上书店》</a><br /> - <a href="http://justinyan.me/post/1933">每周读书 #71 Andy Weir——《The Martian》）</a><br /> - <a href="http://justinyan.me/post/1327">每周读书 #42 S. J. Watson ——《Before I go to sleep》</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x8A00;&#x67AB;&#x8BED;&#xB7;&#x6BCF;&#x5468;&#x8BFB;&#x4E66; &#x4E66;&#x5355; 121&#x671F; - 128&#x671F;</title>
        <link>https://justinyan.eth.limo/6D97ACBB-4D19-411C-BF1A-F5BDF02EDFFD/</link>
        <guid>https://justinyan.eth.limo/6D97ACBB-4D19-411C-BF1A-F5BDF02EDFFD/</guid>
        <pubDate>Thu, 04 Aug 2016 10:04:12 +0800</pubDate>
        
        
        <description><![CDATA[
            <h1>枫言枫语·每周读书 书单 121期 - 128期</h1> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/08/121-128.jpg" alt="枫言枫语·每周读书 书单 121期 - 128期" /></p> 
<p>Hi 大家好，又到了每八期读书一次的书单时间了，有朋友问我为什么最近更新这么慢，我面不改色心不跳地回答了一句：</p> 
<blockquote>
 <p> 懒? </p>
</blockquote> 
<p>我在<a href="http://justinyan.me/post/2540">《如何做到每周读一本书？》</a>里曾提到<strong>“没有时间”</strong>只是一个谁都能用的廉价借口，所以我不会用没有时间作为偷懒的理由，实际上我就是懒。没有更新的日子里我依然在看书，有关注我豆瓣的朋友应该能看到“已读”的书目在增加，但是看完的书我会做好读书笔记才开始动手写书评，没做过笔记就好像没看过这本书一样。（其实是不做笔记就不晓得要怎么写?）</p> 
<p>所以我是偷懒在没做读书笔记上?，后面几期里我会更勤奋做笔记，争取把丢掉的补回来?。</p> 
<p>本期书单中，故事性最强，设定最吸引人的当属<a href="http://justinyan.me/post/2885">东野圭吾的《秘密》</a>。虽然设定有点脑洞大开：主角的妻子车祸去世了，灵魂附在幸存的小学生女儿身上。一旦接受了这种设定，整个故事就变得十分有趣。心理上是自己的妻子，但是脸还是女儿的脸，面对自己的女儿，丈夫还能把她当做自己的妻子来爱吗？女儿总有一天会长大，会拥有自己的人生，难道要让她一直束缚在自己身边吗？但是她的心灵毕竟是自己的爱人啊，难道要看着自己的爱人去爱别的人吗？</p> 
<p>这种两难的抉择造成了小说的主要矛盾，东野圭吾在这部作品中给我们展示了一个感人肺腑的故事，我觉得这个想法还是十分令人惊艳的。</p> 
<p>再看科幻小说，阿西莫夫的<a href="http://justinyan.me/post/2876">《永恒的终结》</a>与<a href="http://justinyan.me/post/2921">《神们自己》</a>，一是时空穿越，一是平行宇宙，阿西莫夫的想象天马行空，令人大呼过瘾。雅小说方面，川端康成获诺贝尔文学奖的三部作品写得美轮美奂，优雅清丽，其中<a href="http://justinyan.me/post/1103">《雪国》</a>一作我们在 5 年前曾作过介绍，这期书单我们介绍的是另外的两部作品：<a href="http://justinyan.me/post/2856">《千只鹤》</a>与<a href="http://justinyan.me/post/2865">《古都》</a>。如果有读者朋友去过日本京都旅行，那么《古都》应当是非常好读的作品，贯彻全书的京都的风景名胜与风俗祭祀，川端康成细腻的文笔让整座古城生动起来。这座在二战中几乎夷为废墟的城市，能够在短短数十年内恢复一座古城应有的气息，与其浓厚的文化底蕴，民众深沉的热爱是分不开的。读《古都》总能梦回京都美丽的古刹，仿佛置身古代，轻抚栏杆，遥望远山隐没在暖暖的夕阳。</p> 
<hr /> 
<ol> 
 <li><a href="http://justinyan.me/post/2843">每周读书 #121 罗生门到底是什么？——《罗生门》</a> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/05/Cover-mp.png" alt="" /></p> <p><em>05.may 2016</em></p> <p>​对很多读者来说，罗生门可能是一个既熟悉又陌生的词，现在如果一件事情扑朔迷离，涉事各方各执一词，互相矛盾，那么可以称为“某某罗生门”，或者“谁谁身陷罗生门”。不过早期这的意义与我们所熟知的却大相径庭，这个词是怎么演变成今天的含义呢？</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2856">每周读书 #122 仿如素净的溪流淌着落樱款款——《千只鹤》</a></p> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/05/122%E5%8D%83%E5%8F%AA%E9%B9%A4cover.png" alt="" /></p> <p><em>13.may 2016</em></p> <p>川端康成获奖的三部作品，美到不可思议，却仿佛虚无缥缈，既没有起伏跌宕的情节，也没有深刻警世的内容，仿佛素净的溪流淌着落樱款款，总想起日本的古寺神社，大概就是那样的感觉吧。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2865">每周读书 #123 京都啊，京都——《古都》</a></p> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/05/jingdu-blog.png" alt="" /></p> <p><em>21.may 2016</em></p> <p>银阁寺前低吟浅唱的樱花小溪，祇园周边熙熙攘攘的古街窄巷，清水寺里俯瞰京都的崖边舞台，多少年来，京都作为日本天皇的居所，保留了许许多多日本传统之美。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2876">每周读书 #124 没有平行宇宙的时间旅行——《永恒的终结》</a></p> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/05/124TheEndOfEternity.png" alt="" /></p> <p><em>30.may 2016</em></p> <p>时间旅行真是科幻小说永恒的话题，相较于宇宙的时空尺度，人类的生命与历史真是弹指一挥间。把故事的时间放大到几百年已足以给读者们创造无限的想象，如果这个时间尺度是几十个世纪，几百个世纪，甚至上万个世纪呢？</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2885">每周读书 #125 假如爱人变成了女儿——《秘密》</a></p> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/06/125himitus-cover.png" alt="" /></p> <p><em>03.jun 2016</em></p> <p>亲眼看着自己深爱的人去爱别人，还要作为“父亲”的角色来祝福他们，如果是你，你会怎么做呢？</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2899">每周读书 #126 少年法保护的是被害者还是罪犯呢？——《彷徨之刃》</a></p> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/06/126panghuangzhiren.png" alt="" /></p> <p><em>17.jun 2016</em></p> <p>假如你是受害者的父亲，亲眼看到自己的女儿被凌虐致死的录像带，而由于少年法的保护，两个犯罪少年却可能监禁两三年后就被假释，这种情况下你的心情会是怎样？你怎么可能相信法律是保护受害者的，怎么可能相信警察是站在正义的一边的？</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2921">每周读书 #127 The Gods Themselves——《神们自己》</a></p> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/07/127_the_gods_themselves.png" alt="" /></p> <p><em>26.jul 2016</em></p> <p>假使有一种近乎完美的洁净能源，取之不尽用之不竭，利用高效无所不能，人类是否会为之欣喜若狂？假使利用这种能源的代价是世界末日呢？</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2938">每周读书 #128 宛如洁白浪花——三岛由纪夫 《潮骚》</a></p> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/08/chaosao.png" alt="" /></p> <p><em>02.aug 2016</em></p> <p>相比于男色话题的私小说《假面的告白》、贞操与欲望斗争的禁忌话题《爱的饥渴》以及死亡与幻灭之凄美的小说《金阁寺》，三岛由纪夫这部《潮骚》确实是清新脱俗的独特之作。</p> </li> 
</ol> 
<p>16.08.02/夜<br /> 于自居</p> 
<p>往期书单：<br /> - <a href="http://justinyan.me/post/2841">[书单] 枫言枫语∙每周读书 113期-120期</a><br /> - <a href="http://justinyan.me/post/2718">[书单] 枫言枫语∙每周读书 105期-112期</a><br /> - <a href="http://justinyan.me/post/2561">[书单] 枫言枫语∙每周读书 97期-104期</a><br /> - <a href="http://justinyan.me/post/2478">[书单] 枫言枫语·每周读书 2015 年度书单</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #128 &#x4E09;&#x5C9B;&#x7531;&#x7EAA;&#x592B; -  &#x300A;&#x6F6E;&#x9A9A;&#x300B;</title>
        <link>https://justinyan.eth.limo/749FEDD9-1779-4010-967B-7E197A97F9D2/</link>
        <guid>https://justinyan.eth.limo/749FEDD9-1779-4010-967B-7E197A97F9D2/</guid>
        <pubDate>Tue, 02 Aug 2016 17:12:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/08/chaosao.png" alt="每周读书 #128 宛如洁白浪花——三岛由纪夫 《潮骚》" /></p> 
<p>1949 年三岛的成名作<a href="http://justinyan.me/post/1998">《假面的告白》</a>是一部半自传体式的私小说，内容比较阴暗，涉及男色，是禁忌话题；1950 年<a href="http://justinyan.me/post/1174">《爱的饥渴》</a>则讲寡妇悦子本欲坚守贞操，却被公公诱惑，又恋上自家的园丁，最后以凶杀结局，也是个禁忌话题的悲剧；1956 年三岛的代表作<a href="http://justinyan.me/post/1943">《金阁寺》</a>发表，见习和尚沟口有口吃的毛病，始终无法与女人行事，全书充满死亡、凄美之感，最终沟口火烧金阁寺，亦是悲剧。所以在三岛由纪夫的小说作品当中，清新脱俗的《潮骚》算是挺特别的一部。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/08/Screen-Shot-2016-08-02-at-16.46.30.png" alt="神岛/歌岛地图" /></p> 
<p>这部作品的背景被设定在日本三重县鸟羽市的神岛，小说中出现的八代神社、灯塔、哨所都可以在岛上找到。1953 年作家两次前往神岛旅行，9 月开始执笔创作，次年出版。也许因为描写的是纯爱内容，这部小说成为三岛最常被搬上荧幕的作品，樱桃小丸子的偶像山口百惠就曾于 1975 年出演过同名电影，并与男主角三浦友和相恋最终结婚，两人的婚姻曾经热极一时，可以说明星的轶事反过来也提高了原著的知名度。（该电影有所改编但基本忠实于原著，年轻的山口百惠很漂亮，三浦友和也很英俊，有兴趣的读者可以找来看看。）</p> 
<p>小说讲述的是两个纯真男女的爱情故事，在故事中，神岛被称为歌岛，这个小岛上所有人都靠海为生，男的出海打渔，女的则潜水采集。男主角是善良木讷的年轻渔夫新治，某天打鱼归来遇到坐在海滩上的少女初江，在夕阳下光彩照人。初江是岛上大户人家宫田照吉的女儿，新治只是一个贫穷的小渔夫，在这场爱情争夺战中，他的对手是出身歌岛名门的安夫，这样的人设注定了这个故事走的是以弱胜强，青蛙变王子的路线，所以仅从故事情节来说，这部小说乏善可陈。不过换个角度来看，情节引人入胜并不是三岛所长，作家的细腻藏于字里行间。</p> 
<p>小说分为十六章，每章篇幅短小，承前启后，圆转自如，其中有几个场景写得非常动人，以时间顺序来说，第一个有意思的场景在初江与新治同在灯塔长家做客时。当时灯塔长夫人刻意提及自己的女儿千代子喜欢新治的事情，回家的时候初江生气地不理会新治。</p> 
<p>这种单纯的小情绪在三岛笔下显得天真毫不做作，新治紧追少女身后喊道：“喂！喂！”</p> 
<blockquote>
 <p> 尽管他叫喊，少女并没有回头。年轻人无奈，只好默然地跟随在少女的后面。</p> 
 <p> 道路被松林笼罩，又漆黑又险峻。少女接着小手电筒的光柱照亮前方，步子变得缓慢，新治不知不觉地走在她的前面了。随着轻轻的叫唤声，手电筒的亮光像腾飞的小鸟，倏地从树干飞向树梢。年轻人机警地回过头来。他马上把摔倒的少女抱了起来。 </p>
</blockquote> 
<p>简直是电影里的画面！在 1957 年，电视电影可不像今天这般流行，现在看来《潮骚》的桥段可能已被用滥，但是在小说发布的时候还算新奇。桥段可以随着时间推移不再流行，但是通过三岛的文字把这些故事讲述出来，作家带给读者的那种表面上风平浪静，内心里波澜万丈的感动却是超乎桥段之外的了。</p> 
<p>比如全作的中间高潮部分，新治与初江相约在山上废弃的哨所见面，那是他们相识的地方，可那天却闹起了一场暴风雨。少年“不习惯猜疑的这颗心，从未曾怀疑过女子会不会冒着这暴风雨天赴约”。抵达哨所少年已全身湿透，他升起了火堆静静等待少女的出现，慢慢把头靠在膝盖上睡着了。</p> 
<p>醒来时一个半裸的少女低头站在篝火旁，低垂的双手拿着洁白的胸衣在烤火。新治装睡偷看，少女发现后居然说：“不许睁开眼睛！”而年轻人居然就忠实地禁闭双眼。两人最终没有做出什么，他们心中对道德观念抱有一种盲目的虔诚。这一段看得令人忍俊不禁，回想起金庸小说里温软娇嗔的女主角们。谁都有过年轻懵懂的岁月，三岛写这部小说，定是满怀青涩的心情在写，真挚得可爱。</p> 
<p>最后一个精彩的场景则是新治随初江的父亲宫田照吉的渔船出海见习，在海上遇到可怕的台风，波涛在翻滚，狂风在怒吼，面对浩瀚无垠的狂暴海洋，人是如此渺小，自然是如此可怖！渔船靠几根钢索保持稳定，此时一根钢索断了，船长在甲板上猫腰大声说道：“有人愿意来把这条保险绳系在对面的浮标上吗？”</p> 
<blockquote>
 <p> 风的呼啸，保护了四人的沉默。</p> 
 <p> …新治用爽朗而明快的声音喊叫起来。这时候，在黑暗中可以看到他的洁白而美丽的牙齿浮现了出来，他的确是微笑了。<br /> “我来！” </p>
</blockquote> 
<p>新治跃入暴风雨中与自然搏斗，把全书故事推向最高潮，等他完成任务游回渔船，一被人拉上甲板就瘫软在地。最终新治凭借在渔船上英勇的表现赢得初江，作家给了故事一个圆满美好的结局。这部小说也是三岛难得的态度积极向上的作品，前文我们提到的几部作品均是悲剧结尾，唯有《潮骚》贯穿一种朴素的美好，在阅读时频频忆起年少的日子，简单得美好。</p> 
<p>总体来说这部小说的情节普通，桥段在今天已经屡见不鲜，不过作家的文笔相当不错，多数章节的结尾都有长镜头式的延展，像川端康成在《千只鹤》中所写的夕照下镀成金黄的街道，描写十分精彩，以雅文学的角度来看文笔值得欣赏，以通俗文学的角度来看缺乏吸引力，阅读起来需要一点耐心。</p> 
<h2>关于书名</h2> 
<p>《潮骚》这个书名的意思是“海潮的声音”，英文译为 The Sound of Waves。有人说三岛在写作前一年去过希腊旅行，称这部小说是罗马历史故事《达夫尼斯和赫洛亚》的现代版，但是 Google 并没能搜索出三岛原话的出处，而且《达夫尼斯和赫洛亚》的情节与《潮骚》差得也比较远，除了背景同样在海岛上，同样有两个男子喜欢同一个女子之外再无共通之处，所以对于这个说词，本人持怀疑态度。</p> 
<h2>关于版本</h2> 
<p>枫影所读的版本为唐月梅老师翻译，由上海译文出版社出版的实体书，ISBN 为 9787532764785，z.cn 并没有 Kindle 版出售，有点可惜。</p> 
<p>16.08.02/下午<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #127 &#x963F;&#x897F;&#x83AB;&#x592B; &#x2014; &#x300A;&#x795E;&#x4EEC;&#x81EA;&#x5DF1;&#x300B;(The Gods Themselves)</title>
        <link>https://justinyan.eth.limo/25683F9C-6E28-4C0C-994C-3F64EA803011/</link>
        <guid>https://justinyan.eth.limo/25683F9C-6E28-4C0C-994C-3F64EA803011/</guid>
        <pubDate>Tue, 26 Jul 2016 13:16:11 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/07/127_the_gods_themselves.jpg" alt="枫言枫语·每周读书127阿西莫夫神们自己" /></p> 
<p>石油毋庸置疑是当今世上最重要的能源，人们无法想象当石油枯竭时，这个世界将退化到怎样可怕境地。所以人类从未放弃过对新能源的寻找，假使此刻有一种近乎完美的洁净能源，不仅无污染而且无消耗，取之不尽用之不竭，利用高效无所不能，人类是否会为之欣喜若狂？假使利用这种能源的代价是世界末日呢？1972 年阿西莫夫出版的《神们自己》（The Gods Themeselves）讲的就是这样一个末日启示的故事。</p> 
<h2>001 面对愚昧…</h2> 
<p>整天窝在实验室埋头钻研的科学家哈兰姆（Hallam）在一个偶然的机会发现自己桌上一瓶放置了二十年的钨（W）产生了奇怪的变化，他问同事狄尼森（Denison）是否有人碰过，结果狄尼森傲慢地反问道：“你怎么知道它变了？”哈兰姆是一个自尊心很强的人，于是他很较真地对这一小瓶东西做了研究，发现这些钨竟然变成了钚（Pu）的同位素 Pu-186，这种元素有 94 个质子和 92 个中子，是一种极不稳定的状态，是不可能存在的东西！而经过多次检测，这东西竟然开始对外辐射电子释放能量，而且越来越强……</p> 
<p>后来科学家们经过研究发现有另一个“平行宇宙”的智慧文明的存在，只要在某些地方放置钨，就会被他们置换成不稳定的钚-186。哈兰姆以此提出《两个宇宙的下坡路》理论：两个宇宙中的强相互作用力是不同的，另一个宇宙中的强相互作用力比我们这里的要强很多倍，这就意味着质子更容易克服电磁斥力结合在一起，而原子核保持稳定所需的中子也就更少，所以钚-186 在他们那里是稳定的，但是到了我们这里则质子太多了，就会对外辐射正电子释放能量。同样，我们的钨被传送到平行宇宙之后也成了不稳定的东西，也会对外释放能量。<strong>这样我们就建立了一个“电子通道”，可以给两个宇宙提供源源不断的能量！</strong></p> 
<p>哈兰姆因为这一“发现”已经成为人类世界的“神”，他是“电子通道之父”，人类在短短数十年时间里，依赖于电子通道的能源已经做了很多事情，哈兰姆也顺理成章地成为一个权力熏天的人。但是事情并没有这么简单，这个通道传递的东西，是否真的如哈兰姆所说的，只有纯粹的能量呢？在两个平行宇宙互传能量的事情听起来是不是很像传说中的<strong>永动机</strong>？而“热力学第二定律”有云：</p> 
<blockquote>
 <p> 不可能把热从低温物体传到高温物体而不产生其他影响 </p>
</blockquote> 
<p>前面我们提到平行宇宙的强作用力比我们宇宙的要强很多，在电子通道传递能量，我们的宇宙增加电子的同时，两个宇宙的强作用力也会向中间点趋于平衡！这就意味着我们的宇宙的强作用力会越来越强，核聚变会越来越容易，<strong>而太阳这个无比巨大的核聚变反应堆，总有一天会爆炸</strong>！而且爆炸带来的影响会传播出去，越来越强，到时不仅太阳系，银河系，很可能我们整个宇宙都会走向末日。</p> 
<p>“太阳爆炸”这件事情，科学家拉蒙特（Lamont）穷尽一生都在努力宣传这个思想，试图停止电子通道的运作。但所谓的世人，却总是更愿意相信那些对自己有利的事情。什么时候会爆炸呢？一万亿年？一万年？即使跟《三体》一样只剩下两百年了，那又如何呢？<strong>只要我死之前还没有爆炸就好了。</strong></p> 
<h2>002 …神们自己…</h2> 
<p>《神们自己》这个书名，我一直以为写的是神的故事，但其实作者是引用自 1801 年德国戏剧家弗里德里希·席勒（Friedrich Schiller）写的以圣女贞德为故事内容的悲剧——《奥尔良的姑娘》（The Maid of Orleans）里的一句诗：</p> 
<blockquote>
 <p> [德] Mit der Dummheit kämpfen Götter selbst vergebens</p> 
 <p> [英] Against stupidity, the gods themselves contend in vain.</p> 
 <p> [中] 面对愚昧，神们自己，也缄口不言。 </p>
</blockquote> 
<p>这个书名乍看有些莫名其妙，读罢全作才知道是讽刺这些所谓的“世人”，即使世界末日也好，电子通道是绝对不能停下来的。</p> 
<h2>003 …也缄口不言</h2> 
<p>第一节里所介绍的平行世界与电子通道，但对这个故事来说只是个开头。这部小说延续了阿西莫夫一向硬科幻的作风，平行宇宙与不同的物理法则都是想象出来的东西，想象出全新的世界不难，难的是如何把这些想象写得逻辑自洽，自圆其说。阿西莫夫在小说中使用了大量的篇幅来解释这些科学原理，讲质子中子如何不稳定如何释放能量的时候，如果不翻阅高中物理基础的话是不好理解的，这就是硬科幻的特点。</p> 
<p>这种写法也筛选了读者，不是所有读者都会一读到硬科幻就兴致勃勃的，大篇幅的解释以及构建一个全新的世界，如果操控不当反而会造成文笔啰嗦，篇幅冗长。这部小说在出版当时分为三个部分，在两本科幻杂志上连载，三个部分主线连续，却又相互独立，合成单行本之后，各个部分之间完全不同的场景与人物会让读者有些吃力。第一部分读者跟得好好的主角怎么到了第二部分就消失了？主角变成外星人了？而且跟我描述外星人的世界做什么？跟主线有关系吗？</p> 
<p>如果独立地看，第二部分“神们自己”描写的外星人的生活环境也好，三性社会也好，是很有趣的设定，但是这部分有大量的描写是为了构建这个异星社会而作的，跟主线可以说几乎没有关系。这个问题在第三部分也存在，第三部分把场景拉到了月球社会，为了构建一个真实的月球世界作者也费了不少心思去描写月球社会的生活，单独地看可能很有意思，但对主线毫无推动。所以这样的写法是一定会让读者感到困惑与郁闷的，除非你是一个科幻迷，一读到没有听说的体验就很兴奋，否则可能会像我一样觉得无语。</p> 
<p>抛开这些问题，仅主线来看，这是一个拯救宇宙与世界末日的故事，写得很有张力，价值观方面涉及不同宇宙不同智慧文明的道德挑战，到底是利他还是利己，在灾难的抉择前，两个智慧文明都经历过痛苦的挣扎。空间尺度上，平行宇宙且不论，单是物理法则的侵透已十分可观，分分钟把一个银河系囊括在内，时间尺度倒是不大，大概数十年光景，足以写出一个近未来的世界。有时候不得不佩服作者大胆的想象，连宇宙大爆炸 Big Bang 都能牵扯到小说中来，真是匪夷所思。但是科幻小说不就是应该这样的吗？既要有大胆的想象，又要能自圆其说，也正因为这样，阿西莫夫才一直是一位受人尊敬的科幻小说家。这部《神们自己》虽然不算作家的代表作，却也拿下了 1972 年的星云奖和 1973 年的雨果奖。时隔多年，这部小说仍然不失为值得一读之作。</p> 
<p>16.7.25/夜<br /> 于 T.i.T</p> 
<p>====</p> 
<p>Q: 为什么 Dua 一直坚持要停止电子通道，拯救人类世界，却在三人合为一体之后就改变主意了？</p> 
<p>A: 一开始我也看不明白，后来看了英文 Wiki，我的理解是这样的：Dua 他们三个在 Sex 的时候会合为一体，这期间长达数小时到数天时间，而且记忆全失，而最后一次融合则合成了一个长老(Hard One)。说明 Estwald 就是他们 Sex 时的形式，他们 Sex 时就会变成 Estwald，只是没法永久存在，所以一旦结束就会有三个人格独立存在。而最后一次融合则把他们永远合成一体了，于是 Estwald 就回来了，三个人格融合后的那个人，不再单纯地以情者的角度去思考了，相对于另一个世界的安危，他们自身宇宙的生存才是最重要的。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #126 &#x4E1C;&#x91CE;&#x572D;&#x543E; &#x2014; &#x300A;&#x5F77;&#x5FA8;&#x4E4B;&#x5203;&#x300B;</title>
        <link>https://justinyan.eth.limo/79D53293-C93A-47F5-A343-848F303BB905/</link>
        <guid>https://justinyan.eth.limo/79D53293-C93A-47F5-A343-848F303BB905/</guid>
        <pubDate>Fri, 17 Jun 2016 15:59:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/06/126panghuangzhiren.png" alt="彷徨之刃" /></p> 
<p>Hi, 读者朋友们大家好，最近在外出差，所以欠了一周的读书（笑）。在开始今天的“每周读书”之前，我想先介绍一个在日本非常有名的少年犯罪案件——<strong>女子高生コンクリート詰め殺人事件（女子高中生水泥埋屍案）</strong>。</p> 
<p>1988 年 11 月至 1989 年 1 月，日本东京足立区几个未成年少年<strong>（日本法律规定 20 岁成年）</strong>对一名女高中生进行绑架、监禁、强奸、谋杀最后藏尸，事件之严重，手段之残忍令人震惊。最早知道这个事件是枫影还在上学的时候，在网络上偶然看到鎌田洋次改编的漫画，结果越看越沉重，令人又恨又怕。恨的是罪犯的手段太过残忍，即使是漫画也令人难以置信，怕的是为首的少年以威胁恐吓的手段逼迫其他人协同犯罪，这种校园霸凌的事情在学校里面非常普遍，让枫影想起小时候被欺负的情景，心有余悸。这个案件本身已经极具震撼力，而由于犯罪的全是未成年人，在日本少年法的保护下，被告的量刑很轻，一审给了 17 年、8 年、5 年和 2 年，而事实上被告一般监禁几年后就可以假释出狱了。受害者家属不服判决而上诉，终审基本维持一审判决，这样的结果在当时掀起激烈的讨论。而且由于少年法的保护，几个被告的名字是不公开的，后来才由《周刊文春》曝光了罪犯的所有个人信息。（详情可以参考维基百科，或者<a href="https://www.zhihu.com/question/43396196">知乎话题日本最凶残的杀人案件是哪一件呢？</a>）</p> 
<p>少年法的出发点是道德至上：</p> 
<blockquote>
 <p> “这个世界多一个好人就少一个坏人。”<br /> “未成年人心智还未成熟，需要给他们一次改过自新的机会。” </p>
</blockquote> 
<p>很多人也许觉得这样的想法有道理，但那只是因为事件没有发生在你身边，假如被害者就是你或者你的亲朋好友呢？你还能这样轻松地作出给加害者自新机会这样崇高的宽容吗？相信大多数人都做不到。“想要杀死凶手”这样的心情恐怕会自然而然地浮现起来。<a href="http://justinyan.me/post/2304">2014 年东野圭吾的作品《虚无的十字架》</a>就讨论过废除死刑的话题，被害者家属的心情谁来照顾呢？当时这部作品枫影觉得作者没有给出明确的结论，导致结尾模棱两可，而就死刑与否来说，其实话题的重量还不够沉重。</p> 
<p><strong>本周我们介绍 2004 年东野圭吾出版的《彷徨之刃》</strong>，内容涉及少年犯罪，手段之残忍，犯下罪行之数量，足以令人义愤填膺，假如你是受害者的父亲，亲眼看到自己的女儿被凌虐致死的录像带，而由于少年法的保护，两个犯罪少年却可能被判决 10 年以下有期徒刑，不会曝光姓名，监禁两三年后就可以假释，这种情况下你的心情会是怎样？你怎么可能相信法律是保护受害者的，怎么可能相信警察是站在正义的一边的？</p> 
<p>带着这样矛盾与绝望的心态，受害人的父亲长峰重树踏上了为女儿复仇之路。长峰是成年人，如果真的复仇成功杀了两个犯罪少年，法院的判决绝对不会手软，而且即使复仇前就被捕，还将面临蓄意杀人未遂的指控，量刑也不轻。但是如果犯罪少年自首，基于少年法的保护，他们只需要在感化院呆上两年就可以出来了，到那时，这个社会已经淡忘了这个案件的存在，罪犯的名字也不会公开，移居到别的城市又可以重新开始，<strong>这个社会的法律到底保护的是被害者还是加害者呢？</strong></p> 
<p>在《彷徨之刃》中，作者的态度不像《虚无的十字架》一样摇摆不定，而是一开始就认为现在的法律，不仅是少年法，都太过偏袒加害者了。就连负责调查案件抓捕长峰的警察内心也是万般纠结，论职责抓捕杀人犯是警察应该做的事情，但是一旦把长峰逮捕归案，罪犯就可以像没事人一样伤害了他人却逍遥法外，这个世界是怎么了？作者通过这部小说对少年法过于保护罪犯这个话题发出强烈的声音。</p> 
<p>东野圭吾的小说多数都是三幕结构，开篇就是第一幕，以事件的发生为契机把故事推入第二幕，主角如果是警察或者侦探则面临棘手的破案过程，第三幕自然是以重要线索为转折，把故事推到揭示真相的最后阶段。在《彷徨之刃》中，作者依然采用三幕剧结构，以女儿参加烟火大会后迟迟不回家最后发现被弃尸为重要事件，把主角长峰推进复仇的不归路。第二幕开始后，本来应该代表正义的警察，却内心万分矛盾，逮捕长峰到底是对是错呢？故事的主线就是长峰和警察比拼哪一方先找到凶手，最后以长峰的复仇和警察的抓捕进入尾声把故事推到最高潮。这部作品是 2004 年出版，《嫌疑人x的献身》是 2005 年出版，2006 年拿奖，相较之下，这部作品的诡计没有《嫌疑人》那样深刻，但此时毕竟是作者迈向创作巅峰的时期，抓住的话题已足够吸引读者，诡计的设定几乎只是辅助，可以说这部作品和推理小说已经有一定的距离，但是不失为一部吸引读者的畅销小说。</p> 
<p>总的来说《彷徨之刃》的话题是比较有深度的社会话题，结构与叙述都有东野圭吾一直以来的流畅易读，算是一部不错的作品。但是推理诡计的设定在这部作品里显得很弱，可以说这部作品已经不是推理小说了。</p> 
<p>16.06.17/下午<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x600E;&#x4E48;&#x56DE;&#x7B54; How are you doing?</title>
        <link>https://justinyan.eth.limo/4773C3A0-95D7-45DC-A281-1E304FD3BB2C/</link>
        <guid>https://justinyan.eth.limo/4773C3A0-95D7-45DC-A281-1E304FD3BB2C/</guid>
        <pubDate>Mon, 13 Jun 2016 12:25:44 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/06/how_are_you_doing.png" alt="cover" /></p> 
<p>最近在三藩呆了一个月，三藩(San Francisco)既指一个城市也指和周边几个城市一起的地区，称为旧金山湾区（Bay Area），这里是美国华人聚居的地方，也是著名的硅谷（Silicon Valley）所在地，三藩市区有很多创业小公司和相对规模还没那么大的公司，比如 Yelp, Twitter, Uber 等等，但是现在市区房价已经很恐怖了，开始有公司也都搬到相对郊区一点的 Palo Alto, Moutain View 和 Cupertino 那边去，而这几个地方就是 Google, Apple, Facebook 等公司所在地了。</p> 
<p>美国文化和中国的区别还是挺大的，今天给大家介绍两个我觉得比较有意思的地方。</p> 
<h2>1. How are you doing?</h2> 
<p>在这呆了一个月，绝大部分人都很 Nice，常挂在嘴边的除了 Excuse me, Sorry, Thank you 之外，就是 How are you doing 了，这句话是打招呼最常见的英文，无论是坐 Uber，酒店 Check in，超市买单等开头都会问候一句。那么这句话怎么回答呢？以前在国内的时候有美国同事跟我问好的时候我还傻乎乎地以为人真是问我在干啥，回答了一堆噼里啪啦有的没的，后来发现不太对劲之后 Google 了一下才知道真的只要回答 Good 就可以了。根据我的观察，大多数国内的朋友在不熟悉英语环境的时候，都会很认真地回答这句话，即使比我先到美国呆了一个星期的朋友也是这样，没有意识到这句话仅仅是一个问候（笑）。</p> 
<p>那么这句话怎么回答呢？下面举个例子：</p> 
<blockquote>
 <p> -How are you doing?<br /> -Good, how are you doing?<br /> -I’m good, thank you. </p>
</blockquote> 
<p>就是这么简单，几句话像三次握手，握手完了你就可以开始噼里啪啦讲一大堆有的没的瞎扯淡了。有时候餐厅的服务员在你吃东西吃到一半的时候也会跑过来问你：</p> 
<blockquote>
 <p> -Is everything OK?<br /> -Good, thank you. </p>
</blockquote> 
<p>记得回复一句带 Thank you 就好。至于我们课本上的这种经典句式：</p> 
<blockquote>
 <p> -How are you?<br /> -Fine, thank you, and you? </p>
</blockquote> 
<p>在这里是很少见的，至少我没见到一样的。How are you 也是可以用的，不过比 How are you doing 用的少。类似 and you? 的用法也有，比如：</p> 
<blockquote>
 <p> -Have a good day!<br /> -you, too. </p>
</blockquote> 
<p>这种很常见，一般你要离开超市或者下车就会用到。那如果别人跟你说 thank you 呢？你有几种回答可以选：</p> 
<blockquote>
 <p> -You are welcome.<br /> -No problem.<br /> -Of course.<br /> -No worries. </p>
</blockquote> 
<p>这几种是很常见的回答。其中 ”No worries” 是很有趣的表达，worry 在这里要用复数，虽然没搞清楚为什么一定要复数，不过是个很多人使用的词，相当于 No problem。一般没人用 No worry, 如果真想用单数，你可以说 don’t worry。</p> 
<h2>2. Tips</h2> 
<p>小费在美国无处不在，这点跟我们国内的消费文化不太一样。国内的朋友可能一开始在美国玩还不太习惯给小费，因为我们在国内吃饭住宿的时候，服务员的工资都是由餐厅酒店直接给的，我们支付的费用就已经包含了服务员的工资，我们的邻国日本也是一样的。但是美国就很不一样，很多服务员仅仅是领最低保障工资，或者干脆没有基本工资，小费就是给服务员的工资。所以如果你在一家餐厅吃饭不给小费，那就相当于让服务员提供服务但是不给钱，就是吃霸王餐嘛。反过来想，小费其实是把本来被强制征收（比如国内把这项费用包含在菜价里或者写清楚 20% 的账单）的消费交给顾客，顾客想给多少可以自己决定。</p> 
<p>明白小费的重要性之后，下面我们来看看小费是怎么给的吧。</p> 
<p><strong>1. 餐厅消费</strong></p> 
<p>一般来说快餐是不需要给小费的，比如这里有名的 In-N-Out Burger，在前台点餐完就已经支付所有费用了。在美国的快餐店，吃完东西一定要自己收拾，一般会有扔垃圾和放餐盘的地方，国内的 M 记和 KFC 也有这样的地方，但是可能是一开始入华的时候走的是高端路线，所以大家习惯了不收拾，其实并不是太好。在美国和日本的快餐店吃完快餐都是一样要自己收拾干净，由于服务员只需要负责点餐和制作汉堡，偶尔擦擦桌子（如果是美食中心有商场的清洁人员来擦桌子），所以这样的地方是不需要给小费的。</p> 
<p>需要给小费的地方一般会有服务员带你入座，中间会过来问你食物怎样，is everything OK？ 还会给你倒水，加咖啡之类的。截至目前（2016-06-11）三藩普遍的小费水平最低是 15%，觉得好的可以给 18% 或者 20%，一般来说如果去餐厅的人比较多，比如一桌超过 5 个人，就必须给 20% 了。有些餐厅在买单的时候会给你算好各个百分比是多少，不过多数得自己算好。</p> 
<p>买单的流程是这样的：</p> 
<ol> 
 <li>首先喊服务员 Check：”Check, please.”</li> 
 <li>等服务员把账单拿过来，检查一下账单确认无误，然后把你的信用卡放在账单上。账单一般会放在盘子里或者夹在一个账本里，你把信用卡放进去摆在桌边等服务员来收就好。</li> 
 <li>服务员收走账单去刷卡，刷完会再拿回来，这次会带一支笔。</li> 
 <li>这时你一般会看到两到三张单，一张 Customer Copy 你自己带走，一张需要签名的你就签名，然后自己算好 Tips 多少和 Total 多少填好。</li> 
 <li>然后拿走信用卡放下笔和账单，就可以滚蛋了。</li> 
</ol> 
<p>有小部分餐厅可以直接到收银台买单，不过比较少，目前我只见到一家越南餐馆是这样子的。</p> 
<p><strong>2. 酒店住宿</strong></p> 
<p>酒店住宿也是需要给小费的，一般我每天早上会在床头放 1-2 dollars，视房间使用情况而定，如果比较脏乱就给多一点吧，服务员也挺辛苦的。如果你是在一家酒店连续住宿多天，比如一两个礼拜的，那么你可以选择隔一天或两天让人打扫。如果房间里有什么绿色保护环境的卡片之类的，你可以挂在门口，这样服务员只会帮你倒垃圾，不会做整理床铺等其他事情。如果没有这种卡片，那你可以把 Do Not Disturb 挂门上一整天，反正一般人住酒店房间也不会真的脏乱到哪里去。</p> 
<p>以上就是我在三藩呆的这段时间觉得比较实用有有意思的地方，希望对大家到三藩玩的时候能有所帮助，Thanks.</p> 
<p>16.06.11/下午<br /> at Holiday Inn San Francisco-Fishermans Wharf</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #125 &#x4E1C;&#x91CE;&#x572D;&#x543E; &#x2014; &#x300A;&#x79D8;&#x5BC6;&#x300B;(&#x5047;&#x5982;&#x7231;&#x4EBA;&#x53D8;&#x6210;&#x4E86;&#x5973;&#x513F;)</title>
        <link>https://justinyan.eth.limo/9063E965-0E7B-4664-A3E0-B50D8EBE4596/</link>
        <guid>https://justinyan.eth.limo/9063E965-0E7B-4664-A3E0-B50D8EBE4596/</guid>
        <pubDate>Fri, 03 Jun 2016 13:22:46 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/06/125himitus-cover.png" alt="每周读书 #125 假如爱人变成了女儿——《秘密》" /></p> 
<p>每个一段时间一定会出现在“每周读书”里的东野圭吾，这位在今日功成名就的畅销书作家自身的成长经历就是一部有趣的小说。1985 年 27 岁的东野圭吾凭借《放学后》拿下江户川乱步奖，随即在次年辞去自己本就不喜欢的工作，跑到东京当职业作家。他知道得奖后的第二本书可能销量不佳，但是却想不到竟会遭遇长达十余年的空窗期。我不清楚作家当时是怎么挺过那段艰苦的岁月的，但是假使我是一个全职作家，十余年内卖不出书却还坚持写作，这真是太难了，恐怕自信心在前几作销量惨淡与大奖无缘的时候就消磨得差不多了。</p> 
<p>《白夜行》、《嫌疑人x的献身》这些耳熟能详的代表作已经是东野圭吾后期的作品了，但即使《白夜行》也没能获得直木奖，直到《嫌疑人》的出现才把东野圭吾推向职业生涯的巅峰，这两部小说“每周读书”以前都有介绍过，今天我们要介绍的是 1998 年，东野圭吾距出道作《放学后》 13 年后，终于再次获得大奖的作品——《秘密》。</p> 
<p>不管是生涯巅峰之前还是之后，作家一直在探索寻找新的话题新的形式，有时候这种探索的成果会以颇具新意的想法呈现在作品当中，有时候却可能有点过头写出像三流青春小说的结尾。90 年的《宿命》涉及前沿科技的脑科学的话题，96 年的《恶意》讨论了校园暴力话题，同年的《平行世界·爱情故事》既有平行世界的因素也有脑科学元素的融入，2001 年的《单恋》讨论了性别认同的话题，2006 年的《红手指》指出日本社会的养老问题，2012 年的《解忧杂货店》直接用超自然因素来做结尾，这些作品除了《宿命》还没介绍之外其他几部“每周读书”都介绍过，总的来说我认为东野圭吾并不擅长写神秘话题和科幻主题，如果只是讨论社会话题作家往往能写出令人感动的故事，但是一遇到科幻就会觉得有点缺乏说服力了。对于这种话题的处理，最好是把它当做背景设定或者模糊化处理，毕竟写的不是硬科幻也不是恐怖小说，只要读者接受了这种设定，就能发展出日常生活所无法想象的故事来。</p> 
<p>《秘密》就是基于这样一种神奇的设定，在这部作品当中，作者用上了“灵魂附体”。如果作家是冲着“灵魂附体”之后大家的反应，主角如何去解决面临的种种困难，那就是青春冒险小说，不值一提了，这部作品厉害的地方就在于“灵魂附体”之后产生的一系列我们平时根本遇不到的道德伦理问题。</p> 
<p>小说的主角平介是一名普通的白领，他有个漂亮贤惠的妻子直子，有个念小学的女儿藻奈美，三个人组成一个令人羡慕的幸福家庭。但是故事一开始就是妻女出车祸的转折，二人回娘家的路上乘坐的大巴因为司机疲劳驾驶坠崖，妻子拼命保护住女儿，身受重伤，女儿也成为植物人。在医院弥留之际，直子要求看女儿藻奈美最后一眼，就这样拉着女儿的手永远地闭上了双眼。而这时候女儿竟奇迹般醒转过来！</p> 
<p>于是闹剧开场，故事被推入第二幕，直子的灵魂在已经成为植物人的女儿藻奈美身上复活了。一个成人的灵魂要去适应一个小学生的身体，适应一个小学生的生活，这已经足够奇幻，更惨的时候夫妻二人要如何面对这个事实？对于平介来说，直子的灵魂虽然回来了，但是他面对的可是自己的女儿呀。公元前的埃及法老王为了继承人血统的纯正会娶自己的女儿或者姐妹为妻，但是在现代的日本社会是怎么也接受不了这种奇怪的伦理的。主角可谓是啼笑皆非，又喜又悲。</p> 
<p>喜的是原以为会同时失去妻女，但是女儿的身体和妻子的灵魂却都复活了，某种意义上一家三人又可以团聚了，悲的是妻子的灵魂在女儿身上，他又怎么可能去爱上自己的女儿呢？更长远的想，现在女儿的身体还是小学生，但是她总会长大，会重新经历一次人生，是要放手让她去恋爱吗？在经过第一阶段的不知所措之后，直子下定决心不浪费这次重来的人生，要替女儿好好地活下去。于是她开始努力学习，要弥补自己年轻时浪费青春的遗憾。在这过程中平介会看着直子慢慢成长，她会认识很多人，会有很多故事。他已经人到中年，可以为了直子“单身”下去，但是直子现在可是一个前途光明的孩子，要限制她的自由让她永远陪伴自己吗？</p> 
<p>在故事的最后作家给出了他的选择，是一个比较出乎意料但是令人感动的结局。有朋友说为什么他们两人不到一个没人认识的地方算了，我觉得光是年龄差距他们就已经足够引人注目了，而且主角的内心根本接受不了把女儿当成爱人这样的事实，从一开始发生“灵魂附体”，这两个彼此深爱多年的人就已经注定了要经历一场长时间的缓慢的悲剧。</p> 
<p>亲眼看着自己深爱的人去爱别人，还要作为“父亲”的角色来祝福他们，如果是你，你会怎么做呢？</p> 
<p>16.06.01/下午<br /> at A Eastern Legend</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #124 &#x963F;&#x897F;&#x83AB;&#x592B; &#x2014; &#x300A;&#x6C38;&#x6052;&#x7684;&#x7EC8;&#x7ED3;&#x300B;(&#x6CA1;&#x6709;&#x5E73;&#x884C;&#x5B87;&#x5B99;&#x7684;&#x65F6;&#x95F4;&#x65C5;&#x884C;)</title>
        <link>https://justinyan.eth.limo/E674C87A-5348-4986-BA16-E766F0F4C927/</link>
        <guid>https://justinyan.eth.limo/E674C87A-5348-4986-BA16-E766F0F4C927/</guid>
        <pubDate>Mon, 30 May 2016 10:50:34 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/05/124TheEndOfEternity.jpg" alt="每周读书 #124 没有平行宇宙的时间旅行——《永恒的终结》" /></p> 
<p>时间旅行真是科幻小说永恒的话题，相较于宇宙的时空尺度，人类的生命与历史真是弹指一挥间。抛开结尾仓促的时间流逝，《三体》在主线部分把时间放大到几百年之间都足以给读者们创造无限的想象，如果这个时间尺度是几十个世纪，几百个世纪，甚至上万个世纪呢？</p> 
<p>这周我们介绍<strong>阿西莫夫的科幻小说——《永恒的终结》</strong>，这部作品就大胆地将时间尺度从 100 个世纪放大到 10000 个世纪，这种跨度很危险，容易信马由缰，天马行空，一不小心情节就要崩掉。所以作家很机智地把故事主线放到一个叫做“永恒时空”的地方，这个地方的人掌握了足够的科技能力可以穿越时空但是不受穿越带来的影响，所以这个时空里的人处于相对稳定的状态，差异也不会很多。一般来说穿越时空一定会带来蝴蝶效应，这种效应就像涟漪一样会变得越来越大，穿越者自身的世界也会受到巨变而产生时空悖论，所以许多科幻作品使用多个“平行宇宙”来自圆其说。但是阿西莫夫的这部小说却不，可以说在这部小说里只有两个“平行宇宙”，一个是绝大部分人所处的“现实时空”，另一个就是不受时空穿越影响的“永恒时空”。由于穿越时空产生的后果可能几乎没有影响也可能影响巨大，旅行者可能穿越一次并没有见到任何人留下任何改变，也可能间接导致某个重要的历史人物挂掉整个世界重写，所以时间旅行是一件非常谨慎的事情。由于“永恒时空”的人有能力不受影响，所以他们事实上掌握了可以改变“现实时空”的能力，他们称之为“变革”。为了精确测量变革带来的影响，形成了许多不同的职位各自负责不同的事务，其中最重要的职位有三个：</p> 
<p><strong>1. 观察师</strong></p> 
<p>负责观察现实时空的整个历史进程，要求绝对客观冷静地汇报自己的观察所得，从而得到完全纯粹的数据，用来交给计算师进行计算。</p> 
<p><strong>2. 计算师</strong></p> 
<p>计算师利用高科技计算机对观察师交付的数据进行计算，从而决定在什么时间点以什么样的事件进行“变革”，大部分时候他们只需要进行“最小程度变革”就好，比如避免人类进入第三次世界大战，避免人类因为全球核战而灭亡之类的。有的时候过了几百个世纪人类变成以秃头为美之类的不符合我们现在的人看上去的奇怪的价值观，也有可能被“变革”掉。</p> 
<p><strong>3. 时空技师</strong></p> 
<p>负责进行变革的人，计算师会告诉他什么时间什么地点干什么事情，时空技师（名字翻译有点囧）只要负责执行就好。由于他是亲自动手实施变革的人，通常会造成原本存在历史上的许多人凭空消失，所以时空技师既是地位非常崇高也是很不受人待见的职位。</p> 
<p>看到这里大家可能已经发现有些不妥了，“永恒时空”里的人简直就是上帝啊！而且，这些人都是从“现实时空”的不同时间点选拨出来，培训淘汰最后上任的，明明都是一样的人，凭什么他们就能根据自己的好恶来决定是不是把“现实时空”的人消失掉呢？这个问题也是这部作品的核心冲突，小说的英文名叫做 The End of Eternity，Eternity 就是永恒时空，所以书名非常明确地告诉我们，小说写得就是永恒时空的终结。</p> 
<p>整部小说看下来时间尺度足够令人乍舌，不过空间上就泛善可陈，基本上剧情都围绕着几个主要角色展开，少有大场面。但是故事的盲点设计得不错，结尾的反转有意思，但是全书节奏有些拖沓，从主角意识到事情有点不对劲开始，进行得有些平平无奇。时间的跨度有 10000 个世纪，但是真正涉及的时间可以说只是简单地分割为近未来和超未来两个部分，可以说是把在普通故事的基础上套了个科幻的背景。</p> 
<p>事实上作者创作这部小说的灵感来自小说最末尾的情节，我们知道 1945 年美国在日本广岛投下了人类历史上第一颗正式应用的原子弹，爆炸产生的标志性蘑菇云给当时的人们留下了极为震撼的印象。1953 年，阿西莫夫在翻阅旧杂志的时候看到一本 1932 年的杂志上竟然刊登了一张蘑菇云照片！当然就把作家给吓到了，然后他仔细一看，其实只是美国黄石公园的 Old Faithful Geyser 喷泉的照片，虽然只是虚惊一场，但是作家灵感突现，下笔成书，短篇小说版的《永恒的终结》诞生了。作家拿着这个短篇去投稿被拒，于是愤而改为长篇，最终与 1955 年顺利出版。阿西莫夫在科幻小说界地位崇高不可忽视，他创立的机器人三定律至今仍左右着我们熟悉的好莱坞科幻大片。《永恒的终结》也被翻译成多国语言在世界各地出版。</p> 
<p>总的来说这部小说比较中规中矩，前半部分比较需要耐心，越往后就越令人兴奋，还是值得一读的。</p> 
<p>16.05.29/下午<br /> At A Legend of Tomorrow</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #123 &#x5DDD;&#x7AEF;&#x5EB7;&#x6210; &#x2014; &#x300A;&#x53E4;&#x90FD;&#x300B;</title>
        <link>https://justinyan.eth.limo/6721352E-54C3-4645-9BF7-622359966DB1/</link>
        <guid>https://justinyan.eth.limo/6721352E-54C3-4645-9BF7-622359966DB1/</guid>
        <pubDate>Sat, 21 May 2016 12:21:38 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/05/jingdu-blog.png" alt="每周读书 #123 京都啊，京都——《古都》" /></p> 
<p>没有东京银座高耸入云的摩天大厦，京都最多的是古色古香的低矮和屋。银阁寺前低吟浅唱的樱花小溪，祇园周边熙熙攘攘的古街窄巷，清水寺里俯瞰京都的崖边舞台，多少年来，京都作为日本天皇的居所，保留了许许多多日本传统之美，这种美是一脉相承的。二战期间东京和京都都遭到毁灭性打击，东京在战后成长为世界上最大的城市之一，而在废墟上新建起来的京都却保持了日本传统的样式，仿佛缓慢行走的古老电车，开过身前留下叮叮余响，又似龙钟老人，走起路来步履蹒跚却踏出黄花朵朵。京都的地铁很糟糕，京都的公车直到几年前才终于让 IC 卡通用，在这个高度发达的文明国家里，京都真是一个特别的存在。</p> 
<p>1961 年川端康成已 62 岁，他动身前往京都，开始小说《古都》的创作，7 年后凭借这部作品以及《雪国》、《千只鹤》，拿下 1968 年的诺贝尔文学奖。相比于前面两部作品，《古都》这部小说没有爱情故事，也没有性描写，《古都》的主角是京都绸缎庄老板捡来的女儿千重子，故事在落樱凄美的晚春开始，这位正值青春年岁的多愁的少女，为自己的身世感到悲伤。后来机缘巧合之下，她遇到了自己的孪生姐妹，而这位妹妹的遭遇与自己截然相反，她被杉木场的主人收养，在山里常年做着辛苦的体力活。</p> 
<p>《古都》的故事感十分平淡，川端康成的小说一贯故事性都不会很强，不会像畅销小说好莱坞大片一样追求各种酣畅淋漓的刺激。川端的文笔就像静静流淌的小河，没有波澜万丈，只有涓涓细流，沁人心脾。《古都》的美可以说是作家的最高代表，作者为了写这部小说特地在京都生活了一段时间，京都是日本传统节日最多的地方，日本的节日都称祭，有些节日是真的从古代流传下来，也有一些是为了纪念古代的人事而由后世创造。一直到今天，京都还有所谓的“京都三大祭”，分别是葵祭、祇園祭和時代祭。京都古刹神社遍地，这些节日构成了京都文化里非常重要的一部分。今天你在京都旅行，还可以看到穿着和服的女子，非常大方，在国内穿着汉服怕是要惹来不少目光。</p> 
<p>《古都》这部小说的成就主要在日本人独特的审美，物哀，幽玄，侘寂，这三者是后人研究日本文学时给总结的三种审美观念。《古都》的物哀表达很明显，明明是落英缤纷赏花的好时节，多思的少女却发出“多么凄美”的感慨。千重子在整部作品中都是忧愁的，赏花愁，看节日游街也愁，与妹妹相见愁，与妹妹分别更愁。</p> 
<p>日本人与人之间的关系非常微妙，这点与中国是类似的，但是比中国的文化要更加地保守含蓄一点，以至于很多时候非常难以读懂对方想要表达的真正的意思。川端康成的隐晦是出了名的，在这部小说里，他也是用自己一贯的手法，把人物应当如何表现直接表现给你看，不加修饰说明，以至于一下子你可能就傻了眼不明白角色做出这个动作说出这句话是意欲为何，还得倒带再看一遍。但是这也是作家的魅力之所在，所谓欲言又止，便是给人留下无限的想象空间。比如在提及千重子的母亲对父亲的态度时，其母亲刻意不提起其父不喜欢的话题，轻描淡写地带过，既体现日本传统女性的温柔体贴，也体现男权社会男性地位的不可一世，更体现其母的软弱的形象。读者可以不必在意识中想到所有这些事情，但是读过就肯定会留下这位温柔软弱的传统日本女性的形象。所谓小说塑造人物的诀窍，与其直接写出来人物多么多么厉害，还不如写他都做了些什么别人做不到的事情。</p> 
<p>《古都》提及的京都的节日是非常多的，三大祭自然是重点，作家把三大祭写得令读者有身临其境之感，再加上许多熟悉的京都的地名，古寺神社的名字，在清水寺舞台看京都的日落，“春天，西山柔和的暮色，几乎把京都的半边天染上了一层淡淡的霞光。”如果不是在京都生活过，对京都的各种文化古迹有所了解，是没办法把这些东西写得栩栩如生，活灵活现的。不止是节日与古寺，连当地人请七尊布袋神回家，每年初午一尊，中间如果家里死了人就要重新来过这样的细节都写了出来，读来仿佛坐在京都小屋的庭院里，在树影摇曳之间听着风声鸦声流水声，京都啊，京都！</p> 
<p>京都的美是素雅的，仿佛给人一种荒凉的病态的感觉。在幽雅的小路间转角晚霞披上天空，沉静如落叶坠地，清雅似檐雨初霁，京都的美是透着日本传统文化的美，是皇家常年式微的哀伤，是尊敬神明的虔诚，是古都朴素的尊严。</p> 
<p>川端康成的这部《古都》是获奖三部作品中我个人最喜欢的一部，毕竟写的是京都，毕竟写的是日本最有传统文化气息的地方，而且是优雅的传统。不是叫做传统的就是好的，也不是所有的老物都能叫做传统。</p> 
<p>16.05.19/夜<br /> At Aloft, Cupertino, CA</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #122 &#x5DDD;&#x7AEF;&#x5EB7;&#x6210; &#x2014; &#x300A;&#x5343;&#x53EA;&#x9E64;&#x300B;</title>
        <link>https://justinyan.eth.limo/30C6DAFD-875F-49FD-83A6-1B2F77D07F00/</link>
        <guid>https://justinyan.eth.limo/30C6DAFD-875F-49FD-83A6-1B2F77D07F00/</guid>
        <pubDate>Fri, 13 May 2016 14:47:48 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/05/122千只鹤cover.png" alt="每周读书-122-千只鹤" /></p> 
<p>《千只鹤》的译名可能大家有点陌生，翻译成“千纸鹤”或者“千羽鹤”就很熟悉了。这部作品是第一位获得诺贝尔文学奖的日本作家川端康成的获奖作，同时得奖的还有他的另外两部作品，《雪国》和《古都》。三部作品枫影读的都是叶渭渠、唐月梅夫妇的中译版，唐月梅老师翻译过三岛由纪夫的多部作品，之前每周读书介绍的三岛的作品都是唐月梅老师的译作。</p> 
<p>数年前每周读书 #28 期介绍了《雪国》一书，虽然故事情节已经模糊了，但是还能记得素净的雪国，仿如世外的温泉小屋，弹三味线的艺伎。川端康成的这三部获奖作品，故事性都不是很强，但是都柔美得不可思议，仿佛溪上落樱款款，艺伎打开木窗，外面的世界银装素裹，屋里还有一种睡眼惺忪的迷蒙，提起《雪国》我大概还能有这么一个印象。</p> 
<p>说起《千只鹤》，能够留下印象的，却不是主人公菊治在茶会邂逅的稻村小姐小包上纯洁的千只鹤，而是数次菊治在回家的电车上，看着黄昏夕照下的城市，街道如镀金色，阳光有些刺眼，却梦幻中透着神秘。一次是稻村小姐在家里等着自己，一想到就快见到这位令自己怦然心动的，仿佛另一个世界的纯洁的小姐，心里十分舒畅，仿佛看到她抱着缀有千只鹤的粉红色绉绸小包，走在黄昏的街道上。</p> 
<p>《雪国》的故事讲的是身世凄苦的艺伎与主人公在美丽的雪国的情感故事，一般来说艺伎是卖艺不卖身的，但是在这个苦寒之地，艺伎伴游提供性服务是大家心照不宣的事情。《雪国》发表的时间是 1935 年，作家 36 岁，事实上川端康成被三岛称为“永恒的旅行者”，《雪国》一作是有真人原型的。到了 1949 年，《千只鹤》连载开始，这部作品以茶道为线索贯穿整个故事，全书分为五个部分，第一部分是与作品同名的千只鹤，菊治的父亲三谷先生去世数年后，父亲昔日的一个情人邀请他参加茶会。茶会上遇到了抱着千只鹤小包的稻村小姐。不仅如此，还遇到了父亲死前的最后一个情人，太田夫人及其女儿文子。太田夫人的丈夫生前是菊治父亲的好友，去世后父亲帮忙收拾茶具于是和太田夫人相好。以这个茶会为契机，原本平平无奇的世界由菊治与太田夫人的相遇掀起了波澜。</p> 
<p>三部作品中也许《千只鹤》是故事性最强，道德冲击最厉害的一作了。能够把禁忌话题描写得心淡如水，是川端康成的本事。同样是写禁忌话题的渡边淳一郎，还安排了有夫之妇在长辈逝世的丧礼当天，偷偷跑出去与情人约会这样令人诧异的事情，渡边在描写两人背德幽会时的内心是害怕的，因为叛离道德而感到莫名的快感的。但是川端康成不这样，菊治与自己的父亲生前的情人约会留宿，而且后来又把这份爱转移到她女儿文子身上，这件事情本来是多么糟糕多么惊世骇俗呀！但是在作家笔下，仿佛一切有了爱就可以平静地说出来，仿佛一切有了爱就可以很自然。读者在阅读作家写出来的文字的时候，往往会陷入作家设定的环境与氛围，被作家牵着走。川端康成厉害的地方就在于他能把世上最禁忌的东西都幻化成日式的朴素平静的，淡淡的哀伤。</p> 
<p>川端康成生于 1899 年，是经历过二战的作家，1970 年三岛由纪夫切腹自杀，17 个月后川端康成在公寓里吸煤气自杀。他们所处的年代是不那么宽容的年代，是充满无限变革的年代。三部获奖作品分别写于作者的中年与晚年，都仿佛平和婉转柔美温软，但都透着哀伤。《千只鹤》有几篇的结尾都展示了一个意味深长的场景，前面提到的电车上看到通红的夕阳是一个场景，也有这样的：</p> 
<blockquote>
 <p> 菊治纹丝不动，久久地坐在那里赏花。<br /> 洁白和浅红的花色，与志野陶上的釉彩浑然一体，恍如一片朦胧的云雾。<br /> 他脑海里浮现出文子独自在家里哭倒的身影。 </p>
</blockquote> 
<p>菊治的家是传统的日式大宅，多数读者应该都能想象出那样一个场景，独坐自家院子，面对园里的树木花草，阳光在地上摇曳树影点点，时有鸟鸣在枝桠间婉转。川端康成的小说里充溢着许多这样的日式美学。1968 年川端康成获诺贝尔文学奖，现在我们知道这类奖项除了评定作家的写作能力之外，还带有些其他的意义，川端康成是第一个获奖的日本作家，他把日本传统的审美通过文字表达得淋漓尽致。有些小说会让人读起来酣畅淋漓，像东野圭吾的通俗小说那样好读，川端康成的小说则属于雅小说（纯文学），也许不那么富有大众娱乐性，却带有非常强的可观赏性，读《雪国》仿佛在粉雪漫漫的世界里走了一回，读《千只鹤》仿佛在幽静的茶室里点一次茶，读《古都》像在古刹遍地的京都里参拜一番。</p> 
<p>《千只鹤》发表后不久，川端康成还写了一个续集，名为《波千鸟》，同样来自稻村小姐，不过这次是衣服上的纹样。《波千鸟》的后半部分主要是文子小姐的旅行书信，读之如读作家的旅行游记，仿佛穿越小半个日本，做一次孤独的旅行。连面对这样美丽的风景都是孤独的。一般现在出版的《千只鹤》应该都附有《波千鸟》。</p> 
<p>三部获奖作品枫影个人觉得《古都》是最有意思的。《雪国》和《千只鹤》都有性描写，唯独《古都》没有，不过这类描写作家都写得非常含蓄，与渡边淳一郎直接大胆截然不同，三岛由纪夫和太宰治的作品也会有这样的描写，川端康成是这几位名作家里面最含蓄的一个了，当你读到某一句的时候可能得思考一下才知道到底发生了什么事情。</p> 
<p>由于这三部作品的故事性相比其他小说要平淡得多，所以最大的看点还是作家一清如水的文风，欣赏美景，体会意境。《古都》比其他两部有意思的点就在于，它不仅仅描写了日本人与人之间微妙的关系，还写了京都许多传统节日，这些节日的形式和场面在作家的笔下栩栩如生，令读者仿佛身临其境。如果去京都旅行，还可以对照作品里的地方和传统，一一探寻，颇有趣味。《古都》我们下周再作介绍。</p> 
<p>16.05.13/中午<br /> 于 T.i.T</p> 
<h3>参考资料</h3> 
<p>枫影读的《千只鹤》为南海出版公司 2013 出版的版本，ISBN 为 9787544265584 <a href="https://book.douban.com/subject/24736900/">豆瓣链接</a><br /> 此书购于广州东方红创意园的禾田书房，是个很有意思的地方，就是蚊子特别多（笑</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6BCF;&#x5468;&#x8BFB;&#x4E66; #121 &#x82A5;&#x5DDD;&#x9F99;&#x4E4B;&#x4ECB; &#x2014; &#x300A;&#x7F57;&#x751F;&#x95E8;&#x300B;</title>
        <link>https://justinyan.eth.limo/BD3B4940-B6CA-4315-81D3-D4C68509C30B/</link>
        <guid>https://justinyan.eth.limo/BD3B4940-B6CA-4315-81D3-D4C68509C30B/</guid>
        <pubDate>Thu, 05 May 2016 10:00:01 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/05/Cover-mp.png" alt="罗生门" /></p> 
<p>对很多读者来说，罗生门可能是一个既熟悉又陌生的词，我们在很多地方都看见过它，但对其含义却往往一知半解。这个词最早指日本古代城池的正门，但是现在如果一件事情扑朔迷离，涉事各方各执一词，互相矛盾，那么可以称为“某某罗生门”，或者“谁谁身陷罗生门”。那么这个词是怎么演变成这样的含义呢？</p> 
<p><strong>一、城门</strong></p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/05/002罗城门.001.jpeg" alt="罗城门" /></p> 
<p>我们先看“罗生门”的本意。日本在奈良时代和平安时代，当时是日本派遣遣唐使的时代，两座京城都是仿造唐朝的长安城而建。唐代筑城一般都有两重城墙，里圈为子城（内城），外圈为罗城（城郭），如果是京城则子城会变成一圈皇城套一圈宫城，今天广西西安的城墙大概就是以前皇城的一圈。有城墙就会有城门，“罗生门”指的是罗城的正门，名为“罗城门”，有人说日语中“罗生”与“罗城”的汉字读音相近所以被写成“罗生门”，会日语的读者可以考究一番。不过总的来说，“罗生门”指罗城的正门是没错的了。</p> 
<p><strong>二、芥川龙之介的小说</strong></p> 
<p>1915 年，日本作家芥川龙之介发表的小说《罗生门》就是以罗城门楼为背景。故事发生在平安时代晚期，当时武家势力崛起，皇家日渐衰落，日本国内战火连连，再加上饥荒，罗生门破败不堪，一个被赶出主人家门的武士在破落的罗生门下躲雨，正愁不知以后何处安身，也许得放下武士身份，落草为寇。且不说是否要当强盗，只是当晚便不知留宿何处，正想往罗生门楼上借宿一宿。当时饿殍遍野，罗生门城楼变成了胡乱丢弃尸体的地方，武士深更半夜踏上楼梯，心中不免惴惴。刚上得楼来看到有灯火烛光，发现一个形影摇晃，心中发毛，定睛一看是一老妪，在拔一具女尸的头发，准备拿去卖钱。武士怒而指责老妪，岂料对方驳道，那死去的女子生前以蛇肉假成鱼肉骗人维生，她这是罪有应得。武士心中绝望，转念一想，大家都是为了生活，于是把老妪放倒，扒了衣服拿去卖了。</p> 
<p>这个短篇小说充满了阴暗与丑恶，故事中人人良心尽失，芥川龙之介有许多作品都倾向于揭示人性丑陋的一面。今天我们知道芥川龙之介名气很大，日本有名的出版社文艺春秋的创办人菊池宽就以芥川龙之介和直木三十五两位作家之名，设立了奖励雅小说（纯文学）的芥川奖以及奖励通俗文学的直木赏，这两个奖现在已经是非常有份量的大奖。但是在写这篇小说的时候，芥川尚未成名，在当时也没有引起很大重视。现在我们在国内常见的以《罗生门》为名的出版物，大多是芥川龙之介的<strong>短篇小说合集</strong>，只不过把《罗生门》放在首篇而已。单纯从小说的艺术成就来说，这个短篇足够精巧，却算不上多么震撼的作品，芥川的其他作品比如《竹林中》、《地狱变》、《河童》都是故事性更强，更加跌宕的小说，而随笔集《侏儒的话》则以短小精悍的句子阐述了作家一生的领悟，读来时有顿悟之感。<strong>所以本周读书以罗生门为引子给大家推荐芥川龙之介的短篇小说，基本上随便买一本以《罗生门》命名的书应该都会包含上述几个芥川的代表作</strong>。（枫影读的是 z.cn 卖的 Kindle 版，ISBN: 9787550244177）</p> 
<p><strong>三、黑泽明的电影</strong></p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/05/003罗生门电影.jpg" alt="罗生门电影" /></p> 
<p>但是今天我们所知的“罗生门”却与芥川的原作大相径庭，这个词的走红来自于 1950 年日本史上最伟大的电影导演黑泽明所执导的电影——《罗生门》。这部电影在日本电影史上具有里程碑式的意义，1945 年二战结束，日本作为战败国损失惨重，但是却在短短 5 年内就凭借这部电影在国际上拿下数个大奖，西方世界通过黑泽明重新认识亚洲文化市场。这部电影的场景取自小说原著的城楼躲雨，但是故事情节却来自芥川的另一部小说——《竹林中》。</p> 
<p>这部小说使用了比较特别的叙事结构，分别从旁观报案者、浪人罪犯、被强奸的女受害者和被杀害的男武士的鬼魂等多个角度，各自对同一件事情讲述了截然不同的版本。常常有人把这个短篇与美国记者 Ambrose Bierce 的恐怖小说 The Moonlit Road 做比较，二者都是以不同的人物视角说出相互矛盾的内容，也都是以鬼魂的自述作结尾。但是 Ambrose Bierce 的小说可以在结尾自圆其说，而芥川的则不行，说得好听是开放式结局，说得难听点就是兜不回来了。所以在黑泽明改编的电影中，增加了农夫的角色，通过碰巧目睹一切的农夫道出一个完整的故事。电影中每个人物的自述都是把自己美化成好人，把其他人丑化成恶人，农夫的说法其实就是把每个人口述的恶人的形象叠加在一起，得出三个恶人的结局。而农夫本身也躲不过内心作恶的欲望，在武士被杀，强盗与女人逃离之后，偷偷拿走了武士的宝剑。</p> 
<p>这个改编既符合原著，又给了这个故事一个圆满的结局，确实精妙。在电影的结尾，导演给决意抱养被丢弃的婴儿的农夫打了一个雨过天晴的夕照，这个细节跳脱了原著的绝望情绪，把这部阴暗的电影扭转成希望了！战后的日本是一个充满不确定的世界，美军的进驻，百废待兴的荒芜，民众普遍保持茫然消极的生活态度，在这种背景下，黑泽明的电影中传达的光明无疑是一道圣光，让人在阴暗中看到一丝希望。</p> 
<p>16.04.23 / 下午<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x4E66;&#x5355;] &#x67AB;&#x8A00;&#x67AB;&#x8BED;&#x2219;&#x6BCF;&#x5468;&#x8BFB;&#x4E66; 113&#x671F;-120&#x671F;</title>
        <link>https://justinyan.eth.limo/E063968E-289C-4AD9-ABCD-6EAFA6D49E8C/</link>
        <guid>https://justinyan.eth.limo/E063968E-289C-4AD9-ABCD-6EAFA6D49E8C/</guid>
        <pubDate>Tue, 03 May 2016 14:23:37 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/05/sd-113-120.png" alt="书单 枫言枫语∙每周读书 113期-120期" /></p> 
<p>从 #113 到 #120 每周读书正好介绍了一套完整的“剑桥艺术史”。</p> 
<ol> 
 <li><a href="http://justinyan.me/post/2710">每周读书 #113 学会欣赏画作——《剑桥艺术史：绘画观赏》</a> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/113looking_at_pictures_mp.png" alt="" /></p> <p>2016-03-11</p> <p>生活本来就应该是很有趣的事情，如果整天让消极负面充斥了自己，那与浪费生命有什么区别？欣赏艺术不过是许多有趣的事情的其中一件，只是如果欣赏不了艺术，大约与不识字一般，少了一项生活的乐趣了。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2736">每周读书 #114 古希腊罗马艺术为何令人着迷——《剑桥艺术史：古希腊罗马艺术》</a></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/cover_115_greek_rome_mp.png" alt="" /></p> <p>2016-03-18</p> <p>古希腊罗马的雕塑与建筑，至今仍备受世人赞叹，为什么这些古典艺术会如此令人着迷呢？</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2748">每周读书 #115 教堂！教堂！教堂！——《剑桥艺术史：中世纪艺术》</a></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/115zhongshijiyishu_cover.png" alt="" /></p> <p>2016-03-25</p> <p>欧洲中世纪前期，北方蛮族入侵，混乱而黑暗，但后期蛮族稳定了之后还是发展出非常有特色的艺术，其中能够留存下来的作品基本都是建筑，而中世纪是基督教统治的时代，所以这段时间的艺术简单地说就是：宗教，宗教，宗教；教堂，教堂，教堂。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2762">每周读书 #116 天才辈出的时代——《剑桥艺术史：文艺复兴》</a></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/cover_116_wenyifuxing_blog.png" alt="" /></p> <p>2016-03-30</p> <p>从古希腊罗马到中世纪哥特式再到文艺复兴，从波提切利到提香到文艺复兴三杰，这些天才们一个比一个令人兴奋，最后整个文艺复兴在米开朗基罗的末日审判中，终结于基督那决绝的手掌。读文艺复兴如读激昂的小说，跌宕起伏之间，仿佛经历了一场天翻地覆的改变。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2780">每周读书 #117 所谓巴洛克——《剑桥艺术史：十七世纪艺术》</a></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/mp_cover_117.png" alt="" /></p> <p>2016-04-08</p> <p>17 世纪是欧洲大航海时代结束，开始兴盛繁荣的时代，尽管没有像文艺复兴一样天才辈出，但是既有贝尼尼、伦勃朗这样才华横溢的人，也有像卡拉瓦乔这样带来革命性的光的艺术，本身却放荡不羁的浪子。这段时期的艺术名为——巴洛克艺术。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2794">每周读书 #118 从洛可可到新古典主义——《剑桥艺术史:18 世纪艺术》</a></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/cover_118_blog.png" alt="" /></p> <p>2016-04-14</p> <p>巴洛克后期，装饰性极强的「洛可可风格」从巴黎宫廷扩散到整个欧洲。随后庞贝古城的发掘带来了一股古典废墟之美，古典艺术借由新古典主义之风再度兴起。这是个贵族「大旅行」的时代，也是法国大革命和工业革命带来巨变的时代。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2811">每周读书 #119 从浪漫主义到印象派——《剑桥艺术史：19 世纪艺术》</a></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/cover-119.png" alt="" /></p> <p>2016-04-23</p> <p>如果说文艺复兴确立的以科学为基础的规范是近代艺术的开端，那么 19 世纪的“印象派”就是所谓“现代艺术”的起点，“印象派”一直影响到 20 世纪的立体主义，艺术家的传统束缚在这个时代开始获得全面解放，而这一切，得从“印象派”说起。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2825">每周读书 #120 什么是艺术？什么是艺术家？——《剑桥艺术史：20 世纪艺术》</a></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/cover%E6%AF%95%E5%8A%A0%E7%B4%A2-mp.png" alt="" /></p> <p>2016-04-27</p> <p>以毕加索为首的立体主义运动是 20 世纪第一个新艺术运动，艺术家从此极大地解放了自己的想象力与创造力，可以毫不夸张的说，整个艺术史中 20 世纪的解放是最令人激动的一段。</p> </li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #120 &#x4EC0;&#x4E48;&#x662F;&#x827A;&#x672F;&#xFF1F;&#x4EC0;&#x4E48;&#x662F;&#x827A;&#x672F;&#x5BB6;&#xFF1F;&#x2014;&#x2014;&#x300A;&#x5251;&#x6865;&#x827A;&#x672F;&#x53F2;&#xFF1A;20 &#x4E16;&#x7EAA;&#x827A;&#x672F;&#x300B;</title>
        <link>https://justinyan.eth.limo/BFBB4A20-AADF-4CF5-8287-2314B3C0456A/</link>
        <guid>https://justinyan.eth.limo/BFBB4A20-AADF-4CF5-8287-2314B3C0456A/</guid>
        <pubDate>Wed, 27 Apr 2016 13:50:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/cover毕加索-mp.jpg" alt="每周读书 #120 什么是艺术？什么是艺术家？——《剑桥艺术史：20 世纪艺术》" /></p> 
<h2>一、20 世纪艺术</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/001我们从哪里来-blog.png" alt="高更-我们从哪里来-我们是谁-我们往哪里去" /></p> 
<p>1897 年完成这幅巨画的时候，高更已身患重疾，大溪地荒蛮原始的环境给了画家无穷的创作源泉，也给了他贫病交加的苦痛，是不是非得经历常人无法体会的苦难才能见到常人所看不到的东西？这个世界每一分每一秒都放射在无穷无尽的信息，我们从可见光接收的，我们从听觉接收的，我们从自己的脑海中构建的既不可视也不可闻的。当疯狂的信息流不可阻挡地涌入我们的大脑，哪些无法过滤信息噪音的人，很可能就成了所谓的“疯子”。艺术家是可以接受比常人更多信息的人，不过他们与疯子不同，疯子分辨不出来幻觉与真实世界，但是艺术家可以。</p> 
<p>不过艺术史上很长的一段时间里，艺术家无法自由自在地表达自己内心疯狂的世界。梵高和高更是 19 世纪末后印象派的代表，他们的作品中所表达的个人情感明显要比古典作品狂放得多，这是当时的一种趋势，艺术家通过表达自己的想法，企图去应对这个瞬息万变，可爱又可恨的世界，艺术作品是艺术家对这个世界的态度。为了达到惊世骇俗的效果，为了充分表达艺术家内心汹涌澎湃的信息狂潮，越来越多的人采用反传统的艺术手法进行创作。印象派的手法已经足以给观众造成感官上的刺激，无论是莫奈的明暗交错、转瞬即逝的光影效果，还是梵高色彩艳丽、气氛诡怖的惶惑不安，都是跳脱文艺复兴以来学院派的透视技巧，跳脱和谐平衡宁静美好的传统美学，试图以艺术家自身的强烈思绪感染观者的手段。</p> 
<p>到了 20 世纪这个充满巨变的时代，这种突破传统的趋势获得无与伦比的发展。在这个时代，两次世界大战给全球带来灾难同时也带来重组，科技的高速发展给社会带来新的思想也带来对传统的质疑，人们不再关注过去，而是把目光放到当下与将来。历史也好传统也好，在我们所生活的今天，已不再是主导地位。以前社会变化缓慢，有丰富人生经验的老人备受尊崇，但在今天，年轻人的好奇心与学习能力越来越成为主流，社会变革太快，也变得越来越宽容，我们可以质疑任何一种传统权威，可以提出任何在以前看来惊世骇俗的问题。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/002毕加索-亚维农少女-blog.png" alt="毕加索-亚维农少女" /></p> 
<p>1907 年西班牙艺术家巴勃罗·毕加索的画作《亚维农少女》展出，这幅人形扭曲扁平，几乎没有提现空间的画作在当时颇具争议。这幅画描述的是西班牙一所妓院的场景，画中人似乎是由女性身体上的许多小平面构成的，它们是从多个不同的方向观察而成，但是拼在一起却很难一眼辨认出来。毕加索还借用了原始艺术，左边第一个女性的脸像古埃及的人物形象，右边两个则仿佛戴着非洲面具一般。毕加索的这幅画是背离传统的，即使是毕加索的朋友也有人对这幅画持批评态度，野兽派的代表马蒂斯就认为这幅画不过是个玩笑。</p> 
<p>但是不管评论的声音是批评也好不解也好，以毕加索为首的“立体主义”仍然是 20 世纪的第一个新艺术运动，也是影响十分深远的一个运动，这个运动，就从这幅《亚维农少女》开始。</p> 
<p>立体主义运动分三个阶段，从探索到分析解构再到最后的综合立体主义，形体越来越不受重视，被越来越多地分解，但实际上艺术家又不能完全抛弃形体，否则画面上的东西就认不出来是什么东西。无论再怎么抽象，绘画始终是一种视觉艺术，如果不能让我的眼睛看见什么，就无从表达任何东西了。当然有人说什么都没有可以表达“空”，但是“空”真的什么都没有吗？一张空白的画布放在展览馆精心布局的空间里，灯光的颜色打在画布上，画布的纹理，灯光的角度造成的墙上的阴影，这些可都是作品的一部分啊。20 世纪有许多艺术运动，其中至上主义就是追求用最为“纯粹”的形状与颜色来表达“纯粹”的意识或者无意识，并且不受任何思维形式的干扰，按照这种思维发展，最后至上主义的代表马列维奇在白纸上画下了一个白色的方块，这就是这种追求所能到达的极限。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/004马列维奇-白方块-blog.png" alt="马列维奇-白色上的白方块" /></p> 
<p>20 世纪之所以出现这么多“奇怪的”抽象艺术流派，是因为艺术家要突破传统，于是他们往往抓住艺术形式中的某一个方面进行最大程度上的发挥。立体主义就是从形体的解构上入手，把传统绘画中描绘实物的技巧彻底分解，可以说，这些艺术形式都是一种试验，是在探索新艺术形式的方式。理论上立体主义艺术家可以尽可能多的表现物体的方方面面，但是在实践中，人们却往往难以识别这些破碎支离的形状，比如立体主义的另一位代表乔治·布拉克的两幅画作，房屋、静物与鱼的形体被分解四散，以及毕加索的拼贴画，这些东西抽象到简直不知所云。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/003布拉克-blog.png" alt="乔治布拉克" /></p> 
<p>关于立体主义为什么要反对使用绘画来造成真实的错觉，我们不得而知。事实上如果把绘画局限于传统的对真实世界的模仿，那么艺术所能表达的内容就有些狭窄。从前几周的介绍中大家可以发现，古代的艺术家在事实上更像是一名工匠，古希腊的工匠在制作雕像的时候不满足于从埃及模仿来的僵硬形态，于是在解决一个个技术问题的过程中发展出现实主义的审美与技艺，古罗马则是统治整个欧洲大陆的帝国，帝国的艺术最耀眼的地方在于恢宏的建筑以及无与伦比的大工程。到了中世纪，艺术家们为宗教服务，这时与其说艺术家是为了艺术而创作，还不如说是为了教会而制作传教的工具。文艺复兴的艺术家们得以在一个相对宽容的环境下工作，虽然也需要根据赞助人的要求来制作艺术品，但是已经开始慢慢脱离匠人的束缚而追求艺术家内心的美学向往。</p> 
<p>那么在今天我们所生活的这个世界里，艺术到底是什么？艺术家又是什么？以前可以说希腊人需要建设神庙，艺术家就是设计神庙，雕刻塑像的人，文艺复兴时期的贵族与商人们需要建设自己的宫殿与公馆，艺术家就是设计建筑，制作装饰画与雕像的人。在这样的时代，没有摄影术，能够真实地描绘出现实世界的样子的艺术家是很吃香的，肖像画在很长一段时间是王室的专利，普通人是没有自己的肖像画的。但是摄影术出来了，书籍成为了廉价的消费品，电影电视剧几乎是每一个人都可以触及的娱乐，还有电子游戏，还有互联网，在这样一个物质极大丰富的时代，艺术已不再是人们认识世界，学习学习知识的主要途径，艺术家在当代，亟需找到自己新的位置。</p> 
<p>可以说 20 世纪的艺术史，就是围绕着这两个问题在进行探索与讨论。立体主义是第一个打破传统的运动，它只用了很短的时间，就打破了西方绘画中的一切禁忌和传统，虽然立体主义到底想要表达什么，我们并不清楚，甚至艺术家本人也说不清其中带有神秘主义的部分，但这并不妨碍立体主义对后世的影响。艺术家从这个时代开始，极大地解放了自己的想象力与创造力，可以毫不夸张的说，整个艺术史看下来，20 世纪的解放是最令人激动的一段。但是也是最危险的一段，探索的过程总免不了走弯路，可以说，现代艺术中最好的那部分作品，与传统艺术中的经典相比较，少了许多内容。尽管评判一件艺术品不能单以技术作为衡量标准，但是我们既然允许质疑传统，当然也应当允许质疑现在，我觉得包括毕加索、马蒂斯等大师在内的最著名的作品，在观感上确实不如古典主义作品来得细腻与精致。所以我个人的内心是期望在未来有一种新的艺术，能够既包含古典主义的细腻和精致，又具有现代艺术的奔放与自由，可以想见，那将是一种多么令人兴奋的艺术啊！</p> 
<p>16.04.26 / 夜<br /> 于自居</p> 
<h2>二、关于当代艺术</h2> 
<p>今晚杜蕾斯直播百人试戴保险套，最后发现是一场大忽悠，有人说这是一场行为艺术，我倒觉得“行为艺术”这个词用得太滥，实际上网路上流传的所谓“行为艺术”并不被多数人承认属于“艺术”的范畴。在这个宽容的时代，你必须允许不同的艺术形式的出现，但是泛滥的概念又容易混淆公众的视野，导致“艺术”的界限日渐变得模糊。</p> 
<p>毕加索在《格尔尼卡》这幅画里，是当时所有抽象艺术中使用大众语言表达大众意识最为清晰的一件作品，也因为这一点它显得如此与众不同，值得被大家一遍又一遍地提起。艺术家在创作的时候常常试图用自己的理解去表达大众的共同意识，大众在观看艺术品的时候通过自己的想象去完成一件作品，如果艺术家的传达技巧足够好，情感足够饱满，内涵足够深刻，主题足够动人，这件艺术品就很能与大众取得共鸣。当代出名的艺术家往往在大众语言这一点上做得很好，所以他的作品流传足够广，他的商业价值也就足够高。比如国内的当代艺术家岳敏君的代表形象：大笑的男人。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/006岳敏君-大笑男3-blog.png" alt="岳敏君" /></p> 
<p>他所使用的表达手法足够新颖，足够吸引大众目光，同时又针对当下社会作出强烈的嘲讽，观众从这个大笑的男人脸上的表情看到不和谐，看到可笑，感到不安，于是感到内心的触动。但是在国内进行文化创作有太多限制，许多敏感的话题艺术家们没法触碰，一碰就死，所以最多只能消费“革命”，消费当下，消费不触碰底线的内容。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/007当代日本艺术-blog.png" alt="日本当代艺术家" /></p> 
<p>这点上日本的环境要宽松得多，不管是罹患精神疾病使用波点来表达世界的草间弥生，还是使用高额头邪恶小女孩形象的奈良美智，抑或直接嘲讽日本火热的动漫行业，把动漫手法与传统日本画结合的村上隆，他的“五百罗汉图展”以 2011 年造成日本核泄漏事件的“东日本大地震”为灵感，号称要构建日本人心中新的精神寄托。这些艺术家都是商业上的成功者，我们活在当代所以还会有很多聚光灯以外的东西我们看不到。卡拉瓦乔是在死后很多年才被考古学者和艺术史学者重新发现的，历史上许多有名的画家不管在他生活的年代是光芒四射还是籍籍无名，都有可能因为时间的原因而被埋在历史的沙堆中等着有一天有人去发掘。我相信当代艺术家里还有许许多多默默无闻但是极富创造力的人，20 世纪以后的艺术是属于我们这个时代的艺术，也是我们正在经历的艺术，所以是我们所无法归纳进史书，一句话讲清楚的艺术。</p> 
<p>在这个艺术史系列结束之前，我想发一句感慨，我觉得我在学习这个主题之前，对于所谓的“艺术”的了解实在太少。都怪 20 世纪，都怪这短短的几十年就把整个艺术史搞得天翻地覆的现代艺术，我们现在看不懂的，我们现在觉得新奇又陌生的这些东西，其实不过近期才出现的，更早以前它全然不是这个样子。以前有朋友跟我说过，你这样看书没有主题呀。那时候我觉得自己读书最主要的目的还是娱乐，跟看电影电视剧一样，不过在娱乐之余做点笔记，可以顺便学点东西，即便是一本小说，你也可以学习作者写作的技巧。到了今年年初，我是不是该做点改变了，于是“要不要挑一个主题来看书呢？”这样的念头很自然地就跑出来。</p> 
<p>当时我正在读毛姆以高更为原型的小说——《月亮与六便士》，便想学学欧洲的文化与历史。于是从北欧神话到希腊神话到艺术史，阅读的过程中我通过维基百科与网路上的欧洲历史介绍视频补充背景知识，一路下来竟然从一个艺术小白到能够稍稍理解艺术作品了。</p> 
<p>“挑一个主题来看书，好像也不是什么坏事嘛。”</p> 
<p>不过这样连续不断地只看一个主题会有点累，所以虽然下一周的读书还没写，不过我已经看了几本小说调剂一下了（笑）。后面我会把学习的过程分享一下，比如如何从一个艺术小白慢慢学会欣赏艺术，比如如何在阅读完一本书之后能把重要的东西记在笔记中和脑子里，这过程中笔记是我个人用得最多的工具，看过的东西很快就还回去了，唯有写下来的东西能成功脑中的一部分。</p> 
<p>共勉。（好老土，你是哪个年代的啊喂</p> 
<p>16.04.27 / 凌晨<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #119 &#x4ECE;&#x6D6A;&#x6F2B;&#x4E3B;&#x4E49;&#x5230;&#x5370;&#x8C61;&#x6D3E;&#x2014;&#x2014;&#x300A;&#x5251;&#x6865;&#x827A;&#x672F;&#x53F2;&#xFF1A;19 &#x4E16;&#x7EAA;&#x827A;&#x672F;&#x300B;</title>
        <link>https://justinyan.eth.limo/6AB3573F-78FE-45AB-A0BB-1BD4EFEED035/</link>
        <guid>https://justinyan.eth.limo/6AB3573F-78FE-45AB-A0BB-1BD4EFEED035/</guid>
        <pubDate>Sat, 23 Apr 2016 13:56:44 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/cover-119.jpg" alt="119从浪漫主义到印象派" /></p> 
<p>在画展上盯着一幅空白的“画”一动不动看上半天，眉头紧皱，双目炯炯，仿佛陷入深思的样子。身边的观众或跟着看画思虑，或瞥一眼不知所云悄然离去。不知道艺术家见到观众们盯着白纸故作深沉的样子会不会觉得好笑。</p> 
<p>“这就是所谓的世人吧。”</p> 
<p>我在许多不同的画展上都看到过类似的“白纸”展品，有突出纸张纹理与颜色的所谓 Haptic 的，也有在铜版纸上压制大量骷髅的所谓现代的地狱的，还有不知所云简直像工作人员拿错了一块空白画板挂上去的。而这些展品无一例外只有在“现代艺术”的展览中才能看到，在这些“画作”当中你找不到古典艺术的明暗、透视与解剖，原本在古典作品中只是以暧昧形式表达的想法，在“现代艺术”中被无限放大，以至于让观众产生距离感，以至于让大家误以为只要看不懂的，就可以叫艺术，只要是艺术的，多多少少都看不懂。</p> 
<p>这几周我们一直在介绍欧洲的艺术史，一直到上周介绍的 <a href="http://justinyan.me/post/2794">18 世纪艺术，从洛可可到新古典主义</a>，这些造型艺术中的人物形象也好，风景实物也好，都是清晰可辨的，那么艺术史上从什么时候开始转变成今天我们所熟悉又陌生的“现代艺术”呢？</p> 
<p>答案是：“<strong>印象派</strong>(Impressionism)”。</p> 
<p>如果说文艺复兴确立的以科学为基础的规范是近代艺术的开端，那么 19 世纪的“印象派”就是所谓“现代艺术”的起点，“印象派”一直影响到 20 世纪的立体主义，艺术家的传统束缚在这个时代开始获得全面解放，而这一切，得从“印象派”说起。</p> 
<p>“印象派”并不是历史的跃迁，而是对传统的延续与发展。19 世纪的传统是以新古典主义为主的学院派，世界上第一个皇家美术学院是在 17 世纪由太阳王路易十四创建的，野心勃勃的太阳王连艺术都要收归自己控制。到 19 世纪，整个欧洲的所谓“正统艺术”就是由学院派决定的，学院派艺术基本上继承自文艺复兴以来的规范，虽然文艺复兴到巴洛克、洛可可、新古典主义之间有些区别，但还没到艺术家把一个夜壶拿出来展览的地步。学院派有学院派的规矩，遵循人体比例，强调科学的透视，强调和谐与平衡，这些传统在今天看来仍有非常高的美学价值，文艺复兴确立的科学的素描方法也是今天学习绘画的学生们入门必修的课程。但是对于内心激情澎澎湃湃的艺术家们来说，统一按照学院标准进行绘画反而是一种对思想情感表达的束缚。</p> 
<p>没有突破就没有进步，历史的进步从来都是由一小部分勇于突破的人冲出现有的认知而推进的。但是必须认清的一点是，这种突破不是基于无知的叛逆，往往反抗学院派最激烈的艺术家，都是受过非常艰苦的学院派训练的，扎实的基础是突破的前提。19 世纪法国著名的浪漫主义画家——<strong>欧仁·德拉克洛瓦</strong>最早是跟雅克-路易·大卫学画的，而大卫是 18 世纪末最著名的古典主义画家。后来德拉克洛瓦厌倦了古典主义呆板的人物表现，于是开始通过更加宏丽的色彩，粗旷的笔触，表达更为张扬的人物情感。典型的新古典主义绘画我们可以看一下<strong>雅克-路易·大卫</strong>的《荷拉斯兄弟之誓》和《马拉之死》。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/001-路易大卫-Blog.png" alt="雅克-路易·大卫——新古典主义" /></p> 
<p>构图精致，形象鲜明，明暗清晰，整体和谐，给人宁静优雅之感。而德拉克洛瓦的作品则情感张扬，色彩艳丽，当时学院派规定历史题材画的主题必须是远离当前时代的，但是德拉克洛瓦作的历史画却取材于当下，比如下面这幅<strong>《领导民众的自由女神》</strong>。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/002德拉克洛瓦-自由领导人民.jpg" alt="德拉克洛瓦-领导民众的自由女神" /></p> 
<p>这幅画可以说是德拉克洛瓦名气最大最广为人知的画，此画作于 1830 年，画中所述正是当年法国 7 月革命事件，场面宏大，用色对比强烈，以金字塔三角形构图，情感的顶点在自由女神高举旗帜的姿态上达到高潮。与新古典主义相比，浪漫主义更倾向于释放艺术家的个人思想与情感。</p> 
<p>传统视觉造型艺术除了绘画还有雕塑与建筑，《剑桥艺术史：19 世纪艺术》<em>一书没有对建筑做太多描述，但是与 19 世纪的雕塑，却专门特写了著名的雕塑家——<strong>奥古斯特·罗丹</strong>(Auguste Rodin)。罗丹是个现实主义雕塑家，他有一具举世闻名的雕塑想必大家都听说过：</em>沉思者。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/003沉思者.png" alt="罗丹-沉思者" /></p> 
<p>罗丹在职业生涯早期不被人承认，1877 年他在巴黎沙龙上展出的雕塑作品《青铜时代》饱受争议，有人诬陷罗丹是以真人模具制造的这件雕塑，但这些非议却让罗丹名声大噪，1880 年巴黎政府在让罗丹给新博物馆（Musée des Arts Décoratifs）铸造一座青铜大门，尽管这座大门从来没能真正放到新博物馆上，但是罗丹依然为这件作品倾注了数十年的心血，他的雕塑技艺也在这件作品上达到顶峰。这座大门取材于但丁的《神曲》，名为《地狱之门》(The Gate of Hell)，《沉思者》是门上的一个形象，表现的是诗人但丁在地狱之门前沉思苦吟的样子，后来罗丹和他的学生们又制作了较大的独立雕像，现在这个雕塑形象出于艺术或者商业目的，在世界各地被大量复制，也常常出现在荧幕上，成为人们最熟悉的艺术形象之一。</p> 
<p>19 世纪是新古典主义(Neoclassicism)、浪漫主义(Romanticism)和现实主义(Realism)交叉碰撞的时代，也是印象主义(Impressionism，也称印象派)诞生的时代。印象派这个名字来源于<strong>莫奈</strong>的绘画作品——<strong>《日出·印象》</strong>。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/004日出-印象.png" alt="莫奈-日出·印象" /></p> 
<p>印象派的作品在视觉效果上与传统作品相差甚远，但事实上却是出于对现实主义的继承与变革。传统的绘画艺术，大部分画家都在画室里完成作品，印象派认为在画室中无法真正再现自然，虽然传统绘画也能制造出微妙的色彩变化，但大部分还是偏向于采用固有色来描写物体形象，固有色即物体在白色光源下呈现的色彩。但是大自然的光源却有很多种，于是印象派画家受到巴比松画派的启迪，大胆地走出画室，在户外完成对自然的创作。所以印象派虽然在视觉效果上和传统艺术大相径庭，但是从根本的创作理念上是一样的，都是想模仿自然，只不过印象派是从更加真实的光和色入手。</p> 
<p>当时传统的绘画艺术还面临来自摄影术的挑战，以往极力模仿自然的技巧在摄影术的发展下变得不那么重要了，从这个角度来看，印象派乃至以后的现代艺术，其实都在试图寻找新的艺术表达。这些探索未知的先锋在当时被占主导地位的传统学院派贬低的，但是不管怎样开路者总是能够取代传统守旧者而引领新的潮流。不管经历多少年，历史总是存在这样的两派，今天我们在学校里，在工作中，在任意领域都能看到这样的事情。当然先锋不一定都能成功，但是成功的先锋总是令人无比激动。印象派在 19 世纪后半期在艺术上占有非常重要的地位，这些艺术家也在历史上享有盛名，除了莫奈，还有后印象派的保罗·塞尚，保罗·高更和文森特·凡高。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/005塞尚高更梵高.png" alt="塞尚-高更-凡高" /></p> 
<p>19 世纪的世界，已是经历过两次工业革命的世界，此后 200 年里，世界历史讯息万变，艺术在现代的意义这个问题被摆到艺术家面前。如果说印象派是 19 世纪艺术家试图创新的起点，那么 20 世纪以后的现代艺术则是对“什么是艺术”这个本源命题的探索，各种各样的艺术形式在这个开明宽容的时代得以百花齐放，也在这个高速变革的时代变得容易凋零。</p> 
<p>16.04.22/中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #118 &#x4ECE;&#x6D1B;&#x53EF;&#x53EF;&#x5230;&#x65B0;&#x53E4;&#x5178;&#x4E3B;&#x4E49;&#x2014;&#x2014;&#x300A;&#x5251;&#x6865;&#x827A;&#x672F;&#x53F2;:18 &#x4E16;&#x7EAA;&#x827A;&#x672F;&#x300B;</title>
        <link>https://justinyan.eth.limo/B13590EF-BE2A-44F8-95C6-8FA3C2D67E2E/</link>
        <guid>https://justinyan.eth.limo/B13590EF-BE2A-44F8-95C6-8FA3C2D67E2E/</guid>
        <pubDate>Thu, 14 Apr 2016 13:15:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/cover_118_blog.jpg" alt="每周读书 118 从洛可可到新古典主义——《剑桥艺术史:18 世纪艺术》" /></p> 
<p>天下大势，合久必分，分久必合。纵观整个欧洲艺术史，在以立体画派为分水岭的现代艺术出现之前，各种艺术风格反反复复，却基本上脱不开古希腊罗马的古典艺术风格。中世纪时期西罗马灭亡，欧洲艺术从罗马遗风开始过渡到哥特式风格，文艺复兴时天才们从古籍中寻找古希腊罗马风度，古典之风复兴，随后 17 世纪天主教会为了应对宗教改革，从米开朗基罗开始，迈开大步跨入巴洛克时期，以和谐平衡著称的古典人物在巴洛克时期加入了夸张的运动性与华丽的戏剧性。这种华丽的风格发展到后期，贝壳状卷曲的装饰纹样开始泛滥，于是「洛可可风格」从巴黎凡尔赛宫开始兴起，一股宫廷高雅之风盛行整个欧洲。一个世纪一个轮回，当人们厌倦了洛可可奢华繁复的装饰感之后，庞贝古城的发掘带来了一股古典废墟之美，古典艺术借由新古典主义之风再度兴起。几千年来欧洲人对于古希腊罗马艺术的向往与憧憬可见一斑。</p> 
<p>剑桥艺术史（The Cambridge Introduction to Art）系列把文艺复兴之后的几个时期，以世纪为单位划分：17 世纪是巴洛克时期，18 世纪则以洛可可及新古典主义为主导，19 世纪从浪漫主义到印象派，开始有点「现代艺术」的端倪，20 世纪上来就是「立体画派」颠覆传统，我们既熟悉又陌生的「现代艺术」出现，跟以往的所有艺术都不一样，短短几十年间出现无数画派无数试验，能够跟文艺复兴时期相比的，也只有 20 世纪这个激动人心风云巨变的时代了。20 世纪我们会留到「艺术史系列」的最后一期，<strong>本周我们来看《剑桥艺术史：18 世纪艺术》</strong>。</p> 
<p>上周我们说到 17 世纪巴洛克艺术，到了后期巴洛克越来越华丽，装饰性越来越强，到了 18 世纪，太阳王去世，幼君路易十五 5 岁登基，法国进入摄政王统治时期。新的王室给宫廷艺术家和民间时尚带来新的变化，巴黎成为欧洲文艺的主导，从宫廷而来的奢华优雅的装饰风格，开始扩散到整个欧洲，这种艺术风格我们称之为<strong>「洛可可艺术」</strong>。</p> 
<p>「洛可可」(Rococo)又称巴洛克后期，这个名字据说来源于 Rocaille，一种室内装饰物，主要成分是贝克和小石子的混合物，在风格上表现为连绵的叶形花纹。巴洛克艺术的出现是有非常严肃的目的的，是天主教会应对「宗教改革」的反抗，艺术被用于这场殊死的宗教战之中。这种艺术表现在感情上是极其焦躁苦恼的，常常伴有痛苦的表达，比如<strong>鲁本斯著名的《下十字架》</strong>上耶稣的姿态，以及旁边扶着耶稣的人悲恸的表情。而到了洛可可，画风就变得轻松而悠闲了，因为洛可可艺术唯一的目的就是让那些被路易十四拘束在宫廷里的无聊贵族们娱乐，这个时代不再是宗教斗争的时代，而是廷臣们纵乐的时代。于是整个洛可可艺术充满了欢快感与自信感。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/04/001鲁本斯下十字架Descent_from_the_Cross_Rubens_600.png" alt="鲁本斯_下十字架" /><br /> <em>鲁本斯 - 下十字架</em><br /> <img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/04/002_发舟西苔岛LEmbarquement_pour_Cythere_by_Antoine_Watteau_600.png" alt="华多_发舟西苔岛" /><br /> <em>华多 - 发舟西苔岛</em></p> 
<p>我们看让-安东尼·华托的代表作《发舟西苔岛》，这幅画华托画了五年，画的主题是对爱的崇拜：西苔岛又称爱情岛，传说是爱神维纳斯的诞生地。这幅画虚实杂糅，可以清晰的看到远山崇峻的景色，而中景迷茫的雾气却又把一切实景掩盖，既有衣着华丽的贵族结伴而游，又有小爱神在船头盘旋飞舞。华托生长在鲁本斯的家乡弗兰德斯（Flanders），临摹过鲁本斯的画，鲁本斯对颜料的应用给华托很大的影响。华托在这幅画中又发展了鲁本斯的画法，整幅画充满生气却又很脆弱，仿佛光线在叶影间跳跃，景色在雾霭中的消散，就是华托的色彩融化在水雾之中。华托的这种技巧极富装饰性，显得很吸引人。于是这种风格常得到 18 世纪主顾们的赏识，华托及其门徒的画常被作为富丽堂皇的室内装饰的一部分。</p> 
<p>当时巴黎的社会道德比较宽容，路易十五作为国王，政治联姻是他无法选择的，所以人们对于国王有情妇这件事情抱持谅解的态度，甚至有雄心的父母还会把自己的孩子引进宫廷，期望获得国王的「宠幸」。路易十五的情妇里面，有一个特别出名的叫做「蓬巴杜夫人」（Madame de Pompadour，又译：庞巴度夫人）。蓬巴杜夫人是对洛可可艺术最有力的赞助人，洛可可艺术在她慷慨的赞助及影响下达到顶峰。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/003庞巴度夫人Francois-Boucher-Madame-de-Pompadour_600.png" alt="弗朗索瓦布歇_蓬巴杜夫人" /><br /> <em>弗朗索瓦布歇 - 蓬巴杜夫人</em></p> 
<p>画家弗朗索瓦·布歇曾给蓬巴杜夫人画过一幅肖像画，画中既表现她的权力，同时也显示她地位的虚弱。画中夫人的诱人之美跃然纸上，人物和主题也赏心悦目，华美的衣裙上光影的描绘惟妙惟肖。然而，在布歇及其门徒使其赞助人倾倒的悠闲风格中，却还隐含有一种言外之意，在这幅画中没有太多提现，但是在让-奥诺雷·弗拉戈纳尔著名的《秋千》一作中，淫糜之风则表现得出奇地露骨。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/004秋千_600.png" alt="弗拉戈纳尔_秋千" /><br /> <em>弗拉戈纳尔 - 秋千</em></p> 
<p>画中一个贵族在偷看一个姑娘飘起的裙底，这场面，恣意放荡，性的妖娆公开地投合赞助人的感官趣味。这就是洛可可艺术的晚期，艳丽而淫糜。</p> 
<p>洛可可艺术盛行的同时也是<strong>欧洲「壮游」盛行的时期</strong>。「壮游」(Grand Tour，又译：大旅行，壮游的翻译来自杜甫的《壮游》一诗)是欧洲贵族子弟在成年后云游西方，学习文艺，结交上流社会的一种传统，一开始主要来自与欧洲大陆隔绝的英国，后期扩散到整个欧洲。现代社会流行的欧美大学生毕业后，先不找工作，而是旅行一两年的所谓「间隔年」(Gap Year)就是对当时壮游的呼应（关于间隔年每周读书曾介绍过孙东纯的两本间隔年游记，可谓国内间隔年旅行者的先驱，<a href="http://justinyan.me/post/1767">孙东纯——《迟到的间隔年》</a>）。当时的贵族在孩子成年后，会联系在欧洲大陆的亲戚朋友，然后把孩子送过去那边住一段时间。这些贵族子弟往往家族实力雄厚，凭借财力在欧洲大陆寻找文艺的源头，订购绘画，完善语言（主要是拉丁语和法语），和欧洲大陆的上流社会交往。壮游通常会有要好的朋友和博学的导师陪伴，这些人里面不乏艺术家们，这些受过良好的人文主义教育的人纷纷走进罗马，试图在废墟遗迹中呼唤出一个理想的世界，这个世界不同于洛可可那种田园牧歌般的诗意，而是一个已经失去的壮丽文明，这个世界就是古希腊的自由，古罗马的尊严。</p> 
<p>古希腊罗马文明最重要的城市有两座，一座是古希腊文明的雅典，另一座就是古罗马文明的罗马。上周我们提到文艺复兴时期，东罗马帝国也即拜占庭帝国被土耳其奥斯曼帝国占领，于是雅典也就被土耳其人统治，是属于伊斯兰的世界，基本上跟基督教世界隔绝了。雅典去不了，旅行者们就都到罗马去了，而且当时罗马还有一件激动人心的大新闻，就是庞贝和和库兰尼姆两座古城的发掘，像今天大家出门旅行一样，贵族们跑到废墟遗迹去旅行，感受昔日帝国的壮美，这种废墟的美在乔凡尼·巴蒂斯塔·皮拉内西(Giovanni Battista Piranesi)的蚀刻版画中得到最充分的提现。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/005皮拉内西Giovanni_Battista_Piranesi_The_Colosseum_600.png" alt="皮拉内西_竞技场" /><br /> <em>皮拉内西 - 竞技场</em><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/006皮拉内西Piranesi_600.png" alt="皮拉内西_监狱" /><br /> <em>皮拉内西 - 监狱</em></p> 
<p>皮拉内西在 1740 年开了家画店，专门卖罗马风光画，主要以反映真实的罗马景象的写实风格为主，像今天在旅游景点卖明信片一样。但是后期皮拉内西的画越来越成为追忆罗马昔日的悲壮的幻景，从罗马竞技场一路画到罗马水道，他的巅峰之作《监狱》则成为一组辉煌而充满绝望情绪的版画。他的作品在 18 世纪人心中植入了一个想象中的罗马，无论从规模还是戏剧效果来说，都远胜于罗马的原型，真实的罗马即使在他全盛的时期也从没有如此悲壮过。罗马在 18 世纪人心中的形象可见一斑。而这些贵族子弟在「壮游」结束后回国，就都成为有见识，有文化的「海归」，他们从古罗马遗迹中受到的影响，也自然而然地反映到他们对本国艺术的影响。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/007先贤祠_600.png" alt="先贤祠" /><br /> <em>先贤祠</em></p> 
<p>蓬巴杜夫人的弟弟马里尼侯爵在旅途中带上了建筑师雅克·日尔曼·苏夫洛(Jacques-Germain Soufflot)，我们在<a href="">介绍《古希腊罗马艺术》</a>中提到的法国巴黎的「先贤祠」就是出自苏夫洛之手。马里尼侯爵是个严肃而有影响力的年轻人，他从意大利旅行归来，不仅带来许多名胜古迹的绘画，还带回一个未来法国的憧憬：法国不仅应该主导欧洲的政治（路易十四留下的联盟），而且在美学上也应该有最高的权威。于是法国开始用堂皇的公共建筑和宏大的设计规划来重建巴黎，苏夫洛的「先贤祠」就是在那个时候开始修建的。这座宏伟的建筑一开始是作为教堂而建，但是到它竣工的那一年，正好是法国巨变的一年——1789 年法国大革命——革命者把这座建筑改为埋葬伟人的地方，才成为今天的「先贤祠」。</p> 
<p>今天我们看法国大革命，认为这是一场失控的革命，是充满血腥与暴力的革命，后世有无数的作品在表现这场风云巨变的运动，无论是文学、艺术还是影视游戏，法国大革命带给后世的影响可谓巨大而深远。革命者上台后，法国王室所忠实的洛可可艺术自然被视为牛鬼蛇神，于是旧制度培养出来的这批艺术家，就得选择新的艺术风格，其中有一个艺术家对于革命的新自由感到欢欣鼓舞，他就是<strong>雅克—路易·大卫</strong>。</p> 
<p>大卫是一个坚定的古典主义者，法国大革命之后，他成为新政治制度的宣传喉舌与偶像设计师，但相比于俗不可耐毫不委婉的纯粹政治宣传，大卫的作品里多了些人文关怀，多了些人道与和平的态度。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/008萨宾妇女_600.png" alt="大卫_萨宾妇女排解纠纷" /><br /> <em>大卫 - 萨宾妇女排解纠纷</em></p> 
<p>上面这幅画是大卫所作的《萨宾妇女排解纠纷》，故事来自古罗马历史事件，萨宾妇女在被罗马人劫持奸污后，却还出面阻止本族的男人向罗马施行全面的报复。这幅画作在当时，恰恰是对攻占巴士底狱后革命者恐怖过火行为的控诉，画中表现的是一种高贵感和古典美，特别是表达慈悲这种高尚的美德。这种主题下，古典艺术显然比洛可可明快欢乐的风格更加适用。</p> 
<p>18 世纪末除了法国大革命之外还有一场影响到整个世界的革命——工业革命。人们开始从进步的科学中汲取文化知识，基督教虽是大多数人的正式信仰，但是它却越来越失去对美学的控制。人们开始越来越以自然为标准进行判断，越来越关注平等的观念，这与基督教唯神的教义是相悖的。而这种思想上的自由体现在艺术作品上，则是由古典主义向浪漫主义的过渡。下一周，我们将介绍主宰 19 世纪上半叶文学、艺术、音乐等领域的浪漫主义。</p> 
<p>以前艺术家是作为「工匠」存在，对赞助人负责，作画要求遵循人体比例和布局原则，受过艺术训练的人可以根据这些原则来评判艺术作品的优劣。但这些无所不在的原则与艺术家的想象力是相悖的，当艺术家的个人意识跃然纸上的时候，当艺术家作出某种强烈的自我表现的时候，这种空泛的原则就与艺术家的个人创造力之间产生戏剧性的冲突，这种冲突在日后将把艺术家的个人意识推向艺术创作的首位，从浪漫主义到印象派到现代艺术，一步一步发展出今天我们完全看不懂的艺术来。</p> 
<p>看完整个欧洲艺术史，我觉得我们这个时代的艺术更像是通往下一种成熟艺术的过渡时代，是个画个圆圈放张白纸就声称是艺术品的时代，是个随便做点什么出格的事情就能声称是行为艺术的时代。这个时代很宽容，也很粗放，这些艺术品我们尽管看不懂，但也能看得出它们与精细的古典艺术相比在制作技艺上要粗糙得多。制作成本并不能代表一件艺术品的价值，但是过度考虑难以捉摸的所谓精神表达而完全放弃形式的艺术，我觉得一定不会是这个时代最好的艺术。也许在这个过渡时期之后，我们的新艺术能够既有现代艺术的思想自由又有古典艺术的形式优雅，我相信，那将是个值得期待的时代。</p> 
<p>16.04.13/夜<br /> 于自居</p> 
<p>相关阅读：<br /> - <a href="http://justinyan.me/post/2780">每周读书 #117 所谓巴洛克——《剑桥艺术史：十七世纪艺术》</a><br /> - <a href="http://justinyan.me/post/2762">每周读书 #116 天才辈出的时代——《剑桥艺术史：文艺复兴》</a><br /> - <a href="http://justinyan.me/post/2748">每周读书 #115 教堂！教堂！教堂！——《剑桥艺术史：中世纪艺术》</a><br /> - <a href="http://justinyan.me/post/2736">每周读书 #114 古希腊罗马艺术为何令人着迷——《剑桥艺术史：古希腊罗马艺术》</a><br /> - <a href="http://justinyan.me/post/2710">每周读书 #113 学会欣赏画作——《剑桥艺术史：绘画观赏》</a><br /> - <a href="http://justinyan.me/post/2620">每周读书#107 如何通俗易懂地认识北欧神话？——《北欧神话 ABC》</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #117 &#x6240;&#x8C13;&#x5DF4;&#x6D1B;&#x514B;&#x2014;&#x2014;&#x300A;&#x5251;&#x6865;&#x827A;&#x672F;&#x53F2;&#xFF1A;&#x5341;&#x4E03;&#x4E16;&#x7EAA;&#x827A;&#x672F;&#x300B;</title>
        <link>https://justinyan.eth.limo/9926A90E-D56E-4391-8D74-E48D79D756E3/</link>
        <guid>https://justinyan.eth.limo/9926A90E-D56E-4391-8D74-E48D79D756E3/</guid>
        <pubDate>Fri, 08 Apr 2016 00:39:07 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/04/mp_cover_117.jpg" alt="每周读书 #117 所谓巴洛克" /></p> 
<p>作为一名习惯了中国历史的小白，一直觉得理解欧洲古代的历史很困难，因为中国的疆域虽说每个朝代都在变化，但是核心地区（中原）自有史以来就就一直是那样，可以说中国的历史就是不停改朝换代的历史，一拨人上台把另一拨人赶下去，国土还是那些国土，只不过强盛的时候国土就大一点，弱小的时候国土就小一点而已。但是欧洲完全不是这样子。中国从宋朝开始中央集权，地方权力再大大不过皇帝，但是欧洲很长时间里一直是封建制，最主要的组成单位是贵族，贵族一结婚能把两国家合并成一个了，嫁个女儿能把一整块地都给送出去了。所以今天我们知道的欧洲各国的版图，在当年完全就不是那么回事。一直到 17 世纪，从神圣罗马帝国内战波及到整个欧洲的「三十年战争」结束，各国签订「威斯特伐利亚和约」划分好地盘，才有了今天欧洲各国的样子。</p> 
<p>所以 17 世纪是近代欧洲民族国家形成的时候，同时也是法国太阳王路易十四掌权，让法国国力登上历史巅峰，傲视整个欧洲的时候。这段时期，文艺复兴刚刚结束，18 世纪的工业革命尚未到来，大航海时代在此进入尾声，我们把这段时期的艺术称为——<strong>「巴洛克艺术」</strong>。</p> 
<p>剑桥大学出版社出版过一系列 <em>Cambridge Introduction to xxx</em> 的书，内容涵盖了艺术、文学、哲学等多个方面，近几个礼拜我们介绍的是<strong>剑桥艺术史</strong>这个系列。这套书主要面向学生与大众，内容简明扼要，所以阅读的过程中大家需要多翻翻维基百科，补全一下相关的背景知识。比如文艺复兴晚期，宗教改革开始，分裂出新教，天主教地位受冲击，于是开始反宗教改革，米开朗基罗的「最后的审判」就冲破了文艺复兴的规范，直接迈进了「巴洛克时期」的艺术。新教、天主教、宗教改革、反宗教改革这几个概念，作者在写作的时候都默认读者（主要是西方读者）是早有了解的，所以对这些概念我们有必要在阅读过程中补充了解一下。</p> 
<p>文艺复兴源出佛罗伦萨，巴洛克艺术则始于罗马。整个巴洛克时期，至少在文艺最为繁荣的几个中心里，<strong>巴洛克艺术都是为了宗教与贵族服务的</strong>。16 世纪末神圣罗马帝国军队洗劫罗马的时候，没几个人能预料到罗马这座废墟还会再度繁荣起来，甚至重回西方文艺中心的地位。导致宗教改革的根源在于教义的分歧，而促使宗教改革热烈起来的则是天主教会本身的腐败，比如臭名昭著的「赎罪券」，1517 年马丁路德在威登堡钉出的「九十五条论纲」就是冲着「赎罪券」来的。天主教会改革自身，对宗教改革进行反击，是为「反宗教改革」。领导反宗教改革的人物许多都是德高望重，才能卓著之辈，比如创办耶稣会的圣依纳爵，创办奥拉脱利会的圣菲利普·内里。</p> 
<p>基督教根据教义不同分为天主教、新教和东正教，东正教是君士坦丁大帝时期分出去的，新教则是在宗教改革中脱离天主教而生。我们在<a href="http://justinyan.me/post/2748">介绍中世纪艺术的一期</a>提到过圣本笃修道会，是圣本笃创立了修道会制度，此后就有了各种各样的会，比如圣本笃的本笃会，讲求隐修，清心寡欲。所以看到各种各样的会读者可能会有点疑惑，这时候查一下这个修道会是属于哪个教会的就行了。</p> 
<p>有强力领军人物主导「反宗教改革」，一时间天主教世界里充满了乐观自信的态度，这种自信体现在米开朗基罗「最后的审判」中，就是耶稣基督那威风凛凛，高大雄壮的形象了。到了 17 世纪，天主教已重回统治地位，对抗已经没有必要了，前面我们说「三十年战争」结束后欧洲形成了近代民族国家，与此同时，「宗教改革」也到此结束。这期间天主教会为了宣告胜利，修建了几乎所有的新教堂，于是有大量的新祭坛需要作画，罗马无疑对当时有名的艺术家们充满巨大的吸引力，从而再次回到艺术中心的位置上。</p> 
<p>巴洛克艺术以其夸张的运动性，清晰可辨的细节，营造出一种戏剧性的紧张气氛，其繁琐的装饰，恢宏的效果很得当时教会与贵族的青睐。我们拿文艺复兴时期米开朗基罗的「大卫」雕像和巴洛克时期济安·劳伦佐·贝尼尼同样主题的雕塑作比较。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/001大卫比较-blog.png" alt="大卫" /></p> 
<p>可以看到米开朗基罗的雕像以对立平衡的姿态站里，重心落在右脚，全身上下没有一处显得僵直，每一块肌肉都在皮肤下活动，使人感到他的运动只是暂时性地停止。如果看面部细节还能看到大卫紧张的脸部表情，这与他放松的姿态形成了强烈的对比。但是总的来说，这尊雕像是静止的，是只包含大卫一个人的，是一个完全独立的作品。在「最后的审判」中，基督那决绝的手势也是一个静止的动作。但是我们再看贝尼尼的「大卫」，这尊雕像表现为即将投弹的一瞬间，我们可以很明显地感受到一种紧张感，石弹仿佛下一秒就将擦过我们身边。贝尼尼的大卫是充满运动感的，是把观众包含进整个作品里的，这种强烈的观感正是巴洛克艺术的典型。</p> 
<p>贝尼尼的主要成就在雕塑，除了雕塑他还有一件非常著名的建筑作品：圣彼得大教堂前的柱廊。这座教堂现在在梵蒂冈（以前其实就属于罗马城了），是世界上最大的天主教教堂，多位著名的设计师包括米开朗基罗都参与过教堂的设计。贝尼尼接手这座教堂的时候，前一任设计师马德纳把米开朗基罗的设计推翻，从十字对称，上覆圆顶改为长形中殿，加一个宽阔高大的正门，这座正门既没特色又高得足以盖住大半个圆顶。贝尼尼以他素有的才华把门前的空地改造成世人能够想象的最壮观的通道，以此弥补了马德纳设计的不足。通过 Google Maps 我们可以看到，虽然圆顶还是只能看到一半，但是巨大的广场以四列纵深的柱子左右环抱，柱子本身已经很高，但比正门矮很多，通过简单的对比又夸大了正门的雄伟。Google 街景没有拍到柱廊里面，有机会一定得亲自在里面走一走才能体会到整个建筑群的宏大尺度。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/002圣彼得教堂-blog.png" alt="圣彼得大教堂" /></p> 
<p>17 世纪欧洲有两个国家特别辉煌，一个是处于黄金时期的荷兰，另一个是路易十四统治下的法国。我们一直在说，艺术是基于经济的东西，哪里有经济繁荣，哪里才有艺术的繁荣，这两个国家，就是巴洛克时期最重要的艺术中心。先说荷兰，荷兰、比利时和卢森堡三个国家被称为「低地国家」，比利时是后来从荷兰分裂出去的，荷兰地区早期是属于西班牙统治下的十七个省。16 世纪的时候这块地区就已经很不满西班牙皇室的苛捐重税了，正好遇上宗教改革，许多人追随新诞生的新教教派，与天主教会之间发生强烈的冲突，最终爆发反抗西班牙统治的战争，从 1568 年开始到 1648 年荷兰独立，刚好八十年，史称「八十年战争」。1648 年就是前面我们提到「威斯特伐利亚和约」签订的时间，荷兰就是从这份和约开始真正独立的。战争结束后，信奉新教的荷兰人当然跟天主教统治下的其他国家截然不同，这里从来没有全权在握的国王，因此也就没有过大规模的宫廷赞助，权力和财富的大多数都掌握在市民手中。那会荷兰的海上贸易达到历史巅峰，曾一度取代葡萄牙和西班牙支配世界贸易，史上第一间跨国公司——东印度公司就是荷兰人开的。于是荷兰的艺术赞助人就成了这些有钱的市民们，巴洛克有名的画家伦勃朗的「夜巡」，就是应荷兰人邀请而作。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/003TheNightWatch-blog.png" alt="夜巡" /></p> 
<p>现在我们都很习惯摄影术带来的便利，同学聚会合影留念，出门旅行拿起手机就能自拍，但是在那个时代（摄影术要到 19 世纪才开始慢慢普及），绘画可能是留下自己肖像的唯一途径。当时为了防备西班牙人的进攻，荷兰的每一个城市都配备了民兵，于是民兵群像就是当时非常流行的一种肖像画。由于是大家集资作画，就要求画家把每个人都画得一样突出，就像我们现在拍小学毕业照一样，穿一样的校服排排站，不仔细看认不出谁是谁。这时候像伦勃朗这样的大师伟大的地方就在于，他能突破大多数，用今天被人滥用了的词来讲，就是「创新」。「夜巡」这幅画其实画的是白天，但是因为画面本身比较暗，时间长了变黑而被人误认为是夜巡。这幅画非常大，363 cm × 437 cm，重达三百多公斤，相比起排排站的小学毕业照，这副画的人物布局显得十分活泼。伦勃朗大胆地把这个连队画成毫无规律的活动场面，强烈的敏感色彩和到处都有的动感令人心襟震荡。但是伦勃朗本人也因为没按财主的要求作画而招致赞助人的强烈批评，导致自己声名下降，可见走在时代前面的人总能引来守着稳定舒适圈子的大多数的争议。</p> 
<p>刚我们说荷兰在反抗西班牙统治的时候跟天主教会有过激烈的冲突，许多新教徒就在那个时候受到残酷的宗教迫害，于是当时有一个信奉新教的律师为了躲避这场灾难，就从那时候欧洲最大的港口「安特卫普」（后来被西班牙占领，逃出来的人涌入当时还是小港口的阿姆斯特丹）逃到德国，这个人的儿子就是巴洛克早期最具有影响力的艺术家——鲁本斯。在父亲去世后，鲁本斯随母亲回到家乡接受天主教的洗礼，所以其实鲁本斯是信奉天主教的（其父不知做何感想），他后来的宗教画《上十字架》和《下十字架》也奠定了他在宗教画的地位。鲁本斯这人厉害的地方在于，他除了本身技艺卓越之外，还很擅长社交。他是西班牙王室委任的外交官，周游欧洲列国，在各国王室之间游刃有余，他给宫廷贵族所作的肖像画对后世影响深远。在艺术上很长一段时间，一个国家即使是最尊贵的人也只能在钱币上留下自己的肖像，或者做成雕像放在石棺上，鲁本斯给热那亚的 Portrait of Marchesa Brigida Spinola-Doria 侯爵夫人所作的全身肖像画就显得极不寻常了。</p> 
<p>鲁本斯之后，安东尼·范戴克把他的宫廷肖像画进一步发展，直到后来不仅是王族成员，所有的贵族都画全身像了。画家们给这些王室贵族所作的画，往往会美化样貌，画上十指尖尖的手，忽略脸上的雀斑，相当于今天的美颜相机，所以深受贵族们喜爱。今天一提起太阳王路易十四就想到的那幅画，是亚森特·里戈所作，我们看路易十四身后的平台、宝座、古典柱子和身上所穿的舞台服装，可以看到借用背景建筑来拔高人物的手法，正是来自鲁本斯所创。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/004路易十四Louis_XIV_of_France-blog.png" alt="路易十四" /></p> 
<p>路易十四的这幅画显出国王本人的庄严伟大，于是给后来的两个世纪树立了样板，以后无论国王皇后，皇帝幼君，都是摆出这样一幅姿态，以显示他们崇高的身份。</p> 
<p>17 世纪是欧洲大航海时代结束，开始兴盛繁荣的时代，尽管没有像文艺复兴一样天才辈出，但是既有贝尼尼、伦勃朗这样才华横溢的人，也有像卡拉瓦乔这样带来革命性的光的艺术，本身却放荡不羁的浪子。17 世纪总的来说是蓬勃向上的时期，宏伟的凡尔赛宫从这时开始修建，壮观的圣彼得大教堂广场树立起成对古典柱的样板。到了 17 世纪晚期，在法国、意大利这样一些巴洛克艺术发展成熟的国家里，人们开始回归到古典世界里面，开始发展出所谓「新古典主义」，而原本就已经富丽堂皇的装饰艺术开始淹没在抽象的火焰形、贝克形花纹中的时候，「洛可可风格」开始了。</p> 
<p>16.04.07 / 中午<br /> 于 T.i.T</p> 
<p>相关阅读：<br /> - <a href="http://justinyan.me/post/2762">每周读书 #116 天才辈出的时代——《剑桥艺术史：文艺复兴》</a><br /> - <a href="http://justinyan.me/post/2748">每周读书 #115 教堂！教堂！教堂！——《剑桥艺术史：中世纪艺术》</a><br /> - <a href="http://justinyan.me/post/2736">每周读书 #114 古希腊罗马艺术为何令人着迷——《剑桥艺术史：古希腊罗马艺术》</a><br /> - <a href="http://justinyan.me/post/2710">每周读书 #113 学会欣赏画作——《剑桥艺术史：绘画观赏》</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5C0F;&#x6A3D;&#x7684;&#x96EA;</title>
        <link>https://justinyan.eth.limo/446ADBC3-4946-4F8D-A9A5-7F9C41EBD8A6/</link>
        <guid>https://justinyan.eth.limo/446ADBC3-4946-4F8D-A9A5-7F9C41EBD8A6/</guid>
        <pubDate>Fri, 01 Apr 2016 14:12:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/04/cover_xiaozundexue.png" alt="小樽的雪" /></p> 
<p>冬雪初霁的夜里，脚步声踏雪吱吱，惊扰河中摇曳的灯影，河的尽头是海，流光熠熠的这边是小樽。</p> 
<p>小樽看雪是第一次，大惊小怪，手舞足蹈。有阳光的时候，一路的白色伸到街角，冷风像轻柔的指掌抚着琴键，乐声入林，堆起白雪皑皑。一步一步，三步一滑，相视一笑，带笑而行。小樽的雪，轻轻盈盈，蓬蓬松松，手印像蚀在木刻的痕迹，斜阳对面的天空是蓝的，像十七世纪的油画，干净而清丽。</p> 
<p>鸦在鸟居，鸦在屋顶，鸦在车站前的微笑里，日本的鸦啼和蝉鸣一样有名。试想在黄昏夕照温软的林子里，一袭黑影掠过头顶，仿如踏雪时孤独的脚迹，神社已闭，不见游客的身影，城市已歇，路灯还未亮起，鸦声啼啼，树影横斜，有风来时，脚步像走进画面里，决绝地扮着离去的北影。</p> 
<p>走出神社，躬身一鞠是礼仪。古时候的日本，被天朝上国耻笑为化外之邦，蛮荒、不识礼仪。于是天皇制礼，今天昔日的天朝上国才是不识礼仪的蛮族番邦，文化真是依赖经济的东西。落后了就是中世纪，繁荣了才能有文艺复兴。</p> 
<p>小樽不过是个苦寒的小镇，却也有小小的文学馆和美术馆。冬雪纷飞的日子里，即使穿着厚厚的毛衣，裹着层层围巾，也还是敌不过屋外的寒意。这时候美术馆就是个温暖轻松的好去处。暖似春日，静如子夜，有人坐在门边看书，纸张翻动的声音清晰可闻，脚步便小心翼翼。窗外大雪纷飞，屋里春意盎然，小樽的雪在留白中，小樽的海在笔触间，我在雪国里。</p> 
<p>当我看到比人高的雪堆时，我就已经知道了。钻进学到，世界是白的，两边矮矮的房顶压满厚厚的积雪，道旁的雪人傻立着。每年都有来自世界各地的学生到这里来，带着创意与热情，塑一座小城，置几盏冰灯，哆啦A梦与龙猫，铁道与城堡，夜幕勾起银月的时刻，灯火便从小城里亮起，从冰屋中亮起，从熙熙攘攘的欢笑中亮起。走在河影熠熠的桥上，像走在梦里。</p> 
<p>生活在长夏无冬的南方多年，第一次看雪像走进异世界。小樽的雪夜如电影《情书》一样柔软，昏黄，干干净净，如诗一般。想想被白雪堆满的小路，斜斜攀上山腰的车站，路的尽头是海，这厢冰天雪地，那方波光粼粼，小樽涛声汹汹，不知何时能够，旧地重游。</p> 
<p>16.04.01 / 中午 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #116 &#x5929;&#x624D;&#x8F88;&#x51FA;&#x7684;&#x65F6;&#x4EE3;&#x2014;&#x2014;&#x300A;&#x5251;&#x6865;&#x827A;&#x672F;&#x53F2;&#xFF1A;&#x6587;&#x827A;&#x590D;&#x5174;&#x300B;</title>
        <link>https://justinyan.eth.limo/8A3FF509-7330-42F9-A543-F5D621F888CB/</link>
        <guid>https://justinyan.eth.limo/8A3FF509-7330-42F9-A543-F5D621F888CB/</guid>
        <pubDate>Wed, 30 Mar 2016 23:40:38 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/03/cover_116_wenyifuxing_blog.jpg" alt="剑桥艺术史：文艺复兴" /></p> 
<p>可能我们今天太习惯现代艺术形式的自由与主题的高深莫测，动辄为了世界和平，控诉战争，重建信念，再加上当代各种行为艺术、装置艺术、科技艺术等等名目令人眼花缭乱，仿佛只要看不懂的东西就可以称之为艺术了。如果我们以这样的角度去看古代艺术，就容易产生先入为主的距离感，其实在艺术史上，绝大多数艺术品都没有这些高深玄奥令人费解的东西，大部分传统的视觉造型艺术（绘画、雕塑与建筑）在创作当时都有非常直接的目的。往往是付钱的人（赞助人）要求艺术家给他制作一件雕塑，或者建造一座公馆，这种时候艺术家其实更像是一名「工匠」，而不是「追求某种看不见摸不着的灵魂的疯子」。</p> 
<p>但是，即便是坐在办公室整天日复一日重复着毫无意义的体力活的白领，只要心中还怀有热情，都会想把手头的事情按照自己的意志，按照自己的理想去做好，这也是今天许多创业团队共同的信仰与动力。历史上名垂青史的艺术家之所以与众不同，正是由于他们内心追求理想的美的热情，强烈到常人难以企及。在比较不幸的时代，艺术家可能为了追求理想食不果腹离乡背井，比如逃离尘世躲进荒蛮的高更。而在幸运的时代，艺术家得以栖居在保护着的羽翼之下，尽情地地挥动画笔与刻刀，自由自在地追求心中所想，比如古希腊鼎盛时期的雅典，比如统治整个欧洲大陆的古罗马帝国，比如本周的主题——欧洲文艺复兴的发源地——意大利。</p> 
<p><a href="http://justinyan.me/post/2748">上周我们讲到《剑桥艺术史：中世纪艺术》一册</a>，中世纪早期是罗马式风格，中后期发展出象征神性的哥特式艺术，这段时间的主题就是基督教，就是神。为了基督教，人们踏上朝圣之路，到圣徒殉难之地朝拜，其中最大规模的一次「朝圣」当属十字军东征。前后持续了近 200 年的十次十字军东征，不管后世的评价如何，客观上它还是让处于交通要道的意大利地区发达起来，给当时处于第三世界的欧洲带来阿拉伯帝国先进的文明与科技。但是如我们上周提到的，这时期的欧洲事实上还没有形成民族国家的概念，还是一帮贵族在互相争夺，皇室一联姻就可以合并两个国家，嫁个女儿就能送掉一大块土地。欧洲真正形成现代国家的形态，是在三十年战争结束，签订《威斯特伐利亚和约》，各国划分地盘，确立了国家主权之后的。三十年战争以前各个国家都是打一阵歇一阵，歇一阵又打一阵。战争既给当时繁荣的商业带来灾难，也带来巨大的商机。14 世纪早期，英法两国暴发百年战争，英王爱德华三世向佛罗伦萨两家银行巴尔迪和佩鲁齐银行借了一笔巨款用于打仗，这两家银行也因此获得了一大堆对英国贸易的特权。但是后来爱德华三世拒绝还贷，一下子佛罗伦萨两个银行就破产了，这场破产触发了多米诺骨牌效应，佛罗伦萨经济崩溃，连带也影响到欧洲近一半的人口。再加上当时在欧洲开始蔓延的黑死病和饥荒，三分之一的欧洲人口死于黑死病，整个世界昏天暗地，惶惶不可终日。当时佛罗伦萨有许多人逃离城市，到郊区去躲避瘟疫，在这样的背景下，文艺复兴的先驱薄伽丘写就了短篇小说集《十日谈》，开创欧洲短篇小说之先河。这部短篇小说集讲的就是黑死病蔓延之际，逃到郊区的十个男女青年，每人每天讲一个故事打发时间的事情。故事内容荒诞露骨，极具讽刺意味。后来 1971 年意大利导演皮埃尔·保罗·帕索里尼根据这部小说集拍摄了同名电影，电影里很好地还原了当时那不勒斯的社会环境，有兴趣的读者可以看一看这部电影，电影中的人物着装一定能让你回想起中世纪油画作品中的人物。</p> 
<p>黑死病过后，幸存下来的人得到更多的财富与食物，瘟疫发生期间教会的无能使人们失去对教会的信心，而这时教皇从克雷芒五世被法国国王掳走，这个教廷被转移到法国的亚维农，而在罗马的教皇则由神圣罗马帝国与英国支持，天主教教会分裂成两派。于是在既没有君主集权又没有教皇严格管制的佛罗伦萨，美第奇家族成为事实上的统治者。在经济景气的时候商人会倾向于把资金迅速投入资本市场，但是在经济崩溃的 14 世纪，美第奇家族则把财富投入到文化与艺术当中。于是在美第奇家族的保护下，艺术家们得以无忧无虑地学习、研究、创作，这批受到培养与赞助的艺术家包括文艺复兴最顶尖的三位大师:<strong>达芬奇、米开朗基罗和拉斐尔</strong>。所以可以毫不夸张的说，没有美第奇家族，就没有文艺复兴。</p> 
<p>历史的发展总是连续的，自然界没有突然质变的东西。文艺复兴也一样，从哥特式艺术到早期文艺复兴再到盛期文艺复兴，这是一个渐变的过程。黑死病的最终结果是恢复对人、对自然的信念，古希腊罗马的古典文艺就是对人与自然的礼赞。文艺复兴之前就已经有许多艺术家与学者在研究古典文艺了，但还不算主流，直到东边土耳其人的奥斯曼帝国把拜占庭帝国灭了，一大帮拉丁语学者逃到意大利来，整个研究古希腊罗马艺术的风气才开始兴盛起来。古典文学与艺术成为文艺复兴时期追求的理想。当时许多艺术家为了跳出传统艺术的桎梏，往往需要从科学、哲学、几何、数学中寻找理论突破，从雕刻、绘画与建筑中寻求实践创新，所以当时全才的人非常多，是个<strong>天才辈出</strong>的时代。达芬奇，就是所有天才里面最突出的一个。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/达芬奇_blog.png" alt="达芬奇作品" /></p> 
<p>达芬奇既是画家，也是雕刻家、建筑师、音乐家、数学家、工程师、发明家、解剖学家、地质学家、制图师，植物學家和作家。1481 年达芬奇让美第奇家的洛伦佐写信引荐给米兰的统治者，他到米兰后，整个宫廷为之倾倒，不仅因为他是画家，更因为它是一切技术问题的顾问。达芬奇终其一生用左手镜面书写，他画过大量的草稿，但是留下的真正成画的又非常少，现存的作品不超过十五幅。保存在巴黎卢浮宫的《蒙娜丽莎》可以说是世界上最著名的油画作品，给米兰道明会院作的壁画《最后的晚餐》则是最负盛名的宗教画之一。达芬奇的画作有一种神秘的气氛，构图始终完美，对自然的科学观察使他的画作充满真实感，《最后的晚餐》是透视法的杰作，《岩间圣母》背后大团的岩石则加强了画面的中心与深度，在突出圣母的地位的同时又透出一种神秘与幻想的气息。文艺复兴除了达芬奇还有提香，还有波提切利，还有放在任何一个时代都毫不逊色的大师们，但是这些人刚好都生活在这样一个天才辈出的时代，能与达芬奇比肩的，也只有把古典主义发挥到至臻完美的拉斐尔，以及突破了文艺复兴的桎梏，在最后一刻开创了下一个时代艺术的米开朗基罗。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/雅典学院_blog.png" alt="拉斐尔作品" /></p> 
<p>拉斐尔是个早逝的天才，既是画家，也是建筑师，三杰当中他是出生最年轻的一个，他上过达芬奇的课，学过米开朗基罗的画。青年时期跟着老师佩鲁吉诺而作的《圣母订婚》已经可以看出他绝妙的构图技巧给画面带来的和谐与平衡。1509 年拉斐尔受命为梵蒂冈使徒宫作的湿壁画《雅典学院》是他的巅峰之作，在这幅画作中，拉斐尔把古希腊、古罗马以及当时欧洲的哲学家、艺术家与科学家全部放到了一起，整个画面和谐愉快，温和而优美，洋溢着对人类智慧的赞颂。如文艺复兴时期写《艺苑名人传》的瓦萨里所说，如果文艺复兴是向完美之峰的攀登，而哥特式艺术、早期文艺复兴和盛期文艺复兴是攀登路上相继而来的三个阶段，那么只有米开朗基罗一人登上了顶峰。拉斐尔没有花力气去做最后的攀登，而是把文艺复兴的艺术形式表现得最经典、最透彻、最完全，为艺术设立了一个永久性的登山大营。1520 年这位可怜的天才在罗马病死，时年 37 岁。</p> 
<p>米开朗基罗是三杰当中最长寿的一位，1475 年生于佛罗伦萨，到 1564 年在罗马去世，享年 88岁。米开朗基罗是雕刻家、画家、建筑师与诗人，他的「大卫」雕像举世闻名。还在襁褓中的时候米开朗基罗就由奶妈代养，这位奶妈的父亲与儿子都是石匠，所以米开朗基罗自小就接触石头，他对石头的敏感给了他无穷无尽的艺术灵感。他曾说：「雕像早已蕴藏在石头里面，他所做的只不过是把多余的部分拿掉而已。」米开朗基罗 1534 年受命西斯廷礼拜堂创作壁画的时候，欧洲已经开始宗教改革运动（1517 年），从天主教会分裂出新教，天主教的权威与地位受到极大挑战。1527 年神圣罗马帝国一支没有军饷的军队发生哗变，洗劫了整座罗马城，罗马教皇威望大减，惨无人道的洗劫给予文艺复兴的人们一记沉重的的打击。原本相信人文主义，相信由人可以管理、创建一个更美，更公平的社会的美好愿望，在这场灾难中化为乌有。当时的教皇，亟需一件具有震撼力的，能收服人心的作品来重新唤起人们心中对天主教的信心。1541 年，米开朗基罗的巨作「最后的审判」揭幕了。整个欧洲为之震动，当时瓦萨里还专程从威尼斯赶到罗马，就为了亲眼看一看这幅旷世巨作。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/米开朗基罗_末日审判_blog.png" alt="最后的审判" /></p> 
<p>画面上，一群比真人还大的人争先恐后、你争我夺。在基督教的世界里，人生而有原罪，末日审判就是要把有罪的人投入地狱，把获得救赎的人带进天堂。末日审判记录在《圣经》新约的最后一章——《启示录》里面，是基督教最为重要的一日子。没有人见过也不可能见过末日审判，米开朗基罗在这幅画作当中倾注了他全部的艺术热情与情感，画中所有的人物带着殉难与行山的标记，紧紧拥围在有史以来最大的基督像身边，基督是整幅作品的核心，人们向他寻求报复，而他毅然决断地举着手，仿佛要停止一切混乱，停止报复和激愤，背叛和冲突。整个文艺复兴在基督决绝的手势当中画下一个完美的句点。</p> 
<p>这幅巨大的壁画宽 1370 厘米，高1200 厘米，观者从下往上仰望，在蓝色的无穷空间里人们看到的不是线性的透视而是宇宙的透视。整幅作品中细部的单个故事精彩纷呈，融合在一起又浑然无间。米开朗基罗笔下的上帝深不可测，他超出人间的激情和恐惧，也超出人间的善与恶，他有他自己的正义，他自己的天国法规，全不被人的心灵所理解。</p> 
<p>米开朗基罗的「最后的审判」直接突破了文艺复兴的规范，开创了下一个世纪的风格——巴洛克风格。无论看哪一个时代的作品，都需要把作品放回到那个时代的背景与环境中去，米开朗基罗无疑是那个时代的先锋，读《剑桥艺术史：文艺复兴》，从早期的作品渐渐过渡到盛期，最后以耶稣在圣光背景中举起的决绝的手掌收尾，越看越令人兴奋，越看越令人感动。文艺复兴时期的作品是多如繁星浩如烟海的，在这样一个天才辈出的时代，每一个天才都可以单独用一部书来讲述，想比起上古时代资料的缺乏，相比起中世纪时期的单调与幽暗，文艺复兴简直是一场震耳欲聋的摇滚演唱会，而米开朗基罗就是最后压轴的巨星，在结束后回荡着一声声激动的 Encore……</p> 
<p>16.03.30/中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #115 &#x6559;&#x5802;&#xFF01;&#x6559;&#x5802;&#xFF01;&#x6559;&#x5802;&#xFF01;&#x2014;&#x2014;&#x300A;&#x5251;&#x6865;&#x827A;&#x672F;&#x53F2;&#xFF1A;&#x4E2D;&#x4E16;&#x7EAA;&#x827A;&#x672F;&#x300B;</title>
        <link>https://justinyan.eth.limo/E03BE833-DFDA-4A25-8CB9-1CD5C9A5AED6/</link>
        <guid>https://justinyan.eth.limo/E03BE833-DFDA-4A25-8CB9-1CD5C9A5AED6/</guid>
        <pubDate>Fri, 25 Mar 2016 14:15:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/115zhongshijiyishu_cover.jpg" alt="每周读书 #115 教堂！教堂！教堂！——《剑桥艺术史：中世纪艺术》" /></p> 
<p>黄叶冷雨满地，阴云的日子里昏昏幽幽，像欧洲中世纪。我们太习惯于欧洲今天的强大，容易忘却「黑暗时代」的印记。古希腊罗马之后，北方蛮族入侵，西罗马帝国灭亡，唯东罗马拜占庭帝国得以存续一千多年，从 4 世纪到 14 世纪，中世纪结束后，文艺始得复兴。</p> 
<p>日耳曼人入侵的时候，地球另一边的中国正处于南北朝时期，修建云冈石窟之际，中世纪结束的时候，是 1492 年哥伦布发现美洲新大陆，大航海时代的开端，那时中国已是明朝，离开郑和最后一次下西洋已有数十年光景。称这一千多年的时间为 Dark Age 是因为整个欧洲在文艺方面的衰退，但是现在随着考古的发现以及学者的研究，已不再认为整个中世纪都是「黑暗时代」了，蛮族混乱时期只能算中世纪前期，中后期仍有不少艺术作品留下。</p> 
<p>承接上周介绍的《剑桥艺术史：古希腊罗马艺术》，这周我们介绍丛书的下一册：<strong>《中世纪艺术》</strong>。前面说混乱时期留下的文物比较少，所以这本书主要介绍的 11 世纪到 14 世纪期间的艺术，其中能够留存下来的基本都是建筑，而中世纪是基督教统治的时代，所以这段时间的艺术简单地说就是：宗教，宗教，宗教，教堂，教堂，教堂。</p> 
<p>在前几篇文章我们说过现代的中国人比较难理解西方古代艺术，既有时空的距离也有文化的差异，要了解古希腊罗马艺术得先了解希腊神话（罗马神话源自希腊神话），要了解中世纪的艺术则需要先了解基督教。</p> 
<p>东西罗马帝国分裂后不久，东边的拜占庭帝国就由君士坦丁大帝正式承认了基督教，基督教在政治权力的影响下飞跃式发展，很快占领整个欧洲，连作为入侵者信仰的北欧神话也受到影响。我们说文化是基于经济基础的东西，11 世纪后各蛮族部落开始稳定下来，西欧渐渐恢复生气，这段时期整个欧洲世界的主题就是基督教，比如十字军东征最早就是以基督教收复圣城耶路撒冷为名，而基督教最有代表性的艺术品就是教堂。了解基督教比了解希腊神话容易，希腊神话的故事太多，多到你需要花上一两个礼拜的时间才能把神和英雄的故事全部读完，而基督教就一本《圣经》，虽然看上去体积巨大，但是如果只看耶稣生平的话，《新约》的《马太福音》就已足够。《圣经》分新约和旧约两部，旧约来自犹太教的经典《塔纳赫》，耶稣最早传道的时候就是传的犹太教的东西，但是不被犹太教承认，受到迫害，最后被钉上十字架。旧约创作年代久远，内容从上帝创造天地万物开始，我们熟悉的伊甸园与亚当夏娃就在旧约的故事里。新约是耶稣死后，由其后来的追随者所作，所以新约应该是最能体现基督教教义的部分，后来的许多艺术作品也都取材自新约里的故事情节，如果没读过这些故事，可能就不知道画里的人在做什么。比如经常出现在绘画作品里的「<strong>莎乐美</strong>」，她是希律王的女儿，希律王想要杀掉施洗约翰，但是怕犯众怒。于是到希律王生日那天，莎乐美献舞，希律王就起誓要送一份礼物给莎乐美，不管她想要什么。然后王后希罗底就唆使莎乐美要求约翰的人头，于是希律王假装忧愁不好违背誓言的样子，派人取下关押在囚的约翰的人头。很多艺术家都有作品表现约翰人头呈上的一幕，所以不了解这个背景知识，可能就不知道为什么会有个人头在盘子里，也就不了解作品里人物的情感。</p> 
<p>《剑桥艺术史》的每一册都很薄，出版的目的是面向普通读者，内容简要，语言朴实易懂，同时也省去了许多背景介绍。这些背景知识对于西方读者来说是常识，但是对于很多中国读者来说可能就有点困扰，所以建议读者们还是稍微花一点时间，读一读《圣经》新约的《马太福音》部分，先做点功课，再来看中世纪的艺术。了解基督教对于后面看文艺复兴以及 17 世纪宗教主题的画都很有帮助。</p> 
<p>回到中世纪艺术上来，这段时间的艺术发展可以分为<strong>罗马式艺术与哥特式艺术</strong>两个阶段。罗马式(Romanesque)艺术的 Romanesque 这个词是 19 世纪发明的，用来指「似罗马的」建筑。这类建筑的特点是采用类似古罗马时期的<strong>厚石墙和拱顶</strong>。11 世纪到 12 世纪是欧洲教堂建筑空前增长的时期，涌现出大批使用罗马式风格的教堂。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/001Stone_Vaults.png" alt="拱顶" /></p> 
<p>罗马式拱顶见上图，一开始人们使用筒形拱顶（1），由于采光不佳，后来又发展出交叉拱顶（3），基本上见到这些半圆拱顶就可以认为是罗马式建筑了。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/002圣塞宁教堂_blog.png" alt="圣塞宁教堂" /></p> 
<p>罗马式的代表性建筑之一为图卢兹的圣塞宁教堂。因为当地缺乏石材，整个教堂基本是用当地产的桃红色的砖砌成的，教堂中殿是非常高大的筒形拱顶。使用拱顶最大的好处是比简单的横梁顶跨越更大的空间，于是建筑师需要使用的支撑物就更少，这对教堂来说是很重要的，因为教堂的主要功能就是传教，<strong>当然越少的障碍物越好</strong>，这样参加礼拜的人就可以很容易看见站在最前面的教士们。罗马式建筑还有一个特点就是半圆形门楣上巨大的纪念碑式雕塑。《圣经》里面《启示录》所说的末日审判是很多艺术作品的共同主题，基督教传教的时候有两个主题非常重要，一是天国的美好，二是末日审判的恐惧。人生而有原罪，末日审判时罪人会被推入地狱，信耶稣者则可以获得耶稣的救赎。前面我们说 11 世纪的欧洲是落后混乱的时期，普通民众识字的非常少，于是雕塑和玻璃窗绘画就成为传教的主要手段。比起抽象的口头讲述以及基本没人看得懂的文字描述，图形无疑是更加直观形象的。这点不仅是罗马式建筑，整个中世纪的教堂建筑都是如此。</p> 
<p>教堂为了突显天国的安宁与祥和，同时给人以高大的形象，就格外强调建筑的高度，教堂建得越高越好。于是在罗马式半圆拱顶的基础上，发展出了<strong>尖顶拱、肋状拱顶和扶壁拱</strong>，高耸瘦削的教堂直插天际，雄伟而神秘，多彩的玻璃花窗给人以幻觉版的迷梦之感，烛影摇晃之间，有些哀婉，却又崇高，天国近了，你们应当悔改！这种特色鲜明的建筑，就是有名的「<strong>哥特式建筑</strong>」(Gothic architecture)。</p> 
<p>「哥特式」一词最早源自文艺复兴晚期，当时的作家对这些建筑不屑一顾，认为这些尖尖的拱、带肋架的拱顶和精细的装饰都是野蛮的，只有毁灭了罗马文明的「哥特人」才会做出这种东西。今天我们再看这些建筑，已经不带贬义了，由于早期这种风格是从法国巴黎附近开始，所以「哥特式风格」还有一个名字，叫「法国式风格」。今天「哥特」一词还带上了其他的含义，在形容小说和影视作品的时候通常和黑暗、恐怖联系在一起，比如美国导演蒂姆·伯顿（Tim Burton）的作品——《僵尸新娘》（Corpse Bride）。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/003st.Denis_.jpg" alt="圣但尼修道院" /></p> 
<p>哥特式艺术的发展可以分为<strong>早期、盛期和后期</strong>三个阶段，最早的哥特式建筑起于巴黎北面的圣但尼修道院（Abbaye de Saint-Denis）。西罗马帝国被灭了之后，很长一段时间里，<strong>法兰克王国</strong>是西欧最重要的国家，后来法兰克王国分裂为西边的法兰西王国（今法国前身）、东边神圣罗马帝国（今德国前身）以及中间的中法兰克王国。几乎各种重要的历史事件都能看到法国的身影，比如维京后裔征服英格兰的威廉一世就是法国的诺曼底公爵，比如第一次十字军东征的时出战的贵族多来自法国，而今天因为雨果的小说而闻名天下的「<strong>巴黎圣母院</strong>」就是法国哥特式盛期的代表。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/004巴黎圣母院_blog.jpg" alt="巴黎圣母院" /></p> 
<p>自古以来为有权有势的人制作的东西要比为平民百姓制作的更容易保留，中世纪最有权势的人就是教会和王室，所以教堂是留存最多最完整的。但是到了中世纪后期，近两百年的十字军东征对整个欧洲产生了极为深远的影响，第一次十字军东征后欧洲人在耶路撒冷周边建立了几个贵族小王国，虽然存在时间短暂，很快被伊斯兰国家灭掉，但是客观上欧洲人开始学习先进的阿拉伯文明，并在地中海开始发展航海贸易，这段时间威尼斯的占尽地利，唯利是图，威尼斯商人也成为后来莎士比亚讽刺的对象。十字军东征有很多有意思的故事，我们以后有机会可以聊一聊。欧洲海上贸易的发展最终促成了地理大发现，也就是大航海时代的开始，商业的发达让艺术也开始繁荣起来。于是到了哥特式后期，艺术不再是为王室与教会所属，而是开始转移为世俗私人服务。威尼斯因为占着十字军的集结地，又是东西方贸易的交通要道，在 13 世纪末成为欧洲最繁荣的城市之一。于是像威尼斯的黄金府邸（Palazzo Santa Sofia）这样的私人建筑开始出现。这时期欧洲各国的繁荣还有一个重要原因，就是蔓延到整个欧洲的瘟疫——黑死病。前面我们说中世纪早期最重要的王国是法国，当时欧洲有 1/3 的人口都是法国人，但是到了 13 世纪，黑死病直接消灭了 1/3 的人口，人口结构发生变化，许多人迁移到欧洲各地，于是艺术家就开始在很多国家活跃起来。</p> 
<p>整个欧洲中世纪艺术史看下来，我们可以看到这一时期的艺术家，其创作基本都是有非常强烈的功用性的，设计教堂的「石匠师傅」、雕刻回廊与门楣的雕刻家，给《圣经》大开本和小手卷画插画的画师，给教堂作湿壁画的画家，这些人无一不<strong>带着「为宗教服务」的目的去创作</strong>。这点与我们今天所熟知的「艺术家」就大相径庭。我们今天在美术馆看到的作品，由于其个人情感的表达要远大于作品的实用目的，又由于摄影术的出现，使得曾经在艺术史上占有重要地位的「写实主义」在今天已没有那么重要。艺术家越来越重视强调抽象情感表达，普通观众就越来越难跟上艺术家的步伐。那么怎样才能更好地理解艺术家的想法呢？</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/005picasso_-Guernica.jpg" alt="格尔尼卡" /></p> 
<p>我想首先无论是古代还是当代艺术家，在创作的过程一定带着某种意义上的「目的」，比如建造圣但尼教堂时，苏热尔院长建议少用墙多用玻璃，彩色玻璃窗上的宗教画产生神秘的珠宝般的效果，教徒通过图画认识基督教，通过浸润在色彩斑斓的教堂中获得一种幻觉般的，走向天国的体验。我们可以说，修建这座教堂是实用上的目的，而彩色玻璃的应用则是抽象情感上的意义，这种艺术的实用目的要强于情感表达。而到了现当代时期，比如毕加索创作《格尔尼卡》，格尔尼卡是西班牙共和国所辖的一座城市，在 1937 年西班牙内战时期受到纳粹德国地毯式的轰炸，当时毕加索受西班牙政府邀请为世博会西班牙区创作一幅画，于是毕加索创作了这幅伟大的立体派作品，对战争提出了强烈的控诉。画面中死去的孩子，绝望的母亲，身首异处的士兵给人强烈的观感。可以说在这幅画中作者侧重于情感的表达，而原本的实用目的（为世博会西班牙区作装饰画）则不太明显。</p> 
<p>艺术本身有对观众述说的语言，但不会很精确，就像诗歌一样，朦朦胧胧，留给观众很大的想象空间。对宗教画来说，你可以想象耶稣受难的苦痛，可以想象耶稣升天的神迹，可以想象末日审判的壮烈，这些想象在事实上加强了教徒的信仰，对于现代艺术来说，是观者的想象完整了一幅作品，当你看着《格尔尼卡》的时候你在脑海中回放一场惨烈的战争，一次声嘶力竭的悲吼，是想象强化了这幅作品的魅力。这种通过想象体会到的情感要远比直接告诉你「天国真好」、「战争好残忍」要强烈得多。</p> 
<p>16.03.24/下午<br /> 于 T.i.T</p> 
<p>PS: 在广州的读者可以到一德路石室圣心大教堂参观，这座雄伟的教堂始建于 1888 年，虽然是后来「哥特式复兴」时期所建，但是也可以看到扶壁拱，尖形拱顶等非常有特点的建筑。枫影认识「哥特式」一词就是从这座教堂开始。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #114 &#x53E4;&#x5E0C;&#x814A;&#x7F57;&#x9A6C;&#x827A;&#x672F;&#x4E3A;&#x4F55;&#x4EE4;&#x4EBA;&#x7740;&#x8FF7;&#x2014;&#x2014;&#x300A;&#x5251;&#x6865;&#x827A;&#x672F;&#x53F2;&#xFF1A;&#x53E4;&#x5E0C;&#x814A;&#x7F57;&#x9A6C;&#x827A;&#x672F;&#x300B;</title>
        <link>https://justinyan.eth.limo/4804B3C6-D476-48A1-8693-1EC11D839965/</link>
        <guid>https://justinyan.eth.limo/4804B3C6-D476-48A1-8693-1EC11D839965/</guid>
        <pubDate>Fri, 18 Mar 2016 22:46:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/cover_115_greek_rome_mp.jpg" alt="古希腊罗马艺术为何令人着迷" /></p> 
<p>上班的地方在 T.i.T 创意园，园子里有个地方名字挺雅，叫「翡冷翠小镇」。徐志摩当年游历意大利的时候起的这么个好名字，可惜现在基本都叫音译的「佛罗伦萨」了。上周的读书我们讲到艺术这件事情，必须在经济繁荣的基础上才有办法发展起来，14 世纪的佛罗伦萨就是这么个商业非常发达的地方，于是成了文艺复兴的起源地。在美第奇家族的保护下，许多艺术家得以全身心投入到艺术创作当中，达芬奇、拉斐尔和米开朗基罗留等大师下了许多传世之作。当时「黑死病」夺去了欧洲 1/3 的人口，中世纪长期统治欧洲的罗马天主教地位开始动摇，东罗马帝国（拜占庭）被奥斯曼帝国消灭，大批古希腊罗马的手稿随着拉丁语学者的逃亡而流入欧洲，于是古希腊罗马艺术在整个文艺复兴时期重获新生。</p> 
<p>古希腊罗马文明是西方文明的起源，对后世的影响异常深远，公元前 4 世纪留下的古罗马万神殿（Pantheon）因其巨大的体量至今仍给观者无以伦比的震撼，无论是穹顶的建筑难度还是中央天窗投下的神秘的光影，都令人心驰神往。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/001_pantheon_blog.jpg" alt="Pantheon 万神殿" /></p> 
<p>18 世纪法国「先贤祠」的正面是仿万神殿所建，今天在建的建筑物也有许多古希腊、罗马的痕迹。古希腊罗马的艺术到底为何能有这么大的魔力，让人类时至今日还在沿用它的设计呢？希腊与罗马又为什么总是一起被提及，它们之间有什么区别呢？上周我们介绍了面向初次接触艺术的读者出版的<strong>《剑桥艺术史》</strong>丛书的最后一本，这周我们要介绍时间顺序上的第一本——<strong>《古希腊罗马艺术》</strong>。</p> 
<p>这套丛书最早是由剑桥大学出版社于 1983 出版，原名为 The Cambridge Introduction to the History of Art。既是 <strong>Introduction</strong>，书本内容就非常简单易读，但同时也十分严谨，除了介绍具有代表性的艺术作品的作者、创作背景以及创作意图之外，还会有相当的篇幅讲解今天的艺术研究者是怎么去鉴别艺术品的年代以及作者的。书中配有大量全彩插图，方便读者对照阅读，但纸张印刷毕竟有色差，而且无法体现真品的尺寸，更无法体现空间感，所以枫影在阅读的过程中会结合 <a href="https://images.google.com">Google Images</a> 与 <a href="https://www.google.com.hk/maps/@41.8894583,12.4928283,3a,89y,29.6h,111.93t/data=!3m8!1e1!3m6!1s-y0-97CuzPTw%2FU4Edt0vD2TI%2FAAAAAAAAotI%2FhBh98MOuPB4fu0eBGr_M5NYTjV1MB8vSw!2e4!3e11!6s%2F%2Flh6.googleusercontent.com%2F-y0-97CuzPTw%2FU4Edt0vD2TI%2FAAAAAAAAotI%2FhBh98MOuPB4fu0eBGr_M5NYTjV1MB8vSw%2Fw203-h101-n-k-no%2F!7i10000!8i5000!6m1!1e1">Google Maps 的 Street View</a> 来获得更加直观的信息。这套丛书虽然每一本都很薄，但是真要把每一个作品都理解到位还是需要花费一定的时间和精力的。</p> 
<p>书中所提到的艺术，主要是指狭义上的视觉造型艺术范畴，可以简单地理解为<strong>雕塑、建筑与绘画三类</strong>。古希腊罗马因其风格为继承与发展的关系，所处年代也相近，而被统称为古典(Classical)艺术。这一时期的作品主要是从<strong>荷马史诗流行年代(公元前 8 世纪)，到欧洲中世纪开始之前(西罗马帝国灭亡)这段时间</strong>，对应到中国，大概是<strong>从西周一直到南北朝时期</strong>，一共一千多年光景。我们说考察一部文学作品需要把它放回作者创作的年代，结合当时的社会历史环境来看，艺术作品也是同理，想要了解古希腊罗马艺术，首先得了解古希腊罗马的历史及其文化。由于罗马帝国本身没有自我发展完善的神话故事，罗马神话基本上就是从希腊神话而来，所以对于文化部分我们只需要了解<strong>希腊神话</strong>就足以了解艺术作品所要表达的内容了。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/002_希腊神话故事全集_compressed.jpg" alt="希腊神话故事大全集" /></p> 
<p>对于希腊神话故事，荷马的两部史诗《伊利亚特》、《奥德赛》和赫西俄德的《神谱》是研究的主要来源。但是阅读古籍是件困难的事情，阅读中译本的古籍就更加艰涩了，所幸今天有许多白话本方便我们阅读。枫影在读完《北欧神话 ABC》之后又读了华文出版社出版的，<strong>刘世洁编著的《古希腊神话故事大全集</strong>》，这本书收录的希腊神话以及英雄传说非常齐全，语言也通俗易懂，但是文笔不佳，好好的神话故事给写得毫无起伏动人之处，而且十分冗长，厚度可观，所以并没有在每周读书介绍过。但是对于想要了解古希腊神话的同学，这本书还是有一定的价值的。</p> 
<p>回到古希腊罗马的历史上来，以本书的艺术角度，大体上这一千多年可以分为几个时期：</p> 
<ol> 
 <li><strong>上古及古典时期 (前 8 世纪到前 4 世纪)</strong></li> 
 <li><strong>希腊化时期 (Hellenistic period，亚历山大大帝统治到罗马统治前)</strong></li> 
 <li><strong>罗马时期 (罗马统治到西罗马灭亡)</strong></li> 
</ol> 
<p>在古代，所谓的「希腊」不是指一个国家，而是泛指在爱琴海地区使用古希腊语的所有城邦。早在古希腊文明诞生之前，爱琴海地区有过灿烂的迈锡尼文明，这个文明由于多利亚人的入侵而灭亡，幸存的部落逃到希腊建立了许多小的部落，最终发展成城邦。这些城邦都使用古希腊语，共享同样的神话，互相之间有贸易有竞赛也有战争，但没有统一的君主。城邦规模都很小，数量众多，最大的城邦是雅典和斯巴达，自由公民可以无拘无束地表达自己的意志，这个世界没有国王，神明也有贪嗔痴，与世人无异，没有一个高高在上的人可以拘束城邦的公民，这种自由的意志我们在今天西方的民主社会里还可以看到。当时的中国已经是西周时期，从秦始皇开始几千年漫长的君主制可能会让中国的读者不太好理解古希腊的政治状况，我们可以简单理解为每一个城市都是个独立的民主社会就行。</p> 
<p>希腊城邦会联合在一起抵抗外敌，在<strong>希波战争</strong>(Greco-Persian Wars)中，希腊人打败波斯帝国入侵者，战争结束后雅典进入全面鼎盛的黄金时期。这场战争以前我们称为<strong>上古(Archaic)时期</strong>，这段时间的希腊人主要从学习埃及的艺术开始，一步步发展出自己的艺术特色。几十年后以雅典为首的提洛联盟与以斯巴达为首的伯罗奔尼撒联盟开始了长时间的战争——<strong>伯罗奔尼撒战争</strong>，这场耗尽希腊人元气的战争最终以斯巴达胜利告终，但是希腊城邦也开始走向衰落。这时西北的马其顿帝国入侵，摄政王腓力二世拿下内耗过重的希腊世界，随后遇刺身亡，年仅 20 岁的亚历山大继位，打败波斯帝国，占领埃及，建立起一个庞大的亚历山大帝国，随后在进军印度时厌战的军队不愿行军，被迫返乡，最终死于归途，这段时间是希腊艺术的巅峰时期，我们称为<strong>古典(Classical)时期</strong>。</p> 
<p>上周我们说欣赏绘画可以从这幅画的<strong>创作意图、背景、技巧和构图</strong>来看，现代艺术比较不好被人理解的一点就在于创作意图与创作背景的模糊。比如在欧洲中世纪的宗教画，艺术家是受教会雇佣为教堂作画的，当时的民众识字的不多，需要靠直观的绘画来实现宗教传播的目的，所以宗教画就是为教堂服务的，这点很容易被理解。古希腊神庙常建在空旷的地方，为了让四面看上去都有令人满意的视觉效果，使用了大量希腊柱围起来的围廊式设计，这点也很好理解。但是今天的艺术常常会有些让人摸不着头脑，往往我们在美术馆看画的时候，必须结合入口展板的作者介绍来理解。在广州看展，我的感觉是这些资料往往比较简单，不足以给普通观众一个深刻的体会，而国外的美术馆，对于当代艺术的展览则通常会结合制作精良的视频，通过对创作者制作过程的展示，给观者一个更为直观的理解，同时也使艺术思想更容易被普通观者所接受。</p> 
<p>为了让读者理解这一点，《剑桥艺术史》丛书对各个时期的代表作的创作背景以及创作意图都作出了详细的说明，包括艺术家是为了什么人而创作，作品是要放在在新教堂的壁画还是摆在在公馆里的雕塑，是为了传教的需要还是为了贵族宫殿的装饰，了解这些信息有助于我们举一反三，在看到一件艺术作品的时候可以反过来猜测作者的意图。</p> 
<p>作为一个普通读者，<strong>理解艺术的还有一个难点就是，自己并没有掌握艺术创作的技巧</strong>，除了作品尺寸、写实与否这种直观的标准之外，很难去分辨一个艺术品在创作技巧上的难度。于是在这套丛书中，作者一般通过<strong>「对比」</strong>来一步步讲解希腊艺术的进步与发展。想要知道一件作品有多厉害？拿另一件不咋地的作品对比一下就知道了。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/004_男子像.jpg" alt="男子像" /></p> 
<p>比如我们来看希腊雕塑从上古时期到古典时期的发展，简单的说希腊艺术家们总是在「<strong>作出改变——出现新问题——解决问题——又有新问题</strong>」的循环中不断追求新的艺术技巧。公元前 7 世纪的立雕像(图1)看上去与同时期的埃及雕像十分相像，但是雕刻家在埃及雕像的基础上加入了对称的元素。距这座雕像诞生不到一百年时间，《安纳维索斯的男子像》(图2)诞生，可以看到这具雕像比前一具要更加写实，但是写实反而引发了新的问题，早期像小珠子一样的头发在风格化的雕像上是适合的，但是在这具更加写实的雕像上反而怎么看怎么奇怪。有一点像「恐怖谷理论」，当这个雕像很像真人但是又有一点不太像的时候，我们就会觉得很诡异。于是艺术家开始解决头发的问题，亚里士多迪科斯像(图3)出现了，头发的问题解决了，从解剖学的角度来看这具雕像的造型无可指责，但是正因为这具雕像更像真人，人们就又会注意到新的问题：「这人的姿势怎么这么奇怪？」因为这个姿势是从早期埃及的立雕像那里学来的，他不是一个自然的人会摆出来的姿势。于是雕刻家又开始着手解决姿势的问题。于是克里提奥斯少年(图4)出现了。这尊雕像做了这么一件事：少年头部微微被扭转，不再正视前方；他重心移向后腿，因此就稍稍抬起这一边的臀部，不再让两腿平分身体的重量了。这个小小的改动却让这具雕像活了起来！在书中类似这样的介绍比比皆是，可以看到，这种一步步进阶的讲解方法有点类似于艺术创作的学习过程，先从基本功开始，然后再学高级技巧。所以会艺术创作的人评价这些作品的记忆，其实也会用到类似的思维方式。</p> 
<p>前面我们说亚历山大大帝死后帝国分裂衰落，那是公元前 323 年，罗马在公元前 146 年征服了希腊本土。在被罗马统治之前，希腊的文化已经传播到地中海各地，我们称这段过渡期为<strong>希腊化时期</strong>。这段时期的希腊人在思想上已经有了非常大的变化，以前大家是属于一个城邦的公民，现在是一个庞大王国的子民，以前属于一个团体，现在只属于他自己。以前希腊的公众建筑占主导，私人住宅非常简单，现在私人的住宅奢华无比。这段时期的艺术有了新的题材，以前希腊人喜欢雕刻男性裸体，到了希腊化时期开始出现女性的裸体雕塑了，而且成功至极，乃至最后使男性身体黯然失色。这段时期最出名的女性裸体雕塑就是梅洛斯的阿佛洛狄，也即所谓的「断臂的维纳斯」。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/006_MG-Paris-Aphrodite_of_Milos.jpg" alt="复原作品" /></p> 
<p>这段时期还有个有名的建筑——<strong>帕特农神庙</strong>，其体量之巨大从 <a href="https://www.google.com.hk/maps/place/Parthenon/@37.9718423,23.7270855,3a,75y,1h,90t/data=!3m8!1e1!3m6!1s-pDUmzQBUWGE%2FVXLXPFYL8rI%2FAAAAAAAIrVc%2FeJTFMGPAHJA!2e4!3e11!6s%2F%2Flh5.googleusercontent.com%2F-pDUmzQBUWGE%2FVXLXPFYL8rI%2FAAAAAAAIrVc%2FeJTFMGPAHJA%2Fw234-h117-n-k-no%2F!7i14000!8i7000!4m2!3m1!1s0x0:0x1b3fa079b878a218!6m1!1e1">Google 街景</a>可见一斑。神庙的屋顶上有三角墙，墙上放满了体量同样巨大的雕塑。在拥挤的三角墙做雕像，一般来说作些装饰性的几何图形或者花纹是最容易的事情，但是希腊人却不满足于装饰，而是要往上面放神的雕像，而且不仅是把雕像排列出来，还要让雕像讲故事。今天我们可以从复原作品中看到艺术家独具匠心的设计，把中间的雅典娜与波塞冬做得比凡人要大，然后是稍矮的两边对称的马车，再往两边是比跃起的马要矮的人，最狭窄的两边则是半躺着的河神。在讲解神庙的一章里，作者讲到了好几个神庙对三角墙的处理，从简单的排列到帕特农神庙匠心独运的布局，这样看过来真是令人兴奋。</p> 
<p>由于时间、战争以及自然灾难，古希腊的艺术作品能够留存下来的很少，希腊绘画作品尤其少，青铜雕塑、大理石雕塑以及神庙建筑是相对比较好保留的东西，所以今天我们一提到古希腊罗马就会想到各种建筑，不仅因为这些作品令人惊叹，而且也因为能够留下来的东西就是这些。其中古希腊作品留存的数量远比罗马的要少，现在我们能研究的对象很多都来自古罗马的复制品。希腊化时期结束后是罗马统治时期。罗马人对于希腊艺术是极为仰慕推崇的，基本上可以说罗马的艺术是继承了希腊艺术，并在此之上做了一些发展。在雕塑上罗马的发展算不上有巨大的进步，但是在建筑上，罗马人不仅继承了古希腊的成就，而且将其往前大大推进，可谓当时世界建筑的巅峰。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/008_Epidaurus_Theater.jpg" alt="剧场" /></p> 
<p>比如我们看古希腊晚期的剧场——Epidaurus Theater，古罗马人也修建剧场，但是在古希腊半圆形剧场的基础上做了大胆的改进。古希腊剧场是把观众席修建在山坡上的，舞台的后面是风景优美的山谷。而罗马人则把剧场修到了城市当中，并且建造了布景楼。然后罗马人想到如果把两个剧场背对背拼在一起，去掉中间的布景楼，就可以得到一个圆形的场地，而这个场地就适合 360° 全方位无死角的「竞技场」。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/009_jingjichang.jpg" alt="竞技场" /></p> 
<p>今天再看回古罗马的竞技场人们还是会发出无比的赞叹，可见盛期的古典艺术即使放在今天也毫不逊色。上周我们说要了解艺术必须多看真品，对于古希腊罗马的艺术更加如是，动则真人大小甚至 13 米高的雅典娜神像，占地 2 万平方米的罗马竞技场，以及从巨大的穹顶投射光影的万神庙。这些东西如果不是亲临其地去感受，是无法体会到其中的震撼之处的。好在现在有 Google Maps，屏幕上可以互动的全景图像比纸张上的照片要好太多。通过新科技手段，我们会发现从细腻的雕像到规模庞大的神庙与竞技场，古希腊罗马艺术并没有想象中的「艺术难以理解」的概念。我想这才是真正顶尖的艺术会带给人们的观感，无论是对艺术工作者还是对普通民众来说。</p> 
<p>16.03.18 / 中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x4E66;&#x5355;] &#x67AB;&#x8A00;&#x67AB;&#x8BED;&#x2219;&#x6BCF;&#x5468;&#x8BFB;&#x4E66; 105&#x671F;-112&#x671F;</title>
        <link>https://justinyan.eth.limo/ABD5E71D-5A29-4A58-A3DA-AE65EC14D42A/</link>
        <guid>https://justinyan.eth.limo/ABD5E71D-5A29-4A58-A3DA-AE65EC14D42A/</guid>
        <pubDate>Sun, 13 Mar 2016 16:14:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/Cover105_112_compressed.png" alt="" /></p> 
<p>今天是 3 月 14 号，2016 年已经过去 1/5 之一了，好快。过去八期里，《羊毛战记》五部合辑版是不错的末日科幻小说，《独裁者手册》试图以非常新颖而简单的方法来论述今天世界上大部分国家政治运作的机制，给出了一个非常特别的视角，很有意思。《北欧神话 ABC》是茅盾多年前研究北欧神话的输出，非常适合对北欧神话没什么了解的读者入门。北欧神话本身还没进入完全成熟的时期就收到基督教文化的冲击，所以想要了解奥丁和索尔这些西方人看来是常识，中国人可能还比较陌生的东西，这本小册子已经足够了。我们的邻国日本是非常特别的国家，他们的文化与历史也很有意思，《日本简史》可以让读者简单了解日本的历史，今天日本许多保守与开放相矛盾的特点在其历史中都可以找到相应的故事，而《中国化的日本》则是以惊世骇俗的视角讲述了今天的日本所遇到的社会问题。</p> 
<p>以上几本是这八期来读到的比较有意思的书，关于网络上部分对蒋勋老师的批评之声枫影也稍作了下功课，（见《蒋勋到底有没有信口开河？》一文）。这些声音主要来自江弱水的批评，其他人都是拾人牙慧而已，江的文字有些过于刻薄，没有知识分子该有的风度，基本上我的态度是：蒋勋的不严谨在演讲时出现是难免的，但是出版物没有勘误既是编辑之失，也是作者之过。尽信书不如无书，尽信蒋勋固然不可，但是轻易全信了江弱水我以为也是不当。</p> 
<p>以下是这八期介绍的书目：</p> 
<ol> 
 <li><a href="http://justinyan.me/post/2690">每周读书#112 日本被中国赶超的担忧——《中国化的日本》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/02/zhongguohuaderiben_mp.png" alt="" /><br /> 2016-03-03<p></p> <p>1990 年开始的经济增长放缓，2011 年的东日本大地震以及核泄露带来的国民的不安，在这样的背景下一位敢言的作者以「中国化」的概念出书，势必引来群众的争议。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2683">每周读书#111 静静回响的一生——《斯通纳》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/02/stoner-mp-cover.png" alt="" /><br /> 2016-02-25</p> <p>他已经到了年岁的这种时刻：经常会想到，而且日益强烈，想到一个如此简单的问题，简单得他都没有办法去面对。他发现自己有些迷茫，自己的生活是否值得过下去，是否有过生活。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2660">每周读书#110 一清如水娓娓道来——《蒋勋说文学：从唐代散文到现代文学》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/02/110-jiangxunshuowenxue-cover-mp.png" alt="" /><br /> 2016-02-16</p> <p>今天有许多电视节目在鼓吹保护传统，鼓吹传承，我想，许多所谓的传统，在诞生之初也是应市场而生的，它终会应市场而灭，这是自然规律，我们不必过于执着。与其守着旧有的那点东西固步自封，还不如探索新的艺术突破，去顺应潮流，这才是真的保护与传承。</p> <p>相关阅读：</p> 
  <ul> 
   <li><a href="http://justinyan.me/post/2676">蒋勋到底有没有信口开河？</a></li> 
   <li><a href="http://justinyan.me/post/2387">每周读书#97 蒋勋说文学：从诗经到陶渊明</a></li> 
  </ul> </li> 
 <li><a href="http://justinyan.me/post/2649">每周读书#109 天皇并不总有实权—— 《日本简史》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/Cover-mp-1.png" alt="" /><br /> 2016-01-30<p></p> <p>日本的天皇制度很有意思，在中国，皇帝是天子，位极至尊，权倾天下，但是日本的天皇却有很长一段时间是被架空的，成为一个符号。我们上周介绍的《独裁者手册》这本书里，作者就强调统治者必须知道钱从哪里来，掌握了钱才能维持统治，这一点非常非常重要。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2640">每周读书#108 民主与独裁统治者没什么不同——《独裁者手册》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/独裁者手册covr.png" alt="" /><br /> 2016-01-21</p> <p>对于政治，很多人的厌恶来自于不了解，因为不了解所以看不懂，因为看不懂所以无趣。《独裁者手册》给了一个比政治新闻更好理解的视角，给了一个不需要自己揣摩也能读懂的工具，以这个工具去解读其他组织，很多以往不明白的问题会不会一下子就豁然开朗了呢？</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2620">每周读书#107 如何通俗易懂地认识北欧神话？——《北欧神话 ABC》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/Cover-mp.png" alt="" /><br /> 2016-01-14</p> <p>足迹踏遍整个欧洲的维京人，尽管自己的文明已经被基督教融合，他们留下的北欧神话直接仍影响深远。主神奥丁、雷神索尔、恶神洛基，这些形象仍活跃荧幕上，甚至蓝牙技术也是以维京人的某个丹麦国王命名，想要了解欧洲文化，北欧神话是不可或缺的一部分。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2607">每周读书#106 花甲老人徒步穿越英格兰——《一个人的朝圣》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/Cover106-mp.png" alt="" /><br /> 2016-01-06</p> <p>一个人的旅途是如此简单，所做的事情不过是把一只脚抬起来，另一只脚踩下去，一直骑下去。有时候遇到陡坡与狂风会困苦，会疲累，这时候路人善意的大拇指与小孩天真的笑容能让你再度充满动力，艰难的旅途总是容易感动，这种陌生人间的简单正是旅行的魅力所在。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2585">每周读书#105 反乌托邦∙绝望乡：末日的沙丘地堡——《羊毛战记》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/每周读书105羊毛战记-mp.png" alt="" /><br /> 2015-12-31</p> <p>艺术也好，文学也好，思想总是新一波浪潮推翻前一波，反乌托邦取代乌托邦思想直到今天都还是主流。比如动漫作品的《进击的巨人》，游戏作品的“地铁系列”、“Fallout系列”，以及《羊毛战记》。</p> </li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #113 Susan Woodford &#x2014; &#x300A;&#x5251;&#x6865;&#x827A;&#x672F;&#x53F2;&#xFF1A;&#x7ED8;&#x753B;&#x89C2;&#x8D4F;&#x300B;</title>
        <link>https://justinyan.eth.limo/564ACDF6-44E6-481C-9470-0A92C760484C/</link>
        <guid>https://justinyan.eth.limo/564ACDF6-44E6-481C-9470-0A92C760484C/</guid>
        <pubDate>Fri, 11 Mar 2016 00:00:00 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/03/113looking_at_pictures_mp-1.png" alt="" /></p> 
<p>大雨过后，玻璃窗台，一个个劬劳的身影低着头走过，行色匆匆，不像在生活。我想起 L. S. Lowry（劳里）以城市工业为背景的画作——Coming From the Mill。灰冷的背景，佝偻蹒跚的人群，没有一棵树木的街道，下班的人们步调一致的脚迹，凄美而虚无。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/LSLowry-1941-8ComingFromTheMill-800-1.png" alt="Coming From The Mill" /></p> 
<p>看着路人上班时仓促的脚步，我想文化毕竟是基于经济基础之上的东西，如果生存还是生活的负担，就不会有人去关注温饱以外的东西。2010 年中国 GDP 超越日本成为世界第二经济体，尽管亟待解决的问题很多，但是这几年一线城市的人们除了工作之外，已经开始关注健身与阅读等个人发展，可以看到文化开始发展的苗头。但是艺术（尤指西方主导的 Fine Art 视觉造型艺术如油画）却是其中门槛较高的。健身只要有正常人的身体就能做，阅读只要识字就能读，但是艺术如果没有相关的背景知识以及审美能力，则只能看到无聊与不解。</p> 
<p>1983 年剑桥大学出版社出版了一套面向学生与普通大众的艺术丛书，叫 Cambridge Introduction to the History of Art，2009 年译林出版社出版了其中译本，书名为《剑桥艺术史》，直接把 Introduction 给吞了。光看中文书名大家可能以为是严肃的砖头著作，其实翻译为「艺术史简介」或者「艺术简史」可能更符合本书的定位。这套书分为 8 册，内容涵盖了古希腊艺术到 19 世纪艺术，每一册都非常薄，有大篇幅的彩色插画，没有艰涩的术语，十分易读。本周我们要介绍的是丛书的最后一册——《绘画观赏》(Looking at Pictures)。</p> 
<p>今天国内的群众对于艺术的距离感，我觉得可能有几个原因：</p> 
<ol> 
 <li><strong>国内比较少有机会甚至没机会接触到艺术真迹</strong> <p>以我为例，我出生在一个三线小城市，市里只有一个老博物馆和几个规模很小的图书馆。学校有美术课但基本都是看着课本里的印刷品做讲解，所以直至到广州上大学以前基本没有机会接触真正的艺术品。这样的话，我对于艺术的理解就完全来自于课本上的印刷品，以及屏幕上的图像，这些东西与真迹是有天壤之别的。首先印刷品是平面的，没有办法感受到作品的空间感，比如雕塑作品，或者油画上的笔触，其次印刷品在体量上与真品无可比拟，且莫说大型雕塑与建筑，就是油画作品也常常有体量巨大的，比如高更的代表作—— *Where do we come from? What are we? Where are we going? * ——就是一幅 139cm X 375cm 的作品，光是站在这幅作品面前，其震撼力就远非纸上小图可以比拟。于是当我第一次在美术馆看到浮世绘的真迹的时候，我才知道原来浮世绘是如此具有立体感的，是经过许多道复杂工序由多名画师、雕刻师合力才制作成的。<strong>所以要想感受艺术，首先得感受一件完整的艺术品</strong>，艺术品的体量、材质，甚至博物馆精心设计的展览布局都会影响到观赏者的体验。</p> </li> 
 <li> <p><strong>群众普遍缺少对艺术的观赏能力</strong></p> <p>这一点与第一点是紧密关联的，在没有见过真迹的情况下，观者的感性认识都还没有很好地培养起来，就更不用谈深奥的艺术理论学习了。所谓熟读唐诗三百首，不会作诗也会吟，看画也是一样的道理，即使完全不懂画，在美术馆泡多了也能培养一定的审美能力，至少能分辨出哪些东西是雅而不俗的，哪些是俗不可耐的。</p> </li> 
 <li> <p><strong>以西方文化为主导的艺术，由于文化差异对中国观众来说不太好理解</strong></p> <p>现在提到「艺术」一词，大家脑里首先浮现的恐怕是断臂的维纳斯，或者梵高的星空，或者是中世纪的画家所作的大量神话和宗教题材的作品。其实「艺术」涵盖甚广，雕塑也好绘画也好，只是属于「视觉造型艺术」一支，西方艺术只是世界艺术的冰山一角。只是如我们文首所述，文化是基于经济基础之上的东西，先有国民温饱才有文化繁荣，现在世界经济的前沿多是西方国家，我们的学校在介绍艺术一块的时候也多以西方艺术举例，所以才有一种「一提到艺术就是油画」的假象。这种假象有什么问题呢？最大的问题在于我们对西方文化的不了解，我们知道有希腊神话，有北欧神话，有耶稣基督，但是希腊神话里各个主要的神的角色呢？整个特洛伊战争的故事呢？奥德修斯呢？还有奥丁和索尔的故事，还有基督教的故事呢？对于大部分中国人来说，恐怕除了几个名字之外，就一无所知了。而西方早期的艺术主要是古希腊罗马文化的雕塑与建筑，中世纪的艺术主要是基督教，文艺复兴开始又回归古希腊罗马，漫长的中世过后才开始转而关注人本身。在不了解这些文化的情况下，中国观众很难去理解画里的故事。</p> <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2021/05/25_Venus_and_Mars_jpg.jpg" alt="Botticelli - Venus and Mars" /></p> </li> 
</ol> 
<p>综上，一个像我一样完全没有美术专业知识背景的普通人，要学习艺术观赏，首先就需要了解一定的西方文化背景，大概从北欧神话、希腊神话以及基督教文化入手，了解主要的故事即可，不需要清楚地记住每一个人名，但是在看画作的分析的时候，至少能看到一个神的名字能想起来他所代表的东西，比如看波提切利的 <em>Venus and Mars</em>，能知道维纳斯是爱神代表爱与温柔，马尔斯是战神代表力量与战争，这幅作品宁静祥和，意喻爱的力量征服了战争。在不了解阿尔斯（即古希腊神话的阿瑞斯）的残暴故事的时候，观者是很难体会到这副画的寓意的。然后我们要尽可能地去观看真实的艺术品，而非印刷品。我们的邻国日本是亚洲经济最发达的国家，同时也是一个文化非常繁荣的国家，在各个领域都有很厉害的输出。比如建筑师安藤忠雄，电影导演黑泽明，歌手小野丽莎，作家村上春树，艺术家草间弥生。能有今天的繁荣景象，有一部分要归功于日本的覆盖率非常高的文化设施。比如看 iMusuem App 收录的比较大型的博物馆（包括美术馆），广州是中国的一线城市，只有 5 个博物馆被收进 App，东京有 16 个被收录，而没被收录的就更多了，WikiPedia 有一份 List of Musuems in Tokyo，上面包括画廊在内有 130+ 个。在东京银座一带，几乎走两个路口就有一间小型的博物馆，即便是极北苦寒之地，的小城镇小樽（日本电影《情书》拍摄的地方）都有一家美术馆，展品还挺有意思。相反国内除了北上广深就很难有规模比较大的展览了，去美术馆可能对很多人来说已经是比较困难的事情，所以有条件的读者就更应该多多珍惜了。</p> 
<p>有了前期的准备之后，我们可以看《剑桥艺术史》丛书，丛书的前七册是分别介绍了各个时期的艺术特点，挑选了比较有名的作品来讲，最后一册《绘画观赏》则是告诉我们如何去欣赏一幅画作，不作具体的限制。书本一开始提出了四个问题，我们可以从这四个问题去看一幅画：</p> 
<ol> 
 <li>为什么要画这幅画？</li> 
 <li>作品传达了什么样的文化背景？</li> 
 <li>作品是否写实？（如果写实与否同画作本身是不相关的，则不应该提这个问题）</li> 
 <li>作品的构图设计怎样？</li> 
</ol> 
<p>带着这四个问题，作者挑选了多幅名作进行对比分析，<strong>要了解一幅作品好在哪里，首先要知道怎样的作品是不好的</strong>，这点是这套丛书给我留下比较深的印象。丛书在介绍古希腊罗马的作品时就是循序渐进地，从早期的作品一点点发展开来，艺术家在解决了一个问题的时候又遇到了下一个问题，于是迎接挑战，克服种种技术难题，不断获得进步与提升。比如在文艺复兴时期，能否真实地表现自然不仅至关重要，而且是一种挑战。艺术家们为了解决写实的问题大量运用透视法和解剖学知识，比如我们熟知的大师达芬奇就既是一名画家也是一名解剖学家。通过本书作者的解读，我们能够了解艺术的价值，也能够了解真实的作品与印刷品的差距，在看书中插图的时候，我往往要结合标注的尺寸，想象自己站在这幅画面前大概是什么样的比例，试图在脑海中还原对画的观感。我曾在美术馆看过达芬奇《圣母像》(The Madonna with the Yarnwinder)的真迹，虽然当时人太多只匆匆看了一瞥，但是现在回想起来那段经历还是十分有趣。昏昏暗暗的独立展区里，拥挤但秩序井然的队伍，两边是守卫森严的保安，灯光正好打在圣母像上，油画在厚重的画框里静静地安放着，就快排到我了，心里竟有点紧张。然后就是在不影响后面队伍的情况下尽可能慢地一步步走过去，多看一秒就多一点满足。</p> 
<p>我几乎谈不上艺术修养，了解的画家也不多，但是如果有碰上有意思的展览我还是会去看看，生活本来就应该是很有趣的事情，如果整天让消极负面充斥了自己，那与浪费生命有什么区别？欣赏艺术不过是许多有趣的事情的其中一件，只是如果欣赏不了艺术，大约与不识字一般，少了一项生活的乐趣了。希望各位读者能从阅读与艺术当中找到属于自己的乐趣 😀</p> 
<p>16.03.10/夜<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #112 &#x4E0E;&#x90A3;&#x9738;&#x6DA6; &#x2014; &#x300A;&#x4E2D;&#x56FD;&#x5316;&#x7684;&#x65E5;&#x672C;&#x300B;</title>
        <link>https://justinyan.eth.limo/25845AF0-16D2-4803-889C-97EB0FC18D5B/</link>
        <guid>https://justinyan.eth.limo/25845AF0-16D2-4803-889C-97EB0FC18D5B/</guid>
        <pubDate>Thu, 03 Mar 2016 09:58:50 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/03/zhongguohuaderiben_mp.png" alt="中国化的日本" /></p> 
<p>中国在古代曾是世界上最先进的国家，比如开放包容的盛唐，比如战力强盛的元朝，历史上在亚洲，周边国家也多奉中国为上国，向中国进贡，学习中国的文化与政治。其中日本的“遣唐使”就是比较典型的对中国文化的学习与交流，即使唐朝末期因中国国内动乱而中止了遣唐使制度，中国的文化仍然对日本有相当的影响。但随着欧洲列强入侵亚洲，中国在入侵者面前不堪一击，一切就都不一样了。</p> 
<p>今天日本作为亚洲最发达的国家，无论是经济还是文化都有不可一世的地位，相较之下中国才是落后、愚昧的地方了。文化是非常依赖于经济的，吃不饱穿不暖的情况下是没有办法发展文化的，所以从这个层面上来说，中国的现状确实还远不如日本。2009 年中国的 GDP 总量首次超越日本，成为世界第二大经济体（<a href="http://knoema.com/nwnfkne/world-gdp-ranking-2015-data-and-charts">2015 世界 GDP 排行</a>），这给日本国内带来一阵不安。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/03/2015Global_GDP_Ranking.png" alt="2015 Global GDP Ranking" /></p> 
<p>尤其是日本在经历了战后经济奇迹后，近 20 年来经济发展都无法复现当年景气，1990 年日本的 GDP 总值为 3,104，2015 年为 4,116(单位是 Billion, USD)。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/03/1990Global_GDP_Ranking.png" alt="1990 Global GDP Ranking" /></p> 
<p>战后的日本在朝鲜战争中成为美国的军需工厂，借此机会获得世人瞩目的迅速增长。到 1990 年开始日本经济萧条，至今仍增长缓慢。读者们可能还记得，2011 年在日本仙台东海域发生里氏 9.0 级大地震（汶川地震为里氏 8.0 级），伴随此次地震而来的还有 40.5 米的大海啸，以及福岛第一核电站泄露事故。这次灾难给日本国民带来了沉重的打击，到今天还有人时时为此悼念，也有艺术家如村上隆，以东日本震灾为灵感创作“五百罗汉图”，作为精神慰籍。</p> 
<p>就在这样的背景下，2011 年日本文艺春秋出版社出版了一本标题为《中国化的日本——日中「文明冲突」千年史》的书，引发大众热议。这本书的作者是来自爱知县立大学的讲师——与那霸润（东京大学博士毕业，主要研究日本近代史和现代史）。争议的声音部分来自只看标题、望文生义的读者，这个意义上，作者做「标题党」可谓相当成功。</p> 
<p>但是不同于有名无实的标题党，本书可谓有理有据，翔实可靠。作者通过介绍最新的历史研究成果，以日本「近世」的定义为切入点，提出世界上最早进入「近世」的是<strong>宋朝的中国</strong>，于是所谓的「中国化」其实指的是<strong>日本将要进入跟宋朝以后「中国的近世」一样的状态</strong>，「中国化」即是这一过程的代名词。虽然听起来有点绕，但是这种命名是可以理解的。所以我们在阅读时务必明确一点：<strong>作者没有说日本要变成今天中国的样子，作者只是在说中国这个社会从宋朝以后进入的那种状态，日本也即将要进入了</strong>。</p> 
<p>那么「中国化」到底是什么？作者在第一章中做了简述，主要是引用了东洋史学家<strong>内藤湖南</strong>的论点，宋朝的划时代的特点就在于：</p> 
<ol> 
 <li>全面废除贵族制度，实行皇帝独裁。</li> 
 <li>创造了一个使经济和社会彻底自由化，而政治秩序却通过某个唯一势力的支配来维持的体制。</li> 
</ol> 
<p>在<a href="http://justinyan.me/post/2649">每周读书 109 期(《日本简史》)</a>中我们介绍过，日本的天皇一直没法脱离贵族实现真正的独裁，有很长一段时间里，幕府将军才是真正掌握政权的人，而吸取了唐朝末年藩镇割据教训的宋朝，实行了更为严格的中央集权制度，独裁在中国仿佛天经地义一般。所以相较之下，日本在政治上一直是纠葛繁多，理不清头绪。第二点所谓的自由是相对的，宋朝以来农民可以使用铜钱缴纳赋税，而日本则仍然是使用谷物赋税。使用铜钱的好处是农民可以把农物拿去市场交易，而且铜钱比农物更适合保存，于是有了财富积累的可能。另外农民可以脱离土地，有一定的流动性。相对的，日本人最喜欢的「二百五十年和平期的江户时代」，则是把农民绑定在领主的土地上，领主世袭，农民相对没有流动性，再加上严格的身份制（简单的说分为君、良、民、杂色人与贱这样分明的身份），江户时代实际上是各个阶层的人得过且过的一个时代。今天日本公司多实行终身雇佣制度，与江户时代的政治制度有传承的关系。所以相对于「中国化」，作者在书中也提到「再江户时代化」的观点，认为日本从江户时代至今一直没能放弃江户时代的体制。</p> 
<p>作者在第一章综述论点，分九章展开论述。针对「尽信书不如无书」的读者，作者还对每一个引用观点的出处做了注解，似论文般严谨，所以虽然作者的观点有些惊世骇俗，但是整体读下来还是令人信服的。中文版翻译是由日本山口大学的何晓毅教授负责，何教授居住日本多年，文笔晓畅易读，还对某些在日本读者看来是常识，但中国读者可能不清楚的词汇做了注解，提高了这本书的可读性。不过即便如此，在阅读这本书之前，<strong>最好还是要有一点日本历史的基础</strong>，我们在<a href="http://justinyan.me/post/2649">每周读书 109 期介绍过的《日本简史》</a>就可以作为入门读物，这样至少可以明白日本各个历史时期的大事记，不至于读起这本书来云里雾里。</p> 
<p>另外这本书虽然以「中国化」为主题开始讲起，但是中间结合历史事件以及日本现状，也涉及到诸如「尽管中国古代对人类科技发展做出了很多重要贡献，但为什么科学和工业革命没有在近代的中国发生？」（李约瑟难题）、「日本明治维新的真相」等问题，作者非常敢言，这点很令人敬佩。这本书也提起日本今日养老金过高，年轻人不愿买单，老龄少子化，男女社会性不平等等一系列问题，在阅读的过程中读者会有相当的收获。</p> 
<p>作者非常擅长抓住读者的好奇心，他在第一章中提出了几个问题，既是引起读者兴趣，也是提携全书总纲。想来各位读者看了这几个问题，也会有一探究竟的想法：</p> 
<blockquote>
 <p> 为什么欧洲那样的「落后地区」能奇迹般地逆转宋朝中国这个「发达国家」，引发工业革命？<br /> 近代西洋凌驾于中国之上的这种异常事态为何出现，而这种例外时代又是如何迎来终结？<br /> 为什么丝毫谈不上什么「近代化」或者「西洋化」的那个国家，最近却莫名其妙地又返回到貌似大国的地位上了？<br /> 为什么在历史上几乎总是最先进国家的中国，却独独总是培育不出人权意识和议会政治？ </p>
</blockquote> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/02/zhongguohuaderiben_notes.jpeg" alt="中国化的日本-笔记" /></p> 
<p>16.02.28/夜<br /> 于自宅</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5199;&#x4E86;&#x4E2A; Chrome Extension&#xFF1A;JTQuotes Start Page</title>
        <link>https://justinyan.eth.limo/B9AD7B59-840F-45D3-9664-D6EA4072A027/</link>
        <guid>https://justinyan.eth.limo/B9AD7B59-840F-45D3-9664-D6EA4072A027/</guid>
        <pubDate>Wed, 02 Mar 2016 11:53:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/Featured-Image-Blog.png" alt="Featured-Image-Blog" /></p> 
<p>用 Chrome 多年，官方自带的 New Tab Page 都不太好使，也在 Chrome Web Store 上尝试过几个不同的 Extension，但都不太满意，有点太过花哨，华而不实反而导致打开速度变慢，有点虽然简单，但是又缺乏设计感。</p> 
<p>前段时间用着一款叫做 <a href="https://chrome.google.com/webstore/detail/new-tab-startup-quotes/bljnhgkajocmhlflgefahihojeajhjji">New Tab Startup Quotes</a> 的扩展，可以覆盖 New Tab Page，显示一句随机名言，足够简洁了，不过设计上有点简陋（如下图）。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/New-Tab-Startup-Quotes.png" alt="New-Tab-Startup-Quotes" /></p> 
<p>于是想着 Chrome Extension 都出来这么多年了，除了刚出来那会玩了一下之外就没再研究过了，不如趁此机会研究一下，于是就写了个自己的 New Tab Page：<a href="https://chrome.google.com/webstore/detail/jtquotes-start-page/gkbaceebanpgdmiigkfkebjkfkokfnbd">JTQuotes Start Page</a>（效果如下图）。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/screenshot.jpeg" alt="JTQuotes Start Page" /></p> 
<p>完了就顺便走一遍 Chrome Web Store 的提交流程，在交开发者注册费 5 美刀的时候有点问题，中行的 VISA 信用卡不能支付，还好招行的双币信用卡可以，但是需要填一个国外的地址。于是我得先到 Google Wallet 里面先填一个香港的地址，大陆地址是不支持的，好在可以支持中国的手机号码，顺利通过，然后用招行信用卡支付了。</p> 
<p>Chrome Web Store 不需要审核，自己把扩展的代码和资源文件一起打包上传，然后再填几个必要的字段就可以 Publish 了，非常方便。不审核当然会有充斥质量低下的扩展的问题，这点在 Google Play 上也是差不多，虽然 Google Play 需要审核，但是远没有 Apple Store 来得严格。</p> 
<hr /> 
<p>本来打算走完流程后就不管了，不过 1.0 版本发布后有几位推友吐槽了几个意见，比如没有适配 Windows 的字体，比如需要自定义 Quote 内容等等，于是昨晚下班后就顺便改了一下，加了个 Option 页面，现在 1.1 版本已经上架，可以填自己的 Quote 了。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/03/JTQuoteScreenshot.png" alt="JTQuoteScreenshot" /></p> 
<h2>下载地址</h2> 
<p>欢迎各位朋友到 Chrome Web Store 下载这款小扩展：<a href="https://chrome.google.com/webstore/detail/jtquotes-start-page/gkbaceebanpgdmiigkfkebjkfkokfnbd">JTQuotes Start Page</a></p> 
<p>欢迎大家吐槽，不过不一定会改就是了 XD</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #111 John Williams &#x2014;&#x300A;&#x65AF;&#x901A;&#x7EB3;&#x300B;(Stoner)</title>
        <link>https://justinyan.eth.limo/46A1BABF-0732-4AA6-8FF5-BC39DC5E408E/</link>
        <guid>https://justinyan.eth.limo/46A1BABF-0732-4AA6-8FF5-BC39DC5E408E/</guid>
        <pubDate>Thu, 25 Feb 2016 10:50:55 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2020/11/stoner-mp-cover.png" alt="Stoner-John Williams" /></p> 
<p>这是一部安静而充满回响的小说。</p> 
<p>斯通纳（Stoner）是主角的名字，他是农民的儿子，隐忍一如父母亲踩了一辈子的土地。这部小说讲的是他平凡而感人的一生：</p> 
<blockquote>
 <p> 如果偶尔有学生碰巧看到这个名字，也许会纳闷威廉·斯通纳是谁，但促使他探究的好奇心顶多止于提个漫不经心的问题。斯通纳活着的时候同事对他并不怎么尊崇，现在几乎绝口不提了。对年纪稍长的同事来说，他的名字意味着让人想起等待大家的那个最后结局；在年纪更轻的听来，这个名字不过是勾起毫无意义的过去的某种声音而已，而且没有什么共性可以跟他们本人或者自己的职业联系起来。</p> 
 <p> An occasional student who comes upon the name may wonder idly who William Stoner was, but he seldom pursues his curiosity beyond a casual question. Stoner's colleagues, who held him in no particular esteem when he was alive, speak of him rarely now; to the older ones, his name is a reminder of the end that awaits them all, and to the younger ones it is merely a sound which evokes no sense of the past and no identity with which they can associate themselves or their careers. </p>
</blockquote> 
<p>斯通纳就是这么一个完全不起眼的主角，没有人真正关心这个小小的生命。故事从斯通纳进大学求学说起，当时他寄宿在一个亲戚家里，每天有干不完的杂活，还得应付繁重的学业。教授斯隆改变了他的一生，他放弃正在学习的农业，转学文学并留在学校教书，为此奉献一生。这个自卑内向的学生，在某次偶然的舞会上遇到了银行家的女儿伊迪丝。压抑自我多年，内心充满渴望的两个人，还没来得及了解对方，就匆匆结婚了。这场看似美好的婚姻给斯通纳带来了巨大的灾难。伊迪丝从小的教育都是克制的，消极的，尤其是对性，她既不懂也完全不愿去触碰。失败的蜜月导致了伊迪丝内心 180 度的转变，两人的冷战从此充斥了整场婚姻。只有当伊迪丝想要孩子的时候他们有过一段激情，但是一旦伊迪丝怀孕了这场虚幻的激情立刻消失得无影无踪。</p> 
<p>斯通纳对此选择了隐忍，就像他父母亲劳作了一生的土地，隐忍。女儿的出生给了斯通纳一个新的希望，但是很快伊迪丝就开始无情地隔绝这对父女，霸占斯通纳的书房，他不得不长时间留在学校里，把自己内心的热情投注到写书这件事情上。后来他遇上了年轻的助教德里斯科尔(Driscoll)，两个失意人在彼此间找到爱与慰籍。在这场外遇中斯通纳找到了一生中唯一真正热烈的爱情，但是从一开始就注定他们悲惨的结局。斯通纳最后死于癌症，他在病床上平静地死去，书本从指尖滑落，平静如他籍籍无名的一生。</p> 
<p>读《斯通纳》有些地方不好理解，因为缺乏明确的交代。比如伊迪丝结婚后的第一天突然之间态度大变，比如斯通纳在学校的敌人劳曼克斯(Lomax)极力偏袒一个不可能及格的学生。这得归咎于作者白描的风格，仿佛一尊风中坚忍的石像，沉默不言。在构筑了斯通纳与女儿之间温馨美丽的情感之后生生把这个画面撕碎，会有些不忍卒读，却不够一场撕心裂肺的悲剧；在酝酿了斯通纳与德里斯科尔两人你侬我侬的爱情之后默默让女方悄悄离开，会在心中一阵低叹，却不够作出义愤填膺的指责。所谓生活，大概就是这样。从情节编排的角度来看，这部作品非常糟糕。但是偏偏读完了全书就是念念不忘，斯通纳平淡悲凉的自我叩问总在回响：</p> 
<blockquote>
 <p> He had come to that moment in his age when there occurred to him, with increasing intensity, a question of such overwhelming simplicity that he had no simplicity that he had no means to face it. He found himself wondering if his life were worth the living; if it had ever been.</p> 
 <p> 他已经到了年岁的这种时刻：经常会想到，而且日益强烈，想到一个如此简单的问题，简单得他都没有办法去面对。他发现自己有些迷茫，自己的生活是否值得过下去，是否有过生活。 </p>
</blockquote> 
<p>好的小说可以给我们的生命多一种可能性，多一种体验。我们常常自以为自己的生命很特别，特别到和所有人都不一样，但年岁渐长后才意识到，其实我们都是大多数，我们与斯通纳没有什么不同。</p> 
<p>1965 年《Stoner》出版后，一直有多次再版，但是直到 2016 年 1 月上海人民出版社出版了此书的中文版，尽管这些年英文作品的中译本已算十分流畅，但就这部作品来说，原文的笔触在中译本中流失了，那种冷眼旁观，喃喃絮语的感觉没有了，显得有些白开水，有些难以下咽。翻译的好坏体现在细节，John Williams 在这部作品中用了许多抒情的笔触，中文是翻译不出来的。比如我非常喜欢的一段：</p> 
<blockquote>
 <p> He heard the silence of the winter night, and it seemed to him that he somehow felt the sounds that were absorbed by the delicate and intricately cellular being of the snow.Nothing moved upon the whiteness; it was a dead scene, He felt himself pulled outward toward the whiteness, which spread as far as he could see, and which was a part of the darkness from which it glowed, of the clear and cloudless sky without height or depth. For an instant he felt himself go out of the body that sat motionless before the window; and as he felt himself slip away, everything--the flat whiteness, the trees, the tall columns, the night, the far stars-- seemed incredibly tiny and far away, as if they were dwindling to a nothingness.</p> 
 <p> 他倾听着冬夜的寂静，好像感觉到了被雪细腻、复杂的细胞组织吸进去的各种声音，白雪上方没有任何东西活动，这是一副死寂的景象，似乎在拉扯着他，在自己的潜意识中吸吮着，就像它从空气中拉来声音，然后将其埋葬在冰冷柔软的洁白中。他感觉自己向外被拉着走向那片白色，那片白色延伸到他目力所及的远方，而且它也是黑暗的一部分，在黑暗中闪耀着，同时也是清澈无云、没有高度或者深度的天空的一部分。他一时感觉自己的灵魂逃出在窗前坐着不动的身体。当他感觉自我溜出去后，一切——平坦的白色，树木，高高的圆柱，夜晚，遥远的星辰——似乎都渺小和遥远得不可思议，好像这一切都逐渐缩小到变成某种虚无。 </p>
</blockquote> 
<p>美幻如诗，翻译出来的版本就失了原文的味道了。斯通纳是一部平静安逸的作品，也许正因为他的情节波澜不惊，才更需要朴素的语言，娓娓道来。</p> 
<p>16.02.24/中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x848B;&#x52CB;&#x5230;&#x5E95;&#x6709;&#x6CA1;&#x6709;&#x4FE1;&#x53E3;&#x5F00;&#x6CB3;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/E0AE5C6C-997E-49BF-A0A3-40BB82BBC19C/</link>
        <guid>https://justinyan.eth.limo/E0AE5C6C-997E-49BF-A0A3-40BB82BBC19C/</guid>
        <pubDate>Thu, 18 Feb 2016 13:25:59 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/02/Cover-Jiangxun.png" alt="" /></p> 
<p>枫言枫语·每周读书介绍了几本蒋勋老师的书，《吴哥之美》是书信集，抒情多于讲解，两部《蒋勋说文学》则是演讲集，平易近人。枫影写完“每周读书”之后会到知乎上回答相关的问题，然后就发现评价蒋勋老师有些不一样的声音，动则指责蒋勋的写作“硬伤太多”云云，看得我有些疑惑，为什么大家会有这样的想法呢？</p> 
<p>顺藤摸瓜，知乎的回答大致都是从浙江大学的江弱水教授在 2012 年写的<strong>三篇《撕扇记》</strong>里面搬运过来，然后添油加醋而已。看着大家的振振有词，我不由开始有点担心：假如蒋勋老师真的如众人所云，是硬伤多多，错漏百出，信口开河之辈，那可不好。毕竟读者看书主要还是兼具娱乐与学习两种功用的，如果学到的都是荒谬的东西那就得不偿失了。</p> 
<p>这里必须提一下知乎回答中说“蒋勋的书流行是因为读者无知而懒惰”，这个说词酸气太重。读书本就是获取信息习得新知识的渠道，不能要求每一个读者都是学者。但是反过来说，正是由于读者们不都具有专业知识，作家就更应该对读者负责，不应该轻易传播有明显错误的东西。</p> 
<p>为了解决这个问题，枫影细读了江弱水教授的三篇《撕扇记》批评，我的结论是：江教授鼓动人心的写法非常厉害，很容易掉进他设置的陷阱，从而进入义愤填膺的状态，最终被他激烈的言辞猛地一冲击，就认定蒋勋老师是不学无术，信口开河之辈了。江教授指出的部分史实确实是蒋勋老师讲错了，这点必须承认，但是我觉得大部分江教授指出的点要嘛是个人见解不同，要嘛是无关痛痒之处。只是江教授编排的好，读者容易被带动情绪。</p> 
<h3>一、江弱水的三篇《撕扇记》</h3> 
<p>我们且慢慢来看这几篇批评。三篇里面，枫影觉得第一篇写得最好，因为里面起码包含了两个确凿的事实，分别放在最开头和最结尾。开头说的是“东施效颦”的问题，蒋勋老师在演讲时的原文如下：</p> 
<blockquote>
 <p> 东村姓施的姑娘就叫东施，西村姓施的就叫西施……如果你只训练一个女间谍，万一她失败了，你就没戏唱了，所以要多训练几个。所以那次越王一次送去十几个美女，让她们运用各种能力去蛊惑吴王夫差。结果西施成功了。……西施每次一心绞痛，夫差简直会爱怜得魂飞魄散。这个时候最痛苦的人是东施，因为她摆出各种姿势，夫差都不太看她。 </p>
</blockquote> 
<p>这里江弱水指出:</p> 
<blockquote>
 <p> 蒋勋说，越王勾践一次给吴王夫差送去十几个美女做间谍。我记得只送了两个，一个西施，一个郑旦。效颦的东施没有送啊，怎么可能“她摆出各种姿势，夫差都不太看她”？ 《庄子·天运》明明说东施是西施邻里之“丑人”，勾践敢送给夫差么？不敢送的。 </p>
</blockquote> 
<p>这点上，东施是后人补上的名字，出处在《庄子·天运》之中，原文是：</p> 
<blockquote>
 <p> 故西施病心而矉其里，其里之丑人见而美之，归亦捧心而矉其里。其里之富人见之，坚闭门而不出；贫人见之，絜妻子而去之走。 </p>
</blockquote> 
<p>《庄子》只说了丑人，是后人管她叫东施。史料中记载吴王献给夫差的美女是西施与郑旦，并没有提及十几个美女去做间谍的事情。</p> 
<blockquote>
 <p> 越乃饰美女西施、郑旦，使大夫种献之于吴王。——《越绝书》 </p>
</blockquote> 
<p>这点上固然蒋勋老师说错了，但是我以为还担不上“信口开河”以及“中国文学界的三聚氰胺”这么严重的说词，但是江弱水把这个确凿的事实放在最前面是有深刻用意的，因为这点大家无法反驳，根据史料来说故事，说错了就是错了。<strong>这样一上来就给读者一个印象“蒋勋说错了，而且我无法反驳</strong>”。</p> 
<p>接下来江弱水说蒋勋对“天下皆知美之为美斯恶矣”这句的解释不当，但是却把本来就有争议的东西说成是“没有异议”。</p> 
<blockquote>
 <p> 蒋勋原文：<br /> 老子在《道德经》里说“天下皆知美之为美斯恶矣”。所有人知道的美已经不是美了。</p> 
 <p> 江弱水：<br /> 老子这句话不能这么解释吧？所有人都知道美之为美，丑也就为人所知了。这解释是由后文“有无相生，难易相成，长短相形”等等所决定的，古来没有异议的。 </p>
</blockquote> 
<p>但是其实中国古文是非常精简的，一句话的解读并没有什么“毫无异议”的事情，这点上江弱水的指摘只能说是“<strong>根据该试题的标准答案来说</strong>”，蒋勋的解释 0 分。但是其实呢，这句话我 Google 了之后发现有好几种解释，没有什么所谓的“没有异议”。我们都知道所谓的“考试标准答案”是什么，对于这个点，<strong>我的理解是江弱水的指责更多的是站在“权威”的角度来看，“权威至上”，权威以外统统 0 分</strong>。</p> 
<p>然后是关于钟嵘《诗品》的说法。</p> 
<blockquote>
 <p> 蒋勋原文：<br /> 三口为品，一个口是吃，不饿了，才能“品”，味蕾感觉到的酸甜苦辣都变成口腔的记忆和审美。“品”这个字在中国的南北朝被大量运用。钟嵘写《诗品》、谢赫写《画品》，把诗人、画家分为九品。很多诗人写了大量的诗，但是“下下品”，陶渊明的诗“落地为兄弟，何必骨肉亲”，简直像白话，但他把诗的思辨品质拉到了极致，所以是上上品。“品”是很复杂的审美活动。</p> 
 <p> 江弱水：<br /> 我觉得，你要说陶渊明诗是上上品，就不要扯上钟嵘的《诗品》，因为偏偏是钟嵘的《诗品》把陶渊明放在中品里。你这么掰，会让人误认为钟嵘本来是列陶诗在上上品的。 </p>
</blockquote> 
<p>这里也是有异议的点，钟嵘虽然在《诗品》里面把陶渊明放在“卷中”里面，但是却对陶渊明的诗极为推崇，他的原文是这么写的：</p> 
<blockquote>
 <p> 其源出於應璩，又協左思風力。文體省淨，殆無長語。篤意真古，辭興婉愜。每觀其文，想其人德。世歎其質直。至如「懽言醉春酒」、「日暮天無雲」，風華清靡，豈直為田家語邪？古今隱逸詩人之宗也。 </p>
</blockquote> 
<p>我们看第一句，“其源出於應璩”，應璩在《诗品》中排中品，钟嵘是南朝梁国人，南北朝时期文坛风气是从作品的体貌来分析探讨作家和文学流派的特征，而源自中品的诗歌就不能评到上品去。具体的分析可以参看这篇文章：<a href="http://www.literature.org.cn/Article.aspx?id=51603">锺嵘《诗品》陶诗源出应璩解</a>但是，可以看到钟嵘在评论中对陶渊明的诗倍加推崇。我觉得蒋勋在这里提起了钟嵘的《诗品》，后面再续上“上上品”，确实会有点问题。但是依江弱水的语气，仿佛好像钟嵘对陶潜就极为鄙视一般，更加不妥。所以这个点上我们要看清，事实是：钟嵘的《诗品》把陶潜排在中卷，但是是有原因的，更没有鄙夷陶潜的诗歌。而江弱水的语气则似乎在嘲笑蒋勋“连《诗品》的上中下品都分不清”。从这个点上钟嵘确实没有把陶潜放在上品是事实，但给了陶潜很高的评价，<strong>从江的文字我还是只能看出“我是权威，其他人都是错的”这样的酸腐之气</strong>。</p> 
<p>接下来江弱水又指蒋勋对“气味”的抒情想象不对，这点其实不该，这种抒情想象本来就连“标准答案”都没有，江弱水以此来指责蒋勋只能说确实是鸡蛋里挑骨头了。然后还有佛陀释迦摩尼拈花的故事（这里是在曲解蒋勋的原话了），悠然见南山里面南山到底指哪座山（确实应该不是终南山），欲辨已忘言里的“辨”字到底是哪个（其实辩与辨二者皆可），欣然规往应该解释成计划去而不是已经跑去（又见标准答案）。这部分江弱水的指摘基本上都是模棱两可的东西，没有定论，不能说绝对的黑白，即便真有，也只能说是无关痛痒之处。但是由于有了开头的铺垫，这些点上江弱水添油加醋的大加批评，倒使得不加考证的读者开始燃起不明之火了。</p> 
<p>最后，在读者心中怒火正盛的时候，结尾处放出了一个大招：<strong>陶渊明</strong>。</p> 
<p>在对陶渊明的解说上，蒋勋的想象力太丰富，蒋勋的语言习惯也是喜欢用比较绝对的形容词，这个很容易被抓住把柄。对陶渊明的攻击主要在“陶渊明是否亲自下田，躬耕力作”，以及“是否自幼家贫”两点上。这点上江弱水的考据更加可信，蒋勋的说法确实有问题。</p> 
<p>于是一开头一结尾给出有力的证据，中间夹杂大量的抨击，一篇攻击蒋勋，煽动人心的好文就出炉了。这是第一篇撕扇记，我觉得是最具有代表性的。<strong>其一是尽展江弱水的刻薄，其二是指出蒋勋所言部分史实确实有误，而且自由发挥过多</strong>。第一篇出来后，由于读者反馈这些都是蒋勋的演讲集，演讲过程难免口误，于是江弱水又发了第二篇第三篇。</p> 
<p>这第二篇撕扇记是最没有看头的，大部分说来都是在掉书包，认定自己不同的解读为权威，以此指摘对方。这一篇的手法与前一篇类似，上来就指出蒋勋说“汉朝三百年”是不对的，给人以“蒋勋真会胡说”的印象。然后开始钻书缝了，“北魏灭亡之后，进入西魏时代。”这里指出还有东魏的存在，其实东西魏对峙十几年，这段时期可以说是共存的，没有必要过于较真。还有说蒋勋称“旦”是象形字，而江弱水说其实是会意字，诸如此类的批评。全篇看下来，这第二篇撕扇记，撕得不算高明。</p> 
<p>第三篇可以说是考据的实证比较多的，只是可读性不如第一篇，可能作者认为都已经写了两篇了，第三篇可以不需要再做煽动了。我反而觉得第三篇的证据非常充分，借此发挥可以成为最好的一篇。这一篇里江教授主要集中在对诗句某一个词的解读上，比如说“汉家君臣欢宴尽，高议云台论战功”，这里蒋勋把云台解释成唐朝的皇宫，而其实应该是东汉的云台。诸如此类。</p> 
<h3>二、尽信书不如无书</h3> 
<p>江教授的几篇文章现在在豆瓣上还是可以看到全文，有兴趣的读者可以自行考证一下。我觉得蒋勋的文字确实有些缺点，其一就是不够严谨，口头演说还有借词，但是出版物必须严谨，没有进行勘误既是编辑之失，也是作者之过。其二是容易感性抒情，语言习惯喜欢用绝对的词语，有时想象多于现实。</p> 
<p>但是我并不会因为读了《吴哥之美》就自以为读懂了吴哥王朝的历史，更不会因为读了《蒋勋说文学》就认为我弄懂了中国文学史，我还是会去读更专业的著作，我去读《真腊风土记》去读《中国文学史》，这些都是系统学习的好书。蒋勋老师的闪光点不在于给予读者一个严丝合缝的史实，他从来就不是一个刻板的学者，演讲才是他的强项。我更愿意认为蒋老师是一位引导者，是他让许多人燃起了解读吴哥之美的兴趣，是他让我知道原来我最不喜欢的元曲与戏剧其实是可以很美的。然后我可以更愉快地去学习历史，去学习戏剧，去读更艰涩的枯燥的书，因为我有了足够的动力去啃硬骨头了。这大概是蒋勋老师给我带来最大的好处，据称他的讲演是为了让卖菜老农都能懂的，这就注定了他不会很枯燥地去讲深奥的东西，而是用平易近人的语言，仿佛友人在侧，促膝而谈。</p> 
<p>从这个角度上看，每周读书介绍的几本书绝对担不上“信口开河”与“三聚氰胺”的骂名。但是这件事情也点醒了我们，“尽信书不如无书”。此句出于《孟子》，全文如下：</p> 
<blockquote>
 <p> 尽信书，则不如无书。吾于《武成》取二三策而已矣。仁人无敌于天下。以至仁伐至不仁，而何其血之流杵也？ </p>
</blockquote> 
<p>孟子读了《尚书·武成》里的记载，认为武王是仁者，他伐纣不应该导致血流成河。这里我们且不说伐纣一事，就说孟子对于史料记载的怀疑。江弱水对于蒋勋的怀疑是值得鼓励的，<strong>但是他完全可以采用一个更加舒适的方法来做表达，却偏偏用了极尽刻薄的语气来说</strong>。《城邦暴力团》的作者张大春也曾经在博客上说蒋勋谈书法不妥（《書法之美是知識，不是呻吟》）。但是张大春的批评要高明得多：</p> 
<blockquote>
 <p> 這些問題在每個時代願意拿起毛筆寫字的人心裡都可能發生，但看我們是否有鑽求解決的意願和能力。一旦把內心的好奇充分發動起來，一個字、一個字、一張帖、一張帖地搜尋觀看，自然漸進而有功，如此，才可能讓知識養成品味，所謂「浸潤」。浸潤得久了，眼力就有了；眼力有了，就體會出魔咒之為魔咒，也就不會再相信那種無病之呻吟：「（臨書悵然）四個字行草流走，像一絲浮游在空中的不知何處吹來的飛絮，是春天的『裊晴絲』，若有若無，難以想像是毛筆書寫的墨跡，其實更像日久湮沒退淡掉的牆上雨痕，很不甘心地在隨歲月消逝之中。」（蔣勳《手帖──南朝歲月》） </p>
</blockquote> 
<p>张大春说的就是蒋勋容易抒情与想象过度的问题，我在读《蒋勋说文学》的时候就不喜欢蒋勋谈红楼梦的部分，觉得有些过度解读，在读《吴哥之美》的时候又不太喜欢抒情的部分，觉得我自己可能没有他那么多感慨。所以我也觉得这是蒋勋的一个缺点。但是张大春没有用尖酸刻薄的语言去写，也没有刻意放大这些缺点带来的影响，我想他至少是有文人的气度在的。</p> 
<p>总的来说我觉得这件事情的负面意义比较大，至少江弱水的偏激言论影响了一拨人，<strong>这些人乐于通过贬低有名的作家以便自认为抬高了自己</strong>，于是在网上形成了具有相当恶意的言论。其实有独立思考能力的人，仔细想想就知道，<strong>这就是阿 Q 嘛</strong>！</p> 
<h3>三、扩展阅读</h3> 
<p>江弱水教授不仅是写了蒋勋的批评，2005 年还写过一篇《《圣经》、官话与“引车卖浆者流”》，批评刘皓明为倪湛舸的诗集所作的序《圣书与中文新诗》。刘皓明为此写了一篇<a href="http://www.ideobook.com/433/vom-buchstab-zum-geist/">《刘皓明：从字说到灵——对江弱水先生批评的答复》</a>。有兴趣的读者可以围观一下。</p> 
<ul> 
 <li><a href="http://justinyan.me/post/2660">每周读书 #110 一清如水娓娓道来——《蒋勋说文学：从唐代散文到现代文学》</a></li> 
 <li><a href="http://justinyan.me/post/2387">每周读书#97 蒋勋说文学：从诗经到陶渊明</a></li> 
 <li><a href="http://justinyan.me/post/2368">每周读书#96 蒋勋——《吴哥之美》</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #110 &#x848B;&#x52CB; - &#x300A;&#x848B;&#x52CB;&#x8BF4;&#x6587;&#x5B66;&#xFF1A;&#x4ECE;&#x5510;&#x4EE3;&#x6563;&#x6587;&#x5230;&#x73B0;&#x4EE3;&#x6587;&#x5B66;&#x300B;</title>
        <link>https://justinyan.eth.limo/534C15D2-0303-42F4-A43A-4791833202B5/</link>
        <guid>https://justinyan.eth.limo/534C15D2-0303-42F4-A43A-4791833202B5/</guid>
        <pubDate>Tue, 16 Feb 2016 09:08:58 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/02/110-jiangxunshuowenxue-cover-mp.png" alt="蒋勋说文学" /></p> 
<p>我们常说唐诗宋词元曲，但是文学的发展是连续的，到明清也有人写诗写词，只是这几个文体成为该时代的标识罢了。我们的文学从可歌的诗，可唱的词，发展到戏曲与戏剧，则唱念做打，既有唱词又有动作了。以前念书的时候，或者读《中国文学史》的时候，最兴味索然的部分都在元曲杂剧，但是蒋勋老师却把这段讲得十分有趣。因为曲与戏剧都是演出来的，我们的课堂把这种艺术用生硬的语气读出来，与其原貌相去甚远，蒋老师则抛开阅读，以表演的视角来讲解戏曲与戏剧。在<a href="http://justinyan.me/post/2387">枫言枫语·每周读书第 97 期</a>中我们曾介绍《蒋勋说文学》这个系列的上册<a href="http://justinyan.me/post/2387">《从诗经到陶渊明》</a>，本周我们要介绍的是下册——《从唐代散文到现代文学》。</p> 
<p>下册延续了蒋老师一贯的风格，文字平易近人，仿佛友人絮语，柔柔暖暖，相较课本里有目的地编撰过的东西，蒋老师的语言要更具人情味。在书中，他没有在点评文艺，而是把自己内心的真实体会娓娓道来，就好像<a href="http://justinyan.me/post/1734">单车环游世界的《不去会死！》一书</a>，作者以自己的视角来谈经历谈体会，客观而内敛，跟着石田裕辅的单车轨迹你仿佛看到了整个世界，而在本书中，跟着蒋勋老师的字字句句，则仿佛游览了一番中国文学。</p> 
<p>从唐宋元明清到民国到台湾，蒋老师以这样的轨迹谈起。说到唐代的散文，就不得不提“唐宋八大家”之首的韩愈。枫影是潮州人，韩愈曾经被贬潮州，在这个贫瘠的地方尽心办学，至今潮州人仍相当敬重韩文公。即使到了今天，潮州的许多家庭如果条件允许，都会让孩子自小学习书法国画，虽然我不认为潮州是个文化繁荣的地方，但是许多同学自小写得一手好字，在今天倒是颇为难得。</p> 
<p>苏东坡称韩愈“文起八代之衰”，因为之前八代都在追求文学形式上的美。从汉赋开始，所有文人都在追求骈体对仗，辞藻堆砌。而以韩愈为首的“古文运动”就是要把文学还给内容，“古文运动”不是否定形式，而是不能形式大于内容。如果单从文学上看仿佛“古文运动”的意义就到此为止了，但是文学从来都不是单一孤立的东西，任何一种艺术都不是，如果我们在解读一首诗歌一篇文章的时候，单纯去分析它的写作技巧以及表达的内容，那就是一个孤点，但是我们的世界是立体的，必须把这个点放回当时当地的背景里面去，去还原这个作品在历史背景下的意义。蒋老师认为“古文运动”是中国知识分子一个非常重要的转折，因为文人终于可以从作为帝王将相的喉舌，从附庸风雅之中解脱出来，转而去关注底层民生，成为民间疾苦的控诉者。</p> 
<p>到了古文运动的时候，你才能够看到来自底下人的声音。蒋勋老师选了韩愈的《祭十二郎文》、《送李愿归盘谷序》、《柳子厚墓志铭》等文，他不光是讲韩愈，也讲柳宗元，也讲鲁迅。把鲁迅视作韩愈精神的最好的继承者是很有意思的观点。因为鲁迅和韩愈有着一样的批判社会的犀利目光，也有着一样朴素、冷静的文字。</p> 
<p>鲁迅是生在乱世的人，韩愈、柳宗元都是被贬官的人，他们都看到了真正的民间疾苦，正是因为这样，他们才反对堆砌辞藻，无病呻吟的文字。反过来看现在许多流行歌曲，歌词来来去去只有我爱你你不爱我，这些歌词之所以肤浅，是因为作者没有触碰到真正的疼痛，这些歌词之所以被很多年轻的学生喜爱，是因为年轻的时候还没经历过真正的苦难，这些青春期的忧伤已是少年少女们最大的共鸣。</p> 
<p>于是古文运动涌现了许多述说民间疾苦的文章出来，大部分好文章都来自被贬官的文人们，他们被贬后才有机会接触到底层的人民，才有机会知道原来生活还可以如此艰难。比如《捕蛇者说》，这篇散文与传统的散文不同，它讲述了一个完整的故事。捕蛇很危险，但是可以免去沉重的赋税，让家人活下去，于是大家都去捕蛇。柳宗元知道后想免了捕蛇者这样危险的工作，但是捕蛇者反而哭道，如果不去捕蛇，赋税反而让大家都活不下去，最终道出“苛政猛于虎也！”的感叹。这样的写法直接促进了中国小说的创作。</p> 
<p>于是来到元曲杂剧的时代。在元朝的统治下，人民分为十等，第八是娼妓，第九是文人，第十是乞丐。文人在这个直接被打压到社会底层，从天上到地下，文人受到了屈辱。但是这种状况也促进了民间文学的发展，文人到民间之后，开始写起剧本来。原本在宋代，词是文人之间的精致专业的文字，到了元代，新的文学形式散曲起来了，它就是人们茶余饭后的流行曲。这种属于民间的文学开始分化为“文人派”与“民间派”。文人派写的东西非常精致，比如我们熟悉的马致远的《天净沙·秋思》，民间派的则更加口语化，比如关汉卿的《窦娥冤》。</p> 
<p>前面我们提到现在的流行歌喜欢些爱来爱去，甚至粗糙到《小苹果》这样的曲子也能流行起来，其实这些就是民间的艺术。民间的东西写的好就是朴实可爱，写的不好就是庸俗不堪。但是对于创作来说，来自民间的东西是一种融合，融合对创作总是好的。无论是艺术还是文学，都需要颠覆，在颠覆中翻滚前进，来自民间的东西最容易打破道统，冲出原有的枷锁与牢笼，根据历史的经验来看，学院派总是会被新的艺术形式打败的，然后再被后来者取而代之。所以今天我们不知道汉乐府的编曲，不知道宋词与元曲的唱法，虽然有点可惜，但是这就是历史的车轮，你无法阻挡。今天有许多电视节目在鼓吹保护传统技艺，在鼓吹传承，我想，许多所谓的传统，在诞生之初也是应市场而生的，它终会应市场而灭，这是自然规律，我们不必过于执着。与其守着旧有的那点东西固步自封，还不如探索新艺术的突破，去顺应潮流，这才是真的保护传统与传承。</p> 
<p>前段时间枫影在看美术馆看展览的时候忽然想，这些我根本看不懂的所谓“艺术”，它的价值到底是什么呢？它对我们来说到底有什么意义呢？西方早期的艺术是为宗教服务，多是宗教画，壁画，都有实用价值，摄影术出来之前有记录的价值，文艺复兴的时候又是打破传统卫道，提倡个性主张的武器。那么今时今日的艺术呢？最近日本艺术家上村隆的《五百罗汉图展》给出了一个颇为现实的答案。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/02/shangcunlong-wubailuohan.jpg" alt="上村隆-五百罗汉图展" /></p> 
<p>上村隆自称为一个商人，然后才是一个艺术家。他早期学习日本画，后来尝试使用漫画与日本画结合的形式进行创作。在《五百罗汉图展》中，巨大的体量，夸张的设计给人以强烈的震撼。上村隆认为现在的人为什么要去美术馆？大家已经可以轻易地从电视、电影中获得非常丰富的生命体验，在这种情况下，艺术作品就必须要给大家足够的震撼，给大家无以伦比的体验。上村隆创作《五百罗汉图》是由于 2011 年东日本大震灾带来的苦难，他认为人们需要一种新的信仰，而罗汉正是历经艰苦无比的修行才得正果的，上村隆试图以形象各异的罗汉来带给人们新的信仰。我不认为光看这些罗汉图就能达成什么效果，但是他的商业化思想非常值得深思。有许多艺术展出是不允许拍照的，而上村隆的展览却写明了希望大家多多发到 SNS，这其实就是顺应潮流的一个细节。</p> 
<p>罗汉是顺应时代的创作，是吸引观众的话题内容，这些是内容，而力求震撼则是形式。我认为许多艺术作品必须要见到实物尺寸，必须要放在精心设计过的场馆才能获得相当的体验。比如浮世绘，以往在印刷品也好，在电子屏幕上也好，我们看到的不过是色彩明丽，风格独特的绘画罢了。只有当你靠近去看一幅真正的浮世绘，你才会发现纸张的触感，浮世绘的层次感，每一丝细节都在对你诉说无穷的故事。这些细节才是浮世绘的自我完成，这些细节才构成了一个完整的作品。</p> 
<p>如果看一幅静止不动的画尚且如此，那么读一部本来应该在舞台上表演的剧，又怎么可能完整体会到戏剧的精妙呢？蒋勋老师在书中从来不是以单一的文学视角去解读这一切，他会联想到昆曲，会联想到莎士比亚，百老汇，甚至同一时期的绘画艺术。古代的文人必修琴棋书画，文学从来不是一座孤岛，这也是我特别喜欢蒋勋老师解说的原因。就像蒋老师在书中说的：</p> 
<blockquote>
 <p> 文学和艺术不是真理。文学唯一的好处就是让我们在生活里可以多一点看事情的角度，多一个角度的意义是什么呢？是使我们在日常生活中不那么武断。 </p>
</blockquote> 
<p>蒋老师的解读也不是真理，但是是一种令人读起来很舒服的角度，是连枯燥无味的戏剧都能说得十分生动的角度。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2016/02/110-jiangxunshuowenxue-biji-600.jpg" alt="蒋勋说文学-读书笔记" /></p> 
<p>2016.2.14/下午<br /> 于自居</p> 
<p><strong>相关阅读：</strong></p> 
<ul> 
 <li><a href="http://justinyan.me/post/2387">每周读书#97 蒋勋说文学：从诗经到陶渊明</a></li> 
 <li><a href="http://justinyan.me/post/2368">每周读书#96 蒋勋——《吴哥之美》</a></li> 
</ul> 
<p><strong>关于不同的声音：</strong><br /> 大约 2012 年前后是蒋勋老师的作品在大陆火热的时候，那时有过比较犀利的负面声音，其中比较犀利的言辞来自于江弱水教授。现在存活在论坛与知乎的负面声音大都是根据江弱水的指责添油加醋罢了。为了研究蒋勋老师是否真如江弱水指出的“信口开河”，我阅读了江教授的三篇批评文章。最后我的结论是，蒋勋老师确实有许多不够严谨，跟史实不符的说法，但是我不认为这些不严谨可以担起“信口开河”、“中国文学界的三聚氰胺”这么严重的罪名。我认为这位江教授的立论更像是对道统权威的维护，行文颇见小气尖酸，不够大度。</p> 
<p>必须承认他指出的错漏有些是正确的，但是他参杂了许多由于主观见解不同而做出的指责，然后用编排过的技巧来鼓动读者，我觉得这点挺不耻的。</p> 
<p>我的态度是：蒋勋的不严谨在演讲时出现是难免的，但是出版物没有勘误既是编辑之失，也是作者之过。我更愿意把蒋勋老师当做浪漫的引导者来看待，我不会因为看了《蒋勋说文学》就自认为懂中国文学史了，也不会因为看了《吴哥之美》就自认为懂吴哥王朝的历史了。但是蒋老师引起了我了解吴哥的兴趣，引起了我学习中国戏剧的兴趣，在这以后，更专业的事情就交给专业的著作去吧。</p> 
<p>不过这件事情也提醒了各位读者，尽信书不如无书，尽信蒋勋固然不可，但是轻易全信了江弱水我以为也是不当。读蒋勋者起码为之美而吸引，尽信江弱水者，未免过于刻薄了。贬低别人从而自以为抬高了自己，不过阿 Q 罢了。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #109 &#x5929;&#x7687;&#x5E76;&#x4E0D;&#x603B;&#x6709;&#x5B9E;&#x6743;&#x2014;&#x2014; &#x300A;&#x65E5;&#x672C;&#x7B80;&#x53F2;&#x300B;</title>
        <link>https://justinyan.eth.limo/8FB6ECFF-E8F9-40CE-B74D-95B3B6F87D9E/</link>
        <guid>https://justinyan.eth.limo/8FB6ECFF-E8F9-40CE-B74D-95B3B6F87D9E/</guid>
        <pubDate>Sat, 30 Jan 2016 16:23:03 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/Cover-mp-1.png" alt="" /></p> 
<p>岁暮天寒，泠雨凄凄，在雨声潺潺中读《日本简史》，总想起小时在被窝里玩日本战国背景的游戏，抓住鼠标的小手冻得僵硬，却舍不得睡去。对许多亚洲国家来说，日本是一个既熟悉又陌生的国度，既有文艺、设计与建筑，也有动漫、流行与AV。阳春白雪下里巴人，曾在二战中带给亚洲国家苦痛的民族，今天却以其繁荣的经济与文化让受害国家又爱又恨。我们在上一期介绍的《独裁者手册》中谈到，国家是没有利益的，但是人有，想要了解这个神秘的国度，我们得先抛开抽象的国家概念，投入到“人”的历史当中。</p> 
<p>史书有断代史与通史之分。断代史是专门研究某一个时期的，比如班固的《汉书》，通史则是纵贯古今的，比如司马迁的《史记》。北京大学的王新生教授于 2005 年出版的《日本简史》就是一部通史。依照时间顺序与统治势力更替，王教授把日本历史划分为四个时代：</p> 
<p><strong>1. 古代——贵族统治</strong>（石器时代到平安时代 1069 年，大约北宋末年）<br /> <strong>2. 中世——武家势力</strong>（平安时代后期到德川幕府结束 1867 年，大约清朝末年）<br /> <strong>3. 近代——帝国扩张</strong>（明治维新到 1945 年二战结束）<br /> <strong>4. 现代——民主分权</strong>（二战后至今）</p> 
<p>作为一部简史，通读下来语言晓畅，史料翔实，结合了文化、政治、经济等方面讲述各个时期的特点，是以宏观角度了解日本历史的好读物。但是毕竟简史，日本文明虽然出现较晚，历史事件却繁复多变，短小的篇幅无法说清每个时代的故事，比如战国时代的织田上洛、本能寺之变等的故事均一笔带过，给人以铺陈史料之感。再到近代部分，以甲午战争开始，由于国内的统治需要以及本书以教材为编写目的，这部分开始爱国主义情绪高涨，明显有失偏颇。从时间上看近现代的历史非常短，但是却占了全书的一半篇幅，冗长罗嗦，建议读者可以忽略明治维新后的内容。这两个明显的缺点也是本书口碑较差的主要原因，除此以外，古代与中世部分仍不失为日本历史入门的好读物。</p> 
<p>日本的考古学同中国类似，都是在近代由西方国家传入后才开始兴起的。但是日本多火山地震的环境，毁掉了很多远古的遗址遗物，给日本考古带来不少困难，今天日本的成立时间都还有不同的说法。中国有金器铭文甲骨文，可以把历史上溯到夏商周，但是日本没有，大家只能从神话传说里去寻找。一般认为日本国是在公元前 660 年由太阳神天照大神的后裔神武天皇建国，当时的中国正是春秋五霸时期，可见日本文明出现之晚。在往前的历史就是旧石器时代东亚人东渡日本了。</p> 
<p>日本的天皇制度很有意思，在中国，皇帝是天子，位极至尊，权倾天下，但是日本的天皇却有很长一段时间是被架空的，成为一个符号。我们上周介绍的《独裁者手册》这本书里，作者就强调无论是夺权上台，还是维持权力，无论是民主还是独裁，统治者都必须知道钱从哪里来，掌握了钱才能收买自己的核心联盟，才能维持自己的统治，这一点非常非常重要。古中国与日本都是农业社会，土地与税收就是钱的来源。在中国，皇帝可以“溥天之下，莫非王土”，但是因为日本在大和政权建立之初就是依赖于各地方贵族的，所以日本的天皇一直在努力推行“公地公有制”，但是从来没有成功过。</p> 
<p>统治者从来都不是单枪匹马的，即使是康熙大帝也需要有他的核心集团作为支援，在中国，这个集团很小，通常都是皇帝身边的大臣，每一代皇帝都致力于中央集权，一旦地方经济发展，军事实力上升，就会威胁到统治者的地位，比如周朝后期，地方诸侯敢于问鼎中原，比如唐朝后期，地方藩镇势力过盛而至天下四分五裂。所以中国的皇帝到了后期一直在做中央集权，削弱地方势力。日本的天皇始终无法掌握土地就是一个致命的问题，贵族有自己的庄园，也就有了自己的收入，不需要依赖天皇也能自给自足，这与法国太阳王路易十四与贵族们建立共生关系的原则是相悖的。于是庄园壮大了之后，就开始出现斗争。为了在斗争中取胜，贵族们开始培养自己的武士群，武士阶层登上舞台，逐渐成为声势浩大的武家势力。武士群中实力最强的源赖氏和平清盛两支在斗争中拿下日本统治地位，开始幕府统治的时代。</p> 
<p>幕府时期，天皇势力被称为公家势力，武士阶层则为武家势力。后来有名的《平氏物语》就是将源氏与平氏两大武家势力的故事（感谢<a href="https://www.zhihu.com/people/song-ping-zhu-qian-dai-9">林作成</a>同学的指正，《源氏物语》同这里的源氏没有关系）。武家掌握了大量土地庄园，控制了主要商业城市的税收，天皇没钱就无法收买自己的核心势力，自然无法与武家斗争，但是武家要依赖天皇授予将军头衔以正统治之名，所以天皇体制一直保留着。大约从中国北宋时期一直到清朝末年，日本一直处于幕府统治时期，虽然统治者换了几遍，但是天皇一直没有实权。直到近代欧美列强用枪炮打开亚洲市场，日本才在“倒幕尊王”的运动中把天皇推回权力的顶峰，重掌大权的天皇开始一系列改革，是为明治维新。这段时期的历史也很有意思，动漫《银魂》就是以明治前的最后一个幕府——江户幕府——为背景。今天的日本在美国占领期间被迫接受民主制，成为君主立宪国家，天皇宣布放弃神性，作为一个符号延续至今。</p> 
<p>我觉得在看这本书的时候可以很好地把一些我们平时了解的历史碎片串联起来。历史从来都不是突变的，从天皇掌政到上皇专政再到武家干预，这是一个渐进的连续的过程。日本在历史早期曾全盘接收中国的先进技术，也有所选择地吸收中国的思想制度，这段时期我们读历史课本都很熟悉，就是所谓的遣唐使的时期。后来唐朝内乱，日本暂停了官方的遣唐使制度，但是民间的贸易没断。于是日本开始从全盘接收到转变内化的阶段，从中国传入的佛教、儒家、茶道、绘画在日本都有非常独特的发展。</p> 
<p>了解日本历史，这本简史并不足够，但是作为一本通俗易懂的教材来说，它是一个很好的入门读物。我之前在阅读欧美文学或者观看欧美影片的时候，常有些古希腊神话、北欧神话或者文艺史上的常识看不懂，这时候了解这些神话与历史就很有帮助。日本作品也一样，当我了解日本天皇与幕府的关系之后，就不会奇怪为什么动画里面的一休对将军又敬又怕了。</p> 
<p>16.01.30/中午<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #108 Alastair Smith and Bruce Bueno de Mesquita &#x2014; &#x300A;&#x72EC;&#x88C1;&#x8005;&#x624B;&#x518C;&#x300B;</title>
        <link>https://justinyan.eth.limo/0E96E435-1F26-4BEB-A5D0-13F2665ACA03/</link>
        <guid>https://justinyan.eth.limo/0E96E435-1F26-4BEB-A5D0-13F2665ACA03/</guid>
        <pubDate>Thu, 21 Jan 2016 02:44:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/独裁者手册covr.png" alt="" /></p> 
<p>“民主”一词起源很早，比如古希腊的雅典民主，但是真正的民主化浪潮却是从第二次世界大战结束后才开始的。今天世界上大多数政府都宣称执行的是“民主制度”，仿佛民主就代表了正义而独裁则是落后与腐化。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/600px-Democracy_claims.svg_.png" alt="" /></p> 
<p><em>（图中绿色的部分都是自称民主的政府。图片来源：维基百科）</em></p> 
<p>民主也好独裁也好，作为一种政治制度它本身并不代表善恶，制度没有善恶，人有，正如国家没有利益，但是人有。一直以来政治作为一个复杂的话题很少有人能够说清楚它到底是什么，来自美国纽约大学的两位政治学教授 Bruce Bueno De Mesquita 和 Alastair Smith 就试图以一种通用理论来解释政治，他们曾写过一系列论文与专业书籍来讨论这个话题，这些论文最终以“人人都看得懂”为目标浓缩成《独裁者手册》（The Dictator's Handbook）一书，于 2011 年出版。</p> 
<p>在这本书里，作者试图跳出旧有的政治视角与框架，以一个新的维度来思考“政治到底是什么”。以作者在引言中举的“美国贝尔市腐败案”为例。在洛杉矶旁边的贫困小镇贝尔也不过是民主体制下的一个小政府，市议员都由市民选举产生，政策公开透明，一切看上去和想象中一样美好。贝尔市经理罗伯特·里佐（Robert Rizzo）执政期间贝尔市首次实现收支平衡，可谓政绩极佳，但是 2010 年他却因为年薪高达 787000 美元而被检举下台。</p> 
<p>为了实现个人收入最大化，里佐利用了贝尔市人口少，票数少的特点，举行了一场决定贝尔市是否转型为“宪章城市”的投票，结果全市 36600 人里面只有 400 人参加投票并以 336 票通过这项决议。普通市民可能根本搞不懂“宪章城市”有什么区别，简单的说，美国的普通城市每一项政策都需要公开，而宪章城市则不需要。这就给了里佐一个建立私人小联盟的机会。他收买了大部分市议员，明面上大家的薪水很低，但是每个月有丰厚的会议补贴，这些人由于有很高的回报，当然会支持里佐。为了让这个贫困小镇有足够的收入养活这些官员，里佐推行了高房产税的政策，同样条件的房子，房产税比邻近的城市高出 50%。这就是贝尔市看上去收支平衡了政绩。而最后里佐之所以下台，其实是因为他们每个月应该开的会议实际上没有开，如果他们真的开了这些会议，那么法律上他们的高收入是合法的！里佐通过操控民主制度的细节，实行了事实上的独裁统治长达 17 年之久。</p> 
<p>以贝尔市为引子，我们可以看到独裁与民主其实没有明确的界限，作者以此提出了统治的三个维度：</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/dictactor-handbook-circles.png" alt="" /></p> 
<ol> 
 <li>最大圈是名义选择人，或称可替代者</li> 
 <li>中间是实际选择人，或称有影响者</li> 
 <li>核心圈是致胜联盟，或称不可或缺者</li> 
</ol> 
<p>无论民主还是独裁都可以用着三个维度来解释，事实上这两个词并没有精确的定义，只是三个维度规模的不同会导致统治者作出截然相同的政策，为了方便表达，作者用民主表示“很大的联盟”——比如几亿美国人，用独裁表示“很小的致胜联盟”——比如几十个伊拉克将军。</p> 
<p>在民主制度下的美国，<strong>名义选择人</strong>就是全体美国公民，名义上所有人都对选总统有发言权，但事实上大部分人的话语权都无足轻重。<strong>实际选择人</strong>是真正用心去投票的那拨人。而<strong>致胜联盟</strong>则是奥巴马要上台时必须获得的最少选票数。</p> 
<p>再看独裁统治下的朝鲜，<strong>名义选择人</strong>依然是全体公民（朝鲜公民是有选举权的），但是我们都知道这很可笑，<strong>实际选择人</strong>是国家高官们，<strong>致胜联盟</strong>就是金氏家族及其支持者了。金氏家族要上台只需要一小撮人的支持就可以了。</p> 
<p>首先有一点必须明确：<strong>没有任何一个统治者是单枪匹马的</strong>。我们常常有一个误解，以为当上了皇帝就可以为所欲为，其实即使是皇帝也有他的核心小圈，必须靠这个圈子里的人的支持皇帝才能维持他的政权。为了赢得这拨人的支持，皇帝反过来必须给予回报。法国的“太阳王”路易十四可以说是全世界在位时间最长的独裁统治者，他登基时只有四岁，摄政于其母。为了攫取权力，他拉拢了一拨新贵族以扩大可替代者，让老贵族们内心惴惴，不敢轻易反叛，又把老贵族与宫廷绑定，让他们大部分时间待在凡尔赛宫里，年金的多寡直接与国王的宠信程度挂钩。更建立了一支职业化的军队，放开军阶竞争，让军人也有机会成为贵族。这样，路易十四与这一小拨联盟就构成了共生关系，尽管他执政期间以暴政出名，却一直维持统治地位长达 70 余年，可谓固若金汤。</p> 
<p>无论独裁也好民主也好，统治者都需要回报自己的支持者，但是联盟规模的不同直接导致了统治者政策的不同。假设现在统治者手里有 1000 万美金，对于奥巴马来说，他可能需要分给 100 万人，每人只能拿到 10 美金，但对伊拉克的萨达姆来说，可能只需要分给 50 个将军就可以了，每个人可以分到 20 万美金。没有人会为了 10 美金给你卖命，但是 20 万就难说了，在贫穷的伊拉克 20 万可是天价。这就是为什么独裁者可以肆意推行暴政，因为他们不需要来自人民的支持也能维持统治，同时他们给予军队高回报，让军队来镇压人民的反抗。多数人都不喜欢去干这种镇压同胞的脏活，所以丰厚的回报是统治者的必要支出。利比里亚的多伊军士之所以下台，就是因为没有足够的钱支付给自己的军队，没有人阻拦叛军进城，就这样轻易被抓了。</p> 
<p>从回报支持者的角度来看，奥巴马和萨达姆没有什么区别，只是国家制度限制了联盟的规模，联盟的规模又决定了奥巴马只能推行公共政策来回报民众，而萨达姆可以直接把钱分了而无视人民的水深火热。我们常常习惯于以“善政”来评价一个领导人，但是一个统治者的地位与“善政”其实毫无关系。《自私的基因》一书解释了人无论做什么事情都是以利己为出发点，即使有利他行为从长远来看也是利己。一个设计良好的政治制度应该能以最坏的揣测去看一个统治者的德行，而不是像圣贤之书所说的，善政完全依赖于统治者自身的修养，这种制度下必然会出现烽火戏诸侯，必然会出现商纣夏桀。</p> 
<p>三个维度的核心思想是本书的基础，而统治者竭尽全力要攫取与维护权力则是这套理论的前提条件。围绕这点，本书用了十章分述从上台到处理各种政治关系的细节，最后一章对现有制度的问题提出了改进意见，作者是美国人，所以主要是在民主制度如何更进一步上作出设想，主要论点还是扩大致胜联盟的规模。为了让本书通俗易懂，作者在援引了大量读者们熟悉的例子，比如“如何上台”一章举了利比里亚的多伊军士刺杀总统夺位的例子，多伊在下台的时候被另一个将军逼问“钱在哪里”的视频至今还在 Youtube 上流传，视频中多伊被切手指脚趾，割下耳朵生吞，宁死不肯说出钱在哪里，可见钱对于统治者来说多么重要。</p> 
<p>又比如第六章谈及腐败，腐败实际上是小联盟政权的统治工具。比如俄罗斯的警察工资很低，逼得他们要贪污否则无法生存。如果你听命于统治者，腐败就是你的特权，你可以享有这种特权带来的额外收入，而一旦你三心两意了，统治者就有光明正大的法律依据可以让你下台。</p> 
<p>作者提到的例子还有比如越南战争、以色列与阿拉伯国家的六日战争、二十世纪最成功的独裁者——新加坡总统李光耀等等，光是读这些故事就很有意思。以往枫影读者不喜欢政治新闻一类的文章，因为我们都太过习惯于文学家与政治家提出的笼统概念，动则国家动则国际关系，实际上我从来无法明白什么叫做一个国家对另一个国家道歉，什么叫做一个国家被另一个国家伤害，国家没有利益，只有人有，国家没有情感，只有人有。再高维度的总结与道理，落到实处的时候总是以细节的形式表现。放弃国家的笼统概念，以统治者的角度出发，所有看似奇怪的政治事件就都变得可以理解了。</p> 
<p>三个维度的理论一样可以用到大公司里面。在大公司里，统治者是 CEO，联盟就是能罢免 CEO 的董事会，有影响者可能是一些投资机构和大股东，名义选择人就是千百万的小股民了。名义上每个持有 HP 公司股份的人都对公司的决策有发言权，但是实际上创始人比尔·休利特与戴维·帕卡德两大家族控制了整个公司绝大部分股权，他们才是真正的决策者，能否讨好他们决定了 CEO 能否继续干下去。HP 的前 CEO 梅格·惠特曼就是没有看清这点，她费尽心思缩小联盟规模，把董事会上不支持她的人赶走，把席位给了收购回来了康柏公司的高管。她辞职那一年 HP 的股价下跌了，但是董事会人数减少了，每个人能分到的红利反而升高了。这些看上去是很好的政治手段，但是最终败在了比尔·休利特与戴维·帕卡德两大家族手上，对于他们来说，他们更关心的是公司运作的效果，而不是个人的腰包，毕竟钱对他们来说不是问题。</p> 
<p>对于政治来说，很多人的厌恶来自于不了解，因为不了解所以看不懂，因为看不懂所以无趣。《独裁者手册》恰恰给了我们一个入门的好材料。我不能说这本书给了一个绝对正确的观点，没有什么是绝对的对与错，但是他给出了一个相比于政治新闻来说更好理解的视角，给了一个不需要自己慢慢揣摩也能读懂的工具，以这个工具去解读其他组织，很多以往不明白的问题会不会一下子就豁然开朗了呢？</p> 
<p>16.01.21/凌晨<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #107 &#x65B9;&#x58C1;(&#x8305;&#x76FE;) &#x2014; &#x300A;&#x5317;&#x6B27;&#x795E;&#x8BDD; ABC&#x300B;</title>
        <link>https://justinyan.eth.limo/A53EDFD0-1052-4497-80DC-3DBDE6B72FC4/</link>
        <guid>https://justinyan.eth.limo/A53EDFD0-1052-4497-80DC-3DBDE6B72FC4/</guid>
        <pubDate>Thu, 14 Jan 2016 01:59:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/Cover-mp.png" alt="" /></p> 
<p>维京海盗 The Vikings 大多数读者都听说过，这伙来自斯堪的纳维亚半岛的蛮族，在公元 8 世纪到 11 世纪间，以极强的战斗力横行整个欧洲，所向披靡，当时中国大约在唐朝到北宋年间。这些人来自大多数来自瑞典、挪威和丹麦，有相同的语言，有一套独立的文化体系，崇尚勇武，与当时信奉基督的欧洲小绵羊们形成强烈对比。这些人本不是来自一个民族，只是因为有相同的文化才被统称为维京人，在持续了几百年的掠夺之后，维京人有些在自己的地方建立了国家，有些成了南欧国家的统治者，比如征服了英格兰的威廉一世就是维京后裔。稳定下来的维京人开始接受基督文化，维京人自己信奉的北欧神话也慢慢衰落，但是北欧神话与希腊神话一样对整个欧洲影响异常深远。</p> 
<p>雷神索尔、恶神洛基、主神奥丁这些形象一直活跃在文艺作品中，在电影荧幕上；星期日到星期五的英文都是以北欧神话中的神或巨人来命名（星期六是罗马神话）；北欧的死神 Hel 就是今天地狱单词 Hell 的来源；甚至我们现在在用的蓝牙技术的命名也是来自丹麦国王——蓝牙王（Harald Blatand）的绰号。北欧神话虽不足以跟希腊神话、基督教文化相提并论，但作为一种欧洲人常识的存在，如果读者们想要研究欧洲文化，北欧神话就是必经之路。</p> 
<p>北欧神话由于在成型的过程中遭到基督教的影响，也由于自身的文化程度，还没真正形成体系就已经被基督教取代，今天能够留下的资料不多，古籍《大埃达》（Elder Edda）和《小埃达》(Younger Edda)还有史诗《尼伯龙根之歌》是主要的资料。但是这些古籍都不太好读，想要通俗易懂地了解北欧神话，还得首推<strong>本周读书的主角——茅盾先生于 1930 年出版的《北欧神话 ABC</strong>》。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/s3970510.jpg" alt="" /></p> 
<p>茅盾先生原名沈雁冰，他用过的笔名很多，在本书的署名是“方壁”。茅盾作为新中国成立后的第一位文化部部长（下一任是巴金），声望很高，他创立的茅盾文学奖至今仍是国内最有影响力的小说奖项。茅盾先生除了写小说之外，也做过神话研究，除了这部《北欧神话 ABC》还有《中国神话研究ABC》、《神话杂论》等作品出版。这本《北欧神话ABC》是近百年前的书籍，但今日读来犹觉晓畅，实非不易。不过这本书想买却买不到，z.cn 没有上架，实体书也找不到，最后只有某位网友整理的电子版，据称修改过原作的人名与地名翻译，却不知道改动处有多少。</p> 
<p>说回北欧神话，这是世界上唯一一个悲剧的神话体系：神并不会长生不老，需要靠丰收女神伊登的苹果来维持青春，所有的神都注定要在和巨人族的末日决战中死去，这一天被称为“诸神的黄昏（Ragnarök）”。由于古籍散佚，北欧神话基本是由后人整理编撰的，很有些被基督教信仰修正的痕迹，比如《大埃达》是丹麦主教于 1643 年发现的，《尼伯龙根之歌》则是公元 1200 左右的人创作的，这个时期的北欧人已经和南欧融入了基督教了，甚至后来还有人宣称诸神的黄昏之后，会出现一个新的神：耶稣。所以看北欧神话，我们只要知道诸神的黄昏之前的故事就已经差不多了，第二代的神还没有形成系统，北欧人就已经被融合了。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/Ginnungagap.jpg" alt="" /></p> 
<p>在北欧神话中，宇宙中央有一个无底大鸿沟金恩加格（Ginnungagap），鸿沟以北是黑暗之国尼弗尔海姆（Niflheim），南边则是真火之国穆斯帕尔海姆（Muspelheim）。这跟北欧人既有火山又有冰川的生存环境是一致的。真火之国的火焰巨人苏尔特尔（Surtur）常以手中大剑砍击冰山，冰山融化蒸发，这样冰与火的交替中诞生了巨人伊密尔（Ymir），这位巨人代表邪恶。与伊密尔一同诞生的还有喂养他的母牛——奥德姆拉（Audhumla），母牛舔舐冰山，诞生了神的祖先勃利（Buri），代表善。</p> 
<p>善与恶开始交战，一开始势均力敌，直到勃利神与女巨人贝丝特拉（Bestla）生下三个儿子：奥丁（Odin）、维利（Vili）、伟（Ve），终于把伊密尔巨人杀死，涌出的鲜血淹死了巨人族的人。巨人族剩下勃尔格尔密尔和他的妻子乘船出逃，在世界的边缘定居，称为尤腾海姆（Jotunheim，巨人之国），以后诸神的黄昏那天出来与神们决战。伊密尔巨人的尸体就成了天地海洋石头草木，这点与我国的盘古开天辟地类似。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/The_dead_ymir.jpg" alt="" /></p> 
<p>诸神又将四个壮健的矮人命名为诺德里（Nordri，北）、苏德里（Sudri，南）、奥斯特里（Austri，东）、威斯特里（Westri，西），使立于地之四隅，以肩承天。这里可以看到 North, South, East 和 West 的由来。接下来是安排太阳、时间等神，而伊密尔的尸体上又跑出来一些像蛆一样的东西，其中长得黑的、性格狡诈的就是侏儒族，被诸神赶到地下，成为很厉害的工匠，而长得白的、性格温和的就住在空中，成为精灵族。这里我们可以看到魔戒中的世界架构的来由。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/yggdrasil-9-worlds.jpg" alt="" /></p> 
<p>有了天地日月与时间，神又取梣树（Ask）与榆树（Embla）造人，奥丁又创造了一棵巨大的梣树，名为伊格德拉修（Yggdrasil），此为撑起宇宙的世界之树。最终北欧神话以奥丁为主神，麾下有十二位男神和二十四位女神，其中包括后来频繁出现在各种文学、艺术、影视作品中的雷神索尔以及恶神洛基。奥丁在这里的位置有点像希腊神话里的宙斯，但是实际上在好战的北欧人心中，往往战神提尔（Tyr）才是首选，而农民们则更喜欢带来丰收的雷神索尔。</p> 
<p>北欧神话里的神的关系跟希腊神话有点类似，神们之间的乱伦挺严重，比如代表美与爱之神芙蕾雅（Freya）就跟所有的神都有过关系，为了拿侏儒们打造的项链也陪过侏儒族，又比如在奥丁外出的时候妻子芙莉嘉（Frigga）就跟自己的兄弟有过关系，从这些细节我们可以看出古代的北欧人有近亲通婚的习俗。在今天人们的道德观念看来可能有些不可思议，但是要知道道德观是一直在变化的，在当时的北欧人看来可能就是再正常不过的事情了。</p> 
<p>茅盾的这部《北欧神话 ABC》分了二十三章来写，从宇宙诞生之初开始，对每一位主要的神都做了描述，最终章讲述了英雄传说——希格尔德传说，内容简洁却十分中肯，是入门北欧神话的好读物。</p> 
<p>16.01.14/凌晨<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #106 Rachel Joyce &#x2014; &#x300A;&#x4E00;&#x4E2A;&#x4EBA;&#x7684;&#x671D;&#x5723;&#x300B;(&#x82B1;&#x7532;&#x8001;&#x4EBA;&#x5F92;&#x6B65;&#x7A7F;&#x8D8A;&#x82F1;&#x683C;&#x5170;)</title>
        <link>https://justinyan.eth.limo/F41A8E2A-CA3B-4392-BB0C-2ABE6B776F31/</link>
        <guid>https://justinyan.eth.limo/F41A8E2A-CA3B-4392-BB0C-2ABE6B776F31/</guid>
        <pubDate>Wed, 06 Jan 2016 14:21:59 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2016/01/Cover106-mp.png" alt="一个人的朝圣" /></p> 
<p>枫影有过几次自行车旅行，旅途中遇到了些有意思的人，听到了些奇怪的故事。我发现当一个人与自己熟悉的生活疏离，成为一个渺小的过客，旅途中陌生的一花一草仿佛都有了新的意义。一个人的旅途是如此简单，所做的事情不过是把一只脚抬起来，另一只脚踩下去，一直骑下去。有时候遇到陡坡与狂风会困苦，会疲累，这时候路人善意的大拇指与小孩天真的笑容能让你再度充满动力，艰难的旅途总是容易感动，这种陌生人间的简单正是旅行的魅力所在。</p> 
<p>可能有些读者会觉得骑自行车长途旅行是一件很困难的事情，但其实只要会骑自行车就能走完全程。这种看似艰苦的旅程其实困难的只有一点，就是<strong>出发</strong>。2012 年英国前 BBC 广播编剧 Rachel Joyce 在退休后出版了自己的第一部小说《一个人的朝圣》（The Unlikely Pilgrimage of Harold Fry），这本书讲的就是退休老人哈罗德如何踏上徒步穿越英格兰去看望罹患癌症的朋友的故事。</p> 
<p>故事开始于一封来自多年不见的朋友奎妮的来信，信中告诉哈罗德奎妮得了癌症，以此信告别。哈罗德大感震惊，他走在去寄回信的路上，一边犹豫一边错过了一个个邮筒，最后他终于下定决心，打了个电话给疗养院，要奎妮等着自己，他要徒步穿越英格兰去见她。</p> 
<p>这是一部情感类小说，作者 Rachel 还在 BBC 工作的时候写过短篇广播剧 <em>To Be a Pilgrim</em>（2007），退休后以此剧为基础写成了长篇小说。这部广播剧是 Rachel 献给当时在跟癌症搏斗的父亲的，很可惜父亲没能撑到作品问世的时候。</p> 
<p>由于故事的内容是哈罗德徒步穿越英格兰去见昔日朋友奎妮，所以主要的看点就有两个：</p> 
<ol> 
 <li><strong>主角仓促出发而没有交待的背后的故事</strong></li> 
 <li><strong>主角在路上遇到的光怪陆离的人与事</strong></li> 
</ol> 
<p>Rachel 的文笔很好，常常把人物的细腻情感与美丽的风景天衣无缝地揉和在一起，比如哈罗德致电疗养院希望跟奎妮谈话的时候，接电话的女人一声长叹，哈罗德心中顿生寒意：太晚了，奎妮死了。这时，</p> 
<blockquote>
 <p> 那个声音说：“恐怕轩尼斯小姐正在睡觉。我可以帮您传个口信吗？”</p> 
 <p> 小朵的云在地上投下影子，走得飞快。远山的光影一片雾蒙蒙，不是因为薄暮，而是因为山前蔓延的大片空地。他思量着现在的情景：奎妮远在英格兰的那一头小睡，而她站在这一头的小电话亭里，两人之间隔着他好不了解、只能想象的千山万水：道路、农田、森林、河流、旷野、荒原、高峰、深谷，还有数不清的人。他要去认识它们，传过它们——没有深思熟虑，也无须理智思考，这个念头一出现，他就决定了。哈罗德不仅因为这种简单笑了。 </p>
</blockquote> 
<p>枫影读的是北京联合出版公司出版的，由黄妙瑜翻译的版本，译文仿佛有些何其芳的影子，优雅晓畅，读起来非常舒服。全书 32 小节，除去开头和结尾，有 26 个小节是在路上发生的故事。这里面的内容有一部分是旅途中发生的事情，另一部分就是“回忆杀”。</p> 
<p>回忆杀在这部作品中是必不可少的，因为哈罗德走得过于匆忙，需要对背后的动机作出解释，另一方面回忆也是一个平行故事。回忆杀如果用得好是锦上添花，用的不好就啰嗦拖沓了。看过《火影忍者》的读者，想来还对“回忆杀”心有余悸吧。这部小说的回忆部分只能说差强人意，不算啰嗦但也不够简洁。只有到了全书结尾，支线故事回归到主线，作者把留好的大招一并放了，推向全书高潮，才算精彩，其他的回忆则有些累赘。作家在决定下笔写书的时候曾和她的经纪人见过面，经纪人问她你现在手头有多少字了？她说 35,000 字。但是回家一看只有 8,000，现在看来作家急于扩充字数可能也有影响。</p> 
<blockquote>
 <p> 他们顺着蓝色的地毯往前走，一点声音都没有。没有掌声，没有笑着的护士，也没有欢呼的病人。只有一个哈罗德，跟在一个修女松散的剪影后，走过一条空荡荡的、干净的走廊。 </p>
</blockquote> 
<p>作家非常擅长这种通过环境来突显人物心理的手法，相比之下，旅途前期遇到的人与事就是画蛇添足了。哈罗德曾遇到奇臭的流浪汉给予拥抱，时髦的绅士向他吐露自己是同性恋的苦闷，也有遇到骑自行车穿越英格兰的一群疯狂的女人。但是这些分支都对故事主线没有什么帮助，仿佛作者就是想要营造“<strong>一个人的旅行应该会有的那些事情</strong>”的感觉。这些独立的小故事如果对主线没有作用，读者是提不起兴趣的，反而会觉得被分散了注意力，还得在主线和支线间来回切换，有点懊恼。这点到了故事后期有所改善，哈罗德“朝圣式”的徒步开始获得公众的关注，大家对他的看法不一样了，开始有些奇怪的人要求加入朝圣队伍。这时候发生的故事对主线就很有帮助了。</p> 
<p>在这些支线情节中，作者都刻意要讽刺现实针砭时弊，试图以此与哈罗德徒步旅行的简单朴实作比，但是下笔不够犀利，柔和的文风没有挖掘出人性的深层，所揭露的事情流于表面，不够过瘾。</p> 
<p>比如对那个在火车站吐露自己是基佬的绅士，作者只是做了几句不软不硬的点评：</p> 
<blockquote>
 <p> 全英格兰的绅士都是这样的，一个个买着牛奶，给自己的汽车加着油，或者正在寄一封信，但没人知道他们内心深处背着的包袱。有时他们需要付出简直不为人道的努力来扮演“正常”，每天都要装，还要装得稀松平常。那种不为人道的孤独感。 </p>
</blockquote> 
<p>把这些大家都知道的事情复述一遍又有什么意义呢？既不能唤起读者的同情，也对主角没有什么深刻的影响。从这个角度讲，26 小节的旅途大约有三分之一都是平平无奇的。</p> 
<p>所以枫影对此书感兴趣主要还是由于哈罗德一个人的旅程。他是一时兴起出发的，没有受过专业训练，没有良好的装备，也没带换洗衣服，甚至手机都忘在家里。这让我想起以前环青海湖骑行的时候遇上一对从来没有骑过长途的情侣，他们骑得很辛苦，但最终还是完成了旅程。哈罗德做的是徒步旅行，比自行车要更艰难，所以作家安排他在旅途中遇上好人，帮他解决了脚上的水泡问题，还送了一身装备。</p> 
<p>旅途中的陌生人互不相识，也不了解对方的过去，但是有什么所谓呢？对陌生人你可以表现出不是自己的那一面，甚至成为一个自己“想成为的人”，这些现实生活中想做而做不到的事在陌生人面前是如此简单，这就是旅行的魅力啊！</p> 
<p>我回想起在旅途中遇到的小伙伴们，旅途结束后他们回到自己的生活中，照样过着平凡的生活。但是他们的故事已经成为你回忆的一部分，你也已经成为别人回忆的一部分，这些故事是真是假是云是雾都不重要，重要的是旅途的美好，你业已体会，旅途的记忆，已成为是你的记忆。</p> 
<p>2016.01.02/下午<br /> 于自居</p> 
<p><img decoding="async" src="http://photos-g.ak.instagram.com/hphotos-ak-xpa1/10431877_704133682981622_1669711668_n.jpg" alt="" /></p> 
<h2>相关阅读</h2> 
<ol> 
 <li><a href="http://justinyan.me/post/1745">一路骑下去，直到见到蓝色的大海（一）</a></li> 
 <li><a href="http://justinyan.me/post/1748">一路骑下去，直到见到蓝色的大海（二）</a></li> 
</ol> 
<p><a href="http://justinyan.me/post/1734">每周读书 #53</a> 曾介绍过<a href="http://justinyan.me/post/1734">石田裕辅的《不去会死！》</a>一书，这位来自日本的自行车骑士花了 7 年时间用自行车环游世界，这本书写了作者环游世界的种种故事，是一本很燃很有意思的书。也是这本书让枫影明白什么才是真正的旅行。关于旅行的书，每周读书还介绍过孙东纯的<a href="http://justinyan.me/post/1767">《迟到的间隔年》（每周读书 #56）</a>以及<a href="http://justinyan.me/post/1772">《间隔年之后》（每周读书 #57）</a>，都是不错的旅行主题的书。这些书不同于攻略与 Lonely Planet，更多的是作者的身心体会，读来仿佛随着作者一同游历世界，都是很有诚意的文字。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #105 Hugh Howey - &#x300A;&#x7F8A;&#x6BDB;&#x6218;&#x8BB0;&#x300B;(&#x53CD;&#x4E4C;&#x6258;&#x90A6;&#x2219;&#x7EDD;&#x671B;&#x4E61;&#xFF1A;&#x672B;&#x65E5;&#x7684;&#x6C99;&#x4E18;&#x5730;&#x5821;)</title>
        <link>https://justinyan.eth.limo/F06BF41E-2F52-4B07-9A88-F660349D7F06/</link>
        <guid>https://justinyan.eth.limo/F06BF41E-2F52-4B07-9A88-F660349D7F06/</guid>
        <pubDate>Thu, 31 Dec 2015 00:41:44 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2015/12/每周读书105羊毛战记-mp.png" alt="羊毛战记" /></p> 
<p>广义上“乌托邦（utopia）”可以指幻想出来的无法实现的的美好世界。这个词最早来自 1516 年英国托马斯·莫尔爵士写的《乌托邦》一书，这本书通常也被认为是空想社会主义主义的先驱。而其实“乌托邦”的思想由来已久，可以上溯到柏拉图的《理想国》。在莫尔这部作品出来之后，乌托邦的概念曾盛极一时，直到 1890 年还有《乌有乡消息》（News from Nowhere）这样的作品出现。</p> 
<p>但是乌托邦盛行的后期，人们发现这种过于美好的幻想根本无法付诸实践，比如《理想国》与《乌托邦》这两部作品中所定义理的想社会，涉及人们生活的方方面面，这种事无巨细的精细规划事实上约束了人们的自由，反而削弱了乌托邦的美好。</p> 
<p>于是 1920 到 1948，反乌托邦三部曲诞生了：尤金·扎米亚金的《我们》、赫胥黎的《美丽新世界》以及乔治奥威尔的《1984》。三部曲每周读书介绍过后两部，《1984》的“Big Brother is Watching You”至今还在我们的生活中每日上演，《美丽新世界》则以科幻的视角去讲述一个毫无个性的社会，二者都涉及极权统治与对自由、知识的约束。</p> 
<p>反乌托邦（dystopia）所幻想的世界则主要聚焦于对未来的糟糕的忧虑。艺术也好，文学也好，思想总是新一波浪潮推翻前一波，反乌托邦取代乌托邦思想直到今天都还是主流。比如动漫作品的《进击的巨人》，游戏作品的“地铁系列”、“Fallout 系列”，以及本周读书要介绍的主角——<strong>《羊毛战记》</strong>。</p> 
<p>《羊毛战记》的英文书名为 WOOL，作者一共分开写了五部，枫影读的是湖南人民出版社出版的合集版本。这本书的出版有点意思，作者休·豪伊（Hugh Howey）早期只是写了《羊毛战记》的第一部，篇幅也就一个中短篇小说的样子，大出版社对他没什么兴趣，后来他发现了 Amazon.com 的 Kindle 自出版系统，于是就把这个短篇发到上面试试，没想到受到读者的热烈欢迎（这让我想起《火星救援》放到 Kindle 上然后成为 2014 年最畅销科幻小说的故事）。于是作者受到鼓舞，接着又写了后面四部，把这部短篇扩充成大长篇，后来又把五部小说合并出版了 Omnibus 版本，这是大概 2011 年到 2012 年初的事情。</p> 
<p>写完《羊毛战记》后作者仍不停笔，继续以类似的做法写了续集 Shift 系列和最终篇 Dust。这三部完整的作品构成了“地堡系列”(Silo Series)，本周我们只介绍地堡系列第一部。</p> 
<p>《羊毛战记》的背景是在近未来年代，由于核爆战争的原因，地面空气已无法适应人类的生存，于是大家都生活在地堡底下。地堡是长条圆柱状往地底延伸的封闭空间，中间有一个巨大的螺旋楼梯，地堡的设计与居民的分布大致为上中下层，与政治、社会地位挂钩。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2015/12/silo.jpg" alt="地堡" /></p> 
<p>这样一个地堡就是一个缩微的社会，前面我们介绍到反乌托邦作品大多涉及极权统治，地堡社会也是一样，上层的小部分人统治了底下的绝大多数人，所以思想控制是维持地堡社会稳定的一个重要手段。而思想控制意味着个性的抹灭与自由的丧失，居住在地堡里面，人身自由早已所剩无几，再加上严格的言论控制，地堡就仿佛一个高压锅。为了缓解地堡的紧张的压力，与地面对接的最顶层部署了巨大的屏幕，可以透过地堡周围的摄像头看到地堡外的世界——无边无垠的沙丘。</p> 
<p>由于酸性的腐蚀与沙尘暴的袭击，摄像头不可避免的会日渐模糊，于是地堡的社会产生了一种独特的死刑：<strong>送罪犯出去清洗镜头</strong>。每次镜头清洗任务完成之后地堡里的人就相当于释放了一次压力，人们总会忘记被送出去的人的牺牲。</p> 
<p>小说从清洗镜头这件事情作为切入点，有高压就会有冲突，有冲突就会有故事，有故事就可以设悬念，有悬念就能驱动读者继续读下去。作者在布置悬念这块可谓得心应手。第一部短篇，寥寥数笔就给读者展示了一个荒凉的末日沙丘世界，最后人物踏出地堡去清洗镜头那一段更是深深抓住了读者的内心，是一个极好的开头。</p> 
<blockquote>
 <p> 如果有人在地堡里看，他们会看到什么？</p> 
 <p> 荒凉死寂的土黄色沙丘，一道黑暗的沟槽，一具即将死亡的蜷曲的人体。远处那日渐腐朽破败的城市高高送礼，俯视着他。</p> 
 <p> 如果地堡里有人在看，他会看到什么？ </p>
</blockquote> 
<p>从这段简短的书摘我们可以看到作者的功力以及译者流畅的文笔。但是我们前面也说了，这部小说作者是分了好几部分写的。这就导致了一个问题：第一部和第二部的人物衔接不上。简单的说就是出场的人物很快就死了，读者忽然一愣，靠，老子追随了这么长时间的人物就这么轻易地挂了?（《冰与火之歌》的作者笑了）好在后面三部作者把主角交给了不死的朱丽叶，这个强悍的女主角终于套上主角光环，一直到“地堡系列”结束都不死。</p> 
<p>分开写的第二个问题是，每个独立的部分都具有完整性，简单地说就是：<strong>啰嗦</strong>。作者非常不擅长写男女之间的情感，毫无细腻可言，相比起地堡社会的设计、悬念的铺设，情感描写简直就是幼稚园的手笔。第一部的人物是夫妻之间，设计还算合理，唯一不合理的就是妻子主动要求出去洗镜头送死这件事情，事先完全没有跟丈夫商量的余地。第二部开始就天方夜谭了，两个加起来一百岁的老人家，为了寻找保安官候选人（原先那个在第一部挂了），从顶楼走到对底层，过程中旧情复燃。按理说复燃就复燃吧，爱情本来就不关乎年龄，但是能不能不要每翻一页就说拿水壶的时候手碰了一下就脸红了，喝了你的水壶就脸红了，走路的时候不小心靠在一起就脸红了，脸红泥煤啊！俩老人家这么多年了，什么大风大浪没见过，这种描写应该放在两小无猜的豆蔻小儿那里去啊，放这俩老人身上看得我心里直发毛，每次一看到这种描写就赶紧略过。而且这种暗示写个一次两次也就够了，他居然把第二部的全篇都写满了这种暗示……</p> 
<p>再往后面不死主角朱丽叶出来了之后，她在黑暗中遇到了一个程序员小哥，两人连面都没有仔细瞧过，就莫名其妙互相爱上了……</p> 
<p>小说，就是把看似巧合的事情以合理的方式说出来，如果实在想不到什么合理的手法，就说他爱上她就好了，爱情嘛，最难琢磨了。《羊毛战记》里面可以说所有主要人物以及死亡事件的主要动机，就是爱情。无可否认爱情是一个很好的借口，但是生搬硬套的所谓爱情，就真的是为了找借口而写借口了。</p> 
<p>《羊毛战记》推出后受到很多五星好评，我个人觉得也许跟作者自出版这件事加上连载的形式有关，他的这项举动也算一种创新之举，在崇尚个人主义的美国文化中，相当于一个不受重视的小虾米给了出版社大佬们当头一棒。而且作者还推掉了出版社 7 位数的合约以保留电子版的权利。作者在写作前曾做过屋顶工，帆船长等工作，现在光是《羊毛战记》一书的出版就已经收入不菲，这本书还签给了 20th Century Fox 准备拍电影，相信这个屌丝逆袭的故事也对好评率有一定的助力。</p> 
<p>客观地说，《羊毛战记》的背景设定，社会架构设定，冲突设定以及剧情的推进都是非常不错的，虽然人物情感描写比较糟糕，而且由于形式的问题导致篇幅有些啰嗦冗长。至于情节设定方面到了朱丽叶反抗开始就没什么突破了，地堡的世界比较小，来来去去都是上中下楼层，如果能够把故事扩展到地堡外面的世界也许会有更多的可能。</p> 
<h2>关于书名</h2> 
<p>《羊毛战记》还有一个可以吐槽点，就是书名，其实全书跟羊毛一点关系都没有。英文的书名里面，子标题 Proper Gauge（指选择合适口径的毛衣针）, Casting Off（收针）, The Unraveling（拆解） 和 The Stranded (间色编织) 都是织毛衣相关的术语，但是全书跟羊毛没有半点关系。╮(╯_╰)╭</p> 
<p>2015.12.30/中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x4E66;&#x5355;] &#x67AB;&#x8A00;&#x67AB;&#x8BED;&#x2219;&#x6BCF;&#x5468;&#x8BFB;&#x4E66; 97&#x671F;-104&#x671F;</title>
        <link>https://justinyan.eth.limo/7E15D2B5-24B0-4AC8-A505-7223D7E79B04/</link>
        <guid>https://justinyan.eth.limo/7E15D2B5-24B0-4AC8-A505-7223D7E79B04/</guid>
        <pubDate>Mon, 28 Dec 2015 00:07:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/Cover97-104-blog.jpg" alt="枫言枫语∙每周读书书单97期-104期" /></p> 
<p>从 11 月到 12 月，从《蒋勋说文学》到《月亮与六便士》，又到了“枫言枫语∙每周读书”的书单时间了。过去两个月里我们给大家介绍了 8 本书，其中有几本枫影印象比较深刻的。</p> 
<p><strong>《Being Mortal》（中译本《最好的告别》）</strong>唤起了读者对死亡的恐惧，惊觉我们对死亡与衰老知之甚少。<strong>《启示录：打造用户喜爱的产品》</strong>是关于互联网行业的书，它道出了一个普通员工在大公司里会面临的问题，是非常实在的指南。<strong>《增长黑客》</strong>则介绍了一个比较前沿的概念: Growth Hacker，概念与故事比较有意思，除此之外的干货含量则见仁见智了。</p> 
<p>以下是过去 8 期介绍的书目：</p> 
<ol> 
 <li><a href="http://justinyan.me/post/2387">每周读书#97 蒋勋说文学：从诗经到陶渊明</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/097.jpeg" style="margin: 0;" /><br /> <em>2015-11-05</em><p></p> <p>蒋老师在书中以独到的见解，平和的语言，结合历史社会背景以及个人的故事经历，把文艺作品讲述得十分生动。蒋老师摒弃一般人讲诗时做注解的方式，转而以审美的目光来分析，比之于严肃文学的解读，蒋老师的讲解要容易接受得多。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2393">每周读书#98 Atul Gawande——《Being Mortal》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/098.jpeg" style="margin: 0;" /><br /> <em>2015-11-14</em></p> <p>《Being Mortal》（中译本《最好的告别》）唤起了病痛的回忆，也唤起了死亡的恐惧。我们自以为理解这个世界，事实上不仅不了解的事情很多，甚至对自己本身都知之甚少。《最好的告别》告诉我们死亡与病痛的可怕，告诉我们其实我们完全不了解应该如何去面对死亡。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2397">每周读书#99 Orson Scott Card——《安德的游戏》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/099.jpeg" style="margin: 0;" /><br /> <em>2015-11-19</em></p> <p>这是安德系列的第一部，作者早期写了《安德的游戏》短篇版，后来想写第二部《死者代言人》的时候，考虑把第一部的主角拿过来用，所以需要一个过渡的故事，最后他决定把短篇扩展成长篇，才有了这部中间故事精彩（原来的短篇部分），前后部分牵强的获奖作品。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2408">每周读书#100 封面设计师的阅读之道——《当我们阅读时我们看见了什么》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/100.jpeg" style="margin: 0;" /><br /> <em>2015-11-21</em></p> <p>Mendelsund 并不是科班出身的设计师，他本是一名钢琴演奏家，后来他因缘际会受到企鹅出版社的封面设计师 Chip Kidd 的赏识，于是他就忽然从一个音乐家转行成为设计师了。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2443">每周读书#101 先有续作再有原作——《死者代言人》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/101.jpeg" style="margin: 0;" /><br /> <em>2015-12-03</em></p> <p>现实是局限的，现实是孤独而平凡的。我们有一颗不甘于平凡的心，却身处于这个平凡的世界。所以我们阅读，我们在阅读中体验到灿烂的幻想与精彩。科幻小说是基于科学的幻想，也是我们基于现实的梦。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2464">每周读书#102 用户增长黑科技——《增长黑客》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/102.jpeg" style="margin: 0;" /><br /> <em>2015-12-09</em></p> <p>作者范冰写过代码做过运营，各方面涉猎挺广，积累了不少互联网故事，于是作者在这本书里面堆砌了大量的案例，从国外的 Hotmail, Twitter, Airbnb, 到国内的微信，美图秀秀，唱吧等应用，这里有许多非常有趣的故事，令人深受启发。</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2493">每周读书#103 牛逼的产品经理是怎样的——《启示录》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/103.jpeg" style="margin: 0;" /><br /> <em>2015-12-17</em></p> <p>人们在大公司里的工作状态： “大部分人游荡在黑暗里，他们只知道抱怨，却从不想办法寻找电灯开关。”</p> </li> 
 <li> <p><a href="http://justinyan.me/post/2553">每周读书#104 美的狂热的追求者——《月亮与六便士》</a><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/104.jpeg" style="margin: 0;" /><br /> <em>2015-12-24</em></p> <p>大多数人都是忙碌社会中沉浮漂游的一部分，就像始发站到终点站的有轨列车，每天来来去去，一成不变，连车上乘客的数目也能猜个八九不离十。这种生活秩序得可怕。艺术家大抵是最能义无反顾地闯入迷雾的一群人。</p> </li> 
</ol> 
<p>15.12.27/夜<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #104 &#x6BDB;&#x59C6; &#x2014; &#x300A;&#x6708;&#x4EAE;&#x4E0E;&#x516D;&#x4FBF;&#x58EB;&#x300B;(&#x7F8E;&#x7684;&#x72C2;&#x70ED;&#x7684;&#x8FFD;&#x6C42;&#x8005;)</title>
        <link>https://justinyan.eth.limo/ABC6DBA9-4A76-48FD-827E-A469E981A4D4/</link>
        <guid>https://justinyan.eth.limo/ABC6DBA9-4A76-48FD-827E-A469E981A4D4/</guid>
        <pubDate>Thu, 24 Dec 2015 10:20:00 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2015/12/moonandsixpence-blog.jpg" alt="" /></p> 
<p>大多数人都是忙碌社会中沉浮漂游的一部分，就像始发站到终点站的有轨列车，每天来来去去，一成不变，连车上乘客的数目也能猜个八九不离十。这种生活秩序得可怕。但是大多数人更怕改变，更怕选择，更怕未知，探索未知需要勇气，而这恰恰是大多数人所缺乏的。</p> 
<p>艺术家大抵是最能义无反顾地闯入迷雾的一群人。他们凭着对美的狂热的追求，一头扎进常人所无法理解的世界里，去流浪，去创造，去宣泄自己心中澎湃的热情。有时候他们也说不上为什么要这么做，就像一个人被扔进水里，他只能不停地游，否则就会死去。画家高更的名字想来大家都耳熟能详，他原是一名法国证券交易所经纪人，股市狂跌之后，他下决心投身艺术。后来由于各种原因离开了妻子，开始全身心投入艺术领域里探索，最终在荒蛮原始的大溪地（Tahitian）画出代表作《我们从何处来？我们是谁？我们向何处去？》。</p> 
<p>1903 年高更因心脏病去世，16 年后，第一次世界大战结束之际，作家毛姆以高更的人生故事为原型，写出了《月亮与六便士》一书。</p> 
<p>这本书枫影读的是上海译文出版社出版的，由傅惟慈老师翻译的版本，翻译基本上做到了信达雅，非常流畅，但是英文译作里面奇怪的人名、地名还是无法避免，傅老师有时候习惯用京腔儿化音也令人莞尔，不过总体翻译质量很高，这点是需要肯定的。</p> 
<p>毛姆的人生经历与高更也有些许相似之处，他弃医从文，周游列国，是以作品中常带有异国风情，《月亮与六便士》中地中海的文化以及大溪地（又译塔希提）文明也是令人眼前一亮的东西。全书读下来有两点比较令人叹服的:</p> 
<p><strong>一是人物</strong>。毛姆非常擅长人物描写，寥寥数笔就能令人物跃然纸上，毛姆知道人物的言行远比体貌重要，配角对于这个人物的看法远比直接描写人物本身重要。作家非常擅长讲故事，他笔下的人物各个性格鲜明，又形色各异，上至上流社会的阔太太，下至底层社会的流氓水手，几句台词，几笔点睛，人物是奸是诈，是纯朴是狡猾，立时分明，活灵活现。</p> 
<p><strong>二则抽象情感描写的具象表达</strong>。如果说小说中的体貌描写是人物的皮肤，那么抽象的情感描写就是人物的心脏。情感描写最难的地方不在于说出我有多难过多高兴，而是如何把这份悲伤与开心描写得顺理成章。艺术家之所以给普通人难以捉摸的感觉，并不在于他刻意去装扮自己（那是真装逼），而是他的思维方式与意识形态与普通人完全相异。普通人所重视的所惧怕的在艺术家眼里却毫不在乎。</p> 
<p>小说以第一人称转述来写，为了让这份不在乎成为自然而然的事情，作家安排了好几场转述者与主角的对话。在对话中产生了激烈的碰撞，然后再以转述者的视角对这份激动作出揣测与表达。艺术家本来就是不可知的，直接把话说出来就不具有信服力了，借转述者之口来表达使故事更加可信。另则转述者是以“非艺术内行”的身份出场的，他的视角与读者的视角是一致的，于是作家得以用外行人的眼睛去解读艺术。这种避重就轻的写法有点狡猾，也很通用，像动漫《棋魂》、小说《棋王》都采用了类似的手法，不从专业本身入手，而以通俗的角度去看艺术家对美的狂热追求，这种方式读者更容易接受，也更容易受感染。</p> 
<p>但是这部小说成于 20 世纪初，有些地方可能我们今天读来会感到不太舒适，比如这部小说的节奏没有今天的作品来得紧凑，冗长的过渡读起来就显得拖沓与无聊。比如主角直到第六章才有了正式的体貌描写，于是此前五章事实上全部都是铺垫，这大概也是许多读者无法把前面部分读完的原因。</p> 
<p>另一个问题是，小说的后半部分开始讲大溪地的故事的时候，这一部分其实是充满异国风情，可以一观原始文明与主角内心的美的追求产生碰撞的精彩部分，但是由于作者在写这部分内容的时候采用了另一些人物来做转述，转换太多次人物意味着作家需要花时间去刻画这些人物，读者则需要花成本去接受这些人物，简而言之就是累赘。尽管作家的妙笔仍然在这些小人物身上展开，幽默与讽刺不断，但是这些会心一笑是无法满足读者内心对于聆听主角故事的渴望的，毕竟主角才是读者们投资了最多感情的人物。这些小人物写得再鲜活，也不过是点缀之妙罢了，而笔墨花费得多了，就有点喧宾夺主了。</p> 
<p>所以总的来说这部作品的亮点在作家辛辣的文笔与对生活赤裸裸的剖析，透过作家的视角看到的人物，既生动又可笑，既可恶又可敬，你随着人物的悲恸而悲恸，随着人物的愤怒而愤怒，再加上作家华丽丽的情感表达，读之仿如泛舟浪涛之巅，澎湃而不由自已。</p> 
<p>15.12.24/凌晨<br /> 于自居</p> 
<h2>关于书名</h2> 
<p>曾经《月亮与六便士》一直处于豆瓣小说标签类首页，常常能见到这个奇怪的书名，却一直不知道这是什么意思——因为书名与内容其实是完全无关的。一个说法是 Philip Carey 曾评论毛姆的代表作《人性与枷锁》中的主人公过于仰望月光而看不到脚下的六便士：</p> 
<blockquote>
 <p> so busy yearning for the moon that he never saw the sixpence at his feet. </p>
</blockquote> 
<p>毛姆喜欢这个说法于是就以 The Moon and Sixpence 为下一部小说的名字。读完小说全文，在毛姆辛辣讽刺的文笔之下，我觉得这种做法还是挺很符合毛姆的风格的。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x4F55;&#x505A;&#x5230;&#x6BCF;&#x5468;&#x8BFB;&#x4E00;&#x672C;&#x4E66;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/A62926E7-8263-4194-AD98-FC559469A007/</link>
        <guid>https://justinyan.eth.limo/A62926E7-8263-4194-AD98-FC559469A007/</guid>
        <pubDate>Mon, 21 Dec 2015 09:33:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2015/12/0599db5b539b02d734719dc9c889e667_1440w.jpg" alt="如何做到每周读一本书？" /></p> 
<p>今年（2015）年初开始把“每周读书”搬到微信公众号上，基本上保持了每周一更的频率，于是今年很多朋友都在问我同一个问题：</p> 
<blockquote>
 <p> <strong>你是怎么做到每周读一本书的？</strong> </p>
</blockquote> 
<p>问这个问题的朋友大部分是真好奇，也有些期望通过质疑来安慰自己的。今天我们生活在一个节奏飞快的社会里，大部分人每天都很忙，要赚钱要生活要绩效，大家听得最多的借口就是<strong>“没有时间”</strong>。</p> 
<p>但是其实每个人内心都清楚，<strong>“忙”并不等于完成的事情多，往往整天忙得团团转的人反而是效率低下的表现</strong>。“每周读书”曾经介绍过的《番茄工作法》、《Getting Things Done》、《启示录》等书都有相关的阐述，今天 GTD 等时间管理方法的流行也正是基于大家日益繁忙而疲累的内心。</p> 
<p>我不敢说自己是高效工作者，但是与其无可奈何的抱怨工作压力，不如学好时间管理（核心是管理自己），在繁忙的工作中不忘打开一扇明窗，我觉得比起蒙起头来往前冲要开心得多。起码回忆起过去这一年时间里，除了工作我还收获了阅读的美好时光。</p> 
<p>所以我觉得把这一年的读书经历写下来也许会是件有意思的事情，起码再有朋友问我一样的问题，我可以直接把链接发给他（笑）。于是就有了这一期的 Q&amp;A 🙂</p> 
<hr /> 
<p><strong>Q1: 微信公众号里发的那些书你全都看过吗？</strong></p> 
<p>枫影: 是的，所有的书我都完整地看过，今年没有看完的书也有一些，里面不乏好作品，比如《自私的基因》，但是没有看完的作品我不会拿出来妄加评断。即使看完的书我也会做好读书笔记才开始动手写书评，没做过笔记就好像没看过这本书一样。</p> 
<p><strong>Q2: 你真的每周都读完一本书吗？你发的书不会是以前读过的吧？</strong></p> 
<p>枫影: “每周读书”最早是 2010 年底开始在博客上写，当时还在上学，经常泡图书馆一呆就是一下午，每周看完一本书不是什么难事。但是工作后就有点难度了，今年年初我开始写微信公众号之后才开始保持了真正的每周一更。每一本书都是看完后，做完笔记与书评后才发的。</p> 
<p>更新的频率是每周一次，并不代表每周只读一本书。像读《三体》和《死亡通知单》这种系列小说可能需要两周时间，于是我会提前看多几本书，这样就可以给长篇的作品留出一定的 buffer。典型的情况比如我国庆要出去玩，于是一口气先读完了《24个比利》、《孤儿列车》和《无声告白》三本书。</p> 
<p>当然这种情况也比较少，大部分时候一周一本书的节奏比较适合我，所以我选择的大部分作品都是长度适中的。一般找书的时候如果不是通过别人推荐过来的，我就会先找到感兴趣的话题，然后找到代表作家，再找该作家的代表作，这样选择的作品一般质量都不错，而且也不会太长。</p> 
<p><strong>Q3: 那你平时读书的时间都是怎么安排的？</strong></p> 
<p>枫影: 我在互联网公司上班，加班是常事。我们公司晚上 10 点后下班的的士费是可以报销的，所以很多同事会选择打的。但是我更倾向于做地铁，一般只要能赶上最后一班地铁（11点15分左右）我都会选择坐地铁上下班。</p> 
<p>我每天花在地铁的时间大概有快一个小时的样子，这段时间就是很欢乐的阅读时间了。另外就是我从小有个技能，可以不用睡午觉。所以午休时间也是我非常期待的时间，可以用来看书，做笔记，写书评什么的。而且这段时间大家都在睡觉，非常安静，也不会有人来打扰你。（笑）</p> 
<p>有的朋友问我读书为什么这么快？其实我读书的速度并不快，跟大家差不多，只是我每天可能有大约一个多小时的时间会用来读书，这样一周读一本厚度适中的书就不是什么难事了。</p> 
<p><strong>Q4: 可以说一下你是怎么做读书笔记的吗？</strong></p> 
<p>枫影: 上中学的时候我们学校有个做读书笔记的作业，要求每个月以作业的形式上交。这个传统在我这里算是保留下来了。每次读书，看到好的地方或者有争议的地方我都会用笔划出来，电子书就直接用高亮功能。读完之后我再用笔记本（这里安利一下德国灯塔笔记本，比只会做广告的 Moleskine 好多了，以后可以开坑聊一聊）把这些标记了的部分抄写下来。</p> 
<p>做读书笔记相当于是二次阅读，同时也会在写笔记的过程中产生一些奇思妙想。一般我用 △ 标记原文内容，然后把自己的想法用 ○ 标记区分开来。</p> 
<p>我的书评很多时候都是基于做笔记时产生的零星思考来写的。这样做虽然比较耗时间，大概我做笔记的时间跟阅读时间是 1 : 2 的样子，但是笔记有助于思考和记忆，我觉得虽然这个办法好像挺笨的，但是效果很不错，基本上可以比较好地把一本书消化掉。</p> 
<p>另外就是现在大家用键盘代替纸笔的时候太多了，很多时候都忘记怎么写字了，做笔记也可以当做是练笔吧。</p> 
<p><strong>Q5: 你在微信公众号说每周推荐一本好书，你怎么知道你读的就一定是好书呢？怎么评价一本书是不是好书呢？</strong></p> 
<p>枫影: 我并不知道我一定能读到好书。但是我读书有个习惯，如果不够吸引人的书，我看了个开头就会放下。<strong>这样可能放下的书里面可能会有一些好书，但是能够吸引人一直读下去的书一般都不会是烂书。</strong>所以这是一个比较简单粗暴的筛选办法：要吸引人。</p> 
<p>当然真正的好作品是能够让人放下了又拿起的。像《三体》和《月亮与六便士》都是看了好多遍开头没能看下去，最后还是把他们都看完了。</p> 
<p>至于如何评价一本书则是一个比较复杂的事。读书是很主观的事情，萝卜白菜各有所爱，A 说好的 B 不一定喜欢。但是在众人的评价之中，总会有一些相对客观的东西可以提取出来。比如作者的写作技巧，单以小说为例，经典的三幕剧加上冲突与悬念，就可以制造情节紧凑的故事来。不过写小说有如厨师煮饭，厨艺再好也要有新鲜高级的食材相辅，小说的故事构思就是这个食材。</p> 
<p>比如《死者代言人》这本书，有全然未知的猪仔外星人种族，有走向人生巅峰魅力爆表却被视为大魔王的安德，有星际旅行时间膨胀这样的工具，有藐视光速即时通讯的安塞波，等等这些原件都是极好的素材。</p> 
<p>这里提到的只是小说类的冰山一角，还有散文类的，还有诗歌类的，自我反省类的，社会学类的，心理学类的，实用类的，各种各样的书籍。这些书虽然种类繁多，但是总会有一些相对客观的东西，可以评价一本书的好坏。</p> 
<hr /> 
<p>有朋友说能坚持不容易，我却觉得凡是需要用到“坚持”这两个字的，一般都是很难做下去的。因为坚持意味着痛苦，而读书对我来其实不是痛苦，是乐趣。每天的地铁时间和午休时间，读书无疑令人非常非常期待的一件乐事。</p> 
<p>那么才能把“读书”变成乐趣呢？<strong>关注“枫言枫语∙每周读书”公众号，从每周的分享好书中得到读书的乐趣吧!</strong></p> 
<p>2015.12.20/下午</p> 
<p>于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #103  Marty Cagan &#x2014; &#x300A;&#x542F;&#x793A;&#x5F55;&#x300B;&#xFF08;&#x725B;&#x903C;&#x7684;&#x4EA7;&#x54C1;&#x7ECF;&#x7406;&#x662F;&#x600E;&#x6837;&#x7684;&#xFF09;</title>
        <link>https://justinyan.eth.limo/DB50DDC9-DACC-40D7-B91A-05CFFD0FB168/</link>
        <guid>https://justinyan.eth.limo/DB50DDC9-DACC-40D7-B91A-05CFFD0FB168/</guid>
        <pubDate>Thu, 17 Dec 2015 08:50:01 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="photo-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/12/qishilu.png" /></p> 
<p>“产品经理”在互联网行业是一个非常特殊也非常重要的职位，国内互联网巨头中又以腾讯的产品经理最为强势。作为一名互联网从业者，工作数年间我一直对产品设计很感兴趣，却从来没有真正明白产品经理的职责到底是什么，什么样的产品经理才算是牛逼的产品经理。由于产品经理这个角色需要和几乎所有其他不同岗位的同事打交道，目标与优先级的不同常常让产品经理与其他角色产生冲突。到底是什么原因导致的争议？因为产品经理都是SB 吗？我认为以BAT的招聘标准来说，能够通过层层面试进来的人都是非常聪明的人，那么问题到底出在哪里？</p> 
<p>2008 年来自美国硅谷的 Marty Cagan 写的一本书《Inspired:How To Create Products Customers Love》很好地回答了“牛逼的产品经理到底是怎样的”这个难题。Marty 的事业最早是从惠普实验室(HP Labs)开始的，后来他加入了网景公司（Netscape），后来随着公司被收购进入了 AOL，然后又去了 eBay，最后创办 SVPG 硅谷产品集团（Silicon Valley Product Group）。他的职业生涯基本都在与大公司打交道，Inspired 这本书的主要内容也是围绕在大公司中如何做好产品经理这个角色来讲。把 Marty 在书中所说映照到自己的工作中来，只觉作者字字珠玑，句句精辟。今年自己参与的项目遇到了不少问题，很多平时说不清道不明的事情到了作者书中豁然开朗。</p> 
<p>2011 年国内的“七印部落”以类似众包的形式募集译者，把这本书翻译成中文，题为《启示录》，书名来自圣经的一章。我个人觉得这本书确实有点像产品经理的圣经，因为书中所描述的“产品经理”是耶稣一般的存在，现实生活中没有人有办法做到他的要求。但是这不代表我们就可以给自己的问题找借口，反而以圣贤为镜，可以更清楚地看到团队的不足，可以使整个项目团队朝向更为高效，和谐，高产出的方向前进，从而做出真正受用户喜爱的产品。</p> 
<p>在我个人工作的几年时间里，合作过的产品经理各种各样，有挂着名字平时完全不管等到产品发布了就发个邮件邀功的老油条，有满腔热情但是毫无经验不知道怎么做产品的愣头青，有精于用户体验与设计以质量至上却忽视了项目进度的个人主义，但是更多的是中规中矩办事稳健却缺乏创意的螺钉。这些不同的人物各有优缺点，人无完人，我们应该做的是利用好优势，尽量改掉缺点。我觉得对于非产品职位或者对于刚刚入职产品一行不久的同学来说，Marty Cagan 的圣人标准很有明灯之用。就像作者在书中所形容的人们在大公司里的工作状态：</p> 
<blockquote>
 <p> 大部分人游荡在黑暗里，他们只知道抱怨，却从不想办法寻找电灯开关。 </p>
</blockquote> 
<p>从这个角度上说，这本书就是电灯开关的地图。由于产品经理职责繁杂，书中涉及的方面也很多，我个人比较感兴趣的有几个点：</p> 
<ol> 
 <li>创新不是发现新问题，而是用新方法解决已有的问题。</li> 
 <li>巴顿将军的忠告：永远不要告诉别人怎么做，告诉他们做什么，他们自然会发回天赋，给你惊喜。很多产品经理喜欢直接告诉开发这个东西应该怎么实现，或者告诉设计师这里应该用大红色之流。实际上分工的一个原因是为了高效，让每个角色能专注于自己的领域，另一方面也是发挥众家之长，即使你真会写代码会设计，你也不一定比开发更了解当前的软件架构，不一定比设计师更了解这个地方的风格与作用。</li> 
 <li>合作关系的前提是双方必须承认平等关系。如果产品经理以为自己高高在上，那将不会有开发愿意给他干活，反过来开发也不应该过分干预产品设计。</li> 
 <li>敏捷开发方法来自给企业做定制软件的日本公司，瀑布流也是。今天大家都喜欢谈敏捷，却没有几个人真的懂敏捷，我很讶异敏捷开发居然已经存在了三十多年，瀑布流还要再久一点。二者各有所长，却都不是为了解决今天的产品软件而出现的。虽然今天大家都声称反对瀑布流，但是事实上大部分人都在用瀑布流开发，因为瀑布流把软件开发可预测化，符合管理层的预期，只是不好意思承认还在用这个，于是换个名字，叫做持续改进，或者其他名字。无论采用什么方法都好，一个产品软件要保持活性就必须要持续地有版本滚动，所以项目管理无疑是至关重要的一环。产品经理本身的职责可能不包括项目管理，但是身为项目团队的一员，所有人都应该为项目的进度做考虑，否则产品经理本意是想要做好这个产品的，却反而可能成为产品的最大阻碍。</li> 
</ol> 
<p>读这本书的过程中不断映照自己手头的项目，大部分时候我都觉得作者讲得非常到位，中肯实在。作者在大公司呆过这么长时间，深谙大公司之病。身在大公司不一定代表是好事情，往往在大公司里面做事反而资源会更加匮乏。作者针对大公司病提出了许多有用的方法，令人点头称道。对于这样一部本应相见恨晚的作品，我却觉得恰逢时机，因为早几年我可能还在上学或者没什么工作经验，无法把作者的描述与自己的工作经验结合起来读，估计会是云里雾里不知所云。所以反而我更推荐有一定工作经验的同学来读这本书。无论是产品也好，开发也好，只要是做互联网产品的同学，都应该知道真正牛逼的产品经理是怎样的，至少在自己说某产品做得不好的时候要给出实在的理由，以理服人。</p> 
<p>15.12.17/夜<br /> 自居</p> 
<h2>References</h2> 
<ol> 
 <li><a href="http://www.amazon.cn/%E5%90%AF%E7%A4%BA%E5%BD%95-%E6%89%93%E9%80%A0%E7%94%A8%E6%88%B7%E5%96%9C%E7%88%B1%E7%9A%84%E4%BA%A7%E5%93%81-Marty-Cagan/dp/B004Y4QWMS/ref=sr_1_1?ie=UTF8&amp;qid=1450284615&amp;sr=8-1&amp;keywords=%E5%90%AF%E7%A4%BA%E5%BD%95">《启示录》亚马逊购买链接</a></li> 
 <li><a href="https://www.goodreads.com/book/show/3323374-inspired?from_search=true&amp;search_version=service">英文版 Inspired: How To Create Products Customers Love</a></li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x4E66;&#x5355;] &#x67AB;&#x8A00;&#x67AB;&#x8BED;&#xB7;&#x6BCF;&#x5468;&#x8BFB;&#x4E66; 2015 &#x5E74;&#x5EA6;&#x4E66;&#x5355;</title>
        <link>https://justinyan.eth.limo/B8FF24BE-9174-43F7-BAD5-3F1A524266F1/</link>
        <guid>https://justinyan.eth.limo/B8FF24BE-9174-43F7-BAD5-3F1A524266F1/</guid>
        <pubDate>Mon, 14 Dec 2015 09:24:53 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/2015-枫言枫语∙每周读书-M-900.png" alt="枫言枫语·每周读书 2015 年度书单" /></p> 
<p>年初“每周读书”同步到微信公众号，从 4 月开始基本上保持了每周一更的频率，至今已经介绍了 33 本书。当时在 71 期介绍的小说《The Martian》改编的电影《火星救援》最近也上映了，口碑非常不错。在电影院里看着 Watney 在荒无人烟的红色星球上艰难挣扎，还不忘搞笑，想起 2015 年就这样过去了，有些感慨。</p> 
<p>这一年里在“每周读书”介绍的书目必须满足两个要求：</p> 
<ol> 
 <li><strong>完整地读过的</strong>。</li> 
 <li><strong>质量不错值得推荐的</strong>。</li> 
</ol> 
<p>其实这一年里还读过几本不值得介绍的书，比如斯蒂芬金的烂作《手机》，以及科普类的《三百幅不可不知的世界名画》之流。我个人读书有个习惯，就是不好看的书看了个开头就放下了，所以基本上会在公众号里发出来的都是比较有看点的书。</p> 
<p>以下是“枫言枫语·每周读书” 2015 年介绍过的书里，按照分类做个简单的 Top 排行。</p> 
<h2>一、分类 Top</h2> 
<p><strong>小说类</strong> 科幻的《三体》和《死者代言人》都非常不错，推理类东野圭吾的《恶意》质量很高，阿加莎的小说第一次接触但是非常好读，不愧是推理小说的女王。日本战后文学的代表中，太宰治、三岛由纪夫的作品都相当深刻。当然还少不了今年大热的《火星救援》原作——《The Martian》，比起浓缩过的电影来说，小说里解释的东西要多得多。畅销书《岛上书店》讲述了一个很感人的故事，虽然有比较重的畅销书技巧的痕迹，但仍不失为感动读者的好书。</p> 
<ol> 
 <li><a href="http://justinyan.me/post/2016">每周读书#76 地球往事三部曲 刘慈欣——《三体》</a></li> 
 <li><a href="http://justinyan.me/post/2350">每周读书#94 Mario Puzo——《教父》</a></li> 
 <li><a href="http://justinyan.me/post/2443">每周读书#101 Orson Scott Card——《死者代言人》</a></li> 
 <li><a href="http://justinyan.me/post/2310">每周读书#90 东野圭吾——《恶意》</a></li> 
 <li><a href="http://justinyan.me/post/2360">每周读书#95 太宰治——《人间失格》</a></li> 
 <li><a href="http://justinyan.me/post/2063">每周读书#78 波罗神探 (阿加莎《悬崖山庄奇案》、《罗杰疑案》、《东方快车谋杀案》)</a></li> 
</ol> 
<p><strong>理论类</strong> 的书里面，《Being Mortal》（中译名《最好的告别》）以揪心的事例把如何面临衰老与死亡这个艰难的问题摆在读者面前，读来心情沉重，但是人生自古谁无死，无法避免死亡的情况下，怎样让自己能够有尊严地，开心地面对死亡才是最重要的课题。互联网业界的《增长黑客》把 Growth Hacking 这个概念介绍了一番，属于科普好书，Marty Cagan 2008 年写的《启示录》介绍了如何胜任产品经理这个职业技能要求很高却常常被人误解的职位，这么多年过去了，里面的核心内容仍然非常有价值。</p> 
<p>2014 年来自以色列的尤瓦尔·赫拉利的《人类简史》出了英文版，于是开始风靡全球，14 年底中译本出版，这是一本刷新三观，超然物外，处处上帝视角的书。</p> 
<ol> 
 <li><a href="http://justinyan.me/post/2393">每周读书#98 Atul Gawande——《Being Mortal》</a></li> 
 <li><a href="http://justinyan.me/post/2464">每周读书#102 用户增长黑科技——《增长黑客》</a></li> 
 <li><a href="http://justinyan.me/post/2476">每周读书#103 牛逼的产品经理是怎样的——《启示录》</a></li> 
 <li><a href="http://justinyan.me/post/2157">每周读书#82 尤瓦尔·赫拉利——《人类简史》</a></li> 
</ol> 
<p><strong>文学类</strong> 中，《中国文学史》可以帮助读者整理本来就纷繁复杂的中国文学故事，文学体裁，以及发展的轨迹，虽然成书较早，但是对于中国古代的文学史点评到位，令人茅塞顿开。“创意写作书系”里James Scott Bell 的《冲突与悬念》讲述了畅销小说的写作技巧，将之映照于大部分畅销小说之上，发现的确如此，有助于读者对小说的优劣作出品评。诗歌类中余秀华的诗集因其朴素的乡村气息以及真实的个人情感，超然于虚伪浮夸的现代诗坛之外，只可惜外界大部分人对余秀华的传闻只限于对《穿过大半个中国去睡你》的揶揄与围观。海子由于卧轨而成名于那个特殊的时代，大多数人知道海子却源于对《面朝大海，春暖花开》的误解读。《海子诗全集》并不都是好诗，比如海子一直在坚持写作的《太阳》史诗，读起来就很不以为然，但是海子的短诗却是才华横溢的，读来颇感振奋。</p> 
<ol> 
 <li><a href="http://justinyan.me/post/2220">每周读书#85 郑振铎——《中国文学史》</a></li> 
 <li><a href="http://justinyan.me/post/2114">每周读书#80 James Scott Bell——《冲突与悬念》</a></li> 
 <li><a href="http://justinyan.me/post/2147">每周读书#81 莎士比亚——“四大悲剧”</a></li> 
 <li><a href="http://justinyan.me/post/1957">每周读书#73 摇摇晃晃的人间 余秀华——《摇摇晃晃的人间》</a></li> 
 <li><a href="http://justinyan.me/post/2199">每周读书#84 太阳诗人海子 （《海子诗全集》——西川编）</a></li> 
</ol> 
<h2>二、完整书单（按时间排序）</h2> 
<ol> 
 <li><a href="http://justinyan.me/post/2464">每周读书#102 用户增长黑科技——《增长黑客》</a></li> 
 <li><a href="http://justinyan.me/post/2443">每周读书#101 先有续作再有原作——《死者代言人》</a></li> 
 <li><a href="http://justinyan.me/post/2408">每周读书#100 封面设计师的阅读之道——《当我们阅读时我们看见了什么》</a></li> 
 <li><a href="http://justinyan.me/post/2397">每周读书#99 Orson Scott Card——《安德的游戏》</a></li> 
 <li><a href="http://justinyan.me/post/2393">每周读书#98 Atul Gawande——《Being Mortal》</a></li> 
 <li><a href="http://justinyan.me/post/2387">每周读书#97 蒋勋说文学：从诗经到陶渊明</a></li> 
 <li><a href="http://justinyan.me/post/2368">每周读书#96 蒋勋——《吴哥之美》</a></li> 
 <li><a href="http://justinyan.me/post/2360">每周读书#95 太宰治——《人间失格》</a></li> 
 <li><a href="http://justinyan.me/post/2350">每周读书#94 Mario Puzo——《教父》</a></li> 
 <li><a href="http://justinyan.me/post/2341">每周读书#93 Christina Baker Kline——《孤儿列车》</a></li> 
 <li><a href="http://justinyan.me/post/2335">每周读书#92 Daniel Keyes——《24个比利》</a></li> 
 <li><a href="http://justinyan.me/post/2326">每周读书#91 伍绮诗——《无声告白》</a></li> 
 <li><a href="http://justinyan.me/post/2310">每周读书#90 东野圭吾——《恶意》</a></li> 
 <li><a href="http://justinyan.me/post/2304">每周读书#89 东野圭吾——《虚无的十字架》</a></li> 
 <li><a href="http://justinyan.me/post/2249">每周读书#88 奥托·魏宁格 —— 《性与性格》</a></li> 
 <li><a href="http://justinyan.me/post/2245">每周读书#87 陈坤——《突然就走到了西藏》</a></li> 
 <li><a href="http://justinyan.me/post/2234">每周读书#86 Gabrielle Zevin ——《岛上书店》</a></li> 
 <li><a href="http://justinyan.me/post/2220">每周读书#85 郑振铎——《中国文学史》</a></li> 
 <li><a href="http://justinyan.me/post/2199">每周读书#84 太阳诗人海子 （《海子诗全集》——西川编）</a></li> 
 <li><a href="http://justinyan.me/post/2168">每周读书#83 为你读诗 第一辑</a></li> 
 <li><a href="http://justinyan.me/post/2157">每周读书#82 尤瓦尔·赫拉利——《人类简史》</a></li> 
 <li><a href="http://justinyan.me/post/2147">每周读书#81 莎士比亚——“四大悲剧”</a></li> 
 <li><a href="http://justinyan.me/post/2114">每周读书#80 James Scott Bell——《冲突与悬念》</a></li> 
 <li><a href="http://justinyan.me/post/2108">每周读书#79 秦淮世家 （每周读书 七十九 张恨水——《秦淮世家》）</a></li> 
 <li><a href="http://justinyan.me/post/2063">每周读书#78 波罗神探 (阿加莎《悬崖山庄奇案》、《罗杰疑案》、《东方快车谋杀案》)</a></li> 
 <li><a href="http://justinyan.me/post/2040">每周读书#77 絮絮叨叨雨泠泠 张爱玲——《小团圆》</a></li> 
 <li><a href="http://justinyan.me/post/2016">每周读书#76 地球往事三部曲 刘慈欣——《三体》</a></li> 
 <li><a href="http://justinyan.me/post/1998">每周读书#75 诗意的自白 三岛由纪夫——《假面的告白》</a></li> 
 <li><a href="http://justinyan.me/post/1985">每周读书#74 优雅的小品 三岛由纪夫——《纯白之夜》</a></li> 
 <li><a href="http://justinyan.me/post/1957">每周读书#73 摇摇晃晃的人间 余秀华——《摇摇晃晃的人间》</a></li> 
 <li><a href="http://justinyan.me/post/1943">每周读书#72 三岛由纪夫——《金阁寺》</a></li> 
 <li><a href="http://justinyan.me/post/1933">每周读书#71 火星救援 Andy Weir——《The Martian》</a></li> 
 <li><a href="http://justinyan.me/post/1907">每周读书#70 周浩晖——《死亡通知单》系列</a></li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #102 &#x8303;&#x51B0; &#x2014; &#x300A;&#x589E;&#x957F;&#x9ED1;&#x5BA2;&#x300B;</title>
        <link>https://justinyan.eth.limo/1F7CFA5E-50D0-4E7B-88D7-940C2C47D719/</link>
        <guid>https://justinyan.eth.limo/1F7CFA5E-50D0-4E7B-88D7-940C2C47D719/</guid>
        <pubDate>Wed, 09 Dec 2015 14:23:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/12/zzhk-blog.jpg" alt="增长黑客" /></p> 
<p>增长黑客一词是 Growth Hackers 的中译名，指的是做 Growth Hacking 的人。Growth Hacking 主要是指创业团队通过数据分析，利用社交网络，创造性地设想出各种营销手段从而让名不见经传的小产品迅速成长为明星产品的过程。所以 Growth 是用户增长，Hacking 则有点黑科技的意思。可能非 IT 业界的读者一直以为黑客 Hacker 是一个贬义词，其实黑客是比较中性的，主要指技术特别牛逼的 geek，把技术用在不好的地方并不是黑客本来的含义（Steven Levy 的《Hackers》一书就讲述了黑客的来由）。所以总的来说，Growth Hacking 可以理解为<strong>用黑科技以低成本的方式获得超级快的用户增长</strong>。</p> 
<p>其实 Growth Hacking 这个词早在几年前就已经在硅谷流行起来了，Growth Hackers Conference 也举办过好几届了，<a href="http://growthhackersconference.com/">下一届将在旧金山湾区举办</a>。但是说来惭愧，枫影还是最近才在<a href="https://ipn.li/itgonglun/">IT 公论</a>的播客上听到这个词，于是赶紧买了本《增长黑客》压压惊。</p> 
<p>整本书看下来给我感觉就三个字：<strong>故事会</strong>。</p> 
<p>作者范冰 <a href="https://twitter.com/XDash">@XDash</a> 曾经是 WiFi 万能钥匙的产品经理，写过代码做过运营，各方面涉猎挺广，积累了不少互联网的故事，于是作者在这本书里面堆砌了大量的案例，从国外的 Hotmail, Twitter, Airbnb, 到国内的QQ，微信，美图秀秀，唱吧等应用，这里有许多非常有趣的故事，令人深受启发。</p> 
<p>总体来说这本书的发散很好，案例真实可靠，但是理论沉淀不足，可以说是一本不错的故事会，但不要指望书里能给你什么方法论。这方面 Marty Cagan 的《Inspired: How To Create Products Customers Love》（中文版由七印部落翻译为：启示录）这本书要沉稳得多。一本纯理论的书会让读者打瞌睡，所以作者都会用实例来帮助论证自己的观点，即使是《自私的基因》这样类似学术论文的书，也会使用大量的模型以讲故事的方式对自己的观点进行论证，所以简单地说，讲故事是保证理论能够更容易地被读者接受的一种手段。从这个角度上讲，《增长黑客》这本书还是很有趣的。</p> 
<p>近几年美国硅谷也好，国内中关村也好，互联网创业热不亚于当年旧金山淘金热。大量的创业小公司如雨后春笋般出现，每一个创业公司都打着“改变世界”的旗号在勇往直前。但是创业公司资源少是一个短板，人力也好经验也好金钱也好，都无法和拥有海量用户的巨头相提并论。于是如何顶着创业失败率高达四分之三的压力，以四两拨千斤，用最低的成本获取最迅速的用户成长就成了创业团队最为关切的问题。毕竟对那个经典的问题“你做的这个东西如果腾讯做了你咋办？”只有一个答案：天下武功，唯快不破。创业团队的优势就是快，只有利用好这一优势，在大公司进入新领域之前先把市场占了，才能获得一线生机。于是这种人人创业的热潮直接催生了行业对增长黑客的需求。</p> 
<p>增长黑客涉及开发、设计、产品以及市场运营，简直就像万金油，而万金油一般都不太受待见。于是 Andy Johns, 这位曾带领 Facebook, Twitter, Quora 等大公司增长黑客团队的领袖人物，通过数据分析，改善用户体验细节，提出各种颇具创意的想法，从而帮助这些公司获得瞩目的成绩。他的成功让业界看到增长黑客不是海市蜃楼，不是挂羊头卖狗肉，真正的增长黑客是可以帮助公司获得显著的用户增长的。</p> 
<p>但是这个行业还比较新，还没有人能够发展出系统的理论来。《增长黑客》这本中文书的出现在一个很好的时机——一个人人创业的时代，作者在书前的推荐序里面也贯彻了自己书中提到的理论：如果先渗透到那些具有社交影响力的人群当中，我们就能以此为基础向其他人扩散开来。于是作者在推荐序里面罗列了一大堆互联网大小V 的简评。推荐序这种东西大家都知道很水，很多人其实没看过书也会应邀写上一两句，虽然在部分读者看来这种做法有点滑稽，但是不可否认的是，这种营销手段是有效的——至少这本书在 z.cn 的排名不低。</p> 
<p>要知道营销的对象不是互联网的从业人员这种小众群体，而是绝大部分会买单的普通人。有一句不雅的话叫“得屌丝者得天下”，我还能记得数年前因为 @Fenng 的一句话就跑去买凯文凯利的《失控》用来装逼，事实上我并没能看完这本书，也并不觉得这本书真的有趣到可以让我读完它。所以我个人的读书习惯是上来就读正文，跳过序和前言，读完全书才回过头来，看看这些水分里面能否发现些干货。</p> 
<p>这本书的推荐序里没什么干货，但是书中的案例都是颇具启发的故事。所以对渴望获得用户增长的团队也好，个人开发这也好，甚至只是想了解互联网公司八卦的人也好，这本书都算值得一读的了。</p> 
<p>15.12.09/中午<br /> 于 T.i.T</p> 
<h2>相关链接</h2> 
<ol> 
 <li><a href="http://www.amazon.cn/%E5%A2%9E%E9%95%BF%E9%BB%91%E5%AE%A2-%E5%88%9B%E4%B8%9A%E5%85%AC%E5%8F%B8%E7%9A%84%E7%94%A8%E6%88%B7%E4%B8%8E%E6%94%B6%E5%85%A5%E5%A2%9E%E9%95%BF%E7%A7%98%E7%B1%8D-%E8%8C%83%E5%86%B0/dp/B011BHQSV0/ref=sr_1_1?ie=UTF8&amp;qid=1449641242&amp;sr=8-1&amp;keywords=%E5%A2%9E%E9%95%BF%E9%BB%91%E5%AE%A2">《增长黑客》z.cn 链接</a></li> 
 <li><a href="http://growthhackersconference.com/">Growth Hackers Conference 官网</a></li> 
 <li><a href="https://ipn.li/itgonglun/">IT 公论 Podcast</a></li> 
 <li><a href="https://twitter.com/XDash">《增长黑客》作者范冰 @XDash</a></li> 
 <li><a href="https://www.goodreads.com/book/show/3323374-inspired">Marty Cagan 的《Inspired: How To Create Products Customers Love》</a></li> 
 <li><a href="http://book.douban.com/subject/5914587/">中文版本《启示录》</a></li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #101 Orson Scott Card - &#x300A;&#x6B7B;&#x8005;&#x4EE3;&#x8A00;&#x4EBA;&#x300B;</title>
        <link>https://justinyan.eth.limo/42BB2D9B-2FD4-4F1E-892E-FFC23135555C/</link>
        <guid>https://justinyan.eth.limo/42BB2D9B-2FD4-4F1E-892E-FFC23135555C/</guid>
        <pubDate>Thu, 03 Dec 2015 13:02:25 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2015/12/sizhedaiyanren-blog.jpg" alt="死者代言人" /></p> 
<p>1905 年爱因斯坦提出狭义相对论之后无疑给科幻小说世界带来一大福音，从相对性原理和光速不变原理我们可以得出<strong>移动速度越快的物体，它所过的时间越慢</strong>这个颠覆性的结论。这个原理给科幻小说带来许多幻想空间，诞生了许多不错的作品。今天我们要介绍的是 1987 年包揽了科幻文学两大最高奖项的作品——《死者代言人》，这部作品就巧妙地利用了相对论的“时间膨胀”原理。</p> 
<h2>时空旅行</h2> 
<p>有些读者可能以为相对论还只是处于理论研究阶段，事实上我们的 GPS 卫星由于绕地飞行的速度很快，每天都需要做一次时间校正，这就是现实中相对论应用的例子。但是这种差距还比较小，如果我们的宇宙飞船航行速度快到可以接近光速，当我们坐在飞船上去宇宙旅行的时候，可能只是出去玩了一天，回到家自己的兄弟姐妹都已经变成老人家了。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2015/11/shuailao.jpeg" alt="Time Travel" /></p> 
<p>这种有趣而新颖的体验会给我们人类社会带来什么样的冲击是非常有趣的事情，于是Orson Scott Card，《安德的游戏》的作者，就以这种方式把虫族终结者安德 (Ender) 带到三千年之后，扔进了续作《死者代言人》(Speaker for the Dead)一书中。</p> 
<h2>先有续作，再有原作</h2> 
<p>在<a href="http://justinyan.me/post/2397">第 99 期的每周读书</a>中我们曾介绍过，作者先是想写《死者代言人》，然后顺便把《安德的游戏》给写了的。其实这个说法并不严密，早在 1977 年，作者就已经写了<a href="http://www.hatrack.com/osc/stories/enders-game.shtml">短篇版的《安德的游戏》</a>，故事从安德在战斗学校组成飞龙战队开始，一直到虫族战争结束。这个短篇故事非常完整，没有姐姐华伦帝，没有哥哥彼得，也没有战争结束后的事情，情节紧凑，故事悬念丛生，一路推到最终幕，非常流畅，是一篇不错的作品。</p> 
<p>后来作者从葬礼获得了灵感，觉得大家对逝者的致辞都是自己的伪饰，逝者已矣，大家只是单纯地想把他幻化为更容易被世人接受的形象罢了。于是作者觉得应当写一部真正给死者代言的书，哪怕真相惊天动地，也要一字不差地说出来。</p> 
<p>这时作者的一个朋友问他为什么不写一个安德的续集，于是作者就开始构思怎么才能把安德带到这本书里去。就在作者写完提纲准备开始《死者代言人》的创作的时候，他忽然发现开头根本写不下去。因为安德不会莫名其妙突然就变成死者代言人，要解释这一段故事就必须写一个超级长的开头。于是作者灵机一动：不如把《安德的游戏》从短篇扩充成长篇吧！</p> 
<h2>科幻小说就应该是幻想的天堂</h2> 
<p>把短篇小说扩充成长篇这件事情，很好地解答了我们在 <a href="http://justinyan.me/post/2397">99 期</a>中遇到的几个疑问：一是小说开头进展缓慢有些无趣：这是由于短篇版没有这段开头，为了解释安德为什么要去战斗学校以及三兄妹的羁绊，才补充了个超级长的开头；二是华伦帝和彼得这两兄妹联手比正品的主角还要厉害，但是作者又非常吝惜笔墨：这当然是因为这两个人本来就不存在，存在的意义只是为了解释安德为什么要到另一个星球去。因为地球有彼得安德不想去，刚好华伦帝想去虫族星球于是安德就顺理成章一起去了。三则是结局冗长，其实虫族战争结束后小说应该就可以结束了：短篇里是在虫族战争后就结束了的，但是为了解释续集，才有了超级长的结局，唉。</p> 
<p>当然这部《安德的游戏》也拿下了雨果奖和星云奖，不过基于上期我们说的，我觉得事实上这部扩充后的前传水平一般，反而短篇版本非常不错。</p> 
<p>尽管作者很努力想要把《死者代言人》这部续作写成一部独立的小说，读者们即使没看过前作也能够理解、沉入故事体验，但是我个人认为如果没有前作的铺垫，安德的形象会相对薄弱一点，说服力可能就没那么强。</p> 
<p>不过即便如此，这部续作也是比前作好得多的作品，是一部真正担得起雨果奖与星云奖的作品。在前作中，安德只是一个处处受限的小孩，完全没法发挥最高统帅的能力，所以人物魅力就打了个折扣。另外前作的场景却主要集中在战斗学校狭窄的室内，对于一部科幻小说，宇宙空间的广袤对故事场景的帮辅作用巨大，这点上基本无用了。最后是科幻小说中时间的变化，《三体》是通过冬眠这一手段来穿越时间，在《安德的游戏中》则是让上一次打赢虫族的人类最高统帅马泽坐在光速飞船里，利用相对论来实现穿越时空。然而也只是提了一下而已，有点小气。</p> 
<p>直到《死者代言人》中，作者终于得以把以上三点发挥得淋漓尽致。在打赢虫族战争之后安德已经是全世界人类的最高统帅，他享有的权力是无人能及的，经过多年的光速旅行之后，时间已经过去了三千年，而安德也已经三十多岁。这时候，天才步入中年，多了隐忍与稳重。虫族战争是人类世界的重大事件，安德由此蜚声四海，成为一代大魔王。再加上安塞波网络中诞生的“人工智能”——简的辅助，安德已经是三千年后的超人，人格魅力达到顶峰，与当年的小屁孩已不可同日而语。</p> 
<p>光是这个人物设定就已经令人兴奋，而三千年后的人类，足迹已经踏入宇宙，除了虫族、人工智能简之外，还有另一个外星异族——猪仔(Pigges)也站上了舞台。猪仔是一个幻想的新种族，他们的语言是怎样的，社会结构是怎样的，人类与猪仔的相互影响是怎样的，这里面充满了无限可能，作者很机智地选择了外星人类学家的视角，一点一滴的探索都是令人惊喜的发现。</p> 
<p>本作中有频繁的时空旅行，有藐视光速的即时通讯手段安塞波（ansible），人生巅峰的主角安德，有未知的落后外星种族猪仔，所有的高级素材已经齐备，就看作者如何下笔了。</p> 
<h2>成熟的写作技巧</h2> 
<p>《死者代言人》的悬念设计不再像前作一样简单直白有如少年漫画，而是含蓄了隐约，在故事的推进过程中埋下盲点，像推理小说，撩动读者的心弦却迟迟不揭露真相，吊足读者胃口。</p> 
<p>由于有了时间旅行这一利器，作者可以轻易操纵几十年的人生，用于铺垫一个悲剧，一个真相，一个死者一辈子不曾道出的故事。这本书的英文名是 Speaker for the Dead，所以本作的主要目的是解开死者的谜团，不是群众想象的美好，也不是当事人刻意的谎言。为了解开这个真相，需要有一个于世独立的第三者来挥下利剑。</p> 
<p>于是作者在故事一开始就在猪仔的星球上安排了一场谋杀，死者是研究猪仔的外星人类学家皮波。这场冲突直接把人类与外星文明直接对立起来，把死者代言人安德推入这场混乱之中。</p> 
<p>由于时间旅行的特性，作者有足够的时间来安排安德旅行期间猪仔星球上故事的变化，尽管人类社会最终判定猪仔这个落后文明不是蓄意谋杀皮波，但是人类与猪仔之间毕竟留下了裂缝。在安德赶往这个地方期间，事态有了很不一样的变化。这些变化出人意料，又在情理之中，给安德留下了许多难解的问题。</p> 
<p>我觉得安德到了这个地方之后就像柯南一样，一点一点地用侦探之眼解开故事的迷云。这点上，较之前作只是蒙着头往前冲杀，安德要成熟了许多。在《死者代言人》一作中，行事特立的安德更容易吸引读者的喜爱，古板腐化的教会与政府更容易令读者产生对立心态，二者的冲突就是读者内心的冲突，人类与猪仔的复杂情感就是读者内心的复杂情感，达到这样的阅读体验很不容易，但能够做到的通常都是好作品。</p> 
<h2>最后</h2> 
<p>小说之所以能令人沉浸其中是因为他基于我们的现实社会，却充满幻想的体验，我们可以代入到角色当中，去感受我们平时可望而不可及的事情。随着安德做星际穿越，以安德视角去看待外星文明，站在安德身边与僵化的政府怒目横对，我们的内心充满了各种渴望，各种梦想。</p> 
<p>现实是局限的，现实是孤独而平凡的。我们有一颗不甘于平凡的心，却身处于这个平凡的世界。所以我们阅读，我们在阅读中体验到灿烂的幻想与精彩。科幻小说是基于科学的幻想，也是我们基于现实的梦。</p> 
<p>15.11.28/下午<br /> 于自宅</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #100 Peter Mendelsund &#x2014; &#x300A;&#x5F53;&#x6211;&#x4EEC;&#x9605;&#x8BFB;&#x65F6;&#x6211;&#x4EEC;&#x770B;&#x89C1;&#x4E86;&#x4EC0;&#x4E48;&#x300B;</title>
        <link>https://justinyan.eth.limo/46AF2861-EB7C-449E-BD91-8DECD7335894/</link>
        <guid>https://justinyan.eth.limo/46AF2861-EB7C-449E-BD91-8DECD7335894/</guid>
        <pubDate>Thu, 26 Nov 2015 15:04:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2015/11/85bf0a0c2cb3cbb03dd5f4725e80195d_1440w.jpg" alt="" /></p> 
<p>为什么基于原著改编的电影电视剧总是无法满足书迷读者？为什么看习惯了漫画之后第一次看到动画觉得配音演员的声线好奇怪？当我们阅读小说的时候，我们倾慕于小龙女的清丽脱俗，我们沉湎于黄蓉的古怪精灵，我们惊叹于洛神的柔情绰态，然而我们真的看清了这些倾城美女的容颜了吗？</p> 
<p><img decoding="async" class="photo-frame" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/Karenina-Mendelsund1.jpg" alt="Karenina" /></p> 
<p>来自美国 Alfred A. Knopf 出版社的艺术副总监 Peter Mendelsund 通过 What We See When We Read 一书回答了这一问题。Mendelsund 是一名书籍封面设计师，这部作品的装帧也同样出自其手，在我看来，这本设计多于文字内容的书之所以能在豆瓣拿下 8.1 的高分，在 Good Reads 拿下四星，一部分是出于其设计多于内容的独特，另一部分则是 Mendelsund 的个人魅力所致。</p> 
<p><img decoding="async" class="photo-frame" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/peter-mendelsund.jpg" alt="Peter Mendelsund" /></p> 
<p>Mendelsund 并不是科班出身的设计师，他原是一名钢琴演奏家，日子过得并不宽裕。后来他因缘际会找到企鹅出版社的封面设计师 Chip Kidd，带着自己设计的音乐专辑封面。没想到 Chip Kidd 很欣赏 Mendelsund，于是他就忽然从一个音乐家转行成为设计师了。他擅长于使用简单的文字、几何图形、明丽的色块来做封面设计，这种独特的风格也给书籍装帧带来一股清丽之风。</p> 
<p><img decoding="async" class="photo-frame" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/style.jpg" alt="简洁的风格" /></p> 
<p>至今 Mendelsund 已经为许多书籍做过封面设计，我们可以在 <a href="http://covers.petermendelsund.com/">http://covers.petermendelsund.com/</a> 这里找到他的设计，里面甚至有余华的 China in Ten Words。</p> 
<p><img decoding="async" class="photo-frame" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/ChinaInTenWords-blog.jpg" alt="China in Ten Words" /></p> 
<p>Mendelsund 有一个非常重要的原则：<strong>封面设计要忠于文字</strong>。Mendelsund 喜欢阅读，他会阅读每一本将由他设计封面的书籍，从中找出具有代表性的，能够视觉化表达的东西，然后融入他的涉及。</p> 
<blockquote>
 <p> Reading with a mind to designing a jacket is very different from just reading. When I’m reading for work, I’m looking for something described in the book that will be reproducible visually and that will serve as an emblem for the entire book—a character, or an object, or a scene, or a setting. That’s not the way one reads when one is simply immersed in a book. </p>
</blockquote> 
<p>于是他在积累设计经验的同时，也阅读了大量的作品。2014 年 Mendelsund 出版了两本书，一本是关于书籍装帧设计的 Covers，另一本就是关于阅读的 What We See When We Read。前者谈设计，后者谈阅读。二者其实有相互印证之处，比如作者喜欢用的抽象图形，为什么不使用真实的人物照片来作为封面设计呢？我记得我第一次看到《孤儿列车》的封面时，我一方面为靠着火车窗的小女孩忧伤的眼神为感染，一方面又为封面把人物的形象过于具体地展现在我面前而感到不舒服。作者认为，我们在阅读的过程中虽然自认为能够认清人物的形象，但是事实上都无法清楚地描绘出人物的体貌，你能够记得人物的性格，人物的动作，以及事件，但是不管小龙女也好黄蓉也好，在你的脑海里她们都是模糊的。而这一点，正是阅读的精彩之处，是阅读提供给读者自由想象的空间，那些以人物照片为封面的设计，反而剥夺了读者想象的权利。</p> 
<p>由于阅读的不确定性，作者在给本书设计封面的时候，也采用了简单的文字搭配钥匙孔的图案，仿佛要往钥匙孔中窥视什么。在书中，作者试图以一种新颖的手法，用插画的视觉呈现来表达文字本身无法明确的事情，很有意思。</p> 
<p><img decoding="async" class="photo-frame" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/neiye.jpg" alt="内页" /></p> 
<p>但是作者是一个优秀的设计师不代表就一定是个优秀的作家，老实说这本书的文字部分有点无聊，有点啰嗦，所以单就内容来说，这本书比较一般，但是设计给这本书加分不少，可以说这本书的重点在设计，而不在内容。</p> 
<p>2015.11.21/下午<br /> 于自宅</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6DF1;&#x5165;&#x7406;&#x89E3; GCD (Grand Central Dispatch) &#x7B2C;&#x4E00;&#x90E8;&#x5206;</title>
        <link>https://justinyan.eth.limo/0FA122D9-76C4-4AB4-936F-08DEC7B75989/</link>
        <guid>https://justinyan.eth.limo/0FA122D9-76C4-4AB4-936F-08DEC7B75989/</guid>
        <pubDate>Mon, 23 Nov 2015 11:19:57 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>本文译自：<a href="http://www.raywenderlich.com/79149/grand-central-dispatch-tutorial-swift-part-1">http://www.raywenderlich.com/79149/grand-central-dispatch-tutorial-swift-part-1</a>。Github 上有一篇此文 Objective-C 版本的翻译，看完没有什么印象，所以干脆把 Swift 版本的翻译一遍。</em></p> 
<p>尽管 Grand Central Dispatch（或简称 GCD）已经出来好一阵子了，但还是有些开发者没能完全理解 GCD 的原理。这也是可以理解的，并发本来就是开发中比较难懂的部分，GCD 的 API 看起来就像锋利的尖角扎入 Swift 平滑的世界中。</p> 
<p>本文将分为两部分，深入浅出地讲解 GCD。第一部分会讲解 GCD 能用来做什么，包括一些基础的用法。第二部分会讲解更多 GCD 的高级用法。</p> 
<h2>一、这就开始吧</h2> 
<p>GCD 是 libdispatch 的别称，是 Apple 提供的用于在多核 iOS/OS X 机器上执行并发代码的库。GCD 将带来几个好处：</p> 
<ul> 
 <li>通过把需要大量计算的耗时任务放到后台线程运行，让你的应用获得更流畅的体验。</li> 
 <li>GCD 提供了一个比直接用锁和多线程简单的并发模型，可以帮助减少并发代码中的 bug。</li> 
</ul> 
<p>在了解 GCD 之前，你需要确保完全理解多线程和并发相关的几个概念。这些概念可能比较模糊或者区别不大，容易搞混，所以请花点时间复习一下这几个概念。</p> 
<h3>串行（Serial） vs. 并行（Concurrent）</h3> 
<p>这两个词描述的是任务执行时彼此间的关系。串行执行的任务，每次只有一个任务在执行。并发执行的任务则有可能同时执行多个任务。</p> 
<h3>任务（Tasks）</h3> 
<p>在本文中你可以把一个任务当作是一个闭包（Closure）。不过实际上在 GCD 里你是可以用函数指针来执行任务的，不过大多数情况下要麻烦的多。直接用闭包就简单多了！</p> 
<p>不清楚 Swift 中的闭包是什么？闭包是是指自给的，可以被调用、存储和传递的代码块（Closures are self-contained, callable blocks of code that can be stored and passed around. ）。当一个闭包被调用的时候，它们看上去就是个普通的函数，可以传参数进去，也可以有返回值。另外，闭包作用域外的变量如果被闭包使用到了，就会被闭包“捕获”——就是说在闭包内可以看到外部变量并记住外部变量的值。</p> 
<p>Swift 的闭包跟 Objective-C 的 block 很像，并且两者是可以互相转换的。唯一的限制就是，ObjC 代码不能使用 Swift 闭包中暴露的 Swift-Only 的特性，比如元组（Tuple）。但是在 Swift 中使用 ObjC 的 block 是没有任何限制的，所以你在本文中看到 ObjC 的 block 的时候，你可以完全可以直接替换成 Swift 闭包。</p> 
<h3>同步（Synchronous） vs 异步（Asynchronous）</h3> 
<p>这两个概念描述的是一个函数何时会把控制权返回（Return）给调用者，当交还的时候，有多少工作已经完成了。</p> 
<p>一个<em>同步函数</em>会在它执行的任务完成之后返回。</p> 
<p>一个<em>异步函数</em>则不会一直等到任务完成，而是立刻返回，同时执行任务直到结束。因此，异步函数不会阻塞当前线程。</p> 
<p>请留意，当你看到同步函数会“阻塞” block 当前线程的时候，请不要和名词 block 混淆。（译者注：中文无此问题，这里省略 100 字…）。</p> 
<h3>临界区（Critical Section）</h3> 
<p>临界区值得是不能被并发执行的代码块，也即不能被两个及以上的线程同时访问。这通常是因为这段代码访问了一份共享资源，而且这个资源在被访问的过程中不能中断。</p> 
<h3>竞争条件（Race Condition）</h3> 
<p>当软件系统的行为依赖于无法控制的事件的执行顺序时（比如程序并发任务的的执行顺序），我们称这种情况为竞争条件。竞争条件会产生无法预测的结果，通常代码走查也没法发现明显的问题。</p> 
<h3>死锁（Deadlock）</h3> 
<p>如果两个（有时候多个）线程都在等着对方完成任务才能执行自己的任务时，这种情况我们成为死锁。第一个线程要等到第二个线程执行完才能执行，而第二个线程则在等着第一个线程，所以两个都永远无法执行。</p> 
<h3>线程安全（Thread Safe）</h3> 
<p>线程安全的代码可以被多个线程或者并发任务安全地调用而不会引发任何问题（比如数据损坏，崩溃之类的问题）。没有线程安全的代码同一时间内只能被在一个上下文中运行。举一个线程安全的例子：</p> 
<div>
  [sourcecode language="swift"]
 <br /> let a = ["thread-safe"];
 <br /> [/sourcecode] 
</div> 
<p>这个数组是只读的，所以你可以在多个线程中同时使用而不会有任何问题。相反的，如果你声明一个可变数组：</p> 
<div>
  [sourcecode language="swift"]
 <br /> var a = ["thread-unsafe"];
 <br /> [/sourcecode] 
</div> 
<p>则这个数组就不是线程安全的，它可以同时被多个线程访问和修改，造成不可预知的后果。可变的变量和数据结构在同一时间只能被一个线程访问。</p> 
<h3>上下文切换（Context Switch）</h3> 
<p>一次上下文切换是指在一个单核处理器中，保存和恢复不同线程的执行状态的过程。在编写多任务应用的时候，这个切换是很常见的，但是这种切换也会带来额外的开销。</p> 
<h2>二、并发（Concurrency）vs 并行（Parallelism）</h2> 
<p>并发和并行经常一起被提及，所以简单解释一下这两者的区别还是很有必要的。</p> 
<p>独立的并发代码块是可以被“同时”执行的，但是如何实现“同时”却是由系统决定的——甚至根本就不是“同时”执行也是有可能的。</p> 
<p>在多核设备上，多线程可以在多个 CPU 上并行执行；单核设备为了实现并发，就得先运行一个线程，然后做上下文切换（Context Switch），从而实现线程和进程切换。这种切换一般进行得非常快，让用户感觉像是同时在运行多个线程一样。详见下图：</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/Concurrency_vs_Parallelism.png" alt="Concurrency_vs_Parallelism" /></p> 
<p>所以，虽然你可以使用 GCD 的接口来编写并发代码，但是 GCD 才是真正决定是否使用并行实现的人。<strong>并行要求并发，但是并发并不一定能够保证并行。</strong></p> 
<p>更深一层地说，并发设计其实是结构的设计。如果你带着 GCD 的思维去编写代码，你就得小心地设计代码的结构，暴露的接口要考虑可以同时执行和不可以同时执行的代码。如果你想更深入地探究这个课题，你可以参考 Vimeo 上 <a href="http://vimeo.com/49718712">Rob Pike 的这个演讲</a>。</p> 
<h2>三、队列（Queues）</h2> 
<p>GCD 提供了多个 dispatch queue (分发队列，由于这里跟代码同名，直接使用英文更容易理解，下文遇到此名词都使用英文) 来处理提交的任务；这些队列负责管理使用 GCD 接口提交的任务，并以先入先出（FIFO）的顺序执行。这就保证了最早加入队列的任务会第一个被执行，第二个添加的则第二个被执行，以此类推。</p> 
<p>每一个 dispatch queue 都是线程安全的，也就是说你可以同时在多个线程操作同一个队列。当你理解 dispatch queue 是如何给你自己的代码提供线程安全的时候，GCD 的好处就显而易见了。这里线程安全的关键在于选择正确类型的 dispatch queue，以及分发函数（dispatching function）。</p> 
<h2>四、串行队列（Serial Queues）</h2> 
<p>串行队列中的任务每次执行一个，只有等上一个任务执行完了才会开始执行下一个。而且，你并不知道两个任务结束与开始之间的间隔时间你是不知道的，如下图所示：</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/Serial-Queue-Swift-480x272.png" alt="Serial-Queue-Swift" /></p> 
<p>这些任务什么时候开始执行完全是由 GCD 内部控制的，你唯一能知道的事情就是，GCD 保证了这些任务会按照进队列的顺序执行，而且每次只执行一个。</p> 
<p>由于顺序队列里面不可能有两个任务并发执行，所以这个队列的任务就不会有同时访问临界区的风险；这样的实现保证了在<strong>这些任务中</strong>不会有由于竞争条件产生的临界区问题。所以如果临界区只会被队列中的这些任务访问，你就可以说这个临界区是安全的。</p> 
<h2>五、并发队列（Concurrent Queues）</h2> 
<p>并发队列保证任务开始执行的顺序跟它进入队列的顺序相同……而且，这就是并发队列唯一能保证的事情！所有的任务可以以任意顺序结束执行，而且你完全不知道开始下一个任务之前的时间间隔是多少，甚至不知道任意时刻到底有多少任务在同时运行。所以，这又是一个完全取决于 GCD 的事情。</p> 
<p>下图的例子展示了一个由 GCD 执行的有4 个任务的并发队列：</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/Concurrent-Queue-Swift-480x272.png" alt="Concurrent-Queue-Swift" /></p> 
<p>注意到上图中 Task 1 要等到 Task 0 开始执行了好一会儿才开始执行，但是 Task 1, 2 和 3 之间的间隔却很短，一个紧接着另一个。还有，Task 3 在 Task 2 之后才开始执行，但是却比 Task 2 更早结束。</p> 
<p>任务什么时候开始执行是完全取决与 GCD 的。当两个任务的执行时间有重叠的时候，GCD 会决定这两个任务是应该分开两个核执行（如果有空闲的 CPU）还是使用上下文切换在一个核中执行两个不同的任务。</p> 
<p>有意思的是，GCD 给顺序和并发类型的队列各提供了至少五种特殊的队列供你选择。</p> 
<h2>六、队列类型</h2> 
<p>首先，系统提供了一个特殊的顺序队列：<strong>main queue</strong>。跟所有的顺序队列一样，该队列中同一时间只执行一个任务。不同的是这个队列中所有的任务都保证会在主线程中执行，主线程也是唯一一个可以更新 UI 的线程。这个队列也是用来给 UIView 对象发消息（send message，这里的 message 应该理解为 ObjC 的 message），或者发送通知（notifications，这里的通知应该指 NSNotification）。</p> 
<p>系统还提供了几个并发队列。这些队列都有他们自己的 QoS 类（Quality of Service）。QoS 类主要用来描述任务的执行目的以便于 GCD 决定这些任务的优先级。以下是 QoS 类：</p> 
<ul> 
 <li><strong>QOS_CLASS_USER_INTERACTIVE</strong>：<strong>User Interactive</strong>（用户交互）类的任务关乎用户体验，这类任务是需要立刻被执行的。这类任务应该用在更新 UI，处理事件，执行一些需要低延迟的轻量的任务。这种类型的任务应该要压缩到尽可能少。</li> 
 <li><strong>QOS_CLASS_USER_INITIATED</strong>: <strong>User Initiated</strong>（用户发起）类是指由 UI 发起的可以异步执行的任务。当用户在等待任务返回的结果，然后才能执行下一步动作的时候可以使用这种类型。</li> 
 <li><strong>QOS_CLASS_UTILITY</strong>：<strong>Utility</strong>（工具）类是指耗时较长的任务，通常会展示给用户一个进度条。这种类型应该用在大量计算，I/O 操作，网络请求，实时数据推送之类的任务。这个类是带有节能设计的。</li> 
 <li><strong>QOS_CLASS_BACKGROUND</strong>：<strong>background</strong>（后台）类是指用户并不会直接感受到的任务。这个类应该用在数据预拉取，维护以及其他不需要用户交互，对时间不敏感的任务。</li> 
</ul> 
<p>这里要注意苹果的 API 也会使用这些全局的 dispatch queue，所以你提交的任务并不是这些队列的唯一任务。</p> 
<p>最后，你也可以创建你自己的顺序队列和并发队列。也就是说，你至少需要处理五个队列：主队列，其他的四个全局队列，以及你自己创建的自定义队列。</p> 
<p>以上就是 dispatch queue 基本的样子。</p> 
<p>使用 GCD 的艺术在于如何针对你提交的任务选择合适的队列以及分发函数。而学习这项技能最好的办法就是跟着本教程过一遍接下来的示例项目，我们也会在这个过程中提供一些通用的建议。</p> 
<h2>七、示例项目（Sample Project）</h2> 
<p>由于本教程的目的主要是如何优化以及如何安全地使用 GCD 编写多线程代码，我们的示例教程就由一个现成的项目开始，这个项目叫 GooglyPuff。</p> 
<p>GooglyPuff 是一个还没经过优化而且没实现线程安全的应用，这个应用使用 Core Image 的人脸识别 API 把漫画眼睛贴到照片里眼睛的位置上。图片可以从系统相册选择，或者从预设好的 URL 下载。</p> 
<p>整个项目可以从这里下载：<a href="http://cdn4.raywenderlich.com/wp-content/uploads/2015/01/GooglyPuff_Swift_Start_1_Xcode63.zip">GooglyPuff_Swift_Start_1</a></p> 
<p>下载解压后，在 Xcode 中打开并运行，你会看到如下界面：</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/Workflow1.png" alt="Workflow1" /></p> 
<p>我们注意到点击“Le Intenet”去下载图片的时候，一个 UIAlertController 立刻就弹出一个警告框，后面我们将一起修复这个问题。</p> 
<p>这个项目有四个主要的类：</p> 
<ul> 
 <li><strong>PhotoCollectionViewController</strong>：这是应用启动后首先进入的 View Controller，向用户展示了所有选中照片的缩略图。</li> 
 <li><strong>PhotoDetailViewController</strong>：这个类里执行了粘贴漫画眼睛的逻辑，使用一个 UIScrollView 来展示贴图结果。</li> 
 <li><strong>Photo</strong>：这是一个 protocol，定义了一张照片应用的几个属性。这个 protocol 提供一张图片，一个缩略图以及图片的状态。有两个类实现了这个 protocol：<strong>DownloadPhoto</strong>类通过 NSURL 实例化图片，而<strong>AssetPhoto</strong>则通过 ALAsset 实例化图片。</li> 
 <li><strong>PhotoManager</strong>：这个类负责管理所有的 Photo 对象。</li> 
</ul> 
<h2>八、使用 dispatch_async 处理后台任务</h2> 
<p>现在让我们回到应用，选择从系统相册或者 Le Internet 下载图片。</p> 
<p>留意一下从你在 PhotoCollectionViewController 中点击一个 UICollectionViewCell 到弹出一个新的 PhotoDetailViewController 需要多久；这里我们应该可以注意到有明显的延迟，尤其是当你查看一张很大的图片或者使用的是很慢的机器的时候。</p> 
<p>UIViewController 的 viewDidLoad 方法是最容易堆积一大堆代码的地方，经常导致 view controller 需要等很久才能出现。所以我们要尽可能把不重要的任务放到后台去完成。</p> 
<p>这听起来是 dispatch_async 可以做的事情！</p> 
<p>打开 PhotoDetailViewController，把 viewDidLoad 方法修改成以下实现：</p> 
<div>
  [sourcecode language="swift"]
 <br /> override func viewDidLoad() {
 <br /> super.viewDidLoad()
 <br /> assert(image != nil, "Image not set; required to use view controller")
 <br /> photoImageView.image = image
 <p></p> 
 <p> // Resize if neccessary to ensure it's not pixelated<br /> if image.size.height &lt;= photoImageView.bounds.size.height &amp;&amp;<br /> image.size.width &lt;= photoImageView.bounds.size.width {<br /> photoImageView.contentMode = .Center<br /> }</p> 
 <p> dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) { // 1<br /> let overlayImage = self.faceOverlayImageFromImage(self.image)<br /> dispatch_async(dispatch_get_main_queue()) { // 2<br /> self.fadeInNewImage(overlayImage) // 3<br /> }<br /> }<br /> }<br /> [/sourcecode] </p>
</div> 
<p>上面的代码到底干了什么呢：</p> 
<ol> 
 <li>首先，我们把部分工作从主线程上搬到了一个全局队列（global queue）中去。这里我们使用了 dispatch_async 方法，所以这个闭包里面的代码会被异步地提交到队列中去，同时 viewDidLoad 函数不等这个 block 执行完就会直接 return，不会卡住主线程。同时，人脸识别的代码也开始在跑。</li> 
 <li>这句代码执行的时候，人脸识别的代码已经结束并生成了一张新的图片。由于我们要在主线程用这个新的图片更新 UIImageView，这里我们加了一个新的的闭包，把更新的代码放到主线程去。这里要记得——你永远只能在主线程更新 UIKit 的类。</li> 
 <li>最后，我们使用 fadeInNewImage 方法，通过一个淡入动画展示贴上了动画眼睛的图片。</li> 
</ol> 
<p>这里要注意我们用了 Swift 的尾随闭包语法（Trailing Closure Syntax），给 dispatch_async 方法传参的时候可以在括号后面直接写闭包的代码，这种写法可以让你的代码看上去更简洁一些。</p> 
<p>现在重新编译运行这个工程，选择一张图片，你会发现view controller 展示比之前快多了，过了一会才把动画眼睛加上去。这带来一种很好的体验，你可以感受到照片被修改前后的对比带来的冲击。而且，如果你尝试加载一张特别大的图片，应用也不会在加载 view controller 的时候被卡住，这大大增加了应用的扩展性。</p> 
<p>我们上面也提到了，dispatch_async 会把闭包里的任务加到队列里面，然后函数立刻返回。GCD 会决定什么时候执行这个任务。所以对于网络请求或者耗CPU 的任务你应该用 dispatch_async，这样才不会卡住当前线程。</p> 
<p>以下是几条关于在使用 dispatch_async 函数时应该选择什么类型队列的建议：</p> 
<ul> 
 <li><strong>自定义串行队列 Custom Serial Queue</strong>：当你想要在后台顺序地执行这些任务并且对其保持跟踪的时候，这种类型是个不错的选择。这种队列避免了资源竞争的情况，因为一次只会有一个任务在进行。注意如果你需要通过一个方法来获取数据的话，你必须通过内联一个闭包来获取，或者你也可以考虑使用 dispatch_sync。</li> 
 <li><strong>主队列（串行）Main Queue</strong>：这个队列一般用在一个任务执行完之后要更新 UI 的时候，这种时候你要在一个闭包里面写多一个闭包用来回调主线程。而且，如果你在主线程调用 dispatch_async 来回调主队列，就可以保证你的这些代码一定会在当前函数结束后的某个时机被调用。</li> 
 <li><strong>并发队列 Concurrent Queue</strong>：通常用于在后台执行非UI 操作的任务。</li> 
</ul> 
<h2>九、便于获取全局队列的 Helper 变量</h2> 
<p>你可能会发现每次使用 dispatch_get_global_queue 还得传一个 QoS 类作为参数来获取对应的队列，这种写法有点累赘。这是因为 qos_class_t 被定义成一个结构体，而且 value 属性是 UInt32 类型，传参的时候还得转成 Int 类型。所以通过给 Utils.swift 文件添加几个 helper 变量我们可以更方便地获取这些全局队列：</p> 
<div>
  [sourcecode language="swift"]
 <br /> var GlobalMainQueue: dispatch_queue_t {
 <br /> return dispatch_get_main_queue()
 <br /> }
 <p></p> 
 <p>var GlobalUserInteractiveQueue: dispatch_queue_t {<br /> return dispatch_get_global_queue(Int(QOS_CLASS_USER_INTERACTIVE.value), 0)<br /> }</p> 
 <p>var GlobalUserInitiatedQueue: dispatch_queue_t {<br /> return dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)<br /> }</p> 
 <p>var GlobalUtilityQueue: dispatch_queue_t {<br /> return dispatch_get_global_queue(Int(QOS_CLASS_UTILITY.value), 0)<br /> }</p> 
 <p>var GlobalBackgroundQueue: dispatch_queue_t {<br /> return dispatch_get_global_queue(Int(QOS_CLASS_BACKGROUND.value), 0)<br /> }<br /> [/sourcecode] </p>
</div> 
<p>回到 PhotoDetailViewController 类的 viewDidLoad 方法，把 dispatch_get_global_queue 和 dispatch_get_main_queue 换成我们刚加的 helper 变量：</p> 
<div>
  [sourcecode language="swift"]
 <br /> dispatch_async(GlobalUserInitiatedQueue) {
 <br /> let overlayImage = self.faceOverlayImageFromImage(self.image)
 <br /> dispatch_async(GlobalMainQueue) {
 <br /> self.fadeInNewImage(overlayImage)
 <br /> }
 <br /> }
 <br /> [/sourcecode] 
</div> 
<p>这样修改后的代码可读性更好，更容易看出是使用了什么类型的队列。</p> 
<h2>十、使用 dispatch_after 来延迟部分工作</h2> 
<p>让我们回想一下这个 App 的用户体验，有可能用户刚打开这个 App 的时候并不知道该怎么操作对吧？所以，如果 PhotoManager 类里面还没有照片的时候，我们可以先展示一个提示页面。而且这个提示不能展示得太快。</p> 
<p>延迟一秒钟再展示这个提示页面应该可以满足我们的需求。</p> 
<p>把以下代码添加到 PhotoCollectionViewController.swift 文件中：</p> 
<div>
  [sourcecode language="swift"]
 <br /> func showOrHideNavPrompt() {
 <br /> let delayInSeconds = 1.0
 <br /> let popTime = dispatch_time(DISPATCH_TIME_NOW,
 <br /> Int64(delayInSeconds * Double(NSEC_PER_SEC))) // 1
 <br /> dispatch_after(popTime, GlobalMainQueue) { // 2
 <br /> let count = PhotoManager.sharedManager.photos.count
 <br /> if count &gt; 0 {
 <br /> self.navigationItem.prompt = nil
 <br /> } else {
 <br /> self.navigationItem.prompt = "Add photos with faces to Googlyify them!"
 <br /> }
 <br /> }
 <br /> }
 <br /> [/sourcecode] 
</div> 
<p>当 UICollectionView Reload 的时候，viewDidLoad 方法会被触发，从而调用 showOrHideNavPrompt 方法。</p> 
<ol> 
 <li>声明延迟调用的时间</li> 
 <li>delayInSeconds 时间过后，这个闭包将被异步地调用</li> 
</ol> 
<p>编译运行一下，我们将会看到延迟一下之后这个提示页面就弹出来了。</p> 
<p>dispatch_after 方法就是一个可以设置延迟调用的 dispatch_async 方法，你始终无法精确地控制真正的调用时间，dispatch_after 函数返回后你也无法取消这次调用。</p> 
<p>那么什么情况下用 dispatch_after 方法比较合适呢？</p> 
<ul> 
 <li>*<strong>自定义串行队列 Custom Serial Queue</strong>: 在这种队列中使用 dispatch_after 要格外小心，你最好还是只在主队列中使用这个方法。</li> 
 <li><strong>串行主队列 Main Queue (Serial)</strong>: 在主队列中使用 dispatch_after 是一个不错的选择，而且 Xcode 的自动补全默认就是在主队列调用。</li> 
 <li><strong>并发队列 Concurrent Queue</strong>: 要小心在自定义并发队列中使用，一般情况下你是不会在并发队列里面用到的。最好还是使用主队列来使用这个方法。</li> 
</ul> 
<h2>十一、单例和线程安全 Singletons and Thread Safety</h2> 
<p>单例，让人又爱又恨的东西，它们就像网上的猫咪一样充斥整个世界 :]</p> 
<p>单例最常令人担心的一点就是：它们经常是非线程安全的。而单例又常常是被多个 controller 同时访问的。PhotoManager 就是一个单例，所以我们还得考虑给它加上线程安全的代码。</p> 
<p>这里主要有两个时机是需要我们保证线程安全的，一是单例在初始化的时候，另一个就是对单例进行读写操作的时候。</p> 
<p>我们先考虑第一个问题。因为 Swift 在全局作用域中初始化变量时的特性，第一点变得很容易解决。在 Swift 中，全局变量是在第一次被访问的时候进行初始化的，而且是保证初始化过程是原子的。就是说，初始化代码是被当做临界区对待的，知道这段代码执行完了，其他的线程才能访问这个变量。Swift 是怎么做到这一点的呢？在我们看不到的代码里面，Swift 是使用 GCD 的 dispath_once 方法来实现的。有兴趣的同学可以看看这篇博客：<a href="https://developer.apple.com/swift/blog/?id=7">https://developer.apple.com/swift/blog/?id=7</a>。</p> 
<p>dispatch_once 会以线程安全的方式执行闭包，而且只会执行一次。如果有一个线程正在执行临界区代码——这个任务在 dispatch_once 方法中——那么其他线程就会暂时被 block，直到临界区执行完毕。一旦这个闭包执行完毕，其他线程将不会再次执行这个代码。再加上用 let 把单例的实例变量声明成一个全局常量，我们就可以保证在以后的代码中这个实例不会被修改。从这个角度上看，所有的 Swift 全局常量实际上都是单例，而且自带线程安全的初始化方法。</p> 
<p>但是我们还是要考虑读写操作的线程安全。Swift 虽然可以用 dispatch_once 保证初始化代码是线程安全的，但是这个方法没法保证它的成员变量都是线程安全的。举个例子，如果一个全局变量是一个类的实例，当这个类在内部操作这个变量的时候，你还是有可能遇到临界区问题。所以我们需要用别的方法来保证这些操作是线程安全的，比如说同步数据访问，下面几个章节我们将会讲到。</p> 
<h2>十二、处理读者和写者问题</h2> 
<p>实例的线程安全问题并不是只有单例才需要关心。如果一个单例的属性是一个可变的对象，比如说 PhotoManager 的 photos 数组，那么你就得考虑这个对象本身是否线程安全的。</p> 
<p>在 Swift 中，所有用 let 关键字声明的变量都是只读的，而且线程安全的。var 关键字声明的则表示可变而且除非这个数据类型的设计本来就是线程安全的，否则都是非线程安全的。Swift 的集合类型如 Array 和 Dictionary，如果声明是可变的就是非线程安全的。那么基础的容器类型呢？比如说 NSArray 这种类型？他们是线程安全的吗？答案是——“恐怕并不是”！Apple 官方维护了<a href="https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/ThreadSafetySummary.html">一个线程安全与非线程安全类型的列表</a>大家可以瞧瞧。</p> 
<p>虽然说多个线程同时读一个 Array 变量是安全的，但是如果有一个线程正在对它做写操作就悲剧了。现在回到我们的示例工程，这里面我们的单例都还没有做这样的保护。</p> 
<p>比如我们来看 PhotoManager.swift 中 addPhoto 方法：</p> 
<div>
  [sourcecode language="swift"]
 <br /> func addPhoto(photo: Photo) {
 <br /> _photos.append(photo)
 <br /> dispatch_async(dispatch_get_main_queue()) {
 <br /> self.postContentAddedNotification()
 <br /> }
 <br /> }
 <br /> [/sourcecode] 
</div> 
<p>因为这个方法修改了一个可变数组，所以这是一个写方法。</p> 
<p>然后我们在看 photos 这个属性：</p> 
<div>
  [sourcecode language="swift"]
 <br /> private var _photos: [Photo] = []
 <br /> var photos: [Photo] {
 <br /> return _photos
 <br /> }
 <br /> [/sourcecode] 
</div> 
<p>这个属性的 getter 方法反悔了一个可变数组，所以是一个读方法。调用这个方法的人会得到一个 _photos 数组的拷贝，以防被别人不小心修改了，但是如果有一个线程正在修改这个数组，另一个线程正在读这个数据就悲剧了。</p> 
<blockquote>
 <p> 注意：为啥上面这段代码里调用者会得到一个 _photos 数组的拷贝呢？因为在 Swift 里面，函数的返回类型要嘛是一个引用要嘛就是一个数值。返回引用就跟 ObjC 里面返回指针是一样的，你可以对原来的对象做任何操作。但是返回一个数值则会得到一个原对象的拷贝，对这个返回值的修改不会印象到原对象。默认情况下，Swift 的类实例会以引用方式或者结构体的值的方式传递与返回。</p> 
 <p> Swift 的内置数据类型，比如 Array 和 Dictionary，都是以 Struct 结构体的形式实现的，所以当你在代码里面传递这些值的时候，你传递的是一大堆结构体的拷贝。不过你不需要担心由此引起的内存消耗，Swift 对集合类型做了优化，只有在必要的时候才会真的做拷贝。例如，只有当一个数组被当做参数会返回值传递的过程中，第一次被修改的时候，才会做一次拷贝。 </p>
</blockquote> 
<p>这是在软件开发中一个经典的读者写者问题，GCD 提供了一个优雅的解决方案——使用 <strong>dispatch barriers 创建读写锁</strong>。</p> 
<p>Dispatch barriers 是一组方法，它们的表现就像在并发队列遇到串行队列的性能瓶颈一样。使用 GCD 的 barrier API 可以确保提交进队列的闭包代码在被执行的时候只有一个任务在跑。也就是说，所有比 diaptch barrier 先进队列的任务要优先被执行完，然后再会执行这一个闭包。</p> 
<p>轮到这个闭包执行的时候，GCD 会确保在执行过程中有且只有这一个任务在跑，直到它执行结束，才会恢复队列原来的实现。GCD 还提供了同步和异步的 barrier 方法。</p> 
<p>下图展示了 barrier 方法在异步队列中的表现：</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/Dispatch-Barrier-Swift-480x272.png" alt="Dispatch Barrier" /></p> 
<p>注意到通常情况下这个队列跟普通的并发队列没有两样，但是当 barrier 代码被执行的时候，这个队列看上去就像一个串行队列。换句话说，barrier 是当下唯一被执行的代码。当这个 barrier 结束了之后，队列就又会回到一个普通的并发队列的执行方式。</p> 
<p>那你啥时候改用 barrier 方法，啥时候不该用呢？</p> 
<ul> 
 <li>*<strong>自定义串行队列 Custom Serial Queue</strong>: 没有必要在串行队列中使用，barrier 对于串行队列来说毫无用处，因为本来串行队列就是一次只会执行一个任务的。</li> 
 <li><strong>全局并发队列 Global Concurrent Queue</strong>: 要小心使用。在全局队列中使用 barrier 可能不是太好，因为系统也会使用这个队列，一般你不会希望自己的操作垄断了这个队列从而导致系统调用的延迟。</li> 
 <li><strong>自定义并发队列 Custom Concurrent Queue</strong>: 对于需要原子操作和访问临界区的代码，barrier 方法是最佳使用场景。任何你需要线程安全的实例，barrier 都是一个不错的选择。</li> 
</ul> 
<p>看起来上面说的唯一正确的选择是自定义并发队列了，所以我们要创建一个自己的并发队列，用来处理 barrier 方法，从而是读写操作分离。这个并发队列将会允许多个读操作同时执行。</p> 
<p>打开 PhotoManager.swift 文件，添加以下属性：</p> 
<div>
  [sourcecode language="swift"]
 <br /> private let concurrentPhotoQueue = dispatch_queue_create(
 <br /> "com.raywenderlich.GooglyPuff.photoQueue", DISPATCH_QUEUE_CONCURRENT)
 <br /> [/sourcecode] 
</div> 
<p>这句代码使用 dispatch_queue_create 把 concurrentPhotoQueue 初始化为一个并发队列。第一个参数是一个反向域名风格的命名，确保这个命名的含义有助于我们以后调试。第二个参数用来表示这个队列是串行的还是并行的。</p> 
<blockquote>
 <p> 注意： 如果你在网上搜索 dispatch_queue_create 的示例代码，你经常会看到大家用 0 或者 NULL 作为第二个参数。这实际上是用来创建串行队列的一种过时的方法，更好的做法还是把这个类型写清楚。 </p>
</blockquote> 
<p>找到 addPhoto 方法，替换成以下代码：</p> 
<div>
  [sourcecode language="swift"]
 <br /> func addPhoto(photo: Photo) {
 <br /> dispatch_barrier_async(concurrentPhotoQueue) { // 1
 <br /> self._photos.append(photo) // 2
 <br /> dispatch_async(GlobalMainQueue) { // 3
 <br /> self.postContentAddedNotification()
 <br /> }
 <br /> }
 <br /> }
 <br /> [/sourcecode] 
</div> 
<ol> 
 <li>把写操作添加到你的自定义队列中。当临界区代码被执行的时候，这段代码将是队列中唯一正在执行的。</li> 
 <li>这句代码是真正修改数组的地方。由于这句代码在 berrier 闭包中，在 concurrentPhotoQueue 这个队列中这个闭包将不会和其他任务同时执行。</li> 
 <li>最后，我们发一个通知说已经添加完图片了。这个通知必须在主线程发出才能更新 UI，所以我们在这里用了一个异步队列把任务抛回主线程去。</li> 
</ol> 
<p>这个修改解决了写操作问题，接下来我们来看看读操作的问题。</p> 
<p>为了确保读写操作都是线程安全的，我们需要把读操作也放进 concurrentPhotoQueue 这个队列里面。但是因为你需要函数的返回值，所以这个地方我们不能用异步调用的形式来写。在这里我们使用 dispatch_sync 方法。</p> 
<p>dispatch_sync 会同步地提交当前的任务并且一直等到这个任务执行完毕才把函数返回。当你需要确保这些任务能够与 dispatch barrier 合作时，或者当你需要等待闭包的处理结果，然后才把函数返回时，你可以用 dispatch_sync。</p> 
<p>但是使用这个函数要非常小心。试想你把 dispatch_sync 用在一个并发队列上，当这个队列跑起来的时候你就会遇到死锁问题。因为这个同步调用会一直等到前一个闭包执行结束才会返回，但是当前的queue 却在等待 dispatch_sync 的完成才能执行闭包代码，于是造成死锁。这就要求你一定要清楚地知道你是在哪一个队列发起的调用，同时也要搞清楚你是塞进去了哪一个队列。</p> 
<p>以下是 dispatch_sync 使用时的概览：</p> 
<p><strong>自定义串行队列 Custom Serial Queue</strong>: 在这种队列上使用要非常小心。如果你在同一个队列的任务里面使用 dispatch_sync 到同一个队列，那你绝对会遇到死锁问题。<br /> <strong>主队列 Main Queue (Serial)</strong>: 跟上面那个一样要非常小心，也是很有可能造成死锁。<br /> <strong><em>并发队列 Concurrent Queue</em></strong>: 在这种队列中，如果你想要通过 dispatch barrier 来同步任务，dispatch_sync 是一个不错的选择。</p> 
<p>下面我们把 PhotoManager.swift 中的 photos 方法修改一下：</p> 
<div>
  [sourcecode language="swift"]
 <br /> var photos: [Photo] {
 <br /> var photosCopy: [Photo]!
 <br /> dispatch_sync(concurrentPhotoQueue) { // 1
 <br /> photosCopy = self._photos // 2
 <br /> }
 <br /> return photosCopy
 <br /> }
 <br /> [/sourcecode] 
</div> 
<ol> 
 <li>同步地把读操作加入到 concurrentPhotoQueue 队列中</li> 
 <li>把 _photos 数据拷贝一份保存到 photosCopy 变量中</li> 
</ol> 
<p>恭喜——你的 PhotoManager 单例现在完全线程安全了。不管你是在何时去读或者写，你都能很有自信地说这些操作都是安全的了。</p> 
<h2>十三、总结一下 Queueing</h2> 
<p>可能大家还没有 100% 地清楚 GCD 的牛逼之处？首先确保一下你已经能够自如地使用 GCD 的基础API 来实现简单的多线程逻辑，最好多用断点和 NSLog 来确保你清楚正在发生什么。</p> 
<p>下面我们提供了两个 GIF 动画来帮助你理解 dispatch_async 和 dispatch_sync。请留意 GIF 展示的每一步断点与各个队列的关系。</p> 
<h3>dispatch_sync</h3> 
<div>
  [sourcecode language="swift"]
 <br /> override func viewDidLoad() {
 <br /> super.viewDidLoad()
 <p></p> 
 <p> dispatch_sync(dispatch_get_global_queue(<br /> Int(QOS_CLASS_USER_INTERACTIVE.value), 0)) {</p> 
 <p> NSLog("First Log")</p> 
 <p> }</p> 
 <p> NSLog("Second Log")<br /> }<br /> [/sourcecode] </p>
</div> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/dispatch_sync_in_action_swift.gif" alt="http://cdn.justinbot.com/wp-content/uploads/2015/11/dispatch_sync_in_action_swift.gif" /></p> 
<ol> 
 <li>主队列开始执行任务——下一步是初始化 UIViewController，会掉入 viewDidLoad 方法。</li> 
 <li>viewDidLoad 在主线程被调用</li> 
 <li>dispatch_sync 闭包被加入主队列中，会在后面被执行。流程到了这里就会阻塞住主线程，先把闭包里的代码执行完。与此同时，主队列又在并发地执行任务，回想一下我们前面介绍的过的，这个闭包被插入一个先入先出的全局队列，但是会被并发地执行。这个全局队列会先执行在 dispatch_sync 闭包被插入队列之前的那些任务。</li> 
 <li>最后， dispatch_sync 开始执行了。</li> 
 <li>这个闭包执行结束了，于是主线程可以恢复运行了。</li> 
 <li>viewDidLoad 方法执行结束，主队列继续执行其他任务。</li> 
</ol> 
<p>dispatch_sync 会把任务加入到队列中并且一直等待直到任务执行结束。dispatch_async 也做了一样的事情，唯一的不同时它不会等待任务结束而是立刻就返回。</p> 
<h3>dispatch_async</h3> 
<div>
  [sourcecode language="swift"]
 <br /> override func viewDidLoad() {
 <br /> super.viewDidLoad()
 <p></p> 
 <p>dispatch_async(dispatch_get_global_queue(<br /> Int(QOS_CLASS_USER_INTERACTIVE.value), 0)) {</p> 
 <p>NSLog("First Log")</p> 
 <p>}</p> 
 <p>NSLog("Second Log")<br /> }<br /> [/sourcecode] </p>
</div> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/11/dispatch_async_in_action_swift.gif" alt="http://cdn.justinbot.com/wp-content/uploads/2015/11/dispatch_async_in_action_swift.gif" /></p> 
<ol> 
 <li>主队列开始执行任务——下一步是初始化 UIViewController，会掉入 viewDidLoad 方法。</li> 
 <li>viewDidLoad 在主线程被调用。</li> 
 <li>dispatch_async 被加入到全局队列中。</li> 
 <li>viewDidLoad 在 dispatch_async 闭包提交到全局队列后继续执行。与此同时，全局队列开始处理他队列中的任务。要记得这里先入先出的全局队列是可以并发地执行任务的。</li> 
 <li>dispatch_async 提交的闭包开始被执行了。</li> 
 <li>dispatch_async 执行结束，两句 NSLog 也都打出了日志。但是并不一定每次都是这样的——这实际上取决于硬件的实现，你是完全没法控制也完全不知道这句语句会被怎么执行。</li> 
</ol> 
<h2>十四、接下来？</h2> 
<p>在这个教程中，你已经学会了如何让你的代码实现线程安全，也知道怎么把 CPU 密集的任务从主线程挪出来。</p> 
<p>你可以在这里下载这个项目的代码，这份代码是包含了以上所有的优化的：<a href="http://cdn2.raywenderlich.com/wp-content/uploads/2015/01/GooglyPuff_Swift_End_1_Xcode63.ip">GooglyPuff Project </a>。本教程的第二部分将告诉你如何持续优化这个项目。</p> 
<p>如果你有计划要优化你自己的应用，你需要学会怎么使用 Instruments 里的Time Profile 来测试你的代码。不过如何使用这个工具就不在本教程的讲述范围内了，你可以参考这篇文章 <a href="http://www.raywenderlich.com/?p=23037">如何使用 Instrcments</a>。</p> 
<p>然后记得要用真实的设备来进行测试，用模拟器测出来的结果与真机相差甚远。</p> 
<p>在<a href="http://www.raywenderlich.com/?p=79150">下一篇教程</a>中你将更加深入地了解 GCD 的API，我们将介绍更为强大的工具。</p> 
<p>2015.11.22/夜<br /> 于自宅</p> 
<blockquote>
 <p> 译者注：由于译者太懒，此文花了许多时间来才翻译完，也许内容有些过时，不过 GCD 提供的 API 至今仍然是 iOS/Mac 上使用多线程的首选。 </p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #99 Orson Scott Card &#x2014; &#x300A;&#x5B89;&#x5FB7;&#x7684;&#x6E38;&#x620F;&#x300B;(Ender&#x26;#8217;s Game)</title>
        <link>https://justinyan.eth.limo/01AF90A6-BB2B-47FD-A65A-6F41E62064CC/</link>
        <guid>https://justinyan.eth.limo/01AF90A6-BB2B-47FD-A65A-6F41E62064CC/</guid>
        <pubDate>Thu, 19 Nov 2015 13:03:03 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/11/Ender27sGameCoverMain-copy-1.jpg" /></p> 
<p>开始读《安德的游戏》时感觉告诉我这是一部水平很次的作品。作者一开始就直接表明了主角安德是一个很特殊的人，天才中的天才，进度到 10%+ 更直接说明安德就是他们要培养的未来的最高统帅，是要和虫族打仗拯救人类的人。于是乎，小说前半部分就沦为毫无悬念的铺垫，读之甚是乏味。</p> 
<p>悬念是小说的驱动力，没有悬念的小说读者是不会有兴趣的。但是后来我知道这部作品写于 1985 年，于是心理预期稍微降了一点，与此同时故事进入战斗学校部分，安德作为一个天才少年，在太空校园里被刻意安排孤立，被迫进行不公平的比赛，于是前期枯燥的铺垫到了战斗学校之后开始慢慢展开，面对教官严苛的要求，安德是否能够顺利晋级？面对其他同学的孤立与排斥，安德怎样去结交好友突破困境？面对不公平的比赛，安德如何扭转劣势拿下胜利？还有最重要的，面对与日俱增的心理压力，安德能否在精神崩溃前成功毕业？</p> 
<p>读者是否有一种似曾相识的感觉？没错，就是少年热血漫画的套路。读者如果一路读到了这一部分，很容易就会被代入，对人物的情感投资在安德一次次拿下胜利时得到回报，又在下一次面对更加苛刻的条件时惴惴不安。到了这种地步，读者已经欲罢不能，小说也就成功了一半。</p> 
<p>然而驱使我嚼下枯燥的前半部分的动力却不是安德，反而是安德的哥哥与姐姐。这三个小孩都是天才儿童，哥哥彼得性格残暴，姐姐华伦帝则过于柔弱，只有安德兼具二者优点，所以最终是安德被送进战斗学校。对我来说，我反而更喜欢这两兄妹的组合，深觉这两兄妹加一起要远胜于安德。最让我感到震惊的是两兄妹利用互联网（Nets）隐藏自己的年龄，在网上散步自己的言论，逐步建立起各自的追随者，形成巨大的舆论影响力，最后两人政见合一，把彼得推上地球统治者这一壮举。要知道 1985 年互联网还处于理论研究阶段，公众连想到想不到的事情，更不用说准确预测到今日互联网舆论的影响力以及如何操纵网络言论方向了。可惜的是故事的主角始终是安德，作者没有在这两兄妹身上花费太多笔墨。</p> 
<p>说回主线，安德在战斗学校的故事就是一般热血漫画的路线：遇到 BOSS，要死了要死了要死了，完了千方百计打赢了 BOSS，获得新技能和一大帮小弟，然后继续下一个数量级增长的 BOSS，不断循环，直到毕业。这一段作者的布置比较合理，故事发展非常流畅。最后以安德终于精神崩溃为契机，让安德毕业，小说推入最终幕大决战。</p> 
<p>由于有了前面战斗学校不公平待遇的铺垫，最终幕的展开很自然，结局的反转也出人意料，是个亮点。由于是热血少年故事，安德最后肯定是大团圆结局打败了虫族，还殖民到虫族的星球上去。在那里他听到了来自虫族的遗言，于是著书《Speaker for the Dead》，中译名为《死者代言人》或《安德的代言人》。我一直觉得结局大可以到虫族消灭就结束了，后半段其实有些累赘，直到我翻到《Speaker for the Dead》的序，才晓得原来作者早期是写了《安德的游戏》的短篇，后来他想写《Speaker for the Dead》了，于是就开始构思，结果就构思出了长篇的《安德的游戏》，所以这后半部分就变得必不可少了。</p> 
<p>1985 年《安德的游戏》出版后，第二年《死者代言人》就出版了，两部作品连着拿下了雨果奖和星云奖，作者也成为唯一一个连续两年包揽两座大奖的作家。今天再看《安德的游戏》，我觉得算是一部不错的热血小说，不过毕竟有些年头，写的也是近未来的事情，像互联网这样的想象已经成了现实大家不觉新鲜，而写作技巧上过多第三方角色的全知描述也令人乏味。所以此作可以说是不错的休闲读物吧，谈不上上佳之作。</p> 
<p>2015.11.18/中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #98 Atul Gawande &#x2014; &#x300A;&#x6700;&#x597D;&#x7684;&#x544A;&#x522B;&#x300B;(Being Mortal)</title>
        <link>https://justinyan.eth.limo/D7B531E0-B017-4846-8678-1DFEAC5A5355/</link>
        <guid>https://justinyan.eth.limo/D7B531E0-B017-4846-8678-1DFEAC5A5355/</guid>
        <pubDate>Sat, 14 Nov 2015 16:37:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/11/3334041-179a3d812c0b31fc-copy-1.jpg" /></p> 
<p>一直以来救死扶伤都是医生的天职，我们病了就上医院，医生就会把我们治好，大家都认为这是理所当然的事情。但是我们又都清楚有一些病是治不好的，包括绝症，也包括衰老。</p> 
<p>但即使罹患绝症，到了医院也还是以“积极治疗”为默认选项，大家仿佛觉得现代的医学这么发达，有什么是治不好的呢？即使是绝症，大不了化疗，以为能再活个十年，二十年。《Being Mortal》的作者 Atul Gawande 是一名医生，他道出了大家也许不知道也许视而不见的真相：绝症的治疗并不一定能把病治好，有时候能帮你延长性命，但多数时候你不但要承受治疗的痛苦，还很可能恶化你的病情。</p> 
<p>作者从医生受教育时被灌输的观念开始说起，仿佛全世界都认为医生就是应该要积极地把病治好，无论可能性有多小，都要去努力，仿佛努力了就是好的，而忽略了努力背后的痛苦。比如说化疗，你要躺在一个完全契合你身体的模子里一动不动，眼睛看不见，耳朵旁边就是轰隆隆的放射机器在旋转，移动的方寸不过几毫米，每天要躺上一个小时。比如说吃药，你需要吃各种各样奇怪的药，药都有副作用，你克制了头痛可能就导致呕吐，你控制了呕吐又可能导致昏昏沉沉。再比如治疗的费用，美国已经是一个医疗非常发达的国家，高额的治疗费还是会让人透不过气来，更不用说我们中国，动不动就是倾家荡产的事情。假使这些都不是问题，还有更严重的，你接受了这些对身体伤害特别大的治疗之后，很可能并没能帮你控制病情，你会继续恶化，而且恶化得更快，你会生活不能自理，无法自己上厕所自己洗澡，你会开始感受到作为一个人的基本的尊严已经丧失殆尽。</p> 
<p>所有的人都忽视了一个非常重要的问题：如何面对死亡？</p> 
<p>一旦你罹患绝症，你就一定要全身上下插满管子躺在病床上痛苦不堪地走完人生的最后阶段吗？“积极治疗”仅仅是医生提供给病人的一个默认选项，也是大家一上来就知道可以选择的一个选项，但是大家有没有想过这个选项是否一定就是最好的呢？很可能大家仅仅是没有考虑过其他的选项，因为太沉重，根本没法去想。即使在开放的美国，《Being Mortal》提到的“姑息治疗”、“善终服务”也仅是刚刚起步。</p> 
<p>这样的服务将对病人的病因不做处理，不会提供痛苦的治疗，只是在病人生命的最后阶段，提供各种必要的生活护理服务，以及最重要的——麻醉药与镇痛药。与其在 ICU 里插满管子痛苦地死去，病人更愿意选择在自己的家里，在自己生命的最后时刻与自己的家人一同度过，做着自己还能做的事情，有尊严地死去。</p> 
<p>不仅仅是绝症患者，老年人也会遇到同样的事情。老年人的身体由于各种各样的原因会开始日渐无法自理。在现代医疗尚未普及的时代，我们的生命曲线都是非常陡峭的，老年人能活过 50 岁的很少。但是现代医疗发达了起来，我们的曲线开始缓和延长，每次我们开始走陡峭的下坡路的时候，医院总是可以把我们拉回来，于是我们仅仅是离死亡近了一些，却不再会突然之间死去。老年人的问题于是也成为这个还没有准备好的社会急需解决的一个问题。</p> 
<p>经过多年的发展我们产生了疗养院这样的解决方案。但疗养院是一个仿如监狱的地方，统一时间睡觉，统一时间起床，不允许某些病人吃饼干巧克力，不允许吃什么什么，要求病人一定要坐轮椅以防摔倒等等。在疗养院一个人感受不到做人的感觉，感受不到自己的价值。因为疗养院的要求是保证“安全”，除此之外都是次要的。这跟大多数人对绝症患者的要求是一样的：活下去，无论多么痛苦多么没有尊严。</p> 
<p>人并不总是以活下去为底线的。人还需要活得有尊严，活得开心。假使我们以第三者的身份去考虑事不关己的病人，放弃积极的治疗，让病人能够有尊严，开心地走完最后的日子可能会很容易接受。但是一旦这种事情发生在自己身上的时候，我们肯定还是会手足无措。</p> 
<p>作者采访了很多老人与病人之后，终于他自己也面临了这个艰难的问题：他的父亲罹患绝症，是继续治疗还是选择“善终服务”？</p> 
<p>现代医学虽然发达，但是也博大精深，作者自己是医生，父母双亲也都是医生，但是面对父亲的绝症，他们依然手足无措。最后作者问父亲：什么才是最重要的？他的父亲表示：如果要我选择治疗并且瘫痪，我宁愿死。于是在手术的关键时刻出现了复杂的情况，医生问作者是否要继续手术的时候，作者第一句话就是：继续与停止，哪一种对瘫痪的可能性更大？最终选择了更具生命风险但是更不会造成瘫痪的——继续。</p> 
<p>所以在这些至关重要的节点上，承受病痛的患者本身当然是主角，但是家人在其中扮演的角色也至关重要。如果中止手术而父亲将瘫痪度日，只怕自尊心强的父亲会觉得生不如死。</p> 
<p>今天美国的养老与医疗制度非常发达，我们国内的条件不如美国，但是不代表我们就不应该考虑这些问题。事实上无论条件怎么样，我们都会面临这样的问题，我们总有一天会衰老，我们总有一天会面临无能为力的时刻。</p> 
<p>在阅读这本书的过程中我一直心惊肉跳战战兢兢地，我曾有两次严重的胃病发作，病痛体虚之外连精神也变得软弱，累及我的家人朋友辛苦照顾。如果可以我当然不愿意再经历一次，但是谁知道呢？人都会老，终有一死。看着书中详述的种种，映照自己，深感恐慌。我庆幸在还算年轻的时候看到这本书，它让我了解到生命除了默认选项之外，还有别的可能。</p> 
<p>等我老了，我希望我不至于手忙脚乱。</p> 
<p>15.11.13/中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #97 &#x848B;&#x52CB; - &#x300A;&#x848B;&#x52CB;&#x8BF4;&#x6587;&#x5B66;&#xFF1A;&#x4ECE;&#x8BD7;&#x7ECF;&#x5230;&#x9676;&#x6E0A;&#x660E;&#x300B;</title>
        <link>https://justinyan.eth.limo/2F692F25-F27A-42FB-BCD0-5785D6F2DE05/</link>
        <guid>https://justinyan.eth.limo/2F692F25-F27A-42FB-BCD0-5785D6F2DE05/</guid>
        <pubDate>Thu, 05 Nov 2015 15:14:37 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/11/32732351._UY1930_SS1930_.jpg" /></p> 
<p>有许多朋友一提到“文学”两个字就头疼，这其实源自于对“文学”的不理解，今天“文艺”两个字也被许多一知半解装忧郁的小朋友折腾到臭名昭著的地步，有点可惜，文艺本是中性的，指文学与艺术。欣赏“文艺”需要具备一定的背景知识与审美能力，这种能力以我们目前的学校所教授的课程与教授的方式来说很难培养出来。就好像要欣赏一个开源项目的代码，光会写代码还不足够。</p> 
<p>许多人觉得“文艺”令人乏味，可能还是由于没有具备足够的鉴赏能力。比如《诗经》，一直以来教科书必备的四书五经之一，由于年代久远，文体也不够成熟，大家读起来都会感到吃力。除了类似《蒹葭》这样的寥寥数作，我觉得大多数也都挺无趣的。这时候老师的讲解就变得十分重要，师者，传道授业解惑也，然而我回忆自己在课堂上听到的《诗经》的讲解，却并没回忆出多少有趣的片段。其实语文这一门课很特别，它是讲授文学的，文学是没有办法和历史、社会、艺术分割的，但是往往教授语文的老师不会多讲历史，教授历史的老师不会多讲文学，于是我们断章取义了许多年，片面理解诗歌了许多年。后来我读到郑振铎版本的《中国文学史》（<a href="http://justinyan.me/post/2220">[每周读书 八十五] 郑振铎——《中国文学史》</a>），总算把历史社会背景与文学作品本身稍微联系上了，但是不够。</p> 
<p>本周我们要介绍的是蒋勋老师的《蒋勋说文学：从诗经到陶渊明》，蒋老师在书中以独到的见解，平和的语言，结合历史社会背景以及个人的故事经历，把文艺作品讲述得十分生动。蒋老师摒弃一般人讲诗时做注解的方式，转而以审美的目光来分析，比之于严肃文学的解读，蒋老师的讲解要容易接受得多。蒋老师写过一系列讲解中国文学的书籍，本书为《蒋勋说文学》系列中的上册，下册为《从唐代散文到现代文学》。</p> 
<p>无论是《中国文学史》还是《蒋勋说文学》，都是从上古的《诗经》开始说起。这不是偶然，《诗经》以前，我们的文字是记录在龟甲上的，多为祷文，卜文，并没有十分成体系的文学作品，《诗经》算是最早的中国文学作品集。所以《诗经》有它特殊的意义在。但是我们都怕读《诗经》，毕竟是两千年前的文字，晦涩难懂，毕竟是两千年前的文明，难以想象，而且课堂中动不动就是翻译、提炼思想，烦不胜烦。</p> 
<p>其实《诗经》是无法翻译的，它是可歌的，是民歌的合集，它就是今天的《浏阳河》，就是《康定情歌》，是古人们情之所动而唱出来的东西。但是自从《诗经》被列入四书五经之中成了经典，她就被过分解读了，就好比今天的《圣经》、《红楼梦》，其实哪来那么多密码可以解读。</p> 
<p>老师们在讲解的时候往往会为每句诗做注解，然而诗是“情动于中，而形于言”，情才是诗歌中最重要的东西。我自己也写过诗，写诗的时候你会很注重形式，行文会随着情感的流动而跳跃，所以诗歌会朦胧，会不解，可解的是理性逻辑的部分，不可解的是神秘感性的部分，于是在可解与不可解之间产生了美。如果我们非要把诗歌解成一个个清楚的句子，诗歌就失去了它的魅力。</p> 
<p>蒋勋老师在讲解《诗经》的时候就不这样，他试图以一个审美者的角度，向读者讲述什么是美，诗经为什么美，美在哪里，又有哪些地方是不美的。比如蒋老师以《国殇》为例，讲解了诗歌上半部无头亡魂对生命的悲叹，又指出下半部分过于政治严肃而不讨喜。</p> 
<p>大家上学的时候都会被要求背诗，我当时就在想，为什么《古诗十九首》没有署名？为什么李商隐李白他们风格差那么远？为什么曹操陶渊明的诗看起来都不够温庭筠的词精致但是又被人推崇？其实这些问题都源于对历史背景的不了解。蒋勋老师在讲述《古诗十九首》也好，讲述曹氏父子的诗歌也好，都会试图通过社会环境对于当时人的思想的影响来讲述，品评一个作品的好坏，是一定要放回当时的历史去看的，你不能拿十几年前的 PC 跟今天的手机做比较，十几年前的技术就应该放在当时的环境来做评价。所以要理解“魏晋风骨”要理解“竹林七贤”你就得理解当时的历史背景。</p> 
<p>蒋勋老师在讲解的过程中，除了讲述历史背景之外，还常常结合他自身的故事来做比较。我们说《氓》这首诗里的女子常被解释为弃妇，但是蒋老师就不这么认为。他觉得一个人受伤的时候她不是一整个过程都受伤，他们的爱情也有过甜蜜的时候，受伤的是一个时刻，诗歌反映的是那个时刻的心情。所以《氓》里虽然以女子的角度在吐露自己内心的伤感，但是如果以弃妇幽怨的视角去读这首诗，这首诗就狭窄了，如果把它当做是女子一生的倾诉，那就变成了一个美丽而哀婉的故事。蒋老师提到有朋友夫妻俩吵架了来找他诉苦，说对方怎么怎么不好，其实这都是很常见的情感。诉苦的过程中朋友还会清算自己为对方做了多少事情，像每天洗碗，扫地，做家务，指责对方什么都没做。其实是不是这样呢？《氓》里面写到女子每天勤勤勉勉做了很多事情，其实跟今天我们的想法是没有什么两样的。</p> 
<p>以这样的方式来讲述《诗经》，是不是比我们刻苦地去背诵每一个艰涩的单字要容易得多了呢？我们说文学体裁是会变化的，词汇语法是会变化的，但是人的情感是永恒的。（至于农业社会的情感基础与现代社会的差别我们暂且不论。）当我们回过头去解读古代文学的时候，我们一定不能以纯粹理性的视角，去为每一个字做注解，我们要做的反而是以轻松的姿态，以审美的角度，去试图理解这些字句之间的美。只有当你理解这些文字的美了，才不会对“文学”二字有畏惧之心。</p> 
<p>我们的恐惧来自于未知，但凡因未知而产生的烦忧，我们都可以先静下心来，好好理解清楚问题是什么，理解清楚了问题，我们总有对策。</p> 
<p>2015.11.05 / 中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x4E66;&#x5355;] &#x6BCF;&#x5468;&#x8BFB;&#x4E66; 89 &#x671F;&#x2014;&#x2014;96 &#x671F;</title>
        <link>https://justinyan.eth.limo/916731C9-2F57-47DB-A62E-06099D66D5CB/</link>
        <guid>https://justinyan.eth.limo/916731C9-2F57-47DB-A62E-06099D66D5CB/</guid>
        <pubDate>Mon, 02 Nov 2015 11:33:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>过去八期“每周读书”介绍的书目以小说为主，这堆作品里面东野的《恶意》与马里奥的《教父》比较经典，《人间失格》则相对另类，《吴哥之美》让我第一次认识到蒋勋老师的文笔，不过吴哥真正的美却不在书里，还得亲自去一趟才能体会。</p> 
<ol> 
 <li> <p><strong><a href="http://justinyan.me/post/2304">[每周读书 八十九] 东野圭吾——《虚无的十字架》</a></strong><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/08/xuwudeshizij-blog-cover.jpg" alt="虚无的十字架" /><br /> 要求杀人凶手自我惩戒，根本就是虚无的十字架。然而，即使是这种虚无的十字架，也必须让凶手在监狱中背负着。</p> </li> 
 <li> <p><strong><a href="http://justinyan.me/post/2310">[每周读书 九十] 东野圭吾——《恶意》</a></strong><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/08/eyi-cover-blog.jpg" alt="恶意" /><br /> 《恶意》以其机巧的反转设计，特别的叙事结构，多元的人物塑造，以及时不时穿插的揶揄讽刺，深深地吸引了读者。从此作我们可以看出东野已跳脱本格派推理的“凶手是谁”的悬念，转而在凶手动机的追查上巧设机簧。</p> </li> 
 <li> <p><strong><a href="http://justinyan.me/post/2326">[每周读书 九十一] 伍绮诗——《无声告白》</a></strong><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/09/wushenggaobai-blog.jpg" alt="无声告白" /><br /> 前半部分很拖沓后半部分很精彩。虽然中国人看来可能就一普通的中国家庭的故事（当然除去严重事件）但美国人应该会为种族歧视、性别歧视等话题感到兴奋吧。还有普通的中国小孩是被寄予全家希望的这种事情。</p> </li> 
 <li> <p><strong><a href="http://justinyan.me/post/2335">[每周读书 九十二] Daniel Keyes——《24个比利》</a></strong><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/09/minds.gif" alt="24个比利" /><br /> 1977 年，比利·米利根美国俄亥俄州立大学发生了三起抢劫强奸案，却被诊断为患有多重人格分裂症而获无罪释放。读完这本书，我感受到了深刻的震撼，不是因为作者的写作技巧与故事情节，而是这个真实的事件令人瞠目结舌。</p> </li> 
 <li> <p><strong><a href="http://justinyan.me/post/2341">[每周读书 九十三] Christina Baker Kline——《孤儿列车》</a></strong><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/09/guerlieche-blog.jpg" alt="孤儿列车" /><br /> 《孤儿列车》是和《无声告白》、《24个比利》一起看的，一口气读了这么多畅销书，深刻地感受到这些套路的定式，不过我还是很喜欢《孤儿列车》里讲故事的老婆婆薇薇安这个角色，同时这部作品的写作技巧也是三部之中最为娴熟的一部。</p> </li> 
 <li> <p><strong><a href="http://justinyan.me/post/2350">[每周读书 九十四] Mario Puzo——《教父》</a></strong><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/10/jiaofu-blog.jpg" alt="教父" /><br /> 小说中权势斗争的你来我往，人物内心的微妙变化，以及作家时不时冒出来的一两句警语，教父的语录都令读者兴奋不已。</p> </li> 
 <li> <p><strong><a href="http://justinyan.me/post/2360">[每周读书 九十五] 太宰治——《人间失格》</a></strong><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/10/renjianshige.png" alt="人间失格" /><br /> 读这部小说，最令人震撼的不是主人公诡谲的视角抑或令人切齿的软弱，而是看似不可思议实则被我们熟视无睹的现实，其洞穿世事的目光有如利剑，深深扎进读者胸膛。</p> </li> 
 <li> <p><strong><a href="http://justinyan.me/post/2368">[每周读书 九十六] 蒋勋——《吴哥之美》</a></strong><br /> <img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/10/Bayon-blog.jpg" alt="吴哥之美" /><br /> 读《吴哥之美》，我们可以在曾几璀璨的文明与今日废墟的原始之间感受文化冲击的美，也可以跟随蒋老师的文笔去思考生命与时间的意义，去思考一个人的成、住、坏、空，去思考这个千百年前的古老文明在时间长河中的今时往日。感谢蒋老师，给我们带来如此美的体验</p> </li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #96 &#x848B;&#x52CB; &#x2014; &#x300A;&#x5434;&#x54E5;&#x4E4B;&#x7F8E;&#x300B;</title>
        <link>https://justinyan.eth.limo/467A62D9-BAF0-4C2F-80C4-D616083C0D1D/</link>
        <guid>https://justinyan.eth.limo/467A62D9-BAF0-4C2F-80C4-D616083C0D1D/</guid>
        <pubDate>Thu, 29 Oct 2015 14:11:13 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/10/81V2518wL6L-1.jpg" /></p> 
<h2>一、蒋勋老师的《吴哥之美》</h2> 
<p>因为各种各样的原因，在国内并没有太多人了解吴哥。这几年随着吴哥旅游的日益发展，越来越多的游客涌入当地，去感受这座千年废墟的美。这是一件很值得高兴的事情，有更多的人去关注她，就意味着有更多的学者去研究她，修复她，人类历史上一个曾经耀眼的文明不至于沉埋在荒烟蔓草之里。</p> 
<p>国内对于吴哥王朝的资料不多，其中来自台湾的艺术工作者蒋勋蒋老师的介绍应当是最有名的。他曾十四次造访吴哥，并把自己当时的书信集整理成书，是为《吴哥之美》。蒋老师还在台湾大爱电视台做了一系列介绍吴哥的节目，节目的名字也叫《吴哥之美》。</p> 
<p>蒋老师曾经学过一点声乐，他讲话的声音非常好听，亲切而柔和。他讲过美术史，讲过文学，也讲过建筑，他把这些东西揉合在一起，为我们介绍了一个非常全面的吴哥。蒋老师身上还有一种非常难得的谦和，一个人的学识到了他这样的境界还保持着谦逊的态度是很难得的，他讲话的时候是在跟观众、跟读者、跟学生交谈，你完全感受不到来自“授课”的压力，他的谈吐仿佛一股暖风，款款拂入你的胸膛。</p> 
<p>关于《吴哥之美》这本书，大家能够阅读的部分也不过纸上的字句，所以我们本周要介绍的重点其实在文字之外，在遥远的吴哥文明里。《吴哥之美》是根据蒋勋在吴哥旅行期间与台湾编舞家林怀民的书信整理而成，他们二位是伴侣的关系，书中没有明确点破这点，所以我开始看的时候还有点困惑。这些书信是写给爱人的，读起来非常温暖平静，蒋老师在书信中给当时在柬埔寨金边教小孩舞蹈的林怀民介绍了吴哥的历史文化，以及吴哥建筑的美丽所在，同时也谈到了个人的体悟与思考。</p> 
<p>蒋老师对于许多文艺作品都有自己独到的理解，他在谈《诗经》、《楚辞》的时候就提出过自己的见解，深入人心，同时林怀民也是一位很厉害的艺术家，所以蒋老师可以用高雅的文字书写壮美的风景，镌刻废墟的宁静，舒展心中的感悟，畅谈深奥的哲理，这种精神层面的交流令人无比艳羡。</p> 
<p>读《吴哥之美》，我们可以在曾几璀璨的文明与今日废墟的原始之间感受文化冲击的美，也可以跟随蒋老师的文笔去思考生命与时间的意义，去思考一个人的成、住、坏、空，去思考这个千百年前的古老文明在时间长河中的今时往日。感谢蒋老师，给我们带来如此美的体验。</p> 
<h2>二、亲自到吴哥</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/10/AngkorWat-blog.jpg" alt="Angkor Wat" /></p> 
<p>然而有些事情不身临其境是无法体会的。</p> 
<p>我们看照片只能看到冰山一角，体会不到吴哥强盛的王朝气度；<br /> 我们听故事只能听到只言片语，领悟不到吴哥虔诚的宗教信仰；<br /> 我们读文字只能读到井中天地，感受不到吴哥颓美的断壁残垣。</p> 
<p>只有当我们真正地走进吴哥，在荷池前静坐等待黎明，在壁画前驻足直到斜阳，在塔顶上俯瞰一览天下，在石寺中静心感受微笑，我们会听到丛林中未名的鸟鸣，看到乡路间好奇的猴子，吹着从赤道来鼓鼓的热风，只有在这种时候，我们的五官全开，我们攀爬陡峻的吴哥寺的高塔，踩上窄窄的石阶战战兢兢，只有在这种时候，我们的心中充满敬畏，只有真正踏上吴哥的土地，我们才真正靠近这个失落了千年的文明。</p> 
<p>所以在读《吴哥之美》以外，在看蒋勋老师的电视节目以外，我们还很有必要亲自去一趟柬埔寨，去走一回吴哥，去看看这座千年前金碧辉煌今日已巨木丛生的废墟，王朝有王朝的气度，废墟有废墟的颓美，即使是被世人遗忘多年的破落旧城，在今天看来依然有其雄伟，有其端庄。</p> 
<h2>三、高棉的微笑</h2> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/10/Bayon-blog.jpg" alt="巴扬寺" /></p> 
<p>如果要在吴哥窟众多建筑之中选择一座令人感受最深的一座，我想还应该是有“高棉的微笑”之称的巴扬寺。</p> 
<p>到吴哥旅行的人一定会去的地方有两个，一个是最有名最具代表性的建筑吴哥寺，也称小吴哥，小吴哥荷花池前的日出亦幻亦真，令人迷醉，小吴哥的浮雕壁画体量巨大，令人惊叹，小吴哥的高塔陡峻异常，令人望而生畏。现在你只要在网上搜索吴哥，十有八九都是吴哥的日出。</p> 
<p>但是因为她太有名，我反而不太想去谈她，当我徜徉在小吴哥的回廊中，当我凝望着五塔上冉冉的红日，当我一次又一次路过映照蓝天白云的护城河，小吴哥给我的感受是祥和。而拥有 54 座佛塔，216 个巨佛微笑的巴扬寺，却更容易穿越时空投影在游人的心底。</p> 
<p>巴扬寺是阇耶跋摩七世修建的，他是一个挺特别的国王，他做的最大的一件事情就是让吴哥从以前的印度教改信了大乘佛教。所以在他之前吴哥的建筑都是印度教建筑，在他之后才是佛教建筑，也是他增修了吴哥城几个城楼上的四面佛像。同时在阇耶跋摩七世在世期间，吴哥王朝的国势也达到了巅峰，往后吴哥就开始衰落，最终灭于暹罗人（泰国人）的入侵，被迫迁徙到今日柬埔寨的首都金边。吴哥城也由此沉埋了几百年直到后来被法国人发现。</p> 
<p>站在巴扬寺，面对一座座巨佛的神秘的微笑，那种感觉是很特别的。你知道在几百年前这座石塔被称为“金塔”（记于元朝使者周达观的《真腊风土记》，真腊即吴哥，是现存最完整的吴哥王朝的资料），它的墙壁很可能是铺上了一层金箔的，金碧辉煌，构成佛像的巨石也都是严丝合缝的。但是今天金箔早已不在，石头也都裂开了。完璧有完璧的美，废墟有废墟的美。这些歪斜的石头反而给了微笑各不相同的角度，这些裸露的岩石反而给了佛像原始的质感。</p> 
<p>我觉得巴扬寺最美的地方在于，他大胆地采用了佛像的脸这样的形式，来表达佛教的思想。我们说金碧辉煌会褪去，石塔也会倒塌，但是佛像的微笑留下的神秘的感觉，似蒙娜丽莎，它所传达给人类的情感体验是超越时间的。几百年前她以金身俯瞰众生，几百年后她以石面笑对世人。存在只是一种形式，高棉的微笑只是走过了一个轮回，以不同的形式面对同样的世界。</p> 
<h2>四、心的驻足</h2> 
<p>吴哥有太多太多值得书写的东西，它的曾经强盛的历史，它的美的高度，它的今昔分明的冲击，无不萦绕在耳畔久久呢喃。但是这些故事也好，这些品评也好，都不如亲自走一趟吴哥，亲自去看一眼荷池前亦幻亦真的日出，亲自去仰望佛塔上祥和的微笑，我觉得这些亲自的体验比起它人絮絮叨叨的描述要深刻得多。</p> 
<p>最后援引蒋老师的话，结束这一期感叹比书写要多的每周读书。</p> 
<blockquote>
 <p> 美无法掠夺，美无法霸占，美只是愈来愈淡的夕阳余光里一片历史的废墟。帝国和我们自己，有一天都一样要成为废墟，吴哥使每一个人走到废墟的现场，看到了存在的荒谬。 </p>
</blockquote> 
<p>15.10.28 / 夜<br /> 于自宅</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #95 &#x592A;&#x5BB0;&#x6CBB; &#x2014;&#x300A;&#x4EBA;&#x95F4;&#x5931;&#x683C;&#x300B;</title>
        <link>https://justinyan.eth.limo/22FEF730-9D53-432E-8995-5592B464B473/</link>
        <guid>https://justinyan.eth.limo/22FEF730-9D53-432E-8995-5592B464B473/</guid>
        <pubDate>Thu, 22 Oct 2015 14:22:51 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/10/df66dc9670ab4427ae89a150cec7e073.jpg" /></p> 
<p>二战对于整个世界文化的影响甚为深远，这场残酷的战争促使日本诞生了许多文艺大师，同时也让这些生而敏感的人相继自戕于生命最绚烂的时刻。这其中包括了我们之前介绍过的<a href="http://justinyan.me/?s=%E4%B8%89%E5%B2%9B%E7%94%B1%E7%BA%AA%E5%A4%AB">三岛由纪夫</a>、<a href="http://justinyan.me/?s=%E5%B7%9D%E7%AB%AF%E5%BA%B7%E6%88%90">川端康成</a>，以及本周读书的太宰治。</p> 
<p>太宰治在战后的日本文坛名震一时，《人间失格》是其最具影响力的作品，很多读者即使没读过也有所耳闻，在日语中人间失格即是失去做人的资格的意思。1948 年5 月《人间失格》连载结束，同年 6 月作家携一女读者投水自杀。这部作品极尽阴郁之能事，以第一人称视角给我们展示了一个幽暗可怖的世界。</p> 
<p>读这部小说，最令人震撼的不是主人公诡谲的视角抑或令人切齿的软弱，而是看似不可思议实则被我们熟视无睹的现实，其洞穿世事的目光如利剑，深深扎入读者的胸膛。我们所忽略的一切在主人公眼里是那样扭曲，他所做的浮想，所发出的疑问我相信大多数人也都曾想到过，但是要清晰地捕捉这些记忆，把为世人不耻的事情用文字书写下来，不具备过人的勇气，不处于非常的心境是做不到的。</p> 
<p>即便是作家自己，也还是在结尾画蛇添足地写上一篇后记，声称小说的三篇手札是自己于某酒馆老板处所得，然而今天我们看太宰治一生的经历，已经可以很清晰地看到主角叶藏就是太宰治自己，叶藏的故事也就是太宰治的生平。小说从主人公青少年时期一直讲述到中年，他酗酒、沉迷女色、参加非法集团、多次自杀未遂，最终被送入精神病院。主人公年少便终日惶惶不安，惧怕世人，靠演戏搞笑来应付人生。“每周读书”在<a href="http://justinyan.me/post/1943">介绍《金阁寺》</a>时曾比喻艺术家能接收到普通人忽略了的信息，于是成就艺术。《人间失格》中给我们的信息就是大量的被我们忽略的苦难。主角年幼时被家里的庸人侵犯的苦难，在大家庭中处于幼子渴望得到父爱的苦难，自闭不敢与任何人交谈的苦难，看到太多“正常人”看不到的信息而惧怕与常人交流的苦难，这些“正常人”根本不会碰到的问题到了主人公那里就是一股洪流，他的一生都在逆流挣扎，在波涛中飘荡。</p> 
<p>这就好比正常人只能看到可见光而作家可以看到红外紫外的光线，也因此本书中有很多非常独特而精彩的评论，比如主角参加左翼集团的集会，仅仅是因为其“非法”的性质（“因为世上合法的东西反而可怕”）而不是其理论有多么崇高。“不过在我看来，他讲的那些都是再简单不过的东西，理论诚然不假，人类的内心却比理论复杂、恐怖得多。谓之贪欲，则不足够，谓之虚荣，亦不贴切。将色与欲两者并列再一起，亦不符实。我隐约觉得人世深处，不是只有经济方面的事物，还有鬼怪、奇诡的事物存在。”</p> 
<p>又比如作者对世人圆滑处世的批判：“圆滑处世的才能？我简直哭笑不得。我有什么圆滑处世的才能！不过，像我这种恐惧人类、逃避人世，总是敷衍了事的人，是否无意间契合了那些奉行‘明哲保身’之道的精神狡猾之徒的处世论呢？人啊，明明一点也不了解对方，错看对方，却视彼此位独一无二的挚友，一生不解对方的真性情，待一方撒手西去，还要为其哭泣，念诵悼词。”</p> 
<p>这些辛辣的文笔总让我想起三岛由纪夫《假面的自白》（<a href="http://justinyan.me/post/1998">每周读书 七十五</a>），尽管三岛在《太阳与铁》中表示自己并不喜欢太宰治的作品，但是很难想象此作完全没有受到太宰治的影响。相较之下，《人间失格》更具故事性，而《假面自白》则自传性质更强，但两部作品都是从我们习以为常的波段中拣出可怕的事实，咯出血一般的疼痛。</p> 
<p>15.10.20 / 中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #94 Mario Puzo &#x2014; &#x300A;&#x6559;&#x7236;&#x300B;</title>
        <link>https://justinyan.eth.limo/4791A673-39B0-42C1-B5D5-5DD14134D1D8/</link>
        <guid>https://justinyan.eth.limo/4791A673-39B0-42C1-B5D5-5DD14134D1D8/</guid>
        <pubDate>Tue, 13 Oct 2015 14:03:23 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/10/71Jk3baRdnL-1.jpg" /></p> 
<blockquote>
 <p> 假期结束了，各位读者假期过得好吗？枫影在假期间又找到可以读的好书了，本来假期前已经写好两篇书评了，但是放假玩到没时间更新了 XD，本周开始陆续补上。 </p>
</blockquote> 
<p>工作后深感自己生活圈子的窄小，每日所见以为是整个世界，其实世界大得很。即连互联网这样的小圈子，也有广袤的深网(Dark Web)领域不为世人所知，何况俗世。1969 年作家马里奥的《教父》写的就是鲜为人知的黑手党世界。此作让作家一举成名，他改编的同名电影亦获奖无数，被世人奉为经典。</p> 
<p>《教父》在大框架上围绕核心人物“教父”的几个重要事件展开。要塑造一个具有信服力的人物形象，一定不要让人物亲口说出他有多伟大，作家一开始就使用几个不同的小人物求助教父事件，借配角之口把教父伟岸的形象打造得有血有肉，教父从不废话，只做应该做的事，配角人物的神色与心理让教父的形象更深入人心。</p> 
<p>在建立了教父形象之后，作家立刻安排教父遇刺事件把故事推入紧张的第二幕，以家族事业面临倾覆及自身生命遭到威胁推动每一个人物挣扎着向前奔跑，最终更以教父之死为契机发动最终幕的大决战，故事驱动力强劲，高潮迭起。</p> 
<p>全书最为读者称道的是作家对黑手党家族权势斗争的描写，作家构建了一个庞大的暗世界，这个世界的基石是意大利人的“缄默规则”（美国法律规定嫌疑人可以保持沉默，如此即使有人被捕也不会供出家族的其他成员，家族会负责入狱者的家庭与出狱后的生活。），这个世界的统治者就是“教父”。作家在写作过程中频频发出警语，刚开始看的时候有种读古龙小说的感觉，两者都擅长人物塑造，都擅长概念上的斗争而不是具体的火拼，往往决战时刻总是一击必杀。为了让这一击有足够的冲击力与信服力，作家需要在决战前做足铺垫，着力于决战双方实力的权衡，让读者为悬念揪心不已，最后在击杀的时刻陡然反转，令人惊呼。</p> 
<p>在战斗的描写上，马里奥要比古龙逊色不少，但是马里奥在权势斗争上的写作则比古龙要更合理更具说服力。比如教父白手起家的背景描述，比如教父遇刺后作家能提出“这只是生意上的手段，无关个人恩怨”这样的观点。现实生活中我们都知道法律与政府并不能解决所有的问题，我们的世界很大，通行的法则很多，明面上的法则仅仅是其中一种。教父的法则就是千万看不见的法则之一，它与光明世界的法则是并行的关系，不是非此即彼的关系。但他也得生活在光明世界里，所以教父在非法的赌博生意之外也有正当橄榄油生意，教父的顾问除了协助非法的事务外也是一个正当的律师。可以说《教父》描述的世界如此合理，读到教父如何帮助小人物解决法律无法解决的问题，如何以非法手段威慑权倾好莱坞的大导演而对方不敢骂教父一声的时候，多少读者对教父产生崇拜之情啊！</p> 
<p>但是《教父》一作毕竟是黑帮小说，有黑帮就一定有暴力，而此作的遗憾正在于暴力的描写。《教父》里有好几场刺杀与决战场面，对于故事情节的推动至关重要，但是读来总是有一种——“太简单了吧”——的感觉，原因就在于铺垫的不足。比如说开篇一直在极力渲染凶猛过人的打手卢卡布拉齐有多么多么厉害，一个人顶十几个人这样，但是这人最后怎么了呢？被两个敌人骗过去稀里糊涂就被暗算挂了？我去，这么牛逼的人物，放武侠小说里分分钟秒杀一个军队啊。当然卢卡是被暗算加二打一整趴下的，现实世界里再牛逼的人也会趴下，但是这是小说啊！</p> 
<p>卢卡布拉齐还好，算是个次要人物，那教父呢？教父可是个山一般的人物啊，说遇刺就遇刺了，还一连被人打了好几枪，虽然说保镖不在身边是吧，但是怎么说也是个教父啊，只有一个保镖怎么够啊？好吧后面的部分作家解释说是因为近几年顺风顺水就疏忽了，但是遇刺前你怎么也得交代一下是吧，真是走在路上突然跑出来俩杀手稀里糊涂就把教父杀得趴医院半年不得动弹。</p> 
<p>再往后一点，就是主角，教父之子迈克尔刺杀两个敌人，这里写得还相对比较有悬念，还渲染了非常紧张的气氛，如果失败了怎么办？读者还捏了一把冷汗。但是，但是，真的迈克尔走过去两枪就干掉敌人了啊，敌人可以连最凶猛的打手卢卡布拉齐都干掉的人啊！这么简单就挂掉了？好歹也挣扎一下反抗一下，打他个十来二十分钟嘛？</p> 
<p>最值得吐槽的还得是最后一场大决战，随便派了几个小弟就把四大家族干趴下了。我想说，如果四大家族这么容易干趴那早干嘛去了？早点把这些黑帮大佬都干趴下不就完了。这里还是属于铺垫不足，好歹也解释一下教父退隐的几年都准备了些什么，要解释一下这些大佬以前有多么多么牛逼，现在有多么松懈，要解释一下为什么之前不能轻易收拾掉，现在教父一死就随便怎么收拾都没问题了。这些东西基本都是一笔带过，很少给出解释，这样稀里糊涂的战斗就结束了。</p> 
<p>虽然吐槽了战斗部分，但《教父》还是看得非常过瘾的一部小说，瑕不掩瑜。其实读者为之兴奋的并不是暴力打斗的描写，这些都不重要，重要的是小说中权势斗争的你来我往，人物内心的微妙变化，以及作家时不时冒出来的一两句警语，教父的语录。光是这些已经足以让这部作品大放异彩，至于对打斗什么的有高要求的读者，嗯，还是看金庸吧，打个过瘾。</p> 
<p>P.S. 金庸后期的作品其实也慢慢走向无招胜有招的境界，最后封笔之作《鹿鼎记》因为描写权势斗争比较多，其实也不怎么侧重打斗场面了，韦小宝在这部作品里只会脚底抹油的招式。</p> 
<p>2015.09.25/中午<br /> 于 T.i.T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #93 Christina Baker Kline &#x2014; &#x300A;&#x5B64;&#x513F;&#x5217;&#x8F66;&#x300B;</title>
        <link>https://justinyan.eth.limo/D96A3023-131F-4DA5-9FD5-B03138AF9187/</link>
        <guid>https://justinyan.eth.limo/D96A3023-131F-4DA5-9FD5-B03138AF9187/</guid>
        <pubDate>Thu, 24 Sep 2015 14:13:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/09/orphan-train-girl.jpg" /></p> 
<p>《孤儿列车》是和<a href="http://justinyan.me/post/2326">《无声告白》</a>、<a href="http://justinyan.me/post/2335">《24个比利》</a>一起看的，一口气读了这么多畅销书，深刻地感受到这些套路的定式，以及定式带来的快餐式的空虚。不过我还是很喜欢《孤儿列车》里讲故事的老婆婆薇薇安这个角色，同时这部作品的写作技巧也是三部之中最为娴熟的一部。</p> 
<p>1800 年代，美国街头有大量的流浪儿童沦为乞丐，当时年仅 26 岁的美国人 Charles Loring Brace 成立 Children’s Aid Society 组织，并组建了有名的“孤儿列车”（Orphan Train)。Charles 认为只有正当的工作与良好的教育才能使这些流落街头的小孩成长为一个能够自力更生的美国公民。“孤儿列车”就是为了把东部大城市的流浪儿童运送到地广人稀的西部，帮助小孩找到寄养家庭而出现的。</p> 
<p>尽管孤儿列车的初衷是以慈善为宗旨，但世事不如意者十有八九，不是每一个寄养家庭都有能力可以负担多一份口粮，也不是每个家庭都能善待小孩。当时有不少小孩在这些家庭受到虐待，家长忽视规定没有送小孩去念书，小孩被迫干苦力活，甚至住在猪圈和马厩，很难说小孩在寄养家庭就一定比流浪生活过得更好。在 1929 年美国经济大萧条之后，运作了 75 年的“孤儿列车”终告停止。尽管“孤儿列车”一直饱受争议，但是 Charles 仍是无可置疑的慈善先锋，他的孤儿列车直接催生了美国现代的儿童保障制度。</p> 
<p>美国现行的儿童保障制度由慈善机构担保每个寄养家庭的资格认证，每个月慈善机构会给寄养家庭一笔钱用于支付寄养儿童的各项开销，现在的制度无疑比起 100 多年前要科学得多。但是是否现行的制度就完美无缺了呢？</p> 
<p>英国作家 Christina Baker Kline 挑选了现代儿童保障制度下的不良少女莫莉，与曾经坐过孤儿列车的老婆婆薇薇安这两个人物，通过人物的碰撞为我们讲述了两代孤儿的故事。</p> 
<p>莫莉作为故事的引子，因缘际会来到薇薇安家做社区服务以免去因偷书带来的感化院惩罚，从而牵出薇薇安幼时在孤儿列车上的经历。薇薇安来自移民家庭，在一场大火中成为孤儿，从而辗转上了孤儿列车，遭遇了各种悲惨的故事。故事总是一章以明亮幽默的色彩讲述莫莉的故事，下一章则回到黑暗的20 世纪，在阅读的过程中我非常喜欢老年的薇薇安以全知全能的视角，幽默地应对生活的态度，而对进入黑暗世纪的故事感到焦虑。这正是本作精妙之处。</p> 
<p>明暗的强烈对比令读者感到深刻的冲击，但是就故事本身来说，由于没有接触过这段历史背景，并没有很强的代入感，主角所遭遇的不幸也是现如今很多影视作品都用滥的桥段，基本上看了开头就能猜到后面会有什么事情发生，而且薇薇安后来终于遇到好人家之后就一路顺风顺水，也有点缺乏波澜。总的来说，《无声告白》与《孤儿列车》都是一个套路，抓住比较符合读者关注点的情感切入点，以常人不曾经历的情感体验来打动读者。但是这两部作品的结尾都比较普通，中后期悬念不足导致结尾无力，比如《孤儿列车》后期过于平稳，《无声告白》则中后期直接阐明了孩子自杀的终极悬念，已经没什么悬念可以再布置了。</p> 
<p>三部作品之中应该《24个比利》的故事最好做铺垫，悬念可以轻易就推到顶点——毕竟精神病可以是极不稳定的状态——但是作者为了纪实就放弃了技巧的应用，有点可惜。</p> 
<p>15.09.24/中午<br /> 于 T.i.T</p> 
<h2>参考链接</h2> 
<p><a href="https://en.wikipedia.org/wiki/Orphan_Train">Wikipedia: Orphan Train</a><br /> <a href="https://en.wikipedia.org/wiki/Christina_Baker_Kline">Wikipedia: Christina Baker Kline</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #92 Daniel Keyes &#x2014; &#x300A;24&#x4E2A;&#x6BD4;&#x5229;&#x300B;</title>
        <link>https://justinyan.eth.limo/97DFFDD2-8A3F-42EE-9DB2-67E2E15A4E37/</link>
        <guid>https://justinyan.eth.limo/97DFFDD2-8A3F-42EE-9DB2-67E2E15A4E37/</guid>
        <pubDate>Thu, 17 Sep 2015 13:47:23 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/09/819dGBPTC7L-1.jpg" /></p> 
<p>1977 年，比利·米利根(原名：William Stanley Milligan)美国俄亥俄州立大学发生了三起抢劫强奸案，却被诊断为患有多重人格分裂症而获无罪释放。这件事情在当时引发群众激烈的争议，有人认为他是演技超凡的罪犯，甚至有人企图谋杀当时还在精神病院接受治疗的比利。事情的真相到底如何呢？作家 Daniel Keyes 与比利经过数百次的谈话，采访了 62 位与比利相关的医生、护士以及亲人朋友，于 1981 年出版《The Minds of Billy Milligan》一书，揭露比利悲惨的一生，试图为比利正名。</p> 
<p>2014 年 6 月，作家 Daniel 逝世，同年 12 月，比利因癌症逝世。我想这可能是最近这本书又热门起来的原因。读完这本书，我感受到了深刻的震撼，不是因为作者的写作技巧与故事情节，而是这个真实的事件令人瞠目结舌。比利的一生过得太坎坷，太悲惨，人们的不信任与攻击太冷漠，太残酷。</p> 
<p>我们普通人也会有类似多重人格出现的时候，比如情绪低落的时候，比如有反社会情绪的时候，但是普通人与病人的区别就在于：分裂症患者在人格转换的时候并不共享记忆，其中一个人格无法记住另一个人格做过的事情，而且每个独立的人格有自己的名字和生活背景。这一点应当是出于自我保护而演变出来的，因为多重人格分裂的病人大都受到过巨大的心灵无法承受的打击，才分裂出一个用于承受痛苦的人格，而自己的核心人格则可以眼睛一闭忘记痛苦。</p> 
<p>比利就是在年幼的时候，遭遇继父的虐待，才分裂出用于承受痛苦的丹尼与戴维两个人格。比利的核心人格的感受就是，一旦继父要虐待他了，他就把眼睛闭起来，等到睁开眼睛的时候，他不知道怎么就到了另一个地方，时间也不对了，但是所有的痛苦就好像没有发生过一样。</p> 
<p>什么样的痛苦能够让一个人非得分裂出一个独立的人格来承受呢？比利的继父不仅殴打他，辱骂他，还鸡奸了他，甚至曾经活埋过他，并告诉他如果他跟母亲说起这件事情就会把他杀掉然后跟母亲说他自己跑掉了。继父对比利地狱般的虐待正是比利的心智崩溃的开始。</p> 
<p>他早期分裂出的人格是用于承受痛苦的，后来他又相继分裂出许多其他的人格。在医生的帮助下，主要人格都陆续出来与医生交谈，经过长时间耐心的治疗，比利终于开始以核心人格为基础融合其他的人格。当大多数人格成功融合的时候，一个全新的人格“老师”出现了。医生问他除了画画（比利有好几个人格都擅长绘画，曾以卖画维生）还希望做什么，最后他选择让医生认识的作家把他的故事写出来，让更多的人知道虐待儿童的事情。于是有了这部《24 个比利》，大多数完整的记忆与有逻辑的叙述，都是由这个融合的人格“老师”对作家讲述的。</p> 
<p>但是事情并不总是美好的。比利虽然被判无罪却需要一直呆在精神病院里接受治疗。一开始他呆的医院都是有学术界权威的医生在主导，大家很快就相信比利确实是人格分裂而不是装出来的，都尽心尽力想要帮助比利康复。但是随着比利可以假释的期限临近，外界的报刊舆论对比利的声讨越来越激烈，什么“强奸犯很快就可以自由出入我市”之类的报道每天都上头条。刚刚才能融合的比利看到这些报道后承受了相当的打击，人格又开始分裂。由于分裂的人格无法记得上一个人格的记忆，他有时候醒来发现自己被人抓住，就开始反抗，造成了医护人员的伤害。这正好应了外界的批评，比利再次接收法院的审判。</p> 
<p>最后他被判送入以收治精神病犯人而臭名昭著的利马医院，传说进入这家医院就相当于判了死刑。比利在这家医院遭受了毒打，注射了过量镇静剂（镇静剂不利于多重人格分裂症，会恶化病情），比利在利玛医院期间 Daniel 还与他一直联系，后来把他的抗争的故事写成了本书的续集《比利战争（The Milligan Wars）》。由于各种原因，这本书于 1994 年在日本出版，2000 年于台湾出版，却始终无法在美国出版。</p> 
<p>从《24个比利》这本书，我们看不到作者刻意埋伏的悬念与注重情节的轻重安排，分明这是一个非常好的故事题材，只要稍加修剪就能成为一本极好的犯罪小说，但是作者不。从一开始作者就阐明了比利的全部 24 个人格，然后从比利被捕开始，到比利的多重人格被发现，到比利融合开始回忆自己悲惨的一生，到比利被关进利马医院遭受非人的待遇再也找不回融合的人格。作者写这本书以尽量纪实的视角去写，他是为了帮比利发出控诉而写，不是为了写小说而写。说实话，以一部文学作品的视角，书中很多铺陈比利人格切换的故事的地方都可以省略，以使情节更加紧凑，这部作品在写作技巧上可谓平平无奇，但是他道出的故事却惊天动地。</p> 
<p>2015.09.05/下午<br /> 于自宅</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #91 &#x4F0D;&#x7EEE;&#x8BD7; &#x2014; &#x300A;&#x65E0;&#x58F0;&#x544A;&#x767D;&#x300B;</title>
        <link>https://justinyan.eth.limo/1EF56C9A-6AB1-41FE-B1C0-E6A6F9B60811/</link>
        <guid>https://justinyan.eth.limo/1EF56C9A-6AB1-41FE-B1C0-E6A6F9B60811/</guid>
        <pubDate>Thu, 10 Sep 2015 11:52:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/09/v2-1e3995fbfb3c5a5471748340c4ac423b_1440w-1.jpg" /></p> 
<p>2014 年 6 月 美籍华裔女作家伍绮诗（Celeste Ng）的首部小说 <em>Everything I Never Told You</em> 在美国出版，迅速受到美国读者关注，成为 Amazon 2014 年最畅销小说。今年（2015年）7 月简体中文版正式登陆中国，于是出版社与各大媒体争相造势，什么“中国女作家跻身美国文坛”、“打败斯蒂芬金成为 2014 年亚马逊最畅销小说第一名”之类的新闻比比皆是。</p> 
<p>这些媒体不要脸的吹捧我们且抛下不理，单就《无声告白》一书来说，作者的写作技巧非常成熟，擅长人物塑造与情感描写，通过 6 个各不相同的主要人物把异类、歧视、压力等话题发挥得淋漓尽致。尽管此书水平不错，但是单就一次 Bestseller 并不能代表作者就真的在美国文坛占有地位了，我们拿之前 <em>The Martian</em> (<a href="http://justinyan.me/post/1933">每周读书 七十一 Andy Weir《The Martian》</a>)在 GoodReads 上的数据对比，<em>The Martian</em> 有 176,258 ratings，28,212 reviews 而 <em>Everything I Never Told You</em> 只有 55,435 ratings，6,812 reviews（截至9/3/2015）。已经算很多人关注的小说，但并没到疯狂的地步。</p> 
<p>回过来看作品本身。小说第一章展示了一个美好的美国混血家庭，以找不到女儿 Lydia 为契机，使第一章处于纷乱与麻烦之中，最终以警察抽干湖水发现 Lydia 的尸体结束本章，情节非常紧凑，轻描淡写之间描述了由白人母亲与中国父亲结合的家庭，以及家里 Lydia 集所有聚光灯于一身的地位。不得不说，这个开头非常漂亮！</p> 
<p>带着“Lydia 死因未明”的主题悬念，作者开始为我们展示父亲 James 的家庭背景：上世纪 60 年代年幼的他随着偷渡打工的父母亲到美国，从小在学校就被视为异类，一直渴望却永远无法融入大家。以及母亲 Marilyn 的家庭：她有位传统的母亲，她自己一直渴望过得与母亲不同，却因为是女性的身份而郁郁不得志。</p> 
<p>这些背景故事单独拆分都可以写出不错的情感故事，但是作者拖着“Lydia 死因”这个悬念却一直在讲述她父母亲的故事，回忆的部分太啰嗦，令人感觉情节拖沓，类似火影的“回忆杀”。但是这一部分又是后面情节发展的必要铺垫，不可或缺，如果作者处理得好应该可以更简洁一点，或者处理得更起伏得当一点，就是说：你可以做背景描述，但是不要描述得太无聊。我觉得这一部分当是全书写得最差的地方。</p> 
<p>作者为每一个主要人物都准备了大量素材，用于表现他们在社会群体中被排挤，被欺负，被歧视等苦痛，但是过于细碎，作者擅长细节描写，尤其是以小女儿 Hannah 童稚的视角看到的世界，令人叹服，却不怎么擅长组织起所有的细碎的材料，在表现 James 与 Nath 相关背景故事上堆积了诸如泳池、运动会等故事，却没有层次感与递进感，与其堆砌所有的材料，还不如只选择最具有表现力的几个场景。这种琐碎的分散感还体现在几个主要人物的份量上，从故事上来看 Lydia 无疑“应该”是最重的主角，因为她是这部小说的开篇，她的死因是整部小说的主线悬念。但是她的死因与家庭的每个人都有关联，于是作者又花费了大量的笔墨在父母亲与哥哥 Nath 身上，一旦写到父母亲就必须写父母亲各自的家庭，很容易就分不清轻重。如果每个人物都是主角，这本书就没有主角。</p> 
<p>而说到本书情节最紧凑，情感起伏最大，每一个人物的表现都有血有肉又哭又笑生动活现的部分，应当是 Marilyn 离家出走去实现自己读完大学成为一生的梦想，但发现自己又有了第三个孩子不得已回归家庭的那一刻。在这个支线中，每个人物的性格、地位与内心的渴望都得到淋漓尽致地表现。</p> 
<p>Marilyn 渴望摆脱母亲的命运，渴望与众不同，渴望成为医生，但是与此同时，又与其他普通人一样在医院里看到女医生会觉得奇怪，这种矛盾的心理赋予了 Marilyn 鲜活的人性。</p> 
<p>James 则渴望融入社会，渴望别人接纳自己，一生生活在自己受尽排斥的阴霾之中，看到儿子 Nath 逐渐成为自己当年的影子他开始疏离儿子，而妻子 Marilyn 无故地离家出走又让他觉得果然白人是看不起中国人的，跟他结婚就是不应该的，多年的疮疤再度被揭开。</p> 
<p>还有女儿 Lydia，脆弱的内心一直单纯地祈祷让母亲回家，只要母亲回来就好，于是这种渴望在母亲回家后成为 Lydia 内心最大的负担。好在有哥哥 Nath，这个习惯了被父母忽视的男生，自立自强，一直坚信有一天能够离开这个令人不开心的家庭，找到自己的自由。</p> 
<p>我觉得这一段真是全书写得最精彩的一段，每一个人物都各有牵绊，各有自己的打算，各有自己的悲伤。而 Marilyn 的离家出走以及回归，则使各个人物后面的心理发展成为自然。情感的澎湃在孩子们呆视母亲仿如陌生人，又肆泪拥抱母亲的那一刻达到顶点。</p> 
<p>这一段大约在全书 50% 的位置，这个位置是个分水岭，前半部分除了开头之后情节拖沓，但是交代的背景又不可或缺，后半部分有了前面的铺垫，展开来顺风顺水，自然得多，只是还稍微嫌有点太长了。</p> 
<p>最后故事的结尾在 Nath 和 Jack 在湖边的打架结束，Nath 沉入湖底，感受了妹妹当时的感受，随后又浮出水面，“太晚了。他已经学会了怎样不被淹死。”</p> 
<p>我觉得故事的结尾有些过于平淡。按照作者开篇的悬念来写，如果把 Lydia 的死因放在最后揭示会更令人感动。作者在书中把 Lydia 深夜划小船到湖中央的原因处理成是给自己一个借口，从来不会游泳的她如果能够游到岸边就重新开始新的生活，否则就让一切都结束吧。这种解释始终有点牵强，毕竟带有的乐观成分太高，而 Lydia 给人的感觉是她已经受够了这个高压炉了，她已经完全受不了了。</p> 
<p>一个好的开头可以让这本书卖得不错，一个好的结尾可以让你的下一本书卖得不错。这本书的开头不错，中间部分有点拖沓但很令人感动，如果结尾能够再掀高潮就更好了。</p> 
<p>15.09.03/夜<br /> 于自宅</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #90 &#x4E1C;&#x91CE;&#x572D;&#x543E; &#x2014; &#x300A;&#x6076;&#x610F;&#x300B;</title>
        <link>https://justinyan.eth.limo/77EA0B8F-964B-4A98-8BF7-D4EBD9EDBDE6/</link>
        <guid>https://justinyan.eth.limo/77EA0B8F-964B-4A98-8BF7-D4EBD9EDBDE6/</guid>
        <pubDate>Thu, 03 Sep 2015 13:27:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/09/s3814606-1.jpg" /></p> 
<p>自 1985 年出道以来，东野圭吾每年都能保持 3—5 本作品的发行，真不愧是名副其实的高产作家。这本《恶意》是东野 1996 年发行的 5 部作品之一，同年的作品我只读过短篇集《毒笑小说》，那部作品差强人意，并不怎么有趣。</p> 
<p>然而《恶意》却以其机巧的反转设计，特别的叙事结构，多元的人物塑造，以及时不时穿插的揶揄讽刺，深深地吸引了读者。从此作我们可以看出东野已跳脱本格派推理的“凶手是谁”的悬念，转而在凶手动机的追查上巧设机簧。</p> 
<p>《恶意》一书围绕“校园暴力”的主题展开，这是一个大多数人都非常熟悉的话题，经历过校园暴力的人，无论是欺负者还是被欺负者，都很难忘记那段经历，于是这本书就很容易引起读者的内心共鸣。虽然现实生活中大多数校园暴力并没有小说作品中的严重，但是类似事件还是会给年少的内心留下深刻的阴影。（比如枫影现在还会很清晰地记得中学时被人欺负的场景，泪目。）《恶意》抓住这个特别残忍却又容易被世人忽略的话题，制造了一起极端的事件，发人深省，读罢全书，令我印象最深的不是东野炉火纯青的写作技巧和一波三折的反转，而是这个司空见惯的话题下世人习以为常的冷漠，东野抓住了这个病态的“日常”，笔锋犀利，入木三分。</p> 
<p>枫影非常喜欢技巧漂亮的作品，比如独倚望江楼的周邦彦，比如马蹄声洒落在街上如白色小花的何其芳，东野的作品同样漂亮，不在辞藻的雕琢，在故事的结构。</p> 
<p>《恶意》九章，各以不同人物自己的手记、回忆、自白来写，翻开此书的第一页我就想起阿加莎的《罗杰疑案》，这部作品也是比较特别的以凶手的第一人称视角来写的，所以看到本书的第一段就已经知道凶手是谁了，好在这本书凶手是谁并不重要（笑）。这样的写法好处非常明显：因为是第一人称视角的手记，可以随意布置盲点（反正是从我嘴里说出来的，从我的笔下写出来的，做不得真）。基于这一点，作者才得以在本作中自由反转，一层又一层，给读者带来畅快的情感体验。</p> 
<p>为了实现多人视角的叙事结构，作者需要倾注相当的精力。虽然凶手与被害人只有那两个固定的名字，但是反转的故事一定有对立的人格，每一个人格都需要相当的思虑与设计，才能成为一个血肉丰满的人物，否则就是空洞的白纸，所以作者至少要设计两个对立性格的凶手，以及两个截然不同的被害人。除了警官加贺恭一郎的性格可以不变外，这本书的三个主要角色就得有五个性格。再加上配角们，加上第七章加贺去调查当事人周边的人的访谈。每一篇简短的访谈都是一个个性鲜明的人物，仅仅从谈话的语气就需要分辨出这是个什么样的人物，虽然相对于长期存在的配角来说，这样的人物只要访谈一结束就可以消失了，但是塑造这些谈话还是需要一定的精力。这是视角切换带来的缺点，作家需要设计的人物变多了，但是可以看到作家在此作中可谓游刃有余，这就需要作家平时有一定的积累。这让我想起《毒笑小说》这本短篇集，当时给我的感觉就是：这大概是作家平时积累的写作素材拿出来热一热就发表了的吧。</p> 
<p>除了人物之外，《恶意》中还出现了几处“故事中的故事”这样的设定。由于本作的主要事件与小说作家的作品相关，难免会描述几个作品的内容，这里虽然只是提到故事梗概，但每个故事都十分完整，足见作家平日的构思，尤其是核心作品《禁猎地》，把“校园暴力”的故事以被害人作品这样的形式写出来，比起直接叙述被害人的经历要更令人信服。还有本作中穿插的对教育界的揶揄讽刺也是景上添花的闪光点，比如“老师和学生的关系建立在一种错觉上，但是维持这种错觉对双方而言都是幸福的事情”，类似这样的论点在书中有几处，文笔非常犀利。</p> 
<p>自此，我们可以说《恶意》是一部技巧成熟，立意高远的作品，然而，就如书中加贺警官所说：</p> 
<blockquote>
 <p> 解释得通和百分百信服是两码事。 </p>
</blockquote> 
<p>推理小说如果逻辑不够缜密则容易给读者留下无法信服的印象。有的读者喜欢追查推理小说的蛛丝马迹找出逻辑漏洞，我对这方面兴趣不大，但是有一点始终觉得不太舒服：就是凶手野野口修的真正动机。</p> 
<p>他背负着少年时期“校园暴力”受害者的包袱，又经历过“被迫成为协助强暴同学”的帮凶，这段经历确实足以成为他内心的阴影，再加上被害者日高以德报怨的帮助，他自身的妒忌、癌症等多方面因素的侵扰下，野野口成为真凶的动机可以说是很成熟的。但是，作者刻意采用的多人第一人称视角切换的写法，却恰恰漏了“真实的野野口”这一视角。读完全书，我依然非常好奇真实的野野口修到底是什么样的人物，他的性格应该十分阴沉，善于演技，而且善于写作，而且内心的扭曲应该是世人无法想象的，我们能想象的是，他一定有一套自己发展出来的扭曲但是坚实的三观。这一个视角如果写得好的话，我认为比起以加贺的角度去解读野野口的心理，要更加令人震撼。</p> 
<p>但是很可惜作者并没有写下“真实的野野口”这样的视角，连一次以这样身份的对话都没有，说得好听叫“留下悬念”，说得不好听就是“结尾太仓促了”。</p> 
<p>最后我想说瑕不掩瑜，这部《恶意》依然是东野圭吾非常优秀的作品，即使带着“没有真实的野野口的叙述”这样的遗憾，也不妨碍它成为与《白夜行》并列的好作品。</p> 
<p>15.08.30/下午<br /> 于自宅</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #89 &#x4E1C;&#x91CE;&#x572D;&#x543E; &#x2014; &#x300A;&#x865A;&#x65E0;&#x7684;&#x5341;&#x5B57;&#x67B6;&#x300B;</title>
        <link>https://justinyan.eth.limo/E97F36C4-6414-40EC-8249-937AAD8A5793/</link>
        <guid>https://justinyan.eth.limo/E97F36C4-6414-40EC-8249-937AAD8A5793/</guid>
        <pubDate>Thu, 27 Aug 2015 15:14:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/08/54015228-1.jpg" /></p> 
<p>我们说东野的作品最大的亮点在于社会问题与人性的探讨，但是他并不是从一开始就写这些话题的。出道作《放学后》就是经典的推理小说，重点在“凶手是谁”这件事情上，到了后来小说《宿命》被称为是创作风格的分水岭，从此以后，凶手不再是小说的主题，“凶手的动机”成为他作品中的主题悬念。以此为契机，东野创作了《白夜行》、《幻夜》、《秘密》、《嫌疑人x的献身》等作品，这一时期的东野可谓是人生巅峰。</p> 
<p>这本 2014 年的作品《虚无的十字架》秉承了东野一贯的做法，在推理的形式上，探讨了一个很大的社会话题——死刑。</p> 
<p>死刑是古已有之的最高刑罚，在几乎所有的人类社会里都有死刑这种刑罚。近年来废止死刑作为社会话题一直被人反复探讨，并随着各种严重刑事案件的出现成为一时话题，比如药家鑫案就曾引发人们对废止死刑的热烈讨论。其实废止与支持死刑就像一场辩论比赛，正反双方各有道理，没人能说出绝对的黑与白。</p> 
<p>东野在《虚无的十字架》这部作品里，从遗族（受害人家属）的角度出发，进行了一系列探讨。探讨的话题也离不开正反双方集中讨论的几个论点：</p> 
<ol> 
 <li><strong>正义与报应</strong> <p>支持死刑的人认为杀人偿命，天经地义，对于杀人犯来说，死刑是最符合善恶报应的结果。反对者则认为无期徒刑的惩罚性比死刑要高，而且政府本身没有权力剥夺人的生命，法律也不是作为报复的手段，监禁教化犯人是比简单粗暴地死刑更好。</p> </li> 
 <li><strong>遗族的内心安慰</strong> <p>知道罪犯被执行死刑，对于受害人的遗族可以有一定的心理安慰。但是反对者认为死刑事实上并没有实质性的帮助，死者不能复生，把罪犯处死了受害者也没能活过来。</p> </li> 
 <li><strong>隔离</strong> <p>支持者认为死刑可以彻底隔离罪犯，反对者则认为无期徒刑加上不得假释也可以隔离罪犯。</p> </li> 
 <li><strong>误判</strong> <p>支持者认为如果司法公正严谨，则极少可能会产生误判，反对死刑者认为无法完全避免误判，而一旦冤杀则永远无法补救了。</p> </li> 
</ol> 
<p>《虚无的十字架》从遗族的内心出发，作为失去独生女儿的父母，当然希望罪犯接受死刑：</p> 
<blockquote>
 <p> 要求杀人凶手自我惩戒，根本就是虚无的十字架。然而，即使是这种虚无的十字架，也必须让凶手在监狱中背负着。 </p>
</blockquote> 
<p>但随着故事的发展，这位坚决的母亲在态度上发生了转变，事实上也就是支持派与反对派的斗争。小说各自挑了一个对支持派与反对派有利的案例来展开，在“是否应该废止死刑”这样一个根本没有答案的话题上，作者非常鸡贼地把诠释地交给主角，以主角的角度含糊地带过。所以是“死刑话题”赋予了东野这部小说不错的思想内涵，同时也是这个话题的无法解答使得这部小说不够深入。作为一个文学作品，不管是正方也好反方也好，只要作者的信念足够坚定，作者本身相信了这个观点，就能灌注给这部作品相当的活力与深度，但是由于作者本身的犹豫导致主角的犹豫，由于主角的犹豫导致作品流于表面。</p> 
<p>从《白夜行》探讨孤儿、恋童癖与社会不平等问题，到《红手指》探讨老人赡养问题，到《秘密》探讨性倒错问题，作者在这几个话题上都有明确的个人立场，所以这几部作品给人气场很强，坚不可摧之感，但是《虚无的十字架》由于作者自己也给不出明确的答案，我只能说，故事讲的不错，有东野一贯的水平，但是过几天我肯定会忘了。</p> 
<p>15.08.23/下午<br /> 于时光 Cafe</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x4E66;&#x5355;] &#x6BCF;&#x5468;&#x8BFB;&#x4E66;&#x516B;&#x5341;&#x4E00;&#x2014;&#x2014;&#x516B;&#x5341;&#x516B;</title>
        <link>https://justinyan.eth.limo/DFF9C30B-CA00-476F-A822-2A99AC4D1246/</link>
        <guid>https://justinyan.eth.limo/DFF9C30B-CA00-476F-A822-2A99AC4D1246/</guid>
        <pubDate>Tue, 25 Aug 2015 15:26:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>今天已经是 2015 年的第 237 天了，今年里你读了几本书呢？最近两个月里，枫影读到了不少好书，其中当首推来自以色列青年才俊的<strong>《人类简史》</strong>，作者超然物外的三观深深令人折服。然后来自美国女作家 Gabrielle Zevin 的小说<strong>《岛上书店》</strong>也是不错的读物。</p> 
<p>至于莎翁的《四大悲剧》由于年代久远，可能会略显沉闷，却是了解这个英文文学巨匠的不错选择。海子和魏宁格的故事颇为相似，两人都是思想与故事比作品有趣的。</p> 
<p>以下是这八周来的书单：</p> 
<ol> 
 <li><strong><a href="http://justinyan.me/post/2147">[每周读书 八十一] 莎士比亚——“四大悲剧”</a></strong> <p><em>2015-06-27</em></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/06/sidabeiju_cover.png" alt="莎士比亚" /></p> <p>一开始觉得莎翁作品难读，其实他是16世纪人，用的现代英语，懂得几个thy, thou, thee之后就没有什么问题了，而且他写的是要上演的戏剧，情节紧凑曲折，再且中译本有民国才子朱生豪的版本，通俗易读。所以读莎翁的戏剧就跟读小说一样。</p> </li> 
 <li><strong><a href="http://justinyan.me/post/2157">[每周读书 八十二] 尤瓦尔·赫拉利——《人类简史》</a></strong> <p><em>2015-07-09</em></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/07/renleijianshi.jpg" alt="人类简史" /></p> <p>作者在全书中贯彻这种超然物外的三观，令人叹为观止。而且值得一提的是，中信的这部译本，质量非常高，语言晓畅，而且作者还为中国版做了内容修改，加入了大量跟中国历史相关的资料来印证他的观点，据说他对每一个国家的版本都做过修改，简直神人。</p> </li> 
 <li><strong><a href="http://justinyan.me/post/2168">[每周读书 八十三] 为你读诗 第一辑</a></strong> <p><em>2015-07-16</em></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/07/weinidushi.jpeg" alt="为你读诗" /></p> <p>虽然这本带有很强总结目的书并不值得去读，但是“为你读诗”的出现是一个好的兆头，希望诗歌这种美丽的文体能够重新受到大众的欢迎，催生更多有才华的诗人。</p> </li> 
 <li><strong><a href="http://justinyan.me/post/2199">[每周读书 八十四] 太阳诗人海子 （《海子诗全集》——西川编）</a></strong> <p><em>2015-07-23</em></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/07/haizishiquanji.jpg" alt="海子诗全集" /></p> <p>大多数读者应该都听过《面朝大海，春暖花开》，听说过海子卧轨，实际上，正是 1989 年 3 月 26 日这个沉痛的日子，让海子成为这个时代的神话。</p> </li> 
 <li><strong><a href="http://justinyan.me/post/2220">[每周读书 八十五] 郑振铎——《中国文学史》</a></strong> <p><em>2015-07-30</em></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/07/zhongguowenxueshi_cover.jpg" alt="中国文学史" /></p> <p>在课堂上我们往往把作家、作者与他所处的时代孤立了，把活生生一个大文豪讲解得苍白无趣。要欣赏一个作家或者一个作品，一定要放回到当时的大舞台上去，纵观时代变迁给文坛带来的变革，横观百家争鸣山川社稷给作者带来的影响，才能真正体会到作品的精妙之处。</p> </li> 
 <li><strong><a href="http://justinyan.me/post/2234">[每周读书 八十六] Gabrielle Zevin ——《岛上书店》</a></strong> <p><em>2015-08-06</em></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/08/daoshangshudian-cover.jpg" alt="岛上书店" /></p> <p>我们通过阅读知道我们并不孤独，我们阅读因为我们孤独，我们阅读所以我们不孤独，我们不孤独。“No Man Is an Island; Every Book Is a World.”</p> </li> 
 <li><strong><a href="http://justinyan.me/post/2245">[每周读书 八十七] 陈坤——《突然就走到了西藏》</a></strong> <p><em>2015-08-13</em></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/08/turanjiuzoudaolexizang.jpg" alt="突然就走到了西藏" /></p> <p>几年前我在朋友圈里看到陈坤写了《突然就走到了西藏》这本书，当时我的内心就是这种想法：“一个演员，居然还写起书来，书名还故作文艺。”（其实真正的心理是：一个有名的演员，居然还写起书来，太厉害了，对比之下，我实在太没用了。）</p> </li> 
 <li><strong><a href="http://justinyan.me/post/2249">[每周读书 八十八] 奥托·魏宁格 —— 《性与性格》</a></strong> <p><em>2015-08-20</em></p> <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/08/sexandcharacter_cover_blog.jpg" alt="性与性格" /></p> <p>以前不理解“同性恋”存在的原因，毕竟无法繁殖后代，对物种的延续是致命的，直到读了《性与性格》，按作者的理论来说，其实本来就没有所谓的男女，以绝对男性与绝对女性为两端，人类的每个个体都只是这条线上的某一个点，于是一切就都可解了。</p> </li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E00;&#x5927;&#x6CE2;&#x65E7;&#x4E66;&#x6709;&#x4EBA;&#x60F3;&#x8981;&#x5417;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/3DE68316-794E-4392-94E9-B1E926344F5A/</link>
        <guid>https://justinyan.eth.limo/3DE68316-794E-4392-94E9-B1E926344F5A/</guid>
        <pubDate>Mon, 24 Aug 2015 15:55:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/08/songshu.jpg" alt="cover" /></p> 
<p>虽然日常阅读以 Kindle 为主，但家里还是攒了很多纸质书，每次搬家都特别痛苦，就想还不如送给有兴趣阅读的人。</p> 
<p>有兴趣的读者请回复：<strong>我想要+“书名”</strong>（公平起见每个人选两本吧）。我会找<strong>最先回复</strong>的小伙伴要邮寄地址。<strong>T.i.T 创意园内可以免费送货，其他地区的小伙伴就邮费自付吧</strong>。</p> 
<p>周末整理出来的书以设计类（原研哉、隈研吾、田中一光）和小说类为主，共 15 本书。</p> 
<p><strong>一、设计类</strong></p> 
<ol> 
 <li><span style="color: gray"><del>原研哉——《白》</del></span> <p><a href="http://justinyan.me/post/1843">白 (每周读书 六十五 原研哉——《白》)</a></p> </li> 
 <li><span style="color: gray"><del><strong>原研哉——《设计中的设计》</strong></del></span> <p><a href="http://justinyan.me/post/775">[每周读书] 第八周 原研哉 《Designing Design》</a></p> </li> 
 <li><span style="color: gray"><del><strong>原研哉——《为什么设计》</strong></del></span> <p><a href="http://justinyan.me/post/1798">[每周读书] 六十 原研哉——为什么设计</a></p> </li> 
 <li><strong>隈研吾——《负建筑》</strong> <p><em>没看完于是没写书评╮(╯_╰)╭</em></p> </li> 
 <li><strong>隈研吾——《十宅论》</strong> <p><a href="http://justinyan.me/post/1218">「每周读书」第三十九周 隈研吾——《十宅论》</a></p> </li> 
 <li><span style="color: gray"><del><strong>田中一光——《设计的觉醒》</strong></del></span> <p><em>没看完于是没写书评╮(╯_╰)╭</em></p> </li> 
 <li><span style="color: gray"><del><strong>Jeff Johnson——《认知与设计：理解UI 设计准则》</strong></del></span> <p><a href="http://justinyan.me/post/1281">「每周读书」第四十一周 Jeff Jhonson——《认知与设计》</a></p> </li> 
 <li><strong>Josh Clark——《触动人心：设计优秀的 iPhone 应用》</strong> <p><a href="http://justinyan.me/post/1506">「每周读书」第四十六周——Josh Clark「触动人心」</a></p> </li> 
 <li><span style="color: gray"><del><strong>松田行正——《Zero》</strong></del></span> <p><em>这本书更像是字典，就完全没写书评了</em></p> </li> 
</ol> 
<p><strong>二、小说类</strong></p> 
<ol> 
 <li><span style="color: gray"><del><strong>阿加莎——《罗杰疑案》</strong></del></span></li> 
 <li><span style="color: gray"><del><strong>阿加莎——《悬崖山庄疑案》</strong></del></span> <p>这两本见<a href="http://justinyan.me/post/2063">[每周读书 七十八] 波罗神探 (阿加莎《悬崖山庄奇案》、《罗杰疑案》、《东方快车谋杀案》)</a></p> </li> 
 <li><span style="color: gray"><del><strong>三岛由纪夫——《纯白之夜》</strong></del></span> <p><a href="http://justinyan.me/post/1985">优雅的小品 （每周读书 七十四 三岛由纪夫《纯白之夜》）</a></p> </li> 
 <li><span style="color: gray"><del><strong>三岛由纪夫——《假面自白》</strong></del></span> <p><a href="http://justinyan.me/post/1998">诗意的自白(每周读书 七十五 三岛由纪夫《假面的告白》)</a></p> </li> 
 <li><span style="color: gray"><del><strong>张恨水——《秦淮世家》</strong></del></span> <p><a href="http://justinyan.me/post/2108">[每周读书 七十九] 秦淮世家 （每周读书 七十九 张恨水——《秦淮世家》）</a></p> </li> 
 <li><span style="color: gray"><del><strong>冈崎琢磨——《咖啡馆推理事件薄》</strong></del></span> <p><em>没看完于是没写书评╮(╯_╰)╭</em></p> </li> 
</ol> 
<p><strong>三、其他</strong></p> 
<ol> 
 <li><strong>中西大辅——《骑出来的人生美景》</strong> <p><a href="http://justinyan.me/post/1792">[每周读书] 五十九 中西大辅——《骑出来的人生美景》</a></p> </li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #88  &#x5965;&#x6258;&#xB7;&#x9B4F;&#x5B81;&#x683C; &#x2014; &#x300A;&#x6027;&#x4E0E;&#x6027;&#x683C;&#x300B;</title>
        <link>https://justinyan.eth.limo/66941A98-C86B-4327-BE23-D5BACB10B4F3/</link>
        <guid>https://justinyan.eth.limo/66941A98-C86B-4327-BE23-D5BACB10B4F3/</guid>
        <pubDate>Thu, 20 Aug 2015 14:20:44 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/08/cover-9629-1.jpg" /></p> 
<p>魏宁格坐在书桌前，昏黄的灯光映在他年轻的脸上，指尖握住的钢笔凝在空中，他此时格外平静。</p> 
<p>也就格外纷扰。</p> 
<p>唯有心怀平静才能感受纷扰。</p> 
<p>今夜无雨，旅馆外的夜空深沉地望着大地，沉默得可怕。魏宁格想起多年前的雷雨夜，就在这家旅馆，一个伟大的人物在病榻上奄奄一息。忽然一声雷响，伟人朝空中怒挥右拳，仿佛扼住命运的交响曲，然后身体跌落尘世，灵魂从此升上维也纳深沉的夜空。</p> 
<p>贝多芬。</p> 
<p>魏宁格吸一口气，终于下笔，写下两封书信，一封给他的父亲，一封给他的弟弟 Richard。他把信装好，站起来，仔细整理了一下自己的衣装，心中一阵苦笑：“租下这个房间的时候还跟老板娘保证过绝不会闯祸的，对不起了，老板娘。”</p> 
<p>抬眼望见镜中人的脸，5 年了，似乎没多大改变。5 年前，魏宁格来到维也纳大学，修习哲学与心理学。他热衷于思考致难的哲学问题，两年前他拿着论文《Eros and the Psyche》去找弗洛伊德的时候还满怀期待，却被泼回一头冷水。后来这篇论文被改写为《性与性格》，凭此成功拿到维也纳大学哲学博士学位。数月前，基于这篇论文的书经过重重阻隔终于面世，但是这本书既没得到强烈的批判，也没有获得预期的轰动。</p> 
<p>心静如水。即使这本书没有成功也好，即使被指抄袭被所有人误解也罢，是时候了。</p> 
<p>魏宁格整理好自己的衣装，摸了摸手中的枪杆。</p> 
<p>第二天被发现的时候，他躺在旅馆的地板上，衣着整齐，一颗子弹穿透了他的心脏。</p> 
<p>魏宁格的故事跟海子有点相像，都是非常有才华的人，海子 15 岁进入北大，魏宁格 21 岁写出惊世骇俗的《性与性格》；都是生前不为人所理解的人，海子生前难以出版诗歌，魏宁格多次求出版社出书无果；都是死后声名鹊起的人，海子卧轨而成名，魏宁格自杀而本书轰动一时。这两位都是时代的悲剧。</p> 
<p>《性与性格》这本书出现的时代，在中国，正是清朝末年，刚签订《辛丑条约》不久的动荡时代；在欧洲，正是资本主义崛起，列强争夺殖民地的时代；在全球，正是暴风雨前的平静，一战即将爆发的时代；在维也纳，这是被称为“世纪末维也纳”的文化繁荣的时代，是诞生了佛洛伊德，诞生了维也纳分离派的时代。</p> 
<p>以前我不理解“同性恋”存在的原因，毕竟无法繁殖后代，对物种的延续是致命的，直到读了这本书，作者认为世界上没有绝对的男性也没有绝对的女性。以这两者为极端，人类的每个个体都是这条线上的某一个点，是 M 因素与 W 因素的混合体。</p> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/08/MaleNFemale.png" alt="Male And Female" /></p> 
<p>以作者的这种角度来看，“同性恋”是不存在的，每个人都是“同性恋”，这种“雌雄同体论”在西方学术界的影响很大。魏宁格拿着本书的初稿去找弗洛伊德的时候，弗洛伊德只是否决了他的观点，却并没有说出他自己也在研究雌雄同体论(bisexuality)的事实，这点上弗洛伊德不太厚道。</p> 
<p>全书读下来，第一部分最好读也最精彩，这一部分也是作者得以获得博士学位的部分。作者从生物学和心理学的角度层层剖析了男性与女性的区别，最重要的就是上面所述的，一个现实社会认为的男性也会有女性的元素，女性也会有男性的元素。现实社会仅凭生殖系统就对男女强加各种奇怪的社会偏见实在太过粗暴，比如男人一定要凶猛强悍，女人一定要温柔细心，以魏宁格的性别区分法来看，这种粗糙的见解真是太可笑了。更极端一点，对于“性倒错”（有男性生殖系统但认为自己应该是女性的人，或者反之）的群体来说，如果大众都接受这种魏宁格式的性别区分，而不是仅凭生殖系统就妄下断论的话，他们甚至可以不用做出如变性手术这种痛苦的选择。</p> 
<p>我们可以说魏宁格的“雌雄同体论”未必正确，但是从他提出的观点出发去解释“同性恋”，去解释“性倒错”，则远比前段时间美国最高法院通过“同性恋”的理由要容易接受的多——一个 M 因素较多的人与一个 W 因素较多的人结婚了，多么正常。</p> 
<p>但是这本书也有自相矛盾的地方，魏宁格自己说了男女的区分应该抛弃过去那种粗糙的方法，但是第二部分开始却频频向女人发难。即使我们以“绝对的女性”这种概念来理解他第二部分中所说的“女人”，也会发现很多不对劲的地方，比如”母亲“这个概念，事实上只有日常认为的“女人”才有生育能力，我们很难说魏宁格不是以现实的标准在指称书中的男人女人。</p> 
<p>而且第二部分开始大量涉及哲学、逻辑，有许多深奥的概念，作者似乎直接把读者当做哲学系的学生，不做任何解释直接就用上了，读起来非常吃力。而涉及术语的翻译就更加难懂了，事实上第二部分我根本没有耐心全部读完，后半部分都是直接浏览带过。</p> 
<p>我觉得《性与性格》这本书在 19 世纪末的出现有它应当轰动的价值，即使没有魏宁格的自杀也是，尤其是第一部分的论述非常精彩，值得一读。但是第二部分就明显感觉到时代带来的局限性，以及学术理论带来的艰涩，所以单就阅读体验来说，读第一部分就差不多了。</p> 
<p>在整理魏宁格的资料的时候，我发现这本书的背景故事比它自身还要有趣。一百多年过去了，还有人深受魏宁格的影响，甚至在在法国北部一个小岛上有一位大叔还做了个网站：<a href="http://www.theabsolute.net/ottow/">http://www.theabsolute.net/ottow/</a>，上面有完整的英文版《Sex and Character》。如今魏宁格葬在维也纳新教徒公墓，墓碑上是父亲为他写的墓志铭：</p> 
<blockquote>
 <p> 此石碑下躺着一个在世上不曾寻获内心平静的男孩，<br /> 当其将己心灵的启示传授之后，在世上已找不到适合的地方。<br /> 他不停向有着最伟大思想的死亡国度探寻，<br /> 最后在一间屋子停了下来，<br /> 结束了凡间肉体的延续 </p>
</blockquote> 
<p><img decoding="async" src="http://cdn.justinbot.com/wp-content/uploads/2015/08/weininger.jpg" alt="Otto Weininger" /></p> 
<p>15.08.16/下午<br /> 于自宅</p> 
<h2>参考链接</h2> 
<ul> 
 <li><a href="https://zh.wikipedia.org/wiki/%E5%A5%A7%E6%89%98%C2%B7%E9%AD%8F%E5%AF%A7%E6%A0%BC">奧托·魏寧格 维基百科</a></li> 
 <li><a href="http://www.tabletmag.com/jewish-news-and-politics/world/983/was-this-man-a-genius">WAS THIS MAN A GENIUS?</a></li> 
 <li><a href="http://www.nthposition.com/ottoweininger.php">Otto Weininger</a></li> 
 <li><a href="http://www.theabsolute.net/ottow/">Otto Weininger On the Internet </a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #87 &#x9648;&#x5764; &#x2014; &#x300A;&#x7A81;&#x7136;&#x5C31;&#x8D70;&#x5230;&#x4E86;&#x897F;&#x85CF;&#x300B;</title>
        <link>https://justinyan.eth.limo/26CCAF31-5A0C-4574-9DAF-3F7466813394/</link>
        <guid>https://justinyan.eth.limo/26CCAF31-5A0C-4574-9DAF-3F7466813394/</guid>
        <pubDate>Thu, 13 Aug 2015 14:33:36 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/08/4963812-0347c05eb5a818ae-copy-1.jpg" /></p> 
<p>曾走过几次长途自行车骑行，辛苦但是很令人怀念。以前我不明白这种劳累而危险的旅行吸引人的地方究竟是什么，也许是努力过后看到美景时内心的激动，也许是征服一段艰难的路程之后内心的满足，直到读了演员陈坤的这本《突然就走到了西藏》，才知道最美的原来是“简单”。</p> 
<p>现代社会人与人之间的关系日趋复杂，这种复杂使人不愿意轻易去相信别人。许多有过长途旅行的朋友，或徒步或骑行，或登山或背包，回到现实社会都表示很难再次融入。其原因就在于：在路上的时候，每个人都是陌生人，人与人之间的关系非常简单，这种简单使得大家对待彼此更加真诚，这种真诚使得旅行的人更加感受到旅行的美好，即使有过一两次不愉快的经历，也还是愿意相信世界是美好的。因为简单，所以真诚。</p> 
<p>陈坤的这本书，能吸引读者读下去的，大约就是真诚。</p> 
<p>我向来很看不起认为“码农”只能做“写代码”的事情的人，这些人认为“产品经理”写代码是很可笑的事情，就因为人家的头衔是“产品经理”。但其实早期的互联网从业人员很多都是“全栈工程师”（值产品、设计、编程全包的人），后来为了提高效率才出现精细分工。我觉得一个工程师可以不具备“全栈”的能力，但是态度上不能看不起“做着设计的工程师”，或者“写代码的产品经理”。</p> 
<p>几年前我在朋友圈里看到过陈坤写了《突然就走到了西藏》这本书，当时我的内心就是这种想法：“一个演员，居然还写起书来，书名还故作文艺。（其实真正的心理是：一个有名的演员，居然还写起书来，太厉害了，对比之下，我实在太没用了。）”当时有这种想法真是可耻，直到最近翻开了本书第一页，就再放不下了。</p> 
<p>陈坤是一个有故事的人，没有故事的人写不出这样的书。开始看书的时候我对陈坤了解不多，只知道他演过《金粉世家》是个内地的名人。事实上陈坤在书里也毫不讳言他因为《金粉》成名的事情，他说他自己的人生是幸运的，同朋友去考北影结果别人没考上自己考上了等等。我觉得他的故事“有意思”，事实上他的故事正是这本书最大的亮点。</p> 
<p>写本书的起因是陈坤在自己的工作室办了一个公益活动，带领经过层层面试的是个大学生到西藏徒步。这本书是对这场活动的记录，也是陈坤自己自传式的陈述，西藏是一个很艰险也很美丽的地方，陈坤因为自己的“暴发户”式的成名曾经迷茫过，抑郁过，他走过阴影之后决定做公益，去帮助其它人。于是带领大学生去西藏行走，期望能通过这种感受大自然的方式让这些学生对于生命有所领悟，这种艰苦的修行有时候甚至可以改变一个人的一生。而活动的第一天，陈坤就和大家大吵了一架。</p> 
<p>陈坤的本职是一名演员，但是这本书写得明白晓畅，这点很难得。读这本书的时候，我一直在与自己的内心做对照，陈坤在书中直言自己的缺点，包括小时候形成自卑与自傲并行的人格，极度渴望被认可，稍微一点小事都可能被自己自卑的内心放大等问题。我想这些问题可能大多数人都有，随着生活的历练有的人寻找到了解决的办法，有的人则持续放大。陈坤的办法是“学会接受”，真正的认可不是来自别人，而是来自自己。</p> 
<p>“小时候因为自卑，希望所有人都给我一点掌声，好像是在用别人的鼓励承认自己的存在；现在是，我管你们承不承认我存在，我做我自己，你接不接受无所谓。”</p> 
<p>“小时候总是为了证明我很牛而做一件事情；现在是因为这个事本身很牛而做。”</p> 
<p>诚然，这本书的鸡汤味很浓，但是真正的鸡汤文是给出或虚构或断章取义的的故事来导向作者的目的，陈坤的文字却能让我感受到他的真诚。</p> 
<p>尽管陈坤今天能够说出这些话肯定有声望与财富作为底气，尽管我还是不太喜欢他把现在的自己写得仿佛十分完美，但我还是喜欢他写成名前的小故事，喜欢他写自己的内心成长过程中的小故事，喜欢这些真诚而简单的文字。</p> 
<p>如果还有读者认为这本书完全就是鸡汤，那么我只能说，这鸡汤煲得可真好，我喜欢！</p> 
<p>15.08.02/下午<br /> 于自宅</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #86 Gabrielle Zevin &#x2014; &#x300A;&#x5C9B;&#x4E0A;&#x4E66;&#x5E97;&#x300B;</title>
        <link>https://justinyan.eth.limo/C471F3D0-950E-4306-95C9-3465A888BBE9/</link>
        <guid>https://justinyan.eth.limo/C471F3D0-950E-4306-95C9-3465A888BBE9/</guid>
        <pubDate>Thu, 06 Aug 2015 14:23:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/08/fa27a455cd1c419eb0c3fd3278ab7f62-1.jpg" /></p> 
<p>读《岛上书店》不觉凌晨，阳光敲醒额头的时候脑袋还在岛上跌跌撞撞，逡巡于书店老板 A.J.F 一生动人的故事，被吸引，被逗乐，被感动。爱伦坡定义短篇小说为“可以一口气读完的小说”，从这个层面上说，《岛上书店》是一部贯穿 A.J.F 一生的短篇小说。</p> 
<p>这本书来自 Gabrielle Zevin 2014 年的畅销之作 <em>The Storied Life of A.J. Fikry</em> ，作者很“鸡贼”地选用了“阅读”这一话题，吸引了大批爱书的读者。主角是乡村小岛上唯一一家书店的老板 A.J.F，围绕主角身边的人都喜欢读书，这是一部关于读书的小说。从开篇 A.J.F 毫不客气地揶揄各类文学作品的时候，我已知道今夜注定无眠了。</p> 
<p>光是围绕“读书”这件事情，这本已经值得一看，再加上作者娴熟的写作技巧，中文晓畅的翻译，这本书的可读性甚至远超许多本土作品。近年来如《冰与火之歌》、《人类简史》等外文译著，行云流水令人欣喜，可以说外文翻译腔的时代已经过去了。</p> 
<p>读《岛上书店》的时候，一直让我回想起 James Scott Bell 的《冲突与悬念》中提及的写作技巧，Zevin 的这部作品简直就是 James 写作技巧的范本！比如典型的三幕剧结构，开场出版社销售代表 Amelia 与书店老板 A.J.F 的冲突给这本书起了个不错的开头，两位主角的形象特点十分鲜明。接着突如其来的遗弃在书店的小孩由于生母的自杀让 A.J.F 不得不收养下她，以此推入第二幕，开始围绕小孩玛雅的各种温情故事。最后以 A.J.F 自小就有的间歇性昏迷症揭开癌症告别的终幕，作者在前面埋下的悬念，比如每章开头的读书见解其实都是 A.J.F 在医院无法讲话的时候写下给玛雅的读书建议，比如玛雅的诞生之谜，玛雅生母自杀之谜，A.J.F 店里被盗之谜，都以贯穿全书的形式一步步解开，可谓深得畅销书写作技巧。</p> 
<p>然后是每一个场景，出场的人物都没有闲着，无论是对话还是在做的事情，都是麻烦麻烦，冲突冲突，读者没有一刻喘气的机会，再辅以作者适时地幽默打趣，穿插以温情的画面，有如好莱坞商业片紧凑的节奏，令人沉迷其中不觉时光。</p> 
<p>如果说技巧是这本书畅销的基础，那么对于各个作家与作品的见解则是锦上添花。我必须承认书中提到的绝大多数作品与作家我完全没听说过，但是没听过还能觉得点评有理，足见作者的功力。比如开篇的 <em>Lamb to the Slaughter</em>，作者对剧情做了简单的叙述，然后一针见血地指出一旦觉得其中有蹊跷，则整个故事就崩盘了。</p> 
<p>这一点也正是本书的缺点：技巧让这本书可读性极佳，但是一旦读者意识到作者在使用技巧，那么沉浸式的阅读体验就会被破坏，也就是技巧太着于痕迹。写作技巧有入门到烂熟于胸再到忘掉技巧写出属于自己的文字这样的过程，一旦作者很露痕迹地去使用各种技巧，读者就会觉得像好莱坞大片一样：刺激但没什么营养，这也是“畅销书”一直为部分读者所不屑的重要原因。</p> 
<p>这部作品着露痕迹的地方很多，比如在描写作家丹尼尔车祸的一段，刻意地引用丹尼尔在第一本书中使用现代诗风格描写的车祸场景，读到这里让人觉得作家仿佛在背后偷笑，挤眉弄眼。又比如《迟暮花开》这本贯穿全书串起 A.J.F 与 Amelia 的感情的书，真假作者的出现让人觉得过于突兀，仿佛为了冲突而冲突，为了反转而反转，只是大概觉得应该在这个地方放置一个反转了，就插入了一个真正的作者，在令读者意外之后转身离去，太不负责！</p> 
<p>不过只要读者没有意识到这些写作技巧，嗯，那就是一次很不错的阅读体验了，毕竟作者在情感的细腻描写上太过耀眼，很容易掩盖其他的地方。比如在描写两岁的玛雅笨拙但真挚的情感的时候，一个可爱鲜活的小孩在读者面前展现，实在不得不爱。比如在玛雅第一次参加写作比赛，颁奖时既渴望得奖又佯装不屑的矛盾心理，当时我想，假如是自己来写这一段，一定会是很糟糕的平铺直叙，借景移情，因为我根本代入不到一个青春期中学生的内心，做不到以人物的视角来表达，而作者完全掌握了这些情感的细微的不同，每一个人物都有不同的个性与思考，所以可以在被写烂的亲情爱情之间找到令人耳目一新的美好。</p> 
<p>一本小说，最重要的是要给读者一场丰富的情感体验，《岛上书店》做到了，而且给予读者关于阅读的思考，关于名作家名作品的思考，我们通过阅读知道我们并不孤独，我们阅读因为我们孤独，我们阅读所以我们不孤独，我们不孤独。</p> 
<blockquote>
 <p> No Man Is an Island; Every Book Is a World.</p> 
 <p> We read to know we’re not alone. We read because we are alone. We read and we are not alone. We are not alone. </p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #85 &#x90D1;&#x632F;&#x94CE; &#x2014; &#x300A;&#x4E2D;&#x56FD;&#x6587;&#x5B66;&#x53F2;&#x300B;</title>
        <link>https://justinyan.eth.limo/8C544BA6-8AB5-4F63-84C8-10872DD7271C/</link>
        <guid>https://justinyan.eth.limo/8C544BA6-8AB5-4F63-84C8-10872DD7271C/</guid>
        <pubDate>Thu, 30 Jul 2015 12:26:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/07/81nnsxv-eZL-1.jpg" /></p> 
<p>数月前读张爱玲、张恨水的时候发现有个“鸳鸯蝴蝶派”的派系，想起上学的时候听说过公安派、西昆派、新月派等等，很好奇中国文学派系都是怎么划分的，于是寻思要在“中国文学史”里面找找答案。</p> 
<p>推友 @guyii 推荐了文学史的几个版本，包括作为大学教材的袁行霈版，但是 z.cn 没找到 Kindle 版，于是因缘际会开始看起这本郑振铎版的《中国文学史》，甫一开头就被作者科学求实的态度所吸引，待发现作者生活的年代在 1898 - 1958，根本解答不了我的问题时，已深陷本书无法自拔。😂</p> 
<p>由于作者年代的关系，这本《中国文学史》实际上涵盖的内容为上古到近代文学史，现当代文学则没有涉及，并且作者讲述的近代（明清）部分有些粗略。谈到中国古代的文学，很多人心中会想起所谓“国学”，所谓古文，所谓诗词歌赋，脑中浮现的人物不过孔孟，不过李杜，“文学”实在迂腐得很，刻板得很。但这本书却出乎意料的有趣。</p> 
<p>作者的年代正是我国思想启蒙的年代，古文学者一般被认为“权威至上”、“奉经典为至尊”，但是郑版的文学史一上来就是对前人作文学史的批评，谓“这二三十年间所看不的不下数十部中国文学史，几乎没有几部不是肢体残废，或者患者贫血症的”。谈到上古的《诗经》，作者直言这种远古的材料，“其靠不住的性质，是有常识的人都知道的”。及至后人托苏李诗名以寄烦忧，也是颇有科学论证的味道。</p> 
<p>原以为这种类似量子对牛顿的完全颠覆只有科学界才有，没想到钻研文学者亦有此般精神。其实读了此书就知这种求实与颠覆自古已有之，比如韩愈领导的古文运动，就将散文从骈俪文中解放出来，催生了后来的变文、传奇、小说。</p> 
<p>郑版的文学史主要集中在最辉煌的“中世文学”（东晋到明正德年间 1200 多年），详述了各个时期诗、赋、词、变文、传奇、小说、曲文体的发展，这期间大文学家很多，风格相近的也不少，但作者博览群书，深知众家之精妙，所作点评笔笔到位，不觉冗复。从上古的诗经楚辞到秦汉的散文骈赋，从沉郁雄健的曹操到高超清隽的嵇康，从深远澹泊的陶渊明到诗中有画的王摩诘，从豪放不羁的李白到艰深险峻的韩愈，从明白晓畅的白居易到暧昧朦胧的温庭筠，我们古代的文人大家留下了太多的文学瑰宝。在课堂上我们往往把作品、作者与他所处的时代孤立了，把活生生一个大文豪讲解得苍白无趣。要欣赏一个作家或者一个作品，一定要放回到当时的大舞台上去，纵观时代变迁给文坛带来的变革，横观百家争鸣山川社稷给作者带来的影响，才能得到立体的画面，才能真正体会到作品的精妙之处。比如《诗经》或古诗十九首，断不可用律诗绝句的角度来审视这些诗体尚未成熟的作品，比如《花间集》，既有开创新文体的深远影响，便不能轻易谓其绮丽浮华，言之无物。</p> 
<p>不过限于作者时代，此书颇有些民族主义的意味，而且现当代部分的缺失不免遗憾，但本书的精华部分——中世文学——评点仍然精彩，尤其自唐以来，中国文学深受印度文学的影响，这个观点令人耳目一新，其影响之深，渗透了诗歌散文变文小说，也是学堂与课本所没有强调的。</p> 
<p>熟悉“每周读书”的读者可能会发现每周介绍的书多是“没想到出乎意料的好读”，其实主要还是归因于我个人的读书习惯，一本书翻开几页如果不好读一般就放下不读了。人生苦短，书海无涯，选择自己感兴趣的书才是王道。</p> 
<p>15.07.29/中午</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #84 &#x6D77;&#x5B50; - &#x300A;&#x6D77;&#x5B50;&#x8BD7;&#x5168;&#x96C6;&#x300B;</title>
        <link>https://justinyan.eth.limo/5354D6EA-5207-4806-AFDD-05AFA95089C5/</link>
        <guid>https://justinyan.eth.limo/5354D6EA-5207-4806-AFDD-05AFA95089C5/</guid>
        <pubDate>Thu, 23 Jul 2015 11:05:11 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/07/20220310182500164690790015435.jpg" /></p> 
<p>如上周读书中所说，诗歌是非常注重形式的文体，音乐、意境与形式都是诗歌的特点。诚然诗歌若没有一定的深度则流于表面，但轻视诗歌的形式同样是不可取的。海子的诗歌倾向于朴素，没有何其芳式的优雅艳绝，没有戴望舒式的音律翩跹，没有顾城式的哲学思辩，海子的诗为什么会出名呢？</p> 
<p>即使不读诗，大多数读者也都听过《面朝大海，春暖花开》，听说过海子卧轨。实际上，正是 1989 年 3 月 26 日这个沉痛的日子，才让海子成为这个时代的神话。在他之后，5 月好友骆一禾病逝，93 年顾城自杀，诗坛笼罩在一片死亡的阴云之中。这些诗人的死都有不可抗拒的无奈，但是这段时间也有些迷失的青年，盲目地追随他们而去，自杀在媒体的传播下似乎成了成名的自我献祭。在海子生前，垄断文化传媒的所谓“作协”并不承认海子，当时自称为“作家”的人们批评海子写长诗，甚至有无耻之徒抄袭海子的作品四处发表，令人发指。在那个时候，海子只是位郁郁不得志的教师。</p> 
<p>他就是因为卧轨而出名的。</p> 
<p>但他的自杀是复杂的，从他的诗歌中你可以感受到海子内心的澎湃与现实的抑郁之间巨大的矛盾与冲击，他不过是个孤独的诗人，他选择结束生命的初衷已随他而去，无人知晓。众说纷纭之中我更相信他的好友西川在《怀念》与《死亡后记》中所说的，海子的的死是由他内心的积郁所致，他与初恋的偶遇成为悲剧的导火索。</p> 
<p>至于《面朝大海，春暖花开》，这首诗完全算不上海子的代表作，甚至跟他大多数作品截然不同。这首诗平平无奇，不说技巧，内涵上也不过是苦闷诗人的幽叹。我想或许是因为海子是一个时代的神话，有收入教材的意义，但是编写教材的人又希望收录的是阳光积极的作品，于是选择了这首看似明亮的诗。我已经忘记中学课堂上老师是怎样解读这首诗歌的，但是可以肯定地说，这首诗歌真正的意义要比字面上黑暗得多。“从明天起”、“愿你”、“我只愿”……这些词语分明道出他在昌平小屋里的寂寞与苦痛，诗歌里的敞亮的世界，其实是海子可望而不可及的世界。</p> 
<p>海子的诗歌很少用修饰，辞藻也相对贫瘠，意象多用村庄、月亮、秋天、麦地、水以及死亡，所以他被成为“麦地诗人”。这与他早期多年的农村生活有关，但是海子的想象力弥补了技巧上的平淡。我最喜欢的是海子的短诗，朴实透着张力，抽象但不空虚，《春天，十个海子》一诗就比春暖花开要好得多。但是海子最重视的却是他的《太阳》史诗。这是一部体量巨大的诗作，海子仰慕歌德，希望写出《浮士德》一样的巨著。但是很可惜，《太阳七部书》非常难读，诗中充满莫名的愤怒和奇诡的氛围，缺乏技巧让这部长诗缺乏可读性，来自耶稣、但丁、佛陀等各种陌生文化以肤浅的角度生生插入诗中，无法给读者留下深刻的震撼与思考。歌德的《浮士德》写了 60 年，贯穿诗人的一生，这部皇皇巨著是诗人一生千锤百炼的结果，是诗人离世前的反刍。而海子一生追求的太阳，却无奈地没能达到这层高度。</p> 
<p>但是我依然喜欢海子的短诗，尽管他认为短诗不过抒情的小作。海子生前最好的朋友是骆一禾和西川，三人并称当时“北大三大诗人”，海子死后两位好友倾力整理海子留下的手稿，希望能让海子的作品发表于世。就在海子走后七十天，骆一禾亦因病作别人世，只剩下西川一人。当时的文学界对海子仍持怀疑态度，西川也是顶着巨大的压力完成这本书的编撰，甚至成书后想要找出版社出版都困难重重。后来还是生活·读书·新知上海三联书店助力下方才得以出版。</p> 
<p>读这本《海子诗全编》，不仅仅是读海子的创作，海子的故事，海子的人生，海子与骆一禾、西川的情谊，这些创作之外的故事与思考，使这本书饱满而充实。很有幸，读到了这本书，很有幸，认识到一个真正的海子。</p> 
<blockquote>
 <p> 在春天，野蛮而悲伤的海子<br /> 就剩下这一个，最后一个<br /> 这是一个黑夜的孩子，沉浸于冬天，<br /> 倾心死亡<br /> 不能自拔，热爱着空虚而寒冷的乡村<br /> ——《春天，十个海子》 </p>
</blockquote> 
<p>15.07.18/下午<br /> 于自宅</p>
        ]]></description>
    </item>
    
    <item>
        <title>ObjC &#x7C7B;&#x7684;&#x52A0;&#x8F7D;&#x548C;&#x521D;&#x59CB;&#x5316;(+load &#x548C; +initialize &#x65B9;&#x6CD5;)</title>
        <link>https://justinyan.eth.limo/859D0E3B-487A-4622-8321-6716FE0B9348/</link>
        <guid>https://justinyan.eth.limo/859D0E3B-487A-4622-8321-6716FE0B9348/</guid>
        <pubDate>Sat, 18 Jul 2015 17:41:12 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>本文译自：<a href="https://www.mikeash.com/pyblog/friday-qa-2009-05-22-objective-c-class-loading-and-initialization.html">https://www.mikeash.com/pyblog/friday-qa-2009-05-22-objective-c-class-loading-and-initialization.html</a></p> 
<p>作为一个程序员，绝大多数时候你都不需要关心一个类是怎么被加载进内存的。这里面 runtime linker 在你的代码还没跑起来之前就已经做了很多复杂的工作。</p> 
<p>对于大多类来说，知道这一点就已经相当足够了。但是，有一些类可能需要做一些特殊的准备工作。比如初始化一个全局的表，从 UserDefaults 里面读取配置并缓存起来，又或者做一些其他的准备工作。</p> 
<p>ObjC 提供了两种方法来实现这些事情：</p> 
<div>
  [sourcecode language="swift"]
 <br /> + initialize
 <br /> + load
 <br /> [/sourcecode] 
</div> 
<h2>+load</h2> 
<p>如果你的类实现了 +load 方法，这个方法就会在类被加载的时候调用。这个调用时机是很早的。如果你是在被其他应用引用的应用（Application）或框架（Framework）里实现了这个方法，它甚至会比 main() 函数还早被触发。如果你是在一个可以被加载的 bundle 里面实现这个方法，那当 bundle 被加载的时候这个方法就会被调用。</p> 
<p>因为 +load 方法过早被调用，所以应用起来会有点困难。很多时候有些类是要比别人更早被加载的，这样你无法判断别人是不是早就被调用过 +load 方法了。更糟糕的时候，你的应用中包含的 C++ 静态初始化函数在这个时机点是还没被调用的，如果你在 +load 里面调用了相关的代码，就很有可能会 crash。好消息是你链接的 frameworks 是保证在 +load 调用前就加载过了的，所以在这里使用 framewroks 是安全的。还有父类也是保证完全加载过了，所以使用父类也是没问题的。</p> 
<p>+load 这个方法有一个有意思的特性，就是 runtime 会把所有 category 里面实现了 +load 的方法全部调一遍。也就是说如果你在多个 category 里面都实现了 +load 方法，这些方法都会被调用一次。这种设计可能跟你认识到 category 的机制完全相反，不过你要知道 +load 方法不是一个普通的方法。这个特性决定了 +load 是一个干坏事的绝佳场所，比如 swizzling。</p> 
<h2>+initialize</h2> 
<p>相比而言，+initialize 方法就要正常的多了，通常也是一个更好的安置代码的地方。+initialize 有意思的地方在于它会很晚才被调用，甚至它有可能完全不会被调用。当一个类被加载的时候，+initialize 不会被调用，当一个消息发送给这个类的时候（译者注：ObjC 的方法调用都是通过 runtime 的消息机制，objc_sendMsg 方法），runtime 就会检查这个方法有没有被调用过，如果没有就调用之。大概可以认为是这样的：</p> 
<div>
  [sourcecode language="swift"]
 <br /> id objc_msgSend(id self, SEL _cmd, …)
 <br /> {
 <br /> if(!self-&gt;class-&gt;initialized)
 <br /> [self-&gt;class initialize];
 <br /> …send the message…
 <br /> }
 <br /> [/sourcecode] 
</div> 
<p>当然真正的实现不会这么简单，还要解决线程安全之类的问题，不过大概就是这么个意思吧。每个类知会调用一次 +initialize 方法，而且只会在这个类收到第一个消息的时候被调用。跟 +load 方法一样，+initialize 会先调用这个类所有的父类，最后才调到自己的 +initialize 方法。</p> 
<p>这就使得 +initialize 用起来要比 +load 方法更安全，因为调用时机的环境要安全得多。当然这时候的环境还要取决于第一条消息发送的结果，不过可以保证调用的时机一定比 NSApplicationMain() 要晚。</p> 
<p>由于 +initialize 是 lazily run 的，所以这里就不是做注册事件的好地方。比如说，NSValueTransformer 和 NSURLProtocol 就不能用 +initialize 来注册自己，因为这就成了一个先有鸡还是先有蛋的问题。</p> 
<p>这个方法适合用来做需要在类被加载后做的事情。由于这个方法运行的时候环境容错性更好，所以你可以使用的方法也就比 +load 自由得多，也因为这个方法是 lazy 调用的，所以你在这个方法中使用的资源就不会事先申请而造成浪费。</p> 
<p>+initialize 的使用还有个小伎俩，我上面的伪代码里提到 runtime 会调用：</p> 
<div>
  [sourcecode language="swift"]
 <br /> [self-&gt;class initialize]
 <br /> [/sourcecode] 
</div> 
<p>这就导致 ObjC 做 selector 实现的检查，如果当前类没有实现这个方法，那么父类的方法就会被调用。不只在伪代码里，实际上也是这样的。所以，你的 +initialize 就得写成下面这样：</p> 
<div>
  [sourcecode language="swift"]
 <br /> + (void)initialize
 <br /> {
 <br /> if(self == [WhateverClass class])
 <br /> {
 <br /> …perform initialization…
 <br /> }
 <br /> }
 <br /> [/sourcecode] 
</div> 
<p>如果没有做这个检查，如果你有没实现 +initialize 的子类，你的代码就会被调用两次。就算你没有任何子类，Apple 的 KVO 也会<a href="https://www.mikeash.com/pyblog/friday-qa-2009-01-23.html">动态创建</a>没有实现 +initialize 的子类。</p> 
<h2>结论</h2> 
<p>ObjC 提供了两种自动运行类初始化代码的方法。+load 方法保证了会在 class 被加载的时候调用，这个时机很早，所以对于需要很早被执行的代码来说是很有用的。但是在这个时机跑的代码也可以是很危险的，毕竟这个时候的环境比较恶劣。</p> 
<p>由于 +initialize 方法是 lazy 触发的，所以对于初始化设置的环境就要友好得多。只要不是在类接收第一条消息之前一定要做的事情，都可以在这个方法里面做。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #83 &#x4E3A;&#x4F60;&#x8BFB;&#x8BD7; &#x7B2C;&#x4E00;&#x8F91;</title>
        <link>https://justinyan.eth.limo/B53380C4-1E7B-4925-8CE0-D37CE0F8F0AF/</link>
        <guid>https://justinyan.eth.limo/B53380C4-1E7B-4925-8CE0-D37CE0F8F0AF/</guid>
        <pubDate>Thu, 16 Jul 2015 11:56:53 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-5333" src="https://cdn.justinbot.com/wp-content/uploads/2015/07/weinixieshi.jpg" alt="" width="800" height="1200" /></p> 
<p>一直认为诗歌与音乐一样，都是非常主观的艺术作品，一首诗始于作者而成于读者，读者的想象与作者的创作碰撞出光怪陆离的色彩，这种艺术的再创作完善了一首诗歌。本周的读书是“为你读诗”公众号推出的第一本诗选合辑，如果纯粹从书的角度来看，这本书完全不值得一读，这个公司主打也是“朗读”而不是诗歌本身，即使就“朗读”来说，由于每期邀请的嘉宾不同，朗读质量也就参次不齐。即便朗读的质量比较高的那几首，一旦诗歌被人朗读出来了，那么这首诗歌就经过了朗读者的二次创作。这就像小说里的人物，每个读者心中的形象、声线、甚至性格的细节都可能不一样，而一旦搬上荧幕，就固化成了演员所演绎的形象，已经是两个不同的作品。就这层意义而言，我更喜欢自己阅读诗歌，而不是听别人“朗读”诗歌。</p> 
<p>但是我仍然欣赏这个公司在做的事情。首先诗歌这个文体本身决定了通常都是短小而且精美的，很符合现代人碎片化阅读和心灵寂寞的现状，“为你读诗”的出现也表明诗歌在今天恢复流行的可能。另外大众文化程度比之从前以提升不少，能够阅读诗歌、理解诗歌、获得美好的情感体验的人也越来越多，有阅读基础和需求基础，诗歌仿佛能回归潮流的样子，这也是读这本诗选的过程中能够想象的美好。但是历史从来都不是绝对因果可以预测的，只能说这本书的出版令人欣喜，但是诗歌的未来还只是混沌中的一个随机出口。</p> 
<p>如果纯粹从书的角度来看，这本书的评价可算中等。前半部分的诗选为大家之作质量有保证，外国诗由于翻译的关系比较难做到音韵和意境俱佳，所以可读性会稍弱，最差的是少许“名人”的作品，有凑数之嫌。装帧上选用了对比度差的浅绿色来印刷诗歌本体，却用对比度最高的黑色来铺陈朗读者、作者、二维码、点评内容等信息，而且几乎每首诗都有一页篇幅用于朗读嘉宾丑陋的真人笔迹，喧宾夺主，并不晓得对读者的意义何在。由此只能说这本书是带着“总结公众号以往发过的文章”这种很强的目的性而出版的，所以不是粉丝可能都不会买账。</p> 
<p>书中的好诗比如席慕容的《我》善用音律顿错，音乐感极强，比如林徽因的《一首桃花》则辞藻玲珑，极富美感，又比如顾城的《门前》似乎平淡无奇，情感却更因平静而饱满。至于书中读起来不顺畅的诗，大抵是没有押韵，不注意对称，也就是连基本的美感都达不上，更不用说要求音节错落，要求孕神奇于平淡等境界了。这也是本书中大家之作和滥竽之作的区别，诗歌是非常注重技巧与形式的文体，随便写几个漂亮的句子然后分行根本算不上诗。</p> 
<p>“为你读诗”的这本书还附赠了光盘，收录了每一期的读诗视频，由于没有可以读 CD 的设备，我在公众号里听了几首诗歌的朗读。制作方很用心，请了许多文化人来朗读，而且有专门的音乐家做配乐，这点值得赞赏。然而正如我文首所说，诗歌一旦被人读出来，就是那个人的诗歌了。</p> 
<p>诗歌作为一个在现代已经逐渐没落的文体，很难得能看到还有这么多的拥泵。虽然今天我们看到最优秀的诗歌作品还是来自于几十年前的才子佳人，但是“为你读诗”的出现是一个好的兆头，非常希望这种美丽的文体能够重新受到大众的欢迎，催生更多有才华的诗人。</p> 
<p>15.07.10/夜<br /> 于自宅</p> 
<p>P.S. 喜欢何其芳的人应该读《画梦录》，喜欢读戴望舒的人应该读《望舒草》，而不是这本奇怪的杂烩。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #82 &#x5C24;&#x74E6;&#x5C14;&#xB7;&#x8D6B;&#x62C9;&#x5229; &#x2014; &#x300A;&#x4EBA;&#x7C7B;&#x7B80;&#x53F2;&#x300B;</title>
        <link>https://justinyan.eth.limo/E2F207E7-B838-42EE-AD95-1C942B64EAD6/</link>
        <guid>https://justinyan.eth.limo/E2F207E7-B838-42EE-AD95-1C942B64EAD6/</guid>
        <pubDate>Thu, 09 Jul 2015 11:25:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/07/81zkwg2WcEL-1.jpg" /></p> 
<p>最近一位来自以色列的教授火了，生于 1976 年的他号称写了一本书叫“人类简史”，讲述几十万年前人类出现到今天的历史，通俗易懂，视角独特，简直刷新三观。这本书于 2014 年末出版后迅速风靡以色列，很快就被翻译成多种语言在全球畅销。这位传奇的作者叫尤瓦尔·赫拉利（Yuval Harari），现在在耶路撒冷希伯来大学任历史系教授，这部神书名为 Sapiens: A Brief History of Humankind，国内由中信出版社译为《人类简史》。</p> 
<p>刚开始听说这个书名时很不感冒，后来偶然在学而优翻起开头几页，瞬间被作者新颖的观点所吸引：一直以来人类都认为自己是这个世界独一无二的物种，其实不过是自大瞎扯，历史上有过很多种类型的人类，我们不过是唯一还存活着的人种——智人（Sapiens）。我们和其他人种的关系就是同一个属里不同人种的关系，甚至有学者认为黑猩猩属和人属在生物学上是同一个属的关系。也就是说，如果尼安德特人能够活到今天，从生物学上来说，他们跟我们是不同的动物，就像我们跟猩猩的区别，他们永远学不会我们的语言，就像猫讲不了人话一样。假设他们能活到今天，基督教会认为神应该爱这些尼安德特人吗？我们的法律会认为杀害这些“人”属于杀人吗？</p> 
<p>所以这部作品讲的其实是智人的历史，但是与严肃的著作不同，作者没有按照历史大事件年表的顺序来铺陈史料，得出各种“结论”。大的框架上，作者按照“认知革命”——“农业革命”——“科学革命”这样的顺序来编排内容，但是每一章论述的时候却是理论先行，再用历史资料来佐证论断。作者不是在写史书，简直在写哲学书。</p> 
<p>由于本书的定位偏向科普，内容毫不艰涩，具有大众阅读基础，作者始终以宏观的视角俯瞰历史，生物学、物理学、化学、科学等等信手拈来，把观点阐述得绘声绘色，而且极富想象力，常有骇人听闻的言论发表，三观凌驾在现有大众认知之上，频频对各种大众习以为常的事情发出嘲讽。</p> 
<p>比如智人在“认知革命”之后发展出来能够描述并相信虚构故事的能力，从而使共同相信这些虚构故事的人能够团结在一起，这也是智人在进化史上的一次飞跃，直接导致了智人统治地球，灭绝其他人种和大量大型动物。这种虚构故事的能力在后来发展成巫师神话，发展成公司、国家、法律、金融等等，所以今天我们都相信的国家和当年部落的民众相信巫师是一样的！甚至美国人崇尚的“人生而平等”也不过是“大家相信的虚构故事”罢了！从生物学上来说，每个人“生而不平等”，没有一样的人。公元 1776 年的《独立宣言》和公元前 1776 年的《汉莫拉蒂法典》的内容虽然不一样，但是都是一样的虚构故事！这种虚构的故事构成了社会的秩序，人们相信这些秩序，并不是因为这种秩序客观存在，而是因为相信它可以让人提升合作效率，打造更美好的社会。</p> 
<p>作者在全书中贯彻这种超然物外的三观，令人叹为观止。而且值得一提的是，中信的这部译本，质量非常高，语言晓畅，而且作者还为中国版做了内容修改，加入了大量跟中国历史相关的资料来印证他的观点，据说他对每一个国家的版本都做过本地化修改，简直神人。</p> 
<p>我们多数人的历史知识来自于学校，而学校出于政治需要总是给出模凌两可的历史，读完这本书，以前很多不理解的事情就豁然开朗了。比如说资本主义，从来我们只知道“资本主义”走不通，但是资本主义到底是什么，政治与历史课本上聱牙诘屈，繁冗无趣的解释完全无法理解。但是这本书就讲得非常通俗了，而且把资本主义产生的社会背景和当时人们的心理认知都解释了一遍，这样具有大众阅读基础，又有惊人言论的作品，怎么可能不火？</p> 
<p>2015.07.08/中午<br /> 于 T.i.T 创意园</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #81 &#x838E;&#x58EB;&#x6BD4;&#x4E9A; &#x2014; &#x201C;&#x56DB;&#x5927;&#x60B2;&#x5267;&#x201D;</title>
        <link>https://justinyan.eth.limo/BCF8E894-A5D8-45E6-BBB3-B39EDEF20868/</link>
        <guid>https://justinyan.eth.limo/BCF8E894-A5D8-45E6-BBB3-B39EDEF20868/</guid>
        <pubDate>Sat, 27 Jun 2015 14:13:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2015/06/562c11dfa9ec8a13f7b9eafcf903918fa0ecc00f-1.jpg" alt="" /></p> 
<p>即使没读过莎士比亚的作品，大部分中国人也都听过这句话：</p> 
<blockquote>
 <p> 一千个读者有一千个哈姆雷特。<br /> There are a thousand hamlets in a thousand people’s eyes. </p>
</blockquote> 
<p>这句话被解释成每个人对于文学作品的理解各有不同，而我却一直对这种解释持怀有疑问，一是我不明白这句话到底想要表达什么，二是我无法理解能够被一千个不同 POV 解释的哈姆雷特到底是什么样的存在。按理这种空泛的解释换了哪个角色都说得通，但为什么一定是哈姆雷特？</p> 
<p>直到读完《哈姆雷特》全剧也没有答案，我觉得这位悲剧主角的形象一直非常鲜明，就是一个内心矛盾又优柔寡断的王子，能够对其有 10 种截然不同的解读已经很厉害，1000 种实在不知怎么生成的。更奇怪的是这句“广为人知的名言”没有人知道其准确的出处，有人说出自莎士比亚，有人说是恩格斯，Google 英文，出来相关网页全是中国人写的，不得不让人怀疑这句话是否“Made in China”，就像“太空可以看到长城”一样。后来我在知乎上提了问题，目前还没有明确的回答，有兴趣的同学可以考据一番：<a href="http://www.zhihu.com/question/31514276">“一千个读者有一千个哈姆雷特”的出处是哪里？这句话是Made in China 吗？</a></p> 
<p>不过开始看莎翁的“四大悲剧”却是因为 James 的《冲突与悬念》中多次提及《麦克白》这部作品。《麦克白》是莎翁最短的一部作品，《哈姆雷特》则是最长的一部。很多读者可能一听到莎士比亚内心就有些畏惧，觉得这人是古代人，写的是古代英语，像文言文一样一定很难读，而且跟《巴黎圣母院》什么的是一个时期的吧，一大堆环境描写无聊透了。这也是我对莎翁的第一印象，但是读完“四大悲剧”（《哈姆雷特 Hamlet》、《奥赛罗 Othello》、《李尔王 King Lear》和《麦克白 Macbeth》）之后却发现这些著名的戏剧跟小说一样有趣，而且完全不会难读。</p> 
<p>首先莎士比亚创作的巅峰时期是文艺复兴后期（1600 年前后），大约相当于中国明朝中后期，这时候的英语已经是现代英语（Modern English，英语分为古英语、中古英语和现代英语三个时期，真正的古英语跟我们看甲骨文差不多）了，除了部分词语和文学表达有点陌生之外，大部分内容都是很好读懂的。</p> 
<p>其次莎士比亚的代表作是戏剧，当时他既是演员也是剧作家，而且是剧团老板，他的戏剧是要在剧院里面上演的，除了特别长的《哈姆雷特》之外，大部分戏剧都在两个小时左右，跟今天的电影差不多，所以情节都非常紧凑，不会像《悲惨世界》一类小说，需要大量环境描写来吸引当时无所事事的读者，所以读莎士比亚的戏剧你不会觉得无聊，大部分时间都会有各种冲突冲突，麻烦麻烦，悬念丛生，欲罢不能。</p> 
<p>最后能够让莎翁的作品产生“不好读”的感觉的大概就是翻译问题了，我读的是民国翻译家朱生豪先生的译本，除了个别词汇的翻译有点奇怪之外（比如 to act, to do, to perform 被翻译成“干、行、做”，称呼王后 Madam 被翻译成“娘娘”），大部分内容都很好读懂。不过戏剧作品中多有诗歌，中译本很难做到即押韵又优雅，所以真正想要体会戏剧魅力的还是得看英文版。英文版可从<a href="https://www.gutenberg.org/">古腾堡计划（Free ebooks by Project Gutenberg）的网站</a>上下载，这是个专门提供公版书下载的网站，比较有名的公版书都可以找到。莎翁的作品都是自由版权了，这个网站提供多种语言版本，下载的时候注意看看是否为英文版。</p> 
<p>15.06.27/下午<br /> 时光咖啡</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x4E66;&#x5355;] &#x6BCF;&#x5468;&#x8BFB;&#x4E66;&#x4E03;&#x5341;&#x4E09;&#x2014;&#x2014;&#x516B;&#x5341;</title>
        <link>https://justinyan.eth.limo/88BCE01F-785B-4174-A593-6AA680D924AC/</link>
        <guid>https://justinyan.eth.limo/88BCE01F-785B-4174-A593-6AA680D924AC/</guid>
        <pubDate>Mon, 22 Jun 2015 09:57:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>把《每周读书》同步到微信公众平台也有些时间了，最近八周居然能真正做到每周都读书，挺难得也令人欣慰。从 2010/12/17 第一篇开始，“每周读书”已近四年，然而令自己感觉到进步的，却是从公众平台上的第一篇读书开始。有兴趣的读者可以到文章底部扫描二维码关注我的公众号，以下是最近八周的书单：</p> 
<ol> 
 <li> <h2>余秀华——《摇摇晃晃的人间》</h2> <p><em>2015-04-22</em></p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2015/04/s27996639.jpg" alt="image" /></p> <p>余诗抚去了《诗歌报》一类排资论辈自欺欺人的酸腐，唯有真挚充盈的情感保留了下来，悲伤却不绝望，苦痛然而敞亮。我想这种无以言尽的明亮之色正是余诗最为动人的地方。</p> <p>书评见：<a href="http://www.justinyan.me/post/1957">摇摇晃晃的人间 （每周读书 七十三 余秀华 《摇摇晃晃的人间》）</a></p> </li> 
 <li> <h2>三岛由纪夫——《纯白之夜》</h2> <p><em>2015-04-28</em></p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2015/04/chunbaizhiye.jpg" alt="image" /></p> <p>从书架上拣一本最薄的三岛由纪夫的小说买下，正好是《纯白之夜》。上海译文出版社出版的这套三岛的合集甚合我心，装帧简约，朴素干净，最赞的是这本小说没有莫名其妙的前言和后记，真是难得。 小说一个晚上就看完了，在三岛一如既往的细腻与优雅中度过，真好。</p> <p>书评见：<a href="http://www.justinyan.me/post/1985">优雅的小品 （每周读书 七十四 三岛由纪夫《纯白之夜》）</a></p> </li> 
 <li> <h2>三岛由纪夫——《假面的告白》</h2> <p><em>2015-05-05</em></p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2015/05/jiamiandegaobai.jpg" alt="image" /></p> <p>看完这本小说，再回想《金阁寺》，有些想不通的地方就豁然开朗了。设若金阁寺所代表的美就是人世间通常的“男女之恋”的美，而沟口却屡屡和女人在关键时刻就浮现金阁寺的幻影而失败，那么金阁就是假面向往而不可得的女性了。</p> <p>书评见：<a href="http://www.justinyan.me/post/1998">诗意的自白(每周读书 七十五 三岛由纪夫《假面的告白》)</a></p> </li> 
 <li> <h2>刘慈欣——《三体》</h2> <p><em>2015-05-23</em></p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2015/05/santi.jpg" alt="" /></p> <p>毕竟《三体》的“硬科幻”部分精雕细琢无可挑剔，大情节上跌宕起伏，屡屡出人意料，所以只有人物是最好下手开骂的。这就好像普通人没接触过代码与产品设计，想要批评一个产品做得不好，往往只能动用“怎么也懂一点”的“审美能力”来指栽“配色难看”云云了。</p> <p>书评见：<a href="http://www.justinyan.me/post/2016">地球往事三部曲（每周读书 七十六 刘慈欣——《三体》）</a></p> </li> 
 <li> <h2>张爱玲——《小团圆》</h2> <p><em>2015-05-27</em></p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2015/05/xiaotuanyuan_blog.png" alt="" /></p> <p>张爱玲的文笔有如涓涓细流，絮絮叨叨，似耳语，似檐雨，叮叮咚咚，淅淅沥沥，似乎轻飘飘，软绵绵，却不知在何时，早已渗入你的内心，一阵感动。这就是张爱玲式的笔触，无孔不入，细而无声。</p> <p>书评见：<a href="http://www.justinyan.me/post/2040">絮絮叨叨雨泠泠 (每周读书 七十七 张爱玲——《小团圆》)</a></p> </li> 
 <li> <h2>阿加莎——《悬崖山庄奇案》、《罗杰疑案》、《东方快车谋杀案》</h2> <p><em>2015-05-31</em></p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2015/05/cover_agatha.jpg" alt="" /></p> <p>看阿加莎作品的推理过程就像程序员追查一个“无法解决”的 Bug，没有找到根本问题之前，任何用户的描述都是值得怀疑的，靠掌握在手中的一点点线索，慢慢逼近事实真相，最后查出来的 Bug 往往与用户描述大相径庭，出人意料。</p> <p>书评见：<a href="http://www.justinyan.me/post/2063">[每周读书 七十八] 波罗神探 (阿加莎《悬崖山庄奇案》、《罗杰疑案》、《东方快车谋杀案》)</a></p> </li> 
 <li> <h2>张恨水——《秦淮世家》</h2> <p><em>2015-06-11</em></p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2015/06/qhsj.jpg" alt="" /></p> <p>想张恨水是比张爱玲的年代要更久远的作家，不自觉便把他同“很无趣的民国小说”绑在了一起。却没想到《秦淮世家》这部小说很出意料之外，写作手法很是新潮。</p> <p>书评见：<a href="http://www.justinyan.me/post/2108">[每周读书 七十九] 秦淮世家 （每周读书 七十九 张恨水——《秦淮世家》）</a></p> </li> 
 <li> <h2>James Scott Bell——《冲突与悬念》</h2> <p><em>2015-06-17</em></p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2015/06/blog_conflict.jpg" alt="" /></p> <p>即使不写作的读者，了解文学作品的写作技巧也是很有必要的。至少当你想说一部小说很好看的时候不会只有“太赞了”这样毫无信服力的词句，想批评一部小说很无聊的时候不会只有“一点不好看”这样纯粹主观的臆断。</p> <p>书评见：<a href="http://www.justinyan.me/post/2114">[每周读书 八十] James Scott Bell——《冲突与悬念》</a></p> </li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>James Scott Bell &#x7684;&#x300A;&#x51B2;&#x7A81;&#x4E0E;&#x60AC;&#x5FF5;&#x300B;&#x4E2D;&#x63D0;&#x5230;&#x7684;&#x5F71;&#x89C6;&#x3001;&#x6587;&#x5B66;&#x4F5C;&#x54C1;</title>
        <link>https://justinyan.eth.limo/C470E80A-F916-4851-83F8-D471FAC3455F/</link>
        <guid>https://justinyan.eth.limo/C470E80A-F916-4851-83F8-D471FAC3455F/</guid>
        <pubDate>Thu, 18 Jun 2015 11:28:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>本文为<a href="https://justinyan.me/post/2114">枫影夜读 #80 James Scott Bell — 《冲突与悬念》</a>的附录：</p> 
<ol> 
 <li>斯托夫人（Harriet Elizabeth Beecher Stowe）的《汤姆叔叔的小屋》</li> 
 <li>埃利·维塞尔（Elie Wiesel）的《夜》</li> 
 <li>约翰·格里沙姆的小说《糖衣陷阱》</li> 
 <li>乔纳森·格雷夫这个暗中施救的人，他是约翰·基尔斯特拉普系列小说的主人公，这个系列的第一部小说是《决不留情》</li> 
 <li>惊悚小说《最后的郊狼》</li> 
 <li>巴瑞·利德的小说《大审判》</li> 
 <li>托马斯·哈利斯的《沉默的羔羊》</li> 
 <li>乔治·佩勒卡诺斯的小说《暗夜园丁》</li> 
 <li>小说《麦田里的守望者》</li> 
 <li>电影《天生冤家》</li> 
 <li>电视剧《宋飞正传》</li> 
 <li>作者自己的作品《背后有鬼》</li> 
 <li>《尝试死亡》</li> 
 <li>奥尔森在《第六位受害者》</li> 
 <li>《欲望单人床》</li> 
 <li>电影《天外魔花》（1956年版）</li> 
 <li>《莫罗博士岛》</li> 
 <li>迪恩·孔茨的小说《午夜》。</li> 
 <li>《夜之声》后来成为孔茨脍炙人口的畅销作品之一。</li> 
 <li>《飘》里的斯嘉丽</li> 
 <li>克林特·伊斯特伍德的一部电影《老爷车》</li> 
 <li>电影《搜索者》</li> 
 <li>《卡萨布兰卡》中的里克</li> 
 <li>斯坦利·库布里克的电影《全金属外壳》</li> 
 <li>《哈克贝利·芬历险记》</li> 
 <li>小说《终极格斗》</li> 
 <li>罗伯特·克莱斯所著《爆破天使》</li> 
 <li>电影《月色撩人》</li> 
 <li>电影《杀死一只知更鸟》</li> 
 <li>《亡命天涯》理查德·金保医生</li> 
 <li>《悲惨世界》</li> 
 <li>《飞越疯人院》中的麦克默菲和护士长拉奇德形成对立。</li> 
 <li>《鲁宾逊漂流记》</li> 
 <li>斯蒂芬·金的《爱上汤姆·戈登的那个女孩》</li> 
 <li>斯蒂芬·金《玫瑰疯狂者》</li> 
 <li>贝蒂·戴维斯的电影《扬帆》</li> 
 <li>斯蒂芬·金的电影《凶火》</li> 
 <li>尼尔·西蒙的戏剧《天生冤家》</li> 
 <li>电影《闪灵》</li> 
 <li>电影《生死时速》</li> 
 <li>小说《金钱第一》</li> 
 <li>古希腊戏剧《阿尔刻提斯》</li> 
 <li>哈米特的《马耳他之鹰》</li> 
 <li>梅尔·吉布森的电影《勇敢的心》</li> 
 <li>罗伯特·克莱斯的《哨兵》</li> 
 <li>苏珊·梅·沃伦的浪漫小说《驯服雷夫》</li> 
 <li>约翰·格里沙姆的文艺小说《上漆的房子》</li> 
 <li>斯蒂格·拉赫松的小说《捅马蜂窝的女孩》</li> 
 <li>安妮塔·史瑞夫的小说《飞行员的妻子》</li> 
 <li>《星球大战》</li> 
 <li>迪恩·孔茨的小说《好人》</li> 
 <li>电影《绿野仙踪》</li> 
 <li>电影《致命武器》</li> 
 <li>电影《虎胆龙威》</li> 
 <li>电影《码头风云》</li> 
 <li>电影《国王的演讲》</li> 
 <li>电影《正午》加里·库柏</li> 
 <li>道格拉斯·亚当斯的《银河系漫游指南》</li> 
 <li>乔·哈尔德曼的短篇科幻推理小说《海明威骗局》</li> 
 <li>小说《击掌相庆》</li> 
 <li>麦克尔·康纳利在《最后的郊狼》</li> 
 <li>丹尼斯·勒翰的历史小说《就在这一天》</li> 
 <li>詹姆斯·克拉韦尔的小说《幕府将军》</li> 
 <li>肯·克西的小说《永不让步》</li> 
 <li>雷蒙德·钱德勒的小说《小妹妹》</li> 
 <li>大卫·莫雷尔的小说《第一滴血》</li> 
 <li>电影《阿拉伯的劳伦斯》</li> 
 <li>罗伯特·派克创作的杰西·斯通系列小说之一《冷血人》</li> 
 <li>迪恩·孔茨的畅销书《耳语》</li> 
 <li>恐怖小说大师大卫·莫雷尔的作品改编的《威龙猛探》。</li> 
 <li>希区柯克的电影《群鸟》</li> 
 <li>派特·康洛伊的小说《浪潮王子》</li> 
 <li>斯皮兰的《一夜孤独》</li> 
 <li>作者的小说《尝试死亡》</li> 
 <li>罗宾·李·哈切尔的二战题材小说《胜利俱乐部》</li> 
 <li>伟大的喜剧作品吧，《驯悍记》、《天生冤家》</li> 
 <li>道格拉斯·亚当斯的小说《生命、宇宙及一切》</li> 
 <li>希区柯克总是在他的电影中使用喜剧因素作为调剂。其中一个例子就是《西北偏北》</li> 
 <li>我的小说《真相大白》</li> 
 <li>《哈姆莱特》</li> 
 <li>在《写出突破之作》中，唐纳德·马斯</li> 
 <li>安·拉莫特的《不完美的鸟》</li> 
 <li>肯·格林伍德的经典穿越小说《重播》</li> 
 <li>科妮莉娅·瑞德的小说《黑暗之域》</li> 
 <li>艾琳·古奇的小说《秘密的小径与谎言的花园》</li> 
 <li>菲力斯·惠特尼 1988 年出版的经典名著《小说写作指南》</li> 
 <li>约翰·哈威的小说《灰与骨》</li> 
 <li>史瑞夫的小说《他所要的一切》</li> 
 <li>阿兰·福尔松的小说《后天》</li> 
 <li>经典电影《卡萨布兰卡》</li> 
 <li>电影《采花大盗》</li> 
 <li>杰克·比克海姆1989年出版的著作《畅销小说创作》</li> 
 <li>埃里克·伯恩 1964 年出版的一本心理学通俗读物《人们玩的游戏》</li> 
 <li>尤尔·伯连纳的《十诫》</li> 
 <li>安·兰德的《地球战栗》（Atlas Shrugged） </li> 
 <li>杰克·凯鲁亚克《在路上》（On the Road）</li> 
 <li>《城市滑头》</li> 
 <li>雷蒙德·钱德勒《凶杀案的简单艺术》</li> 
 <li>《姐姐的守护者》</li> 
 <li>安德鲁·瓦切斯的伯克系列小说《另一个生命》</li> 
 <li>《了不起的盖茨比》</li> 
 <li>托马斯·哈里斯的《沉默的羔羊》</li> 
 <li>小说《红龙》</li> 
 <li>罗伯特·克莱斯在《洛杉矶安魂曲》</li> 
 <li>格雷格·艾尔斯的小说《24小时》</li> 
 <li>《土拨鼠之日》</li> 
 <li>达夫妮·杜·穆里埃的《吕贝卡》</li> 
 <li>希区柯克在1947年制作的电影《凄艳断肠花》</li> 
 <li>希区柯克在1964年的电影《艳贼》</li> 
 <li>《等待戈多》</li> 
 <li>希区柯克的《惊魂记》</li> 
 <li>恐怖小说《达·芬奇密码》</li> 
 <li>《夜长梦多》</li> 
 <li>在《速度》中，迪恩·孔茨</li> 
 <li>哈兰·科本的《沉默猎杀》</li> 
 <li>查尔斯·韦布的小说改编的电影《毕业生》</li> 
 <li>20世纪70年代畅销书之一《爱情故事》</li> 
 <li>无声系列电影《宝琳历险记》</li> 
 <li>斯蒂芬·金最初发行《绿里奇迹》</li> 
 <li>德怀特·斯温《畅销书写作技巧》</li> 
 <li>雷蒙德·钱德勒的《再见吾爱》</li> 
 <li>约翰·路茨和大卫·奥古斯特合著的《最后数秒》的序幕</li> 
 <li>哈利·杜兰在标题恰当的《祸不单行》</li> 
 <li>迪恩·孔茨的《陌生人》</li> 
 <li>斯蒂芬·金对于《末日逼近》</li> 
 <li>伊凡·亨特的小说《她离开的时刻》</li> 
 <li>李·查尔德的《死有所值》</li> 
 <li>珍妮佛·韦纳的《欲望单人床》</li> 
 <li>格雷格·艾尔斯的小说《24小时》</li> 
 <li>雷·布拉德伯里的《蒲公英酒》</li> 
 <li>斯蒂芬·金《1408》</li> 
 <li>杰克·比克海姆《写小说销小说》</li> 
 <li>大卫·莫雷尔的小说《爬行者》</li> 
 <li>斯特伦克和怀特的经典著作《风格的要素》</li> 
 <li>小说《哈迪男孩》</li> 
 <li>是本·阿弗莱克的电影《城中大盗》。</li> 
 <li>经典西部片《原野奇侠》</li> 
 <li>电影《大内幕》</li> 
 <li>科内尔·伍尔里奇短篇小说《三点钟》</li> 
 <li>伍尔里奇的小说《魅影女子》</li> 
 <li>电影《曼哈顿》</li> 
 <li>小说《回到未来》</li> 
 <li>《生活多美好》</li> 
 <li>电影《第六感》</li> 
 <li>《东方快车谋杀案》</li> 
 <li>《麦琪的礼物》</li> 
 <li>《唐人街》</li> 
 <li>希区柯克的经典电影《后窗》</li> 
 <li>杰弗逊·帕克的小说《洛杉矶的不法之徒》</li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #80 James Scott Bell &#x2014; &#x300A;&#x51B2;&#x7A81;&#x4E0E;&#x60AC;&#x5FF5;&#x300B;</title>
        <link>https://justinyan.eth.limo/78FD2600-C55B-4FF4-8A8C-5F3102C93F38/</link>
        <guid>https://justinyan.eth.limo/78FD2600-C55B-4FF4-8A8C-5F3102C93F38/</guid>
        <pubDate>Wed, 17 Jun 2015 13:28:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/06/91229uVT0gL-1.jpg" /></p> 
<p>每一个作家都希望自己的作品能够成为畅销作品，为大众所喜爱，“畅销”不一定有深度，但是受大家喜爱的作品一般都比较畅销。悬念小说作家<a href="https://twitter.com/jamesscottbell">James Scott Bell</a> 针对“如何写出畅销小说”写了一系列写作指导书籍，《冲突与悬念》就是其中之一（可以参见 James 官网<a href="http://www.jamesscottbell.com/styled-7/index.html">http://www.jamesscottbell.com/styled-7/index.html</a>）。</p> 
<p>作者认为写作技巧是可以传授的，不能传授的部分是作家本身的个人天赋、人生阅历、激情和胸怀，是这些作家自身的特质赋予了作品更为深刻的内涵，写作技巧则是承载这些内涵的必要工具。本书是针对“写作技巧”的指导，作者认为冲突与悬念是虚构小说最重要的两个元素，冲突是小说的引擎，而悬念则让小说形成张力，提供读者阅读下去的动力。</p> 
<p>作者提倡以“内心的情感体验”为中心去写作，有点像互联网前两年流行的“以用户为中心的设计”，只不过互联网产品要赢得用户而小说是要赢得读者。</p> 
<p>看完这本书，有两点是印象最为深刻的：</p> 
<ol> 
 <li><strong>作者的旁征博引</strong>。全书竟然引用了一百多部电影和小说作品作为例子讲解，光是看完这么多作品已是不易，居然还能用其中的情节设计作为自己理论的佐证，不得不佩服作者惊人的阅读量。（枫影整理了书中提到的作品附于文末，有兴趣的读者可以看看相关作品。）<p></p> </li> 
 <li> <p><strong>冲突与悬念对于虚构小说（尤其是重情节的推理小说、恐怖小说）来说确实是很重要的元素。</strong> 采用书中介绍的三幕剧结构，设置好两个重要的关口，第一个把主角推入主要情节无法回头，中间每一个场景都布置好悬念给予读者充足的阅读兴趣，然后第二个把主角推入最后决战，最后做一个精彩的收尾，这样一部小说从技巧上说是很吸引人的，读者也愿意读下去。这样看来很多网络小说都有这样的套路，同样技巧下作品能否赢取读者的内心就要看作者的内涵了。</p> </li> 
</ol> 
<p>文学作品常被拿来和音乐作品类比，被认为是主观而难以量化的。但正如音乐编写有各种既定的技巧，文学作品也如是。即使不写作的读者，了解文学作品的写作技巧也是很有必要的。至少当你想说一部小说很好看的时候不会只有“太赞了”这样空洞的形容，想批评一部小说很无聊的时候不会只有“一点不好看”这样纯粹主观的臆断。</p> 
<p>James 的这本书英文原名是：<a href="http://www.amazon.com/Elements-Fiction-Writing-Conflict-Suspense/dp/159963273X/ref=sr_1_1?ie=UTF8&amp;qid=1434432398&amp;sr=8-1&amp;keywords=conflict+and+suspense">Elements of Fiction Writing - Conflict and Suspense</a>，中译本把主次标题对调了，如果读者对于这本书感兴趣，请千万一定要读英文原版，中国人民大学出版社的中译本翻译差强人意，读者虽然可以读懂大部分内容，却在一些关键点上差之千里。比如书中援引 Raymond Chandler 的话被翻译成：</p> 
<blockquote>
 <p> 唯恐天下不乱，乃作家职责所系，责无旁贷。 </p>
</blockquote> 
<p>而事实上 Raymond Chandler 原话是这样的：</p> 
<blockquote>
 <p> Trouble is my business. </p>
</blockquote> 
<p>这样意译未免有些过度。再比如讲冲突的第二节“为冲突展开头脑风暴”(Brainstorming for Conflict) 里，”An Image” 一节被翻译成“视觉画面”，但事实上这一节讲到了 Music, Dreams, Movie Mind，这里的 Image 翻译成“印象”或者“意象”要好得多，看到这里我都完全对不上关系还以为是漏印了什么内容。最可怕的是 Conflict in Theme 一章中：</p> 
<blockquote>
 <p> Curly in City Slickers said the secret of life was “one thing.” </p>
</blockquote> 
<p>被翻译成了：</p> 
<blockquote>
 <p> 《城市滑头》中的克里曾说过：生活的秘密是“一个东西”。 </p>
</blockquote> 
<p>当然我们可以说这本书里光是引用的电影和书名的翻译就得花上许多功夫，译者的困难是显而易见的。但是我想这并不能成为翻译质量低下的借口，这是译者本来就应该做的事情。尽管这本书的翻译多有不足，但至少让更多中文读者了解了写作指导类的书籍，这件事情本身是值得称赞的。</p> 
<p>15.06.16/中午<br /> 于 T.i.T 创意园</p> 
<p><strong>《冲突与悬念》一书中提及的影视小说作品请参见此文：<a href="http://www.justinyan.me/post/2127">James Scott Bell 的《冲突与悬念》中提到的影视、文学作品</a></strong></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #79 &#x5F20;&#x6068;&#x6C34; &#x2014; &#x300A;&#x79E6;&#x6DEE;&#x4E16;&#x5BB6;&#x300B;</title>
        <link>https://justinyan.eth.limo/7C47EC9B-9E54-4B5E-ACF1-1427609145CD/</link>
        <guid>https://justinyan.eth.limo/7C47EC9B-9E54-4B5E-ACF1-1427609145CD/</guid>
        <pubDate>Thu, 11 Jun 2015 14:16:55 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/06/qinhuaishijie-1.jpg" /></p> 
<p>因着张爱玲这句“张恨水小说中的男主角”，对这男主角究竟是怎样颇为好奇。又想张恨水是比张爱玲的年代要更久远的作家，不自觉便把他同“很无趣的民国小说”绑在了一起。却没想到《秦淮世家》这部小说很出意料之外，写作手法很是新潮，悬念丛生，颇为吸引。</p> 
<p>故事讲述了秦淮河上一户“歌女”人家与一个上海富商斗争的事情，男主角是在夫子庙摆书摊的穷书生徐亦进。形式上小说是旧式的章回体写法，手法上却很新潮，一开场就是歌女家的唐大嫂向邻桌“不认识的兄弟”打招呼，牵出“穷书生拾金不昧”之事，进而把这么一位刚正不阿读圣贤书之人，和“养娼妓”的人家联系到了一起，读者不由兴趣盎然：两种对立的人物碰撞到一起，能擦出什么样的火花来？</p> 
<p>随后故事又引出有倾城容貌却颇为高傲的歌女唐小春，和“出淤泥而不染”的二小姐唐二春，男主角与二小姐的情意把男主角推进事件的漩涡，再无法抽离。随着故事的发展，男主角与唐家妈间处世哲学的对立，与二小姐的感情纠葛开始产生强烈的化学反应，这时候恶势力出现了，面对绑架与压迫，唐家嫂选择了逆来顺受，而性格激烈的二小姐与正直不屈的男主角则负隅顽抗，全书在与恶势力的终极对决中达到高潮。</p> 
<p>在今天看来这个故事可能比较普通，然而作者却妙笔生花，每个章回都埋下一个悬念，牢牢抓住读者的眼球。但是到了小说后期，作者频频切换人物视角（POV），笔墨都着落在次要人物大狗和二春身上，让冲突的紧张感损失不少，一来失却了故事的紧张感，二来主角的戏份减少，让人不免有一种对人物的感情投资没有回报的失落之感。对于小说来说，这种失策是致命的，直接让读者没了一定要读的兴趣。</p> 
<p>本是冲着“张恨水小说的男主角”这个印象去的，最后却发现男主角其实并没有什么戏份，连故事末最有象征意义的一把火都不是他点的，令人哭笑不得。故事倒是有些意境，恶势力的贼窝被烧毁之后，原地很快又新建起一栋高楼，原先为了躲开恶势力的唐小春回到秦淮河继续卖唱，太阳照样升起，地球一样转。主角们拼上性命的斗争，不过是秦淮河上一个小水花，淹没在岁月长河之中。</p> 
<blockquote>
 <p> 秦淮河上的女人，是离不开秦淮河的。 </p>
</blockquote> 
<p>15.06.04</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x4F55;&#x4F7F;&#x7528; NSOperations &#x548C; NSOperationQueues</title>
        <link>https://justinyan.eth.limo/58356171-2DAF-493C-9D1E-FCC997D7ECC7/</link>
        <guid>https://justinyan.eth.limo/58356171-2DAF-493C-9D1E-FCC997D7ECC7/</guid>
        <pubDate>Tue, 09 Jun 2015 16:01:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>本文为 <a href="http://www.raywenderlich.com">www.raywenderlich.com</a> 上的一篇教程，由枫影翻译。<br /> 原文地址 <a href="http://www.raywenderlich.com/76341/use-nsoperation-nsoperationqueue-swift">http://www.raywenderlich.com/76341/use-nsoperation-nsoperationqueue-swift</a></em></p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pics/NSOperation.jpg" alt="img" /></p> 
<p>更新记录：本教程由 Richard Turton 针对 iOS 8, Xcode 6.1 和 Swift 进行了更新。<a href="http://www.raywenderlich.com/19788/how-to-use-nsoperations-and-nsoperationqueues">原文</a>由团队成员 Soheil Azarpour 编写。</p> 
<p>相信大家都有过这样令人沮丧的经验：在 iOS/Mac 应用里按下一个按钮或者输入一些文字的时候，突然间整个界面就卡住不动了。</p> 
<p>在 Mac 上，用户只能盯着那个彩色的球不停地转圈圈，好一会儿才能继续使用你的应用。在 iOS 上，用户则期望应用应该能实时地对自己的触摸动作进行反馈。这些不够流畅的应用看起来笨重而拖沓，一般都是差评如潮。</p> 
<p>然而保持应用流畅度却是说起来容易做起来难。一旦你的应用需要执行繁重的任务，事情就会变得复杂起来。要在 Main Run Loop 里同时执行繁重的任务并且进行流畅的响应是不可能的事情。</p> 
<p>一个可怜的开发者对此能做点什么呢？答案就是把繁重的任务从主线程挪到另一个并发的线程上。并发意味着你的应用可以同时多个操作流（或者线程）——以此达到界面响应用户输入的同时还能执行其他任务。</p> 
<p>NSOperation 和 NSOperationQueue 是在 iOS 上实现并发操作的一种方法。在本教程中，你将会学习如何使用这些类。我们将从一个完全不使用并发的应用开始，这个应用会看起来很迟钝，然后你将对这个应用进行重构，加入并发操作让界面变得流畅起来！</p> 
<h2>开始吧！</h2> 
<p>本教程的示例工程主要用于展示一个 TableView，里面是加过滤镜的图片。图片要从网上下载下来，在本地加上滤镜效果，然后在展示在 TableView 里面。</p> 
<p>下图是这个应用的模型：<br /> <img decoding="async" src="http://cdn5.raywenderlich.com/wp-content/uploads/2012/08/NSOperation_model_stalled.png" alt="model" /></p> 
<h2>初次尝试</h2> 
<p>请下载本教程的示例代码：<a href="http://cdn5.raywenderlich.com/wp-content/uploads/2014/10/ClassicPhotos-Starter63.zip">http://cdn5.raywenderlich.com/wp-content/uploads/2014/10/ClassicPhotos-Starter63.zip</a></p> 
<p><em>注意：所有的图片都来自<a href="http://stock.xchng">stock.xchng</a>。部分图片故意拼错名字，用于测试下载失败的情况</em></p> 
<p>编译运行这个工程，然后（最终）你讲看到这个应用里展示了一个图片列表。试试看滚动一下这个列表，是不是菊花一紧？</p> 
<p><img decoding="async" src="http://cdn1.raywenderlich.com/wp-content/uploads/2014/07/classicphotos-stalled-screenshot-213x320.png" alt="" /></p> 
<p>所有的动作都在 ListViewController.swift 这个类里面，而且多数都写在 tableView(_:cellForRowAtIndexPath:) 方法里。</p> 
<p>你会发现有两个操作是特别重的：</p> 
<ol> 
 <li><strong>从网上下载图片。</strong> 虽然这是一件很简单的事情，但是你必须等待图片下载完成才能进行下一个任务。</li> 
 <li><strong>使用 Core Image 对图片添加滤镜效果。</strong> 这个方法对图片使用了 sepia 滤镜。如果你对 Core Image 滤镜有兴趣，你可以参考 <a href="http://www.raywenderlich.com/?p=76285">Beginning Core Image in Swift</a> 一文。</li> 
</ol> 
<p>此外，应用刚开始还从网上下载了一份图片列表：</p> 
<div>
  [sourcecode language="swift"]
 <br /> lazy var photos = NSDictionary(contentsOfURL:dataSourceURL)
 <br /> [/sourcecode] 
</div> 
<p>所有这些操作都是在主线程做的。由于主线程是用于更新UI，同用户交互的线程，阻塞了主线程就会让整个应用看起来很卡。你可以使用 Xcode 的 gauges view 查看应用的执行参数。</p> 
<p><img decoding="async" src="http://cdn1.raywenderlich.com/wp-content/uploads/2014/07/gauges-700x360.png" alt="" /></p> 
<p>你可以看到 Thread 1 （也就是主线程）的 CPU 占用情况。如果想要查看应用的更多详情，你可以使用 Instruments，不过关于 Instruments 可以用<a href="http://www.raywenderlich.com/?p=23037">一整篇文章</a>来讲了。</p> 
<p>OK，现在是时候进入优化部分了。</p> 
<h2>任务，线程和进程</h2> 
<p>开始教程正文之前，这里有几个技术概念需要明确一下：</p> 
<ul> 
 <li><strong>任务</strong>：一件需要完成的，简单、单一的工作。</li> 
 <li><strong>线程</strong>：由操作系统提供的，在一个应用里允许多条指令同时执行的机制。</li> 
 <li><strong>进程</strong>：一大块可执行代码（一般是一个可执行文件），可以由多个线程组成。</li> 
</ul> 
<p><em>注意：在 iOS 和 OS X 中，多线程功能是由 POSIX Threads API（或者说 pthread）提供的，属于操作系统的一部分。这是一个比较底层的 API，很容易犯错，而且最糟糕的事这些错误是很难被察觉到的！</em><br /> <em>Foundation 框架里有一个类叫做 NSThread，相较而言要比底层接口好用多了，但是管理基于 NSThread 的多线程还是相当令人头疼。NSOperation 和 NSOperationQueue 则是更高级的类，提供更加简单的多线程管理接口。</em></p> 
<p>下图中，你可以看到任务，线程和进程三者的关系：<br /> <img decoding="async" src="http://cdn1.raywenderlich.com/wp-content/uploads/2012/08/Process_Thread_Task.png" alt="" /></p> 
<p>可以看到，一个进程可以包含多个可以执行的线程，一个线程则可以同时执行多个人物。</p> 
<p>在上图中，线程 2 执行读文件的操作，同时线程 1 则执行界面的展示工作。这跟 iOS 代码的结构很相似——主线程执行界面相关操作，子线程则负责耗时操作，比如读文件，网络操作等等。</p> 
<h2>NSOperation vs. Grand Central Dispatch (GCD)</h2> 
<p>你可能早已听过 <a href="http://developer.apple.com/library/ios/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html">Grand Central Dispatch (GCD)</a> 的大名了。GCD 包含了语言特性，运行时库和系统优化，给 iOS 和 OS X 的并发和多核编程提供了一套系统而且强大的接口。想要了解更多关于 GCD 的内容，可以参考我们的文章：<a href="http://www.raywenderlich.com/?p=4295">Multithreading and Grand Central Dispatch on iOS for Beginners Tutorial</a>。</p> 
<p>NSOperation 和 NSOperationQueue 是基于 GCD 之上的。一个通用的规则，苹果建议尽量使用最高级别的抽象接口，只有经过仔细权衡后觉得确实更底层的接口，才往下层走。</p> 
<p>下面是一个 NSOperation 和 GCD 的一个简单的比较，便于你选择应该使用哪一种接口：</p> 
<ul> 
 <li><strong>GCD</strong> 是一种轻量级的方法，用于一组将被并发执行的任务。你不需要计划这些任务的时间，系统帮你做了。但是使用 Blocks 来添加依赖会是令人头疼的事情，而且作为一个开发者，取消或者挂起一个 block 也需要大量额外的工作。</li> 
 <li><strong>NSOperation</strong> 相比 GCD 要多了一点额外的开销，但是你可以对多个 operation 添加依赖，复用 operation，取消或者挂起 operation。</li> 
</ul> 
<p>由于本文的示例中将对 Table View 进行优化，基于提高性能和减少功耗的考虑，你需要在一个图片 cell 被滚动出屏幕外的时候能够取消对这个图片正在执行的操作，所以我们将使用 NSOperation 来做这个优化。即使所有的操作都是在后台线程做的，如果有几十个耗时操作一直在后台队列中无法取消，对性能也是一种打击。</p> 
<h2>完善应用模型</h2> 
<p>现在是时候完善一下那个没有多线程的应用模型了！如果你仔细观察这个一开始的模型，你会发现有三个地方可以被多线程优化。只要把这三个地方拆解到其他线程，主线程就可以减轻不少压力，提高流畅度。</p> 
<p><img decoding="async" src="http://cdn3.raywenderlich.com/wp-content/uploads/2012/08/NSOperation_model_improved.png" alt="" /></p> 
<p>为了突破应用的性能瓶颈，你将有一个主线程用于实时反馈用户输入，一个子线程专门用来下载图片，还有一个子线程用来对图片添加滤镜效果。在新的模型中，这个应用会从主线程启动，然后先加载一个空的 Table View。与此同时，应用将启动一个子线程用于下载数据源。</p> 
<p>一旦数据源下载完，你将通知 Table View 进行 Reload。Reload Table View 是 UI 操作，所以一定要在主线程执行。在这时， Table View 就知道有多少行数据要进行展示，也知道每一行的图片对应的 URL。但是 Table View 还没拿到真正的图片数据！所以这个时候去下载所有图片是不明智的，你只需要看得到的那几张图片就可以了。</p> 
<p>这里有什么可以优化的点呢？</p> 
<p>一个更好的模型是，只下载显示在屏幕上的那几张图片。所以你的代码首先要问 Table View 要能看到的那些行，然后开始下载的工作。同时，滤镜线程在没有真实图片之前也无法开始工作。所以，在图片还没有下载完之前，滤镜线程不应该被启动。</p> 
<p>要让应用看起来更流畅，你的代码应该要能在图片下载完就立刻显示出来。然后再启动滤镜线程，等滤镜加载完毕再更新 UI 显示添加过滤镜的图片。下面这个图片展示了完整的流程：</p> 
<p><img decoding="async" src="http://cdn4.raywenderlich.com/wp-content/uploads/2012/09/NSOperation_workflow.png" alt="" /></p> 
<p>为了达成这些目标，你首先需要跟踪正在下载、已经下载完的图片，还要知道图片是否已经加过滤镜了。然后你还需要跟踪每一个操作的状态，以便在用户滚动界面时可以取消、暂停或者继续之前的操作。</p> 
<p>Okay!现在我们已经准备好开始写代码了！:]</p> 
<p>打开示例工程，添加一个新的 Swift 文件，名为：PhotoOperations.swift。添加以下代码：</p> 
<div>
  [sourcecode language="swift"]
 <br /> import UIKit
 <p></p> 
 <p>// This enum contains all the possible states a photo record can be in<br /> enum PhotoRecordState {<br /> case New, Downloaded, Filtered, Failed<br /> }</p> 
 <p>class PhotoRecord {<br /> let name:String<br /> let url:NSURL<br /> var state = PhotoRecordState.New<br /> var image = UIImage(named: "Placeholder")</p> 
 <p> init(name:String, url:NSURL) {<br /> self.name = name<br /> self.url = url<br /> }<br /> }<br /> [/sourcecode] </p>
</div> 
<p><em>注意：请确保 import UIKit 这句在文件的顶部。默认情况下，Xcode 会帮你引入 Foundation 文件的。</em></p> 
<p>这个简单的类将代表每一个展示在应用里的图片，同时包含图片的状态（初始状态为 .New）。图片默认是一张占位图。</p> 
<p>为了追踪每一个操作的状态，你需要另一个类。把下面这个类的定义加到 PhotoOperations.swift 底部：</p> 
<div>
  [sourcecode language="swift"]
 <br /> class PendingOperations {
 <br /> lazy var downloadsInProgress = [NSIndexPath:NSOperation]()
 <br /> lazy var downloadQueue:NSOperationQueue = {
 <br /> var queue = NSOperationQueue()
 <br /> queue.name = "Download queue"
 <br /> queue.maxConcurrentOperationCount = 1
 <br /> return queue
 <br /> }()
 <p></p> 
 <p> lazy var filtrationsInProgress = [NSIndexPath:NSOperation]()<br /> lazy var filtrationQueue:NSOperationQueue = {<br /> var queue = NSOperationQueue()<br /> queue.name = "Image Filtration queue"<br /> queue.maxConcurrentOperationCount = 1<br /> return queue<br /> }()<br /> }<br /> [/sourcecode] </p>
</div> 
<p>这个类包含了两个 Dictionary，用来追踪 Table View 里每一行的下载和滤镜状态，同时还有两个 Operation Queue 用于图片下载和滤镜操作管理。</p> 
<p>所有的值都被声明为 lazy create，也就是说只有等到第一次用到这个值它才会真正被初始化。这也将是应用的性能得到提升。</p> 
<p>创建一个 NSOperationQueue 也是挺直观的。给 NSOperationQueue 命名是很有用的，这个名字会在 Instruments 或者 debugger 里面显示出来。出于本文的教学目的，这里最大并发数 maxConcurrentOperationCount 被设为 1，这样你可以清楚地看到这些操作一个接一个地往下走。你也可以改成让队列本身去决定最大并发数，这将更大地提升你的应用性能。</p> 
<p>那么队列本身是怎么决定最大并发数的呢？好问题！:]这是由硬件来决定的。默认情况下，NSOperationQueue 会自己计算出对当前平台来说最好的决策，然后启动尽可能多的线程。</p> 
<p>试想一下下面这个例子。假设这时候系统出于空闲状态，有很多可用资源，那么这个队列可能会启动大概 8 个并发线程。下一次你启动这个 App 的时候，有可能系统正在处理其他操作，那这个队列可能就只有 2 个并发线程。在这个示例工程里，由于你设置了最大并发数为 1，所以同时只会有一个操作在执行。</p> 
<p><em>注意：你可能觉得奇怪，为什么我们要跟踪所有下载中和等待下载的操作，队列本身有一个 operations 属性可以返回所有操作，为什么不直接用这个就好了？在这个项目中，这么做可能不太高效。因为你必须把 table view 的行数和操作关联起来，这么做意味着你每次都要循环一遍整个数组去查找属于哪一行，使用 Dictionary 把 indexPath 作为 Key 存起来则可以很快地找到对应的操作。</em></p> 
<p>接下来我们要对下载和滤镜操作进行管理了。把下面这些代码加到 PhotoOperations.swift 文件底部：</p> 
<div>
  [sourcecode language="swift"]
 <br /> class ImageDownloader: NSOperation {
 <br /> //1
 <br /> let photoRecord: PhotoRecord
 <p></p> 
 <p> //2<br /> init(photoRecord: PhotoRecord) {<br /> self.photoRecord = photoRecord<br /> }</p> 
 <p> //3<br /> override func main() {<br /> //4<br /> if self.cancelled {<br /> return<br /> }<br /> //5<br /> let imageData = NSData(contentsOfURL:self.photoRecord.url)</p> 
 <p> //6<br /> if self.cancelled {<br /> return<br /> }</p> 
 <p> //7<br /> if imageData?.length &gt; 0 {<br /> self.photoRecord.image = UIImage(data:imageData!)<br /> self.photoRecord.state = .Downloaded<br /> }<br /> else<br /> {<br /> self.photoRecord.state = .Failed<br /> self.photoRecord.image = UIImage(named: "Failed")<br /> }<br /> }<br /> }<br /> [/sourcecode] </p>
</div> 
<p>NSOperation 是一个抽象类，是为了继承而设计的。每一个子类代表一个特殊的<strong>任务</strong>（如前所述）。</p> 
<p>上面代码里各行注释的含义如下：</p> 
<ol> 
 <li>用一个常量来记住当前操作对应的 PhotoRecord</li> 
 <li>创建一个初始化接口，接收一个图片记录作为初始化参数</li> 
 <li>你需要重载 main 函数，这里是实际要执行的操作</li> 
 <li>开始任务之前先检查是否已经被取消了。在开始耗时操作之前，所有的 Operation 都应该检查是否已被取消。</li> 
 <li>下载图片数据。</li> 
 <li>再检查一次是否被取消</li> 
 <li>如果有图片数据，则创建一个 UIImage 然后赋值给 photoRecord，并且修改状态。如果没有，则标记为下载失败。</li> 
</ol> 
<p>接下来，你需要创建另一个 Operation，用于执行滤镜操作！把下面代码添加到 PhotoOperations.swift 文件里：</p> 
<div>
  [sourcecode language="swift"]
 <br /> class ImageFiltration: NSOperation {
 <br /> let photoRecord: PhotoRecord
 <p></p> 
 <p> init(photoRecord: PhotoRecord) {<br /> self.photoRecord = photoRecord<br /> }</p> 
 <p> override func main () {<br /> if self.cancelled {<br /> return<br /> }</p> 
 <p> if self.photoRecord.state != .Downloaded {<br /> return<br /> }</p> 
 <p> if let filteredImage = self.applySepiaFilter(self.photoRecord.image!) {<br /> self.photoRecord.image = filteredImage<br /> self.photoRecord.state = .Filtered<br /> }<br /> }<br /> }<br /> [/sourcecode] </p>
</div> 
<p>这个看上去很像下载 Operation，只是用图片添加滤镜（这里用了一个还没实现的函数，所以会有一个编译错误）代替了下载操作。</p> 
<p>下面我们给 <strong>ImageFiltration</strong> 类添加图片滤镜操作的代码:</p> 
<div>
  [sourcecode language="swift"]
 <br /> func applySepiaFilter(image:UIImage) -&gt; UIImage? {
 <br /> let inputImage = CIImage(data:UIImagePNGRepresentation(image))
 <p></p> 
 <p> if self.cancelled {<br /> return nil<br /> }<br /> let context = CIContext(options:nil)<br /> let filter = CIFilter(name:"CISepiaTone")<br /> filter.setValue(inputImage, forKey: kCIInputImageKey)<br /> filter.setValue(0.8, forKey: "inputIntensity")<br /> let outputImage = filter.outputImage</p> 
 <p> if self.cancelled {<br /> return nil<br /> }</p> 
 <p> let outImage = context.createCGImage(outputImage, fromRect: outputImage.extent())<br /> let returnImage = UIImage(CGImage: outImage)<br /> return returnImage<br /> }<br /> [/sourcecode] </p>
</div> 
<p>这里的滤镜实现跟之前 ListViewController 中的实现是一样的，只是搬到了一个 Operation，从而可以在后台执行这个操作。同样的，你还是要经常检查任务是否已经被取消了，最佳实践是在耗时操作之前和之后各检查一次。一旦滤镜添加完成，你就可以设置 photo record 的状态了。</p> 
<p>牛逼！现在你已经拥有执行后台任务的所有必备工具了，是时候回到 View Controller 中修改你的旧代码了。</p> 
<p>回到 ListViewController.swift 文件，删掉 lazy var photos 声明，添加下面的声明：</p> 
<div>
  [sourcecode language="swift"]
 <br /> var photos = [PhotoRecord]()
 <br /> let pendingOperations = PendingOperations()
 <br /> [/sourcecode] 
</div> 
<p>如此你将有一个照片对象的数组和一个等待任务的队列。</p> 
<p>下面我们添加一个新的方法用于下载图片信息的 plist 文件。</p> 
<div>
  [sourcecode language="swift"]
 <br /> func fetchPhotoDetails() {
 <br /> let request = NSURLRequest(URL:dataSourceURL!)
 <br /> UIApplication.sharedApplication().networkActivityIndicatorVisible = true
 <p></p> 
 <p> NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {response,data,error in<br /> if data != nil {<br /> let datasourceDictionary = NSPropertyListSerialization.propertyListWithData(data, options: Int(NSPropertyListMutabilityOptions.Immutable.rawValue), format: nil, error: nil) as! NSDictionary</p> 
 <p> for(key : AnyObject,value : AnyObject) in datasourceDictionary {<br /> let name = key as? String<br /> let url = NSURL(string:value as? String ?? "")<br /> if name != nil &amp;&amp; url != nil {<br /> let photoRecord = PhotoRecord(name:name!, url:url!)<br /> self.photos.append(photoRecord)<br /> }<br /> }</p> 
 <p> self.tableView.reloadData()<br /> }</p> 
 <p> if error != nil {<br /> let alert = UIAlertView(title:"Oops!",message:error.localizedDescription, delegate:nil, cancelButtonTitle:"OK")<br /> alert.show()<br /> }<br /> UIApplication.sharedApplication().networkActivityIndicatorVisible = false<br /> }<br /> }<br /> [/sourcecode] </p>
</div> 
<p>这个方法创建了一个异步的网络请求，请求结束后在主线程回调。文件下载后会被解析成一个 NSDictionary 对象，然后再解出来一个 PhotoRecord 数组。这里你不会直接使用到 NSOperation，而是用到主队列 NSOperationQueue.mainQueue()。</p> 
<p>在 ViewDidLoad 方法中调用这个下载函数。</p> 
<div>
  [sourcecode language="swift"]
 <br /> fetchPhotoDetails()
 <br /> [/sourcecode] 
</div> 
<p>接下来，找到 tableView(_:cellForRowAtIndexPath:) 然后替换成下面的实现：</p> 
<div>
  [sourcecode language="swift"]
 <br /> override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell {
 <br /> let cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath) as! UITableViewCell
 <p></p> 
 <p> //1<br /> if cell.accessoryView == nil {<br /> let indicator = UIActivityIndicatorView(activityIndicatorStyle: .Gray)<br /> cell.accessoryView = indicator<br /> }<br /> let indicator = cell.accessoryView as! UIActivityIndicatorView</p> 
 <p> //2<br /> let photoDetails = photos[indexPath.row]</p> 
 <p> //3<br /> cell.textLabel?.text = photoDetails.name<br /> cell.imageView?.image = photoDetails.image</p> 
 <p> //4<br /> switch (photoDetails.state){<br /> case .Filtered:<br /> indicator.stopAnimating()<br /> case .Failed:<br /> indicator.stopAnimating()<br /> cell.textLabel?.text = "Failed to load"<br /> case .New, .Downloaded:<br /> indicator.startAnimating()<br /> self.startOperationsForPhotoRecord(photoDetails,indexPath:indexPath)<br /> }</p> 
 <p> return cell<br /> }<br /> [/sourcecode] </p>
</div> 
<p>请花点时间通读一下下面的注释详解：</p> 
<ol> 
 <li>我们使用 UIActivityIndicatorView 来告诉反馈用户当前的图片状态</li> 
 <li>Data Source 包含了 PhotoRecord 的实例，根据当前行的 IndexPath 找到正确的那一个。</li> 
 <li>Cell 的 Text Label 将跟 PhotoRecord 保持一致。</li> 
 <li>检查当前图片记录，设置正确的 Indicator 状态，然后启动对应的 Operation（还没实现）。</li> 
</ol> 
<p>现在你可以把 ViewController 里面的 applySepiaFilter 删掉了，添加以下代码，用于启动一个 Operation:</p> 
<div>
  [sourcecode language="swift"]
 <br /> func startOperationsForPhotoRecord(photoDetails: PhotoRecord, indexPath: NSIndexPath){
 <br /> switch (photoDetails.state) {
 <br /> case .New:
 <br /> startDownloadForRecord(photoDetails, indexPath: indexPath)
 <br /> case .Downloaded:
 <br /> startFiltrationForRecord(photoDetails, indexPath: indexPath)
 <br /> default:
 <br /> NSLog("do nothing")
 <br /> }
 <br /> }
 <br /> [/sourcecode] 
</div> 
<p>这里，你将把一个 PhotoRecord 和 IndexPath 作为参数传入，基于图片的状态，你可以选择启动下载或者滤镜 Operation。</p> 
<p><em>注意：用来下载和添加滤镜的方法是分开实现的，有可能有些图片已经下载完了，然后被滚出屏幕外了，这时候图片滤镜还没加上。所以下一次用户滚动到同一行的时候，你不需要重新下载图片，只要加上滤镜就行了！牛逼烘烘！:]</em></p> 
<p>现在你要实现上面调用到的方法了。还记住你创建了一个自定义的类PendingOperations 用来跟踪 operation吗？现在你可以用上这个类了！添加下面的代码：</p> 
<div>
  [sourcecode language="swift"]
 <br /> func startDownloadForRecord(photoDetails: PhotoRecord, indexPath: NSIndexPath){
 <br /> //1
 <br /> if let downloadOperation = pendingOperations.downloadsInProgress[indexPath] {
 <br /> return
 <br /> }
 <p></p> 
 <p> //2<br /> let downloader = ImageDownloader(photoRecord: photoDetails)<br /> //3<br /> downloader.completionBlock = {<br /> if downloader.cancelled {<br /> return<br /> }<br /> dispatch_async(dispatch_get_main_queue(), {<br /> self.pendingOperations.downloadsInProgress.removeValueForKey(indexPath)<br /> self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)<br /> })<br /> }<br /> //4<br /> pendingOperations.downloadsInProgress[indexPath] = downloader<br /> //5<br /> pendingOperations.downloadQueue.addOperation(downloader)<br /> }</p> 
 <p>func startFiltrationForRecord(photoDetails: PhotoRecord, indexPath: NSIndexPath){<br /> if let filterOperation = pendingOperations.filtrationsInProgress[indexPath]{<br /> return<br /> }</p> 
 <p> let filterer = ImageFiltration(photoRecord: photoDetails)<br /> filterer.completionBlock = {<br /> if filterer.cancelled {<br /> return<br /> }<br /> dispatch_async(dispatch_get_main_queue(), {<br /> self.pendingOperations.filtrationsInProgress.removeValueForKey(indexPath)<br /> self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)<br /> })<br /> }<br /> pendingOperations.filtrationsInProgress[indexPath] = filterer<br /> pendingOperations.filtrationQueue.addOperation(filterer)</p> 
 <p>}<br /> [/sourcecode] </p>
</div> 
<p>Okay! 下面这个列表会告诉你这段代码干了些啥：</p> 
<ol> 
 <li>首先，检查对应的 indexPath 看看是否有 Operation 在 downloadsInProgress 中，如果有，则忽略之。</li> 
 <li>如果没有，则创建一个 ImageDownloader。</li> 
 <li>添加一个 completion block，这个 block 将在 operation 结束后被执行。这里是接收 operation completed 的最佳位置，这个 block 在 operation 被取消的时候也会回调，所以需要先检查是否被取消了。而且这里并不保证一定在主线程回调，所以你还得用 GCD 来确保 UI 操作是在主线程做的。</li> 
 <li>把 Operation 加进 downloadsInProgress 里面以便追踪。</li> 
 <li>把 operation 加到下载队列。这里是触发队列启动的入口，队列会自己去管理任务的执行时间。</li> 
</ol> 
<p>给图片添加滤镜的操作也是一样的模式，除了使用 ImageFiltration 和 filtrationsInProgress 来追踪任务之外。作为练习，你可以自己尝试重构这部分代码，提取重用部分 :]</p> 
<p>最后，你成功了！现在你的工程已经完整了。编译运行一下看看！现在滚动列表将不再卡顿，App 在看得见图片的时候才开始下载和添加滤镜，体验流畅无比！</p> 
<p><img decoding="async" src="http://cdn1.raywenderlich.com/wp-content/uploads/2014/07/iOS-Simulator-Screen-Shot-8-Jul-2014-20.57.53-333x500.png" alt="" /></p> 
<p>这难道不是很酷吗？你可以看到小小的努力可以让你的应用变得更加流畅——用户将获得更多乐趣！</p> 
<h2>微调</h2> 
<p>能看到这里已经很不容易了！你已经让这个项目优化了许多。但是，我们还是有一些细节可以进行调整。你想要的是变成一个伟大的程序员，而不只是一个好程序员。（ You want to be a great programmer, not just a good one!）</p> 
<p>也可能已经注意到当你滚动列表把图片滚出屏幕外的时候，那些任务还在不停地下载和添加滤镜。如果你滚得很快，队列将被塞满，滚到底部的时候那些图片要等很久才能出现。理想情况下，我们应该取消那些不在屏幕里的任务。</p> 
<p>你不是已经添加了“取消”的代码了吗？现在是时候用上他们了！:]</p> 
<p>回到 Xcode，打开 ListViewController.swift。找到 tableView(_:cellForRowAtIndexPath:) 的实现，给 startOperationsForPhotoRecord 的调用包上一个条件判断：</p> 
<div>
  [sourcecode language="swift"]
 <br /> if (!tableView.dragging &amp;&amp; !tableView.decelerating) {
 <br /> self.startOperationsForPhotoRecord(photoDetails, indexPath: indexPath)
 <br /> }
 <br /> [/sourcecode] 
</div> 
<p>这里你让 Table View 只在不滚动的时候才开始下载。这两个属性其实是 UIScrollView 的属性，UITableView 是 UIScrollView 的子类所以可以直接用。</p> 
<p>接下来，要实现 UIScrollView 的 Delegate 方法：</p> 
<div>
  [sourcecode language="swift"]
 <br /> override func scrollViewWillBeginDragging(scrollView: UIScrollView) {
 <br /> //1
 <br /> suspendAllOperations()
 <br /> }
 <p></p> 
 <p>override func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {<br /> // 2<br /> if !decelerate {<br /> loadImagesForOnscreenCells()<br /> resumeAllOperations()<br /> }<br /> }</p> 
 <p>override func scrollViewDidEndDecelerating(scrollView: UIScrollView) {<br /> // 3<br /> loadImagesForOnscreenCells()<br /> resumeAllOperations()<br /> }<br /> [/sourcecode] </p>
</div> 
<p>这段代码做了这么件事：</p> 
<ol> 
 <li>UIScrollView 开始滚动的时候，就要挂起所有的 Operation，看看哪些是用户真正要看到的。后面我们会实现 suspendAllOperations 方法。</li> 
 <li>如果 Delcelrate 是 false，说明用户在拖动 Table View，这里我们要恢复被挂起的任务，取消掉已经不在屏幕中的任务，开始新的任务。我们也会实现 loadImagesForOnscreenCells 和 resumeAllOperations 方法。</li> 
 <li>这个 Delegate 回调告诉你 Table View 停止滚动了，这里我们会做跟 #2 一样的操作。</li> 
</ol> 
<p>现在，我们把漏掉的实现加回 ListViewController.swift 文件中：</p> 
<div>
  [sourcecode language="swift"]
 <br /> func suspendAllOperations () {
 <br /> pendingOperations.downloadQueue.suspended = true
 <br /> pendingOperations.filtrationQueue.suspended = true
 <br /> }
 <p></p> 
 <p>func resumeAllOperations () {<br /> pendingOperations.downloadQueue.suspended = false<br /> pendingOperations.filtrationQueue.suspended = false<br /> }</p> 
 <p>func loadImagesForOnscreenCells () {<br /> //1<br /> if let pathsArray = tableView.indexPathsForVisibleRows() {<br /> //2<br /> var allPendingOperations = Set(pendingOperations.downloadsInProgress.keys.array)<br /> allPendingOperations.unionInPlace(pendingOperations.filtrationsInProgress.keys.array)</p> 
 <p> //3<br /> var toBeCancelled = allPendingOperations<br /> let visiblePaths = Set(pathsArray as! [NSIndexPath])<br /> toBeCancelled.subtractInPlace(visiblePaths)</p> 
 <p> //4<br /> var toBeStarted = visiblePaths<br /> toBeStarted.subtractInPlace(allPendingOperations)</p> 
 <p> // 5<br /> for indexPath in toBeCancelled {<br /> if let pendingDownload = pendingOperations.downloadsInProgress[indexPath] {<br /> pendingDownload.cancel()<br /> }<br /> pendingOperations.downloadsInProgress.removeValueForKey(indexPath)<br /> if let pendingFiltration = pendingOperations.filtrationsInProgress[indexPath] {<br /> pendingFiltration.cancel()<br /> }<br /> pendingOperations.filtrationsInProgress.removeValueForKey(indexPath)<br /> }</p> 
 <p> // 6<br /> for indexPath in toBeStarted {<br /> let indexPath = indexPath as NSIndexPath<br /> let recordToProcess = self.photos[indexPath.row]<br /> startOperationsForPhotoRecord(recordToProcess, indexPath: indexPath)<br /> }<br /> }<br /> }<br /> [/sourcecode] </p>
</div> 
<p>suspendAllOperations 和 resumeAllOperations 的实现都很直观了。NSOperationQueues 是可以被挂起的，设置 suspended 为 true 就行了。这样整个队列里所有的任务都会被挂起——你没有办法只挂起单个任务。</p> 
<p>loadImagesForOnscreenCells 稍微复杂一点：</p> 
<ol> 
 <li>首先有一个数组包含了 Table View 所有可见 Row 的 IndexPath。</li> 
 <li>构建一个由下载中和添加滤镜中的所有操作组成的集合。</li> 
 <li>构建一个要被取消的 Operation 对应的 IndexPath 的集合。在所有 IndexPath 里面去掉看得见的那些就是了。</li> 
 <li>遍历所有需要取消的 Operation，取消并从 PendingOperations 删掉。</li> 
 <li>遍历所有要启动的 Operation，启动之。</li> 
</ol> 
<p>编译运行一下，现在你应该有一个更加流畅，资源管理更加合理的应用了！你们的掌声在哪里！</p> 
<p><img decoding="async" src="http://cdn1.raywenderlich.com/wp-content/uploads/2014/09/improved-700x350.png" alt="" /></p> 
<p>注意到现在只要你停止滚动 Table View，当前屏幕上的 Cell 就会立刻开始下载了。</p> 
<h2>下一步去哪里？</h2> 
<p>这里有一个<a href="http://cdn2.raywenderlich.com/wp-content/uploads/2014/10/ClassicPhotos-Final63.zip">完整的项目工程</a>可供大家下载。</p> 
<p>如果你已经完成了这个项目而且确实花时间理解了所有的东西，那么恭喜你！相比你刚开始看这篇文章，你已经是一个更有价值的 iOS 开发者了！多数开发团队都会为拥有一个或两个真正懂得这些东西的开发者而感到幸运。</p> 
<p>但是要注意——就像多层嵌套的 block 一样，无理由地滥用多线程也会让你的代码变得难以维护。多线程可能会引入很多难以察觉的bug，只在网络差的时候，设备性能特别好的时候，或者跟你写代码的机器的 CPU 数不一样的时候才会出现。你必须很小心地测试这些代码，经常使用 Instruments（或者你自己喜欢的工具）来确认引入多线程确实让性能得到了提高。</p> 
<p>这篇文章里没有提到，Operation 还有一个很有用的特性，就是依赖(dependency)。你可以创建一个依赖于其他 Operation 的 Operation。这个 Operation 只有在那个依赖的 Operation 全部执行完了它才会启动。举个例子：</p> 
<div>
  [sourcecode language="swift"]
 <br /> // MyDownloadOperation is a subclass of NSOperation
 <br /> let downloadOperation = MyDownloadOperation()
 <br /> // MyFilterOperation is a subclass of NSOperation
 <br /> let filterOperation = MyFilterOperation()
 <p></p> 
 <p>filterOperation.addDependency(downloadOperation)<br /> [/sourcecode] </p>
</div> 
<p>要解除依赖关系只要一句代码：</p> 
<div>
  [sourcecode language="swift"]
 <br /> filterOperation.removeDependency(downloadOperation)
 <br /> [/sourcecode] 
</div> 
<p>如果用上依赖关系，是否可以简化本文介绍的这个工程呢？你可以用上这个新技能自己试一下 :] 值得注意的是，有依赖关系的 Operation 即使被依赖的 Operation 被取消了，它也依然会被启动，你需要随时牢记这一点。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #78 &#x963F;&#x52A0;&#x838E; -&#x300A;&#x60AC;&#x5D16;&#x5C71;&#x5E84;&#x5947;&#x6848;&#x300B;&#x3001;&#x300A;&#x7F57;&#x6770;&#x7591;&#x6848;&#x300B;&#x3001;&#x300A;&#x4E1C;&#x65B9;&#x5FEB;&#x8F66;&#x8C0B;&#x6740;&#x6848;&#x300B;</title>
        <link>https://justinyan.eth.limo/9887F625-23FF-4B9B-AE81-96EEB5A2BB01/</link>
        <guid>https://justinyan.eth.limo/9887F625-23FF-4B9B-AE81-96EEB5A2BB01/</guid>
        <pubDate>Sun, 31 May 2015 21:28:33 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/05/v2-70801c22c02ce9bf79e95ad9d9741231_1440w-1.jpg" /></p> 
<p>还在念书时曾在学校的书店里多次见过《东方快车谋杀案》的封皮，却一直记不住作者的名字。这周末因缘际会，竟一口气读了她三部小说，心中颇感敬佩。</p> 
<p>提到英国的侦探小说就不得不提柯南道尔，笔下的福尔摩斯比作家有名的人物，阿加莎克里斯蒂便是与他齐名的侦探小说家，笔下也有波罗侦探与马普尔小姐这样的系列人物。兴许与她创作的时间在 1920——1976 这段时间有关，枫影对这位“侦探小说女王”并不十分熟悉，然而读完《悬崖山庄奇案》，已被其精妙的情节构思所吸引。阿加莎是一位高产的作家，创作生涯几乎每年都有一到两部作品出版，留下的小说作品也有百余部之多。于是枫影又读了同属“波罗侦探系列“”的代表作：《罗杰疑案》与《东方快车谋杀案》。</p> 
<p>这三部作品都不算薄，读起来却奇快。阿加莎几乎没用一点高级修饰，人物对话也几乎不描述动作与表情，写作手法更是几乎都一个套路：开场人物——案件发生——推理过程——揭开谜底，但是由于情节设计极为巧妙，小说的结局总能有惊人的反转。至于翻译质量，得益于阿加莎通俗易懂的语言风格，新星出版社出版的这几部作品可读性都极佳，我相信还没读到的其他作品也是一样的。</p> 
<p>​如果说东野圭吾的推理作品如新世纪福音战士，带有深刻的人性挖掘和阴暗的社会背景，那么阿加莎的作品就是哆啦A梦，有着巧妙的情节编排和明快的抒写笔调。推理小说是强调情节设计的文体，然而东野圭吾的小说却寄予了超出推理本身的深层寓意，比如《白夜行》，是社会的阴暗导致了主角人格扭曲，行事邪恶，唯有心中的爱才是真诚，又比如《嫌疑犯x的献身》，除了推理情节上石神与伽利略的精彩角力之外，更充满了法律与公正的冲突，罪恶与现实的无奈，到头来谁才是真正的残忍，让故事本身超出了侦探小说的属性。</p> 
<p>反观阿加莎的作品，她并没有给笔下的故事注入太多沉重的现实，波罗只是个自命不凡矮个子名侦探，他拥有的武器就是他冷静的推理能力，他的凶手都是乖乖呆在那里等着他非凡的推理结束后揭露出来的，没有凶险的抗争也没有血腥的一面（真要有的话波罗应该牺牲很多次了），只靠她精妙的情节设计，让读者拍手叫好。</p> 
<p>我想这种语言平易近人，情节扑朔迷离的特色正是其畅销的原因。她喜欢在作品中铺陈所有已知的证据，侦探迷们大可自行推理还原事实真相，再往后读加以验证，而懒人如我则可直接跃进到结局，看大侦探召集所有人宣布推理结果，感受反转结局的魅力。东野的作品由于其附加属性往往较为沉重，有些作品如《嫌疑犯x的献身》可以再看一遍感受内心的震动。而阿加莎的作品则更像如茶余饭后的闲适读物，长途旅行备上一本最好打发时间，一旦解开谜底就不会再看第二遍了。</p> 
<p>15.05.31/夜<br /> 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #77 &#x5F20;&#x7231;&#x73B2; &#x2014; &#x300A;&#x5C0F;&#x56E2;&#x5706;&#x300B;</title>
        <link>https://justinyan.eth.limo/BB3C1312-25C2-46E8-851A-5A000ABA3EC0/</link>
        <guid>https://justinyan.eth.limo/BB3C1312-25C2-46E8-851A-5A000ABA3EC0/</guid>
        <pubDate>Wed, 27 May 2015 11:48:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/05/xiaotuanyuan-1.jpg" /></p> 
<blockquote>
 <p> 九莉快三十岁的时候在笔记簿上写道：“雨声潺潺，像住在溪边。宁愿天天下雨，以为你是因为下雨不来。” </p>
</blockquote> 
<p>读完《小团圆》，已分不清盛九莉与张爱玲了，在此之前我对张爱玲知之甚少，只知她是有名的作家，有过不如意的爱情，却万没想到盛九莉即是张爱玲！内心颇为震动。</p> 
<p>这位民国的女作家最终在美国逝世，留下的许多作品如《倾城之恋》、《红玫瑰与白玫瑰》等早已家喻户晓，然则《小团圆》却是特别的一部。首先这是一部半自传体小说，女主角就是张爱玲（盛九莉），小说里的张之雍就是她的前夫胡兰成，还有潇洒的母亲与姑姑，都是张爱玲人生中极为重要的人物，读《小团圆》就是读作者曲折的一生。</p> 
<p>其次，这部作品在张爱玲辞世 13 年后方得以出版，只因她曾在遗嘱中声明：</p> 
<blockquote>
 <p> （《小团圆》小说要销毁。）这些我没细想，过天再说了。 </p>
</blockquote> 
<p>所以此书的出版曾有微议，然则其中原委宋以朗所写的《前言》已有详解，此处不再赘述。只是这段曲折又让本书添了些许神秘。</p> 
<p>且说回《小团圆》，文首的引文在书中首尾各出现了一次，正巧不久前看了新海诚的《言叶之庭》，也是同雨相关的爱情故事：男女主人公以雨为借口，相约在雨亭。“若明日下雨，我便会来。”他们盼雨，九莉也盼，却只盼的一个借口，一声慰藉。</p> 
<p>多么苍凉。</p> 
<p>小说四处充溢着这种张爱玲式的苍凉。读前两章时总觉得有些过于平淡，直到张之雍的出现，才使故事世界有了波澜。然而轻描淡写正是她的风格，常常不经意间就抛出一句嘲讽，仿佛嘴角一丝冷笑：</p> 
<blockquote>
 <p> 自己生活贫乏的人才喜欢刺探别人的私事。 </p>
</blockquote> 
<p>张爱玲的这种风格常使人迷失，这种迷失要归功于一笔带过的转场和突如其来的情感。</p> 
<p>比如时空的转场，常常上一句话里人们还坐在厅室吃茶聊天，下一句话就不知过了多少时候，换了个什么地方，只人物还是那些人物，谈论的或许已是别的什么。</p> 
<p>又比如人物的出场，在《小团圆》里，仿佛无论何时何地都可以冒出来一个人名，说了一句什么话，连脸面都不大清楚，就已悄然退场。甚至同一个人物在邻近的几句话里就被换了好几个称呼（比如二婶——母亲——蕊秋），你得回过头去想一想，才恍然大悟：噢，原来是她。</p> 
<p>但是这种节约的写法却让频繁的转场之间无缝对接，仿佛一镜到底，也是神来之笔。</p> 
<p>至于突如其来的情感，有时也令人摸不着头脑。明明盛九莉并没有表露出她深爱张之雍的迹象，却突然一个眼神，内心就澎湃了起来：</p> 
<blockquote>
 <p> 她崇拜他，为什么不能让他知道？ </p>
</blockquote> 
<p>这大约也正是张爱玲小说吸引人的地方，就像个谜一样的少女，你自以为借着作者的视角看透了她的内心，却原来什么也没看懂。你以为她冰冷冷不想理睬，回过头来却一个香吻。多么千转百转，多么折磨人心！</p> 
<p>二者结合让张爱玲的文笔有如涓涓细流，絮絮叨叨，似耳语，似檐雨，叮叮咚咚，淅淅沥沥，似乎轻飘飘，软绵绵，却不知在何时，早已渗入你的内心，一阵感动。这就是张爱玲式的笔触，无孔不入，细而无声。</p> 
<p>《小团圆》就这么在雨声潺潺中落幕，如梦似幻，以全知的视角俯视九莉的人生。这里面有九莉学生时代的迷懵，有后来曲折的爱情，有在美国打胎的恐怖，有她母亲的冷暖，有她姑姑的相依。小团圆并不小，“她”是张爱玲一生的写照，是张爱玲最为深知的一切。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #76 &#x5218;&#x6148;&#x6B23; &#x2014; &#x300A;&#x4E09;&#x4F53;&#x300B;</title>
        <link>https://justinyan.eth.limo/305C3AC9-7329-42A9-B705-881C02C4DC4C/</link>
        <guid>https://justinyan.eth.limo/305C3AC9-7329-42A9-B705-881C02C4DC4C/</guid>
        <pubDate>Sat, 23 May 2015 01:00:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="http://cdn.justinbot.com/wp-content/uploads/2019/05/santi.jpg" /></p> 
<p>“黑，真他妈的黑。”</p> 
<p>2010 年刘慈欣的《三体3》出版，在推特上曾引发过一阵热潮，当时我很好奇大家都在讨论的“三体”到底是什么，于是便看了《三体》第一部，那时候，《每周读书》刚写到<a href="http://www.justinyan.me/post/749">第六篇</a>。</p> 
<p>一晃眼 5 年过去了，终于把三部曲全部看完。放下书本，蓝色星球在广袤无垠的黑暗空间中悬浮的影像却久久不能消散，以极高智慧生物的上帝视角回望银河系，回望整个宇宙的场景每每不能忘却。在地铁上捧着张爱玲的《小团圆》却读不下去，思绪竟无法重返地球。</p> 
<p>三体中的舞台大，真他妈的大，三体中的世界黑，真他妈的黑。作为一部太空史诗，《三体》的世界构筑在宇宙文明的生存竞争之上，作家把这个基本定律总结为两点：</p> 
<ol> 
 <li>生存是文明的第一需要</li> 
 <li>文明不断增长和扩张，但宇宙中的物质总量保持不变</li> 
</ol> 
<p>讨论这两点在现实中是否成立是没有意义的，就像讨论阿西莫夫的机器人三大定律是否成立一样。如果读者并不接受这种前设，那么作品对于读者已兴味全无，而一旦接受这种前设，作家构筑的世界就是一个逻辑自洽的世界，在这个世界之上，你尽可天马行空，自由徜徉。</p> 
<p>提到《三体》，读者印象最深刻的大概是作品的“宏大”，这种“大”体现在时间与空间的宇宙尺度上。除开第三部结尾时敷衍式地几句话写完几亿年的时间，单论情节集中的部分，时间跨度也在几百年上下，空间跨度则在太阳系到三体的半人马星系左右，是远超出普通人类一生的时间，是难以想象的太空的广度。于是作品带来的震撼也是成倍的，但这种大跨度也容易给读者带来困惑。</p> 
<p>所以作家选择了以公元纪年的人物作为主角，并且到第二部故事发展开始加速时，给予了人物“穿越时间”的能力——冬眠。第二部的主角罗辑就利用冬眠直接跃进到与三体人决战的时刻，到了第三部，故事时间加速更快，主角程心频频进入冬眠状态，只在关键情节触发的时候才苏醒。如此一来，主角与读者拥有相近的知识和体验，故事中“未来”的技术以读者的角度进行解释就自然而然，甚至无关紧要的部分可以用主角的视角直接略过。这点在第三部体现尤其多：尽管时间都在“未来”，但大部分出场人物都是公元人，似乎“未来人”仅仅是作为“群体演员”而存在。</p> 
<p>这种人物刻画不足也是《三体》为人诟病之处，毕竟《三体》的“硬科幻”部分精雕细琢无可挑剔，大情节上跌宕起伏，虽是俗套的文明生存抗争，却屡屡出人意料，所以只有人物部分是最好下手开骂的了。这就好像普通人没接触过代码与产品设计，想要批评一个产品做得不好，往往只能动用“怎么也懂一点”的“审美能力”来指栽“配色难看”云云了。</p> 
<p>不过《三体》中的人物刻画确实差强人意，尤其是主要女性的角色，苍白无力毫无血色。比如第二部中罗辑的梦中情人庄颜，作者极力想要打造一个小龙女式的超凡脱俗的完美女性，却只给出了一个干巴巴极不自然的提线木偶，与金庸的小龙女相去甚远，最终这位女性角色也是草草收尾，一笔带过。相比之下，第三部的主角程心，虽然被大批读者围攻，形象也还是那么单薄比旁白好不了多少，但至少这位女主角能够给读者留下“恨”的印象，已算不错的成就。不过我想，《三体》中构筑的宇宙已经这么黑，这些光明的女性角色再白纸也是必须的平衡。</p> 
<p>这个黑暗的宇宙中，有无法想象的重复着空旷的四维空间，有展开起来无穷无尽的二维平面，有无数个“神”一样的智慧文明，然而根据《三体》的基本设定，这个世界只能是绝望的——宇宙就是一片黑暗森林，走在森林中的人们手中拿着枪，一旦发现目标，不管是老人小孩还是老虎猛兽，统统一枪毙命。《三体》故事越往后就越绝望，太阳系终于消亡在二维空间之中，作者再不吝惜时间，故事发展加速加速再加速，短短几句话之间穿越几百亿年。我想大约作者也绝望了，再怎么挣扎下去，结局都是一样的，宇宙终于会在黑暗森林之中死去，是绝对的死去。</p> 
<p>《三体》无疑是一部浪漫主义作品，它如同一部精心策划的大片，用尽一切人类能够达到的技术水平雕琢画面，再普通的战争题材也好，一旦把故事搬到时空超乎想象的太空之中，带来的震撼都是加倍的，然而作者的悲观主义也加倍了。我不去想这种黑暗森林的设定是否符合现实，但假定我是面对黑暗森林的地球人，我大概会同那些“群众演员”一样一时狂欢一时悲恸，面对无法回头的星际远航，我也会同飞船上的军人一样决绝地消灭自己的战友，这就是黑暗森林的悲哀，站在这个角度上，我觉得故事的主角们已经是“神”了，他们代表的是人类的道德律，是人类独有的“爱”，若失了这些近乎顽固的坚持，人类将不再是人类。</p> 
<p>然而我们毕竟不是主角。</p> 
<p>黑，真他妈的黑。</p> 
<p>15.05.23/凌晨<br /> 于自宅</p> 
<hr /> 
<h3>References</h3> 
<p>我读的是 z.cn 的 <a href="http://www.amazon.cn/%E4%B8%89%E4%BD%93%E5%85%A8%E9%9B%86-%E5%88%98%E6%85%88%E6%AC%A3/dp/B00S4OK1ZS/ref=sr_1_1_twi_2_kin?ie=UTF8&amp;qid=1432313627&amp;sr=8-1&amp;keywords=%E4%B8%89%E4%BD%93">Kindle 版《三体全集》</a></p> 
<hr />
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #75 &#x4E09;&#x5C9B;&#x7531;&#x7EAA;&#x592B; - &#x300A;&#x5047;&#x9762;&#x7684;&#x544A;&#x767D;&#x300B;</title>
        <link>https://justinyan.eth.limo/350C4FFD-026D-413A-82D0-A2B5509166C7/</link>
        <guid>https://justinyan.eth.limo/350C4FFD-026D-413A-82D0-A2B5509166C7/</guid>
        <pubDate>Tue, 05 May 2015 17:33:59 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/05/41VzuslkvAL.jpg" /></p> 
<p>三岛由纪夫的同性恋倾向是他神秘魅力的一部分，《假面的告白》就是他的成名作。尽管作家至死都没有公开承认过自己的性倾向，并且娶妻生子，但是这部充满细腻的同性心理描写的作品却让人觉得——至少在写作当时——作家与主角是有着相同的心情的。</p> 
<p>这种对男性身体的迷恋与欲望，在作家笔下是如此细腻而费解，令人不由眉头紧蹙。然而皱着眉头把这部作品看完，从头做读书笔记的时候，却发现这部作品出奇的美丽。</p> 
<p>我个人很喜欢阅读写得漂亮的文字，具体地说，是像诗一般的优雅的文字。三岛的文字就有着诗一般的优雅。这种写法有个好处，就是可以轻易做到隐晦而不突兀。但与此同时流畅自如就成了一个挑战。能放不能收是很多现代诗歌容易犯的毛病，在小说里使用诗意的写法，往往会因此让作品变得晦涩，幸好三岛不会。</p> 
<p>三岛的隐晦的写法有其必要性，其一是体现在对抽象事物的具象表达上。三岛长于人物内心世界的细致刻画，多用意味深长的镜头来演绎人物的思考，也常用优雅的比拟，把不可捉摸的思维投影成美丽的画面，色彩斑斓，明暗有度。诗性是三岛华丽的武器。</p> 
<p>另一个必要则是作家对不能露骨表达的事物采用的委婉的手法。三岛多写禁忌题材，性倒错，性描写，以恶为美，反传统，反道德，这些话题似乎总能见诸三岛笔下。这让我想起欧洲的绘画艺术的历史，在反前人理念的基础上，艺术家们不停地翻涌推动新的艺术的诞生，从带有实用目的的装饰壁画到文艺复兴，再到古典主义，现代主义，自然主义，新古典主义，后现代主义……艺术家们力图挣脱“没什么可画”的无奈，而最佳的武器就是否定。仔细想想，音乐、物理、文学……人类的知识岂不都是如此。人类就是在否定前人的经验中不断地进步啊！</p> 
<p>《假面的告白》完成于 1949 年，这部作品在保守年代引发轩然大波，即便是今天，同性也还远没有到被社会舒服地接受的地步，小说的大胆与突破在当时可想而知。</p> 
<p>这部被称为“半自传体”小说的作品，与三岛的人生经历有许多相似之处，小说第一章所描述的幼年时期基本就是以三岛自身为原型：出生在一个没落的贵族家庭，自小被家中掌握大权的祖母强行抱养，在过度的保护中成长，身体孱弱，性格阴柔，也因此产生“性倒错”而深感苦恼。</p> 
<p>由此苦恼展开了小说最令人头疼的第二章，着重描写对男同学的迷恋，以及主角对性倒错的认识，多用幻想写法，深沉难解。然而第三章开始主角竟然试图去爱一位女子——园子，这表明主角试图改变自己的“不正常性”，去适应世人的“正常”。甚至发出：“人世间是否有纯粹的精神的爱恋？”的疑问，然而从主角的试验结果来看，答案是否定的。</p> 
<p>如果第三章是主角在精神上企图去爱女人的探索，那么第四章就是生理上企图对女性产生欲望的尝试。他甚至决心去招妓，在失败之后，主角终于确信了自己的“不正常性”是不可能改变了。后来遇上了已为人妻的园子，他们频频见面，却只是聊天。最后在园子的“你是否已经……”的诘问中沉默告终。</p> 
<p>书名是《假面的告白》，我以为主角会在最后摘下假面，然而不，主角一直活在自己的演戏里，并且“发誓对导演忠诚”。</p> 
<p>看完这本小说，再回想《金阁寺》，有些想不通的地方就豁然开朗了。设若金阁寺所代表的美就是人世间通常的“男女之恋”的美，而沟口却屡屡和女人在关键时刻就浮现金阁寺的幻影而失败，那么金阁就是假面向往而不可得的女性了。金阁寺中的沟口或许没有同性的倾向，但是他渴望金阁，憎恶金阁的双重心理却与假面向往女性却又屡屡失败的心情是一致的。最后沟口决定烧掉金阁，可以说就是假面试图接触女性，回归“正常”的努力。</p> 
<p>最后沟口终于烧掉了金阁，坐在草地上吐出烟圈叹了一句：“我要，活下去”。这大约就是假面屡试屡败，却始终没有摘下面具，向生活妥协的无奈。可以说作家在同性这件事情上获得了无穷的源泉，他巧妙地把这些心理以另一种形式替换了展现出来，但根源其实一致的。</p> 
<blockquote>
 <p> 1949 年《假面的告白》发表。<br /> 1956 年《金阁寺》发表。<br /> 1958 年三岛由纪夫与平冈瑶子结为夫妻。 </p>
</blockquote> 
<p>15.05.05/中午<br /> 于 T.i.T</p> 
<h3>Refrences</h3> 
<p>本书购于广州 1200 Book Shop，这是一家 24 小时书店，位于天河体育东路，店面不大，藏书亦不算多，胜在 24 小时营业，有按出版社分类的书架，形式颇为新颖。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #74 &#x4E09;&#x5C9B;&#x7531;&#x7EAA;&#x592B; - &#x300A;&#x7EAF;&#x767D;&#x4E4B;&#x591C;&#x300B;</title>
        <link>https://justinyan.eth.limo/9F2BA036-C8D8-4381-A59E-EE20D8474216/</link>
        <guid>https://justinyan.eth.limo/9F2BA036-C8D8-4381-A59E-EE20D8474216/</guid>
        <pubDate>Tue, 28 Apr 2015 21:52:34 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/04/s28783131-1.jpg" /></p> 
<p>从书架上拣一本最薄的三岛由纪夫的小说买下，正好是《纯白之夜》。上海译文出版社出版的这套三岛的合集甚合我心，装帧简约，朴素干净，最赞的是这本小说没有莫名其妙的前言和后记，真是难得。</p> 
<p>小说一个晚上就看完了，在三岛一如既往的细腻与优雅中度过，真好。同<a href="http://www.justinyan.me/post/1943">《金阁寺》</a>那种绚烂的美的重构相比，这部小说要粗浅得多。尽管作家借小说人物发出了性与爱分离的思考，却只是蜻蜓点水，更像是炫示技巧的小品。</p> 
<p>故事以战后的日本为背景，围绕一对中产夫妇（恒彦与郁子）展开。在这个平静而“幸福”的家庭里，由于第三者楠的插入引发了一阵波澜。可以说这种故事在今天已是被写烂了的题材，但是作家高明的地方就在于，通过细致入微的人物心理的描写来推动剧情的发展，情节在这部作品里面成为了思想的附庸。全书的笔墨着重在描写郁子复杂多变，渴望与抑制渴望的二律背反的心理波折。作家笔下的人物都是多思而敏感的，每个人物心中隐晦的恶的人性，与各不相同的性格，在作家娴熟的技巧下被一一解构，重塑成鲜明饱满的角色。</p> 
<p>作家的技巧在这部作品中展示得淋漓尽致。通感（联觉）与比喻是其最擅长的武器，这种朴素的技巧把敏锐的洞察翻译成通俗的表述，令读者不时有心中一亮，“啊，就是这样”的感觉。比如郁子初次收到楠的情书是，那种期待渴望又试图隐瞒的心情：</p> 
<blockquote>
 <p>如此说来，是因为郁子很久没有变成如此孩子气的好奇心的俘虏了。就像得到点心的孩子一样，想快点回家打开手提包看看的好奇心，眼下正是这一点支配着她，驱使着她热情四溢。</p>
</blockquote> 
<p>又比如文中对故事转折的暗示：</p> 
<blockquote>
 <p>陷入这种禁欲主义的令人喟叹的孩子，要是他枕边的点心不给老鼠拖走，它是很少会回心转意的。</p>
</blockquote> 
<p>这些巧妙的比喻胜过直抒百倍，至于通感的运用，则多表现在风景描写与心理波动的穿插上，以一种蒙太奇式的手法，展开一个美绝的镜头，让画面犹如有了背景乐而生动起来：</p> 
<blockquote>
 <p>这期间，脸色苍白的楠夫人盛装丽服的身影总在郁子的脑海里萦绕不去。倒是在黄昏的坡道上往下跑时发出清脆响声的载重马车，打破了这一幻影。</p>
</blockquote> 
<p>又比如：</p> 
<blockquote>
 <p>仿若不知为何阴沉下来的旷野，鸟儿一掠而过的影子。</p>
</blockquote> 
<p>作家熟练的文笔，向读者展示了一幅幅美丽的画面，使人物内心的波澜细腻而不空洞，小说就这么在柔美的心理曲折中步步推进。</p> 
<p>然而整体来说，这部作品有思考却没有答案，丈夫恒彦作为一个重要的角色，却仿佛被架空了，略显苍白。最后的主角的自杀，虽有过一些前置铺垫，却仍显得仓促而意味不明。所以假使这部作品可谓是不错的闲适读物，挺好的技巧学习之作，但作为严肃的文学作品来看待，则略显浅薄了。15.04.28/下午<br /> 于 T.i.T 创意园</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #73 &#x4F59;&#x79C0;&#x534E; - &#x300A;&#x6447;&#x6447;&#x6643;&#x6643;&#x7684;&#x4EBA;&#x95F4;&#x300B;</title>
        <link>https://justinyan.eth.limo/4B1065A7-4D7D-4EBD-8370-17B22487D371/</link>
        <guid>https://justinyan.eth.limo/4B1065A7-4D7D-4EBD-8370-17B22487D371/</guid>
        <pubDate>Wed, 22 Apr 2015 11:20:01 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/04/yvxvwt0gbb1-1.jpg" /></p> 
<p>决绝地合上诗集的瞬间，薄暮的霞光正好漫上鞋底。读余秀华的诗，你找不到何其芳的画梦的技巧，也找不到徐志摩的翡冷翠的高雅。但是有什么所谓呢？</p> 
<p>已是十分难得的干净与诚挚了。</p> 
<p>刘年的后记无疑是这部诗集最大的败笔，充满了文人的自以为是的酸气和莫名其妙的傲气。然而我却十分赞同这个观点：诗歌作为一种小众的文体，在今天已不仅仅是衰落，诗歌已经沦为戏谑与嘲弄的对象，甚至我自己也不敢承认我书写着诗歌，一如我不敢承认我的政治身份。这是怎样一种病态啊！</p> 
<p>余诗抚去了《诗歌报》一类排资论辈自欺欺人的酸腐，唯有真挚充盈的情感保留了下来，悲伤却不绝望，苦痛然而敞亮。我想这种无以言尽的明亮之色正是余诗最为动人的地方。</p> 
<p>然而除却真情，余的技巧仍有需要打磨的地方，没有何其芳绵绵不绝行云流水的华辞丽句，也没有戴望舒层层叠叠抑扬顿挫的音律起伏，更受限于诗人生活的方寸之地，余诗的意象来去不过星月黄昏与村野农作，与大家的丰富多彩相比，要苍白得多。</p> 
<p>所以读余秀华的诗，常令你有无法尽兴之感，但是余的苦难的人生与其堂堂皇皇的诗句却总让你有一种不舍。尽管我觉得过分谈及余的残疾与不幸其实是对诗人的不公平，余固然因为不幸而愈美，却并不因为不幸而存在，余的诗句不需要廉价的同情。</p> 
<p>余诗的光明是我们这些忙碌与大都市的蝼蚁所缺失的，这种丰满而纯净的情感，是我们不停下脚步就会轻易忽略的风景。读诗需要一方宁静，如同你早已干涸的内心的荒原，突然红了一叶舞动的花。在你诧异的眼帘上扬的瞬间，一瓣嫣红早已拥抱另一瓣，在一个有阳光的夏天的午后，轻轻点碎一方平静的湖面，荡出的波浪再无法收敛。</p> 
<p>我不信你不曾这样，颤抖过。</p> 
<p>15.04.22/凌晨 于自居</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x4E66;&#x5355;] &#x6BCF;&#x5468;&#x8BFB;&#x4E66; &#x516D;&#x5341;&#x4E94;&#x2014;&#x2014;&#x4E03;&#x5341;&#x4E8C;</title>
        <link>https://justinyan.eth.limo/24A43C38-83DB-450A-AF87-E2F8D842DB33/</link>
        <guid>https://justinyan.eth.limo/24A43C38-83DB-450A-AF87-E2F8D842DB33/</guid>
        <pubDate>Sun, 19 Apr 2015 14:18:36 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2015/04/booklist_65_72.jpg" alt="image" /><br /> 还在上学的时候，对于人生至俗的问题：</p> 
<blockquote>
 <p> 你的梦想是什么？ </p>
</blockquote> 
<p>我是这么回答的：</p> 
<blockquote>
 <p> 当一名作家。 </p>
</blockquote> 
<p>天真如幼稚园小朋友连科学家是什么都不知道一样，“作家”一词于我，就如同在黑暗的柔波中徜徉的闪烁的星斑，耀眼而无法触及。后来我说：“作家养不活自己。”</p> 
<p>如今我坐在这个浮躁的大都市里，在这个不是 1 就是 0 的世界里养活我自己。在这个没有梦想的时代，如果你再问我：“你的梦想是什么？”没有梦想的我大概也只剩下这么一个尘封的答案了吧：我想当一名作家。</p> 
<p>很开心这几年还有“每周读书”，它大约是我与这个梦想的世界的唯一纤细的联系了。每隔 8 期我会整理一份书单，以下是 65-72 期的书单：</p> 
<ol> 
 <li><a href="http://www.justinyan.me/post/1843">原研哉——《白》</a></li> 
 <li><a href="http://www.justinyan.me/post/1849">George R. R. Martin —— 《冰与火之歌》</a></li> 
 <li><a href="http://www.justinyan.me/post/1868">Peter Thiel —— 《Zero to One》</a></li> 
 <li><a href="http://www.justinyan.me/post/1881">渡边淳一——《失乐园》</a></li> 
 <li><a href="http://www.justinyan.me/post/1893">谭伯牛——《战天京》</a></li> 
 <li><a href="http://www.justinyan.me/post/1907">周浩晖——《死亡通知单》</a></li> 
 <li><a href="http://www.justinyan.me/post/1933">Andy Weir——《The Martian》</a></li> 
 <li><a href="http://www.justinyan.me/post/1943">三岛由纪夫——《金阁寺》 </a></li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #72 &#x4E09;&#x5C9B;&#x7531;&#x7EAA;&#x592B; - &#x300A;&#x91D1;&#x9601;&#x5BFA;&#x300B;</title>
        <link>https://justinyan.eth.limo/83604545-5787-4F1F-AB0B-05E80269DBF2/</link>
        <guid>https://justinyan.eth.limo/83604545-5787-4F1F-AB0B-05E80269DBF2/</guid>
        <pubDate>Sat, 18 Apr 2015 19:50:39 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/04/jingesi-1.jpg" /></p> 
<blockquote>
 <p> 有人问：<br /> 为什么精神病人都是艺术家？</p> 
</blockquote> 
<p>我想并非精神病人是艺术家，只是二者有共通之处罢了。这个世界所有的事物都在对外广播全频段的信息，普通人为了防止信息过载，忽略了大部分小众的频段，只保留了主流的信息，这被称为“正常”。而精神病人与艺术家的共通之处在于：他们都能接收小众频段的信息。只是艺术家除了小众频段之外还能处理主流频段，而精神病人只接受到小众频段罢了。</p> 
<p>在《金阁寺》这部小说里，每个主要角色都有自己独特的世界观，他们发出的小众频段的信息被作者以主流的信号转译出来，这大约便是小说家的本事吧。这部作品是根据 1950 年纵火焚烧金阁寺的真实事件改编的。说是改编，但其实除了放火这点，其他部分都是虚构多于现实。</p> 
<p>主角沟口从小由于结巴的关系，有着极自卑的内心。“世人总以为要借助镜子才能看到自己，残疾人却被迫在鼻尖挂着一块镜子，时时看到丑陋的自己”。沟口的这种自卑又与他自小从父亲口中听到的美丽的金阁寺相生相伴，这种想象中的金阁的极美，是脱离了现实，只依存于沟口心中的美。</p> 
<p>沟口的父亲病重之际，带着沟口到金阁寺托孤，不久后终于病逝。沟口第一次看到现实中的金阁寺，其实没有想象中那么美。在这里他遇到了少年鹤川，这个纯洁的透明的结构体，总是能把自己的意思误解成光明的意思。鹤川就是沟口的正片，是沟口与这个世界的光明的唯一联系。</p> 
<p>《金阁寺》里描绘的世界是极丑恶的，但却又如此真实。沟口憎恨母亲，因他曾在暑假的某个晚上撞到母亲与另一个亲戚的苟且之事。沟口也不喜欢父亲，这个懦弱的寒碜的和尚在那天晚上用大手掌捂住了沟口的眼睛，也不知到底是出于慈祥，还是怯懦。而金阁寺的住持又分明是个嗜财好色的丑陋的和尚，再到后来遇上的大学同学柏木，简直就是恶魔的化身。</p> 
<p>柏木是个有 X 型腿的残疾人。他失去童贞的故事丑恶得令人震撼。由于丑陋的 X 腿的残疾，柏木有着与沟口类似的心情。如果说鹤川是以极纯洁来应对世界，那么柏木就是以极丑恶来否定世界。沟口在与鹤川、柏木交往的过程中，大概还不知道应当如何应对这个残酷的现实。在遇到柏木之后，他也试图接近女子，但是每次在即将与女子发生关系的时候，金阁的幻影出现了。金阁拒绝了女子，也就是沟口拒绝了女子，他无能了。金阁的美是沟口的向往的极美，同时金阁的美也是沟口的极恨，整部小说充斥着丑恶与美的强烈冲突，这种冲突左右着沟口的人生。</p> 
<p>在鹤川死后，沟口心中的光明的世界开始崩塌，天平终于倾向丑恶黑暗的一边。最后沟口把金阁寺烧了。</p> 
<p>就如前文所述，这个世界所有的事物都在对外做全频段广播，小说亦如是。尽管作者已经把大部分的信息用主流的频段书写出来，但是还是有很多小众的信息需要读者自己调整频道去收听。只有当你的接收频段与作品和谐的时候，才能体会到作品的共鸣。</p> 
<p>有些作品被评为“普通”大约也是这个原因：它的所有的信息都被主流频段包括了，除此之外别无他物，也就是所谓的“肤浅”。</p> 
<p>我想作者在创作这部作品的时候已经把自己与角色融为一起，分不开了。现实中的三岛是个潇洒的公子，但却因为自己的孱弱的身体而感到自卑。在环游欧洲结束之后他开始创作这部作品，对于美的感受大约与他在希腊的旅行不无关系。</p> 
<p>世人总喜欢自以为是地刻意否定外在的美，以为这种虚伪的评价可以换取多一分高尚，实在太廉价。三岛在这部作品中，用流畅的文笔把景物的、人物的外在的美描绘得淋漓尽致，这种优雅成为了这部小说的信息通道，而通过这种通道流泻出来的，却是令读者皱眉的沉重的哲思。</p> 
<p>鹤川的透明与脆弱的心底隐藏了深沉的苦痛，柏木的孤僻与阴暗的表面暗含了否定世界的丑恶。沟口作为故事的主角，则多变而心酸。他在火烧金阁寺的那个夜晚，终于明白改变自己认识的世界并不需要毁灭，只需要改变自己的认识，而改变认识其实并不依靠这种无效的行动，但他终于还是烧了。</p> 
<p>与现实的纵火事件不同，作者并没有让沟口在纵火后用匕首剖腹，相反地，沟口在冲上金阁寺顶的时候因为敲不开门，终于冲出烈火，躺倒在星空之中。坐在黑暗的夜里的沟口，点燃一支香烟，静静地望着远处熊熊的火焰，发出一声沉重的叹息：</p> 
<blockquote>
 <p> 我要活下去！ </p>
</blockquote> 
<p>知道三岛还是因为川端康成。三岛是兵变失败后切腹自杀的，自杀后只有亦师亦友的川端康成被获准进入，随后不久川端康成也自杀了。由于对三岛本人了解甚少，我并不清楚他一定要切腹的真实原因，但是通过《金阁寺》所描绘的世界，我们能够知道故事里的人物所接收的信息太多，每一个人物都是一个世界。世界在人物的认识里，人物活在自己的世界里，如果有什么原因一定要离开这个世界，我想大约是这个我所认识的世界太丑陋，而我对此无能为力，甚至根本无法改变我的认识，这时候离开就是一种解脱。</p> 
<p>就如小说里多次提及的《临济录》里的句子：</p> 
<blockquote>
 <p> 逢佛杀佛，逢祖杀祖，<br /> 逢罗汉杀罗汉，逢父母杀父母，<br /> 逢家眷杀家眷，<br /> 始得解脱。 </p>
</blockquote> 
<p>15.04.18/下午<br /> 于沙园 Costa Coffee</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #71 Andy Weir - The Martian</title>
        <link>https://justinyan.eth.limo/61F92CC4-725B-4B21-A2D1-2F2A5C919EE9/</link>
        <guid>https://justinyan.eth.limo/61F92CC4-725B-4B21-A2D1-2F2A5C919EE9/</guid>
        <pubDate>Thu, 16 Apr 2015 14:01:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/04/themartian.jpg" /></p> 
<p>这是一个典型而新颖的人与自然斗争的故事，由于贝爷式的地球冒险再也满足不了愚蠢的人类读者，作者把场景摆在了绝对荒芜的红色星球——火星。</p> 
<p>这本书写于 2009 年，作者 Andy Weir 是个 Nerd，一开始他把这部小说连载在自己的网站上供人免费阅读，后来有读者建议他放到 Amazon.com 上卖 0.99 刀，这样读者就可以在 Kindle 上看书了。于是这本电子版的小说在 3 个月内被卖出了 3500 份，一举拿下 Amazon.com 2014 年科幻类畅销书榜首。</p> 
<p>The Martian 直译成中文是“火星人”，在这个故事里，主角 Watney 是火星人唯一的“人”。Watney 是 NASA 火星探险队的一员，在一次执行任务的时候，队伍遭遇火星沙尘暴，Watney 被一块天线碎片扎到腹部，与队友走散。眼见 Watney 势难活成，队长当机立断带领剩下的队员返程。于是侥幸生还的主角从此被留在火星上，开始了与残酷大自然的搏斗。</p> 
<p>他以火星基地为凭依，借着自己工程师与生物学家的知识与技能（其实就是个 Nerd），一次又一次面临生存威胁，一次又一次巧妙地化解。</p> 
<blockquote>
 <p> 在下一次火星任务时可能获救，但是还没等到 2 年就被饿死？<br /> 他开始在火星基地里面种起了土豆。</p> 
 <p> 无法与地球通信？<br /> 他把执行轻量任务用的探测车“改造”得体无完肤开始了人类第一次火星长途旅行，寻得遗忘多年的火星探测器。</p> 
 <p> 不够水喝？<br /> 他把火星基地变成一个巨大的密闭的容器，燃烧燃料，收集 H2O。 </p>
</blockquote> 
<p>Watney 以优秀的Nerd 思维，科学地解决了一个个不可思议的难题。物理化学计算机，天文地理航海术，能用到的都用上了，一个个问题的袭来和解决构成一个个小高潮，看得人大呼过瘾，酣畅淋漓。解决这些问题其实都是作者最喜欢做的事情，就像解决一道道数学物理难题一样。而且看上去这些解决方案都是可信的，尽管可能风险很大，但至少都是可行的，至少我作为一个职业码农，在看到 Watney 接收 NASA 发来的脚本逐个字符输入进探测车的 console hack 进去再更新系统的时候，我觉得虽然很容易出错但是至少是可行的。</p> 
<p>另外小说的 POV 写法也是一个特色，类似于《冰与火之歌》，小说也通过不同的角色的视角来进行剧情的叙述。Watney 在火星上的日志是最重要的骨架，地面 NASA 工作人员的视角和 Watney 队友的视角则是很好的补充，讲述了大量无法以第一人称视角叙述的事情，使得故事变得更加完整，剧情推进也更加自然。</p> 
<p>这种写法也有个坏处，就是无法体现出 Watney 孤身一人在火星上与挣扎着生存下去的艰辛，再加上 Watney 天然的恶搞幽默的性格，读者在看书的过程中即便遇到什么天大的灾难也会想：Watney 肯定能搞定这个问题，我们看看他是怎么解决的吧。</p> 
<p>不过这不正是这本书的优点所在么？正是这种极端的自信与乐观，才使得 Watney 能够支撑到救援时刻，才使得 Watney 能够做各种 Nerd 式的异想天开的解决方案。这本书并不是一本严肃的生存手册，它是一部好莱坞大片。</p> 
<p>（PS：根据小说改编的好莱坞大片《The Martian》已经在拍摄中。）</p> 
<h3>References</h3> 
<ul> 
 <li>Andy Weir 官方站点 <a href="http://www.andyweirauthor.com/books/the-martian-hc">http://www.andyweirauthor.com/books/the-martian-hc</a></li> 
</ul> 
<p>15.04.15/下午</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #70 &#x5468;&#x6D69;&#x6656; - &#x300A;&#x6B7B;&#x4EA1;&#x901A;&#x77E5;&#x5355;&#x300B;&#x7CFB;&#x5217;</title>
        <link>https://justinyan.eth.limo/9CC85D8A-FB93-4868-A1DC-02D0A053754B/</link>
        <guid>https://justinyan.eth.limo/9CC85D8A-FB93-4868-A1DC-02D0A053754B/</guid>
        <pubDate>Wed, 07 Jan 2015 14:10:00 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2015/01/202103091143063376-1.jpg" /></p> 
<p>鄙人对国产推理小说涉猎甚少，除了神秘色彩较重的《卫斯理》系列勉强可算之外，就只有最近在读的《死亡通知单》系列了。这个系列是作者周浩晖的代表作之一，共有三部，截至本文发布时，鄙人读了前两部。</p> 
<p>故事以一起谋杀警察的命案拉开序幕，在命案现场把主要角色都一一搬上了舞台。在这一幕中，正派人物方面交代了主角罗飞的“高手”属性，但同时也给他安上“不是本地警察，得罪了傲慢的刑警队长，所以没有最高指挥权”的枷锁，限制主角的能力。反派人物则把一个“身份神秘”的高手推出帷幕，并且一直神秘下去，给整个大故事留下足够多的盲点，这一步预埋很自然，使得后面的的反转足够惊艳。</p> 
<p>故事的整体构思非常不错，第一起命案的调查牵出了多年前的悬案，围绕犯罪高手和警方之间的激烈角逐展开剧情，预先埋下的盲点也在这些精彩的对决之中适时地引爆，颇有出人意料之处。第一部节奏紧凑，直到最后才把神秘人物放到幕前，所以第一部的结局才是真正的开局。第一部结束后，主要角色的能力都不再受限，情节推向另一个台阶，作者埋下的盲点也同样得以放开手去挖掘，所以后面两部其实就应该是耗尽伏笔，力推高潮，然后收尾了。这里如果展开得好就是频频小高潮的阶段，如果用的不好就会流于平庸，令人感觉情节拖沓，索然无味。本作第二部的展开还是比较精彩的，只是到了中期就开始觉得有些拖沓了，部分关键情节的伏笔有点过于明显，不利反转。毕竟后两部都分上下两卷，剧情长了许多。第三部则尚未读过，无法评价。</p> 
<p>写作风格上，有日式小说的感觉，语言朴实，作者努力要打造罗飞警官和 Euminides 正反两个“高手”角色，期望达到巅峰对决的效果，双方你来我往常有《死亡笔记》的既视感。但是前期对于人物形象的描写以及对气氛的烘托方面却多有不自然之处，达到的效果比不上书中所述，很容易令读者觉得困惑而出戏。</p> 
<p>具体来说，比如主角刚出场时得罪刑警队长的那段描写，总觉得正常人气量不会这么小，几句话就被得罪了，而且像罗飞这种高手应该也不会这样讲话，语言生硬，强调过于明显的事实，不太符合人设。又如作者极力营造主角愤怒的心情的时候，读者却并不能真的感受到主角有多愤怒，仅凭一两句“他咬咬牙”之类的外在表现，显得有些苍白无力。这种感觉在读第一部的时候非常明显，读几句就会出戏。但是如果耐着性子往下看，越往后看就越流畅，尤其到第一部收尾的时候，作者基本上写开了，再没有开头的那种突兀之感。到第二部已经较少有这种感觉了。</p> 
<p>这种突兀感对于读者来说是很不自然的，算是致命伤之一，但是故事还是很精彩，这点不容置疑。而且由于时间跨度大，两个主角过往的故事又交待甚少，所以可以展开的情节和反转也就多了。这个《死亡通知单》系列是作者“罗飞”系列的一部分，除开写作时语言的不自然成分，这部小说的评价还是很高的，只是这种不自然不可忽视，语言之于文学作品正如“用户体验”之于互联网产品，体验太差用户就不想买账了。</p> 
<p><strong>z.cn 有 Kindle 版合集：<a href="http://www.amazon.cn/%E6%AD%BB%E4%BA%A1%E9%80%9A%E7%9F%A5%E5%8D%95%E7%B3%BB%E5%88%97-%E6%AD%BB%E4%BA%A1%E9%80%9A%E7%9F%A5%E5%8D%95-%E6%AD%BB%E4%BA%A1%E9%80%9A%E7%9F%A5%E5%8D%95%E4%B9%8B%E7%A6%BB%E5%88%AB%E6%9B%B2-%E6%AD%BB%E4%BA%A1%E9%80%9A%E7%9F%A5%E5%8D%95%E4%B9%8B%E7%A6%BB%E5%88%AB%E6%9B%B2-%E6%AD%BB%E4%BA%A1%E9%80%9A%E7%9F%A5%E5%8D%95%E4%B9%8B%E5%AE%BF%E5%91%BD-%E6%AD%BB%E4%BA%A1%E9%80%9A%E7%9F%A5%E5%8D%95%E4%B9%8B%E5%AE%BF%E5%91%BD-%E5%91%A8%E6%B5%A9%E6%99%96/dp/B00HQXBM1U/ref=sr_1_3?ie=UTF8&amp;qid=1420610869&amp;sr=8-3&amp;keywords=%E6%AD%BB%E4%BA%A1%E9%80%9A%E7%9F%A5%E5%8D%95">点我到 z.cn 购买</a></strong></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #69 &#x8C2D;&#x4F2F;&#x725B; - &#x300A;&#x6218;&#x5929;&#x4EAC;&#x300B;&#xFF08;&#x665A;&#x6E05;&#x540D;&#x81E3;&#x66FE;&#x56FD;&#x85E9;&#xFF09;</title>
        <link>https://justinyan.eth.limo/6ECE20AF-05AB-494E-96C9-9B45920CD6E9/</link>
        <guid>https://justinyan.eth.limo/6ECE20AF-05AB-494E-96C9-9B45920CD6E9/</guid>
        <pubDate>Mon, 15 Dec 2014 23:47:50 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/12/615iP4i2ueL-1.jpg" /></p> 
<p>晚清因其特殊的历史时期，常常被世人置于丧权辱国，不喜多谈之地。从历史课本中我们看到的晚清就是一场不堪回首的悲剧，外有八国联军侵华，英法联军火烧圆明园，内有白莲教起义，太平天国运动，内忧外患，动荡已极。所谓乱世出英雄，这个烽烟四起的时代，正是《战天京》的历史大舞台，在这个舞台上，曾国藩、李鸿章、左宗棠等历史人物演绎了一个又一个惊心动魄，扣人心弦的故事。</p> 
<p>此书作者谭伯牛，最早于2004 年出版，从豆瓣书评来看，此书出版后似乎获得过不错的反响。只是鄙人孤陋寡闻，一直未曾听说，直到前些日子<a href="http://v.youku.com/v_show/id_XODMwODA2Mzky.html">《罗辑思维》</a>这个节目在推这本书，才得见真容。其实开始并没对本书抱多大希望，以为不过营销推荐，故事内容估计也在节目讲差不多了，然而开卷试读，却给了我相当的惊艳。这本定制版的书是线装本，装帧颇为精细，第一印象已佳。而作者谭伯牛博览古籍，在浸淫清史多年，讲起故事来甚能引人入胜，加之文笔优雅，成语俗句信手拈来，恰到好处，绝非堆砌词藻之庸脂俗粉。大量松散的史料在作者手里，去芜存精，精心编排。书中所引古人奏折、笔记之出处俱有评注，此举已甚难得，更为难得的是，一些重要的历史事件，作者还加以钻研求证，明辨是非，杜绝道听途说。作者的博学，文笔以及求实，构成了本书一个个惊心动魄，起伏跌宕的故事。</p> 
<p>书名《战天京》已然道出故事的主线：太平天国之乱。太平天国始于道光崩殂，咸丰继位之际，终于同治三年，天京陷落之时，历时一十三年，贯穿咸丰帝的执政生涯。这本书讲的故事主要就落在其间，这段时间也正是曾国藩大展宏图的时间，全书七章有五章都在写曾国藩，剩下两章一是慈禧政变，一是讲曾国藩的弟弟曾国荃。所以这本书的领衔主演无疑就是曾国藩了。</p> 
<p>作为与李鸿章、左宗棠、张之洞三人并称“晚清四大民臣”的曾国藩，他的故事在历史上有着举足轻重的地位，鄙人看这本书，觉得精妙处全在前半部分，即曾国藩建湘军，围攻南京一段。期间除了与太平军斗智斗勇，更要与同僚甚至圣上周旋来往，战场上固然险象生环，马革裹尸，官场中又何尝不是官官相忌，君心难测。</p> 
<p>其时晚清政府国库空虚，曾国藩办湘军只能“就地筹饷”，虽贵为“节制四省”之钦差大使，实则手无实权，处处掣肘。筹饷则得罪地方官员，不筹饷则打不了仗得罪圣上，曾国藩斡旋于皇帝与群臣之间，一面要应付同僚，一面要跟皇上要权，其中尺度拿捏无一不是官场极深之心机，一不小心得罪皇上就是革职掉脑袋的事情。本书引用了大量曾国藩与皇帝的往来奏折谕旨，作者精心加以解读，其间言语精妙处不亚高手对弈，招招致命。时有大臣胡林翼云：“天下奏牍，仅三把手，而均在洞庭以南。”这三把手说的就是曾国藩、左宗棠和他自己。本书就用了两章的分量来写曾国藩和左宗棠的恩恩怨怨，其中以奏折相互攻讦、相互保举的文字，攻守相间，精彩纷呈。如果只读原文，没有一定的古文功底，甚难解读，即使明白意思了，没有当时历史背景的知识，也很难发挥延展。作者就为我们一一解读了这些奏折，尽情还原了其中含沙射影，峰回曲折之处，读来不由令人抚掌而叹曰：妙极，妙极！</p> 
<p>曾国藩的故事代表不了整个晚清的历史，事实上这本书的时间跨度也不长，但是却正好落在了晚清最为动乱的一个时间段里。枯燥的古文史料若单列开来固然索然无味，但是经过作者这么一加工，有如小说般流畅，却仍紧扣史实，以史叙事，实在难能可贵。</p> 
<p>看罗辑思维的节目说这本书后来已经绝版了买不到了，这才做了个定制版重出江湖。看完此书我不由为此叹息：如此好书尚且绝版，则天下有太多好书再寻不得也！</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #68 &#x6E21;&#x8FB9;&#x6DF3;&#x4E00; - &#x300A;&#x5931;&#x4E50;&#x56ED;&#x300B;</title>
        <link>https://justinyan.eth.limo/EC48F275-AB0A-4DB8-8D02-4A6D1BD55817/</link>
        <guid>https://justinyan.eth.limo/EC48F275-AB0A-4DB8-8D02-4A6D1BD55817/</guid>
        <pubDate>Sun, 30 Nov 2014 22:54:42 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/11/1609000-25ba793303ee0889-copy-1.jpg" /></p> 
<h2>阿部定事件</h2> 
<p>1931 年九一八事变，日本侵占中国东北成立满洲国。</p> 
<p>1937 年七七卢沟桥事变，日本开始全面侵华战争，也是第二次世界大战亚洲战场的第一枪。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2014/11/ganguanshijie.jpg" alt="image" /></p> 
<p>我们本周要讲的故事就发生在卢沟桥事变的前夕：1936 年。这一年日本发生了二二六事变，军部确立了日本国内的统治地位，正式开始军国主义扩张，也是第二年全面侵华战争的直接原因。</p> 
<p>就在这样的历史背景下，日本国内发生了一个轰动全国的桃色凶杀案——"阿部定事件"。看过<a href="http://zh.wikipedia.org/wiki/%E6%84%9F%E5%AE%98%E4%B8%96%E7%95%8C">《感官世界》</a>这部电影的读者对这个故事应该很熟悉了，故事的女主角阿部定是个艺妓出身的美女，后来到卖鳗鱼饭的"吉田家"做女招待的时候，跟有妇之夫的老板石田吉藏好上了，两人一拍即合，干柴烈火，万劫不复。后来他们躲到一家旅店，日日夜夜纵情声色，爱得天崩地裂你死我活，终于发展到阿部定把吉藏勒死，割下他的生殖器，在他身上血书"吉定二人"，而后独自逃亡。</p> 
<p>其实当时阿部定不是想逃亡，只是想找个地方自杀，但是就在她将要自杀的当天，被抓获了。这件事情被报道后，民众直接炸开了锅，如此骇人听闻的事情，自然对社会舆论产生极大的刺激。一时骂声如潮，铺天盖地。但是奇怪的是，随着审判的进行，民众与媒体的态度竟然有了一百八十度改变，最终竟以"爱得太过"为由，轻判 6 年监禁了事。</p> 
<p>究其原因，大概与当时日本国内政局动荡，对外发动战争，人民情绪处于一片绝望之中不无关系。当时的日本渴望人情来浇灌早已干涸的荒凉的内心，所以才会倾向于强调"爱"的影响，对阿部定报以同情。</p> 
<p>这种把"爱"的作用如此放大的现象很有意思，现代的科学可以解释很多事情，却还解释不来爱情。但人们似乎并不介意对于“爱”的无知，甚至我们就想要"无知"，“无知”产生浪漫，人都不是纯理性的，是需要满足感性的需求的。</p> 
<p>渡边淳一就是这么一个掌握了“爱的美”的作家，以"阿部定事件"为原型，把不伦的男女之爱发挥到极致，超越了伦理，超越了道德，以至于两个主角为了维持幸福的顶点而双双殉情，这就是本周读书的主角——《失乐园》。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2014/11/shileyuan.jpg" alt="image" /></p> 
<h2>情与色</h2> 
<p>1997 年这部作品出版的时候，在日本乃至亚洲掀起了轩然大波。我想那个时候的中国读者应该尤其受到冲击，因为中国的文学作品从来都是规避"性"这个话题的，极少有作家会以性为题材来写作。就是我第一次翻到《失乐园》的时候也为其露骨的性描写而颇感讶异——这本书居然能在中国出版？这不就是一部情色小说嘛。</p> 
<p>没错，这是一部情色小说，书中有大量的篇幅用于性描写。但是不同于有名的《xxxx池中物》这样的作品，性在《失乐园》只是一种媒介，是剧情发展的主线，是产生矛盾与冲突的导火线，也是把故事推向高潮的驱动力，在这种媒介之上，作者给我们带来了极美的感受与伦理冲突的思考。打个不太恰当的比方，普通的情色小说就是 AV，利用各种声色刺激你来一发，目的就达到了，如果能做到不要太夸张，不要太脱离现实，那就算上等佳作了。但是《失乐园》则是更高层次的作品，她是陈列在美术馆里的艺术品，她的外表亦是赤裸的，但是她展露的“性”是曼妙的，是人物的心理与生理的细腻的结合，是故事冲突与矛盾的舞台。其柔美处似落英缤纷，一瓣春色凋于梅雨泠零，其澎湃处又若狂蜂蝶舞，一点寒梅隐入风雪凄凄。能够做到如此细致入微的描写，也是拜作者多年行医生涯所赐。我们的课堂没有教授的东西很多，性就是其中一种，时至今日，也只有医学院的学生才有比较系统的性学研究。所以对于我们的一生作者，性就像是信手拈来的工具，好比密室逃脱之于推理小说家一般。不过对比作者《樱花树下》(<a href="(http://www.justinyan.me/post/1116)">每周读书第二十九周</a>有推荐过)一书的性描写，尽管也是十分优美，但是“性与爱”的交织却没有像《失乐园》一样被如此放大，大到成为故事发展的主要推动力。</p> 
<h2>性与道德</h2> 
<p>有妇之夫与有妇之夫的婚外恋，是这本小说的主要冲突。小说开篇就以女主角在性爱中一句："好可怕..."暗示了故事的结局：违背社会道德伦理的两人，终会在这种越来越强烈的爱中消亡。</p> 
<p>今天我们看"道德"，其无非就是在讨论人的言行的正确与否，什么该做什么不该做。古代的哲学家在探讨道德的时候也探讨美，不同的学派对道德的看法也不同，其中道德相对主义者相信道德不是一成不变的，是会跟着时代的进步而变化，会因为文化的不同而不同。假设有一天我们的社会变成以试管婴儿来繁衍后代了，那么性就变成了一种单纯的娱乐的途径了，婚姻也变得无关紧要了，如果是在这种世界里，《失乐园》的主角们能得到救赎吗？答案是否定的，到时候人们已经建立起另一套道德体系了，“相爱”变成了淫秽与猥亵的东西。这个世界其实就是赫胥黎构筑的反乌托邦——《美丽新世界》。</p> 
<p>相比起《美丽新世界》里野蛮人与试管人的恋爱，《失乐园》所描写的爱要深刻得多。两位主角都有着无趣的婚姻，所以他们一旦相遇便即相爱，由相爱而性，因性而愈爱，从而愈演愈烈。这是一种不为社会道德所容的恋情，但是这种强烈犯罪感反而给了他们更大的感官刺激。故事从一开始就已经在告诉我们结局：这两人注定要越来越无法分离，最终背离家庭，各自离婚而后结合。同时也插入阿部定的故事暗示了两人殉情的结局。但是渡边仍能让读者为主角一步步走向绝境而焦虑，为这种至高的爱与幸福而嗟吁。拥有了至高的幸福反而害怕失去，最终两位主角在性爱的顶点服毒自尽，永远地留在了至高的幸福里。</p> 
<p>死亡与爱情，这两种人类尚未解谜的，但对于人类来说又极为重要的东西，在这部作品当中深深纠缠，即便你早知剧情如此，也还是会为美而赞，为爱而叹。</p> 
<p>渡边的作品向来褒贬不一，备受争议，但我想单就《失乐园》这部作品来说，其美到令人窒息的性爱，其颠覆常伦的恋情都是如此理所当然，都是如此人性。在阅读这本书的时候，常常会有"尽管道德不允许，但是一个普通人确实会这样想"的感觉。好的小说就是作者虚构了一切人物地点和事件，而在读者看来却像真实发生的一样。《失乐园》本是一首虚构的诗，却美得如此真实。</p> 
<h2>参考</h2> 
<ul> 
 <li><a href="http://zh.wikipedia.org/wiki/%E9%98%BF%E9%83%A8%E5%AE%9A%E4%BA%8B%E4%BB%B6">维基百科：阿部定事件</a></li> 
 <li><a href="http://zh.wikipedia.org/wiki/%E9%81%93%E5%BE%B7%E7%9B%B8%E5%AF%B9%E4%B8%BB%E4%B9%89">维基百科：道德相对主义</a></li> 
 <li>《失乐园》Kindle 版译序</li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>Paypal &#x9ED1;&#x624B;&#x515A;(&#x6BCF;&#x5468;&#x8BFB;&#x4E66; &#x516D;&#x5341;&#x4E03;&#x300A;Zero to One&#x300B;)</title>
        <link>https://justinyan.eth.limo/9CB0DB7C-5847-4C53-A30E-E31DF7E1614B/</link>
        <guid>https://justinyan.eth.limo/9CB0DB7C-5847-4C53-A30E-E31DF7E1614B/</guid>
        <pubDate>Thu, 27 Nov 2014 20:33:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/11/每周读书-67-2.jpg" alt="Paypal 黑手党(每周读书 六十七《Zero to One》)" /></p> 
<h2>Paypal 的故事</h2> 
<p>2014 年是阿里大放异彩，马云功成名就的一年，关于阿里有很多传奇的故事，不过今天我们要聊的不是阿里，而是远在大洋彼岸的一家同样有着传奇色彩的电商公司——Paypal。</p> 
<p>16 年前 Paypal 还是一家名为 Confinity 的创业小公司的一个服务，正处于“互联网泡沫”势头正猛的时候。今天我们熟知的互联网巨头 BAT 三家都是当年互联网泡沫破裂后的幸存者，后来也都成了大赢家。Paypal 也是在这个乱世当中起家的。2002 年 3 月，在互联网泡沫破灭前夕，Confinity 与 X.com 完成了一次并购，随后他们就把这个服务开始不断地升级拓展，一路高歌猛进，终于在 2002 年成功上市。上市后不久，就被 eBay 以 15 亿美元的价格收购了。</p> 
<p>这笔巨额交易造就了三个亿万富翁（Peter Thiel, Elon Musk 和 Reid Hoffman）以及大量的百万富翁，这帮人在 Paypal 被收购后不久就纷纷离职，有的开始了二次创业，有的则干起了天使投资人的生意，并且这些人都干得不错。我们来看一个列表：</p> 
<ul> 
 <li>Tesla Motors (特斯拉)</li> 
 <li>YouTube (2006 年 16.5亿美元卖给 Google)</li> 
 <li>Yelp (点评类网站)</li> 
 <li>LinkedIn (职业社交网站)</li> 
 <li>SpaceX (全球第一家私人太空公司，造火箭的)</li> 
 <li>Yammer (12 亿美元卖给微软)</li> 
 <li>Palantir Technologies (帮助美国政府发现恐怖活动，定位恐怖分子。2010 年后接受金融客户，帮助定位金融犯罪活动。)</li> 
</ul> 
<p>这些在今天我们看来鼎鼎有名的公司，无一例外全部出自当年 Paypal 这帮人之手，这还只是其中一部分，他们投资过的成功的公司甚至还包括 Facebook。并且他们在创办这些公司的时候，通常两三个人互相扶持或者一同创业的。比如 YouTube 就是由其中三个工程师一起做出来的，比如 Elon 创办的 SpaceX 就接受了来自 Peter Thiel 的投资。正是由于 Paypal 这帮人离职后仍保持密切的联系，才使得他们被视为一个群体，而这个群体造成的影响也是非常显著的。于是 2007 在美国《财富》杂志的一次专访中，记者给他们拍了一张著名的照片，配了个响亮的名号——“Paypal 黑手党”（Paypal Mafia）。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/11/每周读书-67.jpg" alt="" /></p> 
<p>在这张照片中，当年最大的股东 Elon Musk 因为行程关系没有出现，他是特斯拉和 SpaceX 的创始人，也是 Paypal 黑手党中身价最高的一位。</p> 
<p>另一位“教父级”人物 Peter Thiel 则在 2012 年在斯坦福大学开了一门课—— CS 183: 创业。当时有一位叫做 Blake Masters 的学生，在听了这门课之后把自己做的笔记发到了自己的博客上。没想到这些博文一炮而红，硅谷人争相阅读。后来 Peter Thiel 找到 Blake 帮忙，把他对于创业的思考整理成一本书，这本书就是我们今天的主角——《Zero to One》。</p> 
<h2>从零到一 (Zero to One)</h2> 
<p>我们说人类的历史是前进上升的，那么今天就应该不同于过去，而且是日益发展的。经过长期量变的积累，我们可以得到质变的突破，比如工业革命，比如互联网的诞生。在《Zero to One》这本书里，作者提到这种推动历史的进步大概有两个维度：</p> 
<ul> 
 <li>一个是水平的，从 1 到 n，也就是把现有的东西做得更好。</li> 
 <li>一个是垂直的，从 0 到 1，也就是从无到有地创造新的价值。</li> 
</ul> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/11/zero-to-one-diagram.png" alt="" /></p> 
<p>对应到我们当下社会的发展来看， 1-n 即是全球化，就是把发达国家的经验和先进的技术 copy 到发展中国家，然后发展中国家快速发展起来，最终变成“世界是平的”，这就是当前中国在做的事情，疯狂复制美国的一切先进的技术与价值。</p> 
<p>而 0-1 则是科技的发展，在今天尤指计算机科技的发展，通过创造新的技术来改变世界。这就是美国现在在做的事情，Google，Apple，特斯拉这些公司都是在创造新的价值，在做技术的突破。</p> 
<p>从 0 到 1 比从 1 到 n 困难，但是并不是不可能实现的。这本书讲的就是怎么做到从 0 到 1。但是0-1 这件事情没有银弹。作者并没有给出，也给不出一个具体的步骤，告诉你怎么成功，因为能够从 0 到 1 的事情都是前所未有的，都是独一无二的，要是真能有个方法论量产出来，它就不是 0-1 了。所以这本书的重点，其实是在告诉你如何学会思考，从而自己去思考得出自己的步骤，找到适合自己的途径。</p> 
<h2>成功是靠运气还是技艺</h2> 
<p>可能大家或多或少都听过这么一个说法：</p> 
<blockquote>
 <p> 一个人的成功跟他的运气有很大的关系，运气占的成分甚至达到 50% 以上。 </p>
</blockquote> 
<p>如果拿这个问题去问其他人，我想 80% 的人都会同意。之前我也是这么想的，尽管老觉得哪里有点不对，但是我还是更愿意相信这个说法。直到看了这本书，我才明白是哪里不对，才明白为什么我愿意相信这个说法，道理很简单：这只不过是 loser 的自我安慰罢了。</p> 
<p>成功的人通常会谦虚或者虚伪地会告诉你成功主要是靠运气，而 loser 则会告诉你成功当然要靠运气的啦。这里面潜台词就是：你看我现在活得不怎样其实不是因为我没能力，只是我运气太差啦，而运气这玩意儿可不是我能掌控的，所以我是怀才不遇，无可奈何啊。</p> 
<p>其实静下心来想一想，如果承认一个人的成功主要是靠运气，说白了就是靠概率，那么无异于承认你的人生就是一张彩票。但是现在有 Paypal Mafia 这帮人做出一连串非常成功的事业在，有 Elon Musk 牛逼哄哄的 SpaceX 和 特斯拉在，有乔布斯艺术与人文交叉的 Pixar 和 Apple在。假如这些人全都中了彩票，那么我就该怀疑我所处的这个平行世界的真实性了。在这本书里，作者就很直白地说了一句：如果看到这里你还觉得你的人生是一张彩票，那你还看这本书做什么呢？</p> 
<p>所以现在我更愿意相信成功的原因里面，运气的成分其实没那么高，人生并不是一张彩票。</p> 
<h2>特斯拉的七颗龙珠</h2> 
<p>那么问题来了，如果这些黑手党创办的公司不是掷骰子得到的成功，那么他们获得成功的途径是什么？有没有什么秘密呢？你要神龙给你实现愿望好歹还得集齐七颗龙珠对吧。这本书虽然没有直接给出龙珠的位置，但是却给出了龙珠雷达——七个创业者都会遇到的问题，答好这七个问题，你就具备了成功的条件，哪七个问题？</p> 
<ol> 
 <li>工程问题 Engineer</li> 
 <li>时机问题 Timing</li> 
 <li>垄断问题 Monopoly</li> 
 <li>人的问题 People</li> 
 <li>分发问题 Distribution</li> 
 <li>持久问题 Durability</li> 
 <li>秘密问题 Secret</li> 
</ol> 
<p>接下来我们以特斯拉为例，看看怎么解答这七个的问题。</p> 
<h3>1. 工程问题：你能否做出技术突破而不是技术改进？</h3> 
<p>特斯拉在电动车技术上面要遥遥领先于其他汽车公司。奔驰的母公司戴姆勒公司就采用了特斯拉的电池组，奔驰则用了特斯拉的传动系统，丰田则用了特斯拉的发动机。这种技术上的领先就有如 iPhone 在手机上的领先，是后来者无法望其项背的。在本书的第三章 All Happy Companies Are Different 中，作者就讲到了 Google 和 Apple 是如何凭借技术优势独占鳌头的。</p> 
<h3>2. 时机问题：你要做的这项事业在当下是个好时机吗？</h3> 
<p>在 2009 年奥巴马上台之后，美国政府一个重要的政治任务是支持洁净能源，发展绿色科技，当时美国政府对很多绿色能源公司都发放了巨额的津贴，但是很多公司后来都挂了，其中最有名的就是 2010 年 Solyndra 这家公司的破产，直接导致奥巴马卷入公众强烈的质疑。就在这短短几个月的黄金时间里，特斯拉的创始人 Elon Musk 就看到了这个千载难逢的机会，从政府手中拿到了 4.65 亿美元的津贴。这笔钱即使放在在今天来看都是难以想象的。</p> 
<p>这里有的人会觉得，这不就是狗屎运嘛，这不就是彩票嘛？其实不然，如果不是 Elon Musk 去谈这笔钱，就是给你十个奥巴马我想捞不到什么好处。</p> 
<p>说到 Elon Musk 这个人，作为特斯拉的首席产品设计师与 CEO，他是个工程师与推销员的结合体。Salesman 翻译成推销员可能给人逼格不够高的感觉，其实不然，推销员是有几层境界的。最 low 的就是在大马路上隔开几十米一眼都能看出来是个房产中介的那些人，更高级一点的是，给你销售产品的时候你完全不知道他是推销员，直到你付款了才恍然大悟：哦，又被人忽悠买东西了。最牛逼的推销员则是从头到尾没有给你一丝感觉他是一个卖东西的人，你不但心甘情愿地花大钱，而且花了之后还会对它感恩戴德。Elon Musk 就是这么一个顶尖的销售人员，他能够看到这个稍纵即逝的机会，并成功地薅了一笔羊毛。</p> 
<h3>3. 垄断问题：你是从大盘的细分市场开始做起的吗？</h3> 
<p>在这本书第三章提到两个经济学上典型的市场形式，一个是垄断（Monopoly），一个是完全竞争（Perfect Competition）。</p> 
<p>垄断好理解，Google 在全球搜索市场就是一种垄断，理想状态下一个市场会被一家公司完全掌控。而一旦一家公司垄断了一个市场，他就可以随意左右这个市场的价格。反之，完全竞争则是指有很多家公司在统一市场处于竞争当中，没有任何一家公司可以左右市场的价格。</p> 
<p>本书有一个章节在专门讲这两个经济模型，这里不详述，大意是想要在一个市场获得最大利益，必须得是垄断，竞争只会让企业疲于战争，失去创新，几无利润，最终惨淡收场。而要实现垄断，首先得从一个大市场的一个细分市场做起，统治了这个细分市场之后，再渗透到其他的市场，最终实现大市场的统治。</p> 
<p>Facebook 一开始就是从哈佛大学做起，后来才慢慢扩展直到今天渗透到了全世界。特斯拉在这个问题上解决得很好，他首先在汽车市场这个大盘中选择了一个能够实现统治的细分市场——高端电动跑车。试想一下现有的家用汽车市场，普通大众可能一辈子就买一辆车，那既然市面上有那么多成熟的汽油车，我干嘛非要买一辆电动车呢？但是富人不同，尤其是买得起超跑的富人，开一辆特斯拉能显得自己支持绿色环保，既尝了鲜又收获了名，何乐而不为？而且特斯拉百公里加速不到 4s，同样性能的跑车价格可就高了去了。于是 2008 年，特斯拉卖出了 3000 辆电动车，但是平均每辆车卖了 11 万美金。从小市场做起也让特斯拉得以研发更为便宜的车型——Model S，开始进军豪华轿车市场。到 2013 年，特斯拉已经卖掉了 20000 辆以上的轿车型电动车，成为当今炙手可热的焦点。</p> 
<h3>4. 人的问题：你找对创业的合伙人了吗？</h3> 
<p>前面第二个问题提到 Elon 是一个工程师与推销员的结合体。所以 Elon 在组建特斯拉公司的时候，招募了大量擅长技术与推销的人。在这本书里，作者也花了大量笔墨来阐述人（包括员工，管理者，股东）对于一个公司的的重要性。</p> 
<p>这里作者提到三个概念：</p> 
<ol> 
 <li>拥有（Ownership，法律上拥有这个公司）</li> 
 <li>占有（Possession，事实上在最前线做事，使得这个公司可以运作下去的人）</li> 
 <li>控制（Control，形式上控制这个公司的方向、决策的人）</li> 
</ol> 
<p>在一个典型的创业公司，拥有权，或者或股权，会被分配到创始人，员工和投资者三者手里。最前线的码农和管理者是在干活的人，享受占有；投资者和创始人则制定各种决策，做大方向的指引。</p> 
<p>这种模式看上去理想状态中是可以完美运作的，但是人都是复杂的，在本书第九章 Foundations 中作者做了详细的阐述。这里关于特斯拉的内部运作作者没有更多的表述，但是我想这颗龙珠的位置，应该就在这一章之中了。</p> 
<h3>5. 分发问题：你是否有销售你的产品的渠道？</h3> 
<p>有一个可能在互联网行业普遍存在的问题：很多人尤其是码农，可能心里都觉得销售人员没干正事。比起自己整天写大量的代码，做很牛逼的技术活，那些 BD 不过是做在办公室打打电话，跑出去跟人家吃餐饭，发发朋友圈晒晒照片罢了。这也是 99 年互联网泡沫时期很多人犯的一个错误：销售不值得重视。但是其实不然，销售和产品是同等重要的，本书第十一章 If you build it, will they come? 中就探讨了销售的重要性。</p> 
<p>就像乔布斯执意要建 Apple 的 Retail Store，特斯拉也拥有自己的实体店。传统的汽车公司如福特和现代，都是只生产汽车，交给经销商来做销售。但是特斯拉却是自己包下了整个分发链，自己做销售，自己做售后服务。这种自己建立门店的做法固然会带来比较高的成本，但是效果也是非常显著的，跟苹果一样，带给客户更好的体验，同时强化了自身的品牌，从长远上看，其实是在帮公司省钱。</p> 
<h3>6. 持久性问题：10年、20年后你觉得你还能守住你在这个市场的位置吗？</h3> 
<p>这个问题其实就是生命周期的问题，每一个企业家都应该考虑怎么让自己的企业在一个市场中持久生存下去。</p> 
<p>对于特斯拉来说，他们现在想要进军的市场是相对较为平民的市场，对这个市场的消费者来说，一辆车是可以用很多年甚至一辈子都有的。所以这个产品本身的生命周期就比较长。而比起其他传统汽车公司来说，特斯拉还处于成长中，他们还会持续打鸡血，不断优化自己的产品，不断提升用户体验，以应对更长时间的变化带来的考验。</p> 
<p>从大局上来说，绿色能源或者说新能源取代日渐枯竭的石油是一种趋势，特斯拉是走在绿色能源前沿的，尽管我们不能断言 10 年后绿色能源会替代石油，但是历史的趋势总是这样的：当一项资源趋于枯竭的时候，我们总能找到另一种可替代的东西。特斯拉是否可以替代传统的汽车还有待时间去验证，但是在市场持久这个问题上，10 年、20 年特斯拉是不会有问题的。</p> 
<h3>7. 秘密问题：你是否拥有一些不为人知的机密？</h3> 
<p>本书的第一章开篇 Peter Thiel 就问了一个问题：你知道什么鲜为人知的重要的事实吗？(What important truth do very few people agree with you on?)</p> 
<p>这是一个很难回答的问题，这本书也给不出一个准确的答案，但是这本书解答了另一个问题：如何去思考这个问题的答案？每一个答案都跟具体的案例紧密相关，特斯拉有他自己的答案，比如说特斯拉知道，时尚会引起大众对绿色能源的兴趣。这点 2012 年张小龙的 8 小时演讲里也提到过：时尚是一种驱动力。但是很少有绿色能源的公司看到这一点。</p> 
<p>特斯拉从这点出发，力求打造让司机看起来很酷的特斯拉汽车。张小龙此前的演讲也说到：要听到用户说“好玩”，“很酷”。而要让普通人觉得酷，最好就是让很酷的名流也喜欢开这部车。这就像魔音耳机 Beats，每年投入大量的资本在广告宣传上，让明星在公众场合，在 MV 里面戴上显眼的 Beats 耳机，营造一种潮流。特斯拉也营造了一种潮流，好莱坞影星李奥纳多就卖掉了他的普锐斯换成了特斯拉。营造社交氛围把特斯拉推进公众视线的焦点，这就是特斯拉与其他绿色能源的不同。</p> 
<p>相信特斯拉还掌握了其他的秘密，如果秘密都被你知道了，还能是秘密么？所以每个公司都应该把秘密控制在一定的范围内：只有你自己的公司知道就行了。</p> 
<h2>结论</h2> 
<p>《Zero to One》这本书给我比较大的感慨有两个：</p> 
<ol> 
 <li>我们应该要做 0 到 1 的事情，尽管很难代价很高，但并不是无法实现的。一旦实现你就登上人生巅峰了。</li> 
 <li>人生不是一张彩票，运气不好只是 loser 的自我安慰罢了。</li> 
</ol> 
<h2>参考链接</h2> 
<ul> 
 <li><a href="http://en.wikipedia.org/wiki/PayPal_Mafia">Wiki:Paypal Mafia</a></li> 
 <li><a href="http://fortune.com/2007/11/13/paypal-mafia/">Fotune:The Paypal Mafia</a></li> 
</ul>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #66 George R. R. Martin - &#x300A;&#x51B0;&#x4E0E;&#x706B;&#x4E4B;&#x6B4C;&#xB7;&#x5377;&#x4E00;&#x300B;(&#x7528;&#x201C;&#x91CD;&#x5199;&#x201D;&#x4EE3;&#x66FF;&#x201C;&#x7FFB;&#x8BD1;&#x201D;)</title>
        <link>https://justinyan.eth.limo/0ED3E44D-6286-431D-A0B9-7D7516B8348A/</link>
        <guid>https://justinyan.eth.limo/0ED3E44D-6286-431D-A0B9-7D7516B8348A/</guid>
        <pubDate>Thu, 02 Oct 2014 00:17:02 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/10/pF8XnmBKlT6Ovt2nonXOww-1.jpg" /></p> 
<p>我从未读过如此流畅的英文译作，仿如东野圭吾，原研哉等日文的作品一般行云流水，毫无拖沓凝滞之感。能做到这种程度的，作者想必做了大量的功课，完全理解了小说的内容，再用自己的思考把整部小说重写了。从翻译上来说，这是我读过的翻译得最好的英文小说，没有之一。</p> 
<p>上个世纪外国文学的中译版尚不成熟的年代，像《巴黎圣母院》这样冗长晦涩，一个句子长得可以排满一整页纸，看完后面忘了前面，看完一段完全不理解作者在说什么的情况，大约算是一种代表。即使到了近几年，像《百年孤独》这样的译作也是相当令人失望的，有能力看英文原著的都不愿意去看那些畸形的中译本。</p> 
<p>但是本书开卷时译者的语言风格就完全吸引了我，除了音译的人名仍不习惯之外，完美的本地化极大地还原了这部小说本原的魅力。译者屈畅在 2000 年接触此作变已爱上《冰与火之歌》，他熟读英文原著，翻看相关论坛，把作者的构建的宏大故事架构及交错的线索都烂熟于胸，极力以中文的思维重写该书。为了做到中译的流畅，光是把句子以中文表达一次是远远不够的，他每次翻译都会经过无数次的修改，比如把艰涩的地名用尽量接近的中文来意译，把故事中的线索弄清后反复修改已有的译稿。所以我想，这是一种“重写”，而不仅仅是翻译了。</p> 
<p>原作第一卷《权力的游戏》发表于 1996 年，我却是在 2011 年同名电视剧大热的时候才听说了这个名字。但是剧本毕竟与原作有别，而且电视剧的手法没法讲述完整的故事信息，看了第一季前几集之后，我没能搞明白这部剧到底在说什么，于是就放弃了。直到我看了本书。</p> 
<p>作者构筑了一个宏大的世界，这个世界拥有诸多文明，也有漫长的历史，这是一部史诗式的小说，第一卷读到一半，仍觉得世界才刚刚展开，即便到末期艾德首相发现了王后的秘密，第一卷开始有收尾的感觉，整个世界也不过初露冰山一角。而作者采用的POV（Point-Of-View 视点人物写法）写法也颇为独特，每一章都采用一个人物的视角，从他的角度来讲述故事。这使得这部小说既有主角也可以视为没有主角，既是群写也有特写。北境之王艾德在第一卷里面算是出场较多的人物，也是影响第一卷的故事发展的最为关键的人物，但是与传统的“主角光环”不同，艾德出场了 15 章之后死了。私生子“琼恩”也算是个比较关键的人物，类似传统小说中贫民变英雄的路线，他本来也应该变成一个超级英雄然后一跃成为主角，但是他却宣誓成为“没有家人没有朋友终身不得娶妻生子”的守夜人，只能在支线故事游走，主线战场再看不到他的身影。又比如野人卓戈卡奥，本以为如此战神应该可以横跨拉斯克的海扫荡七大国，跟异鬼、人类一起逐鹿中原，天下大乱，可惜故事最后居然被一个女奴隶所害，也算得上是匪夷所思了。</p> 
<p>没有主角大约算得上是令人困惑和没有寄托的缺点，但是却极大地方便了作者谱写一首时间跨度极大，空间覆盖整个虚构世界，凌驾于人类、异鬼、龙等各种奇幻种族的史诗。</p> 
<p>读罢第一卷，我感觉译者翻译得很好，应该说，他“重写”得很好。还有就是，这个故事，可能才到“刚刚开始”的时候。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #65 &#x539F;&#x7814;&#x54C9; &#x2014; &#x300A;&#x767D;&#x300B;</title>
        <link>https://justinyan.eth.limo/DB212666-ECDA-482B-A3AE-1C86D9AA7A78/</link>
        <guid>https://justinyan.eth.limo/DB212666-ECDA-482B-A3AE-1C86D9AA7A78/</guid>
        <pubDate>Tue, 23 Sep 2014 12:06:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/09/1_f6W8Z_lPC08X2HKQckupMQ.jpg" alt="" /></p> 
<p>为了化繁为简，需要对产品的每个方面每个细节都能明确地掌握。乔布斯在控制 Mac 或者 iPhone 项目的时候都是如此，深入地了解项目与产品的每个细节，才能做减法。我想读书也是这样的。</p> 
<p>第一次读原研哉的《白》，只觉得不过是牵强附会之作。直到读罢第二遍，做完读书笔记，才对“白”的概念若有所悟。读到千利休以简单与平静为美，追求简洁的时候，不由又想起乔布斯，他深受日本禅修的影响，崇尚化繁为简，追求简单的美，同时也极力推崇苹果产品以白色为主色调。</p> 
<p>但是本书的“白”并不止于“白色”。“白”是一个概念。四个章节“白”、“纸”、“空”以及“回到白”，在不理解“白”的概念时，我觉得书中的一切都是镜中花水中月，附会之处太多。但是当我理解了“白”并不意指颜色，而是深藏于“日式风格”中的核心：极致简洁，诱人深思，还原本质。我开始领悟到“白”的魅力。</p> 
<p>看过原研哉的好几本书，为他的设计思想所折服。有能力做出好设计的人很多，这是一件本事，但是有能力把怎么做出好的设计讲清楚，则是另一件本事。最近看和菜头的《周末，来点当代艺术》，为其不仅能够把抽象的艺术理解，还能以如此朴素易懂的语言讲述出来而感到敬佩，但是读之还稍显粗浅。原研哉的书则喜欢以更加含蓄语言来描述他心中所想，但是这并不妨碍他语言流畅的风格。</p> 
<p>《白》一书还提到了日本的“混沌”、“八百万神”、“屋代”、“茶道”等概念，相当有趣，这大概是我读第一遍的时候唯一感兴趣的地方了（笑）。我喜欢千利休那个为了接待丰臣秀吉，把清晨院子里所有的牵牛花都摘下扔掉，只放一朵牵牛花在地板上的故事。如果回到今天我们看到的 iOS 7 的设计变化：内容为王，形式不要抢了内容的风头。我想也是同一个道理，只是我不喜欢 iOS 7 那种模糊而复杂的效果，更像“混沌”的世界，不像 Apple 一直以来干净素雅的风格。</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x6BCF;&#x5468;&#x8BFB;&#x4E66;] &#x4E66;&#x5355; &#x4E94;&#x5341;&#x516B;&#x2014;&#x2014;&#x516D;&#x5341;&#x56DB;</title>
        <link>https://justinyan.eth.limo/76B0D5EC-DF9C-4538-B3CB-F581C2FE54D2/</link>
        <guid>https://justinyan.eth.limo/76B0D5EC-DF9C-4538-B3CB-F581C2FE54D2/</guid>
        <pubDate>Sat, 13 Sep 2014 16:10:59 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2014/09/cover_shudan_49_57.jpg" alt="cover" /></p> 
<p>两个多月过去了，从海南骑行到南昆山一日来回再到环青海湖骑行，这几个月里，做了挺多事情，竟然也还是看了几本书，而且还包括《史蒂夫·乔布斯传》这样的大部头，也算难得。</p> 
<p>读书总能让我意识到自己眼界的狭窄，以及外面的世界到底有多精彩。</p> 
<p>《整理魔法》属于非常实用的生活技巧，由于这本书的魔法，令我保持房间整洁至今，实在受益匪浅。</p> 
<p>中西大辅骑行环游世界也算是个不错的故事，但是相较而言我更喜欢石田裕辅的版本，即《不去会死！》，那本书让我有一种跟着作者一起去汽车环游世界的感觉，也正是那本书，让我下决心买了自己的山地车，至今数月的时间里跑了不少地方。</p> 
<p>《为什么设计》让我找回遗失多年的设计感，要说我的设计做得怎样那我还是有自知之明的，但是我依然很喜欢人文的感觉，这种以直觉为判断的能力令人身心舒畅，比起坐在办公室里正儿八经地跟无趣的程序猿理性地讨论技术的实现，我更喜欢从产品设计的角度来审视一个产品的设计与开发，而不纯粹是技术问题。</p> 
<p>我想技术是一项工具，是一种技能，正如绘画能力是艺术家的工具一样，这种基础能力是为了创造而服务的，艺术家可以用他的绘画能力创造艺术品，而程序员则可以用自己的技术来创造数字产品。二者是共通的，当然，艺术家可以根据自己的心意来进行创作，而程序员创造的产品往往要受制于愚蠢的产品经理或者愚蠢的用户，哈哈。这大约是根本的区别，艺术家是面向自己内心的，程序员却往往要面向大众，面向各种各样奇奇怪怪的人群。</p> 
<p>《解忧杂货店》是东野圭吾挺有意思的一部新作，还是以悬疑推理的手法来进行写作，只是写作的内容不再是犯罪和解谜了，只是把盲点分布开来，以时空交错为基础，交叉排布了几个故事，有点让我想起《云图》，几个故事间是纵横交错的，但是比《云图》要好看多了。（笑）</p> 
<p>《嫌疑人X的献身》无疑是东野至今为止的最高代表作。这部作品拿下无数奖项，也给予无数读者震撼的阅读体验。尽管我已经事先看过改编的电影版，了解了剧情了，但是读起这部小说来依然津津有味，手不释卷，直到最后高潮部分，也是耸然动容，心潮起伏。</p> 
<p>《自控力》也属于是自我反省类的书籍，层层递进地讲解了人们自控的生物基础，以生物科学的角度来解释“意志力”为何物，我们要意志力来做什么，怎样提高我们的意志力。跟着书本的章节阅读，有如上学一般慢慢学习，依照书本的方法去做，自觉自控力确实有所提高，至于效果如何，大概没有整理魔法给我带来的变化那么显著（笑）。</p> 
<p>最后《史蒂夫·乔布斯传》是我这几个月时间里看过的最大部头也是最好看的作品了。了解了乔布斯的一生，跟着他跌宕起伏的人生经历了一场场感动与欢笑，而刚好乔布斯又是我们数字时代的伟人，了解了乔布斯的人生就相当于了解了数字时代的历史浪潮。我想，即使在以前我也是很崇拜苹果喜欢苹果产品的人，但是我并不了解乔布斯，通过网络上一些只言片语的描述，我仅仅是猜测乔布斯是一个怎样的人罢了。如今看完《乔布斯传》我想我还是不了解乔布斯，他太复杂，也太极端，不过也正是他这种性格，才使他得以有别于其他企业的领导者，而成为数字时代的领导者。</p> 
<hr /> 
<ol> 
 <li><a href="http://www.justinyan.me/post/1786">[每周读书] 五十八 近藤麻理惠——《怦然心动的人生整理魔法》</a></li> 
 <li><a href="http://www.justinyan.me/post/1792">[每周读书] 五十九 中西大辅——《骑出来的人生美景》</a></li> 
 <li><a href="http://www.justinyan.me/post/1798">[每周读书] 六十 原研哉——为什么设计</a></li> 
 <li><a href="http://www.justinyan.me/post/1809">[每周读书] 六十一 东野圭吾——《解忧杂货店》</a></li> 
 <li><a href="http://www.justinyan.me/post/1816">[每周读书]六十二 东野圭吾——《嫌疑人X的献身》</a></li> 
 <li><a href="http://www.justinyan.me/post/1824">[每周读书] 六十三 凯利•麦格尼格尔《自控力》</a></li> 
 <li><a href="http://www.justinyan.me/post/1834">[每周读书] 六十四 沃尔特·艾萨克森 ——《史蒂夫·乔布斯传》</a></li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #64 Walter Isaacson &#x2014; &#x300A;&#x53F2;&#x8482;&#x592B;&#xB7;&#x4E54;&#x5E03;&#x65AF;&#x4F20;&#x300B;</title>
        <link>https://justinyan.eth.limo/D1421144-487A-4B5D-931D-6546AFE3EAA9/</link>
        <guid>https://justinyan.eth.limo/D1421144-487A-4B5D-931D-6546AFE3EAA9/</guid>
        <pubDate>Sat, 13 Sep 2014 15:32:35 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/09/71qAAvGtSL-1.jpg" /></p> 
<h2>改变世界的乔布斯</h2> 
<p>如今我坐在 MacBook 前，呷一口红茶，回味刚刚看完的《史蒂夫·乔布斯传》。他的一生起伏跌宕有如武侠小说一样精彩，从车库公司默默无闻到全球市值最高的科技公司，历经波折，当他重返苹果的时候，简直就是杨过练成重剑出山，横扫当世高手一般！</p> 
<p>今天很多人都知道乔布斯的名字，都知道卖肾也要买的 iPhone，但是多数人对乔布斯的了解都是片段的，不完整的。一如他对产品的完美的追求，对所有事物<br /> 的全面控制的欲望，他不希望世人在自己死后曲解自己，他想要留下一个真实的自己，于是他与 Walter Issacson 开始了这个自传工程。沃尔特真实地记录了乔布斯的专注与热情，复杂的人格，叛逆的性格，极易怒的脾气，正是他的这些异乎常人的性格，才使得他经历了辉煌而曲折的一生。我常觉得人生在世，要得到世俗的所谓“成功”最重要的还得是运气。而乔布斯似乎是个充满无穷能量的皮球，在凹凸不平的大地上滚动，尽管一路上撞伤了不少人，撞伤了自己，却义无反顾地勇往直前，往往在人们不认可的时候做出出人意料的成绩，令人瞠目结舌，惊叹不已。</p> 
<p>最近在解决 iOS 8 系统的缺陷给我们造成的几个 bug 的时候，总要想起过往在 iOS 系统中开发的舒适，总让我经不住怀疑：如果帮主在世的话，他能容忍这样显而易见的 bug 吗？他就是这样一个事无巨细事必躬亲的 CEO，不单在大方向上带领苹果公司前进，连所有的细节都不容放过。正是由于他强烈的控制欲与无比的专注，才能做到这点，也正是这点，才使得他能够化繁为简，以少为多。</p> 
<p>为了把产品尽可能简化，他需要了解产品的每一个方面每一个细节，只有完全掌握了复杂，才有可能简化。乔布斯的考虑从来都是以“做出伟大的产品”为导向的，在这个过程中，再“顺便赚到钱，就更好了”。</p> 
<p>但同时他那复杂的人格又让人难以读懂，他重返苹果的时候要求只拿 1 元年薪，以显示自己不是为了钱才回到苹果的。但是当他正式成为苹果 CEO 的时候，他又要求了大量的股票期权，真是个古怪的人。</p> 
<p>我想，乔布斯身上有很多我们渴望但却被约束了的人格。我们为了与他人更好地相处，会妥协，会强忍着不该讲的话，但这些都是有代价的。看到乔布斯恣意而为的态度，挑战“老大哥”的叛逆，傲慢不可一世的表现，这些都是我们人性中渴望而备受压抑的一面。这些令人钦羡的魅力再经由乔布斯强大的演讲能力展现出来，简直就是一个时代崇拜的偶像。</p> 
<p>现在我们很多开发者都在苹果创造的平台里面做 APP，做服务，我觉得比及乔布斯创造的产品来说，都不过是萤火之光。</p> 
<ul> 
 <li>他与沃兹尼亚克创造的 Apple II，开创了个人计算机时代；</li> 
 <li>他创造的 Mac 电脑，引发了家用机革命并普及了图形用户界面；</li> 
 <li>他的 Pixar 制作的《玩具总动员》开创了数字影响的奇迹；</li> 
 <li>他主张的苹果零售店，重新塑造了商店在品牌定义中的角色；</li> 
 <li>他创造的 iPod 改变了我们消费音乐的方式；</li> 
 <li>他创办的 iTunes 商店，让音乐产业获得新生；</li> 
 <li>他带来的 iPhone，重新定义了移动电话；</li> 
 <li>还有 App Store，iPad，iCloud，以及最重要的，苹果公司本身。</li> 
</ul> 
<p>还记得大学时期拥有第一部 iPod touch 就爱上了苹果，到我能够使用 iMac 做开发的时候，乔布斯病逝了。当时颇有点人心惶惶的感觉，大家在猜测苹果公司失去了这样一位灵魂人物之后还能否继续创新下去，也都害怕如果失去了苹果公司这样一个不断创新的公司，是否我们又要陷入过去那种被毫无设计品位的产品包围的生活。当时我对于乔布斯其人，对于苹果的历史并不甚了解，只是觉得 5 年内苹果还不会倒下，苹果领先业界至少 5 年。</p> 
<p>如今 3 年过去了，苹果公司这三年内确实看起来有点创新乏力，尽管苹果公司依然占据移动设备市场。读罢本书，我想苹果公司是一家具有创新氛围的公司，Jony Ive 与 Tim Cook 也都是很有能力的高层，但是今年 iPhone 6 与 iPhone 6 Plus 一同推出，iOS 8 系统与 OS X 10.10 的境况却让我感到有点担忧：是否苹果内部由于缺少乔布斯这样的强权而变得有些松散了呢？</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x62CD;&#x5230;&#x7684;&#x6F6E;&#x5DDE;&#x4E00;&#x89D2;</title>
        <link>https://justinyan.eth.limo/D5DD6085-F80A-44E6-9092-A004BBF3BA48/</link>
        <guid>https://justinyan.eth.limo/D5DD6085-F80A-44E6-9092-A004BBF3BA48/</guid>
        <pubDate>Tue, 02 Sep 2014 20:59:41 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>赶在八月的尾巴回了一趟潮州老家，在这座古城长大，在这做老城念书，小街小巷里有淋着雨踩着单车的欢笑，也有迎着风望着韩江的寂寥。DOMO 说在一个地方久了，反而发现不了这个地方的美，我倒觉得广州也好潮州也罢，都有着厚重的历史痕迹，而深圳，除了空气确实不错之外，心中一直对齐不以为然。</p> 
<p>这次回家也带上了相机，在潮州这座小城里，留下了几张小影。</p> 
<p><img decoding="async" src="http://7xkua9.com1.z0.glb.clouddn.com/914489_378025695681451_329640582_n.jpg" alt="img" /></p> 
<p><img decoding="async" src="http://7xkua9.com1.z0.glb.clouddn.com/10607953_464365377037187_738509341_n.jpg" alt="img" /></p> 
<p><img decoding="async" src="http://7xkua9.com1.z0.glb.clouddn.com/10632025_580634718708481_1005862701_n.jpg" alt="img" /></p> 
<p>在老家念书上初中的时候，每到傍晚总能看到窗外有飞鸟盘旋，想回家的心也不觉被撩动起来。这三张倦鸟归巢的照片摄于韩江北堤祭鳄亭（鳄渡秋风）上，初中的课堂犹历历在目，不觉竟已十年有余。</p> 
<p><img decoding="async" src="http://7xkua9.com1.z0.glb.clouddn.com/928658_692084514208656_1103240434_n.jpg" alt="img" /></p> 
<p><img decoding="async" src="http://7xkua9.com1.z0.glb.clouddn.com/10632236_521743727957241_1732498917_n.jpg" alt="img" /></p> 
<p><img decoding="async" src="http://7xkua9.com1.z0.glb.clouddn.com/10525492_1495770693994974_1114141133_n.jpg" alt="img" /></p> 
<p>潮州的天比广州的蓝，深圳似乎要更好一些，但是在潮州，总能让我见到小时候傍我放学的夕照与远山。近年来潮州的工业发展也给市区带来了不少污染，但是幸好，天空还是蓝的，还有飞鸟，还有浮云。</p> 
<p><img decoding="async" src="http://7xkua9.com1.z0.glb.clouddn.com/10661289_641268259314759_1609931204_n.jpg" alt="img" /></p> 
<p><img decoding="async" src="http://7xkua9.com1.z0.glb.clouddn.com/10683876_298921630311380_103688511_n.jpg" alt="img" /></p> 
<p><img decoding="async" src="http://7xkua9.com1.z0.glb.clouddn.com/10683754_768897763166891_1021298075_n.jpg" alt="img" /></p> 
<p>初中的时候最爱教室墙上的阳光，傍晚时分，斜阳昏黄，惹人心生惆怅。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #63 Kelly McGonigal - &#x300A;&#x81EA;&#x63A7;&#x529B;&#x300B;</title>
        <link>https://justinyan.eth.limo/091E39B0-5403-4B9B-96C0-EDE954D2E832/</link>
        <guid>https://justinyan.eth.limo/091E39B0-5403-4B9B-96C0-EDE954D2E832/</guid>
        <pubDate>Tue, 02 Sep 2014 13:31:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/09/81m97PAdsRL-1.jpg" /></p> 
<p>读这本书其实是一个学习的过程，感觉像回到大学继续课程一样，一点点让自己感到自己的意志力在增强。当我向朋友推荐这本书的时候，多数人的反应却会说：这是畅销书吧？是跟那种成功学一样的书吧？是那种有道理的废话吧？我想大概跟这本书的中译名不无关系。</p> 
<p>这本书的原名是： The Willpower Instinct: How Self-control Works,Why it Matters,and What You Can do to Get More of It. 直译的话应该是：意志力的本性:自控是如何运作的，为什么自控很重要，要怎么做才能更好地自控。</p> 
<p>主标题是意志力，所以其实这本书完全是在跟我们讲解意志力是什么东西，为什么我们要有意志力，以及如何增强自己的意志力以便我们更好地应对，解决生活工作中种种需要自控的问题，比如最常见的赖床，“拖延症”一类。要说这本书的效果的话，此前我曾推荐过<a href="http://www.justinyan.me/post/1786">《怦然心动的人生整理魔法》</a>，那本书让我的房间至今都保持得非常整洁，而这本书给我的感觉是：我通过冥想练习是我的睡眠更加有效了，我在做下意识的决定的时候能提醒我自己我正在做决定了，我想要拖延一些事情不做交给明天来完成的时候我懂得怎么把这些事情与多巴胺挂钩，让我有动力去完成它了。</p> 
<p>作者 Kelly McGonigal 是斯坦福大学的心理学家及讲师，这本书是基于她在斯坦福的公开课而写成的。包括我上面提到的拖延症，无意识做决定等常见的问题，其实都与我们的意志力息息相关。意志力分为“我想要”、“我要做”、“我不要”三种能力：令戒烟者对吸烟说不，这是“我不要”的力量；令拖延症者把今天的作业做完，这是“我要做”的力量；戒烟者说不是因为他真正想要的是健康，拖延症者把作业做完是因为他真正想要的是得到更好地成绩，这是第三种力量“我想要”。</p> 
<p>在每一个章节中，作者都会对本章的概念作出解释，提出问题，进而给出具体可行的解决方案。尽管某些句子总令我想起电视购物广告里面只要 998 的感觉，但是跟着本书的方案去做，去冥想，去三思而后行，确实令我感到意志力有所提升，这是件挺神奇的事情。</p> 
<p>为了提升意志力，首先我们得认识什么是意志力，于是本书开篇即对意志力做了详尽的阐述。我们平时每天会做出 200+ 次关于食物的决定，但是我们能意识到的只有 20+ 次，也就是说，大多数的决定我们是下意识地做了。推广开来，很多刷网页刷微博刷朋友圈的时间其实就是无意识地浪费了！意识到意志力的存在，意识到我们去刷朋友圈就因为红点的驱动，令到大脑分泌多巴胺，多巴胺会驱使我们去点击红点，因为多巴胺的任务就是告诉我们：点击了红点你就能得到快乐。而事实上我们行动的结果并不一定能够得到快乐！</p> 
<p>所以首先在我们点击朋友圈红点之前，我们得意识到点击这件事情的存在，进而认识到是多巴胺在作祟，然后分析得出多巴胺并不一定能让我们快乐，从而减少点击红点这种行为。这是多么神奇的事情！最近我喜欢看 Instagram，刷 News 看看都有谁赞了我，看到有新的赞心里就会有一阵满足感，但是并不是每一次刷新都有，而且即使真的有赞，其实我并不觉得我能获得我期望的那种满足感，而我却要不停地去刷新，不刷就会有种焦虑。当然其实没有那么严重，真正严重的可能是习惯了吸烟的人，不吸烟就会觉得焦虑。</p> 
<p>这本书的畅销说明我们现代人在社会生活中的压力，我们面对着太多的诱惑，太多的压力，常常令我们不知所措，懊恼异常。我们期望有一个完美的自己，可以克制各种诱惑，可以该做什么事情就做什么事情，完全没有拖延，也可以非常清楚地知道自己内心的真正诉求，而否定那些肤浅的及时行乐。但是首先我们得意识到这其实是不可能的，没有一个人是完美的，但是我们可以做得比现在更好。</p> 
<p>《The Willpower Instinct》这本书比起成功学来说，最好的一点是有非常具体可操作的解决问题的方法，跟这些方法去做了，自己就能得到提高，只抛出问题而不提供答案的，就只是有道理的废话罢了。</p> 
<h2>如果有兴趣想了解书本内容的童鞋可以继续往下看看笔记：</h2> 
<p>第一章告诉我意志力是什么，意志力为什么存在，而通过冥想我可以更好地意识到我之前没有意识到的决定。</p> 
<p>第二章告诉我意志力是一种本能，我们心中其实有两个自我，每次难以抉择的时刻都是两个自我的较量，这时候就需要意志力上场，而意志力也会用完，充足的睡眠可以恢复我们的意志力储备。</p> 
<p>第三章告诉我意志力像肌肉一样有极限，用得太多就会失控，但是坚持锻炼可以提升意志力极限。这也解释了为什么通常周一感觉自控良好，越往周末越觉得累而无心工作。</p> 
<p>第四章解释了为什么善行之后会有恶行，不过对我来说切身体会相对较少。</p> 
<p>第五章相对来说非常重要，解释了为什么我们会认为去点朋友圈红点会得到快乐，其实是大脑中多巴胺的作用，我们并没有因为点击红点而得到快乐，多巴胺令我们焦虑，驱使我们去点击红点，承诺我们点击了就有快乐，是为奖励的承诺，但是并不是真的会给我们奖励。现在的互联网产品利用多巴胺倒是用得很不错了，驱使用户不停地刷微博刷朋友圈。</p> 
<p>第六章告诉我么怎么缓解压力，因为情绪低落会让我们屈服于诱惑，就像我工作压力大的时候会很想花钱买东西一样，其实我并不需要这些东西，但是两个自我的斗争中，由于意志力薄弱而屈服了。这种时候很需要缓解压力的方法，锻炼，冥想，散步都是很好的办法。另外在遭遇挫败的时候要原谅自己，这样下次才不会再犯，这点与我们的常识：对自己严格才能得到更好的自己，这种想法正好相左。首先人非圣贤，不可能没有犯错的时候，当我工作上做错了事情，被 leader 训的时候，心情自然非常低落，一直想逃避。但这是令消极更消极，应该要原谅自己，告诉自己是人都会犯错，犯错不怕，下次不要再犯即可。为了做到这点，我首先找出来犯的是什么错，犯这种错的原因是什么，然后提出以后避免这种错误的做法，事实证明，leader 不会对我留下之前那种犯错带来的坏印象，反而因为我的正面应对而增加了好印象，这就是消极转化为积极啊！</p> 
<p>第七章是告诉我们，要意识到未来的自己和现在的自己是一样的，都是意志力薄弱的自己，并不是说暑假作业放到明天，明天的我就会变得很积极地去完成这些作业。每天的时间都只有 24 小时，更不可能说“我今天没时间”而明天就有时间了。所以我一直认为“没时间”是最烂的借口，去健身能花多少时间，这点时间你能做多少事？意识到这些事情其实就很好解决了。具体的方法是：给自己 10 分钟。如果戒烟者想抽烟，告诉自己 10 分钟之后再决定是不是真的要抽，拖延症者想放弃，先做 10 分钟再决定是不是真的不做了。而通常，一旦开始了，你就不想放下了。</p> 
<p>第八章是说意志力会传染，也就是说自控会受到社会认同的影响。这是坏事也是好事，如果一个宿舍的人都早起去晨读，那么自己也会受到影响早起，如果大家都赖床不起，自己会觉得睡多一会也没关系。对于自己不希望被影响的方面，需要用自控力来抵制，对于自己希望得到提升的方面，可以树立一个学习的对象来争取“被影响”。</p> 
<p>最后一章讲的是试图压抑自己的想法、情绪和欲望，反而会起到相反的效果。越是想要去忘记的，就越忘不掉。一个有名的例子就是“不要去想白熊”，越是告诉你不要去想，你就越会去想。生理的解释是，大脑有两套系统，一套控制我不要去想，另一套则会定时去检查我是不是有去想，以确保我真的没去想。而当它定时检查的时候，其实就是我想到的时候了。我们没法控制，没法抑制，那就应该忠于自己的感受，接受这些想法，但是得告诉自己，我可以想，但是我不能相信它。比如戒烟者如果告诉自己不要去想吸烟的事情，情况反而会更糟，相反如果接受这种念头，但是制止自己去抽烟，反而心情会更舒畅，而我们知道心情不佳的时候意志力会减弱，心情舒畅的时候其实自控力是更佳的。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #62 &#x4E1C;&#x91CE;&#x572D;&#x543E; &#x2014; &#x300A;&#x5ACC;&#x7591;&#x4EBA;X&#x7684;&#x732E;&#x8EAB;&#x300B;</title>
        <link>https://justinyan.eth.limo/94566749-CF4B-4648-90A7-7C8B06423666/</link>
        <guid>https://justinyan.eth.limo/94566749-CF4B-4648-90A7-7C8B06423666/</guid>
        <pubDate>Wed, 20 Aug 2014 20:56:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/08/61ZJLDpMxnL-1.jpg" /></p> 
<p>尽管早已看过电影通晓剧情，但是完整看完《嫌疑人X的献身》依然令人为之动容。也许这正是这部作品的魅力所在，以往的推理小说，只要知道结局就失去了魅力，再不看第二遍。但是《嫌疑人》这部作品，一开始就把结局与凶手都摆在读者面前，扣人心弦的部分不再是抽丝剥茧的破案过程，反而把各个角色内心世界的变化放到一个波澜壮阔的舞台。</p> 
<h2>汤川学</h2> 
<p>汤川学作为破案的关键人物，其实相较案中的三个人物，表现得要平静得多。尽管他在察觉到案件的真相后曾一度陷入痛苦之中，但是较之案中三人，他已算是局外了。</p> 
<h2>石神</h2> 
<p>作为故事的主角，他既是一个普通的数学老师，也是一个天才的数学家，样貌的关系令他感到深刻的自卑，耿直的性格更令他处处碰壁，平凡的世界令他不得已放弃了钻研数学的梦想。这个世界是平凡的，不是理想的，丑陋只是平凡的一部分。</p> 
<p>石神已经死过一次，是靖子母女的出现令他重生，在见到靖子那一刻，石神终于找到了活下去的理由。于是命案发生的时候，他决定无论如何也要保护这对母女。</p> 
<p>对一个从鬼门关走过的人来说，这对母女无疑已是生命的意义。石神的心理从暗恋靖子，到命案时觉得机会到来，再到发现工藤与靖子的关系时妒火中烧，这是常人的心理。但是真正牺牲自己，成全靖子与工藤，还是因为汤川学的劝说，尽管石神早就决定要把自己牺牲出去，但是不到万不得已，谁愿意这么做呢？石神心中其实更希望的是能够跟靖子幸福地在一起啊！是汤川学道出:</p> 
<blockquote>
 <p> 这个世上没有无用的齿轮，只有齿轮自身才能决定自己的用途。 </p>
</blockquote> 
<p>石神才终于放弃了挣扎，自首了，祈望通过这种方式来成全靖子母女。</p> 
<h2>靖子</h2> 
<p>靖子作为一个平凡而软弱的女子，有过一段失败的婚姻，也算是历经坎坷。发生命案其实也身不由己，从一开始的震惊无所适从，到听从石神的安排，其实正是靖子软弱的性格的表现。</p> 
<p>经历了这么多苦难，工藤出现了，无疑是暴风雨之中出现了一个安静的港湾，靖子无疑希望自己能寻得庇护，再也不要过着这种苦难的日子。但是石神分明是因为对自己的爱慕才不惜参与命案来保护自己，于是靖子其实是被迫背上了一个巨大的包袱。</p> 
<p>如果只是靖子自己犯案，或许还好，但是事关自己的女儿美里，靖子只能默默承受。在命案查证的过程中，经历过担心害怕，遇见工藤后既渴望能跟工藤过上平静的日子，又对自己的女儿与石神抱有深刻的愧疚感这种矛盾，实在再正常不过。这只是因为她不知道真相。</p> 
<p>最终知道石神为了她竟然真的犯下命案的时候，这个自己认为合理的情感世界终于崩塌了！女儿的割腕，石神的牺牲，这些事情一下子如洪水般涌来，本就软弱靖子再承受不了这样巨大的冲击。</p> 
<p>我觉得靖子才是这部作品里面最大的牺牲者，她所背负的债，她所遭受的苦难，都是被动的，来自于前夫，来自于失手伤了前夫的女儿，来自于石神的无比的爱慕，来自于保护女儿的情感，她其实无从选择，她其实完全是被迫地去承受着这一切啊！</p> 
<h2>美里</h2> 
<p>作为这部作品里面出场份额不多，但是性格极为鲜明的角色，很好地出现在故事的几个冲突点上，促成这部作品的几个高潮。由于美里成长在父母天天吵架进而离婚的家庭环境下，造成了美里刚强的性格，以及心灵上的缺陷。在与母亲相依为命的平静的日子里，突然间出现了以前的父亲，打破了这个安详的日子。本就性格刚强的美里冲动之下打伤了这个自己早已恨之入骨的人，促成了这件命案。而后靖子与工藤约会，也是美里愤怒地表现令靖子深刻反省自己的自私与背叛，最终石神为了她们而自首了，美里再也承受不了，企图自绝于世。所以石神的牺牲其实是给自己的心灵的满足，他不可能牺牲自己换回靖子母女的幸福的。</p> 
<p>《重塑心灵》有讲到人的所作所为其实都是为了自己的好的方向去做的，石神做了他自己认为应该做的，对自己好的事情，只是这件事情要远重要于自己的生命，实在不合常理，所以在外人开来根本无法理解。其实说白了石神是满足了自己的臆想罢了，悲剧的主角其实还是靖子。</p> 
<p><a href="http://www.amazon.cn/%E5%AB%8C%E7%96%91%E4%BA%BAX%E7%9A%84%E7%8C%AE%E8%BA%AB-%E4%B8%9C%E9%87%8E%E5%9C%AD%E5%90%BE/dp/B00A4QLGJY/ref=sr_1_1?ie=UTF8&amp;qid=1408539085&amp;sr=8-1&amp;keywords=%E5%AB%8C%E7%96%91%E4%BA%BAx%E7%9A%84%E7%8C%AE%E8%BA%AB">Kindle 版 z.cn 有售</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #61 &#x4E1C;&#x91CE;&#x572D;&#x543E; &#x2014; &#x300A;&#x89E3;&#x5FE7;&#x6742;&#x8D27;&#x5E97;&#x300B;</title>
        <link>https://justinyan.eth.limo/7219A7DA-3FAD-4E32-99E6-8CE32EDC0529/</link>
        <guid>https://justinyan.eth.limo/7219A7DA-3FAD-4E32-99E6-8CE32EDC0529/</guid>
        <pubDate>Sat, 16 Aug 2014 20:48:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/08/73219-1.jpg" /></p> 
<p>东野圭吾的小说看过很多了，非悬疑推理类的还是第一次看，只是没有了犯罪，没有了追查，但是手法还是推理的手法，埋下无数盲点，在读者面前一环接一环地展开一个完整的故事，还是挺有意思的。</p> 
<p>浪矢杂货店本是乡下一间小杂货店，主人浪矢雄治本来跟小孩子玩，解答着孩子们天真而无厘头的烦恼咨询。尽管小孩的咨询都是胡闹的，但是浪矢杂货店还是很认真地回答了每一个问题，并张贴在门口作为回答。直到有一天，杂货店竟收到了一封严肃的咨询信，于是对这封信的回答也不再张贴公示，而是放在了屋后的牛奶箱里。以这件大事为契机，浪矢杂货店开始帮助解决人们真正的烦恼。原先由于丧偶独居的老人也因为自己能够帮助别人而对生活重拾信心。</p> 
<p>如果故事只是这么简单也是并没有什么意思，有意思的是故事对浪矢杂货店的描述是一层又一层慢慢剥开，而来咨询的几个故事看似独立其实各有牵连，这也是东野所擅长的技巧。最终所有的咨询故事结合成一个跨度达数十年的故事，且不说揭秘的过程是否刺激，仅仅是对待每一个烦恼的解答，已经令我感动。这些故事其实已不再是简单的犯罪和追查，其对生活思考是朴素而深刻的。</p> 
<p>东野近几年的书本已觉无味，此书已算其中精品，令人耳目一新，值得一读。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5E7F;&#x5DDE;&#x6C99;&#x9762;&#x968F;&#x62CD;</title>
        <link>https://justinyan.eth.limo/079CD6ED-56A8-4BA3-A16A-A64259CF7AB9/</link>
        <guid>https://justinyan.eth.limo/079CD6ED-56A8-4BA3-A16A-A64259CF7AB9/</guid>
        <pubDate>Sun, 10 Aug 2014 20:36:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>难得周末好天气，带上相机到沙面拍了一阵。在广州念书的时候常到二沙岛和沙面游荡，当时拿个卡片机也是拍得不亦乐乎。尤其是沙面，数次都在小教堂(沙面堂)遇到婚礼，印象中人山人海的教堂里面多数都是新人所不认识的游客吧，一看到新人进场就拿起手机狂拍，场面滑稽得很。</p> 
<p>虽然我不擅摄影，但是大约摄影的乐趣与技术无关（笑），借着好天气好阳光，这次在沙面倒是好好享受了一把。</p> 
<p><img decoding="async" src="http://photos-e.ak.instagram.com/hphotos-ak-xfp1/891468_554425571346940_1222938512_n.jpg" alt="image" /></p> 
<p>带着相机出发</p> 
<p><img decoding="async" src="http://photos-c.ak.instagram.com/hphotos-ak-xaf1/10601931_338590749639314_1500586440_n.jpg" alt="image" /></p> 
<p><img decoding="async" src="http://photos-h.ak.instagram.com/hphotos-ak-xpa1/10554128_672822446130623_1646290804_n.jpg" alt="image" /></p> 
<p><img decoding="async" src="http://photos-e.ak.instagram.com/hphotos-ak-xaf1/10598181_435202463288004_1133275854_n.jpg" alt="image" /></p> 
<p><img decoding="async" src="http://photos-d.ak.instagram.com/hphotos-ak-xaf1/10413198_682878441787147_103563574_n.jpg" alt="image" /></p> 
<p><img decoding="async" src="http://photos-e.ak.instagram.com/hphotos-ak-xfa1/10608170_1532465636964884_1365470319_n.jpg" alt="image" /></p> 
<p><img decoding="async" src="http://photos-e.ak.instagram.com/hphotos-ak-xfa1/10598642_267278516800908_1283950176_n.jpg" alt="image" /></p> 
<p><img decoding="async" src="http://photos-g.ak.instagram.com/hphotos-ak-xaf1/10569942_613011292145614_415953004_n.jpg" alt="image" /></p> 
<p><img decoding="async" src="http://photos-e.ak.instagram.com/hphotos-ak-xfa1/10608170_1532465636964884_1365470319_n.jpg" alt="image" /></p> 
<p>每次到沙面都有不一样的感觉，相比起深圳，广州这座城市更让我喜欢，她的古旧与文化，隐藏在大都市的浮躁之中，沉下心来总是能看到许多历史，读到许多故事。</p> 
<p><img decoding="async" src="http://photos-h.ak.instagram.com/hphotos-ak-xpa1/10499174_537537589708383_73934192_n.jpg" alt="" /></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #60 &#x539F;&#x7814;&#x54C9; - &#x300A;&#x4E3A;&#x4EC0;&#x4E48;&#x8BBE;&#x8BA1;&#x300B;</title>
        <link>https://justinyan.eth.limo/431554C4-8ADB-437E-8DA6-391FF093928C/</link>
        <guid>https://justinyan.eth.limo/431554C4-8ADB-437E-8DA6-391FF093928C/</guid>
        <pubDate>Wed, 06 Aug 2014 23:17:36 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/08/1-1-1.jpg" /></p> 
<p>日文中译本读起来总是令人觉得流畅而素雅，原研哉关于设计的看法总是遥远而发人深省。</p> 
<p>这本书是原研哉与阿部雅世的对话。看过原研哉的《白》、《再设计》、《设计中的设计》，其在日本享有盛名，而阿部雅世的名字却是第一次见到，关于她的资料也不多，在书中可以看到她是在欧洲工作的日本设计师，在欧洲工作了十几年，也任爱沙尼亚大学教授。</p> 
<p>全书分为东京篇与柏林篇两部分，东京篇为阿部向原研哉提问，而柏林篇则反过来是阿部接受采访。设计这个词已经成为当今世界频繁出现的词，普罗大众都能接触到设计，但是每个人由于教育程度、文化背景等差异，对待设计的态度，关于设计的理解都不尽相同。在本书中，二位大师就设计这个话题展开了各种讨论，内容十分发散，其实我并未看出来很强的内在联系，但是往往只言片语之间能出现一些灵光一闪的启发。</p> 
<p>比如东京篇谈及原研哉早年做的平面设计，他早期美术功底比较差，于是利用空余时间去训练素描。有人把设计师称为"美工"而设计师并不这么认为，"美工"或者说"绘图技巧"仅仅是设计师掌握的工具而已。"将脑海中的某个东西、看到的某些食物在一瞬间就表现出来，这对于设计师来说是非常重要的。"以我愚见，设计师更为重要的在于"设计思想"，即怎样通过设计在事物与人之间建立沟通的桥梁。这些事物可以是实物如碗橱门窗，也可以是虚幻如信息数据。把设计通过视觉的形式展示出来是为了更好地沟通与交流，以此角度来讲，设计师绝不仅是"美工"，"美工"只是设计师的技能之一。</p> 
<p>再比如谈起"简单"一词，原研哉说：所以我常说，没有经过深思熟虑就不要随便说什么"简单"，因为"简单"也不是那么容易就可以做到的。放到互联网产品上面来，就是做减法，大概做过互联网产品的人都知道，减法要远比加法更难。首先你得知道什么是减法，不是随意拎一个功能砍掉就可以算是减法，这只是鲁莽。做减法的时候其实可以反过来想，什么才是最重要的最令你心动的，除此之外都是次要的。然后你得知道为什么要做减法，不是说"我觉得这个不好用"我就把这个功能砍掉了，因为你一个人并不代表普罗大众。</p> 
<p>想起近年来被炒起来的 UED，UCD 一类的说法，正应了本书的讨论。这些"以用户为中心的设计"与"以体验为中心的设计"其实就是在"以商业为中心"的设计。最近锤子自称是"有情怀的产品"，其实真正"有情怀的设计"应该是怎样的呢？以加拿大的多伦多为根据地进行交流设计的设计师布鲁斯毛（Bruce Mau)有一本书叫《庞大的变化》(Massive Change)，里面其实表达了一种很远大的理想。社会普遍认为设计比商业要小，自然&gt;文化&gt;商业&gt;设计，而这位设计师却把设计放在了最高的位置。</p> 
<p>尽管我也不觉得设计有大到这样的地步，但是受够了"设计应该为xxx服务"这种类型的说法，我觉得通过设计能够传达的绝不仅仅只是"体验好""好漂亮"这样表象的感觉。设计应该是能够留存文化的，是能够高于商业之上的。只是我们目前的世界基本上是以经济为中心的，争相要在经济上做大做强，令我感觉以文化为中心的时代还很遥远。这其实也无可厚非，在创业团队看来，能够活下去甚至把产品把公司做大才是最重要的。书中原研哉也表达了对于某些大公司，明明已经足够盈利了，却还是忽略了设计能够传达的更多的信息。因为要对股东负责，为了财报好看才是最重要的。</p> 
<p>这个世界应该有很多地方是不以老板不以股东不以金钱为导向的。历史上很多名人做到精神财富高于金钱财富的时候都是受人尊敬的，大约也是类似的。读书的时候或许无法体验，当身在其中的时候，就明白不亦无喜不以己悲是多么高尚的情怀！</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #59 &#x4E2D;&#x897F;&#x5927;&#x8F85; &#x2014; &#x300A;&#x9A91;&#x51FA;&#x6765;&#x7684;&#x4EBA;&#x751F;&#x7F8E;&#x666F;&#x300B;</title>
        <link>https://justinyan.eth.limo/30C30352-4E0B-448F-8DA1-D317110DC8DC/</link>
        <guid>https://justinyan.eth.limo/30C30352-4E0B-448F-8DA1-D317110DC8DC/</guid>
        <pubDate>Sat, 19 Jul 2014 16:25:33 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/07/81gxJSOJ0mL-1.jpg" /></p> 
<p>单车骑行 11 年，130 个国家，绕地球两圈，wow！</p> 
<p>从小就喜欢骑自行车的中西大辅，上学期间曾经单骑横穿过美国大陆，骑单车环游世界也一直是他的梦想，但是迫于生活压力与父亲的期望，毕业后就一直从事业务员的工作。5 年过去，攒够旅费之后，终于踏上环游世界的旅程。</p> 
<p>与石田裕辅的《不去会死！》一书不同，这本书没有按照时间轴来排布作者旅途中的故事，而是分了几个主题来写，语言还是日本风格，清新简洁，旅途的故事都挺有趣。这本书有点短，内容不多，其实看完前半部分就没什么可看的了，作者环游世界的时间很长，其实应该有很多有趣的故事可以讲的。反而石田裕辅的《不去会死！》给我感觉要有趣的多，也感动得多了。</p> 
<p>但是无论如何，作者的单车环游世界都是令人佩服的，旅途的许多故事也是令人感动，读这本书感觉还不能了解其经历的十分之一，有点可惜。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #58 &#x8FD1;&#x85E4;&#x9EBB;&#x7406;&#x60E0; &#x2014; &#x300A;&#x6026;&#x7136;&#x5FC3;&#x52A8;&#x7684;&#x4EBA;&#x751F;&#x6574;&#x7406;&#x9B54;&#x6CD5;&#x300B;</title>
        <link>https://justinyan.eth.limo/243E0679-CBAD-4EAE-BE0D-8A2A0E151710/</link>
        <guid>https://justinyan.eth.limo/243E0679-CBAD-4EAE-BE0D-8A2A0E151710/</guid>
        <pubDate>Wed, 25 Jun 2014 11:52:40 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/prxddrszlmfsjjhprjtmlh-1.jpg" /></p> 
<p>读完这本书，照着书中所说的去实践已经有两个礼拜了，我的房间再不见以前的杂乱，而变得整洁有序，所有物品放在应该放的地方，于是平时用完东西随手放回原位也就不是什么困难的事情，房间的整洁一直都没被破坏过。</p> 
<p>这本书光是能帮助我做到这点我已经很满足了，但是这本书传达出来的哲学却远高于此，而且帮助我在其他的事情上也能做得更好更从容。</p> 
<p>这本书的核心思想很简单：只留下令自己怦然心动的东西，其他的都丢掉。</p> 
<p>所谓的“整理”其实有两个步骤：</p> 
<ol> 
 <li>丢东西</li> 
 <li>收纳东西</li> 
</ol> 
<p>许多人的房间杂乱无章其实一个最主要的原因就是：堆放了太多其实自己不需要的东西。解决这个问题有一个很有效的办法：只留下令自己怦然心动的东西。比起决定“什么东西该扔掉”，决定“什么东西要留下”其实要简单得多。只有拿在手里，令自己觉得“啊，这东西我一定要”的怦然心动的感觉的，才能留下，其他的统统毫不留情地扔掉。我看完书开始整理的时候就扔掉了很多以前留着的衣服和其实没什么意义的小东西。具体的针对衣服、书籍、文件等等各个种类的物品应该怎么决定取舍，书中有详细的说明。</p> 
<p>一旦把自己不需要的东西扔掉了，其实自己需要的收纳空间就会骤然变成只要原来的 1/3!麻理惠女士是个热爱整理的人，应该说已经是强迫症了，她现在从事的工作就是到别人家里跟人讲课，讲授如何整理，亲自帮忙做一次“节庆的整理”。许多人在经过麻理惠女士的帮助后，不单房子变整洁了，而且人生也因此发生了改变。这里提到的缩减到 1/3 的空间其实就是麻理惠女士见证了无数案例之后发现的。</p> 
<p>这听上去有点像骗人的广告，我刚开始看书的时候也觉得有如电视购物广告一样，但是慢慢地跟着书上的方法开始整理了之后才发现：这真是一种魔法！</p> 
<p>整理其实有两种，一种是日常的整理（随手放回原位），一种是节庆的整理（大扫除）。所以我只要做过一次节庆的大整理，剩下的就是日常的整理了。其实很多人会在考试前之类的紧张时间突然开始收拾起自己的房间，但是考完试后很快房间又会乱掉，我的学生时代也是如此。首先一点是：所谓的收拾并没有真的只留下令自己砰然心动的东西，并且收纳的方式不对，东西没有放到它应该放的地方，导致以后拿出来之后就不想放回去了。</p> 
<p>所以第一个前提非常重要：只留下令自己怦然心动的东西。试想一下自己生活的环境，完全被自己心动的东西包围，每天看到都有美好的心情不是？而且通常数量都不会很大，所以会留下很多的收纳空间，收纳起来很方便。我现在房间里面留下的东西也不多，虽然还是有些东西我违背了这个原则留下了，但是也能够做到“东西放在该放的地方，用完就能随手放回去，完全不觉得随手放回去很累”这一点。于是日常的整理就变成了只是一个简单的动作而已。</p> 
<p>这里有一个秘诀：收纳的时候都采用“直立式收纳”而不是“堆叠式”。比如叠衣服，衣服叠起来之后要立起来像放进书架一样放进抽屉（看完书我买了几个大的单层抽屉收纳柜放进衣柜里）里面。其他的东西也如此。因为堆叠的话虽然能收纳很多东西，但是被压在下面的东西其实基本就没有见天日的时机了，那其实这些东西就是不常用的，不需要的，可以丢掉的，那为什么还要留下来占用空间呢？而如果你把常用的东西叠在下面，那就更糟糕了，由于用完之后很难放回去，你就会随手放在别的地方，一是没有固定地点下次很难找到，二是房间又乱了。</p> 
<p>还有一个秘诀就是：利用起家里的纸盒子，拿来做空间分隔，Apple 的包装盒尤其好用。以前收起了很多数码产品的包装盒，只能占地方又没有什么实用价值，现在都利用起来，iPad 的盒子用来分隔放杯子和茶包的空间，各种手机的盒子用来放出门要带的钥匙、手表、钱包一类，还有很多其他的盒子都可以利用起来，其他利用不到的盒子就都丢掉吧。</p> 
<p>我其实并没有很严格地照着书本去实践，但是房间已经取得很不错的效果了。甚至我在工作上，也会开始起每天的计划：我一天的精力有限，我该做什么其实取决于“这件事情是否令我怦然心动”，如果我每天都能做着令我怦然心动的事情，回到家见到令我怦然心动的物品，那么无疑我的生活是非常幸福的。尽管现实略有点残酷，但是从每天要做的事情里面找出来一点令我怦然心动的事情，还是能给我的生活带来一些喜悦的。</p> 
<p>在丢东西的时候由于要不断地判断这东西是否该留下，久而久之就会变得很果断。之所以会不果断是因为犹豫，犹豫是因为不自信，不自信是因为没有能力，害怕承担失败的后果。而在整理的过程中培养起判断的能力，在日常的工作中，也能很好地通过自己的工作能力和实际情况，去果敢地做出各种决定，这是一件好事。甚至极端一点：你的人生该由你自己来决定。你是想要过上令自己心动的生活呢？还是过着别人眼中的认为的应该要过的生活？要回答这个问题，首先你得知道：什么是令你自己感到心动的生活？（其实我也不知道XD）</p> 
<p>总而言之，《怦然心动的人生整理魔法》确实书如其名。麻理惠女士对待物品的角度也很独特，似乎每一件物品都有它的生命一般。读这本书，不单单给了我一个整洁的房间，也影响了我的心态。于我而言，这确实是一种奇妙的魔法。</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x6BCF;&#x5468;&#x8BFB;&#x4E66;] &#x4E66;&#x5355; &#x56DB;&#x5341;&#x4E5D;&#x2014;&#x2014;&#x4E94;&#x5341;&#x4E03;</title>
        <link>https://justinyan.eth.limo/8013B06A-DDC3-4CE0-A040-5B70CADEDE64/</link>
        <guid>https://justinyan.eth.limo/8013B06A-DDC3-4CE0-A040-5B70CADEDE64/</guid>
        <pubDate>Tue, 24 Jun 2014 13:49:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>这么整理了一下才发现原来这一年多的时间里几乎没怎么看书呀，期间也看过一些但是很多没看完，或者看完了感觉没什么意思，就懒得写下来了。13 年夏天那场恐怖的胃病折磨了我半年，同时也让我开始健身运动了，这大约可算是因祸得福吧，身体健康起来，再加上今年看了日本人骑自行车环游世界的书（《不去会死！》）让我燃起骑车旅行的欲望。单骑走过海南东线之后，再看了孙东纯旅行亚洲、骑行日本的书，不由得感慨万千，一场真正意义上的旅行令我收获太多，也改变了我挺多。</p> 
<p>这一年里，《每周读书》也变得不是每周都有产出，这个从 2010/12/17，我还在大学冰冷的宿舍里备考期末的时候诞生的念头：每周读一本书，每周推荐一本书。到现在两年的时间里，我发现“每周”这个时间是一个不太友好的束缚，“推荐”这个词也不见得对每个读者都受用。于是还叫每周读书，只是不敢再称是第几周了。就我最近几个月的经历来说，我非常喜欢《不去会死！》以及孙东纯的两本《间隔年》，都是平实而真诚的文字，读之仿如涓涓细流，绵远流长，在这些朴素的字里行间，透漏出旅途中的艰辛与感动。跟着作者的文字去旅行，只觉酣畅淋漓，大呼过瘾。</p> 
<ol> 
 <li><strong><a href="http://www.justinyan.me/post/1767">140617 [每周读书] 五十六 孙东纯——《迟到的间隔年》</a></strong></li> 
 <li><strong><a href="http://www.justinyan.me/post/1772">140624 [每周读书] 五十七 孙东纯——《间隔年之后》</a></strong></li> 
 <li><strong><a href="http://www.justinyan.me/post/1734">140406 [每周读书] 第五十三周 石田裕辅 —— 《不去会死！》</a></strong></li> 
 <li><a href="http://www.justinyan.me/post/1560">130416 [每周读书] 第四十九周——李碧华《胭脂扣》</a></li> 
 <li><a href="http://www.justinyan.me/post/1589">130809 [每周读书] 第五十周 东野圭吾——《流星之绊》</a></li> 
 <li><a href="http://www.justinyan.me/post/1698">140124 [每周读书] 第五十一周 东野圭吾《盛夏的方程式》、John Hirst《你一定爱读的极简欧洲史》</a></li> 
 <li><a href="http://www.justinyan.me/post/1727">140402 [每周读书] 第五十二周 李中莹——《重塑心灵》</a></li> 
 <li><a href="http://www.justinyan.me/post/1739">140417 [每周读书] 第五十四周 东野圭吾——《单恋》</a></li> 
 <li><a href="http://www.justinyan.me/post/1762">140613 [每周读书] 五十五 茨威格——《人类群星闪耀时》</a></li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #57 &#x5B59;&#x4E1C;&#x7EAF; &#x2014; &#x300A;&#x95F4;&#x9694;&#x5E74;&#x4E4B;&#x540E;&#x300B;</title>
        <link>https://justinyan.eth.limo/916410DC-57B1-4785-9A55-9C9AF68445B5/</link>
        <guid>https://justinyan.eth.limo/916410DC-57B1-4785-9A55-9C9AF68445B5/</guid>
        <pubDate>Tue, 24 Jun 2014 12:05:57 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/9192dzvEa6L-1.jpg" /></p> 
<p>不久前看完《迟到的间隔年》之后，又在 Kindle 上买了《背包十年》和《停在新西兰刚刚好》，这两本书都令我大失所望，比起孙东纯朴实与真诚的旅行体会，这两本书均傲气十足而言之无物，既没有“攻略”的作用，更没有“游记”的深刻，食之无味，弃之毫不可惜。</p> 
<p>后来在 z.cn 的推荐上看到孙东纯原来还有第二本书《间隔年之后：两个人继续旅行》，这本书读起来依然有前一本书的味道，平淡而真实，纯朴而诚挚。在《迟到的间隔年》中，作者周游亚洲各国，在旅途中学会了“爱”的感悟，而《间隔年之后》，作者骑自行车环游日本，还是如以前一般，受到了许许多多陌生人的恩惠。这场旅行，使得作者得以将间隔年中学到的“爱”的体会实践到新的旅途当中。字里行间无不充满平平淡淡的幸福。这令我想起不久前看过的巴西电影《摩托日记Diarios de motocicleta》，影片中的主角在旅行中感受“爱”，也实践着“爱”。正如孙东纯在间隔年里提到的修女的那句话：</p> 
<blockquote>
 <p> We don't need you, but you need to be here. </p>
</blockquote> 
<p>其实一个人的力量太过于渺小，去做义工根本帮助不了多少人，“仁爱之家”外面的流浪者要远多于里面的病人。但是在这里做义工，在帮助别人的同时感受到“爱”与如何“去爱”，这对于做义工的人而言，将是终生受用不尽的。这也是我们的课堂里所缺乏的，本应该要有的教育。</p> 
<p>比起文章开头所说的两本书，孙东纯的文字没有把自己的旅途拿出来炫耀，他自己本身就比较反感把炫耀旅行。正是这种简简单单的心理造就了作者平实的文字，读之有如涓涓细流，清澈透明。作者在间隔年之后把自己的经历写在了国内的论坛上，后来到了日本，被国内的出版社找到希望把他论坛的帖子整理出书，才有了《迟到的间隔年》这本书。乘着这本书在国内大火的时机，有朋友劝他趁热打铁赶紧把日本的经历也写出来，他也试过但是后来放弃了，理由是：为了写而写，太没意思了。这是我个人非常非常欣赏的一点。真正的令人感动的东西，不是由华丽的文采堆砌出来的有如工厂制造的文字，文字本身只是一件工具，一种信息载体，如何通过文字这个载体把自己的想法传达给读者，这才是最最重要的。通过孙东纯先生的文字，我仿佛跟着作者一同周游了亚洲，骑行了日本，感受了身无分文的苦痛，也体会了认识更多朋友的欣喜。</p> 
<p>看完《迟到的间隔年》，我想要骑车去更多更远的地方，去看一看外面的更为精彩的世界；读罢《间隔年之后》，我明白骑车不过是一种方式，带着“爱”一起的旅途才是真正的精彩。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #56 &#x5B59;&#x4E1C;&#x7EAF; &#x2014; &#x300A;&#x8FDF;&#x5230;&#x7684;&#x95F4;&#x9694;&#x5E74;&#x300B;</title>
        <link>https://justinyan.eth.limo/8046D573-C33A-46E0-9D74-03542E1A57C9/</link>
        <guid>https://justinyan.eth.limo/8046D573-C33A-46E0-9D74-03542E1A57C9/</guid>
        <pubDate>Tue, 17 Jun 2014 15:52:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/71OQlgPObHL-1.jpg" /></p> 
<p>读罢此书，感慨良多，没想到作者竟也是潮州人。此书以平实的语言记录了作者行走东南亚与西藏长达八个月的旅行生活，平淡而精彩，让我思考起“旅行”与“旅游”的区别。</p> 
<p>大约此前我走过的旅程多数都是在“观光旅游”，令人身心疲惫的详尽的计划，提前预定好机票酒店，每天都排满了“著名的景点”，到一个地方便匆匆走过留下相片无数。不能说这种旅行没有给我带来愉悦与美景，但是相比而言，海南独自的骑行更让我觉得这是一场“旅行”而不是“旅游”。</p> 
<p>一向我都算是比较保守的旅行者，还没到一个地方就会把所有行程的酒店都定好，但是这次在海南，我留了一天的酒店没有定，于是也给我了那一天改变行程不去猴岛而是直奔三亚的空间。在寻找酒店的过程中我体会到了“酒店也能讲价”的特色，由于没有安排太多景点，我在博鳌的海滩发呆了几个小时，沿着海滩骑车，坐在海边看落日的余晖。即使是在景点蜈支洲岛上，我也只是坐着发了几个小时呆然后就离开了。这种“慢节奏”的方式令我更加深刻体会到当地的生活，在每次骑累了找到小店休息的间隙跟当地人聊天，在路上遇到骑友交换各自旅途的故事，这些不属于景点的体验让我更加难以忘怀。</p> 
<p>尽管这些事情比起孙东纯在间隔年的际遇，连九牛一毛都算不上，但是有了这几天的经历，我能体会到作者一个人在路上的寂寞与孤独，碰上旅行者的欢笑与感动，还有每天无所事事坐在树下抽烟晒太阳的那种悠闲的放空的状态。我想，不管是骑车也好，背包也罢，无论是提前排满行程抑或随心而至随遇而安，这些都只不过是旅行方式的不同罢了，旅行的心态决定了一趟旅程的收获。</p> 
<p>作者所谓的间隔年（Gap Year）是西方国家比较流行的东西：大学生在毕业后并不急于进入社会工作，而是花上数月甚至一两年的时间周游世界各地，多数都会选择在旅途中做义工。通过这个旅程来重塑三观，适应社会，然后再回到社会当中来。作者在他的间隔年启程的前一天心中仍对自己有着满腹怀疑，我在出发去海南骑行之前也有着类似的想法：对于这次旅行我是否已经准备好了？同样是怀着惴惴不安的心态出发，同样是遇到旅伴的时候欣喜，却又渴望一个人独自旅行的自由，内心矛盾而纠结。我想是六天也好八个月也好，真正的旅行是可以改变一个人的三观的。</p> 
<p>作者在旅行后回归“现实”的时候有点无法融入社会，相信这是多数做过长途旅行的人都遇到过的困扰。其实没有必要困扰，恰恰是因为这种“不适应”，证明了这趟旅行绝不仅仅是一次纯粹的物理移动这么简单。</p> 
<blockquote>
 <p> 如果我回来了，和出去的时候一样，那我的间隔年还有什么意义呢？正是这种格格不入在证明它带给我的感悟和改变，我需要做的不是怀疑他，而是调整自己，将自己的感悟和改变融入到生活里。我想到当初离开广州的时候对自己说的话：我不是为了逃避，是为了更好地面对原来的生活。 </p>
</blockquote> 
<p>我在海南骑行回来之后也有数天时间适应不过来，旅行是一种毒，我想，海南的骑行之旅让我中毒已深。</p> 
<p>此书在 z.cn 有 Kindle 版：<a href="http://www.amazon.cn/%E8%BF%9F%E5%88%B0%E7%9A%84%E9%97%B4%E9%9A%94%E5%B9%B4-%E5%AD%99%E4%B8%9C%E7%BA%AF/dp/B00DGO9LCU/ref=sr_1_1?ie=UTF8&amp;qid=1402991291&amp;sr=8-1&amp;keywords=%E8%BF%9F%E5%88%B0%E7%9A%84%E9%97%B4%E9%9A%94%E5%B9%B4">孙东纯《迟到的间隔年》</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #55 &#x8328;&#x5A01;&#x683C; &#x2014; &#x300A;&#x4EBA;&#x7C7B;&#x7684;&#x7FA4;&#x661F;&#x95EA;&#x8000;&#x65F6;&#x300B;</title>
        <link>https://justinyan.eth.limo/B668CE04-5AD4-4188-B12E-B92F38A47C37/</link>
        <guid>https://justinyan.eth.limo/B668CE04-5AD4-4188-B12E-B92F38A47C37/</guid>
        <pubDate>Fri, 13 Jun 2014 14:15:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/35516266._SX318_.jpg" /></p> 
<p>奥地利小说家茨威格讲述了人类历史上（其实是欧美历史上）一些星光闪耀的时刻，每个时刻都有一颗明星英雄，这个英雄在这个时刻所做的事情，都一定程度上改变了人类历史。这令我想起某狼曾经说过的，本科生的知识范围大概就是人类知识圈的 80%，研究生要求到 100%，而博士生则要求在原有的知识基础上，找到一个突破点，把原有的知识圈打破，人类的进步就是由这些一个个很小的突破点慢慢累积起来的。抛去学位不说，某狼这个比喻还是挺有意思的。</p> 
<p>这本书里有大航海时代里痞子流氓开启的人类新航线，有滑铁卢中规矩呆板的格鲁希元帅决定了拿破仑的陨落，有年过古稀的老诗人歌德恋上花季少女后创作的文学巨作，当然也有中学课本中读到的南极探险队悲壮的故事。这些故事篇幅不长，但是都挺精彩，对于欧美历史并不熟悉的我来说，算是本挺不错的科普读物。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E00;&#x8DEF;&#x9A91;&#x4E0B;&#x53BB;&#xFF0C;&#x76F4;&#x5230;&#x89C1;&#x5230;&#x84DD;&#x8272;&#x7684;&#x5927;&#x6D77;&#xFF08;&#x4E8C;&#xFF09;</title>
        <link>https://justinyan.eth.limo/F2244203-141D-4095-93B8-FF6AC883BD93/</link>
        <guid>https://justinyan.eth.limo/F2244203-141D-4095-93B8-FF6AC883BD93/</guid>
        <pubDate>Sat, 07 Jun 2014 17:49:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>第一篇地址：<a href="http://www.justinyan.me/post/1745">一路骑下去，直到见到蓝色的大海（一）</a></p> 
<h2>第三天 二遇骑友</h2> 
<p><strong>博鳌——万宁兴隆 101公里</strong></p> 
<p>博鳌这个海滨小镇着实让我好好发了一呆，尽管当晚睡不不太踏实，第二天早上 6 点还是带着惺忪睡眼就出发了。</p> 
<p>过了博鳌亚洲论坛（对人造的地方没什么兴趣，就直接路过不理会了），一路都是绿树成荫，骑行起来甚是惬意。等上了 223 国道就状况不佳了，到处在修路，跟在大车后面尘土飞扬，赶紧找个路边小店休息一下避避大车。有的时候小店老板见我骑车会聊上两句，海南话有闽南话的渊源，我这个潮州人也能听懂一二。通常休息的时候小店都会有几个村民在坐着聊天，有的人会讨论我一天能骑多少公里，有的人会直接问我国家给了我多少钱要我来骑车。当然每个人都会问我去哪儿然后在得知我去三亚之后说一句：“现在三亚好热的！”我也只能莞尔：“热也得去呗。”</p> 
<p>话说正跟小店老板聊天，问起有没有其他骑车的人经过，一个骑行者背着包就从我面前飞驰而过。赶紧喝光手中的汽水骑上车追出去，却苦于后拨在飞机托运的时候被压坏了最高速上不去，直追出几公里才赶上我的第二个骑行同伴：海南人科材。</p> 
<p>科材是个胖胖的黑黑的小伙子，海南人都是黑黑的，并且越往三亚越黑，还都黑得相当均匀。科材是万宁人，在海口工作，这次是趁着端午假期，用两天时间骑过万宁家里过节的，于是我们开始了从龙滚镇到万宁市一段艰难的山路陡坡之战。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/hainan008.jpg" alt="image" /></p> 
<p>这段路大约二、三十公里均是山路，上坡下坡上山下山，尽管不是极高的山，但是山坡连绵不绝对体力消耗极大，有些坡翻完还有第二级上坡，我们俩一前一后踩得气喘吁吁，看着并行的高速公路平整的路面，真是恨得牙痒痒的。所幸今天一路有云朵遮荫，否则估计得晒干在半路上。一路到达和乐镇，已近中午 11 点，这十几公里路可不太好骑，两人均已饿得头晕眼花，正好在和乐山脚下吃和乐粽子。</p> 
<p><img decoding="async" src="http://photos-h.ak.instagram.com/hphotos-ak-xpa1/926765_352346698223879_824366314_n.jpg" alt="image" /></p> 
<p>端午节到了，很多万宁市民还专程开车到和乐镇上来买粽子，可知这里的粽子有多出名。粽子 8 块钱一个，比起广东的粽子要大得多，也不知是否饿极的关系，只觉风味极佳，比起广东甜腻细致的粽子，这里的粽子更多几分油香。海南有四大名菜：文昌鸡、加积鸭、东山羊和和乐蟹。在文昌没吃上文昌鸡，在琼海勉强算是吃了加积鸭，现在在和乐，螃蟹没吃上倒是吃了和乐粽子，哈哈。</p> 
<p>一口气吃了两只拳头大的粽子，继续爬坡！直到过了大茂镇路况才渐渐好了起来。到达万宁市区已经中午 12 点多，昨天骑 60+ 公里花了 5 个小时，今天同样是 60+ 公里却花了 6 个小时，这段爬坡路真是挺可怕的。科材是个挺善良的小伙，中午天气太热，还邀请我一起到他的同学家里吹空调乘凉，我当然就恭敬不如从命啦。他的同学也是挺热情的人，于是三人聊天聊得火热。科材还提到昨天遇上一个拉着驼包帐篷睡袋的人，负重 80斤，也是海口到三亚方向，准备环海南岛以后去骑西藏。骑西藏估计是国内所有喜欢骑车的人的圣地了，只要一听到谁去骑过西藏，便会对他肃然起敬。不知不觉聊到下午两点，辞别了二人，我又再次独自出发，往兴隆温泉方向骑行。这段路况不佳，道路坑坑洼洼的，但好在不用再爬坡了。</p> 
<p>在一段山路上，远远看到前面树荫下貌似有骑行者在修车，车后架还放个大驼包。赶紧上前打声招呼，一瞥眼看到他驼包上的帐篷睡袋，冲口而出：“难道你就是传说中的负重 80 斤去西藏的人？”</p> 
<p>那人一阵错愕，点了点头。于是我在一天时间内遇上了两位骑友，这第二位骑友就是辞职要骑去西藏的猛哥。两人结伴到兴隆温泉预定的酒店住下，找了家路边饭店吃饭喝酒聊天。原来猛哥大学时读完一年之后，觉得学校里学不到什么东西，便辍学出去打工。做过餐厅服务员，开过叉车，也做过工厂流水线工人各种各样的工作，辞职前在东莞打工，觉得没什么意思，于是带上全部积蓄，买齐了装备准备从广东上云南、西藏，再到青海环游一圈，以后的事情以后再做打算，真是潇洒。</p> 
<p>不过我倒并不羡慕，每个人都有自己的生活方式罢了。这几天骑行下来，让我觉得在每天早 10 点晚 10 点，除了上班就是睡觉的生活以外，其实还可以有很多别的活法，这个世界可以很丰富很精彩，我们活着是为了享受生活，而不仅仅是挣扎地生存下去。这两天我总回想起高中时在学校走廊写过的半个句子，现在或许可以拼凑完整了：</p> 
<blockquote>
 <p> 当生活已经成为生存的负担<br /> 你步入村道踏出朵朵迟暮的花<br /> 夏天的斜阳还在山肩延烧<br /> 你年轻的背上弯出艰辛的弧度<br /> 沉默如一抹夕照，一撮黄土 </p>
</blockquote> 
<p><img decoding="async" src="http://photos-e.ak.instagram.com/hphotos-ak-xfa1/10412980_1413207482294300_1301484736_n.jpg" alt="image" /></p> 
<h2>第四天 下了楼梯就是海滩</h2> 
<p><strong>万宁——三亚滕海村 100公里</strong></p> 
<p>昨天与科材朋友聊天后决定今天不去南湾猴岛，那里其实并不好玩，而且住宿也难找，于是和猛哥决定一路骑到三亚海棠镇的滕海村，到那里找住宿，第二天再上蜈支洲岛。</p> 
<p>不知不觉到海南已经第四天，双腿也习惯了每天 100 公里左右的骑行，早 6 点起床出发，晚 9 点上床睡觉已是常态。在兴隆吃了早餐喝完兴隆咖啡，兴致满满地出发，却在不久就遇上今天最大的挑战：爬山！</p> 
<p>虽说前一天在进万宁以前已经爬过一两座小山外加无数连续的上下坡，但是对比起今天要爬的山，昨天那些都只能算是小坡了。跟猛哥一起骑行通常我都喜欢骑到前面，但是一遇到大坡我就骑不上去了，眼看着猛哥超过去一路蛇行上坡。我一开始还跟了一段，大概转了两个盘山弯道之后就顶不住了，只能下来推车。推了一段猛哥也顶不住了，这座山可真是厉害，连续发夹弯有如头文字D的漂移赛道一般。昨天听科材的朋友说他以前上学的时候跟朋友骑摩托车经过这座山，真是东边日出西边雨，翻山又淋雨，他骑摩托车都觉得很危险，别说我要骑车上山了，只能一阵苦笑。一路气喘吁吁地推着车，大概爬了十几二十分钟才到达山顶。</p> 
<p><img decoding="async" src="http://photos-g.ak.instagram.com/hphotos-ak-xaf1/10358304_1455428744703326_1677211822_n.jpg" alt="image" /></p> 
<p>哇哇！常听人说最美的风景在路上，真是只有亲眼所见才能信服。我们下坡的时候看到一片辽阔的原野，明媚的阳光打在朵朵白云上面，映出一个个影子在水田，在池塘，在绿色的山坡上。山的那边是陵水黎族自治县，一派人文与自然和谐相处的景象啊！在山路上我们停下来远眺，即使是下坡路我们也不忍放弃如此美景，把车靠在路边好好地品味一番。</p> 
<p><img decoding="async" src="http://photos-d.ak.instagram.com/hphotos-ak-xfp1/10413823_677382082341275_1829910412_n.jpg" alt="image" /></p> 
<p>再次出发已进入陵水地界，少数民族果然保留了完好的传统，到处都在放鞭炮庆祝端午节。路过一个小学，正好放学，小学生们好奇地看着装扮怪异的两个骑行者，还跟我们打招呼加油。看着道路两边的田野，骑行在起伏的山路上，心中倍感愉悦，第四天，我开始感受到骑着单车旅行的魅力。</p> 
<p>中午我们赶到英州镇，大概 60+ 公里。小镇甚是荒凉，主干道上一棵树也没有，烈日之下兜兜转转，最后决定在一家有空调的饭店坐下来吃饭。这真是个错误的决定，午饭难以下咽不说，镇上的村民习惯吃完饭不走，呆着这间可能是镇上唯一一家有空调的饭馆里乘凉，或者就站在门口屋檐下聊天。于是一波又一波的大叔围着我的车在那里抽烟聊天，有的扶着我的驼包有的扶着车把，还有的拎起驼包上的松紧带就把玩不停，再加上饭馆里一桌光头猛汉人手一支啤酒在那里大声吃喝，这餐饭真是吃得我心惊胆战的。吃完赶紧又换了一个有树荫的冷饮店喝水休息去了。</p> 
<p>或许是天热的原因，海南的冷饮店和茶店特别多，三步一家，很多村民中午就呆在冷饮店两块钱买一壶红茶，坐着聊天打牌就是一下午。我呆在树荫下，趁这时间补上了前两天的骑行日志。出来骑行已经四天，还是第一次往日志上写东西，只怪前几天太累，到了酒店都是洗个澡早早睡去。</p> 
<p><img decoding="async" src="http://photos-d.ak.instagram.com/hphotos-ak-xfp1/10354282_694650963915579_595264217_n.jpg" alt="image" /></p> 
<p>午休结束，我们一口气骑到三亚海棠镇。进入三亚地界，这里猛烈的太阳与前面一路过来简直判若两地，在海边看到当地人的皮肤也是一下进入非洲人的水平，简直黑如木炭一般。我们从海棠下了国道本来想沿着海岸线骑车，结果到了海边发现路边已经修起一座座奇形怪状的如“鸟巢”、“维多利亚港”的建筑物，上面大书：“国际购物中心”一类字眼，完全遮蔽了滨海路看海的视线。失望之余我们还得沿着这条没有树荫遮挡的柏油路一直骑行 20 公里，没有地方休息，没有水喝，到海边的时候已经累得不行。在海棠湾广场我第一次跟三亚人买椰子，三亚的物价极黑我早已有所耳闻，心里已经有所准备，所以不冰的椰子开价 8 块我已心里有数。到海南以来天天吃椰子，不冰的 5 块，冰的 6 块是市场价，海岛上热带水果极便宜，5 块钱可以买两个菠萝，10 块钱可以买一个哈密瓜。于是三亚给我的第一个坏印象就是恐怖的热与晒，第二个坏印象就是极黑的物价。</p> 
<p><img decoding="async" src="http://photos-e.ak.instagram.com/hphotos-ak-xfa1/10362172_758574747526772_1763139645_n.jpg" alt="image" /></p> 
<p>但这并不妨碍世界各地的游客往海南三亚来度假，毕竟这里有真正的白色沙滩蓝色大海，亚龙湾里的热带雨林度假区也是风景极美的去处。我们在海边呆了一会儿便出发到蜈支洲岛码头所在的滕海村寻找住宿。前一天晚上我查到有家“梦回天堂”客栈很不错，但是不好找，于是打了个电话给客栈老板。老板果然跟网友评论的一样骑着单车出来接我们，看我们骑着自行车出来，老板还给我们优惠的房价。这里物价很高，老板给的房价已经算特别低的了，这个世界还是好人多啊。</p> 
<p>“梦回天堂”客栈最美的地方在于，出了大堂一下楼梯就是大海！这海其实严格上说是个海湾，但是也足以令人兴奋的了。我们放下行李，换好泳裤就直接下水游泳去了。来海南四天了，这还是我第一次下水游泳。此时已是傍晚 6 点，夕阳已西斜，泡在水中一身舒畅。海湾的水虽不及蜈支洲岛，但是也属于清可见底的了，站在沙滩边上还能看到许多小鱼在水中畅游。</p> 
<p><img decoding="async" src="http://photos-d.ak.instagram.com/hphotos-ak-xfp1/10369557_646760665417707_1335129052_n.jpg" alt="image" /></p> 
<p>今天是端午节，海南人有传统是端午节要下水游泳。许多中学生穿着一样的班服在海里游泳，在沙滩上玩躲避球，还有许多男女老少一家大小在水中欢乐地玩耍。看着阳光下波光粼粼的大海，以及海中人们幸福的笑容，恍惚间我似乎明白为什么有些人到了丽江就不想回家，都是因为大自然的美景啊！像客栈老板一样，在海的边上开一家小店，一下楼梯就是大海，这得是多么令人身心愉悦的事啊！</p> 
<p><img decoding="async" src="http://photos-h.ak.instagram.com/hphotos-ak-xpf1/10401668_1428530900751127_668597912_n.jpg" alt="image" /></p> 
<h2>第五天 中国的马尔代夫</h2> 
<p><strong>蜈支洲岛——三亚市区 48公里</strong></p> 
<p>今天是第一次可以睡到自然醒的日子，因为今天的主要任务就是上蜈支洲岛游玩，晚上骑到市区预定的酒店住下就行了，不过才二、三十公里，对于骑惯一天 100 公里的我们来说已经不算什么。只是可惜的是我已经习惯了早 6 点起床，自然醒也就是睡到 7 点而已。我们 8 点开始收拾行李，把车寄存在酒店，背上背包相机就往岛上跑。</p> 
<p><img decoding="async" src="http://photos-d.ak.instagram.com/hphotos-ak-xap1/10424682_240109649530523_937484241_n.jpg" alt="image" /></p> 
<p>进岛要坐渡轮，其实就是小型游轮，门票含船票 168/人，光船票就 110 了。在船上摇摇晃晃 20 分钟，终于来到中国的马尔代夫——蜈支洲岛。这里不愧是三亚最美的海岛，这里的沙滩这里的水，就是梦中的海的模样。对于只见过潮汕与深圳那些黑色的大海的我来说，这里的海是令人震撼的美。</p> 
<p><img decoding="async" src="http://photos-b.ak.instagram.com/hphotos-ak-xpf1/10358210_1501712570061585_687463750_n.jpg" alt="image" /></p> 
<p>我们沿着环岛的路步行，一路相机咔嚓不停，贪婪地拍下眼前这个天堂也似的地方。很快我就遇到三亚的第三个坏印象了：景点的商业化太重。蜈支洲岛有一条环岛的路，但是不允许行人步行，行人只能走岛的中间的山路，这样我们只能看到岛上三分之一的景点，无法环岛。要环岛只能坐电瓶车，收费 150 块一个人。再一个黑旅客的点在于，上下岛的渡轮是 8:30 - 16:30 才有，也就是说，如果想要在早上 6 点和晚上 6 点这两个太阳舒适的时间在岛上玩耍，你只能选择住在岛上，而岛上的酒店最便宜的也要 1200 块起，沙滩不允许扎帐篷。所以像我这种想到岛上观光但是又不想花钱住岛上的，只能走三分之一的山路，到岛上的顶点观日岩看海，然后沿路返回。岛上的水上娱乐项目挺多，但是费用也是极高的，这是商业化准则了，越是供不应求的地方越要分清消费者等级区别对待，以榨取最高利润。</p> 
<p><img decoding="async" src="http://photos-b.ak.instagram.com/hphotos-ak-xpf1/10358210_1501712570061585_687463750_n.jpg" alt="image" /></p> 
<p>三亚的云少，紫外线异常强烈，正午的太阳晒得我头晕眼花的。找了个凉亭，面朝大海，坐着发呆。对于我这种穷游的旅客，除了在凉亭坐着发呆似乎已没有别的想法。这么猛烈的太阳别说下水游泳，只是在凉亭里面坐着都能感受到阳光的威力。坐在亭子里，又补起了这两天的日志。</p> 
<p><img decoding="async" src="http://photos-b.ak.instagram.com/hphotos-ak-xpf1/10401692_1443762675880033_2126583992_n.jpg" alt="image" /></p> 
<p>蜈支洲岛，让我想起柬埔寨的 Koh Rong Samloem，但是相较之下， Koh Rong Samloem 是个没有开发的地方，没有蜈支洲这么重的商业气息，不由令我起了去柬埔寨骑行的念头。</p> 
<p>在蜈支洲岛发呆到下午两点多，我们离岛往亚龙湾出发了。亚龙湾热带雨林是个非常漂亮的度假区，但是如蜈支洲岛一样，也是商业化极重的地方，到处是酒店和所谓景点，骑进亚龙湾，看了一眼海滩就走了，这样的地方，再好看也令人兴味索然。晚上我回市区预定的酒店，猛哥则继续往西线走，到下一个小镇去寻找住宿。于是惜别了这两天同行的伙伴，相互道了珍重便各奔东西了。</p> 
<p>三亚给我的又一个坏印象：市区是个破旧的，交通极差的地方，尽管有麦当劳肯德基和一切大城市有品牌步行街，但是服务态度极差，我在三亚两天消费的地方只有一家店是态度好的，其他的地方服务员都很不耐烦的样子。</p> 
<h2>第六天 返程</h2> 
<p>鉴于三亚给我留下的印象极差，市区我也不抱有可以闲逛的地方，便在酒店写了一上午明信片，找间 KFC 解决午饭又补了一番日志便骑车到三亚凤凰机场，启程回家了。路上遇到可能三亚给我的唯一的好印象，就是滨海的椰林长廊，绵延 20 公里，公路旁边就是大海，可以随意下水游泳。海水虽不如蜈支洲清澈，但是也算不错的了，想像一下傍晚在海边伴着夕阳戏水，晚上在椰树下借着月色乘凉的情景，倒也甚是惬意。</p> 
<p><img decoding="async" src="http://photos-e.ak.instagram.com/hphotos-ak-xpa1/925268_1618926854999124_2113932512_n.jpg" alt="image" /></p> 
<p>于是六天的海南骑行之旅就这样结束了，回到广州已经两天，时差还有点倒不过来，习惯了早上 6 点起床，现在睡到 8 点就觉得有点睡过了，当然晚上加班也然后犯困。有了这次长途骑行的经验，我想我已经喜欢上自行车旅行了，下一站会是哪里呢？</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E00;&#x8DEF;&#x9A91;&#x4E0B;&#x53BB;&#xFF0C;&#x76F4;&#x5230;&#x89C1;&#x5230;&#x84DD;&#x8272;&#x7684;&#x5927;&#x6D77;&#xFF08;&#x4E00;&#xFF09;</title>
        <link>https://justinyan.eth.limo/EAF62F0B-2626-44BF-BC39-CE0ED8A1E8AE/</link>
        <guid>https://justinyan.eth.limo/EAF62F0B-2626-44BF-BC39-CE0ED8A1E8AE/</guid>
        <pubDate>Fri, 06 Jun 2014 14:48:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/hainan003.jpg" alt="image" /></p> 
<h2>想去海南</h2> 
<p>骑着单车去旅行，我心向往已久，自从看了石田裕辅的《不去会死！》买了人生中第一部正经的山地车之后，对骑行我就欲罢不能。终于两个月后，我踏上了海南骑行之旅。这些天里，有汗水滴落过孤独与无助，也有笑容绽开过感动与愉悦，这个热带岛屿的蓝天白云，阳光海滩，一切一切，已成为我久久不能忘怀的回忆。</p> 
<h2>第一天 孤独与无助同行</h2> 
<p><strong>海口——文昌 90KM</strong></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/hainan002.jpg" alt="image" /></p> 
<p>尽管两个月来已骑过广佛两城各处共 500 多公里路，但是独自一人到异地他乡连着骑上六天，这对我来说还是头一回。于是光准备出发物资，行程计划等等就花了不少时间，再加上出发前广州连着下了一个月的大雨，不由让我对未知的旅行心生忐忑。但是无论如何，盛夏的五月底，我带上车子，出发了。</p> 
<p>上飞机托运是遇到的第一件麻烦事，此前因为想给单车包减重以防托运超重，把修车工具放随身包里结果没能通过安检，好在机场工作人员好心给我免重多办了一次托运，但也因此耗了些时间。凌晨 5 点就起床赶飞机的我，一上飞机就疲累地睡去了。一个小时抵达海口，拿行李准备装车的时候发现后变速有点问题，前轮的刹车也不好调，更麻烦的是之前没有装后轮的经验，一下子手忙脚乱，在机场装车装了快一个小时才装完。</p> 
<p>最后终于满手油污拖着车子出了机场，呵！好厉害的热带阳光。在广州闷了一个月大雨的阴抑心情一下散尽，刚刚在机场装车差点绝望的感觉也抛在脑后，于是戴齐手套、袖套、魔术巾、头盔等装备，塞上耳机，朝着手机定位的方向，前进！</p> 
<p>只有被火辣辣的太阳晒到肌肤生疼，我才确信我已经骑车踏上一座热带岛屿，只有感受到来自海岛剧烈的海风，我才知道我已经开始了第一次长途骑行的旅程。</p> 
<p>而这热带的风好不凶猛，沿着 201 省道王文昌的方向，一路逆风，再加上沉重的驼包和前轮刹车的磨碟，骑出去没多远，疼痛的双腿就开始抗议了。不到三公里我就得停下车来修整前刹，绵长的柏油路穿过丘陵，树木倒是很多，但是并不遮荫。省道上除了我看不到其他骑行者，偶尔一辆汽车从我旁边呼啸而过，扬起一阵尘土，我顶着烈日继续修车，最后不得已只能先拆了前刹，只用一个后刹上路。</p> 
<p>旅途的开头并不顺利，201 省道除了蓝天白云以外基本没什么景色可言，一路上只是与大风和太阳在作斗争，骑个十几公里就得休息一下。从美兰机场到文昌预定的酒店不过 65 公里，我从中午 11 点骑到傍晚 5 点多才到达。放下行李，却被告知清澜港已经没有渡轮去往今天的景点——东郊椰林了，只能走清澜大桥，于是一路问人一路骑，在村道小路之间跌跌撞撞终于上了清澜大桥，骑了一天第一次看到海，咸咸的海风夹着腥味在桥上呼啸，心里却觉得这海看起来跟广州深圳的也没啥不同，不由有点失望。下了桥抬眼一看路牌，离东郊椰林还有 12 KM！糟了！即使不进景点，一来一回 24KM，按照这样逆风的情况起码得一个半小时才能回到酒店。而此时已是下午 6 点多，再过一个小时太阳就要下山了，这条村道看起来是新修的，竟没有路灯。越走心里越是发虚，骑了十几分钟，脚步越来越沉重，最终只能咬咬牙放弃景点往回走。刚刚下桥的时候一路下坡，现在是一路上坡，骑上桥的时候一阵狂风扑来差点骑不动摔倒。一时间，孤独、沮丧、无助从四面八方袭来，透不过气的我鼻头一酸，差点落泪：为什么我要一个人到这里来，一路上明明什么风景都没看到，受尽逆风的折磨，还看不到今天唯一可看的景点？</p> 
<h2>第二天 路遇广州兄弟</h2> 
<p><strong>文昌——博鳌 78公里</strong></p> 
<p>尽管前一天的旅途并不愉快，我还是早早就起床出发了。在路边小店吃早餐，老板娘挺和善的，问我大包小包的往哪儿去。我说我从海口骑过来，要去三亚，老板娘惊讶了一下，“挺辛苦的呀小伙，现在三亚可热了。”。老板娘的微笑是我来海南以来遇到的第一个善良的鼓舞了。一时间心情舒畅很多，饭毕又匆匆出发了。</p> 
<p>昨天的骑行方向正好对着东南季风骑得非常辛苦，今天方向转了一路便轻松了许多。从文昌清谰镇骑上迈号小镇，然后再上 201 省道，应该说，我的海南骑行之旅美好的部分从今天才正式开始。</p> 
<p>夏天在海南骑行必须全副武装，这时一旦速度稍慢就会觉得闷得难受。在去会文镇的路上我正喘着粗气爬坡，迎面遇上了第一支同样骑行的队伍。尽管方向相反，我也还是很兴奋地跟他们竖起大拇指，大声喊一句“加油！”。当对方也对我竖起大拇指喊加油的时候，一阵感动涌来，仿佛电影《单车环岛日记》里面的情节：”哦，原来骑车的时候真的是这样子的。“</p> 
<p>出了会文快到长坡的路上有一小段路就在海边，路过一个路口的时候瞥见一眼海滩的样子，正犹豫要不要过去瞧瞧的时候一句话在我脑中回响起来“骑行只是一种旅行的方式，遇上美景一定要停下来好好看一看，不要因为赶路而错过了美景。”于是我按下刹车，立刻调头直接往海滩边跑。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/hainan001.jpg" alt="image" /></p> 
<p>哦哦哦!这可是我来到海南第一次见到海滩呀！尽管不是梦中白色沙滩蓝色大海的样子，但也是海天一线，白浪层层的景色呀！在出发前做的功课里说这一段路是最美的，于是我一边骑上国道一边留意。可惜一路再没机会靠近海滩，于是我在太阳最猛烈的时候停了下来，随便找了条小路，一路往前冲吧，向着海滩的方向，拍下了这张照片：</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/hainan004.jpg" alt="image" /></p> 
<p>再次出发，勉力骑过一个沙石满满的大坡后，远远看到前面桥底有自行车和人影，我一下兴奋起来，搞不好是跟我同个方向的骑行者呀。于是我就在桥底遇上了来自广州的阿浩和阿 Sam 两兄弟，这还是我出来骑车以来第一次遇到一起同行的伙伴。阿 Sam 是哥哥，有过数年的骑行经验，曾经环过青海湖，挺厉害的，这次跟弟弟到海南来是想拉练一番，后面阿浩就要自己去骑滇藏线了，真令人羡慕。</p> 
<p>于是三人成行，一路飞奔到琼海市区已经中午 12 点多，随便找家路边大排档点了餐开吃。阿浩骑得挺快，我的后变速在飞机上被压歪了，上不了最高速，还差点跟不上。三个人一起吃饭，终于可以吃到丰盛的一餐了。想起昨天在文昌吃不到文昌鸡，只能吃快餐的窘境，不由得一阵感慨。</p> 
<p>饭罢三人休息了一阵，海南的正午太晒根本无法骑车，只能休息到下午两点多再行出发。再骑十几公里，我们到了博鳌小镇。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/hainan005.jpg" alt="image" /></p> 
<p>博鳌的海水尽管不如三亚的清澈，但是也算是难得的海滩了。我到预定的酒店放好行李再回到海滩的时候，广州兄弟正好准备走了，于是第一个同行的伙伴就这样惜别了。广州兄弟只预了三天从海口骑到三亚，每天要骑 150+KM，强度挺大的，很厉害。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/hainan006.jpg" alt="image" /></p> 
<p>博鳌的海滩很长很长，我在海滩上骑行，发呆了几个小时。坐在沙滩上，海风轻抚一如夏天的拥吻，椰林摇曳的尽头有夕阳的温软。海上白浪层层，天空万里无云，海天一线处，晕染出淡紫的光芒，那是另一个世界的声音，在海风中沙沙作响。当小镇的黑色的影子如同垂首的老人向我发出诘问，我远望着大海，没有作声，我只是站在我的身后，以叩问的姿态，去想我的世界与另一个世界，到底有何不同，到底，有何不同？</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2014/06/hainan007.jpg" alt="image" /></p> 
<p>第二篇地址：<a href="http://www.justinyan.me/post/1748">一路骑下去，直到见到蓝色的大海（二）</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #54 &#x4E1C;&#x91CE;&#x572D;&#x543E; &#x2014; &#x300A;&#x5355;&#x604B;&#x300B;</title>
        <link>https://justinyan.eth.limo/B61259D6-F5A7-4CBA-8D04-8BBD87712588/</link>
        <guid>https://justinyan.eth.limo/B61259D6-F5A7-4CBA-8D04-8BBD87712588/</guid>
        <pubDate>Thu, 17 Apr 2014 14:29:36 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/04/53796503._UY2539_SS2539_.jpg-1.png" /></p> 
<p>读这本书之前，曾看过一篇文章，大意上是指女权主义的延伸一类的。性别这个东西，被认为是后天的，以生殖器官作为区分人类依据的做法，只是生物学上的划分罢了。当然还有染色体为 xx 和 xy 的分法也是。这仅仅是分辨出一个人类的个体是属于雄性还是雌性，或者中性。</p> 
<p>但所谓“男人”“女人”的说法，则要复杂得多了。不仅是生物学上的标志，还带上了这个社会对于“男人”、“女人”的先入为主的偏见。这个社会普遍认为“男人”就该阳刚而“女人”就该柔弱之类的太多了。</p> 
<p>尽管随着人类文明的发展，“性取向”不寻常比如同性恋这样的事情已经渐渐为人们所接受，但是人类毕竟是复杂的生物，有关“性别”的烦恼还远不止如此。</p> 
<p>《单恋》这部小说还是以东野最擅长的推理手法来展开故事，不同的只是故事的人物被赋予了“性别认知障碍”这样的特性。所谓“性别认知障碍”，简单点说可以这么理解：就是一个有“男人”身体的人，却拥有一个“女人”的内心，反之亦然。</p> 
<p>这本就是一个很难理清的课题，但是东野却在小说中做了十分有见地的讨论。把男性和女性完全当做黑与白这样分开是不对的，黑白中间还有灰色，即连 Facebook 也会有十几种性别让用户选择。小说中借某种“特殊的店”的老板之口，把人的心灵比作梅比乌斯环。乍一看男人女人是正反两面，但其实是个梅比乌斯环，正面画上去的线是可以走到背面的。一个人的内心没有完全的男性或者完全的女性，人们总是处于这个环上的某个点，只是比较偏向男性或者女性而已。</p> 
<p>偏向男性的心灵，却拥有一副女性的身体，于是会喜欢女人，但这是不同于同性恋的喜欢，而是以“男人”的身份去喜欢。小说中的故事就围绕主人公的一个大学好友展开，这个好友就是这么样一个人，拥有女性身体但是渴望成为男性。事实上追根到底他希望成为男性的根本原因，其实还是想被社会接受。如果这个社会的文明足够进步，能够接受一个人的心灵独立于躯体而存在，不管他身体是男是女，心灵是男是女，都当做是一个人来对待，他也不需要这么辛苦。就好像白人黑人都是人一样。</p> 
<p>这就让我想起美国的黑人解放运动。黑人也是付出了很大的代价才解放出来争取了平等，但是至今种族歧视还是到处都有存在。至于这种“性别”之争恐怕就不晓得何年何月才能真正解放了。</p> 
<p>其实每个人内心都会有异性的一面，而那一面并不是什么值得羞耻、惭愧和掩盖的事情。那其实应该是很正常的事情，是人类多样化的体现。只是我们的社会还是太多成见，而偏生人类又是群居动物，渴望融入社会，为社会所接受，所以才会产生诸多烦恼。</p> 
<p>这不禁让我慨叹起多年前，所谓“性格的转变”的事情。真的融入社会了又如何呢？谁能说那就一定是正确的呢？有得必有失，目前来说我还是比较庆幸自己得到的比失去的要多。</p> 
<p>再说起那些“特殊群体”为什么能掩人耳目地在某些地方聚集交流，其实我认为是绝对可能的。在买自行车之前，尽管大街上到处都是自行车专卖店，但是买完后我还是觉得像发现了一个新的世界一样。原来这个世界还是有很多很有趣的东西等待我们去发掘。在圈子里的人就心知肚明，圈子外的人可能连圈子的存在都一无所知。这是完全可能的。</p> 
<p>于是我又想，这个世界太奇妙，自行车也好，攀岩也好，随便找出来都有很多我们所不知道的事情，等着我们去探索，去体验。比起整天除了工作就是睡觉，我当然更希望能去探索世界，体验生活，享受生活。这才是我们活着的意义啊！</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #53 &#x77F3;&#x7530;&#x88D5;&#x8F85; &#x2014; &#x300A;&#x4E0D;&#x53BB;&#x4F1A;&#x6B7B;&#xFF01;&#x300B;</title>
        <link>https://justinyan.eth.limo/C450B568-E60E-41F6-9870-2AA041AA0358/</link>
        <guid>https://justinyan.eth.limo/C450B568-E60E-41F6-9870-2AA041AA0358/</guid>
        <pubDate>Sun, 06 Apr 2014 12:21:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/04/v2-8c6970104d8173cc1f5314d354b9f28e_720w-1.jpg" /></p> 
<p>在马蜂窝看台湾攻略的时候看到有人推荐这本书，于是找来看了看，没想到刚看了第一节就放不下了。</p> 
<p>作者石田裕辅本是一个在大公司做事的安安分分的小职员，可以跟其他普通人一样领着不算低的工资，一辈子本分做事，娶妻生子过完平凡的一生。但是偏生他一直有一个不切实际的——环游世界。于是某天他终于下定决心，要骑着自行车，环游世界一圈！</p> 
<p>但是当他从机场出发的时候开始，那才是他第一次出国呀。于是从第一站拉斯维加斯的开始，这个旅途就从充满着不顺与荆棘。他的单车从美洲最北边的拉斯维加斯一路到最南端，又从欧洲最北端一路环游欧洲，在伦敦休整了半年之后，又从北非一路南下直到好望角，最后沿着丝绸之路回到日本。全程历时整整 7 年。</p> 
<p>这就是不一样的人生啊！</p> 
<p>一路上可以记载的精彩、刺激、冒险、感动实在太多，这本书本身并不厚，每一节每一个故事的记载也都挺简洁，读之流畅而激昂，读罢有种“还有很多故事没有记录下来”的遗憾。</p> 
<p>漫漫旅途中，作者遇到了很多志同道合的自行车骑士，一起走过几段美洲的历险路程。本来作者想以自行车骑遍世界的想法就已经足够怪异，却还遇到了如一直住在深山里的人，划独木舟漂流一个月的人，一句话就买上一部“中国制造”的超烂单车却一起骑上一千多公里的人……这些奇人异事构成了这段旅途精彩的故事。</p> 
<p>还有在南美洲遇上抢劫差点没命的恐怖事情，在北非遇上土著人差点二度被抢，在黑色非洲碰上疟疾幸亏有好伙伴照顾才不至于丧命，在内蒙古遇上一家人送水才不至支气管炎发作在在风沙中死去等等生死之间的故事。</p> 
<p>至于非洲的贫穷至极却还不肯收裕辅买蘑菇的钱，非要塞给他很多水果的婆婆，欧洲邂逅漂亮的学日语的姑娘，还有很多感动，都是人与人之间淳朴的善意呀。</p> 
<p>作者花费 7 年时间走过的这段旅程，经历的这些故事，都是我们这些身处钢筋水泥城市里的人们所无法体会得到的啊！</p> 
<p>《不去会死！》这本书本身文笔也好，故事描述也好，算不上最上乘的作品，但是其讲述的故事却令人如痴如醉，心潮随之跌宕，是值得一读的好书！</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #52 &#x674E;&#x4E2D;&#x83B9; &#x2014; &#x300A;&#x91CD;&#x5851;&#x5FC3;&#x7075;&#x300B;</title>
        <link>https://justinyan.eth.limo/DDFAF451-2DA6-4E3E-ADC4-313B8D4EE58E/</link>
        <guid>https://justinyan.eth.limo/DDFAF451-2DA6-4E3E-ADC4-313B8D4EE58E/</guid>
        <pubDate>Wed, 02 Apr 2014 14:20:40 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2014/04/1bb196f460bfdb63.jpg" /></p> 
<p>这是一本读起来有点像“成功学”“xx天心理学”之类的书，但境界比这些“机场书”高得太多。这本书让我第一次接触到 NLP，用个不恰当的比喻，就像“xx教你管理时间”之类的鸡汤跟《Getting things done》一样，一个是鸡汤，一个是真正有实践意义的指导。</p> 
<p>NLP，Neuro-linguistic programming 的缩写，译作中文是：</p> 
<blockquote>
 <p> 神經語言程式學（Neuro-Linguistic Programming，簡稱為NLP，又譯作身心語言程序學）美國國家醫學圖書館醫學主題詞編號D020557。[1]是一套原理、信念和技術，其核心為心理學、神經學、語言學與人類感知，安排組織以使之成為系統化模式，並建立主觀現實的人類行為，屬於實用心理學與行動策略的一種。<a href="http://zh.wikipedia.org/wiki/%E7%A5%9E%E7%B6%93%E8%AA%9E%E8%A8%80%E8%A6%8F%E5%8A%83">维基百科</a> </p>
</blockquote> 
<p>有点像心理学但是不是，有点像骗人的鸡汤但是又具有具体可实践的技巧。《重塑心灵》这本书是香港学者李中莹先生所著，以书中的说法，当是目前少见的介绍 NLP 的中文资料了。</p> 
<p>NLP 是门高深的学问，《重塑心灵》以通俗易懂的语言对其历史、原理、技巧以及如何运用到我们的人际关系、工作、人生做了详细的介绍。</p> 
<p>在看这本书的过程中，我不停地以自己的实际情况与书中的内容做对比，一点一点发现自己过去觉得“就是这样”的事情其实也有“原来能这么做的”的情况。发现自己过去常常应付不了的对话其实可以很简单地通过 NLP 的技巧就做得更好。</p> 
<p>一边看着书，一边看到微信群、QQ 群里那些“泡妞高手”跟女生的对话，才发现，噢，以前觉得这些人讲话厉害，其实也是有技巧可寻的，其实只要经过练习，也是能做到别人这样的水平的。</p> 
<p>第一遍看这本书，我通读了一次全书，接下来，我准备挑出自己最感兴趣的一章进行仔细阅读和练习。 NLP 能帮助提升自己的思考，当然需要一定的练习过程。</p> 
<p>简而言之就是，我们的思想基本上分为意识与潜意识，很多人遇到事情不知所措或者遇到美女不知道该说什么，其实就是自己控制不了自己的大脑。有些意识层面的东西我们可以很清晰地去捕捉，但是潜意识的基本上无能为力。 NLP 研究的就是大脑如何运作的原理，利用一些 NLP 的技巧，帮助你与自己的意识甚至潜意识进行沟通，改变自己，从而实现“成功和快乐的人生”。</p> 
<p>我想每个人都有对现状的不满和各种烦恼，NLP 几乎就是一套全能的工具。因为基于 NLP 的思想，世界是你的世界，存在与你的脑中，你的世界与别人的世界是不一样的。而要使自己的现状有所改变，只要改变自己的世界就行了。再由于每个人能改变的都只有自己，只有自己可以改变自己，你最多只能影响别人去改变自己。所以首先要改变自己。</p> 
<p>《重塑心灵》这本书的理论和技巧很多，技巧是工具，是帮助我们入门，去改变自己，掌握这些技巧，不过是在行为和能力层次改变了自己，只有运用到这些技巧，在精神层次改变和提升自己，才能更好地实现“成功而快乐的人生”。</p> 
<p>这么写着确实有“成功学”之嫌，我一边看也一边有这种感觉，但是看了那些技巧之后我愿意试一试，如果这些 NLP 的技巧确实能帮助我更好地去思考，去工作，去改变自己，那么即使它真有一天被贴上“成功学”的标签也无所谓，我需要的是能改变提升自己的效果。其实，这也是 NLP 的思考方式之一，看你要注重的是什么。如果你做的这件事情能是你得到提高，一句被人说是“鸡汤”的代价又如何呢？最怕的就是真的信了“鸡汤”但事实上自己一无所得的。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E2D;&#x5927;&#x968F;&#x62CD;</title>
        <link>https://justinyan.eth.limo/7B3BDCAC-3720-4EF3-B002-629A404616D3/</link>
        <guid>https://justinyan.eth.limo/7B3BDCAC-3720-4EF3-B002-629A404616D3/</guid>
        <pubDate>Mon, 17 Mar 2014 20:46:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>上周末一时有空，拎着相机就往中大瞎拍了一通，天气不好，只能拍些近景了。</p> 
<ul> 
 <li>花</li> 
</ul> 
<p><img decoding="async" src="http://distilleryimage10.ak.instagram.com/89b672eead1711e3976b126630033576_8.jpg" alt="image" /></p> 
<ul> 
 <li>春意</li> 
</ul> 
<p><img decoding="async" src="http://distilleryimage9.ak.instagram.com/47bf258ead1711e3b92612c5b7e56df5_8.jpg" alt="image" /></p> 
<ul> 
 <li>窗</li> 
</ul> 
<p><img decoding="async" src="http://distilleryimage6.ak.instagram.com/0424fd94ad1711e3a5f80e94f3273902_8.jpg" alt="image" /></p> 
<ul> 
 <li>波心荡漾</li> 
</ul> 
<p><img decoding="async" src="http://distilleryimage4.ak.instagram.com/8c5dba1cad1611e3a16712fe907291e4_8.jpg" alt="image" /></p> 
<ul> 
 <li>路灯与红砖</li> 
</ul> 
<p><img decoding="async" src="http://distilleryimage4.ak.instagram.com/c8f7b224ad1711e3aec11210beee93d8_8.jpg" alt="image" /></p> 
<ul> 
 <li>芽</li> 
</ul> 
<p><img decoding="async" src="http://distilleryimage3.ak.instagram.com/59be68a2ad1811e3987c12b997ffc58f_8.jpg" alt="image" /></p> 
<ul> 
 <li>四叶草</li> 
</ul> 
<p><img decoding="async" src="http://distilleryimage5.ak.instagram.com/a9a507a4ad1811e3a30f0ece84f12fdd_8.jpg" alt="image" /></p> 
<ul> 
 <li>Yooo</li> 
</ul> 
<p><img decoding="async" src="http://distilleryimage7.ak.instagram.com/114737acad1811e3b8a312044e6fe713_8.jpg" alt="image" /></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x4F55;&#x7ED9;DMG&#x6587;&#x4EF6;&#x52A0;&#x4E0A;&#x8F6F;&#x4EF6;&#x534F;&#x8BAE;&#x58F0;&#x660E;</title>
        <link>https://justinyan.eth.limo/663F19E5-55C5-46F3-A1F7-A8E9617BD490/</link>
        <guid>https://justinyan.eth.limo/663F19E5-55C5-46F3-A1F7-A8E9617BD490/</guid>
        <pubDate>Tue, 18 Feb 2014 14:26:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>这几天在整 DMG 安装包打开时添加软件协议声明(SLA, Software License Agreement)，这个东西算是个比较古老的东西了。在缺乏文档和相关信息的情况下，往 DMG 文件添加 SLA 还是很折腾人的。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pics/screenshot-2014-02-18-13-24-01.png" alt="image" /></p> 
<p>简单地说大致步骤如下：</p> 
<ol> 
 <li>下载 Apple 的 SLA for UDIFs 文件，提取 SLAResources 为 rsrc 格式。</li> 
 <li>使用 ResEdit 或者 ResKnife 对其进行编辑。</li> 
 <li>在 Terminal 里面用 Rez 命令把编辑好的文件集成到 DMG 文件里面。</li> 
</ol> 
<p>但是这些鬼东西每一步都坑爹。</p> 
<ol> 
 <li>下载 <p>首先 SLA_for_UDIFs_1.0.dmg 文件在 <a href="http://developer.apple.com">developer.apple.com</a> 已经搜索不到，我是在 <a href="http://www.tribler.org">www.tribler.org</a> 上搜到的，附件可以下载。这里附上 Dropbox 下载地址：<a href="https://dl.dropboxusercontent.com/u/6750144/SLAs_for_UDIFs_1.0.dmg">https://dl.dropboxusercontent.com/u/6750144/SLAs_for_UDIFs_1.0.dmg</a></p> </li> 
 <li>提取 rsrc 文件 <p>OK，下载完这个 DMG 文件后挂载之，在终端运行命令行:</p> <pre><code>DeRez SLAResrouces &gt; sla.r
</code></pre> <p>把 DMG 里面的 SLAResources 文件解出来，得到一个 sla.r 文件。如果遇到 DeRez 命令不可用，那你估计没安装 CommandLine Tools，去 Xcode 里面下一个，或者去 Developer.apple.com 也有可以下载的。</p> <p>提取完的 .r 文件可以直接用文本编辑器打开：</p> <pre><code>data 'TMPL' (128, "LPic") {
    $"1344 6566 6175 6C74 204C 616E 6775 6167"            /* .Default Languag */
    $"6520 4944 4457 5244 0543 6F75 6E74 4F43"            /* e IDDWRD.CountOC */
    $"4E54 042A 2A2A 2A4C 5354 430B 7379 7320"            /* NT.****LSTC.sys  */
    $"6C61 6E67 2049 4444 5752 441E 6C6F 6361"            /* lang IDDWRD.loca */
    $"6C20 7265 7320 4944 2028 6F66 6673 6574"            /* l res ID (offset */
    $"2066 726F 6D20 3530 3030 4457 5244 1032"            /*  from 5000DWRD.2 */
    $"2D62 7974 6520 6C61 6E67 7561 6765 3F44"            /* -byte language?D */
    $"5752 4404 2A2A 2A2A 4C53 5445"                      /* WRD.****LSTE */
};
<p>data 'LPic' (5000) {<br /> $"0052 0002 0034 000A 0000 0000 0002 0000" /* ...........4.Â.. */<br /> };</p>
</code><p><code>data 'STR#' (5000, "English buttons") {<br /> $"0006 0D45 6E67 6C69 7368 2074 6573 7431" /* ...English test1 <em>/<br /> $"0541 6772 6565 0844 6973 6167 7265 6505" /</em> .Agree.Disagree. <em>/<br /> $"5072 696E 7407 5361 7665 2E2E 2E7A 4966" /</em> Print.Save...zIf <em>/<br /> $"2079 6F75 2061 6772 6565 2077 6974 6820" /</em> you agree with <em>/<br /> $"7468 6520 7465 726D 7320 6F66 2074 6869" /</em> the terms of thi <em>/<br /> $"7320 6C69 6365 6E73 652C 2063 6C69 636B" /</em> s license, click <em>/<br /> $"2022 4167 7265 6522 2074 6F20 6163 6365" /</em> "Agree" to acce <em>/<br /> $"7373 2074 6865 2073 6F66 7477 6172 652E" /</em> ss the software. <em>/<br /> $"2020 4966 2079 6F75 2064 6F20 6E6F 7420" /</em> If you do not <em>/<br /> $"6167 7265 652C 2070 7265 7373 2022 4469" /</em> agree, press "Di <em>/<br /> $"7361 6772 6565 2E22" /</em> sagree." */<br /> };<br /> </code></p></pre><p></p> <p>发现其实就是一个配置文件， DMG 文件被打开的时候， Mac OS X 会自动去读取这个配置文件，然后自动生成一个 SLA 窗口，但是这个文件全是 hex 值咱看不懂，官方给的那个 SLA_for_UDIFs 那个 dmg 里的文档又写得不明不白。里面提及可以用 ResEdit 来打开，但是，坑爹啊，这玩意 Mac 10.7 以后估计就用不了了，靠。</p> <p>于是乎找另一个替代软件 ResKnife。</p> </li> 
 <li>用 ResKnife 对 SLAResources 文件进行编辑 <p>搜一下出来一堆下载链接，不要管，直接进 ResKnife 的 Github 页面：<a href="https://github.com/slobo/ResKnife">https://github.com/slobo/ResKnife</a></p> <p>直接 clone 一个到本地，然后 XCode Run 一遍，再用它打开那个官方下载的 SLAResources 文件，大概如下：</p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pics/screenshot-2014-02-18-13-42-33.png" alt="image" /></p> <p>这里面 LPic TMPL 是给 Res 编辑器用的，用来解析 LPic 这个类型里面的内容。 直接看 LPic Type, ID 5000 的这条数据。</p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pics/screenshot-2014-02-18-13-49-40.png" alt="image" /></p> <p>Default Lan 是默认选中的语言，Count 是多少种语言可选，下面的就是可选的是什么语言了。这里 sys lang 是定义于 CoreService/CarbonCore/Script.h 里面的枚举值。对应的语言是多少得自己去查。</p> <p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pics/screenshot-2014-02-18-13-49-57.png" alt="image" /></p> <p>而 local res 就是这个 sla.r 文件里面一样的那些 ID, 比如简体中文是 5010，local res 就是 10。剩下那个不用管。修改这条数据我们就改了那个 SLA 窗口里面选择多语言的下拉菜单。</p> </li> 
 <li>接下来是最头疼的地方，添加协议内容。 <p>我们可以看到 English SLA 有两种 Type，一种 TEXT，一种styl，其实是两种不同的数据类型，都是用来填协议内容的文本的，但是格式不同。这时如果我们直接填进英文版本的协议，wow! It works!</p> <p>但是坑爹的来了，如果在 TEXT 和 styl 里面填入中文等会出来就一定是乱码。一开始我以为是 encoding 的问题，但是换了无数种 encode 方式还是没用，坑爹的。而那个官方说明文件里面只是说 styl 数据跟 encoding 有关，但又不说明跟什么有关。 ResKnife 打开 Text 类型的数据还算能看到文本内容，打开 styl 类型的数据就全是 ... 了我擦。最后 google 了半天，总算有相关的文章讲到这个问题了。</p> </li> 
 <li>利用 NSPasteboard 把文本转成 TEXT 和 styl 格式 <p>2010 年 Dan Wood 这篇文章 <a href="http://gigliwood.com/weblog/cocoa/Converting_Rich_Tex.html">http://gigliwood.com/weblog/cocoa/Converting_Rich_Tex.html</a> 谈到怎么自动化把 SLA 集成到 DMG 文件。</p> <p>到 TEXT/styl 数据这里，作者很牛叉地利用 ObjC 代码，读进文本再贴进 Pastboard，然后再写入文件，但是文章中用的把 NSData 输出的方法的那个项目已经没了，于是我找到了另一个项目，<a href="https://github.com/pypt/FreeDMG">FreeDMG on Github</a> ，里面的 rtf2r.m 文件里面有同样的方法，而且可以 dump 进文件里面。</p> <p>大致上我是这样做的：<br /> - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {<br /> // Insert code here to initialize your application</p> <pre><code>    NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"sla" ofType:@"rtf"];
    NSAttributedString *str = [[NSAttributedString alloc] initWithPath:sourcePath documentAttributes:nil];
    NSData *data = [str RTFFromRange:NSMakeRange(0, [str length]) documentAttributes:nil];
<pre><code>NSPasteboard *pb = [NSPasteboard generalPasteboard];
[pb declareTypes:[NSArray arrayWithObject:NSRTFPboardType] owner:nil];
[pb setData:data forType:NSRTFPboardType];

NSData *textData  = [pb dataForType:@"CorePasteboardFlavorType 0x54455854"];   // TEXT
NSData *styleData = [pb dataForType:@"CorePasteboardFlavorType 0x7374796C"];   // styl

int len = [styleData length];
char *bytes = malloc(len);
[styleData getBytes:bytes length:len];

OSStatus status = CoreEndianFlipData (
                                      kCoreEndianResourceManagerDomain, //OSType dataDomain,
                                      'styl', //OSType dataType,
                                      0, //SInt16 id,
                                      bytes, //void *data,
                                      len, //ByteCount dataLen,
</code></pre>
<p>#ifdef <strong>BIG_ENDIAN</strong><br /> true<br /> #else<br /> false //Boolean currentlyNative<br /> #endif<br /> );</p>
<pre><code>NSData *newStyleData = [[NSData alloc] initWithBytesNoCopy:bytes length:len freeWhenDone:YES];

NSString * outPath = @"/Users/justinyan/Downloads/test.txt";
dump_rsrc_file("TEXT", textData, outPath);
dump_rsrc_file("styl", newStyleData, outPath);
</code></pre>
</code><p><code>}<br /> </code></p></pre><p></p> <p>读进一个 RTF 文件，然后把内容转成 TEXT/styl 数据并保存起来。这段代码其实有一个很重要的点，就是</p> <pre><code>CoreEndianFlipData
</code></pre> <p>这个函数，把大端小端交换了一下。如果没有交换大小端，生成的数据是无法 Rez 到 DMG 文件里面的，文章中作者也纳闷为毛 Intel CPU 的 Mac 就不行，于是他在他的旧机器 G5 （真土豪啊）上面跑了一遍发现出来的 styl 数据如下：</p> <pre><code>0060 0000 0000 000F 000C 0400 0100 000C
</code></pre> <p>而这个数据是正确的，可以 Rez 进去的，分别表示 0x0060 style runs, 0x00000000 first offset, 0x000F line height, 0x000C font ascent, 0x0400 font family, 0x0100 char style, 0x000c pixel size.</p> <p>但是 Intel 机器跑出来是这样：</p> <pre><code>6000 0000 0000 0f00 0C00 0004 0001 0C00
</code></pre> <p>于是他猜到可能是大端小端的问题于是交换了一下(要不是有台旧 Mac，我盯着这坨 hex 一年都猜不到)，解决了！</p> <p>完了我再手动去把这段数据给粘贴到用 ResKnife 编辑好，生成的 .r 文件。</p> <pre><code>DeRez SLAResources.rsrc &gt; sla.r
</code></pre> <p>这样用 DeRez 命令就可以生成 .r 文件了。把对应的中文的数据贴进 .r 文件之后，再用 Rez 命令集成到 DMG 文件里面，终于大功告成~！</p> <pre><code>Rez -a sla.r -o your_file.dmg
</code></pre> </li> 
</ol> 
<h2>Refrences</h2> 
<p><a href="https://dl.dropboxusercontent.com/u/6750144/SLAs_for_UDIFs_1.0.dmg">https://dl.dropboxusercontent.com/u/6750144/SLAs_for_UDIFs_1.0.dmg</a></p> 
<p><a href="https://github.com/slobo/ResKnife">https://github.com/slobo/ResKnife</a></p> 
<p><a href="http://gigliwood.com/weblog/cocoa/Converting_Rich_Tex.html">http://gigliwood.com/weblog/cocoa/Converting_Rich_Tex.html</a></p> 
<p><a href="https://github.com/pypt/FreeDMG">FreeDMG on Github</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>2014 &#x7684;&#x8FC7;&#x5E74;</title>
        <link>https://justinyan.eth.limo/B90A0AD8-E53B-41A9-8E8E-32B39284A343/</link>
        <guid>https://justinyan.eth.limo/B90A0AD8-E53B-41A9-8E8E-32B39284A343/</guid>
        <pubDate>Sun, 02 Feb 2014 18:12:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>在慵懒的阳光浸漫的下午，开出灿烂的水仙，炮竹声由远及近，终于在欢笑与镜头下，绽放在夜空燃出烟花朵朵。这是一个并不寒冷的冬天，是 2014 的过年。</p> 
<h2>450 公里</h2> 
<p>从猴年说到马年，终于抓住 2013 的尾巴拔起一个个“一夜城”似的车站，半个月前守在 12306 的网页的我，理所当然地抢不到春节的高铁票，一路闷在臭气盎然的大巴里从省城颠簸到潮州，我的家。</p> 
<p><img decoding="async" src="http://distilleryimage3.ak.instagram.com/6ff00fa28a7e11e3a0fb12e17bb388ef_8.jpg" alt="image" /></p> 
<h2>没有外婆的外婆家</h2> 
<p><img decoding="async" src="http://distilleryimage6.ak.instagram.com/7eb350fe8a7d11e389640e102d0902b2_8.jpg" alt="image" /></p> 
<p>还是习惯说“外婆家”，老妈说，应该说“外公家了”。</p> 
<p>这座 50 年的大房子，村子里的一号门牌。后院的水井倾听过几代人的故事，多年前的龙眼树终于没留到现在，消失掉了，还有外婆的照片上的绿意盎然的背景，有片夕阳落在上面。园拱门上的金漆的字迹，是十多年前外公写下的“安乐”。</p> 
<p>很久以前好多小孩在后院里玩耍，水井旁边小孩不能过去哦。不是太久以前，我们在后院玩耍，水井旁边小孩不能过去哦。现在我们看着小孩在那里玩耍，水井已经盖上盖子，夕阳落去隔壁屋顶的时候，本来是龙眼树繁盛的地方，一个很大的信号塔立着，有些年了。</p> 
<p><img decoding="async" src="http://distilleryimage5.ak.instagram.com/8eec33a08a7d11e3b11312f22a685db9_8.jpg" alt="image" /></p> 
<p>月亮悬在池塘的上空的时候，我们曾在外婆的屋顶放过烟火。南方无雪，那些星点飘零的火光缓缓而优雅地坠落的时候，那些孩童的欢声还萦绕耳畔。</p> 
<p><img decoding="async" src="http://distilleryimage7.ak.instagram.com/de860f228a7c11e3a42a12bd1ba02a9b_8.jpg" alt="image" /></p> 
<p>外婆，外婆。</p> 
<h2>这个过年，有夏天的感觉</h2> 
<p>可惜在广州已看不到这样明晰的蓝天，尽管广州有二沙岛，有沙面，有圣心大教堂，但是在潮州的夏天，仍有我喜欢的感觉，乡村而且台湾。</p> 
<p><img decoding="async" src="http://distilleryimage6.ak.instagram.com/a4f227de8b2411e381a212f39367fa5e_8.jpg" alt="image" /></p> 
<p>今年的气温一解小时候过年湿冷的阴霾，没有满大街湿嗒嗒的绵绵小雨，没有穿再多都会冷的瑟瑟寒风，今年的过年，阳光好得不可思议。</p> 
<p><img decoding="async" src="http://distilleryimage1.ak.instagram.com/271742e68bcd11e3b70d0e419024fb7d_8.jpg" alt="image" /></p> 
<p>于是借着阳光明媚的午后，泡一壶功夫茶，两杯三杯，茶香回味。</p> 
<p><img decoding="async" src="http://distilleryimage7.ak.instagram.com/d03b41848bd111e39b121244bd87b11b_8.jpg" alt="image" /></p> 
<h2>被遗忘的企鹅的礼物</h2> 
<p><img decoding="async" src="http://distilleryimage6.ak.instagram.com/23b527ac8bce11e38c5d12d02d33708a_8.jpg" alt="image" /></p> 
<p>角落里摆了个企鹅十三周年的礼物盒子，阳光木纹鲜花，很快我又要回到 450 公里的路上。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #51 &#x4E1C;&#x91CE;&#x572D;&#x543E;&#x300A;&#x76DB;&#x590F;&#x7684;&#x65B9;&#x7A0B;&#x5F0F;&#x300B;&#x3001;John Hirst&#x300A;&#x4F60;&#x4E00;&#x5B9A;&#x7231;&#x8BFB;&#x7684;&#x6781;&#x7B80;&#x6B27;&#x6D32;&#x53F2;&#x300B;</title>
        <link>https://justinyan.eth.limo/83F0662F-BEE8-4224-BC0C-BC6BACF770D1/</link>
        <guid>https://justinyan.eth.limo/83F0662F-BEE8-4224-BC0C-BC6BACF770D1/</guid>
        <pubDate>Fri, 24 Jan 2014 11:56:41 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2013/08/Wsummer.jpg" /></p> 
<p>上一次写每周读书已经是 13 年 8 月份了，东野圭吾的《流星之绊》，转眼已过去半年了，慨叹时光飞逝什么的虽然老套，却是事实。刚开始工作的时候，说起我写《每周读书》，leader 怀疑地说你能每个礼拜读完一本书？直到今天，由于工作的关系，不仅是每周读书没有每周读完一本书，就是写作、吉他都很少去触碰了。这不是什么好的现象，尤其是 13 年年底，转到广州部门之后，这里的工作时间比以前要再长一些，就更体会到什么叫做“没有时间”了。</p> 
<p>最近看《极简欧洲史》和《世界简史》，以这两本书的相对广袤的时间视角去看，这世上多数人都在过着一样平凡而单调的生活，而且其实不是自己主动去思考的结果，多数都是随波逐流罢了。我自己当然不想随波逐流，但是固有的限制太大，也不过是在这些限制之中努力去寻找差异罢了。</p> 
<p>与其望着似水流年自怨自艾，还不如给点实际行动出来。但是对我而言，最大的阻碍大概便是自制啊。在广州的生活虽然有点日夜颠倒（其实比起去年的广州已经要好上很多，但还是日夜颠倒），但如果我自制得了，那么每天晚上下班回家，洗澡便睡，第二天起来便可以多出些时间来自己做些其他的事情了，还有午休的时间，饭后的休息时间诸如此类。谈何容易。</p> 
<p>罢了，这些牢骚便到此为止吧。这几天看了东野圭吾的《盛夏的方程式》，这部小说是 11 年出版的，中文版是 12 年。东野后期的作品其实真心没什么看头了，《放学后》让我第一次认识东野圭吾，《白夜行》、《幻夜》和《嫌疑人X的献身》都属于巅峰之作，令人大为赞叹，到后来这些年，《红手指》、《毒笑小说》一类作品，实在食之无味了，弃之亦不可惜。</p> 
<p>《盛夏的方程式》其实还是算有些看点的，只是不如巅峰作品一样紧凑扣动人心。</p> 
<p>再看《极简欧洲史》。以前对欧洲的认识是分散的，割裂的，没有一个完整的思路去把所有的事件和碎片串联起来，这部《极简欧洲史》，以简练通俗的文笔，将欧洲史整个梳理了一遍。</p> 
<p>首先该书把欧洲史大致分为古典时期、中世纪和现代，以这个时间轴讲述了欧洲最重要的希腊罗马文化、基督教文化和日尔曼文化这三大元素在欧洲大陆上的冲突和并存。</p> 
<p>之后，在这种大背景下，又讲述了欧洲的君主和民主，语言的发展史，等与中国大相径庭的文化，正是欧洲这种自古君主受制于民的文化，才能自发地产生现代民主。而这样看来民主也不过是一种制度罢了。</p> 
<p>看完这本书，我觉得最大的收获有几点：</p> 
<ol> 
 <li>欧洲的君主受制于民，并不是权力大过天，并不能真正地随心所欲。这是因为欧洲的君主一开始并没有自身的军队，需要依赖贵族，而贵族有了自己的封地之后压根不把君主放在眼里。而且君主受制于国会，想要发动战争就必须先召开议会，议会由几个阶级的人组成，这些人利用议会的时机来要求君主接收新法，君主的权力受到新法的压制愈发削弱。<p></p> </li> 
 <li> <p>在中世纪欧洲的国家实际上并没有非常明显的分界。古希腊时期只要是城邦组成，后来罗马帝国时期实现了欧洲真正意义上的统一，但是罗马灭亡之后，欧洲就长期出于分裂状态，各种满族入侵欧洲大陆，出现了大量的小国，神奇的是这些小国的君主可以随意穿越，英国的国王可以从法国王室里面找个人过来当。这也跟君主本身权力没有太强有关。</p> </li> 
 <li> <p>教皇。教皇本身是掌管教会的。尽管基督教很早就被耶稣创立，但是知道四世纪成为罗马帝国国教之后才慢慢兴盛起来，直到整个欧洲大陆，人人都是基督教徒。教会出现以后，便拥有教会自己管辖的封地及收入，所以教皇实际上统治的是整个欧洲大陆所有的基督教徒，比起一个小国的国王来说，管辖的地域要更加广泛。国王是由教皇来加冕的，但是教皇也是脆弱的，需要国王提供保护。这两大势力长期以来竞争合作，互不相让，但是从来没有真正意义上地分出过胜负。也算是挺神奇的文化现象了。现在的教皇依然拥有自己的封地，梵蒂冈。</p> </li> 
</ol> 
<p>以上是最近读过的两本书，比较推荐《极简欧洲史》，篇幅不长，内容却挺丰富，可以从中一窥欧洲历史。</p>
        ]]></description>
    </item>
    
    <item>
        <title>BYTE_COPY_FWD &#x6E90;&#x7801;&#x89E3;&#x6790;</title>
        <link>https://justinyan.eth.limo/E574C013-DAEC-4393-86BC-5FF0D8DD3865/</link>
        <guid>https://justinyan.eth.limo/E574C013-DAEC-4393-86BC-5FF0D8DD3865/</guid>
        <pubDate>Mon, 13 Jan 2014 22:12:54 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>今天有同事问我之前写的那篇 <a href="http://www.justinyan.me/post/1609">iOS 常见 Crash 及解决方案</a> 里面粘贴的 GLibC 关于 memcpy 的代码怎么理解，然后我囧了一下，当时就是随手一 copy，其实没理解透，于是花了点时间看了一下，学了不少东西，写篇博客记录一下。这里真得感谢一下 @raincai 同学的提醒。之前我粘贴的代码如下：</p> 
<pre><code>#define BYTE_COPY_FWD(dst_bp, src_bp, nbytes)                                      \
do {                                                                              \
    int __d0;                                                                      \
    asm volatile(/* Clear the direction flag, so copying goes forward. */    \
                 "cld\n"                                                      \
                 /* Copy bytes. */                                              \
                 "rep\n"                                                      \
                 "movsb" :                                                      \
                 "=D" (dst_bp), "=S" (src_bp), "=c" (__d0) :                      \
                 "0" (dst_bp), "1" (src_bp), "2" (nbytes) :                      \
                 "memory");                                                      \
} while (0)
</code></pre> 
<p>其实上面这段代码有点问题，整理一下应该是这样：</p> 
<pre><code>#define BYTE_COPY_FWD(dst_bp, src_bp, nbytes)                                      \
do {  
__asm__ __volatile__ (/* Clear the direction flag, so copying goes forward. */    \
                 "cld\n"                                                      \
                 /* Copy bytes. */                                              \
                 "rep\n"                                                      \
                 "movsb" 
                 :"=D" (dst_bp), "=S" (src_bp), "=c" (__d0)                       \
                 :"0" (dst_bp), "1" (src_bp), "2" (nbytes)                      \
                 :"memory");
} while (0)
</code></pre> 
<p>我们一步步来解，看到已经理解的直接跳过就是了。</p> 
<h2>一、关键字</h2> 
<ol> 
 <li>do while 0 <p>linux内核代码很多宏都要加上这个，主要是为了是为了防止被调用的时候，复杂语句有些没被执行到。</p> <p>举个栗子：</p> <pre><code>#define SOMETHING()\
           fun1();\
           fun2();
</code></pre> <p>这个宏是为了能执行到 fun1 和 fun2，但是如果你调用这个宏的时候，加上了条件判断：</p> <pre><code>if (condition == true)
    SOMETHING();
</code></pre> <p>那就悲剧了，预编译的时候，宏定义被代码替换掉，那就是</p> <pre><code>if (condition == true)
    fun1();
fun2();
</code></pre> <p>fun2()就掉到判断的外面去了。所以加上这个是为了保险。</p> </li> 
 <li><strong>asm</strong> <p>这个其实就是用于在 C 语言内嵌汇编的关键字 asm， 有下划线的是个宏，看源码是这样定义的：</p> <pre><code>#ifndef __GNUC__
#define __asm__ asm
#endif
</code></pre> </li> 
 <li> <p><strong>volatile</strong><br /> 跟 asm 类似，带下划线就是个宏，其实就是 volatile 关键字：</p> <pre><code>#define __volatile__ volatile
</code></pre> <p>带上这个关键字就是告诉 GCC 不要做优化，要完全保留我写的指令，不要做任何修改。所以这个关键字是可选的。</p> <p>所以总的来说，在 C 语言里面，内嵌汇编的写法就是</p> <pre><code>__asm__ ("汇编代码段") 
或者
__asm__ __volatile__ (指定操作 ＋ "汇编代码段")
</code></pre> </li> 
</ol> 
<h2>二、汇编代码</h2> 
<ol> 
 <li><strong>cld</strong> <p>复位方向表标记位 DF，即 DF = 0。DF为 0 则源寄存器地址 ESI/EDI (源寄存器/目标寄存器) 递增，1 则递减。</p> </li> 
 <li><strong>rep</strong> <p>表示重复，repeat，当 ECX (计数器) &gt; 0 的时候就一直 rep。</p> </li> 
 <li><strong>movsb</strong> <p>就是搬移字串，汇编搬移字串有 movsb 和 movsw 两种，movsb 就是 moving string byte，就是一次搬一个字节，mvsw就是搬移字了</p> </li> 
 <li><strong>还有几个寄存器关键字</strong> <p>EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP等都是X86汇编语言中CPU上的通用寄存器的名称，是32位的寄存器。如果用C语言来解释，可以把这些寄存器当作变量看待。</p> <p>EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。<br /> EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。<br /> <strong>ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。</strong><br /> EDX 则总是被用来放整数除法产生的余数。<br /> <strong>ESI/EDI 分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.</strong><br /> EBP 是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer).</p> </li> 
 <li><strong>所以上面 =D 代表设置 EDI 目标索引寄存器，=S 是 ESI 源索引寄存器，=c 是 ECX 计数器</strong> <p>OK，接下来是那些冒号，插入C代码中的一个汇编语言代码片断可以分成四部分，以“：”号加以分隔，其一般形式为：</p> <pre><code>指令部：输出部：输入部：损坏部 
</code></pre> </li> 
 <li><strong>指令部就是上面几个指令啦无需多言，我们先看输出部</strong>： <p>=D 这样的语句是对输出部的约束条件：</p> <p>常用约束条件一览</p> <pre><code>m, v, o —— 表示内存单元；
r —— 表示任何寄存器；
q —— 表示寄存器eax、ebx、ecx、edx之一；
i, h  —— 表示直接操作数；
E, F  —— 表示浮点数；
g —— 表示”任意“；
a, b, c, d  —— 分表表示要求使用寄存器eax、ebx、ecx和edx；
S, D  —— 分别表示要求使用寄存器esi和edi；
I —— 表示常数（0到31）。
</code></pre> <p>所以 "=D" (dst_bp), "=S" (src_bp), "=c" (__d0) 就是把 dst_bp 放进 EDI 寄存器， src_bp 放进 ESI 寄存器， __d0 放进 ECX 寄存器。</p> </li> 
 <li><strong>再来看输入部</strong> <p>:"0" (dst_bp), "1" (src_bp), "2" (nbytes) 这里的 0, 1, 2 不属于上面约束条件的字母，而是数字，数字代表跟输出部的第 0/1/2 个约束条件是同一个寄存器，那就很好理解了，就是说 EDI 寄存器里面将会输入 dst_bp, ESI 会输入 src_bp，最后的 ECX 会输入 nbytes 这个变量。</p> </li> 
 <li><strong>最后看损坏部</strong> <p>这里以“memory”为约束条件，表示操作完成后内存中的内容已有改变，如果原来某个寄存器（也许在本次操作中并未用到）的内容来自内存，则现在可能已经不一致。</p> </li> 
 <li> <p><strong>总的来说</strong>就是使用movsb指令来按字节搬运字符串，先设置了 EDI, ESI, ECX 几个寄存器的值, 其中EDI寄存器存放拷贝的目的地址，ESI寄存器存放拷贝的源地址，ECX为需要拷贝的字节数。所以最后汇编执行完之后，EDI中的值会保存到dst_bp中，ESI中的值会保存到src_bp中。</p> </li> 
</ol> 
<h2>其他版本</h2> 
<p>这个函数有几个版本的，上面是汇编版本，下面这个是 C 版本，这个就很好理解了：</p> 
<pre><code>do                                                                            \
    {                                                                         \
      size_t __nbytes = (nbytes);                                             \
      while (__nbytes &gt; 0)                                                    \
        {                                                                     \
          byte __x = ((byte *) src_bp)[0];                                    \
          src_bp += 1;                                                        \
          __nbytes -= 1;                                                      \
          ((byte *) dst_bp)[0] = __x;                                         \
          dst_bp += 1;                                                        \
        }                                                                     \
    } while (0)
</code></pre>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5C71;&#x897F;&#x6E38;&#x8BB0;&#x4E4B;&#x4E09;&#x2014;&#x2014;&#x201C;&#x851A;&#x201D;&#x5B57;&#x4E94;&#x8054;&#x53F7;</title>
        <link>https://justinyan.eth.limo/2F0F21EC-0FB2-4AF8-836D-BCD1E9BFE33B/</link>
        <guid>https://justinyan.eth.limo/2F0F21EC-0FB2-4AF8-836D-BCD1E9BFE33B/</guid>
        <pubDate>Thu, 26 Dec 2013 11:32:11 +0800</pubDate>
        
        
        <description><![CDATA[
            <h2>“蔚”字五联号</h2> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/weitaihou.jpg" alt="image" /></p> 
<p>从日升昌走出来，对面就是和日升昌纠葛一个整个世纪的“蔚泰厚”票号。常谓一山不容二虎，日升昌的除了大掌柜雷履泰之外，二掌柜毛鸿翙也是有才之士。毛鸿翙后来执掌蔚泰厚票号，连“蔚丰厚”、“蔚盛长”、“新泰厚”和“天成享”为“蔚”字五联号，成为当时全国规模最大的票号联盟，后期甚至比日升昌还要昌盛。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/wadang.jpg" alt="image" /></p> 
<p>当时蔚泰厚的老板侯庆来是平遥西南的介休人氏，其父侯兴域在祖业之上苦心经营多年，给侯家积累了大量财富，单在平遥的商号就有协泰蔚、厚长来、新泰永、新泰义、蔚盛长五家。嘉庆十三年左近，侯兴域去世，不久长子泰来、次子恩来相继去世，于是三子侯庆来便主掌了家业。当时日升昌创立票号，极短时间内汇兑生意做得极为红火，侯庆来看着眼红，自恃家财颇丰却苦于没有一个有才干的经理，迟迟未能介入票号行业。要知道当时晋商经营是两权分离，财东只负责投资和选掌柜，实际经营还得是掌柜来做，侯氏正是有钱缺人。而恰恰在这时候，日升昌两个掌柜的一起内斗，便成了侯氏票号起家的及时雨。</p> 
<p>日升昌初创之时雷履泰与毛鸿翙齐心协力，日升昌业务蒸蒸日上，但是时日久了，毛鸿翙不甘位居人下，常有揽权之意。正巧雷履泰身染重病，但仍在大掌柜房休养，于是票号大小事务还是得请大掌柜批示。毛鸿翙便趁机对少东家李箴视进言，让雷履泰回家养病。其时正是道光六年，李大全病故，李箴视年方十六，初掌家业，其为人也是秉性忠厚，朴诚无文，于是便听信毛鸿翙建议，对雷履泰说：“你患病多日，号内不能静养，可且回家休养。”雷履泰不知李箴视心性单纯，还以为话中有话，于是脸上不动声色，却答应着回家去了。</p> 
<p>雷履泰回家后细思气极，于是给各个分号写下书信，意欲撤回分号。次日李箴视来探望雷履泰，看到桌上书信，不由大惊，便问雷履泰道：“这是为何？”雷履泰淡淡的说：“票号是你家的，各分庄则是我安的，我召回来不过吩咐给你，没什么意思。”此时李箴视便是再笨也明白雷履泰的意思了，何况他只是经验尚浅，为人却极有见地。当下解释道：“李某请雷掌柜在家静养，真心是为了你早日康复，别无他意，雷掌柜千万不要误会。”李箴视再三解释，雷履泰只是不听。</p> 
<p>雷履泰一手创办日升昌，从道光三年至当时不过三年，票号业务未稳，李箴视又是初掌家业，如若没了雷履泰的协助，实不知如何是好，于是李箴视双膝一软，当场给雷履泰下跪。雷履泰心性极高，一句“在下可以受不起”，便任他跪去。</p> 
<p>李箴视脾气也是极倔，便道：“雷掌柜不答应，我就不起来。”这一跪就是大半天，直到半夜，雷履泰确信少东家确无异心，便把他扶起来，说：“让我回去，大量不是你的主意，其非毛某乎？”</p> 
<p>雷履泰虽答应不撤分号，却也不即刻回票号办事，只是在家呆着。于是李箴视便让人每天送酒席一桌，白银五十两到雷履泰家里，誓要求得雷履泰回来。这时毛鸿翙看到少东家全心倚仗雷履泰，而自己又与雷履泰不和，自觉此地再无容人之处，于是心灰意冷，主动请辞，离开自己供职多年的西裕成颜料庄，自己参与创办的日升昌。</p> 
<p>离开日升昌的毛鸿翙，只觉怀才不遇，前途迷茫，不知何去何从。便在这时，酝酿票号多时的侯庆来，成为了毛鸿翙的知遇之主。于是“蔚泰厚”便在毛鸿翙的主持下改组为票号，毛鸿翙也以“蔚泰厚”票号为一身抱负施展之地，誓以“蔚泰厚”与雷履泰一决雌雄。</p> 
<p>但是经营票号并不是光有资本和人才就足够的，“蔚泰厚”票号初创之时，虽然业务日渐增长，但与日升昌相比仍差距甚远。而且日升昌的前身西裕成颜料庄本就在全国各地有十多家分号，而侯氏光“蔚泰厚”一家实在难以望其项背。于是侯氏动员旗下数家“蔚丰厚”、“蔚盛长”、“新泰厚”和“天成享”四家绸缎庄，全部改组为票号，毛鸿翙又拉拢日升昌旧日熟人郝名扬、阎永安任票号掌柜，自此侯氏票号渐成规模，五家票号联合被称为“蔚”字五联号。这五个票号每家都在全国各地有数十家分号，合五家之力与日升昌比拼。初时“蔚”字五联号的总资产堪与日升昌持平，后来渐渐地超越了日升昌。</p> 
<p>毛鸿翙和雷履泰自此在各地市场相互争斗，直到任何一方最终故去。“蔚”字五联号与其他山西票号的历史命运类似，都在经历了庚子之变，太平天国之后，最终消失在辛亥革命的战乱之中。所谓“革命”，真的不像教科书说的那样和平。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/zhangbu.jpg" alt="image" /></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5C71;&#x897F;&#x6E38;&#x8BB0;&#x4E4B;&#x4E8C;&#x2014;&#x2014;&#x65E5;&#x5347;&#x660C;</title>
        <link>https://justinyan.eth.limo/5168F9EC-D462-4721-AB5F-A70312B7AFD1/</link>
        <guid>https://justinyan.eth.limo/5168F9EC-D462-4721-AB5F-A70312B7AFD1/</guid>
        <pubDate>Thu, 26 Dec 2013 11:30:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <h2>日升昌</h2> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/yangguang.jpg" alt="image" /></p> 
<p>我们到平遥的时候是秋天，秋天的阳光慵懒如猫，摊在墙上。我们沿着北大街一路往南，很快就走到了东西南北大街交汇的地方。</p> 
<p>这里人头攒动，四条大街的人流汇在一起，老人小孩，游客团体熙熙攘攘，路边的香草肉热腾腾地冒着蒸汽，街上的各种金字招牌在阳光底下晃晃地闪耀着许多不知真假的流传了千年的名字。我们穿过人流，来到一个人气颇旺的院落门前，抬头一看，嗯，来平遥的目的地到了。</p> 
<p>如果说尹吉甫征俨狁是平遥诞生的伊始，那么眼前这座大院——日升昌票号——便是平遥兴衰的见证。自从雷履泰和李大全于道光三年(1823年)创立了日升昌，这家票号就注定了要让平遥在百年之中一跃而成全国的金融中心，又在朝代更迭之中辗转而终究一落千丈。日升昌票号历经道光、咸丰、同治、光绪、宣统五代皇帝和中华民国，鼎盛时期分号遍布汉口、天津、济南、西安、开封、南京等地共四十多处，执全国金融之牛耳。当时各地富商争相仿效日升昌开设票号，而全国五十一家票号就有二十二家在平遥，可以说是日升昌成就了平遥，使其在历史中留下灿烂的一笔。而今再看日升昌旧址，昔日繁华不在，宏伟的院落被熙熙攘攘的游客拥得水泄不通，站在大掌柜房门外，连转个身都困难，真是哭笑不得。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/dazhanggui.jpg" alt="image" /></p> 
<p>大掌柜房看上去颇为窄小，布置也极简单，跟账房满屋算盘天平笔墨纸砚相比，更像是一间供人沉思的静室。好在因此游客大妈们都对这间小房间不太感兴趣，可以在此驻足多看一会。当年创始人雷履泰便是在此冥思苦想，一边探索一边带领着日升昌一步步走向巅峰。雷履泰也不是凭空就能创造出这么一个惊世骇俗的行业出来，日升昌的成功有个先决条件：晋商的兴盛。</p> 
<p>晋商本以经营边防军需物资起家，随后又经营“盐运”，凭着山西南部的盐池，在卖盐的期间积累了大量的财富。后来徽商兴起，逼得晋商把目光从盐运转向对外贸易，在明末通过向后金走私大量军火等物资又重新兴盛起来。到了雷履泰时期已是清朝道光年间，晋商已经遍布天下，雷履泰当时所供职的李大全的“西裕成”颜料庄，除了平遥达薄村本部拥有颇具规模的手工作坊之外，在北京、天津、汉口、重庆等地都有分庄。这就给了雷履泰大展宏图的客观条件：有雄厚的资金，有遍布各地的分庄，有遍布天下的晋商，即广大的市场。</p> 
<p>当时晋商在外，往家里捎钱的时候极为不便，大量钱银必须走镖，镖费贵而且并不安全，于是有人便想到把钱交给西裕成分号，由分号掌柜亲笔写信给总号，最后再到平遥总号取钱。起初还只是朋友亲戚相求，并不收取费用。后来同乡觉得这种办法挺好纷纷来投，甚至愿意支付一定的费用。于是雷履泰觉得这是一个商机，便是借鉴史上汇兑的经验，兼营起汇兑业务，初试之下，盈利颇丰。终于道光三年，雷履泰和李大全共同创设了“日升昌”票号，从颜料庄转而经营汇兑生意。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/tianping.jpg" alt="image" /></p> 
<p>从零开始创设一个票号实属不易，除了雄厚的财力和遍布天下的分号，还要有极好的信誉和极高的人才管理能力。雷履泰在创设“日升昌”之后，业务日渐繁忙，由此推想其他各地的商人托镖局押运银钱一样会有诸多麻烦，于是除了颜料庄原有的分号，又在濟南、西安、開封、成都、重慶、長沙、廈門、廣州、桂林、南昌、蘇州、揚州、上海、鎮江、奉天、南京等地先后设立分号，雷履泰亲自联络晋商，招揽业务，在他的经营下，业务蒸蒸日上，慢慢地不只晋商，外省商人，甚至沿海的米帮，丝帮也通过日升昌进行汇兑，在雷履泰治下，日升昌真正做到“汇通天下”。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/huitongtianxia.jpg" alt="image" /></p> 
<p>道光八年，江苏巡抚陶澍曾上奏曰：</p> 
<blockquote>
 <p> 向来山东、山西、河南、陕西等处每年来苏置货，约可到银数百万两，……自上年秋冬至今，各省商贾系汇票往来，并无现银运到。 </p>
</blockquote> 
<p>日升昌道光三年创建，短短五年时间，已经成为江苏商人资金往来的主要手段，也因为汇票这种虚拟信用货币加大了市场流通性，而导致江苏通货膨胀，物价上涨。由此日升昌业务之兴盛可见一斑。</p> 
<p>日升昌的成功一是靠着李家雄厚的财富，二是在山西占着晋商商路之中心，占尽地利，三是晋商遍布天下，资金流转的需求极强，最后便是日升昌自身信誉保证，最终催使票号的诞生。这些都还是大背景下的客观条件，在运营票号的时候，前无古人之鉴，要从零开始思索票号的发展路线，设计一套稳妥的密文，培养一帮可靠的伙计，都不是容易的事。所以日升昌除了大掌柜雷履泰，还得有二掌柜毛鸿翙以及其他未入史册的大将方才得以支持。而二掌柜这位奇才也有一段精彩的故事，我们回头再详说之。</p> 
<p>且说日升昌兴起之后，山西富商也纷纷效仿，直到咸丰十年，山西票号已经发展到一十七家，光绪中年已遍布全国共四百余家分号。可惜后来太平天国兴起之时，连年战乱导致票号开始衰退，至辛亥革命，山西票号相继倒闭，从此空余大院座座，这一百年间无数个故事被埋进砖缝，在墙上斑斑驳驳，只等着对过往的游人诉说。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5C71;&#x897F;&#x6E38;&#x8BB0;&#x4E4B;&#x4E00;&#x2014;&#x2014;&#x5E73;&#x9065;&#x53E4;&#x57CE;</title>
        <link>https://justinyan.eth.limo/06CE485F-DD4A-49C2-B281-C5F6EBA0CAF9/</link>
        <guid>https://justinyan.eth.limo/06CE485F-DD4A-49C2-B281-C5F6EBA0CAF9/</guid>
        <pubDate>Thu, 26 Dec 2013 11:28:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>山西其实并不是我最想去的地方，古韵盎然的江南水乡，幽僻安逸的世外桃源，黄沙万里的玉门关外，还有咸咸海边的宝岛台湾，都是我顶想去而没去过的地方。这次把山西纳入行程主要还是为了拣一个清净的所在。于是摊开地图，圈点几处，竟一路游上了内蒙。</p> 
<h2>古城平遥</h2> 
<p>山西似乎有道不尽看不完的古代建筑，但这一路上最是令人沉浸其中的，还得是平遥古城。现在回忆起平遥的砖瓦与城楼，虽不及凤凰一般具有异族风情，山水烟雨迷迷蒙蒙，但其一砖一瓦之间，一宅一楼之中，却蕴藏着凤凰所没有的历史的故事。在凤凰，看景色，在平遥，我们听故事。</p> 
<p>故事从诗经开始：</p> 
<blockquote>
 <p> 昔我往矣，黍稷方华。今我来思，雨雪载途。王事多难，不遑启居。岂不怀归？畏此简书。 </p>
</blockquote> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/xizhoubantu.jpg" alt="image" /></p> 
<p>这几句出自《诗经·小雅·出车》，写的是西周末年，西北俨狁犯境，宣王为中兴周室，命大将尹吉甫北伐猃狁之事，当时尹吉甫驻兵于平遥，修西北二面城墙，被平遥人认为是建城的始祖，而这也是平遥在中国历史记载中的第一次出场。说起西周，为人们所熟识的大约便是开国皇帝文王武王，以及末代皇帝——烽火戏诸侯的周幽王。这宣王便是周幽王的父亲。其时周朝疆域在经过成、康二帝的开拓后已经北至肃慎，南到汉水，东到大海，西至渭河，幅员辽阔。但是其后由于西北戎狄逐渐壮大，国家处于常年征战之中，历经四代皇帝，国力耗尽。直至周宣王时整顿朝政，才使国力有所复兴。当时平遥的位置正处犬戎西周边境，乃军事重镇，于是这道战火中修起的城墙，从公元前八二三年，便默默俯视着这座古城两千八百余年的兴衰起伏。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/chengqiang.jpg" alt="image" /></p> 
<p>尹吉甫与平遥的渊源只是传说，除了诗经以外，便是清光绪八年的《平遥县志 ·建置》中的记载：</p> 
<blockquote>
 <p> 旧城狭小，东西二面俱低，周宣王 时，大将尹吉甫北伐猃狁，驻兵于此，筑西北二面。 </p>
</blockquote> 
<p>也已距周朝两千余年。今天再到平遥，除了上东太和门破败的尹庙、人迹罕至的点将台及尹吉甫墓等遗迹之外，再无尹吉甫的音容事迹。平遥在中国历史上曾经太繁华太灿烂，以致筑城的祖先被掩在城东一角，匆匆旅客流连在东西南北大街，在文武城隍之庙，在票号钱庄之中，而忘却了这遥远的历史。</p> 
<p>我们便不曾去寻尹吉甫的古迹，这座城池可看的历史太多，甚至还来不及一一走过便已离此北上。我们从北门开始，走进拱极门的瓮城。拱极二字出自于《旧唐书·礼仪志二》：</p> 
<blockquote>
 <p> 叶台耀以分辉，契编珠而拱极。 </p>
</blockquote> 
<p>拱极即指北极星，平遥的城墙于明洪武三年曾大修过，在旧城墙“九里十八步”的基础上扩建成今日的样子。今天站在城墙上俯瞰这座小城，一座座四合院栉比鳞次，皆为灰色的清水砖墙所砌，望眼过去犹如黄沙万里，天地一线，南北大街之间，市楼倚立之下，男女老少熙熙攘攘，一座丰满生动的古城跃然活于眼底，这是一座仍旧活着的古城。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/quanjing.jpg" alt="image" /></p> 
<p>下了城墙，我们沿着古城北大街南下，随意转入一条小巷以避开汹涌的人流。这里同其他古城景区一样，处处有住宿，家家是客栈，不同的大约是这里的客栈多是四合院土炕房，与凤凰的吊脚楼相比有不同的体验罢了。客栈老板娘是当地人，与其交谈只觉当地人许是悠闲惯了，事情多有爱理不理的意思。这让我想起平遥在文革那场浩劫中能完整保留下来的原因：穷。因为穷，拆不起城墙建不起高楼，平遥便一直维持着原状，到后来改革开放了，有钱可拆了，在有识之士的劝谏下，又保留了古城，申请了文化遗产，从而成为中国今天保存最为完好的古城。但即使在今天，平遥也还算是个贫穷落后的地方，客栈的老板们似乎只要每年旺季的时候捞上一笔就算了，该过悠闲的日子还是悠闲着。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/chuangwai.jpg" alt="image" /></p> 
<p>后来才知道，能住在古城里悠哉悠哉的居民也是有限的。从 1997 年开始，平遥政府为了保护古城，应对日益增多的客流量，开始慢慢迁出古城内的居民，现今古城已外迁近半数人口，只留下 2 万多人。不晓得对迁出的居民来说是幸或不幸，但十几年过去了，平遥的旅游开发似乎都未达到凤凰那般成熟。许是出于保护，许是出于政策，或是本来人们便慵慵懒懒，你来亦好不来也罢，我有我的生活，我住我的古城。</p> 
<p>从客栈出来回到北大街，一路商铺食肆虽然繁华，但其实平遥除了冠云牛肉名声在外，其他店铺基本都不入流。这也是平遥旅游开发程度不高的表现之一。北大街一路食肆，吃的名头无非那几样，多属面食，除了名字可能没听过之外，味道都是普通面食的味道，而且淡而无味。价格虽没到其他旅游景区那样高价，但也不算太便宜了。北大街一路下来，除了豆腐脑算挺有味道，就餐的另一家食肆只能说难以下咽，失望而走。</p> 
<p>循着地图一路走向南大街，地图上看东西大街是一条直线，南北大街却是错了开来。这与平遥本身的设计格局有关，平遥又名“龟城”，南首北尾，上下东西四门即为神龟四足，城南柳根河河岸蜿蜒，城墙亦随之蜿蜒起伏，柳根河主干汾河在平遥境内是略偏南北走向，于是古城垂直与汾河程略偏东西的南北走向，南城门便立在东南角，再立两口石井意为龟眼。南北大街成“S”形为神龟爬行之态，龟头在东南是朝东摆，龟尾瓮城即拱极门的西北角设计为钝角，则意喻龟尾朝西摆。古人以“龟”筑城，是期望城如龟般固若金汤，长治久安。而平遥历经两千多年仍能保存得这么完好，大约也应了这“龟城”之说了。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/gallery/pingyao/guicheng.jpg" alt="image" /></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x4F55;&#x4ECE;&#x4E00;&#x4E2A;&#x7626;&#x5B50;&#x953B;&#x70BC;&#x6210;&#x4E00;&#x4E2A;&#x7ED3;&#x5B9E;&#x7684;&#x7626;&#x5B50;</title>
        <link>https://justinyan.eth.limo/0F03B1AC-9091-44C3-A35F-6F02C61BA299/</link>
        <guid>https://justinyan.eth.limo/0F03B1AC-9091-44C3-A35F-6F02C61BA299/</guid>
        <pubDate>Fri, 29 Nov 2013 17:43:41 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="http://distilleryimage7.ak.instagram.com/6cbff62a582a11e39de7124ef98b77aa_8.jpg" alt="image" /></p> 
<p>上图是现在的我(11 月 28 日)跟 8 月 20 日的对比。原先我是个挺瘦的瘦子，今年 6 月份开始到公司的健身房去尝试增肥锻炼，那时什么都不懂，就是瞎练，举举哑铃做做器械什么的。一个月后算是有点点效果，这时候大病来袭，一场病持续了两个月，我的体重也急剧下降，两个礼拜几乎降了 10 斤。病好了以后决心要把肉练回来，于是一路练到现在。</p> 
<p>有同学问我锻炼的方法，想把身体练健康一点。于是我决定把我的健身的经验写下来。首先一点很重要：<strong>三分练七分吃</strong>。饮食是至关重要的一环。</p> 
<h2>一、饮食</h2> 
<p>无论是像我一样吃什么都长不胖的瘦子还是吃什么都容易胖的人，都需要注意饮食。由于肌肉主要是蛋白质组成的，所以每天要保证足够的蛋白质摄入量，简而言之就是<strong>少吃多餐</strong>。基本上每天的饮食可以这样安排：</p> 
<ol> 
 <li>早餐： <p>大约8点到9点左右。2-4个鸡蛋，吃2个全蛋，可以外加2个蛋白（不要吃太多蛋黄会胆固醇过高，一天两个蛋黄是可以接受的）。我现在只是吃两个全蛋，外加一大杯牛奶，偶尔会加上两片面包。</p> </li> 
 <li>早中餐间甜点： <p>大约10点半到11点左右。可以吃一个面包或者一杯酸奶，小吃即可。</p> </li> 
 <li>午餐： <p>要保证碳水化合物充足摄入，主要是米饭。如果容易胖的人，中午就不要吃太多肉，吃肉的时候最好吃鸡胸肉，去掉皮，因为皮下脂肪多，容易发胖。</p> </li> 
 <li>午后甜点： <p>大约下午4点。我一般吃两个蛋糕，保证5点半去健身的时候有足够的血糖，不然健身的时候血液集中到肌肉上容易头晕无力，导致锻炼时间过短。</p> </li> 
 <li>晚餐： <p>大约6点半到7点。看自己健身的时间，一般要在健身结束后的两个小时内进食。一般我晚餐吃一块鸡扒，一碗米饭，还有其他的肉和蔬菜。</p> </li> 
</ol> 
<p>一般健身训练都安排在下午，所以晚餐至关重要。当你训练的时候肌肉是不会长的，这时候只是刺激肌肉，在休息的两个小时里，机体会寻找蛋白质补充肌肉的劳损，所以这时候必须摄入充足的蛋白质。早餐的牛奶鸡蛋和晚餐的肉就很重要了。</p> 
<p>如果是像我一样怎么吃都不胖的人，那就不用理会那些去掉鸡皮啦，少点碳水化合物之类的禁忌，只要不停地吃就可以了。</p> 
<h2>二、健身</h2> 
<p>健身训练为的是两个目的：<strong>减脂和增肌</strong>。每个人的身体都有肌肉，看不到一是可能肌肉不够发达一是脂肪太多看不出线条，所以要增肌和减脂。但是二者没法同时进行，增肌的时候减不了脂，减脂的时候无法增肌，所以要错开。</p> 
<p><strong>增肌靠力量练习，减脂靠有氧运动。</strong>一般比较健康的人都容易吃胖，容易吃胖的人建议这样安排训练时间：一周练6天，3天力量练习3天有氧运动，间隔一天力量一天有氧，1天休息。</p> 
<p><strong>肌肉分为大肌肉群和小肌肉群，大肌肉群就是胸背腿，小肌肉群就是肱二肱三和肩膀。</strong>大肌肉群需要大强度练习，练习后需要休息3天，小肌肉群可以天天练都没关系。<strong>一般是一天练一个大肌肉群搭配一个小肌肉群，隔天做一次有氧运动。</strong>其中腹肌是特殊的肌肉群，需要每天都练习。因为无论你做什么动作基本都会用到腹肌，所以腹肌是最难疲劳的肌肉，需要天天练才会有效果。</p> 
<p>建议饮食容易发胖的人这样安排时间（如果动作不清楚的 google 一下都有视频可以看）：</p> 
<ul> 
 <li>周一： <p>胸（俯卧撑 + 杠铃卧推） + 肱二头肌（哑铃弯举 + 锤击式哑铃弯举 + 二十一响礼炮） + 腹肌（仰卧起坐 + 腹肌八分钟）</p> </li> 
 <li>周二： <p>有氧运动（跑步机或者疯狂单车30分钟） + 腹肌（仰卧起坐 + 腹肌八分钟）<br /> 周三：背（硬拉 + 背阔肌器械 + 杠铃耸肩） + 肱三头肌（哑铃颈后屈伸 + 哑铃臂后弯举） + 腹肌（仰卧起坐 + 腹肌八分钟）</p> </li> 
 <li>周四： <p>有氧运动（跑步机或者疯狂单车30分钟） + 腹肌八分钟</p> </li> 
 <li>周五： <p>腿（史密斯机深蹲 + 箭步蹲） + 肩（哑铃前平举 + 哑铃侧平举 + 杠铃划船） + 腹肌（仰卧起坐 + 腹肌八分钟）</p> </li> 
</ul> 
<p>以上运动，胸背腿都是每组 15 次，每个动作做 4 组。其他小肌肉群就每组 10 次，一个动作 4 组。腹肌就仰卧起坐 40 次，再做腹肌八分钟。</p> 
<p><strong>如果是像我一样吃不胖的，就可以不需要有氧运动来减脂了，直接去掉有氧运动循环一周就行了。</strong>当然有氧运动可以增强体力，也是不错的运动。</p> 
<p>注意：用到杠铃的运动都是复合运动，一定要在做之前搞清楚动作要点否则锻炼不成反而伤身。比如杠铃卧推，有宽握窄握，一般重量上去了要有人护着否则容易失去平衡砸下来。硬拉和史密斯机深蹲一定要注意动作到位，否则伤膝盖。运动前和做完一组运动之后最好做一下拉伸运动，可以减少肌肉酸痛。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E3A;&#x4EC0;&#x4E48; ObjC &#x7684; protocol &#x90FD;&#x8981;&#x9075;&#x4ECE; NSObject &#x534F;&#x8BAE;&#xFF1F;</title>
        <link>https://justinyan.eth.limo/B10D403D-EB22-4603-ABB7-ABD54C76F473/</link>
        <guid>https://justinyan.eth.limo/B10D403D-EB22-4603-ABB7-ABD54C76F473/</guid>
        <pubDate>Wed, 20 Nov 2013 15:22:57 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>今天在改代码的时候看到定义的 delegate 里面都写了 &lt;NSObject&gt; 在后面：</p> 
<pre><code>@protocol APerfectDelegate &lt;NSObject&gt;
<p>@optional</p>

  <ul> 
   <li>(void)optionalSel;</li> 
  </ul>
<p>@required</p>

  <ul> 
   <li>(void)requriedSel;</li> 
  </ul>
</code><p><code>@end<br /> </code></p></pre>
<p></p> 
<p>由于太久没写 ObjC 了，顺手就给去掉了。回头人告诉我这东西编译时会报 warning。我就觉得奇怪了，其实基本上常用的类都是以 NSObject 为基类的，除非是为了周密考虑，把以 NSProxy 为基类的类给排除掉，否则干嘛非得加个 &lt;NSObject&gt; 协议不可。问了人然后自己也试了一下，发现是在这里 warning:</p> 
<pre><code>// Instance method 'respondsToSelector:' not found
if ( _delegate != nil &amp;&amp; [_delegate respondsToSelector:@selector(optionalSel)] ) {
            [_delegate optionalSel];
}
</code></pre> 
<p>respondsToSelector 这个方法找不到。明白了，遵循 &lt;NSObject&gt; 是为了确保实现了这个方法，这样在调用的时候就可以直接用这个方法检测是否能响应这个 SEL 了。</p> 
<p>其实在 ObjC 1.0 的时候，protocol 的这个 @optional 选项是不存在的，所有的 protocol 方法都是必须实现的。所以不遵循 &lt;NSObject&gt; 也没关系，只要判断指针是否存在然后直接调用就完了。但是 ObjC 2.0 加入了　@optional 特性，于是乎必须使用 
 <nsobject>
   的 respondsToSelector: 方法先做一次判断了。
 </nsobject></p> 
<p><em>references: <a href="http://stackoverflow.com/questions/10049617/must-delegates-conform-to-the-nsobject-protocol">Must Delegates Conform To The NSObject Protocol?</a></em></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x7406;&#x89E3; Objective-C Runtime</title>
        <link>https://justinyan.eth.limo/23169815-53D1-4347-82F3-E8B964560B23/</link>
        <guid>https://justinyan.eth.limo/23169815-53D1-4347-82F3-E8B964560B23/</guid>
        <pubDate>Tue, 12 Nov 2013 13:49:54 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>注：本文是对 Colin Wheeler 的 <a href="http://cocoasamurai.blogspot.com/2010/01/understanding-objective-c-runtime.html">Understanding the Objective-C Runtime</a> 的翻译。</em></p> 
<p>初学 Objective-C(以下简称ObjC) 的人很容易忽略一个 ObjC 特性 —— ObjC Runtime。这是因为这门语言很容易上手，几个小时就能学会怎么使用，所以程序员们往往会把时间都花在了解 Cocoa 框架以及调整自己的程序的表现上。然而 Runtime 应该是每一个 ObjC 都应该要了解的东西，至少要理解编译器会把</p> 
<pre><code>[target doMethodWith:var1];
</code></pre> 
<p>编译成：</p> 
<pre><code>objc_msgSend(target,@selector(doMethodWith:),var1);
</code></pre> 
<p>这样的语句。理解 ObjC Runtime 的工作原理，有助于你更深入地去理解 ObjC 这门语言，理解你的 App 是怎样跑起来的。我想所有的 Mac/iPhone 开发者，无论水平如何，都会从中获益的。</p> 
<h2>ObjC Runtime 是开源的</h2> 
<p>ObjC Runtime 的代码是开源的，可以从这个站点下载： <a href="http://opensource.apple.com/">opensource.apple.com</a>。</p> 
<p>这个是所有开源代码的链接： <a href="http://www.opensource.apple.com/source/">http://www.opensource.apple.com/source/</a></p> 
<p>这个是ObjC rumtime 的源代码: <a href="http://www.opensource.apple.com/source/objc4/">http://www.opensource.apple.com/source/objc4/</a><br /> 4应该代表的是build版本而不是语言版本，现在是ObjC 2.0</p> 
<h2>动态 vs 静态语言</h2> 
<p>ObjC 是一种面向runtime(运行时)的语言，也就是说，它会尽可能地把代码执行的决策从编译和链接的时候，推迟到运行时。这给程序员写代码带来很大的灵活性，比如说你可以把消息转发给你想要的对象，或者随意交换一个方法的实现之类的。这就要求 runtime 能检测一个对象是否能对一个方法进行响应，然后再把这个方法分发到对应的对象去。我们拿 C 来跟 ObjC 对比一下。在 C 语言里面，一切从 main 函数开始，程序员写代码的时候是自上而下地，一个 C 的结构体或者说类吧，是不能把方法调用转发给其他对象的。举个栗子：</p> 
<pre><code>#include &lt; stdio.h &gt;
</code><p><code>int main(int argc, const char **argv[])<br /> {<br /> printf("Hello World!");<br /> return 0;<br /> }<br /> </code></p></pre>
<p></p> 
<p>这段代码被编译器解析，优化后，会变成一堆汇编代码：</p> 
<pre><code>.text
 .align 4,0x90
 .globl _main
_main:
Leh_func_begin1:
 pushq %rbp
Llabel1:
 movq %rsp, %rbp
Llabel2:
 subq $16, %rsp
Llabel3:
 movq %rsi, %rax
 movl %edi, %ecx
 movl %ecx, -8(%rbp)
 movq %rax, -16(%rbp)
 xorb %al, %al
 leaq LC(%rip), %rcx
 movq %rcx, %rdi
 call _printf
 movl $0, -4(%rbp)
 movl -4(%rbp), %eax
 addq $16, %rsp
 popq %rbp
 ret
Leh_func_end1:
 .cstring
LC:
 .asciz "Hello World!"
</code></pre> 
<p>然后，再链接 include 的库，完了生成可执行代码。对比一下 ObjC，当我们初学这门语言的时候教程是这么说滴：用中括号括起来的语句，</p> 
<pre><code>[self doSomethingWithVar:var1];
</code></pre> 
<p>被编译器编译之后会变成：</p> 
<pre><code>objc_msgSend(self,@selector(doSomethingWithVar:),var1);
</code></pre> 
<p>一个 C 方法，传入了三个变量，self指针，要执行的方法 @selector(doSomethingWithVar:) 还有一个参数 var1。但是在这之后就不晓得发生什么了。</p> 
<h2>什么是 Objective-C Runtime?</h2> 
<p>ObjC Runtime 其实是一个 Runtime 库，基本上用 C 和汇编写的，这个库使得 C 语言有了面向对象的能力（脑中浮现当你乔帮主参观了施乐帕克的 SmallTalk 之后嘴角一抹浅笑）。这个库做的事前就是加载类的信息，进行方法的分发和转发之类的。</p> 
<h2>Objective-C Runtime 术语</h2> 
<p>再往下深谈之前咱先介绍几个术语。</p> 
<ul> 
 <li>2 Runtimes <p>目前说来Runtime有两种，一个 Modern Runtime 和一个 Legacy Runtime。Modern Runtime 覆盖了64位的Mac OS X Apps，还有 iOS Apps，Legacy Runtime 是早期用来给32位 Mac OS X Apps 用的，也就是可以不用管就是了。</p> </li> 
 <li>2 Basic types of Methods <p>一种 Instance Method，还有 Class Method。instance method 就是带“-”号的，需要实例化才能用的，如 :</p> <pre><code>-(void)doFoo; 
</code><p><code>[aObj doFoot];<br /> </code></p></pre><p></p> <p>Class Method 就是带“+”号的，类似于静态方法可以直接调用：</p> <pre><code>+(id)alloc;
</code><p><code>[ClassName alloc];<br /> </code></p></pre><p></p> <p>这些方法跟 C 函数一样，就是一组代码，完成一个比较小的任务。</p> <pre><code>-(NSString *)movieTitle
{
    return @"Futurama: Into the Wild Green Yonder";
}
</code></pre> </li> 
 <li>Selector <p>一个 Selector 事实上是一个 C 的结构体，表示的是一个方法。定义是：</p> <pre><code>typedef struct objc_selector  *SEL; 
</code></pre> <p>使用起来就是：</p> <pre><code>SEL aSel = @selector(movieTitle); 
</code></pre> <p>这样可以直接取一个selector，如果是传递消息（类似于C的方法调用）就是：</p> <pre><code>[target getMovieTitleForObject:obj];
</code></pre> <p>在 ObjC 里面，用'[]'括起来的表达式就是一个消息。包括了一个 target，就是要接收消息的对象，一个要被调用的方法还有一些你要传递的参数。类似于 C 函数的调用，但是又有所不同。事实上上面这个语句你仅仅是传递了 ObjC 消息，并不代表它就会一定被执行。target 这个对象会检测是谁发起的这个请求，然后决策是要执行这个方法还是其他方法，或者转发给其他的对象。</p> </li> 
 <li>Class <p>Class 的定义是这样的：</p> <pre><code>typedef struct objc_class *Class;
typedef struct objc_object {
    Class isa;
} *id; 
</code></pre> <p>我们可以看到这里这里有两个结构体，一个类结构体一个对象结构体。所有的 objc_object 对象结构体都有一个 isa 指针，这个 isa 指向它所属的类，在运行时就靠这个指针来检测这个对象是否可以响应一个 selector。完了我们看到最后有一个 id 指针。这个指针其实就只是用来代表一个 ObjC 对象，有点类似于 C++ 的泛型。当你拿到一个 id 指针之后，就可以获取这个对象的类，并且可以检测其是否响应一个 selector。这就是对一个 delegate 常用的调用方式啦。这样说还有点抽象，我们看看 LLVM/Clang 的文档对 Blocks 的定义：</p> <pre><code> struct Block_literal_1 {
    void *isa; // initialized to &amp;_NSConcreteStackBlock or &amp;_NSConcreteGlobalBlock
    int flags;
    int reserved; 
    void (*invoke)(void *, ...);
    struct Block_descriptor_1 {
 unsigned long int reserved; // NULL
     unsigned long int size;  // sizeof(struct Block_literal_1)
 // optional helper functions
     void (*copy_helper)(void *dst, void *src);
     void (*dispose_helper)(void *src); 
    } *descriptor;
    // imported variables
};
</code></pre> <p>可以看到一个 block 是被设计成一个对象的，拥有一个 isa 指针，所以你可以对一个 block 使用 retain, release, copy 这些方法。</p> </li> 
 <li>IMP (Method Implementations) <p>接下来看看啥是IMP。</p> <pre><code>typedef id (*IMP)(id self,SEL _cmd,...); 
</code></pre> <p>一个 IMP 就是一个函数指针，这是由编译器生成的，当你发起一个 ObjC 消息之后，最终它会执行的那个代码，就是由这个函数指针指定的。</p> </li> 
 <li>Objective-C Classes <p>OK，回过头来看看一个 ObjC 的类。举一个栗子：</p> <pre><code>@interface MyClass : NSObject {
//vars
NSInteger counter;
}
//methods
-(void)doFoo;
@end
</code></pre> <p>定义一个类我们可以写成如上代码，而在运行时，一个类就不仅仅是上面看到的这些东西了：</p> <pre><code>#if !__OBJC2__
    Class super_class                                        OBJC2_UNAVAILABLE;
    const char *name                                         OBJC2_UNAVAILABLE;
    long version                                             OBJC2_UNAVAILABLE;
    long info                                                OBJC2_UNAVAILABLE;
    long instance_size                                       OBJC2_UNAVAILABLE;
    struct objc_ivar_list *ivars                             OBJC2_UNAVAILABLE;
    struct objc_method_list **methodLists                    OBJC2_UNAVAILABLE;
    struct objc_cache *cache                                 OBJC2_UNAVAILABLE;
    struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;
#endif 
</code></pre> <p>可以看到运行时一个类还关联了它的父类指针，类名，成员变量，方法，cache 还有附属的 protocol。</p> </li> 
</ul> 
<h2>那么类定义了对象并且自己也是个对象？这是咋整滴？</h2> 
<p>上面我提到过一个 ObjC 类同时也是一个对象，为了处理类和对象的关系，runtime 库创建了一种叫做 <del>标签类</del> 元类（Meta Class）的东西。当你发出一个消息的时候，比方说</p> 
<pre><code>[NSObject alloc];
</code></pre> 
<p>你事实上是把这个消息发给了一个类对象（Class Object），这个类对象必须是一个 Meta Class 的实例，而这个 Meta Class 同时也是一个根 MetaClass 的实例。当你继承了 NSObject 成为其子类的时候，你的类指针就会指向 NSObject 为其父类。但是 Meta Class 不太一样，所有的 Meta Class 都指向根 Meta Class 为其父类。一个 Meta Class 持有所有能响应的方法。所以当 [NSObject alloc] 这条消息发出的时候，objc_msgSend() 这个方法会去 NSObject 它的 Meta Class 里面去查找是否有响应这个 selector 的方法，然后对 NSObject 这个类对象执行方法调用。</p> 
<h2>为啥我们要继承 Apple Classes</h2> 
<p>初学 Cocoa 开发的时候，多数教程都要我们继承一个类比方 NSObject，然后我们就开始 Coding 了。比方说：</p> 
<pre><code>MyObject *object = [[MyObject alloc] init];
</code></pre> 
<p>这个语句用来初始化一个实例，类似于 C++ 的 new 关键字。这个语句首先会执行 MyObject 这个类的 +alloc 方法，Apple 的官方文档是这样说的：</p> 
<blockquote>
 <p> The isa instance variable of the new instance is initialized to a data structure that describes the class; memory for all other instance variables is set to 0.</p> 
 <p> 新建的实例中，isa 成员变量会变初始化成一个数据结构体，用来描述所指向的类。其他的成员变量的内存会被置为0. </p>
</blockquote> 
<p>所以继承 Apple 的类我们不仅是获得了很多很好用的属性，而且也继承了这种内存分配的方法。</p> 
<h2>那么啥是 Class Cache(objc_cache *cache)</h2> 
<p>刚刚我们看到 runtime 里面有一个指针叫 objc_cache *cache，这是用来缓存方法调用的。现在我们知道一个实例对象被传递一个消息的时候，它会根据 isa 指针去查找能够响应这个消息的对象。但是实际上我们在用的时候，只有一部分方法是常用的，很多方法其实很少用或者根本用不到。比如一个object你可能从来都不用copy方法，那我要是每次调用的时候还去遍历一遍所有的方法那就太笨了。于是 cache 就应运而生了，每次你调用过一个方法，之后，这个方法就会被存到这个 cache 列表里面去，下次调用的时候 runtime 会优先去 cache 里面查找，提高了调用的效率。举一个栗子：</p> 
<pre><code>MyObject *obj = [[MyObject alloc] init]; // MyObject 的父类是 NSObject
</code><p><code>@implementation MyObject<br /> -(id)init {<br /> if(self = [super init]){<br /> [self setVarA:@”blah”];<br /> }<br /> return self;<br /> }<br /> @end<br /> </code></p></pre>
<p></p> 
<p>这段代码是这样执行的：</p> 
<ol> 
 <li>[MyObject alloc] 先被执行。但是由于 MyObject 这个类没有 +alloc 这个方法，于是去父类 NSObject 查找。</li> 
 <li>检测 NSObject 是否响应 +alloc 方法，发现响应，于是检测 MyObject 类，根据其所需的内存空间大小开始分配内存空间，然后把 isa 指针指向 MyObject 类。那么 +alloc 就被加进 cache 列表里面了。</li> 
 <li>完了执行 -init 方法，因为 MyObject 响应该方法，直接加入 cache。</li> 
 <li>执行 self = [super init] 语句。这里直接通过 super 关键字调用父类的 init 方法，确保父类初始化成功，然后再执行自己的初始化逻辑。</li> 
</ol> 
<p>OK，这就是一个很简单的初始化过程，在 NSObject 类里面，alloc 和 init　没做什么特别重大的事情，但是，ObjC 特性允许你的 alloc 和 init 返回的值不同，也就是说，你可以在你的 init 函数里面做一些很复杂的初始化操作，但是返回出去一个简单的对象，这就隐藏了类的复杂性。再举个栗子：</p> 
<pre><code>#import &lt; Foundation/Foundation.h&gt;
<p>@interface MyObject : NSObject<br /> {<br /> NSString *aString;<br /> }</p>
<p>@property(retain) NSString *aString;</p>
<p>@end</p>
<p>@implementation MyObject</p>
<p>-(id)init<br /> {<br /> if (self = [super init]) {<br /> [self setAString:nil];<br /> }<br /> return self;<br /> }</p>
<p>@synthesize aString;</p>
<p>@end</p>
<p>int main (int argc, const char * argv[]) {<br /> NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];</p>
<p>id obj1 = [NSMutableArray alloc];<br /> id obj2 = [[NSMutableArray alloc] init];</p>
<p>id obj3 = [NSArray alloc];<br /> id obj4 = [[NSArray alloc] initWithObjects:@"Hello",nil];</p>
<p>NSLog(@"obj1 class is %@",NSStringFromClass([obj1 class]));<br /> NSLog(@"obj2 class is %@",NSStringFromClass([obj2 class]));</p>
<p>NSLog(@"obj3 class is %@",NSStringFromClass([obj3 class]));<br /> NSLog(@"obj4 class is %@",NSStringFromClass([obj4 class]));</p>
<p>id obj5 = [MyObject alloc];<br /> id obj6 = [[MyObject alloc] init];</p>
<p>NSLog(@"obj5 class is %@",NSStringFromClass([obj5 class]));<br /> NSLog(@"obj6 class is %@",NSStringFromClass([obj6 class]));</p>
</code><p><code>[pool drain];<br /> return 0;<br /> }<br /> </code></p></pre>
<p></p> 
<p>如果你是ObjC的初学者，那么你很可能会认为这段代码执的输出会是：</p> 
<pre><code>NSMutableArray
NSMutableArray 
NSArray
NSArray
MyObject
MyObject
</code></pre> 
<p>但事实上是这样的：</p> 
<pre><code>obj1 class is __NSPlaceholderArray
obj2 class is NSCFArray
obj3 class is __NSPlaceholderArray
obj4 class is NSCFArray
obj5 class is MyObject
obj6 class is MyObject
</code></pre> 
<p>这是因为 ObjC 是允许运行 +alloc 返回一个特定的类，而 init 方法又返回一个不同的类的。可以看到 NSMutableArray 是对普通数组的封装，内部实现是复杂的，但是对外隐藏了复杂性。</p> 
<h2>OK说回 objc_msgSend 这个方法</h2> 
<p>这个方法做的事情不少，举个栗子：</p> 
<pre><code>[self printMessageWithString:@"Hello World!"];
</code></pre> 
<p>这句语句被编译成这样：</p> 
<pre><code>objc_msgSend(self,@selector(printMessageWithString:),@"Hello World!");
</code></pre> 
<p>这个方法先去查找 self 这个对象或者其父类是否响应 @selector(printMessageWithString:)，如果从这个类的方法分发表或者 cache 里面找到了，就调用它对应的函数指针。如果找不到，那就会执行一些其他的东西。步骤如下：</p> 
<ol> 
 <li>检测这个 selector 是不是要忽略的。比如 Mac OS X 开发，有了垃圾回收就不理会 retain, release 这些函数了。</li> 
 <li>检测这个 target 是不是 nil 对象。ObjC 的特性是允许对一个 nil 对象执行任何一个方法不会 Crash，因为会被忽略掉。</li> 
 <li>如果上面两个都过了，那就开始查找这个类的 IMP，先从 cache 里面找，完了找得到就跳到对应的函数去执行。</li> 
 <li>如果 cache 找不到就找一下方法分发表。</li> 
 <li>如果还找不到就要开始<strong>消息转发逻辑</strong>了。</li> 
</ol> 
<p>在编译的时候，你定义的方法比如：</p> 
<pre><code>-(int)doComputeWithNum:(int)aNum 
</code></pre> 
<p>会编译成：</p> 
<pre><code>int aClass_doComputeWithNum(aClass *self,SEL _cmd,int aNum) 
</code></pre> 
<p>然后由 runtime 去调用指向你的这个方法的函数指针。那么之前我们说你发起消息其实不是对方法的直接调用，其实 Cocoa 还是提供了可以直接调用的方法的：</p> 
<pre><code>// 首先定义一个 C 语言的函数指针
int (computeNum *)(id,SEL,int);
<p>// 使用 methodForSelector 方法获取对应与该 selector 的杉树指针，跟 objc_msgSend 方法拿到的是一样的<br /> // <strong>methodForSelector 这个方法是 Cocoa 提供的，不是 ObjC runtime 库提供的</strong><br /> computeNum = (int (*)(id,SEL,int))[target methodForSelector:@selector(doComputeWithNum:)];</p>
</code><p><code>// 现在可以直接调用该函数了，跟调用 C 函数是一样的<br /> computeNum(obj,@selector(doComputeWithNum:),aNum);<br /> </code></p></pre>
<p></p> 
<p>如果你需要的话，你可以通过这种方式你来确保这个方法一定会被调用。</p> 
<h2>消息转发机制</h2> 
<p>在 ObjC 这门语言中，发送消息给一个并不响应这个方法的对象，是合法的，应该也是故意这么设计的。换句话说，我可以对任意一个对象传递任意一个消息（看起来有点像对任意一个类调用任意一个方法，当然事实上不是），当然如果最后找不到能调用的方法就会 Crash 掉。</p> 
<p>Apple 设计这种机制的原因之一就是——用来模拟多重继承（ObjC 原生是不支持多重继承的）。或者你希望把你的复杂设计隐藏起来。这种转发机制是 Runtime 非常重要的一个特性，大概的步骤如下：</p> 
<ol> 
 <li>查找该类及其父类的 cahce 和方法分发表，在找不到的情况下执行2。</li> 
 <li>执行 + (BOOL) resolveInstanceMethod:(SEL)aSEL 方法。 <p>这就给了程序员一次机会，可以告诉 runtime 在找不到改方法的情况下执行什么方法。举个栗子，先定义一个函数：</p> <pre><code>void fooMethod(id obj, SEL _cmd)
{
 NSLog(@"Doing Foo");
}
</code></pre> <p>完了重载 resolveInstanceMethod 方法：</p> <pre><code>+(BOOL)resolveInstanceMethod:(SEL)aSEL
{
    if(aSEL == @selector(doFoo:)){
        class_addMethod([self class],aSEL,(IMP)fooMethod,"v@:");
        return YES;
    }
    return [super resolveInstanceMethod];
}
</code></pre> <p>其中 "v@:" 表示返回值和参数，这个符号涉及 Type Encoding，可以参考Apple的文档 <a href="http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100-SW1">ObjC Runtime Guide</a>。</p> </li> 
 <li> <p>接下来 Runtime 会调用 - (id)forwardingTargetForSelector:(SEL)aSelector 方法。<br /> 这就给了程序员第二次机会，如果你没办法在自己的类里面找到替代方法，你就重载这个方法，然后把消息转给其他的Object。</p> <pre><code>- (id)forwardingTargetForSelector:(SEL)aSelector
{
    if(aSelector == @selector(mysteriousMethod:)){
        return alternateObject;
    }
    return [super forwardingTargetForSelector:aSelector];
}
</code></pre> <p>这样你就可以把消息转给别人了。当然这里你不能 return self,不然就死循环了=.=</p> </li> 
 <li>最后，Runtime 会调用 - (void)forwardInvocation:(NSInvocation *)anInvocation 这个方法。NSInvocation 其实就是一条消息的封装。如果你能拿到 NSInvocation，那你就能修改这条消息的 target, selector 和 arguments。举个栗子： <pre><code>-(void)forwardInvocation:(NSInvocation *)invocation
{
    SEL invSEL = invocation.selector;
<pre><code>if([altObject respondsToSelector:invSEL]) {
    [invocation invokeWithTarget:altObject];
} else {
    [self doesNotRecognizeSelector:invSEL];
}
</code></pre>
</code><p><code>}<br /> </code></p></pre><p></p> <p>默认情况下 NSObject 对 forwardInvocation 的实现就是简单地执行 -doesNotRecognizeSelector: 这个方法，所以如果你想真正的在最后关头去转发消息你可以重载这个方法（好折腾-.-）。</p> <p>原文后面介绍了 Non Fragile ivars (Modern Runtime)， Objective-C Associated Objects 和 Hybrid vTable Dispatch。鉴于一是底层的可以不用理会，一是早司空见惯的不用详谈，还有一个是很简单的，就是一个建立在方法分发表里面填入默认常用的 method，所以有兴趣的读者可以自行查阅原文，这里就不详谈鸟。</p> </li> 
</ol> 
<h2>References</h2> 
<p><a href="https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Introduction/Introduction.html">Objective-C Runtime Programming Guide</a></p> 
<p><a href="https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html">Objective-C Runtime Reference</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>iOS &#x5E38;&#x89C1; Crash &#x53CA;&#x89E3;&#x51B3;&#x65B9;&#x6848;</title>
        <link>https://justinyan.eth.limo/DE3B1D32-D0BA-462E-8E5B-5AD6C4DF2C97/</link>
        <guid>https://justinyan.eth.limo/DE3B1D32-D0BA-462E-8E5B-5AD6C4DF2C97/</guid>
        <pubDate>Wed, 23 Oct 2013 17:16:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <h2>一、访问了一个已经被释放的对象</h2> 
<p>在不使用 ARC 的时候，内存要自己管理，这时重复或过早释放都有可能导致 Crash。</p> 
<h3>例子</h3> 
<pre><code>NSObject * aObj = [[NSObject alloc] init];
[aObj release];
</code><p><code>NSLog(@"%@", aObj);<br /> </code></p></pre>
<p></p> 
<h3>原因</h3> 
<p>aObj 这个对象已经被释放，但是指针没有置空，这时访问这个指针指向的内存就会 Crash。</p> 
<h3>解决办法</h3> 
<ul> 
 <li>使用前要判断非空，释放后要置空。正确的释放应该是: <pre><code>[aObj release];
aObj = nil;
</code></pre> <p>由于ObjC的特性，调用 nil 指针的任何方法相当于无作用，所以即使有人在使用这个指针时没有判断至少还不会挂掉。</p> <p>在ObjC里面，一切基于 NSObject　的对象都使用指针来进行调用，所以在无法保证该指针一定有值的情况下，要先判断指针非空再进行调用。</p> <pre><code>if (aObj) {
    //...
}
</code></pre> <p>常见的如判断一个字符串是否为空：</p> <pre><code>if (aString &amp;&amp; aString.length &gt; 0) {//...}
</code></pre> </li> 
 <li>适当使用 autorelease。 <p>有些时候不能知道自己创建的对象什么时候要进行释放，可以使用 autoRelease，但是不鼓励使用。因为 autoRelease 的对象要等到最近的一个 autoReleasePool 销毁的时候才会销毁，如果自己知道什么时候会用完这个对象，当然立即释放效率要更高。<strong>如果一定要用 autoRelease 来创建大量对象或者大数据对象，最好自己显式地创建一个 autoReleasePool，在使用后手动销毁</strong>。以前要自己手动初始化 autoReleasePool，现在可以用以下写法：</p> <pre><code>@autoreleasepool{
    for (int i = 0; i &lt; 100; ++i) {
        NSObject * aObj = [[[NSObject alloc] init] autorelease];
        //....
    }
}
</code></pre> </li> 
</ul> 
<h2>二、访问数组类对象越界或插入了空对象</h2> 
<p>NSMutableArray/NSMutableDictionary/NSMutableSet 等类下标越界，或者 insert 了一个 nil 对象。</p> 
<h3>原因</h3> 
<p>一个固定数组有一块连续内存，数组指针指向内存首地址，靠下标来计算元素地址，如果下标越界则指针偏移出这块内存，会访问到野数据，ObjC 为了安全就直接让程序 Crash 了。</p> 
<p>而 nil 对象在数组类的 init 方法里面是表示数组的结束，所以使用 addObject 方法来插入对象就会使程序挂掉。<strong>如果实在要在数组里面加入一个空对象，那就使用 NSNull</strong>。</p> 
<pre><code>[array addObject:[NSNull null]];
</code></pre> 
<h3>解决办法</h3> 
<p>使用数组时注意判断下标是否越界，插入对象前先判断该对象是否为空。</p> 
<pre><code>if (aObj) {
    [array addObject:aObj];
}
</code></pre> 
<p>可以使用 Cocoa 的 Category 特性直接扩展 NSMutable 类的 Add/Insert 方法。比如：</p> 
<pre><code>@interface NSMutableArray (SafeInsert)
-(void) safeAddObject:(id)anObject;
@end
</code><p><code>@implementation NSMutableArray (SafeInsert)<br /> -(void) safeAddObject:(id)anObject {<br /> if (anObject) {<br /> [self addObject:anObject];<br /> }<br /> }<br /> @end<br /> </code></p></pre>
<p></p> 
<p>这样，以后在工程里面使用 NSMutableArray 就可以直接使用 safeAddObject 方法来规避 Crash。</p> 
<h2>三、访问了不存在的方法</h2> 
<p>ObjC 的方法调用跟 C++ 很不一样。 C++ 在编译的时候就已经绑定了类和方法，一个类不可能调用一个不存在的方法，否则就报编译错误。而 ObjC 则是在 runtime 的时候才去查找应该调用哪一个方法。</p> 
<p>这两种实现各有优劣，C++ 的绑定使得调用方法的时候速度很快，但是只能通过 virtual 关键字来实现有限的动态绑定。而对 ObjC 来说，事实上他的实现是一种消息传递而不是方法调用。</p> 
<pre><code>[aObj aMethod];
</code></pre> 
<p>这样的语句应该理解为，像 aObj 对象发送一个叫做 aMethod 的消息，aObj 对象接收到这个消息之后，自己去查找是否能调用对应的方法，找不到则上父类找，再找不到就 Crash。由于 ObjC 的这种特性，使得其消息不单可以实现方法调用，还能紧系转发，对一个 obj 传递一个 selector　要求调用某方法，他可以直接不理会，转发给别的　obj 让别的 obj 来响应，非常灵活。</p> 
<h3>例子</h3> 
<pre><code>[self methodNotExists];
</code></pre> 
<p>调用一个不存在的方法，可以编译通过，运行时直接挂掉，报 NSInvalidArgumentException 异常：</p> 
<pre><code>-[WSMainViewController methodNotExist]: unrecognized selector sent to instance 0x1dd96160
2013-10-23 15:49:52.167 WSCrashSample[5578:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[WSMainViewController methodNotExist]: unrecognized selector sent to instance 0x1dd96160'
</code></pre> 
<h3>解决方案</h3> 
<p>像这种类型的错误通常出现在使用 delegate 的时候，因为 delegate 通常是一个 id 泛型，所以 IDE 也不会报警告，所以这种时候要用 respondsToSelector 方法先判断一下，然后再进行调用。</p> 
<pre><code>if ([self respondsToSelector:@selector(methodNotExist)]) {
    [self methodNotExist];
}
</code></pre> 
<h2>四、字节对齐</h2> 
<p>可能由于强制类型转换或者强制写内存等操作，CPU 执行 STMIA 指令时发现写入的内存地址不是自然边界，就会硬件报错挂掉。iPhone 5s 的 CPU 从32位变成64位，有可能会出现一些字节对齐的问题导致 Crash 率升高的。</p> 
<h3>例子</h3> 
<pre><code>char *mem = malloc(16); // alloc 16 bytes of data
double *dbl = mem + 2;
double set = 10.0;
*dbl = set;
</code></pre> 
<p>像上面这段代码，执行到</p> 
<pre><code>*dbl = set;
</code></pre> 
<p>这句的时候，报了 EXC_BAD_ACCESS(code=EXC_ARM_DA_ALIGN) 错误。</p> 
<h3>原因</h3> 
<p>要了解字节对齐错误还需要一点点背景知识，知道的童鞋可以略过直接看后面了。</p> 
<hr /> 
<p><strong>背景知识</strong></p> 
<p>计算机最小数据单位是bit（位），也就是0或1。</p> 
<p>而内存空间最小单元是byte（字节），一个byte为8个bit。</p> 
<p>内存地址空间以byte划分，所以理论上访问内存地址可以从任意byte开始，但是事实上我们不是直接访问硬件地址，而是通过操作系统的虚拟内存地址来访问，虚拟内存地址是以字为单位的。一个32位机器的字长就是32位，所以32位机器一次访问内存大小就是4个byte。再者为了性能考虑，数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于，为了访问未对齐的内存，处理器需要作两次内存访问；而对齐的内存访问仅需要一次访问。</p> 
<p><strong>举一个栗子：</strong></p> 
<pre><code>struct foo {
    char aChar1;
    short aShort;
    char aChar2;
    int i;
};
</code></pre> 
<p>上面这个结构体，在32位机器上，char 长度为8位，占一个byte，short 占2个byte， int 4个byte。<br /> 如果内存地址从 0 开始，那么理论上顺序分配的地址应该是：</p> 
<pre><code>aChar1 0x00000000
aShort 0x00000001
aChar2 0x00000003
i      0x00000004
</code></pre> 
<p>但是事实上编译后，这些变量的地址是这样的：</p> 
<pre><code>aChar1 0x00000000
aShort 0x00000002
aChar2 0x00000004
i      0x00000008
</code></pre> 
<p>这就是 aChar1 和 aChar2 都被做了内存对齐优化，都变成 2 byte 了。</p> 
<hr /> 
<h3>解决办法</h3> 
<ul> 
 <li><strong>使用 memcpy 来作内存拷贝</strong>，而不是直接对指针赋值。对上面的例子作修改就是： <pre><code>char *mem = malloc(16); // alloc 16 bytes of data
double *dbl = mem + 2;
double set = 10.0;
memcpy(dbl, &amp;set, sizeof(set));
</code></pre> <p>改用 memcpy 之后运行就不会有问题了，这是因为 memcpy 自己的实现就已经做了字节对齐的优化了。我们来看glibc2.5中的memcpy的源码：</p> <pre><code>void *memcpy (void *dstpp, const void *srcpp, size_t len) {
<pre><code>unsigned long int dstp = (long int) dstpp;
unsigned long int srcp = (long int) srcpp;

if (len &amp;gt;= OP_T_THRES) {
  len -= (-dstp) % OPSIZ;
  BYTE_COPY_FWD (dstp, srcp, (-dstp) % OPSIZ);
  PAGE_COPY_FWD_MAYBE (dstp, srcp, len, len);
  WORD_COPY_FWD (dstp, srcp, len, len);
}
BYTE_COPY_FWD (dstp, srcp, len);
return dstpp;
</code></pre>
</code><p><code>}<br /> </code></p></pre><p></p> <p>分析这个函数，首先比较一下需要拷贝的内存块大小，如果小于 OP_T_THRES (这里定义为 16)，则直接字节拷贝就完了，如果大于这个值，视为大内存块拷贝，采用优化算法。</p> <pre><code>len -= (-dstp) % OPSIZ;
BYTE_COPY_FWD (dstp, srcp, (-dstp) % OPSIZ);
</code><p><code>// #define OPSIZ (sizeof(op_t))<br /> // enum op_t<br /> </code></p></pre><p></p> <p>OPSIZE 是 op_t 的长度，op_t 是字的类型，所以这里 OPSIZE 是获取当前平台的字长。<br /> dstp 是内存地址，内存地址是按byte来算的，对内存地址 unsigned long 取负数再模 OPSIZE 得到需要对齐的那部分数据的长度，然后用字节拷贝做内存对齐。取负数是因为要以dstp的地址作为起点来进行复制，如果直接取模那就变成0作为起点去做运算了。<br /> 对 BYTE_COPY_FWD 这个宏的源码有兴趣的同学可以看看这篇：<a href="http://www.justinyan.me/post/1689">BYTE_COPY_FWD 源码解析</a>(感谢 @raincai 同学提醒)</p> <p>这样对齐了之后，再做大数据量部分的拷贝：</p> <pre><code>PAGE_COPY_FWD_MAYBE (dstp, srcp, len, len);
</code></pre> <p>看这个宏的源码，尽可能多地作页拷贝，剩下的大小会写入len变量。</p> <pre><code>/////////////////////////////////////////////////
#if PAGE_COPY_THRESHOLD
<p>#include &lt;assert.h&gt;</p>
<p>#define PAGE_COPY_FWD_MAYBE(dstp, srcp, nbytes_left, nbytes) <br /> do <br /> { <br /> if ((nbytes) &gt;= PAGE_COPY_THRESHOLD &amp;&amp; <br /> PAGE_OFFSET ((dstp) - (srcp)) == 0) <br /> { <br /> /* The amount to copy is past the threshold for copying <br /> pages virtually with kernel VM operations, and the <br /> source and destination addresses have the same alignment. <em>/ <br /> size_t nbytes_before = PAGE_OFFSET (-(dstp)); <br /> if (nbytes_before != 0) <br /> { <br /> /</em> First copy the words before the first page boundary. */ <br /> WORD_COPY_FWD (dstp, srcp, nbytes_left, nbytes_before); <br /> assert (nbytes_left == 0); <br /> nbytes -= nbytes_before; <br /> } <br /> PAGE_COPY_FWD (dstp, srcp, nbytes_left, nbytes); <br /> } <br /> } while (0)</p>
<p>/* The page size is always a power of two, so we can avoid modulo division. */<br /> #define PAGE_OFFSET(n) ((n) &amp; (PAGE_SIZE - 1))</p>
<p>#else</p>
<p>#define PAGE_COPY_FWD_MAYBE(dstp, srcp, nbytes_left, nbytes) /* nada */</p>
</code><p><code>#endif<br /> </code></p></pre><p></p> <p>PAGE_COPY_FWD 的宏定义：</p> <pre><code>#define PAGE_COPY_FWD   (       dstp,
    srcp,
    nbytes_left,
    nbytes 
)       
Value:
((nbytes_left) = ((nbytes) -                              \
            (__vm_copy (__mach_task_self (),                  \
                (vm_address_t) srcp, trunc_page (nbytes),     \
                (vm_address_t) dstp) == KERN_SUCCESS          \
             ? trunc_page (nbytes)                    \
             : 0)))
</code></pre> <p>页拷贝剩余部分，再做一下字拷贝：</p> <pre><code>#define WORD_COPY_FWD   (       dst_bp,
src_bp,
nbytes_left,
nbytes 
     )      
        Value:
     do                                        \
      {                                         \
        if (src_bp % OPSIZ == 0)                            \
          _wordcopy_fwd_aligned (dst_bp, src_bp, (nbytes) / OPSIZ);         \
           else                                   \
        _wordcopy_fwd_dest_aligned (dst_bp, src_bp, (nbytes) / OPSIZ);       \
            src_bp += (nbytes) &amp; -OPSIZ;                        \
            dst_bp += (nbytes) &amp; -OPSIZ;                        \
            (nbytes_left) = (nbytes) % OPSIZ;                       \
          } while (0)
</code></pre> <p>再再最后就是剩下的一点数据量了，直接字节拷贝结束。memcpy 可以用来解决内存对齐问题，同时对于大数据量的内存拷贝，使用 memcpy 效率要高很多，就因为做了页拷贝和字拷贝的优化。</p> </li> 
 <li>或者尽量避免这种内存不对齐的情况，像这个例子，只要把 +2 改成 +4，内存就对齐了。当然具体还得看逻辑实现的需要。 <pre><code>char *mem = malloc(16); // alloc 16 bytes of data
double *dbl = mem + 4;
double set = 10.0;
*dbl = set;
</code></pre> </li> 
</ul> 
<h3>References</h3> 
<p><a href="http://www.galloway.me.uk/2010/10/arm-hacking-exc_arm_da_align-exception/">ARM Hacking: EXC_ARM_DA_ALIGN exception</a></p> 
<p><a href="http://fossies.org/dox/glibc-2.18/string_2memcpy_8c_source.html">GlibC 2.18 memcpy source code</a></p> 
<h2>五、堆栈溢出</h2> 
<p>一般情况下应用程序是不需要考虑堆和栈的大小的，总是当作足够大来使用就能满足一般业务开发。但是事实上堆和栈都不是无上限的，过多的递归会导致栈溢出，过多的 alloc 变量会导致堆溢出。</p> 
<h3>例子</h3> 
<p>不得不说 Cocoa 的内存管理优化做得挺好的，单纯用 C++ 在 Mac 下编译后执行以下代码，递归 174671 次后挂掉：</p> 
<pre><code>#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
<p>void test(int i) {<br /> void* ap = malloc(1024);<br /> std::cout &lt;&lt; ++i &lt;&lt; "\n";<br /> test(i);<br /> }</p>
</code><p><code>int main() {<br /> std::cout &lt;&lt; "start!" &lt;&lt; "\n";<br /> test(0);<br /> return 0;<br /> }<br /> </code></p></pre>
<p></p> 
<p>而在 iOS 上执行以下代码则怎么也不会挂，连 memory warning 都没有：</p> 
<pre><code>- (void)stackOverFlow:(int)i {
<pre><code>char * aLeak = malloc(1024);

NSLog(@"try %d", ++i);
[self stackOverFlow:i];
</code></pre>
</code><p><code>}<br /> </code></p></pre>
<p></p> 
<p>而且如果 malloc 的大小改成比 1024 大的如 10240，其内存占用的增长要远慢于 1024。这大概要归功于 Cocoa 的 Flyweight 设计模式，不过暂时还没能真的理解到其优化原理，猜测可能是虽然内存空间申请了但是一直没用到，针对这种循环 alloc 的场景，做了记录，等到用到内存空间了才真正给出空间。</p> 
<h3>原理</h3> 
<p>iOS 内存布局如下图所示：</p> 
<p><img decoding="async" src="http://s3.51cto.com/wyfs01/M01/09/BE/wKioJlGV36aBSXg6AAA81UMWsZg349.jpg" alt="image" /></p> 
<p>在应用程序分配的内存空间里面，最低地址位是固定的代码段和数据段，往上是堆，用来存放全局变量，对于 ObjC 来说，就是 alloc 出来的变量，都会放进这里，堆不够用的时候就会往上申请空间。最顶部高地址位是栈，局部的基本类型变量都会放进栈里。 ObjC 的对象都是以指针进行操控的，局部变量的指针都在栈里，全局的变量在堆里，而无论是什么指针，alloc 出来的都在堆里，所以 alloc 出来的变量一定要记得 release。</p> 
<p>对于 autorelease 变量来说，每个函数有一个对应的 autorelease pool，函数出栈的时候 pool 被销毁，同时调用这个 pool 里面变量的 dealloc 函数来实现其内部 alloc 出来的变量的释放。</p> 
<h2>六、多线程并发操作</h2> 
<p>这个应该是全平台都会遇到的问题了。当某个对象会被多个线程修改的时候，有可能一个线程访问这个对象的时候另一个线程已经把它删掉了，导致 Crash。比较常见的是在网络任务队列里面，主线程往队列里面加入任务，网络线程同时进行删除操作导致挂掉。</p> 
<h3>例子</h3> 
<p>这个真要写比较完整的并发操作的例子就有点复杂了。</p> 
<h3>解决方法</h3> 
<ul> 
 <li>加锁 
  <ul> 
   <li>NSLock <p>普通的锁，加锁的时候 lock，解锁调用 unlock。</p> <pre><code>- (void)addPlayer:(Player *)player {
   if (player == nil) return;
        NSLock* aLock = [[NSLock alloc] init];
        [aLock lock];
<pre><code>    [players addObject:player];

    [aLock unlock];
</code></pre>
</code><p><code>}<br /> }<br /> </code></p></pre><p></p> <p>可以使用标记符 @synchronized 简化代码：</p> <pre><code>- (void)addPlayer:(Player *)player {
   if (player == nil) return;
   @synchronized(players) {
      [players addObject:player];
   }
}
</code></pre> </li> 
   <li>NSRecursiveLock 递归锁 <p>使用普通的 NSLock 如果在递归的情况下或者重复加锁的情况下，自己跟自己抢资源导致死锁。Cocoa 提供了 NSRecursiveLock 锁可以多次加锁而不会死锁，只要 unlock 次数跟 lock 次数一样就行了。</p> </li> 
   <li>NSConditionLock 条件锁 <p>多数情况下锁是不需要关心什么条件下 unlock 的，要用的时候锁上，用完了就 unlock　就完了。Cocoa 提供这种条件锁，可以在满足某种条件下才解锁。这个锁的 lock 和 unlock, lockWhenCondition 是随意组合的，可以不用对应起来。</p> </li> 
   <li>NSDistributedLock 分布式锁 <p>这是用在多进程之间共享资源的锁，对 iOS 来说暂时没用处。</p> </li> 
  </ul> </li> 
 <li> <p>无锁<br /> 放弃加锁，采用原子操作，编写无锁队列解决多线程同步的问题。酷壳有篇介绍无锁队列的文章可以参考一下：<a href="http://coolshell.cn/articles/8239.html">无锁队列的实现</a></p> </li> 
 <li>使用其他备选方案代替多线程：Operation Objects, GCD, Idle-time notifications, Asynchronous functions, Timers, Separate processes。</li> 
</ul> 
<h3>References</h3> 
<p><a href="https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/ThreadSafetySummary.html#//apple_ref/doc/uid/10000057i-CH12-SW1">Threading Programming Guide</a></p> 
<h2>七、Repeating NSTimer</h2> 
<p>如果一个 Timer 是不停 repeat，那么释放之前就应该先 invalidate。非repeat的timer在fired的时候会自动调用invalidate，但是repeat的不会。这时如果释放了timer，而timer其实还会回调，回调的时候找不到对象就会挂掉。</p> 
<h3>原因</h3> 
<p>NSTimer 是通过 RunLoop 来实现定时调用的，当你创建一个 Timer 的时候，RunLoop 会持有这个 Timer 的强引用，如果你创建了一个 repeating timer，在下一次回调前就把这个 timer release了，那么 runloop 回调的时候就会找不到对象而 Crash。</p> 
<h3>解决方案</h3> 
<p>我写了个宏用来释放Timer</p> 
<pre><code>/*
 * 判断这个Timer不为nil则停止并释放
 * 如果不先停止可能会导致crash
 */
#define WVSAFA_DELETE_TIMER(timer) { \
    if (timer != nil) { \
        [timer invalidate]; \
        [timer release]; \
        timer = nil; \
    } \
}
</code></pre>
        ]]></description>
    </item>
    
    <item>
        <title>&#x8BB0;&#x4E00;&#x6B21;&#x5E73;&#x5357;&#x94C1;&#x8DEF;&#x62CD;&#x706B;&#x8F66;</title>
        <link>https://justinyan.eth.limo/DB16E002-2C40-4546-B8AE-FC7CACE9F664/</link>
        <guid>https://justinyan.eth.limo/DB16E002-2C40-4546-B8AE-FC7CACE9F664/</guid>
        <pubDate>Sun, 29 Sep 2013 22:38:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>为了弥补上周只去华侨城和园博园没去拍火车的遗憾，今天就带上N4,DC去拍火车去。中午吃了饭就出发了，外面有点小雨，DC最后没用上，只用了N4就够拍了。</p> 
<p>坐上公车一路来到信诺公司站，下了车往西面走，月亮湾大道上全是货柜车，尘土飞扬的。好彩刚下过雨，空气还算清新，用N4拍了张白花，挺好看的。</p> 
<p><a href="http://www.justinyan.me/wp-content/uploads/2013/09/IMG_20130929_134426.jpg"><img decoding="async" loading="lazy" src="http://www.justinyan.me/wp-content/uploads/2013/09/IMG_20130929_134426.jpg" alt="IMG_20130929_134426" width="800" height="800" class="aligncenter size-full wp-image-1596" srcset="https://cdn.justinbot.com/wp-content/uploads/2013/09/IMG_20130929_134426.jpg 2176w, https://cdn.justinbot.com/wp-content/uploads/2013/09/IMG_20130929_134426-150x150.jpg 150w, https://cdn.justinbot.com/wp-content/uploads/2013/09/IMG_20130929_134426-300x300.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2013/09/IMG_20130929_134426-1024x1024.jpg 1024w" sizes="(max-width: 800px) 100vw, 800px" /></a></p> 
<p>一路向西，看到铁路公司的大门没敢进，绕了一下到后面，结果是个边防。问了下坐在那里的士兵，他都不晓得附近有火车可以看-.- 完了再去铁路公司问保安，保安说绕到外面走绿化道一直走。我就往外走了，看到有条小路，想起来之前搜到的帖子说要走小路进去，就往里头钻了。结果是条旧的绿化道，以前的人行道，现在没人走了，非常荒凉，很恐怖的感觉。</p> 
<p><img src="http://www.justinyan.me/wp-content/gallery/2013railway/2013-09-29 14.04.15.jpg" alt="2013-09-29 14.04.15" class="ngg-singlepic ngg-none" /></p> 
<p>沿着废人行道往前走，没看出有什么东西来，最后还是捡了条小路往外走了，太恐怖了。结果走着走着到了个驾校。问了小卖部的人，说是前面有个修火车的地方，就我刚走的那条绿化道里面往前走，有个铁丝网就可以看到火车了。于是乎我又往回走，还看到个大叔，在那里吹喇叭。大叔让我直走有条小路可以看到火车，于是我直走，发现又回到刚刚走过来的地方=.=(Stupid</p> 
<p>然后，在刚才不走的那里有条小路，钻过重重蜜蜂、蝴蝶、苍蝇、小虫的阻挡，来到一个狗？洞？前面。。。</p> 
<p><img src="http://www.justinyan.me/wp-content/gallery/2013railway/IMG_20130929_195819.jpg" alt="IMG_20130929_195819" class="ngg-singlepic ngg-none" /></p> 
<p>钻过狗洞，铁轨赫然出现在眼前！</p> 
<p><img src="http://www.justinyan.me/wp-content/gallery/2013railway/IMG_20130929_145715.jpg" alt="IMG_20130929_145715" class="ngg-singlepic ngg-none" /></p> 
<p>有几个工作人员在那里，后来遇到几个工作人员都说让我离开，闲人免进，不过还是给我拍到了一些好东西，Nexus 4的镜头差强人意，不过也算能看的片子了:D</p> 
<p><img src="http://www.justinyan.me/wp-content/gallery/2013railway/IMG_20130929_191842.jpg" alt="IMG_20130929_191842" class="ngg-singlepic ngg-none" /></p> 
<p><img src="http://www.justinyan.me/wp-content/gallery/2013railway/IMG_20130929_191747.jpg" alt="IMG_20130929_191747" class="ngg-singlepic ngg-none" /></p> 
<p><img src="http://www.justinyan.me/wp-content/gallery/2013railway/IMG_20130929_145715.jpg" alt="IMG_20130929_145715" class="ngg-singlepic ngg-none" /></p> 
<p><img src="http://www.justinyan.me/wp-content/gallery/2013railway/IMG_20130929_145635.jpg" alt="IMG_20130929_145635" class="ngg-singlepic ngg-none" /></p> 
<p><img src="http://www.justinyan.me/wp-content/gallery/2013railway/IMG_20130929_144641.jpg" alt="IMG_20130929_144641" class="ngg-singlepic ngg-none" /></p> 
<p><img src="http://www.justinyan.me/wp-content/gallery/2013railway/IMG_20130929_144523.jpg" alt="IMG_20130929_144523" class="ngg-singlepic ngg-none" /></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #50 &#x4E1C;&#x91CE;&#x572D;&#x543E; - &#x300A;&#x6D41;&#x661F;&#x4E4B;&#x7ECA;&#x300B;</title>
        <link>https://justinyan.eth.limo/C35AE622-DB41-4527-82A4-DFC8F387FE14/</link>
        <guid>https://justinyan.eth.limo/C35AE622-DB41-4527-82A4-DFC8F387FE14/</guid>
        <pubDate>Fri, 09 Aug 2013 14:12:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2013/08/Wmeteor.jpg" /></p> 
<p>又一年立秋。2013的春夏，过得混沌而麻木。《流星之绊》的主角们初出社会被欺骗后才幡然醒悟识破这个丑恶的世界。东野笔下的人物总是亦邪亦正，阳光与阴暗并存。</p> 
<p>这本书其实算不上太好的作品，只是某天拿起快放到没电PaperWhite，回想起10年的冬天，在湿冷的大学宿舍里背着无聊的课本挣扎在及格线上，忽然就想写『每周读书』，于是过两年多过去了。时间过得真快。</p> 
<p>写作也好读书也好，在面临枯燥乏味的考试的时候都是我最喜欢的解压方式。在公司呆了两年了，经历了不少事情，兴奋过，激动过，颓废过，迷茫过。始终没办法像安藤忠雄一样在二十几岁的时候就明白自己想要什么，追求什么。</p> 
<p>自从买了PC之后，躲进游戏的世界便是数月。这种状态下人是蒙蔽的，麻木的，不知道自己在做什么，要什么，只是整天打打酱油，玩玩游戏，吃个饭睡个觉就完事了。即便6月份那场持续一个多月大病之后，仍如醉汉避世，睁眼亦无所识。</p> 
<p>于是以捡起尘封的PaperWhite为契机，我修好了几个月前就没电的手表，找回了抽屉里早已干掉的钢笔，更改了我的所有电子设备的桌面，给我的手机带上套更换手感，以图时刻提醒自己，回头便是混沌无所知。</p> 
<p>《流星之绊》依然有《幻夜》和《白夜行》的影子，以一个杀人事件开端，长达十四年后结案。死者是洋食屋的老板和老板娘，三个孩子成为孤儿在充满险恶的社会里挣扎，而凶手一直在逃毫无线索。十四年后，在案件失效之前，偶然的机遇找到杀人凶手的孩子，开始了引导警察开展调查的计划，而他们这时，却已经成为很熟练的欺诈师…</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #49 &#x674E;&#x78A7;&#x534E; - &#x300A;&#x80ED;&#x8102;&#x6263;&#x300B;</title>
        <link>https://justinyan.eth.limo/DA80BA94-963E-41DF-9CD2-8249A40E735A/</link>
        <guid>https://justinyan.eth.limo/DA80BA94-963E-41DF-9CD2-8249A40E735A/</guid>
        <pubDate>Tue, 16 Apr 2013 13:40:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2013/04/42524626.jpg" /></p> 
<p>知道「胭脂扣」是小时候看的<a href="http://movie.douban.com/subject/1299288/">张国荣和梅艳芳的电影版</a>。印象很深，画面很美，但是电影的结局有点无聊。前两日无事翻到李碧华原著，便看看了，没想到这竟是李碧华的第一部小说。</p> 
<p>初读这部作品，尚不知作者名讳。还以为是亦舒所作，文笔柔静似水，带点香港白话的语调。因为电影印象太深，读书的时候脑中主角的形象便一直是张国荣与梅艳芳，一个俊朗一个冷艳。小说本身有些许不太成熟的处理，比如碰到身为女鬼的如花，虽有着笔墨解释主角的恐惧心理，却还是太容易便接受了与鬼对话的事实。比如结局，虽不是电影版结局那般无聊俗气，但是也交待得有些仓促，有悬念，有意犹未尽，但没有结果与答案。</p> 
<p>总的来说我挺喜欢李碧华的文字，清清淡淡，白如水，洁如霜，又带点港式幽默，令人神往起旧时光，一如黑白默片，文艺得自然。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x300C;&#x6BCF;&#x5468;&#x8BFB;&#x4E66;&#x300D;&#x7B2C;&#x56DB;&#x5341;&#x4E00;&#x2014;&#x2014;&#x56DB;&#x5341;&#x516B;&#x5468;&#x4E66;&#x5355;</title>
        <link>https://justinyan.eth.limo/46DAFF7D-5A70-45E6-867B-AC91677A1262/</link>
        <guid>https://justinyan.eth.limo/46DAFF7D-5A70-45E6-867B-AC91677A1262/</guid>
        <pubDate>Tue, 16 Apr 2013 13:24:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>2012年5月24日到今天（2013年4月16日），竟然只读了这么少的书，真是令人汗颜。想到读第四十周的「佐藤可士和的超整理术」的时候我还在实习，恍如隔世。</p> 
<ol> 
 <li><strong>「每周读书」第四十八周—— Erik M. Buck, Donald A. Yacktman「Cocoa Deisgn Patterns」</strong> <p><em>Cocoa设计模式，都是我们平时用惯了的东西，取了个名字，介绍了一下问题、解决方案、应用场景、示例代码。</em></p> </li> 
 <li><strong>「每周读书」第四十七周——「蕃茄工作法」</strong> <p><em>一种很简单，很容易实践的时间管理办法。</em></p> </li> 
 <li><strong>「每周读书」第四十六周——Josh Clark「触动人心」</strong> <p><em>iOS 设计规范，即使老手也有不熟悉的地方，读之颇为受益。</em></p> </li> 
 <li><strong>「每周读书」第四十五周——李碧华《霸王别姬》</strong> <p><em>很震撼的小说，戏子与爱情。</em></p> </li> 
 <li><strong>「每周读书」第四十四周——《平行世界的爱情故事》</strong> <p><em>东野圭吾的推理作，感觉一般，主角失忆，根据蛛丝马迹找回真相。</em></p> </li> 
 <li><strong>「每周读书」第四十三周——《天才在左疯子在右》</strong> <p><em>作者对精神病人进行采访后集合成的故事集，故事精彩离奇，颇具启发。</em></p> </li> 
 <li><strong>「每周读书」第四十二周——S. J. Watson Before I go to sleep</strong> <p><em>悬疑推理类小说，英文版生词少，阅读起来很简单。</em></p> </li> 
 <li><strong>「每周读书」第四十一周 Jeff Jhonson——《认知与设计》</strong> <p><em>设计类书籍，讲述设计的基本原理。</em></p> </li> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4F7F;&#x7528;Google Protocol Bufffers&#x8FDB;&#x884C;&#x901A;&#x4FE1;(Ruby &#x26; ObjC &#x26;#038; Java)</title>
        <link>https://justinyan.eth.limo/93A1DC74-BB46-4067-8245-597BA8737BBB/</link>
        <guid>https://justinyan.eth.limo/93A1DC74-BB46-4067-8245-597BA8737BBB/</guid>
        <pubDate>Fri, 22 Mar 2013 17:04:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <h2>一、概览</h2> 
<p>在后台需要与多种终端如iPhone，Android，Web或者WinPhone之类的不同平台作通信的时候，常常需要使用一种中间的通信协议，并且使用通用数据类型如XML。</p> 
<p>Protocol Buffers(以下简称protobuf)就是类似于XML这样的东西，可以在后台与多终端间进行通信，但是比它要远强大的多。</p> 
<p>Protobuf由Google出品，08年的时候Google把<a href="https://code.google.com/p/protobuf/">这个项目开源</a>了，截至发稿已发展到2.5.0版本，官方支持C++，Java和Python三种语言，但是由于其设计得很简单，所以衍生出很多第三方的支持，基本上常用的PHP，C，Actoin Script，Javascript，Perl等多种语言都已有<a href="https://code.google.com/p/protobuf/wiki/ThirdPartyAddOns">第三方的库</a>。</p> 
<h2>二、简介</h2> 
<p>Protobuf比起XML有很多优势，<strong>首先是更简单了</strong>。</p> 
<p>一个XML文件我们编写的时候需要定义各种各种的节点，而Proto文件则使用Google定义的有点像Java的语言来编写，简洁很多。</p> 
<p>XML长得像这样：</p> 
<pre><code>&lt;person&gt;
    &lt;name&gt;John Doe&lt;/name&gt;
    &lt;email&gt;jdoe@example.com&lt;/email&gt;
&lt;/person&gt;
</code></pre> 
<p>而proto文件则长得像这样：</p> 
<pre><code># Textual representation of a protocol buffer.
# This is *not* the binary format used on the wire.
person {
  name: "John Doe"
  email: "jdoe@example.com"
}
</code></pre> 
<p><strong>其次是快了</strong>。proto文件是给程序猿阅读的时候用的，真正传输的时候是序列化的二进制数据，比起XML要小得多，解析起来也快得多。</p> 
<p>第三是可以<strong>直接生成供程序使用的类</strong>。XML文件接收后我们还得手工去解析然后转化为可以使用的对象，但是PB文件接收后，PB的库就已经帮我们转化为对应的数据类了。</p> 
<p>Protobuf主要分为两个部分，一是编译器protoc，一是分包组包用的库。<br /> 编译器是用来编译proto文件为目标语言的，比如一个上面那个 Person.proto 文件，我可以用 protoc 直接编译成C++类 Person，用的时候就很方便了：</p> 
<pre><code>cout &lt;&lt; "Name: " &lt;&lt; person.name() &lt;&lt; endl;
cout &lt;&lt; "E-mail: " &lt;&lt; person.email() &lt;&lt; endl;
</code></pre> 
<p>对应的可以变成ObjC的类、Java的类等等。</p> 
<p>在我接收到数据之后，我可以使用 parseFrom 方法直接对 byte 数据进行解析，得到一个可以用的类，如Java例子：</p> 
<pre><code>byte[] msg = b.getByteArray(PERSON_MSG_EXTRA); // 接收byte数据
person = Person.parseFrom(msg).toBuilder(); // 直接解析为对应的类
</code></pre> 
<h2>三、使用</h2> 
<p>下面几节介绍一下一个服务器对多种终端通信的实际例子。服务器上使用 Ruby on Rails，终端有 iOS 和 Android。也就是 Ruby 和 ObjC 、 Android 之间的通信了。</p> 
<h3>1.定义proto文件</h3> 
<p>首先，最重要的是定义好 proto 文件:</p> 
<pre><code>package Tutorial;
<p>message Source {<br /> required string title = 1;<br /> required string description = 2;<br /> optional int id = 3;<br /> }</p>
</code><p><code>message SourceAllResponse {<br /> required uint32 count = 1;<br /> repeated Source source_list = 2;<br /> }<br /> </code></p></pre>
<p></p> 
<p>有点像 Java 语法，有个 package 在最前面，这个 Tutorial 在 Java 里面就会生成一个类为 Tutorial，对于 Java，有个可选的选项，可以填上包名。</p> 
<pre><code>option java_package = "com.example.protobuf";
option java_outer_classname = "Tutorial";
</code></pre> 
<p>如果是 Ruby 则生成module Tutorial， ObjC 则是 TutorialRoot，用来管理 extensionRegistry（暂时还没搞懂用来干啥）。</p> 
<p>message 是对应一个类，required 是必须字段，通信发起方必有的字段，对应 optional 则是可选的。如果后台某天升级了协议要增加返回字段，那么新增的字段就必须是 optional 的，以防客户端接收失败（当然如果能保证客户端永远最新那是另一回事）。repeated 可以看成是返回多个同类型的值，如一个数组，像SourceAllResponse会返回所有的source，第一个是source的个数，第二个是多个source对象。</p> 
<p>protobuf 数据类型看起来像 C++ 有 double, float, int32等等，在 <a href="https://developers.google.com/protocol-buffers/docs/proto">https://developers.google.com/protocol-buffers/docs/proto</a> 里有表格详细说明。</p> 
<h3>2.编译成对应语言</h3> 
<p>定义完proto文件后，使用官方的 protoc 可以对其进行编译。下载地址在： <a href="https://code.google.com/p/protobuf/downloads/list">https://code.google.com/p/protobuf/downloads/list</a></p> 
<p>如果是 Mac OS X 或者 Linux ，需要下载官方的源码，解压后根据官方的 README.txt 里的说明：</p> 
<pre><code>$ ./configure
$ make
$ make check
$ make install
</code></pre> 
<p>编译安装，然后就可以使用protoc命令了。windows用户则下载 *.win32.zip 文件后里面就有 protoc.exe 了，命令行下使用就行。把上面那个 proto 结构体保存成 tutorial.proto，然后就可以用 protoc 编译了。</p> 
<h3>3.Ruby的用法:</h3> 
<p>Ruby 可以用 codekitchen 的 ruby-protocol-buffers 或者 macks 的 ruby-protobuf，我用前者。ruby-protobuf 没有能使用成功。</p> 
<p>首先 Gemfile 里面加入:</p> 
<pre><code>gem 'ruby-protocol-buffers'
</code></pre> 
<p>然后 bundle install。<br /> 使用的方法就是</p> 
<pre><code>ruby-protoc Tutorial.proto
</code></pre> 
<p><strong>注意：ruby-protocol-buffers依赖于官方的Protoc，所以需要你这台机器装了 protoc 才行。</strong><br /> 如果用 ruby-protobuf 则是：</p> 
<pre><code>rprotoc examples/addressbook.proto
</code></pre> 
<p>而且不依赖官方的protoc，不过我没使用成功就是了。<br /> 编译后会生成 tutorial.pb.rb，在ruby中：</p> 
<pre><code>require 'tutorial.pb'
aResponse = Tutorial::SourceAllResponse.new
aResponse.count = sources.count
//...
send_data aResponse
</code></pre> 
<p>就可以直接使用proto来通信了。</p> 
<h3>4.JAVA的用法：</h3> 
<pre><code>protoc --java_out=. tutorial.proto
</code></pre> 
<p>会生成 Tutorial.java ，引入到工程里面，这时会发现一对 Error，因为还没有引入 jar 包。在解压好的 protobuf 源码目录， cd 到 java 目录里面，查看 README.txt 文件发现我们可以使用 Maven 对其进行编译。我在 Mac OS 上没编译成功， Linux 可能比较好编。</p> 
<pre><code>$ protoc --version
$ mvn test
$ mvn install
$ mvn package
</code></pre> 
<p>完了就会发现在 target 文件夹里面有 jar 包了。<br /> <img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2013/03/Screen-Shot-2013-03-22-at-4.26.31-PM.png" alt="image" /><br /> 然后引入这个 jar 包，<strong>注意，如果你用Eclipse，除了 Build Path里面加了jar包，还得把它放进libs目录，否则只能编译不能使用（被这个坑惨了T_T）。</strong></p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2013/03/Screen-Shot-2013-03-22-at-4.26.04-PM.png" alt="image" /></p> 
<h4>5.iOS(ObjC)</h4> 
<p>Protobuf 官方不支持 ObjC 需要使用别人写的库，<a href="https://code.google.com/p/metasyntactic/wiki/ProtocolBuffers">https://code.google.com/p/metasyntactic/wiki/ProtocolBuffers</a> 其实就是作为 protoc 的一个插件而已。这个库已经几年没更新了，还是 2.2 版本的 protobuf，不过由于 protobuf 良好的向上向下兼容，用什么版本其实无所谓，协议没有变。</p> 
<p>首先到这里下载源码 <a href="http://code.google.com/p/metasyntactic/downloads/list">http://code.google.com/p/metasyntactic/downloads/list</a> ，完了根据官方的方法，到解压目录下：</p> 
<pre><code>./autogen.sh
./configure
make
</code></pre> 
<p>使用的时候就</p> 
<pre><code>protoc --proto_path=src --objc_out=build/gen src/foo.proto src/bar/baz.proto
</code></pre> 
<p>但是由于我的 Mac 里面已经装了官方的 protoc 了，所以我的命令带改成在源码的 src 文件夹下</p> 
<pre><code>./protoc --proto_path=. --objc_out=. /PATH_TO_TUTORIAL/Tutorial.proto
</code></pre> 
<p>可以使用 shell 脚本来搞定这个，直接在 XCode 的 Build Phases 里面加个 Run Script，然后就会在每次编译的时候去编译这个 proto 文件了。编译后把生成的 Tutorial.pb.h 和 Tutorial.pb.m 文件加进工程，同样编译不过，还需要添加第三方库。</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2013/03/Screen-Shot-2013-03-22-at-4.35.46-PM.png" alt="image" /></p> 
<p>把源码目录下，objectiveC里面的所有Classes加入工程，然后编辑你的 prefix.pch 文件，import一下protobuffer</p> 
<p><img decoding="async" src="http://www.justinyan.me/wp-content/uploads/2013/03/FEF332AB-0F74-47C5-A86D-640FA23817BE.jpg" alt="image" /></p> 
<p>大工告成，可以接收服务器下发的PB消息了。</p> 
<pre><code>NSData * aData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://xxxx"]];
</code><p><code>SourceAllResponse * aResponse = [SourceAllResponse parseFromData:aData];<br /> </code></p></pre>
<p></p> 
<h3>三、总结</h3> 
<p>Protobuffer 在一个后台对付多终端的通信方面还是非常好用的，方便、可扩展是它的特点，当然对于后台开发的同学来说还有性能上的优势。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #48 Erik M. Buck, Donald A. Yacktman - Cocoa Deisgn Patterns</title>
        <link>https://justinyan.eth.limo/CBD7997B-B168-4E7D-98B4-1E1290D7ED5D/</link>
        <guid>https://justinyan.eth.limo/CBD7997B-B168-4E7D-98B4-1E1290D7ED5D/</guid>
        <pubDate>Wed, 13 Mar 2013 18:13:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2013/03/51naQFkKcyL.jpg" /></p> 
<p>当我还不了解「单例」是什么的时候我觉得「设计模式」是很高深的东西，直到看了这本书我才知道，原来设计模式不过是对我们平时常用的编程方式提炼一下给个名字罢了。</p> 
<p>更准确地说，设计模式是针对一类问题，给出一种通用的解决方案，设计模式的名字是为了更方便程序猿们交流（虽然我不这么觉得）。设计模式这个名词来自于91年四人帮GoF出的书，书名叫「设计模式」（「Design Patterns - Elements of Reusable Object-Oriented Software」）。该书收录了23种设计模式，应该都是讲C++的，我没看过书的内容。</p> 
<p>Cocoa Design Patterns这本书则是专门讲Mac OS和iOS的，例子都来自Cocoa框架，用ObjC语言讲解。全书主要有5个部分，涉及MVC模式，基础库涉及的模式，有助于解耦的模式，有助于隐藏复杂性的模式以及最后的实践。</p> 
<p>1.MVC模式应该是很常见的模式了无需多言。<br /> 2.基础模式主要都是Cocoa框架提供的，像[[XXClass alloc] init]这样分两阶段的创建实例，和使用Category扩展类的方法这些。<br /> 3.有助于解耦的模式包括单例模式，NSNotification通知中心和delegate这些。<br /> 4.有助于隐藏复杂性的模式有Bundle，和奇葩的Class Cluter等等。</p> 
<p>基本上如果ObjC开发掌握得毕竟熟练的话，这本书看起来意义不算太大=..=!!!<br /> 不过至少这本书让我记得了更多的模式词汇，而且更重要的是，以前我只是用着delegate这样的东西，但是不晓得为什么要设计出这样的东西，看着本书其实就是点到面的总结。</p> 
<p>书的每一节都分为问题（Motivation，个人感觉翻译为提出问题比较恰当），解决方案（Solution），Cocoa例子（Examples in Cocoa），结论（Consequences）四个部分。结构非常清晰。书读起来也很容易，而且我通过这本书还发现了Class Cluter这个奇葩的东西，可以好好研究一下。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #47&#x300C;&#x8543;&#x8304;&#x5DE5;&#x4F5C;&#x6CD5;&#x300D;</title>
        <link>https://justinyan.eth.limo/BC534A27-AD09-4EF0-91BA-7DE8AFEC4EF7/</link>
        <guid>https://justinyan.eth.limo/BC534A27-AD09-4EF0-91BA-7DE8AFEC4EF7/</guid>
        <pubDate>Mon, 11 Mar 2013 14:26:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2013/03/pomodoro-technique-books.jpg" alt="" /></p> 
<p>最早在<a href=" http://www.mifengtd.cn/">退墨博客</a>上接触到GTD思想，使用过Doit.im, Things, Any.do等工具，也看过笑来老师的「与时间做朋友」，但是实际效果均不甚理想。翻阅「Getting Things Done」这本书，只觉大道理很多，但是看过就算，留不下痕迹与思考。直到回过头看退墨博客，提到「蕃茄工作法」这本书，好奇这书的名字于是下载看了，才发现一个具体可行的时间管理方法。</p> 
<p>「蕃茄」这本书篇幅非常短，整个PDF只有44页，一个小时之内可以看完。这个好玩的名字其实来源于厨房里的蕃茄计时器，而所谓的「蕃茄工作法」其实只是一套游戏规则，简单的说就是：</p> 
<blockquote>
 <p>以30分钟为一个番茄时间，其中25分钟集中精神工作，5分钟休息，每完成一个番茄时间就记录一下。每个番茄时间都是不可分割的，如果中途被人打断，则尽量推迟处理时间到这个蕃茄时间结束后，如果无法推迟则取消当前番茄时间，绝不可手软。</p>
</blockquote> 
<p>蕃茄时间除了连续集中精力25分钟之外，还要求做好记录。每天第一个番茄时间用来计划今天要做的事情，并留有一部分时间用来应对突发事件，然后一天结束之后需要对今天做的事情做总结。通过记录我发现，每天我竟然有一半的时间是用来处理计划以外的事情！</p> 
<p>我从上周一才算是正式开始使用蕃茄工作法，虽然书里鼓励使用真正的蕃茄钟，因为嘀嗒嘀嗒有时间流逝感，不过办公室里不适合用这个，于是我用了个<a href="https://play.google.com/store/apps/details?id=net.phlam.android.clockworktomato&amp;feature=search_result#?t=W251bGwsMSwxLDEsIm5ldC5waGxhbS5hbmRyb2lkLmNsb2Nrd29ya3RvbWF0byJd">Android软件作代替[Colock Tomato]</a>（蕃茄官网自己做了一个，但是我觉得这个钟盘更适合我，有兴趣的读者也可以看看<a href="http://www.pomodorotechnique.com/">官网</a>的）。每天早上我第一个番茄时间用来计划当天需要做的事情，由于番茄时间为30分钟有点长，我实际上在计划完当天要做的事情之后就用剩下的时间扫办公和私人邮件，回复RTX离线消息，查阅公司BBS新闻等琐事。等到第二个番茄时间开始，则正式进入工作。</p> 
<p>计划好任务也是一项脑力活，首先需要分割好任务，比如说我今天需要完成一个需求，修复一个bug。如果这个工作项不大，比如这个bug我可能一个番茄时间差不多，那就比较好办，但是如果像需求比较大的情况下，就需要细细划分了。一般是一个任务不要超过5个番茄时间，我只有看书的时候会达到4个番茄时间的量，一般任务都在3个以内。需求如果比较大，需要先沟通需求，然后设计，然后分几个步骤来完成，可以把这几个阶段划分出来作为几个任务去完成。</p> 
<p>在完成任务的过程中不可避免地会被人打扰，要你协助做这个那个，一般是RTX找我，我的RTX是关掉notification的，不会弹出popup，所以通常我会在一个完整的番茄时间过完后才看消息，如果需要回复我则会商量如：5分钟/10分钟后我怎样怎样。一般来说大多数的事件都是可以等到25分钟之后再处理的。而如果被电话或者有人过来我办公位的话，我就会把当前番茄时间cancel，先处理紧急事情，或者重开一个蕃茄时间<strong>。这是规则，其实也是真理，一块连续的集中精神的工作时间很重要。</strong></p> 
<p>每天工作结束后我会把当天做的事情记录起来，我是用google drive 的google sheet来做记录，存在google的云里。事实上过去的一周我是第二天早上作计划的时候顺便做总结的，总结的好处在于你可以看到自己预估给每项任务的时间，和实际使用的蕃茄时间。我发现1个番茄时间的预估通常是准确的，但是如果我给出2个3个番茄时间，这项任务通常会不准，可能多也可能少。而定位bug是最不可预估的，有时候花上3个番茄时间都查不出来。需求如果明确也相对比较好预估，如果作优化的话就比较难。目前我只试行了一周，得到的数据还不算准确，需要再观察一段时间。</p> 
<p>总结这一周的蕃茄工作法试行，我每天大概有9个可以完全集中精神的番茄时间，算上用来作计划的那个蕃茄，共有10个。看起来每天可以利用的时间不算多，蕃茄在这第一个星期里面并没有提高我的生产效率，但是蕃茄令我心情愉悦，我知道自己每天都干了什么，而且劳逸结合使我不容易疲劳，蕃茄的优势正在于此，能使我专注于自己的工作而不是整天被邮件和IM骚扰，而且更好地做出任务计划和时间管理。</p> 
<p>蕃茄的劣势很明显，我必须每天都做记录，我必须一次次去开启一个新的番茄时间，必须在这个时间内集中精神，不能中断，如果中断了我必须放弃这个番茄时间，不能记录下来，也就是说，一切靠自觉。目前来说我上周的最后两天不是很自觉，有几个番茄时间其实已经被别人打扰了，但是我看剩下几分钟于是就记录为一个番茄时间，但其实并没有连续地集中精神在工作上，不能算数。</p> 
<p>但是总体而言，我还是挺喜欢蕃茄工作法的，毕竟这是唯一一个我看到的，具体可行的时间管理办法。</p> 
<p><strong>蕃茄工作法这本书可以到官网下载：<a href="http://www.pomodorotechnique.com/book/">官网</a> | <a href="http://www.pomodorotechnique.com/download/pdf/ThePomodoroTechnique_v1-3.pdf">直接下载PDF</a></strong></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #46 Josh Clark - &#x300A;&#x89E6;&#x52A8;&#x4EBA;&#x5FC3;&#x300B;</title>
        <link>https://justinyan.eth.limo/41E5A02F-79E1-4A28-BDAC-715ABF64895F/</link>
        <guid>https://justinyan.eth.limo/41E5A02F-79E1-4A28-BDAC-715ABF64895F/</guid>
        <pubDate>Mon, 17 Dec 2012 13:33:54 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/12/tapworthy.jpg" /></p> 
<p>11年电子工业出版社出版的这本书，现在才读到真有点相见恨晚。不过如同所有「有道理的废话」一般，这本书固然给出了一些iPhone App设计的指导意见，但接受与否就因人而异了。对我来说，我觉得这本书是比较中肯的，大多数都是业界已经公认可行的设计意见。</p> 
<p>本书介绍了iOS提供的常用控件的用法及其背后的设计原理，对于iOS设计入门而言非常实用，而有些藏得较深的功能，即使是老用户也不一定能知道得全。比方iOS点击顶部Statusbar可以滚动TableView回到顶部的功能有些开发同事还没有发觉到，而我自己也不知道辅助功能选项里面有设置为黑白的功能，设计师可以用来检测App设计的对比度。所以即使是老用户，看看这本书还是有些收获的，可以知其然且知其所以然。像为什么较长时间的等待使用进度条比起使用Loading菊花要好之类的设计意见都是可以很好地改善用户体验的细节。</p> 
<p>这本书的中译本翻译得不错，本地化做得挺好。像Activity Indicator就被译成「菊花转」，WTF Button就被译成「搞什么飞机」按钮等，令人会心一笑。意译较原文有差的地方会给出原文，读者可以自己对照，不至找不回原意。</p> 
<p>作者在讲述设计原理的时候也结合了大量优秀的App作为例子，使得论述不会空洞无力，也就是「吹水吹得有料」。不过毕竟属于「吹水」一类，「成王败寇」，成功的应用要找亮点很容易，失败的应用要说它不好也挺简单。作者谈了Reeder的优点也指出了Reeder过度修改标准控件导致表意不明的缺点，意见很客观，吹得很好，至于信与不信接受与否就交给读者自己去判断了。</p> 
<p>断断续续读完这本书，确实给我带来一些思考，我对照着书里的理论去反思我做过的或者正在做的App，发现了一些问题，也发现了一些不同。现实需要妥协的东西实在太多，我觉得设计师追求也许不是尽善，或许只不过是一种平衡罢了。</p> 
<p>总而言之我觉得这本书很适合从事iOS开发的人去读，无论是开发是设计是产品，都应该了解iOS这个平台一些基本的设计原理、用户习惯。书的内容现在来看已经有点旧了，书里iOS 4是最新的系统，现在读还是可以的，通用的控件和思想没有变，不过过几年就无法预知了。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6307;&#x5F39; &#x5CB8;&#x90E8;&#x771F;&#x660E; &#x300C;Flower&#x300D;</title>
        <link>https://justinyan.eth.limo/A007E796-8DA2-4F84-A183-56F421297222/</link>
        <guid>https://justinyan.eth.limo/A007E796-8DA2-4F84-A183-56F421297222/</guid>
        <pubDate>Sun, 25 Nov 2012 16:19:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Youku:</p> 
<p><object width="600" height="500" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" align="middle"><param name="src" value="http://player.youku.com/player.php/sid/XNDc5ODE2MTQw/v.swf" /><param name="allowfullscreen" value="true" /><param name="quality" value="high" /><param name="allowscriptaccess" value="always" /></object></p> 
<p>Youtube:</p> 
<p><iframe loading="lazy" width="600" height="500" src="http://www.youtube.com/embed/yZkl12eW8PA" frameborder="0" allowfullscreen></iframe></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #45 &#x674E;&#x78A7;&#x534E; - &#x300A;&#x9738;&#x738B;&#x522B;&#x59EC;&#x300B;</title>
        <link>https://justinyan.eth.limo/1B112358-A91F-4875-8ED4-1F4AD639E909/</link>
        <guid>https://justinyan.eth.limo/1B112358-A91F-4875-8ED4-1F4AD639E909/</guid>
        <pubDate>Tue, 06 Nov 2012 22:13:36 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/11/452809f85c7d460ea47442f90bb9f061.jpg" /></p> 
<p>远钟入夜，北平的故事一百年。</p> 
<p>初读《霸王别姬》，只觉干净，利落，语言拿捏恰到好处，读罢前两节已自不能罢休。随着情节展开，段小楼（小石子）和程蝶衣（小豆子）坎坷曲折的人生之路交织缠绵，兴与衰，成与败。故事从民国到日战，从解放到文革，从新世到终老；两人跌跌荡荡，风光到霸王一时，不可一世；各自兴兴衰衰，末路到虞姬刎颈，四面楚歌。</p> 
<p>全书首尾呼应，令人回味。故事是男男之恋，以新旧社会交替为故事时间，通过民国到抗日，内战到解放，文革到毛逝等几个大事件动荡故事的起伏。每个时期又有各自的小事件小冲突，读来只觉高潮迭起，手不释卷。</p> 
<p>故事主场景在北平，随故事发展在最后有所转移。93年上映的同名电影《霸王别姬》也是由作者亲自改编而成的剧本，据说这部小说一开始是电视剧的剧本，后来多次修改后成小说，只不知我所读的版本是哪个了。（百度百科：http://baike.baidu.com/view/8506.htm#sub5395582）</p> 
<p>但是小说中镜头的转移和故事的巧妙展开是和电影的手法很像的。如：</p> 
<blockquote>
 <p>待 往 前 走 ， 又 更 熱 鬧 了 。 有 說 書 的 、 變 戲 法 的 、 摔 跤 的 、 抖 空 竹 的 、 打 把 式 的 、 翻 觔 斗 的 、 葷 相 聲 的 、 拉 大 弓 的 、 賣 大 力 丸 的 、 演 硬 氣 功 的 、 還 有 拔 牙 的 ……  艷 紅 找 到 她 要 找 的 人 了 。</p>
</blockquote> 
<p>一个排比的手法，在想象的场景转变之时巧妙地带出角色此行目的。时间的过度上也有类似电影的手法：</p> 
<blockquote>
 <p>日子过去了。就这样一圈一圈的在院子中走着，越来越快，总是走不完。棍子敲打突地停住，就得挺住亮相。一两个瘫下来，散漫地必吃上一记。到了稍息，腿不自已地在抖。好象。好累。</p>
</blockquote> 
<p>轻而易举地，在同一个空间，加载了不同的时间。这样简洁的叙事使得全书看下来毫不觉得啰嗦，只沉浸在故事的发展和冲突中大呼过瘾。这部小说的中心在于两位男性主角段小楼和程蝶衣的感情纠葛。一个霸王一个虞姬，虞姬自小便钟情于霸王。</p> 
<p>所谓正常不过是多数人都在做的事情罢了，正常与不正常不能代表对与错，对与错本身也不是绝对的，道德原本是对对与错的探索，但是道德也不是绝对的。看过文革的故事就知道了。</p> 
<p>李碧华爱写畸恋，这本身就是小说的一个冲突，再加上纠缠不清你来我往，仿佛船行大海，时而风平浪静，时而骇浪滔天。《霸王别姬》里头最精彩的描写要属“女性”心理描写了。程蝶衣虽是男性，但心女的。程蝶衣和段小楼的元配之间纠葛几十年争斗几十年的嫉恨，可谓纸上活人，生生般演在你眼前。看书的时候我就感慨，电影中要一个男人去如此这般饰演这个角色，对演技的要求实在太苛刻。</p> 
<blockquote>
 <p>“此 時 ， 一 柄 紫 竹 油 紙 傘 撐 過 來 ， 打 在 小 樓 頭 上 。 是 蝶 衣 。 傘 默 默 地 遮 擋 著 雨 。 兩 個 人 ， 又 共 用 一 傘 。 大 師 哥 的 影 兒 回 來 了 ， 他 仍 是 當 頭 兒 的 料 ， 他 是 他 主 子 。 彼 此 諒 宥 ， 一 切 冰 釋 。 什 麼 也 沒 發 生 過 。 真 像 是 夢 裡 的 洪 荒 世 界 。”</p>
</blockquote> 
<p>这是爱。</p> 
<blockquote>
 <p>“菊仙急得泪盈于睫，窘，但为了男人，她为了他，肺腑被一只长了尖利指爪的手在刺着、撕着、掰着，有点支离破碎，为了大局着想，只隐忍不发：“你帮小楼过这关。蝶衣，我感激你！” 　　蝶衣也很心焦，只故作姿态，不想输人，也不想输阵。 ”</p>
</blockquote> 
<p>这是恨。</p> 
<blockquote>
 <p>“受惊过度的蝶衣，瞪大了眼睛，极目不见尽头。他同死人一起。他也等于死人。墓地失控，在林子涑涑地跑，跑，跑。仓皇自他身后，企图淹没他。他跑得快，淹得也更快。跌跌撞撞地，逃不出生天。蝶衣虚弱地，在月亮下跪倒了。像抽掉了一身筋骨，他没脊梁，他哈腰。是他听觉的错觉，轰隆一响，趴唯一声，万籁竟又全寂，如同失聪。 　　人在天地中，极为渺小，子然一身。浸淫在月色下。他很绝望。一切都完了。”</p>
</blockquote> 
<p>这是绝望。</p> 
<p>李碧华的文字清秀绮丽，既有秋风扫落叶般利落，又有杨柳醉春风似柔美，成语雅句信手拈来，潇潇洒洒，字字珠玑。因《霸王别姬》方知所谓语言，实当如此。</p>
        ]]></description>
    </item>
    
    <item>
        <title>iOS&#x6570;&#x636E;&#x6301;&#x4E45;&#x5316;&#x5B58;&#x50A8;</title>
        <link>https://justinyan.eth.limo/B496A990-0D8D-4008-8384-E0E95265D5FE/</link>
        <guid>https://justinyan.eth.limo/B496A990-0D8D-4008-8384-E0E95265D5FE/</guid>
        <pubDate>Thu, 01 Nov 2012 17:08:58 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>本文中的代码托管在github上:<a href="https://github.com/WindyShade/DataSaveMethods">https://github.com/WindyShade/DataSaveMethods</a> </em><br /> 相对复杂的App仅靠内存的数据肯定无法满足，数据写磁盘作持久化存储是几乎每个客户端软件都需要做的。简单如“是否第一次打开”的BOOL值，大到游戏的进度和状态等数据，都需要进行本地持久化存储。这些数据的存储本质上就是写磁盘存文件，原始一点可以用iOS本身支持有NSFileManager这样的API，或者干脆C语言fwrite/fread，Cocoa Touch本身也提供了一些存储方式，如NSUserDefaults，CoreData等。总的来说，iOS平台数据持久存储方法大致如下所列：</p> 
<ul> 
 <li>Raw File APIs</li> 
 <li>UserDefault</li> 
 <li>NSCoding =&gt; NSKeyedArchived</li> 
 <li>Plist File</li> 
 <li>SQLite(使用C语言)</li> 
 <li>CoreData</li> 
</ul> 
<h2>一、Raw File APIs</h2> 
<p>ObjC是C的一个超集，所以最笨的方法我们可以直接用C作文件读写来实现数据存储：<br /> <strong>1. 写入文件</strong></p> 
<p>[code lang="objc"]<br /> // File path<br /> const char * pFilePath = [_path cStringUsingEncoding:NSUTF8StringEncoding];</p> 
<p> // Create a new file<br /> FILE * pFile = fopen(pFilePath, "w+");</p> 
<p> if (pFile == NULL) {<br /> NSLog(@"Open File ERROR!");<br /> return;<br /> }</p> 
<p> const char * content = [_textField.text cStringUsingEncoding:NSUTF8StringEncoding];<br /> fwrite(content, sizeof(content), 1, pFile);<br /> fclose(pFile);<br /> [/code]</p> 
<p><strong>2. 读取文件</strong></p> 
<p>[code lang="objc"]<br /> // File path<br /> const char * pFilePath = [_path cStringUsingEncoding:NSUTF8StringEncoding];</p> 
<p> // Create a new file<br /> FILE * pFile = fopen(pFilePath, "r+");</p> 
<p> if (pFile == NULL) {<br /> NSLog(@"Open File ERROR!");<br /> return;<br /> }</p> 
<p> int fileSize = ftell(pFile);<br /> NSLog(@"fileSize: %d", fileSize);</p> 
<p> char * content[20];</p> 
<p> fread(content, 20, 20, pFile);</p> 
<p> NSString * aStr = [NSString stringWithFormat:@"%s", &amp;content];</p> 
<p> if (aStr != nil &amp;&amp; ![aStr isEqualToString:@""]) {<br /> _textField.text = aStr;<br /> }</p> 
<p> fclose(pFile);<br /> [/code]</p> 
<h2>二、NSUserDefaults</h2> 
<p>但是既然在iOS平台作开发，我们当然不至于要到使用C的原生文件接口这种地步，下面就介绍几种iOS开发中常用的数据本地存储方式。使用起来最简单的大概就是Cocoa提供的NSUserDefaults了，Cocoa会为每个app自动创建一个数据库，用来存储App本身的偏好设置，如：开关音效，音量调整之类的少量信息。NSUserDefaults是一个单例，生命后期由App掌管，使用时用 [NSUserDefaults standardUserDefaults] 接口获取单例对象。NSUserDefaults本质上是以Key-Value形式存成plist文件，放在App的Library/Preferences目录下，对于已越狱的机器来说，这个文件是不安全的，所以<strong>**千万不要用NSUserDefaults来存储密码之类的敏感信息**</strong>,用户名密码应该使用<strong>**KeyChains**</strong>来存储。</p> 
<p><strong>1.写入数据</strong></p> 
<p>[code lang="objc"]<br /> // 获取一个NSUserDefaults对象<br /> NSUserDefaults * aUserDefaults = [NSUserDefaults standardUserDefaults];<br /> // 插入一个key-value值<br /> [aUserDefaults setObject:_textField.text forKey:@"Text"];</p> 
<p> // 这里是为了把设置及时写入文件，防止由于崩溃等情况App内存信息丢失<br /> [aUserDefaults synchronize];<br /> [/code]</p> 
<p><strong>2.读取数据</strong></p> 
<p>[code lang="objc"]<br /> NSUserDefaults * aUserDefaults = [NSUserDefaults standardUserDefaults];<br /> // 获取一个key-value值<br /> NSString * aStr = [aUserDefaults objectForKey:@"Text"];<br /> [/code]</p> 
<p>使用起来很简单吧，它的接口跟 NSMutableDictionary 一样，看它的头文件，事实上在内存里面也是用dictionary来存的。写数据的时候记得用 synchronize 方法写入文件，否则 crash了数据就丢了。</p> 
<h2>三、Plist</h2> 
<p>上一节提到NSUserDefaults事实上是存成Plist文件，只是Apple帮我们封装好了读写方法而已。NSUserDefaults的缺陷是存储只能是Library/Preferences/&lt;Application BundleIdentifier&gt;.plist 这个文件，如果我们要自己写一个Plist文件呢？ 使用NSFileManger可以很容易办到。事实上Plist文件是XML格式的，如果你存储的数据是Plist文件支持的类型，直接用NSFileManager的writToFile接口就可以写入一个plist文件了。 ### Plist文件支持的数据格式有： NSString, NSNumber, Boolean, NSDate, NSData, NSArray, 和NSDictionary. 其中，Boolean格式事实上以[NSNumber numberOfBool:YES/NO];这样的形式表示。NSNumber支持float和int两种格式。</p> 
<h3>读写Plist文件</h3> 
<p><strong>1. 首先创建plist文件:</strong></p> 
<p>[code lang="objc"]<br /> // 文件的路径<br /> NSString * _path = [[NSTemporaryDirectory() stringByAppendingString:@"save.plist"] retain];<br /> // 获取一个NSFileManger<br /> NSFileManager * aFileManager = [NSFileManager defaultManager];<br /> if (![aFileManager fileExistsAtPath:_path]){<br /> // 文件不存在，创建之<br /> NSMutableDictionary * aDefaultDict = [[NSMutableDictionary alloc] init];<br /> // 插入一个值，此时数据仍存在内存里<br /> [aDefaultDict setObject:@"test" forKey:@"TestText"];</p> 
<p> // 使用NSMutableDictionary的写文件接口自动创建一个Plist文件<br /> if (![aDefaultDict writeToFile:_path atomically:YES]) {<br /> NSLog(@"OMG!!!");<br /> }</p> 
<p> [aDefaultDict release];<br /> }<br /> [/code]</p> 
<p><strong>2. 写入文件</strong></p> 
<p>[code lang="objc"]<br /> // 写入数据<br /> NSMutableDictionary * aDataDict = [NSMutableDictionary dictionaryWithContentsOfFile:_path];<br /> [aDataDict setObject:_textField.text forKey:@"TestText"];<br /> if (![aDataDict writeToFile:_path atomically:YES]) {<br /> NSLog(@"OMG!!!");<br /> }<br /> [/code]</p> 
<p><strong>3. 读取文件</strong></p> 
<p>[code lang="objc"]<br /> NSMutableDictionary * aDataDict = [NSMutableDictionary dictionaryWithContentsOfFile:_path];<br /> NSString * aStr = [aDataDict objectForKey:@"TestText"];<br /> if (aStr != nil &amp;&amp; aStr.length &gt; 0) {<br /> _textField.text = aStr;<br /> }<br /> [/code]</p> 
<h2>四、NSCoding + NSKeyedArchiver </h2> 
<p>上面介绍的几种方法中，直接用C语言的接口显然是最不方便的，拿出来的数据还得自己进行类型转换。NSUserDefaults和Plist文件支持常用数据类型，但是不支持自定义的数据对象，好像Cocoa提供了NSCoding和NSKeyArchiver两个工具类，可以把我们自定义的对象编码成二进制数据流，然后存进文件里面，下面的Sample为了简单我直接用cocoa的接口写成plist文件。 如果要使用这种方式进行存储，首先自定义的对象要继承NSCoding的delegate。</p> 
<p>[code lang="objc"]<br /> @interface WSNSCodingData : NSObject&lt;NSCoding&gt;</p> 
<p>然后继承两个必须实现的方法encodeWithCoder:和initWithCoder:</p> 
<p> - (void)encodeWithCoder:(NSCoder *)enoder {<br /> [enoder encodeObject:data forKey:kDATA_KEY];<br /> }</p> 
<p> - (id)initWithCoder:(NSCoder *)decoder {<br /> data = [[decoder decodeObjectForKey:kDATA_KEY] copy];<br /> return [self init];<br /> }<br /> [/code]</p> 
<p>这里data是我自己定义的WSNSCodingData这个数据对象的成员变量，由于数据在使用过程中需要持续保存在内存中，所以类型为copy，或者retain也可以，记得在dealloc函数里面要realease。这样，我们就定义了一个可以使用NSCoding进行编码的数据对象。</p> 
<p><strong>保存数据：</strong></p> 
<p>[code lang="objc"]<br /> - (void)saveData {<br /> if (aData == nil) {<br /> aData = [[WSNSCodingData alloc] init];<br /> }</p> 
<p> aData.data = _textField.text;</p> 
<p> NSLog(@"save data...%@", aData.data);<br /> // 这里init的NSMutableData是临时用来存储数据的<br /> NSMutableData * data = [[NSMutableData alloc] init];<br /> // 这个NSKeyedArchiver则是进行编码用的<br /> NSKeyedArchiver * archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];<br /> [archiver encodeObject:aData forKey:DATA_KEY];<br /> [archiver finishEncoding];<br /> // 编码完成后的NSData，使用其写文件接口写入文件存起来<br /> [data writeToFile:_path atomically:YES];<br /> [archiver release];<br /> [data release];</p> 
<p> NSLog(@"save data: %@", aData.data);<br /> }<br /> [/code]</p> 
<p><strong>读取数据：</strong></p> 
<p>[code lang="objc"]<br /> - (void)loadData {<br /> NSLog(@"load file: %@", _path);<br /> NSData * codedData = [[NSData alloc] initWithContentsOfFile:_path];<br /> if (codedData == nil) return;</p> 
<p> // NSKeyedUnarchiver用来解码<br /> NSKeyedUnarchiver * unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:codedData];<br /> // 解码后的数据被存在一个WSNSCodingData数据对象里面<br /> aData = [[unarchiver decodeObjectForKey:DATA_KEY] retain];<br /> [unarchiver finishDecoding];<br /> [unarchiver release];</p> 
<p> [codedData release];</p> 
<p> if (aData.data != nil) {<br /> _textField.text = aData.data;<br /> }<br /> }<br /> [/code]</p> 
<p>所以其实使用NSCoding和NSKeyedArchiver事实上也是写plist文件，只不过对复杂对象进行了编码使得plist支持更多数据类型而已。</p> 
<h2>五、 SQLite </h2> 
<p>如果App涉及到的数据多且杂，还涉及关系查询，那么毋庸置疑要使用到数据库了。Cocoa本身提供了CoreData这样比较重的数据库框架，下一节会讲到，这一节讲一个轻量级的数据库——SQLite。 SQLite是C写的的，做iOS开发只需要在工程里面加入需要的框架和头文件就可以用了，只是我们得用C语言来进行SQLite操作。 关于SQLite的使用参考了这篇文章：<a href="http://mobile.51cto.com/iphone-288898.htm">http://mobile.51cto.com/iphone-288898.htm</a>但是稍微有点不一样。</p> 
<p>1. 在编写SQLite代码之前，我们需要引入SQLite3头文件：</p> 
<p>[code lang="objc"]<br /> #import &lt;sqlite3.h&gt;<br /> [/code]</p> 
<p>2. 然后给工程加入 libsqlite3.0.dylib 框架。 3. 然后就可以开始使用了。首先是打开数据库：</p> 
<p>[code lang="objc"]<br /> - (void)openDB {<br /> NSArray * documentsPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory<br /> , NSUserDomainMask<br /> , YES);<br /> NSString * databaseFilePath = [[documentsPaths objectAtIndex:0] stringByAppendingPathComponent:@"mydb"];</p> 
<p> // SQLite存的最终还是文件，如果没有该文件则会创建一个<br /> if (sqlite3_open([databaseFilePath UTF8String], &amp;_db) == SQLITE_OK) {<br /> NSLog(@"Successfully open database.");<br /> // 如果没有表则创建一个表<br /> [self creatTable];<br /> }<br /> }<br /> [/code]</p> 
<p>3.关闭数据库，在dealloc函数里面调用：</p> 
<p>[code lang="objc"]<br /> - (void)closeDB {<br /> sqlite3_close(_db);<br /> }<br /> [/code]</p> 
<p>4.创建一个表：</p> 
<p>[code lang="objc"]<br /> - (void)creatTable {<br /> char * errorMsg;<br /> const char * createSql="create table if not exists datas (id integer primary key autoincrement,name text)";</p> 
<p> if (sqlite3_exec(_db, createSql, NULL, NULL, &amp;errorMsg) == SQLITE_OK) {<br /> NSLog(@"Successfully create data table.");<br /> }<br /> else {<br /> NSLog(@"Error: %s",errorMsg);<br /> sqlite3_free(errorMsg);<br /> }<br /> }<br /> [/code]</p> 
<p>5. 写入数据库</p> 
<p>[code lang="objc"]<br /> - (void)saveData {<br /> char * errorMsg;<br /> // 向 datas 表中插入 name = _textFiled.text 的数据<br /> NSString * insertSQL = [NSString stringWithFormat:@"insert into datas (name) values('%@')", _textField.text];</p> 
<p> // 执行该 SQL 语句<br /> if (sqlite3_exec(_db, [insertSQL cStringUsingEncoding:NSUTF8StringEncoding], NULL, NULL, &amp;errorMsg)==SQLITE_OK) {<br /> NSLog(@"insert ok.");<br /> }<br /> }<br /> [/code]</p> 
<p>6. 读取数据库</p> 
<p>[code lang="objc"]<br /> - (void)loadData {<br /> [self openDB];</p> 
<p> const char * selectSql="select id,name from datas";<br /> sqlite3_stmt * statement;<br /> if (sqlite3_prepare_v2(_db, selectSql, -1, &amp;statement, nil)==SQLITE_OK) {<br /> NSLog(@"select ok.");<br /> }</p> 
<p> while (sqlite3_step(statement) == SQLITE_ROW) {<br /> int _id = sqlite3_column_int(statement, 0);<br /> NSString * name = [[NSString alloc] initWithCString:(char *)sqlite3_column_text(statement, 1) encoding:NSUTF8StringEncoding];<br /> NSLog(@"row&gt;&gt;id %i, name %@",_id,name);</p> 
<p> _textField.text = name;<br /> }</p> 
<p> sqlite3_finalize(statement);<br /> }<br /> [/code]</p> 
<h2>五、CoreData</h2> 
<p>大型数据存储和管理。 XCode自带有图形化工具，可以自动生成数据类型的代码。 最终存储格式不一定存成SQLite，可以是XML等形式。 （未完待续。。。）</p> 
<div></div>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4F7F;&#x7528;Shell&#x81EA;&#x52A8;&#x5316;&#x4EE3;&#x66FF;&#x590D;&#x6742;&#x4F4E;&#x6548;&#x7387;&#x7684;&#x5DE5;&#x4F5C;</title>
        <link>https://justinyan.eth.limo/4B364306-4FF8-4DA4-9391-4CEF89AF67AA/</link>
        <guid>https://justinyan.eth.limo/4B364306-4FF8-4DA4-9391-4CEF89AF67AA/</guid>
        <pubDate>Thu, 01 Nov 2012 11:56:55 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>最近某项更新的工作需要做大量重复的工作，一方面在作打包工作时在图形界面上做文件十分繁琐，另一方面在编辑config文件时即使用上正则替换也常常需要作人工检查和C&amp;P，非常浪费时间。于是乎写了个Shell脚本把该自动化的都自动化，以后作这种工作一个命令就解决。</p> 
<p>脚本是在 Mac OS X 上写的，没用到什么特殊的命令，所以类Unix的操作系统应该都能跑。文末有今天编写的脚本。</p> 
<p><strong>Shell需要注意的地方有：</strong></p> 
<ul> 
 <li>#是注释，但是第一句#!/bin/bash是指定shell的解释脚本。</li> 
</ul> 
<p>#!后面带上解释脚本的绝对路径。</p> 
<p>如果脚本第一句不以#!开头则默认使用 Bourne Shell, 即：/bin/sh</p> 
<p>如果第一个非空字符是#但不是#!开头则默认使用 C Shell。</p> 
<p>常用的解释脚本有：</p> 
<p>[code lang="bash"]</p> 
<p>#!/usr/bin/perl</p> 
<p>#!/bin/php</p> 
<p>#!/bin/expect<br /> [/code]</p> 
<ul> 
 <li><strong>参数</strong></li> 
</ul> 
<p>Shell脚本通常都可以用命令+参数的形式调用，如：</p> 
<pre><code>command -p1 - p2 </code></pre> 
<p>在脚本中 $# 代表参数个数，$0 代表程序的名字。所以跟平时习惯不同的是，第一个参数是 $1 而不是 $0。最多支持9个参数， $1 - $9.</p> 
<ul> 
 <li><strong>比较</strong></li> 
</ul> 
<p>Shell的比较常用</p> 
<p>-lt #小于</p> 
<p>-gt #大于</p> 
<p>-eq #等于</p> 
<p>如:</p> 
<p>[code lang="bash"]<br /> if [ "$a" -eq "$b" ];<br /> [/code]</p> 
<p>也可以使用CShell风格的 &lt; , &gt; 但是需要加上双层括号，如：</p> 
<p>[code lang="bash"]<br /> if (("$a" &lt; "$b")) then<br /> [/code]</p> 
<p>还有一些其他的比较方式，不复杂的脚本有 -lt -gt 就足够了。</p> 
<ul> 
 <li><strong>变量</strong></li> 
</ul> 
<p>[code lang="bash"]<br /> aVar=123 #变量赋值<br /> echo $aVar #变量使用<br /> [/code]</p> 
<ul> 
 <li><strong>字符串操作</strong></li> 
</ul> 
<p>字符串操作在作文件命名的时候很有用，可以批量重命名之类的。</p> 
<p>这篇文章有很详细的字符串操作的介绍：http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html</p> 
<ul> 
 <li><strong>条件判断</strong></li> 
</ul> 
<p>[code lang="bash"]<br /> #[]里面一定要有两个空格<br /> if [ $# -lt 3 ];<br /> then<br /> else<br /> fi<br /> #以fi结束每一个if<br /> [/code]</p> 
<ul> 
 <li><strong>脚本</strong></li> 
</ul> 
<p>[code lang="bash"]<br /> #!/bin/bash</p> 
<p>#配置打包后会输出的路径</p> 
<p>targetPath=~/Download/packages/</p> 
<p>echo "****************************************"</p> 
<p>echo "* Pack Language Packages. -- JustinYim *"</p> 
<p>echo "****************************************"</p> 
<p>echo "ouput path: ~/Download/packages/"</p> 
<p>echo "Now Starting..."</p> 
<p>&amp;nbsp;</p> 
<p>if [ $# -lt 2 ];</p> 
<p>then</p> 
<p>echo "Oops, please append the Resources folder's path."</p> 
<p>echo "And the version name like: pack xxx/xxx 1.1.2"</p> 
<p>else</p> 
<p>echo "Resources path: "$1</p> 
<p>echo "Clening target path..."</p> 
<p>rm -rf ~/Downloads/packages/*</p> 
<p>echo "CPing files..."</p> 
<p>#CP Files</p> 
<p>cp -rf $1/*.lproj ~/Downloads/packages/</p> 
<p>cd ~/Downloads/packages</p> 
<p>#中文简体不进行更新，直接删掉</p> 
<p>rm -rf zh_cn.lproj</p> 
<p>&amp;nbsp;</p> 
<p>#zip files</p> 
<p>#新建一个配置文件</p> 
<p>echo '[package]' &gt; conf.conf</p> 
<p>#设置包的起始值，因为之前已经有很多个包在服务器上了</p> 
<p>num=7</p> 
<p>#遍历所有文件</p> 
<p>for filename in $(ls)</p> 
<p>do</p> 
<p>#不对配置文件进行压缩动作</p> 
<p>if [ "$filename" = "conf.conf" ]</p> 
<p>then</p> 
<p>echo "Config file!"</p> 
<p>continue</p> 
<p>fi</p> 
<p>&amp;nbsp;</p> 
<p>#echo "ZIPing "$filename"..."</p> 
<p>#替换掉版本号里面的.字符，如1.1.2改为1_1_2作为文件名用</p> 
<p>ver=${2//./_}</p> 
<p>#去掉文件名后缀，%表示从字符串尾部开始，找到.字符的时候，去掉后面的字符，如：ar.lproj会变成ar</p> 
<p>#如果是 ${filename#.*} 则会变成从头部开始, ar.lproj会变成 lproj</p> 
<p>lang=${filename%.*}</p> 
<p>#设置zip文件的名字</p> 
<p>zipname=x.strings.$lang.$ver.zip</p> 
<p>#复制并压缩x.strings文件</p> 
<p>cp $filename/x.strings x.strings.$lang</p> 
<p>zip $zipname x.strings.$lang</p> 
<p>#echo 'wirting config file...'</p> 
<p>#自动编写配置文件</p> 
<p>echo '[number'$num']' &gt;&gt; conf.conf</p> 
<p>echo 'Id='$((++num)) &gt;&gt; conf.conf</p> 
<p>echo 'PackPath=/xxx/package/'$zipname &gt;&gt; conf.conf</p> 
<p>echo 'Name='$lang'|'$2 &gt;&gt; conf.conf</p> 
<p>echo '' &gt;&gt; conf.conf</p> 
<p>#clean files</p> 
<p>#删掉临时文件</p> 
<p>echo "Remove temp files..."</p> 
<p>rm -rf $filename</p> 
<p>rm x.strings.$lang</p> 
<p>done</p> 
<p>fi<br /> [/code]</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #44 &#x4E1C;&#x91CE;&#x572D;&#x543E; - &#x300A;&#x5E73;&#x884C;&#x4E16;&#x754C;&#x7684;&#x7231;&#x60C5;&#x6545;&#x4E8B;&#x300B;</title>
        <link>https://justinyan.eth.limo/7587E2E8-1A25-4FFB-A048-929CFF80D2EB/</link>
        <guid>https://justinyan.eth.limo/7587E2E8-1A25-4FFB-A048-929CFF80D2EB/</guid>
        <pubDate>Thu, 25 Oct 2012 22:08:07 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/10/uOECE0HnvT-pjUSMs3ThXQ.jpg" /></p> 
<p>这部东野圭吾1995年的作品，使用了一个在当时应该挺新颖的概念——“平行世界”。这个平行有两层意思，其一是两条条路线京滨东北线和山手线在中间有一段平行而驰，以男女主角的邂逅为故事开端，其二则是整部小说在描述的时候分为两条线展开，相互交错，最终会于结局。</p> 
<p>依然是东野一贯的手法，给出很少的线索，随着情节的展开一点点剥开事实的真相。但是这部作品给我感觉没啥太奇特的地方，故事的冲突不够壮观，起伏也不够惊心动魄。一开始我以为是真正的多宇宙科幻类型的小说，结果发现不过是以推理的手法回头找寻事实真相罢了，有点失望。不过故事的展开还是很流畅的，阅读也很轻松，算是闲暇之余的读物吧。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #43 &#x9AD8;&#x94ED; - &#x300A;&#x5929;&#x624D;&#x5728;&#x5DE6;&#x75AF;&#x5B50;&#x5728;&#x53F3;&#x300B;</title>
        <link>https://justinyan.eth.limo/BBE34D4D-F9C7-431E-B562-AA2CE9F93065/</link>
        <guid>https://justinyan.eth.limo/BBE34D4D-F9C7-431E-B562-AA2CE9F93065/</guid>
        <pubDate>Sun, 21 Oct 2012 10:38:35 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/10/8133a-1fm8L.jpg" /></p> 
<p>前两天在<a title="" href="http://mindon.github.com/">Mindon的博客</a>看到<a title="" href="http://mindon.github.com/blog/2012/09/09/genius-on-the-left-madness-on-the-right/">推荐这本书的文章</a>，就随手推了一本到Kindle上。结果跟Mindon一样，一上手就一发不可收拾，一气儿把它读完了。</p> 
<p>这是本以访谈形式记下的精神病人的故事。作者高铭，这本书最初于2009年发表在天涯社区的<a title="" href="http://www.tianya.cn/techforum/content/16/635451.shtml">“莲蓬鬼话”版块</a>。全书分为48篇，每篇一个病例，篇幅都不长，很快可以看完。看最初的几篇以为作者是位精神科医师，其实不是，作者现在某公司任职影视策划总监。2004年到2008年期间，作者通过各种渠道，对一百多名精神病人进行了近距离接触，最终把访谈的草稿整理成书。(via <a title="" href="http://baike.baidu.com/view/3226749.htm">百度百科</a>)</p> 
<p>曾有一句段子“精神病人思维广，弱智儿童欢乐多”，尽管调侃的事实上是“正常人”太多烦恼，但是也表明精神病人看世界时跟“正常人”不同的角度。看完第一篇故事，便以感受到这种有趣，越往后面的故事看则越觉得震撼，甚至恐惧。文章发表在“莲蓬鬼话”版块不是没理由的，有些故事其实还是很唬人的。全书几十个故事外加几个解释性的“篇外篇”，有无趣的有好笑的，有恐怖的也有完全看不懂的。故事光怪陆离，天马行空，不管这些故事是作者自己臆造出来的还是访谈后加工出来的都好，这本书本身已是一部极具想象力的作品，甚至当你代入感太强的时候，还会给你带来心理压力。</p> 
<p>大部分的文字都是对白，这些时而精彩时而俏皮，时而高深时而诡异，叙事过程的流畅使得看故事的人大呼过瘾。其实全书的主旨就一个——“换个角度看世界”。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #42 S. J. Watson - Before I go to sleep</title>
        <link>https://justinyan.eth.limo/26EED56E-62BD-4759-960E-3A6AA2EBB4F9/</link>
        <guid>https://justinyan.eth.limo/26EED56E-62BD-4759-960E-3A6AA2EBB4F9/</guid>
        <pubDate>Mon, 15 Oct 2012 21:41:44 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/10/beforeIGoToSleep.jpg" alt="S. J. Watson Before I go to sleep" /></p> 
<p>疏忽一梦，便二十年。</p> 
<p>主人公 Christine Lucas 醒来的时候以为自己还是年轻的少女，为身边躺着的陌生的男人而恐慌。她患有很罕见的失忆症——只能记得当天发生的事情，一旦熟睡，则记忆全消。她每天都在困惑中醒来，为眼前陌生的房间，为身边陌生的男子而恐慌。他叫Ben，她的丈夫，尽管她毫无记忆。</p> 
<p>一位叫Nash的医生在帮她努力找回记忆，他让Chris把每天发生的事情写在日记里。于是某个「初次」醒来的一天，Chris发现日记封面赫然写着：「DON'T TRUST BEN」。</p> 
<p>这本书事实上是一本悬疑推理小说，尽管内容上与以「刑事案件」为主线的侦探小说不同，手法上仍是同理的。全书共分三个部分：</p> 
<ol> 
 <li>某天醒来，得知自己患有失忆症，Dr. Nash找到Chris，交给她一本日记本。</li> 
 <li>日记的内容。</li> 
 <li>结局。</li> 
</ol> 
<p>日记的内容是主体，每天醒来，Chris都能找回一些许新的记忆，然后写进日记本。这样第二天她仍可以通过阅读记得之前的事情。所有的这些记忆碎片慢慢拼凑出一个现实，一部历史，一场悲剧。</p> 
<p>这样的失忆设定令人想起2004年的一部电影《Momento》，影片的主人公也有「短期失忆症」，只能记住10分钟内的事情。他把所有需要记忆的事物拍成照片，记下线索，串成自己的记忆。这本书则出版于2011年。作者S. J. Watson（1971－）毕业于柏林明翰大学（University of Birmingham），他在写作课上完成了这部作品。由于年代和情节类似，我总认为这部小说不乏参考借鉴前述电影之处，不过以课程学习的处女之作的角度来看，确是难能可贵，而且这部小说情节轻重缓急处理得当，尤其后半部分高潮迭起，环环相扣，反转连连，令人读来废寝忘食，欲罢不能。</p> 
<p>2011年一鸣惊人的处女作，使得S. J. Watson 成为文坛备受瞩目的新人。本书更登上 Sunday Times 和 New York Times 畅销榜，现已被翻译成40+种语言畅销世界各地。</p> 
<p>这本书我看的是英文版，中信的中译本我试读了前面几节，确实觉得这种欧美文学经过转译实在流失了太多东西了。语法差异导致阅读不畅，文化和语法差异导致文字游戏翻译后所剩无几，翻译太过遵循原意则容易生硬，太过本地化则又显得艳俗。相反，日文作品的中译本读来要更觉顺畅，只是自己不懂日语，倒是无法和阅读原作相论了。</p> 
<p>读完这部作品，感觉其中陷进设计还是有些漏洞的，重复的部分和过于拖沓的铺垫也有，但是瑕不掩瑜，仍是一部很吸引人的好作品。昨夜读至妙处，不由睡意全消，硬是看完了全书，但觉背有凉意，情节久久在脑中回荡。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4ECE; Objective-C &#x91CC;&#x7684; Alloc &#x548C; AllocWithZone &#x8C08;&#x8D77;</title>
        <link>https://justinyan.eth.limo/F95BE286-1FD8-42CC-B146-F372CABFE300/</link>
        <guid>https://justinyan.eth.limo/F95BE286-1FD8-42CC-B146-F372CABFE300/</guid>
        <pubDate>Wed, 26 Sep 2012 10:53:51 +0800</pubDate>
        
        
        <description><![CDATA[
            <h2>一、问题起源</h2> 
<p>一切起源于Apple官方文档里面关于单例(Singleton)的示范代码:<a href="https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW32">Creating a Singleton Instance</a>.</p> 
<p>主要的争议集中在下面这一段：</p> 
<p>[objc]static MyGizmoClass *sharedGizmoManager = nil;<br /> + (MyGizmoClass*)sharedManager<br /> {<br /> if (sharedGizmoManager == nil) {<br /> sharedGizmoManager = [[super allocWithZone:NULL] init];<br /> }</p> 
<p> return sharedGizmoManager;<br /> }</p> 
<p>+ (id)allocWithZone:(NSZone *)zone<br /> {<br /> return [[self sharedManager] retain];<br /> }[/objc]</p> 
<p>其中：</p> 
<p>[objc]</p> 
<p>sharedGizmoManager = [[super allocWithZone:NULL] init];</p> 
<p>[/objc]</p> 
<p>这段有另一个版本，不使用 allocWithZone 而是直接 alloc，如下：</p> 
<p>[objc]</p> 
<p>sharedGizmoManager = [[super alloc] init];</p> 
<p>[/objc]</p> 
<p>这就引发了一个讨论，为什么要覆盖allocWithZone方法，到底 alloc 和 allocWithZone 有啥区别呢？</p> 
<p>PS：关于ObjC单例的实现，<a href="https://github.com/venj">@Venj</a> 的<a href="http://cocoa.venj.me/blog/singleton-in-objc/">这篇博文</a>有比较详细的讨论，包括了线程安全的考虑，有兴趣的童鞋可以围观一下。</p> 
<h2>二、allocWithZone</h2> 
<p>首先我们知道，我们需要保证单例类只有一个唯一的实例，而平时我们在初始化一个对象的时候， [[Class alloc] init]，其实是做了两件事。 alloc 给对象分配内存空间，init是对对象的初始化，包括设置成员变量初值这些工作。而给对象分配空间，除了alloc方法之外，还有另一个方法： allocWithZone.</p> 
<p>在NSObject 这个类的<a href="https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html">官方文档</a>里面，allocWithZone方法介绍说，该方法的参数是被忽略的，正确的做法是传nil或者NULL参数给它。而这个方法之所以存在，是历史遗留原因。</p> 
<blockquote>
 <p>Do not override allocWithZone: to include any initialization code. Instead, class-specific versions of init... methods.</p> 
 <p>This method exists for historical reasons; memory zones are no longer used by Objective-C.</p>
</blockquote> 
<p>文档里面提到，memory zone已经被弃用了，只是历史原因才保留这个接口。详细是什么历史原因我没找到，不过后面介绍的内容会稍微涉及到。</p> 
<p>而实践证明，使用alloc方法初始化一个类的实例的时候，默认是调用了 allocWithZone 的方法。于是覆盖allocWithZone方法的原因已经很明显了：为了保持单例类实例的唯一性，需要覆盖所有会生成新的实例的方法，如果有人初始化这个单例类的时候不走[[Class alloc] init] ，而是直接 allocWithZone， 那么这个单例就不再是单例了，所以必须把这个方法也堵上。allocWithZone的答案到此算是解决了，但是，问题是无止境的。</p> 
<p>这里引出了另外一个问题： What the hell is Memory Zone?</p> 
<h2>三、NSZone</h2> 
<p>Apple官方文档里面就简单的几句，吝啬得很：</p> 
<p>[objc]NSZone</p> 
<p>Used to identify and manage memory zones.</p> 
<p>typedef struct _NSZone NSZone;</p> 
<p>Availability</p> 
<p>Available in OS X v10.0 and later.</p> 
<p>Declared In</p> 
<p>NSZone.h[/objc]</p> 
<p>CocaDev的wiki就写得详细的多了，原文地址在这里：<a href="http://cocoadev.com/wiki/NSZone">http://cocoadev.com/wiki/NSZone</a></p> 
<p>大意上是说NSZone是Apple用来分配和释放内存的一种方式，它不是一个对象，而是使用C结构存储了关于对象的内存管理的信息。基本上开发者是不需要去理会这个东西的，cocoa Application使用一个系统默认的NSZone来对应用的对象进行管理。那么在什么时候你会想要有一个自己控制的NSZone呢？当默认的NSZone里面管理了大量的对象的时候。这种时候，大量对象的释放可能会导致内存严重碎片化，cocoa本身有做过优化，每次alloc的时候会试图去填满内存的空隙，但是这样做的话时间的开销很大。于是乎，你可以自己创建一个NSZone，这样当你有大量的alloc请求的时候就全部转移到指定的NSZone里面去，减少了大量的时间开销。而且，使用NSZone还可以一口气把你创建的zone里面的东西都清除掉，省掉了大量的时间去一个个dealloc对象。</p> 
<p>总的来说，当你需要创建大量的对象的时候，使用NSZone还是能节省一些时间的，不过前提是你得知道怎么去用它。这篇wiki里面也写了NSZone的用法，感兴趣的童鞋可以看看，不过另一篇<strong>2002年</strong>的文章就说开发者已经不能创建一个真正的NSZone了（看来也许这就是历史原因了），只能创建main zone的一个child zone。文章在这里：<a href="http://www.cocoabuilder.com/archive/cocoa/65056-what-an-nszone.html#65056">http://www.cocoabuilder.com/archive/cocoa/65056-what-an-nszone.html#65056</a> Timothy J.wood 的回答。</p> 
<p>Timothy还讲到如果可以使用NSZone的话，多个对象在同一时间alloc可以减少分页使用，而且在同一个时间dealloc可以减少内存碎片。想必后来Apple在这方面是做了处理了，对开发者透明，无需开发者自己去做。</p> 
<h2>四、结论</h2> 
<p>allocWithZone不被Apple鼓励使用，基本上多数时候程序员也不需要自己去管理自己的zone。当然多了解一些东西总是好的嘛。</p> 
<div></div>
        ]]></description>
    </item>
    
    <item>
        <title>&#x300C;&#x6307;&#x5F39;&#x300D;&#x62BC;&#x5C3E; Wings~ You are the hero &#x67AB;&#x5F71;&#x7FFB;&#x5F39;</title>
        <link>https://justinyan.eth.limo/659AE467-15F2-4F31-AFE7-68F3FDA31D65/</link>
        <guid>https://justinyan.eth.limo/659AE467-15F2-4F31-AFE7-68F3FDA31D65/</guid>
        <pubDate>Fri, 22 Jun 2012 15:54:08 +0800</pubDate>
        
        
        <description><![CDATA[
            <h3><strong>优酷版的：</strong><br /> <object width="600" height="500" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://player.youku.com/player.php/sid/XNDE3OTMyNTcy/v.swf" /><param name="allowfullscreen" value="true" /><param name="quality" value="high" /><param name="allowscriptaccess" value="always" /></object></h3> 
<h3><strong>Youtube版的：</strong><br /> <iframe loading="lazy" src="http://www.youtube.com/embed/07HG-mgkyFY" frameborder="0" width="600" height="450"></iframe></h3>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #41 Jeff Johnson - &#x300A;&#x8BA4;&#x77E5;&#x4E0E;&#x8BBE;&#x8BA1;&#x300B;</title>
        <link>https://justinyan.eth.limo/5B5D2F84-FFB6-4334-90A6-850AC04C6B7E/</link>
        <guid>https://justinyan.eth.limo/5B5D2F84-FFB6-4334-90A6-850AC04C6B7E/</guid>
        <pubDate>Sat, 02 Jun 2012 18:16:38 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/06/v2-9f4433b4a4bcac8d938daef7e51559c3_1440w.jpg" /></p> 
<p>《认知与设计——理解UI设计准则》，书名初见，会以为是偏视觉设计的方法指引，其实本书是以心理学的角度讲述计算机系统的交互设计原理的。作者Jeff Johnson本身拥有耶鲁和斯坦福的心理学学位，著有畅销书《GUI禁忌》。</p> 
<p>我看的是图灵的版本，译者是老程序员 @yining 张一宁。书本身是针对计算机交互来写的，用了很多计算机系统的例子来作比，译本中除了解释计算机专业的部分要用到计算机术语，在解释心理学原理的时候写得也颇有“Geek”的味道。比如第8章解释人的注意力很容易转移的时候，把注意力比作稀缺资源，容易被释放并转移到更重要的信息上。这里有点像C/C++释放资源的感觉。</p> 
<p>这样的语言风格决定了这本书表达清晰，逻辑分明的特点。但于此同时也带来一个问题——多数的读者是没受过计算机专业训练的，大量的计算机术语会使人望而却步。当然，作者与译者或许都认为，软件开发者无论是测试、运维、后台还是前端，都至少应该要了解简单的心理学，基本的交互原理。可惜这理想很丰满，现实却很骨感，相信多数程序员都对交互和设计兴趣不大——虽然我也是程序员——而设计师们则因为看不懂这些术语亦兴味索然。</p> 
<p><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1286" title="IMG_0608" src="http://www.justinyan.me/wp-content/uploads/2012/06/IMG_06081-300x300.jpg" alt="" width="300" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2012/06/IMG_06081-300x300.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2012/06/IMG_06081-150x150.jpg 150w, https://cdn.justinbot.com/wp-content/uploads/2012/06/IMG_06081-1024x1024.jpg 1024w, https://cdn.justinbot.com/wp-content/uploads/2012/06/IMG_06081.jpg 1936w" sizes="(max-width: 300px) 100vw, 300px" /></p> 
<p>不过于我个人而言，读这本书仍感到受益匪浅。尽管生物神经的解释有时比较枯燥，但至少让没受过美术和设计专业训练的我知道了格式塔，知道了基本交互原理，还有些从未接触过的想法。在平时的工作中，自己很多时候只是自然而然就这么做了，但是并不知道为什么，解释为什么就是一种理论总结，借助这本书的理论，我得以在项目中与成员沟通时更好地解释自己的想法。</p> 
<p>我现在看书的时间基本安排在中午休息的时候，不比之前在学校的清闲，现在看书只求能让自己在工作的忙碌与混沌中看到一丝灵感的光亮，代码诚可贵，想法价更高。无论架构也好设计也罢，无论营销也好推广也罢，混沌的脑袋出不来好的想法。近期看佐藤的整理术有所受益，再看这本认知与设计又有受益，心情不由也跟着好起来，工作也跟着有热情了，不由感慨心情对自己状态调整重要性。我觉得程序员们不妨多尝试进行技术外的阅读（或者画画或者其他不同于技术的活动），即使只是作为心理调整也好。</p> 
<p><span style="color: #888888;">===============以下是读书笔记===============</span></p> 
<p>
 <!--more--></p> 
<p>Chapter 1.我们感知自己的期望</p> 
<p>我们自身的经验，所处的环境以及我们做事的目标都会影响我们的感知。所以在设计中我们必须：<br /> 1.避免歧义（如：不要用跟用户经验不同的表达）<br /> 2.保持一致（如：不要随意更换元素经常出现的位置）<br /> 3.理解目标（如：提前预知用户的目标而作优化，预读下一页等）</p> 
<p>Chapter 2.为观察结构优化我们的视觉</p> 
<p>本章简单讲述了格式塔（Gestalt）原理，都是我们平时显而易见但是缺少总结的方法。</p> 
<p>如，接近性原理——我们会把接近的物体视为同一组。类似的还有相似性、连续性、封闭性、对称性、主体/背景和共同命运（如一起运动的物体看作一组，不动的为一组）原理。有兴趣深入研究的童鞋可以看看[德]库尔特 考夫卡的《格式塔心理学原理》（Principle of Gestalt Psychology）。</p> 
<p>Chapter 3.我们寻找和使用视觉结构</p> 
<p>视觉结构能提高我们阅读速度，浏览长数字的能力。本章讲述了视觉结构在实际设计的运用，如：把大段文字分结构显示（ul li样式），把长数字分成几段输入（银行卡帐号）等。</p> 
<p>Chapter 4.阅读不是自然的</p> 
<p>本章首先解释我们的阅读能力不是与生俱来的，而是后天培养的。熟练的无意识的特征驱动阅读和费劲的语境驱动阅读是设计中需要注意的。在设计的时候我们应该支持用户阅读而不是干扰，出现的文字尽量短小精悍，尽量以图代文。</p> 
<p>Chapter 5.色觉是有限的</p> 
<p>本章解释了人类眼睛成像中重要的视锥细胞和视杆细胞的工作主次，得出视觉是为边缘反差而不是为亮度优化的结论。提示我们在设计的时候，应当注意区分色块反差，做到不干扰用户的视觉。</p> 
<p>Chapter 6.我们的边界视力很糟糕</p> 
<p>我们的视域范围有中央凹和边界视野，我们大多数的注意力都放在中央凹上面，眼球会根据环境自动做快速移动扫描，从而使得我们的眼睛能很快转移到另一个物体上面。由于阅读是后天的，所以基本上需要中央凹的持续注意来支持，这也是我们阅读时感到比看图更费力的原因之一。设计上我们应该尽量避免把重要信息放在边界视野上面，这有可能使信息进入用户盲点。</p> 
<p>Chapter 7.我们的注意力有限，记忆力也不完美</p> 
<p>记忆有短期记忆和长期记忆之分。<br /> 短期记忆低容量而且高度不稳定。这提示我们在设计时应该尽量避免大量的模式运用，在多步操作的时候应该时时给予用户提示信息，否则用户很可能进入下一步就忘记上一步做了什么。<br /> 长期记忆的特点是容易出错、印象派、可修改的。长期记忆需要我们使用工具去加强它，而设计中应该避免造成用户长期记忆的负担。比方现在多数的系统需要我们记住一长串很难记的密码。</p> 
<p>Chapter 8.注意力对思考以及行动的限制</p> 
<p>我们专注目标，很少注意到工具。当我们在进行一项任务的时候，我们通常只关心这项任务怎么实现而且实现得怎样了，至于工具本身长啥样我们通常不关心，而作为工具本身，我们在设计的时候就应当让它处于背景，减少对用户目标的干扰。<br /> 我们的思考周期：目标、执行和评估。几乎我们所有的任务都可以这么划分。制定目标，执行目标，最后评估结果。<br /> 这样的分析方法有助于我们在设计的时候去仔细分析用户行为的每个阶段，找出关键点，进行设计。<br /> 由于我们的注意力很容易转移，很经常我们会忘记收尾工作，像在网吧登录SNS忘记退出就走了之类的。这就需要我们在设计的时候，尽量让机器作收尾工作，当用户忘记的时候要给予提醒。这点上，iOS的app没有“退出”的概念，就是系统帮助用户管理内存和进程的一个例子。</p> 
<p>Chapter 9.识别容易，回忆很难</p> 
<p>本章先从心理学的角度简述识别一个图形或者一个人的脸很容易，而从自己的脑袋里去回忆某件事情却很难。对于设计来说，由于识别很容易，我们可以采用缩略图方式来展示相册。</p> 
<p>Chapter 10.经验中学习很容易，解决问题和计算很难</p> 
<p>我们的大脑分为<br /> 旧脑-&gt;中脑-&gt;新脑<br /> 三个部分。由低级到高级。<br /> 操作已经学会的动作很简单，学会新的动作很难。对于设计来说，应该尽量引入用户熟悉的元素，如Apple最常用的拟物设计，还有触屏的流行。</p> 
<p>Chapter 11.许多因素影响学习</p> 
<p>当操作专注于任务、简单和一致时，我们学得更快。另外文案设计应该尽量让用户感到熟悉和一致，有助于用户学习。</p> 
<p>Chapter 12.我们有时间要求</p> 
<p>这对于程序来说，性能要求是其一，交互响应也是很重要的一环。这一章讲述了人类对于常见情况的反应时间，对于设计的感性分析很有帮助。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #40 &#x4F50;&#x85E4;&#x53EF;&#x58EB;&#x548C; - &#x300A;&#x4F50;&#x85E4;&#x53EF;&#x58EB;&#x548C;&#x7684;&#x8D85;&#x6574;&#x7406;&#x672F;&#x300B;</title>
        <link>https://justinyan.eth.limo/F9D6D145-1E37-4716-9EC5-3CE1711D2E89/</link>
        <guid>https://justinyan.eth.limo/F9D6D145-1E37-4716-9EC5-3CE1711D2E89/</guid>
        <pubDate>Thu, 24 May 2012 14:14:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2012/05/v2-ccd0985d7eb3c46d2fc8a6a78ead0472_1440w.jpg" alt="" /></p> 
<p>又一本自我提升类的书，作者佐藤可士和是日本设计业界和广告业界的风云人物，跨足广告平面设计、产品设计、空间设计，被誉为“能够带动销售的设计魔术师”。这本书是佐藤的第一本著作，以“整理”为关键词，总结了作者在工作和生活中运用的各种方法，称为“超整理术”。书本如同作者的风格一样简洁、干净，章节由浅入深，层层递进，阅读起来很轻松。</p> 
<p>整理术的应用范围可以是工作、学习、生活等多方多面。想象一下我们自己每天生活的环境，可能很多人自己的房间是乱糟糟的，工作台摆了一大堆有用没用的东西，电脑桌面满屏皆是，文档命名乱七八糟。一旦我们的工作项目多起来，很容易就手足无措心力交瘁，天天加班仍然搞不定手头的事情。佐藤可士和的超整理术，通过空间、信息和思考三个层次的整理，让你摆脱混沌的状态，轻松应对工作与生活。</p> 
<p>本书讲述空间整理只是该整理术的基础，通过日常小事的整理积累整理术，当面对具体工作项目的时候，就可以运用更高级的信息整理术和思考整理术去挖掘本质解决问题。句话光这么讲估计没有一个读者会从心里信服。本书在讲述整理术的时候，引用了大量的作者亲身经历的项目作为事例进行佐证，使读者可以更好地理解整理术的具体含义。正如从书本一开始就说的，传达信息是一件非常困难的事情，通常你认为对方已经完全理解你的意思了其实不然，对方根本就不懂你在说什么。所以书里提出要进行大量问诊和大胆假设，用以采集信息和确认观点。这些方法用于生活和工作都是大有裨益的。</p> 
<p>本书分三个层次讲述整理术。从最简单最容易执行的空间整理术（房间、办公桌、背包等有形之物的整理，重点是给所有事物排好优先次序，舍弃并不需要的东西，营造干净的空间），到高级点的信息整理术（通过不断的问诊和大胆的假设，导入观点，挖掘事物本质，然后拍优先级），再到进阶的思考整理术（要整理思考，首先要将思绪信息化，然后信息整理再排优先级）。可以看到整理术最基本的就是排好优先次序，只是更为高级的信息和思考需要更多技巧和锻炼去转化提取。</p> 
<p>看这本书的时候，第一个让我觉得受益的就是作者说的，简单的锻炼积累，改善了他的健康，使他不再赖床，工作状态也达到最佳。这就是通过整理术，从赖床嗜睡的表象找到问题的根源在于健康状况不佳，着手于根源去解决问题。对我而言，赖床嗜睡是我急需解决的问题，于是直接套用，加强身体锻炼。</p> 
<p>其次，这一类自我提升的书，通常看上去每一句都挺有道理的，但是书中的内容却不一定适合于每一个人，甚至其实对大多数人来说都是不适合的（否则疯狂英语一类的书早让全中国学生的英语变得跟母语一样好了）。问题不在于这个方法本身，而在于自己本身，就像时间管理，人不可能真的去管理时间，管理的其实是自己而已。对我而言，看这一类的书能够在我忙不过来陷入混沌状态的时候一下子拉出阴影。即使，书中所说的方法我第二天就忘得一干二净又有什么所谓呢？于我而言，能够逃离混沌的状态已经是莫大的感激了。</p> 
<p>最后，这本书推荐的整理术作为比较广泛适用的工具类方法，事实上对我来说还是比较有用的，至少我目前已经保持了我的办公区域两天的整洁，整个桌面除了电脑、笔、水杯之外，其他物品一律被我清除了，工作时的感觉也清爽了许多。或许这只是心理作用，但是无可否认，心理作用还是蛮重要的。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x89E3;&#x51B3;&#x201C;&#x540C;&#x4E2A;UIView&#x91CC;&#x9762;&#x6709;&#x591A;&#x4E2A;UITableView&#x7684;&#x65F6;&#x5019;&#x4E0D;&#x80FD;&#x70B9;&#x51FB;&#x72B6;&#x6001;&#x680F;&#x56DE;&#x5230;&#x9876;&#x90E8;&#x201D;&#x95EE;&#x9898;</title>
        <link>https://justinyan.eth.limo/C1B3882B-42AE-494C-ADC7-962BADB2C624/</link>
        <guid>https://justinyan.eth.limo/C1B3882B-42AE-494C-ADC7-962BADB2C624/</guid>
        <pubDate>Sun, 01 Apr 2012 19:18:08 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>有时候我们会在一个UIView里面放多个UITableView或者ScrollView。</p> 
<p>如果我们在IB里面加入这些UITableView，通常我们也会把delegate和datasource也关联到同一个ViewController里面。这就是问题所在了。把UITableView里面的scrollToTop方法设为YES(默认是YES)就能使得该UITableView在点击顶部状态栏的时候把table滚到顶部。但是多个table同时关联到controller的时候，这个方法就失效了。</p> 
<p>解决的方法很简单，不要让这些UITableView同时visible，一个时间内只让其中一个visible就行了。可以设置</p> 
<p>[code lang="objc"]<br /> talbeView1.scrollsToTop = NO;</p> 
<p>tableView2.scrollerToTop = YES;</p> 
<p>[/code]<br />  </p> 
<p>或者</p> 
<p>[code lang="objc"]<br /> talbeView1.hidden = NO;</p> 
<p>tableView2.hidden = YES;</p> 
<p>[/code]</p> 
<p> </p> 
<p>具体就看自己的app的场景了</p>
        ]]></description>
    </item>
    
    <item>
        <title>iOS&#x5BFC;&#x822A;&#x680F;&#x6837;&#x5F0F;&#x4FEE;&#x6539;</title>
        <link>https://justinyan.eth.limo/0F7C56BD-0C46-48E2-83C9-A77E1BDABC38/</link>
        <guid>https://justinyan.eth.limo/0F7C56BD-0C46-48E2-83C9-A77E1BDABC38/</guid>
        <pubDate>Sun, 01 Apr 2012 19:08:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>在做iOS开发的时候，如果是Navigation Based的app，我们常常要修改到导航栏的样式（标准样式看久了也就丑了），包括修改导航栏的背景，修改左右(leftButton, rightButton)按钮的样式。修改的方法其实挺简单。</p> 
<p><strong>一、修改导航栏背景</strong></p> 
<p>iOS5以上的版本，Apple官方提供了更换导航栏背景的方法：</p> 
<p>[code lang="objc"][self.navigationController.navigationBar<br /> setBackgroundImage:[UIImage imageNamed: @"yourNavBgHere"]<br /> forBarMetrics:UIBarMetricsDefault]；[/code]</p> 
<p>为了确保运行的版本在5.0以上，我们需要加一句判断：</p> 
<p>[code lang="objc"]// NavigationBar background<br /> // * iOS 5 only *<br /> if ([[[UIDevice currentDevice] systemVersion] floatValue] &gt; 4.9) {<br /> [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed: @"yourNavBgHere"] forBarMetrics:UIBarMetricsDefault];<br /> }[/code]</p> 
<p>对于iOS4以下版本我们则需要重载UINavigationBar的drawRect方法。</p> 
<p>[code lang="objc"]@implementation UINavigationBar (CustomImage)</p> 
<p>- (void)drawRect:(CGRect)rect {<br /> UIImage *image = [UIImage imageNamed: @"yourNavBgHere"];<br /> [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];<br /> }</p> 
<p>@end[/code]</p> 
<p><strong>二、修改导航栏的左右按钮</strong></p> 
<p>iOS的NavigationController自带有左右两个按钮，但是默认的style也就那样，通常需要自定义左右按钮的样式。</p> 
<p>[code lang="objc"]<br /> rightButton = [[UIButton alloc] init];<br /> [rightButton setImage:[UIImage imageNamed:@"yourImgHere"] forState:UIControlStateNormal];<br /> rightButton.frame = CGRectMake(0, 0, 51, 30);<br /> [rightButton addTarget:self action:@selector(yourMethodHere:) forControlEvents:UIControlEventTouchUpInside];<br /> rightButton.exclusiveTouch = YES; // 如果你同时放上左右两个button，最好加上这句使得两个按钮不会同时被按下</p> 
<p>self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:rightButton] autorelease];<br /> [/code]</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x300C;&#x6BCF;&#x5468;&#x8BFB;&#x4E66;&#x300D; &#x7B2C;&#x4E09;&#x5341;&#x4E09;&#x2014;&#x2014;&#x56DB;&#x5341;&#x5468;&#x4E66;&#x5355;</title>
        <link>https://justinyan.eth.limo/7CC4E0EB-F8BF-4F56-8296-94F1584EE853/</link>
        <guid>https://justinyan.eth.limo/7CC4E0EB-F8BF-4F56-8296-94F1584EE853/</guid>
        <pubDate>Thu, 22 Mar 2012 22:03:53 +0800</pubDate>
        
        
        <description><![CDATA[
            <blockquote>
 <p><strong>1.第三十三周 亦舒——《胭脂》</strong></p> 
 <p>三个女人一台戏。</p> 
 <p><strong>2.第三十四周 三岛由纪夫——《爱的饥渴》</strong></p> 
 <p>极端的爱。</p> 
 <p><strong>3.第三十五周 东野圭吾——《红手指》</strong></p> 
 <p>“加贺恭一郎”系列第七部，以推理的人性讲述人性的冷暖。</p> 
 <p><strong>4.第三十六周 东野圭吾《白夜行》</strong></p> 
 <p>至今读过东野最震撼的一部作品，时间跨度长与故事内容错综复杂，人性冷漠得邪恶。</p> 
 <p><strong>5.第三十七周 道格拉斯·亚当斯——《银河系漫游指南》</strong></p> 
 <p>这个版本的翻译真心不敢恭维，但是内容还是很好玩的，能读洋文就尽量洋文原版吧。</p> 
 <p><strong>6.第三十八周 东野圭吾——《幻夜》</strong></p> 
 <p>《白夜行》的姊妹篇，更加邪恶，更加绝望。</p> 
 <p><strong>7.第三十九周 隈研吾——《十宅论》</strong></p> 
 <p>轻松的读本，虽说是建筑的内容，其实也可以当作日本文化评论来看。</p> 
 <p><strong>8.第四十周 Hackers &amp; Painters (黑客与画家)</strong></p> 
 <p>很容易读的洋文书，适合程序猿和即将成为程序猿的程序猿。</p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #40 Hackers &#x26; Painters (&#x9ED1;&#x5BA2;&#x4E0E;&#x753B;&#x5BB6;)</title>
        <link>https://justinyan.eth.limo/B190097B-38AF-4551-8437-94970D7F5468/</link>
        <guid>https://justinyan.eth.limo/B190097B-38AF-4551-8437-94970D7F5468/</guid>
        <pubDate>Thu, 22 Mar 2012 21:48:56 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/03/71z3KJOOyL.jpg" /></p> 
<p>第一次知道这本书，是在阮一峰的博客，博主说要开始翻译这本书了。书名很特别，Hackers &amp; Painters: Big Ideas from the Computer Age，这里的“黑客”指的不是入侵别人系统的人，而是程序员Programmer，而且是牛叉的程序员。程序员与画家本是八杆子打不着的关系，而且大家普遍认为程序员是理性的而画家是感性的，思维方式也不一样。作者则在这本书里提出一个很独特的观点，they are all makers。当然，作者指的是Hackers而不是普通的死程或者码农。</p> 
<p>作者Paul Graham(1964--)是一位著名的Lisp程序员，同时也是个不错的评论家(essayist)。他创立的Viaweb公司被Yahoo!收购而成为现在的Yahoo! Store。本书是作者2004年的作品，收录了作者的文集，多数是技术类评论，当然也有近三分之一是谈论创业和其他内容。拿黑客和画家作比虽然只占其中一章的篇幅，但是作者的思想却是贯穿全文的。</p> 
<p>这本书是我第一次几乎完整阅读（90%）的英文书籍，一半是这些文章都比较浅显，词汇量少，而且专业词汇正好是我的专业比较容易懂，另一半则归功于Kindle Touch的字典了。这本书语言幽默，观点独特，讲道理深入浅出，妙语横生。作者是个牛叉的Lisp程序员，所以书里也有一整章的内容在讲Lisp语言的特点，我觉得程序员读读这本书还是很不错的。尤其是了解一下Hacker和Programmer的区别，不仅仅是hacker比programmer的技术更牛，而且hackers通常也是designer，具有一般programmer不关心的创新力。hackers通常喜欢做自己喜欢的事，而不是坐在大公司里等着产品经理过来决定你的产品应该怎样去实现，变成一个普通的engineer。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #39 &#x9688;&#x7814;&#x543E; - &#x300A;&#x5341;&#x5B85;&#x8BBA;&#x300B;</title>
        <link>https://justinyan.eth.limo/45A35033-38F3-4034-B593-9308C56B38E0/</link>
        <guid>https://justinyan.eth.limo/45A35033-38F3-4034-B593-9308C56B38E0/</guid>
        <pubDate>Thu, 15 Mar 2012 19:48:34 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/03/618wVEhy9tL.jpg" /></p> 
<p>“这是一本明晰易懂的书”，即使没什么建筑方面知识的人，如我，也能很轻松地阅读，尽管其中有些人名和主义可能要稍微google一下。这也是一本好玩的书，以10种不同的日本人住的10种住宅为主题展开议论。</p> 
<p>“当初写《十宅论》的时候，正处‘泡沫经济’盛行之时。”这样的背景下，作者以每个人心中都有一个自己的家为主题，展现了多种多样的日本文化。同一样事物，处于不同的“场景”之下将会有不同的诠释，尽管只是细微的变化。如一朵野花，当它处于清晨野外的露水之中和处于优雅的茶室之中，其意义就完全不同。日本的住宅围绕着“场所”这一微妙的主题各有不同的表现。</p> 
<p>这本书作者写于纽约学习期间，这种地理上的距离使得这本书变得很特殊，如果作者身在日本或者更远的地方，或许就写不出这样的文章来。在《十宅论》的序中作者一再强调这些文章有些夸大而不符现实，只是其中的假想也许很值得一看。我本身没去过日本，不了解日本现状，但是与这本书所写的是否现实无关，里面的内容是有趣的。一本书能写得有趣，已经很了不起了。</p> 
<p><em>题外：从2010年年末开始写“每周读书”，到现在有一年多了，只是其中有几个月时间因为旅行或者工作或者考试是没在写的，最近在学校呆着也就写得比较多，暂时就不计较“第几周”的严格要求了，写一篇加一周，当时对以前没有写的那几个月的补充好了。</em></p> 
<p><strong>============== 笔记 =============</strong></p> 
<p><strong>十种住宅：</strong><br /> <strong>1.单身公寓派</strong><br /> “单身公寓”产生于20世纪70年代的日本，是特别值得一提的空间发明。在五六坪的面积里，省去了繁琐的空间隔离，把生活必备的厨房、卧室、浴室、起居室放在一间屋子里，称为合理的“一室空间”。<br /> 其原型是旅馆的客房，而且是商务旅馆的单间。专门为处于生活状态不定的迟滞时期的人们而设。“单身公寓”使人联想到旅行和性。旅行是居住者在不断流动中游荡，性则是与他人的交流，这两者兼具的作用，就是居住者能够在这一狭窄的密闭空间里打开“意识的通风口”。</p> 
<p>在现实生活中，除了床、电话、电视机之外还有很多“生活必需品”。这些必需品在生活久了之后就必然会带来“生活臭”。而“生活臭”则意味着旅行的终结。所以单身公寓面临的一个问题就是如何处理“生活臭”（所谓的“生活臭”，就是在通风条件较差的屋子里生活太久之后，屋内因空气流通不畅而产生的不好的味道）。通常“单身公寓派”的做法是利用“高科技设计”和“后现代设计”来处理这些“生活臭”。比方说冰箱、烤面包机和吸尘器之类的。</p> 
<p><strong> 2.清里食宿公寓派</strong><br /> 食宿公寓是在欧洲各地普及的一种提供食宿的住宿设施。日本于1970年始建第一栋食宿公寓，到80年代全国大于有2500栋。</p> 
<p>清里公寓派最基础的就是把西式风格的私家住宅作为原型，“断片的复制”而成。表面上这种“断片的复制”——即每种风格各复制一小部分，如乔治风格的门廊和阿尔卑斯风格的花台等——是由于缺乏专业设计师的参与，只由“食宿公寓派”住宅的居民和街区的木工建成。</p> 
<p>食宿公寓派最主要的居民就是女性，多数是女高中生、女大学生和女白领。食宿公寓派的建筑受到了这些人群很大的影响。一方面断片的复制是由这些人各自内心的期望传达给木工造成，另一方面更深层次的是由于日本文化里面独有的文脉依存性、以场所为中心的象征作用。同时支撑“食宿公寓派”的是一种对西洋文化的崇拜。</p> 
<p>食宿公寓派中最有特色的空间大概要属卫生间了。她们在卫生间这个封闭的密室中，能够代表小姐太太们喜好的，温柔的、可爱的小东西简直多得快要放不下了，俨然是个别样拥挤的世界。</p> 
<p><strong> 3.咖啡吧派</strong></p> 
<p>“咖啡吧”是诞生于70年代的一种新的空间形态。不同于酒吧，咖啡吧不提供性以及性相关的服务，来咖啡吧的人们只是把咖啡吧当作一个舞台，一个用于欣赏自己的舞台（其实就是装13的舞台啦）。</p> 
<p>“咖啡吧派”的住宅就是类似咖啡吧，把家庭排除在外的住宅。他们只承认那是一所住宅，而拒绝承认那是一个家。“咖啡吧派”住宅没有明显的外观特征。如果一定要说的话，那也只能是“没有任何特征”的特征。</p> 
<p>对于“生活臭”的处理，咖啡吧派的做法是把“净”与“不净”隔离开来。</p> 
<p>咖啡吧派还有一个重要的特点，就是对椅子的偏爱。咖啡吧派选择的椅子首先必定要是高价的，另外一定要是意大利制造的或者意大利风格的椅子。咖啡吧派也是人生的一个过渡期的一种表现，只是在婚姻的“审判”来临之前，为度过短暂又空虚的迟滞时期而准备的一种住宅形式。</p> 
<p><strong>4.哈比达派</strong></p> 
<p>“哈比达”是池袋西武百货店对面的家具专卖店。原本是英国的一家家具专卖店。哈比达卖的东西虽然不是什么奢侈品，但也并非“便宜货”。如果要大致概括一下哈比达家具店里名目繁多的商品，那就是注重实用性而不讲究多余装饰的简单设计的商品。所谓的“哈比达派”就是由哈比达家具店里的商品作为主要构成因素的住宅。</p> 
<p>哈比达派的人们喜欢理论，无论面临什么事情，都要从头开始考虑，从本质开始考虑。有笑话说：“他们对于晨浴能使人心情愉快这件事，都一定要讲出一番道理来。”</p> 
<p>哈比达派崇尚不遮丑的设计。开放式厨房、厨房和餐厅之间的送餐窗口、设在厨房旁边的早餐台这些设计的诞生，已经他们在全日本家庭中广泛的应用，就是哈比达派造成的。</p> 
<p>哈比达派本质上还是对于西洋文化的崇拜，以“合理主义”为理论包装的崇拜。</p> 
<p><strong>5.建筑师派</strong></p> 
<p>“建筑师派”指的是委托建筑师来设计住宅的人们。一般会认为这些人是欣赏建筑师的风格才这样做的，事实上这些客户们根本就不在乎他的设计风格是怎样的，他们之所以会将目光投向建筑师是出于一种“草根般”的孤独感。</p> 
<p>通常人们会处于两种原因来委托建筑师设计住宅。一种是想通过借用建筑师的名气来提升住宅自身的价值。另一种则是借助设计师作为“信息之窗”的力量。</p> 
<p>讲解这一派的时候作者还讲到茶道宗师千利休的“价值逆转”和建筑师安藤忠雄在建筑界的“价值逆转”。</p> 
<p>安藤忠雄一方面想要将现存的住宅审美意识转向对“闲寂、恬淡”之美的崇尚，另一方面又绝不提倡“寒酸”的住宅建筑。说到底，利休和安藤都看得清楚明白，无论是茶道界，还是“建筑师派”的住宅建筑界，都是以金钱为基础搭建起来的世界。</p> 
<p><strong>6.住宅展示场派</strong></p> 
<p>“住宅展示场派”就是将住宅展示场上展示的住宅买下来作为自家住宅的人。</p> 
<p>买下一块新地建房子，对于普通工薪层来说，是一生只能有一次的买卖。它的巨额资金耗费往往会使人产生一种错觉，以为拥有一所住宅就是人生的终极目标了。这种错觉就是被称作是“住宅人生化”（在现在的中国，不需要买下一块新地，仅仅一套房子就已经是终极目标了）。</p> 
<p>展示场派的成功有以下四项原则：<br /> 第一，不怕采用折中手段；<br /> 第二，坚持引入“表象”；<br /> 第三，打着“合理性”的幌子，卖西洋的“面子”；<br /> 第四，最大限度地活用照片。</p> 
<p><strong>7.独门独院派</strong></p> 
<p>“独门独院派”跟“住宅展示场派”可谓是亲戚关系，因为它们都是靠“房产信仰”来支撑的。差异就在于“住宅展示场派”靠宣传手册看商品，而“独门独院派”则没有宣传手册，必须亲自到住宅去察看。</p> 
<p>“独门独院派”的特点是靠种类取胜。首先在外观上，越丰富的外观越好。</p> 
<p><strong> 8.俱乐部派</strong></p> 
<p>与银座的俱乐部类似风格的住宅叫做“俱乐部派”。</p> 
<p>俱乐部派具有空间的排他性，就是别的人进不去，进去的门槛高。在住宅里模仿俱乐部的风格，正式为了象征空间的排他性，以显示出住宅的高贵。</p> 
<p>俱乐部派的特点是“深藏不露”、偏爱围墙、用金钱建筑起来。</p> 
<p><strong>9.日式酒屋派</strong></p> 
<p>采用像高级日式酒屋的建筑风格的住宅，被叫做“日式酒屋派”。</p> 
<p>日式酒屋的内部设计基本都是和式风格的。</p> 
<p>“日式酒屋派”有一个特征：觉得自己的住宅，要比俱乐部派的住宅更高级。因为他们认为这样的建筑才是符合日本传统的，清洁、干净、保守，与自然融为一体。</p> 
<p><strong>10.历史屋派</strong></p> 
<p>历史无派值得就是，几代人都住在同一个房子里。很多建筑家给自己建房子都不是从新地建房，而是在就有的古老民宅的基础上改建的。</p> 
<p><strong>============== END =============</strong></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #38 &#x4E1C;&#x91CE;&#x572D;&#x543E; - &#x300A;&#x5E7B;&#x591C;&#x300B;</title>
        <link>https://justinyan.eth.limo/D7811208-18B7-4729-BEBC-B3C7C0198C69/</link>
        <guid>https://justinyan.eth.limo/D7811208-18B7-4729-BEBC-B3C7C0198C69/</guid>
        <pubDate>Wed, 14 Mar 2012 21:24:02 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/03/20220411104000164964480047814.jpg" /></p> 
<p>这部连载于2001年-2003年的长篇小说，被视为东野圭吾另一作品《白夜行》的姊妹篇。同样的多人物多分支多视角的手法，同样的伏笔连连，同样的层层剖开，同样的两个悲剧的男女主角，只是比《白夜行》还要更邪恶一些。</p> 
<p>东野圭吾在这两部作品里面，把人性的冷漠和生活的残忍表露无疑，有些事情我们已经司空见惯麻木不仁，有些事情却邪恶的不忍再读。</p> 
<p>故事起始于1995年的阪神大地震，止于2000年的除夕夜。男女主角都是这场地震的幸存者，一切过去在这场地震中毁灭，新的故事从此开始。</p> 
<p>男主角水原雅也相当于《白夜行》中的桐原洋介，女主角新海冬美则相当于唐泽雪穗。只是桐原洋介明显比水原雅也要更聪明，更有野心，也更心狠手辣，冬美则比雪穗要更成熟，更邪恶，更冷漠。</p> 
<p>============================= 严重剧透 =============================</p> 
<p>地震发生前，水原家的工厂在经济衰退中倒闭，负债累累的父亲终于忍受不了而上吊自杀。对于父亲沮丧的心情，雅也早已知道，但是尽管他“已经猜到父亲会自杀，却故意不去想？这种说法并不准确，确切地说，是故意假装没有注意到父亲将自杀的迹象。装给谁看呢？不是别人，正是雅也自己。如果注意到了，尽最大的努力去阻止父亲自杀，是身为人子应尽的义务。”“注视着父亲潦倒的背影，“干脆死掉算了”的想法从雅也心中掠过。他知道父亲入了寿险。因此，看到父亲上吊身亡时，他最真实的想法是“这下总算解决问题了”。 ”</p> 
<p>父亲死后，来吊丧胆亲戚朋友不多，其中之一是舅舅。雅也知道他来干什么，以前舅舅曾欺骗父母搞投机股票骗去一笔钱，现在父亲死了，有保险金，舅舅就趁机来讨债了。就在守夜的当晚，阪神地震发生了。雅也在震后的慌乱中看到舅舅被压在地上，他想着债务总算了结了，但是舅舅却突然睁眼了，这时他下意识拿起石块往舅舅头上砸去，这一切都被他身后的新海冬美看在眼里。</p> 
<p>新海冬美是一个美丽、聪明的女子，她的双眼似乎有一股魔力，能把任何人吸引进去。冬美没有揭穿雅也的罪行，他们后来走在一起相依为命，却见不得太阳，如同桐原洋介与唐泽雪穗。</p> 
<p>“们别无选择，只能在黑夜中的道路上前行。即便四周如白昼一样明亮，也只是不真实的白昼。对此我们早已认命。”这种告白简直就是从《白夜行》里面抄来的。新海靠着自己的美丽，在东京一路往上爬，通过华屋珠宝店的楼层负责人，一个月内升上第三层，随后利用雅也精湛的手工艺制造了毒气事件一脚踢开那个负责人，之后又搭上美容师青江，两人开了家美容院大大成功，甚至抓住华屋的董事隆治并与之结婚。</p> 
<p>这一切都靠着水原雅也在暗地里帮她做着不光彩的事，如同桐原洋介一般。在事情后期，水原竟发现她深爱的新海冬美竟然不是真正的新海冬美！她是另外一个人，只是趁着阪神地震新海一家全部身亡的时候正好换一个身份，试图抹掉过去。曾经新海冬美的父亲以前的部下曾我先生千方寻找新海冬美想要将冬美家唯一的家庭合照还给冬美，但是假冬美不可能允许这样的事情发生，于是她设计让水原雅也帮忙杀害了曾我，并处理了尸体。</p> 
<p>水原雅也是一个悲剧，他的一生都在迷恋新海冬美。他甚至比桐原还要悲惨，尽管作者没有明说，但是至少在《白夜行》里还可以体会到唐泽雪穗对桐原的爱意，而冬美则是人尽可夫，最大限度利用自己的美貌往上爬的女人，她对于他人的不幸丝毫没有同情，她根本就不在乎水原的感受，她只是想控制水原，利用水原。她控制水原的一切，甚至包括性爱的时候控制水原的she jing方式。</p> 
<p>最后水原知道了冬美的真相，再没有活下去的理由。他也在白夜里行走，他不惧怕在白夜里行走，只要有冬美相伴，但是最后他却明白，就连这个白夜也只是冬美给的幻象。他的灵魂早已被冬美杀死。</p> 
<p>“为什么要背叛？为什么杀死我的灵魂？你说过我们没有白昼，任何时候都是黑夜，说过我们要在黑夜中生存下去。 即便如此，我也无所谓，只要是真正的黑夜就行。然而，你连那个都没有给我，你给予我的全是虚幻。”</p> 
<p>================================================================</p> 
<p>在图书馆连着坐了5个半小时看完《幻夜》剩下的80%。这部作品与《白夜行》一样令人手不释卷，谜题接踵而来，但是又轻易给你一点信息让你推测个大概而不得其要，吊足读者胃口。我不禁想，当年读杂志上连载的那些读者会是什么心情？着急程度恐怕不比现在每周追动漫的宅男差吧。</p> 
<p>这部作品在写作显然比《白夜行》要更纯熟些，但是总觉得伏笔也好谜题也好，不如《白夜行》那样层层深入。或许是先看了《白夜行》的关系吧，不过无论如何，这都是一部不可多得的好书。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #37 &#x9053;&#x683C;&#x62C9;&#x65AF;&#xB7;&#x4E9A;&#x5F53;&#x65AF; -&#x300A;&#x94F6;&#x6CB3;&#x7CFB;&#x6F2B;&#x6E38;&#x6307;&#x5357;&#x300B;</title>
        <link>https://justinyan.eth.limo/87386B1A-0B6E-4F7A-89DD-09BAEF1B37E6/</link>
        <guid>https://justinyan.eth.limo/87386B1A-0B6E-4F7A-89DD-09BAEF1B37E6/</guid>
        <pubDate>Mon, 12 Mar 2012 18:04:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/03/The-Hitchhikers-Guide-to-the-Galaxy.png" /></p> 
<p>本作是英国作家道格拉斯·亚当斯(Douglas Adams)的系列科幻小说“银河系漫游指南系列”的第一部，该书语言幽默风趣，多反讽，被科幻迷奉为“科幻圣经”之一。</p> 
<p><span>这部小说也颇为有趣：1978年英国国内电台BBC曾有一个名为《地球末日》（The Ends of the Earth）的播出计划，包括6个结局均为地球毁灭的各自独立的故事，其中第一个故事的名字即为“银河系漫游指南”（<a href="http://zh.wikipedia.org/wiki/%E9%93%B6%E6%B2%B3%E7%B3%BB%E6%BC%AB%E6%B8%B8%E6%8C%87%E5%8D%97_%28%E5%B0%8F%E8%AF%B4%29" target="_blank" rel="noopener">参考wiki</a><span class="smarterwiki-linkify">）。当时的广播剧剧本就是这部小说的前身。首次发表后该作品又以舞台剧、小说、电视剧、漫画等形式发表（<a href="http://zh.wikipedia.org/wiki/%E9%93%B6%E6%B2%B3%E7%B3%BB%E6%BC%AB%E6%B8%B8%E6%8C%87%E5%8D%97%E7%B3%BB%E5%88%97" target="_blank" rel="noopener">参考wiki</a>）。</span></span></p> 
<p>说回小说内容本身，这是一部科幻小说，但是却滑稽风趣得不可思议，封面封底之间作者奇思妙想源源不断，而这部科幻小说却并没有因为其喜剧成分而变成“软科幻”，相反，其解释“非概率驱动”的故事便展示了其“硬科幻”的一面。这部小说同时也对人类社会本身进行大量的嘲讽和批判，令读者在体验奇妙的太空漫游的同时又不时会心一笑。</p> 
<p>故事的主人公阿瑟是地球毁灭时的幸存者之一，一开始他还在自家门前阻挡拆迁队拆除自己的家因为政府要在那里修建一条通道（咦？别胡乱联想哦，这部书发表的时候还是1979年咧。）。随后就有大量体积庞大的外星飞船（沃贡人）前来把地球毁灭因为他们要在那里修建一条超时空通道（报应啊，啥时候咱们也......咳、咳）。阿瑟的幸存是因为有一个来自参宿星的伙伴福特，他是一名星际漫游者，也是《银河系漫游指南》的编辑，    15年前他漫游到地球之后就一直被困在这里，现在地球即将毁灭，他就把阿瑟一同带到沃贡人的飞船上，开始了一段星际漫游之旅。</p> 
<p>随后的日子里他们遇到了长着两个头、三条胳膊的银河系帝国总统（其实完全没有权力的）赞福德·毕博布鲁克斯，他的同伙（其实是勾搭未遂的女人）崔莉恩，以及一个整天唠叨不停，神情沮丧的机器人马文，这伙人就这样搭乘在赞福德偷来的最新型飞船“黄金之心”上，开始了一场神奇的银河系漫游之旅。</p> 
<p>在后面他们闯入一颗“曾经是宇宙最富裕但现在已经死亡了的荒芜的”星球曼格拉斯星球寻宝，在那里，他们发现一个骇人听闻的惊天秘密——地球是曼格拉斯人制造的一部超级电脑。</p> 
<p>看《银河系漫游指南》之前我看过《基地》第一部，但是没看完，而这部作品相对要短而且风趣，读起来很流畅，虽然《基地》的评价向来很好，不过可惜还是先把这一部看完了。</p> 
<p>《银河系漫游指南系列》一共有五部，依次是：</p> 
<ol> 
 <li>银河系漫游指南 (The Hitchhiker's Guide to the Galaxy)</li> 
 <li>宇宙尽头的餐馆 (The Restaurant at the End of the Universe)</li> 
 <li>生命，宇宙及一切 (Life The Universe and Everything)</li> 
 <li>再见，多谢你们的鱼 (So Long and thanks for all the Fish)</li> 
 <li>基本上无害 (Mostly Harmless)</li> 
</ol> 
<p> </p> 
<p><span class="smarterwiki-popup-bubble" style="top: 562px; left: 476px; margin-left: -54px; margin-top: -60px; opacity: 1;"><span class="smarterwiki-popup-bubble-body"><span class="smarterwiki-popup-bubble-links-container"><span class="smarterwiki-popup-bubble-links"><span class="smarterwiki-popup-bubble-links-row"><a class="smarterwiki-popup-bubble-link" title="Search Google" href="http://www.google.com/search?q=wiki" target="_blank" rel="noopener"><img decoding="async" class="smarterwiki-popup-bubble-link-favicon" src="https://www.google.com/favicon.ico" alt="" /></a><a class="smarterwiki-popup-bubble-link" title="Search Surf Canyon" href="http://search.surfcanyon.com/search?f=nrl1&amp;q=wiki&amp;partner=fastestfox" target="_blank" rel="noopener"><img decoding="async" class="smarterwiki-popup-bubble-link-favicon" src="https://justinyan.eth.limo/87386B1A-0B6E-4F7A-89DD-09BAEF1B37E6/data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AycnKOmdmaastLTDuIB8j/yAfI/87Oz7eg4OFi+no6Rj///8A////AP///wD///8A////AP///wD6+voDfHx+kyAfI/8gHyP/LCsv+FJRVPhHRkr6IiEl/SAfI/8tLTDuuLe5T////wD///8A////AP///wD///8AfHx+kyAfI/8wLzP4qqqr+Pv7+////////////+3t7f+Dg4X9IB8j/yMiJvq/vr9H////AP///wD///8AyMfIPyIhJf8wLzP429vb+P///////////////////////////////66ur/0gHyP/ODc74////wD///8A////AHRzda4wLjH/rKyt+P/////8/Pz/h4eJ/z8+Qv9GRUn/rq6v////////////iIiK/6ijnP/269Y/////AP///wBQTlDzR0VI+vv7+///////oqGh/zg2Of8hICT/IB8j/yAfI//c3Nz/7de7/9alX//GfhL/48KOfv///wD///8AWFZX/3Vzdfr//////////4iGhv9SUFL/MC8z/2ZlaP+1jmz/unMv/7NjFf+zYxX/s2MV/9atin7WrYp+1q2KfmdlZf91c3T8//////////+npaT/bWtr/0tJS/81Mzf/jIB5/9Gidv+/eDD/v3gw/8B6M//NlWD/x4pO/8WFRvqLiIjXbmxs/+rq6v//////6Ofn/4yJiP9lY2T/Q0JE/0tKTf/09PT/9uvc/+K5gP/apFL/9+zaP////wD///8AwcDAe357e/+koqL9///////////09PT/zs3N/8jHx//5+fn//////+7u7/9/f4H/4tfC//rv2T////8A////APb29g+YlZXjhYKB/7W0s//9/f3//////////////////////+vr6/9paGn/NTQ3/319f6f///8A////AP///wD///8A6OjnMpmWle6MiYf/lZOS/8XEw//b2tr/0dHR/6elpv9hYGH/TkxO/25sb8L09PQM////AP///wD///8A////AP///wDv7+4jsa6tu5KPjf+Kh4b/gX59/3h2df9vbW3/amho96alpof4+PgH////AP///wD///8A////AP///wD///8A////AP///wDs6+srz87Nb8XDw37Av75+zMvKXvLy8hT///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAPA/AADAHwAAgA8AAIAHAAAABwAAAAcAAAAHAAAAAAAAAAcAAIAHAACABwAAwA8AAOAfAAD//wAA//8AAA%3D%3D" alt="" /></a></span><span class="smarterwiki-popup-bubble-links-row"><a class="smarterwiki-popup-bubble-link" title="Search DuckDuckGo" href="http://duckduckgo.com/?q=wiki" target="_blank" rel="noopener"><img decoding="async" class="smarterwiki-popup-bubble-link-favicon" src="https://ff.duckduckgo.com/favicon.ico" alt="" /></a><a class="smarterwiki-popup-bubble-link" title="Search Wikipedia" href="http://www.google.com/search?hl=com&amp;btnI=I%27m+Feeling+Lucky&amp;q=wiki+wikipedia" target="_blank" rel="noopener"><img decoding="async" class="smarterwiki-popup-bubble-link-favicon" src="https://justinyan.eth.limo/87386B1A-0B6E-4F7A-89DD-09BAEF1B37E6/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAIpwAACKcBMsYCAwAAAAd0SU1FB9kFEwgQLXKnj9oAAAPsSURBVDiNdVRZSGRXEH1Joz8icSIMJsEQEvKvov4ICoOYIAp+KKISkLiAgij5UGOMjgoug6CiKC64i/sSpVHcl7jv7W6722pcWmyNoqBW6hRpyYSZC8W7975bdU+dOrcUIlL+axYWFq+SkpLybWxsYo17VlZWX/H6DebOzs4/ent7/+Lu7v7z/31h7y8U5fvV1VWNra3tIObGvZqamtaHh4fHxMTExb29vcejoyMKCwt7jIqKWuD/bz4Y0MXF5e319bU2JyfngA99x/YJ22empqZuERERKwcHB9Td3U37+/u0srJCc3NzNDIyQk1NTVcqleonPvv6JSCPL87OznQ8p+TkZC2vv2GzcnNz+83a2joqLy9vCQFnZ2dpfX2dlpaWqLe3lzo7O+WStLS0ORMTE7+XgCkpKTX07/Dz86PIyEhDVlaWISMjgxISEmRfp9PRzs4O7e7uEtMi6EZHRyVweHg4gp6bm5tbKK958PlbODES+ZmZmQmkxjsE2d3dHWm1WsrOzqa6ujoaGhqigYEBGh4epvT0dCovLyd7e3sfhR3fGR0vLy9fULa0tMj8/PycNBoNcVGIi0NxcXHU09NDY2Nj1N/fL2mXlZXJJV5eXkXK9va2DojggIDPz8/iuLGxQcvLy8IXEN7c3JBer5f14uKiIOzr66P29naqqqqiiooK8vf3n1aYbP3ExIQcZkkIKgcHBwJ/BoNB1ltbW8IbF466urrk3OTkpFhDQ4MEZA7Jx8fnSGEJ6I2pHh4eyvf2ViglVBbBwBMQb25u0sLCgnAXExMjVLS1tVFJSYmkHRoa+pfCmydwPjk5EYf7+3txwBoVRTFmZmZetFdcXEyBgYGUm5srVa6traWioiIqKCig4ODgVYVJnUE6LGpBhLQQDMjAHeaQzPT0tASG7iorK0U2kAwC4hIE9PT0HFZYvB7j4+NPQHlxcSGFOD4+Fvnw8xKOUGnwxAWkqakpqSz7CJ/V1dXEmiV+/+To6Pi7CJvFq356ehIHaA2ogPjq6krSRlVbW1ulqoODgyIbyMfX15dKS0spNjYWAf+2tLT8UgLyJAIPHinPz89LFcEXJIJUcdHa2ppIBAjVajWlpqYSNwcqLCwUdEFBQX9+ysP4llXcSf7gFO6A8PT0lJqbm4UXvB6kBc6QKgz/sAfu8Ers7OzecYxv3+s2PD53dXX9FVUFCiCqr6+njo4OSRMBwSN3FylKfn4+MQgKCAhAC1N9rB+aODk5vWUU5+ARUoHu8CpQ0cbGRjFcxA3kkjtRAft8/dEGazRuRabcZH8ICQkpjo6OVjNHmvj4+GXuiyMeHh453ATCzMzMXn3I9x8oCiuuorpqawAAAABJRU5ErkJggg==" alt="" /></a></span></span></span></span></span><span class="smarterwiki-popup-bubble smarterwiki-popup-bubble-active" style="top: 562px; left: 476px; margin-left: -54px; margin-top: -60px; opacity: 1;"><span class="smarterwiki-popup-bubble-body"><span class="smarterwiki-popup-bubble-links-container"><span class="smarterwiki-popup-bubble-links"><span class="smarterwiki-popup-bubble-links-row"><a class="smarterwiki-popup-bubble-link" title="Search Google" href="http://www.google.com/search?q=%E5%8F%82%E8%80%83wiki" target="_blank" rel="noopener"><img decoding="async" class="smarterwiki-popup-bubble-link-favicon" src="https://www.google.com/favicon.ico" alt="" /></a><a class="smarterwiki-popup-bubble-link" title="Search Surf Canyon" href="http://search.surfcanyon.com/search?f=nrl1&amp;q=%E5%8F%82%E8%80%83wiki&amp;partner=fastestfox" target="_blank" rel="noopener"><img decoding="async" class="smarterwiki-popup-bubble-link-favicon" src="https://justinyan.eth.limo/87386B1A-0B6E-4F7A-89DD-09BAEF1B37E6/data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AycnKOmdmaastLTDuIB8j/yAfI/87Oz7eg4OFi+no6Rj///8A////AP///wD///8A////AP///wD6+voDfHx+kyAfI/8gHyP/LCsv+FJRVPhHRkr6IiEl/SAfI/8tLTDuuLe5T////wD///8A////AP///wD///8AfHx+kyAfI/8wLzP4qqqr+Pv7+////////////+3t7f+Dg4X9IB8j/yMiJvq/vr9H////AP///wD///8AyMfIPyIhJf8wLzP429vb+P///////////////////////////////66ur/0gHyP/ODc74////wD///8A////AHRzda4wLjH/rKyt+P/////8/Pz/h4eJ/z8+Qv9GRUn/rq6v////////////iIiK/6ijnP/269Y/////AP///wBQTlDzR0VI+vv7+///////oqGh/zg2Of8hICT/IB8j/yAfI//c3Nz/7de7/9alX//GfhL/48KOfv///wD///8AWFZX/3Vzdfr//////////4iGhv9SUFL/MC8z/2ZlaP+1jmz/unMv/7NjFf+zYxX/s2MV/9atin7WrYp+1q2KfmdlZf91c3T8//////////+npaT/bWtr/0tJS/81Mzf/jIB5/9Gidv+/eDD/v3gw/8B6M//NlWD/x4pO/8WFRvqLiIjXbmxs/+rq6v//////6Ofn/4yJiP9lY2T/Q0JE/0tKTf/09PT/9uvc/+K5gP/apFL/9+zaP////wD///8AwcDAe357e/+koqL9///////////09PT/zs3N/8jHx//5+fn//////+7u7/9/f4H/4tfC//rv2T////8A////APb29g+YlZXjhYKB/7W0s//9/f3//////////////////////+vr6/9paGn/NTQ3/319f6f///8A////AP///wD///8A6OjnMpmWle6MiYf/lZOS/8XEw//b2tr/0dHR/6elpv9hYGH/TkxO/25sb8L09PQM////AP///wD///8A////AP///wDv7+4jsa6tu5KPjf+Kh4b/gX59/3h2df9vbW3/amho96alpof4+PgH////AP///wD///8A////AP///wD///8A////AP///wDs6+srz87Nb8XDw37Av75+zMvKXvLy8hT///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAPA/AADAHwAAgA8AAIAHAAAABwAAAAcAAAAHAAAAAAAAAAcAAIAHAACABwAAwA8AAOAfAAD//wAA//8AAA%3D%3D" alt="" /></a></span><span class="smarterwiki-popup-bubble-links-row"><a class="smarterwiki-popup-bubble-link" title="Search DuckDuckGo" href="http://duckduckgo.com/?q=%E5%8F%82%E8%80%83wiki" target="_blank" rel="noopener"><img decoding="async" class="smarterwiki-popup-bubble-link-favicon" src="https://ff.duckduckgo.com/favicon.ico" alt="" /></a><a class="smarterwiki-popup-bubble-link" title="Search Wikipedia" href="http://www.google.com/search?hl=com&amp;btnI=I%27m+Feeling+Lucky&amp;q=%E5%8F%82%E8%80%83wiki+wikipedia" target="_blank" rel="noopener"><img decoding="async" class="smarterwiki-popup-bubble-link-favicon" src="https://justinyan.eth.limo/87386B1A-0B6E-4F7A-89DD-09BAEF1B37E6/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAIpwAACKcBMsYCAwAAAAd0SU1FB9kFEwgQLXKnj9oAAAPsSURBVDiNdVRZSGRXEH1Joz8icSIMJsEQEvKvov4ICoOYIAp+KKISkLiAgij5UGOMjgoug6CiKC64i/sSpVHcl7jv7W6722pcWmyNoqBW6hRpyYSZC8W7975bdU+dOrcUIlL+axYWFq+SkpLybWxsYo17VlZWX/H6DebOzs4/ent7/+Lu7v7z/31h7y8U5fvV1VWNra3tIObGvZqamtaHh4fHxMTExb29vcejoyMKCwt7jIqKWuD/bz4Y0MXF5e319bU2JyfngA99x/YJ22empqZuERERKwcHB9Td3U37+/u0srJCc3NzNDIyQk1NTVcqleonPvv6JSCPL87OznQ8p+TkZC2vv2GzcnNz+83a2joqLy9vCQFnZ2dpfX2dlpaWqLe3lzo7O+WStLS0ORMTE7+XgCkpKTX07/Dz86PIyEhDVlaWISMjgxISEmRfp9PRzs4O7e7uEtMi6EZHRyVweHg4gp6bm5tbKK958PlbODES+ZmZmQmkxjsE2d3dHWm1WsrOzqa6ujoaGhqigYEBGh4epvT0dCovLyd7e3sfhR3fGR0vLy9fULa0tMj8/PycNBoNcVGIi0NxcXHU09NDY2Nj1N/fL2mXlZXJJV5eXkXK9va2DojggIDPz8/iuLGxQcvLy8IXEN7c3JBer5f14uKiIOzr66P29naqqqqiiooK8vf3n1aYbP3ExIQcZkkIKgcHBwJ/BoNB1ltbW8IbF466urrk3OTkpFhDQ4MEZA7Jx8fnSGEJ6I2pHh4eyvf2ViglVBbBwBMQb25u0sLCgnAXExMjVLS1tVFJSYmkHRoa+pfCmydwPjk5EYf7+3txwBoVRTFmZmZetFdcXEyBgYGUm5srVa6traWioiIqKCig4ODgVYVJnUE6LGpBhLQQDMjAHeaQzPT0tASG7iorK0U2kAwC4hIE9PT0HFZYvB7j4+NPQHlxcSGFOD4+Fvnw8xKOUGnwxAWkqakpqSz7CJ/V1dXEmiV+/+To6Pi7CJvFq356ehIHaA2ogPjq6krSRlVbW1ulqoODgyIbyMfX15dKS0spNjYWAf+2tLT8UgLyJAIPHinPz89LFcEXJIJUcdHa2ppIBAjVajWlpqYSNwcqLCwUdEFBQX9+ysP4llXcSf7gFO6A8PT0lJqbm4UXvB6kBc6QKgz/sAfu8Ers7OzecYxv3+s2PD53dXX9FVUFCiCqr6+njo4OSRMBwSN3FylKfn4+MQgKCAhAC1N9rB+aODk5vWUU5+ARUoHu8CpQ0cbGRjFcxA3kkjtRAft8/dEGazRuRabcZH8ICQkpjo6OVjNHmvj4+GXuiyMeHh453ATCzMzMXn3I9x8oCiuuorpqawAAAABJRU5ErkJggg==" alt="" /></a></span></span></span></span></span><span class="smarterwiki-popup-bubble smarterwiki-popup-bubble-active smarterwiki-popup-bubble-detailed" style="margin-top: -166px; margin-left: -300px; top: 562px; left: 476px; opacity: 1;"><span class="smarterwiki-popup-bubble-body"><span class="smarterwiki-popup-bubble-definition"><strong>Wikipedia:</strong> A wiki is a website whose users can add, modify, or delete its content via a web browser using a simplified markup language or a rich-text editor. <a id="dd-cite-link" href="http://duckduckgo.com/?q=wiki"><strong>→</strong></a></span></span></span></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #36 &#x4E1C;&#x91CE;&#x572D;&#x543E; - &#x300A;&#x767D;&#x591C;&#x884C;&#x300B;</title>
        <link>https://justinyan.eth.limo/1A415AF4-E905-476D-A3F8-DA72E056D814/</link>
        <guid>https://justinyan.eth.limo/1A415AF4-E905-476D-A3F8-DA72E056D814/</guid>
        <pubDate>Thu, 08 Mar 2012 16:37:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/03/66b055407800072f.jpg" /></p> 
<p>《白夜行》可算是鄙人所读过的几部东野作品（嫌疑犯X的献身等六、七部）中最吸引人最震撼最灰暗最深刻的了，这部连载于97年-99年的长篇小说，至今仍为东野迷所推崇，分析人物解析剧情的文章源源不绝，如百度贴吧的这篇：《从两人对“白夜”的态度看桐原和唐泽的关系》<a href="http://tieba.baidu.com/p/1444695618">http://tieba.baidu.com/p/1444695618</a></p> 
<p>作品连载了很长时间，故事内容也横跨了19年，背景是在1973-1992年的日本，在本作中作者使用了大量的插叙，大量的电影镜头拼接，大量的伏笔，同时又把案件的信息给出到最低，把关键线索隐藏，模糊处理案件的真相，让读者自行根据文章给出的信息去推测剧情和真相，令人手不释卷，大呼过瘾。</p> 
<p>本作不同于以往的多数杀人事件的推理，案件在小说中仅仅是起着情节推动作用，读者可以在每一章节中给出的信息自行推断案件真相，这部小说的重点在于两个主角在“白夜里行走”，没有太阳，没有希望，世界绝望得一片灰暗。</p> 
<p>这是一部群写的小说，第一女主角算是唐泽雪穗，第一男主角是桐原亮司。故事的起点在73年10月，发生在大阪的一起当铺老板被杀事件，地点是一处废弃的大楼，离奇死亡的事件牵引出一大批主要角色，但是案件却随着嫌疑人的意外身亡不了了之。男女主角此时仍是小学生，至此分开两条线，人物视角错综交织，一条主线上生出各种悲剧，一路压抑而灰霾。</p> 
<p>唐泽雪穗可谓是冷眼看世界的人，她有着天生的美貌和高雅的气质，但是悲惨的童年直接“夺去了她的灵魂”。桐原亮司则生在一个悲哀的家庭，父亲有恋童癖，母亲则私通外人，他们两个都是在白夜里行走的人，没有太阳，没有希望。偶然的机会他们碰到一起，于是他们的命运再也分不开。</p> 
<p>这部小说伏笔精妙，情节起伏，而信息仅仅给出足以看到事件大部分样子，任读者自由推测也是推理小说最具吸引力的地方，不同于以往的解谜类推理，这部作品道出了人性的探讨，深刻而令人绝望。每一个人物都是那样入木三分，他们把人性深处灰暗的地方挖掘而放大，从他们身上你或许可以看到自己的影子，可以找到共鸣的地方，可以觉出令人毛骨悚然的黑暗。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6307;&#x5F39; &#x5CB8;&#x90E8;&#x771F;&#x660E; &#x300A;Time Travel&#x300B;</title>
        <link>https://justinyan.eth.limo/AE28C8BB-0B1F-4E2C-807D-C8A0CEA231DC/</link>
        <guid>https://justinyan.eth.limo/AE28C8BB-0B1F-4E2C-807D-C8A0CEA231DC/</guid>
        <pubDate>Tue, 06 Mar 2012 15:53:57 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>优酷的：<br /> <object width="480" height="400" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://player.youku.com/player.php/sid/XMzYxMzU2NDY4/v.swf" /><param name="allowfullscreen" value="true" /><param name="quality" value="high" /><param name="allowscriptaccess" value="always" /></object></p> 
<p>U2B的：<br /> <iframe loading="lazy" src="http://www.youtube.com/embed/ZfPoPONO2Co" frameborder="0" width="420" height="315"></iframe></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #35 &#x4E1C;&#x91CE;&#x572D;&#x543E;&#x2014;&#x2014;&#x300A;&#x7EA2;&#x624B;&#x6307;&#x300B;</title>
        <link>https://justinyan.eth.limo/BEDFB3D6-B58D-47FD-A4C0-518429032906/</link>
        <guid>https://justinyan.eth.limo/BEDFB3D6-B58D-47FD-A4C0-518429032906/</guid>
        <pubDate>Mon, 05 Mar 2012 13:52:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/03/71mgDfy0NeL.jpg" /></p> 
<p>本作乃东野圭吾2006年的作品，其“加贺恭一郎”系列作品的第七部。<br /> 11年10月南海出版公司曾再版过该书，在书城看到就记下了。<br /> 这部作品更注重亲情的纠葛而不是案情本身，谜题的设计较为吸引，但是让步于情感与社会性的探讨，谜题不够复杂深入，感觉故事有些不够细致。但是小说本身来是挺有可读性的，短短数百页，适合在夹缝时间阅读，顺带引发些许思考。<br /> 看完这部作品，我才知道东野不只是一个推理小说家，他的书里也发出人性的探讨，遂对《白夜行》感兴趣了。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #34 &#x4E09;&#x5C9B;&#x7531;&#x7EAA;&#x592B;&#x2014;&#x2014;&#x300A;&#x7231;&#x7684;&#x9965;&#x6E34;&#x300B;</title>
        <link>https://justinyan.eth.limo/7847F0A3-B49F-471A-A414-D7EAC2FD94F1/</link>
        <guid>https://justinyan.eth.limo/7847F0A3-B49F-471A-A414-D7EAC2FD94F1/</guid>
        <pubDate>Tue, 28 Feb 2012 14:58:27 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2012/02/71O7nWQEn4L.jpg" /></p> 
<p>读三岛的文字果然令人想起川端康成，尽管事实上应该反过来说川端康成的文字有三岛的影子，二者同样都有大量细腻的心理描写，优美的景物描写，悲凉惨淡的小说氛围。</p> 
<p>《爱的饥渴》格调灰暗，沉郁，压抑，故事在一片混沌的迷蒙中展开。女主角悦子是一个渴望爱而不得爱的弱女子，与不爱自己的丈夫在一起是一段悲剧，丈夫死后又与自己的公公不伦是另一段悲剧，恋上公公家的下人三郎是最后的悲剧。</p> 
<p>悦子一生都处于痛苦与压抑中，丈夫不爱自己，整日整夜不归家，外头有好几个女人。她尝试过自杀，但是被丈夫救下，二度自杀的时候丈夫正好罕见地回家，可他不是真心想回家，而是病了，而且一病不起。</p> 
<p>这对于悦子来说是一段短暂而幸福的时光，丈夫病重卧床，她犹如蹲在海边守着一具尚有生命的漂流物，但她并未将这具漂流物打捞起，因为“倘使让这具漂流物复苏，无疑他会立刻抛弃我。”</p> 
<p>就这样守着丈夫，知道有一天医生说病情有好转，这对悦子来说无疑是一个天大的坏消息，于是她在半夜的时候关掉了丈夫的输氧器。</p> 
<p>给丈夫送葬的时候，她觉得“这不是在焚烧我的丈夫的尸体，而是在焚烧我的妒忌。”</p> 
<p>丈夫死后，接受公公弥吉的邀请与公公同住，成为公公的女人。这个吝啬的商人在农村有一座别墅，与儿子谦郎一家及浅子同住，还有两个下人，三郎和美代。</p> 
<p>悦子每天失眠，为了给第二天希望，她单恋着三郎。悦子不怕流言，不理常伦，是个孤独寂寞压抑的角色，而三郎则憨厚淳朴，麻木无知，根本不知“爱”为何物。在知道美代有了三郎的孩子之后，悦子趁着三郎回家期间，把怀胎四月的美代撵走，甚至亲自逼视着美代上火车离开。她这么做无非希望三郎回来后大怒责备自己，然后跟着美代离开。但是三郎回来后却若无其事地就这么过了几天。终于有一天，悦子忍不住约三郎深夜长谈。</p> 
<p>悦子单恋三郎的事情本来家里人都已知晓，唯独三郎这个傻小子却什么也不知，悦子终于向三郎坦白，三郎没有怪悦子的意思，也没有愤怒，一切正常得诡异。悦子问三郎爱谁，却仍不知“爱”为何物，最后撒了个谁都看得出的谎说爱悦子。他拥抱悦子，悦子却反抗了，挣扎了，连她自己也不知道为什么要反抗。三郎追上挣脱逃开的悦子，把她按倒在地，悦子一声尖叫，吓傻了三郎，惹来了半夜醒来不见悦子的弥吉，弥吉随手带了锄头防身，三郎吓到要逃走，悦子追上去抱住三郎，正好弥吉赶到，不知所措，三郎呆立。悦子拿过锄头把三郎杀了。</p> 
<p>悦子是个很奇特的角色，她渴望着爱，渴望一切正常不正常的爱，但她就是得不到，她的一生活在痛苦的阴翳之下，她愈痛苦，就愈发想要寻找令自己更痛苦事情来伤害自己。</p> 
<p>她的一生活在自己想象的幸福里，假的日记，假的梦境，她幻想得太多以致分不清现实与想象，她的幻想，她的对一切都“不考虑”的态度，就是她的幸福的、希望的根据。</p> 
<p>当她发现她一直爱的，渴望被爱的人竟连“爱”为何物都不知，她的那些假想的幸福全部化为泡影的时候，她亲手毁灭了这个幻象。</p> 
<p>那夜杀人后，二人买了尸体消灭了痕迹，次日太阳照样升起，“什么事情也没有发生。”</p> 
<p>[补]<br /> 三岛由纪夫嘲讽一切都笔法很值得一看。商人弥吉在他的笔下胆小吝啬，文艺青年夫妇则尽说空话大话，过时而懦弱，下人美代和三郎淳朴软弱，麻木不仁，还有各种世俗的脸孔，如冷眼看笑话的医生，如虚伪的情妇们，这些角色就活在我们的现实社会的各个角落里，由作家的文笔放大投影，而愈发令人生厌，令人唏嘘。</p> 
<p>比之三岛，川端康成的风格似乎要明亮的多，同样有景物描写，三岛的景物尽往悲哀中坠落，川端康成的则更柔和些。在《爱的饥渴》里面，所有的希望都是绝望中的假象，看不见摸不着，一旦假象被揭穿，世界就此崩塌。</p> 
<p>大约作者的世界也在文字的催化下崩塌，大约作者的希望也如黑暗的柔波深沉而压抑，最后只能选择自己结束自己的生命。</p> 
<p>生命的维持，总要有一定的撑持。生理的撑持和心理的撑持，饿死是死，忧郁死也是死，都是缺了生命的撑持罢了。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6307;&#x5F39; &#x4E2D;&#x5DDD;&#x7802;&#x4EC1; &#x300A;The Sprinter&#x300B;</title>
        <link>https://justinyan.eth.limo/5842423D-6BF7-4DB4-8B45-528351294F58/</link>
        <guid>https://justinyan.eth.limo/5842423D-6BF7-4DB4-8B45-528351294F58/</guid>
        <pubDate>Thu, 23 Feb 2012 17:48:58 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>优酷：<br /> <object width="480" height="400" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://player.youku.com/player.php/sid/XMzU1ODcyMzY0/v.swf" /><param name="allowfullscreen" value="true" /><param name="quality" value="high" /><param name="allowscriptaccess" value="always" /></object></p> 
<p>U2B：<br /> <iframe loading="lazy" src="http://www.youtube.com/embed/TlsVY7C9gLQ" frameborder="0" width="420" height="315"></iframe></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6307;&#x5F39; &#x5CB8;&#x90E8;&#x771F;&#x660E; &#x300A;November&#x300B;</title>
        <link>https://justinyan.eth.limo/9E088E3A-92F8-47F1-BF28-076D0F57B74D/</link>
        <guid>https://justinyan.eth.limo/9E088E3A-92F8-47F1-BF28-076D0F57B74D/</guid>
        <pubDate>Tue, 21 Feb 2012 18:42:42 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>优酷：<br /> <object width="480" height="400" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://player.youku.com/player.php/sid/XMzU1MDIzODE2/v.swf" /><param name="allowfullscreen" value="true" /><param name="quality" value="high" /><param name="allowscriptaccess" value="always" /></object></p> 
<p>U2B：<br /> <iframe loading="lazy" src="http://www.youtube.com/embed/qccX23n-TGE" frameborder="0" width="420" height="315"></iframe></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6307;&#x5F39; &#x300A;The Rose&#x300B;</title>
        <link>https://justinyan.eth.limo/C3233B30-537F-4379-B9E1-A7102782A0F9/</link>
        <guid>https://justinyan.eth.limo/C3233B30-537F-4379-B9E1-A7102782A0F9/</guid>
        <pubDate>Tue, 21 Feb 2012 00:35:59 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>优酷：</p> 
<p><object width="480" height="400" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://player.youku.com/player.php/sid/XMzU0NjcxNzY4/v.swf" /><param name="allowfullscreen" value="true" /><param name="quality" value="high" /><param name="allowscriptaccess" value="always" /></object></p> 
<p>U2B：</p> 
<p><iframe loading="lazy" src="http://www.youtube.com/embed/lvYCWMudE7I" frameborder="0" width="420" height="315"></iframe></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #33 &#x4EA6;&#x8212; - &#x300A;&#x80ED;&#x8102;&#x300B;</title>
        <link>https://justinyan.eth.limo/7CAE6C1E-9B44-4B61-9560-FCEEC9608FCA/</link>
        <guid>https://justinyan.eth.limo/7CAE6C1E-9B44-4B61-9560-FCEEC9608FCA/</guid>
        <pubDate>Wed, 18 Jan 2012 23:22:34 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/12/f12091dd1f3e48b39c74af531b3fdfb4.jpg" /></p> 
<p>犀利，流畅，跌宕，惊异，亦舒的文字从来若行云流水，又往往警句令人深有同感。跳跃性强，富于节奏感，开卷即可入戏，这种适于香港城市生活的行文对现代人而言颇具吸引力。<br /> 那些什么气氛渲染，情感酝酿，环境构建，亦舒全以对白和心理解决，干净利落，场景转换有如顺水行舟，圆转无缺。<br /> 人物上一般以女性心理描写为主，在以男性为主导的社会里，处于弱势的女性细腻、脆弱、微小的心理变化，在遇到恰当的时机和事件时被放大，或者放入蝴蝶效应里头，引起大波澜，大波折，整个故事随着情感的流动而起伏，而结局又往往在作者手下急转舟头，出乎意料，令人大呼过瘾。<br /> 于我而言，情节尚在其次，亦舒笔下的女性是如此现代，又如此现实，是如此强悍，又如此柔弱，是如此独立，又如此依赖，是如此开明，又如此小气，如此有才，又如此落魄，如此美貌，又如此苍白，这些女性的身边又往往有至少一个女性知己，或者女性仇敌，看着这些睿智犀利的对白，胜却大片无力的景致描绘。<br /> 《胭脂》还是“亦舒式”作品：杨家三代红颜，主角之俊是夹在中间的既是母亲又是女儿的角色。之俊的母亲是美女，之俊的女儿也是美女，只有她自己不是。叶家是杨家世亲，叶成秋追求之俊母亲多年而不得，叶成秋的儿子叶世球则放荡不羁，是出名的花花公子。之俊当叶成秋是伯伯，是母亲的情人，但最终很意外地叶成秋向之俊求婚，而追求过之俊一段时间的叶世球又同之俊的女儿相好。<br /> 这种萝莉大叔的故事亦舒笔下大把大把，故事还是《喜宝》的好，但是阅读的流畅与过瘾，《胭脂》也着实不差。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5982;&#x68A6;</title>
        <link>https://justinyan.eth.limo/E1EA587F-75B1-4A0D-94DB-276AF9FE9920/</link>
        <guid>https://justinyan.eth.limo/E1EA587F-75B1-4A0D-94DB-276AF9FE9920/</guid>
        <pubDate>Tue, 17 Jan 2012 21:18:27 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>12/01/17/夜<br /> 还没来得及掩饰，夜说我还活着。<br /> “你喜欢这破碎的黑暗与柔软的月光么？”<br /> “我爱星星与梦的摇曳。”<br /> “那么你是渴慕着神秘与虚幻的故事了。”<br /> “我只渴望星夜与凉风不会被流云拂去，我可以拥着细碎的低语入眠。”<br /> “那么我想起草地与星夜。”<br /> “咫尺之间，我的左肩，枕着你半眠的脸。”<br /> “那是爱与被爱么？”<br /> “那只是一梦的境界。”<br /> “梦？”<br /> “是梦。我每夜泅过的小河，忧郁的叹息杳杳一如恍惚的萤火，我不知书信的背面是否透着两三行泪痕，但手颤抖了，可能我的案头有猫的步子碎碎地走过。月，在帘头数着哀歌，一如子夜里飘渺的吉他，坠入酒杯一瓣又一瓣。”<br /> “你在梦里哭泣了么？”<br /> “我笑了。我笑着蒲公英漫天飞舞的夜里会有蝉虫的饮泣，我笑着我张开口却发不出半点声音。”<br /> “可你不是哑巴。”<br /> “我是听不见，那浅浅的柔柔的低吟从我的梦里走进我的眼睛，蛩然迷醉的步履，古道上凋落一叶秋风。”<br /> “我不明白，那是梦里的痴人，还是痴人的梦。”<br /> “那是我曾经幽闭的心从此听到你的声音。”</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x6BCF;&#x5468;&#x8BFB;&#x4E66;] &#x7B2C;&#x4E8C;&#x5341;&#x4E94;&#x5468;&#x2014;&#x2014;&#x4E09;&#x5341;&#x4E8C;&#x5468;&#x7684;&#x4E66;&#x5355;</title>
        <link>https://justinyan.eth.limo/2D2623B6-9FB3-42D9-BA0B-56188D04F5EF/</link>
        <guid>https://justinyan.eth.limo/2D2623B6-9FB3-42D9-BA0B-56188D04F5EF/</guid>
        <pubDate>Mon, 05 Dec 2011 14:37:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>7月份开始在TX实习，转眼半年过去，书也不多时间看，博客也不常更新了，好彩买了Kindle Touch，以后看书也比较方便了。</p> 
<p>以下是这近半年所看的几本书=.= 真惭愧，只有9本：</p> 
<blockquote>
 <p><strong>1.《诗论》 ——  朱光潜</strong></p> 
 <p>以古诗词为切入点进行文学理论讨论，其理论其实泛之其他文体亦如是。</p> 
 <p><strong>2.《百年孤独》 —— 加夫列尔·加西亚·马尔克斯</strong></p> 
 <p>跨百年、七代人的家族兴亡史。</p> 
 <p><strong>3.《浪潮之巅》—— 吴军</strong></p> 
 <p>互联网工业界史书</p> 
 <p><strong>4.《雪国》 —— 川端康成</strong></p> 
 <p>雪国里凄美的爱情</p> 
 <p><strong>5.《她比烟花寂寞》—— 亦舒</strong></p> 
 <p>悬疑解谜式的现代爱情小说</p> 
 <p><strong>6.《樱花树下》—— 渡边淳一</strong></p> 
 <p>一个中年男子徘徊在一对母女间的不伦之恋</p> 
 <p><strong>7.《喜宝》—— 亦舒</strong></p> 
 <p>一个平凡的女子一夜之间成为世界聚焦之后，风云色变的故事</p> 
 <p><strong>8.《布谷鸟的蛋是谁的》—— 东野圭吾</strong></p> 
 <p>以身世之谜代替传统犯罪解谜的推理解谜故事</p> 
 <p><strong>9《圆舞》—— 亦舒</strong></p> 
 <p>7岁女孩在第一眼见到中年的他的时候就注定了一生要在畸形的爱中挣扎，跳一场一辈子的圆舞</p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #32 &#x4EA6;&#x8212;&#x300A;&#x5706;&#x821E;&#x300B;</title>
        <link>https://justinyan.eth.limo/E0D562BF-1B48-47E0-A154-5CC55C21665F/</link>
        <guid>https://justinyan.eth.limo/E0D562BF-1B48-47E0-A154-5CC55C21665F/</guid>
        <pubDate>Mon, 05 Dec 2011 14:19:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/12/71O2AUmZVqL.jpg" /></p> 
<p>“它叫<em>圆舞</em> ，无论转到哪一方，只要跳下去，你终归会得遇见我。”</p> 
<p>“哦，是这样的。”</p> 
<p>亦舒的小说总是那样锐利凝练，字字句句直击人心，残忍得美丽，通透得痛心。</p> 
<p>《圆舞》仍以作者擅长的女性角度来述说一个长达一辈子的故事。周承钰认识傅于琛的时候只有7岁，父母离异，母亲新嫁，婚礼上柔弱的灵魂孤独地飘荡，"付于心"总在这种时候出现。后来母亲再度离异，继父负债，傅于琛再度出现，“你不用去哪里，这里仍是你的家”，从此周承钰是傅于琛的“义女”，吗？</p> 
<p>这是一场悲哀的爱情，周承钰进，傅于琛躲，“我才不是小孩”。傅于琛有太多情人，傅于琛有太多“假周承钰”，就是放着真的周承钰无法接受。这是一场圆舞，</p> 
<p>“我不想离开你”</p> 
<p>“不行”</p> 
<p>“它叫<em>圆舞</em> ，无论转到哪一方，只要跳下去，你终归会得遇见我。”</p> 
<p>这场舞跳了太多年，有太多故事太沉重。</p> 
<p>为什么明明很难见的故事亦舒能道得如此自然？</p> 
<p>为什么明明完全无法想象的情感亦舒能表现得如此真挚？</p> 
<p>小说，要贴着人物来写。周承钰，傅于琛，都是那样骄傲的人，直到最后的悲剧收场，一直是那样骄傲。也是，不然哪还有故事写。</p> 
<p>读亦舒的作品，就是读人物的心理，冷得透心。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #31 &#x4E1C;&#x91CE;&#x572D;&#x543E; - &#x300A;&#x5E03;&#x8C37;&#x9E1F;&#x7684;&#x86CB;&#x662F;&#x8C01;&#x7684;&#x300B;</title>
        <link>https://justinyan.eth.limo/A51DF2BB-976F-41DE-A74D-6A9195558FAF/</link>
        <guid>https://justinyan.eth.limo/A51DF2BB-976F-41DE-A74D-6A9195558FAF/</guid>
        <pubDate>Mon, 05 Dec 2011 14:00:40 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/12/1.jpg" /></p> 
<p>《放学后》是东野圭吾出道名作，也是我接触东野的第一部作品，故事部署虽尚青涩，但引人入胜，跌宕起伏。随后又读了《毒笑小说》、《嫌疑犯X的献身》等数本东野的作品，总觉不如前作过瘾，及至新作《布谷鸟的蛋是谁的》，已索然无味。<br /> 《布谷鸟的蛋是谁的》一书并不以传统的犯罪和破案为题材，取而身世之谜作为切入点。章节多而短，初时读来觉得颇适合碎片时间的利用，但是渐渐又觉线索稍嫌紊乱，及至结局，已线仓促草率，最终竟然以两封书信来揭真相，平平无奇。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #30  &#x4EA6;&#x8212; - &#x300A;&#x559C;&#x5B9D;&#x300B;</title>
        <link>https://justinyan.eth.limo/6BC15D97-382D-447D-A48F-19B11A343907/</link>
        <guid>https://justinyan.eth.limo/6BC15D97-382D-447D-A48F-19B11A343907/</guid>
        <pubDate>Tue, 15 Nov 2011 19:22:50 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/11/large_2babaff5.webp" /></p> 
<p>前两周看了亦舒的《她比烟花寂寞》，为亦舒洞悉人情的功力所折服，随后收到 @emma 的</p> 
<p>推荐又看了亦舒的《喜宝》，比前一本更壮烈，更澎湃，更犀利。</p> 
<p>姜喜宝原是一个出身贫寒的女孩，父母离异，与母亲相依为命，母亲倾其所有送喜宝去剑桥</p> 
<p>念书。她是一个坚强的人。偶然一次回香港碰到家财万贯的“黄金女郎”勖聪慧，两人结为</p> 
<p>好友，故事从此开始。</p> 
<hr /> 
<p>一次勖聪慧邀请喜宝去勖家参与晚宴，席间正恼自己衣衫褴褛比不得勖家华丽富贵，便碰上</p> 
<p>一个衣着简朴的老头，不由心生好感，与之攀谈，肆无忌惮。待到主人出席方知那人竟是勖</p> 
<p>聪慧的父亲勖存姿。更不可思议的是后来勖存姿要求把喜宝买下来作为自己的情妇。喜宝答</p> 
<p>应了。<br /> 于是喜宝被囚在勖存姿身边，一下子荣华富贵从天而降，但是自己不快乐。而勖家在这之后</p> 
<p>多有动荡最终悲剧收场。</p> 
<hr /> 
<p>这是一个哀伤的故事，哀伤到漠然。喜宝藐视一切人间世俗，她只想要爱，要很多很多爱，</p> 
<p>如果没有爱，那么就要钱，很多很多钱，如果没有钱？那么拥有健康也是好的。碰到勖存姿</p> 
<p>也不知是喜是悲，被他用钱买下来，成为玩偶，出卖自尊，该恨，但勖存姿拥有难以想象的</p> 
<p>财富和权势，而且爱她，待她好，该爱？姜喜宝在勖家一家之中爱恨纠缠，勖存姿财大势大</p> 
<p>，却最终儿女离散，寂寞病逝，不由令人想起红楼贾家。<br /> 这本小说的看点依然是亦舒那洞穿世事看尽人间的双眼，作为一个“情妇”，姜喜宝过于倔</p> 
<p>强，但是倔强却必须出卖自尊。她想爱，但不敢付出爱，因为她不再相信人间有爱；她想逃</p> 
<p>，但天下之大，竟无处容身。她的矛盾，她与财大势大的勖存姿之间的斗争，似一场无硝烟</p> 
<p>的战争，她处处落败，双方实力完全不能相提并论，但是最终她赢得了勖存姿的爱，也让自</p> 
<p>己爱上了勖存姿。<br /> 还能再爱是一件很不容易的事情，无论是被爱还是爱人。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #29 &#x60C5;&#x611F;&#x7EC6;&#x817B;&#x7684;&#x6D41;&#x52A8; - &#x6E21;&#x8FB9;&#x6DF3;&#x4E00;&#x300A;&#x6A31;&#x82B1;&#x6811;&#x4E0B;&#x300B;</title>
        <link>https://justinyan.eth.limo/1D3433CF-B5CC-4C04-A9FA-BC09CFCA6948/</link>
        <guid>https://justinyan.eth.limo/1D3433CF-B5CC-4C04-A9FA-BC09CFCA6948/</guid>
        <pubDate>Mon, 07 Nov 2011 01:04:04 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/11/wKgMbl3Ly12zlbGqAAP6nG5YNwQ902.jpg" /></p> 
<h3 style="text-align: center;"> ——亦舒《她比烟花寂寞》、渡边淳一《樱花树下》</h3> 
<p>自从参加公司新人必须参加的“一点也不迷你”的迷你项目之后，有近两个月没时间看书了，这回趁着回学校休假的时间好好儿读了两本。<br /> 亦舒的《她比烟花寂寞》和渡边淳一的《樱花树下》。<br /> 这是我第一次接触这两位作家的作品，虽然作品风格、文化大相径庭但是有一点是共通的：对情感的细腻把握和对心理的锐利分析。语言上渡边淳一的风格更趋凄美，而亦舒则显朴素，情感上渡边淳一的处理更加奔放而亦舒则更显含蓄。<br /> 同样是情感的冲突，渡边淳一更喜欢从超出常伦的情境中发出思考，而亦舒则以敲击读者心灵的手法引起共鸣。</p> 
<h3>一、亦舒《她比烟花寂寞》</h3> 
<p><img decoding="async" loading="lazy" class="aligncenter" title="yishutabiyanhuajimo" src="http://www.windyshade.com/wp-content/uploads/2011/11/yishutabiyanhuajimo-181x300.jpg" alt="" width="181" height="300" /></p> 
<p>小说的开篇引入两位主角的角色定位和事件开端，一切看似平淡无奇。第一人称的“我”是报社记者，“编姐”则是报社编辑，“我”在一次偶然的机会采访到当红明星姚晶，于是故事从这里开始。姚晶在外界看来是一个美丽、聪明的女人，是一个演技派的明星，她从不对外公开私生活，是以她的一切看起来那么美好而令人向往。直到有一天，姚晶突发心脏病而逝，而遗嘱却声明留给一个毫不相干的陌生人——“我”。于是“我”为了弄清楚这一切的来龙去脉，决定和“编姐”一起追查姚晶的身世之谜，随着故事的层层深入，“我”才发现，事情比想象中的要复杂得多。<br /> 以悬疑侦探的手法写的这部小说，令人大开眼界，原来现代小说还可以这么写的。一环扣一环，谜题解开了一个又一个，令人兴味盎然，不忍释卷。而其中幽默睿智的警句亦往往令人会心一笑，甚或拍案叫绝。另外对于男女心理的刻画也是一大亮点。</p> 
<h3>二、渡边淳一《樱花树下》</h3> 
<p><img decoding="async" class="aligncenter" title="dbcyyinghuashuxia" src="http://www.windyshade.com/wp-content/uploads/2011/11/dbcyyinghuashuxia.bmp" alt="" /></p> 
<p>对比《她比烟花寂寞》一书，《樱花树下》的情节展开要更柔缓一些，而且文笔也更凄美浪漫，如果读《她比烟花寂寞》如过山车，在连绵起伏中高潮迭起，那么读《樱花树下》就似火车，一路上风光旖旎，惹人遐想。<br /> 翻开这本书，首先吸引我的是目录里每一章节的标题，“花倦”、“草青”、“做梦”、“追花”……以如此优美恬静的单词作为章节题目实不多见，是以未见其文，已心生好感。后来再翻渡边淳一的其他作品，似乎以单词做题是其惯例。<br /> 这本书的故事要突兀得多，一位东京的已婚男士游佐，由于受不了家中妻子卧病在床的压抑气氛，与京都的料理店老板娘菊乃相好。菊乃亦是有夫之妇，但是已与丈夫分居多年。故事的冲突在于有一回游佐和菊乃的女儿凉子瞒着菊乃去赏樱花旅行，并且在旅行那晚发生了关系，从此游佐和凉子堕入爱河，命运的梦魇开始在三人中降临。游佐一直在二人之间徘徊不定，最终菊乃退出了和女儿的竞争后，凉子不小心怀孕了，之后菊乃意外（或者其实是自杀？）身亡，于是凉子认为是自己害死了母亲，堕胎后离开了游佐，悲剧收场。<br /> 渡边淳一的作品常在性描写上大为着墨，性是爱的一部分，性亦是改变一个人的重要因素。而渡边淳一对于人物的心理描写也是入木三分，不必着力于人物形象的描写，在心理与对白上构建出活生生的人物来。<br /> 在有悖常伦的基础上思考往往能带来巨大的冲击，渡边淳一的代表作之一《失乐园》便是如此。在《樱花树下》这部作品中，游佐那种既自责又无法自拔，既愧疚又无法停下的心理被表现得淋漓尽致，而菊乃的骄傲自尊与凉子对于压抑的反抗也是深刻激烈，读之有如身临其境，甚至心生替主角声辩之想。</p> 
<p>如果渡边淳一是分析男性情感心理的高手，那么亦舒就是把握女性情感的专家。二人各具特色，各有千秋。当然，在阅读上，似乎未经转译的《她比烟花寂寞》要更舒服一些，不过《樱花树下》确要更精致几分。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #28 &#x5DDD;&#x7AEF;&#x5EB7;&#x6210;&#x300A;&#x96EA;&#x56FD;&#x300B;</title>
        <link>https://justinyan.eth.limo/5D040F32-9DCF-47B5-BF92-BAEAA9E88679/</link>
        <guid>https://justinyan.eth.limo/5D040F32-9DCF-47B5-BF92-BAEAA9E88679/</guid>
        <pubDate>Sun, 04 Sep 2011 20:29:16 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/09/3683c9cfff42cce1.jpg" /></p> 
<p>第一次读到川端康成的作品，《雪国》，这部不到8万字的中篇小说，却连载了三年。<br /> 知道川端康成是初中时看到“诺贝尔文学奖系列图书”，《雪国》是其中之一。川端康成剩于1899年，1968年成为日本第一位获得诺贝尔文学奖的作家。自幼体弱的川端康成，在家人过分的保护下变得孤独而沉郁。他的文字里也到处弥漫着一种说不出的哀伤与忧愁，孤独是其不变的旋律。1970年，作家三岛由纪夫切腹自杀，17个月后，川端康成饮煤气自尽。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/09/xueguo001.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1105" title="xueguo001" src="http://www.windyshade.com/wp-content/uploads/2011/09/xueguo001-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/09/xueguo001-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/09/xueguo001.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a><br /> “国境の長いトンネルを抜けると雪国であった。夜の底が白くなった。信号所に汽車が止まった。”（“穿过县界长长的隧道，便是雪国。夜空下一片白茫茫。火车在信号所前停了下来。”）雪国在一片华美的白色中展开，川端康成的文笔华美凝练，优雅通达，能把小说写的这样美丽而有内涵的并不多见，就如前辈君 @isha_9 所说“就像遇到个难得如此美貌，又如此才华的姑娘一样。”<br /> 《雪国》的文字温柔似水，写景使人知寒冬愁美心生向往，写人使人叹生活艰苦心见可怜。情节则一如多数日本文艺的样子，不温不火，柔柔软软，读来如行云流水，却自有一番深刻的见地在其间。其中细节的描写尤为精到，如主人公岛村初到雪国时在火车窗里久久凝望叶子的影子，其心理变化之细腻活灵活现。<br /> 写人物时不刻意着笔墨形象细节也是一大特色，通过人物的声音，性格，对话，在抽象中使读者自行生发出一个立体的影子来，避重就轻，反而使读者印象更为深刻人物形象更为立体。如叶子每逢出场必伴随着好听而凄美的嗓音，比如驹子那不可思议的干净的形象。<br /> 读《雪国》有如读散文，信手翻阅，轻轻柔柔，优美如歌，这是如诗一般美丽的小说。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #27 &#x5434;&#x519B; - &#x300A;&#x6D6A;&#x6F6E;&#x4E4B;&#x5DC5;&#x300B;</title>
        <link>https://justinyan.eth.limo/C595E007-5BF3-481B-AE18-7B4356A93230/</link>
        <guid>https://justinyan.eth.limo/C595E007-5BF3-481B-AE18-7B4356A93230/</guid>
        <pubDate>Thu, 25 Aug 2011 09:25:33 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/08/61NleV0jV9L.jpg" /></p> 
<p>这是一部讲述了近百年来工业界发展史的书，其中有科技巨人微软、苹果、惠普、IBM、AT&amp;T等大公司的兴衰之路，也有对整个世界工业史的宏观叙述，还讲述了几个重要的商业模式、国际金融机构和世界经济操盘手。全书观点宏观而不空洞，跨时绵长而不累赘，故事传奇而不虚浮，评论精彩而不偏颇（大体上是的），是一部难得的史书。<br /> 世界工业百年以来，出过像AT&amp;T那样人才辈出季度繁荣而又一时衰落的黄昏公司，IBM那样保守谨慎却时时领导电子潮流的蓝色巨人，微软那样野心勃勃城府极深的OS霸主，思科那样抓住机遇凭借东风的设备之王，雅虎那样制定了互联网规则却败在目光短视而日渐衰颓的明日黄花，摩托罗拉那样曾经辉煌的没落贵族，google那样技术制霸精明远见的婴儿巨人，以及诺基亚那样木工厂出身却引领技术革命浪潮的成功的“转基因公司”。<br /> 这些传奇的公司各有各精彩非凡的故事，而这样的故事却未必每个人都能清楚地知道，本书以朴实流畅的语言对这些大公司的兴衰历史做了客观的描述。除了把故事讲得精彩纷呈娓娓动人之外，作者对这些历史事件独到的点评亦是本书的一大亮点。除了大公司之外，网景、太阳、NOVELL这些转瞬即逝的璀璨流星也在书里留下了华丽的一笔。<br /> 作者在书中还讲到整个世界或者科技界与金融经济的紧密联系，讲述了各种成功的商业模式，讲述了华尔街和风投公司在科技公司的影响力，讲述了一个公司的基因是怎样决定一个公司的胜败兴亡，这些不为大众所熟知的故事读来令人受益匪浅，读到精彩之处不免手不释卷，废寝忘食。<br /> 尽管作者在最后几章中提到腾讯公司的几个观点我并不百分百认同（这可能跟作者吴军博士后来加盟腾讯有关），微软和苹果之争每个人也有不同看法，至于google是否至善至美也不可一言而尽，但是从整体上看，该书还是算比较客观全面的。这本书里所载的文章最初是发表于谷歌中国的黑板报上，后来才由作者整理修改（以作者原话说，科技界发展得太快，以至于作者不得不进行大篇幅修改才能在现在成书出版）后成书。作者虽是程序员但是文笔朴实流畅，写故事写得动人心弦，丝毫不逊于国内很多所谓“编辑”，这点实在难能可贵。<br /> 对于非IT从业人员来说，这本书读起来几乎没有什么阅读门槛，只要当作一本小说来读就可以了，就跟看故事会似的。对于IT从业人员来说，从这些传奇故事中吸取教训，开拓视野无疑对于今后的事业会有很大的帮助。总而言之，这也算是一本“相见恨晚”的好书。</p> 
<p>谷歌中国黑板报<a href="http://www.googlechinablog.com/" target="_blank" rel="noopener">：http://www.googlechinablog.com/</a><br /> 《浪潮之巅》购买链接：<br /> <a href="http://www.amazon.cn/%E6%B5%AA%E6%BD%AE%E4%B9%8B%E5%B7%85-%E5%90%B4%E5%86%9B/dp/B005DSK504/ref=sr_1_1?ie=UTF8&amp;qid=1314235217&amp;sr=8-1" target="_blank" rel="noopener">亚马逊链接</a><br /> <a href="http://product.dangdang.com/product.aspx?product_id=22465046&amp;ref=search-1-pub" target="_blank" rel="noopener">当当网链接 </a><br /> <a href="http://book.douban.com/subject/6709783/" target="_blank" rel="noopener">豆瓣链接</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #26 &#x52A0;&#x897F;&#x4E9A;&#xB7;&#x9A6C;&#x5C14;&#x514B;&#x65AF; - &#x300A;&#x767E;&#x5E74;&#x5B64;&#x72EC;&#x300B;</title>
        <link>https://justinyan.eth.limo/49D079A5-E2D2-4F56-B3EF-6211DC829589/</link>
        <guid>https://justinyan.eth.limo/49D079A5-E2D2-4F56-B3EF-6211DC829589/</guid>
        <pubDate>Mon, 15 Aug 2011 19:20:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/08/810WahLVE-L.jpg" /></p> 
<p>这是一本时间跨度很大，出场人物很多的小说，涉及了布恩迪亚(Buendía)家族七代人的故事。（说是七代人其实第六、七代均只有一个人，而且七代在出生的同时死去。）<br /> <a href="http://zh.wikipedia.org/wiki/%E7%99%BE%E5%B9%B4%E5%AD%A4%E7%8B%AC" target="_blank" rel="noopener">wikipedia</a>说“（百年孤独）小說以虛構市鎮馬康多（Macondo）的榮衰作為拉丁美洲百年滄桑的縮影。以奇詭的手法反映了殖民，獨裁，鬥爭和流血的歷史，以及遺忘和孤獨的主題。”而事实上笔者在阅读的过程中并没有考虑太多，对拉丁美洲的历史也不甚熟悉，但此书仍给我了极大的阅读享受。<br /> 即使不论其历史意义和批判意义，《百年孤独》在写作技巧上也颇具特色——人称“魔幻现实主义”。在《百年孤独中》，常有诸如美人蕾梅黛丝(Remedios)随着床单“升天”，老布恩迪亚(Buendía)的鬼魂在栗树下游荡哭泣，智者老吉普赛人的灵魂出现书房指导Buendía家族的后代学习破译自己的手稿这样的超现实写法。而且书中的角色都将这一切视为生活中再正常不过的事情，从而起到出乎意料的效果，是为魔幻现实主义（参见维基<a href="http://zh.wikipedia.org/wiki/%E9%AD%94%E5%B9%BB%E7%8E%B0%E5%AE%9E%E4%B8%BB%E4%B9%89" target="_blank" rel="noopener">魔幻现实主义</a>词条）。<br /> 《百年孤独》是个点睛的书名，这本书除了与普通小说一样讲述各种各样神奇的故事之外，作为1967年发表的拉美文学，还带有反映殖民历史之残酷，反馈内部的压迫与外来剥削的作用，而这点也是该书获得1982年诺贝尔文学奖的理由。豆瓣上有些人云“在还没有能力读懂它的时候，不要读它。”这种荒谬的装13专用语实在毫无根据，从没有哪一种阅读是必须要求你完全理解文章之后才能进行的，即便是学术上要求有一定能力才能阅读的文章，也是从不懂到懂慢慢学会的，何况这本书本就不是什么要求有超高学术基础才能理解的书，根本不存在不能读的理由。至于有人说：“说读懂《百年孤独》的人都是装13”（忘记确切的词汇了）之类的言论的，则见仁见智。何谓“懂”何谓“不懂”。历史上许多名著，对于作者本身而言，写作的时候也许并没有考虑太多，都是后人穿凿附会加入了许多自己的想法的。那么这样的做法就是“懂”吗？读过一本小说，知道了其中的故事，对于自己而言既享受了阅读的愉悦又获得了或多或少的见识增长这算“不懂”还是“懂”？再进一步，假定我们定义了“懂”的意思就是能至少理解作者原意的90%的话，那么我“不懂”又如何？<br /> 在阅读《百年孤独》的时候，对于并不了解其背后历史意义的我来说，要达到理解作者原意的90%几乎是不可能，但是这又怎样呢？这本书里的每一个人物每一个故事还是深深地吸引了我，我还是从中得到了阅读的乐趣，对于我来说，这大约就足够了。我不是研究这本书的学者，对于普通读者来说也不需要完全解剖这本书，那么，享受到阅读的乐趣，大约也就足够了。这本书，由老Buendía开始，第一代人的开拓勇敢，第二代人的继承与反叛，第三代人的悲哀与不幸，第四代人的异变与腐朽，第五代、第六代的衰落与淫乱，终于到第七代的一出生即死去的流星之光，历时百年，故事光怪陆离，情节跌宕起伏，代代有能人，代代有悲哀，终于沦为百年之孤独。<br /> 从人物上来说，这本书的角色各有特点，代际间各有继承和突变，而第一代女人乌苏拉(Úrsula)活了一百多岁则在很长时间里起着主角变更的过渡作用，再加上由姓名继承决定其性格特点的设定，使得人物虽繁且多，但各个鲜活，不觉突兀。<br /> 其中老Buendía前半生勇敢开拓功绩丰伟，后半生则糊涂迷失终至疯狂；第二代的Buendía上校一生中战役不断有如天将，最后也还是终老作坊孤独无依；至于Arcadio则孔武有力壮如象牛，却天生叛逆浪荡死于非命。如此Buendía家族的男人叫Arcadio的则强壮而愚蠢，叫Buendía的则聪明而充满野心，这是Buendía家族男人的宿命。至于Buendía家族的女人，老Úrsula是家族的支柱，几乎每次家族出现危机都由这个顽强的女人独立支撑而安然度过，她的兴衰几乎就是整个家族的兴衰，在她死后再无人能令Buendía家族起死回生终于完全没落。Buendía家族除了老Úrsula其他的女人几乎都是红颜祸水，各有悲惨的一声。小姑娘Remedios是有着天下般的，但是在她嫁入Buendía家不久后就死于非命。第四代的Remedios亦是惊为天人，但是个性单纯，对男女之事从无兴趣，惹下几个男人为之丧命之后，在自家庭院随着床单“升天”而去。还有各种淫乱的结合，终至家族第七代生而畸形，在出生时号泣中无人照料最后死去。<br /> 于是这个百年的家族，其宿命决定了他们每一个人都将一辈子孤独，即便有些人曾有过半生幸福，但余生必将更加悲惨。从一开始作者就已经决定了笔下人物的生死，写在老吉普赛人的手稿中，那份神秘的几乎无法破译的手稿就是Buendía家族的宿命，最终在第六代破译出家族灭亡的时候随着风消失了。作者笔下丰富的人物和神奇的故事，魔幻的手笔带来的独特的体验，都使得这本书读起来格外感人。<br /> 拉丁美洲的历史我不了解，但作为一本小说去读，去经历，去体验，与我而言，已颇满足矣。<br /> <em>PS：我看的是大陆最近才被授权出版的范晔的译本，封面即文首给出的，各大网络书店和实体书店均有出售。</em></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x53C8;&#x4E00;&#x5E74;webrebuild&#x8981;&#x5F00;&#x59CB;&#x55BD;&#xFF5E;&#xFF01;</title>
        <link>https://justinyan.eth.limo/4020D407-5276-4846-A33D-7154D681C5DE/</link>
        <guid>https://justinyan.eth.limo/4020D407-5276-4846-A33D-7154D681C5DE/</guid>
        <pubDate>Tue, 09 Aug 2011 19:44:23 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>转眼已经一年过去了，去年在webrebuild年会学到不少东西啊，不过去年我是在广州网易大厦参加的，今年就可以在深圳站参加喽～！</p> 
<p>各位童鞋如果对于前端有兴趣的话可以点击下面的链接报名哦，活动现场有牛人作演讲，而且还有得抽奖哦，我去年就抽中了QQ年费会员哈^_^</p> 
<p> </p> 
<p><a href="http://www.webrebuild.org/" target="_blank"><img decoding="async" loading="lazy" src="http://www.webrebuild.org/style/screen/default/728x90.jpg" alt="WebReBuild.ORG第五届年会——重构七年" width="728" height="90" /></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4ECB;&#x7ECD;&#x51E0;&#x4E2A;CSS3&#x65B0;&#x5C5E;&#x6027;&#x548C;&#x52A8;&#x753B;&#x6548;&#x679C;</title>
        <link>https://justinyan.eth.limo/0CDDFFAB-12C1-49E3-9B70-9AED1384674C/</link>
        <guid>https://justinyan.eth.limo/0CDDFFAB-12C1-49E3-9B70-9AED1384674C/</guid>
        <pubDate>Sun, 07 Aug 2011 15:42:56 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>最近稍微玩了一下CSS几个有用的新特性，</p> 
<div id=":jh">
 <wbr />主要是transition(过渡效果),translate(
 <wbr />移动),transform(变形)以及animation(
 <wbr />动画)。
 <br /> 几个新特性的叠加可以产生很强大的效果，
 <wbr />而且比起写JS要方便得多，当然，
 <wbr />目前只有webkit和mozilla以及难见踪影的IE10支
 <wbr />持CSS3，webkit支持得最好，moz次之，IE杯具。
 <wbr />所以目前CSS3的应用主要还是在iOS和android上会比
 <wbr />较有前途，PC上就算了，玩玩就好了。稍微介绍一下这几个属性。
 <br /> 
 <strong>1.CSS3 Transitions 过渡效果</strong>
 <br /> 可以很方便地指定两种样式之间的切换过渡效果，
 <wbr />比方说我们移动一个div的位置，从x = 0px 到 x = 200px，
 <wbr />这时候使用transition指定缓动效果为ease-in-
 <wbr />out，我们可以看到DIV移动时会减速。
</div> 
<pre lang="CSS">.box:hover{
/* 这里的all是指适用在所有效果，如果想只适用width或者height，直接替换即可，多个效果用“,”隔开 */
    -moz-transition: all 800ms;
    -webkit-transition: all 800ms;
    -o-transition: all 800ms;
    -ms-transition: all 800ms;
}</pre> 
<p> </p> 
<div>
 <strong>2.CSS3 Translate 移动元素</strong>
 <br /> 以前如果我们要写一个元素移动的动画，
 <wbr />通常我们会设置某元素位置为absolute，
 <wbr />然后通过JS改变其top,left,right,
 <wbr />bottom等属性来实现动画，现在我们可以使用css3 translate来做到这一点，
 <wbr />而完全不需要设置position为absolute。另外，
 <wbr />这里提醒一下大家，使用css translate在android上相当杯具，
 <wbr />而在iOS的mobile safari里面使用，
 <wbr />则transalte2d的效果远远不如translate3d
 <wbr />，所以，如果需要在mobile safari里面使用该属性，
 <wbr />强烈建议使用translate3d(x,y,z)的形式，
 <wbr />即使只是修改其中的X或者Y，也这样写。
 <wbr />我测试过使用translateX或者translateY，
 <wbr />效果跟2d的一样烂。
 <br /> 而translate3d是webkit才支持的属性，
 <wbr />估计内部实现与2d不同，所以效果流畅很多。
</div> 
<pre lang="CSS">.example:hover .translate{
/*这里示例的是2D的translate，参数为x,y，如果用3D则translate3d(x,y,z)，但目前只有webkit支持3D*/
-moz-transform: translate(500px,0);
-webkit-transform: translate(500px,0);
-o-transform: translate(500px,0);
-ms-transform: translate(500px,0);
}</pre> 
<div>
 <strong>3.CSS3 transform 形变</strong>
 <br /> CSS3提供了几个很有用的属性来改变元素的形状：
 <wbr />缩放scale，旋转rotate，倾斜skew。（IE10+
 <wbr />也支持，但是要加-ms-前缀。）
</div> 
<pre lang="CSS">.rotate:hover{
-moz-transform: rotate(720deg);
-webkit-transform: rotate(720deg);
-o-transform: rotate(720deg);
-ms-transform: rotate(720deg);
}</pre> 
<div>
 下面给出几个实例并附上相关代码(
 <a href="http://windyshade.com/mapleshadow/css3example/css3-aniamtion-example.html" target="_blank">猛击这里新窗口查看效果</a>)：
 <br /> 
 <iframe loading="lazy" name="aa" src="http://windyshade.com/mapleshadow/css3example/css3-aniamtion-example.html" frameborder="0" width="600" height="2000"></iframe>
</div>
        ]]></description>
    </item>
    
    <item>
        <title>&#x7AE5;&#x5FC3;&#x662F;&#x6700;&#x63A5;&#x8FD1;&#x827A;&#x672F;&#x76F4;&#x89C9;&#x7684;</title>
        <link>https://justinyan.eth.limo/9840BB14-7B76-4112-A0EB-11C1DD291867/</link>
        <guid>https://justinyan.eth.limo/9840BB14-7B76-4112-A0EB-11C1DD291867/</guid>
        <pubDate>Mon, 18 Jul 2011 01:08:37 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><a href="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08740.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1056" title="DSC08740" src="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08740-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08740-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08740-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p>今日本想去见一见人称“月光宝盒”的广东省博物馆，却因为排队的人太多，又酷暑难耐，只得作罢，匆匆赶往左近的美术馆参观。一到那儿，得知美术馆已免费开放，不禁又喜又忧。喜的是可以有更多的人参观必能提升大众修养，自己以后再来也省下点费用，忧的却是如此一来，也许会有大量群众前来参观，而美术馆本就是个小众的地方，又不宜喧闹，只怕以后参观时要烦心不少。<br /> 且不说这些，入得馆来，又有一事令我眉头大皱：一楼所有展厅居然都被占了用来宣扬百年反帝反封建斗争，尤其是长安精神一类的。更有一位解说员挂着个大喇叭在那里大谈特谈党的光辉历史。我不愿听这些无谓的废话，径自往二楼来。<br /> 二楼的展题是“广东新水墨”，展板的前言写得官腔官调的半点不着边际，不过画作倒有些意思。有用水墨写实的，也有借着水墨的形式而行抽象画之道的，还有水墨油画相结合的，稀奇古怪得很。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08690.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1058" title="DSC08690" src="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08690-225x300.jpg" alt="" width="225" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08690-225x300.jpg 225w, https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08690-768x1024.jpg 768w, https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08690.jpg 1944w" sizes="(max-width: 225px) 100vw, 225px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08693.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1059" title="DSC08693" src="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08693-225x300.jpg" alt="" width="225" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08693-225x300.jpg 225w, https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08693-768x1024.jpg 768w, https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08693.jpg 1944w" sizes="(max-width: 225px) 100vw, 225px" /></a><br /> 不过今日一行最大的收获却在三楼“擦火柴”的儿童创意画作展出，简讯中把“生活中的创意碎片”比作擦火柴时迸出的火花，我却觉得他说的更应该叫做“灵感”或者“想象”而不是创意。<br /> 文艺（包括文学和艺术）创作的解读在一个“见”字，能“见”出其中意境，其中意思，便算是对其的解读。在读一首诗，观一幅画，听一首曲子的时候，我们得先“见”后方能“赏”。文艺创作中的“见”多表现在直觉的“知”上。“知”可分为两种，一种是直觉的知，一种是知觉的知。当我们看到物体A的时候，脑海里浮现物体A的形象，画面，是为直觉。而当我们看到物体A而联想到物体B联想到C，这ABC三者的关系便是我们知觉而到的。比方说我们看到一枝梅花，浮现梅花的形象而不觉其他，是直觉，但如果我们联想到梅花是香的，可以摘下来摆在家里，插花瓶里浇点水，那么我们是动用了知觉的知。文艺作品的“见”多以直觉的知来传达，当然这不是说知觉联想不重要，只是我们要更接近于艺术本源的话，得先以直觉去逼近，而知觉分析则是“见”之后“赏”的问题了。<br /> 当艺术家在进行创作的时候，他是把他日常所思考的，用他所掌握的表现形式以直觉的迅速表现出来。简单地举例可以说演员的临场发挥，作家的灵光一闪，画家的大笔一挥。当然前提是艺术家本身已经对于自己掌握的表现形式很熟练了，他在创作的时候需要的是选择合适的形象，结合情感思想而作表达。这就牵扯到形式和本质是否可分的问题。在《诗论》中，朱光潜先生认为形式和本质是不可分的。诗歌有诗歌适合表达的一面，绘画有绘画适合表达的一面。画家不一定擅长诗歌，诗人不一定擅长绘画，即使有人二者兼长，却也不能说一个艺术瞬间就能百分百用两种形式去表现。艺术家选择的形式大约是他认为这样做比较好，而在这样做的同时，已经承认了，形式也是包含在表达的本质之中，不可完全剥离。艺术是由生命的，把形式和本质剥离开了就是解剖尸骸，不是在讨论形式。回到刚才的问题，艺术家选择合适的形式表达情感思想的时候，多数是以直觉的形式创作出来。即使有苦思而写作的，在动笔时也是直觉表达，即使有反复修改的，在每一次修改之时也是一次新的创作。所以当我们观看一幅画作的时候，以直觉去逼近艺术本源就是最佳的解读方式。而童心是最接近艺术直觉的。<br /> 童心并不是专指小孩子的心思，而是指与孩童一般的天真，纯真，心无旁骛的想象。当我们参观一幅画作阅读一篇文章的时候我们需要想象，利用想象进行还原。童心拥有最丰富的想象，是以更接近艺术本源。但是孩子只是孩子，一个孩子拥有更好的想象力，由于他没有受过长期的艺术训练，没有经过丰富的人生阅历，没有做过深刻的创作思考，他笔下所作的便不算最佳的艺术作品，甚至多数孩童信手所涂都不算及格的艺术品。<br /> 在美术馆的展出中，我看到孩子的画作有受制于老师的模板的，画的死板而敷衍，也有毫无拘束的信笔乱涂的，也有掌握了一定美术能力的极力要“画得好看的”，但是最吸引我的却是那些把绘画当作娱乐，能全身心投入到绘画当中，即使画的不好完全无所谓，想到什么就把什么画下来的作品。这些作品往往能在很小的空间范围内见出相当丰富的内容，这些内容就是孩子们天马行空的想象力啊，而这也是随着年龄的增长渐渐消失的东西。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08744.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1060" title="DSC08744" src="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08744-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08744-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08744-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08743.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1061" title="DSC08743" src="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08743-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08743-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08743-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08741.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1062" title="DSC08741" src="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08741-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08741-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08741-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08731.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1063" title="DSC08731" src="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08731-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08731-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08731-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08725.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1064" title="DSC08725" src="http://www.windyshade.com/wp-content/uploads/2011/07/DSC08725-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08725-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/07/DSC08725-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a><br /> 虽然可惜，但是不可逆，我们虽然遗憾失去了天马行空的想象，在落笔之时总是有太多顾忌，但是把规矩拘束视为游戏，把人生阅历视为基石，假使更有一颗永远童真的心，我想这样创作出来的才是更为美妙而富有意义的作品。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #25 &#x6731;&#x5149;&#x6F5C; - &#x300A;&#x8BD7;&#x8BBA;&#x300B;</title>
        <link>https://justinyan.eth.limo/C4AA0262-7081-4AD9-B1A9-5BFB758C36FF/</link>
        <guid>https://justinyan.eth.limo/C4AA0262-7081-4AD9-B1A9-5BFB758C36FF/</guid>
        <pubDate>Sat, 16 Jul 2011 14:42:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/07/51wxWgPwdaL.jpg" /></p> 
<p>这是一本相见恨晚的书。枫影是初中开始写的新诗，一直到现在还时有写作，只是大学以来文学创作少了很多，实在是太懒。假使在当时让我看到这本书，也许一开始我会傲然一笑，笑这人说的太绝太无理，但是接下来几天必定会一遍遍思索最终认同：“在我们的时代，文学的最正常的表现的方式似乎是散文、小说而不是诗。……许多青年白费许多可贵的精力去做新诗，幼稚的情感发泄完了，才华也就尽了。”<br /> 这是全书的最后一篇《给一位写新诗的青年朋友》的文章里面所叙述的观点。当我开始写作诗歌的时候我也知道诗歌在我们的时代早已没落，只是从未想过把精力放在诗歌上会是一种浪费。但读罢《诗论》全书，才晓得诗歌的概念与我原先所想并不全然一致。<br /> 《诗论》里的诗，主要是指中国古代的古典诗歌，但是也广义指一切文学的起点，也即朱光潜先生所谓“文学到了最高境界都必定是诗，而且相信生命如果未至末日，诗也就不会至末日”。所以这一本文学理论所名为《诗论》，其实其所述的道理是可以应用在其他文学体裁之中的，体裁只是一种形式，虽然形式与本质不可分离，但是提取出来的最根本的道理应当是相通的。<br /> 全书共分十三章，大致可分为诗歌本身的特点，诗歌与其他文艺的关联，诗歌的节奏与声韵，诗歌的格律，以及附录这几个方面。<br /> 一、诗歌本身的特点<br /> 从诗歌的起源、谐隐、境界、表现来作阐述。起源中阐述了诗歌是最原始的文学，而且最早的诗歌是诗、乐、舞不分家的。于是诗歌天然有抒发情感的优势，也天然地有节奏感、有音乐性，只是后来三种艺术形式各有侧重而变得不那么明显。这点与现代许多作家强调诗歌的音乐美是一致的。其中引用希腊哲学家所谓的“再现”与“表现”的区别联系一节可能较难理解，可以参考《美学史》一书，有较为详细的解释。<br /> 在谐隐一章中分析了几种常见的诗歌写作技巧，很值得一学。这种技巧可谓“文字游戏”，分为三种：一为“谐”，用文字开玩笑；二为“谜”或“隐”，用文字捉迷藏；三则无固定形式，大致为奇特的文字组织。<br /> 境界一章讲述了诗歌的“境界”究为何物，很应该仔细阅读。我们常为一首诗或一首词的境界很高，或者境界如何如何。其实一般人对于“境界”一词事实上知之甚少。文章中引用了《人间词话》的部分段落作为引子，一般赞同一般批判地讲述了“境界”的概念。同时引出了诗歌的情感与意象的关系，进而在论表现一章中做出详细的解释。在这一章，大致把境界定义为“诗的独立自足的小天地”，“是情景的契合”。所谓情景契合，大约为意象（描写的景物或者其他物件）和情感的契合，也有人称之为“意境”。<br /> 在《人间词话》中有把意境分为几层，亦有评意境高下的。在朱光潜看来，意境本无高下，每一首诗各不相同，不能单以意境论高低。比如第三章第三节的“有我之境”和“无我之境”的争辩。<br /> 论表现一章分析了诗歌的情感思想与语言文字的关系。多数人常把文学分为“形式”与“本质”，并往往认为“本质”要重于“形式”。在这一章里，朱光潜先生先是详细说明了“表现”一词的意义，在论证了情感思想和语言的联系，最终得出“无体不成形，无形不成体，把形体分开来说，是解剖尸骸，而艺术是有生命的东西。”的结论。也就是说，“形式”与“本质”的区别固然可以有，但是它们是密不可分的，不能割裂开来讨论。<br /> 二、诗歌与其他文体的区别与联系<br /> 在前一章讨论了“形式”与“本质”的关系之后这一章开始又要讨论“形式的不同了”。事实上在上一章的理论之上，得出是与散文都是文学的结论，但显然我们又不能把散文称为诗，把诗称为散文。所以朱光潜先生不从形式而从文章本身的内涵来判断文章是为诗还是为散文。而不是一般地认为“有韵而为诗，无韵而为文”。这里我认为，作为严肃的文学讨论我们可以仔细阅读并认真做计较，但在平日里阅读之时却不必要这般计较一篇文章的文体了，尤其有了散文诗这种模棱两可的文体之后。<br /> 三、诗歌的节奏与声韵<br /> 这一部分主要以纯文学理论的角度来讲述节奏和声韵对于诗歌的重要性。引用了数位西方哲学家的理论，以先做阐述，再做论证的方式步步剖析，最终得出结论。<br /> 四、附录<br /> 第十三章是写陶渊明的，感觉不如前面的十几章好看，但是最后一篇《给一位写新诗的青年朋友》的文章却是大力推荐，看得我直冒冷汗，仿佛文中所说的人便是自己，字字珠玑，字字穿心。<br /> 这本书是一部很难得的文学理论，见解独到而深刻，基于坚实的理论基础，再加上作者过人雄辩，语言简洁，几乎每一句都令人有大收获，是一部相见恨晚的好书。不过书的理论气很重，所以如果不是喜欢文学又稍微写过一点文字的童鞋读起来可能会有一点吃力，至于其中引用其他哲学家理论的段落，理解起来也是颇为困难，如果读过哲学类的书籍可能会更好理解，比方同作者的《西方美学史》，或者另一本《美学史》一书，均有详细的解释。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x89E3;&#x51B3;JS(jQuery)&#x4E2D;blur&#x89E6;&#x53D1;&#x51FD;&#x6570;this&#x6307;&#x9488;&#x6307;&#x5411;&#x95EE;&#x9898;(&#x51FD;&#x6570;&#x4F5C;&#x7528;&#x57DF;&#x95EE;&#x9898;)</title>
        <link>https://justinyan.eth.limo/1E162804-5147-47C8-B949-1A2008D964B4/</link>
        <guid>https://justinyan.eth.limo/1E162804-5147-47C8-B949-1A2008D964B4/</guid>
        <pubDate>Sat, 18 Jun 2011 17:31:07 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>昨晚在写JS的时候（基于jQuery）一直纠结这么一个问题，不太好表述清楚，所以这篇文章的标题也怪怪的。大致状况如下:</p> 
<pre lang="JAVASCRIPT">/*
*定义一个表单类，里面成员变量有各个inputs的对象集合
*各个inputs绑定blur事件用来触发表单输入验证
*验证用的函数封装在prototype中，属于成员函数
*/
function UserForm(){
//...这里获取表单和inputs
this.inputs.blur(this.validate);
}
UserForm.prototype = {
setStatus: function(){
//用来设置表单状态，表示填写进度用
},
validate: function(){
//...省略无关内容
//这里获取当前触发了blur事件的input对象
$input = $(this);
//这里用来调用成员函数setStatus
this.setStatus(1);
}
}</pre> 
<p>代码如上，问题就出在this指针上面。当我在构造函数UserForm()里面使用this.elements定义各个成员变量的时候，这里的this指针会指向我们的UserForm对象，在成员函数validate()里面正常情况下也可以使用this.fun()的方式来调用其他公有函数。但是，我在构造函数中调用validate()函数的时候使用了jQuery的blur()函数来调用，那么这时候的this指针就指向了当前失去焦点触发blur的input元素，则无法再使用this.fun()的方式来调用其他公有函数。</p> 
<p><strong>解决方法1：</strong><br /> 既然是this指针的问题，那么我们不在类里面封装使用blur方法调用，我到类外先获取inputs然后给input绑定一个blur函数，再把当前input对象传给validate就能解决。</p> 
<pre lang="JAVASCRIPT">function UserForm(){
//...这里获取表单和inputs
this.inputs.blur(this.validate);
}
UserForm.prototype = {
setStatus: function(){
//用来设置表单状态，表示填写进度用
},
//修改validate方法，改为把当前input对象作为参数传进来
validate: function($input){
//...省略无关内容
<del datetime="2011-06-18T09:15:35+00:00">//这里获取当前触发了blur事件的input对象
$input = $(this);</del>
//这里用来调用成员函数setStatus
this.setStatus(1);
}
}
$(document).ready(function(){
var loginForm = new UserForm('#UserLoginForm','#signUp');
var inputs = $('#UserLoginForm input');
$inputs.blur(function(){
loginForm.validate($(this));
});
});</pre> 
<p>但这是非常不可取的，我封装成类本来就是想把逻辑处理的内容都在类里面完成，这样做就变成我把处理过程都放到类外去做了，那我的类不就成废物一个了么？<br /> 于是……</p> 
<p><strong>解决方法二：</strong><br /> 纠结好久我到推上发了发牢骚，结果 <a href="http://twitter.com/#!/rainux">@rainux</a> 大大粗线鸟，告诉我一个神奇的$.proxy(this.handler, this)函数，是jQuery的函数，用来改变函数作用域，把handler的作用域绑定在this上面。如果写在blur函数里面，那么就是element.blur($.proxy(this.handler, this))，如此，validate函数中的this指针就仍然是指向UserForm类，就可以顺利调用成员函数了。</p> 
<pre lang="JAVASCRIPT">function UserForm(){
//...这里获取表单和inputs
this.inputs.blur($.proxy(this.validate, this));
}
UserForm.prototype = {
setStatus: function(){
//用来设置表单状态，表示填写进度用
},
validate: function(){
//...省略无关内容
//这里用来调用成员函数setStatus
this.setStatus(1);
}
}
$(document).ready(function(){
var loginForm = new UserForm('#UserLoginForm','#signUp');
});</pre> 
<p>但是还有一个问题，我改变了this指针使得我的成员函数可以使用this.foo的方式调用没错但是我要怎么确定当前哪个input触发了该函数呢？<br /> 再试了半天纠结了好久之后给出最终解决方法：使用event.currentTarget。（依然感谢 <a href="http://">@rainux</a> 大大的帮助）<br /> <strong>最终解决方法：</strong></p> 
<pre lang="JAVASCRIPT">function UserForm(){
//...这里获取表单和inputs
this.inputs.blur($.proxy(this.validate, this));
}
UserForm.prototype = {
setStatus: function(){
//用来设置表单状态，表示填写进度用
},
//这里把event作为参数传入
validate: function(event){
//...省略无关内容
//使用event.currentTarget获取当前DOM对象，为了方便我把它转化为jQuery对象
$input = $(document.getElementById(event.currentTarget.id));
//这里用来调用成员函数setStatus
this.setStatus(1);
}
}
$(document).ready(function(){
var loginForm = new UserForm('#UserLoginForm','#signUp');
});</pre> 
<p><strong>总结</strong><br /> 在解决这些问题的时候走了挺多弯路，说明之前写的代码不够多，看的文档不够仔细，其实click()、blur()等这些事件方法都是可以直接传参数什么的，而不是我一直以为的必须使用匿名函数的方法，这些技巧都挺有用的，所以，多看官方文档有好处的T_T</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5229;&#x7528;JS&#x548C;CSS3&#x5B9E;&#x73B0;&#x591A;&#x6D4F;&#x89C8;&#x5668;&#x56FE;&#x7247;&#x65CB;&#x8F6C;</title>
        <link>https://justinyan.eth.limo/202AC5E6-BCD8-47B4-91CD-9C5FE86ED3C7/</link>
        <guid>https://justinyan.eth.limo/202AC5E6-BCD8-47B4-91CD-9C5FE86ED3C7/</guid>
        <pubDate>Sat, 11 Jun 2011 18:47:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>很久以前写过一个利用JS和CSS3实现全浏览器图片旋转的，用在一个站点的首页上，后来那个站点没继续做下去，就没怎么再留意这个，最近项目要用到，就把JS代码OO封装了一下，顺便留点笔记下来。<br /> 截图如下：<br /> <a href="http://www.windyshade.com/wp-content/uploads/2011/06/jsrotate.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-1028" title="jsrotate" src="http://www.windyshade.com/wp-content/uploads/2011/06/jsrotate-300x127.jpg" alt="" width="300" height="127" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/06/jsrotate-300x127.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/06/jsrotate-1024x434.jpg 1024w, https://cdn.justinbot.com/wp-content/uploads/2011/06/jsrotate.jpg 1132w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<h3>一、原理</h3> 
<p>CSS3提供了transform: rotate(ndeg);方法用来作为元素旋转，其中n是数字。<br /> 目前支持CSS3的浏览器有Firefox，Chrome，Safari，Opera和IE9以上版本。但是每个浏览器使用的时候语句都不相同，Firefox加了-moz前缀，webkit引擎的（chrome，safari）加了-webkit前缀等等，所以要针对不同浏览器写不同的语句。另外，IE7，8都不支持CSS3，所以要使用IE的filter来进行旋转操作。[测试发现IE6是最最杯具的，完全用不了rotate，( -___- )b]</p> 
<h3>二、实践</h3> 
<h4>1.编写HTML代码</h4> 
<blockquote>
 <p>&lt;div&gt;<br /> &lt;ul&gt;<br /> &lt;li&gt;&lt;img src="images/photo001.jpg" /&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;img src="images/photo001.jpg" /&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;img src="images/photo001.jpg" /&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;img src="images/photo001.jpg" /&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;img src="images/photo001.jpg" /&gt;&lt;/li&gt;<br /> &lt;/ul&gt;<br /> &lt;/div&gt;</p>
</blockquote> 
<p>这里定义了一个ul列表，里面放着5张图片。</p> 
<h4>2.CSS文件</h4> 
<p>这里用li把图片包括之后，再使用绝对定位，以便图片的动画编写。</p> 
<p>.photo-outer{margin: 0 auto;width: 1100px;overflow: hidden;border: 1px solid #000;}<br /> .photo{width: 100%;height: 200px;position: relative;}<br /> .photo li{position: absolute;padding: 4px;width: 200px;border: 1px solid #DDD;border-radius: 4px;box-shadow: 0px 0px 6px #DDD;background:#FFF;}<br /> .photo li img{max-width: 100%;}<br /> 注意到这个CSS文件里面并没有写到transform语句，这是因为我原先的意图是使用JS做旋转动画，所以没必要在CSS里面先定义它的rotate参数，如果你仅仅是想要一个静态的图片旋转的页面那就直接写进去吧，当然想要每张图片都旋转不同角度就得每个li写一个语句，CSS3语句如下：</p> 
<blockquote>
 <p>-moz-transform: rotate(-12deg); /*Firefox*/<br /> -webkit-transform: rotate(-12deg); /*webkit引擎的浏览器，如safari和chrome*/<br /> -o-transform: rotate(-12deg); /*Opera*/<br /> -ms-transform: rotate(-12deg); /*IE9*/</p>
</blockquote> 
<h4>3.JS代码</h4> 
<blockquote>
 <p>注意这里我用了JQuery框架。<br /> 首先我们需要定义一个Photo类（JS的类的定义很特殊，它的function既可以是函数也可以是类的声明外加构造函数，使用它作为类的时候，只要在实例化的时候使用New关键字就行了），接收一个index参数来确定它属于列表当中的哪一个：<br /> //声明类和构造函数<br /> function Photo(index){<br /> //JS元素从1开始算起而CSS元素从0开始算起，从CSS选择器里面获取到的index是从0开始的，所以要+1<br /> this.index = index+1;<br /> //获取当前图片所在的li的对象<br /> this.li = $('.photo li:nth-child('+this.index+')');<br /> }<br /> //声明类的方法<br /> Photo.prototype={<br /> //用来设置li的位置<br /> setPos: function(posX, posY){<br /> this.li.css({left: posX,top: posY});<br /> },<br /> rotate: function($deg){<br /> //这几句用来定义CSS3的旋转参数，配合setTimeOut多次调用就可以变成动画了。<br /> this.li.css({'-moz-transform': 'rotate('+ $deg +'deg)'});<br /> this.li.css({'-webkit-transform': 'rotate('+ $deg +'deg)'});<br /> this.li.css({'-0-transform': 'rotate('+ $deg +'deg)'});<br /> this.li.css({'-ms-transform': 'rotate('+ $deg +'deg)'});<br /> //下面是针对IE7、8<br /> //自定义函数，把度数转换为弧度<br /> $rad = degToRad($deg);<br /> //计算cos和sin值<br /> $costheta = Math.cos($rad);<br /> $sintheta = Math.sin($rad);<br /> //给css写入filter<br /> this.li.css({<br /> filter: 'progid:DXImageTransform.Microsoft.Matrix(sizingMethod=\'auto expand\', M11=' + $costheta + ', M12=' + (-$sintheta) + ', M21=' + $sintheta + ', M22=' + $costheta + ')progid:DXImageTransform.Microsoft.Shadow(color=#f4f0e7,direction=0)progid:DXImageTransform.Microsoft.Shadow(color=#f4f0e7,direction=90)progid:DXImageTransform.Microsoft.Shadow(color=#f4f0e7,direction=225)progid:DXImageTransform.Microsoft.Shadow(color=#f4f0e7,direction=270)'<br /> });<br /> this.li.css({'transform': 'rotate('+ $deg +'deg)'});<br /> }<br /> }<br /> 在针对IE7、8写filter的时候用到一个自定义函数，代码如下：<br /> var pi = Math.PI;<br /> function degToRad(x) { return ( x/(360/(2*pi)) ); }<br /> 用来把度数转换成弧度。<br /> 然使用到IE的一个filter，<br /> progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11=$costheta, M12=(-$sintheta), M21=$sintheta, M22=$costheta)<br /> 这个函数使用起来真够麻烦的，各位想知道原理可以google一下该函数，会出来MicroSoft的官网解释= =<br /> 最后，类定义完了我们在页面加载完之后调用之即可：<br /> $(document).ready(function(){<br /> //获取当前li节点的个数，CSS从0开始计数，所以值是4<br /> var n = $('.photo li:last-child').index();<br /> //新建一个photo数组<br /> var photo = new Array();<br /> //每个photo数组的元素实例化一个photo对象<br /> for($i=0;$i&lt;=n;$i++){<br /> photo[$i] = new Photo($i);<br /> }<br /> //现在就可以针对每个不同的photo实例进行方法调用鸟～setPos是设置left和top的值来定位，rotate则是旋转了，接收一个度数作为参数<br /> photo[0].setPos(20,20);<br /> photo[0].rotate(-12);<br /> photo[1].setPos(220,20);<br /> photo[1].rotate(2);<br /> photo[2].setPos(420,20);<br /> photo[2].rotate(0);<br /> photo[3].setPos(620,20);<br /> photo[3].rotate(-15);<br /> photo[4].setPos(820,20);<br /> photo[4].rotate(5);<br /> });</p>
</blockquote> 
<p>OK，这就是俺写了一下午的结果鸟，主要是JS的OO封装不太熟悉，看了好一会《编写高质量代码》这本书，写得可真不错。<br /> <a href="http://www.mediafire.com/?y2ku5oau37jf2q7">全部代码打包下载</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x6BCF;&#x5468;&#x8BFB;&#x4E66;] &#x5341;&#x516D;&#x5468;&#x2014;&#x2014;&#x4E8C;&#x5341;&#x56DB;&#x5468;&#x7684;&#x4E66;&#x5355;</title>
        <link>https://justinyan.eth.limo/AA9602DC-2891-40A2-BA1B-782E45AF99AA/</link>
        <guid>https://justinyan.eth.limo/AA9602DC-2891-40A2-BA1B-782E45AF99AA/</guid>
        <pubDate>Thu, 26 May 2011 19:54:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>转眼二十四周过去鸟～～原来这就写了半年呀(；°○°) 这段时间来看的书是挺多的，但是看太多就意味着不精不细，不过感觉还是很幸福的啊●０● 看了大三下这一学期悠闲的时光过得还是挺好的嘛</p> 
<blockquote>
 <p><strong>1.《编写高质量代码——WEB前端开发修炼之道》</strong><br /> 没有泛泛的长篇大论，有的只是多年实战积累下来的宝贵经验，好书一本。</p> 
 <p><strong>2.《裂缝》</strong><br /> 以原始口述历史为切入点，直击人性的残忍一面</p> 
 <p><strong>3.《嫌疑人X的献身》</strong><br /> 推理小说，东野圭吾最高的代表作。</p> 
 <p><strong>4.《第五个孩子》、《浮世畸零人》</strong><br /> 一个原本幸福的家庭，由于第五个孩子——一个怪胎降临而从此经历悲催的命运。<br /> 后续做《浮世畸零人》则讲述了那个孩子长大后四处飘泊，饱受磨难的经历。</p> 
 <p><strong>5.《放学后》</strong><br /> 东野圭吾出道之作，虽文笔有青涩之处，故事却还是很不错的。</p> 
 <p><strong>6.《麦田里的守望者》</strong><br /> 叛逆少年数日的街头流浪之旅。</p> 
 <p><strong>7.《鲁滨逊漂流记》</strong><br /> 主人公鲁滨逊流落荒岛，艰难的生存历险。</p> 
 <p><strong>8.《格列佛游记》</strong><br /> 小人国游记，影射现实之作。</p> 
 <p><strong> 9.鲁迅《朝花夕拾》《故事新编》《呐喊》《彷徨》《野草》《杂文集》</strong></p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #24 &#x300A;&#x7F16;&#x5199;&#x9AD8;&#x8D28;&#x91CF;&#x4EE3;&#x7801;&#x2014;&#x2014;WEB&#x524D;&#x7AEF;&#x5F00;&#x53D1;&#x4FEE;&#x70BC;&#x4E4B;&#x9053;&#x300B;</title>
        <link>https://justinyan.eth.limo/383C23CA-24AD-4507-9753-B83831D60E42/</link>
        <guid>https://justinyan.eth.limo/383C23CA-24AD-4507-9753-B83831D60E42/</guid>
        <pubDate>Thu, 26 May 2011 19:37:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/05/56f033b7-c481-4bd0-bc58-29bea858ffb2.png" /></p> 
<p>互联网业界里头，WEB前端开发算是颇为年青的一行了，大约是从原先的“网页制作”演变而来。在WEB开发还被称为“网页制作”的时代，WEB的内容还大都是静态的，内容、结构混在一起，直到WEB2.0兴起，才把前端、设计、后台等很好的分开来。而前端所要掌握的最基本的技能，大约包括：CSS、HTML和JS。</p> 
<p>这本书的作者曹刘阳前辈，是一名资深WEB前端开发工程师，先后就职于雅虎中国和淘宝，现就职于新浪。书中所写的内容都是很实在的，没有泛泛而谈的长篇大论，有的只是实战中积累下来的大量宝贵的经验，对于前端工程师来说很有帮助。虽然你可能已经做过不少网站，虽然这些网站看起来都没有多大问题，甚至运行的很好，也兼顾了浏览器兼容性，但是你总会有没有注意到的东西。比方说HTML，这个看起来很简单的东西，往往深入去了解就会发现其实很复杂。这本书介绍了HTML、CSS和JS里头各种需要注意的地方，很细很重要，这本书的主要读者应当是已经做过一两个项目的前端工作者，对于CSS、HTML和JS都有一定程度的了解和掌握，才能比较好地理解其中的专业词汇。不过总的来说还是很容易理解的。</p> 
<p>下面贴一下我看了本书之后的一些笔记。</p> 
<h3>第一章和第二章从网站重构一直谈到团队合作的重要性，没有很深入涉及技术，但是都很重要。</h3> 
<p> </p> 
<h3>第三章高质量的HTML</h3> 
<p style="padding-left: 30px;">HTML里面最需要注意的应当是标签的语义化，这点在《超越CSS》一书也重点强调过。</p> 
<h4 style="padding-left: 30px;">1.为什么要使用语义化的标签。</h4> 
<p style="padding-left: 60px;">比方说从h1~h6，我们在浏览器中看到的内容都是经过CSS定义过样式的，但是搜索引擎“看不到”这些样式，它们看到的是直接的代码，而富有语义的代码则对搜索引擎更加友好。比方说一个网页的大纲，使用h1~h6来定义要远远好过使用无数个div。</p> 
<p><strong>“但是搜索引擎看不到视觉效果，看到的只是代码，只能通过标签来判断内容的语义。”</strong></p> 
<p>CSS很强大，但是如果使用不当，容易是我们陷入CSS布局的一个误区——只要不是table布局，只要是通过CSS布局的，就是对的，就是符合WEB标准的。如果只考虑最终视觉效果，而不考虑标签语义，其实又走上了table布局的老路。</p> 
<p><strong>正确的做法是：先确定HTML，确定语义的标签，再来选用合适的CSS。</strong></p> 
<h4 style="padding-left: 30px;">2.如何确定你的标签是否予以良好</h4> 
<p style="padding-left: 60px;">去掉样式，看网页结构是否组织良好有序，是否仍然有很好的可读性。如著名的“CSS裸体日”。</p> 
<p>推荐使用Firefox上的一个扩展——<strong>Web Developer.</strong></p> 
<p>可以看看W3C官网，去掉CSS样式之后网页的可读性依然极佳。</p> 
<h4 style="padding-left: 30px;">3.常见模块</h4> 
<p style="padding-left: 60px;">1)标题用h1~h6，段落用p等等</p> 
<p>2)表单中，用filedset包括起来，用legend写表单的title，用label设置input的名称。(这样讲不太清楚，建议看看原书。)</p> 
<p>3)table中，使用caption,thead,tbody,tfoot和th等标签。</p> 
<h3>第四章 高质量的CSS</h3> 
<p style="padding-left: 30px;">这章和后面一章高质量的JavaScript都是重点。</p> 
<h4 style="padding-left: 30px;">1.怪异模式和DTD</h4> 
<p style="padding-left: 30px;">DTD即Document Type Definition，我们一般写在HTML开头作为文件类型声明。虽然类型挺多，常见的有四种，都挺长的，而目前最新的HTML5直接写为&lt;!DOCTYPE HTML&gt;即可。怪异模式就又是IE的专利了，如果我们的DTD漏写了，在FF里面是没问题的，但是在IE（6、7、8都是）里面就会变得很诡异了。</p> 
<h4 style="padding-left: 30px;">2.组织CSS</h4> 
<p style="padding-left: 30px;">书中介绍一种把CSS分为三层的方法：base层-&gt;common层-&gt;page层。</p> 
<p>最底层的base层可以说是css reset，中间common层则提供组件，page层则每个页面都不同，也是我们写CSS的重点。</p> 
<p>base层因为只是做reset工作，一般有一个成熟的文件就可以了，可以使用作者推荐的base.css文件，在书里有，或者直接用YUI框架里头的那个也行。</p> 
<h4 style="padding-left: 30px;">3.划分模块</h4> 
<p style="padding-left: 30px;">写CSS类的时候我们通常需要观察设计稿中相同的部分，然后划分出各个不同的模块，最大程度地使得模块可以重用。</p> 
<p>以下是划分模块的技巧：</p> 
<p>1)模块与模块之间尽量不要包含相同的部分，如果有相同的部分，应将它们提取出来，拆分成一个独立的模块。</p> 
<p>2)模块应在保证数量尽可能少的原则下，做到尽可能简单，以提高重用性。</p> 
<h4 style="padding-left: 30px;">4.CSS命名</h4> 
<p style="padding-left: 30px;">CSS的命名推荐使用英语。</p> 
<p>常用的命名法有骆驼命名法和划线命名法。推荐将这两种方法组合使用。比方说一个ul（比方class为timeList）中最后一个li我们要设置不一样的样式，比方多个左下右下的圆角或者少个下划线什么的，那么通常我们会在最有一个li里面定义一个"last"的class，然后再用子选择符比方这么写： .timeList li{...} .timeList li:last{...}这样。但是这样涉及一个问题：滥用子选择符。为了避免多工程师合作时产生的样式层叠等问题，不推荐轻易使用子选择符。</p> 
<p>这时候就使用两种命名法组合使用，给最后一个li命名为timeList-last，或者timeList_last。这样可以很清晰地看到这个last属于timeList模块，而又不至于名字太长。</p> 
<p style="padding-left: 30px;">多工程师合作的时候，为了避免不同的工程师在同个页面用了同样的class名称，可以加个前缀，比方说zhang xia工程师负责的内容，就给命名前面加个zx-xxxx。这样命名虽然会变很长，但是当项目很大的时候这样的命名还是很有帮助的，利大于弊。</p> 
<h4 style="padding-left: 30px;">5.多用组合，少用继承</h4> 
<p style="padding-left: 30px;">我们知道class和id的区别在于class可以有多个而id只能有一个。</p> 
<p>在给几个看起来很相似的ul定义不同的样式的时候，我们可以给每个ul都定义不同的名字然后分别定义样式。但是这样的话，我们的CSS代码会看起来很冗长，当然，使用诸如 .numberList1, .numberList2{....}这样的方法可以是代码变得简洁。但是如果几个ul的浮动、字体大小和颜色各不相同的时候我们还是得多写很多行代码。</p> 
<p>所以可以预先定义几个浮动类 .fl{float:left} .fr{float:right}，定义几个字体类 .ft12{font-size:12px} .ft16{font-size:16px}，颜色类 .red{color:red},之后只要在numberList1和2中挂上各自需要类就完了。</p> 
<p>&lt;ul&gt;</p> 
<p>&lt;li&gt;111&lt;/li&gt;</p> 
<p>&lt;/ul&gt;</p> 
<p>&lt;ul&gt;</p> 
<p>&lt;li&gt;111&lt;/li&gt;</p> 
<p>&lt;/ul&gt;</p> 
<h4 style="padding-left: 30px;">6.处理上下margin</h4> 
<p style="padding-left: 30px;">对于模块来说，每个模块的margin通常都是不定的，因为设计的需要会有不同的margin。所以我们可以跟第5点一样挂上个 .mt20{margin-top:20px} 这样的类。</p> 
<p>值得注意的是，如果相邻两个div都设置了margin-left或者margin-right那么距离会被叠加，而margin-top或者margin-bottom则只会显示其中一个数值。</p> 
<p>比方</p> 
<blockquote>
 <p>&lt;style type="text/css"&gt;</p> 
 <p>.up{margin-bottom: 10px}</p> 
 <p>.down{margin-top: 10px}</p> 
 <p>&lt;/style&gt;<br /> &lt;div class="up"&gt;&lt;/div&gt;</p> 
 <p>&lt;div class="down"&gt;&lt;/div&gt; </p>
</blockquote> 
<p style="padding-left: 30px;">本来我们指望这两个div可以相距20px，但事实上只相距了10px。</p> 
<p style="padding-left: 30px;">总结：如果不确定上下模块的上下margin特别稳定，最好不要将它写到模块的类里，而是使用类的组合，单独为上下margin挂用于边距的原子类（例如mt10，mb20）。模块最好不要混用margin-top和margin-bottom，统一使用margin-top或者margin-bottom。</p> 
<p style="padding-left: 60px;"> </p> 
<h4 style="padding-left: 30px;">7.低权重原则</h4> 
<p style="padding-left: 30px;">当不同选择符的样式设置有冲突的时，会采用权重高的选择符设置的样式。</p> 
<p>权重的规则是这样的：HTML标签的权重是1，class的权重是10，id的权重是100。例如p的权重是1，"div em"的权重是1+1=2，"strong.demo"的权重是10+1=11，"#test .red"的权重是100+10=110。</p> 
<p>如果CSS选择符的权重相同，那么样式会遵循就近原则，哪个选择符最后定义，就采用哪个选择符的样式。（也就是说，写在CSS文件里面比较靠后的会覆盖写在前面的。）</p> 
<p>为了保证样式容易被覆盖，提高可维护性，CSS选择符需保证权重尽可能低。</p> 
<h4 style="padding-left: 30px;">8.CSS sprite</h4> 
<p style="padding-left: 30px;">为了减少HTTP请求，可以把不常变动的图片，比方说那些箭头啦下拉框啦按钮啦什么的合成一张图（这个大家应该不陌生了）。</p> 
<p>不过这个也有缺点：1)影响开发速度；2)大图中每一个小图都不可以轻易改动，牵一发则动全身，等下整张图要重来过，而相关的CSS坐标也要全部重新标过</p> 
<p>由于代价挺大的，所以流量不大的网站就没什么必要花费时间在这个东西上了，不划算呀。</p> 
<h4 style="padding-left: 30px;">9.常见问题</h4> 
<h5 style="padding-left: 30px;">1)编码风格</h5> 
<p style="padding-left: 30px;">作者推荐使用一行式代码风格。就是：</p> 
<p>.test{width:960px;...}</p> 
<p>.demo{background-color:green;...}</p> 
<h5 style="padding-left: 30px;">2)id和class</h5> 
<p style="padding-left: 30px;">a.同一个网页，相同的id只能出现一次而class可以多次</p> 
<p>b.id的选择符权重为100而class为10</p> 
<p>c.原生的JS提供getElementById(),但是木有getElementByClassName()，所以要么自己写个要么用框架。</p> 
<p style="padding-left: 60px;"> </p> 
<h5 style="padding-left: 30px;">3)CSS hack</h5> 
<p style="padding-left: 30px;">各种hack的方法大家应该都不陌生了，不一一赘述，总之轻易别hack，而各种hack方法各有利弊，自己是情况使用。</p> 
<p style="padding-left: 60px;"> </p> 
<h5 style="padding-left: 30px;">4)hasLayout</h5> 
<p style="padding-left: 30px;">又是IE的专利，在IE里头如果出现各种诡异的错误想破脑袋解决不了的话可以试试触发IE才有的hasLayout属性，这是IE用于CSS的解析引擎，有时候触发这玩意儿一些诡异的错误就自动解决了。出发方法可以使用“zoom:1”来触发，这是相对比较好的方法。</p> 
<p style="padding-left: 60px;"> </p> 
<h5 style="padding-left: 30px;">5)块级元素和行内元素的区别</h5> 
<p style="padding-left: 30px;">就是block和inline的区别。块级元素有div、p、form、ul等，行内元素有span、strong、em等。</p> 
<p>块级元素会独占一行，默认情况下宽度自动填满父级元素。行内元素则不会独占一行，相邻的元素会排列在一行，排不下再自动换行，宽度随内容自适应。</p> 
<p>块级元素可以设置margin和padding。行内元素的margin和padding则很诡异，水平的没问题，但是竖直的设置了会变大但是没有边距效果。</p> 
<h4 style="padding-left: 30px;">10.网格布局</h4> 
<p style="padding-left: 30px;">注意：main的内容比sidebar的更重要，无论sidebar和main在样式上谁左谁右，在html标签上要保证main的标签在sidebar之前被加载（就是写在在sidebar之前）。</p> 
<h4 style="padding-left: 30px;">11.使用IETester进行IE兼容性调试。</h4> 
<p style="padding-left: 30px;"> </p> 
<p> </p> 
<h3>第四章 高质量的JavaScript</h3> 
<h4 style="padding-left: 30px;">1.使用匿名函数将脚本抱起来，可以有效控制全局变量，避免冲突隐患。如：</h4> 
<p style="padding-left: 30px;">(function(){</p> 
<p>var a = 123;</p> 
<p>//工程师A写的代码</p> 
<p>...</p> 
<p>})();</p> 
<p style="padding-left: 30px;">...</p> 
<p style="padding-left: 30px;">(function(){</p> 
<p>var a = 456;</p> 
<p>//工程师B写的代码</p> 
<p>...</p> 
<p>})();</p> 
<p style="padding-left: 30px;">这样，虽然同样有个变量为a，如果没有匿名函数包裹那么a就是全局变量，互相之间就会影响到，用匿名函数包裹起来则作用域就在函数内，不会互相影响了。</p> 
<h4 style="padding-left: 30px;">2.使用命名空间</h4> 
<p style="padding-left: 30px;">GLOBAL.A={};</p> 
<p>GLOBAL.A.str2=a;</p> 
<p>GLOBAL.A.str=b;</p> 
<p style="padding-left: 30px;">还可以使用多级命名空间：</p> 
<p>GLOBAL.A.CAT={};</p> 
<p>GLOBAL.B.CAT={};</p> 
<p>GLOBAL.A.CAT.name="mimi";</p> 
<p>GLOBAL.B.DOG.name="wangcai";</p> 
<p>GLOBAL.A.CAT.move=function(){</p> 
<p>...</p> 
<p>}</p> 
<p>GLOBAL.B.CAT.move=function(){</p> 
<p>...</p> 
<p>}</p> 
<h4 style="padding-left: 30px;">3.window.onload和DOMReady</h4> 
<p style="padding-left: 30px;">二者都是在页面加载完成后执行函数。但是window.onload是必须所有元素都加载完成，也就是所有图片啦各种富媒体啦都下载完才会执行，而像DOMReady则是各种JS框架基本都提供的方法，比方jQuery的$(document).ready(); 用这个函数则会判断所有节点已生成时执行，即便图片没下载完，所以执行速度会快很多。</p> 
<p>如果不想用JS框架那么就把自己的JS代码放在文件尾部的&lt;/body&gt;前面，这样所有节点生成完就会执行该JS代码鸟～</p> 
<h4 style="padding-left: 30px;">4.CSS放在页头，JavaScript放在页尾</h4> 
<p style="padding-left: 30px;">网速慢或者文件大的时候，用户需要第一时间看到最重要的内容，把JS文件放在页尾可以加快载入速度，而CSS放在页头则是不希望在网速慢的时候用户看到完全没样式的页面。</p> 
<h4 style="padding-left: 30px;">5.文件压缩</h4> 
<p style="padding-left: 30px;">JS源文件我们一般有大量的空格和注释，使用压缩工具可以去掉空格和注释，还可以使用比较短的变量名代替原有变量名，使得文件变小很多。不过压缩后的文件可读性就差了，所以我们要记得备份源文件。</p> 
<p>压缩可以使用Packer和YUI Compresser。</p> 
<p>Packer是在线的，YUI Compresser则需要下载并使用命令行执行。</p> 
<p style="padding-left: 30px;">（剩下的JS高级部分就不列出来的，反正光用文字也说不清楚[其实是偷懒= =!]，各位如果有兴趣就看看原书吧，还是挺不错的书的。^^）</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6307;&#x5F39; &#x5CB8;&#x90E8;&#x771F;&#x660E;&#x300A;&#x6D41;&#x308C;&#x884C;&#x304F;&#x96F2;&#x300B;</title>
        <link>https://justinyan.eth.limo/1F6B82A1-4909-4EFF-92A1-B51962F7B951/</link>
        <guid>https://justinyan.eth.limo/1F6B82A1-4909-4EFF-92A1-B51962F7B951/</guid>
        <pubDate>Sun, 22 May 2011 18:43:46 +0800</pubDate>
        
        
        <description><![CDATA[
            
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #22 #23 &#x300A;&#x88C2;&#x7F1D;&#x300B;&#x3001;&#x300A;&#x5ACC;&#x7591;&#x72AF;X&#x7684;&#x732E;&#x8EAB;&#x300B;</title>
        <link>https://justinyan.eth.limo/1FC3973A-10CE-445F-BDD6-27095A60E01D/</link>
        <guid>https://justinyan.eth.limo/1FC3973A-10CE-445F-BDD6-27095A60E01D/</guid>
        <pubDate>Sat, 21 May 2011 21:57:19 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/05/91gbqOzLoL.jpg" /></p> 
<p>近期怀旧了一下金庸的小说（《射雕》三部曲、《笑傲江湖》和《倚天屠龙记》），就没什么时间看别的书。<br /> 《裂缝》是多丽丝·莱辛07年的作品，写作时已将近90岁高龄。这本书讲述的是古老的口述历史，有多古老？有人类的起源时期那样古老。<br /> “裂缝”是当时的第一批人类，确切的说，是女性的人类。“裂缝”既指这群原始女性居住的洞穴外一块对她们而言具有极大意义的石头，也指她们身上的生殖器官，所以便以“裂缝人”称呼这群人类最早的女性。这些女性是单性繁殖的，她们偶尔会生下一些“怪物”（胯下长着“管子”，而不是裂缝），她们害怕这些“怪物”，便把这些刚诞生不久的“怪物”放到石头上让老鹰叼走吃掉。这是故事的开端。<br /> 后来故事还涉及到幸存的“怪物”和“裂缝人”的对峙，他们各自为生存所做的努力，他们之间的斗争，谋杀，虐待，强奸等等，可谓直击原始人性，不由令人大感讶异。这些原始的自然表现中带有大量的虐杀等在我们看来很残忍的事情，她们又是如何看待这些的，我们又应该如何看待这些，看完本书应当会有所得。<br /> 《嫌疑犯X的献身》我上回在《放学后》一周有提到过，普遍认为的东野圭吾的最高代表作。推理小说不便多做剧透，各位看官读之便知。</p> 
<p>（本周读书颇有敷衍凑字数之嫌，想来这两周拖延症发作还是挺杯具的，请各位读者见谅=.=!!!）</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x62CD;&#x7167;]&#x4E39;&#x971E;&#x5C71;&#x4E4B;&#x65C5;</title>
        <link>https://justinyan.eth.limo/92D03346-D1F4-463E-9B16-7EBD1F10D681/</link>
        <guid>https://justinyan.eth.limo/92D03346-D1F4-463E-9B16-7EBD1F10D681/</guid>
        <pubDate>Tue, 17 May 2011 22:55:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>[slickr-flickr tag="丹霞山" items="27" delay="20"] </p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6307;&#x5F39; &#x5CB8;&#x90E8;&#x771F;&#x660E;&#x300A;&#x5947;&#x8FF9;&#x7684;&#x5C71;&#x300B;</title>
        <link>https://justinyan.eth.limo/3CEB6E0B-AE4B-48E7-AF19-A92AD3D700F9/</link>
        <guid>https://justinyan.eth.limo/3CEB6E0B-AE4B-48E7-AF19-A92AD3D700F9/</guid>
        <pubDate>Wed, 11 May 2011 23:31:22 +0800</pubDate>
        
        
        <description><![CDATA[
            
        ]]></description>
    </item>
    
    <item>
        <title>&#x89E3;&#x51B3;MIUI&#x65E0;&#x6CD5;&#x8F68;&#x8FF9;&#x7403;&#x5524;&#x9192;&#x95EE;&#x9898;</title>
        <link>https://justinyan.eth.limo/4CCC50A9-F01C-4233-B89D-25CA5DB92646/</link>
        <guid>https://justinyan.eth.limo/4CCC50A9-F01C-4233-B89D-25CA5DB92646/</guid>
        <pubDate>Tue, 10 May 2011 02:51:08 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>方法来自以下两篇文章：</p> 
<p>http://forum.xda-developers.com/showthread.php?t=1066805</p> 
<p>http://bbs.gfan.com/android-1315127-1-1.html</p> 
<p>其实就是用sqlite3把'trackball_wake_screen'从false变为true而已，这个我觉得ROM里面应该是可以搞定的才对，就不知道为什么MIUI老整这些乱七八糟的低级问题出来。。。</p> 
<p>方法就是打开手机里的Terminal Emulator终端，然后</p> 
<blockquote>
 <p>1.输入su，切换到root权限</p> 
 <p>2.输入sqlite3 /data/data/com.android.providers.settings/databases/settings.db "insert into system (name,value) values ('trackball_wake_screen',1);"</p>
</blockquote> 
<p>重启机器。搞定。如果还不行就参考上面两篇文章用adb的方法试试。</p> 
<div id="geo-post-975" class="geo geo-post" style="display: none">
 <span class="latitude">23.053535</span>
 <span class="longitude">113.395621</span>
</div>
        ]]></description>
    </item>
    
    <item>
        <title>&#x89E3;&#x51B3;MIUI&#x65E0;&#x6CD5;&#x5B9A;&#x4F4D;GPS&#x7684;&#x95EE;&#x9898;</title>
        <link>https://justinyan.eth.limo/B20F7450-B005-41EC-BC7A-7C48CC7EA2AB/</link>
        <guid>https://justinyan.eth.limo/B20F7450-B005-41EC-BC7A-7C48CC7EA2AB/</guid>
        <pubDate>Sun, 08 May 2011 20:42:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>最近给DZ刷了MIUI，结果让GPS无法定位问题搞得头大死。没有GPS我就用不了4sq等LBS软件那还有啥意思，但是刷了CM7又发现CM7远不如MIUI好看，所以最终还是苦苦找寻解决之道。<br /> 于是我这几天在MIUI论坛苦寻却还是一点办法都没有。今晚也不知道是用了什么方法，估计是刷radio的原因搞定的，写篇博文总结一下。</p> 
<p>解决MIUI的GPS无法定位问题：<br /> 1.刷radio，也就是更新基带。<br /> 我刷的是12.50.60.24U_26.08.04.16_M。<br /> 2.在"设置"-&gt;“个人”-&gt;“我的位置”里面打开“使用无线网络”和“使用GPS卫星”<br /> 我是到这里就可以解决问题了，定位很快，瞬间就定位完成。</p> 
<p>如果还不能解决可以尝试下面的步骤：<br /> 3.在"设置"-&gt;“个人”-&gt;“我的位置”里面打开“GPS配置”<br /> NTP服务器：asia.pool.ntp.org<br /> supl服务器：supl.sirf.com<br /> 端口：7275<br /> 还有很多其他的设置方法可以自行google，出来一大坨一大坨</p> 
<p>4.还不行的话，就在拨号界面里面拨“*#*#4636#*#*”，然后在“手机信息里面”，最底部那里，有个“切换DNS检查”，如果状态是“not allowed”就按一下，改成“allowed”。<br /> 5.最后还有一种方法是修改gps.conf文件，但是这个是最无效的办法了。</p> 
<p>我的机器是HTC Desire Z,截至发稿日用的MIUI版本是1.5.6</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #21 &#x591A;&#x4E3D;&#x4E1D;&#xB7;&#x83B1;&#x8F9B; -&#x300A;&#x7B2C;&#x4E94;&#x4E2A;&#x5B69;&#x5B50;&#x300B;&#x3001;&#x300A;&#x6D6E;&#x4E16;&#x7578;&#x96F6;&#x4EBA;&#x300B;</title>
        <link>https://justinyan.eth.limo/9AAE0A52-2BD3-4D73-B901-FE894C09F232/</link>
        <guid>https://justinyan.eth.limo/9AAE0A52-2BD3-4D73-B901-FE894C09F232/</guid>
        <pubDate>Thu, 05 May 2011 23:30:00 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p>07年诺贝尔文学奖得主，英国女作家多丽丝·莱辛（Doris Lessing 1919—— ），得奖理由:“她以懷疑主義、激情和想像力審視一個分裂的文明，她登上了這方面女性體驗的史詩巔峰。”<br /> <strong>================以下内容严重剧透===========================</strong></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/05/61fdRo56Y7L.jpg" /></p> 
<p>《第五个孩子》The Fifth Child是1988年写就的一部小说，应当说是一部发人深省的，恐怖的悲剧。小说描写了一个原本幸福美满的家庭，在诞下第五个孩子——一个怪胎——之后发生的变化，人性的阴暗面在小说中被生生揭露出来，残忍得令人眉头紧皱，手脚痉挛。<br /> 小说的主角是一对夫妇，生活算不上富有，但希望生很多很多孩子，所以负担会很重。丈夫的父母在他很小的时候离异后又分别再婚，所以他有两对父母，其中一对父母很富有，所以能支持他们住在大房子里，生养多个孩子——尽管几乎所有的亲戚不赞成他们多生孩子。在诞下前四个孩子的时候他们觉得这就是他们想要的生活，大房子，很多孩子，每年圣诞节、复活节都有很多亲人到大房子来度假，大家热热闹闹，幸福美满。一切祸起在第五个孩子，班。当班还在母亲的肚子里的时候就异常躁动，踢得母亲痛不欲生，不得不经常服用镇静剂让腹中胎儿安静一会儿，怀胎八月，早产诞下班。在班出生的时候，夫妻俩没有了以往迎接新生儿的喜悦，这是一个怪胎，与其说是个婴儿，还不如说是一个侏儒或小怪物。<br /> 班生性暴戾，躺在婴儿床里都把第四个孩子保罗的手强行拉进栏杆扭成重伤。圣诞节、复活节的派对还把亲人访客的狗和猫勒死，令人头痛不已。所有的亲人一听说班都感到恐惧，最终他们受不了这个天生怪胎，把他送进所谓的“疗养院”里，还是小孩的班在那里接受非人的待遇。他被束身衣缚住，每天被注射大量镇静剂。那里的孩子全是怪胎，全是被父母遗弃的畸形，他们通常都活不久。在班离开的这段时间里，家里恢复了平静，但是女主角忘不了班，她无法想象班在那个地方会受到什么样的待遇于是有一天，她冲动地跑去把班接了回来。<br /> 原本就暴戾的班回来后变得更加异常。他开始恐惧一切事情一切人，尽管一段时间后他慢慢平静但是他仍旧是个怪胎。班在这个家庭里注定是一个噩耗。一个原本幸福的家庭四分五裂，孩子们会长大，他们都不愿与班一起，孩子们有的去了祖父家有的去了寄宿学校，而保罗，那个被班扭伤手臂的孩子，由于恐惧得了心理疾病。丈夫为了孩子的学费为了支撑家里四处奔波，这个家，女主角和班是一边，其他人是另一边，显然，女主角被视为罪人和背叛者。<br /> 班慢慢长大，但是他在学校里没学到任何东西，他就像个出现“返祖现象”的怪人，是野兽。班后来上了初中，结识了很多不良少年。逃课，打架，偷东西。天天聚集在家里，或者离家出走。<br /> 这部小说以女主角的视角，讲述着这些冷酷的事实。这样一个原本应该正常的，幸福美满的家庭，忽然之间降临一个怪异的孩子，他们能有什么反应，他们应该有什么反应？在道德与现实之间的迷惑，在母爱与家庭之间，女主角进退两难受尽艰辛。其中透出的各种复杂的思考令人深省。读者不由得将自己置身于主角的角度，一个畸形的，给家里带来巨大灾难的孩子，我该怎么办？留在身边，会毁了家里，丢弃他，太残忍。从旁人的角度，可以用对整个家庭好，甚至不针对这件事，其他的事情拿集体主义，或者国家主义民族主义出来，为了大局好，那么当事人呢？从旁人来看，个体对于整个世界来说是渺小的，无谓的。但是对于个人而言，我就是我的全部啊。我的人生，我的生命，我为什么应该受到这种可怕的对待？</p> 
<p> </p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/05/61Kr4WC7PbL.jpg" /></p> 
<p>《浮世畸零人》（Ben，in the world）是上一部小说的续篇。这一部小说以班的角度，讲述了成年的班在街头流浪的悲惨经历。可以说，是两种不同的体验，上一部小说试图以道德的冲突来唤醒人性的思考，这一部这直叙班在流浪过程中遇到的种种可怕的遭遇，让人看到这个社会各种阴暗的角落。然而这些阴暗的不公的对待又是我们所熟悉的，我们认为理所当然会存在的，而这种理所当然才是真正的可怕。这一本书我只是匆匆翻过，能看到整个故事的概貌，大约班在流浪的时候受尽欺侮，只有一个老太太和一个妓女是真心对他好但是老太太后来死了，妓女后来离开了，班孤苦一人随一个正苦寻拍戏题材的导演流浪他乡。在那里又讲述了另一个妓女的悲苦故事。而我相信这些事情，事实上是存在的。这也正是可怕的地方。这些残酷的事实是存在的。</p> 
<p><strong>=========题外=========</strong><br /> 有时我会想，人与人之间的确是有差别的啊，每个人的生活都是不一样的，可以说终其一生都没有交集。当我们拥有教室、宿舍、图书馆的时候我们浪费生命，在过度的娱乐中慢性自杀而地球的另一边却是连出版的条件都没有，一个国家的图书馆也许就一块石头上面架一块木板，那里的人们渴望读书而没有书读。当然这点的差异会比较复杂，不能简单地说条件好的人浪费，其实条件好的地方人们拥有的过度的信息量，而条件贫瘠的地方则是信息饥渴，这但不可忽视。另外是像普通的大学生，生命轨迹一般都比较平缓，小学中学大学这样一路过来都在学校之中，但是在道上混的兄弟却是另一番生活，二者可谓差之千里。倒不是说二者孰优孰劣，但是生活方式思考方式却可以说完全没有交集。更别说还有上流社会，中层社会，官僚，贫民等各种各样的生活。这些对于每个人自己而言，就是自己的一生啊，就是自己生命的全部啊。理不清宏观与微观的联系就会导致混乱，我是混乱了迷惑了。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #20&#x4E1C;&#x91CE;&#x572D;&#x543E; - &#x300A;&#x653E;&#x5B66;&#x540E;&#x300B;</title>
        <link>https://justinyan.eth.limo/204F9F68-997A-407B-B5A8-2D1CB0C10C5E/</link>
        <guid>https://justinyan.eth.limo/204F9F68-997A-407B-B5A8-2D1CB0C10C5E/</guid>
        <pubDate>Fri, 29 Apr 2011 22:58:33 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/04/dygwfangxuehou.jpg" /></p> 
<p>作家的第一部名作往往会用尽其半生所学，而后则很难超越该作。日本著名的推理小说家东野圭吾的第一部作品《放学后》，虽不是他一生的最高成就，却也让他在该书获奖后十年内无缘各大文学奖项。<br /> 东野圭吾大学毕业后原在一家汽车零件制作公司做工程师，在《放学后》一书获第三十一届江户川乱步奖之后，抱着成为“靠写作吃饭”的职业作家的决心，辞去工作，开始全身心投入都写作中。可惜的是，在虽然其后十几年，东野圭吾有多部作品入围各大文学奖，但是除了《秘密》一书之外，其余均与文学奖擦肩而过，而他开始被称为“畅销书作家”，也得是十余年后了。《嫌疑犯x的献身》是公认的东野圭吾的巅峰之作，我还没看原作，不过看过电影，与金庸把武功从琴棋书画入武到无招胜有招再到封笔之作韦小宝毫不懂武相比，《嫌疑犯x》已经是一反常规，干脆直接把犯人和犯罪手法在开局就明摆出来，后面的就只是斗智斗力了，而一再的反转又使得该书高潮迭起，绝无冷场。<br /> 本周的读书是《放学后》。这部作品虽然尚显青涩，无论杀人动机的不妥还是收尾的仓促，但瑕不掩瑜，这仍是一部极佳的推理小说。小说铺垫自然，情节环环相扣，层层递进，随着故事的展开越来越激动人心。尤其推理小说最为精彩的解谜部分也是令人赞叹，本部小说以“密室杀人”为道具，展开了一个设计精巧的杀人事件。<br /> 除了《放学后》，我还看了一点《毒笑小说》，东野圭吾的短篇集，感觉内容陈杂，短篇的要点在故事冲突，但是感觉写的还不够好，所以并未读完。除了《放学后》和《嫌疑犯x的献身》，东野圭吾的代表作还有《秘密》《白夜行》《暗恋》《信》等。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6307;&#x5F39;&#x2014;&#x2014;&#x963F;&#x6851;&#x300A;&#x4E00;&#x76F4;&#x5F88;&#x5B89;&#x9759;&#x300B;</title>
        <link>https://justinyan.eth.limo/06666F85-21B2-426D-8EB3-48B06415E843/</link>
        <guid>https://justinyan.eth.limo/06666F85-21B2-426D-8EB3-48B06415E843/</guid>
        <pubDate>Thu, 28 Apr 2011 16:50:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>下午面试完回宿舍就顺便录了一下，视频音频分开，再剪辑合并之～</p> 
<p>弹得不好请多多包涵（*^_^*）<br /> 优酷的：</p> 
<p>U2B的：</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #19 &#x9EA6;&#x7530;&#x91CC;&#x7684;&#x5B88;&#x671B;&#x8005;</title>
        <link>https://justinyan.eth.limo/8CF57E81-2518-46D7-BB61-C3C8D5AA9423/</link>
        <guid>https://justinyan.eth.limo/8CF57E81-2518-46D7-BB61-C3C8D5AA9423/</guid>
        <pubDate>Tue, 19 Apr 2011 22:19:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" class="book-cover-frame" src="https://cdn.justinbot.com/wp-content/uploads/2011/04/51FQyTvpNGL.jpg" /></p> 
<p>The Catcher in the Rye, 麦田里的守望者。第一次见到这个短语是多年前在一个诗歌论坛上某位朋友写的诗里，这是个挺美好的名字，可小说却与这个名字完全没关系。<br /> 也许跟翻译也有关系，我看的译林出版社施咸荣老师的译本，说实话，阅读体验相当糟糕。我想我需要找到英文原版来看看，有些书就是这样，同语言有莫大关系，而另一些则相反，几乎可以作无损翻译，比方说：The Kite Runner， 追风筝的人。<br /> 与小说名字的诗意不同的是，这部小说充斥着粗话，“混帐”和“他妈的”几乎出现在每一个句子里头。我估计原话可能是“what the hell...”“Fucking....”之类的，总之，粗话连篇。<br /> 故事是讲述一个多次被学校开除的十六岁少年，因为5门功课4门不及格又被学校开除了之后，在街头晃荡的时候的奇特经历。在西方文化里，主人公的经历以及对学校对社会的种种看法引起了极大的轰动，青年们对这些故事感到极大共鸣，可我却不以为然，文化差异在其间可是莫大一道坎啊。<br /> 但值得肯定的是，尽管文化差异给我带来很大的理解困难，但是这仍是一部不错的小说。其中作者对于各种各样奇特的人物的描写尤为精彩，寥寥数笔，就把一个个容貌、性格各异的人活生生地描绘出来，而其中发生故事也颇为有趣，令人大开眼界。至于主人公对于这个世界奇特的视角，憎恶一切人和事物但是又不憎恨，离开了那些令人作呕的人反而还会想念他们等等这些诡异的世界观更令人感到新奇。<br /> 这部小说是作者塞林格唯一一部长篇小说，他写完这部作品之后就隐居山林了，成了一个真正的遁世作家。我觉得主人公很多想法都有种避世消极的感觉，而小说人物里各种各样的性格特征和独特的视角，使得各种读者都能从中找到自己的投影，而且往往都是性格里的阴暗面，令人汗颜而又觉：果真如此！<br /> 总而言之这是一部与本土文化紧密联系的小说，也是一部很有趣的小说，虽然我是无法完全理解这些文化的了。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Lamy Safari&#x7B14;&#x5C16;&#x66F4;&#x6362;&#x65B9;&#x6CD5;</title>
        <link>https://justinyan.eth.limo/0226EF40-868C-45D7-B219-FBACB61DDD20/</link>
        <guid>https://justinyan.eth.limo/0226EF40-868C-45D7-B219-FBACB61DDD20/</guid>
        <pubDate>Mon, 18 Apr 2011 12:30:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>前不久我的磨砂黑给摔了一下笔尖歪了= =</p> 
<p>于是乎买了笔尖回来换，顺便买多支亮白的^_^</p> 
<p>换笔尖时一开始无从下手，最后在钢笔论坛看到有人分享了safari笔尖更换方法，试了一下，perfect~!又没弄坏旧笔头（虽然歪了），又把新笔头轻松换上，所以发发博文分享一下。</p> 
<p>文章是 @<a href="http://tieba.baidu.com/i/95087582?st_mod=pb&amp;fr=tb0_forum&amp;st_type=uname" target="_blank">岑小小Lamy</a> 童鞋写的，原文地址：<a href="http://tieba.baidu.com/f?kz=656474671">《小小和大家分享lamy笔尖的正确更换方式啦！O(∩_∩)O哈哈~》</a></p> 
<p>原文转载如下：</p> 
<p>买过lamy的朋友都知道他们家的钢笔笔尖可以自由更换<br /> 有不同粗细的可供选择<br /> 那么怎么在家自己给lamy钢笔换笔尖呢<br /> 在这里小小教给大家一个又简单又快的方法哦</p> 
<p>首先<br /> 第一步：用透明胶带包裹住钢笔笔尖，从下部用手捏住。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/04/f7a26a0727283ce00d47fa27.jpg"><br /> </a> <a href="http://www.windyshade.com/wp-content/uploads/2011/04/d96c1c179b5a94e2ffeb6927.jpg"><img decoding="async" loading="lazy" class="size-medium wp-image-932 alignnone" title="d96c1c179b5a94e2ffeb6927" src="http://www.windyshade.com/wp-content/uploads/2011/04/d96c1c179b5a94e2ffeb6927-300x226.jpg" alt="" width="300" height="226" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/04/d96c1c179b5a94e2ffeb6927-300x226.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/04/d96c1c179b5a94e2ffeb6927.jpg 508w" sizes="(max-width: 300px) 100vw, 300px" /></a> <a href="http://www.windyshade.com/wp-content/uploads/2011/04/756b31d82c1fe62fcef84827.jpg"><br /> </a></p> 
<p>第二步：捏住胶带向外稍稍用力拉出。</p> 
<p><a href="../wp-content/uploads/2011/04/756b31d82c1fe62fcef84827.jpg"><img decoding="async" loading="lazy" title="756b31d82c1fe62fcef84827" src="https://justinyan.eth.limo/0226EF40-868C-45D7-B219-FBACB61DDD20/../wp-content/uploads/2011/04/756b31d82c1fe62fcef84827-300x226.jpg" alt="" width="300" height="226" /></a></p> 
<p>第三步：翻过钢笔，把需要更换的笔尖插入插槽。</p> 
<p><a href="../wp-content/uploads/2011/04/f7a26a0727283ce00d47fa27.jpg"><img decoding="async" loading="lazy" title="f7a26a0727283ce00d47fa27" src="https://justinyan.eth.limo/0226EF40-868C-45D7-B219-FBACB61DDD20/../wp-content/uploads/2011/04/f7a26a0727283ce00d47fa27-300x226.jpg" alt="" width="300" height="226" /></a></p> 
<p>第四步：稍稍用力推到底，就ok啦！<br /> <a href="../wp-content/uploads/2011/04/f7a26a0727283ce00d47fa27.jpg"><img decoding="async" loading="lazy" title="f7a26a0727283ce00d47fa27" src="https://justinyan.eth.limo/0226EF40-868C-45D7-B219-FBACB61DDD20/../wp-content/uploads/2011/04/f7a26a0727283ce00d47fa27-300x226.jpg" alt="" width="300" height="226" /></a><br /> 是不是很简单呐O(∩_∩)O哈哈~</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #16 #17 #18 &#x9C81;&#x6EE8;&#x900A;&#x6F02;&#x6D41;&#x8BB0;&#x3001;&#x683C;&#x5217;&#x4F5B;&#x6E38;&#x8BB0;&#x3001;&#x8BFB;&#x9C81;&#x8FC5;</title>
        <link>https://justinyan.eth.limo/62D871D6-E30E-439D-90CB-3D933B5101AE/</link>
        <guid>https://justinyan.eth.limo/62D871D6-E30E-439D-90CB-3D933B5101AE/</guid>
        <pubDate>Sat, 16 Apr 2011 21:15:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><strong>[每周读书]第十六周 《鲁滨逊漂流记》</strong><br /> <strong>[每周读书]第十七周 《格列佛游记》</strong><br /> <strong>[每周读书]第十八周 读鲁迅</strong></p> 
<p>很抱歉十六周的时候跑出去旅行了一个星期，回来的时候已经十七周中间，堆积起来的事情一大堆一大堆，再加上拖延症发=_=!!!直到今天才补这几周的空白。<br /> 下午翻了一下图书馆的书，发现几本薄薄的而且看起来是90年代的装帧的，但是没几本有趣的。当时我就想要不这几周全部天窗好了。再一想还是别，但是又不能滥竽充数，所以把我以前看过的几本书推一下好了。所以这三周合并的这篇也就书的数量比较多，但是都比较久以前看的，乱写不如不写，所以就不怎么评了（当偷懒的借口也好）。</p> 
<p><strong>1.《鲁滨逊漂流记》</strong><br /> 初中的时候很喜欢这本书这个故事，主人公在孤岛上的经历传奇而艰险，阅读入境时犹如自己身在孤岛，与自然搏斗，刺激有趣。<br /> <strong>2.《格列佛游记》</strong><br /> 也是初中的时候读完，不过最早知道这本书却是来自哆啦A梦^_^，从小人国游记那篇看到，格列佛游记就是小人国游记，一个普通人到了小人国就变成了巨人，后来还经历过巨人国，无论巨人国小人国，都是现实的影射，想象力丰富而颇具讽刺意味。<br /> <strong></strong></p> 
<p><strong>3.读鲁迅</strong><br /> 初中的时候学校有个周末班，开语文课，当时有一个学期是要求大家读鲁迅的，恰巧学校门口新开了家书店，于是乎某次放学的路上我就买了两本厚厚的鲁迅文集回家，对一个初中生来说，这两本书可不便宜。于是乎那段时间我就一直捧着这两部集子看，虽然几乎没有看得懂的文章，但也有觉得不错的文章。这两部集子收录了鲁迅几乎全部作品。包括：<br /> <strong> 1)《朝花夕拾》</strong><br /> <strong> 2)《故事新编》</strong><br /> <strong> 3)《呐喊》</strong><br /> <strong> 4)《彷徨》</strong><br /> <strong> 5)《野草》</strong><br /> <strong> 6)《杂文集》</strong>（华盖集、华盖集续编、华盖集续编补编、集外集、且介亭杂文等）<br /> 兴许还有些遗漏。当时我尚迷恋诗歌，所以对《好的故事》、《我的恋人》这样的文章很感兴趣，还有些如仇猫的那篇，乞者的那篇也颇为喜欢，但不明白。《野草》应该是我最喜欢的集子了，大概读了两三遍，但是当时的我仍不能清楚鲁迅想要表达的东西，只是觉得有趣。文章能写的有趣已是很了不起，待到后来明白鲁迅的文章犀利如锋，大约在于针砭时弊，讽刺之精准之辛辣，而这些则需要相当的阅历才能明白的了。</p> 
<p><strong>4.推介书目：</strong><br /> 鉴于三周没有发文，实在拖沓，所以推多几本好书吧。（多是我没看完的，或者没看过的，所以做不了评论了。没看过的书本来不可以推荐，但是由于推荐者很值得信任，所以推一下也无妨。）<br /> <strong> 1)《设计的觉醒》（田中一光） </strong><br /> 看了一半，多是作者发表在报刊杂志的文章，颇有闪光点。<br /> <strong>2)《负建筑》（畏研吾）</strong><br /> 颇难读懂，建议建筑专业或者喜欢建筑的读者阅读。<br /> <strong> 3)《美学史》（鲍桑葵）</strong><br /> 阅读中，讲述西方的美学史，以哲学的角度进行分析，颇难理解，建议有一点哲学基础的读者阅读。<br /> <strong>4)《诗论》（朱光潜）、《西方美学史》（朱光潜）、《十宅论》（畏研吾）、《风土》（和辻哲郎）</strong><br /> 这几本书我都买了还没读，但是推荐者颇值得信任，故推之。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5229;&#x7528;.htaccess&#x6587;&#x4EF6;&#x8FDB;&#x884C;URL&#x91CD;&#x5199;</title>
        <link>https://justinyan.eth.limo/FA78898B-4C4C-4C6D-8D18-DBD4A9118BA7/</link>
        <guid>https://justinyan.eth.limo/FA78898B-4C4C-4C6D-8D18-DBD4A9118BA7/</guid>
        <pubDate>Wed, 13 Apr 2011 20:26:37 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>﻿<br /> 今天折腾了好久这玩意儿，本地测试失败但是服务器端可以运行=_= 记下来权当备份吧。<br /> 一、配置服务器<br /> 首先，在apache里面的conf目录下找到httpd.conf文件，把<br /> LoadModule rewrite_module modules/mod_rewrite.so<br /> 一行前面的#号去掉，打开rewrite_module模块。<br /> 然后，确认</p> 
<blockquote>
 <p> &lt;Directory "E:/xampp/htdocs"&gt;<br /> AllowOverride All<br /> Order allow,deny<br /> Allow from all<br /> &lt;/Directory&gt;</p>
</blockquote> 
<p>二、准备.htaccess文件<br /> 在你的站点目录下，找到或者新建一个.htaccess文件，在win下命名会有点麻烦，自个儿慢慢折腾呗，用命令行进行重命名会比较简单。<br /> 然后在这个.htaccess文件里面，我们开始写入URL重命名规则。<br /> 比方说我们有<br /> http://localhost/old.php?val=88<br /> 这样的URL,要改成<br /> http://localshot/test/88<br /> 这样类型的URL，那么就这么写：</p> 
<blockquote>
 <p>&lt;IfModule mod_rewrite.c&gt;<br /> RewriteEngine On<br /> RewriteBase /<br /> RewriteRule ^index\.php$ - [L]<br /> RewriteCond %{REQUEST_FILENAME} !-f<br /> RewriteCond %{REQUEST_FILENAME} !-d<br /> RewriteRule ^test/([0-9]+)$ old.php?val=$1 [L]<br /> &lt;/IfModule&gt;</p>
</blockquote> 
<p>其中，<br /> RewriteRule ^test/([0-9]+)$ old.php?val=$1 [L]<br /> 一句，“old.php?val=$1”是原来的URL，“^test/([0-9]+)$”是你想要改成的URL的正则表达式。<br /> 想要更深入研究rewrite模块，可以参考这个网址：初级URL重写指南 http://lamp.linux.gov.cn/Apache/ApacheMenu/rewrite/rewrite_guide.html</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x51E4;&#x51F0;&#x53E4;&#x57CE;&#x6E38;&#x8BB0;</title>
        <link>https://justinyan.eth.limo/4E50FA52-08AB-4D15-B77D-CF4DF9BF8346/</link>
        <guid>https://justinyan.eth.limo/4E50FA52-08AB-4D15-B77D-CF4DF9BF8346/</guid>
        <pubDate>Sun, 10 Apr 2011 20:10:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><a href="http://www.windyshade.com/wp-content/uploads/2011/04/DSC05368.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-904" title="DSC05368" src="http://www.windyshade.com/wp-content/uploads/2011/04/DSC05368-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/04/DSC05368-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/04/DSC05368-1024x768.jpg 1024w, https://cdn.justinbot.com/wp-content/uploads/2011/04/DSC05368.jpg 2048w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p>春寒是携着桃红柳绿的江风，在青雾中撒下蛩音笃笃，石阶遗梦，初入古城。<br /> 从城楼拾阶而下，小径曲折，古楼掩映，真有置身江湖之感。待穿过城门，眼前豁然开朗：江风习习，柳舞轻轻，桃颜春色，水碧如玉。凤凰古城沿江而生，依山而立，古楼重重，江影迷离。<br /> 转入闹市，上有层层飞檐，状如牛角，朝天而语，下有方方青石，足痕斑驳，直抵街心。黑瓦白砖之间，灯笼点点，远山在交会处淡去。<br /> 回首大街，银饰晃晃，横拉姜糖，少女击鼓，美人纱纺，炊烟送香，酒旗飘扬，好不热闹。<br /> 四下张望之间，不觉来到江边，江上船影交错，青黛是埋在江底的故事，在摇曳的柔波里沉睡了千年。乘上小船，长蒿便在舟尾划出另一个故事。<br /> 迎着江风与晴空，我原本不安的心绪也便沉定下来。即便我只是古城的一个过客，即便我只用我生命中的一瞬，打破古城千年的沉寂。那又怎样呢？水波里有我曾经迷离的眼神，现在它醉在江底，而桃花却留在我窗台的小影里。<br /> 假使凤凰古城仍是古城，那也只是假使罢了。我知道女人们在江边捣衣时对身后镜头的漠视，我知道苗家婆婆在卖食是心中的愁郁，我也知道残旧的水车和翻新的飞檐透出的无奈，但我就是不愿我的想象里频频出现招徕顾客的各种，店家，船家，照相，小吃。我只是希望我的脚下三步一瓣桃花，五步一声啼鸣。而事实上，暮色在不知觉中合闭，小城亮起金碧辉煌的灯盏。<br /> 对岸原先静谧萧索的酒吧街，此刻却变得最繁华不过，一时歌声阵阵，酒色靡靡，霓虹闪闪。走过灯笼辉映的也是，年轻的姑娘热情地招徕顾客，而酒吧里烟雾缭绕鼓乐震天，哪还有半点古韵古色？<br /> 遂穿过石桥，只摄下几张夜景，匆匆结束第一日的旅程。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/04/DSC05503.jpg"></a><a href="http://www.windyshade.com/wp-content/uploads/2011/04/DSC05503.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-905" title="DSC05503" src="http://www.windyshade.com/wp-content/uploads/2011/04/DSC05503-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/04/DSC05503-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/04/DSC05503-1024x768.jpg 1024w, https://cdn.justinbot.com/wp-content/uploads/2011/04/DSC05503.jpg 2048w" sizes="(max-width: 300px) 100vw, 300px" /></a><br /> </p> 
<p style="text-align: right;">110410/下午<br /> 于华工图书馆</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x68A6;&#x4E2D;&#x7684;&#x5C0F;&#x9547;</title>
        <link>https://justinyan.eth.limo/50688EE6-7B57-4484-B58A-6AC30D826B6C/</link>
        <guid>https://justinyan.eth.limo/50688EE6-7B57-4484-B58A-6AC30D826B6C/</guid>
        <pubDate>Sun, 27 Mar 2011 20:07:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>红花携雨落入伞缘，桥边的涟漪泛出层层忧郁，摇曳一声叹息。追着梦境，踏入青石地，小镇的容颜在雨中静逸。<br /> 一瓣红花醉在春天里。多少步履碎乱小镇的故事，有一个姑娘在檐下低语。<br /> 你去问风中飘摇的柳条，又问足下絮絮的花语，便是古老的城墙也不答你，苔痕在雨中笑得诡异。<br /> 你知道这会是一个梦，在醒来时啼声匆匆闯进夕阳的魅惑里。风筝系着月亮，萤火在城门徜徉，你在错愣中忽然转入深巷，红唇像夜风一样柔软。<br /> 你一定知道有个地方？<br /> 什么地方？<br /> 碧绿色的海水，象牙白的灯塔，山一样的楼船，花一般的雨香。<br /> 我不知道，但我知道另一个地方。<br /> 什么？<br /> 幽舞的蝶影，摇荡的波心，会说话的红花，你美丽的身影。</p> 
<p>你知道早晨的青雾是月的梦么？<br /> 解开缰绳，把小镇装进包袱，又去踏露湿的甬道，红花从眼前飘落。</p> 
<p>11.03.27/夜</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x6BCF;&#x5468;&#x8BFB;&#x4E66;] &#x7B2C;9-16&#x5468;&#x4E66;&#x5355;</title>
        <link>https://justinyan.eth.limo/34747221-C3A7-4BDB-A5E9-7944205BE60E/</link>
        <guid>https://justinyan.eth.limo/34747221-C3A7-4BDB-A5E9-7944205BE60E/</guid>
        <pubDate>Sun, 27 Mar 2011 13:50:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>转眼“每周读书”已经写了4个月鸟，虽然第十六周的还木有写，哈哈，我都不知道自己竟然可以坚持这么久。第八周的时候我总结过一分书单，于是乎，第二个八周也整一份书单出来。以下是9-16周我推的书，大约10本。<br /> 另外，第八周时总结的书单在这里：<a rel="bookmark" href="../post/767">书单——[每周读书]八周来的整理</a></p> 
<blockquote>
 <p>1、《<strong>看不见的城市</strong>》(italo calvino) 梦幻的五十五座城市，交织欲望、死亡、天堂、镜面、梦境的无限想象。<br /> 2、《<strong>街道的美学</strong>》（芦原信义） 建筑的美学，对于建筑专业的童鞋来说是很好的教材，对于业余读者来说是一场对世界各地的体验之旅。<br /> 3、《<strong>浮世绘的故事</strong>》 日本传统浮世绘艺术的美妙体验。<br /> 4、《<strong>构字</strong>》 把建筑和文字两个概念融合在一起的课堂设计之作。<br /> 5、《<strong>爱眉小札</strong>》（徐志摩） 徐志摩和陆小曼充满曲折的感人爱情书信。<br /> 6、《<strong>中国构图法则</strong>》 针对传统中国画构图的各种分析。<br /> 7、《<strong>肖申克的救赎</strong>》（斯蒂芬·金） 即便身处地狱般的肖申克监牢，仍然对生活充满乐观，各种传奇各种希望。<br /> 8、《<strong>追风筝的人</strong>》（卡勒德胡賽尼） 一个充满悔恨的故事，置身于陌生的阿富汗背景之下，矛盾与冲突，人性、战争。<br /> 9、《<strong>观看之道</strong>》（约翰·伯格） 对于艺术的欣赏到底从何入手？该书虽然不能解决没受过艺术训练的人士对于艺术画作的欣赏，但是至少提供了一种独特的切入点。<br /> 10、《<strong>美学史</strong>》（鲍桑葵） 正在阅读的一本书，充满哲理，建议有哲学基础的童鞋阅读，内容丰富而深刻。</p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #15 &#x770B;&#x4E0D;&#x89C1;&#x7684;&#x57CE;&#x5E02;</title>
        <link>https://justinyan.eth.limo/9579F0CE-C128-4930-B1F1-07BCA85527BF/</link>
        <guid>https://justinyan.eth.limo/9579F0CE-C128-4930-B1F1-07BCA85527BF/</guid>
        <pubDate>Fri, 25 Mar 2011 12:33:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2011/03/41MadzcE6LL.jpg" alt="" /></p> 
<p>这是一部梦幻式的哲思之作。十一个系列五十五座城市，每座城市都是虚构的，只可能出现在我们的梦中。</p> 
<p>以马可波罗想忽必烈作旅途汇报为媒介，作者描述了五十五座奇异的城市，这些城市或涉及欲望、交换、梦境，或地狱或天堂，每座城市都有不同的故事，不同的哲思在闪光。而且在描述这些梦幻城市的时候，作者的文笔优雅之至，有如铺展开来的长轴画卷，由无数碎片组成而又连绵不断，精彩纷呈。你或许正读到月亮小憩的尖塔和奔走在迷宫里的裸女，忽然间就直面生死看到天堂和地狱，回头看到镜中自己错愕的眼神。你的眼睛扫过的这些短篇的文字，猛然看到闪光的思想如清泉般涌入大脑，或熟悉或陌生或清晰或难解，这些片段就这样留在你的记忆里。然后你忘记那些作为城市名字的古怪的外国女人的名字，只想起马可波罗和忽必烈在下棋时的思辨和诘问，以及那些轻盈的、生死的、符号的城市。</p> 
<p>这本书里每一个短章都有如诗歌般优美，梦境般神奇。虽有不尽如人意之作，但是随手翻到其中一篇，你都会觉得有如进入一个神奇的童话，翅膀样的音符在眼前跳动。</p> 
<p>事实上当某狼给我推荐这本书的时候，我还满心期待，以为会同我最近看的理论性比较强的书是同类，结果看了前面几章就觉得难以理解，觉得这是本无趣的书。其实应该是我太久没运用感性思维让我自己变得无趣了。</p> 
<p>这本书是需要静心地，集中精神去读的，虽然每章的篇幅都很短，但是这些文字会驻留在你的脑海里，自己生根发芽，长出来一个奇特的梦，其中的哲思耀眼得你不得不暂时放下书本好好做一番思考。就如作者所说，这本书是随着文字自然地生长的。我觉得这本书挺适合在移动的时候阅读，上班路上，坐车的时候，或者喝杯咖啡休息一下的时候，翻开其中一篇，于是一个梦便在脑海里慢慢展开，然后带着这些奇妙的想象，去展开一个愉快的旅途。</p> 
<p>现代人普遍缺乏想象，我以为不是我们没有想象能力，而是生活中并没有什么我们需要去极力发挥想象的，虽然我自己挺喜欢想象。想象是一种很奇特的感觉，比方白日梦，你半清醒地操控着你的世界，完全自由地奔跑在想象的原野。而这本书，用来提供想象的场景是极佳的，你可以在书里的任何一座城市中奔跑，甚至利用书中提供的哲思去展开一个自己的故事。这是本童话般的描述的梦的书，请带着它入梦吧。</p> 
<p>于华工图书馆</p> 
<p>11.03.25/中午</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x594B;&#x6597;&#x4E86;&#x4E00;&#x5929;&#x4E00;&#x591C;&#xFF0C;about.windyshade.com&#x4E0A;&#x7EBF;&#xFF5E;&#xFF01;</title>
        <link>https://justinyan.eth.limo/258370DB-2879-4A50-AA32-99A35C0DE6AB/</link>
        <guid>https://justinyan.eth.limo/258370DB-2879-4A50-AA32-99A35C0DE6AB/</guid>
        <pubDate>Mon, 21 Mar 2011 23:00:51 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>最近是招聘季哇，于是今天奋斗了一天一夜，几乎没离开过电脑地，就做了个简历站出来</p> 
<p>需要更详细简历的请根据简历站提供的各种联系方式联系我，谢谢（*^_^*）</p> 
<p>请大家多多捧场哦～～～ <a href="http://about.windyshade.com">about.windyshade.com</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #13 #14 &#x300A;&#x8857;&#x9053;&#x7684;&#x7F8E;&#x5B66;&#x300B;&#x53CA;&#x5176;&#x4ED6;&#x4E66;&#x6570;&#x672C;</title>
        <link>https://justinyan.eth.limo/B76847A7-7E91-48FA-B8C4-416897D23848/</link>
        <guid>https://justinyan.eth.limo/B76847A7-7E91-48FA-B8C4-416897D23848/</guid>
        <pubDate>Fri, 18 Mar 2011 22:59:51 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/03/2008-10-10-63088.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-870" title="2008-10-10-63088" src="http://www.windyshade.com/wp-content/uploads/2011/03/2008-10-10-63088-192x300.jpg" alt="" width="192" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/03/2008-10-10-63088-192x300.jpg 192w, https://cdn.justinbot.com/wp-content/uploads/2011/03/2008-10-10-63088.jpg 256w" sizes="(max-width: 192px) 100vw, 192px" /></a></p> 
<p>上周的读书没写，这周又病了几天 =.=|||<br /> 于是乎本周带着<strong>《街道的美学》</strong>和几本这两周看过的书回来。<br /> 从某狼那里借过《街道的美学》的时候某狼就说“别看本书挺薄的，其实看起来挺花时间的。”我看书算是挺快的了，但是花在这本书上的时候还真是不少。<br /> 作者芦原义信(1918—2003)是日本当代著名建筑师。毕业于东京大学建筑系、哈佛大学研究生院，历任日本法政大学、武藏野美术大学和东京大学教授，曾担任日本建筑学会主席、日本建筑师协会主席。1956年成立建筑事务所，其设计代表作包括东京驹泽体育馆、索尼大厦、东京国立历史民俗博物馆、东京艺术大剧院等。（via 百度百科）<br /> 《街道的美学》一书分为两篇，上篇《街道的美学》，下篇《续街道的美学》。作者开篇就介绍了把建筑划分为内外部空间的理论，在书中通过对比西欧和日本建筑的异同，从自然环境，文化影响等角度阐述了二者建筑风格的不同，并提出其对于街道设计的美学观念。<br /> 我本身不是建筑专业的学生，这本书看起来颇有不解之处，但正由于不是建筑专业，便可不求甚解，只取我需要的内容。即便如此，这本书仍然有许多精彩之处，精妙之处。在谈及欧洲的建筑时，作者提起了西班牙的小镇街道，意大利的广场，还有爱琴海岸边白色的小屋，这些美丽的建筑在作者笔下一一被剖解开来，从中我们可以看到美丽之源，源自何处。这也是这本书吸引我的原因之一。<br /> 书中还提到大量的建筑专业理论，非我专业，不好评说，不过类似街道的宽度比建筑的高度D/H&gt;2时，建筑可以被完整地观察到这样的理论，还有关于街道的第一轮廓线和第二轮廓线这样的介绍都令我着迷。原来建筑的设计还有这许多美妙的理论在其中。当然我也在阅读的过程中寻找与WEB设计的共通之处，思考咀嚼。<br /> 《街道的美学》在某狼说来是建筑专业必读的，在我而言则是一本难得的好书，好书不仅内容充实有物，而且精彩有趣，阅之有如纵览世间美物，满载而归，每次翻阅都有新意。<br /> 比较可惜的是作者多以日本的建筑作为实例对比，虽然日本与中国渊源极深，但毕竟我们不在日本并不能点到则知，还得借助图像才比较好进行想象。但愿过些年我们国内也能多出些有才华的建筑师，写出我们自己的作品。<br /> 在阅读《街道的美学》和《设计的觉醒》这两本书的时候，我的脑中频频浮现起这样一个想法：现在的中国，跟当年的日本极为相似。尤其是日本在举办奥运会后又举办了世博会，那几年其实是日本在很多方面的转折点，即便是设计界，也在那两场盛会中获得更大生命力。回顾我们国内，奥运和世博过后留下的骂声挺多，但获得的除了金牌之外鲜有详细的报道，也不知道是真没收获还是大家只看到缺点没注意到优点。但愿这两场盛会也能带给我们长足的进步才好。<br /> 这两个星期我泡在图书馆也看了不少其他的书，多是绘画和设计类。推荐两本比较不错的。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/03/9039812-1_o.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-871" title="9039812-1_o" src="http://www.windyshade.com/wp-content/uploads/2011/03/9039812-1_o-211x300.jpg" alt="" width="211" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/03/9039812-1_o-211x300.jpg 211w, https://cdn.justinbot.com/wp-content/uploads/2011/03/9039812-1_o.jpg 600w" sizes="(max-width: 211px) 100vw, 211px" /></a><br /> 1.<strong>《浮世绘的故事》</strong><br /> 听说“浮世绘”这个词已经忘记是什么时候了，不过之前看《观看之道》的时候也有稍微留意了一下，知道日本浮世绘里多以裸像入画。不过看过这本书之后才知道不全是如此。“浮世绘”作为日本的一种传统艺术，在江户时期十分盛行。相对于其他只给高官和武士享用的高雅艺术而言，浮世绘是专门给老百姓看的，所以画中出现了大量美丽的歌伎，也多有性爱描写的画作。<br /> 但是情色只是其中的一种题材而已，翻开《浮世绘的故事》，你可以看到日本传统艺术家精妙的笔画勾勒下，樱花浪漫的街道，蹒跚踽踽的女子，幽幽碧水的海湾，这些美妙的场景无不令人心动。<br /> <a href="http://www.windyshade.com/wp-content/uploads/2011/03/s2092031.jpg"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-872" title="s2092031" src="http://www.windyshade.com/wp-content/uploads/2011/03/s2092031.jpg" alt="" width="150" height="202" /></a><br /> <strong>2.《构字》</strong><br /> 这是一本德国平面设计的教学纪实。作者说制作这本书希望读者是先“看”，而不是“读”。<br /> 书中收集了大量的图片，多为学生的设计作品，把“建筑”和“文字”这样两个概念组合在一起。<br /> 里面许多设计都颇为精彩，翻翻很能激发设计灵感。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E0D;&#x662F;&#x68A6;</title>
        <link>https://justinyan.eth.limo/81011643-0410-4253-83D6-B850593C8FDE/</link>
        <guid>https://justinyan.eth.limo/81011643-0410-4253-83D6-B850593C8FDE/</guid>
        <pubDate>Wed, 09 Mar 2011 13:31:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>不是梦<br /> 11.03.09/中午<br /> 老墙上的箫声褪成白色。听见乞者的孤寂。小巷又黄昏。<br /> 紫荆花下的颜色，在相框里那么不真实。又把手放到你的额前，轻吻一点。<br /> 你转身的舞步失了灵韵，为什么？风从树上凋落，你又踏碎一个梦境。<br /> 我迷蒙的双眼撑开新的一天，奇怪我还在昨日的梦里昏黄的雨。你对我说：“时间本是白色的。你看不到的时候它成了黑色。你再看看。”<br /> 气球从窗口飘进来，我记得去年的翠竹倚窗，鸟鸣叩开我的清晨，青雾漫起读书声声。<br /> 该回头了。<br /> 你的舞步呢？<br /> 在梦里呢。<br /> 梦里的时间是什么颜色的？<br /> 哼，时间又是什么？</p>
        ]]></description>
    </item>
    
    <item>
        <title>Android&#x65B0;&#x624B;&#x88C5;&#x795E;&#x9A6C;&#x8F6F;&#x4EF6;</title>
        <link>https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/</link>
        <guid>https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/</guid>
        <pubDate>Sat, 05 Mar 2011 20:54:28 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>入Android（HTC Desire Z）一周，写点东西记录一下，Android变化太快，机子半年就out，软件也是更新很快，我现在写的东西也许过两天就凹凸了，权当备份咯～</p> 
<p>首先，给你的机子取得root权限。具体可以看这张帖子：http://bbs.gfan.com/viewthread.php?tid=397851<br /> root权限不是必须的，但有的软件是需要的，至于root是神马可以自己google之，简单地理解为取得root就取得最高权限可以对系统进行任何操作就行了。</p> 
<p><span style="color: #000080;"><strong>系统工具类：</strong></span><a href="http://www.windyshade.com/wp-content/uploads/2011/03/screenshot_6.png"><br /> </a><br /> <strong>ADW </strong></p> 
<p><a href="../wp-content/uploads/2011/03/screenshot_8.png"><img decoding="async" loading="lazy" title="screenshot_8" src="https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/../wp-content/uploads/2011/03/screenshot_8-180x300.png" alt="" width="180" height="300" /></a><br /> 强大的桌面管理工具，我用的机器是HTC Desire z， HTC sense虽然很强大，但是用ADW管理桌面更合我心意，尤其是它下面一排dock，跟我用iOS的习惯相符。
 <!--more--></p> 
<p><strong>Uninstaller</strong><br /> 用来方便地卸载软件。</p> 
<p><strong>WidgetLocker</strong></p> 
<p><a href="../wp-content/uploads/2011/03/screenshot-2.png"><img decoding="async" loading="lazy" title="screenshot (2)" src="https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/../wp-content/uploads/2011/03/screenshot-2-180x300.png" alt="" width="180" height="300" /></a><br /> 定制锁屏软件。</p> 
<p><strong>SQLite Editor</strong><br /> 用来编辑Android系统里面的SQLite数据库，对开发者很有用</p> 
<p><strong>Smooth Calendar</strong><br /> 小插件，在桌面显示google calendar</p> 
<p><strong>SMS Backup+</strong><br /> 用来备份自己的短信、通话记录等信息到Gmail，可设置为自动备份</p> 
<p><strong>R.E管理器</strong><br /> 需要取得ROOT权限，可以方便地对手机和SD卡上的文件进行管理。没有取得ROOT的机器可以用OI File Manager代替。</p> 
<p><strong>quickmark</strong><br /> 快速扫描条码工具，会在浏览器或市场搜索或打开条码自带信息。</p> 
<p><strong>Zedge</strong></p> 
<p><a href="../wp-content/uploads/2011/03/screenshot_12.png"><img decoding="async" loading="lazy" title="screenshot_12" src="https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/../wp-content/uploads/2011/03/screenshot_12-180x300.png" alt="" width="180" height="300" /></a></p> 
<p>华丽丽的壁纸下载地，灰常好看，也能搜索铃声下载。</p> 
<p><strong>安智市场、安卓市场、机锋市场</strong><br /> 除菜市场之后国内的几个电子市场，使用时注意安全。</p> 
<p><strong>百度输入法</strong><br /> 目前在用的输入法，DZ有实体键盘所以用哪个输入法其实都差不多，但是百度的分词做的比较好，比方我打jiegan他会有“饥饿感”一词而搜狗没有。</p> 
<p><strong>高级任务管理器</strong><br /> 用来管理进程，杀进程利器。不过要一个一个来比较麻烦，但是可靠呗，有些软件写着可以全杀但事实上根本没杀到。</p> 
<p><strong>海卓HIAPN</strong><br /> 一键设置手机上网，当然自己设置也行。</p> 
<p><strong>我查查</strong><br /> 也是扫描条码的工具不过自带联网搜索物价，可以多家对比，挺不错。</p> 
<p><strong>终端模拟器Terminal Emulator</strong></p> 
<p><a href="../wp-content/uploads/2011/03/screenshot_11.png"><img decoding="async" loading="lazy" title="screenshot_11" src="https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/../wp-content/uploads/2011/03/screenshot_11-180x300.png" alt="" width="180" height="300" /></a><br /> Android上的终端，必备软件</p> 
<p><strong>perfect task switcher</strong><br /> 用来快速在运行的程序间切换。</p> 
<p><strong>MarketEnalbed</strong><br /> 据说可以使电子市场可以看到收费软件但是我没成功╮(╯▽╰)╭</p> 
<p><strong>Fancy Widget</strong></p> 
<p><a href="../wp-content/uploads/2011/03/screenshot_2.png"><img decoding="async" loading="lazy" title="screenshot_2" src="https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/../wp-content/uploads/2011/03/screenshot_2-180x300.png" alt="" width="180" height="300" /></a><br /> 用了ADW接管桌面后，HTC sense自带的插件就全都不能用了，它华丽丽的天气和大时钟就杯具了，这个插件是我见过的仿HTC sense天气仿的比较好的，当然跟真正的还是有点差距。</p> 
<p><strong>Autorun Manger</strong><br /> 管理自动运行的程序，必备。有些软件我根本不需要随机启动它自己就开机启动了丫的浪费我内存。</p> 
<p><strong>Antivirus Free</strong><br /> 装来安心的，其实是不是有用不知道，防毒最主要是靠自己，靠软件没啥用的。</p> 
<p><strong>Dolphin Browser</strong></p> 
<p><a href="../wp-content/uploads/2011/03/screenshot_6.png"><img decoding="async" loading="lazy" title="screenshot_6" src="https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/../wp-content/uploads/2011/03/screenshot_6-180x300.png" alt="" width="180" height="300" /></a><br /> 目前我觉得安卓上最好的浏览器了，不过我还是比较期待FF以后能完善起来。</p> 
<p><strong>Firefox</strong><br /> 纯粹因为我在PC上用的是FF才用它。目前的FF for android还很垃圾，嗯。</p> 
<p><strong><span style="color: #000080;">其他软件：</span></strong><br /> <strong>Twidroyd</strong><br /> 用来上推的，用它主要是因为支持API，但事实上体验不好，还是官方的好些。</p> 
<p><strong>quickoffice</strong><br /> 办公用</p> 
<p><strong>google Reader</strong><br /> 必备。</p> 
<p><strong>RockPlayer</strong><br /> 据说是最好的全格式视频播放器，不过我用DZ几乎不听歌不看视频（我用别的机器看）所以无所谓。</p> 
<p><strong>SoundHound</strong><br /> 听一小段声音就能判断是哪首歌。</p> 
<p><strong>飞信</strong></p> 
<p><a href="../wp-content/uploads/2011/03/screenshot_3.png"><img decoding="async" loading="lazy" title="screenshot_3" src="https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/../wp-content/uploads/2011/03/screenshot_3-180x300.png" alt="" width="180" height="300" /></a><br /> 无言。</p> 
<p><strong>广州地铁</strong><br /> 可以进行定位跟踪，没出去用过，不过感觉还不错</p> 
<p><strong>人人网</strong><br /> 无言。</p> 
<p><strong>手机QQ</strong><br /> 无言。</p> 
<p><strong>手机电视</strong><br /> 建议在wifi环境下使用，太浪费流量了这个。</p> 
<p><strong>水果忍者</strong></p> 
<p><a href="../wp-content/uploads/2011/03/screenshot_5.png"><img decoding="async" loading="lazy" title="screenshot_5" src="https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/../wp-content/uploads/2011/03/screenshot_5-180x300.png" alt="" width="180" height="300" /></a><br /> 游戏。</p> 
<p><strong>虾米音乐</strong><br /> 听歌。</p> 
<p><strong>新浪微博</strong><br /> 无言。</p> 
<p><strong>有道词典</strong><br /> 无言。</p> 
<p><strong>picplz</strong></p> 
<p><a href="../wp-content/uploads/2011/03/screenshot_13.png"><img decoding="async" loading="lazy" class="alignnone" title="screenshot_13" src="https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/../wp-content/uploads/2011/03/screenshot_13-180x300.png" alt="" width="180" height="300" /></a><br /> android上面还木有instagram，只能用picplz代替。能拍了照片后顺手一个滤镜外带上传到相册，会自动同步到自己的twitter、facebook神马的。</p> 
<p><strong>Camera360</strong></p> 
<p><a href="../wp-content/uploads/2011/03/screenshot_14.png"><img decoding="async" loading="lazy" title="screenshot_14" src="https://justinyan.eth.limo/E79DDF69-3594-4E52-B56E-93CD643F09FB/../wp-content/uploads/2011/03/screenshot_14-180x300.png" alt="" width="180" height="300" /></a><br /> 国产软件，增强型拍照软件，整的跟数码相机似的，但是DZ的摄像头本来就杯具，所以用处不大，除了个防手抖的功能有点用之外。</p> 
<p><strong>NinJump</strong><br /> 游戏。</p> 
<p><strong>iReader</strong><br /> 看书用的，我有替代机器所以不常用手机看书。</p> 
<p><strong>Foursqure</strong><br /> 无言。</p> 
<p><strong>Evernote</strong><br /> 记事类软件，灰常好用，我在win，linux，iOS和android上都用它。嗯。</p> 
<p><strong>Doit.im</strong><br /> 日程管理，配合GTD使用。</p> 
<p><strong>Dropbox</strong><br /> 网盘。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #12 &#x300A;&#x7231;&#x7709;&#x5C0F;&#x672D;&#x300B;</title>
        <link>https://justinyan.eth.limo/00F8C246-4FBB-491C-83CA-9DBD22A5B5C4/</link>
        <guid>https://justinyan.eth.limo/00F8C246-4FBB-491C-83CA-9DBD22A5B5C4/</guid>
        <pubDate>Sat, 05 Mar 2011 19:19:49 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2011/03/20975529-1_o.jpg" alt="" /></p> 
<p>志摩的诗，精致，晶莹，大胆，勇于尝试。虽然他的作品我个人喜欢的不算多，也就代表的几首，但是读过很多志摩的诗，志摩的散文，每次阅读总能给我美的享受。<br /> 我写诗从初中开始，什么也不懂，对什么都充满好奇的时期。当时读诗不多，但情感真挚而热烈，极多产，又多以各种新奇手法入诗，有奇诡处。至认真读志摩的诗，大约是09年夏天，大学的期末，异常压迫人的时间。当时我在图书馆的一角找到了可以释压的地方，现在还常去。当时正对生活无所适从的时候，对了志摩的诗，志摩的散文，以及《爱眉小札》。<br /> 《人间四月天》想来许多人看过，播送的时候我似乎正在准备中考，只匆匆几瞥，却也留下了个浪漫、柔美、多情的印象。而图书馆的书令我明白：志摩的故事和《人间四月天》这部剧多有出入。这个剧本是根据志摩的原配幼仪的回忆录写的，多有偏颇，多怀恨意。而志摩这位饮过洋墨水的翩翩才子，又对父亲做主的包办婚姻甚是抵触，于是他与幼仪的婚姻从一开始就注定是一场悲剧。<br /> 我以为，能遇上陆小曼大约是志摩短暂的一生中最大的幸福，至少是我最为艳羡的一事，倒不是因为小曼的美小曼的娇媚，而是羡慕他二人之间爱的深沉，爱的炽烈。<br /> 总有这么个问题无法能解：爱情是什么？<br /> 从理性的角度，从所谓的“科学”去解释，或许可以说是男性与女性的性器官分泌的性激素，使得男女在性成熟的阶段得以相互吸引从而繁衍后代，延续物种。而期间产生的所谓情感是为了链接家庭，使得弱小的后代在父母的抚养下有一个相对安全的环境可以成长。<br /> 但人类不是绝对理性的，绝对理性那是石头，那样的世界多无趣。人类有感性的一面，爱情我认为多是感性的。而诗歌这种相对轻盈的文体，则更注重情感的抒发和细腻的描写。<br /> 爱情，是感性的。<br /> 于是感性的诗人遇上了感性的爱情，他炽烈的情感化作字字句句以便向自己日思夜想的情人诉说柔肠。这些字句既有是个，也有书信。<br /> 《爱眉小札》就是他写给小曼的书信和日记的集合。最初知道这本书是在一本志摩的诗集里，某一篇序，有《小曼哭摩》一文，诗集是志摩事故后出版的。《小曼哭摩》一文看得我眼眶湿润，心绪万千，我想，所谓的至情至性也大约如此。<br /> 《爱眉小札》里的书信，或是炽烈的思念或是家常的絮语，但我记得有人曾跟我说过：“我更喜欢你一时冲动随意写下的东西（书信一类）”。想想也是，一旦文字化为诗歌化为散文小说，刻意去编排可以去雕琢，就仿佛拿相机把自然美景拍下来一样，照片固然可以是一幅佳作，但始终比不上当时未经加工的实景。<br /> 那些流泻于笔下的思念，就是这样未经加工的实景。<br /> 《爱眉小札》，本周的读书。顺附《小曼哭摩》一文，供赏阅。建议先看看志摩的诗志摩的散文，稍微了解一下他们的故事，再看《爱眉小札》。当然直接看也可以，就是些寻常的书信。<br /> 至于近期在看的《街道的美学》和《设计的觉醒》两本书，都是好书，但是信息量挺大，看得很慢。<br /> 完。<br /> 2011.03.05/夜</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #11 &#x4E2D;&#x56FD;&#x753B;&#x6784;&#x56FE;&#x6CD5;&#x5219;</title>
        <link>https://justinyan.eth.limo/E7A487D0-97DB-44D1-AB57-B48537906740/</link>
        <guid>https://justinyan.eth.limo/E7A487D0-97DB-44D1-AB57-B48537906740/</guid>
        <pubDate>Tue, 01 Mar 2011 00:40:00 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2011/03/61lO-7MgIdL.jpg" alt="" /></p> 
<p>第十一周的读书到今天才写，原因是我近期看的书比较慢，《<strong>设计的觉醒</strong>》是每篇独立但是量大，《<strong>街道的美学</strong>》则看起来很薄但是每句都需要深思吸收，比教科书还麻烦。再加上这两本书给了我交叉阅读的可能使得我读起来要更慢了。<br /> 之前说过我写的<strong>[每周读书]</strong>都必须是我看过的书，所以本周推《<strong>中国画构图法则</strong>》一书，我今天下午在图书馆花了一下午时间看完，又做了一晚上笔记。<br /> 这本书算是对中国画构图的基础教学，这几天我在大学城中心湖拍了两次照片，去了美术馆看了国画、油画和摄影展，回来后又去学校某个湖拍了照片，所以近来对于绘画、摄影和设计之间的联系兴趣浓厚，于是乎选择了这本书来看。<br /> 上周六美术馆一行，恰巧碰到一位美术老师带着他的学生去看画展，老师大约60岁上下，学生也都在50岁以上，老师的讲解幽默风趣并且十分精到，令人受益匪浅。我在推上发了几则：</p> 
<blockquote>
 <p>美术馆收获一：看油画有三种距离，远写实中构图近笔触。油画中写实的部分相当重要</p> 
 <p>美术馆收获二：国画有油画无法比拟的技巧，由于水的应用，可以使画虚实合一，而国画中，虚的部分比实的难画，看一幅画好不好，看他的虚部就能看出其技巧了。</p> 
 <p>美术馆收获三：由于虚部存在很大可能性，所以临摹的难度也大大提高。你可以很完美地仿制出国画中写实的部分，却很难能把水墨挥洒得如作者当时一模一样。</p> 
 <p>美术馆收获四：画家现在成为大师，但是他当年也是一步一步走过来的，所以多年前的作品并不一定就是好作品，我们看画的时候早抱着一种心理说大师的画这么画是理所当然的，其实是一种误解。该怎么画就怎么画，画得不好就是不好，无论是大师小师。</p>
</blockquote> 
<p>我对于国画是一点不会，但是《中国画构图法则》一书读起来却毫不费力，十分好理解，而且其中所蕴含的哲理我以为不单单适用于国画，还适用于摄影、web设计或者其他。这大约便是哲理最初的定义，探索事物的本源。<br /> 对于这本书的介绍我觉得无需多言，我还是把我的笔记择几段上来，各位对于国画构图有兴趣的童鞋可以参考一二，BTW，我觉得看完这本书至少下次去美术馆看到国画就不会一下头大不知道如何鉴赏了。说句题外话，我认为作为中国人，基本的国画鉴赏能力还是应该要有的，怪只怪我们学校并没有这样的课程，唯一有的美术课也只是敷衍了事，学不了什么东西。其实我的要求挺简单，我们只要了解，知道就行了，并不要求每个人都能精通画技，那不可能也不现实，但至少要看到一幅画能说出来这幅画到底是胡乱画的，还是画的好的。</p> 
<p><strong>以下为部分笔记内容：</strong></p> 
<p><span style="color: #ff0000;">本来想传例图上来但是一来图太多二来图太大实在搞不定，大家将就着文字看吧，原书是有例图的，而且附录了彩色大图，很精彩。另外我本来已经修改好排版了的但是浏览器死掉了=_=，实在不想重新写一遍代码，大家还是将就这看吧，扫瑞～～</span></p> 
<h3>一、构图的基本规律和方法</h3> 
<p>水平线构图，十字线构图，垂直线构图，对角线构图，S形构图，三角形构图，梯形构图，还有其他如螺旋形，楔形和圆形等构图。</p> 
<p>构图的基本过程和思维程序，是“立意——为象——格局”的“三一律”的综合体现。<br /> 立意——确立思想，意趣，境界等美学方向。<br /> 为象——为表达主题思想所要选取的具体形象表才，包括：主体形象，非主体形象，环境内容，道具选择，造型样式等。<br /> 格局——构图法则的指导下，将形象素材合理地安排和布置在画面上，并充分地反映“立意”的思想内容。</p> 
<h2>二、中国画构图的特点</h2> 
<p>概括为俩字——“灵活”。</p> 
<div style="font-size: 14px; font-weight: bolder;">
 1.散点透视
</div> 
<p>与西方的焦点透视不同，国画通过两个或两个以上的视点观察事物，又称为多点透视。<br /> 北宋郭熙在《林泉高致》中说道<br /> <span>山有三远：自山下而仰山巅，谓之高远。<br /> 自山前而窥山后，谓之深远。<br /> 自近山而望远山，谓之平远。</span><span><br /> </span><span><span>高远之色清明，深远之色重晦，平远之色有明有晦。</span></span><span><br /> </span><span><span>高远之势突兀，深远之意重叠，平远之意冲融而缥缥缈缈。</span></span></p> 
<p>对应三远为：平面，立面和纵深。<br /> 首先：不是一个固定的视角去观察和够苗<br /> 宗柄曾经曰过：</p> 
<blockquote>
 <p>竖画三寸，当千仞之高，横墨数尺，体百里之远</p>
</blockquote> 
<p>其次：打破了时间、地点、空间的不同给人们带来的认识上的局限，使画面的构成具有了某种运动性因素。</p> 
<p>2.平面布置<br /> 虽然有三远和近大远小的透视法则，但是国画有相对平面的审美情趣，不去可以追求画面的纵深立体效果。<br /> [分五点阐述，此不一一列出，各位读者可以自行阅读本书。]<br /> 3.随“意”组合<br /> 比方说把春夏秋冬随着自己的想法组合在一张图中。<br /> 4.诗书画印<br /> 把诗文、书法、绘画和印章融合在一张作品里面。<br /> 5.立轴，长卷，扇面和册页<br /> 中国画的比例和画幅比较自由，认为画面的比例应该由画面的内容来决定，并不一定是黄金比例1：1.618.</p> 
<p>立轴：多用俯视，三远法，比例多为一比二。</p> 
<p>长卷：横向展开。立轴宜远看，长卷宜近看，于是长卷又称手卷。通常自右向左展开。</p> 
<p>扇面：分为团扇和折扇。团扇内容以折枝花鸟、风景小品为多。观折扇则注意题款与折痕相协调。册页以小品居多，比例多接近黄金比例。</p> 
<h2>三、中国画的构图法则</h2> 
<p>五字法：之　甲　由　則　須</p> 
<p><strong>之</strong>：左推右让<br /> <strong>甲</strong>：上重下轻<br /> <strong>由</strong>：上轻下重<br /> <strong>則</strong>：左实右虚<br /> <strong>須</strong>：左虚右实</p> 
<p>再结合“散点透视”和“三远法”进行布局。</p> 
<p>1.布势<br /> 画中有动态线，以为引势。<br /> 势有大小之分，横、竖、曲、斜、团、放射之势。</p> 
<p>2.主宾<br /> 主为构图中心，主要焦点。<br /> 主宾又有从属关系。<br /> 一般而言，宾衬主，主因宾而饱满（肖像画除外）。</p> 
<p>主体的位置：<br /> 1）运动线交叉处<br /> 2）疏密的视觉中心<br /> 3）人物与人物之间<br /> 4）动物与动物之间<br /> 5）大小、虚实、强弱对比<br /> 6）主体居前、中、大</p> 
<p>3.取舍<br /> 4.疏密<br /> 5.虚实<br /> 一般说来：<br /> 空疏、轻薄、淡漠、稀少、遥远、浮动为虚。<br /> 密集、凝重、浓厚、繁多、近景、稳定为实。</p> 
<p>6.开合<br /> 又称“分合”。<br /> “开”为展开，起始，“合”为收起，合拢。<br /> 起笔为开，收笔为合。<br /> 有贯穿大局的大开合，也有局部的小开合。</p> 
<p>7.空白<br /> 将最本质的特征、最能表达主题的，取舍之，而将可有可无的一律删除。<br /> 空白不是“没有”。<br /> 既是无形，也是有形。</p> 
<p>黄宾虹：<br /> 看画不但要看画实处，还要看画虚处。</p> 
<p>中国画的空白有形象性和非形象性之分。<br /> 空白的安排一般是：<br /> 1）天<br /> 2）云、水<br /> 3）过密的地方<br /> 4）主体周围<br /> 5）无背景<br /> 6）形式美</p> 
<p>8.对比<br /> 疏密、虚实、聚散、大小、高低、黑白、色彩、动静、曲直、形象</p> 
<p>9.均衡<br /> 10.色彩<br /> 11.背景<br /> 12.装饰性<br /> 13.题款印章<br /> 款式有上款和下款。<br /> 上款署归属者，下款署作者、时间。上下款皆有称双款，只有下款称单款。<br /> 还有长款和多处款。<br /> 只有姓名和方款的成为“穷款”。<br /> 其长短、位置都有讲究。<br /> 方向一般是自上向下自右向左。<br /> 字体：<br /> 工笔用楷书、隶属、篆书。<br /> 写意用行书、草书。<br /> 印章：名章和闲章。<br /> 压角章：有朱文（轻）和白文（重）。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x63A8;&#x8350;&#x4E66;&#x4E00;&#x672C;&#x300A;HTML5&#x63ED;&#x79D8;&#x300B;</title>
        <link>https://justinyan.eth.limo/5073E680-063E-49EE-A94B-7DB80ADE28DB/</link>
        <guid>https://justinyan.eth.limo/5073E680-063E-49EE-A94B-7DB80ADE28DB/</guid>
        <pubDate>Thu, 24 Feb 2011 10:59:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><img decoding="async" loading="lazy" class="aligncenter" title="HTML5: Up and Running" src="https://images-cn.ssl-images-amazon.com/images/I/511wGLMsPWL._SL160_.jpg" alt="HTML5: Up and Running" width="122" height="160" />事实上HTML5已经火了挺长一段时间了，惭愧得很，一直没怎么去学因为自己写的page还木用到HTML5.</p> 
<p>这本书是在神飞童鞋的博客看到的，这是原文地址： <a href="http://www.qianduan.net/html5-book-recommendations.html" target="_blank">http://www.qianduan.net/html5-book-recommendations.html</a></p> 
<p>昨晚看了一下这本并不算厚的书，越看越觉得惭愧，确实如书中所说“Web的任何东西只要深入了都是复杂的”，所以许多不把HTML当做计算机语言的要注意了，HTML5其实是简单并且复杂的语言。</p> 
<p>其他的不多说了，我打算接着买神飞童鞋推荐的《HTML5高级程序设计》，<a href="http://www.amazon.cn/mn/detailApp?_encoding=UTF8&amp;tag=qianduan-23&amp;linkCode=as2&amp;asin=B004FJUVNI&amp;camp=536&amp;creative=3200&amp;creativeASIN=B004FJUVNI" target="_blank">卓越的</a>目前没货，<a href="http://www.china-pub.com/197445" target="_blank">china-pub</a>和<a href="http://product.dangdang.com/product.aspx?product_id=20996033" target="_blank">当当</a>有。</p> 
<p>很长一段时间没怎么学新的东西，惭愧至极，惭愧至极，嗯，发完博文要好好学，*_*（星星眼</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #10 &#x5E0C;&#x671B;&#x548C;&#x60B2;&#x4F24; &#x300A;&#x8096;&#x7533;&#x514B;&#x300B;&#x548C;&#x300A;&#x8FFD;&#x98CE;&#x7B5D;&#x7684;&#x4EBA;&#x300B;</title>
        <link>https://justinyan.eth.limo/2AF6E352-C28D-453F-8556-529673ADA1F2/</link>
        <guid>https://justinyan.eth.limo/2AF6E352-C28D-453F-8556-529673ADA1F2/</guid>
        <pubDate>Wed, 16 Feb 2011 20:21:12 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p>这是我最近看的两本书，《肖申克》全名《麗塔海華絲及蕭山克監獄的救贖》，《肖申克的救赎》是小说改编的同名电影。<br /> 《追风筝的人(The Kite Runner)》则是一个阿富汗人写的，是以阿富汗为背景的悲伤的小说。也有同名的电影。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2011/02/zhuifengzhengderen.jpg" alt="" /></p> 
<p>这两本书都讲述了很好的故事。<br /> 《肖》把监狱这样一个黑暗的地方变得跟自由的世界似的。一切都源自于内心深处的希望。<br /> 主角安迪从不向任何人低头，他心中怀有希望，他抵抗那些“姐妹”时候是，找瑞德弄来一把锤子磨石头的时候是，同狱警斗争竟然给同事获得啤酒的时候是，办出最好的监狱图书馆的时候也是。他是一个“人”，他帮典狱长洗黑钱，帮狱警报税，从而换取某些照顾，是一个做着神奇而又肮脏事的“人”。他办好监狱图书馆，还教育狱友读书并获得高中文凭，是一个做着不寻常的事情的好人。而他越狱的时候，大概也就没人会觉得是多么神奇的事情了。尽管监狱里面没有神话，但是他这个人本身就已经是一个传奇。</p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2011/02/v2-ee375d30869b29e2918136b47f55b9d3_1440w.jpg" alt="" /></p> 
<p>《追风筝的人》击中人类内心的共同情感，友情，亲情。他先给我们展示了一个美好的家庭，当然母亲难产是一个缺陷。但是父亲是一个几乎完美的人，他孔武有力，是个成功的商人，为人正直，帮助他人从不求回报，在喀布尔受尽大家的爱戴。然后是主角，他生活在无忧的环境里，有一个对他很好很好的朋友，或者仆人，哈桑。接着作者要一个一个敲碎这些美好。<br /> 先是告诉我们哈桑和主角收到坏人哈塞夫的欺负，当然那次逃脱了。然后告诉我们主角赢得了斗风筝大赛，使得父亲很高兴从而能稍微缓解一下父子之间冷漠的关系。就在我们高兴的时候来个转折，哈桑被哈塞夫围住了，在帮主角追风筝的时候，主角追过去看到了，但是没有挺身而出。这一幕，主角的心理斗争描写很精彩。他害怕被哈塞夫欺负，但是不忍心看哈桑受欺负，他害怕失去哈桑追的风筝从而失去刚刚有好转的父亲的温和。总而言之他袖手旁观了，尽管是留着泪的。哈桑被哈塞夫鸡奸了。<br /> 从此主角的生活就变了。哈桑在主角受欺负的时候挺身而出毫不犹豫但是主角没有。他让哈桑受了多大的伤害！他开始避开哈桑，以免自己内疚。于是终于到了栽赃哈桑诬陷哈桑偷窃从而把哈桑赶走的地步。哈桑只能承认自己偷窃，如果他说出实情那么主角就要受罚，他不希望看到主角受罚。到这里，已经是一个破碎的世界。<br /> 然后阿富汗政变了。父亲带着主角逃到美国。父亲是一个多么正直的人啊，在听到哈桑偷盗的事情的时候他直接说我原谅你了，在逃亡路上看到关卡士兵要对同行的妇女无礼时他冒着性命危险挺身而出……于是作者要敲碎父亲这个完美的人了。他先是把父亲丢到美国这个陌生的环境里，当加油站的工人。这已经让父亲很屈辱但是这还不够破碎他又让父亲得了癌症，父亲一辈子跟熊搏斗，终于还是败给癌症。<br /> 而后主角娶妻，妻子不育亦是，他后来因缘回到白沙瓦见故人最后一面得知哈桑竟是自己同父异母的兄弟的时候，又一次破碎。<br /> 他这一辈子都生活在那个谎言的阴影下，他这下回到阿富汗了，哈桑却被暴政杀死了，留下一个孤儿。这回主角不再软弱，他拼着性命危险回到喀布尔，救出孤儿，而自己也浑身是伤——拜那个当年欺负过自己的哈塞夫所赐，而哈塞夫也丢了一只眼睛。<br /> 他带着孤儿索拉博，想尽办法要领养他，但是移民局不肯放行。他不得已得先把索拉博送到一个孤儿院再耍些手段办理出境手续。但是可怜的索拉博在喀布尔的孤儿院早已受尽屈辱，而且被哈塞夫买走后更遭到性虐待，对于孤儿院抱有极大的恐惧。他让主角保证不再让自己回到孤儿院而主角也保证过了，但是主角反悔了。<br /> 索拉博原本的希望破灭了，他只有去寻死，一个小孩，寻死。另一个破碎的美好。<br /> 终于他把索拉博抢救回来之后，索拉博对于一切都厌倦了，他希望回到过去的生活，但是已经回不去了。他们回到美国。主角再一次去放风筝，带着索拉博。想起那时候，和哈桑一起的故事……</p> 
<p>看书的时候我一直在思考人物和情节的关系。当然或许会有人说在写作的时候跟着条条框框来不是什么好事但是要知道，会写作的人他们本身不需要查这些东西来进行写作，写作的方法早印在他们脑海里，几乎是潜意识层面的发挥。这是废话了。<br /> 无论《肖》也好《追风筝的人》也好，情节，也就是故事，本身都是美好的，动听的故事，而这些美好都是基于对人物的成功塑造之上的。安迪是一个心中充满希望的人，同时也是一个聪明的人。所以他不会屈从，也不会因为洗黑钱犯法就不去涉足，更不会因为监狱的墙很厚就不去挖。<br /> 阿米尔是一个软弱的人，他渴望父亲的爱，同时他也是一个普通的人。他不敢挺身而出去帮助哈桑因为一个普通人面对这么强大的敌人当然会害怕。他回去编造谎言是因为他本身不知道这个谎言会给别人造成多大伤害，他还是个孩子，同时他内疚。更重要的是，他希望独占他父亲的爱。<br /> 父亲是一个勇敢正直的人，一个聪明的人。他也内疚也背叛自己的好朋友，也爱自己的孩子。他的心里也很矛盾。他自尊心和正义感很强，逃亡的时候路见不平，也不管双方力量是否悬殊但是作为一个男人他要挺身而出，即便后来面对癌症他也毫无惧色。<br /> 哈塞夫戏份不多，但是一个坏透了的人。坏透了就是一切以自己的娱乐为中心，用尽一切手段来满足自己，而且不会意识到自己是错的。<br /> 有了这些人物，那么故事应该怎么发展就只能是由这些人物本身来决定了，他们应该说怎样的话应该做怎样的事情是否合适，人物设定就是标准。<br /> 于是对比一下许多过分强调情节的作品，比方小说中的人物都是除了爱情就啥也没有的，那么我们就不难发现为什么很多人称这些作品是肤浅之作了。一切故事背景也好，一切修饰的语言也好，只是为了能更好的更流畅地展开故事，只是为了能更鲜活地表现人物而已。</p> 
<p>1、肖申克的救赎<br /> 肖申克是一个监狱，关的都是谋杀罪级别的重型犯人。银行家主角安迪被控谋杀自己的妻子和情人而入狱。作者描述的视角是第一人称，以同牢的瑞德作为叙述者。<br /> 安迪跟其他的犯人不一样，他是一个心中充满希望的人。监牢里什么也没有，有的只是时间。监狱里没有神话，文弱的安迪当然打不过人多势众的“姐妹”，常被性骚扰但是绝不屈从。不过我觉得安迪已经是一个神话，在牢房里打磨石头度日而不是跟别人一样抽烟喝酒变“姐妹”，在一次修屋顶的活时同狱警周旋竟然给所有人啤酒喝享受一会儿“做人”的感觉，还在监牢里面办图书馆获得狱外的资助……<br /> 这本书说的就是安迪的传奇，而我觉得最神奇的不外乎最终的越狱。本来就是无辜被关入监牢的安迪终于冲出牢笼，奔向自由。<br /> 这是一个美好的故事，有人说这故事很励志，而我却认为它不过是个美好的故事而已，小说就是小说。</p> 
<p>2、追风筝的人<br /> 卡勒德·胡賽尼(英語：Khaled Hosseini)，阿富汗作家，在美国，用英语，写出他的第一部作品，然后，火了。这是作者。<br /> 这是一个悲伤的故事，完全不像《肖申克》一样美好。但是悲剧往往更能动人，对吗？故事的时间跨度从主角小时候到他老了，三代人，故事的空间跨度从阿富汗一直到美国。主角阿米尔，其父，其“好朋友”——仆人哈桑，还有个重要的反派坏人哈塞夫。<br /> 故事就是围绕这几个主要人物展开的。主角自幼丧母，父亲是孔武有力的男子，同时也是成功的商人，正直的绅士，是主角自小的崇拜。但是尽管主角苛求自己要成为父亲那样的人，却一直无法做到。哈桑是主角的仆人兼好友，但是因为是仆人，主角始终无法承认他是朋友。但哈桑一直对主角忠心耿耿。主角跟父亲的关系不好，因为他觉得自己跟父亲相去太远，想来父亲也对此抱憾，为了消除两人的鸿沟，主角努力并且艰难地在斗风筝大赛上拿到了冠军。而哈桑在帮主角追掉下的风筝的时候被坏人哈塞夫欺负（鸡奸）了。主角在小巷子看到了但是不敢挺身而出，因为他害怕。<br /> 从此生活变了，他不敢跟哈桑说话因为自己内疚。后来他受不了了编了个谎言说哈桑偷他的东西。哈桑含泪承认了因为如果哈桑说出实情那么主角要受罚。然后哈桑和其父亲哈里离开了。自此，主角一生要承受的罪孽埋下，他因为这个谎言内疚一生。不久，阿富汗战乱，父亲带着主角逃亡到了美国。父亲后来得癌症了，最后的时间里帮主角提亲办了婚事，终于逝世。婚后数年，一直没有孩子，后来才发现妻子不育。再过不久，他收到白沙瓦故人来信，称病危。他飞回去看他，从而知道了其实哈桑是自己同父异母兄弟的事实。而哈桑已经死在塔利班的暴政之下了。他拼了性命回阿富汗喀布尔救回哈桑的儿子。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #9 John Berger - &#x300A;&#x89C2;&#x770B;&#x4E4B;&#x9053;&#x300B;(Ways of Seeing)</title>
        <link>https://justinyan.eth.limo/5E38BA02-583F-4A3C-AE19-A053D5D315E3/</link>
        <guid>https://justinyan.eth.limo/5E38BA02-583F-4A3C-AE19-A053D5D315E3/</guid>
        <pubDate>Wed, 09 Feb 2011 23:37:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2011/02/139104521.jpg" alt="" /></p> 
<p>去美术馆的时候看不懂墙上那些糊里糊涂的画到底好在哪里？蒙娜丽莎的微笑只是因为大家都说它是名画所以它就伟大？<br /> 很多时候我们无法鉴赏一幅画作，不是因为我们自身的修养不足，而是由于时代的差异。当然，自身不具备鉴赏能力也是看不懂名画的主要原因。<br /> 什么叫做鉴赏能力？针对画作这种影像作品来说，可以说是观看之道。</p> 
<p>此书初版于1972年，作者约翰•伯格。此书基于英国BBC同名电视系列片写成，共有七篇文章，三篇纯图，四篇图文并茂。<br /> 文首问出的看不懂名画到底好在哪里的问题，其实读完这本书也没法回答。对于画作的鉴赏能力不是看一本书就能培养起来的，但是这本书至少能让你学会一点门道，一点方法。而且这种观看之道不仅仅用在画作上，用在其他的方面也是通用的。<br /> 开篇强调了观看的重要性，儿童先学会观看，再辨认，后语言。语言描述出来的事物跟我们看到的事物往往有所不同。比方我们看到太阳东升西落，知道地球围绕太阳转，但是观看到的东西跟我们的认知是不同的。<br /> 所有的影像(image)都是人为的。摄影师从无数个角度中选择一个观看角度，作出摄影作品，而画家则是在画布上涂抹其自身的创想，即便是写实的油画，也参入了画家自身的观看方法。作为观众在观看这些摄影作品和画作的时候也有自己的观看方法。这些观看方法与个人的知识与信仰有关。许多历史名画中包含了作者当时的观看方法，而随着时间的流逝，这些观看方法很多是已经过时了的，所以我们现在的人去观看以前的作品时往往找不到当时的视角。感觉这些艺术作品有其神秘的特点，是为神秘化。<br /> 在17世纪，油画作为一种实体物品尤其商业价值，是以多被有钱的收藏家收藏。而照相机发明了以后，复制成为可能。于是平民百姓也能欣赏到以往只有富人才能欣赏的艺术，给艺术带来很大的冲击。由于我们出生在技术发达的现代，我们很难去体会当年那些收藏家的心情，也很难去体会传统油画为了还原真实的那种强烈需求。所以对于画作的欣赏往往只能作出最浅层的“很好看”这样的评价，不说其作品需要专业知识来进行评断如构图，即便是作品对于人物心理的刻画，以及画家、实物之间的关系都很难理清。<br /> 还有一个很重要的问题，我们知道欧洲中世纪油画中很常见的一种是裸像画，而且以女体为主要对象。但是我们往往很难分辨色情和艺术之间的区别，包括现代看似很潮的“人体艺术”。要了解这种裸露的艺术，首先要了解其所处男女两性的社会地位及其思想传达。<br /> 该书在第三篇对于女性的剖析入木三分，我个人觉得是写的最好的一篇。由于我们的社会长期是由男性主导，这样的文化氛围下已经催生了这样的情况：男性的风度是对外的，风度强弱取决于其力量的强弱，力量可以是道德的金钱的体格的性的。而女性则在其内心分裂出两个心灵，一个是观察者一个是被观察者。她时时要以别人的视角来苛刻地审查自己。注重自己的形象，先确定自己的形象会给别人留下什么印象然后再行动。<br /> 相反地，男性则是先观察女性，然后再决定自己对她做出什么行动。所以女性或多或少都会有一种控制这种行动的能力。她们怎样对待自己，就是允许别人那样子对待自己，她们开一个玩笑，就是先以内心里的观察者，给自己内心里的被观察者开那样的玩笑，所以，她就允许别人，尤其是男性，对她开这样的玩笑。只有男性才能做到只是为了开玩笑而开玩笑。<br /> 了解了这些之后，回到裸像油画上来。观察欧洲中世纪的裸像油画，可以看到作为主体的女性往往是呆滞的表情，表现出一种屈从。这些裸像的主角不是躺在床上的女体，而是观看者本身，而且往往以男性观看者作假定。在当年汗牛充栋的画作中，大量的画作都只是为了性的功能而作，虽然其中有少部分的佳作。我们可以把那些纯粹为了挑逗的裸露作为春宫图来看待，所以下回去美术馆的时候，看到纯粹挑逗的裸像你可以告诉自己，其实跟色情没什么区别。如果有区别，那么大概是在绘画的技法上有所提高，而遗憾的是，往往风景画才是当年油画技法创新的出处。<br /> 那么回到佳作的话题上来。比方说书本里面举的例子，下面这幅画：</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/02/86450337_d6ee61e24c_z.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-803" title="86450337_d6ee61e24c_z" src="http://www.windyshade.com/wp-content/uploads/2011/02/86450337_d6ee61e24c_z-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/02/86450337_d6ee61e24c_z-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/02/86450337_d6ee61e24c_z.jpg 640w" sizes="(max-width: 300px) 100vw, 300px" /></a><br /> 画家对于画中的人物无疑倾注了极大的热情，但是他自己本身不是女人的主人，他又不能欺骗自己说那个女人是为了自己而展示裸体。于是他在极为困惑的情况下，还是给了女人积极的姿态和表情，那个女人不再是表达着屈从，而有了自己的活力。<br /> 另外，传统裸像画中，是不会画出体毛的，因为体毛代表着性能力和欲望，而根据上文所说，画中女性所能够拥有的，只是屈从。</p> 
<p>这本书传达的东西很多，虽然只是很薄的一本，但是其实挺难读懂的。难懂一方面是我个人缺乏对于绘画的知识，一方面则是我看的译本翻译得太烂，语言晦涩得我还得靠猜才能懂。所以如果有童鞋想买这本书的话，建议先试读一下，对比一本翻译得比较好的书再买。</p>
        ]]></description>
    </item>
    
    <item>
        <title>iOS4.2.1&#x8D8A;&#x72F1;&#x540E;&#x8F6F;&#x4EF6;&#x63A8;&#x8350;</title>
        <link>https://justinyan.eth.limo/65AEB121-B716-43C2-B2C7-92D25D76CB76/</link>
        <guid>https://justinyan.eth.limo/65AEB121-B716-43C2-B2C7-92D25D76CB76/</guid>
        <pubDate>Mon, 07 Feb 2011 18:54:34 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><span style="color: #0000ff;">看来我是安于机子现状太久很多东西就不知道，感谢富二代童鞋 @fu2dai 和 @cst7888 童鞋指正^_^</span></p> 
<p>iOS4.2.1越狱的win版昨儿算是出了，把机子重新刷了一遍，然后把所有以前用的盗版软件都给删了。<br /> 用盗版到底是好是坏我个人说不清楚，不过对我而言，能用正版的情况就尽量正版吧，虽然我的电脑的操作系统还有些软件是盗版的，不过能用开源的软件我就都用了，如果不是某些必须的软件只能Win ONLY，我这会儿早就抛弃win了，Linux已经挺成熟了，MAC OSX 也是很不错的操作系统，只是我没钱买MAC而已 = =。<br /> 废话就到这里，在列出软件之前机子要先越狱，下载绿毒，然后根据提示一步步进行。越狱成功后安装cydia。<br /> 更详细可以看着帖子：威锋帖<br /> 另外关于我不用盗版软件的话那么我该怎么办，首先我会尽量使用免费软件，如果没有就寻找限时免费软件，再没有我就花钱买，有paypal或者信用卡就可以买，一般的付费软件都不算贵。0.99刀或者2.99比较常见，到9.99的就比较少。<br /> 那么怎么决定某个软件我应不应该买呢？上app2life（http://app2life.com/）或者178的网站（iFan.178.com）或者威锋等各个站点看看呗。<br /> 然后如果自己要的软件木有出现评测文章或者自己想先试试后再购买那么一是使用Lite版，木有lite版可以使用installous 4安装破解的软件，只要自己试用之后把软件删掉再购买正版的就行了，这也是installous的作者制作这款软件的初衷（当然是真是假不知道，至少你这么用就不会有道德负担的）。</p> 
<p>接下来我刷机后安装的软件：</p> 
<p><strong>先添加几个源</strong></p> 
<ul> 
 <li> cydia.myrepospace.com/suik/</li> 
 <li> apt.178.com</li> 
 <li> app.weiphone.com/cydia</li> 
 <li> cydia.fit4.cn</li> 
 <li> apt.weiphone.com/cydia</li> 
 <li> gfwinterceptor.googlecode.com/svn/trunk/cydia</li> 
</ul> 
<p><span style="color: #0000ff;">源的话自己看着添加好了，这些都不是必须的^_^</span></p> 
<p><strong><br /> <span style="color: #333399;">1、cydia安装的系统辅助软件</span>：</strong></p> 
<ul> 
 <li> <span style="color: #000000;"><strong>cydelete </strong></span>像删除appstore里安装的软件一样删除cydia里面安装的软件（不安装的话是不能直接在桌面删除cydia安装的软件的）</li> 
 <li> <span style="text-decoration: line-through;"><strong>Frash </strong>让浏览器支持flash，功能并不完善但是可以看flash视频，如优酷、土豆等</span><span style="color: #0000ff;">木有必要了，因为优酷和土豆都支持HTML5了，我凹凸了</span></li> 
 <li> <strong>GFWinterceptor </strong>用来fan q1ang的，祥见：<a rel="bookmark" href="../post/504">在iphone/itouch上使用gfwintercepter fan q1ang</a>这篇</li> 
 <li> <span style="text-decoration: line-through;"><strong>googleMaps地图偏移</strong> google map中国地图是刻意加了偏移的，什么原因大家应该懂得，装了这个就不会了</span><span style="color: #0000ff;">据说4.2.1已经不偏移了，装了反而会，我现在上不了4sq不能验证，不过富二代童鞋已经验证过了</span></li> 
 <li> <strong>GPower Pro关机增强</strong> 安装后按住sleep button会出现三种选择，关机、respring或者重启</li> 
 <li> <strong>Lock Rotation解锁锁屏</strong> iOS4的锁屏只能锁一个方向的，安装后就可以锁各个方向了</li> 
 <li> <strong>MultiIconMover </strong>可以一次移动多个图标，按住一个图标使图标摇摆，再点一下会出现个勾，勾选多个后翻页到要放的地方，点一次home键就可以了</li> 
 <li> <strong>NoSpot </strong>安装后可以删除iOS的搜索页面，以前我装了这次没有，想试试搜索功能有多方便</li> 
 <li> <strong>Remove Recents</strong> 不显示后台程序里面最近使用的程序，不仅如此，还提供更多更强大的功能，这个推荐安装</li> 
 <li> <strong>Safari Download Manager</strong> 让safari可以下载任何类型的文件</li> 
 <li> <strong>ScrollingBoard </strong>可以把ipod控制面板放在前台的dock那里，向右一拨就出来了，不用在后台程序列表那里拨出ipod控制</li> 
 <li> <strong>单一iPod图标</strong> 把ipod的音乐和视频两个图标合在一个图标，跟iPhone一样</li> 
 <li> <strong>EnhancerFolder</strong> 增强iOS4的文件夹功能，一个文件家可以放更多app，可以翻页，可以放多个文件夹，很好用。</li> 
 <li> <strong>百度输入法 </strong>我个人还是觉得这个好用</li> 
 <li> <strong>WI输入法、QQ输入法</strong> 都是比较优秀的输入法</li> 
 <li> <strong>Make It Mine</strong> 用来修改左上角运营商字样，但是貌似4.2.1用不了</li> 
 <li> <strong>InsomniaPro</strong> 锁屏时wifi不断，这是在我不使用SBSettings之后的替代品。感觉开着SBSettings多占用一点资源不爽。</li> 
 <li><strong>iFile </strong>强大的文件管理工具</li> 
 <li><strong>installous 4</strong> 可以用来直接搜索下载安装app store的破解软件，建议作为软件试用</li> 
</ul> 
<p><span style="color: #333399;"><strong>2、AppStore的免费软件：</strong></span></p> 
<p><strong> ——音乐类app：</strong></p> 
<ul> 
 <li> <strong>Pandora </strong>一个国外的电台软件，可以免费听到很多歌曲，但是需要用gfwinterceptor或者VPN</li> 
 <li> <strong>Last.fm</strong> 国外很有名的网络电台</li> 
 <li> <strong>虾米音乐</strong> 国内最近挺火的音乐站，虽然有版权问题</li> 
 <li> <strong>Douban.fm</strong> 豆瓣电台，据说音乐都是正版的，不过我不常听</li> 
</ul> 
<p>——<strong>阅读类：</strong></p> 
<ul> 
 <li> <strong>Instapapper和read it later</strong>，两者是一样的服务，用来把现在没空读的网页、链接留到以后读，都有免费版，也有收费版</li> 
 <li> <strong>Evernote </strong>超强大的记事软件，跨平台使用，电脑和iPhone上的可以同步。</li> 
 <li> <strong>WordPress </strong>有时候可以用这个app来写博客</li> 
 <li> <strong>iBooks </strong>必推的优秀读书软件</li> 
 <li> <strong>Flickr </strong>不必多说</li> 
 <li> <strong>Instagram </strong>拍照、修图、上传、同步，一气呵成的优秀照相软件</li> 
</ul> 
<p>——<strong>SNS类：</strong></p> 
<ul> 
 <li> <strong>twitter、facebook、linkedin、Quora、PingChat、QQ、饭否、Echofon、人人网、爱飞信、Meebo、新浪微博、Skype、Latitude</strong></li> 
</ul> 
<p>都不用多说，没见过的下载了试试就知道是啥子了<br /> ——<strong>工具类：</strong></p> 
<ul> 
 <li> <strong>Doit.im</strong> 优秀的doit软件，运用一种不错的时间管理哲学。</li> 
 <li> <strong>Flashlight </strong>手电筒</li> 
 <li> <strong>Days Matter</strong> 倒数日，挺好玩儿，用来记生日神马的</li> 
 <li> <strong>有道词典、金山词霸</strong> 词典工具</li> 
 <li> <strong>Opera Mini</strong> 不错的浏览器，国外装机量挺大的，省流量</li> 
 <li> <strong>UC浏览器、QQ浏览器</strong> 备用而已</li> 
 <li> <strong>Amazon Mobile</strong> 卓越亚马逊，方便的买书</li> 
 <li> <strong>Dropbox </strong>很好用的网盘工具，秒杀国内一切网盘</li> 
 <li> <strong>google earth </strong>不必多说</li> 
 <li> <strong>google mobile app </strong>多个google产品的app，挺方便</li> 
</ul> 
<p><strong><br /> <span style="color: #333399;">3、AppStore的付费软件：</span></strong></p> 
<ul> 
 <li> $2.99  <strong>Reeder </strong>好看又好用的google reader应用</li> 
 <li>$ 2.99  <strong>Momento </strong>可以记录你每天的twitter、facebook或者博客等各种SNS输出，还可以自己添加新纪录</li> 
 <li> $9.99/16.99<strong> DocsToGo</strong> 可以阅读和创建编辑多种格式的文件，尤其是office的文件</li> 
 <li> $2.99  <strong>GoodReader </strong>可以阅读多种的格式的文档，超级强大的阅读器</li> 
 <li> $2.99  <strong>Oplayer </strong>视频无需进行转换就可以在iPhone上播放，这个软件目前已经升级到比较成熟的版本，支持多种格式，播放挺流畅的</li> 
 <li> $2.99  <strong>Air Video </strong>可以利用wifi共享你电脑上的视频，而且可以一边转换格式一边进行播放，很流畅</li> 
 <li> $9.99  <strong>TabToolkit </strong>可以查看gtp吉他谱</li> 
 <li> $9.99  <strong>GuitarToolkit </strong>各种吉他小工具，包括各种特殊调弦，灰常实用</li> 
 <li> $2.99  <strong>ultimate guitar Tabs </strong>可以直接连接到国外的吉他谱网站搜索到吉他谱，还有提示和弦，就是中文歌杯具了</li> 
 <li> $3.99  <strong>ReadCHM </strong>可以阅读CHM文件</li> 
</ul> 
<p>完。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #8 &#x539F;&#x7814;&#x54C9; - Designing Design</title>
        <link>https://justinyan.eth.limo/137D326D-078E-43F5-B180-5EF1D9EAAA26/</link>
        <guid>https://justinyan.eth.limo/137D326D-078E-43F5-B180-5EF1D9EAAA26/</guid>
        <pubDate>Mon, 31 Jan 2011 00:24:37 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p><img decoding="async" src="https://cdn.justinbot.com/wp-content/uploads/2011/01/cover_designing-design5501.jpg" alt="" /></p> 
<p>遇到好书就有如遇到故人，第一眼看到就再不愿离开。<br /> 拿到这本书是两天前，刚写完第七周的每周读书，是诺曼的《设计心理学》，正好有充足的时间可以看下一本书的时候，《Designing Design》闯进来了。<br /> 阅读的过程几乎可以说每一句话每一幅图都不愿意错过，很久没有过这样的阅读体验了，当然这也许跟我读这种设计或建筑大师的作品太少有关。</p> 
<blockquote>
 <p>原研哉（はら けんや、1958年 - ） 日本中生代国际级平面设计大师、日本设计中心的董事、武藏野美术大学基金会教授，无印良品（MUJI）艺术总监。</p>
</blockquote> 
<p><strong>一、什么都没有，就是什么都有。</strong><br /> 无。<br /> 白。<br /> 空。<br /> 这是我对过这本书之后印象最深的也是最难理解的部分。原研哉在设计中融入了日本的禅宗，使用了简洁的表达方式，慎重择色，轻易不使用多余的颜色。<br /> 这在目下过度设计普遍盛行的情况下是一种不同的态度，另辟蹊径的思考。打开Dribble，我们可以看到世界顶尖的设计师画出的各种华丽的图案，对于光影的应用，对于颜色的把握无不令人叹绝，而且往往有亮点的创意在其作品中体现。但是翻开《Designing Design》，你将看到另一种不同于浮华的设计。这就是原研哉与其他设计师的不同之处。<br /> 无，白，空，代表什么也没有，同时也代表什么都有。他的作品所要传达的信息是一种包容，所有的颜色混合在一起是白，设计传达出的信息不仅仅是设计师自己的思考，同时也包含了对观众对于作品解读都自己在创作的引导。</p> 
<p><strong>二、五感设计HAPTIC</strong><br /> 大约五感设计在这本书里面是属于比较好把握的比较具体的东西了。五感不仅仅是五官的几种感觉，它包括了几乎人体所有的感觉。<br /> “凝胶门把手”使用了柔软的凝胶替代传统的冷硬的门把，握住凝胶把手的时候感觉就像握住了一只温暖的手，仿佛家在同自己说欢迎回来。<br /> 果汁的皮肤给果汁纸盒包装带来了新的创想，猕猴桃汁的纸盒植入了类似猕猴桃外皮的毛发，香蕉果汁的外皮使用了磨砂触感的黄色的设计，顶部还略带青黑色使其愈发形似实体的香蕉。<br /> 设计不仅仅是针对视觉，不是把图画得很漂亮就好设计，设计是一种权衡，一种信息的传达，画图仅仅是表达信息的一种手段而已。<br /> 这也是为什么许多国内山寨产品做得不好的原因，因为他们只是拷贝了别人设计出来的成品，并不知道为什么一个按钮要这么摆放一个页面要这样布局，细节才是设计师最微妙的表达。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/01/1560794163_80ae034d21_b550.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-777" title="1560794163_80ae034d21_b550" src="http://www.windyshade.com/wp-content/uploads/2011/01/1560794163_80ae034d21_b550-300x199.jpg" alt="" width="300" height="199" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/01/1560794163_80ae034d21_b550-300x199.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/01/1560794163_80ae034d21_b550.jpg 550w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><strong>三、無印良品</strong><br /> 作为“無印良品”的艺术总监，书里当然少不了無印的案例。其中我对于2003年系列海报中盐湖的海报印象深刻，不仅仅是摄影师的摄影技术，还在于这样宏大的场景所要传达的無印的理念。包容，海报展现的地平线，包容了所有读者心中的再创想。<br /> 無印“自然而然就成了这样”的想法很令我印象深刻，不是要打价格战，而是给出一个合理的价格空间，介乎贵的和便宜的之间。设计采用简洁的表达方法，没有多余的颜色没有花哨的功能，就是要让人有“嗯，就这个，还行”的想法。<br /> 这样的定位很让我惊讶。<br /> 在目下设计师普遍追求自我个性的表达的情况下，原研哉更想做的是自己做不到的事情，所以需要找到各方面的设计师来做设计，而不是自己一个人完成一个项目。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/01/Muji-message-1.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-779" title="Muji-message-1" src="http://www.windyshade.com/wp-content/uploads/2011/01/Muji-message-1-300x176.jpg" alt="" width="300" height="176" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/01/Muji-message-1-300x176.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/01/Muji-message-1.jpg 600w" sizes="(max-width: 300px) 100vw, 300px" /></a> <a href="http://www.windyshade.com/wp-content/uploads/2011/01/12569188625551.jpg"></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/01/12569188625551.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-778" title="12569188625551" src="http://www.windyshade.com/wp-content/uploads/2011/01/12569188625551-300x106.jpg" alt="" width="300" height="106" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/01/12569188625551-300x106.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2011/01/12569188625551.jpg 888w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><strong>四、Re-Design</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/01/面出薰的.php_.jpg"><br /> </a> <a href="http://www.windyshade.com/wp-content/uploads/2011/01/板茂的.php_.jpg"></a><a href="http://www.windyshade.com/wp-content/uploads/2011/01/002.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-783" title="002" src="http://www.windyshade.com/wp-content/uploads/2011/01/002-255x300.jpg" alt="" width="255" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/01/002-255x300.jpg 255w, https://cdn.justinbot.com/wp-content/uploads/2011/01/002.jpg 272w" sizes="(max-width: 255px) 100vw, 255px" /></a> <a href="http://www.windyshade.com/wp-content/uploads/2011/01/001.jpg"></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/01/板茂的.php_.jpg"></a><a href="http://www.windyshade.com/wp-content/uploads/2011/01/001.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-782" title="001" src="http://www.windyshade.com/wp-content/uploads/2011/01/001-273x300.jpg" alt="" width="273" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/01/001-273x300.jpg 273w, https://cdn.justinbot.com/wp-content/uploads/2011/01/001.jpg 292w" sizes="(max-width: 273px) 100vw, 273px" /></a><br /> <br /> 简单地说，redesign就是再设计，重新设计。生活中有许许多多我们已经习惯了的东西，把这些见惯了的日用品拿来重新设计，重新赋予新的生命，是一件很激发人灵感的事情。redesign是第一章的内容，把卫生间用的卷纸的卷心设计成方形的，这样卷起来的纸也是方形的。圆形的纸在扯的时候很顺滑一下子就扯出来很多，而方形的纸会格达格达地卡住，这样能更节省用纸。这样巧妙的心思，通过redesign卫生纸这样朴素的产品表达出来，其传达的信息还包含了节约用纸的环保意思，实在令人讶异。</p> 
<p>这本书里我能学到的东西还有很多，需要消化需要思考。比方说对于茶室的设计，我不是日本人，对于日本文化了解的也不是很多，并不能十分理解作者的意思。书里面的作品我也并不是全都喜欢，比方为奥运会设计的象形图章的会徽，我感觉由于线条的复杂性使得图章略显不够精致，因为中国的刻章是一门艺术，对于线条的优美很敏感，因为这样的线条就是信息的传达啊。<br /> 总而言之这是一本令人不忍心放下的好书，我打算再看看作者写的其他的书。提供几本书名如下：<strong>《RE-DESIGN》：原研哉，朝日新闻社，2000； 《设计中的设计》：原研哉，山东人民出版社，2006-11； 《白》：原研哉，生活·读书·新知三联书店，2009； 《家－如何打造一个舒适的家》：原研哉/桥本麻里，大智通，2009； 《为什么设计》：原研哉/阿部雅世，山东人民出版社，2009-12。（以上书目来自维基百科）</strong></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E66;&#x5355;&#x2014;&#x2014;&#x300A;&#x6BCF;&#x5468;&#x8BFB;&#x4E66;&#x300B;&#x516B;&#x5468;&#x6765;&#x7684;&#x6574;&#x7406;</title>
        <link>https://justinyan.eth.limo/B142068B-AB7A-476D-B4AD-28D7262E99EF/</link>
        <guid>https://justinyan.eth.limo/B142068B-AB7A-476D-B4AD-28D7262E99EF/</guid>
        <pubDate>Sat, 29 Jan 2011 16:25:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p>转眼[每周读书]已经到了第八周了。第八周的读书是原研哉的《Designing Design》，将于下周释出。<br /> 今天我把过去八周中推荐过的所有书目整理了一下，大约有20+本书，希望与各位喜欢读书的朋友分享：</p> 
<blockquote>
 <p>-<strong>《带一本书去巴黎》</strong></p> 
 <p>游记散文，主讲法国大革命时期的历史<br /> -<strong>《一九八四》</strong></p> 
 <p>小说，作者一九四十年代所作，描述其所在年代的未来，与我们现状惊人吻合，提出思考。<br /> -<strong>《七十年代》</strong></p> 
 <p>文集，集合了韩少功、北岛等许多位经历过七十年代人的回忆，是一部多角度描述历史的文集。<br /> -<strong>《我们台湾这些年》</strong></p> 
 <p>以一个普通台湾人的身份谈论台湾过去五十年，清晰了展现了台湾的过去，并且，我认为与大陆现状有许多惊人的相似之处。<br /> -<strong>《万历十五年》</strong></p> 
 <p>历史，以万历十五年这一个特殊的年份展开，通过对于明朝历史起着几个关键作用的人物来讲述历史。<br /> -<strong>《心术》</strong></p> 
 <p>日记体小说，作者是电视剧《蜗居》的作者，本书同样以现实的手法描述医院里的故事，观点是否可取我不作评论，但是通过本书确实令我对医院了解更多。<br /> -<strong>《挪威的森林》</strong></p> 
 <p>小说，对于生命与生活的思考。日本目下已经结束经济高速增长期，正经历经济与文化共同繁荣的时期，处于这样阶段的人开始思考更接近与人性的问题。<br /> -<strong>《读库0600》</strong></p> 
 <p>文集，已有多本出版，我只读过这一本，前面数篇文章均为极佳的作品。<br /> -<strong>《民主的细节》</strong></p> 
 <p>个人文集，从生活细节的层次来阐述美国的民主。这是一本很容易阅读的书，没有官方政治言论，只有清晰易懂的生活事例。<br /> -<strong>《目送》</strong></p> 
 <p>个人文集，我并不十分喜欢这本书，但是该书在抒情的手法上颇有独到之处。<br /> -<strong>《超越CSS》</strong></p> 
 <p>设计&amp;CSS，《禅意花园》的作者所著，讲述WEB中的设计，全书大量精美的图片激发读者灵感，而作者阐述的设计原则亦令人深思。<br /> -<strong>《苏菲的世界》</strong></p> 
 <p>哲学类小说。以小说的形式讲述哲学这门学科，使得原本生硬难懂的哲学变得更为平易近人。作为小说它是失败的，但是作为哲学教科书它是十分成功的。<br /> -<strong>《浮生六记》</strong></p> 
 <p>中国古典小品文。作为提高古文阅读水平的极佳读物，同时其内容亦颇有生动有趣之处。<br /> -<strong>《画梦录》</strong></p> 
 <p>何其芳早期文集。写作手法吸收了西方美学的手法，将语言视为精致的艺术品细细雕刻，是锤炼语言的极佳读物，但是有其局限性。<br /> -<strong>《汪曾祺散文》</strong></p> 
 <p>回归乡土的语言与文字。<br /> -<strong>《一个陌生女人的来信》</strong></p> 
 <p>茨威格对于女人心思的极为细腻的表现。<br /> -<strong>《戴望舒诗集》</strong></p> 
 <p>戴望舒对于中国现代诗坛的做过极大贡献，其中《雨巷》的成就令人瞩目。<br /> -<strong>余光中《听听那冷雨》</strong></p> 
 <p>台湾作家思乡怀乡作品的经典之作，可视为音乐散文。<br /> -<strong>《纳兰词》</strong></p> 
 <p>纳兰容若的词集，语言清丽婉转，情感饱满动人。<br /> -关于武侠的几本：金庸、古龙、梁羽生 详见这里： <a rel="bookmark" href="../post/731">[每周读书] 第五周 成人童话的世界</a></p> 
 <p>-<strong>《三体》</strong></p> 
 <p>硬科幻小说，设定了三体这样的一个文明，作品分三部，时间跨度为中国文革时期至未来，空间跨越了太阳系到达半人马座星系，场面宏大，想象丰富，尤其其大量扎实的物理基础的运用令人大呼过瘾。<br /> -<strong>《设计心理学》</strong></p> 
 <p>唐诺曼的杰作，事例虽然陈旧，但是传达的设计原则是不变的，可视为设计界的经典之作。<br /> -<strong>《Designing Design》</strong></p> 
 <p>原研哉的作品，不仅仅是作品集，而是传达着其对于设计的理解对于设计的思考。</p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #7 &#x8BBE;&#x8BA1;&#x5FC3;&#x7406;&#x5B66;</title>
        <link>https://justinyan.eth.limo/632549CA-B060-497E-91A3-6C801F11C0CE/</link>
        <guid>https://justinyan.eth.limo/632549CA-B060-497E-91A3-6C801F11C0CE/</guid>
        <pubDate>Thu, 27 Jan 2011 22:53:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p>这是一本很值得设计师去读的书，同时也是一本绝大多数人都能读懂的有趣的书。</p> 
<p>书的开篇就以“诺曼门”切入，直接指出某些产品令人感到难以使用不是用户的错，是设计的错。这本书以日常用品作为例子，讲述以用户为中心的设计原则。原书成书很早，我看的是2003年的中信出版社的版本，所以例子有点旧，但是丝毫不妨碍作者对于设计原则的表达。</p> 
<p>我觉得对这本书的介绍无须多言，所以本周不作为书评来写，权当做作读书笔记来做。以下是我整理的一部分笔记，其中一部分已发在推上：</p> 
<blockquote>
 <p> 如果某种错误有可能发生，就一定会有人犯这样的错误。设计人员必须考虑到所有可能出现的错误，在设计时尽量降低差错发生的可能性或是减轻差错所造成的不良后果。<br /> 不是你的错：你在使用某物品是遇到麻烦，那不是你的错，而是设计出了问题<br /> 出现问题时，不要妄加评论，除非你能提供解决问题的方法。<br /> 几条重要的原则：概念模型、反馈、限制因素、可视性、预设用途<br /> 随着产品功能越来越多，控制器也越来越复杂，功能键越来越多，对这些功能键进行精简以及合理的布局（自然匹配）是一种很重要的设计，比方iphone使用一个按钮实现多种形式的操作，包括iphone的原配耳机。<br /> 只有当产品功能的可视性高，控制器和现实起的设计也自然匹配（利用自然元素使得产品的操作一眼就能看出来），产品才会方便易用。这个原则很简单，但却很少被运用在设计中。<br /> 习得无助感（learned helplessness）可用来解释人们的自责心理。它是指人们在做某事时多次经历失败，便认为自己是在无法做好这件事，结果陷入无助的状态，不再进行尝试。<br /> 若能解释某件事，我们就很满意。<br /> 我们的行动分为七个阶段：确定目标→确定意图→明确行动内容→执行→感知外部世界状况→解释外部世界状况→评估行动结果<br /> 可视性。正确的概念呢模型。正确的匹配。反馈。<br /> 头脑中的知识和外界知识<br /> 失误分为六类：撷取性失误、描述性失误、数据干扰失误、联想失误、忘记动作目的造成的食物、和功能状态失误<br /> 尽管人类行为经常违背理性原则，我们仍旧股指地认为人类思维是理性的、合乎逻辑的、有条理的。大部分的法律 是以理性思维和行为这一概念为基础的，经济学理论也大多建立在这样一种模型上，即理性的人试图追求个人利益、功利或舒适的最大化。……可是人类思维以及思 维密切相关的解决问题、进行规划的过程却似乎根治于过去的经验，与逻辑推理没有多大关系。 </p>
</blockquote> 
<p>书中涉及到的专业知识不多，大多数人都可以很容易地读懂这本书。同时这是本很有趣的书，书中的事例都是发生在我们身边的（虽然有点旧），能很形象地表达作者提出的命题或者原则。</p> 
<p>另外我刚买了两本设计类的书也分享一下，虽然书还没送到。是田中一光的《设计的觉醒》和原研哉的《设计中的设计》。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #6 &#x4E09;&#x4F53;</title>
        <link>https://justinyan.eth.limo/494019E7-2158-4EE8-93F6-7C4DEF52BFE3/</link>
        <guid>https://justinyan.eth.limo/494019E7-2158-4EE8-93F6-7C4DEF52BFE3/</guid>
        <pubDate>Thu, 20 Jan 2011 22:32:12 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p>知道「三体」是在推上，当时「三体」第三部刚出版，我却是第一次听说这部小说。<br /> 这是一部硬科幻小说，硬科幻着重于科技，技术的描写往往要重于人物的描写。维基定义如下：<br /> 硬科幻小说（英语Hard Science Fiction，简称Hard SF）是一种科幻小说的分支类型。作品的核心思想是对科学精神的尊重和推崇。在手法上，硬科幻以追求科学（可能的）的细节或准确为特性，着眼于自然科学和技术的发展。</p> 
<p>在「三体」中，设定了三体文明这样一个外星文明，三体即是由三颗恒星组成的天体，由于三颗行星的不规则运动导致该星系中，类地行星气候的异常以及不可测。三体人就是生活在这样一个恶劣的环境当中。<br /> 「三体」这部作品由文革时期开始展开，第一部的主人公由右派子弟机缘巧合地成为红星基地的科学家从事一项秘密研究，在一次偶然的机会里，开启了一场对于人类的生存意义重大的斗争。<br /> 「三体」借助了技术细节的描写，场景展开的时间和空间维度可谓宏大已极，由于作者深厚的物理及天文学的功底，使得小说的展开顺畅而令人信服，而这也是硬科幻中最为令人大呼过瘾之处。<br /> 「三体」我目前看完了第一部，我觉得是一部不可多得的好作品。<br /> 在touch上完成的博文，写得不好请见谅。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4ECB;&#x7ECD;&#x8FD1;&#x671F;&#x4F7F;&#x7528;&#x7684;&#x6700;&#x591A;&#x7684;&#x51E0;&#x6B3E;&#x8F6F;&#x4EF6;</title>
        <link>https://justinyan.eth.limo/BA5B11B7-2F44-4E38-A848-74329C50D9A7/</link>
        <guid>https://justinyan.eth.limo/BA5B11B7-2F44-4E38-A848-74329C50D9A7/</guid>
        <pubDate>Thu, 20 Jan 2011 13:39:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>自从有了ipod touch，感觉生活就和网络绑定在了一起，SNS，note，RSS，blog，都可以在touch上完成。这里我记下我最近用的最多的几个web apps。</p> 
<h3><strong>1.doit.im</strong></h3> 
<p><strong><a href="http://www.windyshade.com/wp-content/uploads/2011/01/IMG_0044.png"> </a> <a href="http://www.windyshade.com/wp-content/uploads/2011/01/IMG_0043.png"><br /> </a> <a href="http://www.windyshade.com/wp-content/uploads/2011/01/IMG_0042.png"><br /> </a> <a href="http://www.windyshade.com/wp-content/uploads/2011/01/IMG_0041.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-740" title="IMG_0041" src="http://www.windyshade.com/wp-content/uploads/2011/01/IMG_0041-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/01/IMG_0041-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2011/01/IMG_0041.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></strong></p> 
<p>使用doit.im是从 @lucifierya 的GTD文章总结上学到的，这个软件用来作为我日常生活和工作task的安排实在适合不过。</p> 
<p>与其他web app一样，注册后自己添加的task会同步到服务器，软件支持多平台，win端linux端和iPhone/iPad都有。<br /> 软件把task分为Time、Context、Project几类，允许有交集，并提供canlendar视图。<br /> 我平时的做法是这样的，今天晚上规划好明天要做的事情，分出优先级，比方说把明天早上8点起床这件事情归入优先级为hight的，然后丢进tomorrow容器里面，比方说明天要画某个原型图，就把这个task写上去，标记场景为Office里面做的，优先级设定为hight，然后project设定为我这个原型所属的项目。<br /> 这样子，我就可以根据某时某地某件事来找个这些task，并且根据其优先级决定那个先做，在时间不足的情况下还可以把no priority的tasks都给丢进tomorrow里面。<br /> 同时，这个task管理里面还有someday完成的，我把我以后有可能闲下来要做的事情比方说自助游之类的想法给丢进去，以后闲下来，在安排我的task的时候就可以看到这玩意儿然后再进行其他的detail的设定。<br /> 里面还有个分类是scheduled的，有时候我们已经知道几天后一定要做什么事情，就把这个写进去，比方我在博客上每周四写[每周读书]，就把这个写进去然后repeat。<br /> 其实这些日程管理的功能很多google canlendar都有，而且google canlendar还提供iPhone内置日历的登录同步，但是我目前已经依赖于doit的优先级设定以及根据情景、时间等方式来分类的方法。这个与GTD大约有些关系，我们的大脑是拒绝明确的时间安排的事务的，而google canlendar则要求你明确到哪一天或者那个小时之间做什么事。目前我只把它用作某些确定约会或者会议的提醒。</p> 
<h3><strong>2.Evernote</strong></h3> 
<p style="text-align: center;"><strong><a href="../wp-content/uploads/2011/01/IMG_0044.png"><img decoding="async" loading="lazy" class="aligncenter" title="IMG_0044" src="https://justinyan.eth.limo/BA5B11B7-2F44-4E38-A848-74329C50D9A7/../wp-content/uploads/2011/01/IMG_0044-200x300.png" alt="" width="200" height="300" /></a></strong></p> 
<p>一旦生活和网络连接在一起，难免就要接受信息的碎片化洪流。<br /> 我在twitter上fav了一条不错的推，我看到一张不错的图片，我在某个博客看到句不错的话或者不错的博文，我想要记下来，这时候有什么方法呢？那个记事本，然后copy &amp; paste？太麻烦，而且存在本地，时间久了东西就乱糟糟了。<br /> 对于这类碎片化的信息以及个人偶尔想到的idea，或称为灵感，我使用Evernote来作为记录。<br /> Evernote同样提供win客户端和iPhone app，免费帐户提供每月60M的流量。<br /> 我知道Evernote是在小众软件，喜欢上Evernote则是因为他的快捷键。我在浏览网页的时候，选中一段话或者一张图片，按下win+a，他就会自动新建一条Note，保存进去，ctrl+alt+v则是保存我的剪贴板上的东西，实在太方便了。<br /> 而且有同步的服务器，我带着touch到处走的时候，忽然有什么想法，写进去，回家同步就完了，iPhone则立刻同步更简单。<br /> 像这样的碎片化的信息最需要的是信息的整理，Evernote提供强大的文件夹堆栈功能，还提供tags作为搜索。Evernote已经成为我保存日常碎片信息的利器。</p> 
<h3><strong>3.Read it Later</strong></h3> 
<p style="text-align: center;"><strong><a href="../wp-content/uploads/2011/01/IMG_0043.png"><img decoding="async" loading="lazy" class="aligncenter" title="IMG_0043" src="https://justinyan.eth.limo/BA5B11B7-2F44-4E38-A848-74329C50D9A7/../wp-content/uploads/2011/01/IMG_0043-200x300.png" alt="" width="200" height="300" /></a></strong></p> 
<p>目前GR已经成为多数人的RSS阅读器，GR强大的快捷键和tags功能令人爱不释手。但是时间一长，每天都要收到1000+的条目实在是件头疼的事情。尽管touch上面也有Reeder等不错的RSS应用，但是过量的信息还是会使人产生焦虑而无法真正静心去阅读。<br /> 于是Reade it Later应运而生，同类的产品还有instapapper，自我感觉都差不多，但是我个人依赖于firefox浏览器，而read it later的firefox扩展做得实在太好，所以就一直在用read it later。<br /> 一般情况下我们在PC上阅读GR的时候，可以给自己的源分类，分为娱乐类的、必须精读的、大量更新的新闻的等等几类从而优化我们的阅读速度，另外是在点进某个类的时候，使用list显示，然后标记自己想要读条目之后mark all as read，等会就可以在star里面看到自己刚刚标记了的但是还没读的条目。这是一种提高阅读效率的好方法。<br /> read it later跟使用star差不多，但是更上一层楼，你可以注册一个read it later帐户，如果使用Firefox就可以用read it later的插件提供的快捷键i来标记某些条目为发送到read it later服务器，然后你就可以在自己的iPhone上，使用read it later app来进行阅读。由于条目都是自己筛选过的，所以在iPhone上阅读的时候就不用再进行筛选，阅读效率高很多。<br /> 另外，read it later不只是用在GR上，你在浏览网页到时候看到任何东西都可以read it later,相应的，在iOS上，基本上很多app都有read it later选项可以让你把感兴趣的内容发送到服务器以后阅读。</p> 
<h3><strong>4.Dropbox</strong></h3> 
<p style="text-align: center;"><strong><a href="../wp-content/uploads/2011/01/IMG_0042.png"><img decoding="async" loading="lazy" class="aligncenter" title="IMG_0042" src="https://justinyan.eth.limo/BA5B11B7-2F44-4E38-A848-74329C50D9A7/../wp-content/uploads/2011/01/IMG_0042-200x300.png" alt="" width="200" height="300" /></a></strong></p> 
<p>当初Dropbox火起来的时候我还没去玩过，注册了个帐号就一直放着，以为没什么用，最近才知道其方便。<br /> 不过由于我还有其他的同步服务，所以Dropbox我就用来放电子书给我的touch阅读。在win下安装了客户端之后，会选择一个文件夹作为dropbox同步用的文件夹。在系统中的操作很简单，把文件放进去就行了，然后打开touch，就直接可以看到你刚刚放进去的文件。还可以共享图片、视频等其他文件。<br /> 免费用户空间有限，但是挺够用的，邀请更多人注册就能扩展自己的容量。</p> 
<p>出门前花了点时间写了这篇博文，现在时间差不多了，就介绍这么几款软件，希望大家喜欢^_^</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #5 &#x6210;&#x4EBA;&#x7AE5;&#x8BDD;&#x7684;&#x4E16;&#x754C;</title>
        <link>https://justinyan.eth.limo/23956381-E0E2-4288-B728-53BC7525E966/</link>
        <guid>https://justinyan.eth.limo/23956381-E0E2-4288-B728-53BC7525E966/</guid>
        <pubDate>Tue, 18 Jan 2011 22:04:11 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p>上周因为刚考完试又回家等事情，所以上周的读书天窗，等到今天才补充上周的，本周的读书将在周四正常发布，敬请谅解。<br /> 目前我在家看的书是《失控》，是本大部头，很有趣但是又比较难懂的大部头，所以补充上周的读书我将用“成人童话——武侠小说”来展开话题。</p> 
<p>现在我们所提到的武侠基本上是指新派武侠，新派武侠小说带入了现代电影技巧等更丰富的写作方式，使得武侠小说的内容愈发饱满，想象更加奇幻。其中最为著名的大约有金庸、古龙、梁羽生三位大师。而香港的新派武侠小说则是由当年香港武术界太极门与白鹤门的一场争执而催生的，梁羽生为这场决斗写了《龙虎斗京华》一书从而开启了香港新派武侠小说之门。<br /> 这三位大师的作品可谓各有千秋，均有自家独到之处，其中以金庸的作品最广为人知且其名亦久盛不衰。有这么一种观点，梁羽生的作品胜在文才，古龙的作品胜在怪才，而金庸则是两者兼备。<br /> 金庸的作品我全部读过，每部不下两遍，古龙的作品因为太多无法全部看完，但大部分比较有代表性的作品也都有看过，梁羽生的作品看的比较少，但是亦有所了解。三者非要分出高下我以为我太合理，但是依据读者个人的喜好选择倒是可以的。这里我介绍几部各家的代表之作。<br /> <strong>一、金庸</strong><br /> 作为文才与怪才兼备的金庸大师，其作品往往能抓住人物的个性把一个活生生的人扔进宏大的历史场景里面，展开丰富的想象，在历史的舞台上演绎恩爱情仇与家国侠义，其作品以传统的儒家文化为基础，并结合现代的写作手法甚至电影手法，往往得出意想不到的效果。而其对于女性的心理把握更是入木三分。“小说要抓住人物来写。”金庸大师把每个人物的共性与个性鲜明地塑造出来，令人又爱又恨。<br /> 代表作：射雕三部曲<br /> 这是金庸唯一的三部曲作品，但是说是三部曲其实还是有些勉强，除了神雕与射雕之间情节结合紧密之外，倚天其实已经不是离开前面两部较远了。<br /> <strong>1.射雕英雄传</strong><br /> 以聪明伶俐的黄蓉和憨厚正直的郭靖二位主角为主线，在南宋的历史舞台上演出家国恩仇以及儿女情长。其以东邪西毒南帝北丐之分以及华山论剑的说法显有传统武侠小说的痕迹，这部作品的精彩之处在于场景之宏大，人物性格之鲜活，欧阳锋毒而怀善，黄蓉聪明而颇有邪恶，东邪外邪内正，每个人物均有自己的特性，群写和独写均把人物个性表现得淋漓尽致。整部作品围绕郭靖的正直，侠之大者，来展开，中华传统的忠孝礼义贯穿其中，可谓一部侠书。</p> 
<p><strong>2.神雕侠侣</strong><br /> 这部作品以亦正亦邪，轻佻多情的杨过为主角来展开，其中塑造了一个令人惊叹的世间仙子“小龙女”，再次展示出金庸大师对于人物塑造的极佳功底。结合金庸在儿时躲避战乱时多读古书的事情，我们可以在他的作品中多次发现历史的痕迹，这种以宏观的视野去部署人物构造故事的手法需要极高的历史知识功底，而其对于琴棋书画医酒诗茶花洋洋信手拈来即可化为武艺的更是显示出其古典文艺的功底。以这些坚实的基础再加上西方现代文学的写作技巧，比方说悬疑侦探的手法的运用，使其作品情节跌宕，轻重缓急全在掌握之中。<br /> 这部作品里面，杨过的性格算是人物中的典型，其亦正亦邪，其轻佻多情在整部作品中信手则掀起一阵波澜。杨过在全书中处处留情，小龙女也好，郭芙也好，陆无双、公孙绿萼等几乎都对其倾心。而这其中每一个女子的细腻心思又各有不同，不由令人叹服金庸对于女子心理描写的独到之处。<br /> 可以说整部作品以杨过的情事展开，最终也以情事收场，可谓一部情书。<br /> 三部作品里我个人最喜欢这一部。</p> 
<p><strong>3.倚天屠龙记</strong><br /> 到了倚天屠龙记，我们可以看出来，金庸的作品往往都有慢热的特点，倚天的前三章所写的人物事件竟然全非正题。但是其线索伏笔却往往在开头数章埋下，随着情节的展开，这些伏笔对于以后故事的发展往往有意想不到的作用，使得情节的起伏愈发自然，亦愈发动人心魄。<br /> 本作的主人公亦是多情的风流少年，张无忌，与众女之间恩爱纠葛，比之杨过的潇洒，这位主人公更显得无甚主见，单以侠义心肠以及倔强的脾气一路闯来。</p> 
<p>三部曲之外，《鹿鼎记》作为金庸的封笔之作，应当说已经是武侠小说一种极致的创新。旧有的武侠模式都是初出茅庐的小子渐渐成长，往往在中后期成为超人一样的人物，带有强烈的个人英雄色彩。到了《笑傲江湖》这一部作品中，金庸已经把武功写到无招胜有招的境界，已经脱开了旧有的把星象玄学融入武功以求创新的模式，直接忽略了招式的作用。最终发展到封笔之作《鹿鼎记》，主角韦小宝除了保命的功夫神形百变之外再无其他武功，这次的武侠主人公已经到了毫无武艺的地步。而且从人物上来说，韦小宝只是一个市井小人物，多情，并且可以说已经是一个邪派人物，除了他一直秉持的义气在头，他可谓杀人不眨眼之小恶魔。又是把主人公全是正面人物这样的设定给颠覆了。<br /> 古龙的小说里有许多邪派人物成为主角，但是往往只是行为邪恶怪异，其行事的目的理由往往处于正派。<br /> 鹿鼎记是一部武侠小说，但是又不只是武侠小说，主角的机智以及穿梭官场的世俗功夫在金庸笔下表现得淋漓尽致。<br /> 金庸有十五部小说，拼成对联的十四部加上少有人知的《越女剑》，除了方言太多的《越女剑》之外其他的作品我全都仔细看过，我最为欣赏的人物是杨过，而最为心赞的作品应该是鹿鼎记。</p> 
<p><strong>二、古龙</strong><br /> 古龙是一个多产的作家，他的作品都到我完全读不完。多产，作品就自然会有大量的次品，而且还不乏其他人代笔的作品。<br /> 我看过的作品不算多，但是《多情剑客无情剑》、《圆月弯刀》、《萧十一郎》、《绝代双骄》、《流星蝴蝶剑》均是我所喜爱的作品。其中他最为出名的有拍成电视剧《小李飞刀》的《多情剑客无情剑》，以及《绝代双骄》和《陆小凤传奇》《楚留香传奇》。<br /> 陆小凤和楚留香两个系列的作品我都没看过，或者看过一部分但没什么映像不好说。但是《绝代双骄》里面，把两个主人公分开了写，尤其突出邪恶又聪明绝顶的江小鱼是我最为喜欢的。虽然其情节的想象有些过于超乎常理，但是江小鱼这一人物的形象实在令人惊叹。我推《绝代双骄》一作。</p> 
<p>古龙的作品胜在光怪陆离的想象，其情节的曲折往往出人意料，令人大呼过瘾。</p> 
<p><strong>三、梁羽生</strong><br /> 梁羽生的作品我看得更少，《武当一剑》、《七剑下天山》还有其他几部，不算多。我所能知道的范围内我觉得梁羽生的古典文学功底甚为深厚，人物的塑造虽不如古龙之笔具有奇异的特色，场景的描写虽不如金庸之笔拥有宏大的历史舞台，但是其人物以及描述的语言给人以稳重之感，一招一式有古朴的韵味。不过我各人并不十分喜欢他的作品，不过我所看的书也就那么几本不好妄下评论，故只做个人喜好之语而已，各位看官见笑了。</p> 
<p>此文书写之时陡遇他事，后续仓促，评点不给力，各位多多包涵。</p>
        ]]></description>
    </item>
    
    <item>
        <title>HTML&#x548C;CSS&#x5165;&#x95E8;</title>
        <link>https://justinyan.eth.limo/73D22EF4-937E-4451-8E49-721B2D0B589F/</link>
        <guid>https://justinyan.eth.limo/73D22EF4-937E-4451-8E49-721B2D0B589F/</guid>
        <pubDate>Mon, 17 Jan 2011 22:09:16 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>很久前就想写CSS入门，但是每次都写了开头就发现太难写写不下了。<br /> 其实html也好css也好，都是极简单的语言，简单到C/C++程序员要鄙视那些把html和css成为计算机语言的人。正因为简单，所以更难写教程，如同教授1+1=2一般。<br /> 所以这篇博文不是教程，只是收集整理了一些资料，然后加上枫影自己的理解写出来的。希望大牛表拍我，每个人都不是一开始就什么都会的，都是需要经过漫长的学习过程的。<br /> 不废话了。直接<strong>一、HTML</strong><br /> 参考维基百科的定义如下：<br /> 超文本置标语言（英文：HyperText Markup Language，简称为HTML）是为「网页创建和其它可在网页浏览器中看到的信息」设计的一种置标语言。HTML被用来结构化信息——例如标题、段落和列表等等，也可用来在一定程度上描述文档的外观和语义。由蒂姆·伯纳斯-李给出原始定义，由IETF用简化的SGML（标准通用置标语言）语法进行进一步发展的HTML，后来成为国际标准，由万维网联盟（W3C）维护。<br /> 以我个人的理解，就是一种标记性语言，整个html文件就是有多个标记“&lt;tag&gt;&lt;/tag&gt;”来组成的。“&lt;tag&gt;”是标记的开始，“&lt;/tag&gt;”是标记的结束，另一个tag形式是&lt;tag/&gt;，以"/"作为整个标记的结束，浏览器会解析这些标记，并通过内置的标记的含义来显示该标记的内容。比方说“&lt;textarea&gt;&lt;/textarea&gt;”这个标记是用来显示多行文本框的，效果如下：<br /> <textarea></textarea><br /> 整个html文件是一颗docment tree（也称dom树，数学意义上的树），根节点为&lt;html&gt;。一个基本的html页面由以下几个固定的节点组成：<br /> &lt;html&gt;<br /> &lt;head&gt;<br /> &lt;/head&gt;&lt;!--一般head标记里面放各种链接，meta等属性的定义--&gt;<br /> &lt;body&gt;<br /> &lt;/body&gt;&lt;!--body标记里面显示的就是显示在浏览器里面我们可以看到的内容--&gt;<br /> &lt;/html&gt;</p> 
<p>接下来介绍属性，attribute。“&lt;input type="text" name="username" value="请输入用户名"/&gt;”<br /> 在这个语句里面，有一个标记&lt;input&gt;，他拥有多个属性，type，name，和value。type="text"表示这个input标签的类型是text，也就是我们和常见到的那些要求输入用户名的框框。</p> 
<p>大致一个标准的html可以这样子写：</p> 
<blockquote>
 <p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;<br /> &lt;html&gt;<br /> &lt;head&gt;<br /> &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br /> &lt;title&gt;Insert title here&lt;/title&gt;<br /> &lt;/head&gt;<br /> &lt;body&gt;</p> 
 <p>&lt;p&gt;Hello World~!&lt;/p&gt;</p> 
 <p>&lt;/body&gt;<br /> &lt;/html&gt;</p>
</blockquote> 
<p>保存以上代码为test.html文件，然后在浏览器里面打开，就会看到显示“Hello World~!”字样。至于其他的，比方顶部规定了DOCTYPE以及head定义了charse之类的属性则不在入门之列，大致的意思是，使用HTML 4.01版本，设置页面的字符集为UTF-8字符集，入门时只要知道设置UTF-8就不会使中文乱码即可，更深入的可以google之或者我以后写文可能会讨论到。<br /> 然后介绍两个重要的属性id和class。<br /> 与我们后面要介绍的CSS有很大关联。<br /> 对于任何一个标记我们都可以给他一个id属性或者class属性。<br /> 比方&lt;input id="usernameinput" type="text" name="username" value="请输入用户名"/&gt;<br /> 则这个提示我们输入用户名的框框的id就是usernameinput，我们将可以在css中使用“#usernameinput”这样的方式来对这个标记的样式进行定义，简而言之，就是这个input标记的名字。同样的我们也可以设置他的class为usernameinput，比如：<br /> &lt;input type="text" class="usernameinput" name="username" value="请输入用户名"/&gt;<br /> 在CSS中我们就使用“.usernameinput”这样的方式来对这个标记的样式进行定义。那么id和class的区别在哪里呢？从标准上来说，一个id在整个dom树里面只允许出现一次，即唯一的，而class则可以多次。<br /> 举个例子，我们有一个输入用户名密码的表单：</p> 
<blockquote>
 <p>&lt;input id="username" type="text" name="username" value="请输入用户名"/&gt;<br /> &lt;input id="password" type="password" name="username" value="请输入密码"/&gt;</p>
</blockquote> 
<p>那么我们这么写是对的，但是如果把密码那个框框的id也改成username，那么就是错的，因为username作为id不能出现两次，跟身份证号码一样，不可能有重复的。不过目前的浏览器是不会对重复ID报错的，这点不太好。<br /> 那么class呢？例子如下：</p> 
<blockquote>
 <p>&lt;input id="username" type="text" name="username" value="请输入用户名"/&gt;<br /> &lt;input id="password" type="password" name="username" value="请输入密码"/&gt;</p>
</blockquote> 
<p>同样是那个表单，这里class="formclass"出现了两次，但是是合法的，我们在CSS里面，使用.formclass来定义样式的时候，就会一次定义了两个标记的样式。<br /> 总结：id是身份证，只能有一个值，不会有相同的id。而class是类，一个类名，允许有多个标记的class重名，因为他们是同类的。<br /> 这里可以还不太能明白，看到后面的CSS就会比较明白了。</p> 
<p>另外列出一份HTML的标记的表格：<br /> 然后下面是我整理的常用的几个标记：<br /> input 输入标记</p> 
<p>type属性为text则输入字符串，password则输入字符时会显示为*号或者圈圈以隐藏字符，button则为按钮，radio则为单选，checkbox为多选<br /> name属性是改输入标记的名字，用于在后台程序语言获取该值</p> 
<p>div   容器，用来装各种内容，可以认为他是一个透明的盒子。<br /> p     用于存放文字<br /> ul    无序列表<br /> ol    有序列表<br /> li    放在ul和ol标记里面作为一个表项（list）</p> 
<p>更多内容可以参考维基百科。</p> 
<p><strong>二、CSS</strong><br /> 维基定义如下：Cascading Style Sheets（层叠样式表／串樣式列表），简写为CSS，由W3C定义和维护的标准，一种用来为结构化文档（如HTML文档或XML应用）添加样式（字体、间距和颜色等）的计算机语言。目前最新版本是CSS 2.1，为W3C的候选推荐标准。下一版本CSS 3仍然在开发过程中。</p> 
<p>CSS作为面向设计师的语言，简易是他的特点，不过貌似现在的设计师还是不太习惯通过代码来控制界面。<br /> 一个简单的CSS的代码块可以如下：</p> 
<blockquote>
 <p>#username{<br /> margin: 5px 4px 3px 2px;<br /> color: #000000;<br /> font-size: 14px;<br /> }</p>
</blockquote> 
<p>其中“#username”是选择器，selector，用来确定在“{}”里面的定义是针对那个标记的，这里是针对id="username"的标记进行定义，如果要对class="username"的进行定义，则使用“.username”，那么所有把class属性命名为username的那些标记都会被这个代码块控制。</p> 
<p>接下来看里面的定义，首先我们把一个&lt;div&gt;&lt;/div&gt;这样的标记成为容器，这也是目前常用的Html标记之一。假设这个容器的id设置为username，那么margin定义的是该容器对外部的距离，“:”后面的四个数字分别是上右下左，也就是说，margin: 5px 4px 3px 2px;这句话表示该容器距离外部容器的距离是上面5像素，右边4像素，其他类推。<br /> color定义的是字体的颜色，采用“#”加十六进制数表示，#000000表示黑色。font-size表示字体大小。</p> 
<p>所以，简单地看，CSS就是由选择器和定义来构成的，只要记住了这些定义我们就可以使用CSS来控制我们的页面显示的样式了。<br /> 其他更多内容的建议阅读《CSS禅意花园》和《超越CSS》这两本书。</p> 
<p>更多内容可以参考维基百科。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #4 &#x7F8E;&#x4E3D;&#x7684;&#x8BD7;&#x6B4C;&#x4E0E;&#x6563;&#x6587;</title>
        <link>https://justinyan.eth.limo/A528B9AE-35A5-46A9-8CE3-8419B0FF0F06/</link>
        <guid>https://justinyan.eth.limo/A528B9AE-35A5-46A9-8CE3-8419B0FF0F06/</guid>
        <pubDate>Fri, 07 Jan 2011 14:30:23 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p>昨晚没能找到并且看完一本有趣的书，所以本周的读书就用我以前看过的书来作为介绍。</p> 
<p>翻书的时候发现我还有很多书目没有介绍出来，本来列了一份比较长的书单，但是最终删减了一下，只保留了三篇，我看过的，而且很是欣赏的。<br /> <strong>1、[诗集]《望舒草》</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/01/s1134370.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-717" title="s1134370" src="http://www.windyshade.com/wp-content/uploads/2011/01/s1134370-207x300.jpg" alt="" width="207" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/01/s1134370-207x300.jpg 207w, https://cdn.justinbot.com/wp-content/uploads/2011/01/s1134370.jpg 404w" sizes="(max-width: 207px) 100vw, 207px" /></a><br /> “雨巷诗人”戴望舒（1905-1950），相信多数人都是由《雨巷》认识这位诗人的。《雨巷》作于1927年，1933年出版的《望舒草》收录了该篇作品，同时还有《烦忧》等其他优秀作品。<br /> “...然而细阅望舒底作品，很少架空的情感，铺张而不虚伪，华美而有法度，...”本书的序如此评价望舒的诗歌。“唯美，凝练”，“深刻，饱满”，这是两对极难融合而又极为重要的写作要求，唯美吟咏一经展开，就很难收住笔头使之凝练简洁，而一旦精雕细琢，又难免失却整体的圆满。至于思想着眼点的深刻以及理性地深入挖掘，则往往伴随这生冷的理智而致使文章灵动不足。然而我以为戴望舒的作品绝对担得起这八个字。他是象征主义派诗人，但是反对无意义的象征以及虚伪的抒情，更主张抒发内心底细腻底情感。而这在当时整个诗坛都在直白呼喊的形势是截然相反的。短诗《烦忧》是其抒情细腻婉转的极佳表现：</p> 
<blockquote>
 <p>说是寂默的秋的悒郁，<br /> 说是遥远的海的怀念，<br /> 假如有人问我烦忧的原因，<br /> 我不敢说出你的名字。</p> 
 <p>我不敢说出你的名字，<br /> 假如有人问我烦忧的原因，<br /> 说是遥远的海的怀念，<br /> 说是寂默的秋的悒郁。</p>
</blockquote> 
<p>而《雨巷》可谓其将情感节奏与音律节奏和鸣的顶峰之作。</p> 
<p>（时隔数年我已忘记看的是出版社出版的，封面来自豆瓣，仅供参考。）</p> 
<p><strong>2、[散文]余光中《听听那冷雨》</strong><br /> 这是一篇散文，一篇精致的散文。<br /> 阅读这篇散文的时期，我正在思考能否把音乐、视觉和情感同时融入文章当中进行锤炼。而《听听那冷雨》，我以为，正是一篇绝美的音乐散文，一幅极佳的烟雨水墨，一声低沉的思乡苦吟。<br /> 文首颇让我想起《雨霖铃》的“凄凄惨惨戚戚”。</p> 
<blockquote>
 <p>“惊蛰一过，春寒加剧。先是料料峭峭，继而雨季开始，时而淋淋漓漓，时而淅淅沥沥，天潮潮地湿湿，即连在梦里，也似乎有把伞撑着。”</p>
</blockquote> 
<p>而全文对雨的描写更是少不了“清清爽爽新新”、“细细嗅嗅”……每一声点点滴滴都是雨点轻轻浅浅地碎溅，这是一种美妙的音乐，饱含着回忆里的喜爱。</p> 
<blockquote>
 <p>“那雪，白得虚虚幻幻，冷得清清醒醒，那股皑皑不绝一仰难尽的气势，压得人呼吸困难，心寒眸酸。”<br /> “雨天的屋瓦，浮漾湿湿的流光，灰而温柔，迎光则微明，背光则幽黯，对于视觉，是一种低沉的安慰。”<br /> 这是雨点敲落屋瓦时明丽又阴冷的画面。</p>
</blockquote> 
<p>作者的古典文学功底自不用说，其对于情感的把握和语言的运用使得文章读来有如行云流水，情感抒发来恰似汩汩清溪，这是一篇精致的散文，是一篇意蕴丰富的散文，恰似一位美丽而琴艺极佳的美人，纤指按弦，琴音声声，饱含伤痕。<br /> <strong>3、[词集]《纳兰词》</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2011/01/s4073480.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-716" title="s4073480" src="http://www.windyshade.com/wp-content/uploads/2011/01/s4073480-211x300.jpg" alt="" width="211" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2011/01/s4073480-211x300.jpg 211w, https://cdn.justinbot.com/wp-content/uploads/2011/01/s4073480.jpg 306w" sizes="(max-width: 211px) 100vw, 211px" /></a><br /> 纳兰性德（1655-1685）,原名成德，字容若，号楞枷山人。<br /> 对纳兰性德还是因为一位姑娘，她觉得“纳兰容若”这个名字很好听。<br /> 是啊，这是一个多么美丽的名字啊，配上这一位为天妒而早逝的翩翩才子，而他对于亡妻深刻的情感以及大量凄婉却又清丽的悼亡词则更受世人称赞。<br /> 读纳兰的悼亡词，总让我想起李清照的词，但是二者又不相同，李清照的字句之间总有声声柔弱苦痛的吟叹，而纳兰词中则多为孤寂的思念，情感更趋朴素。</p> 
<blockquote>
 <p>“风也萧萧，雨也萧萧，瘦尽灯花又一宵。”<br /> “回首西风，何处疏钟，一穗灯花似梦中。”<br /> “哪能寂寞芳菲节，欲话生平，夜已三更，一阕悲歌泪暗零。”</p>
</blockquote> 
<p>纳兰的思念细腻柔情，笔下清新婉丽，每一首小词都是一首精致的动听。<br /> 曾经将《纳兰词》一一抄写，在写字的过程中慢慢体会纳兰心中的惆怅，和笔下的顿挫。</p> 
<p>（我看的版本是人民文学出版社出版的，陈如江、王政编注）</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #3 &#x8328;&#x5A01;&#x683C;&#x300A;&#x4E00;&#x4E2A;&#x964C;&#x751F;&#x5973;&#x4EBA;&#x7684;&#x6765;&#x4FE1;&#x300B;</title>
        <link>https://justinyan.eth.limo/E052A7D4-BBD1-4456-BB15-97854A609D59/</link>
        <guid>https://justinyan.eth.limo/E052A7D4-BBD1-4456-BB15-97854A609D59/</guid>
        <pubDate>Thu, 30 Dec 2010 20:27:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p>10/12/30/夜</p> 
<p>不知不觉已经第三周了，最近在考试复习中，所以读的都是短篇，今天读的一篇是《一个陌生女人的来信》，奥地利作家斯蒂芬·茨威格(1881-1942)所著。</p> 
<p>这是一种执着的爱情，极端的执着。<br /> 读书的时候我总想起上周看的《汪曾祺散文》里面提到沈从文先生说的：“小说要贴紧人物来写”。<br /> 茨威格描写的人物的内心之细腻令人钦佩，女主角一波三折但是执着的爱情在我看来近乎无理但是又合情合理。她的每一种举动都是合理的，她的每一句话每一个细节都是她这个人确实会做出来的。可以说，这篇小说只写了两个人，男主人公R以及女主人公（写信的人）。<br /> 男主角是著名小说家R，英俊，潇洒，轻佻，滥施爱情却又不愿为爱情束缚。<br /> 女主人公是一个美丽的女子，对爱情的执着使得她的一生在遇到R的那一刻起就注定是一个悲剧。<br /> 茨威格对于女性的心理描写简直是神来之笔，女主人公是执着的，同时也是怯懦的。<br /> 她爱极了R，所以为了R愿意看很多书因为R看很多书，愿意去弹钢琴因为觉得R会喜欢钢琴，甚至为了R抵抗母亲的搬家，冬夜里躺在冰冷的地板上等待R的回来期望能乞求R收留自己。但是当她看到R带一个女人回来的时候她又无言了，最终被母亲拖走去了远方的城市。<br /> 在远方的两年，她又从未断绝过对R的思念。于是她又回到了vienna，回到了R住的城市。但是R不认识她，从一开始R就不认识她。她期望能在街上遇到R但是R并不能认出她来。最终R把她当一个陌生的美丽女子带回家，过了一夜。对于她来说，这是一种疯狂的喜悦。又过三夜，R又要去旅行，他常去旅行。R说不会忘记她，她留了联系地址但是R没有写信。<br /> 她的爱是毫无怨言的，因为她爱R，所以不会对R有怨言。R带女人回家的时候，R没认出她来的时候，R没写信的时候，她伤心但是不怨恨。她独自忍受贫困和屈辱把孩子生下来。她觉得这孩子就是R。为了这孩子过好的生活她去卖淫，她认识很多上流社会的男人，而且，那些人都很喜欢她，但是她不会和任何一个结婚，因为她爱着R。<br /> 后来，她跟那些上流社会的男人一起的时候，遇到了R。R又没有认出她。R把她认为是一个新的猎物，又把她带回家。她对于R的要求从不会说不。<br /> 早上临走的时候她几度暗示R企图让R知道她就是当年那个女孩就是每年在R生日的时候都会送花的那个女子，但是R没能想起来，而且在她梳头的时候想偷偷把钱放进她的袋子里但是她看到了。她愤怒她想说出来她是谁但是她没有，她拿起袋子低着头跑了。一头撞进那个管家怀里，管家认出来这位女士就是当年那个小女孩，管家惊讶的神色让她更难受，她掩面逃开了。<br /> 之后，孩子死了。她也感染了流感，发烧了，写了这封信，她也要死了，她才敢写下这封信。她的一生，就是为了R而活着。<br /> 今年，R的花瓶里没有她送来的花。</p> 
<p>其实我不想复述这篇短篇小说的环节，我的复述远不如原著写的好。写了很多都被我删了，删了又写写了又删，我知道我写的书评很不好看，但是我愿意继续写，愿意把我觉得好看的书分享出去，也希望自己能写出更好的书评。我觉得文体并不重要，重要的是阅读了之后自己的收获，收获了之后分享的喜悦。我读书一直有做读书笔记，这算是初中来养成的习惯，但是读书笔记是一个人看到，书评分享是很多人看的，感受又有不同。目前我还在考试阶段没法细细研究，希望是我考完试能准备得更充分些，分享出更多的好书。</p> 
<p>我看的译本是韩耀成先生翻译的，翻译得很好，比网络上的那个版本好很多。我建议看这个版本，但是翻译的总是会有所疏漏，所以能看英文原版的是最好的。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #2 &#x6C6A;&#x66FE;&#x797A;&#x6563;&#x6587;</title>
        <link>https://justinyan.eth.limo/157E827D-A66C-482F-B035-B58A3728028A/</link>
        <guid>https://justinyan.eth.limo/157E827D-A66C-482F-B035-B58A3728028A/</guid>
        <pubDate>Fri, 24 Dec 2010 20:27:16 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<blockquote> 
 <p><strong>评判一篇文章的好坏可以用“读者是否受益”来衡量。所以，对个人而言，别人觉得好的你不一定觉得好，因为别人从中受益了而你没有。进一步地，为了更受公正地评判篇文章的好坏，就得以大众的眼光或者在文章阐述的领域颇有造诣者所认为的好坏来衡量。</strong></p>
</blockquote> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/12/s2127687.jpg"><img decoding="async" loading="lazy" class="size-full wp-image-700 aligncenter" title="s2127687" src="http://www.windyshade.com/wp-content/uploads/2010/12/s2127687.jpg" alt="" width="200" height="296" /></a><br /> 今天为了不让“每周读书”天窗，于是在图书馆随手抽了本书来，说是随手，其实是我平时常去的那个书架，书是常翻的，但是细看的时间很少。<br /> 我今天翻看的这本书是《汪曾祺散文选集》，百花文艺出版社2004年9月第二版，一套当代散文选集的其中一本。<br /> 依文首的衡量尺度来看，我认为这本书是好书，它或明或暗地点亮了我写作过程的几个困惑，同时，汪先生的文章清丽朴实，深得“绚丽之极归平实”之道，实为佳作。</p> 
<p>知道汪曾祺是高中时期，《受戒》，一篇对寻根文学和乡土文学有很大影响的小说。高中时期，学生只知高考。我的高中亦是，但多了写作，于是渴于读书（是书不是课本）。《受戒》不如何其芳的散文对我个人的影响大，但是这并不妨碍我认为它是好文章。<br /> 时至今日，翻阅书架之时，看到汪曾祺其名，又念起《受戒》的情景。而百花文艺编的这本散文集，确实能很好反映出汪的写作特点：清丽，平实，乐观，美感。<br /> 不同于何其芳诗的绚烂，汪的风格当是一种高于绚烂的美感。这点当受其师沈从文之影响甚深，而此散文集亦收录有《沈从文先生在西南联大》、《星斗其文，赤子其人》以及《沈从文的寂寞》等数篇写沈从文的文章，从中学得的写作技巧大大令人受益，这也是我看了前八篇文章之后最大的收获。<br /> “小说要贴着人物来写”<br /> “在小说里，因为要‘把道理包含在现象中’，控诉是无言的”<br /> 等等数句点睛，令人恍然大悟。而至于汪的散文《葡萄月令》，则是以平实语言写出丝毫不亚于诗化语句的美感，令人读来如行云流水，清丽自然。《水母》一文我则认为有趣，我觉得好文章都应该有趣，有趣大约可以说是有意思，吸引人，引发思考。</p> 
<p>这本散文集我目前只看了前面八篇，但是写沈从文的几篇我着实喜欢，以后的文章如《牙疼》、《随遇而安》等在看了序言之后亦觉有趣，尽管序言大赞汪文有刻意吹捧之嫌，但是其对汪文风的剖析仍是相当精彩，于是本周读书我推荐汪曾祺的散文。另附小说《受戒》，《受戒》这篇小说里面包含的东西很多，取材来自汪童年的所见所闻，但又不仅止于此，从文中可以学到的至少有一点：人物塑造的成功。<br /> 看了汪的这几篇散文，我开始对语言的回归平实发生兴趣，而对于小说的写作又认识了人物塑造之重要以及蕴理其中的道理，颇为受益。</p> 
<div id="greasedLightboxOverlay"> 
 <div id="greasedLightbox">
  <img id="greasedLightboxImage" alt="" src="https://justinyan.eth.limo/157E827D-A66C-482F-B035-B58A3728028A/" />
 </div> 
</div> 
<div id="greasedLightboxMenu">
 <a id="greasedLightboxTitleLink" href="http://shiftingpixel.com/lightbox/">Greased Lightbox</a>
 <p></p> 
 <div id="greasedLightboxButtons">
  <a id="greasedLightboxButtonRight" title="Next image (right arrow key)">→</a>
  <a id="greasedLightboxButtonLeft" title="Previous image (left arrow key)">←</a>
  <a id="greasedLightboxButtonPlus" title="Magnify image (+ key)">+</a>
  <a id="greasedLightboxButtonMinus" title="Shrink image (- key)">-</a>
  <a id="greasedLightboxButtonSlide" title="Start/stop slideshow">↻</a>
 </div> 
</div> 
<div id="greasedLightboxLoading">
 <img decoding="async" style="border: medium none;" src="https://justinyan.eth.limo/157E827D-A66C-482F-B035-B58A3728028A/data:image/gif,GIF89a%80%00%80%00%A2%00%00%FF%FF%FF%DD%DD%DD%BB%BB%BB%99%99%99%00%00%FF%00%00%00%00%00%00%00%00%00!%FF%0BNETSCAPE2.0%03%01%00%00%00!%F9%04%05%05%00%04%00%2C%02%00%02%00%7C%00%7C%00%00%03%FFH%BA%DC%FE0%CA%06*%988%EB%CD%BB_%96%F5%8Ddibax%AEl%AB%A5%A2%2B%CF.%5C%D1x%3E%DA%97%EE%FF%12%1EpHT%08%8B%C8G%60%190%1DI%83%E8%20%F9a2K%CF%8FTJ%E5X%AD%A4lg%BB%EDj%BE%D7%9D%0DJ%8E%9A3%E8%B4G%BCis%DF%93%B8%9CC%CF%D8%EFx%12zMsk%1E%7FS%81%18%83%850%87%7F%8Apz%8D)%8Fv%91%92q%1D%7D%12%88%98%99%9A%1B%9C%10%88%89%9Fy%93%A2%86%1A%9E%A7%8B%8C%2F%AB%18%A5%AE%A0_%AA%8E%AC%90%B5%B6%60%19%A3%0D%AD%BC%AF%A1(%B2%9D%BB%C3%C4h%BF%C7%A4%C9%CA%A8%A9A%CE%0E%B4%D1%BD%7B%10%C0%0A%C2%D8%D2%C5%DB%D5%0C%D7%DF%CB%B7%13%B9%C8%97x%02%EE%02%2B%B0%D47%13%DEln%1E%EF%EF'%F2%2B%F6Zd%3A%E8%1Bhb%9A%3Fv%F7%DAp%18%C8%90%84%C1%13%D0%C6%94%CB%C0%B0%E2%08f2%14%02%2Ce%8A%FFb%C5%86U%B4%B5(%B3%91%A3%C0%8F%20%CD%CD%E2%08h!%CA%94*%AD%B1l%99%EF%25%C1%98%0Bf%D2%1Ca%F3fL%9D%F8X%F4%D4g%0EhG%17C%F7%0D3%EA%23%A9%3B%5EL%818u%054%C9P%AA%2C%DF%D8%C4%FA%8F%CAK%AE%08%15Y%AC%15%F6%13%D1%A5%3Bq%AA%5D%CB%B6%AD%DB%B7p%E3%CA%9DK%B7%AE%DD%BBx%F3B4%DA%F5%1B_a%7F'%16%0D%0C%89%B0%E0h%86%13%F3%FD%A9%B8qV%95%8E%23%F7%85*%D9Me%B5%97%BB9f%1BY%AF%E7%CF%A0C%8B%1EM%BA%B4%E9%D3%A8S%AB%C6A%92r%D0Se1%C5~s8P%ED%24%26a%DF%1E2%13%EC%E4%1CUu%F7%06%12%D5wn%E0%C1%5D%0F%9FQ%1Cq%F2%83%3A1%3FO%F8Xzt%EA%C7%DB6%AFs%5D%EE%F4%95%D5%25%BEv%D1Z%7Cv%F0%BB%EB%05%CC%B8%DERz%99%BF%D5kd%11%91%C3y%F9%F3G%D4%2F%B1%DF~%FF%08%BC%F9%E9%F7_I%EDaW%12t%01%3EP%DE3%B3%B9g%DB%80%9A-%A8%20%84%8CAha%7C%90Q%A8!%85~a%B8!%87%CE5%18%8C%88%E4%80%88%16%89%25%26%C8%A0%8A%19%A2%98%93%8B%11%B2%D8!%8C1J%08%A0%89%9F%BC%97b%81%F8%C9x%A2%8F%F0%F1%D8%A3%8D%CA%E8%B8%23%91%2B%02)%9C%92%232y%24%92%C6%A55%E4x~%E0H%9B%95%04%60%89%A1%22%5B%06%09%E5%8D4%9Aa%A4%97RNY%26%97X%D6x%E6%3ANv%91%A6%9ATr%D7%26%15of%19%26%99q%E6(%A4%7Fs%929%E3Q%EE%7D%89%1Eiu%AAVhj%87%A2%96%E8i%8B%9A%D6%A8%A3%7B%AE%C6'%A0%AE%24%00%00!%F9%04%05%05%00%04%00%2C%0A%00%02%00W%000%00%00%03%FFH%BA%DC%FE0%BE%40%83%BC8%EB%3D%2B%E5%60(J%9E7%9E(WVi%EBv%EB%2B%BF%EB7%DFgm%E1%3C%A8%F7%23%81P%90%FA%A1%00H%40k8D%19G%C9%24%8A%C9%CC%D5N%D1%E8%89%DA%1C%3DCYi%90%2B%F4%5EEa%B1%88%DC%F5%9DAi%F5%9A-%FAn%E2%CA%14%9B%E8%8E%C1%E3.%7B!v%19x%2F%82*o%1A%86%87%88%1A%84%12xy%8Dd%89~%8B%803%7B%7C%19%90%10%928%8E%18%9E%0F%8C%A1t%9D%8A%91%99%3C%A2%24%AA%11%A6%AD%A8%17%A4%0C%B2%B3%B4%11%B6%0A%A0%40%0A%AE0%25%18%B8%3D%9B%B5%B0%0D%BE%BF%C0%BA%10%97%B1%AC%10%03%D4%03%81%CE%C2%C4%D2%0F%D5%D5K%D8G%DB%0D%DD%E4z%952%E2%E3%E4%E5c%5C3%E9%0C%EB%F2%EDm%E8Y%18%F2%F3se%3CZ%19%F9%FA%98%09%04%18P%E0%2F%82%EB%0C2C%C8N!%10%86%DD%1C%1E%84HMb%0F%8A%15-%F2%C0%A8%F1%13%22%C3%8E%0F%09%82%0C%99o%E4%C4%86%26IZK%A9!%01%00!%F9%04%05%05%00%04%00%2C%1F%00%02%00W%000%00%00%03%FFH%BA%DC%FEKH%01%AB%BD8%EB6%E7%FE%60%A8u%9Dh%9E%22%E9%A1l%5B%A9%92%2B%CF%04L%D1%F8i%E7%7C%B8%F7%A2%81p%C0%FA%9D%02%C8%40k8D%19E%C9%24%8A%C9%D4%C1%8EQ%A9%89%DA4%3DAYm%90%2B%F4%5E%A1a%E4%89%DC%05%7D5i%F1%98%9C%3A%83%E3K%B6%CF%BE%89%2B%F3tn%7Cpx.lD%1Fo%17~3%87%88%23%83%8B%8C%8Dz%1B%8A%15%93%94%95%19%97%0F~%7F4%87%96%91%98%859%A2%9C%A4%9E%A6%A7%9B%17%9D%0D%99%3C%A8%AF%AA%B1%AC%B3%B4%2F%B6%0B%9F%40%0B%BA%10%B0%0A%B2%40%8E%B5*%92%B8%C6%AE%C2%24%18%C5%BF%04%C1%0F%25%CAa.%00%DA%00%18%D4(%D1!%DB%DB%DD%812%CB%20%E2%E9%17%CD%2C%E7%1A%E9%F0%E4U8%D8%22%F0%F7%19%F39Q%26%F7%F8%D2%D2%FC%FD%03%D8C%E0%40%828%0C%C6C%C8C%A1%3A%86%09%1D%8E%83HC%E2D%8A3%2Cj%C3X%D1%14%22%C7%88%0A%3F%E6%08)r%A4%C0%92%05%17%A2L%B9%D1D%02%00!%F9%04%05%05%00%04%00%2C%3C%00%02%00B%00B%00%00%03%FEH4%3C%FA0%CAI%AB%9D%AD%DD%CD%7B%CD%99'%8E%16%A8%91hj2i%3B%AE%8E%2Bo%F0l%7F%EB%ADG%B5%2B%FC%82%DD%A3%97%02%02%85%8B%5C%D1x%DC%11I%CC%A6%EE)%8AJo%D4%8E%F5j%CBr%B6A%A1%F7%02F%26M%D0%ADy%5C)%AF%95Z7%92%3D%91%CF%E1%1Bp%F8%8D%8E%5B%CDCx%16v%7C%20~Q%80%81%7Ddj%89%0At%0Az%8E%8F%82u%8D%93%90%92%93%94!%8C%7F%9B%8A1%83%97.%01%A6%01%3B%84(%A7%A7%3A%A4%AB%AC%AC7%AF%22%B1%B6%AEL)%B6%BB%A9%5C%1E%BB%BC%A0%1B%C0%C1%C2%15%C4%C5%C6%12%C8%B7%CA%14%CC%B1%CE%13%D0%B2%D2%11%D4%AD%D6%D7%D8%A8%DA%10%DC%DE%CB%D0%E1%D3%C8%E4%CF%C4%E7%C7%CD%EA%EB%A6%ED%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FA%00%FD%FE%FF%00%03%024%26%B0%A0%C1%7F%A0%0E*4%B8i%A1%C3%81%93%1EJ%04%D0p%A2%C3%84%16%0F%12%CC(%03PA%02%00!%F9%04%05%05%00%04%00%2CN%00%0A%000%00W%00%00%03%ECH%BA%BC%F3%A3%C9I%2B%85%D0%EA%7Dq%E6%E0%E6%7Da)%8D%A4%A9%A2%A9Z%B2%91%BB%B2%B2%0B%D7%E6%8D%87p%BCs%BA%9F((%B4%10%8B%1D%14r%A8%5CV%8ENF%2F%9A%1CQ'%D3k%03z%E5%AA%04%60%81%91%B6%0B%87%9F%CD%9Ay%5D%C5%A8%D7%EC%B6%CF%04%AF%8F%1F%B2%BA%9D%AA%DF%3B%FB~H%80p%7C%83fQ%86%87%7F%89%60%85%8C%8E%86Z%89Z%0A%83%94%0B%80%97%0C%81%9A%95g%9D%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA*%01%AD%AE%AF%B0%B1%B05%B2%B5%B6%AF.%B7%BA%B6%AC%BB%BE%B8%26%BF%C2%01%BD%C3%BB%B9%C6%B7%B4%C9%B2%AB%CE%CF%D0%D1%D2%D3%D4%D52%00%D8%00%A5%D9%DC%A2%DC%DF%DA%9D%E0%DF%E2%E3%E4%94%E6%E3%E8%E9%E0Z%EC%ED%EE%EF%DD%F1%F2%D8%F4%F5%EB%F5%E1W%FA%FB%FC%F8%F9%D8%95K%17%8A%A0%B7s%A3%E6QH%00%00!%F9%04%05%05%00%04%00%2CN%00%1F%000%00W%00%00%03%E9H%BA%DC%FEn%C8%01%AB%BDmN%CC%3B%D1%A0'F%608%8Eez%8A%A9%BAb%AD%FBV%B1%3C%93%B5v%D3%B9%BE%E3%3D%CA%2F%13%94%0C%81%BD%231%A8D%B6%9A%8F%1C%14R%9B%F2L%D6%AB0%CB%EDz%BF%E0%B0xL.%9B%CF%5C%81z%CDn%BB%DB%B3%B7%7C%CE%5E%D1%EF%F3%13~%0F%1F%F1%FF%02z%80%7Bv%83tq%86oh%8B%8C%8D%8E%8F%90%91%92%93%0A%01%96%01f%97%9Ac%9A%9D%98%60%9E%9D%A0%A1%A2%5D%A4%A1%A6%A7%9E%5C%AA%AB%AC%AD%9B%AF%B0%96%B2%B3%A9%B3%9FY%B8%B9%10%00%BE%00%2F%B8%15%BF%BF%C1%B0%BD%C4%C5%C6%A7%C8%C9%C07%CC%0F%CE%CA%D0%A5%D2%D3%CF%3B%B1%C3%D8b%D8%BE%DE%DDa%DF%D9_%DFc%E7%E3%E2%EA%D3%E1%EB%E6%EF%5E%E4%EE%CE%E8%F1%5D%E9%EC%F5%FA%FB%60%F9%FE%ED%E8%11%23%D3%CF%1E%B8)%09%00%00!%F9%04%05%05%00%04%00%2C%3C%00%3C%00B%00B%00%00%03%F9H%BA%DC%FEP%8DI%AB%BD6%EA%1D%B1%FF%15'r%60%F9%8D%E8c%AEY%EAJl%FC%BE%B1%3C%BB%B5y%CF%F9%B9%FF%C0%A0pH%2C%1A%8F%C8%A4r%C9l%3A%9F%D0%A8tJ%10X%05%D4%D7u%9B%1Dm%BF%D8%AE%06%FC%15G%C8%60%B3%03MV3%D8mw%15%5E%96%CF%E9W%FB%1D%1Fv%F3%F3v%7FVz%82F%01%87%017%7FD%88%88%8AxC%8D%8D%3Bt%91%92%87%40l%96%97%89%99u%11%00%A1%00%1C%9C%98A%5C%1A%A2%A2%A4%A5O%AA%AA%1B%A5%A6L%AF%AB%B1%ADM%B5%A1%AC%B8K%BA%A3%BC%97%B9%BA%23%B2%B4%C4%22%C6%BE%C8%C9%BDH%BF(%B2%9D%CF%CC%CD%9CJ%D0%D1%CAG%D9%DA%D7%D4%B5%2F%DBE%DD%DE%C2%DC%D5%E6%92%E8%E1%E2%E3B%E5)%EFA%F1%F2%DFD%F5%EA%8E%E4%E9.%E7%FC%EDvLb%F7J%8F%83%7Cv%10%CAQ%E8%86%A1%1A%87%0F%0B%1A%7C%00kb%83%04%00!%F9%04%05%05%00%04%00%2C%1F%00N%00W%000%00%00%03%FFH%BA%DC%FE0%CA7%EA%988%EB%CD%89%FD%5D(%8E%CDg%5Ed%AAJ%A7%B9%BE%B0%D7%BAq%1D%CE%AD%ADkx%BE%FF%90%DE%09Ht%08i%C5%E4%11%94%2C.-M%E5%13%15%05N5%80%2C%E0'%E8%0AFO%8CV%AB%F3z%C1%C7%C9x%5C3%9BIB%F5%3A%DBvwU8%C9%9C%1C%B3%9F%F1H%10%7Bt%13%01%86%01%18~w%2BL%11%83%5B%85%87%86%89%8AQ%8F%90%11%92%92%13%8A%8BE%8F%18%9A%87%94~I%97%A1%A2%88%9C%9D%9F%83%19%A9%AA%AB%A5%40%A0%AF%A9%1A%AC%3F%B5%A8%A2%B8%95%3B%BB%BC%9A%1B%B95%A7%1A%B0%C4%C50%C1%C2%9B%CA%B3%CC%CD%91%BD%D0%D1%2B%D3%D4%C3%1C%CB)%D9%DA%CF%DC%BF*%DF%12%C9%1D%DD%22%E5%E6%B7!%E9%1C%C7%1D%E7%E8%EFX%AE%22%F3%F4%D7%1D%F7%F8%ED%22%E3B%F4%0B%91O%9F%1BokR%144%E8%89%04%1B%85%FFF%BC%A9%E2l%14%C5(%0B%2F%FE%C8%A8Q%13%07%C7%8E5%3E%82%84!r%E4%8Bj%26%89%84K%A9%20%01%00!%F9%04%05%05%00%04%00%2C%0A%00N%00W%000%00%00%03%FFH%BA%DC%0E%10%B8I%AB%BD8%B7%C8%B5%FF%E0%C7%8DRh%9E!9%A2lK%A9%A4%2B%B7%B0%3A%DF%60m%E3%3C%A6%C7%BD%E0%E4%B7%12%1A%17%C4%CEq%99%8C%2C%8FM%C8%13%DA%9CR%89%A7%806%20%1Cx%07%99dv%AB%ED%7D%BF%3E%1D%8AL%C6%9D%CF%97Z%8B%BDu%BF%BDi%25%8B%5E%BF%DD%D1qN.%7Ce%17%02%87%02%18%7FxV%04%84%5C%86%88%87%8A%8BV%8F%90%15%92%92%17%8B%8CK%8F%18%9A%88%94%7FO%97%A1%A2%89%9C%9D%9F%84%19%A9%AA%AB%A5F%A0%AF%A9%1A%ACB%B5%A8%A2%B8%95A%BB%BC%9A%1E%B98%A7%1A%B0%C4%C53%C1%C2%9B%CA%B3%CC%CD%91%BD%D0%D1%83%AE%1F%C9%1F%CB%7B%D9%DA%B7%20%DDc%7C!%DB%DC%BF%DE%E5%E6%E1%E2%E9%26%C7%20%E7%E8%EF%20%D3%C8%ED%EE%D7%F6%EB%26%F3%FAo%D6%F4cW%CDD%3D~mP%FC%03%E8I%60!%85%F9%0C%02jDm%18E%2B%0B%2F%0A%C9%A8%B1%12%07%C7%8E8%3E%82%9C!r%A4%8C%82%26%8D%3C%E3%91%00%00!%F9%04%05%05%00%04%00%2C%02%00%3C%00B%00B%00%00%03%F5H%04%DC%FE%F0%A9I%AB%BD%98%C6%CD%5D%FE%E0%D5%8D%5Ch%82d*%9D%AC%A5%BE%40%2BO%B0%3A%DF%F5x%EF%F9%B6%FF%C0%A0pH%2C%1A%8F%C8%A4r%C9l%3A%9F%D0%A8tJ%3D%05%AE%81%AA%0C%CB%D5%9A%B8%E0%AC7%13%06%8F%2F%E5%F0%99%92.%AF%09m%F7%3A%AE%3E%D3%CD%F6%3B%F6%AD%DF%E7%FB%7C%80%81w%3B%02%86%02Fz%85%87%86Et%3F%8C%8CDmA%91%87%8Ex%40%96%97%98WC%9B%8D%20%03%A3%03R%A0%88%A2%A4%A3P%A7%A8%19%AA%AAO%A7!%B0%A4N%AD%B4%B5%A5M%B3%B9%B5%BC%A0'%BA%BBK%BD%BE%B0L%C6%C7%B1J%B8%C2%BA%C5%C1%2C%C3%CD%CA%CB%B6I%D6%D7%ABH%DA%DB%C4F%DE%A9%BFG%E2%E3%C8%E1%E6%1F%D4%E9%9B%3B%ECE%D27%F0D%F23%F4%F5%91%40%F8%F9%A1%3F%FCo%26%00%0CH%60%60%40%83o%10%AEQx%86aCt%0410K%00%00!%F9%04%05%05%00%04%00%2C%02%00%1F%000%00W%00%00%03%E7H%BA%0C%0E%2C%CAIk%7B%CE%EAM%B1%E7%E0%E6%8Da)%8D%A8%A9%A2%A9Z%B2%AD%CB%C1%B1%AC%D1%A4%7D%E3%98.%F2%0F%DF%0E%08%11v%88E%E3%04%A9%AC%00%9B%16%1C4%0A%9B%0E%7B%D6_%26%CB%EDz%BF%E0%B0xL.%9B%CF%A1%80z%CDn%BB%DB%B6%B7%7C%CEv%D1%EFs%15~%0F7%F1%FF%01z%80%7Bv%83tq%86oh%8B%8C%8D%8E%8F%90%91%92%93h%02%96%02f%97%9Ac%9A%9D%98%60%9E%9D_%A1%9E%5D%A4%A1Y%A7%A8V%AA%A5S%AD%A2%AF%B0%97%A9%B3%96%AC%B6%9F%B2%B3%5C%B62%03%C0%03%16%BC.%C1%C1%15%AD6%C6%C6%14%A7%3E%CB%C7%CD%B1%3A%D0%D1%D2%B7B%D5%C0b%DA%C2a%DD%DE%60%DD%DC%E3%DF%DA%E4%D5c%E5%E2%E7%E6%ED%EC%E9%EE%F1%F0%D0%E8%F5%F6%CB%F8%CC%F2%F7%F4%F9%FA%DB%D4%CD%D3wf%9F%86%04%00!%F9%04%09%05%00%04%00%2C%02%00%02%00%7C%00%7C%00%00%03%FFH%BA%DC%FE0%CAI%AB%BD8%EB%CD%BB%FF%60(%8Edi%9Eh%AA%AEl%EB%BEp%2C%CFt%0A%DC%40%AD%938%BE%FF%9E%5E%0FH%CC%08%7D%C5%24%E5%88T%3A%1D%CC%E6sJ%88%E6%A8X%2B%96%AA%DDN%BB%5E%A5%F5%1AN%82%CB%C41%DA%1C%5D%B3%99%EEt%3B%0E%3C%D3i%EA%BB%CE%AE%8F%E5%FB3%7C%80%12%01%85%01!%82%83%0E%86%86%20%89%8A%0B%8C%92%1Fs%90%10%92%98%1D%95%96%8B%98%99%1BG%9C%11%9E%9E%1CC%A2%A3%A4%9F%A8%26%AA%A5%AC%AD%AE%93%B0%24%B2%B3%B4%23%B6%8C%B8%B5%BA%85%BC%22%BE%BF%C0!%C2%C4%C1%B6%C7%B9%AE%CA%CB%A4%CD%BD%B7%D0%CE%87%D3%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF%E0%E1%C0%02%E4%E5%E6%E7%E8%E7%DC%E9%EC%ED%E6%DA%EE%F1%ED%D9%F2%F5%EA%D8%F6%F9%02%F4%FA%F5%F0%FD%EE%D6%01L'%AE%A0%C1%83%08%13*%5C%C8%B0%A1%C3%87h%06H%1C%00q%C1%C4%8B%10%2Fj%A4%D8pP%A3F%86%1E7*%0C%E9%11!%C9%92%07O%8A4%A8%F2%23%CB%96%13M%C2%94%98r%26%C7%970%13%CE%5C%98%93%E7I%87%24%2B%AE%ACH%00%23%D1%A3H%93*%5D%CA%B4%A9%D3%A7P%A3J%9DJ%B5%AA%D5%ABX%B3j%DD%CA%B5%AB%D7%AF%60%C3%16I%00%00%3B" alt="" />
 <p></p> 
 <p id="greasedLightboxLoadingText">Loading image</p> 
 <p id="greasedLightboxLoadingHelp">Click anywhere to cancel</p> 
</div> 
<div id="greasedLightboxError"> 
 <p id="greasedLightboxErrorMessage">Image unavailable</p> 
 <p id="greasedLightboxErrorContext"> </p>
</div> 
<p><img id="greasedLightboxPreload" alt="" src="https://justinyan.eth.limo/157E827D-A66C-482F-B035-B58A3728028A/" /><img id="greasedLightboxPrefetch" alt="" src="https://justinyan.eth.limo/157E827D-A66C-482F-B035-B58A3728028A/" /></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x591C;&#x8BFB; #1 &#x63A8;&#x8350;&#x4E66;&#x76EE;</title>
        <link>https://justinyan.eth.limo/862FBA08-EBC1-4A8C-AB65-3AA7E59653E9/</link>
        <guid>https://justinyan.eth.limo/862FBA08-EBC1-4A8C-AB65-3AA7E59653E9/</guid>
        <pubDate>Fri, 17 Dec 2010 16:49:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><em>2022-08-20 原《每周读书》系列更名为<a href="/post/tag/%E6%AF%8F%E5%91%A8%E8%AF%BB%E4%B9%A6">《枫影夜读》</a></em></p> 
<p>上一周我在twitter上说了以后每周都要推荐一本好书，题[每周推荐]。后来有童鞋说让我写书评可能更靠谱，遂改为[每周读书]。 但是可惜的是，[每周读书]的第一周就要天窗了，由于我们学校残酷的考试加上严重压缩的复习时间，枫影本周看的书不过寥寥数页，更遑论写下书评。 于是今天枫影只能再以推荐书目的形式来代替本周的书评。本周推荐书依然是枫影自己读过的书，自认为质量都是不错的，其中有技术类亦有文学类的。</p> 
<p>书目：</p> 
<p><strong>1、《超越CSS》</strong> 技术类</p> 
<p style="text-align: center;"><a href="http://www.windyshade.com/wp-content/uploads/2010/12/chaoyue-CSS.jpg"><img decoding="async" loading="lazy" class="aligncenter" title="chaoyue-CSS" src="http://www.windyshade.com/wp-content/uploads/2010/12/chaoyue-CSS.jpg" alt="" width="300" height="300" /></a></p> 
<p>如果你听过或者看过《禅意花园》这本书，那么你绝对不能错过这一本《超越CSS》。作者是同一个人。 整本书采用全彩印刷，大量的全景图片和示例图片，使得这本书本身就极具收藏价值。 目前CSS已经成为全球WEB的通用设计语言，我绝对不单是前端设计师需要深入了解CSS，视觉设计师也很需要了解CSS。 而这本书正是以设计师的角度来谈CSS的。我个人并不清楚前端和视觉是否真的被严格分割成两个岗位，但是我自己一直是设计和前端一起写的代码，所以我认为其实CSS和JS和设计本身就是设计师的责任。这本书，正是给那些能画出华丽映像，作出极佳设计但是又写不了代码的设计师看的。 这是一本好书。</p> 
<p><strong>2、《苏菲的世界》</strong> 哲学类 小说</p> 
<p style="text-align: center;"><img decoding="async" loading="lazy" class="aligncenter" title="106589s" src="https://justinyan.eth.limo/862FBA08-EBC1-4A8C-AB65-3AA7E59653E9/../wp-content/uploads/2010/12/106589s-207x300.jpg" alt="" width="207" height="300" /></p> 
<p>这本书在西方世界是曾经的畅销书，算是一本哲学的入门读物。 该书以小说的形式进行写作，主人公是小女孩苏菲。老实说这本书作为一部小说来讲，是很失败的，情节不够跌宕，故事也不够吸引。但是它却作为一本哲学读物在欧洲风靡一时。 从“我是谁？”“我从哪儿来？”这些基本的哲学知识一直到古代的哲学家的故事，这本书以相对概括的形式像读者阐述。 个人觉得读中文版的会比较枯燥难读，最好是选择英文版的，但是专业词汇比较多，我个人是没有读完英文版的状态。</p> 
<p><strong> 3、《浮生六记》</strong> 文学类 散文</p> 
<p style="text-align: center;"><a href="http://www.windyshade.com/wp-content/uploads/2010/12/1236782088686.jpg"><img decoding="async" loading="lazy" class="aligncenter" title="1236782088686" src="http://www.windyshade.com/wp-content/uploads/2010/12/1236782088686-191x300.jpg" alt="" width="191" height="300" /></a></p> 
<p>读过初中语文的童鞋应该都背过沈复的《童趣》，其实《浮生六记》里面我个人觉得最精彩的应该是《坎坷记愁》，当年阅之不由为作者一生之坎坷落泪。 选择读这本书是因为年代较近，属于清代的自传散文，相对比较接近白话，更容易读。虽然说容易，但是最好是具备有初中古文水平的童鞋读起来会比较流畅。 读完这本书，我认为最大的收获应该是在古文阅读能力的提升，因为我个人是在初中的时候读完的，当时并未有能力分析其文学成就。 推荐希望提升自己古文阅读水平的童鞋阅读这本书，其中《坎坷记愁》一记很精彩。</p> 
<p><strong>4、《画梦录》</strong> 文学类 散文</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/12/1463951353873651988.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-687" title="1463951353873651988" src="http://www.windyshade.com/wp-content/uploads/2010/12/1463951353873651988-197x300.jpg" alt="" width="197" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/12/1463951353873651988-197x300.jpg 197w, https://cdn.justinbot.com/wp-content/uploads/2010/12/1463951353873651988.jpg 364w" sizes="(max-width: 197px) 100vw, 197px" /></a></p> 
<p>这是初中的时候老师推荐给我的一本书，何其芳所著。直到今天我仍然时时要翻翻这几篇文章，感受其中语言运用的极致美感。 老实说，何其芳早期所写的这本书，或者说这些诗化了的散文，总体而言并不具有深刻挖掘的价值。但是，其对语言的极致运用使得这本书成为一块华丽的瑰宝。 优美，凝练，流畅，何其芳这样的语言对我早期的写作有极为深刻的影响以致有一段时间我不断模仿追求其语言手法，但始终到达不到其高度。 语言虽然仅仅是形式，而文章的重点更在内容，但是形式亦是内容的表现，二者相互交融相互影响，缺一不可。 何其芳的这本集子，绝对是提高语言驾驭能力的极佳典范，至少在我而言，是一本永远学不完的宝典。</p> 
<p>本来想凑多几本的，但是一时想不出来了，等考完试就会有更多时间可以看书了。完。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x63A8;&#x8350;10&#x672C;&#x67AB;&#x5F71;&#x8BFB;&#x8FC7;&#x7684;&#x597D;&#x4E66;</title>
        <link>https://justinyan.eth.limo/9E999FB4-FB09-43E9-939B-E33A892BA175/</link>
        <guid>https://justinyan.eth.limo/9E999FB4-FB09-43E9-939B-E33A892BA175/</guid>
        <pubDate>Thu, 09 Dec 2010 16:18:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>很久前就想写篇博文来推荐一下几本好书了，但是各种原因一直木有发出来。<br /> 昨晚突想要参加 @wangshiqi 童鞋的ARTWIEW聊天活动，需要先整理一下聊天内容，于是乎顺手整理了一篇推荐书目出来。<br /> 这些书都是枫影个人读过而且深觉是好书的，不过每个人的感觉都会不同，所以并不是对每个人来说都是好书，给大家做做参考吧。</p> 
<p><strong>1、《带一本书去巴黎》</strong><a href="http://www.windyshade.com/wp-content/uploads/2010/12/003.jpg"></a></p> 
<p style="text-align: center;"><a href="http://www.windyshade.com/wp-content/uploads/2010/12/003.jpg"><br /> </a> <a href="http://www.windyshade.com/wp-content/uploads/2010/12/002.jpg"><br /> </a> <a href="http://www.windyshade.com/wp-content/uploads/2010/12/001.jpg"><img decoding="async" loading="lazy" class="size-medium wp-image-664 aligncenter" title="001" src="http://www.windyshade.com/wp-content/uploads/2010/12/001-201x300.jpg" alt="" width="201" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/12/001-201x300.jpg 201w, https://cdn.justinbot.com/wp-content/uploads/2010/12/001.jpg 430w" sizes="(max-width: 201px) 100vw, 201px" /></a></p> 
<p>这本书是从 @闾丘露薇 在一五一十头条部落里面分享的书单里面看到的，排在第一条。<br /> 这是一本游记散文，但是又不仅止于游记。作者是“林达”夫妇，林达是夫妇二人的共同笔名。夫妇二人对于文学、历史、宪政都颇有造诣，甚至书中他们的摄影和绘画作品也都颇具观赏性。<br /> 这本书是夫妇二人去巴黎旅行时写下的文集，虽说是旅行游记，但是书中写得更多的却是法国大革命时期的历史。尤其是中世纪末期巴黎爆发一系列激进革命的那段。<br /> 文字凝练而不失优雅，是一本难得的好书。</p> 
<p><strong>2、《一九八四》</strong></p> 
<p style="text-align: center;"><a href="../wp-content/uploads/2010/12/002.jpg"><img decoding="async" loading="lazy" class="aligncenter" title="002" src="https://justinyan.eth.limo/9E999FB4-FB09-43E9-939B-E33A892BA175/../wp-content/uploads/2010/12/002-200x300.jpg" alt="" width="200" height="300" /></a></p> 
<p>这是一部经典的小说。
 <!--more--><br /> 作者是乔治 奥威尔。本书写于1940年代。也就是说，1984对于作者来说是未来。<br /> 每次我对我的朋友说出上面这句话时他们都会顺便回应一个不知是轻蔑还是恍然大悟的笑。总之，这本书是写未来，但是必须指出的是，这个未来是我们的过去，同时，也是切切实实的现实。<br /> 书里是对于英社与当时人们所认为的社会主义的未来的推测，可以毫无夸张的说，我们今天的社会，全给乔治说中了。看着书中所描述的世界一点点跟我们的现实世界相对应的时候，我一次次地发出惊叹。所以，我推荐这本书。<br /> 而乔治还有另一本书也很受欢迎，《动物庄园》，很薄一本书，估计两个小时就能看完，但是枫影只看了前面一章，所以不好做评论，这里提一下便是。</p> 
<p><strong>3、《七十年代》</strong></p> 
<p><strong><br /> </strong></p> 
<p style="text-align: center;"><a href="../wp-content/uploads/2010/12/003.jpg"><img decoding="async" loading="lazy" class="aligncenter" title="003" src="https://justinyan.eth.limo/9E999FB4-FB09-43E9-939B-E33A892BA175/../wp-content/uploads/2010/12/003-300x225.jpg" alt="" width="300" height="225" /></a></p> 
<p>由于种种特殊的原因，我们这代人甚至许多那个时代的人，对于七十年代所发生的事情，都选择性地失忆了。<br /> 今天我们已经很难能去仔细地了解那段历史，这本书，正是经历过那个年代的人所写的散文集。其中比较出名的作者包括了北岛、阿城、韩少功等等。<br /> 应该说，书里面许多的文章反映出来的观点，或者他们笔下阐述的“事实”，你可以不同意也可以不相信，但是，正是由于这本书集结了许许多多不同视角，才使得70年代这样一个特殊的年代，完整地，立体地展现在我们眼前。我推荐这本书，虽然书很厚，我并没有全部读完。但是读了大部分的内容，对那个年代所发生的种种，不由大为感慨。</p> 
<p><strong>4、《我们台湾这些年》</strong></p> 
<p><strong><br /> </strong></p> 
<p style="text-align: center;"><a href="../wp-content/uploads/2010/12/004.jpg"><img decoding="async" loading="lazy" class="aligncenter" title="004" src="https://justinyan.eth.limo/9E999FB4-FB09-43E9-939B-E33A892BA175/../wp-content/uploads/2010/12/004-202x300.jpg" alt="" width="202" height="300" /></a></p> 
<p>如果我没记错，这本书应该是去年年末到今年年初都比较流行的一本书，因为我买书的时间在四月那时已经不算很流行了，而出书的时间是去年九月。<br /> 这本书的作者是一个在大陆工作的台湾人。书里面用平实的语言，生活的视角讲述了一个真实的台湾的历史。<br /> 首先最让我惊叹的，依然是两岸极高的相似性。可以说，我们今天的大陆就是台湾民主化以前的翻版，许许多多的社会问题包括言论的封锁都与台湾如出一辙，不由感慨两岸果然都是纯正的中国人呐。<br /> 不过本书并不是以政治内容为主，只是以个人回忆的形式，平民的视角去阐述台湾几十年来发生的一些事情，从作者小时候一直写到现在。</p> 
<p><strong>5、《万历十五年》</strong></p> 
<p><strong><br /> </strong></p> 
<p style="text-align: center;"><a href="../wp-content/uploads/2010/12/005.jpg"><img decoding="async" loading="lazy" class="aligncenter" title="005" src="https://justinyan.eth.limo/9E999FB4-FB09-43E9-939B-E33A892BA175/../wp-content/uploads/2010/12/005.jpg" alt="" width="200" height="280" /></a></p> 
<p>这是多年前人家推荐我看的一本书，我大约是在高中的时候看完的，电子版，后来又买了纸书作收藏。<br /> 作者黄仁宇是一位历史学家，其《中国大历史》一书以独特的宏观历史去书写中国几千年的历史，我也看了，可以说收获颇丰，不过历史细节不在该书的考虑范围，所以想要了解细节还得看看别的书。<br /> 说回《万历十五年》。王历是明朝一位皇帝的年号，十五年就是王历第十五年这样一个特殊的年份。作者选取了这样一个特殊的年份来考察这一年的事情对于整个明朝历史发展的影响，是一种挺特殊的视角。书里分了几个主要的人物来写，围绕王历皇帝及十五年这样一个年份去展开，当然时间跨度会有但是不会特别大，是一本很有趣也很有益处的历史书，从书中收获的古代皇室历史细节颇丰。</p> 
<p><strong>6、《心术》</strong></p> 
<p><strong><a href="http://www.windyshade.com/wp-content/uploads/2010/12/006.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-669" title="006" src="http://www.windyshade.com/wp-content/uploads/2010/12/006-203x300.jpg" alt="" width="203" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/12/006-203x300.jpg 203w, https://cdn.justinbot.com/wp-content/uploads/2010/12/006.jpg 300w" sizes="(max-width: 203px) 100vw, 203px" /></a><br /> </strong></p> 
<p>作者是六六，电视剧《蜗居》的作者。<br /> 这本书是写医院里的故事，以日记体的形式来写。<br /> 应该说看了这本书我首先是感到惭愧，确实我个人对于医院的事情了解的不多，都是从国内媒体的报道已经身边朋友的描述来看待医院。而往往这些媒体这些人所叙述的内容，都是对医院的妖魔化。这点在我们国家并不陌生，比方说我们的媒体对于网络游戏的妖魔化以及对喜欢韩国音乐歌迷的妖魔化等等。我个人喜欢韩国音乐所以对跟韩国音乐有关的都比较清楚的了解，媒体或者我们的网络氛围确实是把这一群体妖魔化了，至于网络游戏，有神作《网瘾战争》在那儿，我就不用多言了。<br /> 总之这本书里面讲述了许多感人的故事或者不感人的故事，但是都是实实在在的医院的面貌，包括医生收不收红包的事情，医院挪不挪公款的事情，是不是把病人的病尽量报的严重的事情，是不是收药品回扣的事情，是不是硬要别人开刀收钱的事情。<br /> 从这本书我真正看到了何为“心术”，何为“仁术”，是一本描述事实的好书，是一本能让你理解现实引发思考的好书。同样的，书中的某些观点枫影个人并不同意，但是并不影响其为好书的定位。</p> 
<p><strong><br /> 7、《挪威的森林》</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/12/007.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-670" title="007" src="http://www.windyshade.com/wp-content/uploads/2010/12/007-204x300.jpg" alt="" width="204" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/12/007-204x300.jpg 204w, https://cdn.justinbot.com/wp-content/uploads/2010/12/007.jpg 300w" sizes="(max-width: 204px) 100vw, 204px" /></a></p> 
<p>读井上春树的书比较晚，这本名作还是不久前看到的。<br /> 不同的国家背景，会有不同的关注视角。日本无论是经济状况还是社会制度都已经发展到相对成熟的地步，所以他们的作家并不像我们国内一样把目光聚焦在政治改革上，反而更多的关注更为永恒或者底层的事物比方说对人性的讨论，对于生存和道德两难的讨论。<br /> 井上春树这一本书可谓是其经典之作，当然枫影看过他的书也不多，但是这本书算是让我了解了他的文风。首先文字很令人舒服，且不说翻译的问题，单指他描述事物的视角以及描写的事物，大量的性描写，奇诡的人物角色，第一人称的真实性，亦正亦邪的人性讨论，这些都使得读者不由得跟着他的思路去思考，去颠覆。<br /> 比方说主角与一女生在天台看别人家着火，女的抱个吉他在唱歌，这样是幸灾乐祸？<br /> 比方说主角后来与另一个女的，算是朋友关系吧，发生性关系，但是性行为是不是就一定是一件讳莫如深或者极为禁忌的大事？在井上的描写之下，这样的行为其实是一种交流。<br /> 这大约就是文化的不同，文化的交流碰撞所带来的思考吧。</p> 
<p><strong>8、《读库》</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/12/008.jpg"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-671" title="008" src="http://www.windyshade.com/wp-content/uploads/2010/12/008.jpg" alt="" width="102" height="145" /></a></p> 
<p>这本书其实我也忘记是怎么看到的，总之一次google的时候看到我的social networks result里面出现了 @Fenng 大神对于收到《读库》的感谢，当时我一阵疑惑，《读库》是什么东西？《读者》我是知道的。于是google之，到了《读库》的淘宝店，随后才慢慢明白到《读库》这一本书的神奇。<br /> 于是当时我就买下了《读库》系列的第一本书《读库0600》,是一本类似合集的书，里面有许许多多不同的作者写的不同的文章，但是我要说，前面的几篇文章确实是精品，尤其是关于音乐节那一篇的描写，令我甚为感慨。<br /> 《读库0600》卖40元，这在国内书籍普遍低价的情况下算是比较高的价格，但是绝对值这个价！<br /> 这个是读库淘宝专卖店，里面也有卖其他不错的收藏书籍，值得推荐，不过专卖店不打折，要买打折的可能得去卓越一类的看看：<br /> http://shop35372084.taobao.com/</p> 
<p><strong>9、《民主的细节》</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/12/009.jpg"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-672" title="009" src="http://www.windyshade.com/wp-content/uploads/2010/12/009.jpg" alt="" width="100" height="148" /></a></p> 
<p>这本书推荐得晚了，但是确实是一本极佳的好书。<br /> 作者是刘瑜，这本书收录的多数是她写给南方周末的专栏文章，所以质量很高。<br /> 该书试图以生活的角度，细节的角度来解释美国的民主，写的是作者在美国时候的事情。很应该一读，初看其title还以为是理论性文字的描写，但是一句也没有，任何一句话都是极容易理解的。而且这本书，让我了解了我们平时空泛地说出的“美国民主”这样一个词。<br /> 我想这本书又让我惭愧了，在看过这本书之前，美国、民主、自由，对于我来说只是一个朦胧的概念，我想对于很多人来说也是。这当然不能怪读者无知，是我们本来就没有学到这些也没有见过这些，更没有途径让我们知道这些。<br /> 现在好了，这本书，从细节讲起，以生活的视角让你看清楚何为民主何为美国，然后你再想想，你还是不是要泛泛地谈说我们要民主，要自由？</p> 
<p><strong>10、《目送》</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/12/010.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-673" title="010" src="http://www.windyshade.com/wp-content/uploads/2010/12/010-228x300.jpg" alt="" width="228" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/12/010-228x300.jpg 228w, https://cdn.justinbot.com/wp-content/uploads/2010/12/010.jpg 457w" sizes="(max-width: 228px) 100vw, 228px" /></a></p> 
<p>虽然本意不是要拿这本书凑成10本，但是这本书除了对亲情的感动的着笔极为细腻感人之外，枫影还没发现多大的亮点。但是从写作技巧上来看，这本书是很值得学习的一本，或者对于并不想过多思考的读者来说，情感的流动或许是一种不错的体验，这本书是为其中佳作。当然，别拿QQ空间那些煽情的毫无营养的东西跟这本书做比，完全不是一个层次的。</p>
        ]]></description>
    </item>
    
    <item>
        <title>VIM&#x7684;&#x5404;&#x79CD;&#x914D;&#x7F6E;&#xFF0C;&#x8BA9;&#x5B83;&#x53D8;&#x5F97;&#x66F4;&#x597D;&#x4F7F;</title>
        <link>https://justinyan.eth.limo/920EED09-7971-42E7-9FDD-4CAF805D4AFC/</link>
        <guid>https://justinyan.eth.limo/920EED09-7971-42E7-9FDD-4CAF805D4AFC/</guid>
        <pubDate>Thu, 09 Dec 2010 13:54:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>虽然软件维持默认配置也是不错的一种做法，不过vim的话如果不配置自动对齐什么的，默认还是会有一点麻烦，至少我就不习惯一个tab要8个空格的。下面是我的配置文件，都是我看了网上几个技术博之后汇总了写的，还是有一些漏的，比方说没有根据文件名判断是否需要设置行号以及针对各种语言的语法提示之类的。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/12/Screenshot1.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-661" title="Screenshot" src="http://www.windyshade.com/wp-content/uploads/2010/12/Screenshot1-300x187.png" alt="" width="300" height="187" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/12/Screenshot1-300x187.png 300w, https://cdn.justinbot.com/wp-content/uploads/2010/12/Screenshot1-1024x640.png 1024w, https://cdn.justinbot.com/wp-content/uploads/2010/12/Screenshot1.png 1280w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p>配置文件路径：~/.vimrc</p> 
<blockquote>
 <p>"去除一致性<br /> set nocompatible<br /> "显示行号<br /> set nu<br /> "检测文件类型<br /> filetype on<br /> "记录历史的行数<br /> set history=1000<br /> "自动对齐<br /> set autoindent<br /> "只能选择对齐方式<br /> set smartindent<br /> "设置tab为四个空格<br /> set tabstop=2<br /> "设置行间交错为4个空格<br /> set shiftwidth=2<br /> "关闭报错响声<br /> "set vt_vb=<br /> "设置搜索匹配高亮<br /> set hls<br /> "快速查找，一边匹配一边显示结果<br /> set incsearch<br /> "搜索不分大小写<br /> set confirm<br /> "不要用空格代替制表符<br /> set ignorecase<br /> "处理未保存或者只读文件时弹出确认<br /> set noexpandtab<br /> "在行和段起始时使用制表符<br /> set smarttab<br /> "禁止生成临时文件<br /> set nobackup<br /> set noswapfile<br /> "行内替换<br /> set gdefault<br /> "设置编码<br /> set enc=utf-8<br /> set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936<br /> "语言设置<br /> set langmenu=zh_CN.UTF-8<br /> set helplang=cn<br /> "载入文件类型插件<br /> filetype plugin on<br /> "为特定文件类型载入相关缩进文件<br /> filetype indent on<br /> "保存全局变量<br /> set viminfo+=!<br /> "带有如下符号的单词不要被换行分割<br /> set iskeyword+=_,$,@,%,#,-<br /> "允许backspace和光标键跨越行界<br /> set whichwrap+=&lt;,&gt;,h,l<br /> "通过使用:command命令来查看改变过哪一行<br /> set report=0<br /> "光标与顶部底部保持3行间距<br /> set scrolloff=3<br /> "F5编译运行C，F6编译运行C++<br /> map &lt;F5&gt; :call CompileRunGcc()&lt;CR&gt;<br /> func! CompileRunGcc()<br /> exec "w"<br /> exec "!gcc % -o %&lt;"<br /> exec "!./%&lt;"<br /> endfunc</p> 
 <p>map &lt;F6&gt; :call CompileRunGpp()&lt;CR&gt;<br /> func! CompileRunGpp()<br /> exec "w"<br /> exec "!g++ % -o %&lt;"<br /> exec "!./%&lt;"<br /> endfunc<br /> "设置最多能打开的标签页<br /> "set tabpagemax=<br /> "设置保存快捷键<br /> map &lt;C-s&gt;:w &lt;CR&gt;</p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x5C0F;&#x8BD7;&#x4E09;&#x5219;</title>
        <link>https://justinyan.eth.limo/173A690D-A5CA-4F80-A9FD-6AFCB8880A05/</link>
        <guid>https://justinyan.eth.limo/173A690D-A5CA-4F80-A9FD-6AFCB8880A05/</guid>
        <pubDate>Sun, 05 Dec 2010 18:48:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>是夜<br /> 101205/下午</p> 
<p>灯火在窗前诡异地窥探<br /> 忧伤蜷在昏暗的一角<br /> 夜是记忆的船舱<br /> 风浪中动荡<br /> 唇边的拿铁没有烟<br /> 眼镜一框就是整个世界<br /> 劬劳的影子里有人<br /> 你的嘴角一丝嘲笑<br /> 灯火入残月般苍老</p> 
<p>------------------------------------------------</p> 
<p>回望<br /> 101205/戏侮<br /> 假使有光<br /> 和唱诗洋溢着幸福<br /> 新人脸上的笑<br /> 雨从教堂顶上滴落<br /> 你回过身<br /> 镜头却已忘记捕捉<br /> 潮湿的街道几声窸窣</p> 
<p>眼神里的落寞<br /> 大约便是回忆的角落<br /> 又来到这里<br /> 只是跫音不再踱过<br /> 老墙依旧斑驳</p> 
<p>--------------------------------------</p> 
<p>又是夜<br /> 101205/下午<br /> 月痕疏窗<br /> 指尖的犹豫<br /> 如流萤的羁绊</p> 
<p>与夜一同变凉的<br /> 还有杯缘的青烟<br /> 抽屉里的淡墨片言</p> 
<p>现在夜安静了<br /> 另一个故事在上演<br /> 每一声跫音<br /> 都像极一次流浪<br /> 夤夜在灯下轻轻摇晃</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x63A8;&#x8350;&#x4E00;&#x4E9B;iphone/ipod touch&#x4E0A;&#x7684;&#x5E38;&#x7528;&#x8F6F;&#x4EF6;(iOS4)</title>
        <link>https://justinyan.eth.limo/7B487CB1-A807-43CC-9139-A245D8AA3C99/</link>
        <guid>https://justinyan.eth.limo/7B487CB1-A807-43CC-9139-A245D8AA3C99/</guid>
        <pubDate>Wed, 01 Dec 2010 13:35:08 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>12月第一天。<br /> iOS不久前已经升级到4.2,我却没那个心思去升级。iOS过于频繁的更新令我生厌呀。<br /> 趁现在还有点时间，把我现在正在用的几个软件插件什么的写下来，分享一下好了。</p> 
<p><span style="color: #000080;"><strong>准备：</strong></span><br /> 以下是可能要用到的源，也是推荐的源：</p> 
<ul> 
 <li> 1.178源</li> 
 <li> http://apt.178.com</li> 
 <li> (似乎不能直接添加这个网址，请到178官网去看添加方法)</li> 
 <li> 2.WeiPhone源</li> 
 <li> http://app.weiphone.com/cydia</li> 
 <li> 3.GFWInterceptor源：</li> 
 <li> http://gfwinterceptor.googlecode.com/svn/trunk/cydia</li> 
 <li> 4.SINful iPhone Repo</li> 
 <li> http://www.sinfuliphonerepo.com</li> 
</ul> 
<p><strong>一、系统底层的软件：</strong><br /> 以下软件均可在Cydia上找到，机子需要越狱。</p> 
<p><strong>1.FolderEnhancer</strong>
 <!--more--><br /> 这是一款用来增强IOS4文件夹功能的软件。可以在文件夹中嵌套文件夹，可以在文件夹中翻页，每页增至16个APPS。</p> 
<p><strong>2.CyDelete</strong><br /> 用来方便卸载越狱后安装的软件，跟传统方式一样，按住apps图标一会，抖动后会出现X图标。</p> 
<p><strong>3.External iPod Controls</strong><br /> 用音量键来控制播放上一首/下一首。长按音量键则是调整音量，只在ipod开启时有效，锁屏使用很方便。毕竟音量调整用得比较少，上下一首用得比较多。</p> 
<p><strong>4.GFWInterceptor</strong><br /> @overboming 童鞋开放的iphone上的fan q1ang软件，当然是天朝网民必备的啦。</p> 
<p><strong>5.safari Download Manager</strong><br /> 可以在safari中下载任何格式的文件，很实用。</p> 
<p><strong>6.SwitcherMod</strong><br /> 原名为remove recent。<br /> IOS4双击HOME键之后会默认显示正在后台运行的APPS和最近使用的APPS，用了这个东西可以不显示最近使用的，或者透明化之，而且会自动在图标左上多个关闭按钮，就不用每次都去按多一下APPs图标了。</p> 
<p><strong>7.google map中国区地图校正</strong><br /> 天朝网民必备。</p> 
<p><strong>8.backgrounder</strong><br /> IOS4的后台并不是真正的后台，它只是支持一部分软件而已，用了这个东西就可以实现真正的后台。</p> 
<p><strong>9.Frash</strong><br /> 让你的safari支持播放flash。由comex开发，目前还不是很完善，但是可以支持视频网站的视频播放。</p> 
<p><strong>10.Gpower Pro</strong><br /> 关机增强版。按住关机键一会可以出现“关机”“重启”和“respring”三种方式</p> 
<p><strong>11.Insomnia Pro</strong><br /> 锁屏的时候网络不断，无须SBSettings，只要用这个软件就可以了。</p> 
<p><strong>12.Lock Rotation</strong><br /> 解锁锁屏方向。IOS4自带的锁屏只能锁一个正常的方向，用了这个东西就可以四个方向随便锁了。</p> 
<p><strong>13.MakeItMine</strong><br /> 修改左上角那个ipod或者运营商的名称</p> 
<p><strong>14.MultiIconMover</strong><br /> 一次移动多个图标，很实用。使用方法为：按住一个图标使图标摇摆，然后轻点要移动的图标出现红色的勾，然后换到要移动到的页面，按下HOME键就行了。</p> 
<p><strong>15.NoSpot</strong><br /> 禁用搜索页面。有的人不喜欢那个搜索的页面，用这个东西可以去掉。</p> 
<p><strong>16.Notified Pro</strong><br /> 通知管理。可以接收任何弹出的通知。以免一不小心按掉就看不到通知。</p> 
<p><strong>17.百度输入法、QQ输入法、FIT输入法。</strong><br /> 三种输入法各有好坏，目前觉得百度输入法比较好用。百度输入法键盘好使但是反应比较慢，QQ反应快但是键盘烂，WI语义分析好但是选择输入居然还是系统默认的。</p> 
<p><strong>18.单一IPOD图标</strong><br /> ipod touch上面音乐和视频是分开来俩图标的，其实没啥必要，用这个可以把视频和音乐合在一起，跟iPhone一样</p> 
<p><strong>二、常用软件推荐</strong></p> 
<p><strong><br /> 1.阅读类：</strong></p> 
<p style="padding-left: 30px;"> --Good reader<br /> 可以查看多种格式的文件，包括txt,doc,ppt,pdf等等，很强大</p> 
<p>--DocsToGo<br /> 可以创建编辑office文件</p> 
<p>--Reeder<br /> google reader 官方app</p> 
<p>--iBooks<br /> iOS4 only,当初就为了它而升级</p> 
<p>--Evernote<br /> 很强大的笔记软件，多平台win,linux,mac都可用</p> 
<p>--aNote<br /> 很强大的记事软件，强推。</p> 
<p>--ReadItLater<br /> 无须解释</p> 
<p style="padding-left: 30px;"><strong><br /> 2.social networks</strong></p> 
<p>--twitter官方app<br /> --爱飞信<br /> --foursqare<br /> --facebook<br /> --Tweetboard<br /> 滚动方式显示tweets，考验你的注意力<br /> --HootSuite<br /> 要用VPN，GFWI不能https则无力<br /> --kkTalk<br /> 支持gtalk<br /> --skpe<br /> --PingChat!<br /> <strong></strong></p> 
<p style="padding-left: 30px;"><strong>3.折腾类</strong><br /> --installous3<br /> 其实就是一安装盗版软件的东西，不太推荐用盗版软件，很多正版的都会有免费的时候，建议大家多留意一下。<br /> --AppFlow<br /> 本来是用来搜索APPS的软件，但是可以设置某APP的bage为0以清楚app的数字提醒。<br /> --iFile<br /> 强大的iphone/ipod touch文件管理器，强烈推荐。<br /> --iRemote<br /> 和你的电脑一起用可以用iphone/ipod touch控制你的电脑。wifi控制。<br /> --Air Video<br /> 和你的电脑一起用可以共享你的电脑里面的视频，支持边转换边播放，速度很快很流畅。wifi共享。<br /> --System<br /> 查看你的系统信息的工具。<br /> --Remote<br /> 用来控制你的电脑上的iTunes的播放。wifi控制。<br /> --OPlayer<br /> 可以支持播放多种格式的视频文件，不用转换格式就可以看，播放大文件会有点卡，但是新版本的已经好很多。<br /> --WordPress<br /> 在iphone/ipod上面给你的wordpress博客写文章。<br /> <strong>4.其他类</strong><br /> --卓越亚马逊客户端<br /> 买书用<br /> --iXpenselt<br /> 记账用<br /> --淘宝客户端<br /> --SleepUp!<br /> 催眠用，不过个人感觉似乎没什么效果。<br /> --Opera mini,UC浏览器，QQ浏览器<br /> 还是mobile safari好用，要是怕费流量就用opera mini，美国app store才有，不过首次使用要连接服务器验证，需要VPN。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x8FD9;&#x4E24;&#x5929;&#x73A9;ubuntu&#x7684;&#x51E0;&#x70B9;&#x7B14;&#x8BB0;</title>
        <link>https://justinyan.eth.limo/25BA4116-09B2-4315-9581-DEF895CC3019/</link>
        <guid>https://justinyan.eth.limo/25BA4116-09B2-4315-9581-DEF895CC3019/</guid>
        <pubDate>Tue, 09 Nov 2010 21:03:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>
 <!-- P { margin-bottom: 0.08in; }A:link {  } --></p> 
<p>这俩天又玩<span>ubuntu</span>玩得入迷了，昨晚玩到<span>4</span>点才睡，趁现在还记得这些<span>apps</span>的名字，整理一份笔记出来以备以后不时之需，也给初玩<span>ubuntu</span>的童鞋一点参考。另外，“永远的潮男”童鞋说现在玩3D桌面已经OUTL了，所以我就不介绍这OUT的东西了，截图里面的效果有些就是桌面特效来得，想要用这些特效的童鞋可以去ubuntu中文论坛看置顶贴。</p> 
<p><span>1</span>、<span>elemetary</span>主题</p> 
<p>这应该是<span>ubuntu</span>上最受欢迎的主题了，额，加个之一吧。</p> 
<p>仿<span>mac</span>，但是相比<span>macbuntu</span>之类的要更清新，更细致。知道这个主题和这些<span>icons</span>是来自于<span>ubuntu</span>中文论坛<span><strong><a href="http://forum.ubuntu.org.cn/viewtopic.php?f=12&amp;t=295872&amp;start=0#">mayue617</a></strong></span>童鞋的这篇文章：《<span><strong><a href="http://forum.ubuntu.org.cn/viewtopic.php?f=12&amp;t=295872&amp;start=0">[</a></strong></span><a href="http://forum.ubuntu.org.cn/viewtopic.php?f=12&amp;t=295872&amp;start=0">教程<span><strong>]</strong></span></a><span><strong> </strong></span><a href="http://forum.ubuntu.org.cn/viewtopic.php?f=12&amp;t=295872&amp;start=0">不模仿<span><strong>.Ubuntu</strong></span></a><span><strong> </strong></span><a href="http://forum.ubuntu.org.cn/viewtopic.php?f=12&amp;t=295872&amp;start=0">要走出自己的特色<span><strong>mac</strong></span></a><span><strong> </strong></span><a href="http://forum.ubuntu.org.cn/viewtopic.php?f=12&amp;t=295872&amp;start=0">道路</a></p> 
<p>》。</p> 
<p>里面还推荐了<span><strong>gloobus preview</strong></span>等几个不错的软件，后面会讲到。</p> 
<p>该文里还推荐了<span><strong>burg</strong></span>这样一个修改过的<span><strong>grub</strong></span>，以图形界面代替了之前的黑白界面，但是枫影自己的<span><strong>grub</strong></span>有点问题所以没敢去试。<span><strong>google</strong></span>一下也有因为装了<span><strong>burg</strong></span>而导致无法<span><strong>grub</strong></span>的情况，所以请各位童鞋慎用之。下面讲一些该文没有提到的东西。</p> 
<p><span><strong>a)</strong></span>怎么安装<span><strong>elementary</strong></span></p> 
<p>可以添加<span><strong>elemetary</strong></span>的<span><strong>ppa</strong></span>安装，也可以在<span><strong>ubuntu tweak</strong></span>里面打开<span><strong>elementary</strong></span>的源然后添加之。</p> 
<p>这里<span><strong><a href="http://wangyan.org/blog/">WangYan</a></strong></span>童鞋的博文：《<span><strong><a href="http://wangyan.org/blog/elementary-gtk-theme.html">Ubuntu </a></strong></span><a href="http://wangyan.org/blog/elementary-gtk-theme.html">主题 <span><strong>Elementary </strong></span></a><span><strong> </strong></span><a href="http://wangyan.org/blog/elementary-gtk-theme.html">安装方法</a>》已经写得很清楚了。</p> 
<p><span><strong>b</strong></span>）安装后显示不正常。</p> 
<p>如果是<span><strong>location bar</strong></span>轻微显示不正常如多出来一块之类的，那么你可以<span><strong>alt+F2,</strong></span>然后”<span><strong>gconf-editor”</strong></span>，然后在<span><strong>apps-&gt;nautilus-&gt;preferences</strong></span>里面勾选“<span><strong>pathbar_like_breadcrumbs”</strong></span>即可</p> 
<p>如果是<span><strong>location bar</strong></span>完全就变样了那么可以能你的<span><strong>nautilus</strong></span>需要升级。一般在<span><strong>ubuntu tweak</strong></span>里面打开了<span><strong>elementary</strong></span>的源之后再更新之就会提示你有<span><strong>nautilus</strong></span>的更新可用了。</p> 
<p><span><strong>2</strong></span>、换上<span><strong>Faenza icons.</strong></span></p> 
<p>根据<span><strong>@mayue617</strong></span>童鞋的文章，下载了<span><strong>faenza icons</strong></span>的图标换上，要比<span><strong>elementary</strong></span>主题自带的精致得多。方法是在<span><strong>prefenrences-&gt;appearance</strong></span>里面选中<span><strong>elementary</strong></span>主题然后<span><strong>customize,</strong></span>然后在<span><strong>icon</strong></span>选项卡里面选种<span><strong>Faenza</strong></span>，如果你用的是<span><strong>elementary dark</strong></span>主题，建议就用<span><strong>dark</strong></span>版的<span><strong>faenza icons</strong></span>。</p> 
<p><span><strong>3</strong></span>、使用<span><strong>gloobus preview</strong></span></p> 
<p>这个软件安装之后，在<span><strong>nautilus</strong></span>中你只要选中一个文件，再按空格就可以预览其内容了，快速又美观。在<span><strong>nautilus</strong></span>中按下<span><strong>F4</strong></span>键还可以看到<span><strong>slide show</strong></span>形式的图片预览。</p> 
<p><span><strong>4</strong></span>、使用<span><strong>Avant Window Navigator</strong></span></p> 
<p><span><strong>Mac OS X</strong></span>里面很实用的一点就是它的<span><strong>dock</strong></span>了，<span><strong>ubuntu</strong></span>下也有几乎一样的工具。安装<span><strong>AWN</strong></span>之后，就可以像<span><strong>MAC</strong></span>一样使用<span><strong>dock</strong></span>了，底下那一排<span><strong>pannel</strong></span>也可以寿终正寝了。</p> 
<p>安装方法可以<span><strong>google</strong></span>之。</p> 
<p>此文是我临时<span><strong>google</strong></span>出来的，你如果嫌麻烦科研室照着试试：<span><strong>http://www.linuxdiyf.com/bbs/thread-89035-1-1.html</strong></span></p> 
<p><span><strong>5</strong></span>、使用<span><strong>global menu (appmenu)</strong></span></p> 
<p><span><strong>MAC</strong></span>里面另外一个实用的工具就是它的全局菜单了。<span><strong>Ubuntu 10.10</strong></span>里面已经自带了全局菜单的源，名称为<span><strong>app menu</strong></span>。安装后原本在程序窗口里面的菜单栏就会显示在顶部的<span><strong>pannel</strong></span>上，这就节省了一行的空间，能获得更大的浏览面积。</p> 
<p>这个东西目前并不是兼容全部应用，比方我正在用的<span><strong>open office</strong></span>和<span><strong>firefox</strong></span>就不行。但是已经可以兼容大部分软件了，所以还是推荐之。</p> 
<p><span><strong>6</strong></span>、在教育网中使用搜狗代理</p> 
<p>原本我已经基本上将自己的工作环境迁移到<span><strong>ubuntu</strong></span>下了。不过最近用了教育网就难免还得依赖于搜狗的代理，之前<span><strong>wine</strong></span>了一下搜狗<span><strong>2.0</strong></span>失败，这次算是<span><strong>OK</strong></span>了。</p> 
<p>方法就是，先下载搜狗<span><strong>1.1</strong></span>版本，一定要<span><strong>1.1</strong></span>或者<span><strong>1.1</strong></span>以下，以为更高的版本已经不支持用<span><strong>-proxy</strong></span>启动搜狗的代理。</p> 
<p>然后用<span><strong>wine</strong></span>安装搜狗<span><strong>1.1,</strong></span>安装完成后终端下切换目录到搜狗安装目录下，<span><strong>wine sougouexplorer.exe -proxy </strong></span>提示有<span><strong>127.0.0:8081</strong></span>则为启动成功。之后你在<span><strong>firefox</strong></span>或者<span><strong>chrome</strong></span>里面设置代理为<span><strong>127.0.0.1:8081</strong></span>即可使用搜狗代理了<span><strong>~</strong></span>！哈哈<span><strong>~</strong></span></p> 
<p><span><strong>7</strong></span>、在<span><strong>ubuntu</strong></span>下浏览“该网页无法显示”的网站</p> 
<p>比较推荐用<span><strong>wallproxy</strong></span>，适用于教育网，只是要自己搭个<span><strong>GAE</strong></span>而已。可以到<span><strong>wallproxy</strong></span>的<span><strong>google code</strong></span>官网上去看教程，然后自己搭建一个<span><strong>wallproxy</strong></span>的<span><strong>gapp</strong></span>。完了再在终端下<span><strong>python</strong></span>之即可。</p> 
<p>关键是：<span><strong>1</strong></span>、你要有<span><strong>google</strong></span>账户<span><strong>;2</strong></span>、<span><strong>linux</strong></span>装有<span><strong>python</strong></span>。</p>
        ]]></description>
    </item>
    
    <item>
        <title>shell&#x7F16;&#x7A0B;&#x7B14;&#x8BB0;</title>
        <link>https://justinyan.eth.limo/9056BDEB-FFCF-4515-8515-4A249D02E140/</link>
        <guid>https://justinyan.eth.limo/9056BDEB-FFCF-4515-8515-4A249D02E140/</guid>
        <pubDate>Sat, 06 Nov 2010 18:42:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>今天终于写完了shell编程的作业，作业本身很简单但是在shell里面写程序却是第一次，所以难免碰到这样那样的问题。<br /> 趁现在还记得些东西，写下来当笔记用：<br /> 1）sh命令执行.sh文件和用./执行.sh文件的区别<br /> 我是在ubuntu下写的shell文件，所以如果使用sh来执行文件，那么将调用ubuntu默认的shell来执行，这就有一个问题了，ubuntu默认的shell貌似并不是bash而是dash，而这些shell是有区别的，包括其自带的函数等玩意儿，所以我的sh文件里面写了一个if语句来匹配正则表达式，但是用sh执行则不可用用./执行则没问题。这是因为默认的shell不同的问题&gt;造成的。<br /> 所以我在ubuntu下面写shell程序也用./来调用以免产生奇奇怪怪的问题。<br /> 2）正则表达式匹配<br /> 在if语句中匹配参数为数字的语法为：<br /> if [[ "$x" =~ [0-9]+ ]]<br /> 这个[[]]的东西在ubuntu默认的shell下面就不能识别了，会报错，而如果使用./来执行就不会有问题。<br /> 3）#！/bin/bash这一句<br /> 我在文件头里面加了这样一句<br /> #!/bin/bash<br /> 这个东西一开始我以为是注释语句但其实是错的，#!是一个特殊符号，其后面的路径表示该shell的根路径，表示使用该shell来执行一个子shell<br /> 所以使用./来执行shell的话系统就会默认找到该路径下的shell然后生成一个子shell来执行你的文件，所以在ubuntu这种不以bash为默认的shell的情况下，这句话是必须的。<br /> 4）变量的自增<br /> shell编程里面变量的自增不同于C/C++里面的"++"<br /> 而实际上使用++这种东西也并不是什么值得推荐的做法，这样会降低代码的可读性，在某些复杂的语句中会产生岐义令程序员感到困惑。<br /> 在shell中变量的自增是这样写的：<br /> VAR=0<br /> VAR=`expr $VAR + 1`<br /> 至于为什么我还没很搞懂，尤其是反单引号的使用。额。。。好吧我承认我就是随手应付了一下作业而已。反正以后还会有更复杂的作业，还会有更多笔记的。。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x8BA9;chrome&#x4E5F;&#x7528;&#x4E0A;vimperaotr&#x26;#8212;-vimium</title>
        <link>https://justinyan.eth.limo/8AA7A90F-0858-4941-A335-A9D23BA18A6A/</link>
        <guid>https://justinyan.eth.limo/8AA7A90F-0858-4941-A335-A9D23BA18A6A/</guid>
        <pubDate>Wed, 03 Nov 2010 00:42:53 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>在firefox上已经习惯用vimperator了，到了chrome上没有觉着怪怪的。以前有一个叫vimlike的扩展，但是用起来很不爽，刚装了不到5分钟就删了，后来发现一个virome的很不错但是不能自定义快捷键也不爽，所以今天就火星了一把，把偶然发现的vimium装了一下并且改了一下快捷键，嘿，终于找回vimperator的感觉了～！不过毕竟不是真的vimperator，不能够用":"直接输入指令，不过剩下的快捷键也足够用了。下面贴一下我改的代码：</p> 
<blockquote> 
 <div id="_mcePaste">
  map n previousTab
 </div> 
 <div id="_mcePaste">
  map m nextTab
 </div> 
 <div id="_mcePaste">
  map K scrollPageUp
 </div> 
 <div id="_mcePaste">
  map J scrollPageDown
 </div> 
</blockquote> 
<p>其实vimium是我在搜索vimperator配置文件位置的 时候偶然<a href="http://www.houqp.com/vimium-compatible-with-the-bindings-in-vimperato/">在这里看到的</a>。</p> 
<p>所以要感谢一下 @<span style="font-family: Georgia, serif; line-height: 21px; font-size: 14px; color: #111111;">houqp 童鞋～</span></p> 
<p><span style="font-family: Georgia, serif; line-height: 21px; font-size: 14px; color: #111111;">不过他的修改代码可能是旧版本的，新的版本已经不用&lt;c-xxx&gt;了，直接map就OK了，呃。。。毕竟不是vimperator啊</span></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x63A8;&#x8350;&#x51E0;&#x6B3E;&#x5E38;&#x7528;&#x8F6F;&#x4EF6;</title>
        <link>https://justinyan.eth.limo/C2FCFE4C-A865-4A95-BB3D-76DBDC30EF4B/</link>
        <guid>https://justinyan.eth.limo/C2FCFE4C-A865-4A95-BB3D-76DBDC30EF4B/</guid>
        <pubDate>Tue, 02 Nov 2010 22:56:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>很久很久没写博客了，是我太懒了，最近业界听热闹的阿，360和TX干上了。</p> 
<p>我也不说什么了，google一下一大堆，对于这些事儿就没必要重复劳动了。这里我只管推荐几款不错的软件就是了。</p> 
<p>1、安全类</p> 
<p>杀毒软件推荐免费的Avast!和小红伞，两者选其一即可，都是国外知名的杀毒软件而且是绝对的免费。对于国内的杀毒软件而言，无论是瑞星还是360都排不上名次，只有金山毒霸以杀毒速度还排在前面但是光有速度没效率也没什么用，只能说期待以后的进步吧。</p> 
<p>防火墙的直接用windows自带的就行了，如果非要安装的话就comodo，也是免费的强力防火墙。</p> 
<p>如果要付费的套装可以用卡巴或者ESET，但是我觉得没必要，而且裸奔都没问题，装个杀毒软件还占资源。至于安全方面的问题可以参看 @virushuo 写的安全指南。</p> 
<p>其实最安全的就是不用windows用linux或者mac os x了，不过并不是所有人都用得来，就懒得说了。</p> 
<p>2、播放器</p> 
<p>彻底抛弃暴风，至于为什么，google一下之前的神帖：暴风长老，请收了你的神通吧  看完如果你还是要力挺暴风那我也没辙。</p> 
<p>替代软件可以选用kmplayer，不过用这个软件的话最好是喜欢折腾的人用，折腾起来舒服，而且不经过折腾的话一般就不怎么舒服。</p> 
<p>如果不喜欢折腾就用QQ影音和shooter player。别看到QQ俩字儿就觉得人家低级，QQ影音可是相当不错的播放器来的，至少易用性是很不错的，虽然本人基本都用KMP了。</p> 
<p>3、QQ</p> 
<p>QQ客户端会扫描硬盘然后后台上传文件的事儿。。。自己google吧。不过天朝人民很多都离不开QQ，这个本人表示无鸭梨，因为本人基本不上Q，上twitter比上Q多。如果你一定要用QQ，可以选择使用web qq，挺不错的，如果一定要用客户端可以装多一个防止QQ扫描的程序，自行google去，不过绝对不是什么扣扣保镖。这个360和QQ的战争下诞生的东西可靠性如何大家自行揣测吧</p> 
<p>4、浏览器</p> 
<p>国内的浏览器可热闹了，360啦，搜狗啦，傲游什么的，多了去了。其实全是IE内核。IE是个什么玩意儿可能还有些人不知道，总之只要知道现在全球最烂但是用得最多的主流浏览器就是它啦。</p> 
<p>浏览器推荐用firefox,如果你喜欢折腾的话，firefox折腾后就是一神器，这个不用我多说。</p> 
<p>不喜欢折腾的用google 的chrome。轻量级，speed~</p> 
<p>另外考虑到国内的特殊环境，IE是必备的，所以，当你要上网银一类的IE ONLY的烂网站的时候，就只能用回系统自带的IE或者傲游一类的了。IE内核的国产浏览器里面我觉得还比较不错的就是傲游了，只是它后来居然开始捆绑金山网盾，这做法就太流氓了。</p> 
<p>另外教育网用户就开着搜狗代理吧，倒不用一直用着搜狗浏览器，开着搜狗的proxy，然后用别的浏览器就行了，这个google一下一大堆。</p> 
<p>6、飞信</p> 
<p>飞信对我而言唯一的用处就是免费短信除此再无别的优点。所以如果你想要用飞信，推荐用web飞信，官方版本的，如果一定要用客户端就用libfetion，第三方开发的。如果你觉得挂着个飞信或者QQ看着它一直升级自己感觉很光荣那么我觉得你能看到这里已经很了不起了，这篇文章对你来说是一点用也没有，你还是就着你的习惯，用回IE+QQ+360要好的多。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x8FD9;&#x4E24;&#x5929;&#x5DEE;&#x70B9;&#x6CA1;&#x88AB;ubuntu&#x641E;&#x6B7B;</title>
        <link>https://justinyan.eth.limo/6FDDD277-0B1B-468B-B28F-7100D12E6208/</link>
        <guid>https://justinyan.eth.limo/6FDDD277-0B1B-468B-B28F-7100D12E6208/</guid>
        <pubDate>Fri, 22 Oct 2010 18:42:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <div id="_mcePaste"> 
 <div id="_mcePaste">
  这两天整ubuntu所得
 </div> 
 <div id="_mcePaste"></div> 
 <div id="_mcePaste">
  1、grub2 -&gt; grub1
 </div> 
 <div id="_mcePaste">
  这个是罪魁祸首，从10.04升级到10.10,grub的时候提示不能安装grub到我的系统分区，这我就纳闷了，用了这么久的ubuntu，顶多就是开机的时候提示不能找到sdax分区而已，这回倒好，给我说装不了了这次。
 </div> 
 <div id="_mcePaste">
  当时我没留意，以为顶多又来一次 grub rescue&gt; 我再把它rescue一次就完了，怎奈此rescue非彼rescue也。
 </div> 
 <div id="_mcePaste">
  以前升级的时候是grub错了区，所以重新prefix回去也就是了，这次是连grub信息都没有写入，我了个去去。
 </div> 
 <div id="_mcePaste">
  然后用Live CD进去后mount了我的分区之后再进行修复，尝试多次仍然失败。我本本的光驱本来就不咋的，读盘慢得要死，而且每一次修复都要重启才能看到是否成功，所以浪费了我一天的时间都没有搞定。
 </div> 
 <div id="_mcePaste">
  其间经历了purge grub2，并且还一不小心grub进（hd0,0），这个悲剧可就不一般了，连rescue也没有了，只剩下一个grub了，彻底引导不了了。
 </div> 
 <div id="_mcePaste">
  又重新装回grub2，发现grub install failed,又提示XXXX unmount? 搞了半天终于mount -o bind进入之后又发现can not grub sdax.....当时我就崩溃了
 </div> 
 <div id="_mcePaste">
  最后的最后，我把grub2卸了换成0.97,我了个去去，这就好了，可以引导ubuntu了，==|||
 </div> 
 <div id="_mcePaste">
  MD，这么简单的事情浪费了我一天的时间阿阿阿。。。。
 </div> 
 <div id="_mcePaste">
  最后再把win7 的引导信息给加进menu.lst里面，总算是完美了。
 </div> 
 <div id="_mcePaste"></div> 
 <div id="_mcePaste">
  2、fcitx
 </div> 
 <div id="_mcePaste">
  重新grub回ubuntu之后，我的fcitx的配置就被重置了，尝试在 ~/.fcitx/config中设置多次未果，后来才发现，原来现在的3.6.3的版本的配置文件已经不在 ~/.fcitx/config中了，而是换成了 ~/.config/fcitx/config，我倒。。。为了fcitx的配置浪费了多少时间阿阿阿阿。。。
 </div> 
 <div id="_mcePaste"></div> 
 <div id="_mcePaste"></div> 
 <div id="_mcePaste">
  3、引导win7
 </div> 
 <div id="_mcePaste">
  终于进入ubuntu之后发现win7不能被识别出来，OMG，于是乎又是了一下那些乱七八糟的代码没搞定。结果自己打开/boot/grub/menu.lst 一看，晕死，人家不是给了sample在里面吗，唉，于是照着sample给我的win7的分区grub了一下，OK~
 </div> 
 <div id="_mcePaste"></div> 
 <div id="_mcePaste">
  所以呢，以后如果要升级，首先要慎重，其次，如果提示XXXfailed的话，就一定先不要重启，在win下或许重启能解决很多问题，但是linux下，重启只能带来更多问题。不过经过这次的灾难，我对linux的认识又增进了不少。算是因祸得福吧，悲剧的 ubuntu阿ubuntu.
 </div> 
 <div></div> 
</div>
        ]]></description>
    </item>
    
    <item>
        <title>&#x535A;&#x5BA2;&#x65B0;&#x4E3B;&#x9898;preview</title>
        <link>https://justinyan.eth.limo/B5544A9E-BBED-45EA-BF22-5B14A114FD4B/</link>
        <guid>https://justinyan.eth.limo/B5544A9E-BBED-45EA-BF22-5B14A114FD4B/</guid>
        <pubDate>Tue, 28 Sep 2010 19:10:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>博客前几天莫名其妙的无法发布文章，今天一看又好了，连排除故障都省了（虽然之前也有花时间看了一下==|||）</p> 
<p>今儿就把这两天画的图发上来给大家看看吧，等国庆假期的时间再把博客主题自己重新写一遍～</p> 
<p>音乐类文章列表页面<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/09/Tech-Page-preview.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/09/Music-Page_preview.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-594" title="Music Page_preview" src="http://www.windyshade.com/wp-content/uploads/2010/09/Music-Page_preview-166x300.jpg" alt="" width="166" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/Music-Page_preview-166x300.jpg 166w, https://cdn.justinbot.com/wp-content/uploads/2010/09/Music-Page_preview-569x1024.jpg 569w" sizes="(max-width: 166px) 100vw, 166px" /></a></p> 
<p>首页预览 <a href="http://www.windyshade.com/wp-content/uploads/2010/09/index_preview.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-593" title="index_preview" src="http://www.windyshade.com/wp-content/uploads/2010/09/index_preview-192x300.jpg" alt="" width="192" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/index_preview-192x300.jpg 192w, https://cdn.justinbot.com/wp-content/uploads/2010/09/index_preview-655x1024.jpg 655w, https://cdn.justinbot.com/wp-content/uploads/2010/09/index_preview.jpg 1280w" sizes="(max-width: 192px) 100vw, 192px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/Music-Page_preview.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-594" title="Music Page_preview" src="http://www.windyshade.com/wp-content/uploads/2010/09/Music-Page_preview-166x300.jpg" alt="" width="166" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/Music-Page_preview-166x300.jpg 166w, https://cdn.justinbot.com/wp-content/uploads/2010/09/Music-Page_preview-569x1024.jpg 569w" sizes="(max-width: 166px) 100vw, 166px" /></a></p> 
<p>技术设计类文章列表页面<a href="http://www.windyshade.com/wp-content/uploads/2010/09/Tech-Page-preview.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-595" title="Tech Page preview" src="http://www.windyshade.com/wp-content/uploads/2010/09/Tech-Page-preview-128x300.jpg" alt="" width="128" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/Tech-Page-preview-128x300.jpg 128w, https://cdn.justinbot.com/wp-content/uploads/2010/09/Tech-Page-preview-436x1024.jpg 436w, https://cdn.justinbot.com/wp-content/uploads/2010/09/Tech-Page-preview.jpg 1280w" sizes="(max-width: 128px) 100vw, 128px" /></a> 还是那句，预览版跟最终版应该出入还是比较大的，即便是这几个页面也有还没完成的部分，一般会有较大改动～</p>
        ]]></description>
    </item>
    
    <item>
        <title>solve Error 3194 while upgrading ipod touch/iphone into iOS 4.0</title>
        <link>https://justinyan.eth.limo/BDC7537B-2350-4BDB-BB9F-EA7FA80002EC/</link>
        <guid>https://justinyan.eth.limo/BDC7537B-2350-4BDB-BB9F-EA7FA80002EC/</guid>
        <pubDate>Fri, 24 Sep 2010 23:06:23 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>These days I found that many people visited my blog through the search engine with the keyword "Error 3194" "update ipod/iphone". So I've notice that many people would like to update their ipod or iphone into iOS4.0. So I would like to translate my last post "ipod 升级固件时报错3194" into English.</p> 
<p>The iTunes report Error 3194 is because apple had shut down their verify domain name, and we should modify our host file, so we can still get the iOS4.0 firmware verified. So let's start this work now.</p> 
<p>First , you should open this path on your computer(win OS): C:\Windows\System32\drivers\etc\hosts</p> 
<p>If you're using Mac, you can find this file on this pat: /private/etc/hosts<br /> Ok, now open this hosts file with notepad or other text editor, and add this at the end of the file as bellow:</p> 
<p> 74.208.10.249 gs.apple.com</p> 
<p>and then restart your computer, and update your firmware again, all thing done~!</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x63A8;&#x8350;&#x51E0;&#x4E2A;Firefox&#x5FC5;&#x5907;&#x6269;&#x5C55;</title>
        <link>https://justinyan.eth.limo/C4A4CCBB-DE90-48C7-B95A-C4EDE4617230/</link>
        <guid>https://justinyan.eth.limo/C4A4CCBB-DE90-48C7-B95A-C4EDE4617230/</guid>
        <pubDate>Thu, 23 Sep 2010 01:38:27 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>FF启动速度是出了名的慢，平时已经忍够了，今天忍无可忍，试了多种方法改进FF的启动速度。什么preloader啦tweak啦改参数什么的都试过了，效果都不明显，最后还是不得已把Add-ons都给精简掉了，只剩下几个实在精简不了的。这里就顺便推荐一下：<a href="http://www.windyshade.com/wp-content/uploads/2010/09/firefox插件推荐.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-566" title="firefox插件推荐" src="http://www.windyshade.com/wp-content/uploads/2010/09/firefox插件推荐-300x178.jpg" alt="" width="300" height="178" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/firefox插件推荐-300x178.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/09/firefox插件推荐-1024x608.jpg 1024w, https://cdn.justinbot.com/wp-content/uploads/2010/09/firefox插件推荐.jpg 1280w" sizes="(max-width: 300px) 100vw, 300px" />
  <!--more--></a></p> 
<p>1、Stylish</p> 
<p>用以修改FF的外观的，用CSS来写，简单易用，很容易上手。FF4的外观本来已经好看很多，但是其左上角那个Menu Button却NC地要占用一行的空间让枫影很不爽，于是写了个CSS修改之。这两个文件本来是别人写的用来作FF透明的，我取了其中两句，不过都改得名目全非了，两个文件如下：</p> 
<p>/*:::::::::::::::::::::::::::::::::::::::Nav::::::::::::::::::::::::::::::::::::::: */</p> 
<p>#navigator-toolbox:not([tabsontop=true]) #nav-bar<br /> {<br /> -moz-box-shadow: threedshadow 0 -1px inset !important;<br /> padding-bottom: 7px !important;<br /> }</p> 
<p>#navigator-toolbox:not([tabsontop=true]) toolbar:not(#nav-bar):not(#toolbar-menubar)<br /> {<br /> background-color: rgba(223,233,245, 0.5) !important;<br /> }</p> 
<p>#main-window:not([sizemode="maximized"]) #navigator-toolbox:not([tabsontop=true]) toolbar:not(#nav-bar):not(#toolbar-menubar)<br /> {<br /> border-left: 1px solid threedshadow !important;<br /> border-right: 1px solid threedshadow !important;<br /> }<br /> #navigator-toolbox:not([tabsontop=true]) #PersonalToolbar<br /> {<br /> background: -moz-linear-gradient(top, rgba(255,255,255,.5), rgba(255,255,255,0)) !important;<br /> }</p> 
<p>#navigator-toolbox:not([tabsontop="true"]) #TabsToolbar<br /> {<br /> padding-top: 2px !important;<br /> }</p> 
<p>#navigator-toolbox[tabsontop=true]<br /> {<br /> border-bottom: 1px solid threedshadow !important;<br /> }</p> 
<p>#navigator-toolbox[tabsontop=true] toolbar:not(#TabsToolbar):not(#toolbar-menubar)<br /> {<br /> background-color: rgba(223,233,245,.3) !important;<br /> }</p> 
<p>#main-window:not([sizemode="maximized"]) #navigator-toolbox[tabsontop=true] toolbar:not(#TabsToolbar):not(#toolbar-menubar)<br /> {<br /> border-left: 1px solid threedshadow !important;<br /> border-right: 1px solid threedshadow !important;<br /> }<br /> #navigator-toolbox[tabsontop=true] #nav-bar<br /> {<br /> padding-top: 5px !important;<br /> padding-bottom: 5px !important;<br /> background: -moz-linear-gradient(top, rgba(242,246,251,1), rgba(255,255,255,0)) !important;<br /> }</p> 
<p>.tabbrowser-tab[selected=true]<br /> {<br /> font-weight: bold !important;<br /> text-shadow: 1px 1px 1px #DDD;<br /> }<br /> #browser{<br /> border-left: 1px solid threedshadow !important;<br /> border-right: 1px solid threedshadow !important;<br /> }<br /> #browser-bottombox, #status-bar, #status-bar &gt; *{<br /> background: transparent !important;<br /> color: #ffffff !important;<br /> text-shadow: #000000 1px 1px 2px, #000000 -1px 1px 2px, #000000 1px -1px 2px, #000000 -1px -1px 2px !important;<br /> -moz-appearance: none !important;<br /> border: #000000 !important;<br /> }<br /> #status-bar{<br /> margin-top: 0px !important;<br /> border-top: 1px solid threedshadow !important;<br /> }<br /> .findbar-find-next, .findbar-find-previous, .findbar-highlight{<br /> color: #ffffff !important;<br /> }</p> 
<p>/*titlebar*/</p> 
<p>#appmenu-button-container{<br /> position: fixed !important;<br /> }</p> 
<p>#navigator-toolbox[tabsontop="true"] #TabsToolbar{<br /> padding-left: 95px !important;<br /> }</p> 
<p>#navigator-toolbox[tabsontop="true"] #TabsToolbar{<br /> z-index: 9999999;<br /> margin-top: -20px !important;<br /> padding-left: 110px !important;<br /> padding-top: 5px !important;<br /> padding-right:107px !important;<br /> }<br /> #appmenu-button{<br /> padding-left: 35px !important;<br /> padding-right: 15px !important;<br /> }<br /> #appmenu-button .button-text { display:none !important; }<br /> #appmenu-button dropmarker:before { content: " 枫 影 " !important; }</p> 
<p>2、AutoProxy</p> 
<p>自动切换代理，目前用的是兼容FF4的测试版</p> 
<p>3、Better GReader</p> 
<p>给google reader加入preview功能，还可以根据不同的源以不同的颜色显示list条目</p> 
<p>4、Download Statusbar</p> 
<p>这个枫影一直在用，下载的文件会在底部显示下载进度，很好用，至少比FF自带的下载窗口要好的多</p> 
<p>5、Echofon</p> 
<p>目前枫影最喜欢用的twitter客户端，本来想把FF改成像chrome一样然后干脆隐藏掉状态栏的，但是因为Echofon没有工具栏图标所以没办法了</p> 
<p>6、Firebug</p> 
<p>Web开发者必备工具，强大的DOM、CSS查看编辑和JS console，业界闻名，无需多言。</p> 
<p>7、goo.gl lite</p> 
<p>Google 短网址服务，twitter转短网址时我用的是这个，一键转google的短网址，只在地址栏旁边有一个按钮。</p> 
<p>8、google reader watcher</p> 
<p>Google reader未读条目的提醒。</p> 
<p>9、google shortcuts</p> 
<p>包含了几乎所有google旗下的站点，只一个按钮，地址栏旁边，可以编辑需要显示的条目，枫影用google的东西用得很多，所以推荐之。</p> 
<p>10、Greasemonkey</p> 
<p>猴子脚本，许多FF的扩展都可以通过脚本来实现，好处是脚本小而且无需重启即可禁用启用，不过枫影暂时没用什么脚本，除了twitter的透明，不过现在也被我禁用了，不过还是留着没删掉，以后看到有好的脚本就加一个呗。</p> 
<p>11、Omnibar</p> 
<p>把地址栏和搜索栏合并在一起，跟chrome一样，方便很多</p> 
<p>12、Organize Status Bar</p> 
<p>用来组织状态栏图标位置的，枫影用来把web main notifier和greader watcher给移到前面，进行合理的位置安排。</p> 
<p>13、Paste and Go</p> 
<p>给地址栏右键加入 paste and Go功能，跟chrome一样，粘贴并转到。</p> 
<p>14、Tab Mix Plus</p> 
<p>强大的tab功能加强，有很多很多种功能可以由用户自行搭配，不过枫影只用了其中的双击关闭标签页功能，呃，有点大材小用了。呃，其实用close tab on double click这个插件就可以实现了，可以不用装这个插件</p> 
<p>15、Web Developer</p> 
<p>Web开发者必备工具，和firefox相比各有千秋，不过它更厉害的地方在于可以直接修改CSS并保存。</p> 
<p>16、WebMail Notifier</p> 
<p>枫影用来作为我的gmail的提醒，它同时也支持其他的邮箱。</p> 
<p>17、FlashGot</p> 
<p>点击下载链接后会出现多一个选项：FlahsGot，可以指定下载工具，比方说：迅雷。</p> 
<p>另外还有些枫影之前常用的但是迫不得已把它们删掉的，比方说：</p> 
<p>1、Smart bookmark</p> 
<p>自动把书签栏上的书签的名字隐藏只显示favicon，鼠标经过时再显示名字，这样书签栏就可以容纳下更多的书签，但是枫影现在连书签栏都整个隐藏了，所以装了也没用。</p> 
<p>2、Ad block</p> 
<p>呃，去广告用的，但是枫影常去的网站很少有个广告，就算有也无所谓反正可以无视</p> 
<p>3、Tab scope</p> 
<p>鼠标经过标签的时候预览标签页内容，不过枫影用了一段时间之后发现自己基本没怎么去看，如果真想要预览点FF4里面的预览不就完了</p> 
<p>5、Speed Dial</p> 
<p>虽然名字里带个Speed，实际上当你的dial数目太多的时候那个慢啊，开个页面都要好几秒，而且枫影连书签栏都不用了，这玩意儿就更不用了</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x89E3;&#x51B3;iPhone/iPod touch&#x5347;&#x7EA7;&#x56FA;&#x4EF6;&#x62A5;3194&#x9519;&#x8BEF;</title>
        <link>https://justinyan.eth.limo/4C4E3E67-8BE8-4F30-A209-72FC013D286A/</link>
        <guid>https://justinyan.eth.limo/4C4E3E67-8BE8-4F30-A209-72FC013D286A/</guid>
        <pubDate>Sun, 19 Sep 2010 16:59:59 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>呃，前段时间我的机子白苹果了，要刷多次4.0的时候iTunes老报错误3194，换了电脑也报错，把iTunes从10降回9.2也报错，我了个杯具。后来解决后想写篇博文上来不过老忘记。这次是@vival童鞋给我发了邮件问起这个问题我才想到的。<br /> 解决方案很简单，首先，恢复4.0固件需要iTunes9.2+版本，所以请把iTunes升级了先。<br /> 然后，最重要的一点是苹果把iOS4.0的验证给关了，所以无法正常通过iTunes的验证，报错3194。<br /> 这时候捏，咱打开C:\Windows\System32\drivers\etc\hosts这个目录<br /> 找到hosts这个文件，右键使用记事本打开，在最后面添加一行：</p> 
<blockquote>
 <p>74.208.10.249 gs.apple.com﻿</p>
</blockquote> 
<p>然后重启，再刷，成功～！</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6587;&#x4EF6;&#x590D;&#x5236;&#x7A76;&#x6781;&#x5965;&#x4E49;&#x2014;&#x2014;&#x7528;Killcopy&#x98DE;&#x901F;copy&#x6587;&#x4EF6;</title>
        <link>https://justinyan.eth.limo/D235224A-3442-4DE0-A2C8-C82C104DDE33/</link>
        <guid>https://justinyan.eth.limo/D235224A-3442-4DE0-A2C8-C82C104DDE33/</guid>
        <pubDate>Thu, 16 Sep 2010 15:34:07 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>今天下午一直在整理硬盘，由于受不了win自带的复制功能的龟速，就又装了一次Teracopy，是之前一位童鞋推荐我用的，不过一直就不觉得Teracopy的提速有多明显，虽然在大文件的复制上表现还不错但是多个小文件的话Teracopy就超级杯具了。于是寻寻觅觅给我找到Killcopy这玩意儿，无论大文件小文件表现均显优异，软件小巧而功能强大，是免费软件来的。不过限于我的移动硬盘传输速率，还是得几个小时才能copy完全部数据，主要是小文件实在不是一般的多。OK，不多说了，上官网链接：<a href="http://killprog.narod.ru/killcopye.html" target="_blank">http://killprog.narod.ru/killcopye.html</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x65E0;&#x9898;</title>
        <link>https://justinyan.eth.limo/B8C38BC4-5318-4089-96E4-D9E632A86E99/</link>
        <guid>https://justinyan.eth.limo/B8C38BC4-5318-4089-96E4-D9E632A86E99/</guid>
        <pubDate>Tue, 14 Sep 2010 12:55:54 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>100914/中午</p> 
<p>出太阳了，我们仍在夜里，凉风撩乱枝桠上残存的叶子，我们仍在夜里。</p> 
<p>其实你伸出的指掌，只要再远一点，就能掀起夜的一角。我看到了星星。我们在夜的黑河里泅了许多年，被寒雪冻住的许多年，很多人失明了，拐杖腐烂在地里，有几只瘦狗，路过村庄。</p> 
<p>我从村口走来，目光交叉的瞬间是高大的城墙，有山，有楼，有灯火。</p> 
<p>城里有一些人抱怨阴暗的月光，却不知道月光本来就是暗的。你伸出的指掌，只要再远一点，就能触到温暖的太阳。可是我等了许久，许久，瘦狗睡在村口，拐杖在地里腐朽，你甚至不知道有种光芒来自太阳。</p>
        ]]></description>
    </item>
    
    <item>
        <title>webrebuild&#x5E74;&#x4F1A;&#x5F52;&#x6765;</title>
        <link>https://justinyan.eth.limo/04FDA30E-6BCB-481C-BDCE-B7AE8E96D65D/</link>
        <guid>https://justinyan.eth.limo/04FDA30E-6BCB-481C-BDCE-B7AE8E96D65D/</guid>
        <pubDate>Sat, 11 Sep 2010 21:30:30 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>今天去了webrebuild的年会，讲的挺不错，收获颇丰。而且还斩获了一小礼品和一年QQ免费会员。不过杯具鸟，枫影本来就长年不上Q，给我也没啥用=.=</p> 
<p>晒两张图，今天实在太累了，明天再写笔记之类的。我的twitter上有直播，<a href="http://twitter.com/MapleShadow" target="_blank">@mapleshadow</a>，或者直接#webrebuild，基本上对哦是我发的。本来就没啥人上推，而且现场又有网易微博直播，twitter上的#webrebuild基本全是我发的。杯具。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100911537.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-544" title="20100911537" src="http://www.windyshade.com/wp-content/uploads/2010/09/20100911537-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/20100911537-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/09/20100911537-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100911537.jpg"></a><a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100911538.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-545" title="20100911538" src="http://www.windyshade.com/wp-content/uploads/2010/09/20100911538-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/20100911538-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/09/20100911538-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x563F;&#x563F;&#xFF0C;&#x6536;&#x5230;webrebuild&#x5E74;&#x4F1A;&#x7684;&#x9080;&#x8BF7;&#x51FD;&#x55BD;&#xFF5E;&#xFF01;</title>
        <link>https://justinyan.eth.limo/92257796-D123-434A-88B6-A9DE8BEC30E9/</link>
        <guid>https://justinyan.eth.limo/92257796-D123-434A-88B6-A9DE8BEC30E9/</guid>
        <pubDate>Tue, 07 Sep 2010 19:54:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>嘿嘿，今天收到webrebuild的邀请函喽，可以去听演讲喽，跟一个同学一起去，哈哈，希望能有所收获啊～</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x7528;safari download manager&#x548C; frash&#x6539;&#x8FDB;iphone&#x7684;safari</title>
        <link>https://justinyan.eth.limo/7637BE76-96B2-4B38-B093-194F95D2C627/</link>
        <guid>https://justinyan.eth.limo/7637BE76-96B2-4B38-B093-194F95D2C627/</guid>
        <pubDate>Tue, 07 Sep 2010 00:06:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>其实这两个都是旧软了，之前枫影的文章也介绍过，不过枫影刷了4.0之后发现不兼容了，最近才发现已经有新版本的兼容4.0的系统了，=.=|||这些天一直在画图就没写出来，不过枫影在<a href="http://twitter.com/MapleShadow" target="_blank">twitter</a>上面是有说的。</p> 
<p>在cydia上搜索safari download manager，安装后就能在safari里面下载任何类型的文件了，可以直接点击该下载链接下载，也可以长按该链接弹出下载按钮。</p> 
<p>frash是comex大大移植的软件，使iphone支持flash播放，之前枫影刚装了frash的时候发现还是不能播优酷的视频但是这几天去重装发现可以了，下午看了一会儿视频不过发现有卡屏花屏现象，不知道是不是普遍的。</p> 
<p>大致交待一下这两款软件。完。</p> 
<p>PS： imobilecinema暂时还是不能播视频，所以枫影才转frash的，威锋的源上面有，或者直接到frash的官网去也行。这里有篇博文教你添加源的：<a href="http://www.appsafari.com/software/12231/frash/" target="_blank">http://www.appsafari.com/software/12231/frash/</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>Ophoto Album page Preview</title>
        <link>https://justinyan.eth.limo/DE705F80-56B6-4C63-B482-0D47DF43A9FA/</link>
        <guid>https://justinyan.eth.limo/DE705F80-56B6-4C63-B482-0D47DF43A9FA/</guid>
        <pubDate>Fri, 03 Sep 2010 22:24:54 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>今天画了一整天的图，整个页面完成了80%了，不过还有很多要改进的地方，明天看看能不能写完这个页面的CSS。</p> 
<p>preview的版本跟到时候的release版本会差很多，包括已经算定稿的首页，跟之前发在本博的图片差很多。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/album.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-534" title="album" src="http://www.windyshade.com/wp-content/uploads/2010/09/album-192x300.jpg" alt="" width="192" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/album-192x300.jpg 192w, https://cdn.justinbot.com/wp-content/uploads/2010/09/album-655x1024.jpg 655w, https://cdn.justinbot.com/wp-content/uploads/2010/09/album.jpg 1280w" sizes="(max-width: 192px) 100vw, 192px" /></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4F7F;&#x7528;cufon&#x8BA9;&#x7F51;&#x9875;&#x652F;&#x6301;&#x81EA;&#x5B9A;&#x4E49;&#x5B57;&#x4F53;</title>
        <link>https://justinyan.eth.limo/7DB4DB20-EAD4-47BF-A889-CE963CD2CDAA/</link>
        <guid>https://justinyan.eth.limo/7DB4DB20-EAD4-47BF-A889-CE963CD2CDAA/</guid>
        <pubDate>Fri, 03 Sep 2010 07:10:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>昨天画了一下OPhoto的首页，写CSS的时候发现中间的两句标语有点问题，我的意愿是要让后台动态生成这两句标语的文本，以便适应不同的用户，所以这两句就不能使用图片来做，但是字体又是特殊字体，怎么办呢？</p> 
<p>google只发现一个可以支持修改网页字体的好东西，cufon，这个 东西可以把字体文件转换成JS文件然后在页面载入时导入这个字体JS就能实现页面字体的自定义了，实际上也是利用JS把字体转换成矢量的形式载入的，很强大，遂推荐之。</p> 
<p>这是它的官网：<a href="http://cufon.shoqolate.com/generate/" target="_blank">http://cufon.shoqolate.com/generate/</a></p> 
<p>把需要的字体上传后生成JS文件，再下载必要的JS文件，导入自己的HTML页即可。</p> 
<p><strong><span style="color: #ff0000;">注意，jquery的导入一定要在最前，不然字体在IE6下无效。</span></strong></p> 
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
 http://www.google.com/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBUQFjAA&amp;url=http%3A%2F%2Fcufon.shoqolate.com%2F&amp;ei=XS6ATIXOFYyfcaKN4bcL&amp;usg=AFQjCNEkym1BzbKgtGiMUKxr12gghpMIvQ&amp;sig2=TAGS9xupBjRV6iDoBVQRVQ
</div>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6652;&#x6652;&#x6211;&#x7684;&#x65B0;&#x676F;&#x5177;</title>
        <link>https://justinyan.eth.limo/4F3EDB76-5CEF-4C78-80B2-CD8BE9473C1F/</link>
        <guid>https://justinyan.eth.limo/4F3EDB76-5CEF-4C78-80B2-CD8BE9473C1F/</guid>
        <pubDate>Thu, 02 Sep 2010 17:39:27 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>刚买的俩杯具，一个是遇热变色的ON-OFF咖啡杯，还有一套键盘杯，上图：</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902535.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-523" title="20100902535" src="http://www.windyshade.com/wp-content/uploads/2010/09/20100902535-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902535-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902535-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" />
  <!--more--></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902535.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902534.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-522" title="20100902534" src="http://www.windyshade.com/wp-content/uploads/2010/09/20100902534-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902534-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902534-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902534.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902533.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-521" title="20100902533" src="http://www.windyshade.com/wp-content/uploads/2010/09/20100902533-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902533-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902533-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902533.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902532.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-520" title="20100902532" src="http://www.windyshade.com/wp-content/uploads/2010/09/20100902532-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902532-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902532-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902532.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902531.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-519" title="20100902531" src="http://www.windyshade.com/wp-content/uploads/2010/09/20100902531-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902531-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902531-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902531.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902530.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-518" title="20100902530" src="http://www.windyshade.com/wp-content/uploads/2010/09/20100902530-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902530-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902530-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902530.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/09/20100902529.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-517" title="20100902529" src="http://www.windyshade.com/wp-content/uploads/2010/09/20100902529-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902529-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/09/20100902529-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p>原色是黑色的，冲了热咖啡就变白色，键盘杯是不变色的</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x89E3;&#x51B3;firefox&#x56E0;&#x4E0D;&#x517C;&#x5BB9;&#x63D2;&#x4EF6;&#x65E0;&#x6CD5;&#x542F;&#x52A8;&#x95EE;&#x9898;</title>
        <link>https://justinyan.eth.limo/E9660B7E-6EAB-46CB-8EDC-310871F9BA5D/</link>
        <guid>https://justinyan.eth.limo/E9660B7E-6EAB-46CB-8EDC-310871F9BA5D/</guid>
        <pubDate>Thu, 02 Sep 2010 15:05:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>昨天给我的FF4装了gmail notifier结果杯具了，一直崩溃无法启动，解决办法很简单，找到这个目录：</p> 
<p>C:\Users\MapleShadow\AppData\Roaming\Mozilla\Firefox\Profiles\XXXXXXX.default\extensions</p> 
<p>XXXXXXX是随机数，每个人不同，然后找到对应的插件的文件夹，删除之，OK。</p> 
<p>有些插件不是直接显示名字而是一串十六进制码，就自己一个一个打开后用Notepad看他们的licsense咯，里面就有该插件的名字。</p> 
<p>完。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x770B;&#x5B8C;&#x82F9;&#x679C;&#x53D1;&#x5E03;&#x4F1A;&#x51E0;&#x70B9;&#x5520;&#x53E8;</title>
        <link>https://justinyan.eth.limo/65A4BEFE-182E-410D-8EC8-A1BA2A3AA99E/</link>
        <guid>https://justinyan.eth.limo/65A4BEFE-182E-410D-8EC8-A1BA2A3AA99E/</guid>
        <pubDate>Thu, 02 Sep 2010 11:01:35 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>北京时间今天凌晨１点钟，也即旧金山时间１０点钟，苹果首次视频直播Ipod发布会，我也用itouch看了，很精彩。看完不由大服Jobs的幽默以及apple的设计。</p> 
<p>发布会前半场介绍ipod全线新品，以及iTunes 10和apple ping，后半场着重介绍apple TV。关于这些产品的介绍估计现在已经满天飞了，这里枫影便不再赘述，枫影姑且谈谈apple新产品的设计。</p> 
<p>首先是Ipod系列，shuffle回归经典的button设计，更加小巧了，Nano则结合了button和voice control，把触屏带到这样一个小东西里面，超小的触屏，也搭载ios系统，支持rotation，挺可爱，只是屏幕太小了不知道按起来感觉怎样。Ipod touch则成了一个真正的Iphone without phone。搭载了两个摄像头，支持HDR photo，face time，高清屏幕，跟iphone一样。这次真的除了不能打电话就跟iphone一样了，当然，要更薄一些，比ipod touch 3还要薄一些。</p> 
<p>总体而言ipod系列全体变小变薄，屏幕更高清，这也是移动设备的设计趋势：更便携，功能更强大。Ipod的音质想来都不咋地，但是为什么还是有许多人甘拜其裙下呢？我想这与apple以设计师为主导有关。把ipod当作艺术品来雕刻，使得apple的产品如同一位绝世美人，人人爱美女，女生也爱，当然，有不同取向的群体可能会例外。</p> 
<p>apple是一位美貌佳人外带点头脑简单，google是一个风流才子但有些相貌平凡，假使他们结合处一个goople或者apgle…这是题外话了，但apple的产品每一样的设计都令人怦然心动，这里有一种极简设计的思想在里面。</p> 
<p>Apple设计的一个特点就是不给用户选择，这样用户根本就不用选择也就少了学习的成本。比方说整个iphone只有一个Home button(除了音量和sleep button)，你无从选择，这种极致的简洁带来极佳的易用性。这也是apple受欢迎的原因之一。</p> 
<p>当设计的易用性结合其华丽的外观便诞生了极美的艺术品。Apple的设计并不要求面面俱到而实际上也不可能做到面面俱到，他们专攻一点，把这一点发挥到极致，这就是他们的魅力啊。</p> 
<p>所以apple的设计有许多为人诟病的地方，但又极受欢迎。不过对于apple的种种不足又不一次完善，枫影觉得是不是不单单因为设计的关系，还有这样一种原因，就像世界冠军不一次性挑战最高极限一样而是保留实力然后每一次都能打破纪录。Apple也保留不足然后每次只完善一点，推出新品，这是不是一种营销策略呢？枫影就不得而知啦，不过apple的营销很霸道企图让用户只能使用apple的产品这倒是人尽皆知的。</p> 
<p>PS：apple发布会上的那支guitar貌似是Gibson的，apple果然财大气粗</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5728;iphone/itouch&#x4E0A;&#x4F7F;&#x7528;gfwintercepter fan q1ang</title>
        <link>https://justinyan.eth.limo/9A8D7B65-CF89-475A-82BD-EF847F371D11/</link>
        <guid>https://justinyan.eth.limo/9A8D7B65-CF89-475A-82BD-EF847F371D11/</guid>
        <pubDate>Wed, 01 Sep 2010 20:44:55 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>上次枫影推荐了一个marcro vpn不过marcro挂了，好在现在有一个Iphone/ipod touch的APP gfwintercepter在。<br /> GFWintercepter目前尚在开发阶段，代码托管在google code上，这是地址：http://code.google.com/p/gfwinterceptor/</p> 
<p>如何安装和使用我直接copy他们在gogle code上面的说明：</p> 
<h2><a name="如何安装">如何安装</a></h2> 
<p>在cydia中添加源</p> 
<h2><a name="(感谢gokeeper)"></a><a rel="nofollow" href="http://cydia.ifuckgfw.com/">http://cydia.ifuckgfw.com</a> (感谢gokeeper)</h2> 
<p>或者</p> 
<h3><a rel="nofollow" href="http://gfwinterceptor.googlecode.com/svn/trunk/cydia">http://gfwinterceptor.googlecode.com/svn/trunk/cydia</a></h3> 
<p>安装源内包既可，gfwinterceptor 依赖于 mobilesubstrate 和 preferenceloader。如果安装完毕没有在 Preference 中看到设置，说明没有正确安装。
 <!--more--></p> 
<p><img decoding="async" src="http://gfwinterceptor.googlecode.com/files/IMG_0482.PNG" alt="" /></p> 
<p><img decoding="async" src="http://gfwinterceptor.googlecode.com/files/IMG_0483.PNG" alt="" /></p> 
<p><img decoding="async" src="http://gfwinterceptor.googlecode.com/files/IMG_0484.PNG" alt="" /></p> 
<p><img decoding="async" src="http://gfwinterceptor.googlecode.com/files/IMG_0485.PNG" alt="" /></p> 
<p>内置服务器容易被墙，所以建议大家搭建自己的 api-proxy server，可以下载 gae-api-proxy-server-0.5.zip 获得源码。 GAE服务搭建方式请自行 Google, 只需要修改 app.yaml 中的应用名字就可以。</p> 
<p>感谢 @luosheng 和 @scalarize 和 @gokeeper 的倾力协助，PHP版server源码已经可以下载 api-proxy-php-0.3.zip</p> 
<p>PHP server 搭建教程 <a rel="nofollow" href="http://b.gkp.cc/2010/08/17/setup-php-proxy-server-for-gfwinterceptor/">http://b.gkp.cc/2010/08/17/setup-php-proxy-server-for-gfwinterceptor/</a></p> 
<h2><a name="如何使用">如何使用</a></h2> 
<p>安装后respring，gfwinterceptor即刻生效，可以试着打开 Twitter 应用直接使用（不用设置API，如果以前设置了可以去除）。在 Settings.app 会出现 gfwinterceptor 的设置选项。</p> 
<p><img decoding="async" src="http://gfwinterceptor.googlecode.com/files/IMG_0496.PNG" alt="" /></p> 
<p><img decoding="async" src="http://gfwinterceptor.googlecode.com/files/IMG_0497.PNG" alt="" /></p> 
<p>本来GFWintercepter已经出来很久了，但是枫影怕会跟marcro一样，如果知道的人多了就会杯具掉，而且是在测试中，但是今天我在推上问过gfwintercepter的twiiter号，回复是可以的，所以才敢分享一下。</p> 
<p>本软件枫影一直在用，可以令twitter、facebook等应用程序fan q1ang，safari也能浏览被q1ang网页。各位因为basi oauth关闭而上不了twitter的童鞋可以下载这个喽～！</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x671F;&#x5F85;&#x9080;&#x8BF7;&#x4E2D;&#xFF0C;&#x4E0A;&#x5E1D;&#x4FDD;&#x4F51;&#x6211;</title>
        <link>https://justinyan.eth.limo/5FD58A2F-8BA5-4194-8312-6D30C11A045B/</link>
        <guid>https://justinyan.eth.limo/5FD58A2F-8BA5-4194-8312-6D30C11A045B/</guid>
        <pubDate>Wed, 01 Sep 2010 00:22:31 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>报名参加了webrebuild的第四届年会，不知道会不会收到邀请邮件呢，上帝保佑我吧，很想去看看啊～</p> 
<p><a href="http://www.webrebuild.org/" target="_blank"><img decoding="async" loading="lazy" src="http://www.webrebuild.org/style/screen/default/468x60.jpg" width="468" height="60" alt="webrebuild.org第四届年会——金秋四城联动" /></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E0D;&#x7528;SHSH&#xFF0C;&#x8BA9;iPhone 4 3GS&#x4ECE;4.02&#x964D;&#x7EA7;&#x81F3;4.01&#x6216;4.0</title>
        <link>https://justinyan.eth.limo/C9351346-25CB-4817-83B5-E533959AA845/</link>
        <guid>https://justinyan.eth.limo/C9351346-25CB-4817-83B5-E533959AA845/</guid>
        <pubDate>Tue, 31 Aug 2010 23:04:25 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><span style="color: #ff0000;">[在weiphone的跟帖有很多人都说无效，这个原文已经声明了，概率是随机的，并且对早已内置4.0.2固件的iphone 4是无效的]</span></p> 
<p>前 些天Dev Team刚说不发布4.02的越狱程序，今晚一看他们就tweet了一条新闻：How to Downgrade 4.02 to 4.01 or 4.0 withou SHSH Blobs。虽然tweet上附的短网址没能打开，但是BigBoss上面已有这样的文章。</p> 
<p>全文翻译：<br /> 现在仍有可能让部分没有保存4.0.1或者更早版本的SHSH的iphone 4 3GS 3G用户从</p> 
<p>4.0.2或者更高版本的固件降级，以便使用Jailbreakme来越狱。新的iPhone4用户会比</p> 
<p>较杯具因为它们早已内置4.0,2的固件，所以除非有新的针对4.0.2的工具出行不然是</p> 
<p>没有办法的了。
 <!--more--></p> 
<p>一个不用SHSH就能降级的方法已经放出。在Prominent Devs的证实下这将成为一条大</p> 
<p>新闻。显然地，你可以降级4.0.2到4.0.1或者4.0，方法是差不多的。目前只有几个个</p> 
<p>例报告它们已经成功地通过这种方法降级，也就是说，是随机概率的。尽管这方法并</p> 
<p>未被测试过但是你仍然可以试一下，不过有一点风险。<br /> 有疑惑的童鞋可以直接到bigboss原文去看：<a href="http://www.crispytech.com/2010/08/30/downgrade-4-0-2-4-0-1-without-shsh-blobs-iphone-4-3gs/" target="_blank">http://www.crispytech.com/2010/08/30/downgrade-4-0-2-4-0-1-without-shsh-blobs-iphone-4-3gs/</a> [严重声明，本人的ipod touch并未升级到4.02，所以这方法本人并未亲自试过，各位想试试的锋友需慎重！！！！]</p> 
<p>步骤是降级4.0.2至4.0.1，4.0的大家就依样画葫芦啦</p> 
<p>1.下载iPhone的4.0.1固件和4.0.2固件<br /> 2.现在你必须解压.ipsw文件，可以用7-zip或者类似解压软件<br /> 3.用文本编辑器比如记事本打开 buildmanifest.plist 和 restore.plist 这两个文件，搜索并替换8A306 为 8A400。<br /> 4.用解压软件打开你刚刚下载的4.0.2的固件，不必解压，直接打开即可。<br /> 5.把4.0.1固件(刚解压)的文件夹里面所有的文件拖放到你打开的4.0.2固件的窗口里。<br /> 6.删除所有以 002 结尾的 dmg文件，小心点，别把 001结尾的 dmg文件也删了。<br /> 7.保存这个ipsw文件然后连上你的iPhone 4 3GS, 进入 DFU 模式。<br /> 8.然后用你刚刚保存好的ipsw文件刷一遍。</p> 
<p>完。</p> 
<p>部分原文如下：</p> 
<ol> 
 <blockquote> 
  <li>Download <a href="http://www.crispytech.com/2010/07/16/iphone-ios-4-0-1-download-iphone-4-3gs-ipod-touch-3g-2g-update-release/" target="_blank">4.0.1 Firmware</a> and <a href="http://www.crispytech.com/2010/08/11/download-iphone-4-0-2-and-ipod-touch-4-0-2-firmware-update/" target="_blank">4.0.2 firmware</a> for iPhone.</li> 
  <li>You have to extract the IPSW file to some folder using a utility like 7-Zip or any other Compressor Handler.</li> 
  <li>Open files buildmanifest.plist and restore.plist with a Text Editor like Notepad. Use Search and Replace feature to substitute 8A306 with 8A400.</li> 
  <li>Open the already downloaded 4.0.2 firmware with 7-Zip or any other utility. You don’t need to extract it.</li> 
  <li>Grab all the files from extracted 4.0.1 firmware folder and drop them in the opened 4.0.2 firmware Window which</li> 
  <li>Then delete all the dmg files that end with 002. Be careful, don’t delete dmg files with 001 at end.</li> 
  <li>Save the iPSW file and Connect your iPhone 4 3GS in DFU mode. [<a href="http://www.iclarified.com/entry/index.php?enid=1034">How To</a>]</li> 
  <li>Then restore to the 4.0.2 firmware which has been just saved.</li> 
 </blockquote> 
</ol>
        ]]></description>
    </item>
    
    <item>
        <title>Ophoto&#x9996;&#x9875;&#x8BBE;&#x8BA1;&#x4E00;&#x679A;</title>
        <link>https://justinyan.eth.limo/EE683D18-F276-4144-86F5-32B38C66C4FB/</link>
        <guid>https://justinyan.eth.limo/EE683D18-F276-4144-86F5-32B38C66C4FB/</guid>
        <pubDate>Tue, 31 Aug 2010 22:45:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>OPhoto首页设计一枚，暂定以少女时代为DEMO</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/08/preview.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-490" title="preview" src="http://www.windyshade.com/wp-content/uploads/2010/08/preview-300x140.jpg" alt="" width="300" height="140" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/preview-300x140.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/08/preview-1024x480.jpg 1024w, https://cdn.justinbot.com/wp-content/uploads/2010/08/preview.jpg 1280w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>Transform your iphone into powerful PPC</title>
        <link>https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/</link>
        <guid>https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/</guid>
        <pubDate>Sat, 28 Aug 2010 19:08:19 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><a href="../wp-content/uploads/2010/05/specs_dimensions20080909.jpg"><img decoding="async" title="ipod touch" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/specs_dimensions20080909.jpg" alt="" /></a></p> 
<p>I had posted a article about improve your iphone &amp; ipod touch ,make it a powerful PPC on April.And now I’d like to rewrite it into English version, and add some new feature such as something about IOS4. Though my English is very poor, hope your guys would love this post. Thanks.</p> 
<p>So let’s start it now.
 <!--more--></p> 
<p><strong>Chapter 0.Prepare</strong></p> 
<p><strong>1)Jailbreak and Cydia</strong></p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0001.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0001-200x300.png" alt="" /></a></p> 
<p>We all know that apple had limit some useful iphone&amp;ipod touch’s functions, such as background task , flash, and so on. So I would like to tell you how to make your iphone becom powerful, it can support background tasks and become more beautiful, actually we’ll release all it’s power now.</p> 
<p>First of all, your iphone should be jailbreak.This article is write for firmware 3.13, IOS4 is a bit different from 3.13, and I’ve written another article for IOS4, if you don’t know Chinese, please wait till I translate it.</p> 
<p>So, now we should jailbreak your iphone, if you don’t know how to jailbreak ,just google it and ,it’s so easy. You can use spirit, ultrasnow or jailbreakme to jailbreak your machine. These software are all very easy to use.</p> 
<p>And then we assume that your iphone is jialbreaked, you should see a cydia icon on your springboard like what this picture shows below.(ps: I’ve installed a software called five-icon-dock so my dock can shows five icons, if you’re interested on it ,you can open your cydia and search it , it’s free.)</p> 
<p>Cydia is just like App store, but the software on it can be only installed on the jailbreak machines. OK, now you may need a WIFI or 3G network, make sure that your iphone is connected to the internet, then open Cydia , <strong>manage-&gt;Edit-&gt;Add</strong>, add several new sources to your source list like below. The source can be simply knew as the sites that supply apps, if you don’t know any thing about UNIX or MACOS, it doesn’t matter, just add sources and then you can download many free software.</p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0014.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0014-200x300.png" alt="" /></a></p> 
<p>Here is the source list that you should add:</p> 
<p><a href="http://app.weiphone.com/cydia/">http://app.weiphone.com/cydia/</a> weiphone source,威锋网提供的源<br /> <a href="http://apt.weiphone.com/cydia/">http://apt.weiphone.com/cydia/</a> weiphone source again,威锋的新源<br /> <a href="http://d.imobilecinema.com/">http://d.imobilecinema.com/</a> imobliecinema source, IMC源<br /> <a href="http://www.sinfuliphonerepo.com/">http://www.sinfuliphonerepo.com</a> sinful source, you can find out many cracked software on it, even those paid software on Cydia. sinful 源，里面有大量破解软件，包括cydia的收费软件的破解版</p> 
<p><strong>After that, search ipa patch and afc2 patch on cydia and then install them. Important~!</strong></p> 
<p><strong>And then install cydelete, use the same way. </strong>Cydelete is a software that allow you to delete your software which installed through Cydia with the same way as your normal apps. Just press your gapp icon on the spring board for a second and then all the icons would be shaking, then press the “X” button on the left top, the software then be deleted.</p> 
<p><strong>2)install iFile, iFunBox and install0us</strong></p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0015.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0015-200x300.png" alt="" /></a></p> 
<p>After prepared your Cydia, we’ll now start to install some other software. Now we still cannot install deb and ipa packages though we had cydia. But most software we download through the internet are ipa format. So we’ll use iFile+iFunBox+install0us these software to help us install more apps. BTW, if you do know there is a software called ”(91assistant)91助手”, please don’t use it ,it could make your iphone crash ,crash , and crash.</p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0017.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0017-200x300.png" alt="" /></a></p> 
<p>So now we search cydia and install iFile and install0us. We’ll use iFile to install deb packages, and install0us to install ipa packages.(ps: The last version of ifile become a paid app on cydia, so you need to chose the sinful source one if you don’t want to pay for it,it’s cracked.). Then download iFunBox to your computer. It’s a desktop software, just google it and get it ,it’s free. We’ll use it to transfer files between your iphone and computer.</p> 
<p><a href="../wp-content/uploads/2010/05/ifunbox.jpg"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/ifunbox-300x178.jpg" alt="" /></a></p> 
<p>After that you can transfer the ipa packages into your iphone ,in this path: var/mobile/Downloads, and open install0us on your iphone, you’ll find that the ipa shows on it, then click it and installed, it’s easy.</p> 
<p>It’s the same way to install deb packages use ifunbox and ifle. And ifle is more powerful than installous ,it can manage all ifles on your iphone ,so be careful , don’t delete any important files on your iphone, it may have serious consequences.</p> 
<p>Then is all for prepare step , we’re ready for the transformation now.</p> 
<p><strong>Chapter 1.System transformation </strong></p> 
<p>This chapter is about some system functions, break apple’s limitation on iphone, make it powerful.</p> 
<p><strong>1)backgrounder+Proswitcher+Activator</strong></p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0013.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0013-200x300.png" alt="" /></a></p> 
<p>make your iphone support multitask and app switch.</p> 
<p>Iphone or ipod touch could not run app on the background ,many people know that. In fact ,apple is a company that lead by designers ,so they would only publish any thing that they though fixable for users. Iphone 3GS/ipod touch 3G or older version are not powerful enough to support multiple task, so they won’t let these functions release. And iphone 4 is support multi task now.</p> 
<p>Tough apple limit these functions ,we can still use it. First, download and install backgrounder, proswitcher, activator through Cydia. Somebody may rather to use mQuickDo, but not me. Anyone who is interested on it can try it.</p> 
<p>Well, now let’s change the settings of these apps. I give my settings below, if you don’t like it ,you can set it as your way. ^_^</p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0003.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0003-200x300.png" alt="" /></a></p> 
<p>Open backgrounder-&gt;control, cancel the default hotkey(home button-&gt;shorthold), and then select “sleep button-&gt;shorthold” to change the deault hot key. After that if you hold the sleep button for a short while ,the screen will display this message:”background enable”, then is running on background. If you would to cancel the background running, hold the sleep button again , it should display ”background  disabled”.</p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0007.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0007-200x300.png" alt="" /></a></p> 
<p>Next we’ll set proswitcher. After installed the proswitcher, open “settings-&gt;proswitcher-&gt;activation methods” to set the hot key that you want to start the proswitcher. I set “home button-&gt;short hold” as default. Here is a picture below:</p> 
<p><strong>2)orbit to make a spring board overview</strong></p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0018.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0018-200x300.png" alt="" /></a></p> 
<p>Sometimes we may installed too many apps and get tired for turning pages on the spring board. So we’ll use orbit to make a fast switch between the spring board pages.</p> 
<p>Set the “settings-&gt;activator-&gt;home screen-&gt;home button-&gt;double press-&gt;orbit” so orbit would be start when you double press the home button on the screen. If you had set double press on home button to start ipod , is OK, ipod would display more a button to start orbit on the ipod control panel.</p> 
<p><strong> </strong></p> 
<p><strong>3)SBSettings</strong></p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0019.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0019-200x300.png" alt="" /></a></p> 
<p>Well it’s SBSettings now. WTF is this? Well is a software the content many on-off to help you turn on or off some functions of your iphone. Before the IOS4 release, iphone got no switch to turn off the screen rotation, so when I’m reading books on my bed, is a really a tired work. Using SBS, had installed a switch called “rotation”, anytime when you swipe the status bar, it come out a control board and you can turn on or off any functions that you want.</p> 
<p>Though IOS4 can turn off rotation, SBS still get more useful functions, like autolock, wifi, buletooh, and so on.</p> 
<p>Here are some recommend switches:</p> 
<p>Rotation</p> 
<p>Autolock</p> 
<p>Keepawake</p> 
<p><strong>4)iMoblieCinema</strong></p> 
<p>Iphone and ipod touch still do not support flash, even on IOS4.</p> 
<p>Add the IMC source I’ve introduced at the beginning, and then enter this source on Cydia, find imobilecinema and install it. So your iphone can watch some online flash video now~!</p> 
<p>A software called Frash can also play flash but not much. And is IOS4 only.</p> 
<p><strong>5)Chinese input method</strong></p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0020.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0020-200x300.png" alt="" /></a></p> 
<p>I recommend Baidui input method. The default Chinese input method is so disappointing that I cannot say any thing.</p> 
<p><strong>6) iBlueNova, Good Reader, Stanza,Safari download manager<br /> </strong></p> 
<p><strong><a href="../wp-content/uploads/2010/05/IMG_0021.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0021-200x300.png" alt="" /></a></strong></p> 
<p>iBlueNova can transfer files between your iphone and any bluetooth device, er, OK , I just test it with my NOKIA mobile phone , and I don’t know if is work between computer and iphone, but I think it should work.</p> 
<p>About goodreader,  goodreader can open almost document, like PPT, doc, all kinds of pictures, pdf, and so on, it’s really a awesome app.</p> 
<p>stanza is a ebook reader.</p> 
<p>safari download manager can make your mobile safari download any files through the internet</p> 
<p><strong> </strong></p> 
<p><strong>7)aNote, iXpenselt</strong></p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0033.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0033-200x300.png" alt="" /></a></p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0031.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0031-200x300.png" alt="" /></a></p> 
<p>Awesome note is a very popular app and it’s really very useful.</p> 
<p>iXpenselt can help you record the expend and income every day and is useful ,too.</p> 
<p><strong>8)volumeButtonControl</strong></p> 
<p><a href="../wp-content/uploads/2010/05/IMG_0035.png"><img decoding="async" src="https://justinyan.eth.limo/7B16D56C-6343-47ED-ABB7-413D1BFF9D39/../wp-content/uploads/2010/05/IMG_0035-200x300.png" alt="" /></a></p> 
<p>Here is the last one. This app make your iphone’s volume buttons become the controller of ipod. Short hold of the loud button, ipod will play the next song, short hold both buttons ,ipod would be pause/play. Its useful.</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x676F;&#x5177;&#x65B0;&#x95FB;&#x4E00;&#x679A;&#x2014;&#x2014;Dev Team&#x5BA3;&#x5E03;&#x5C06;&#x4E0D;&#x4F1A;&#x53D1;&#x5E03;&#x53D1;&#x5E03;4.0.2/3.2.2&#x7684;&#x8D8A;&#x72F1;</title>
        <link>https://justinyan.eth.limo/8C504838-A74D-4745-A1A9-BAB0E173DF69/</link>
        <guid>https://justinyan.eth.limo/8C504838-A74D-4745-A1A9-BAB0E173DF69/</guid>
        <pubDate>Thu, 26 Aug 2010 19:51:22 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>jailbreakme的开发团队Dev Team刚刚在他们的博客上宣布将不会发布发布4.0.2/3.2.2的越狱</p> 
<p>这是原文地址：</p> 
<p>http://blog.iphone-dev.org/post/1013332740/winning-moves#idc-cover</p> 
<p>附上部分原文：</p> 
<blockquote>
 <p>So now, people will begin to ask: <strong>will there be a jailbreak for devices that shipped with 4.0.2/3.2.2, out of the box?</strong></p> 
 <p>No, there won’t be.  FW 4.0.2/3.2.2 was *only* released to fix the jailbreakme hole.  With FW 4.1 still in its beta stages, it makes no sense to escalate the “cat &amp; mouse” with Apple for FW updates that only fix the jailbreak holes. To quote WOPR, “the only winning move is not to play”.</p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E00;&#x53E5;&#x8BDD;&#x65E7;&#x95FB;&#xFF1A;&#x82F9;&#x679C;&#x76AE;520&#x9884;&#x8BA1;9&#x6708;&#x4E0A;&#x5E02;</title>
        <link>https://justinyan.eth.limo/AAA54AFE-9C68-446B-ACAF-C3178A581E97/</link>
        <guid>https://justinyan.eth.limo/AAA54AFE-9C68-446B-ACAF-C3178A581E97/</guid>
        <pubDate>Thu, 26 Aug 2010 09:21:06 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>苹果皮520暂定9月上市。上次有人说难产不过我看太平洋都有评测出来了苹果皮应该会上市的吧。</p> 
<p>给个太平洋的评测链接：</p> 
<p>http://tech.163.com/mobile/10/0805/06/6DA8MF9R00112K8F.html</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5077;&#x94B1;&#x732B;&#x50A8;&#x94B1;&#x7F50;</title>
        <link>https://justinyan.eth.limo/9AB16158-B950-46A9-8381-DC916F931359/</link>
        <guid>https://justinyan.eth.limo/9AB16158-B950-46A9-8381-DC916F931359/</guid>
        <pubDate>Thu, 26 Aug 2010 07:44:43 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>这是最近出的一款储钱罐，叫做宅家坊偷钱猫，超可爱的，好早前就看过新闻只是今天是第一次看到视频，贴一个上来。</p> 
<p>京东和淘宝都有卖，不过正品的比较贵，盗版的只要50块左右。</p> 
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="src" value="http://player.youku.com/player.php/sid/XMTk2MTI2NDA4/v.swf" /><param name="quality" value="high" /></object></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x7EA2;&#x8336;&#x65F6;&#x95F4;</title>
        <link>https://justinyan.eth.limo/302909D0-DC88-43BB-8918-F4FF71F08F62/</link>
        <guid>https://justinyan.eth.limo/302909D0-DC88-43BB-8918-F4FF71F08F62/</guid>
        <pubDate>Wed, 25 Aug 2010 14:35:17 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>暑末的时间，难得的清闲。泡一杯红茶，刚收拾干净的宿舍，捧一本《一九八四》，虽不是什么美丽的诗册散文，但是久违的书香袭来，顿觉生活轻松了许多。</p> 
<p>尽管屋外工地的嘈杂惹人烦厌，戴上耳机，便只剩下押尾光太郎的美妙吉他，红茶的味道还不错，烟雾缭绕。想起After School Tea Time,动画中的几位轻音少女可爱得无以复加，起初是因为找寻吉他主题的动画才看得，但是现在已经被萌住了。番茄炒蛋的Epiphone，我同学还真有一把，呵呵。</p> 
<p>刚刚整理了宿舍，书架上的书也搬动了一下，把经常看的都放到手边来了。《我们台湾这些年》、《七十年代》、《希腊神话》、《动物庄园》、《一九八四》，民主类的书很多，诗词的也有，四书五经也有，自我提升类也有，太多以至于我都没能全看完。其实到大学后，真正静下心来好好读一本书的时间是没有了。《七十年代》也多是在课堂上看的。</p> 
<p>趁着离开学尚有几日闲暇，就多看几页吧，也该多动动笔了，这两年，写代码远多过写文字，兴许写的比弹的吉他还要少。宿舍有室友要考GRE，现在也没机会多弹了，得找个安静的地方去。中心湖是个不错的地方，只是又怕被看到的人笑话，想要找同学一起去，都还没回来，等他们回来再说吧。</p> 
<p>关于Whisper，本来有三名成员，但是现在看来可能后面很长一段时间会只有我一个人独力开发，也好，本来一直就一个人。得找找有热情的人加入才行啊。</p> 
<p>技术也好文学也好音乐也好，都是很好的东西，年轻的生命要享有年轻的乐趣。红茶已无余烟。</p> 
<p>近两年国内发生的憾事很多，几乎每天都能看到可怕的新闻。其实一直都在发生，近些年曝光得多了。如果这样想兴许不太对劲，不仅是这些年曝光率比以前高，而且是事故的发生更加频繁而且规模更大。制度的不合理使得天怒人怨呀，人类创建国家就是为了能让所有人更好的生活，而不是为了金字塔上的那几个人来享受的。我们是为了更好的生活才让别人来管理我们的，别人的权力应该来自于我们，别人的权力不是天生的，人生下来没有等级之分。只是中国几千年的历史上从未有过真正的民主，这是一大憾事呀，不知何时中国才能有真正的民主。</p> 
<p>牢骚毕。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x67AB;&#x5F71;&#x65B0;&#x8BBE;&#x8BA1;&#xFF0C;whisper&#x4E3B;&#x9875;&#x4E00;&#x679A;</title>
        <link>https://justinyan.eth.limo/5755D39B-B0C9-4FCD-A56C-56F14CB20842/</link>
        <guid>https://justinyan.eth.limo/5755D39B-B0C9-4FCD-A56C-56F14CB20842/</guid>
        <pubDate>Mon, 23 Aug 2010 03:12:50 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>晚上睡不着起来随便画了几下，大概就是我之前预想的whisper的主页的框架。</p> 
<p>暑假whisper成员都挺忙，以后要慢慢把whisper架起来</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/08/index.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-464" title="index" src="http://www.windyshade.com/wp-content/uploads/2010/08/index-213x300.jpg" alt="" width="213" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/index-213x300.jpg 213w, https://cdn.justinbot.com/wp-content/uploads/2010/08/index-728x1024.jpg 728w, https://cdn.justinbot.com/wp-content/uploads/2010/08/index.jpg 1280w" sizes="(max-width: 213px) 100vw, 213px" /></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6691;&#x672B;&#x7684;&#x7D6E;&#x53E8;</title>
        <link>https://justinyan.eth.limo/A0E26C02-BFEC-4ED3-85D7-927448D39A1B/</link>
        <guid>https://justinyan.eth.limo/A0E26C02-BFEC-4ED3-85D7-927448D39A1B/</guid>
        <pubDate>Sun, 22 Aug 2010 21:15:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>all right，转眼又一年，去年的现在还跟着师兄在实验室写代码，今年倒好，一个人写得一塌糊涂。若要说暑假的收获，大概最令我开心的就是新琴两把了吧。<br /> 一把二手的电吉他（大概不叫新琴）cort X6，还一把新的木吉他，cort Earth 70。果然还是新琴好哇，只可惜哥穷不够琴买全套的电吉他配件，如果当时能聪明点不买音箱大概就没问题了，就是SB一个买了个音箱都没地儿用。算了，电吉他也练，木吉他也练。<br /> cort E70还是很不错的，对得起它的价格。之前的旧琴弦太硬，弦距又高，做普通练习还可以，但是一弹到高品就很杯具了，换琴的时候基本上已经是滑弦不能的状态。拿到新琴之后最大的感慨居然是佩服自己用那把破琴玩了那么久手居然没残，哈哈。<br /> 趁着琴还新的时候，上两张靓照吧。<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/08/20100822528.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-456" title="20100822528" src="http://www.windyshade.com/wp-content/uploads/2010/08/20100822528-225x300.jpg" alt="" width="225" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822528-225x300.jpg 225w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822528-768x1024.jpg 768w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822528.jpg 1944w" sizes="(max-width: 225px) 100vw, 225px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/08/20100822527.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-455" title="20100822527" src="http://www.windyshade.com/wp-content/uploads/2010/08/20100822527-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822527-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822527-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/08/20100822526.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-454" title="20100822526" src="http://www.windyshade.com/wp-content/uploads/2010/08/20100822526-225x300.jpg" alt="" width="225" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822526-225x300.jpg 225w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822526-768x1024.jpg 768w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822526.jpg 1944w" sizes="(max-width: 225px) 100vw, 225px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/08/20100822525.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-453" title="20100822525" src="http://www.windyshade.com/wp-content/uploads/2010/08/20100822525-225x300.jpg" alt="" width="225" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822525-225x300.jpg 225w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822525-768x1024.jpg 768w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822525.jpg 1944w" sizes="(max-width: 225px) 100vw, 225px" /></a><a href="http://www.windyshade.com/wp-content/uploads/2010/08/20100822524.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-461" title="20100822524" src="http://www.windyshade.com/wp-content/uploads/2010/08/20100822524-225x300.jpg" alt="" width="225" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822524-225x300.jpg 225w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822524-768x1024.jpg 768w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822524.jpg 1944w" sizes="(max-width: 225px) 100vw, 225px" /></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/08/20100822523.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-460" title="20100822523" src="http://www.windyshade.com/wp-content/uploads/2010/08/20100822523-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822523-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822523-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/08/20100822522.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-459" title="20100822522" src="http://www.windyshade.com/wp-content/uploads/2010/08/20100822522-300x225.jpg" alt="" width="300" height="225" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822522-300x225.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822522-1024x768.jpg 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/08/20100822521.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-458" title="20100822521" src="http://www.windyshade.com/wp-content/uploads/2010/08/20100822521-225x300.jpg" alt="" width="225" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822521-225x300.jpg 225w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822521-768x1024.jpg 768w, https://cdn.justinbot.com/wp-content/uploads/2010/08/20100822521.jpg 1944w" sizes="(max-width: 225px) 100vw, 225px" /></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x65B0;&#x7248;picasa face movie&#x529F;&#x80FD;&#x5C0F;&#x6D4B;</title>
        <link>https://justinyan.eth.limo/C8F08EAA-A4BE-4CD8-A382-E1DEAC86EDDB/</link>
        <guid>https://justinyan.eth.limo/C8F08EAA-A4BE-4CD8-A382-E1DEAC86EDDB/</guid>
        <pubDate>Thu, 19 Aug 2010 11:22:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>新版的picasa刚放出来不久，小测了一下face movie功能，感觉google真是太强大了～！</p> 
<p>这是我用face movie做的视频，图片是少女时代的泰妍～</p> 
<p>又一枚：</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E00;&#x4EFD;IOS4&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x517C;&#x5BB9;&#x6027;&#x5217;&#x8868;</title>
        <link>https://justinyan.eth.limo/9090904E-1101-40AE-A17E-71F5E1BDFDFB/</link>
        <guid>https://justinyan.eth.limo/9090904E-1101-40AE-A17E-71F5E1BDFDFB/</guid>
        <pubDate>Sun, 15 Aug 2010 00:22:42 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><a href="http://modmyi.com/forums/general-iphone-chat/714270-official-ios-4-0-compatibility-list.html" target="_blank">http://modmyi.com/forums/general-iphone-chat/714270-official-ios-4-0-compatibility-list.html</a></p> 
<p>很齐全。有兼容性问题的各位可以直接在这个里面查找</p>
        ]]></description>
    </item>
    
    <item>
        <title>iphone/ipod touch IOS4&#x8D8A;&#x72F1;&#x540E;&#x5FC3;&#x5F97;&#x53CA;&#x8F6F;&#x4EF6;&#x4ECB;&#x7ECD;</title>
        <link>https://justinyan.eth.limo/40AEFE3F-6671-402C-B40A-CF1986BCBD38/</link>
        <guid>https://justinyan.eth.limo/40AEFE3F-6671-402C-B40A-CF1986BCBD38/</guid>
        <pubDate>Sat, 14 Aug 2010 19:34:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>好吧我必须承认自己实在懒得可以，备考一个月，考后一个月，一篇博文不写，IOS4都越狱好久了自己都没去玩玩。所以，今天要写一篇好东西出来才行啊。</p> 
<p>昨晚咧，枫影拿着自己的ipod touch 3代 32G刷了一下IOS4.0，顺便小越狱了一下，IOS4魅力无穷啊，今儿就写点心得之类的东西。</p> 
<p><strong>一、越狱</strong></p> 
<p>首先到这里：<a href="http://www.felixbruns.de/iPod/firmware/" target="_blank">http://www.felixbruns.de/iPod/firmware/</a></p> 
<p>下载对应版本的IOS4，<span style="color: #ff0000;">注意，截至本文发布时，ipod touch IOS4.0.2尚不能用jailbreakme破解。</span></p> 
<p><span style="color: #ff0000;">本文的例子是ipod touch 3代32G，IOS4.0系统，用的是jailbreakme越狱。</span></p> 
<p>越狱前机子的<span style="color: #ff0000;">itunes要升级到9.2以上</span>，否则恢复过程会出现错误13，本人用的是9.2.1。</p> 
<p>越狱教程可以参考这里：</p> 
<p><a href="http://bbs.weiphone.com/read-htm-tid-858509.html">http://bbs.weiphone.com/read-htm-tid-858509.html</a></p> 
<p>枫影用的是jailbreakme一键越狱，先在itunes里面shift+恢复把机子刷成IOS4.0之后再用touch的safari访问jailbreakme.com，再滑动越狱就行了。</p> 
<p><strong>二、IOS4</strong><strong>之不同
  <!--more--></strong></p> 
<p>之前枫影发过两篇越狱必看的文章，是针对3.13写的。IOS4又跟3.13有点不一样，这里把不同点列出来，剩下的枫影就懒得再写一遍了，在文末附一份软件列表就是了。想要看详细的童鞋移步这里：http://www.windyshade.com/post/101</p> 
<p>和这里：http://www.windyshade.com/post/268</p> 
<p>不过请先看完下面几点，因为有些程序IOS4是不兼容的。</p> 
<p><strong>1</strong><strong>、download manager</strong><strong>不能用</strong></p> 
<p>3.13的safari下载插件在IOS4里面不能用，有锋友说iphone 3G的IOS4.0.1能用download plugin代替manager，枫影下载了一个但是仍然不能下载。只得等这个软件更新了。</p> 
<p>暂时替代软件downloadPro或者自带下载工具的浏览器，如UCWEB。</p> 
<p><strong>2</strong><strong>、flash</strong><strong>视频播放</strong></p> 
<p>最近出了一个叫frash的软件，是comex从andorid平台移植过来的，但是枫影测试后发现只能播放简单的flash动画，youku、土豆的视频是播不了的。所以只能等frash出新版了。目前只有0.02版。</p> 
<p>以前的imobilecinema还能装，但是播土豆的视频播不了，播优酷的则显示没有能播放的MP4格式。暂时IOS4的touch就看不了在线flash了。</p> 
<p><strong>3</strong><strong>、后台多任务。</strong></p> 
<p>IOS4自带的后台多任务只支持一小部分程序，而且只支持音频播放等部分组件。</p> 
<p>而ProSwitcher目前版本与IOS4不兼容，安装后会一直崩溃。</p> 
<p>所以枫影用了backgrounder+IOS4自带的后台任务来实现多任务。</p> 
<p>IOS4的后台快捷键是双击HOME键出现后台程序列表，但是里面有很多不是正在后台运行的，而是最近使用程序。使用remove Recent这个软件就可以清除不是正在后台运行的软件。</p> 
<p>在Cydia里面搜索安装后，再在设置中设置activator-&gt;any where-&gt;short hold HOME键为backgrounder。这样打开不支持IOS4后台的程序后，使用backgrounder也能实现后台运行了。而且IOS4自带的多任务切换还是很不错的。</p> 
<p><strong>4</strong><strong>、壁纸设置</strong></p> 
<p>现在IOS4可以设置锁屏壁纸和HOME Screen壁纸。只要在设置中选wall paper然后再选图片就行了。可以设置为锁屏、home screen或者两个都是。</p> 
<p><strong>5</strong><strong>、iBooks</strong></p> 
<p>IOS4一个吸引我的地方就是iBooks，只有IOS4能安装。枫影刷完IOS4之后立刻去下载了一个，很不错。以前一直用stanza看书，现在换iBooks感觉还是很有一拼的。尤其是iBooks的library界面，那叫一个帅啊。就是翻书的时候似乎有点卡。兴许是本人机子的原因。</p> 
<p><strong>6</strong><strong>、terminal</strong></p> 
<p>终端命令行，之前3.13能用的那个IOS4已经不能用了。这个是支持IOS4版本的terminal：<a href="http://u.115.com/file/f1deefeac3" target="_blank">http://u.115.com/file/f1deefeac3</a></p> 
<p><strong>7</strong><strong>、rotation</strong></p> 
<p>IOS4自带有横屏锁，没有必要安装rotation。安装后反而会冲突。</p> 
<p>使用自带横屏锁：双击Home键，把列表左边的拉出来，第一个就是rotation后面的是ipod的控制。</p> 
<p><strong>8</strong><strong>、volumeButtonExtender</strong></p> 
<p>IOS4双击HOME键就有ipod的控制，所以不太必要装这个软件。而且这个软件安装后是会冲突的，直接死机，所以还是别装的好。</p> 
<p><strong>9</strong><strong>、Orbit</strong></p> 
<p>Orbit枫影没有测试过兼容性，不过因为IOS4有自带文件夹功能，就没必要用Orbit了。</p> 
<p>新建文件夹只要把一个软件的图标拖到另一个软件的图标上，就会出现文件夹了。</p> 
<p>只要把文件夹里面的图标全部拖出来文件夹就自动删除了。</p> 
<p><strong>三、几个以前两篇里面没有强调的软件</strong></p> 
<p><strong>1</strong><strong>、百度输入法</strong></p> 
<p>枫影已经没再用wefit了，百度输入法很好用，除此没有别的说的。</p> 
<p><strong>2</strong><strong>、iBlueNova</strong></p> 
<p>蓝牙传输工具，很好很强大。<strong>[IOS4暂时无法使用]</strong></p> 
<p><strong>4</strong><strong>、Goodreader</strong></p> 
<p>可以阅读所有office文件，阅读图片，还自带浏览器，文件传输可以使用USB数据线或者使用电脑WIFI传输。枫影备考的时候全靠这玩意儿了。</p> 
<p><strong>5</strong><strong>、Oplayer</strong></p> 
<p>好东西，直接支持多格式文件播放，但是高清模式下会卡，在设置中将配置调低就不会卡了，看看注重内容的节目比较好，注重画面的就太卡了。</p> 
<p><strong>6</strong><strong>、Air Video</strong><strong>、Air Mouse</strong><strong>、iRemote</strong></p> 
<p>Air video可以用iphone/touch直接看电脑里的视频，多种格式自动转换，边转边看，一点也不卡，超强大，枫影播个近1G的高清MV也不卡。</p> 
<p>Air Mouse，把iphone/touch当鼠标用，还可以控制桌面程序，手头没有鼠标的时候可以凑活，躺在床上看电影的时候也可以用用。</p> 
<p>iRemote，直接用iphone/touch控制你的电脑，在屏幕中显示电脑屏幕里的东西，很强大。</p> 
<p>这三个枫影要另外整一篇文章来介绍，挺好用的。</p> 
<p><strong>7</strong><strong>、Reeder</strong></p> 
<p>Google reader的iphone版，界面简洁清爽，配色适合阅读，功能强大。平时看google reader的时候开着网页看也可以，看这个也可以。在车上的时候感觉看这个软件的配色更舒服。</p> 
<p><strong>四、一份软件列表</strong></p> 
<p>介绍从简，想要知道详细的如上述，看前两篇文章。</p> 
<p><span style="color: #ff0000;">Anote：超强记事本</span></p> 
<p><span style="color: #ff0000;">iXpenselt：强大的理财工具</span></p> 
<p>Appbox pro：汇合多种常用工具（枫影主要用里面的手电筒=.=）</p> 
<p><span style="color: #ff0000;">installOus：必备工具，破解后安装IPA用</span></p> 
<p>TabToolkit：看吉他谱的工具</p> 
<p>UCweb：无需多言。</p> 
<p><span style="color: #ff0000;">iBlueNova：蓝牙传输超强软件。</span><strong>[IOS4暂时无法使用]</strong></p> 
<p><span style="color: #ff0000;">iFile：必备工具，破解后用以管理文件。</span></p> 
<p><span style="color: #ff0000;">GoodReader：超强阅读工具，强推之。</span></p> 
<p>金山词霸：无需多言</p> 
<p>Terminal：有新版本。</p> 
<p>人人：无需多言</p> 
<p>QQ：无需多言</p> 
<p>libFetion：无需多言</p> 
<p>飞信：无需多言</p> 
<p>Facebook：无需多言</p> 
<p>Twitterific：无需多言</p> 
<p>Twitter：无需多言</p> 
<p>Foursquare：无需多言</p> 
<p><span style="color: #ff0000;">OperaMod：Opera fan q1ang版本，不解释</span></p> 
<p>Google earth：好货一枚</p> 
<p>Satanza:经典好货</p> 
<p>Air mouse:无语</p> 
<p>Sleepup：助你快速入眠，呃，也许是心理作用，枫影听过几次但是貌似没有很明显作用</p> 
<p><span style="color: #ff0000;">MIM：修改左上角的ipod为你喜欢的字。</span></p> 
<p><span style="color: #ff0000;">百度输入法：强推之</span></p> 
<p>听声辩歌：无语</p> 
<p>dTunes：听歌用，直接读取该目录所有歌曲</p> 
<p><span style="color: #ff0000;">Oplayer：直接播放多种格式视频无需转换</span></p> 
<p>ArtStudio：画图用</p> 
<p>Brushes：画图用</p> 
<p>新华词典：词典一枚</p> 
<p><span style="color: #ff0000;">BackGrounder：必备，用以实现全软件后台运行</span></p> 
<p><span style="color: #ff0000;">iRemote：好货一枚</span></p> 
<p><span style="color: #ff0000;">AirVideo：好货一枚</span></p> 
<p><span style="color: #ff0000;">Reeder：好货一枚</span></p> 
<p><strong><span style="color: #ff0000;">系统工具：</span></strong></p> 
<p><span style="color: #ff0000;">SBSetting：必备</span></p> 
<p><span style="color: #ff0000;">Cydelete：必备</span></p> 
<p><span style="color: #ff0000;">Activator：必备</span></p> 
<p><span style="color: #ff0000;">multiveIconmoves：必备</span></p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x67AB;&#x5F71;&#x8F6F;&#x4EF6;&#x63A8;]&#x4F7F;&#x7528;Gooreader&#x9605;&#x8BFB;google book&#x4E2D;&#x7684;&#x4E66;</title>
        <link>https://justinyan.eth.limo/63FE899C-5DA5-415F-A9A5-B4B5A11D92D8/</link>
        <guid>https://justinyan.eth.limo/63FE899C-5DA5-415F-A9A5-B4B5A11D92D8/</guid>
        <pubDate>Fri, 13 Aug 2010 16:16:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>昨天看新闻发现一个新的东西叫gooreader，可以直接搜索google book中的书然后阅读。</p> 
<p>这是官网：http://www.gooreader.com/</p> 
<p>有免费版和收费版，收费版多一个可以制作PDF功能。</p> 
<p>枫影试用了一下，感觉挺不错的。</p> 
<p>给几张截图：</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/08/gooreader.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-419" title="gooreader" src="http://www.windyshade.com/wp-content/uploads/2010/08/gooreader-300x271.jpg" alt="" width="300" height="271" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/gooreader-300x271.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/08/gooreader.jpg 845w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/08/gooreader.jpg"></a><a href="http://www.windyshade.com/wp-content/uploads/2010/08/gooreader2.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-420" title="gooreader2" src="http://www.windyshade.com/wp-content/uploads/2010/08/gooreader2-300x271.jpg" alt="" width="300" height="271" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/gooreader2-300x271.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/08/gooreader2.jpg 845w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/08/gooreader2.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/08/gooreader.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-419" title="gooreader" src="http://www.windyshade.com/wp-content/uploads/2010/08/gooreader-300x271.jpg" alt="" width="300" height="271" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/08/gooreader-300x271.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/08/gooreader.jpg 845w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x65B0;&#x6587;&#x516C;&#x544A;</title>
        <link>https://justinyan.eth.limo/522410F5-02D6-464F-9518-465C1CFD71CE/</link>
        <guid>https://justinyan.eth.limo/522410F5-02D6-464F-9518-465C1CFD71CE/</guid>
        <pubDate>Fri, 13 Aug 2010 15:58:30 +0800</pubDate>
        
        
        <description><![CDATA[
            <blockquote>
 <p><span style="color: #000000;"><strong>文学类</strong>：</span></p> 
 <p><strong><a href="http://www.justinyan.me/post/1327">「每周读书」第四十二周——S. J. Watson Before I go to sleep</a></strong></p> 
 <p><a title="[每周读书] 第四十一周 Jeff Jhonson——《认知与设计》" href="http://www.justinyan.me/post/1281" rel="bookmark">[每周读书] 第四十一周 Jeff Jhonson——《认知与设计》</a></p> 
 <p><a title="[每周读书] 第四十周 佐藤可士和——《佐藤可士和的超整理术》" href="http://www.justinyan.me/post/1277" rel="bookmark">[每周读书] 第四十周 佐藤可士和——《佐藤可士和的超整理术》</a></p> 
 <p><span style="color: #000000;"><strong>音乐类：</strong></span></p> 
 <p><strong><a title="[指弹] 押尾 Wings~ You are the hero 枫影翻弹" href="http://www.justinyan.me/post/1300" rel="bookmark">[指弹] 押尾 Wings~ You are the hero 枫影翻弹</a></strong></p> 
 <p><a href="../post/1190" rel="bookmark">双木吉他 Depapepe 《真是好日子呢》 covered by 枫影 &amp; K.J.</a></p> 
 <p><span style="color: #000000;"><strong>技术类：</strong></span></p> 
 <p><strong><a href="http://www.justinyan.me/post/1306">从 Objective-C 里的 Alloc 和 AllocWithZone 谈起</a></strong></p>
</blockquote>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4F7F;&#x7528;Google Reader&#x4F5C;&#x4E3A;&#x4FE1;&#x606F;&#x6765;&#x6E90;</title>
        <link>https://justinyan.eth.limo/4A9A7C0D-9C69-4AAE-9408-24AD1F1F34DD/</link>
        <guid>https://justinyan.eth.limo/4A9A7C0D-9C69-4AAE-9408-24AD1F1F34DD/</guid>
        <pubDate>Fri, 13 Aug 2010 15:44:11 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>在这个世界上有一种东西叫做RSS，想知道他长什么样，看本博客右边栏的RSS订阅按钮就知道了。这个东西干什么用的呢？在此之前，我先介绍一下Google Reader。</p> 
<p>Google reader，中文名谷歌阅读器，就是用来阅读你订阅的源每天发布的新文章的。比方说，你注册了一个gmail帐户，然后开通了google reader服务，接着点了本博客那个RSS按钮选中订阅到google reader，那么本博客每天更新的文章就会实时地显示在你的google阅读器中而不必为了看博文每次都来访本博。在这个例子中，本博就是一个提供RSS订阅的源。</p> 
<p>呃，看到开通服务，注册帐户，订阅等字眼可能会有一小部分人会以为要收费，枫影说一句，这些服务全部是免费的。Google 旗下的服务全部是免费的，注册了一个gmail帐户就可以使用它的全部服务了。RSS也是免费的。
 <!--more--></p> 
<p>你订阅了本博的RSS之后，可以在google reader里面follow枫影的帐号，这样，你就可以看到枫影在google reader里面分享的文章。这是google reader的一大亮点，就是文章的share，star和Like按钮。按下share按钮后还可以在里面发表评论，其他人只要在google reader中看到了这篇文章就可以看到你的评论，同时也可以评论你的评论。</p> 
<p>像枫影目前订阅的源大概有数十个吧，每天的信息来源只要看一下google reader就能明白天下事了。枫影订阅的源内容挺多，所以分了几个文件夹来管理，有技术类、民主类、娱乐类、外文新闻类几个，枫影也创建了几个bundle，把枫影推荐的几个源都归类在里面了，大家follow了枫影就可以订阅到枫影推荐的源了。</p> 
<p>Google reader还有手机版，枫影一般在走路的时候无聊的时候等车的时候就用手机看，比较有空余的时间才在电脑上看。Google reader有强大的快捷键还有各种浏览形式可以帮助你快速解决每天大量的信息。</p> 
<p>本文就到这里，其他的像管理源还有快速获取有用信息这些就等晚点再写。</p>
        ]]></description>
    </item>
    
    <item>
        <title>iPod Touch&#x6253;&#x7535;&#x8BDD;&#x53D1;&#x77ED;&#x4FE1;&#xFF0C;&#x53EA;&#x8981;&#x52A0;&#x4E2A;&#x82F9;&#x679C;&#x76AE;</title>
        <link>https://justinyan.eth.limo/C6AE8482-4298-41D8-B047-50BCCAEEF2C7/</link>
        <guid>https://justinyan.eth.limo/C6AE8482-4298-41D8-B047-50BCCAEEF2C7/</guid>
        <pubDate>Sun, 25 Jul 2010 23:30:07 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>今天在reader上看新闻的时候忽然发现一则消息，令人欣喜呀，原文如下：</p> 
<p>=============================================================</p> 
<p>原文地址：<a href="http://cn.engadget.com/2010/07/25/ipod-touch-can-call-phone/">http://cn.engadget.com/2010/07/25/ipod-touch-can-call-phone/</a></p> 
<div>
 <img decoding="async" src="http://www.blogcdn.com/cn.engadget.com/media/2010/07/520pingguopi-3.jpg" border="1" alt="" hspace="4" vspace="4" />
</div> 
<p>深圳总能给我们带来惊喜的东西，这次是把你的廉价的iPod Touch也变成可以打电话的，解决的方案就是通过一个苹果皮外套，简单讲就是背扣通信模块，可以打电话，发短信，基带是英飞凌，看过去应该是一个SIM卡插槽配上一块电池，官方目前GPRS上网还没解决，但已经可以满足部分Touch迷的虚荣了，点进来还有视频可以看，据说要等10天左右才可以上市。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Orange Manger&#x4E0E;Orange Photo</title>
        <link>https://justinyan.eth.limo/D68FFB34-762D-4BAB-83A9-160CD482BA05/</link>
        <guid>https://justinyan.eth.limo/D68FFB34-762D-4BAB-83A9-160CD482BA05/</guid>
        <pubDate>Tue, 13 Jul 2010 15:55:30 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>考完试后搬宿舍搬个半死，终于可以静下来写代码了</p> 
<p>今天画了一张草图，是Orange file Manager的草图，放上来看看。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/07/index.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-397" title="index" src="http://www.windyshade.com/wp-content/uploads/2010/07/index-300x146.jpg" alt="" width="300" height="146" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/07/index-300x146.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/07/index-1024x499.jpg 1024w, https://cdn.justinbot.com/wp-content/uploads/2010/07/index.jpg 1263w" sizes="(max-width: 300px) 100vw, 300px" /></a>这是一个服务器端的文件管理系统，将使用PHP+MYSQL编程，前端要使用大量的JS作为文件管理页面。</p> 
<p>不过我打算把它做成一个简易的代码管理系统，类似于其他版本控制软件，只不过是网页版的。</p> 
<p>这个系统暂时将由我一个人独力开发，另外，我们Whisper工作室将开发一个在线相册系统Orange Photo，柳丁相册。到时候LOGO可能会是一样的，还没有定下来。</p> 
<p>两个系统都将开源，敬请期待。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x516D;&#x4E00;&#x8282;&#x5230;&#xFF0C;&#x671F;&#x672B;&#x4E5F;&#x5FEB;&#x5230;</title>
        <link>https://justinyan.eth.limo/4F5D15F2-9B4F-492E-9C05-563C4F4063C0/</link>
        <guid>https://justinyan.eth.limo/4F5D15F2-9B4F-492E-9C05-563C4F4063C0/</guid>
        <pubDate>Tue, 01 Jun 2010 20:36:53 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>不久后就要考试了，先考6级，再考期末，很多很多考试<br /> 会很忙很忙，估计没什么时间更新blog了，暂时先复习好了再说吧<br /> 考完试要好哈写点东西才行～！<br /> 以上。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6D88;&#x606F;&#x79F0;Apple TV&#x5C06;&#x767B;&#x9646;iPhone OS 4&#xFF0C;&#x4EF7;&#x503C;99&#x7F8E;&#x5200;</title>
        <link>https://justinyan.eth.limo/0E6DF2A5-BFC6-491D-A61E-3585FBB2AFDA/</link>
        <guid>https://justinyan.eth.limo/0E6DF2A5-BFC6-491D-A61E-3585FBB2AFDA/</guid>
        <pubDate>Sun, 30 May 2010 10:25:51 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>苹果将准备在它的iPhone OS 4上运行一款新的数字流媒体软件Apple TV，这款软件将在A4处理器上运行，价值99美刀。这将彻底打破现有的模式：花费229美刀及160G的存储空间。尽管苹果的执行官已称Apple TV仅仅是公司的业余之作，但是随着Google TV的到来，网络内容进入电视，将会大大拓宽网络电视的战场，而对此，苹果又岂能坐视不理？</p>
        ]]></description>
    </item>
    
    <item>
        <title>Opera Mini&#x83B7;iPhone&#x7528;&#x6237;&#x9AD8;&#x5EA6;&#x8BC4;&#x4EF7;</title>
        <link>https://justinyan.eth.limo/EA85E1CF-8BDE-4AE1-89FB-F29242782B82/</link>
        <guid>https://justinyan.eth.limo/EA85E1CF-8BDE-4AE1-89FB-F29242782B82/</guid>
        <pubDate>Sat, 29 May 2010 22:40:48 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Opera软件公司称自从4月13日Opera手机版放出以来，已有超过260万人在iPhone上使</p> 
<p>用过Opera Mini浏览器。
 <!--more--></p> 
<p>“自4月中旬Opera Mini后的两周内，已有超过260万用户在iPhone上使用过Opera</p> 
<p>Mini浏览器”，Opera 软件公司在5月28日如是声明。</p> 
<p>他们接着道，“根据Opera今日发布的手机网络状态调查报告（Opera's State of the</p> 
<p>Mobile Web Report），这场Opera Mini新用户的浪潮将改变手机网络使用前位10国家</p> 
<p>以及手机排行的顺位。其中美国已上升两位，超越了南非和尼日利亚。从全球范围来</p> 
<p>看，iPhone用户很快将成为第三大使用Opera Mini的用户群。”</p> 
<p>“Opera每月发布手机网络状态调查报告（Opera's State of the Mobile Web Report</p> 
<p>），用以提供全球手机网络趋势及影响的信息。完整的报告请参看这里</p> 
<p>http://www.opera.com/smw/（English Only）。报告除了显示Opera 在iPhone上的使</p> 
<p>用情况外，还显示了全球手机网络状况及CIS手机浏览趋势。”</p> 
<p>在这份报告里，Opera公司列出了Opera Mini美国用户访问最多的10大网站：</p> 
<p>1. google.com<br /> 2. facebook.com<br /> 3.nytimes.com (up from 8)<br /> 4.my.opera.com (up from 6)<br /> 5.accuweather.com (up from 7)<br /> 6. twitter.com (new)<br /> 7. wikipedia.org (down from 3)<br /> 8.youtube.com (down from 5)<br /> 9.yahoo.com (down from 4)<br /> 10.espn.go.com</p> 
<p>还有美国4月10大使用Opera Mini最多的手机：</p> 
<p>1. Apple iPhone<br /> 2. BlackBerry 8330 ("Curve")<br /> 3. LG LX600 ("Lotus")<br /> 4. Samsung SPH M810 ("Instinct s30")<br /> 5. BlackBerry 9630 ("Tour")<br /> 6. BlackBerry 9700 ("Bold")<br /> 7. BlackBerry 9000 ("Bold")<br /> 8. Samsung SPH M800 ("Instinct")<br /> 9. BlackBerry 9530 ("Storm 2")<br /> 10. BlackBerry 8520 ("Curve")</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x67AB;&#x5F71;&#x63A8;&#x8350;]iPhone &#x26; iTouch&#x58C1;&#x7EB8;13&#x679A;</title>
        <link>https://justinyan.eth.limo/4249C067-1692-475A-9CAC-B3D38A9398CE/</link>
        <guid>https://justinyan.eth.limo/4249C067-1692-475A-9CAC-B3D38A9398CE/</guid>
        <pubDate>Sat, 29 May 2010 20:43:58 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/wallpaper_iphone_apple_galaxy_by_jetc21.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-366" title="wallpaper_iphone_apple_galaxy_by_jetc21" src="http://www.windyshade.com/wp-content/uploads/2010/05/wallpaper_iphone_apple_galaxy_by_jetc21-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/wallpaper_iphone_apple_galaxy_by_jetc21-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/wallpaper_iphone_apple_galaxy_by_jetc21.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" />
  <!--more--></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/wallpaper_iphone_apple_galaxy_by_jetc21.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/vladstudio_googlelibrary_320x480.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-365" title="vladstudio_googlelibrary_320x480" src="http://www.windyshade.com/wp-content/uploads/2010/05/vladstudio_googlelibrary_320x480-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/vladstudio_googlelibrary_320x480-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/vladstudio_googlelibrary_320x480.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/vladstudio_googlelibrary_320x480.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/spaceship.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-364" title="spaceship" src="http://www.windyshade.com/wp-content/uploads/2010/05/spaceship-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/spaceship-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/spaceship.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/spaceship.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/rt5q6g2wo.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-363" title="rt5q6g2wo" src="http://www.windyshade.com/wp-content/uploads/2010/05/rt5q6g2wo-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/rt5q6g2wo-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/rt5q6g2wo.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/rt5q6g2wo.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/ngzha40q4.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-362" title="ngzha40q4" src="http://www.windyshade.com/wp-content/uploads/2010/05/ngzha40q4-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/ngzha40q4-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/ngzha40q4.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/ngzha40q4.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/lime_green_bubbles_iphone_wallpaper.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-361" title="lime_green_bubbles_iphone_wallpaper" src="http://www.windyshade.com/wp-content/uploads/2010/05/lime_green_bubbles_iphone_wallpaper-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/lime_green_bubbles_iphone_wallpaper-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/lime_green_bubbles_iphone_wallpaper.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/lime_green_bubbles_iphone_wallpaper.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/i3t54gbhp.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-360" title="i3t54gbhp" src="http://www.windyshade.com/wp-content/uploads/2010/05/i3t54gbhp-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/i3t54gbhp-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/i3t54gbhp.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/i3t54gbhp.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/i2o37xza2.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-359" title="i2o37xza2" src="http://www.windyshade.com/wp-content/uploads/2010/05/i2o37xza2-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/i2o37xza2-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/i2o37xza2.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/i2o37xza2.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/3165952579_c627097e86_o.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-358" title="3165952579_c627097e86_o" src="http://www.windyshade.com/wp-content/uploads/2010/05/3165952579_c627097e86_o-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/3165952579_c627097e86_o-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/3165952579_c627097e86_o.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/3165952579_c627097e86_o.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/2831343050_761738d7dd_o.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-357" title="2831343050_761738d7dd_o" src="http://www.windyshade.com/wp-content/uploads/2010/05/2831343050_761738d7dd_o-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/2831343050_761738d7dd_o-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/2831343050_761738d7dd_o.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/2831343050_761738d7dd_o.png"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/01816_trackstonowhere_320x480.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-356" title="01816_trackstonowhere_320x480" src="http://www.windyshade.com/wp-content/uploads/2010/05/01816_trackstonowhere_320x480-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/01816_trackstonowhere_320x480-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/01816_trackstonowhere_320x480.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/01816_trackstonowhere_320x480.jpg"></a> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/01801_sunsetinthetropics_320x480.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-355" title="01801_sunsetinthetropics_320x480" src="http://www.windyshade.com/wp-content/uploads/2010/05/01801_sunsetinthetropics_320x480-200x300.jpg" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/01801_sunsetinthetropics_320x480-200x300.jpg 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/01801_sunsetinthetropics_320x480.jpg 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>最近挺忙的，一直没啥时间好好写博文，连诗歌都很少写了，今天且用几张壁纸堵上blog，等项目完成后会好好画一个主题的，PS：《一直很安静》练得差不多了，再练熟一点发发视频，哈哈～</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/01801_sunsetinthetropics_320x480.jpg"><br /> </a></p>
        ]]></description>
    </item>
    
    <item>
        <title>Apple iPad&#x5C06;&#x4E8E;5&#x6708;28&#x65E5;&#x5728;&#x82F1;&#x56FD;&#xFF08;U.K.&#xFF09;&#x4E0A;&#x5E02;&#xFF0C;&#x53EF;&#x9009;&#x591A;&#x79CD;&#x8FD0;&#x8425;&#x5546;</title>
        <link>https://justinyan.eth.limo/EC252F24-6187-47AF-A024-7A00A30C2BF3/</link>
        <guid>https://justinyan.eth.limo/EC252F24-6187-47AF-A024-7A00A30C2BF3/</guid>
        <pubDate>Fri, 28 May 2010 13:06:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>苹果iPad将于5月28日在英国上市，在此之前，该国已经预订了iPad的用户将提前一天收到iPad。英版的iPad将可选择多种3G的运营商，这点与美版的不同，美版的iPad只支持AT&amp;T的网络。此前iPad的销售在美国已经取得巨大的成功，从4月3号放出开始，1个月内已经销售了超过100万部的机器。但是这也给了苹果在产品线上的巨大压力，所以显然地，苹果也放缓了iPad在国际产品展示的脚步。</p> 
<p>另附消息一则：<a href="http://www.engadget.com/2010/05/27/iphone-vulnerability-leaves-your-data-wide-open-even-when-using/" target="_blank">iPhone新漏洞 可致数据泄漏</a></p> 
<p><a href="http://www.engadget.com/2010/05/27/iphone-vulnerability-leaves-your-data-wide-open-even-when-using/" target="_blank"><strong>一个新的漏洞刚刚被黑客Bernd Marienfeldt和Jim Herbeck发现，它可以让入侵者自由读取iPhone手机内记载的信息，并且最新固件3.1.3也受影响，用PIN来锁定电话也没有用...</strong></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>JQuery&#x2014;&#x2014;lightbox&#x6548;&#x679C;</title>
        <link>https://justinyan.eth.limo/EF755AAB-C9D7-41FA-9E36-592F62EB55A1/</link>
        <guid>https://justinyan.eth.limo/EF755AAB-C9D7-41FA-9E36-592F62EB55A1/</guid>
        <pubDate>Tue, 25 May 2010 20:30:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>写了一个基于JQuery的lightbox效果，作为练习。还没写教程，先放个DEMO上来，教程以后再写。</p> 
<p>不过可能会用纯JS写多一遍之后再放教程。</p> 
<p>DEMO里用了CSS3做圆角和阴影，IE没有圆角但使用了IE的filter做阴影效果。</p> 
<p>目前没做动画效果，以后补教程的时候再做。</p> 
<p>DEMO地址：<a href="http://www.windyshade.com/wp-content/wh-demos/lightbox/demo.html" target="_blank">http://www.windyshade.com/wp-content/wh-demos/lightbox/demo.html</a></p> 
<p>源码：<a href="http://www.windyshade.com/wp-content/wh-demos/lightbox/lightbox.7z" target="_blank">猛击这里下载源码</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x7528;CSS3&#x5199;&#x51FA;Hello World!</title>
        <link>https://justinyan.eth.limo/CBCE0A78-76B3-4878-8BBA-A12810D61DCA/</link>
        <guid>https://justinyan.eth.limo/CBCE0A78-76B3-4878-8BBA-A12810D61DCA/</guid>
        <pubDate>Tue, 25 May 2010 01:04:32 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>一般的计算机语言入门的时候都会有经典的一课——输出hello world！其实就是要让读者觉得能让计算机说出hello world就意味着能让它做任何事。<br /> 但是CSS没有。CSS是一门标记性语言，用于定义文档对象的高宽等样式。同为标记性语言的HTML很简单就能让网页输出hello world但是CSS不行。<br /> 所以今天我就稍微用了一下CSS3，尚未普及使用的新标准，来补当初学CSS时没有上过的经典一课。</p> 
<p>其实实现起来也不能，就是麻烦了点。枫影这里参考到的字体是经典的Arial，需要用到的CSS3新标记为：<br /> border-radius和rotate。也就这两个。本想加个box-shadow(因为不是字体而是用div画出来的所以没用到text-shadow)，不过我的div有遮罩，就懒得去改了。</p> 
<p>下面是在FF和Chrome下浏览的截图：<br /> <a href="https://cdn.justinbot.com/wp-content/uploads/2010/05/hello-world.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-328" title="hello world" src="http://www.windyshade.com/wp-content/uploads/2010/05/hello-world-300x52.jpg" alt="" width="300" height="52" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/hello-world-300x52.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/hello-world.jpg 949w" sizes="(max-width: 300px) 100vw, 300px" /></a>两者的显示效果，或者说对上面两个标记的支持是一样的。</p> 
<p>下面附上DEMO观看地址以及源码下载：</p> 
<p>DEMO地址：<a href="https://justinyan.me/wp-content/wh-demos/css3-hello-world/helloworld.html" target="_blank" rel="noopener noreferrer">http://www.windyshade.com/wp-content/wh-demos/css3-hello-world/helloworld.html</a></p> 
<p>源码：<a href="http://www.windyshade.com/wp-content/wh-demos/css3-hello-world/CSS hello world.7z" target="_blank" rel="noopener noreferrer">猛击下载源码</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5FAE;&#x8F6F;windows Phone7&#x5C06;&#x9762;&#x4E34;Android 2.2&#x53CA;iPhone OS 4&#x7684;&#x7ADE;&#x4E89;</title>
        <link>https://justinyan.eth.limo/06593AA2-7AE7-4A0E-9511-ECC38FCD7332/</link>
        <guid>https://justinyan.eth.limo/06593AA2-7AE7-4A0E-9511-ECC38FCD7332/</guid>
        <pubDate>Mon, 24 May 2010 12:59:29 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>微软计划在2010年年底放出他们经过修正的智能机操作系统Windows Phone 7.不过这</p> 
<p>将使得他们直接面对来自iPhone OS 4,Android 2.2甚或2.3等系统的竞争，并且这些</p> 
<p>新系统都声称他们拥有新的特色，其中就包括了多任务运行等等。微软到底能否成功</p> 
<p>对抗这场激烈的竞争还有待关注，不过Windows Phone 7由于缺乏对Flash的支持，以</p> 
<p>及其他关键性的缺陷，它将陷入这场竞争的劣势。届时，微软系列手机的销售状况将</p> 
<p>直接反映手机客户对微软的态度。
 <!--more--></p> 
<p>微软借以吸引客户的新智能机操作系统Windows Phone 7计划在2010年年底放出。这份</p> 
<p>声明显示出微软企图在这场与Apple的iPhone和Google Android的激烈竞争中获取更多</p> 
<p>的市场份额。同时，微软也介绍了新的用户界面——一种以“信息整合”为核心的的</p> 
<p>设计，它将把手机应用程序及网络内容以分类的形式展现，比方说游戏类、社交类—</p> 
<p>—这将是它们与其他手机系统的关键性不同。</p> 
<p>不过最近的许多来自Apple与Google的官方声明与小道传言都显示这场游戏将与微软的</p> 
<p>设想有很大不同</p> 
<p>电子时报5月17号的报道称苹果计划放出它们新一代的iPhone,届时将有2400万部机子</p> 
<p>上市。这个数字来自与一个分析师引用的台湾某元件生产商提供的数据。</p> 
<p>"富士康将在前期放出450万iPhone并将在剩下的时间里放出1950万部"电子时报如是说</p> 
<p>."苹果将在2010年六月7号，苹果全球开发者大会（ Apple's Worldwide Developers</p> 
<p>Conference）上展示其iPhone 4G。"</p> 
<p>不管这些数据是真是假，毋庸置疑地是苹果自信它们的新一代iPhone能售出好成绩。</p> 
<p>尽管苹果官方并未声明新手机——被媒体称为“iPhone 4G”——的硬件配置以及设备</p> 
<p>原型，但是根据苹果以往的做法，它们应该会在今年夏天放出新的智能机才对。</p> 
<p>除了可能会放出的新iPhone以外，苹果还计划推出它们的iPhone OS 4，iphone第四代</p> 
<p>操作系统。新系统有许多新的特性，如iAD，一个可以在手机应用程序中显示广告的平</p> 
<p>台，以及多任务运行，这也是前面的几代操作系统所没有的。</p> 
<p>同时，手机制造商HTC也在它们的博客圈里发出通告，绝大多数在2010年下半年上市的</p> 
<p>智能机将会升级到Andorid 2.2（代号Froyo）。HTC手机是基于Andorid系统，其产品</p> 
<p>包括了Nexus One, Droid Eris 和 Droid Incredible。</p> 
<p>"当一切都准备就绪的时候我们会发布一个完整的更新列表，不过现在我们只在最受欢</p> 
<p>迎的机子更新，如Desire 和 Droid Incredible以及一些备受期待的新手机。"HTC在</p> 
<p>他的Pocket Lint blog上如是说。</p> 
<p>除了运行速度的提升意外，Android 2.2将包括几个企业应用的新特性，如远程控制，</p> 
<p>密码选项以及同步Microsoft Exchange帐户。对于更多希望自己的智能机能有更完善</p> 
<p>的多媒体功能的用户，Android 2.2还提供了对Flash Player10.1的支持。</p> 
<p>不过自从Android2.2从开发实验室被曝光以来，一直有消息称Android</p> 
<p>2.3,"Gingerbread"，也在开发中，并且将会在2010年第四季度放出。无论如何，</p> 
<p>Android目前已经是近60款智能机的基础系统，并且这个数字很有可能在今年内不断上</p> 
<p>升。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Twitter for iPhone &#x8BD5;&#x7528;&#x4F53;&#x9A8C;</title>
        <link>https://justinyan.eth.limo/C9E08F71-E616-4F6E-8B7B-69AA03275D13/</link>
        <guid>https://justinyan.eth.limo/C9E08F71-E616-4F6E-8B7B-69AA03275D13/</guid>
        <pubDate>Sun, 23 May 2010 01:58:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>5月19号Twitter官方就已经放出了iPhone客户端，枫影也翻译了篇新闻上来，却一直懒得去下。今晚下载之后稍微试用了一下，发篇试验体验上来。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/icon.jpg"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-301" title="icon" src="http://www.windyshade.com/wp-content/uploads/2010/05/icon.jpg" alt="" width="72" height="88" /></a></p> 
<p>Twitter for iPhone的图标依然是那只鸟（截图的背景为我的主题的背景，是Leopard，懒得关掉就直接截图了），白色剪纸效果的鸟的图形，浅蓝色的背景色，利用渐变画出的水晶效果，边角当然是iPhone默认的圆角，整体感觉简洁而充满“twitter感”。呵呵，这也是twitter设计的特色，simple and impressive.
 <!--more--></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0094.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-302" title="IMG_0094" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0094-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0094-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0094.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>打开App，会默认让你先sing in or sing up。 Sign up（注册）默认是在主窗体中一个显眼的蓝色按钮。需要注册的人绝大多数是没使用过twitter的人，所以猜测是对twitter陌生的用户，所以要利用醒目的图标来提醒新用户注册。如果是已经注册的用户，则会自己寻找sign in按钮，所以sign in 按钮放置在相对不明显的右上角。虽然是相对不明显的位置，但由于多数SNS App for iPhone的sign in 都在右上角，也就是说，考虑到用户已经受过“应用程序使用教育”，所以右上角的sign in就跟windows右上角的X一样容易被用户找到。</p> 
<p>未登录的页面可以显示twitter trend（热推），以及推荐用户（自然是针对新用户）。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0090.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-303" title="IMG_0090" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0090-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0090-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0090.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0091.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-303" title="IMG_0091" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0091-200x300.png" alt="" width="200" height="300" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0092.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-303" title="IMG_0092" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0092-200x300.png" alt="" width="200" height="300" /></a></p> 
<p>登录后就可以看到自己的首页。跟foursquare一样，按住页面往下啦可以刷新tweets。每条tweet的左边为圆角的头像，并且有浅浅的阴影，阴影使得头像在载入时有圆角矩形的区分度，以便辨识出头像位置。而每条推的背景均是渐变的灰色，@username为粗体突出，同行右端是灰色发推时间。一切灰色调均是为了降低用户视觉干扰，让用户得以集中精力在tweets上而又能清楚辩认出各个功能区。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0096.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-306" title="IMG_0096" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0096-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0096-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0096.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>底部是分类导航，与其他twitter客户端一样，有普通tweets，@mesage,direct message，和search功能。前三个按钮有夜光灯设计，强调新信息并且突出三个按钮，美观的同时又具有很强的功能性。三个点为more…，可以设置个人profile，进入profile，底部导航会变为个人信息、个人tweets，@message，和star或者说favarite收藏。个人信息包括location位置，web个人主页等信息，亦可查看自己的tweet数目，follow &amp; followers，还有RT的条目。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0082.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-307" title="IMG_0082" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0082-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0082-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0082.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0083.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-307" title="IMG_0083" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0083-200x300.png" alt="" width="200" height="300" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0084.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-307" title="IMG_0084" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0085-200x300.png" alt="" width="200" height="300" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0085.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-307" title="IMG_0085" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0085-200x300.png" alt="" width="200" height="300" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0086.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-307" title="IMG_0086" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0086-200x300.png" alt="" width="200" height="300" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0087.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-307" title="IMG_0087" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0087-200x300.png" alt="" width="200" height="300" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0088.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-307" title="IMG_0088" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0088-200x300.png" alt="" width="200" height="300" /></a></p> 
<p>我觉得这个App的改进在于Drafts和location scan两个功能。Draft允许你保存你未发出的tweest。而location scan则允许你搜索在你附近的使用twitter的用户，当然，前提是这些用户他们发出的tweets里包含了location info。<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0098.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-314" title="IMG_0098" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0098-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0098-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0098.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>试用后感觉界面简洁实用，并且多出draft和loaction scan两个新功能，但是整体色彩的运用就不如twitterific，不过按钮的布置以及功能的隐藏还有视觉干扰元素的隐藏则要做得比twitterific要好。</p> 
<p>大致试用体验如此。</p> 
<p>以上。</p>
        ]]></description>
    </item>
    
    <item>
        <title>Facebook&#x9690;&#x79C1;&#x8BBE;&#x7F6E;&#x6539;&#x8FDB;&#x5C06;&#x6709;&#x53EF;&#x80FD;&#x5728;&#x4E0B;&#x5468;&#x5230;&#x6765;</title>
        <link>https://justinyan.eth.limo/90C28F72-3590-4F54-BF52-E1B2AFEFBD98/</link>
        <guid>https://justinyan.eth.limo/90C28F72-3590-4F54-BF52-E1B2AFEFBD98/</guid>
        <pubDate>Sat, 22 May 2010 12:18:44 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Facebook最早将在下周更新他们的隐私设置以便缓解用户的担忧。本周初，Facebook的公共政策部主管Tim Sparapani说他们的用户想要“可供选择的更为简单的隐私设置”。
 <!--more--></p> 
<p>Facebook最早将有可能在下周更改他们的隐私设置，不过这样做到底能不能平息用户的不满还有待观察。</p> 
<p>在本周的无线电采访中，Facebook的公共政策主管Tim Sparapani表示由于此前的关于facebook的发展论战，公司将准备简化Facebook的隐私设置。不过目前我们仍不清楚Facebook将做出怎样的修改。</p> 
<p>报道称Facebook的修改计划最早将在下周开始进行。</p> 
<p>“我们的用户很欣赏既精确又全面的操控，只是希望把这些设置做得更加简化以及更易使用,”Facebook 发言人 Andrew Noyes 如是说。“同样，他们也喜欢我们退出的新的程序，不过他们希望能有更为简单易用的方法来取消在应用程序中或者在Facebook平台提供的网站里共享自己的个人信息。我们正在听取这些意见并且将会把这些信息加入我们不久后将要发表的改进计划。”</p> 
<p>最近，MySpace也发表了他们在5月17号对自己的网站做出的隐私设置的修改。在修改后的方案中，MySpace用户提供的信息将只对他们的好友，MySpace用户或者18周岁以上的访客可见。</p> 
<p>Facebook已经受到来自联邦贸易委员会以及许多政治家的批评，要求Facebook更好的保护用户的隐私。尽管如此，Facebook仍然坚持他们的“快速个性化设置”原则——并凭此摆脱了数周前的最新一轮论战——并且，他们最近也设置了几个新的安全控件以更好地监控可疑的登录。</p> 
<p>“我们已经花了两周的时间倾听来自用户的意见并且咨询了来自加州、华盛顿以及全世界的专家”Noyes说，“我们明白Facebook是因为信息共享方面的革新而成名的，同时我们也希望它能够因为用户控制的革新而成名。这在我们收到的信息里面已经表达得很清楚。”</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x8D8A;&#x72F1;&#x540E;&#x5FC5;&#x770B;&#x540E;&#x7EED;&#x7BC7;&#x2014;&#x2014;[&#x9644;&#x8F6F;&#x4EF6;&#x7F51;&#x76D8;&#x4E0B;&#x8F7D;]</title>
        <link>https://justinyan.eth.limo/0A876B11-BDC2-49E7-AAFA-B8F4721FEAD7/</link>
        <guid>https://justinyan.eth.limo/0A876B11-BDC2-49E7-AAFA-B8F4721FEAD7/</guid>
        <pubDate>Sat, 22 May 2010 02:54:26 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>两天前把我的博文：《<a href="http://www.windyshade.com/2010/05/16/%e8%8b%b9%e6%9e%9c%e5%bc%ba%e5%8a%b2%e7%9a%84ppc%e2%80%94%e2%80%94%e8%a7%a3%e5%b0%81%e4%bd%a0%e7%9a%84iphoneitouch/" target="_blank">越狱后必看——改造iphone&amp;itouch，让它成为强劲PPC！！</a>[软件附网盘下载]》。发到威锋论坛，得到许多锋友的支持。今天枫影再发一文，补充上篇文章里面漏下的几个软件，如果正在看这篇文章的童鞋想要知道些更为基础的或者更全面的iPhone &amp; iTouch强化方法，<a href="http://www.windyshade.com/2010/05/16/%e8%8b%b9%e6%9e%9c%e5%bc%ba%e5%8a%b2%e7%9a%84ppc%e2%80%94%e2%80%94%e8%a7%a3%e5%b0%81%e4%bd%a0%e7%9a%84iphoneitouch/" target="_blank">请点击这里参看上文</a>。</p> 
<p>这里我再补充几个上传漏下的软件，同样分为几个部分(下面的介绍以枫影的itouch 3代 32G为例，也许有部分软件1、2代机子装不了，但应该是都能装的)。</p> 
<p><strong>一、系统底层软件及实用软件推荐</strong></p> 
<p><strong>二、新手可能不知道的几个iPhone &amp; iTouch的功能</strong></p> 
<p><strong>三、使用iPhone &amp; iTouch必备的电脑软件推荐
  <!--more--></strong></p> 
<p>在阅读下文之前，如果你是新手，请先准备好自己的机子：1、已破解；2、已装Cydia；3、懂得安装ipa和deb文件；具体请参看上一篇文章。</p> 
<p>下文需要的源，以及软件的安装方法等基础知识在上一篇都有，请自行阅读。</p> 
<p>另附帖子在威锋论坛的链接：<a href="http://bbs.weiphone.com/read-htm-tid-804247.html">http://bbs.weiphone.com/read-htm-tid-804247.html</a></p> 
<p><strong>一、系统底层软件及实用软件推荐：</strong></p> 
<p><strong>1、MultiIconMover</strong><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0065.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-270" title="IMG_0065" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0065-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0065-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0065.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>在touch中移动图标时(移动图标时先按住图标约1秒，图标会摆动，这时再就可以移动图标了)，只能一个一个图标移动，有时候装的东西多了这样移动挺麻烦。这里推荐一个软件MultiIconMover，按住图标等图标摆动后，再点一下图标，就会在图标右下角出现一个勾选，表示选中该图标。将想要移动的图标选中后，翻到自己想要移动到的页面，按一下Home键，则选中图标就会移动过来。这个功能还有个好处就是如果我的页面特别多，想从第8页移动图标到第一页，如果用自带功能就要跨过很多个页面很麻烦，用这个就只需翻页就行了，比较方便。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0066.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-271" title="IMG_0066" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0066-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0066-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0066.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0067.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-272" title="IMG_0067" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0067-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0067-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0067.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>这个软件我没有ipa文件，请从Cydia上搜索下载，需要的源是BigBoss，安装Cydia时自带的。</p> 
<p><strong>2、Reflective Dock</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0001.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-103" title="touch_0001" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0001-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0001-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0001.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>枫影太懒所以用Winter安了个Leopard主题，说了晚点自己再画个却迟迟不动，杯具。安装的Leopard主题跟真Leopard区别是Dock没有倒影，很不爽，所以装了个Reflective Dock，给Dock加上阴影。软件安装后没有图标，会在Settings里面出现Reflective Dock选项，可以控制Dock阴影和App阴影，还可以自定义阴影样式。</p> 
<p>同样此软无ipa，请从Cydia上搜索下载，需要的源是ModMyi.com，安装Cydia自带。</p> 
<p><strong>3、iMC for SBSettings</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0019.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-111" title="touch_0019" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0019-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0019-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0019.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>iMobileCinema SBSettings，iMobileCinema的SB开关。尽管安装IMC之后safari可以看flash，但一般情况下我是用不着的，所以一般情况下把IMC关掉，自认为省点电也省点flash解析时间，当我真需要用到IMC的时候再打开，反正SBSettings也不用退出应用程序就能使用。</p> 
<p><strong>4、google Apps</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0070.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-274" title="IMG_0070" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0070-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0070-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0070.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>集合多个google App，包括Gmail, calendar, reader等，其实也就是个接口而已，点击后会从safari中打开。</p> 
<p>5、SysInfoPlus</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0073.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-277" title="IMG_0073" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0073-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0073-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0073.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>这个软件可以全面查看机子的信息，包括内存、容量、序列号、进程、网络、加速器等等全方面信息，推荐之。</p> 
<p>6、Terminal</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0074.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-278" title="IMG_0074" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0074-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0074-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0074.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0077.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-281" title="IMG_0077" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0077-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0077-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0077.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>iPhone &amp; iTouch下的终端命令行。我们知道iPhone OS是基于UNIX的系统，使用终端命令行就可以完全操纵整部机子，尤其当涉及到底层操作如修改root信息的时候必备。这也是程序员必备软件～</p> 
<p><a href="http://u.115.com/file/f1c0c2aec3" target="_blank">附115网盘下载地址</a></p> 
<p>7、QuickOffice</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0078.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-282" title="IMG_0078" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0078-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0078-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0078.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>一款办公软件，支持.doc、PDF等多种格式的文档。还可以通过WIFI连接到你的电脑传输文件。</p> 
<p><a href="http://u.115.com/file/f1fc3ef20a" target="_blank">附115网盘下载地址</a></p> 
<p>pxl文件可以用rar打开然后把.app文件夹解压出来再拖进iTunes里面，同步后就已安装完成。</p> 
<p>8、mPlayer</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0079.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-283" title="IMG_0079" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0079-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0079-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0079.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>和Oplayer一样，支持多种格式的视频文件的播放，但是Oplayer不能查看所有文档而mPlayer可以。但是注意，iPhone &amp; iTouch本身机子的性能就比不过桌面电脑，所以高清的或者太大的视频播放时会卡这点要注意。</p> 
<p><a href="http://u.115.com/file/f1a09a657b" target="_blank">附115网盘下载</a></p> 
<p>9、Close Tabs</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0080.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-284" title="IMG_0080" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0080-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0080-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0080.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>一款Safari插件，在打开多个窗口的时候，如果长按下面那个多页面键会出现close all tab的选项，在想要一次关掉所有窗口的时候很有用。</p> 
<p>此软件在Cydia上有下载，本人没有ipa文件。</p> 
<p>10、联系人群组GroupQ</p> 
<p>[枫影的touch本来就没几个联系人，就不截图了]</p> 
<p>iPhone自带的contact是不能分组的，这个软件可以对联系人进行分组，安装后会在springboard出现一个图标。</p> 
<p><a href="http://u.115.com/file/f15829fe3d" target="_blank">附115网盘下载</a></p> 
<p>11、WeFit输入法及优化词库</p> 
<p>上一篇文章我推荐了刚刚泄漏的百度输入法泄漏版，使用后感觉不错，但毕竟是泄漏的beta版，还是会有bug，我就曾出现在某些应用程序下输入不了文字的情况，所以还是回归WeFit怀抱，WeFit加装了优化词库后也是很好用的，推荐之。</p> 
<p>WeFit请在Cydia上搜索下载，需要添加威锋的源。</p> 
<p>12、iLrycs</p> 
<p>iPhone &amp; iTouch自带的iPod不支持lrc歌词显示，使用这个软件就可以了，并且支持在线搜索歌词下载。实际上打开这个软件它调用的也还是原机的iPod播放器，不过可以显示lrc歌词而已。</p> 
<p><a href="http://u.115.com/file/f11e80c946" target="_blank">附115网盘下载地址</a></p> 
<p><strong>二、新手可能不知道的几个iPhone &amp; iTouch</strong><strong>的功能</strong></p> 
<p>1、Auto Brightness</p> 
<p>自动调节亮度。在iPhone &amp; iTouch上部的中线稍靠左的地方，借助强光照射我们可以看到一个小黑点。那个就是touch的光学感应器。如果在光线暗的环境下转入亮的环境屏幕会自动变亮，但再次进入暗环境就不会再变暗，只有锁屏后再开启才会重新自适应。</p> 
<p>2、在较长的应用程序中滚动查看时，如果需要翻回顶部只需划动顶部状态栏，即显示时钟的那里，划动后应用程序会自动滚回顶部。</p> 
<p>3、在safari中，长按链接会弹出在新窗口打开的菜单。</p> 
<p>4、在输入状态时，如果输入域名，长按.com按钮可以弹出更多域名后缀。</p> 
<p>5、在输入文字shake shake可以弹出取消刚刚输入文字的菜单。</p> 
<p>6、耳机中键按两下切换下一首歌，按三下切换上一首歌，长按会出现声控，声控语言可以在settings里面设置。</p> 
<p>7、同时按住开关键和Home键几秒可以强制关机，在死机时很有用。</p> 
<p>8、同时按下开关键和Home键，会听到咔嚓一声屏幕一下闪过白光，截图喽～！</p> 
<p><strong>三、与iPhone &amp; iTouch</strong><strong>相关的电脑软件推荐</strong></p> 
<p><strong>1、format factory格式工厂</strong></p> 
<p>强大的格式转换软件，免费，可以转换视频、音频和图片等多种格式，具有视频、音频合并混流等功能。不过最重要的一点是用来转换视频。下面是软件截图：</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/ff.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-285" title="ff" src="http://www.windyshade.com/wp-content/uploads/2010/05/ff-300x215.jpg" alt="" width="300" height="215" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/ff-300x215.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/ff.jpg 800w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p>附上枫影的mp4格式配置图：</p> 
<p><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-286" title="ffset" src="http://www.windyshade.com/wp-content/uploads/2010/05/ffset-300x247.jpg" alt="" width="300" height="247" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/ffset-300x247.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/ffset.jpg 625w" sizes="(max-width: 300px) 100vw, 300px" /></p> 
<p><strong>可以到他们的官网下载，免费：<a href="http://www.formatoz.com/">http://www.formatoz.com/</a></strong></p> 
<p><strong>2、Mp3Tag</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/mp3tag.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-287" title="mp3tag" src="http://www.windyshade.com/wp-content/uploads/2010/05/mp3tag-300x214.jpg" alt="" width="300" height="214" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/mp3tag-300x214.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/mp3tag.jpg 869w" sizes="(max-width: 300px) 100vw, 300px" /></a><strong> </strong></p> 
<p>又一款强大的免费软件，可以批量修改mp3 tags，修改mp3的标题、歌手等各种信息，还可以给mp3添加封面，支持批量操作。从此不必再为自己机子里凌乱的mp3烦恼。</p> 
<p><strong> 附官网下载：</strong><a href="http://www.mp3tag.de/en/download.html"><strong>http://www.mp3tag.de/en/download.html</strong></a></p> 
<p><strong>3、iFunbox</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/ifunbox.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-148" title="ifunbox" src="http://www.windyshade.com/wp-content/uploads/2010/05/ifunbox-300x178.jpg" alt="" width="300" height="178" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/ifunbox-300x178.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/ifunbox-1024x608.jpg 1024w, https://cdn.justinbot.com/wp-content/uploads/2010/05/ifunbox.jpg 1280w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p>上一篇文章也提到了iFunbox，用来对iPhone &amp; iTouch传输数据，并且支持搜索功能，对新手来说，是帮助脱离91助手的好软件。</p> 
<p><strong><a href="http://u.115.com/file/f1f9970d5f" target="_blank">附115网盘下载地址</a></strong></p> 
<p>4、PCB</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/pcd.jpg"></a></p> 
<p>威锋论坛的牛人写的pxl批量转换为ipa的软件。其贡献无需多言。</p> 
<p>上图。<strong><a href="http://u.115.com/file/f15f021415" target="_blank">附115网盘下载地址</a></strong></p> 
<p><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-288" title="pcd" src="http://www.windyshade.com/wp-content/uploads/2010/05/pcd-300x230.jpg" alt="" width="300" height="230" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/pcd-300x230.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/pcd.jpg 482w" sizes="(max-width: 300px) 100vw, 300px" /></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6025;&#x7740;&#x542C;&#x89C1;</title>
        <link>https://justinyan.eth.limo/421ABBEA-27A8-474E-8349-68FB1C170A2D/</link>
        <guid>https://justinyan.eth.limo/421ABBEA-27A8-474E-8349-68FB1C170A2D/</guid>
        <pubDate>Sat, 22 May 2010 00:50:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>急着听见</p> 
<p>10.05.01/零点</p> 
<p>第三天的雨打在伞上</p> 
<p>　没有声音的世界堵在天上</p> 
<p>蓝　蓝蓝的</p> 
<p>我的手掌</p> 
<p>一支枯萎的忧伤</p> 
<p>从指尖的琴弦震颤</p> 
<p>它在栏杆的结点看见</p> 
<p>一双红色的鞋</p> 
<p>许多个模糊的音乐</p> 
<p>在足下被踏陷</p> 
<p>你抬头的瞬间</p> 
<p>我伸手抹去伞缘</p> 
<p>急着听见</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x89E3;&#x51B3;Javascript&#x51FD;&#x6570;&#x9ED8;&#x8BA4;&#x53C2;&#x6570;&#x95EE;&#x9898;</title>
        <link>https://justinyan.eth.limo/7CE8B631-1DD1-4748-B541-C5B2892174A1/</link>
        <guid>https://justinyan.eth.limo/7CE8B631-1DD1-4748-B541-C5B2892174A1/</guid>
        <pubDate>Fri, 21 May 2010 23:49:14 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>今天在写着JS代码的时候，由于函数需要传参并且有不传参的情况，在C/C++里面我们可以使用</p> 
<p>void myfunction( arg1 = 11 ){...}</p> 
<p>来设置参数的默认值。但是Javascript里面并不提供这种功能。</p> 
<p>我在写代码的时候用的是JQuery，同样也不提供默认参数设置。</p> 
<p>在网上搜了挺多，大多没用，我的想法是：先在函数里包含一个形参$arg(这里用JQuery作为例子)，然后在函数体中判断$arg是否存在，如果存在则使用该值，如果不存在则赋默认值。</p> 
<p>但是我使用if($arg)时是判断不了的，使用if($arg == null)也一样判断不了，在网上搜了一下使用if( $arg.length == 0 )也还是不行。alert一下$arg，显示为[Obeject][Obeject]，即JQuery返回的数组。</p> 
<p>解决的办法是：使用.length方法判断该变量长度，如果为false则表示$arg没有赋值。代码如下：</p> 
<p>function sample( $arg ){</p> 
<p>    if(  !( $arg.length ) ){</p> 
<p>        $arg = 111;</p> 
<p>    }</p> 
<p>    ....</p> 
<p>}</p>
        ]]></description>
    </item>
    
    <item>
        <title>iPhone &#x26; iTouch &#x70E6; q1ang&#x653B;&#x7565;</title>
        <link>https://justinyan.eth.limo/9BE91DA3-3880-4A66-9EDB-4097CE896D69/</link>
        <guid>https://justinyan.eth.limo/9BE91DA3-3880-4A66-9EDB-4097CE896D69/</guid>
        <pubDate>Fri, 21 May 2010 22:26:05 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>本来今天已经写了一天代码头昏脑胀，而且中午也发了篇翻译的新闻，本打算今天就不再写博文了，登录威锋一看收件箱里有童鞋问我要《烦弓虽篇》，自己又没写过这文，所以想想还是拿起touch来敲几下截几张图，分享给大家好了。</p> 
<p>今天这文主要讲iPhone &amp; iTouch的烦 q1ang的方法，主要有通过软件和通过VPN两种方法。截至发稿日2010/05/21，软件和VPN都由枫影亲测过可用。
 <!--more--></p> 
<p>首先介绍烦 q1ang版Opera，原理很简单，我们只要打开soket连接方式，使Opera的连接经过德国的服务器，德国的服务器是不受q1ang影响的，所以传输数据就不会被XX。</p> 
<p><strong>下面是德服版Opera</strong><strong>教程</strong>：</p> 
<p>貌似默认的连接方式就是Socket，不过为了保险还是写下Socket的设置</p> 
<p><strong>首先下载并安装Opera Mod（后有下载地址），打开后点小扳手再选择Settings</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0056.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-214" title="IMG_0056" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0056-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0056-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0056.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>进入Settings后选择Advanced</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0057.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-215" title="IMG_0057" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0057-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0057-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0057.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>之后选Protocol</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0058.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-215" title="IMG_0058" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0058-200x300.png" alt="" width="200" height="300" /></a></p> 
<p>之后选Socket</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0059.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-215" title="IMG_0059" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0059-200x300.png" alt="" width="200" height="300" /></a></p> 
<p>然后，你就可以开始自由的冲浪喽～！</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_00521.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-233" title="IMG_0052" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_00521-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_00521-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_00521.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_00531.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-234" title="IMG_0053" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_00531-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_00531-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_00531.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0055.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-235" title="IMG_0055" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0055-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0055-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0055.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p>附<a href="http://u.115.com/file/f1aa0e9530" target="_blank">115网盘下载</a>。</p> 
<p><strong>另外类似的软件有HideMe</strong>，枫影之前在App Store上下载过，是免费的，但是后来刷机后就没了，而且在App Store里也找不到，google也找不到。这个软件也可以烦弓虽，不过比较慢，界面也比较难看，图标是个大大的眼睛。</p> 
<p><span style="color: #ff0000;"><strong>最后是最最重头戏的VPN烦弓虽了。</strong></span></p> 
<p>VPN的教程在网上一大堆，不过VPN能否烦弓虽不在教程本身而在服务器是否还能烦，枫影目前使用的是锋友分享的VPN，MacroVPN，申请的时候使用免费帐户他会送你2GB的流量，用完了就再申请一个呗。</p> 
<p>注册地址为：<a href="http://billing.macrovpn.com/reg.php" target="_blank">http://billing.macrovpn.com/reg.php</a></p> 
<p>下面是申请和设置的教程：</p> 
<p><strong>进入注册页面后，填好信息，选择A Free VPN帐户。</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/vpn01.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-223" title="vpn01" src="http://www.windyshade.com/wp-content/uploads/2010/05/vpn01-300x224.jpg" alt="" width="300" height="224" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/vpn01-300x224.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/vpn01.jpg 775w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p>这册成功后会转入帐户控制，<strong>记下左边那些服务器地址的任何一个</strong>。（我这是后来登录的，被他判断为中国IP所以变成了中文）。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/vpn02.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-224" title="vpn02" src="http://www.windyshade.com/wp-content/uploads/2010/05/vpn02-300x142.jpg" alt="" width="300" height="142" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/vpn02-300x142.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/vpn02.jpg 693w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p>接下来我们设置iPhone &amp; iTouch的VPN。</p> 
<p>打开Settings(设置)-&gt;General（通用）-&gt;network（网络）-&gt;VPN</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0046.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-226" title="IMG_0046" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0046-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0046-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0046.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0047.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-226" title="IMG_0047" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0047-200x300.png" alt="" width="200" height="300" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0048.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-226" title="IMG_0048" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0048-200x300.png" alt="" width="200" height="300" /></a><strong>然后点击Add VPN Configuration</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0049.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-226" title="IMG_0049" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0049-200x300.png" alt="" width="200" height="300" /></a><strong>设置你的VPN</strong></p> 
<p><strong>连接方式为“PPTP”，Description（描述）随便填，给自己看的而已</strong></p> 
<p><strong>Server（服务器）填上自己刚刚记下来的那个，</strong></p> 
<p><strong>Account（帐户）填上自己申请的用户名</strong></p> 
<p><strong>Password(密码)。</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0045.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-226" title="IMG_0045" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0045-200x300.png" alt="" width="200" height="300" /></a><strong>填好之后Save保存，此时settings首页已经有VPN选项了，打开自己的WI-FI，再打开VPN，连接成功会在左上角出现蓝色VPN标记，如下图：</strong></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0062.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-230" title="IMG_0062" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0062-200x300.png" alt="" width="200" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0062-200x300.png 200w, https://cdn.justinbot.com/wp-content/uploads/2010/05/IMG_0062.png 320w" sizes="(max-width: 200px) 100vw, 200px" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0063.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-230" title="IMG_0063" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0063-200x300.png" alt="" width="200" height="300" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0064.png"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-230" title="IMG_0064" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0064-200x300.png" alt="" width="200" height="300" /></a></p> 
<p>我的twitter帐号为@mapleshadow，欢迎follow~!</p>
        ]]></description>
    </item>
    
    <item>
        <title>Google I/O&#x5927;&#x4F1A;&#x4E0A;&#x4ECB;&#x7ECD;&#x65B0;&#x4E91;&#x5B58;&#x50A8;&#x670D;&#x52A1;</title>
        <link>https://justinyan.eth.limo/18B427AA-321B-4FBE-B1B9-E43FE2685639/</link>
        <guid>https://justinyan.eth.limo/18B427AA-321B-4FBE-B1B9-E43FE2685639/</guid>
        <pubDate>Fri, 21 May 2010 13:51:47 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>Google利用其RESTful的API以及已有的庞大的云存储设备和网络设备，建立了新的面向开发者的存储服务（Google Storage for Developers），用来存储开发者的代码，并在程序编译运行的时候提供云计算服务。
 <!--more--></p> 
<p>Google在5月20号启动了一个面向软件开发者的新的云存储服务，这将给软件开发者们提供了一个新的选择——在google之前，已经有几家公司提供了类似的服务，其中包括了亚马逊的Simple Storage Service，或称S3。</p> 
<p>亚马逊或许是在这场新的竞争中的领跑者，5月19号他们刚刚发布声明：亚马逊已经对S3达33%的存储业务进行了修整。</p> 
<p>在互联网业界，惯用语RE presentational State Transfer (REST)是指一种可以通过URL访问，从而把网络服务器当作资源使用的不分国籍的客户端/服务器架构。</p> 
<p>利用这个API，开发者们将很容易通过google云存储服务连接到自己的应用程序，这些服务由google在美国的几个大型数据中心提供。</p> 
<p>Google云存储服务开发团队的Jessie Jiang在他的博客中写道，这种新的存储服务提供了几种验证方式，支持SSL，支持个人操控和团队合作。</p> 
<p>它还提到，这个服务具有高度可升级性，支持read-after-write数据一致性，支持每秒数百GB的对象请求，以及一个域名映射的命名空间。另外，开发者可以通过一个基于网络的接口或GSUtil，或者开源的命令行工具和开源的库来管理他们的存储空间。</p> 
<p>Jiang说这次google storage for Developers将会限量对开发者开放，在preview阶段，每个开发者可以免费拥有一个100GB的存储空间和每月300Gbit的带宽。</p> 
<p>想要了解更多内容以及加入开发者候选名单，请访问google storage for Developers. http:// code.<strong>google</strong>.com/apis/<strong>storage</strong>/</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x8BBE;&#x8BA1;&#x5E08;&#x7684;&#x798F;&#x97F3;&#xFF1A;Google fonts&#x4E0A;&#x7EBF;&#x2014;&#x2014;&#x67AB;&#x5F71;&#x4EB2;&#x6D4B;</title>
        <link>https://justinyan.eth.limo/28258140-AA6E-42B1-BB44-1903D63634F6/</link>
        <guid>https://justinyan.eth.limo/28258140-AA6E-42B1-BB44-1903D63634F6/</guid>
        <pubDate>Thu, 20 May 2010 22:54:18 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>今天在reader里看到google fonts服务启动的消息，枫影激动得内牛满面呀～！</p> 
<p>于是晚上下课后回到宿舍，立马就去试了一下google fonts，感觉加载速度很快，而且如果在某些情况下连不到还可以使用自定义的备选字体，很不错～！目前google只提供18免费字体，以后会接着增加字体，都是免费的。希望google以后能多出点中文字体，无论如何，google的字体服务可真是全世界网页设计师的福音呀～！！</p> 
<p>具体使用为：</p> 
<p>1、在你的网页head里以link导入google font为css如：</p> 
<p>&lt;link href='http://fonts.googleapis.com/css?family=Cantarell' rel='stylesheet' type='text/css'&gt;</p> 
<p>这里，family=Cantarell表示载入Cantarell字体。</p> 
<p>然后，再在你的CSS文件里面写入：</p> 
<p>{font-family: 'Cantarell', arial, serif; }</p> 
<p>这样就行了。</p> 
<p>下面是我写的一个DEMO，测试了google提供的3种英文字体。目前google没有提供中文字体，让我们好好期待吧，如果免费的文泉驿能上就好了。</p> 
<p>废话不说，上链接：</p> 
<p><a href=" http://www.windyshade.com/wp-content/wh-demos/google-fonts/demo.html" target="_blank">http://www.windyshade.com/wp-content/wh-demos/google-fonts/demo.html</a></p> 
<p>附源码下载：<br /> <a title="猛击下载源码" href="http://u.115.com/file/f169f344f1">猛击下载源码</a></p> 
<p>更多内容请参看：<a href="http://code.google.com/apis/webfonts/" target="_blank">http://code.google.com/apis/webfonts/</a></p>
        ]]></description>
    </item>
    
    <item>
        <title>Twitter&#x9996;&#x6B21;&#x653E;&#x51FA;iPhone&#x4E0E;iPod Touch&#x5BA2;&#x6237;&#x7AEF;</title>
        <link>https://justinyan.eth.limo/42182258-0341-48C9-977C-47306DDE6342/</link>
        <guid>https://justinyan.eth.limo/42182258-0341-48C9-977C-47306DDE6342/</guid>
        <pubDate>Thu, 20 May 2010 22:22:07 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>5月19号，Twitter在放出Android客户端的同时也放出了iPhone&amp;iPod Touch客户端。使用该客户端，用户无需注册帐号就可以在iPhone上使用twitter.只要在iTunes Store上下载了该软件，就可以看到最热的tweets，找到更多推友并可以看到其公共tweets。而且，Twitter同时也透漏他们已经开发了iPad的客户端，但是并未声明什么时候才会正式发布。</p> 
<p>用户现在可以到App store上下载twitter官方客户端了，软件是免费的，目前支持iPhone 3.0以上的系统。</p>
        ]]></description>
    </item>
    
    <item>
        <title>[&#x5916;&#x6587;&#x7FFB;&#x8BD1;]&#x4ECE;&#x4E54;&#x5E03;&#x65AF;&#x7684;&#x90AE;&#x4EF6;&#x770B;&#x82F9;&#x679C;&#x672A;&#x6765;&#x7684;&#x5341;&#x5927;&#x7B56;&#x7565;</title>
        <link>https://justinyan.eth.limo/0B313840-D68D-4083-86B3-AD6258F8E7DE/</link>
        <guid>https://justinyan.eth.limo/0B313840-D68D-4083-86B3-AD6258F8E7DE/</guid>
        <pubDate>Wed, 19 May 2010 18:08:24 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>[外文翻译]从乔布斯的邮件看苹果未来的十大策略</p> 
<p>最近，苹果CEO斯蒂芬乔布斯特别活跃于他的电子邮件。这位果粉心中的国王经常在电</p> 
<p>子邮件上与他的客户和记者讨论各种各样的问题，内容很广，从ipad到iphone os的更</p> 
<p>新记忆MacBooks无所不谈。
 <!--more--></p> 
<p>从这些邮件揭示的内容我们可以看出乔布斯接下来对他的公司未来发展的计划。尽管</p> 
<p>乔布斯小心翼翼地措辞，甚至很多邮件里他只用了一两个单词作为回复，但是他仍然</p> 
<p>留下了些蛛丝马迹让我们可以从中窥得一斑。</p> 
<p>下面我们就列举几点乔布斯在他的邮件中有意或无意揭示出来的苹果未来的计划。</p> 
<p><strong>1、iPhone OS将是苹果未来的重心。</strong></p> 
<p>在乔布斯发给客户的大量邮件中我们可以很清楚地看到苹果未来的策略将会围绕</p> 
<p>iPhone OS为中心来展开。这也是显而易见的。苹果的iPhone本来就是他们正在销售的</p> 
<p>产品中最为重要的一款。而且，随着同样适用iPhone OS的iPad的到来，苹果将会有更</p> 
<p>大的空间对iPhone OS进行技术支持，也将更加拓宽iPhone OS的应用环境。</p> 
<p><strong>2、苹果将彻底控制他的App Store</strong></p> 
<p>在最近的几次邮件交流中，乔布斯表示说苹果知道什么对他的App Store来说才是最好</p> 
<p>的。他通过邮件告诉客户说App Store将会成为一个彻底摆脱“porn”（英文意思为色</p> 
<p>情，不过这里是乔布斯的幽默，请看下一句）的地方。"porn"指的是"programs that</p> 
<p>steal your personal data",即偷窃用户个人信息的程序。这次有趣的交流实际上突</p> 
<p>出了苹果想要按照自己的方式控制store的强烈渴望。同时，这也是一次对那些企图带</p> 
<p>来可疑软件的开发者们的一次小小的警告。</p> 
<p><strong>3、Flash 将永远不会登录iPhone OS</strong></p> 
<p>乔布斯已经很清楚地表示说让Flash进入iPhone或者iPad这样的事情令他恶心。最近他</p> 
<p>告诉一个用户说苹果正在努力地做着正确的事情"to do the  right thing"。这其实</p> 
<p>是暗暗地捅了flash一刀。不过这也显示出乔布斯对于所谓“网络标准”(web</p> 
<p>standard)的不耐烦。他说开发者们要不就选择坚持Adobe的标准也不就选择坚持苹果</p> 
<p>的标准。而目前已经有许多人选择了苹果——这也是乔布斯想要看到的。</p> 
<p><strong>4、斯蒂芬乔布斯对自己做出的策略决断相当自负</strong></p> 
<p>你只需要匆匆浏览过一遍乔布斯发给客户们的邮件你就会发现一件已经被许多书作或</p> 
<p>者网络文章写多无数遍的事情：乔布斯挺自负。从某些层面上看，这种自负导致乔布</p> 
<p>斯只坚持自己所坚持的。不过同时也是他的自负才造就了苹果的今天。在所有的邮件</p> 
<p>里他都清楚地表示出他将会坚持他的那些，尽管是饱受争议的决定，并且决不动摇。</p> 
<p><strong>5、新一轮的改进即将到来</strong></p> 
<p>事实上所有的邮件有一个共同的主题就是，乔布斯发送的邮件里，都在暗示说有几个</p> 
<p>新的改进将会在几个月内到来。他说这些新的改进将针对包括iPad,iPhone和Mac OS X</p> 
<p>的改进。无论对于普通用户还是企业用户来说，这都是一个好消息。不过，对于已经</p> 
<p>购买了苹果产品的用户来说，他们最大的疑问就是为什么这些改进不是在“我买的这</p> 
<p>代”机子上而非得等到下一代呢？</p> 
<p><strong>6、与客户交流是我的责任</strong></p> 
<p>乔布斯开始回应客户问题的决定放映出他的公司渴望变得比以前更有效率。这是件好</p> 
<p>事。一直以来，苹果总被视为一个神秘的所在。它看起来就像一个以某种方式进行着</p> 
<p>商业活动的公司，并且一切保密。而现在，为了提高对客户服务的效率，乔布斯正在</p> 
<p>改变这一现状。</p> 
<p><strong>7、iPad并不是一切</strong></p> 
<p>不久前，许多发给乔布斯的邮件里几乎都围绕着iPad以及苹果接下来对iPad有什么计</p> 
<p>划谈论着。尽管这话题曾是邮件交流公开的必谈话题，但是iPad并不是一切。事实上</p> 
<p>，乔布斯最近说过将会给MacBook和MacBook Pro带来一系列的更新。也就是说iPad并</p> 
<p>不是乔布斯思考的唯一的产品。<br /> [枫影插话：=.=|||这不是废话。。。]</p> 
<p><strong>8、潜在的才是最关键的</strong></p> 
<p>就像乔布斯所说的那样，他没有说出来的东西才是最重要的。乔布斯又一次证明了他</p> 
<p>可以仅凭几句话的开头接续一堆多媒体资料就能掀起又一波的新闻热潮。这种经过验</p> 
<p>证的技术创造了苹果多年来的底线的奇迹（抱歉这句翻译得很烂，原文"It's a</p> 
<p>proven technique that has done wonders for Apple's bottom line throughout</p> 
<p>the years"）。尽管有人说乔布斯的回答不够典型，但是他们仍然对苹果抱着乐观的</p> 
<p>心态。就像乔布斯在主题演讲上做的一样，他只是给出足够的信息让这样的交流变得</p> 
<p>有趣，同时也忽悠咱对他的那些决策的效果抱着期待的心情。</p> 
<p><strong>9、斯蒂芬乔布斯，一个公关机器</strong></p> 
<p>如题，乔布斯显然在努力让自己变成自己的公关机器。尽管他的公司在解决公关方面</p> 
<p>已经做得很好，乔布斯也还是把他的电子邮箱当成了对待公共事务的一件武器。他知</p> 
<p>道他发出的每一条信息都很可能会通过网络泄漏出去并且被数以千万的人所看到。所</p> 
<p>以，他极度谨慎的遣词造句，力求精确地控制他的话语中不会泄漏他的产品的相关信</p> 
<p>息。</p> 
<p><strong>10、斯蒂芬乔布斯一直在这里</strong></p> 
<p>最后，乔布斯再次表示他将一直留在苹果。通过对邮件的回复我们可以看到乔布斯的</p> 
<p>决定在苹果中起到的重要作用，他将带领苹果一直前进。同时他也表示他的病情已经</p> 
<p>稳定的多了，所以他将继续掌控苹果的大权，掌握苹果现在的和未来的前进方向。这</p> 
<p>对于果粉和苹果的投资者来说或许是个好消息，但是对于苹果的竞争者来说，可是件</p> 
<p>令人头疼的事情。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x770B;&#x5230;&#x67D0;&#x7BC7;&#x8BC4;&#x97E9;&#x4E50;&#x575B;&#x7684;&#x6587;&#x7AE0;&#x540E;&#x60F3;&#x5230;&#x7684;</title>
        <link>https://justinyan.eth.limo/F6D98CF3-4441-4CF7-B6B6-81EAB3966EB4/</link>
        <guid>https://justinyan.eth.limo/F6D98CF3-4441-4CF7-B6B6-81EAB3966EB4/</guid>
        <pubDate>Wed, 19 May 2010 01:50:34 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>在快要去睡的时候看到一篇文章，<a href="http://www.koreastardaily.com/tc/news/2592">http://www.koreastardaily.com/tc/news/2592</a></p> 
<p>貌似在抽抽殿里引起不小风波，不过帖子好像被删了，我没找到。</p> 
<p>帖子大意是说现在韩歌坛许多偶像团体不是靠歌曲而是靠牺牲色相来换取人气，歌曲出来后在迅速窜红并在宣传期势头强劲而过了宣传期就以跟窜红时一样的速度被人遗忘。然后列举了许多偶像团体，包括男女团体，说裸露得越来越多而不是实力越来越强。
 <!--more--></p> 
<p>文章写得不错，不过感觉有些偏激并且部分观点我不大同意。说现在的偶像仅仅凭借牺牲色相来换取人气这点我就不同意了。少女时代中当然有唱歌不好的队员，但这是韩国娱乐公司历来的策略。韩国比较大的公司都会选秀之后招进大批练习生，普遍在小学初中的年龄，投入大量财力物力人力对其进行培养，而一般情况下只会有1/3的练习生得以顺利出道。这也就意味着公司将会损失大量的投资。为了将风险降到最低他们选择了组合出道。例如少女时代9人。这9人组合里并不是每个人都很会唱歌，但是每个人有不同的特色，所以只要观众喜欢其中一个那么这个组合就被喜欢了，也就是说，不需要喜欢整个组合，只要喜欢一个就够了，所以韩国团体的歌迷群才会这样庞大。我说这个是想说，偶像团体里有不太会唱歌的人存在，这是对的，但并不是全都不会唱歌。少女时代唱功最佳的是泰妍，然后jessica tiffany 徐贤和sunny都是唱将。那篇文章里没提到东方神起，估计也知道神起唱歌的实力，那就不举神起了。其他团体我不熟，不过我知道brown eye girls的佳人唱功了得，davichi也是，至于文中提起的secret我不了解，无法说明。</p> 
<p>不过文章里提到的，韩国团体的形象设计是越来越暴露这点我可以同意一部分。确实现在韩国偶像团体在形象上的设计sexy风格渐趋主流，不过这种形象应该属于设计的范畴，不能说这种风格就伤风败俗。在性方面比较开放的美国，各种形象的并存就不成问题，清纯与sexy仅仅是不同形象的设计，不存在谁有谁劣的问题。想来应该是文化的不同评判的标准不同而导致的。如果把这种设计当作一种风格来看待，那么是OK的。</p> 
<p>另外，这里我并不是在为色情辩解，色情的话无论在哪里都是被禁止的。但是韩国偶像团体的形象不涉及色情。另外，形象设计是由公司决定的，歌手本身只能接受无法改变，这点当年fly to the sky的形象是和h.o.t一样的叛逆形象但是fly to the sky的两位歌手却很讨厌自己这样的形象甚至为此伤心地哭了。所以，形象设计的问题可以批评，但请从设计的角度来评判，比方说某种设计是为了突出曲线美而做出设计，而另一种设计则纯粹为了露肉，根本没有半点美学基础，应该这样评判会比较好。</p> 
<p>然后是说公司很少与真正的音乐人合作，没有做出真正的好曲子。这点我也同意一部分。比方说少女时代所在的star museum公司。公司出过的组合很多，东方神起、f(x)、super junior的歌我都有听过，感觉风格是一样的，基本上某段时间韩国乐坛流行什么样的音乐他们就会唱那种类型的歌。比方说少女时代《Gee》时期的时候流行反复的歌词与简单的旋律，后来整个流行乐坛就出了一大堆这样的歌，这个跟咱国家的所谓“中国风”的山寨是一样的。这点我就不太喜欢了，听来听去歌曲都是一个样的，没啥创新。比方说我听了gee，是反复的，后来又听少女2辑里的echo，也是反复的，刚开始听挺好听的，不过听多了就会像，咦，好像这些歌都差不多的捏？这也是公司决定的，怪不得歌手。</p> 
<p>不过东方神起的团体不太一样，俊秀、在中都是创作型歌手，他们也写了许多不错的歌，kiss the baby sky和colors melody and harmony我就很喜欢，感觉也比公司定制的那些听多了觉得差不多的曲子是很不同的。</p> 
<p>另外韩国艺人可不是像文章里说的那样，靠色相来赚眼球，也是他们真如此而没实力我早就抛弃了我可不至于蠢到这种地步。他们的歌唱实力，东方神起不用说，少女时代固然有唱歌不太好的，但是我最喜欢的泰妍的实力那个毋庸置疑，另外，他们除了唱歌外，作为一个在竞争如此激烈的娱乐市场中寻求生存之道的韩国艺人，他们还受过舞蹈、语言、艺能、对待采访、镜头的应对能力等诸多训练，这也使得他们综合能力让国内的艺人望尘莫及。小公司的可能真没办法做到这点，所以小公司或许会有唱功不佳的组合推出，但是那个即便能红一时也无法如H.O.T一般成为天团。天团是需要代价的，他们背后的地狱般的训练可不是像文章里说的要出了卖肉的，所以文章里过分偏激的观点我是反对的。</p> 
<p>不过文章也说出了些事实，比方说形象渐趋sexy以及歌曲质量的下降。在竞争如此激烈的今天，创作被金钱扰乱的今天，观众或者听众的欣赏水平大大提升的今天，要制作出艺术与商业价值兼具的歌曲确实是很难得的。美国的娱乐业经过多年的发展目前是相当成熟的，无论是商业性还是艺术创作都能寻得不错的平衡，韩国在这方面还有些欠缺，这个只能说期待发展，而不是一味抨击。</p> 
<p>嗯……总体而言，大致如此，无语了。</p> 
<p>以上。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6E05;&#x542C;</title>
        <link>https://justinyan.eth.limo/87268403-6CC8-4FF2-BD02-25A23EB96D5B/</link>
        <guid>https://justinyan.eth.limo/87268403-6CC8-4FF2-BD02-25A23EB96D5B/</guid>
        <pubDate>Tue, 18 May 2010 18:17:12 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>清听</p> 
<p>10.05.01/零点</p> 
<p>穿梭在叶与光之间的味道</p> 
<p>好耀眼</p> 
<p>的桥</p> 
<p>灵动　恍惚　微烟</p> 
<p>翔起一弧青翠</p> 
<p>的罪</p> 
<p>但河底的游鱼不同</p> 
<p>它不是我糊涂的梦</p> 
<p>我梦里只有叮咚</p> 
<p>叮咚　叮咚</p> 
<p>又哪来流雪飞柳</p> 
<p>和盈盈的轻蛩</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x8D8A;&#x72F1;&#x540E;&#x5FC5;&#x770B;&#x2014;&#x2014;&#x6539;&#x9020;iphone&#x26;itouch&#xFF0C;&#x8BA9;&#x5B83;&#x6210;&#x4E3A;&#x5F3A;&#x52B2;PPC&#xFF01;&#xFF01;[&#x8F6F;&#x4EF6;&#x9644;&#x7F51;&#x76D8;&#x4E0B;&#x8F7D;]</title>
        <link>https://justinyan.eth.limo/02104C74-6CDE-45FA-AD68-251B7C2C18CB/</link>
        <guid>https://justinyan.eth.limo/02104C74-6CDE-45FA-AD68-251B7C2C18CB/</guid>
        <pubDate>Sun, 16 May 2010 20:04:50 +0800</pubDate>
        
        
        <description><![CDATA[
            <p style="text-align: left;"><a href="http://www.windyshade.com/wp-content/uploads/2010/05/specs_dimensions20080909.jpg"><img decoding="async" loading="lazy" width="260" height="272" class="aligncenter size-full wp-image-102" title="ipod touch" src="http://www.windyshade.com/wp-content/uploads/2010/05/specs_dimensions20080909.jpg" alt="" /></a><br /> 4月初左右入手的itouch 3G 32G版，3.13的系统，于是就杯具地等了一个多月，终于在5月初迎来spirit的release，内牛满面啊～！！于是我的ipod touch从那天起就不再仅仅是一部听歌看电影的ipod了，它解封之后表现出的强劲的能力完全就是一部完整的PPC(Pocket PC)。<br /> 所 以今天枫影就小发一文，教你如何改造自己的iphone &amp; ipod touch，让它成为你手中的超便携电脑。
 <!--more--><br /> 再按我下面的文章 开 始之前，要求你的iphone&amp;ipod touch必须是已经越狱或者说破解了的，还没破解的请先行破解。截止发稿日期，spirit越狱工具仍可破解全系列 iphone&amp;itouch，具体的破解教程我这里就不发了，给个权威的iphone论坛大家，<a href="http://www.weiphone.com/">http://www.weiphone.com</a>， 威锋论坛，我下面要介绍的 软件基本上都能在这个论坛找到，而平时我也是常去这个论坛看新闻，下软件的，是个不错的论坛，顾推荐之。<br /> spirit 越狱破解教程:<a href="http://bbs.weiphone.com/read-htm-tid-772203.html">http://bbs.weiphone.com/read-htm-tid-772203.html</a><br /> 具体使用spirit破解3.13或者更旧版本的iphone&amp;itouch的教程，我贴个链接上来，大家自己去看看吧，这里就不赘述 了。另外，下面开始改造iphone&amp;itouch(下面简称it)的教程是以我自己的3代itouch为实例写的，所以可能会有部分软件1代或 2代不能使用，不过以我的经验来看，系统软件应该是都可以使用的，游戏部分就不一定了。有什么问题大家可以到威锋去搜索，或者在后面评论反馈。<br /> OK， 废话说太多了，进入正题。<br /> <strong>一、准备阶段</strong><br /> <strong>1</strong><strong>、cydia</strong><br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0001.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0001-200x300.png" alt="" /></a><br /> 破解完成之后的it应该会在springboard(即排列显示图标的页面，或称主页)出现cydia的图标 (另外，我的spingboard上的dock显示5个是用了five-icon-dock这个插件，可自行到cydia下载)。Cydia跟App store差不多，只是它上面的软件都必须是越狱后的机子才能使用。如果你越狱后没有出现cydia，那么你可能用的是用黑雨破解，需要安装cydia， 具体请到威锋去搜一下。<br /> OK，现在你需要一个wifi，iphone的可以用3G，联网后打开cydia，选择<strong>manage-&gt;Edit-&gt;Add</strong>, 添加新的源(苹果的OS基于UNIX，用过linux的童鞋应该就知道源是啥东东啦，不知道也无所谓，反正只要知道添加了源就可以直接从源那里下载软件并 安装)。<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0014.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0014-200x300.png" alt="" /></a><br /> 需要添加的源如下：<br /> <a href="http://app.weiphone.com/cydia/">http://app.weiphone.com/cydia/</a> 威锋网提供的源<br /> <a href="http://apt.weiphone.com/cydia/">http://apt.weiphone.com/cydia/</a> 威锋的新源<br /> <a href="http://d.imobilecinema.com/">http://d.imobilecinema.com/</a> IMC源<br /> <a href="http://www.sinfuliphonerepo.com/">http://www.sinfuliphonerepo.com</a> sinful 源，里面有大量破解软件，包括cydia的收费软件的破解版<br /> <span style="color: #ff0000;"><strong>然后在 cydia</strong><strong>里搜索并安装ipa</strong><strong>补丁和afc2</strong><strong>补丁。Important!</strong></span><br /> <strong><span style="color: #ff0000;">然后再安装cydelete</span></strong><strong>，</strong>让你可以像删除app store安装的程序一样删除cydia的程序（没有这个软件就只能在cydia里面删除）具体方法是：按住一个程序的图标大约2秒，这时所有图标会摇摆 起来，再点击图标左上角的X就可以了。PS：cydelete的删除是完整删除的。<strong> </strong><br /> 至此，cydia准备结束。<br /> <strong>2</strong><strong>、iFile iFunBox </strong><strong>和 installous</strong><br /> 准备好cydia之后，我们要开始准备好其他软件的安装。有了cydia 我 们也只能安装源里面的deb包，却不能安装ipa文件，而多数从网上下载到电脑里的软件都是ipa格式，所以这里我们需要用 iFile+iFunBox+installous来解决软件安装的问题。<br /> 如果你知道有91软件助手这个东西，我还是劝你能抛弃就抛弃吧。<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0015.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0015-200x300.png" alt="" /></a><br /> 首先在cydia里<strong>搜索ifile和installous并安装</strong>。（ifile后来在 cydia里是收费软件，不过添加了那个sinful源之后就可以有破解版的了，记得要选sinful源的那个。）<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0017.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0017-200x300.png" alt="" /></a><br /> 之后下载iFunBox到你的电脑上：<a href="http://u.115.com/file/f1f9970d5f"><strong>115</strong><strong>网盘下载</strong></a>。安装 并打开， 切换到var/mobile/Downloads文件夹，如下图。<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/ifunbox.jpg"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/ifunbox-300x178.jpg" alt="" /></a><br /> 以后只要把要安装的软件传进这个文件夹，就可以用ifile和installous安装了。<strong>Ipa</strong><strong>格 式的用installous</strong><strong>安装，deb</strong><strong>包的用ifile</strong><strong>安装。</strong>Ifile的功能远不止安装文件而 已，它还可以全权管理你的机子的任何文件，所以使用的时候要小心，不要把关键文件给删了那就杯具了。<br /> 如上面说过的，有一个傻瓜化的软件，叫 91 助手，可以帮你解决所有格式的软件安装，但是这里枫影不推荐使用，如果你想让你的机子更为稳定，不经常崩溃，你最好就不要用它。当然，91也有它存在的理 由，实在不想或者不会用上述方法的童鞋也可以使用91，但是提醒一下可能的后果：1、经常崩溃；2、安装了的软件打不开；3、死机等等。<br /> OK， 准备玩这些我们就开始系统改造了～！</p> 
<p><strong>二、系统改造</strong><br /> 主要是实现it底层的某些系统功能，用以突破苹果 的 封锁，让it变得无所不能。<br /> <strong>1</strong><strong>、</strong>Backgrounder+ProSwitcher+Activator<strong>实 现后台多任务运行并自由切换</strong><br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0013.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0013-200x300.png" alt="" /></a><br /> It为人诟病的一点就是它不能后台多任务运行，其实它不是不支持，只是被苹果封了起来，估计是因为3代以及更 老的机子性能不足，如果解封则会让人觉得这机子很不稳定吧，权衡利弊，把这个大弊端给封存起来会更好。但是玩机的人可不管这些，我们接下来就解封它的后台 多任务运行，后面会解决那个因内存不足经常自动退出的问题。<br /> 在cydia上搜索并下载Backgrounder、ProSwitcher、 Activator.也有人喜欢用backgrounder + mQuickDo来进行多任务切换，但是我试用后对mQuickDo一直无法删掉的那条黄线超级反感，所以就没用，感兴趣的童鞋也可以自己去下载了试试。 mQuickDo还允许锁屏状态下显示几个dock(跟springboard最下面那几个不动的图标一样)，这点比较不错，但还是讨厌它那根黄线，玩游 戏的时候还一直亮着，老要按到，而且它跟SBSettings的启动方式冲突，所以不能让那根黄线维持默认的在顶部状态栏，超杯具。<br /> <span style="color: #0000ff;">根据70楼</span><a href="http://bbs.weiphone.com/u-htm-action-show-uid-719153.html">robinl1987</a><span style="color: #0000ff;"> 童鞋的指正，说MQ是可以设置那个黄色的条条的，我自己没去试验 过，但是各位童鞋可以自己试一下，我个人是喜欢proswitcher，大家也可以选择自己喜欢的软件去设置</span><br /> 按上面所说的方法传 到touch里面的var/mobile/documents文件夹里面并进行安装，安装后如下图：<br /> 之后我们进行配置，配置是以我的 touch 为参考，你也可以自己根据自己的需要去配置。<br /> 软件简介：backgrounder可以让你正在运行的软件后台运行，默认热键是按住 Home键， 但是不提供切换，proswitcher依赖于backgrounder，可以切换后台运行的程序并可关闭之，activator有点像桌面电脑的 autohotkey，可以自定义it的热键，我们用来协调这几个程序的热键设置（据说新版的backgrounder已经集成activator，不管 它，照样下载安装activator），主要目的是保护home键，因为home键按多了寿命就减少，就像索爱手机的摇杆一样，会变得很杯具。不过，我的 设置仍然是长按home键，这对home键不太好，只是出于个人习惯而已，读者可以参考一下设置方法自行设置其他热键。<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0003.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0003-200x300.png" alt="" /></a><br /> 首先打开backgrounder，Control，先取消默认的home button-&gt;shorthold,再选择Sleep Button-&gt;short hold。这里把按住关机键作为后台运行的热键，在运行程序的时候如果按住关机键不放（大约1秒），会出现Backgrounding Enable的提示（关闭太快我就不截图了），这时程序就在后台运行了，想要让它取消后台运行，就要重新打开它再按住关机键不放，这是会出现 Backgrounding Disable的提示，就OK了。不过这样做太麻烦，所以我们使用ProSwitcher来进行任务切换。<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0007.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0007-200x300.png" alt="" /></a><br /> 安装完ProSwitcher,打开 setting-&gt;ProSwitcher-&gt;Activation Methods设置自己想要的快捷键，这里我设置的是Home Button-&gt;Short Hold。运行效果如下图：<br /> 至此，后台多任务切换改造完毕。在Activator里面你还可以设置更多的热 键，请自行研究。</p> 
<p><strong>2</strong><strong>、Orbit</strong><strong>实现springboard </strong><strong>图标总览</strong><br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0018.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0018-200x300.png" alt="" /></a><br /> 其实上面安装的Activator真正的用途在这里，首先在cydia上安装Orbit，或者<a href="http://u.115.com/file/f15dc50056,1">我提供的115网盘下载</a>，安装之。<br /> 然 后再在 setting-&gt;Activator-&gt;Home Screen-&gt;Home Button-&gt;Double Press-&gt;Orbit。这是我的配置，读者可根据自身情况自己设定。这里双击home键会启动Orbit，如果你设置了双击Home键启动 ipod也不会冲突。在Ipod没播歌的时候双击则不启动ipod启动Orbit，如果ipod正在播歌，则会在ipod控制面板加多一个Orbit的按 钮。</p> 
<p><strong>3</strong><strong>、快捷开关（傻逼settings</strong><strong>——SBSettings</strong><strong>）</strong><br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0019.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0019-200x300.png" alt="" /></a><br /> 开关有什么用？SBSettings提供几个常用功能的开关，划动顶部状态栏启动，无需退出当前运行的软件。 开关的作用嘛，比方说，你躺在床上上网，看电子书，重力感应老让你的屏幕转来转去很不爽，所以这时候SBSetting就可以把rotation给关了， 就不会转屏了。新版的4G系统已经加入这个功能，不过对3代或更早的it来说，SBSettings还是很实用的，况且它的功能远不止如此。<br /> 可 以在cydia下载SBSettings<br /> 推荐几个开关：<br /> rotation 旋转屏幕开关<br /> autolock 自动锁屏开关<br /> keepawake 锁频时wifi不断，威锋下载地址：<a href="http://bbs.weiphone.com/read-htm-tid-710441.html">http://bbs.weiphone.com/read-htm-tid-710441.html</a><br /> <a href="http://bbs.weiphone.com/read-htm-tid-710441.html"><br /> </a><br /> <strong>4</strong><strong>、iMobileCinema</strong><strong>实 现iphone&amp;touch</strong><strong>看flash</strong><br /> 苹果的it&amp;ip不能看flash一直为人诟病，不过 adobe和apple竞争都这么多年了大家也就都忍了，不过玩机达人就没法忍了，于是有了iMobileCinema，现在cydia里添加源 d.imobilecinema.com，然后直接点它进入它的软件列表，没啥选的，直接就下载安装iMobileCinema了，ok，打开你的 safari，可以看flash影片喽～！<br /> 不过经枫影测试，还是有部分影片无法播放，包括某些基于sIFR的设计以及部分视频分享网站。</p> 
<p>有 童鞋反映源无法下载，补充<a href="http://u.115.com/file/f18a5bee95,1">115网盘下载地址</a></p> 
<p><strong>5</strong><strong>、 中文输入法</strong><br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0020.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0020-200x300.png" alt="" /></a><br /> Itou自带的输入法多烂这里就不说了，中文输入法推荐使用刚刚泄漏的百度输入法beta版，很不错，或者使 用老牌的人气很高的WeFit输入法，这里指拼音输入法，五笔输入法推荐用iCosta。这些都可以在cydia上下载.</p> 
<p><strong>6</strong><strong>、iBlueNova,DocsToGo,Good Reader,Stanza</strong><strong>文件阅读和传输</strong><br /> <strong><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0021.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0021-200x300.png" alt="" /></a></strong><br /> It自带的蓝牙是不能传给touch以外的设备的（没跟iphone传过不知道行不），这对我又用手 机又用touch的人来说是个悲剧。用iBlueNova来做蓝牙传输就没问题了，可以传输任何文件，对任何设备（其实我只传过两部诺基亚的手机）。双向 传输。</p> 
<p><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0023-200x300.png" alt="" /><br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0025.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0025-200x300.png" alt="" /></a><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0024.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0024-200x300.png" alt="" /></a><br /> DocsToGo可以新建、打开和编辑office文档，包括doc、ppt等格式的文件。 GoodReader可以查看文件，但貌似不能编辑。Stanza则是首选的看电子书的软件，app store免费下载，可以添加中文书库，不过我没弄成功，具体可以去威锋论坛看看别的教程。</p> 
<p><strong>7</strong><strong>、Download manager, Operamod </strong><strong>浏览器改造</strong><br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0029.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0029-200x300.png" alt="" /></a><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0030.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0030-200x300.png" alt="" /></a><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0028.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0028-200x300.png" alt="" /></a><br /> Imobilecinema，上面已经说过，是查看的flash插件。<br /> 安装download manager之后，你可以在safari里面下载任何文件，没用这插件之前，你只能下载图片。<br /> Opera mod是指Opera浏览的的 烦 弓虽版本，自己领悟，不解释。<br /> 附Opear mod <a href="http://u.115.com/file/f1aa0e9530,1">115网盘下载</a></p> 
<p><strong>8</strong><strong>、aNote, iXpenselt</strong><strong>记事、理财</strong><br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0033.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0033-200x300.png" alt="" /></a><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0032.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0032-200x300.png" alt="" /></a><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0031.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0031-200x300.png" alt="" /></a><br /> aWosomeNote超强记事本，可以添加todo还有其他各种类型的记事，自带提醒功能，很强大，极力推 荐。<br /> iXpenselt，理财软件，也是超级强大的软件，目前枫影就用这东西来理财，极力推荐。</p> 
<p><strong>9</strong><strong>、VolumeButtonControl</strong><br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0035.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0035-200x300.png" alt="" /></a><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0034.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0034-200x300.png" alt="" /></a><br /> 用音量键来控制你的ipod播放器，可以暂停、播放、上一首、下一首。如果你用的是苹果自带的耳机，那么耳机 就已经可以线控了（双击中间键是下一首，3次是上一首，或者长按用声控），如果不是原配耳机，可以考虑这个。我用这个软件主要是在玩游戏或者开其他软件的 时候，ipod会自动暂停音乐，虽然我可以先后台当前程序再去开ipod，但是远不如这个方便^O^<br /> 可以在cydia上搜索下载，我是在 cydia上搜索的，因为在别的地方找不到可以下载的ipa文件，只要添加了我开头说的那几个源就能找到～</p> 
<p><strong>三、个性化定制</strong></p> 
<p><strong>winterboard</strong><strong>更改iphone</strong><strong>主题</strong><br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0001.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0001-200x300.png" alt="" /></a><br /> 在cydia上搜索下载winterboard，然后再搜索各种主题下载，枫影用的是Domis Leopard，安装后再打开winterboard-&gt;selectthemes，选中主题即可切换了。<br /> 不过winterboard切 换主题并不稳定，有可能会导致系统偶尔崩溃一下，不过目前枫影重刷过机子后已不存在这种问题，想想枫影机子的崩溃可能与前一次刷机时玩太多底层软件有关。 不过论坛的高手都不推荐用winterboard来修改主题，只是枫影懒所以就用用，以后有空枫影再自己画一套出来，之前枫影也试过去修改主题，挺简单 的，想要深层DIY的童鞋可以参考威锋高手写的文章自行修改。<br /> 然后推荐个小软件：MIM——Makeitmine，这个软件可以修改你的机子 左 上角状态栏的文字，比如枫影就把原先叫ipod的地方改成了枫影两个字，不过这个软件有字数限制，想深层DIY的童鞋也可以参考威锋的文章去修改机子里的 系统文件，不过枫影懒，而且枫影本来就俩字儿，也没超，所以就无所谓啦。这个软件cydia上有得下载。<br /> <strong>四、推荐社会化软件</strong><br /> Twitterific 枫影在用的twitter客户端，界面友好，很不错。至于使用时的“网络问题”请参见《免费vpn 烦 弓虽篇》<br /> QQ 中国人都知道。<br /> LibFetion 枫影目前用的是威锋的版本，因为是touch，没有wap网所以用不了官方版，而牛人在app store的免费版本又被飞信官方给封了api，所以登录不了，只能用着这个先，牛人说了会改写那个版本的，就期待着吧。<br /> Facebook foursquare这些没啥好说的，过了。<br /> <strong>五、推荐游戏</strong><br /> 篇末，推荐几个游戏吧。游戏的话，推荐到91中文网去下 载， 都是破解的，很多很新很好很强大。不过下载来的是pxl格式，当然你可以用91助手去装但是我强烈不推荐，这里推荐一个牛人写的软件，可以批量转换pxl 格式为Ipa格式然后再用installous安装。<a href="http://u.115.com/file/f1f9970d5f">115网 盘下载</a>。其实原理挺简单，pxl只是打了 个包而已，里面实际上还是.app的包，那个软件只是把.app的包提取出来再打包成ipa而已，不过我 也只是说起来简单而又，自己是不太可能费功夫去写的，所以还是要感谢下大牛。<br /> 呃……其实自己不常玩游戏，下面这些游戏我也只是开过它而已，只玩 其中一两个比较多——说多其实也就玩了不过1个小时左右——所以描述就从简了。游戏可以到91中文网下载<a href="http://iphone.sj.91.com/">http://iphone.sj.91.com/</a>， 无需多言。<br /> 1. 太鼓达人2<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0036.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0036-200x300.png" alt="" /></a><br /> 超萌画面，轻松游戏，超萌声音，泡MM必备，无需多言。<br /> 2.PvZ<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0037.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0037-200x300.png" alt="" /></a><br /> 植物大战僵尸，无需多言。<br /> 3.Board Games<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0038.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0038-200x300.png" alt="" /></a><br /> 十个棋牌游戏，画面精美，枫影推荐之。<br /> 4.Labyrinth<br /> 弹珠游戏，枫影没买 touch的时候就老拿童鞋的iphoe来玩这个了。重力感应，轻松，呃，其实也不太轻松，的游戏。<br /> 5.Rock Band<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0039.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0039-200x300.png" alt="" /></a><br /> 音乐游戏，可联机。<br /> 6.Worms<br /> 百战天虫。<br /> 7.GT Racing<br /> GT 赛车<br /> 8.NFSU<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0041.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0041-200x300.png" alt="" /></a><a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0040.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0040-200x300.png" alt="" /></a><br /> 极品飞车变速。<br /> 9.NBA live<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0042.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0042-200x300.png" alt="" /></a><br /> 10.Skate it<br /> <a href="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0043.png"><img decoding="async" class="aligncenter size-full wp-image-102" src="http://www.windyshade.com/wp-content/uploads/2010/05/IMG_0043-200x300.png" alt="" /></a><br /> 滑板游戏<br /> 至此，iphone &amp; itouch 改造完毕。以上。</p> 
<p style="text-align: left;">===================== 　分隔线　=====================<span style="color: #0000ff;"><br /> <strong>以下是我 把此文发在威锋论坛的时候坛子里的朋友们提出的问题：</strong><br /> 回 5楼(yuch219) 的帖子</span><em>：3 代8G的能改造不？</em><br /> <span style="color: #0000ff;">3代 8G实际上是2代的硬件换了个3代的系统而已</span><br /> <span style="color: #0000ff;">就2代的硬件来看，用我文中的方法去 做应该是可以的</span><br /> <span style="color: #0000ff;">不过记得要装虚拟内存，不然可能会内存不足导致部分程序经常退出</span></p> 
<p><span style="color: #669900;">回 7楼(ppxxrr) 的帖子</span><em>：这样的改造 估计运行内 存没剩多少了！！！</em><br /> <span style="color: #669900;">确实，3代32G的机子本来可用的内存就只剩下80MB左右，所以为 了扩大内存我装了虚拟内存（详见本文）</span><br /> <span style="color: #669900;">装完虚拟内存后机子可用内存可以上升到将近 200MB，是绝对够用的</span></p> 
<p><strong><span style="color: #ff0000;">抱歉这里我犯了个小错误，文章里没提及虚 拟内存，我自己重刷机之后也没装虚拟内存，3代的机子是够用的，2代的我不清 楚</span></strong><br /> <strong><span style="color: #ff0000;">如果各位童鞋想要装虚拟内存可以使用iphoneVm2这个软 件，我刚搜了一下，坛子里有</span></strong><br /> <strong><span style="color: #ff0000;">这是地址： [url]http://bbs.weiphone.com/read-htm-tid-560821.html[/url]</span></strong><br /> 另 外有同学说添加不了源，我传个<a href="http://u.115.com/file/f1f1e46a6f,1"><strong><span style="font-size: small;">115网盘的地址 上来</span></strong></a></p> 
<p><span style="color: #ff6600;">回 8楼(xiesky21) 的帖子</span><em>： 请问VolumeButtonControl哪里下载呀 </em><br /> <em>很需要这 个！！！ 谢谢LZ</em><br /> <span style="color: #ff6600;">这个软件可以直接在cydia里面搜索，我自己是在cydia里面下 载的，因为找不到ipa文件可以下载</span></p> 
<p><strong><span style="color: #0000ff;">回 26楼(domain0) 的帖子：</span></strong><em><span style="color: #0000ff;"> </span></em><br /> <span style="color: #0000ff;">感谢你的补充～</span><br /> <span style="color: #0000ff;">goodreader和 dropbox我都有在用，不过dropbox被qian g了所以我没推荐</span><br /> <span style="color: #0000ff;">我 没试过两者结合来fan q1ang ，我去试试看</span><br /> <span style="color: #0000ff;">狼友软件我觉得电脑大屏更好～ 笑而不语，呵呵</span><br /> <span style="color: #0000ff;">shrink 我没用过，我去试试</span><br /> <span style="color: #0000ff;">safri downloadmanager我也在用，而且起稿的时候有写，截图也截了，发上来就忘了，杯具了，多谢你提醒呀～！</span><br /> <span style="color: #0000ff;">infindock我没用过我去试试</span><br /> <span style="color: #0000ff;">确实很多 软件呀，多谢你的补充呀～～</span><br /> <span style="color: #0000ff;">虚拟内存安装完之后不会在springboard显 示 图标，你开下sbsettings，对比一下安装前后就知道是否安装成功了，而且虚拟内存似乎要安装依赖包，如果使用cydia安装它会自动安装的，如果 不会自动安装也会提示，你可以试一下<br /> 至于你说的shrink软件，只能改变APP大小，要改变行数列数还得使用其他软件，我个人不太想用这 个， 附个坛子里的地址，有兴趣的童鞋可以去看看[url]http://bbs.weiphone.com/read-htm-tid- 629000.html[/url]<br /> 还有你说的infindock其实我也用过，但是需要滚动dock里面的图标才能看到更多图标，自己感觉 dock放上5个图标，然后其他页面分好类，再结合orbit，就完美了，没必要用这个，有兴趣的同学也可以去cydia上搜索，sinful源里有破解 版的</span></p> 
<p><span style="color: #ff6600;">回 35楼(艾秋岑) 的帖子：</span><br /> <span style="color: #ff6600;">opera mod已经补充上传了，</span><a href="http://u.115.com/file/f1aa0e9530,1">115网盘下载地址</a></p> 
<p><span style="font-size: x-large;"><strong><span style="font-size: x-small;">回 47楼(jerry4genius) 的帖子:<em>对了，楼主，有些腻推荐的软件 cydia上没有，去哪下比较好？<br /> </em>可以在weiphone论坛里面搜索，如果还没有就去91中文网，不过91下载的是pxl，要使用 PCB工具转换成IPA安装，论坛里有PCB转换工具你可以搜索一下</span><br /> </strong></span><br /> <span style="font-size: x-large;"><strong><span style="font-size: x-small;">回 75楼(chris_zgn) 的帖子:<em>虚拟内存的那个源添加不上啊。。怎么办？</em></span><br /> <span style="font-size: x-small;">嗯，我是下载了deb包安装的，deb包我已经上传了，地址你看看修改后的文章<br /> 不过如果你是3代的我建议就不用安装了</span><span style="color: #0000ff;">。</span><br /> </strong></span><br /> <span style="color: #0000ff;"><br /> </span><span style="font-size: x-large;"><strong><span style="font-size: x-small;">回 95楼(氢氧化钙) 的帖子：<br /> BP和SBSettings只要有一个就够了，这两 个程序都会在后台运行占用资源，而且功能也一样，没必要装两个，自己斟酌着看那个比较习惯就用那个就可以了<br /> 至于我的SBSettings的皮 肤， 是在SBSettings里面设置的，你只要先划动状态栏启动SBSettings，再按more-&gt;manage themes，在选择主题就好了，我截图里的主题是Tenuis Matte，如果你找不到这个主题可以在Cydia里面下载～ </span><br /> </strong></span><br /> <span style="font-size: x-large;"><strong><span style="font-size: x-small;">回 102楼(aquatue) 的帖子：</span><span style="font-size: x-small;">怎样 做到往底下的下music safari moive的地方 放5个图标啊 ~</span></strong></span><br /> 在Cydia里面搜索下 载 five icon dock，然后把图标拖到dock上就行了</p> 
<p><span style="color: #0000ff;">回 106楼(ddjasondd) 的帖子：</span><em>我以前用 bossprefs ，在cydia下载 sbsetting 时...</em><br /> <span style="color: #0000ff;">已添加iMobileCinema的<a href="http://u.115.com/file/f18a5bee95,1">附件115下载</a></span></p> 
<p><span style="font-size: x-large;"><strong><span style="font-size: x-small;">回 117楼(yuji_tao) 的帖子：<em>cydia里面总是有2个不能更 新，3.13越狱后出现，不知楼主能否帮忙一下，有点完美主义，看着那个2，觉得不爽。</em></span><span style="color: #0000ff;"><br /> </span><span style="font-size: x-small;">我的touch也会出现这种情况，你在cydia中 upgrade的时候不要直接按那个upgrade来一次升级全部软件<br /> 你一个一个软件点进去，再modify-&gt;upgrade，一般就可 以更新了，不过昨天我更新WeFit的时候即便这样做也还会在Cydia里面显示，所以如果还不行的话我也没有办法。</span><br /> </strong></span></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E00;&#x76F4;&#x5F88;&#x5B89;&#x9759;&#x5409;&#x4ED6;&#x8C31;(GTP&#x548C;&#x56FE;&#x7247;&#x683C;&#x5F0F;)</title>
        <link>https://justinyan.eth.limo/439BD73F-6032-4205-8947-0F072EE0D57F/</link>
        <guid>https://justinyan.eth.limo/439BD73F-6032-4205-8947-0F072EE0D57F/</guid>
        <pubDate>Sun, 16 May 2010 03:50:09 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>最近在练的阿桑的歌《一直很安静》。</p> 
<p>传个谱来给大家分享分享，晚点练好了也许会传下视频现下丑哦～</p> 
<p>下载GTP谱：<a href="http://www.windyshade.com/wp-content/uploads/2010/05/always-silent.7z">always silent</a></p> 
<p>请把图片保存到电脑里面再看，右键-&gt;图片另存为</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/alwayssilent.gif"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-97" title="alwayssilent" src="http://www.windyshade.com/wp-content/uploads/2010/05/alwayssilent-58x300.gif" alt="" width="58" height="300" /></a></p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/一直很安静.jpg"><br /> </a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5931;&#x97F3;&#x5409;&#x4ED6;</title>
        <link>https://justinyan.eth.limo/23BA45A2-7BF8-4365-B1AE-1EE1A7BFC1C5/</link>
        <guid>https://justinyan.eth.limo/23BA45A2-7BF8-4365-B1AE-1EE1A7BFC1C5/</guid>
        <pubDate>Sun, 16 May 2010 02:08:20 +0800</pubDate>
        
        
        <description><![CDATA[
            <p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">即使被封锁在灰暗的河底，拥着寒意入睡，生命凝缩成一阵短促的呼吸，在突破梦的一刹那猛地睁开眼睛，漆黑的房间里惊慌的月光与不安的帘动，环抱双膝埋住头颅低泣。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">我也不孤独。
  <!--more--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">来自身后的轻拥如同柔软的羽毛，尽管她从来不在——又一次从梦中惊醒。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">抬起模糊泪眼，望向窗外的同时用颤抖的手抹去泪痕，指掌比黑夜要冷。明天是回国后的第一场演出，但是他的噩梦却越来越深沉，可怕的不是噩梦所带来的慌乱的心跳与黑暗与无助的恐惧，恐惧的是梦里萦绕的挥之不去的深沉的孤独。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他站起身，扶着床沿艰难地挪到窗边，抬头的同时寻觅圆润的月，淡黄的晕色轻抚他脸上的泪痕，疼痛如同每次演奏完那支曲子。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">“轻颤的心跳与时缓时急的节奏，为什么这音符与旋律的颤动，竟如千斤巨石般压住我的胸口，我的话语如欲喷薄而出，张开口却哑然无语。我在心底疯狂嘶吼，而声喉却纹丝不动。激动的情绪随着旋律起伏，我的指尖的颤抖与冰冷传入琴箱而弹奏出寒意凄凄的声响。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">我不知道是否第几根弦的共鸣抖落我的面具让忧伤无处躲藏，每一次的演奏我都流下眼泪，尽管我已无数次拨弄过这首歌谣。我的指尖，流泻出疼痛的岁月。”</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">《</span><span lang="EN-US">Missing You</span><span style="font-family: 宋体;">》</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">台下照例要想起一阵热烈的掌声，不管是真听懂还是不懂装懂。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他站起来躬身谢幕，结束了回国后的第一场演出。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">坐在待机室，张帆——这个时代不可多得的吉他大师——照例让助手堵住任何人的祝贺，呆坐在房间里。只是呆坐，谈不上作任何思考。这种停滞的空白仿佛时间的静止——只在自己的世界。通常他会坐上半个小时，一个小时，或者更久，然后助手进来，带他回去。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">助手进来了，他不见了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">出大事。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">了！</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">新世界的雨是酸的。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆走在熟稔而又陌生的大街上——好多年没有回来过，其实就算他曾回来过，这里的一切也都是陌生的，这里的大街的霓虹，这里的大屏的广告，这里的男男女女，都是陌生的。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">费了好一番功夫找到这里。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他带着迷蒙的眼神与泛白的大脑行走，肢体的一切行动仿佛生命的本能，而生命的本能就是在这个大雨淅沥的夜里，饥肠辘辘地寻觅垃圾桶里被丢弃的剩食，跟野狗打架，打不过就跑。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">并且他又来到这里，这条阴暗的小巷，下雨的时候堵住下水道口，水涨起来，和垃圾一切，发臭的泡沫和肮脏的砖墙——这里快要拆了，这是昨天听助手说的。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆看看那个肮脏的垃圾桶，又看看对街的高楼，记忆中的招牌已被拆掉，大概变了酒楼之类的。他低着头，循着曾几熟悉的小路一直走，一直走，仿佛走入梦境的甬道，生命、生存、记忆、意识，同时在他的左右招手，他不知为何再次泪流，雨下很大。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">雨很大的时候风筝也飞不动了，况且它本来就飞不动，破旧不堪地摆在棚屋的一角。雨夜的城市穿梭着各种繁华，淫，就是过度，那么，“这个淫乱的城市！”
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">蜷在阴暗的角落里，屋顶滴漏的雨水比屋外的河水还要脏，但至少这一角淋到的雨要少一些。他又抚起那个残破的吉他，稚嫩的指掌拨动锈蚀的琴弦，琴箱的底部开裂了，琴音本来就不准的。但他仍然专注的拨弄着，因为他知道身后有一双凝视的小眼睛，带着她冻得疼痛的小耳朵在听，他要用琴音至少给她一点温暖。他明亮的眼睛注视着左手的琴颈，只拨弄了三节，第四节开始要用到大横按，他还不会。但是身后的小眼睛已经觉得很神奇了，在心里暗暗拍着手掌。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这里是天桥下，某沟渠的旁边一个小小的棚屋，弹吉他的小男孩，听吉他的小女孩。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">在这个世界里，最正常的事情就是不知道自己的名字。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他的名字叫张帆。小女孩叫小星星，是张帆帮她起的，来自他捡到的一本琴谱，跟那把吉他一起。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">第二天，他们一起去那条黑暗的小巷里“觅食”，在垃圾堆里。然后等到晚上，就去对街的巷子里，躲在窗外偷听音乐教室的老师讲课。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">男孩的吉他就是在这里见到的，和那本琴谱。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">当时他在巷子的角落里睡觉，睡梦中听到有人在叫喊，醒来后就看到垃圾堆里有一个坏掉的吉他和一个书包。他兴喜若狂地拿起书包一阵乱翻，却不由大失所望，书包里除了一本有很多线和点的书之外，别无它物。他又看了看旁边的吉他，他曾经躲在窗下偷看过那些人学吉他，知道这是个什么东西，就顺便把它带回去了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这一天，张帆背着吉他跑到河边找小星星，脸上诡异的笑仿佛藏着什么秘密。他让小星星坐下，抱着吉他，学着音乐教室那些学生的模样，左右按弦，右手拨弦，一首简单而完整的旋律响起，是《小星星》。小星星听了高兴得直拍手。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">那时候他绝不知道，这把吉他将彻底改变他们两人的命运。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他们住的地方是排污渠南面，以大水沟为界，北面是本地流民集中的地方，南面则是外地人居多。两边的人互不往来，其实，同一边的人也不往来。张帆住的棚屋，是从一个老人那里抢来的。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他流浪到这里的时候，南面的人并不多。当时只有北面的流民有棚屋，南面的人很少有。张帆当时很小，不记得自己的年龄又怎么会知道自己有多小，反正很小。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他趁着那个老人去水沟旁边勾汽水罐的时候把老人推下去。老人在水里无力的挣扎，发出虚弱的喊叫。岸上的人视若无睹，睡觉的照样睡觉，在水沟边蹲厕的照样蹲厕。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">于是老人消失了，棚屋是张帆的了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">如果没有那把吉他，也许张帆会一直在这里住着，直到被拆，赶走，收容，遣送。但他捡到吉他的那天，遇到了小星星。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">跟现在一样，用那双明亮的眼睛注视着张帆弹吉他。只是那时候张帆还不会弹小星星，而现在已经很熟练了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">住在这里的流民基本都过着极“规律”的生活——睡觉，饿醒，“觅食”，讨饭，又睡，又饿醒。而张帆和小星星却因为这把吉他而不同，他们也睡觉，也“觅食”，但是每个礼拜会有两天，躲到“音乐教室”的窗下偷听。音乐教室有一天是上钢琴课，一天是上吉他课。渐渐地，张帆对吉他越来越感兴趣，而小星星则越来越喜欢钢琴。没有琴可以弹，她就在地上画线，把手指放在上面弹。后来张帆给她用木板刻了几道线，她就一直用那块木板弹，边弹边唱出相应的音调，虽然不知道对不对。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">音乐教室便成了他们俩枯燥乏味的生活外最大的也是唯一的娱乐。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">如此又过一个冬夏。张帆长高了，小星星长大了，可还是瘦，不过较之其他的流民，他们的“伙食”可算是不错的了。在音乐教室那条街“觅食”经常能发现吃剩一半的盒饭，张帆想也许是那些学生吃剩下的，他曾亲眼见到一个学生只吃了两口就把盒饭扔了。
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这天他们仍到“音乐教室”偷听，小星星跑去巷子里解手，张帆一个人躲在窗下。这时他听到靠窗坐的几个男生在低声说着什么，不时还发着笑。他偷偷探头去看，老师没在教室里，女生们聚在一起聊天，几个男生围在一起看着什么。这是老师进来了，男生们赶紧散开，张帆也赶紧缩回窗下。他蹲下身的同时看到一本书被扔了出来，他心中一喜：如果是本比较容易看懂的琴谱就好了。他又躲了一会，确认没人发觉，就马上跳下去把书捡起来。翻开书一看，不由大吃一惊，书里面全是裸露的女体。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆陡然间心跳加速，满脸通红，心情紧张已极。这时小星星回来了，他赶紧把书藏好，跟小星星说现在回去，小星星虽然不知道为什么今天要这么早回，但是她听张帆的，也就跟着他回去了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这一天晚上，张帆完全无法入眠，他听着小星星的动静，确认她已经熟睡后，便把藏好的书拿出来，一页页翻看。张帆何曾见过这些，不由得全身燥热难受。他看看身边熟睡的小星星，觉得她确实与以前不同了，小星星长大了。他慢慢走近小星星身边，伸出手来，在快要碰到小星星的时候突然收回，他咬紧下唇，在心里狠狠骂自己不是人。“要欺负她还不早就欺负了，张帆啊张帆，你他妈真不是人！”于是他跑到屋外，把那本书往河里一扔，心情平复了许多。平静下来的张帆又是一阵懊恼：“靠，不欺负小星星就是了，把书扔了干嘛。”</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">从那以后，张帆经常失眠。有时也会在半夜偷看小星星，但始终没有过分的行为。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这天他们仍旧去偷听音乐教室，回来的时候看到街道两边多了些装饰，大概又是什么节日要到了吧。张帆这么想着。公共节假日对于他们来说可是灾难日，因为一到节假日音乐教室就会放假，他们没课听，而且街上还会多出很多穿制服的“坏人”要把他们赶走，所以节假日他们哪儿也去不了，只能呆在棚屋里睡觉，在棚屋周围“觅食”。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">第二天张帆还在睡梦中就听到有人粗暴地喊道：“起来！小孩！”张帆睁眼一看，顿时就傻了，几个穿着制服的“坏人”就站在家门口！他们可从不来棚屋这里啊。张帆只在水沟北面见过这些“坏人”一次，然后北面的流民很多就消失了，而且再没回来过。这时小星星也醒了，看到了他们，吓得躲到张帆身后。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这是一个肚子大大的“坏人”说：“小孩，快起来，跟我们走。”张帆没有答话，只是瞪着眼睛看。那个大肚子打量了一下张帆，视线扫到张帆鼓起的裤裆的时候他笑了，说：“哟，难怪赖着不走，看来你这小子在这可享了不少艳福呐。”说罢就嘿嘿笑起来，旁边几个“坏人”也跟着笑。张帆脸上一红，心里却已经拿定了主意：这伙人是要把我们抓走的，要逃。他捏了捏小星星的手，小星星立时会意。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这时一个“坏人”伸出大手过来抓他，“小孩，跟我走吧。”张帆狠力一脚踹向他的裆部。那人一声惨叫捂住下体而倒。几个坏人似乎没料到这小孩会这么狠，都忙着去扶起同伴，张帆趁乱拉着小星星往外冲。冲出棚屋，只听得那个“大肚子”吼道：“妈的，快把人给我抓回来！”</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆心里害怕极了，慌不择路，只顾拉着小星星死命往前跑。百忙中张帆回头一看，一个狰狞的大脸赫然就在身后，张帆吓得大叫一声，不管三七二十一拉着小星星跳进水沟里，拼命往对岸游。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">水沟的水不是很深，但是脏得很。张帆拉着小星星，边游边回头看，那些人却只是在岸上乱骂，却不敢下来。他再回头，有人正绕过天桥来追。张帆不敢松懈，一上岸，头也不回地就往前跑。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">也不知跑了多久，他们实在累得不行了，便倒下休息。张帆抬头一看，不知不觉竟跑到音乐教室附近来了。这时他们疲惫交加，饥肠辘辘，张帆决定先到音乐教室那条巷子里“觅食”。于是他们相互搀扶着来到音乐教室。张帆翻开垃圾桶，却发现里面空空的，垃圾已经被收走了。张帆急得直跺脚，小星星又累又饿，已经哭了出来。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆又跑了两条街，垃圾全被收走了。他们回到音乐教室那条巷子，小星星已经哭累睡着了。他坐在小星星旁边，自己也已经疲惫不堪，连指头都懒得动了。他伸手揽住小星星，心中凄楚，突然鼻头一酸，眼泪不觉掉下来。他赶紧咬住下唇，用力拭干眼泪，这一刻，他决定要带小星星到更远的地方去。这时，他看到巷口有光亮在闪。他悄悄走到巷口往外一看，是一辆警车，车子旁边站着几个人，他仔细一看，不由大惊失色——竟然是那个“大肚子”！他怎么追到这里来了！
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">再顾不得细想，张帆慌忙跑回巷子里，摇醒小星星，让小星星先爬上音乐教室的窗口。他记得有一扇窗是坏的，只要摇几下就可以打开的，他曾经看见几个男生在那里打赌看谁能打开锁住的窗。他使劲摇了摇那扇窗，真的打开了！他连忙爬进窗内，把小星星也拉进来。他盯着窗外，那个“大肚子”正在清查巷子里的流民，“大肚子”在巷子深处抓到一个正在睡觉的流民，把他抓走了。张帆一直等到警车的闪光灯在巷口消失他才松了一口气。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆转过身来，正要叫小星星快走，却发现小星星不见了，吓了一跳。他定睛一看，小星星正站在一架钢琴旁边，出神地看着呢。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">混乱的夜，街灯的昏黄趁着黑暗偷渡到琴键之上。小星星凝视钢琴的眼神里，不止是一种向往与渴望，甚至有一种莫名的疼爱与怜惜。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">音乐教室，对他们俩来说，是只有梦里才能神游的圣地。可笑的是，他们平日里充满敬畏的向往却在今天这个倒霉的日子里误闯了进来，以至于来不及思考自己的神色便两眼陷入梦的云端。张帆走到小星星身边，小星星回过头，四目相交，他们笑了，仿佛今天的，哦不，过去的苦难在这一刻都不复存在了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他们又低头看看自己脚下，“圣地”被自己的脏脚和身上滴沥的污水弄脏了。于是他们对望一眼，拿起教室门后的扫帚和簸箕，竟悄悄地打扫起他们的“圣地”来。也许是不舍，也许是其他，总之他们是有点大胆了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">不过张帆拿着扫帚，说是在扫地，其实却是心不在焉地东张西望这。他仔细观察过门缝里，并没有光线透进来，也就是说老师不在教室这边，所以他才会放心地让小星星以扫地的借口多逗留一时半刻。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他扫到吉他架旁边的时候愣住了，眼前的这把吉他，他曾经无数次见老师抱在怀里，弹奏出动人的旋律，这就是圣物啊。张帆伸出手，想摸摸它，又怕弄脏了这神圣的器物。这时候门突然开了，张帆手脚一乱，碰倒了吉他，开门进来的老师，吓呆了的小星星，三人均愣住了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">时间，静止。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆坐在车里，皮鞋上还沾着些水沟旁的烂泥，助手小李边开车抱怨着堂堂一音乐家怎么会偷偷跑到那种危险的地方去。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆仍然沉默着：“危险？确实是挺危险的。”</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">回到酒店，张帆泡了个热水澡，蒸腾的热气，疲累的回忆。走出浴室，张帆一头倒在床上，回忆，太累。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他坐起来，拿起床边的吉他，从琴头，到琴颈，琴箱，细细的凝视，轻轻地抚摸，仿佛爱人的眼神的温柔。他没有爱人，有很多女人，没有爱人。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">琴是老师的。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师，不在了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师是个和蔼的老师，吉他的狂热爱好者，可以说，没有吉他，老师便活不下去，所以老师活不下去了——他中风了，再摸不到吉他。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师有一个儿子，曾经有过。在多年前一场大灾难里死掉了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">“如果活着的话，也跟你差不多大。”
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师对张帆说。他凝视眼前这两个脏兮兮的孩子，叹了口气，说：“一直在教室外面偷听的，就是你们两个吧。”张帆和小星星低着头都没有回答。老师也不说什么，只是让他们出来。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">“这下糟了，老师一定把我们当小偷了。那些坏人今天在市里这么大肆地抓人，搞不好老师已经猜到些什么，要把我们送去给那些坏人！不好！大大不好！我们必须逃出去。”</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆低头跟在老师身后，心里却在暗自盘算该怎么逃出去，小星星则跟在张帆后头，倒并不十分担心。原来走出音乐教室，对面就是老师的住所，客厅里明亮的灯光把小星星震慑住了，张帆却仍低着头暗自计较。老师让他们两个在那里站着，自己进里屋去。“糟糕，老师要去打电话！”张帆焦急得四处张望，要寻找“可用的武器”。只是没等他找着老师便出来了，手里捧着几件衣服，说：“你们到浴室去洗洗吧。”说着指了指他们身后的房门。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这样的结果出乎张帆意料，他拿到衣服的时候心头一阵感动，他原本还以为老师要抓他们，把他们当小偷。他们流浪在外，多遭世人白眼，此时却遇到这样一个人，既不问罪自己擅闯教室，也不问自己来历，所为何来，只是看到自己身上肮脏便让自己先去清洗。他鼻头一酸，立刻忍住，吸了吸鼻子，抬头向老师鞠躬道谢，拉着小星星进了浴室。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"><span> </span></span><span style="font-family: 宋体;">这可能是他们自小以来最快乐的时光。明亮的浴室，大大的浴缸。老师可能只把他们当小孩看，便让他俩一起进浴室了。小星星是觉得无所谓，不过张帆却有些心猿马意，但好在享受眼前这难得的梦中才有的洗浴时刻才是最重要的，张帆也并未逾礼。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他们足足洗了快一个小时，把老师的浴室也清理干净了才出来。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">出来时老师已经准备了些速食。他们俩一边吃，一边再忍不住哭了起来。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师看着这两个遭遇不公命运的小孩，也不由眼眶湿润。但是有什么办法呢，命运从来就没有公平过，对谁都一样。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆努力平复心情，跟老师讲了今天发生的事情。老师却只是低着头，沉默不语。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">“其实当时我已经准备要出国了，只是存着侥幸的心理，希望能在走之前有万分之一的机会发现音乐的奇才，所以我在国内逗留了一年，你们出现的那天我已经收拾好了行李。”张帆记得老师是这么跟他说的。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆躺在床上，怀抱着老师的吉他，随手拨弄一曲叮咚，和着月的神色。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师听完张帆的讲述，叹了一口气，说让他们在那里先住一晚上，明天会带他们到义工那里，那里的生活要比流浪好多了。老师这么说着，却又不敢直视两个小孩的眼睛，该死，怎么对小孩子撒这种自己也不相信的谎。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">小星星却对此深信不疑，只觉得老师就如同神话中降临的救世主一样。张帆则一边听老师讲话一边观察他的神色。张帆皱了皱眉，他又问老师，那里的生活真的要好很多吗？老师有点窘迫，不过还是肯定地回答了。看到老师支支吾吾的样子，他知道事实绝不会像老师说的，也许，他正打算把我们交给那些“坏人”。他心中一动，说要把碗盘拿去洗，小星星争着要帮忙。老师也不推辞，由得他们去。这是他们第一次在明亮的厨房里洗碗，小星星好奇地这里摸摸那里看看。张帆却没这份心情，他暗自寻找可用的武器，趁小星星把玩电饭煲的时候，偷偷在怀里藏起了一把水果刀。好不容易“洗完了碗”出来，老师说道“晚了，去睡吧。”趁老师站起来，转身要走进卧室的时候，张帆伸手在怀里握紧了那把刀。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这时小星星叫了声“老师”。老师回过头来，张帆吓了一跳，赶紧收敛神色，松开手装作没事的样子看着小星星。只见她小心翼翼地请求道：“老师，我可不可以，弹，哦不，摸一下那架钢琴呢？”老师一愣，随即笑道：“可以啊。”小星星的眼睛一下子明亮起来，高兴地说：“真的吗？”老师微笑着点了点头。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师和小星星并排坐在钢琴前，张帆在他们后面。张帆暗忖：好机会！于是他又偷偷握紧了刀柄。
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">小星星坐在钢琴前，她伸出手来，轻轻地抚摸美丽的琴键，光滑，明亮，不忍轻弹。曾经她无数次梦想着触碰这架神器一般的物事，而此刻这件神器就在她的指下。她激动的手指在颤抖，颤抖。老师问她会弹么。她歪着脑袋想了想，努力回忆起在木板上练习了无数次的执法，第一键按下去，“哆……”钢琴发出声音了，我弹出的声音，我弹出的声音！她深吸一口气，又连着按下几个琴键，这一小节旋律，分明就是《小星星》，我终于可以，用自己的双手，弹奏出旋律了！小星星一阵激动，本还红热的眼眶再次充盈泪水，这次她不再等老师发问，一口气将她练习过的指法弹了出来，一首完整的曲子弹完。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">从来不曾觉得《小星星》的旋律这样动人。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆握紧刀子的手，不觉也松开了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">然而三个人中，最为震惊的，应该是老师。良久，老师问道：“你还会别的曲子吗？”因为激动，声音竟有些沙哑。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">小星星想了想，其实她无需再想，她“会”的也只有那首曲子了。她双手抚键，声声轻弹。</span><span lang="EN-US">Falling Slowly</span><span style="font-family: 宋体;">。在张帆的吉他里跳跃过无数次的曲子，此刻在小星星的指尖，又一次流泻而出。曲子的前三节是重复的旋律，一开始小星星有点不太习惯，但是三节过后，小星星的弹奏越来越流畅了。曲子也由低沉渐转高亢，又在高亢处戛然而止，再复轻柔，又攀升，绕梁不绝。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">曲终，三人相顾无言，良久沉默。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">小星星也不敢相信，自己竟然完成了这首曲子，她转过身来，分明看到张帆和老师眼中含泪。她对老师说：“哥哥也会弹这首曲子，吉他。”老师一愣，没有说话，默默把吉他递给张帆。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">接过吉他，张帆右手拇指逐根弹过琴弦，低音沉稳，高音清脆，左手一握琴颈，大小适中，按下琴弦，弦高完美。张帆心中顿时涌出一股无法名状的情感，热气上涌，他看了看小星星，发现小星星也在看着自己，还对自己点了点头。于是张帆右手轻拨，弦音阵阵。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这首曲子他弹过无数遍，用那把失音的吉他，但今天弹来，音韵全然不同，第一节过后，张帆渐渐熟悉音调，小星星的钢琴在这时响起，两人的配合虽不够默契，但再过两节，已算地上融为一曲。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">曲至高潮，张帆食指一扫，低音与高音的完美溢出，让张帆的心跳与贴在胸口的琴箱一同鸣响，仿佛冲出体外的声音，在无限广袤的空间里膨胀，膨胀，如浪，如潮。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这一次的合奏，三人再度哑言。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">又过良久。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师说：“你们，愿意留下来吗？”</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆和小星星对视，均是泪眼模糊。老师的这句话包含的意思很复杂，他俩似懂非懂，但是老师要收留他们的意思已经很明确了，他们此时除了惊讶，就是难以相信眼前发生的事情，但是，但是……</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">最后，他们一起很用力地点了点头。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">是啊，当时激动的心情就如同此刻一样，让人无法入眠。好在明天没有安排行程，再晚睡也可以。张帆起身坐到电脑前，很累，但睡不着，看看那些无聊的文字也就睡得着了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他随手翻阅订阅的文章，有哭天抢地的，静坐散步的，自焚挡车的，杀人屠童的，应有尽有。他看了半篇文章之后笑了：真正弱势的人不是这样的，真正弱势的人，根本无从反抗，这种人本来就不存在着世上，不存在什么死不死的，都一个鸟样儿。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">那场“大灾难”让老师的妻子和儿子均丧生了。是一个叫李大海的</span><span lang="EN-US">50</span><span style="font-family: 宋体;">多岁的人干的。某某酒店纵火事件。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">正面的报道理所当然是精神失常者所为——正常人都很文明，不可能会干这种事情。当然所有人，哦不，所有“人”，都知道真相背后的真相。
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">李大海的女儿被人强暴致死，当地法院不但把被告无罪释放，还判决李大海一家毁谤罪，反要赔偿被告。李大海的妻子无法接受，整日在家痛哭。李大海也辞职在家照顾妻子，继续上诉。后来李大海的妻子收拾心神跑到某地去上访，却被抓进精神病院了，最高危险级，不允许任何人探视。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">李大海本就伤心欲绝，这下更是气愤难当，他知道某天某某某要来访这里，来访的领导当然都住在某大酒店，于是他就在某某来访的当天当街拦车，哭诉青天。某某被感动了，让人扶起李大海，说定要严查，让李大海先行回家，明天把案情整理完后再让他协助调查。李大海很感激的回家去了，他以为遇到青天了，哭着想着终于可以为妻女报仇了。但是当天晚上的新闻没有播他拦车的事，他心里感到奇怪，但是也不怎么在意，也许领导比较低调呢。第二天他一直等到晚上都没人来找他，他终于坐不住了，跑到某大酒店说要找某某，结果被保安撵了出来，他几次想闯，却遭来一顿毒打。这时他明白了，天下乌鸦一般黑，这世界哪里有青天，分明全是乌云蔽日！李大海失了妻女，自己也没了工作，生活无以为继，自觉再活不下去了，于是悲剧发生了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">李大海理所当然地，绝对的，一定的，是在大火中自焚了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">而不巧的是，那位某某正好就是老师的亲兄。更不巧的是，事情发生时老师的妻子和儿子都在他大哥那里。那天老师的妻子早早就去到某大酒店，老师则坚持让儿子上完音乐课才可以去。下课后老师还有些事情要办，儿子却等不及了（大伯给他好多零用钱，怎么会等得及呢），老师便让儿子自己先回家去（当时他们没住在音乐教室），等自己把事情办完就去接他。于是儿子自己回家去，为了快点到公车站，儿子走了那条很少有人走的小巷（那里通常只有几个流民躲在那里睡觉），却遇到同个学校的几个顽皮的学生躲在那里抽烟，于是瘦小的他顺理成章地被欺负了。他一路哭着跑到某酒店去找大伯报仇，正好赶上这场惨剧。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">惨剧的最后一幕上演的是</span> <span style="font-family: 宋体;">“让领导先走！”。李大海所做的事情只是让</span><span lang="EN-US">37</span><span style="font-family: 宋体;">条无辜的性命陪着他同赴黄泉，他所憎恨的任何一个人都没受过半点伤害。当然，兴许李大海憎恨的不只是那些人，也许还有这些人和这些人，所有人。那些人也未必没受到伤害，他们被“惊扰”了，被“惊吓”了，所以后来就经常需要喝点高的吃点好的压压惊。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">事情发生后，老师说什么也不相信大哥说的“小寒顽皮不知道到哪里去玩了，嫂子跑去找他”这样的“借口”。他从此恨极其兄，与他决裂，再不往来。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师的一生最爱的不过三样：吉他、妻子和儿子（排名不分先后）。他年轻时心高气傲，作音乐不可一世，也因此处处碰壁。后来他遇上了他的妻子，自此堕入爱情的海洋无法自拔，也收敛了心性，此后写出的作品情感愈发饱满，再不似以前般锋芒毕露。婚后的生活亦是平静美满，尽管偶有争吵，但是小生命的诞生使老师的心情起了很大的变化，这一时期他的作品总是那样恬静美好，充满了新生命蓬勃的张力。这也是他音乐生涯中的巅峰时期。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">但是自从妻儿俱亡之后，他便一蹶不振。他准备要离开这个地方，去欧洲度过余生。但是在他临走前，他又一次看到了全家的合照，不由悲从中来，于是他决定再留一年，希望能把他的音乐生命延续下去。从此他的音乐班不再只是上层社会的子女才可以进入的，他要亲自挑选自己的学生。不过知情的人都知道，他挑选的并不全是音乐上有天赋的学生，更多的是有他小儿子影子的，那些孩子。所以他的班上多的是调皮的学生。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">如此过了一年，老师心灰意冷，终于决定离开。在这时候，他碰到了张帆和小星星。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">很难想象两个流浪的孩子只是偷偷地听课就能弹奏出这样美妙的曲子。老师知道这并不是他们的技巧有多高超，他班上的任何一个学生都弹得比他们要好。但是令他感动的是他们演奏时迸发出来的，涌动的，如同波涛般时而澎湃时而清平的情感。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">音乐是一种艺术。艺术不是靠你的技巧堆砌起来的。作曲家掌握了音符和节奏，再融进他的情感与思想，于是诞生了美妙的旋律。而演奏者也一样，演奏的技巧仅仅是一种工具，如同作家手中的笔，笔下的文字。会写几个字没什么了不起的，了不起的是他把字组织成他所想要表达的情感与思想，这就是艺术的创作。而我们演奏的时候，则更进一步，是对音乐的诠释与演绎，是创作之后的再创作。
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这时老师经常跟张帆讲的。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师说，碰上张帆和小星星的那天晚上，正好是他妻儿的忌日。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆后来细想了想，当时他观察老师神色的时候确实发现老师的眼睛红肿，而且有些憔悴，与平时看到老师上课时严厉的样子截然不同。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">无论如何，张帆和小星星就在老师家里度过梦一般的夜晚。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">第二天，张帆请求回棚屋去拿那把失音的吉他。小星星当然也要跟着去。老师有点担心他们会再次碰上那些“坏人”，而且最近市里要举办某某活动，到处都会有那些穿制服的人。张帆却说没关系，他们已经换了新衣服而且洗漱过了，那些“坏人”是认不出来的。老师想想也是，而且自己还得尽快解决他们俩的证件问题，才勉强同意了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">再次回到大水沟，张帆与小星星只觉恍若隔世。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">昨天他们还在这里跟那些坏人恶斗，今天，又以一个重生的面貌回到了这里，这种心情复杂已极，两人心中均感神奇。张帆看看身边的小星星，洗漱干净的小星星，虽然皮肤仍稍微显黑，但是在张帆看来，是一种全新的感觉，怎么说呢，令人心跳脸红的感觉？他们穿的是老师儿子以前的衣服，有点小，小星星的还比较合体，一个短</span><span lang="EN-US">T</span><span style="font-family: 宋体;">，胸前一只大大的</span><span lang="EN-US">keroro</span><span style="font-family: 宋体;">。从来没见过这样的小星星，张帆看着看着不觉脸上发烧。小星星微觉有异，问道：“哥哥，怎么了？”张帆忙佯装没事，说：“我们走，走吧。”小星星似乎没发觉，张帆暗自松了口气。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">经过昨天的“扫荡”，大水沟两岸的流民已经所剩无几，其实留下的人要么就是今天新来的，要么就是懂得躲起来的，这样的人都不多。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆俩人回到棚屋，拿了吉他和那块“木钢琴”，正要离开，忽然听到屋外有人骂道：“操你妈的，我他妈就不信今儿还守不到你这个小兔崽子。”声音好熟，张帆想了想，忽然想到一个人，不由一阵寒意从背脊升起：难道是昨天那个被自己踢中裆部的“坏人”。他越听越像，而且还有另一个人的声音，两个“坏人”！只听另一个人有点怯弱地说：“队长，我们这样擅自行动不太好吧。”“呸！你丫的这么胆小趁早给老子滚回去，喂你丫的死肥猪去！”那队长破口大骂，“妈的死肥猪，还真以为后台有个啥给他撑腰他就吊啦，我操你妈祖宗十八代！”骂声不绝。听到这里，张帆已经确认这两人是“坏人”了，看来他口中的“死肥猪”就是昨天那个大肚子。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">小星星似乎也已经发觉了，抓住张帆的手掌直冒冷汗。张帆低声对小星星说：“不要怕，他们认不出我们。”其实他心里也是紧张已极，冷汗直冒。他们说话的声音越来越近，张帆心中一动，赶紧放下吉他，让小星星把木钢琴也扔下，忽然大笑几声，奔出棚屋，边跑边回头说：“来抓我啊。”小星星一愣，还没反应过来，那两个“坏人”已经到了门口，看到小星星站在屋里，手里抓着一块木板，吓得几乎要哭出来。那个队长心中虽感奇怪，但看到不过是两个普通的小孩，便不耐烦道：“去去去，到别处玩去。”小星星这才反应过来，连忙跑了出去，张帆早等在外面不远的草丛里，见到小星星出来，连忙招手让她过去。小星星出来的时候倒是不忘把木钢琴带出来，可张帆的吉他还在里面。张帆有点懊悔：早知道他们这么大意就不该把东西扔了。不过懊悔也没用，现在两人只得躲在草丛里，一边思忖着怎么趁他们不注意的时候把吉他拿到手。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这时张帆已经看清楚了，一个是昨天被自己踢中的那个“队长”，另一个是个新面孔，带个四方眼睛。眼镜仔看起来挺怯弱，不足为患，可怕的还是那个凶神恶煞的“队长”。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他们俩在草丛里左等右等，那两个“坏人”始终守在屋里不出来，眼镜仔倒是有出来解过几回手，那个“队长”却怎么也不出来。张帆心想：看来昨天那一脚踢得挺重，让这个“队长”恨成这样。他却不知他那一脚毁掉了这“队长”千等万等一场难得的春宵，怎能不让他心中痛恨。
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他心想今天估计是没戏了，只好等今晚或者明天他们两个走了之后再回来拿了。他起身叫小星星一起走，两人正要起身，就听见棚屋里乒乒乓乓一阵乱响，张帆心中暗叫不好，那队长等不到人急了要砸东西。棚屋里本就没什么可砸的，最能砸上手的也就那把吉他。张帆心中焦急万分，这时他看到眼镜仔被赶出了屋外，于是心生一计。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">话说那个“队长”等了半天等不到人，妈的，见到什么东西都不爽，拿起来就砸。不过还好那把吉他被他拿来当椅子垫在屁股底下，倒是没怎么样。他恼起来乱骂一通，把那个戴眼镜的骂了个狗血淋头，又赶了出来。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">戴眼镜的跑出屋外，倒是松了一口气，免得在屋里听他烦。这时他看到俩小孩在不远处的草丛里玩耍，仔细一看，还是早上那俩小孩，怎么他们还没走啊？却也不怎么去在意，随便找了个地方坐下。那俩小孩玩着玩着，男孩要抢女孩手上的木板，女孩抢不过，坐倒就哭。那个“队长”在屋里听到哭声，心中更烦，骂道：“他妈的王八羔子，哭什么哭，老子把你喉咙给割喽！”戴眼镜在外面听得心惊肉跳的，还真怕他拿小孩子撒气，连忙跟队长陪笑，自己主动请缨把小孩赶走。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他走上前去问小孩怎么了，才知道这俩小孩来这里是寻宝来的，男孩捡到个会响的木箱子，女孩捡到块木板，看到他们过来的时候吓得扔掉东西就走了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这话里有漏洞，不过那个戴眼镜的也没去细想，他只知道那个男孩口中所说的木箱就是“队长”屁股底下那把破吉他，此刻“队长”正在屋里大发雷霆，他可没那个胆子回去挨骂。于是想哄哄小孩就是了，可是无论他怎么哄男孩就是不肯把木板还给女孩，甚至怕给他夺去，还刻意走得远远的。戴眼镜的无可奈何，之后硬着头皮回到棚屋里。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">也不知那个队长是不是真被女孩的哭声烦够了，还是等得不耐烦要走了，反正队长一脚把那把吉他踹了个大洞，交给戴眼镜的，让他去打发小孩然后收队回去。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆见到那个戴眼镜的真的拿了吉他出来，心中大喜，再看到吉他上破了个洞，又是心疼，又是愤怒，更看到那个“队长”竟然也跟了出来，不由心中害怕：这家伙可不是好骗的。戴眼镜的朝他招手，他看了看那把吉他，咬了咬牙，决定冒一次险。他让小星星在草丛里呆着，一发现形势不对立刻就跑，自己则硬着头皮上前。他低着头不敢去看那个“队长”，接过吉他的时候，他心中紧张至极，暗想：就这样，就这样，成功了</span><span lang="EN-US">!</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">“队长”忽然觉着这个小孩怎么这么眼熟，一个男孩一个女孩……难道，呃，不对，他们不过是普通的小孩子。这男孩要这吉他干嘛来着，他不是怕的很么，让我想想。我们来的时候好像听他说什么“来追我”，是在捉迷藏，怎么又说在寻宝了。再看看这小孩皮肤有点黑，鞋子上沾了点水沟边的烂泥。对了，一般的小孩是不怎么来这里的，这里离市区比较远，地方又臭，流民多，小孩不敢来的。他心中起疑，问道：“小孩，你家住哪儿的？”张帆心中扑通一声，心都快提到嗓子眼了，他本已转身一步步向小星星走去，这时更感觉头皮发麻，脚步不由自主加快了。“队长”见小孩不回答自己的话，还越走越快，心里更加起疑，喝道：“站住！”张帆吓得大叫一声，撒腿就跑：“小星星快跑，小星星快跑！”</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">队长心中大白，不由分说发足狂奔，直追上去。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这一回，队长是决心要把他们俩拿下，可不像昨天那伙人，追得更加拼命，而张帆二人又一夜未眠，脚步虚浮。小星星本来跑在前面，却一下子就被张帆追上，张帆又要顾着小星星，又要抓紧吉他，根本跑不快，队长很快就追到他们身后。张帆拉着小星星再次跑向水沟叫声：“小星星快跳！”两人纵身便跳，却被队长抓住小星星的手往后一扯，张帆一时摔倒滚入水沟里。小星星吓得又哭又叫拿起木板往队长身上乱打，却被队长一下子扭住双手。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆落水后立刻爬回岸上，捡起掉在岸边的吉他往队长身上狠砸，队长一个不注意被砸中左脸，疼得倒在地上，抓住小星星的手却死活不肯放开。张帆举起吉他全力又砸，这一下砸中队长的眼睛，破掉的尖木板戳中队长左眼，登时鲜血喷涌，张帆被溅出来的血吓呆了，被随后赶到的眼睛仔扭住双手，而小星星则害怕得坐在地上大哭。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">鬼嚎似的惨叫，孩子的哭声，杂乱的骂声，响彻大水沟上空。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">冲突本来就是这样的。
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆吓傻了，再不曾记得之后的事。总之他醒过来的时候在一间小房间里，眼镜仔在旁边盯着他。屋里开着灯，看来已经是晚上了。小星星呢？张帆立刻跳起来往外冲，却被眼镜仔一下扑倒在地，双手被扭在后面，他拼命挣扎，却动弹不得。眼镜仔说：“你就好好呆着吧，明天你们就可以离开这里了，回到你们的故乡，去找你们的亲戚，就不用再流浪啦！”张帆不停，不断挣扎咆哮着，嘴里发出野兽般的嘶吼。他越挣扎手臂就越痛，越痛就越挣扎。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">眼镜仔也不再说话，按住张帆由得他去作无谓的挣扎。这时张帆似乎听到什么，小星星！他突然安静下来，静静捕捉那个模糊的声音。眼镜仔见他安静下来，以为他不再反抗了，就放开他的手，站在门边以防他逃跑。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆坐起来，侧耳细听，没错，是小星星的声音，她在哭。又一个声音，邪恶的声音，是那个“队长”！没错，是那个队长！“操你妈的，敢伤了老子的命根，坏了老子的事儿。老子今儿就让它亲自报仇。想不到你这小鬼洗干净了倒挺嫩的，差点真认不出来……”又是小星星的求饶和惨叫。张帆越听越怒，又一次冲击门口，又一次被眼镜仔按倒在地，他回过头狠狠盯住眼镜仔，一双眼睛仿佛要喷出火来。眼镜仔也听到了隔壁的声响，知道正在发生什么事，可是他也没有办法，他又有什么办法。他只是来实习的，他本来就不属于这里，他，我，我我本来就不应该在这里的。眼镜仔不敢直视张帆，不由得低下了头。这时隔壁又传来小星星一声凄厉的惨叫，夹着队长的喝骂。张帆心中又怒又痛，却无可奈何，他用头狠力撞击地板，通通通直响，又被眼镜仔扣住颈子，眼里泪流不停，通红的眼睛里发出怨毒的诅咒。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">眼镜仔再也看不下去了，他在张帆耳边轻声说道：“你走，不要再回来。他肯定要折磨你的，立刻走，不要多想，不然你救不了同伴自己也会没命的。记住，你们的命不会有人给你买单。”说完，他放开张帆，伸出左右，张嘴狠狠在手上咬了一口。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆站起来，眼镜仔这样的行动实在出乎他的意料，眼镜仔又说了声“走！”。张帆没又别的办法，他冲出门外，逃。他回头看了看隔壁的房门，咬咬牙，逃。去找老师，对，找老师，只有老师了，只有老师了！</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他奔出门外，也不知道这里是哪里，反正朝着最亮人最多的地方跑就是。他尽全力奔跑，奔跑，奔跑，奔跑，他要找到老师，在这个扭曲的世界里，只有老师可以能帮到他们，可是他迷路了，他迷失在霓虹灯的路口了，满大街都是人，嬉笑的，叫卖的，肥男人的手放在女人的屁股上，女人露出半个乳房勾引男人，车的喇叭在响，世界一直在转，这到底算什么啊！</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">全世界挤满了人，我只感到深沉的孤独。
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆在一条黑暗的小巷子里倒下，他勉力撑起身子靠在墙角，再也忍不住泪水的决堤，在第一声痛哭的同时心灵崩溃，世界开始塌陷。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他把头埋在膝盖里痛哭，他看到老师的脸，看到吉他，又看到小星星，她在笑，第一次见面的时候她也是这种笑。不对！现在不是哭的时候！他的下唇被咬到出血，疼痛让他稍微平静了一点。他抬起头尽力平复自己的心情，又辨认好音乐教室大致的方向，向那里全力奔去。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">世界如同宇宙般广袤而黑暗，我看见星星在月亮的一旁，但我捞得到星星，却怎么也触不到月的肩膀，哦，那是太阳的光亮。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆站在窗前，看街道上飞流的车辆，喇叭声应该很响，即使这里是</span><span lang="EN-US">17</span><span style="font-family: 宋体;">楼也一样，尽管他听不到。他拉开窗，一阵热浪夹着城市荒诞的呻吟涌进来，和当时一样啊。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆赶到老师家的时候已经上气不接下气，他张口想要说话，但除了大口大口地喘气却什么也办不到。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师的神情有点古怪，他让张帆坐下，却没给他倒水。张帆也顾不得这些，他努力平复自己，正要张口说话：“老师，小星星……”老师却粗鲁地打断了他的话：“张帆，你说这是什么！”张帆低头一看，不由大惊失色，正是他昨天偷偷藏起来的水果刀，怎么被老师发现的？张帆想解释，抬头却看到老师一副抓到犯人的神色，他一愣，又被老师抢到：“说不出话来吧。你是不是也想跟你在大水沟的时候一样，把我也推下去，干脆抢了这房子！”老师说的声色俱厉，张帆心里害怕，支支吾吾说不出话来。老师怎么会知道的？“我怎么知道的你不用管，我只是恨我自己，又看错人！”张帆苦无辩解，但心里却还分得清缓急，他急道：“老师，小星星她……”“是，是小星星跟我说的。我很想原谅你是生活所迫又没有父母教养才会做出这样的事情，但是当我看到这把刀的时候我知道我错了，错的很离谱！天哪，我错得很离谱！”张帆见老师神色有点不对，好像竟有点恍惚起来。只见老师越说越古怪，竟然说：“拿什么吉他，拿什么吉他！是你，是你抢了寒儿的吉他，你抢了他的吉他，是你害了他，你害了他！”说着竟然伸出手来要掐住张帆，张帆害怕极了，甩开老师的手，撒腿往外跑，边跑还边听到老师发疯似的吼道：“你害了他，你害了他！不对，我害了他，我害了……”最后竟听到他哭了起来。张帆只觉得可怖，也不管是哪里，一路狂奔。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">直到他倒下。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">你不会知道的，在全身的力气用尽的时候，觉得自己像羽毛一样轻盈。你躺倒在大地的胸口，分明地听到自己的心跳。但你动不了。你的思想在你的周围飘荡，眼睛是闭着的，但是看到自己躺在地上。有人走过，有人踩过，有人笑过，有人没看到。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">然后你就觉得自己在漂浮着。很舒服，吗？</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">如果这时候又流泪呢？千万根针扎在自己的心脏呢？用力地揉碎自己的眼泪呢？</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">你踏出的每一步都飘起一朵灰色的莲花，世界是灰的，霓虹灯再亮，也是灰的。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆把窗关上，锁住一屋子的宁静。这种嘈杂的城市的声音比卖肉的女人叫的还要难听。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他拿起吉他，走出房门，又一次来到这里。这里是哪里？这里当然是那里。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他走到本应有那间棚屋的地方，但是没有了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">真的，没有了。
  <!--nextpage--></span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆醒来的时候，世界都是白色的，头很痛，全身乏力。看到老师守在身边，他就知道这里是医院了，他也曾经在街上看到过电视上播的连续剧，他知道的。他看到老师的脸上满是疲惫，老师的嘴一直在动，是在说话吗？但是我听不到，我要起来，起来。眼皮好重啊，好重啊，闭上眼睛吧，闭上眼睛好舒服的，不要去管其他什么啦，等到你睁开眼睛再说嘛。对呀，真的好舒服。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆再次睁开眼睛的时候，老师还在。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">他看着神情憔悴的老师，满脸关切的神色，想起这些天的遭遇，眼泪不由再度喷涌出来。老师看着张帆的样子，也是黯然神伤。张帆用力拭干脸上的眼泪，哽咽着跟老师讲了那天的事情。老师越听越怒，一等张帆说完立刻就跑去某某局。正常的情况是，某某局的人坚决否认有这种事情发生并且可以指着他的任何一代的先辈发誓来保证——这还是看在老师比较有身份的情况下才会有的优待，换了一般人，一律轰出去。于是这个情况就很正常地发生了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">老师失望地回到医院，他看到张帆关切已极的神色，心中不忍，再一次跑出房门。他拿起手机，拨通了自那次之后就不曾再碰过的号码。我不会让你再死一次，寒儿。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">于是，另一个正常的情况也发生了。某某局的人亲自来到医院谢罪，并恳求“大人”不要把事态扩大，而且那个“队长”也被免职了。只是至于那个女孩嘛……被遣返了，但是我们会全力找回来的。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">这是老师跟张帆讲的，张帆知道的。而张帆不知道的是，小星星被折磨后又被弄瞎了眼睛，扒光衣服丢在遣返流民的火车上。估计是活不了了。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">走出病院，张帆在一家地下酒吧外面找到那个瞎了一只眼睛的男人。当时他醉倒在店里，又被店里的“兄弟”抬出去扔在垃圾堆里。听说他每天都是这样。但是以后不会再有了。因为以后他就不存在了，哦不，他什么时候存在过了？</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">《</span><span lang="EN-US">Missing You</span><span style="font-family: 宋体;">》</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">张帆抱着吉他，右手轻弹，旋律在月光下跳跃，仿佛闪光的萤火，仿佛摇荡的不知哪里飘来的黄花——它也不知要飘到哪里去。张帆的右手就是心绪的另一种形式的表达，他的心跳传入琴弦，震颤的音律扩散开来，有月的夜晚没有星星。即使在今天，我也看不到你，星星。曲入高潮，扫动的弦音仿佛黑夜的柔波紧紧拥住张帆的身体，又似乎不是紧紧的。曲结尾张帆扫弦带切音，音乐戛然而止，突然后背一阵剧痛，张帆突然一声呻吟。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">倒地的时候看到一个肮脏的脸孔，那双黑色的眼睛在盯着他看。胸口两下剧痛，张帆知道他的生命要结束了。哦不，他的生命早就结束了，只是他躲了勾魂的小鬼好多年，今天是时候走了，债迟早要还的，我应该会，下地狱的吧，见不到小星星的，见不到的。张帆的视线渐渐模糊，他看到好像还有另一个人，他似乎听到什么声音，从很远，很远的地方传来。像蚊子，又像风，慢慢地扩大，飘渺的，如歌，又像小星星的低泣。小星星啊？小星星啊……</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span lang="EN-US"> </span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">某音乐家在</span><span lang="EN-US">XXX</span><span style="font-family: 宋体;">被谋杀，凶手是个抢劫犯。嗯……不对，是个无业流民。呃，好像也不行，嗯，对了，是个精神失常的流民。污水渠那一带本来就多流民，那是无可避免的。任何一个城市都会有这些人的，你看人家美国……</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">审判的时候，那个流民没有为自己辩护。她一直低着头，有人说她在哭，有人说她在笑，有人说她是真疯，有人说，说，说……她是瞎子。</span></p> 
<p class="MsoNormal" style="text-indent: 21pt;"> </p> 
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">失音，的吉他。</span></p> 
<p class="MsoNormal" style="text-align: right; text-indent: 21pt;"><span style="font-family: 宋体;">枫林月影</span></p> 
<p class="MsoNormal" style="text-align: right; text-indent: 21pt;"><span style="font-family: 宋体;">完成于</span> <span style="font-family: 宋体;">一零年五月十日</span></p> 
<p class="MsoNormal" style="text-align: right; text-indent: 21pt;"><span style="font-family: 宋体;">于华工图书馆</span></p> 
<div id="_mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 0px; left: -10000px;"> 
 <p>
  <!--  /* Font Definitions */  @font-face 	{font-family:宋体; 	panose-1:2 1 6 0 3 1 1 1 1 1; 	mso-font-alt:SimSun; 	mso-font-charset:134; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 680460288 22 0 262145 0;} @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Cambria; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073741899 0 0 415 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-520092929 1073786111 9 0 415 0;} @font-face 	{font-family:"\@宋体"; 	panose-1:2 1 6 0 3 1 1 1 1 1; 	mso-font-charset:134; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:3 680460288 22 0 262145 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	text-align:justify; 	text-justify:inter-ideograph; 	mso-pagination:none; 	font-size:10.5pt; 	mso-bidi-font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:宋体; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-font-kerning:1.0pt;} p.MsoTitle, li.MsoTitle, div.MsoTitle 	{mso-style-priority:10; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-link:"标题 Char"; 	mso-style-next:正文; 	margin-top:12.0pt; 	margin-right:0cm; 	margin-bottom:3.0pt; 	margin-left:0cm; 	text-align:center; 	mso-pagination:none; 	mso-outline-level:1; 	font-size:16.0pt; 	font-family:"Cambria","serif"; 	mso-ascii-font-family:Cambria; 	mso-ascii-theme-font:major-latin; 	mso-fareast-font-family:宋体; 	mso-hansi-font-family:Cambria; 	mso-hansi-theme-font:major-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:major-bidi; 	mso-font-kerning:1.0pt; 	font-weight:bold;} span.Char 	{mso-style-name:"标题 Char"; 	mso-style-priority:10; 	mso-style-unhide:no; 	mso-style-locked:yes; 	mso-style-link:标题; 	mso-ansi-font-size:16.0pt; 	mso-bidi-font-size:16.0pt; 	font-family:"Cambria","serif"; 	mso-ascii-font-family:Cambria; 	mso-ascii-theme-font:major-latin; 	mso-fareast-font-family:宋体; 	mso-hansi-font-family:Cambria; 	mso-hansi-theme-font:major-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:major-bidi; 	font-weight:bold;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;}  /* Page Definitions */  @page 	{mso-page-border-surround-header:no; 	mso-page-border-surround-footer:no;} @page Section1 	{size:595.3pt 841.9pt; 	margin:72.0pt 90.0pt 72.0pt 90.0pt; 	mso-header-margin:42.55pt; 	mso-footer-margin:49.6pt; 	mso-paper-source:0; 	layout-grid:15.6pt;} div.Section1 	{page:Section1;} -->
  <!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:普通表格; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.5pt; 	mso-bidi-font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-font-kerning:1.0pt;}  > <! [endif] >
<p class="MsoTitle"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">失音吉他</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">即使被封锁在灰暗的河底，拥着寒意入睡，生命凝缩成一阵短促的呼吸，在突破梦的一刹那猛地睁开眼睛，漆黑的房间里惊慌的月光与不安的帘动，环抱双膝埋住头颅低泣。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">我也不孤独。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">来自身后的轻拥如同柔软的羽毛，尽管她从来不在——又一次从梦中惊醒。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">抬起模糊泪眼，望向窗外的同时用颤抖的手抹去泪痕，指掌比黑夜要冷。明天是回国后的第一场演出，但是他的噩梦却越来越深沉，可怕的不是噩梦所带来的慌乱的心跳与黑暗与无助的恐惧，恐惧的是梦里萦绕的挥之不去的深沉的孤独。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他站起身，扶着床沿艰难地挪到窗边，抬头的同时寻觅圆润的月，淡黄的晕色轻抚他脸上的泪痕，疼痛如同每次演奏完那支曲子。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">“轻颤的心跳与时缓时急的节奏，为什么这音符与旋律的颤动，竟如千斤巨石般压住我的胸口，我的话语如欲喷薄而出，张开口却哑然无语。我在心底疯狂嘶吼，而声喉却纹丝不动。激动的情绪随着旋律起伏，我的指尖的颤抖与冰冷传入琴箱而弹奏出寒意凄凄的声响。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">我不知道是否第几根弦的共鸣抖落我的面具让忧伤无处躲藏，每一次的演奏我都流下眼泪，尽管我已无数次拨弄过这首歌谣。我的指尖，流泻出疼痛的岁月。”</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">《</span><span lang="EN-US">Missing You</span><span style="font-family: 宋体;" mce_style="font-family: 宋体;">》</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">台下照例要想起一阵热烈的掌声，不管是真听懂还是不懂装懂。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他站起来躬身谢幕，结束了回国后的第一场演出。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">坐在待机室，张帆——这个时代不可多得的吉他大师——照例让助手堵住任何人的祝贺，呆坐在房间里。只是呆坐，谈不上作任何思考。这种停滞的空白仿佛时间的静止——只在自己的世界。通常他会坐上半个小时，一个小时，或者更久，然后助手进来，带他回去。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">助手进来了，他不见了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">出大事。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">了！</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">新世界的雨是酸的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆走在熟稔而又陌生的大街上——好多年没有回来过，其实就算他曾回来过，这里的一切也都是陌生的，这里的大街的霓虹，这里的大屏的广告，这里的男男女女，都是陌生的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">费了好一番功夫找到这里。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他带着迷蒙的眼神与泛白的大脑行走，肢体的一切行动仿佛生命的本能，而生命的本能就是在这个大雨淅沥的夜里，饥肠辘辘地寻觅垃圾桶里被丢弃的剩食，跟野狗打架，打不过就跑。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">并且他又来到这里，这条阴暗的小巷，下雨的时候堵住下水道口，水涨起来，和垃圾一切，发臭的泡沫和肮脏的砖墙——这里快要拆了，这是昨天听助手说的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆看看那个肮脏的垃圾桶，又看看对街的高楼，记忆中的招牌已被拆掉，大概变了酒楼之类的。他低着头，循着曾几熟悉的小路一直走，一直走，仿佛走入梦境的甬道，生命、生存、记忆、意识，同时在他的左右招手，他不知为何再次泪流，雨下很大。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">雨很大的时候风筝也飞不动了，况且它本来就飞不动，破旧不堪地摆在棚屋的一角。雨夜的城市穿梭着各种繁华，淫，就是过度，那么，“这个淫乱的城市！”</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">蜷在阴暗的角落里，屋顶滴漏的雨水比屋外的河水还要脏，但至少这一角淋到的雨要少一些。他又抚起那个残破的吉他，稚嫩的指掌拨动锈蚀的琴弦，琴箱的底部开裂了，琴音本来就不准的。但他仍然专注的拨弄着，因为他知道身后有一双凝视的小眼睛，带着她冻得疼痛的小耳朵在听，他要用琴音至少给她一点温暖。他明亮的眼睛注视着左手的琴颈，只拨弄了三节，第四节开始要用到大横按，他还不会。但是身后的小眼睛已经觉得很神奇了，在心里暗暗拍着手掌。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这里是天桥下，某沟渠的旁边一个小小的棚屋，弹吉他的小男孩，听吉他的小女孩。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">在这个世界里，最正常的事情就是不知道自己的名字。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他的名字叫张帆。小女孩叫小星星，是张帆帮她起的，来自他捡到的一本琴谱，跟那把吉他一起。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">第二天，他们一起去那条黑暗的小巷里“觅食”，在垃圾堆里。然后等到晚上，就去对街的巷子里，躲在窗外偷听音乐教室的老师讲课。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">男孩的吉他就是在这里见到的，和那本琴谱。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">当时他在巷子的角落里睡觉，睡梦中听到有人在叫喊，醒来后就看到垃圾堆里有一个坏掉的吉他和一个书包。他兴喜若狂地拿起书包一阵乱翻，却不由大失所望，书包里除了一本有很多线和点的书之外，别无它物。他又看了看旁边的吉他，他曾经躲在窗下偷看过那些人学吉他，知道这是个什么东西，就顺便把它带回去了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这一天，张帆背着吉他跑到河边找小星星，脸上诡异的笑仿佛藏着什么秘密。他让小星星坐下，抱着吉他，学着音乐教室那些学生的模样，左右按弦，右手拨弦，一首简单而完整的旋律响起，是《小星星》。小星星听了高兴得直拍手。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">那时候他绝不知道，这把吉他将彻底改变他们两人的命运。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他们住的地方是排污渠南面，以大水沟为界，北面是本地流民集中的地方，南面则是外地人居多。两边的人互不往来，其实，同一边的人也不往来。张帆住的棚屋，是从一个老人那里抢来的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他流浪到这里的时候，南面的人并不多。当时只有北面的流民有棚屋，南面的人很少有。张帆当时很小，不记得自己的年龄又怎么会知道自己有多小，反正很小。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他趁着那个老人去水沟旁边勾汽水罐的时候把老人推下去。老人在水里无力的挣扎，发出虚弱的喊叫。岸上的人视若无睹，睡觉的照样睡觉，在水沟边蹲厕的照样蹲厕。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">于是老人消失了，棚屋是张帆的了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">如果没有那把吉他，也许张帆会一直在这里住着，直到被拆，赶走，收容，遣送。但他捡到吉他的那天，遇到了小星星。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">跟现在一样，用那双明亮的眼睛注视着张帆弹吉他。只是那时候张帆还不会弹小星星，而现在已经很熟练了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">住在这里的流民基本都过着极“规律”的生活——睡觉，饿醒，“觅食”，讨饭，又睡，又饿醒。而张帆和小星星却因为这把吉他而不同，他们也睡觉，也“觅食”，但是每个礼拜会有两天，躲到“音乐教室”的窗下偷听。音乐教室有一天是上钢琴课，一天是上吉他课。渐渐地，张帆对吉他越来越感兴趣，而小星星则越来越喜欢钢琴。没有琴可以弹，她就在地上画线，把手指放在上面弹。后来张帆给她用木板刻了几道线，她就一直用那块木板弹，边弹边唱出相应的音调，虽然不知道对不对。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">音乐教室便成了他们俩枯燥乏味的生活外最大的也是唯一的娱乐。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">如此又过一个冬夏。张帆长高了，小星星长大了，可还是瘦，不过较之其他的流民，他们的“伙食”可算是不错的了。在音乐教室那条街“觅食”经常能发现吃剩一半的盒饭，张帆想也许是那些学生吃剩下的，他曾亲眼见到一个学生只吃了两口就把盒饭扔了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这天他们仍到“音乐教室”偷听，小星星跑去巷子里解手，张帆一个人躲在窗下。这时他听到靠窗坐的几个男生在低声说着什么，不时还发着笑。他偷偷探头去看，老师没在教室里，女生们聚在一起聊天，几个男生围在一起看着什么。这是老师进来了，男生们赶紧散开，张帆也赶紧缩回窗下。他蹲下身的同时看到一本书被扔了出来，他心中一喜：如果是本比较容易看懂的琴谱就好了。他又躲了一会，确认没人发觉，就马上跳下去把书捡起来。翻开书一看，不由大吃一惊，书里面全是裸露的女体。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆陡然间心跳加速，满脸通红，心情紧张已极。这时小星星回来了，他赶紧把书藏好，跟小星星说现在回去，小星星虽然不知道为什么今天要这么早回，但是她听张帆的，也就跟着他回去了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这一天晚上，张帆完全无法入眠，他听着小星星的动静，确认她已经熟睡后，便把藏好的书拿出来，一页页翻看。张帆何曾见过这些，不由得全身燥热难受。他看看身边熟睡的小星星，觉得她确实与以前不同了，小星星长大了。他慢慢走近小星星身边，伸出手来，在快要碰到小星星的时候突然收回，他咬紧下唇，在心里狠狠骂自己不是人。“要欺负她还不早就欺负了，张帆啊张帆，你他妈真不是人！”于是他跑到屋外，把那本书往河里一扔，心情平复了许多。平静下来的张帆又是一阵懊恼：“靠，不欺负小星星就是了，把书扔了干嘛。”</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">从那以后，张帆经常失眠。有时也会在半夜偷看小星星，但始终没有过分的行为。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这天他们仍旧去偷听音乐教室，回来的时候看到街道两边多了些装饰，大概又是什么节日要到了吧。张帆这么想着。公共节假日对于他们来说可是灾难日，因为一到节假日音乐教室就会放假，他们没课听，而且街上还会多出很多穿制服的“坏人”要把他们赶走，所以节假日他们哪儿也去不了，只能呆在棚屋里睡觉，在棚屋周围“觅食”。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">第二天张帆还在睡梦中就听到有人粗暴地喊道：“起来！小孩！”张帆睁眼一看，顿时就傻了，几个穿着制服的“坏人”就站在家门口！他们可从不来棚屋这里啊。张帆只在水沟北面见过这些“坏人”一次，然后北面的流民很多就消失了，而且再没回来过。这时小星星也醒了，看到了他们，吓得躲到张帆身后。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这是一个肚子大大的“坏人”说：“小孩，快起来，跟我们走。”张帆没有答话，只是瞪着眼睛看。那个大肚子打量了一下张帆，视线扫到张帆鼓起的裤裆的时候他笑了，说：“哟，难怪赖着不走，看来你这小子在这可享了不少艳福呐。”说罢就嘿嘿笑起来，旁边几个“坏人”也跟着笑。张帆脸上一红，心里却已经拿定了主意：这伙人是要把我们抓走的，要逃。他捏了捏小星星的手，小星星立时会意。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这时一个“坏人”伸出大手过来抓他，“小孩，跟我走吧。”张帆狠力一脚踹向他的裆部。那人一声惨叫捂住下体而倒。几个坏人似乎没料到这小孩会这么狠，都忙着去扶起同伴，张帆趁乱拉着小星星往外冲。冲出棚屋，只听得那个“大肚子”吼道：“妈的，快把人给我抓回来！”</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆心里害怕极了，慌不择路，只顾拉着小星星死命往前跑。百忙中张帆回头一看，一个狰狞的大脸赫然就在身后，张帆吓得大叫一声，不管三七二十一拉着小星星跳进水沟里，拼命往对岸游。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">水沟的水不是很深，但是脏得很。张帆拉着小星星，边游边回头看，那些人却只是在岸上乱骂，却不敢下来。他再回头，有人正绕过天桥来追。张帆不敢松懈，一上岸，头也不回地就往前跑。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">也不知跑了多久，他们实在累得不行了，便倒下休息。张帆抬头一看，不知不觉竟跑到音乐教室附近来了。这时他们疲惫交加，饥肠辘辘，张帆决定先到音乐教室那条巷子里“觅食”。于是他们相互搀扶着来到音乐教室。张帆翻开垃圾桶，却发现里面空空的，垃圾已经被收走了。张帆急得直跺脚，小星星又累又饿，已经哭了出来。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆又跑了两条街，垃圾全被收走了。他们回到音乐教室那条巷子，小星星已经哭累睡着了。他坐在小星星旁边，自己也已经疲惫不堪，连指头都懒得动了。他伸手揽住小星星，心中凄楚，突然鼻头一酸，眼泪不觉掉下来。他赶紧咬住下唇，用力拭干眼泪，这一刻，他决定要带小星星到更远的地方去。这时，他看到巷口有光亮在闪。他悄悄走到巷口往外一看，是一辆警车，车子旁边站着几个人，他仔细一看，不由大惊失色——竟然是那个“大肚子”！他怎么追到这里来了！</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">再顾不得细想，张帆慌忙跑回巷子里，摇醒小星星，让小星星先爬上音乐教室的窗口。他记得有一扇窗是坏的，只要摇几下就可以打开的，他曾经看见几个男生在那里打赌看谁能打开锁住的窗。他使劲摇了摇那扇窗，真的打开了！他连忙爬进窗内，把小星星也拉进来。他盯着窗外，那个“大肚子”正在清查巷子里的流民，“大肚子”在巷子深处抓到一个正在睡觉的流民，把他抓走了。张帆一直等到警车的闪光灯在巷口消失他才松了一口气。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆转过身来，正要叫小星星快走，却发现小星星不见了，吓了一跳。他定睛一看，小星星正站在一架钢琴旁边，出神地看着呢。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">混乱的夜，街灯的昏黄趁着黑暗偷渡到琴键之上。小星星凝视钢琴的眼神里，不止是一种向往与渴望，甚至有一种莫名的疼爱与怜惜。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">音乐教室，对他们俩来说，是只有梦里才能神游的圣地。可笑的是，他们平日里充满敬畏的向往却在今天这个倒霉的日子里误闯了进来，以至于来不及思考自己的神色便两眼陷入梦的云端。张帆走到小星星身边，小星星回过头，四目相交，他们笑了，仿佛今天的，哦不，过去的苦难在这一刻都不复存在了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他们又低头看看自己脚下，“圣地”被自己的脏脚和身上滴沥的污水弄脏了。于是他们对望一眼，拿起教室门后的扫帚和簸箕，竟悄悄地打扫起他们的“圣地”来。也许是不舍，也许是其他，总之他们是有点大胆了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">不过张帆拿着扫帚，说是在扫地，其实却是心不在焉地东张西望这。他仔细观察过门缝里，并没有光线透进来，也就是说老师不在教室这边，所以他才会放心地让小星星以扫地的借口多逗留一时半刻。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他扫到吉他架旁边的时候愣住了，眼前的这把吉他，他曾经无数次见老师抱在怀里，弹奏出动人的旋律，这就是圣物啊。张帆伸出手，想摸摸它，又怕弄脏了这神圣的器物。这时候门突然开了，张帆手脚一乱，碰倒了吉他，开门进来的老师，吓呆了的小星星，三人均愣住了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">时间，静止。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆坐在车里，皮鞋上还沾着些水沟旁的烂泥，助手小李边开车抱怨着堂堂一音乐家怎么会偷偷跑到那种危险的地方去。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆仍然沉默着：“危险？确实是挺危险的。”</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">回到酒店，张帆泡了个热水澡，蒸腾的热气，疲累的回忆。走出浴室，张帆一头倒在床上，回忆，太累。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他坐起来，拿起床边的吉他，从琴头，到琴颈，琴箱，细细的凝视，轻轻地抚摸，仿佛爱人的眼神的温柔。他没有爱人，有很多女人，没有爱人。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">琴是老师的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师，不在了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师是个和蔼的老师，吉他的狂热爱好者，可以说，没有吉他，老师便活不下去，所以老师活不下去了——他中风了，再摸不到吉他。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师有一个儿子，曾经有过。在多年前一场大灾难里死掉了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">“如果活着的话，也跟你差不多大。”</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师对张帆说。他凝视眼前这两个脏兮兮的孩子，叹了口气，说：“一直在教室外面偷听的，就是你们两个吧。”张帆和小星星低着头都没有回答。老师也不说什么，只是让他们出来。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">“这下糟了，老师一定把我们当小偷了。那些坏人今天在市里这么大肆地抓人，搞不好老师已经猜到些什么，要把我们送去给那些坏人！不好！大大不好！我们必须逃出去。”</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆低头跟在老师身后，心里却在暗自盘算该怎么逃出去，小星星则跟在张帆后头，倒并不十分担心。原来走出音乐教室，对面就是老师的住所，客厅里明亮的灯光把小星星震慑住了，张帆却仍低着头暗自计较。老师让他们两个在那里站着，自己进里屋去。“糟糕，老师要去打电话！”张帆焦急得四处张望，要寻找“可用的武器”。只是没等他找着老师便出来了，手里捧着几件衣服，说：“你们到浴室去洗洗吧。”说着指了指他们身后的房门。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这样的结果出乎张帆意料，他拿到衣服的时候心头一阵感动，他原本还以为老师要抓他们，把他们当小偷。他们流浪在外，多遭世人白眼，此时却遇到这样一个人，既不问罪自己擅闯教室，也不问自己来历，所为何来，只是看到自己身上肮脏便让自己先去清洗。他鼻头一酸，立刻忍住，吸了吸鼻子，抬头向老师鞠躬道谢，拉着小星星进了浴室。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"><span> </span></span><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这可能是他们自小以来最快乐的时光。明亮的浴室，大大的浴缸。老师可能只把他们当小孩看，便让他俩一起进浴室了。小星星是觉得无所谓，不过张帆却有些心猿马意，但好在享受眼前这难得的梦中才有的洗浴时刻才是最重要的，张帆也并未逾礼。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他们足足洗了快一个小时，把老师的浴室也清理干净了才出来。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">出来时老师已经准备了些速食。他们俩一边吃，一边再忍不住哭了起来。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师看着这两个遭遇不公命运的小孩，也不由眼眶湿润。但是有什么办法呢，命运从来就没有公平过，对谁都一样。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆努力平复心情，跟老师讲了今天发生的事情。老师却只是低着头，沉默不语。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">“其实当时我已经准备要出国了，只是存着侥幸的心理，希望能在走之前有万分之一的机会发现音乐的奇才，所以我在国内逗留了一年，你们出现的那天我已经收拾好了行李。”张帆记得老师是这么跟他说的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆躺在床上，怀抱着老师的吉他，随手拨弄一曲叮咚，和着月的神色。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师听完张帆的讲述，叹了一口气，说让他们在那里先住一晚上，明天会带他们到义工那里，那里的生活要比流浪好多了。老师这么说着，却又不敢直视两个小孩的眼睛，该死，怎么对小孩子撒这种自己也不相信的谎。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">小星星却对此深信不疑，只觉得老师就如同神话中降临的救世主一样。张帆则一边听老师讲话一边观察他的神色。张帆皱了皱眉，他又问老师，那里的生活真的要好很多吗？老师有点窘迫，不过还是肯定地回答了。看到老师支支吾吾的样子，他知道事实绝不会像老师说的，也许，他正打算把我们交给那些“坏人”。他心中一动，说要把碗盘拿去洗，小星星争着要帮忙。老师也不推辞，由得他们去。这是他们第一次在明亮的厨房里洗碗，小星星好奇地这里摸摸那里看看。张帆却没这份心情，他暗自寻找可用的武器，趁小星星把玩电饭煲的时候，偷偷在怀里藏起了一把水果刀。好不容易“洗完了碗”出来，老师说道“晚了，去睡吧。”趁老师站起来，转身要走进卧室的时候，张帆伸手在怀里握紧了那把刀。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这时小星星叫了声“老师”。老师回过头来，张帆吓了一跳，赶紧收敛神色，松开手装作没事的样子看着小星星。只见她小心翼翼地请求道：“老师，我可不可以，弹，哦不，摸一下那架钢琴呢？”老师一愣，随即笑道：“可以啊。”小星星的眼睛一下子明亮起来，高兴地说：“真的吗？”老师微笑着点了点头。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师和小星星并排坐在钢琴前，张帆在他们后面。张帆暗忖：好机会！于是他又偷偷握紧了刀柄。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">小星星坐在钢琴前，她伸出手来，轻轻地抚摸美丽的琴键，光滑，明亮，不忍轻弹。曾经她无数次梦想着触碰这架神器一般的物事，而此刻这件神器就在她的指下。她激动的手指在颤抖，颤抖。老师问她会弹么。她歪着脑袋想了想，努力回忆起在木板上练习了无数次的执法，第一键按下去，“哆……”钢琴发出声音了，我弹出的声音，我弹出的声音！她深吸一口气，又连着按下几个琴键，这一小节旋律，分明就是《小星星》，我终于可以，用自己的双手，弹奏出旋律了！小星星一阵激动，本还红热的眼眶再次充盈泪水，这次她不再等老师发问，一口气将她练习过的指法弹了出来，一首完整的曲子弹完。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">从来不曾觉得《小星星》的旋律这样动人。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆握紧刀子的手，不觉也松开了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">然而三个人中，最为震惊的，应该是老师。良久，老师问道：“你还会别的曲子吗？”因为激动，声音竟有些沙哑。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">小星星想了想，其实她无需再想，她“会”的也只有那首曲子了。她双手抚键，声声轻弹。</span><span lang="EN-US">Falling Slowly</span><span style="font-family: 宋体;" mce_style="font-family: 宋体;">。在张帆的吉他里跳跃过无数次的曲子，此刻在小星星的指尖，又一次流泻而出。曲子的前三节是重复的旋律，一开始小星星有点不太习惯，但是三节过后，小星星的弹奏越来越流畅了。曲子也由低沉渐转高亢，又在高亢处戛然而止，再复轻柔，又攀升，绕梁不绝。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">曲终，三人相顾无言，良久沉默。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">小星星也不敢相信，自己竟然完成了这首曲子，她转过身来，分明看到张帆和老师眼中含泪。她对老师说：“哥哥也会弹这首曲子，吉他。”老师一愣，没有说话，默默把吉他递给张帆。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">接过吉他，张帆右手拇指逐根弹过琴弦，低音沉稳，高音清脆，左手一握琴颈，大小适中，按下琴弦，弦高完美。张帆心中顿时涌出一股无法名状的情感，热气上涌，他看了看小星星，发现小星星也在看着自己，还对自己点了点头。于是张帆右手轻拨，弦音阵阵。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这首曲子他弹过无数遍，用那把失音的吉他，但今天弹来，音韵全然不同，第一节过后，张帆渐渐熟悉音调，小星星的钢琴在这时响起，两人的配合虽不够默契，但再过两节，已算地上融为一曲。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">曲至高潮，张帆食指一扫，低音与高音的完美溢出，让张帆的心跳与贴在胸口的琴箱一同鸣响，仿佛冲出体外的声音，在无限广袤的空间里膨胀，膨胀，如浪，如潮。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这一次的合奏，三人再度哑言。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">又过良久。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师说：“你们，愿意留下来吗？”</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆和小星星对视，均是泪眼模糊。老师的这句话包含的意思很复杂，他俩似懂非懂，但是老师要收留他们的意思已经很明确了，他们此时除了惊讶，就是难以相信眼前发生的事情，但是，但是……</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">最后，他们一起很用力地点了点头。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">是啊，当时激动的心情就如同此刻一样，让人无法入眠。好在明天没有安排行程，再晚睡也可以。张帆起身坐到电脑前，很累，但睡不着，看看那些无聊的文字也就睡得着了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他随手翻阅订阅的文章，有哭天抢地的，静坐散步的，自焚挡车的，杀人屠童的，应有尽有。他看了半篇文章之后笑了：真正弱势的人不是这样的，真正弱势的人，根本无从反抗，这种人本来就不存在着世上，不存在什么死不死的，都一个鸟样儿。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">那场“大灾难”让老师的妻子和儿子均丧生了。是一个叫李大海的</span><span lang="EN-US">50</span><span style="font-family: 宋体;" mce_style="font-family: 宋体;">多岁的人干的。某某酒店纵火事件。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">正面的报道理所当然是精神失常者所为——正常人都很文明，不可能会干这种事情。当然所有人，哦不，所有“人”，都知道真相背后的真相。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">李大海的女儿被人强暴致死，当地法院不但把被告无罪释放，还判决李大海一家毁谤罪，反要赔偿被告。李大海的妻子无法接受，整日在家痛哭。李大海也辞职在家照顾妻子，继续上诉。后来李大海的妻子收拾心神跑到某地去上访，却被抓进精神病院了，最高危险级，不允许任何人探视。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">李大海本就伤心欲绝，这下更是气愤难当，他知道某天某某某要来访这里，来访的领导当然都住在某大酒店，于是他就在某某来访的当天当街拦车，哭诉青天。某某被感动了，让人扶起李大海，说定要严查，让李大海先行回家，明天把案情整理完后再让他协助调查。李大海很感激的回家去了，他以为遇到青天了，哭着想着终于可以为妻女报仇了。但是当天晚上的新闻没有播他拦车的事，他心里感到奇怪，但是也不怎么在意，也许领导比较低调呢。第二天他一直等到晚上都没人来找他，他终于坐不住了，跑到某大酒店说要找某某，结果被保安撵了出来，他几次想闯，却遭来一顿毒打。这时他明白了，天下乌鸦一般黑，这世界哪里有青天，分明全是乌云蔽日！李大海失了妻女，自己也没了工作，生活无以为继，自觉再活不下去了，于是悲剧发生了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">李大海理所当然地，绝对的，一定的，是在大火中自焚了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">而不巧的是，那位某某正好就是老师的亲兄。更不巧的是，事情发生时老师的妻子和儿子都在他大哥那里。那天老师的妻子早早就去到某大酒店，老师则坚持让儿子上完音乐课才可以去。下课后老师还有些事情要办，儿子却等不及了（大伯给他好多零用钱，怎么会等得及呢），老师便让儿子自己先回家去（当时他们没住在音乐教室），等自己把事情办完就去接他。于是儿子自己回家去，为了快点到公车站，儿子走了那条很少有人走的小巷（那里通常只有几个流民躲在那里睡觉），却遇到同个学校的几个顽皮的学生躲在那里抽烟，于是瘦小的他顺理成章地被欺负了。他一路哭着跑到某酒店去找大伯报仇，正好赶上这场惨剧。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">惨剧的最后一幕上演的是</span> <span style="font-family: 宋体;" mce_style="font-family: 宋体;">“让领导先走！”。李大海所做的事情只是让</span><span lang="EN-US">37</span><span style="font-family: 宋体;" mce_style="font-family: 宋体;">条无辜的性命陪着他同赴黄泉，他所憎恨的任何一个人都没受过半点伤害。当然，兴许李大海憎恨的不只是那些人，也许还有这些人和这些人，所有人。那些人也未必没受到伤害，他们被“惊扰”了，被“惊吓”了，所以后来就经常需要喝点高的吃点好的压压惊。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">事情发生后，老师说什么也不相信大哥说的“小寒顽皮不知道到哪里去玩了，嫂子跑去找他”这样的“借口”。他从此恨极其兄，与他决裂，再不往来。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师的一生最爱的不过三样：吉他、妻子和儿子（排名不分先后）。他年轻时心高气傲，作音乐不可一世，也因此处处碰壁。后来他遇上了他的妻子，自此堕入爱情的海洋无法自拔，也收敛了心性，此后写出的作品情感愈发饱满，再不似以前般锋芒毕露。婚后的生活亦是平静美满，尽管偶有争吵，但是小生命的诞生使老师的心情起了很大的变化，这一时期他的作品总是那样恬静美好，充满了新生命蓬勃的张力。这也是他音乐生涯中的巅峰时期。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">但是自从妻儿俱亡之后，他便一蹶不振。他准备要离开这个地方，去欧洲度过余生。但是在他临走前，他又一次看到了全家的合照，不由悲从中来，于是他决定再留一年，希望能把他的音乐生命延续下去。从此他的音乐班不再只是上层社会的子女才可以进入的，他要亲自挑选自己的学生。不过知情的人都知道，他挑选的并不全是音乐上有天赋的学生，更多的是有他小儿子影子的，那些孩子。所以他的班上多的是调皮的学生。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">如此过了一年，老师心灰意冷，终于决定离开。在这时候，他碰到了张帆和小星星。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">很难想象两个流浪的孩子只是偷偷地听课就能弹奏出这样美妙的曲子。老师知道这并不是他们的技巧有多高超，他班上的任何一个学生都弹得比他们要好。但是令他感动的是他们演奏时迸发出来的，涌动的，如同波涛般时而澎湃时而清平的情感。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">音乐是一种艺术。艺术不是靠你的技巧堆砌起来的。作曲家掌握了音符和节奏，再融进他的情感与思想，于是诞生了美妙的旋律。而演奏者也一样，演奏的技巧仅仅是一种工具，如同作家手中的笔，笔下的文字。会写几个字没什么了不起的，了不起的是他把字组织成他所想要表达的情感与思想，这就是艺术的创作。而我们演奏的时候，则更进一步，是对音乐的诠释与演绎，是创作之后的再创作。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这时老师经常跟张帆讲的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师说，碰上张帆和小星星的那天晚上，正好是他妻儿的忌日。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆后来细想了想，当时他观察老师神色的时候确实发现老师的眼睛红肿，而且有些憔悴，与平时看到老师上课时严厉的样子截然不同。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">无论如何，张帆和小星星就在老师家里度过梦一般的夜晚。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">第二天，张帆请求回棚屋去拿那把失音的吉他。小星星当然也要跟着去。老师有点担心他们会再次碰上那些“坏人”，而且最近市里要举办某某活动，到处都会有那些穿制服的人。张帆却说没关系，他们已经换了新衣服而且洗漱过了，那些“坏人”是认不出来的。老师想想也是，而且自己还得尽快解决他们俩的证件问题，才勉强同意了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">再次回到大水沟，张帆与小星星只觉恍若隔世。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">昨天他们还在这里跟那些坏人恶斗，今天，又以一个重生的面貌回到了这里，这种心情复杂已极，两人心中均感神奇。张帆看看身边的小星星，洗漱干净的小星星，虽然皮肤仍稍微显黑，但是在张帆看来，是一种全新的感觉，怎么说呢，令人心跳脸红的感觉？他们穿的是老师儿子以前的衣服，有点小，小星星的还比较合体，一个短</span><span lang="EN-US">T</span><span style="font-family: 宋体;" mce_style="font-family: 宋体;">，胸前一只大大的</span><span lang="EN-US">keroro</span><span style="font-family: 宋体;" mce_style="font-family: 宋体;">。从来没见过这样的小星星，张帆看着看着不觉脸上发烧。小星星微觉有异，问道：“哥哥，怎么了？”张帆忙佯装没事，说：“我们走，走吧。”小星星似乎没发觉，张帆暗自松了口气。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">经过昨天的“扫荡”，大水沟两岸的流民已经所剩无几，其实留下的人要么就是今天新来的，要么就是懂得躲起来的，这样的人都不多。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆俩人回到棚屋，拿了吉他和那块“木钢琴”，正要离开，忽然听到屋外有人骂道：“操你妈的，我他妈就不信今儿还守不到你这个小兔崽子。”声音好熟，张帆想了想，忽然想到一个人，不由一阵寒意从背脊升起：难道是昨天那个被自己踢中裆部的“坏人”。他越听越像，而且还有另一个人的声音，两个“坏人”！只听另一个人有点怯弱地说：“队长，我们这样擅自行动不太好吧。”“呸！你丫的这么胆小趁早给老子滚回去，喂你丫的死肥猪去！”那队长破口大骂，“妈的死肥猪，还真以为后台有个啥给他撑腰他就吊啦，我操你妈祖宗十八代！”骂声不绝。听到这里，张帆已经确认这两人是“坏人”了，看来他口中的“死肥猪”就是昨天那个大肚子。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">小星星似乎也已经发觉了，抓住张帆的手掌直冒冷汗。张帆低声对小星星说：“不要怕，他们认不出我们。”其实他心里也是紧张已极，冷汗直冒。他们说话的声音越来越近，张帆心中一动，赶紧放下吉他，让小星星把木钢琴也扔下，忽然大笑几声，奔出棚屋，边跑边回头说：“来抓我啊。”小星星一愣，还没反应过来，那两个“坏人”已经到了门口，看到小星星站在屋里，手里抓着一块木板，吓得几乎要哭出来。那个队长心中虽感奇怪，但看到不过是两个普通的小孩，便不耐烦道：“去去去，到别处玩去。”小星星这才反应过来，连忙跑了出去，张帆早等在外面不远的草丛里，见到小星星出来，连忙招手让她过去。小星星出来的时候倒是不忘把木钢琴带出来，可张帆的吉他还在里面。张帆有点懊悔：早知道他们这么大意就不该把东西扔了。不过懊悔也没用，现在两人只得躲在草丛里，一边思忖着怎么趁他们不注意的时候把吉他拿到手。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这时张帆已经看清楚了，一个是昨天被自己踢中的那个“队长”，另一个是个新面孔，带个四方眼睛。眼镜仔看起来挺怯弱，不足为患，可怕的还是那个凶神恶煞的“队长”。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他们俩在草丛里左等右等，那两个“坏人”始终守在屋里不出来，眼镜仔倒是有出来解过几回手，那个“队长”却怎么也不出来。张帆心想：看来昨天那一脚踢得挺重，让这个“队长”恨成这样。他却不知他那一脚毁掉了这“队长”千等万等一场难得的春宵，怎能不让他心中痛恨。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他心想今天估计是没戏了，只好等今晚或者明天他们两个走了之后再回来拿了。他起身叫小星星一起走，两人正要起身，就听见棚屋里乒乒乓乓一阵乱响，张帆心中暗叫不好，那队长等不到人急了要砸东西。棚屋里本就没什么可砸的，最能砸上手的也就那把吉他。张帆心中焦急万分，这时他看到眼镜仔被赶出了屋外，于是心生一计。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">话说那个“队长”等了半天等不到人，妈的，见到什么东西都不爽，拿起来就砸。不过还好那把吉他被他拿来当椅子垫在屁股底下，倒是没怎么样。他恼起来乱骂一通，把那个戴眼镜的骂了个狗血淋头，又赶了出来。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">戴眼镜的跑出屋外，倒是松了一口气，免得在屋里听他烦。这时他看到俩小孩在不远处的草丛里玩耍，仔细一看，还是早上那俩小孩，怎么他们还没走啊？却也不怎么去在意，随便找了个地方坐下。那俩小孩玩着玩着，男孩要抢女孩手上的木板，女孩抢不过，坐倒就哭。那个“队长”在屋里听到哭声，心中更烦，骂道：“他妈的王八羔子，哭什么哭，老子把你喉咙给割喽！”戴眼镜在外面听得心惊肉跳的，还真怕他拿小孩子撒气，连忙跟队长陪笑，自己主动请缨把小孩赶走。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他走上前去问小孩怎么了，才知道这俩小孩来这里是寻宝来的，男孩捡到个会响的木箱子，女孩捡到块木板，看到他们过来的时候吓得扔掉东西就走了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这话里有漏洞，不过那个戴眼镜的也没去细想，他只知道那个男孩口中所说的木箱就是“队长”屁股底下那把破吉他，此刻“队长”正在屋里大发雷霆，他可没那个胆子回去挨骂。于是想哄哄小孩就是了，可是无论他怎么哄男孩就是不肯把木板还给女孩，甚至怕给他夺去，还刻意走得远远的。戴眼镜的无可奈何，之后硬着头皮回到棚屋里。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">也不知那个队长是不是真被女孩的哭声烦够了，还是等得不耐烦要走了，反正队长一脚把那把吉他踹了个大洞，交给戴眼镜的，让他去打发小孩然后收队回去。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆见到那个戴眼镜的真的拿了吉他出来，心中大喜，再看到吉他上破了个洞，又是心疼，又是愤怒，更看到那个“队长”竟然也跟了出来，不由心中害怕：这家伙可不是好骗的。戴眼镜的朝他招手，他看了看那把吉他，咬了咬牙，决定冒一次险。他让小星星在草丛里呆着，一发现形势不对立刻就跑，自己则硬着头皮上前。他低着头不敢去看那个“队长”，接过吉他的时候，他心中紧张至极，暗想：就这样，就这样，成功了</span><span lang="EN-US">!</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">“队长”忽然觉着这个小孩怎么这么眼熟，一个男孩一个女孩……难道，呃，不对，他们不过是普通的小孩子。这男孩要这吉他干嘛来着，他不是怕的很么，让我想想。我们来的时候好像听他说什么“来追我”，是在捉迷藏，怎么又说在寻宝了。再看看这小孩皮肤有点黑，鞋子上沾了点水沟边的烂泥。对了，一般的小孩是不怎么来这里的，这里离市区比较远，地方又臭，流民多，小孩不敢来的。他心中起疑，问道：“小孩，你家住哪儿的？”张帆心中扑通一声，心都快提到嗓子眼了，他本已转身一步步向小星星走去，这时更感觉头皮发麻，脚步不由自主加快了。“队长”见小孩不回答自己的话，还越走越快，心里更加起疑，喝道：“站住！”张帆吓得大叫一声，撒腿就跑：“小星星快跑，小星星快跑！”</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">队长心中大白，不由分说发足狂奔，直追上去。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这一回，队长是决心要把他们俩拿下，可不像昨天那伙人，追得更加拼命，而张帆二人又一夜未眠，脚步虚浮。小星星本来跑在前面，却一下子就被张帆追上，张帆又要顾着小星星，又要抓紧吉他，根本跑不快，队长很快就追到他们身后。张帆拉着小星星再次跑向水沟叫声：“小星星快跳！”两人纵身便跳，却被队长抓住小星星的手往后一扯，张帆一时摔倒滚入水沟里。小星星吓得又哭又叫拿起木板往队长身上乱打，却被队长一下子扭住双手。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆落水后立刻爬回岸上，捡起掉在岸边的吉他往队长身上狠砸，队长一个不注意被砸中左脸，疼得倒在地上，抓住小星星的手却死活不肯放开。张帆举起吉他全力又砸，这一下砸中队长的眼睛，破掉的尖木板戳中队长左眼，登时鲜血喷涌，张帆被溅出来的血吓呆了，被随后赶到的眼睛仔扭住双手，而小星星则害怕得坐在地上大哭。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">鬼嚎似的惨叫，孩子的哭声，杂乱的骂声，响彻大水沟上空。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">冲突本来就是这样的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆吓傻了，再不曾记得之后的事。总之他醒过来的时候在一间小房间里，眼镜仔在旁边盯着他。屋里开着灯，看来已经是晚上了。小星星呢？张帆立刻跳起来往外冲，却被眼镜仔一下扑倒在地，双手被扭在后面，他拼命挣扎，却动弹不得。眼镜仔说：“你就好好呆着吧，明天你们就可以离开这里了，回到你们的故乡，去找你们的亲戚，就不用再流浪啦！”张帆不停，不断挣扎咆哮着，嘴里发出野兽般的嘶吼。他越挣扎手臂就越痛，越痛就越挣扎。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">眼镜仔也不再说话，按住张帆由得他去作无谓的挣扎。这时张帆似乎听到什么，小星星！他突然安静下来，静静捕捉那个模糊的声音。眼镜仔见他安静下来，以为他不再反抗了，就放开他的手，站在门边以防他逃跑。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆坐起来，侧耳细听，没错，是小星星的声音，她在哭。又一个声音，邪恶的声音，是那个“队长”！没错，是那个队长！“操你妈的，敢伤了老子的命根，坏了老子的事儿。老子今儿就让它亲自报仇。想不到你这小鬼洗干净了倒挺嫩的，差点真认不出来……”又是小星星的求饶和惨叫。张帆越听越怒，又一次冲击门口，又一次被眼镜仔按倒在地，他回过头狠狠盯住眼镜仔，一双眼睛仿佛要喷出火来。眼镜仔也听到了隔壁的声响，知道正在发生什么事，可是他也没有办法，他又有什么办法。他只是来实习的，他本来就不属于这里，他，我，我我本来就不应该在这里的。眼镜仔不敢直视张帆，不由得低下了头。这时隔壁又传来小星星一声凄厉的惨叫，夹着队长的喝骂。张帆心中又怒又痛，却无可奈何，他用头狠力撞击地板，通通通直响，又被眼镜仔扣住颈子，眼里泪流不停，通红的眼睛里发出怨毒的诅咒。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">眼镜仔再也看不下去了，他在张帆耳边轻声说道：“你走，不要再回来。他肯定要折磨你的，立刻走，不要多想，不然你救不了同伴自己也会没命的。记住，你们的命不会有人给你买单。”说完，他放开张帆，伸出左右，张嘴狠狠在手上咬了一口。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆站起来，眼镜仔这样的行动实在出乎他的意料，眼镜仔又说了声“走！”。张帆没又别的办法，他冲出门外，逃。他回头看了看隔壁的房门，咬咬牙，逃。去找老师，对，找老师，只有老师了，只有老师了！</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他奔出门外，也不知道这里是哪里，反正朝着最亮人最多的地方跑就是。他尽全力奔跑，奔跑，奔跑，奔跑，他要找到老师，在这个扭曲的世界里，只有老师可以能帮到他们，可是他迷路了，他迷失在霓虹灯的路口了，满大街都是人，嬉笑的，叫卖的，肥男人的手放在女人的屁股上，女人露出半个乳房勾引男人，车的喇叭在响，世界一直在转，这到底算什么啊！</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">全世界挤满了人，我只感到深沉的孤独。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆在一条黑暗的小巷子里倒下，他勉力撑起身子靠在墙角，再也忍不住泪水的决堤，在第一声痛哭的同时心灵崩溃，世界开始塌陷。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他把头埋在膝盖里痛哭，他看到老师的脸，看到吉他，又看到小星星，她在笑，第一次见面的时候她也是这种笑。不对！现在不是哭的时候！他的下唇被咬到出血，疼痛让他稍微平静了一点。他抬起头尽力平复自己的心情，又辨认好音乐教室大致的方向，向那里全力奔去。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">世界如同宇宙般广袤而黑暗，我看见星星在月亮的一旁，但我捞得到星星，却怎么也触不到月的肩膀，哦，那是太阳的光亮。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆站在窗前，看街道上飞流的车辆，喇叭声应该很响，即使这里是</span><span lang="EN-US">17</span><span style="font-family: 宋体;" mce_style="font-family: 宋体;">楼也一样，尽管他听不到。他拉开窗，一阵热浪夹着城市荒诞的呻吟涌进来，和当时一样啊。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆赶到老师家的时候已经上气不接下气，他张口想要说话，但除了大口大口地喘气却什么也办不到。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师的神情有点古怪，他让张帆坐下，却没给他倒水。张帆也顾不得这些，他努力平复自己，正要张口说话：“老师，小星星……”老师却粗鲁地打断了他的话：“张帆，你说这是什么！”张帆低头一看，不由大惊失色，正是他昨天偷偷藏起来的水果刀，怎么被老师发现的？张帆想解释，抬头却看到老师一副抓到犯人的神色，他一愣，又被老师抢到：“说不出话来吧。你是不是也想跟你在大水沟的时候一样，把我也推下去，干脆抢了这房子！”老师说的声色俱厉，张帆心里害怕，支支吾吾说不出话来。老师怎么会知道的？“我怎么知道的你不用管，我只是恨我自己，又看错人！”张帆苦无辩解，但心里却还分得清缓急，他急道：“老师，小星星她……”“是，是小星星跟我说的。我很想原谅你是生活所迫又没有父母教养才会做出这样的事情，但是当我看到这把刀的时候我知道我错了，错的很离谱！天哪，我错得很离谱！”张帆见老师神色有点不对，好像竟有点恍惚起来。只见老师越说越古怪，竟然说：“拿什么吉他，拿什么吉他！是你，是你抢了寒儿的吉他，你抢了他的吉他，是你害了他，你害了他！”说着竟然伸出手来要掐住张帆，张帆害怕极了，甩开老师的手，撒腿往外跑，边跑还边听到老师发疯似的吼道：“你害了他，你害了他！不对，我害了他，我害了……”最后竟听到他哭了起来。张帆只觉得可怖，也不管是哪里，一路狂奔。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">直到他倒下。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">你不会知道的，在全身的力气用尽的时候，觉得自己像羽毛一样轻盈。你躺倒在大地的胸口，分明地听到自己的心跳。但你动不了。你的思想在你的周围飘荡，眼睛是闭着的，但是看到自己躺在地上。有人走过，有人踩过，有人笑过，有人没看到。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">然后你就觉得自己在漂浮着。很舒服，吗？</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">如果这时候又流泪呢？千万根针扎在自己的心脏呢？用力地揉碎自己的眼泪呢？</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">你踏出的每一步都飘起一朵灰色的莲花，世界是灰的，霓虹灯再亮，也是灰的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆把窗关上，锁住一屋子的宁静。这种嘈杂的城市的声音比卖肉的女人叫的还要难听。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他拿起吉他，走出房门，又一次来到这里。这里是哪里？这里当然是那里。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他走到本应有那间棚屋的地方，但是没有了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">真的，没有了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆醒来的时候，世界都是白色的，头很痛，全身乏力。看到老师守在身边，他就知道这里是医院了，他也曾经在街上看到过电视上播的连续剧，他知道的。他看到老师的脸上满是疲惫，老师的嘴一直在动，是在说话吗？但是我听不到，我要起来，起来。眼皮好重啊，好重啊，闭上眼睛吧，闭上眼睛好舒服的，不要去管其他什么啦，等到你睁开眼睛再说嘛。对呀，真的好舒服。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆再次睁开眼睛的时候，老师还在。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">他看着神情憔悴的老师，满脸关切的神色，想起这些天的遭遇，眼泪不由再度喷涌出来。老师看着张帆的样子，也是黯然神伤。张帆用力拭干脸上的眼泪，哽咽着跟老师讲了那天的事情。老师越听越怒，一等张帆说完立刻就跑去某某局。正常的情况是，某某局的人坚决否认有这种事情发生并且可以指着他的任何一代的先辈发誓来保证——这还是看在老师比较有身份的情况下才会有的优待，换了一般人，一律轰出去。于是这个情况就很正常地发生了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">老师失望地回到医院，他看到张帆关切已极的神色，心中不忍，再一次跑出房门。他拿起手机，拨通了自那次之后就不曾再碰过的号码。我不会让你再死一次，寒儿。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">于是，另一个正常的情况也发生了。某某局的人亲自来到医院谢罪，并恳求“大人”不要把事态扩大，而且那个“队长”也被免职了。只是至于那个女孩嘛……被遣返了，但是我们会全力找回来的。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">这是老师跟张帆讲的，张帆知道的。而张帆不知道的是，小星星被折磨后又被弄瞎了眼睛，扒光衣服丢在遣返流民的火车上。估计是活不了了。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">走出病院，张帆在一家地下酒吧外面找到那个瞎了一只眼睛的男人。当时他醉倒在店里，又被店里的“兄弟”抬出去扔在垃圾堆里。听说他每天都是这样。但是以后不会再有了。因为以后他就不存在了，哦不，他什么时候存在过了？</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">《</span><span lang="EN-US">Missing You</span><span style="font-family: 宋体;" mce_style="font-family: 宋体;">》</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">张帆抱着吉他，右手轻弹，旋律在月光下跳跃，仿佛闪光的萤火，仿佛摇荡的不知哪里飘来的黄花——它也不知要飘到哪里去。张帆的右手就是心绪的另一种形式的表达，他的心跳传入琴弦，震颤的音律扩散开来，有月的夜晚没有星星。即使在今天，我也看不到你，星星。曲入高潮，扫动的弦音仿佛黑夜的柔波紧紧拥住张帆的身体，又似乎不是紧紧的。曲结尾张帆扫弦带切音，音乐戛然而止，突然后背一阵剧痛，张帆突然一声呻吟。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">倒地的时候看到一个肮脏的脸孔，那双黑色的眼睛在盯着他看。胸口两下剧痛，张帆知道他的生命要结束了。哦不，他的生命早就结束了，只是他躲了勾魂的小鬼好多年，今天是时候走了，债迟早要还的，我应该会，下地狱的吧，见不到小星星的，见不到的。张帆的视线渐渐模糊，他看到好像还有另一个人，他似乎听到什么声音，从很远，很远的地方传来。像蚊子，又像风，慢慢地扩大，飘渺的，如歌，又像小星星的低泣。小星星啊？小星星啊……</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">某音乐家在</span><span lang="EN-US">XXX</span><span style="font-family: 宋体;" mce_style="font-family: 宋体;">被谋杀，凶手是个抢劫犯。嗯……不对，是个无业流民。呃，好像也不行，嗯，对了，是个精神失常的流民。污水渠那一带本来就多流民，那是无可避免的。任何一个城市都会有这些人的，你看人家美国……</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">审判的时候，那个流民没有为自己辩护。她一直低着头，有人说她在哭，有人说她在笑，有人说她是真疯，有人说，说，说……她是瞎子。</span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="text-indent: 21pt;" mce_style="text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">失音，的吉他。</span></p>
<p class="MsoNormal" style="text-align: right; text-indent: 21pt;" mce_style="text-align: right; text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">枫林月影</span></p>
<p class="MsoNormal" style="text-align: right; text-indent: 21pt;" mce_style="text-align: right; text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">完成于</span> <span style="font-family: 宋体;" mce_style="font-family: 宋体;">一零年五月十日</span></p>
<p class="MsoNormal" style="text-align: right; text-indent: 21pt;" mce_style="text-align: right; text-indent: 21pt;"><span style="font-family: 宋体;" mce_style="font-family: 宋体;">于华工图书馆</span></p>
</d >
</d >
<p></d--></p>
 <p></p> 
</div>
        ]]></description>
    </item>
    
    <item>
        <title>&#x4E00;&#x4E2A;&#x6E05;&#x7626;&#x7684;&#x68A6;</title>
        <link>https://justinyan.eth.limo/DD20346A-8A45-4BC2-BE7F-3AE963A3F8FB/</link>
        <guid>https://justinyan.eth.limo/DD20346A-8A45-4BC2-BE7F-3AE963A3F8FB/</guid>
        <pubDate>Sat, 15 May 2010 23:37:42 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>09.08.30/中午<br /> 一<br /> 这只是一个清瘦的梦<br /> 在你合上双眼<br /> 一泓清泪闪过星点<br /> 我伸出的指掌遭到拒绝<br /> 你说：<br /> 这星月的那端不是我的脸<br /> 我扯着风和夜<br /> 一阵蛩音的慌乱<br /> 为什么你泪的时候<br /> 我累的时候<br /> 你醉的时候<br /> 我睡的时候<br /> 那些言语与这梦的清纯<br /> 全然不同！
 <!--more--></p> 
<p>二<br /> 这只是一个清瘦的梦<br /> 哑然的风<br /> 几张纸片<br /> 线的那头郁结<br /> 几丝光点<br /> 拽出黎明<br /> 与下一个思念</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x9732;&#x4F9D;&#x67CF;&#x821F;</title>
        <link>https://justinyan.eth.limo/B7BB1359-9E59-44EA-B606-19B16D513340/</link>
        <guid>https://justinyan.eth.limo/B7BB1359-9E59-44EA-B606-19B16D513340/</guid>
        <pubDate>Sat, 15 May 2010 23:36:15 +0800</pubDate>
        
        
        <description><![CDATA[
            <p style="text-align: center;">09.12.03/夜</p> 
<p>不知哪一个朝代的风，惊醒了一瓣睡眼迷蒙的粉红，于是樱雨便漫落到整座森林。一枚灵动的樱瓣带着山泉的声音走了，翩跹到尚沉在梦中的山城。它旋舞，旋舞，飘落在一扇幽闭的小窗前，不经意触碰了一声柔软的太息。
 <!--more--></p> 
<p>那时一个叫露依的有着忧郁的大眼睛的女子，她娇柔的指掌扶着一扇朱红色的窗，远望的是他离去的方向。</p> 
<p>他负着他的弓箭去了，带着他的酒坛，他的骏马，以及她日夜望断的愁肠。寂寞的小巷只余半截晨曦。</p> 
<p>他是一个叫柏舟的英雄的少年，他仰头喝下的是出猎前的誓言，一对虎目在就其的翻涌下愈发迸出无谓的光芒，他带着他的兄弟出发了。细碎的马蹄溅落在山道上如朵朵樱花开落。他回头一个自信的微笑，她知道，寂寂的小城里泪湿娇花的她知道，她知道。</p> 
<p>曾经在柔波荡漾的春水里欢笑的暖风，</p> 
<p>曾经在幽夜岑静的城阙下依偎的低语，</p> 
<p>曾经在青雾苍茫的白堤旁沉醉的杨柳，</p> 
<p>柏舟出猎了，她知道。</p> 
<p>他可从不知那天的芍药和轻风的柔软一同坠地，他可从不知每夜入梦的马蹄外青青的佩矜。她是锁在松窗里的悒悒的小心，千万眼凝眸只等来一瓣幽怨的落樱。</p> 
<p>“我不去翠林筑的日子，你怎不曾捎封信？我去不了林子的日子你怎不来叩我的小窗了？”露依伸手握住一个未明的早晨，又一声太息放走了一个忧郁的黄昏。</p> 
<p>于是柏舟归来，带着满载的猎物，带着兄弟们的欢喜，以及一脸期待的心情。</p> 
<p>事业，翠林筑的烛火摇乱恍惚的窗影，他听着一叶叶落樱清脆的声音，每一次飘零都是一声焦虑的太息。他叹落一宇星点，只叹出一窗东明。</p> 
<p>于是柏舟穿上最好的皮衣，带上他信任的兄弟，以及全城唯一的熊皮，踏着落英缤纷的晨曦。</p> 
<p>柏舟去提亲。</p> 
<p>这些夜里，露依夜夜倚阑愁，星月的飘渺的洞箫仿佛呜咽的招摇，也不知淌了多少泪，受了多少煎熬——父亲要把他许给小城的城主了。</p> 
<p>“如果那时候，那个雾帷重重的早上，你便把我带走，如果那时候，那些春风荡漾的午后，我们竟随了那些少年少女的船儿离去……”</p> 
<p>露依的房门再不曾开启，日夜只锁着一床哭泣。</p> 
<p>柏舟理所当然地回去了，她势力的父亲不会答应这个穷酸的猎户。三月的英雨下得及时，放肆悲者泣血的哀歌。</p> 
<p>山城是个隔绝的成，从未有过商队经过，也当然不会有商队出去。只有狩猎的柏舟以及他的兄弟，见过山城外青翠的竹林，山城外热情的人家。每一次柏舟凯旋，都有许多男的女的老的少的围着他听他讲故事。他讲外面的会讲人话的鸟，大街上会喷火的人……</p> 
<p>当然有许多美丽的女子爱听他的故事，爱他的强健的臂弯，潇洒的骑乘。但是他再看不到露依以外的女子，一如露依夜夜思念的心。</p> 
<p>城主当然是城里有权力有财力有暴力的人，至少他的前几代人有。他当然有艺术按傲气冲天的眼睛，当然早想拔掉这颗钉子。当然柏舟会被逐出城去。</p> 
<p>被驱逐的当然就是坏人，而且是通敌的坏人，全城憎恨的坏人。只要卜人一个不可思议的卦。卜人的卦当然不会说谎，唯一一个出国山城的人当然就是通敌的间谍。</p> 
<p>露依哭着骂那些夜里越过城墙出去儿此刻却不敢作声的人。柏舟仰头饮过一坛烈酒，怒目对着他的一十四个兄弟，他们疼痛的影子只泪不语——谁敢妄言谁是死罪。</p> 
<p>柏舟摔过酒坛，再不理身后一十四颗愧疚的心，甩头走入夕照的余影。</p> 
<p>露依凝望着远人消失的影子，怀中揣着柏舟的留信紧紧：“候我七日。”</p> 
<p>从山城到樊城不过两日路程，但山城从不与外人来往，樊城侯早心念山城却找不到出师之名。这时候，柏舟来了。</p> 
<p>于是占卜当然是上上，出征当然是正义之师。拿下山城，柏舟只要露依。</p> 
<p>第七日，山城陷。柏舟只见到露依跳下的那口井。</p> 
<p>是郑人又如何，是秦人又怎样。我的家我归不得，郑人秦人不过他们说的，与我何干？郑人秦人不都是人？我庆幸我是个穷打猎的，我能看到外面的世界的有多精彩。我又恨我只是个穷打猎的，如果我竟不知道外面的世界，山城就是一个平和的世界。哈哈！是我的错，一切都是我的错！我和你们这些围在城墙里的人作对，当然是我的错！</p> 
<p>许多年候的世界，山城遇樊城来往，得到了山城的郑国却不再与他国来往。他们的世界永远是歌舞生平的日子——只不知哪一天会结束。</p> 
<p>柏舟与露依的墓碑都没有留下半点字迹。他们当然不曾存在过，郑国的大好世界怎会有这样的人存在过呢？</p> 
<p>三月三的风拂过流河旁欢会的男女，多年前的樱瓣飘摇的日子里，有过这么一个故事。</p> 
<p>却不知是哪一个朝代。</p> 
<p>我又不是那个朝代的人，我怎会知道。</p> 
<p>哦不，便是他们，也不曾知道的。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6C38;&#x8FDC;&#x4E00;&#x4E2A;&#x4EBA;</title>
        <link>https://justinyan.eth.limo/EB2C3D25-C865-4593-9CEA-9574FD202D4F/</link>
        <guid>https://justinyan.eth.limo/EB2C3D25-C865-4593-9CEA-9574FD202D4F/</guid>
        <pubDate>Sat, 15 May 2010 22:53:52 +0800</pubDate>
        
        
        <description><![CDATA[
            <p style="text-align: center;">永远一个人</p> 
<p style="text-align: center;">Forever Lonely</p> 
<p>永远会记得这样一个场景：阴冷狭小的房间里，疏落的阳光绕过窗棂，跌伏在地，挣扎着延向阴暗的一角。三两个孩子在锈迹斑斑的翘板上荡着凄冷的欢笑。莎拉一个人，坐在孤冷的地板。</p> 
<p>永远一个人。
 <!--more--></p> 
<p><strong>[Part.1 Blog</strong></p> 
<p>“能像这样敲着键盘写作真好。”叶绫心想。手指敲着今天的blog：</p> 
<p>“地铁幽暗的灯，窗里我的影子没有说话。空调轰轰的响，隧道风的尖啸，人群骚乱的嘈吵，揉成一团混沌闯进我的耳里不安地蠕动。地铁里满满的都是人，可我的心脏却感到深沉的孤独，伴着强烈的阵痛。”</p> 
<p><strong>[Part.2 </strong><strong>出游</strong></p> 
<p>生日照例要邀几个好友庆生，家庭富有的陈冲便邀了全班同学野餐。</p> 
<p>“并不十分想去，不去也无所谓的。但是云斯说一定要去，也看看霏柳湖的碧波和蓝天。”</p> 
<p>阳光渗进叶子，在石板路上淋出一串青浅的足迹。叶绫喜欢安静，他们在小坡上疯玩，我还是去看我想看的绿色好了，反正也说过祝福了。</p> 
<p>叶绫躺在湖边的草地上，一阵青草香。虫鸣，鸟叫，水流，叶响，从四面八方涌进来，视域里一半是绿叶与光点，一半是明丽的蓝宇，浮云缓慢地游动。</p> 
<p>都是注定的吧，叶子就该碧绿地招摇，蝉虫就该悲凄地嘶叫，湖水荡着柔波，花朵发着芬芳。我在这里看天，念书，毕业，成家，晚年，坟墓。叶子夏绿秋黄，我按着生命的形式衰老。</p> 
<p>“给。”云斯递给叶绫一支冰激凌。叶绫听得出她的脚步，最后一步靠脚，很轻，但叶绫听到了。不知道为什么，叶绫总会不自觉地去注意这些看起来毫无意义的小事。他坐起身来，背靠树干，接过冰激凌说了声谢谢。</p> 
<p>云斯便在他身旁坐下，树不大，于是她的右肩便靠在叶绫左肩。叶绫嗅到一阵幽香，不自然地轻挪了下肩膀。</p> 
<p>“叶绫什么时候生日呢？”云斯问。</p> 
<p>叶绫望着彼岸青翠的小山，一尾游鱼跃出水面，“夏至。”</p> 
<p>我的生日是在夏至，她在秋分……那个时候，幼稚园的时候，或许更大一点，因为我懂得夏至和秋分这两个节气。“我的生日在夏至，你呢？”“我不知道。”“那你就在秋分生日好了。”“秋分？”……</p> 
<p>“叶绫？”云斯在耳边唤道。</p> 
<p>叶绫回过神来，“嗯？”</p> 
<p>“发什么呆呢？我说，这湖叫霏柳湖，我们该春天来的，那样就可以看到柳飘絮了。”</p> 
<p>叶绫“嗯”地点了下头。</p> 
<p>滤过绿荫的夏风清爽凉快，两人就这么坐着，没再说话。云斯的发梢随风拂到叶绫脸上，有点痒，有点奇怪。过了一阵，叶绫问道：“为，为什么一定要我来？”</p> 
<p>云斯说：“他是我的好朋友啊，我们从小一起长大的，当然要来。”没有回答自己的问题，叶绫还是“嗯”地点了下头。顿了一顿，云斯转过头来说：“叶绫也是我的好朋友啊，所以你也要来啊。”两人靠得很近，叶绫能感到云斯吐气如兰，有点尴尬，便站了起来“哦……哦。”云斯也站起来，问道：“叶绫呢？叶绫有很要好的朋友吗？异性朋友？”</p> 
<p>好朋友，一起长大，的女生。</p> 
<p>莎拉！
 <!--nextpage--></p> 
<p>怎么可能忘记。第一次看到她的时候，是念幼稚园的时候吧，我们念小班。大家都到外面去玩了，莎拉一个人坐在教室。我是刚转学来的，没人跟我玩。她很奇怪。看起来很奇怪，但是很好看。我也不知道我竟然也会主动去找人交谈，不过那个时候我去了。我问了她今天的作业。怎么可能忘记，那种心跳的感觉。</p> 
<p>“嗯，有的。”叶绫说。</p> 
<p>云斯似乎很感兴趣，问道“真的？是谁呀？”</p> 
<p>“她，她叫莎拉。”</p> 
<p>“莎拉？这么奇怪的名字？”</p> 
<p>“莎拉？这么奇怪的名字？”在听到莎拉说自己名字的时候叶绫心里也是这样想的。</p> 
<p>幼稚园是爱心基金会办的，有一个收留孤儿的“家园”——几个房间，一个照看的大婶。但是莎拉却是幼稚园里唯一一个住在“家园”里的孩子。在她来之前，其他的孩子都已经被领养了，在她之后的两年也没有别的小孩进来。</p> 
<p>那时候老爸老妈出差了，也记不住是去什么国家了，名字很长，很奇怪，所以那天晚上我就住在“家园”里。</p> 
<p>“我叫叶绫，你叫什么？”</p> 
<p>“莎……莎拉。”莎拉有点胆怯地说。</p> 
<p>叶绫从自己的小熊书包里拿出纸和笔，歪歪扭扭地写着自己的名字，写完后，指着自己写的字念道：“叶——绫。”莎拉很羡慕叶绫有那样好看的书包和珠笔，更觉得叶绫能写自己的名字很厉害很厉害，便说：“我，我不会写自己的名字。”叶绫微微一笑，又拿笔写了“沙拉”两个字，“莎”字写漏了草头他却不知道。莎拉便看着叶绫写的字，食指在空中比划。</p> 
<p>我也不知道当时是怎么想的，只是想让她觉得我很好，我把笔送给她，把书包也送给她。她很开心，我也很开心。</p> 
<p>“那后来呢？”云斯问。</p> 
<p>我也不知道当时为什么会跟云斯讲这些，也许是大自然的美丽让我心情放松的关系吧。也许有另外的原因也说不定。云斯，的确是一个很可爱的女孩。真是可笑，我可以用笔把我想说的都写下来却没有办法把话说清楚。有时我甚至怀疑自己大脑的语言中枢是否有先天性缺陷。</p> 
<p>总之，今天的出游是一次奇异的旅行。霏柳湖那边的云飘得很低，走在山道上感觉它们就像笼在我身边一样，触手可及却分明捉摸不到，似梦吧。云似梦。</p> 
<p><strong>[Part.3 </strong><strong>曲子</strong></p> 
<p>很多时候渴望自己能拥有孩童的天真与单纯。单纯多好啊，没有多余的算计，我和你好就是好，不好就是不好。人长大了就不得不每天编造各种谎言，甚至在微笑着问好的时候心里却可能正咒骂对方。他们说这叫现实，这叫社会，这是为了生存。</p> 
<p>好久前写过一句话：当生存已成为生活的负担……</p> 
<p>送给莎拉的书包和笔只是出于十分单纯的目的：我要让她觉得我很好，很厉害。</p> 
<p>可笑的是，当那些在生存和生活之中挣扎着衰老的人们用他们可怕的思想去思考简单的事情的时候，即便是1+1也会算出恶心的答案。</p> 
<p>叶绫骑着单车的时候思想会随意扩散而毫无约束，他很喜欢这种感觉。</p> 
<p>思想真是一种神奇的事物，你可以想着最高尚的事情而不必担心被别人说成自大狂，你即使想着最肮脏的事情也不会有人投来鄙夷的目光。而那些人在嘲弄别人的时候实际上已经暴露出他们自己的无能，所以他们其实是在嘲弄自己。</p> 
<p>如果不是乌云满天大风开始刮起他定是缓缓地骑回家——尽管有时候淋雨也是一种独特的体验，但至少他今天没有这样的雅兴。</p> 
<p>那个书包与珠笔，一度让我和莎拉陷入当时看来世界末日般的境地……</p> 
<p>那个瘦弱的身影，刘海在风中飘起，云斯！</p> 
<p>校服是单薄的衬衫和百褶裙，沾到水就是透明的。叶绫把毛巾递给云斯，不敢去看她，低着头看地，有点脸红。</p> 
<p>在转角看到云斯的时候云斯也是低着头，两人没有说话，就像是天黑了就会下雨一样自然，叶绫把云斯载回家里，途中还是难以避免地淋了点雨。</p> 
<p>云斯拿过毛巾披在自己肩上，哽咽着说：“我爸爸不要我了。”说完竟掩面哭了起来。</p> 
<p>叶绫有些吃惊，他不知道发生什么事，他张开口，想要说点什么，又说不出来。他从没遇见过这样的情况，有点惊慌失措。</p> 
<p>哭了许久，云斯才抬起头来，说：“你的爸爸呢？他怎么让你一个人住，他也不要你了吗？”叶绫心中一窘，说：“我，我……”一着急，更不知道该说什么了。
 <!--nextpage--></p> 
<p>云斯瞪了他一眼，站起身来，说：“我要走啦。”</p> 
<p>叶绫连忙站起来，说：“不，先不要走。”说完急急跑到房里，出来的时候手里多了一个随身听，他把随身听递给云斯，说：“有人跟我说过：‘孤独从来不是一种疼痛。’”</p> 
<p>云斯不明白，她疑惑地接过随身听，戴上耳塞，这年代还有人听录音带，真是奇怪。</p> 
<p>如果是10年前，大概就是一种时尚了吧。</p> 
<p>那个时候，同学们都很羡慕我，都羡慕我的随身听。我们已经念小学一年级了。我喜欢Beyond的歌，所以后来学了吉他了。感觉文字和音乐才是表达我思想与情感的最佳方式。他们单纯，真挚，没有经过繁复地过滤便流泻出来，每次笔尖划过稿纸时流畅的曲线，每次指尖拨弄琴弦时清脆的颤抖，都让我觉得，不知道该怎么形容。它们让我忘却现实，只在自己的思想的世界里面游动，哭笑都好，没人理会。那个时候，甚至感觉自己像嵇康，不受世人眼光的束缚。</p> 
<p>那一天晚上，莎拉又哭了。莎拉是一个没人领养的孩子，一直住在“家园”里。城里有新建的孤儿院，莎拉不肯去，所以“家园”里一直就只有她一个人。孩子的想法是单纯而真挚的，当他们被那些人用那些人的思想同化了之后，就觉得自己的嘲笑与愚弄是正确的了。</p> 
<p>她看起来很坚强，其实不是的。她经常哭。</p> 
<p>有一天她的书包被扔到男厕所了，就是那个小熊书包。那些坏孩子干的，让她自己进去捡。我不敢去帮忙，每一次她被欺负我都不敢去帮忙。我很没用。</p> 
<p>他们站在走廊坏笑，看着弱小无助的样子自己就很开心。我忽然觉得自己该做些什么心跳忽然加快了，可是我还是没动。我闭上眼睛，我看到莎拉了！</p> 
<p>真的，我真的看到莎拉了！在一片黑暗的空间里，她低着头，我看不到她被长发遮住的脸但我知道她在哭，她瘦弱的肩膀在抖动。她是多么无助啊。“学校里的人那么多，我却感到深沉的孤独。”我脑中突然间闪过这样一句话，也忘记从哪里看来的，总之我的行为已经不受我的控制，我知道我的脚在跑，我的视域跌跌撞撞地，抓起书包拉着莎拉跑到操场去。</p> 
<p>那里有一棵大榕树，我很喜欢去那里。上体育课的时候。“上体育课的时候？”“嗯，我不喜欢跟他们一块，就自己到这里了。”“哦。”</p> 
<p>“你一个人的时候，不感到害怕吗？”</p> 
<p>莎拉摇了摇头。</p> 
<p>我们就在那树下呆坐着，许久。我记得那天是一直等老师找到我们，才离开的。那个坏孩子挨老师批评了。</p> 
<p>孩子的想法是很单纯的，那次之后他们都没在欺负莎拉。倒不是因为老师的批评，是因为我的关系。后来我想想，大概是父母的原因，他们的父母不愿得罪我的父母，所以他们的小孩就不敢得罪我。</p> 
<p>我们过了很畸形的两年。在小学的最初两年里，我们所熟识的同学，只有对方。莎拉和我。我们甚至不跟自己的同桌说话，但离不开对方。所以他们最经常地就是“XX爱XX”地念叨。照例被念到的人要生气一下或者窘迫一下。但是我们都没有。现在想想都觉得很奇怪，只能说我们都不是正常的孩子吧。</p> 
<p>其实，怎样就叫正常呢？他们都经历过的，他们认为应该这样经历的，他们已经习惯了的，就被他们叫做正常。而不在他们的习惯或者他们的认同的范围里的，就叫不正常。嗯，大概就是这样了。</p> 
<p>“这首歌……”云斯拿下耳塞，说，“不对，是这首曲子，是什么？”</p> 
<p>叶绫说：“是一个很奇怪的老人弹的曲子。”</p> 
<p>“奇怪的老人？”</p> 
<p>“嗯。小时候他住我楼上，我跟他学吉他。他给我这个带子的时候说了很奇怪的话，我都记不住了，就只记得：‘孤独从来不是一种疼痛’。”</p> 
<p>记住这句是因为把疼痛当成糖果，孤独听起来像一种巧克力牌子。</p> 
<p>直到很久以后我才知道这句话痛得深沉。</p> 
<p>云斯把随身听递还给叶绫，说：“谢谢你。”</p> 
<p>当叶绫的指尖触到云斯的手的时候，叶绫心中一颤，竟忘记把手收回来。云斯把随身听塞给叶绫，双颊一阵绯红。叶绫自觉失态，登时耳根发热。</p> 
<p>云斯说：“可以弹吉他给我听吗？”叶绫一愣，稍微犹豫了一下，点了点头。</p> 
<p>[Part.4 信件</p> 
<p>“我比较习惯，用笔和纸表达自己。”</p> 
<p>“那你加我的QQ吧。”</p> 
<p>“QQ？哦，可是我很久不用。”</p> 
<p>叶绫：</p> 
<p>你好！</p> 
<p>不管你相不相信，这是我第一次写信哦。我的字写得不好看，但是你说你不习惯讲话就勉强迁就你啦^_^</p> 
<p>嗯……要写点什么好呢？其实我写字就跟你讲话差不多，就写不出几个字来，要不你说说你那个好朋友的事情吧，上次只说到一半就停了。</p> 
<p>等着你的回信哦。</p> 
<p>今天放学的时候云斯塞给叶绫一封信就匆匆地走了。看完这封信，叶绫心中满是异样的感觉。叶绫回了一封E-mail。</p> 
<p>那个时候其实我在“家园”住了三天。每天晚上我都会跑过去莎拉那里。每次见到我她都很开心，我也很开心。其实，她是一个挺开朗的女孩。我把漫画拿给她看，她不喜欢，我们玩过家家，每天晚上都玩，每次都要等到照看的大婶催了好几遍我才走。那是段愉快的时光，以至于离开“家园”的时候我甚至有些不舍。然后事情发生了。</p> 
<p>回家后的第二天，我偷了一个同学的玩具。是一支很小的左轮枪。一开始我们只是闹着玩，学着电影里，一个同学去跟他攀谈，我就去拉他的背包，偷了他的玩具。他发现的时候我们就说是另外一个同学偷的。现在想想也觉得不可思议，在老师眼里我一直都是很老实的学生，很乖，功课很好，不可能会做这样的事。</p> 
<p>所以老师挺生气的，在课堂上很严厉地责备。那个时候我很软弱，不用“逼供”，老师刚一问“是不是你拿走的”我就把玩具老老实实地交出来，还委屈地哭了。还罚我抄很多遍的三字经，也忘记多少遍了，只记得放学后我一个人在教室里抄，边抄边哭。天都黑了我还没抄完。然后老师就进来让我回家了。我如获大释，也不管其他就走了。</p> 
<p>第二天我才知道，是莎拉去跟老师说玩具是她偷的。当时我很震惊，的确应该用震惊来形容一个6岁的孩子所做的事。她只觉得不该看我那样难受就学着电视里的情节去帮我顶罪了。可她却不知道她的行为会在她的人生中留下多么深刻的阴影。</p> 
<p>莎拉的功课不好，又是孤儿，老师很容易就相信了她。孩子的思想是单纯的，他们辨认事物的唯一标准就是老师的话。此后无论我向众人解释多少遍就是没人相信我，后来我才知道，也是因为父母的关系，老师们知道但是不说，而孩子们是不懂得独立思考的。</p> 
<p>所以这样一来，莎拉就成了坏孩子，小偷，孤儿，还多了一条让别人帮他顶罪的罪名。</p> 
<p>莎拉说：“没关系的，本来就没有人陪我玩。”我很难过。</p> 
<p>“叶绫还会陪我玩的，对吧。”当时我拼了命地点头。后来我才能理解到莎拉笑容的背后饱含了多少辛酸。她的行为并不是来自孩童的天真与无知，而是来自她长年孤独造成的独特的视角。她只是在按照她自己的思维方式去行动，就好像我们口渴了要喝水一样自然。只不过，她喝下的，却是毒药。</p> 
<p>不久后父母也不让我跟莎拉来往，我表面上答应着，但是幼稚园里的事情他们反正看不到。如此过了三年，直到小学一年级，我帮莎拉把背包从男厕所拿出来，跟莎拉在榕树下坐着。</p> 
<p>“家园”里始终只有莎拉一个人。她已经上小学了还住在幼稚园的“家园”里，那里的孩子都当她是异类。她没有漂亮的衣服穿，那个小熊书包很旧了却一直在用，功课也不好，所以在小学里她是属于躲在黑暗角落里的蛛网，存在只证明时间的流逝。男生因为那件事之后不再欺负她，女生也从不跟她一起玩。表面上看像是觉得她是异类，后来我才知道，幼稚园被说是小偷的那件事情从来就没人忘记过。小偷，永远是小偷。</p> 
<p>看着屏幕上闪动的光标，叶绫视域开始发散，精神扩散开去，似乎没有思考，但是情感的流动却分明在大脑皮层中缓缓摇荡。
 <!--nextpage--></p> 
<p>[Part.5 生日</p> 
<p>最后一次见到莎拉是初三的那个暑假。莎拉走了。她到国外去了。</p> 
<p>“国外？”云斯惊疑道。</p> 
<p>叶绫说：“是的。”</p> 
<p>我的生日在夏至，你呢？那你就在秋分生日好了。</p> 
<p>莎拉的第一个生日我们在郊外放烟火，很小的烟花棒，但是很好看。莎拉很开心。最后一次见面是我的生日，夏至。</p> 
<p>那个时候的莎拉，已经很不一样了。中考后就在一家服装店打工，也搬出了“家园”。第一次拿到薪水我们去了城郊的山顶，我记得那个汉堡很辣，呛了我好久。我们曾经在那里放过烟火，莎拉还记得。那一次她也买了烟火了，我记得她呆呆地望着手中的灿烂，很久不说话。尽管我们在一起的大多数时间都是不说话的，但是我感觉那一次她有点不同。</p> 
<p>那天莎拉穿的是细肩带和短裙，很可爱。打工的一个月里显然她变了，变得成熟而美丽。只是我总感觉还是小学里的莎拉比较真实。</p> 
<p>她在“家园”的时候，也很少说话，甚至跟照看的大婶也说不了几句。我可以想象一个女孩在成长的过程中独自面对黑暗与未知的时候心中沉重的恐惧。但是如果换个角度想呢？莎拉觉得，一切都是自然的，自然该往哪个方向发展，就该往哪里发展。</p> 
<p>我曾经为她考试成绩而担忧可是她说：“为什么说考100分的就是很好的？”我突然愣住了，为什么呢？在我所身处的环境里，所有的价值取向都是用分数来做评断的。所以我就应该跟他们一样去做这样的评断。就好像，在河道里，好多滴水都顺着河道规定的方向去流动，所以河道不会轻易枯竭。人类是个数量巨大的种群，为了让这么庞大的种群能够集中所有力量去面对自然的挑战，人们选择了同化。当无数人利用思想的同一性凝聚在一起的时候，世界也会为之震颤。有权力选择自己的思想的，只有极少数人，他们或是掌握最高权力的人，或是被社会挤兑的异类。所以，作为绝大多数的所谓“愚民”，如果我们要生存，就一定要依赖别人，否则便如同溅出河道的水滴，一下子就会蒸发消失。而依赖别人，首先就要跟别人的思想达到同一。</p> 
<p>当然那个时候我并没有想这么多，只是在认为父母与老师的话就是真理的同时隐约觉得有点不妥。莎拉说：“玩弹珠玩得好的孩子，男生会觉得很厉害可是我不觉得，因为我不玩弹珠。考试考100分的人大家都觉得很厉害因为大家都要考试。如果我不考试呢？”</p> 
<p>“为什么不考试？”</p> 
<p>莎拉没有跟我讲。后来我才知道，因为那次偷窃的事情，莎拉对老师一直怀有莫名的恐惧，这种恐惧一直延续到她长大，始终挥之不去。她害怕考试的时候老师虎视眈眈的眼睛，尽管不是有意但是每次只要莎拉一抬头看到老师的眼睛，心里就会陡然间一跳。那神态，像极了作弊时的心虚，虽然她并没有。</p> 
<p>她的功课一直不好，但她喜欢画画。第一次她拿自己的画给我看是在夏天，哪一年我已经忘了，大概是小学二年级吧，那个时候我们有开所谓的“兴趣班”。我和莎拉都报了绘画班。倒不是因为喜欢画画，只是觉得体育或者音乐自己都不行，至于舞蹈，则显然很少有人有勇气去报。莎拉给我看的是一只小熊，就是那个背包。在那次事件之后她就没再背那个书包了，可她却一直留着，后来我才知道，她害怕那些坏孩子把书包扔了自己拿不回来。</p> 
<p>莎拉没有钱买画笔和纸，她去操场捡小石头画。</p> 
<p>我只记得她画了很久，至少一直到小学毕业都有在画画。</p> 
<p>不过事情总会改变的。小学毕业后我随父母去了别的城市的念初中，她则留在本地。分别的时候莎拉说：“开学的前一天写信给我，好不好？”我想都没想就答应了，但是我忘了。很多事情就是这样的，在你不去想的时候，它会像摆在抽屉里的泛黄的纸片，从记忆里重要的角落慢慢遗失。初中生活跟小学很不一样，一切对我来说都是很新鲜的，渐渐地，忘了莎拉。</p> 
<p>直到初一那年夏至。</p> 
<p>母亲带我去肯德基庆生。回到家的时候已经很晚了，母亲送我回家后去单位值班。没关系，反正我已经习惯一个人的空荡荡的屋子。洗完澡，坐在客厅，也不去擦拭头发，任由水珠从脸上滑落，掉在地上。这就是我的生日啊。其实过不过都无所谓的。</p> 
<p>这时候门铃响了，母亲很健忘的，又忘记带钥匙了。</p> 
<p>打开门，是莎拉。</p> 
<p>[Part.6 根源</p> 
<p>从县里骑车过来，4个小时，疲惫，期待，恐惧，无助，惊喜。莎拉没有说话。</p> 
<p>我把毛巾递给她，她满头是汗。我们在客厅坐着，没有说话。就像现在，跟云斯在客厅坐着，没有说话。</p> 
<p>我们一夜没睡，第二天莎拉骑车回去了。我记得那时候很早，有雾，很凉，她骑上单车，我看得出她的疲惫。她的瘦弱的背影，骑着单车，有点摇晃的远去。倘使我会画画就好了，定将那画面印在梦里，每夜让自己追悔。</p> 
<p>我们不打电话，因为通了也不知道说什么。我们写信。</p> 
<p>第一封信是初一第二学期末的时候写的。那时候有一个家庭作业，就是写信，做完作业剩下两张邮票，我就写了一封给莎拉。地址当然是“家园”。信的内容很简单，只是问好。</p> 
<p>莎拉回信了，也跟我问好。出乎我意料的是莎拉的功课变好了，她说她有自己要去的地方，就像要飞翔就一定要有翅膀一样，她只有把功课赶上才能到达她想要的地方。我不知道她说的是哪里，我们的通信从来就是这么朦胧而不解。但是没关系，就好像心是连在一起的，她说到紫色的阳光的时候我知道她在阳台种的紫色的小花开了。碰巧那时候我在写新诗，也就不介意优美而晦涩的言语，反而觉得能有人以这样的语言跟自己交流很高兴。</p> 
<p>有一次我看《浮生六记》，看到《坎坷记愁》的时候哭了。莎拉说：“循着自然的脚迹行走，你看不到其他的旅者，但你拥有无限的自由。而这一切的代价就是孤独。”一直到快中考了，莎拉仍旧一个人。即使是某个时期少男少女间涌起恋爱的风潮，我和莎拉也一直保持沉默。我们心中都有种异样的情感，我和她并不是情人，但是我们依赖于彼此——一种奇特的精神满足。</p> 
<p>快到中考的时候莎拉放弃了学业。她说无论她的成绩多么优秀她都拿不到飞翔的翅膀。我的回信并没有回应这件事，她有她自己的想法，而且她的想法总是独特而准确的。果然中考过后我轻易地进了重点高中而她在读的学校没有一个能考上。倒不是因为他们没有考试考得很好的人，大概是有其他的原因的。她去打工了。</p> 
<p>那天晚上我们在城郊放烟火，我父母照例没有回家，莎拉已经在外面租房子住了。所以玩到多晚也没关系。我们就那样坐着，夏风很凉，星星很亮，所以看不到藏在云瓣里羞涩的月娘。莎拉说：“你喜欢看到漫天都是星星还是喜欢孤独而明亮的月？”我望着深沉的夜宇看了很久，虫鸣的低吟和流风的清浅在我身边淌过，山下是成片的城市，城市的边缘有山，黑黝黝的。“我在这里生存的时候希望在山里面生活。当我割舍不开那些人的时候我就注定无法逃离这种既定的形式。无论我在水泥城堡里再怎么挣扎，思想究竟只是我的思想。没人会去听一个囚犯的疯言疯语，因为他们没有意识到，自己也是囚犯的一员。”</p> 
<p>“我要走了。”</p> 
<p>“嗯。”</p> 
<p>她真的走了。我甚至不知道她去了哪里，哪个国家，哪座城市。</p> 
<p>“为什么你不阻止她？你舍得让她走？”云斯问。</p> 
<p>我低下头，说：“我不舍得我当然不舍得，你不知道有梦的夜晚我就会看到莎拉，看到她说她要走。可是我了解她了解我自己。自然是怎样的就让它朝自然的方向发展。我无论如何也阻止不了的，就像夕阳的血色注定要去换取月的冷光，即便我努力往天边跑也追不回短暂的黄昏。既然我阻止不了让我的心滴下疼痛的血液，那就蒙住自己的眼睛不去看它。我不去加剧它的疼痛就好，何必去阻止我怎样也阻止不了的事情。”</p> 
<p>云斯没有说话。也许我们都为我能这样流畅地讲完这么一大段话儿感到惊讶，但其实这是因为这些话已经在我心里反复重述过无数遍了！每次有梦的夜晚看到莎拉，那个瘦弱的背影骑着单车离去，那个低着头站在人群中的孤泣者，那个即使打扮得很漂亮也不能改变自己的忧郁的女生。每一次心脏的抽搐我都拿这些话来安慰我自己，我发现这些话说得多了，自己也就相信了。</p> 
<p>“但是你知道那并不是真理。你并不相信。”云斯的语气有点反常，坚决而带点气愤。</p> 
<p>我说：“不相信又怎样，夜幕早已经将夕阳吞没了。”</p> 
<p>云斯说：“你知道你自己真正的想法是怎样的，你不去逐日不是因为你不想，只是因为夸父追不到太阳你便自认为追不到。看到莎拉被人欺负不去帮忙不是你不想，只是所有人都不去帮忙你不想变得不一样。看到莎拉戴上小偷的罪名你不是解释了没人理解而是你没有尽力去做，莎拉骑着单车大老远跑来找你你不是不想说话你只是觉得莎拉不想你说你就不说。你永远在别人的眼里活着。我看不起你！”</p> 
<p>那天云斯很生气地走了。</p> 
<p>我在别人眼里活着？真讽刺啊。</p> 
<p>我一直以为自己是独特的。父母很少管我所以我很少受他们思想的影响，我看很多书所以我不被学校的那些洗脑，我相信科学所以不认为老师说的一定是对的作家写的一定是好的。我跟他们不一样啊。</p> 
<p>可是接下来的三天里我渐渐发现一个可怕的事实：我的确像云斯说的，我活在别人的眼里，完全没有自我。</p> 
<p>我不喜欢说话，表面上是因为我不懂得表达而实际上我喜欢写作喜欢音乐所以只要我肯我可以说得比世界上任何一个演讲家都流利。但是我不想，即便我不赞同鲁迅的观点我也不会在鲁迅文学交流会上面提出来而任由那个无聊的发言者大赞特赞毫无见地。我不喜欢说话的深层原因是：我在逃避。</p> 
<p>写下这四个字的时候我的眼眶湿了。要一个人承认自己最为深刻的弱点真是一件很残酷的事情。越是深层越能发现自己的无耻自己的卑鄙。</p> 
<p>如果我去帮忙我也会被那些人欺负的，我害怕被欺负。如果我真的尽了力去解释偷窃的事情兴许真能让大家都相信可是我不想解释的真正原因却是：我怕我真的变成小偷而受尽轻蔑。一直以来和莎拉保持着畸形的关系是因为我不舍又不敢。多么自私，多么卑鄙，多么无耻！</p> 
<p>[Part.7 The end</p> 
<p>烟雨过后的霏柳湖，沉默而格外清新。</p> 
<p>云斯说：“莎拉，你还想见他吗？”</p> 
<p>莎拉低着头，良久才说：“想。”</p> 
<p>“可是他都已经说了，他是那样自私的人。”</p> 
<p>莎拉说：“他很单纯。他思考的时候可以同时走出不同的岔路却从没有一条路是有转角的。”</p> 
<p>云斯说：“我想问一下，你们之间到底是怎样的关系？”</p> 
<p>“他怎么说？”</p> 
<p>“他不知道。”</p> 
<p>第一次和莎拉牵手是在秋分的傍晚。</p> 
<p>是初二的时候吧，我记得通信有一段时间了。我们在一个小坡上坐着，坡下是池塘。送给莎拉的礼物是一本薄薄的小册子。我用许多短诗记录了我们每次的通信。莎拉认真地翻看，我就在一边看着莎拉专注的眼神。她的睫毛很长，很好看。</p> 
<p>莎拉说：“青砖路开出的黄花，五步一个心碎。”那是我读信的时候，走在青砖路上，阳光穿过树梢落下，一片片花瓣，在足底低低地清脆。莎拉说：“把手掌拢起，伸出一个手臂的距离，就可以看到夕阳在手里舞蹈。”说着把手伸向夕阳的方向。我也把手伸出来，但是怎样也不能在手腕翻转的同时伸直手臂。这时候莎拉把手伸过来，我们两只手掌围成一个圈，夕阳在手掌的那头。我们靠得很近，我能听见我的心跳得很厉害，手在抖，夕阳的光线散开在颤抖的指掌像极了翩跹的舞步。我们同时转过头来笑了，并且同时发现自己靠着对方很近很近。我不自觉地握紧了莎拉的手掌，滑腻而柔软。</p> 
<p>“莎，莎拉！”在我看到莎拉的时候即便给我一千支笔一千把吉他我也书写不了那种复杂的心情。惊讶而高于惊讶，恐惧而不至于恐惧，惊慌失措而分明是呆滞在地。</p> 
<p>云斯看着我们两个，微微一笑，识趣地离开了。</p> 
<p>我说识趣并不因为我赞成，反而她的离开让我更觉得不自在。我们仍旧保持着沉默。莎拉转过身去，面向霏柳湖。我站在她身后，凝视着她的背影，不知道该走上前还是怎样。我的脚底在摩擦，心跳得很快，我不知道该怎么办，怎么办？</p> 
<p>我知道莎拉也跟我一样，她的肩膀不安地抖动告诉我的。莎拉转过身来，张开口刚要说话，我竟然拉着单车就疯狂地跑了。我不相信也不理解我为什么要这样子逃离现场，但是当时我的行为确实已不为我的意识所控制，正如我冲进厕所抢回书包的时候一样。我只能感觉我的视域跌跌撞撞，我甚至忘记骑上单车而是拉着单车就这样子跑回家里。</p> 
<p>我可以想象莎拉失望的神情。</p> 
<p>那天晚上，叶绫失眠了。</p> 
<p>第二天叶绫问云斯昨天事情，云斯却像什么也没发生似的对这一切表示不知。叶绫虽然感到疑惑，但是他也不懂得怎么继续追问下去，只得作罢。</p> 
<p>就像前面说的，时间真是一种很神奇的东西，只要不去想，很快就会忘记。</p> 
<p>转眼又是秋天，我的手机里还记着莎拉的生日。明天，秋分。</p> 
<p>有时候会想，秋分不是一个吉利的名词，又是哀愁又是分离的，不过莎拉肯定不会这样想。她肯定会说：“既然有春天那样温和，夏天那样躁动，那么有秋天的忧伤也是自然的。”</p> 
<p>云斯突然跑到叶绫家，门铃按得很急。叶绫要给云斯倒水云斯却说：“快！我姐要见你！”当我被云斯拉着跑出去的时候，我就已经隐约猜到是什么事了。</p> 
<p>云斯的父亲亲自开车到我楼下，我有点受宠若惊。</p> 
<p>在医院看到躺在病床上的莎拉的时候，我已经失去思考的能力了。就这么呆呆地看着。她的脸色和身上的病袍一样惨白，左手打吊针，鼻腔里吸着氧气。我不知道到底发生了什么事情。他们也不告诉我，我也没问。如果他们想说，总会说的，现在不说是因为有更重要的事。</p> 
<p>看着奄奄一息的莎拉我也大概知道是什么事了。这是我人生第一次碰到这样可谓“重大”的事情，我第一个念头就是：逃离。就像我在霏柳湖畔逃走那样。不过我这次没有。</p> 
<p>莎拉，有3年不曾见到，但是莎拉的一切还是那样熟悉。每夜有梦的时候我就会看到，莎拉或低头或转身全是悲伤的神色。现在看到的莎拉，静静地躺着，安详，平和。这是我从不曾见过的神色。我在莎拉身边静静地坐着，就这么坐着，看着莎拉安详的呼吸。</p> 
<p>这种感觉，就好像那些时候，更早以前，在她出来打工以前。我们这么坐着的时候，就能感觉到对方的心跳。有时候我会天真地想象自己是否有特异功能，能够靠自己的脑电波跟莎拉交流。当然这是玩笑，但是那种任由思想扩散开去，在两颗心跳之间感受情感的流淌的那样神奇的体验却是真实而具体的。</p> 
<p>“这不是玩笑。”</p> 
<p>我陡然间一惊，莎拉的声音！我望向莎拉，她的眼睛始终闭着，她的身体始终躺着，没有动，平静而祥和。我忽然间觉得有点害怕。“不要怕。”</p> 
<p>再次听到莎拉的声音我不知为何眼眶竟然湿了。我低着头，看着不能言语不能行动静静躺着的莎拉，鼻子一酸，眼泪就这样不争气地流了下来。我在心里狂呼：“对不起，对不起，对不起……”我渴望能听到莎拉的声音，不是原谅，是责备的声音。</p> 
<p>可是我再也没能听到。夜晚，一轮孤月挂在窗外，安静得如此可怕。</p> 
<p>我重新抬起头，月光照进房间里，照在莎拉身上。我突然间想起第一次见到的莎拉，第一次跟她讲话，第一次在女孩子面前逞能，第一次我出手帮她，第一次牵莎拉的手……</p> 
<p>然后我闭上眼睛，看到莎拉。莎拉在夏风习习的林荫间飞舞，那些黄色的花瓣。</p> 
<p>飞舞。翅膀。</p> 
<p>第二天病房里充斥着病人家属的哀恸，云斯是第一个发现的。病床上永远安静的莎拉，还有一扇敞开的窗。叶绫，也随莎拉去了。</p> 
<p>自然是怎样地，就随着自然发展的方向发展，总是对的。</p> 
<p>我的生日在夏至，你呢？那你就在秋分生日好了。</p> 
<p>你知道，夏至也好，秋分也好，永远一个人，是怎样的体验？莎拉在病床上挣扎的时候我能听到她疼痛的心跳，她才是始终一个人活着，我不说话不是因为我不喜欢说话，只是这样我能不感到更深沉的孤独。</p> 
<p>我渴望着张口，但我知道，我将在张口的同时感到空虚。</p> 
<p>永远一个人。</p> 
<p>枫林月影</p> 
<p>完成于 09.5.21/下午 华工图书馆</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x9690;&#x4E8E;&#x95F9;&#x5E02;&#x7684;&#x5341;&#x5B57;&#x67B6;</title>
        <link>https://justinyan.eth.limo/A169EB21-3480-4157-8600-3170B947A1F6/</link>
        <guid>https://justinyan.eth.limo/A169EB21-3480-4157-8600-3170B947A1F6/</guid>
        <pubDate>Sat, 15 May 2010 14:46:21 +0800</pubDate>
        
        
        <description><![CDATA[
            <p style="text-align: center;">隐于闹市的十字架</p> 
<p style="text-align: center;">——广州圣心大教堂游记</p> 
<p style="text-align: center;">[singlepic id=1 w=320 h=240 float=center]</p> 
<p style="text-align: center;">摄影/DOMO</p> 
<p>地铁里满满的都是人。我低头看手机，浏览哥特式建筑诡秘的华丽。冬日轻寒的早晨，我与好友DOMO探入广州繁闹的古街，去寻访仰卧在花城楼林中已逾百年的十字圣架。
 <!--more--></p> 
<p>二人在街巷间穿梭徘徊，费了好一番功夫才在一片工地高垒的砖瓦背后发现这幅超脱的画面：</p> 
<p>哥特式的尖塔高耸入蔚蓝的晴天，巨大的玫瑰圆窗上纯白的十字架透着一股绝美的神秘。仿佛一部巨大的羊皮纸圣典垂挂在眼前，以她庄严而肃穆的气质一下子令我忘却视域以外的一切——隔绝音源与触觉，思想与视线与肢体，再不得动弹，唯有仰视，仰视，仰视六十米天空的神秘的冲击。</p> 
<p>我一步步走近，DOMO似乎也为眼前的景象所吸引，用镜头记录眼前与心底颤动的痕迹。我想我是知道了摄影之为艺术的含义：它是以图像的形式传达的艺术情感，如同我瘦弱的文字企图描述丰满的世界，又如眼前这座石头的建筑，炫示着宗教的光彩。</p> 
<p>这光彩在周日吸引来不少游客，几个流浪汉坐在围栏外，拿着破碗等着善心的施舍。</p> 
<p>走进大厅，幽幽的，静穆的气息，如同吊灯下盈盈的灯火，朦胧中透着庄严的意韵，而直挺的线条从柱底一直延伸到高大的屋顶，与圆拱的屋梁与我的仰视的目光交汇的时候，我感到一种臣服于强势的窒息。</p> 
<p>钢琴曲响起，教堂的气势在沉默中悄悄流散而出，从巨大的玻璃窗上氤氲的流光溢彩的壁画，从整齐的石柱间流动的光与影的朦胧。我听到唱诗的女声咿语的梵音。</p> 
<p>摄于教堂内静穆的气氛，游客们小心翼翼地，或埋首默念经文，或起身观瞻壁画，也有嬉笑着按下快门的。我看到主席的背后一幅巨画——洋人和中国官员的画像，在上面。</p> 
<p>ROMA , 1863。</p> 
<p>曾经是两广总督府邸的这块土地，在这一天奠下一块沉重的巨石。</p> 
<p>我怀着一种复杂的情感去仰视十字架上耶稣的面容，于是矛盾的思绪便在他平静的神色中烟消云散了，在祥和的烛光里，我竟提不起半点激昂的念头。</p> 
<p>我看到老人跪在圣母前，叩头。这个姿势我小时候不知看过多少遍，在母亲祭拜神灵的时候。唯一不同的只是最后在胸前划十字而已。我甚至能想象出那几位老妇此刻心中口中碎碎的祷语：“合家平安，万事如意……”不知道为什么，看着她们叩头的样子我就想起小时候，不得不跪在香烛下的时候。随意几句念叨，调皮地看一眼站在一旁的母亲，草草叩几个头，又一溜跑去玩去了。大概祭灵这种事情对于孩子来说，就是有许多退下来的祭品可以享受的日子了吧。</p> 
<p>[singlepic id=19 w=320 h=240 float=center]</p> 
<p>面对熠熠的灯火与瑰丽的七彩流光，十字架下氤氲的空气总让我回忆起童年的想象。</p> 
<p>于是走出侧门，我看到一个小小的庭院，一座假山供着圣母的石像，几棵挂满各种各样小礼盒的杉树，一派圣诞的气氛。走过几个正在跪拜圣母的老妇，忽然听到一束纯净的歌声。</p> 
<p>我心中一阵欢喜，本来我们是错过了弥撒时间的，现在我竟又听到了唱诗班童稚的歌声。这种轻柔与大教堂有些冷酷的静穆相融合，我心中仿佛有一股冰泉缓缓趟过。即使只是听他们练习也是如此，我愈发向往平安夜的弥撒，却未必能有机会再去。</p> 
<p>尽管如此，尽管今天我没有点过圣水，没有合掌祈祷，没有听过弥撒，但是心中的河流涨得满满的，教堂的钟响，稳远而飘渺，一声一声，我立在墙边，钟声里有一种不同于禅寺的神秘，它显得愈发柔媚，与轻纤。</p> 
<p>在教堂呆的时间不长，又拍了几张照，厅内众人的背影让我心中微微有点失望。我在想，如果竟没有这些人在，没有叩拜圣母的老妇，没有神情麻木的男人，没有开着闪光灯嬉笑的情侣，但是他们始终还在。</p> 
<p>就像门外的流浪汉，他们始终是在的。</p> 
<p>我的想象的教堂，也仅仅是想象而已。我走出教堂的时候，仍旧没有给过他们半个硬币，他们也始终没有踏进这座肃穆的教堂半步。</p> 
<p>我回头，一双高耸的尖塔直插入晴朗的天空，残黄的墙壁透着神秘的诡丽，来自1863的言语。</p> 
<p>[singlepic id=35 w=320 h=240 float=center]</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x5B81;&#x9759;&#x4E2D;&#x7684;&#x55A7;&#x95F9;</title>
        <link>https://justinyan.eth.limo/A2F55DC4-064B-4D63-A6E3-D20A9D9BC31C/</link>
        <guid>https://justinyan.eth.limo/A2F55DC4-064B-4D63-A6E3-D20A9D9BC31C/</guid>
        <pubDate>Sat, 15 May 2010 14:30:48 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>树下走过一双轻声戏谑的情侣，青翠的叶间泻落一帘阳光，轻风伴着铃铛，球场上的球网荡着微浪，我在窗内用视角与笔端锁住一窗明夏。
 <!--more--></p> 
<p>许久不曾这样悠闲地面对一整个午后，它在我的视线下微笑，那个青翠的转身与苍茫的摇摆二十年来仿佛不曾变过。</p> 
<p>只是这种宁静并不长久，校园里清扫的大婶们下班了，随意坐在哪儿就毫无顾忌地聊起来。我在宿舍午睡的时候就已经多次受过这种打扰，现在在教室里自习再受一次。</p> 
<p>但是今天的感觉有点不同，我的右首仍旧是青叶扶风，暖阳慵懒，而左首窗下，正是这嘈如闹市的围谈。这反让我生出一种莫名的亲切，我不知道是什么样的机缘把这样貌似不合的场景拼凑在一起，但我心中隐隐感到一丝不妥。</p> 
<p>一直以来，我都以为人应该没有等级之分，人生来平等。所以所谓的官也好，boss也好，主席也好，都应该是与我辈平等的。尽管这仅仅是理想中的想法。只是此刻我为我自己感到讶异了，在我面对这种喧闹而皱眉的时候，难道我紧紧是为她们扰了我的清梦或者断了我的思绪而恼么?</p> 
<p>只怕不是。帝制的华夏几千年，这种所谓的思想的根深蒂固，其实就是从上一辈传下来的。父母、教师担当着教育下一代的责任，倘使他们所教授给我们的是等级之分，那么我们自然也是这种想法。我庆幸我的父母并未过多地干涉我的思想领域，但我相信大部分的父母还是把太多的等级、现实的思想传给了在一代。在他们看来，是为了所谓的适应社会，在我看来，这是对童真的掠夺。</p> 
<p>很久以前，我为了适应社会这句话，丢失了太多，而且再找不回来了。当时我甚至还为我自己的转变而沾沾自喜，但很快我发现我错得很彻底。</p> 
<p>窗外的人大笑了，谈得挺兴奋，大笑。</p> 
<p>这是她们一天的劳作中难得的一点休息的时间。</p> 
<p>我陡然间觉得这种宁静中的喧闹很熟悉，似曾相识，仿佛曾经在更大的地方见到过，只是说不上来。</p> 
<p>枫林月影</p> 
<p>10.03.11/下午</p> 
<p>于教室</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x559C;&#x6B22;&#x5C11;&#x65F6;&#x7684;&#x8FD9;&#x4E00;&#x5E74;</title>
        <link>https://justinyan.eth.limo/24A764CB-5FBA-4805-B20E-FFB90401254B/</link>
        <guid>https://justinyan.eth.limo/24A764CB-5FBA-4805-B20E-FFB90401254B/</guid>
        <pubDate>Sat, 15 May 2010 14:23:10 +0800</pubDate>
        
        
        <description><![CDATA[
            <p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/2009_02_01^7_18_49.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-21" title="2009_02_01^7_18_49" src="http://www.windyshade.com/wp-content/uploads/2010/05/2009_02_01^7_18_49-300x199.jpg" alt="" width="300" height="199" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/2009_02_01^7_18_49-300x199.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/2009_02_01^7_18_49-1024x681.jpg 1024w, https://cdn.justinbot.com/wp-content/uploads/2010/05/2009_02_01^7_18_49.jpg 1159w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p>是怎么回事，这么大的人了还和小孩子一样去“追星”？——喜欢少时快满一年。</p> 
<p>这一年的时间我发现，这种形式的“追星”远不同与那种幼稚的狂热。
 <!--more--></p> 
<p>初次见到少时，是在……找不到东方神起的节目之后。去年的这个时候，是我大学生活的最低谷，当时看了ERIKA的《一升的眼泪》，被感动得稀里哗啦，从此狂热喜欢上ERIKA，进而东方神起，最后转移到少时至今。</p> 
<p>少女时代，韩国9名少女组成的女子组合。必须承认，最初看她们的live，刚好是genie时期，当时我确实是被她们的制服风抓住了。但是这种基于原始欲望的喜欢不可能长久，喜欢少时是另有原因的。在genie之后，一直看她们的节目，听她们的歌，她们的魅力难以阻挡。但是这不是说她们的美貌足以让其他女子Idol集体汗颜，也并不是说她们的歌好听到我一天不听就发疯，其实，她们最为深刻，或者最为深入我心的魅力在于，她们就如同身边的朋友，如同平凡的少女在你身边，欢笑，歌唱，舞蹈，这种平凡令人产生的情感远不同于其他的所谓高高在上的明星，这种平凡令人有一种可以，或者说敢于去“喜欢”的情感。</p> 
<p>出身SM entertament(star musem 明星宫殿，曾经韩国最大的娱乐公司，目前亦是韩国四大娱乐公司之一，曾经出过H.O.T,S.E.S,神话，BOA，东方神起，fly to the sky,天上智喜等等无数天团，目前被日本娱乐公司收购)，少时的歌声与舞蹈的实力绝对毋庸置疑。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/1e6b485987dc21a8810a1813.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-22" title="1e6b485987dc21a8810a1813" src="http://www.windyshade.com/wp-content/uploads/2010/05/1e6b485987dc21a8810a1813-198x300.jpg" alt="" width="198" height="300" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/1e6b485987dc21a8810a1813-198x300.jpg 198w, https://cdn.justinbot.com/wp-content/uploads/2010/05/1e6b485987dc21a8810a1813.jpg 480w" sizes="(max-width: 198px) 100vw, 198px" /></a></p> 
<p>九名少女，leader兼主唱金泰妍，主唱Jessica,副主唱tiffany，副主唱徐贤，以及接下来的sunny，每一个人的唱功都足以傲视韩国乐坛。首先应该明确的是，韩国歌手的实力在亚洲是绝对顶尖的，而能够在韩国乐坛排得上名也就意味着在亚洲都足以称霸。男子天团东方神起，5只的唱功无论放在哪里都是绝对一流，而女子组合方面，少女时代四大主唱的功力也是罕有匹敌。而能够与之匹敌的诸如davichi等实力唱将则又是以唱歌为主，舞蹈实力又差之甚远。</p> 
<p>主唱金泰妍，taeyon，也是我在少时中最喜欢的一位，想要了解她的歌唱实力，只要听听少时专辑里的歌，几乎所有歌曲里背景配乐的高音全是她在担当，再去听她08年两首电视剧OST的SOLO，还有她在电台唱过的无数歌曲，LIVE的实力再不用多说。</p> 
<p>Jessica和tiffany还有徐贤和sunny，歌唱实力也是顶尖，至于其他的成员，则有更为突出的其他方面的能力，歌唱方面就要稍微逊色一些。这与SM公司的选秀制度有关。SM公司常会举办各种选秀活动，选手来自全球各地，主要都是年龄较小的孩子。被选中的孩子会成为公司的练习生，有公开和非公开两种，然后在公司内进行，呃，可以说残酷的训练。SM的练习强度很大，练习生除了平时上课外还要在公司内接受歌唱、舞蹈、语言（主要是日语、英语和汉语）、乐器等各种训练。SM在这方面的投入是完全不惜血本的。这也是社长李秀满（当年韩国乐坛的巨星，引退后创办SM公司，用自己的眼光挑选优秀人才，公司被收购后已不再是社长）的思想所决定：“明星不是天生的，是被制造出来的！”当年HOT就被迫每天练习12小时以上，以致后来，呃忘记是佑赫还是文熙俊说只要一跳舞肩膀就疼得像要断掉。</p> 
<p>所以SM公司的严格的训练才造就了无数的韩国巨星乃至国际巨星。这也使韩国明星在实力上往往与要超过其他亚洲明星许多。少女时代在2007年出道，同期的有wonder girls和kara两个女子组合。WG目前是发展得最好的女团，当然她们转战海外之后在韩国国内活动相对变少，人气也难免被分散了去。而少女时代，07年出道后也是靠着清纯的形象和活泼的歌曲在韩国内赢得很高的人气。但是踏入08年，许多恶意流言，许多ANTI的攻击，许多无聊的绯闻接踵而来，让少时完全沉默了整整9个月。</p> 
<p>当时我记得某天在家看电视的时候看到说某演唱会上全体歌迷静默抵制某女团，还用荧光棒比出“X”的样子来ANTI，当时我还在念高中，对韩流半点不感冒，只是笑笑就过去。后来喜欢上少时后，翻出少时以前的历史来看，才知道那段时间，少时是顶着极大的压力在沉默中隐忍。</p> 
<p>08年那一年，说什么不尊重长辈，说什么撕海报，说什么恶言，天哪，我看到那些可笑的ANTI说的话的时候忽然明白为什么很多人都说“追星”是幼稚而且脑残的行为了。</p> 
<p>ANTI举出的少时的“劣迹”的节目，我基本上都看过，实在荒诞。一个是节目本来就是要搞笑，偶尔有点不敬也是常情，尽管韩国确实是个等级森严的国家，但是节目只是节目，又何必因为一句玩笑就去攻击别人？而撕海报的事情也是fans所为，又与少时何干？又传打人事件，而后来发现是fans造的假新闻，天哪，这都是些什么人哪。我后来想了想，这大概是一种狂热的状态下引发的行为。与几十年前那种狂热的崇拜而导致的现今看来可笑之极又恐怖之极的行为有相似之处。狂热的崇拜加上盲目地追求团体的归属感最终导致盲目的行为，以此来解释这种追逐偶像的部分人的心理应该是可以的。</p> 
<p>曾经我对“哈韩”这个词语挺反感，因为“哈”字隐含的就是这种不理智的狂热的崇拜与追逐。必须承认刚看到少时的时候自己也有这样的狂热过，但是很快就会冷静下来。</p> 
<p>开始好好看少时的节目，在欢笑的同时看到欢笑背后的艰辛，08年那9个月里，少时的歌谣活动不多，更多的是在综艺节目上努力地制造欢笑，再加上泰妍创造了OST榜单神话的《如果》，允儿让全韩国的妇女老太都认识到的形象世碧，少时的08过得艰难，也让所有SONE看到少时坚强的一面，也让我深深地体会到少时对事业，对梦想的坚持。</p> 
<p>进入09年，少时凭借《GEE》的大红和《Genie》的巩固，在09年年末横扫韩国乐坛几乎全部奖项。那个时候，我看到哭得一塌糊涂的少时们，看到捧着无数奖杯的少时们，看到论坛里无数为此激动的sone们，我知道，我是真的成了“追星”的一员了。</p> 
<p>每个星期，不时在论坛上刷屏等待少时的节目，让硬盘塞满少时的各种视频、图片、歌曲，天哪，这种执着于热狂从何而来？</p> 
<p>其实，大概是少时，9只，她们每个人不同的魅力，以及sone(少女时代fans团)，这个充满笑声的集体让所有的sone把喜欢少时当作一种固有的情感保存着。现在我能理解当年喜欢H.O.T的那些人，为什么到了30岁还一直那样喜欢着H.O.T了，那个神话。</p> 
<p>少女时代：泰妍，jessica，sunny，Tiffany，徐贤，允儿，yuri，秀英，孝渊。</p> 
<p>在sone中，称呼9只都会用她们的外号，她们的外号有韩国的fans起的，也有中国的fans起的。9只中，唱功最佳的已经讲过，而舞蹈最强的当然是舞后孝渊，其次是yuri，秀英和徐贤。艺能最强的是sunny，yuri和泰妍。演技当然是允儿，已经出演过几部电视剧，当然也拍过很多CF。而jessica和tiffany是海归，所以英语实力就不用讲了。</p> 
<p>9只固定的节目挺多。出道时tiffany的节目比较多，而允儿则是演戏比较多，当时秀英也和SJ的神通一起主持电台节目。现在的话，9只要准备进军日本，所以基本上固定的节目都要退下了。在退出之前，Sunny和Yuri是《青春不败》节目的固定，泰妍则是在去年SJ的强仁离开后单独主持亲亲电台，徐贤目前在《我们结婚了》节目中和CNBLUE的队长郑容和是假想夫妻，jessica为starking的固定嘉宾，允儿在《家族诞生2》里固定，剩下秀英和孝渊活动相对较少，但也常作为嘉宾出演各种节目。目前9只在为日本活动做准备，所以该退出的节目基本都退了。</p> 
<p>All right，写了这许多话，也实在有点不知所云，其他剩下的吹水的话就下次再写了。</p> 
<p>最后推荐几个找9只资源的地方：</p> 
<p>1、百度少女时代资源总站（一位被称为大神的姐姐般的hi百度，里面有几乎9只从出道至今所有的视频和音频，当然，07的要稍微缺几个视频）</p> 
<p>2、<a href="http://www.snsdforever.com" target="_blank">CCD，抽抽殿</a>。一个论坛，经历某朝互联网整顿风波后，服务器搬到国外，曾被墙过一阵，不过貌似换了独立IP，AD可以正常访问，教育网需要代理（搜狗可行）。论坛基本上会第一时间发布少女的资源，也做几个固定节目的字幕，不过，更重要的，是许多sone集中的地方，在这里能听到许多sone的声音。我最常逛的就是这里了。</p> 
<p>3、<a href="http://www.snsdchina.net/" target="_blank">少女时代中文首站</a>。同样也做字幕，也发资源，但是注册比较麻烦，我就没注册。</p> 
<p>4、<a href="http://bbs.kanhanguo.com" target="_blank">情网部落</a>。情网不是专做少女的，基本上韩国的明星他们都做，所以情网的内容也就很杂，注册不麻烦，但是下载要有积分，而且情网的广告多，所以并不常去。</p> 
<p>5、<a href="http://starkingdj.5d6d.com" target="_blank">强心脏中文网</a>。强心脏这个节目是09年的新节目，开播后反映很好，不过最近我也不怎么看了。强心脏论坛除了做强心脏的字幕外也有做我结的字幕，所以也常来这里逛逛。不过最近强心脏被迫关掉视频下载区，估计他们的服务器或域名都在某朝买的吧。不过关归关，字幕还是有在做的，只是要注册会员，他们通过短消息发布。所以有节目的时候我也会去逛逛。</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/e7ec0ecc342c7b640fb34597.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-23" title="e7ec0ecc342c7b640fb34597" src="http://www.windyshade.com/wp-content/uploads/2010/05/e7ec0ecc342c7b640fb34597-300x168.jpg" alt="" width="300" height="168" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/e7ec0ecc342c7b640fb34597-300x168.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/e7ec0ecc342c7b640fb34597-1024x576.jpg 1024w, https://cdn.justinbot.com/wp-content/uploads/2010/05/e7ec0ecc342c7b640fb34597.jpg 1920w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x6211;&#x7406;&#x89E3;&#x7684;&#x5F00;&#x6E90;&#x8F6F;&#x4EF6;</title>
        <link>https://justinyan.eth.limo/BAAF29EF-A3EE-4164-8989-B64B681DDB49/</link>
        <guid>https://justinyan.eth.limo/BAAF29EF-A3EE-4164-8989-B64B681DDB49/</guid>
        <pubDate>Sat, 15 May 2010 14:21:45 +0800</pubDate>
        
        
        <description><![CDATA[
            <p style="text-align: center;">2010/1/14</p> 
<p>其实我真正才是喜欢上开源软件的时间也不长。大概从我真正才是迷上FF开始吧，渐渐地对开源软件有了更好的理解，感受到它更大的魅力。</p> 
<p>什么是开源软件？这个问题对于刚接触开源软件的人来说还真是常见。在twitter上看到某大牛的tweet：“开放源代码的不一定开源，但开源的一定是开发源代码的。”有点怪异，对吧。
 <!--more--></p> 
<p>对于开源软件(open source software)，就着字面上的理解就是“开发源代码”。但是开源软件不仅仅如此。首先开源软件必须公开源代码，并且开源软件遵守着Bruce Perens（曾是Debian的创始人之一）的定义。具体各位可以参阅维基百科的相关词条。</p> 
<p>另外还有一个概念，自由软件(free software)，是一种可以不受限制地自由使用、复制、研究、修改和分发的软件，具体大家仍可参阅维基百科。</p> 
<p>就定义而言，自由软件仅仅是开放源代码的一种。</p> 
<p>但是就我正在使用的几个开源软件而言，它们确实有着自由的特点。</p> 
<p>Free，可以理解为免费或者自由。在这里要区分一点，开源的软件是免费的，但是免费软件不一定开发源代码。</p> 
<p>废话了这么多， 其实只为给开源软件一个相对清晰的定义。我正在使用的开源软件主要有：Firefox，foobar，Kmplayer，wordpress。</p> 
<p><strong><span style="color: #0000ff;">经过hitmax的指正，在这里特地更正一下，foobar2000不是开源软件，它只是有相当部分的组件开源，本身是不开源的，除了开发团队，外界是很难拿到它的代码的，我把它误认为开源是我搞错了～</span></strong></p> 
<p>对于开源软件的魅力，不用说，免费在其中，但是“自由”才是重点。</p> 
<p>对于FF和Foobar2000而言，它们都有一个巨大的特点：拥有硕大的插件库。</p> 
<p>我曾经推荐过几位童鞋去下载FF和foobar2000，但是大家用过后很多都跟我说这东东不好用。其实，很简单，单纯的FF和Foobar200甚或单纯的linux内核，当然不好用。这些开源软件的最大的优势在于它们拥有着广大的社区，拥有者众多的优秀的插件，我刚说了开源软件最大的魅力在“自由”。你想要什么功能就去使用什么插件，不要什么功能就禁用掉。所有的插件全部免费并且开源。所以，如果你找不到自己想要的插件，完全可以自己开发。这就是开源软件最大的魅力。</p> 
<p>同时，这也是我觉得的，开源软件相对的缺点之一。对于普通用户而言，他们不懂得怎样去配置开源软件不懂得怎样去下载插件，更不用说开发。他们要的是一个完全打包好的，方便他们使用的完整的软件。所以，开源软件有自己的开源社区，为这些用户服务。</p> 
<p>在开源社区，你可以发布自己修改了的或者配置好的开源软件，完全没问题，或者贡献自己的写的开源代码。很多人不用KMplayer而使用QQ影音，有个问题就是QQ影音已经傻瓜化地把功能打包好，而KMplayer还要自己配置。其实选择高度自由的开源软件还是已经配置好的免费软件，我觉得就跟使用傻瓜照相机和专业摄影相机一样。想拍出好的效果当然要用专业相机，但为此你需要先学习使用摄影相机并且相关摄影知识。但是我觉得，即便是开源软件有个更大的好处，在开源社区，你可以下载到社区中别人配置好的软件。所以，从这点上，以后我在推荐软件的时候，会直接推荐别人到社区去下载或者干脆把我配置好的发给他。开源软件的思想我觉得跟WEB2.0的核心“分享”，有异曲同工之妙。OK，写完这篇开源软件开篇，往后再写多两篇介绍开源软件的文章。并且提供社区、官网以及我自个儿配置好的软件给大家下载~！！</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x63A8;&#x8350;&#x4F18;&#x79C0;&#x5F00;&#x6E90;&#x8F6F;&#x4EF6;&#x2014;&#x2014;F00bar2000&#x64AD;&#x653E;&#x5668;</title>
        <link>https://justinyan.eth.limo/7C8244A8-E537-4B98-ABA5-AFFD9469883A/</link>
        <guid>https://justinyan.eth.limo/7C8244A8-E537-4B98-ABA5-AFFD9469883A/</guid>
        <pubDate>Sat, 15 May 2010 14:18:59 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>推荐优秀开源软件——F00bar2000播放器</p> 
<p><a href="http://www.windyshade.com/wp-content/uploads/2010/05/foobar2000.jpg"><img decoding="async" loading="lazy" class="aligncenter size-medium wp-image-13" title="foobar2000" src="http://www.windyshade.com/wp-content/uploads/2010/05/foobar2000-300x219.jpg" alt="" width="300" height="219" srcset="https://cdn.justinbot.com/wp-content/uploads/2010/05/foobar2000-300x219.jpg 300w, https://cdn.justinbot.com/wp-content/uploads/2010/05/foobar2000.jpg 558w" sizes="(max-width: 300px) 100vw, 300px" /></a></p> 
<p style="text-align: center;">2010/1/14</p> 
<p>OK，接着上一篇胡乱讲了几句关于开源软件的话之后，现在开始推荐几个优秀的开源软件，首先是开源的音乐播放器——Foobar2000。</p> 
<p>
 <!--more--></p> 
<p>Foobar的版本号可真是开创低版本号之纪元，都8年了，才将版本号由测试版正式升级到正式版1.0，令广大Foobar Fans内牛满面。</p> 
<p>对比我之前用过的播放器：Winamp，千千静听，酷狗，QQ播放器，最终敲定Foobar。诚然，上述几个播放器均是免费软件，而我当初选择Foobar的原因之一也是因为它是开源的。但是，用过Foobar这么久以后，我说：“Foobar2000是我用过的最佳的音乐播放器。”</p> 
<p>如我之前一篇文章所说，开源软件最大的魅力在“自由”，它有自己的庞大的社区支持者这个开源软件。跟FF一样，Foobar2000也拥有数量可观的插件库，这些插件包括了：音质、UI(即用户界面)、操控等多个方面。选择自己想要的插件，你可以完全自由地掌控Foobar。</p> 
<p>我最初使用Foobar的时候也是不知道该怎么办，下载了个白板的Foobar，没有自己安装其他插件，除了知道这个东东可以用来播放外，真不知道还有什么用处。</p> 
<p>所以首先推荐大家去Foobar2000的社区，这里我推荐一个中文社区：Foobar2000中国爱好者社区。社区里有许多大牛，有许多好帖告诉大家如何根据自己的电脑去配置自己的Foobar。这里附上一位大牛博客的博文一篇，大家想更好的了解Foobar2000可以到这里：http://xbeta.info/foobar2000.htm</p> 
<p>对于普通用户而言，大概连改善音质都懒得去做，所以这里我提供一个我自己配置过的Foobar，当然，我的配置也是根据社区大牛推荐的文章区做的。另外也安装了两个FCL的皮肤，都是极绚丽的。更换方法请看下文。</p> 
<p>我配置的Foobar：</p> 
<p>我用的是Foobar2000中国爱好者社区提供的插件集合，具体包括了哪些插件大家可以看这里<a href="http://www.foobar2000.com.cn/showtopic-10074.html">http://www.foobar2000.com.cn/showtopic-10074.html</a></p> 
<p>下面我给出几个对普通用户来说比较关注的插件：</p> 
<p>1、  <strong>歌词秀</strong>。选择千千静听等播放器的其中一个原因想来是歌词支持。Foobar2000也有歌词支持的插件库，并且支持在线搜索，自动搜索，自动关联，或者自动内嵌歌词。</p> 
<p>2、  <strong>分栏用户界面</strong>。Foobar2000本身是一个追求效率的播放器，作者原先是winamp的插件设计师，后来不满于winamp的架构以及越来越倾向于皮肤的趋势，自己写了Foobar2000播放器。所以整体而言，你看到的Foobar2000是简洁的播放器，但这不意味着你就不能美化它。</p> 
<p>我算是挺关注软件UI的，所以比较追求美化软件界面。</p> 
<p>使用分栏用户界面插件，即foo_ui_columns，你就可以在网上下载使用别人已经写好的FCL皮肤。</p> 
<p>PS：此前我一直用PUI框架的皮肤，很炫，但是<em>Foobar</em>的官方在0.9.5.3版开始，去除了对<em>PUI</em>插件的<em>支持</em>（同时也去除了很多其他插 件的<em>支持</em>），<em>PUI</em>从此不能在<em>Foobar</em>上使用。</p> 
<p>下载地址：</p> 
<p>官网：</p> 
<p>Foobar2000中国爱好者社区：</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x96BE;&#x5F97;&#x7684;&#x7D6E;&#x53E8;</title>
        <link>https://justinyan.eth.limo/709BCFF7-6914-4B2E-B9BF-891B0161E53A/</link>
        <guid>https://justinyan.eth.limo/709BCFF7-6914-4B2E-B9BF-891B0161E53A/</guid>
        <pubDate>Sat, 15 May 2010 14:16:25 +0800</pubDate>
        
        
        <description><![CDATA[
            <p>难得的絮叨</p> 
<p>人越长大，越忙碌奔波于各种凡尘俗事，以至于现今想悠闲的望月听风亦称了一种奢望。现今我乱涂的这几点莫及，也便是一种难得的絮叨了。
 <!--more--></p> 
<p>在图书馆里随手翻书，临窗望见许多行走的忙碌的生命，忽然想起故乡的潮湿的天气来。每到三月这时节，家里的墙总是要潮的，衣服也是越晾越湿的。</p> 
<p>三月的风有点凉但不冷，三月的风有点湿但挺惬意。</p> 
<p>我很小便从老家搬到城里住，住了几年又搬到另一个村子住，如今在那个村子已经住了十多年，现在又在广州念书。浮萍一般的漂移让我从未对自家住的地方有多少归属感。</p> 
<p>在那个村子的小学里念书的大都是村子里的孩子，他们了解村子里的各种事情，认识各式各样的人，唯独我清楚。记得小时候老师让写作文，关于改革开放以来村子的变化的，我脑子一片空白，虽然父亲帮着讲了一些，但始终还是没写好。</p> 
<p>每年回到老家探望爷爷奶奶，总有其他的长辈要问我是否记得什么人什么事，这种时候我总是傻笑。两岁以前的记忆是那样朦胧，我只记得奶奶劝我吃饭的一个场景以及看着天井的鸡啄食的画面，除此再无法记清。也是因此被长辈们问得怕了，至今仍有后遗症在。</p> 
<p>曾经站在老家天台看山，只觉得这是一片陌生而宁静的天地；曾经在自家的阳台望月，只觉得自己仿佛月舟上摇橹孤行的艄公，在深深的夜海里独自划行。现在我坐在图书馆里看着窗外的湖水，波涟荡向远方的绿荷，这里的每一砖每一瓦都不是我记忆的根苗，我又忽然想起海外的寻根的文人，他们或许比我要幸运的多，他们有根可寻，我却不知何处寻根。</p>
        ]]></description>
    </item>
    
    <item>
        <title>&#x65B0;&#x535A;&#x5BA2;&#x4E0A;&#x7EBF;&#xFF5E;</title>
        <link>https://justinyan.eth.limo/E64DB530-6836-41C9-9D52-5141C3FB53CF/</link>
        <guid>https://justinyan.eth.limo/E64DB530-6836-41C9-9D52-5141C3FB53CF/</guid>
        <pubDate>Sat, 15 May 2010 14:14:12 +0800</pubDate>
        
        
        <description><![CDATA[
            <blockquote>
 <p><strong>文学新作：</strong><span style="color: #000000;"><strong><a href="../2010/05/16/%e5%a4%b1%e9%9f%b3%e5%90%89%e4%bb%96/" target="_self">新博上线，新作推荐——小说《失音吉他》～！！</a></strong></span></p> 
 <ul> 
  <li><span style="color: #3366ff;"><span style="color: #000000;">[诗歌]<a rel="bookmark" href="http://www.windyshade.com/2010/05/22/%e6%80%a5%e7%9d%80%e5%90%ac%e8%a7%81/">急着听见</a></span></span><strong><span style="color: #3366ff;"><br /> </span><strong> </strong></strong></li> 
 </ul> 
 <p><strong>技术新文：<a rel="bookmark" href="../post/341">JQuery——lightbox效果</a></strong></p> 
 <ul> 
  <li><strong><a rel="bookmark" href="../2010/05/25/%e7%94%a8css3%e5%86%99%e5%87%bahello-world/">用CSS3写出Hello World!</a></strong></li> 
  <li><a rel="bookmark" href="http://www.windyshade.com/2010/05/22/%e8%b6%8a%e7%8b%b1%e5%90%8e%e5%bf%85%e7%9c%8b%e5%90%8e%e7%bb%ad%e7%af%87%e2%80%94%e2%80%94%e9%99%84%e8%bd%af%e4%bb%b6%e7%bd%91%e7%9b%98%e4%b8%8b%e8%bd%bd/">越狱后必看后续篇——[附软件网盘下载]</a></li> 
  <li><a rel="bookmark" href="http://www.windyshade.com/2010/05/16/%e8%8b%b9%e6%9e%9c%e5%bc%ba%e5%8a%b2%e7%9a%84ppc%e2%80%94%e2%80%94%e8%a7%a3%e5%b0%81%e4%bd%a0%e7%9a%84iphoneitouch/">越狱后必看——改造iphone&amp;itouch，让它成为强劲PPC！！[软件附网盘下载]</a></li> 
  <li><a rel="bookmark" href="../2010/05/21/iphone-itouch-%e7%83%a6-q1ang%e6%94%bb%e7%95%a5/">iPhone &amp; iTouch 烦 q1ang攻略</a></li> 
  <li><a rel="bookmark" href="http://www.windyshade.com/2010/05/21/%e8%a7%a3%e5%86%b3javascript%e5%87%bd%e6%95%b0%e9%bb%98%e8%ae%a4%e5%8f%82%e6%95%b0%e9%97%ae%e9%a2%98/">解决Javascript函数默认参数问题</a></li> 
  <li><a rel="bookmark" href="../2010/05/20/google-fonts%e4%b8%8a%e7%ba%bf%e2%80%94%e2%80%94%e7%bd%91%e9%a1%b5%e8%ae%be%e8%ae%a1%e5%b8%88%e7%9a%84%e7%a6%8f%e9%9f%b3/">设计师的福音：Google fonts上线——枫影亲测</a></li> 
 </ul> 
 <p><strong> </strong></p> 
 <p><strong>新闻翻译： <span style="color: #0000ff;">回家一周没网络，回家期间IOS4全设备已越狱，现在要着手准备写博文了<br /> </span></strong></p>
</blockquote> 
<p>
 <!--more--></p> 
<p>很杯具在2009年某朝网络大风波的前夕，上线了我当时完成的个人站萤火之夏，并且杯具地用了某朝的服务器和某特定域名，结果我的个人站在2010年就完全Game Over了。这场风波严重打击，哦不，应该说毁灭了无数某朝站长对某朝的残存的一丁半点的信任。</p> 
<p>于是我也顺应时代的发展，顺应世界的潮流，搬家到这里了。</p> 
<p>到新的地方，旧的数据我没保存挺遗憾，不过反正我也要重新写过的，以文学、技术、音乐三项为主，另加我们的新工作室whisper studio的文章，新博客要好好写下去～！并且我们的开源工作室whisper之道将上线官网，发布工作室开发的开源软件，目前whisperstudio.com只有一个说明页面，敬请期待～！</p> 
<blockquote>
 <p><strong>域名 windyshade.com，windy 即 风, shade 即 影</strong>，mapleshade 已经被注，所以就用了 windy 顶替，请大家以后也多多来我的小窝逛逛啊～！</p>
</blockquote> 
<p>另外，</p> 
<blockquote>
 <p>LOGO是临时乱画的，晚点把whisper之道的logo画出来之后就直接用那个</p>
</blockquote> 
<p>最后，呃……希望我的网站在某朝能visible 久一点。</p>
        ]]></description>
    </item>
    
</channel>
</rss>
