<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>三十七度一</title>
  
  <subtitle>临渊羡鱼 退而织网</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="https://ultrarex.com/"/>
  <updated>2019-06-07T09:20:52.075Z</updated>
  <id>https://ultrarex.com/</id>
  
  <author>
    <name>Ray Young</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>树莓派散热方案</title>
    <link href="https://ultrarex.com/p/2b96.html"/>
    <id>https://ultrarex.com/p/2b96.html</id>
    <published>2019-06-07T09:59:01.000Z</published>
    <updated>2019-06-07T09:20:52.075Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>虽然树莓派是一个高度集成的单片机电脑，但每当任务稍微繁重的时候它所产生的热量却不容小觑。众所周知，一旦硬件设备热起来，它的性能势必会受到些许影响。</p><p>为了解决这个问题，我决定给它加装一个散热风扇，是的没错，一个散热风扇。麻雀虽小五脏俱全，树莓派的各种配件极为丰富。</p><p><img src="/img/raspberry-fan.png" alt></p><h2 id="硬件清单"><a href="#硬件清单" class="headerlink" title="硬件清单"></a>硬件清单</h2><ul><li><p>树莓派</p></li><li><p>3mm 风扇 or 5mm 风扇</p></li><li><p>树莓派保护壳（带风扇位）</p></li><li><p>散热片（可选）</p></li></ul><h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><p>安装十分简单就不再赘述。</p><h2 id="风扇自动起停"><a href="#风扇自动起停" class="headerlink" title="风扇自动起停"></a>风扇自动起停</h2><p>正所谓：风扇易加，噪音难消。往往树莓派的温度并不是很高，风扇却全速运行，产生比较高分贝的噪音。那么有没有一种方式可以根据树莓派的温度来控制风扇的转速呢？答案是：有的。</p><p><img src="/img/raspberry-fan-relay.jpg" alt></p><h3 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h3><ul><li><p>单路继电器</p></li><li><p>杜邦线（公对母）若干</p></li><li><p>一个 python 脚本，用于控制风扇起停</p></li></ul><h3 id="操作"><a href="#操作" class="headerlink" title="操作"></a>操作</h3><p><img src="/img/raspberry-fan-relay-connection.jpg" alt="连线示意图"></p><p>请忽略我丑丑的字，看图，哈哈。</p><p>连接完毕后，我们就可以编写 python 脚本来控制风扇了。</p><p>直接上源码</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">import</span> time</span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    <span class="keyword">import</span> RPi.GPIO <span class="keyword">as</span> GPIO</span><br><span class="line"><span class="keyword">except</span> RuntimeError:</span><br><span class="line">    print(<span class="string">"Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script"</span>)</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">cpu_temp</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="keyword">with</span> open(<span class="string">"/sys/class/thermal/thermal_zone0/temp"</span>, <span class="string">'r'</span>) <span class="keyword">as</span> f:</span><br><span class="line">        <span class="keyword">return</span> float(f.read())/<span class="number">1000</span></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">main</span><span class="params">()</span>:</span></span><br><span class="line">    channel = <span class="number">16</span></span><br><span class="line">    GPIO.setmode(GPIO.BOARD)</span><br><span class="line">    GPIO.setwarnings(<span class="literal">False</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># close air fan first</span></span><br><span class="line">    GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)</span><br><span class="line">    is_close = <span class="literal">True</span></span><br><span class="line">    <span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line">        temp = cpu_temp()</span><br><span class="line">        <span class="keyword">if</span> is_close:</span><br><span class="line">            <span class="keyword">if</span> temp &gt; <span class="number">45.0</span>:</span><br><span class="line">                <span class="keyword">print</span> time.ctime(), temp, <span class="string">'open air fan'</span></span><br><span class="line">                GPIO.output(channel, GPIO.HIGH)</span><br><span class="line">                is_close = <span class="literal">False</span></span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="keyword">if</span> temp &lt; <span class="number">38.0</span>:</span><br><span class="line">                <span class="keyword">print</span> time.ctime(), temp, <span class="string">'close air fan'</span></span><br><span class="line">                GPIO.output(channel, GPIO.LOW)</span><br><span class="line">                is_close = <span class="literal">True</span></span><br><span class="line"></span><br><span class="line">        time.sleep(<span class="number">2.0</span>)</span><br><span class="line">        <span class="keyword">print</span> time.ctime(), temp</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line">    main()</span><br></pre></td></tr></table></figure><p>大致原理就是通过树莓派系统文件 <code>/sys/class/thermal/thermal_zone0/temp</code> 读取 CPU 温度，再设定温度阈值并对应 GPIO 针脚的高低电平，从而通过继电器来控制风扇起停。</p><p>一切准备就绪，我们就可以运行脚本，来进行测试。不出意外，当树莓派任务“繁重”的时候，风扇也高速运转。</p><p>实际测试下来，未加装风扇时，树莓派 CPU 温度 60+ 摄氏度，加装 3mm 风扇，树莓派 CPU 温度在 40 摄氏度左右，5mm 风扇在 30 摄氏度左右。而风扇也像被驯服的野马很少发出那种嘶吼的噪音来。</p><p>此外，该脚本在树莓派重启后不自动运行，那么我们可以在 <code>/etc/rc.local</code> 文件中，<code>exit 0</code> 这一行前，加一行 <code>python /the/path/of/autofan.py &amp;</code>。这样每次重启树莓派的时候系统就自动在后台运行该脚本了，做到自动监控，自动起停，哈哈。</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="硬件" scheme="https://ultrarex.com/categories/%E7%A1%AC%E4%BB%B6/"/>
    
    
      <category term="树莓派" scheme="https://ultrarex.com/tags/%E6%A0%91%E8%8E%93%E6%B4%BE/"/>
    
  </entry>
  
  <entry>
    <title>从 0 初始化一个树莓派</title>
    <link href="https://ultrarex.com/p/df4c.html"/>
    <id>https://ultrarex.com/p/df4c.html</id>
    <published>2019-06-07T08:06:34.000Z</published>
    <updated>2019-06-07T09:35:24.941Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h2 id="背景知识"><a href="#背景知识" class="headerlink" title="背景知识"></a>背景知识</h2><h3 id="树莓派是什么"><a href="#树莓派是什么" class="headerlink" title="树莓派是什么"></a>树莓派是什么</h3><p><img src="/img/Raspberry_Pi_B+_top.jpg" alt="- Lucasbosch -"></p><blockquote><p><a href="https://www.raspberrypi.org" target="_blank" rel="noopener">树莓派</a>（英语：Raspberry Pi），是一款基于 Linux 的单片机电脑。它由英国的树莓派基金会所开发，目的是以低价硬体及自由软体促进学校的基本电脑科学教育。<br>—— Wikipedia</p></blockquote><h2 id="所需清单"><a href="#所需清单" class="headerlink" title="所需清单"></a>所需清单</h2><ul><li><p>树莓派</p></li><li><p>SD 卡一枚</p></li><li><p>电脑一台</p></li></ul><h2 id="安装系统"><a href="#安装系统" class="headerlink" title="安装系统"></a>安装系统</h2><ol><li>下载系统</li></ol><p>获取途径包括但不限于：<a href="https://www.raspberrypi.org/downloads/" target="_blank" rel="noopener">官网</a>。也有非常丰富的第三方系统，用于特定的场景。</p><p>这里以 Raspbian （官方系统）为例，下载好后，得到一个名如 <code>2019-04-08-raspbian-stretch.zip</code> 的压缩包，解压得到名如 <code>2019-04-08-raspbian-stretch.img</code> 的镜像文件。</p><ol start="2"><li>烧录系统</li></ol><p><img src="/img/balenaEtcher.png" alt="balenaEtcher"></p><p>推荐使用 balenaEtcher(Etcher) 软件，只需要三步就可以完成系统的烧录。选择所需要烧录的将镜像文件，选择目标盘，点击烧录，完成。</p><h2 id="后续准备"><a href="#后续准备" class="headerlink" title="后续准备"></a>后续准备</h2><p>系统烧录完成，还不算完。为了可以更加方便的使用树莓派，我们需要开启 SSH 和设置它所需要连接的 Wi-Fi 网络（如果没有有线环境或者不想使用网线）。</p><ol><li>开启 SSH</li></ol><p>很简单，用电脑打开 SD 卡根目录，然后创建名为 <code>ssh</code> 的空文件，无需填写任何内容。</p><ol start="2"><li>设置 Wi-Fi</li></ol><p>在 SD 卡根目录下，创建名为 <code>wpa_supplicant.conf</code> 的文件，写入如下内容</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">country=SE</span><br><span class="line">ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev</span><br><span class="line">update_config=1</span><br><span class="line"> </span><br><span class="line">network=&#123;</span><br><span class="line">    ssid=<span class="string">"无线链接的 SSID"</span></span><br><span class="line">    psk=<span class="string">"无线密码"</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>保存。</p><p>当这些操作完成后，树莓派启动后，我们就可以通过 SSH 的形式，连接到我们的树莓派了。无需显示器、键盘等输入输出设备。</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="硬件" scheme="https://ultrarex.com/categories/%E7%A1%AC%E4%BB%B6/"/>
    
    
      <category term="树莓派" scheme="https://ultrarex.com/tags/%E6%A0%91%E8%8E%93%E6%B4%BE/"/>
    
  </entry>
  
  <entry>
    <title>美区 Apple ID 注册指北</title>
    <link href="https://ultrarex.com/p/5113.html"/>
    <id>https://ultrarex.com/p/5113.html</id>
    <published>2019-05-01T06:25:04.000Z</published>
    <updated>2019-05-01T06:33:38.632Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><blockquote><p>人人都需要一个美区 Apple ID 账号，你或许不以为然，只是你还不知道什么时候需要<br>—— 夏索得·锐</p></blockquote><p>创建美区 Apple ID 账号其实和国区的没有什么本质上的不同，只不过在于所需要准备的东西稍有不同，你完全可以在做好准备工作之后按照苹果大陆官网注册账号的<a href="https://support.apple.com/zh-cn/HT204316" target="_blank" rel="noopener">指引</a>来进行注册。</p><h3 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h3><ol><li>一部 iOS 设备、一台电脑（不是必须）</li><li>邮箱</li><li>美国地址</li><li>美国的手机号（Google Voice、TextNow 或者 LycaMobile 美国手机卡等均可）</li></ol><p>其中，美国地址个人推荐使用你的美国转运地址，方便快捷。如果没有也可以网络搜索美国地址生成器进行生成。手机号可以通过注册 TextNow、Google Voice 等虚拟号码服务的方式来获取，不过都需要科学的方式。除此之外，还有一种廉价且可以真实拥有的方案——LycaMobile 手机卡，至于怎么获取你可以到万能的 XX 上一探究竟，注意不要购买旅行社的旅游卡，该卡一般预设了套餐，成本较高。</p><p><img src="/img/lycamobile.jpg" alt></p><h3 id="注册步骤"><a href="#注册步骤" class="headerlink" title="注册步骤"></a>注册步骤</h3><p>一切准备就绪，即可开始注册。注册方式有多种，你可以在 iOS 设备的设置中进行创建，也可以通过 App Store 或 iTunes 来创建，还可以直接打开 <a href="https://appleid.apple.com/" target="_blank" rel="noopener">Apple ID 网站</a> 进行创建。</p><p><img src="/img/appleid_1.jpg" alt></p><p>这里我选择通过网站创建的方式进行演示，其他方式大同小异。首先用浏览器打开 Apple ID 网站，选择  Create Your Apple ID （创建 Apple ID），并根据提示填写你的相关信息和密保信息。这里需要注意的是由于我们是要注册美区账号，所以  COUNTRY / REGION  一栏需要选择美国。</p><p><img src="/img/appleid_2.jpg" alt></p><p>一切准备妥当，然后点击继续。</p><p><img src="/img/appleid_3.jpg" alt></p><p>输入邮箱中收到的验证码，再次点击继续即可完成创建。</p><p><img src="/img/appleid_4.jpg" alt></p><p>至此，注册美区账号只完成了第一阶段，接下来第二阶段需要验证该账号。</p><h3 id="验证账号"><a href="#验证账号" class="headerlink" title="验证账号"></a>验证账号</h3><p><img src="/img/appleid_5.jpg" alt></p><p>用你的 iOS 设备登录刚注册的 Apple ID 账号。账号密码输入正确点击登录后，不出意外会出现一个提示验证的弹窗，点击验证。</p><p><img src="/img/appleid_6.jpg" alt></p><p>在该弹窗中请再次确认国家/地区是否是美国，并同意用户许可，进行下一步——绑定支付方式。</p><p><img src="/img/appleid_7.jpg" alt></p><p>这一步可以说是整个注册流程中的重点。美区支持的支付方式有三种：银行卡/信用卡、美区 PayPal、无。之前银行卡/信用卡是支持大陆发行的外币单币卡、双币卡以及全币卡的，可能是由于大陆注册的人数过多，苹果做了限制已不再支持。同样美区 PayPal 内绑定的是前述的几种卡也是不支持的。可见什么都要趁早，最简单便捷的方式就是这个“无”了，哈哈哈。</p><p>接下来就是账单信息、地址（准备的美国地址）以及电话号码（准备的美国电话号码），填写完毕，下一步，验证成功。至此你就可以享受你的美区 Apple ID 了，如果需要购买 App 或其他内容，可以到美国官网购买 iTunes Gift Card，然后兑换，巧的是购买礼品卡是支持大陆发行的外币单币卡、双币卡以及全币卡的，你说巧不巧。</p><h3 id="意外"><a href="#意外" class="headerlink" title="意外"></a>意外</h3><p>意外时有发生么，这里也不意外。如果你的支付方式里没有“无”这个选项，不要惊慌，可能是苹果通过网络环境判断你不在美国。你可以拨打大陆地区的 Apple 服务热线，找人工客服阐述你遇到的问题——注册美区账号无法成功绑定支付方式，他们会非常热情地配合你解决问题，并由专员在后台进行操作，让你的支付方式里有“无”这一选项。当然如果你事先准备了美国的云梯，顺利的话是会有“无”的，没有也没关系。</p><h3 id="大功告成"><a href="#大功告成" class="headerlink" title="大功告成"></a>大功告成</h3><p><img src="/img/appleid_8.jpg" alt></p><p>请尽情享受美区 Apple ID 带给你的快乐吧～</p><center>- END -</center>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="技术" scheme="https://ultrarex.com/categories/%E6%8A%80%E6%9C%AF/"/>
    
      <category term="Mac Tips" scheme="https://ultrarex.com/categories/%E6%8A%80%E6%9C%AF/Mac-Tips/"/>
    
    
      <category term="Apple ID" scheme="https://ultrarex.com/tags/Apple-ID/"/>
    
  </entry>
  
  <entry>
    <title>使用 Automator 上传图片到 sm.ms（再版）</title>
    <link href="https://ultrarex.com/p/2358.html"/>
    <id>https://ultrarex.com/p/2358.html</id>
    <published>2019-04-27T04:05:48.616Z</published>
    <updated>2019-04-27T12:44:42.549Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p><img src="https://i.loli.net/2017/09/12/59b745a6f0eaa.jpg" alt="Sunrise form Zoommy"></p><p>历史性时刻！作为一个渣渣程序员写的<a href="http://ultrarex.com/2017/08/21/use-Automator-upload-images-to-sm-ms/">博文</a>有人和我互动啦（撒花 奔跑 跳跃），这感觉就像清晨的第一缕阳光，让人倍感温暖。鉴于<a href="http://ultrarex.com/2017/08/21/use-Automator-upload-images-to-sm-ms/">上篇</a>写的实在是笼统，且 Shell 脚本没有单独粘贴出来，导致只看截图并不能完成该服务，那么这篇再仔细写一下吧（其实曾打算上一篇就好好写的，但是懒就仓促收尾  逃）。</p><p>关于 <em>sm.ms</em> <em>图床</em> 就不多作介绍了， <em>hexo</em> <em>Markdown</em> <em>Github</em> <em>搭建博客</em> 我打算以后再写一写。</p><p>好了，正文开始。</p><p>打开 <a href="https://sm.ms/" target="_blank" rel="noopener">sm.ms 官网</a>我们可以看到如下的网页。</p><p><img src="https://i.loli.net/2017/08/21/599ab25a8ce9a.png" alt="sm.ms"> </p><p>首先印入眼帘的是其提供了 web 上传的方式，只需要简单的拖拽需要上传的图片就可以完成上传，上传成功之后也提供了几种常见的需求场景的文本格式。</p><p><img src="https://i.loli.net/2017/09/12/59b74a049dfb8.png" alt="sm.ms uploaded"></p><p>这种方法固然比较便捷，但是对于我来说还是有些许的不方便，我的理想方法是在 Finder 中选中，右键直接上传，并将图片链接生成 Markdown 格式 <code>![image_alt](image_url)</code> 便于在 Markdown 文中直接粘贴。</p><p>我们抬眼看网页的右上角，发现 sm.ms 提供了相关的 API ，这下离我的设想就又近了一步。</p><p><img src="https://i.loli.net/2017/09/12/59b74d9126501.png" alt="sm.ms API"></p><p>我们可以看到 sm.ms 提供了三个 API 分别是：</p><ul><li>图片上传</li><li>上传历史</li><li>清除历史上传</li></ul><p>我只关心上传，所以今天只介绍图片上传。</p><table><thead><tr><th>功能</th><th>上传图片接口</th></tr></thead><tbody><tr><td>HTTP 请求方式</td><td>POST</td></tr><tr><td>URL</td><td><a href="https://sm.ms/api/upload" target="_blank" rel="noopener">https://sm.ms/api/upload</a></td></tr></tbody></table><p>查看文档后，我们看到上传的 URL 为 <code>https://sm.ms/api/upload</code> 请求方式为 POST ，需要三个参数，其中有两个是可选的，可以根据需求自行决定是否需要可选参数。我们先用 <em>终端</em> 来做一个简单的测试。</p><p><img src="https://i.loli.net/2017/09/12/59b752a38a2fc.png" alt></p><p>可以看到返回了一个 json 格式的字符串，根据文档的返回数据说明，证明我们测试成功了。那么接下来就是如何将返回的 json 数据 转化为所需的 Markdown 格式了。根据文档我们可以知道 json 字符串中 url 字段是图片在服务器上的地址，所以我们过滤出 url 然后拼接成 Markdown 格式 <code>![image_alt](image_url)</code> 是不是就可以了呢，接着做一个实验。</p><p><img src="https://i.loli.net/2017/09/12/59b75571732d4.png" alt></p><p>通过观察返回的 json 字符串，可以发现 url 的格式为 <code>http[s]*.*</code> 直接简单粗暴的 grep 出所需的的文本（当然我这里没有考虑异常情况，你可以拓展一下，增强程序的健壮性）。</p><p>好，既然测试没有什么问题，那么就用 Automator 来实现我的目标吧。</p><p>打开 Automator 新建 服务：</p><p><img src="https://i.loli.net/2017/08/21/599ab600bdc9c.png" alt></p><p>因为是上传图片，所以“服务“收到选定的类型选图像文件，这样只有在图像文件右键才会出现我们创建的服务：</p><p><img src="https://i.loli.net/2017/08/21/599ab65092015.png" alt></p><p>然后在“实用工具”中，找到“拷贝至剪切板”拖拽到工作流程，该步可以获取选中的图片路径。</p><p><img src="https://i.loli.net/2017/09/12/59b75ac340835.png" alt></p><p>可以点击右上角的运行，测试一下，点击后可以看到一个弹出框：</p><p><img src="https://i.loli.net/2017/09/12/59b75afea049e.png" alt></p><p>此服务在 Automator 内运行时将不会接收输入信息。若要使用 Automator 来测试此服务，请将“获得指定的 Finder 项目”操作添加到工作流程的开始。若要在 Automator 外运行，请先移除或停用此操作。按提示操作将“获得指定的 Finder 项目”拖拽到工作流程:</p><p><img src="https://i.loli.net/2017/09/12/59b75b5e097f5.png" alt></p><p>然后添加几个图片文件，点击运行：</p><p><img src="https://i.loli.net/2017/09/12/59b75bcb3ca39.png" alt></p><p>可以看到在“拷贝至剪切板”的结果中我们已经有了图片的路径信息，那么接下来只需要通过 curl 上传即可，接下来在“实用工具”中找到“运行 Shell 脚本”操作并拖拽到工作流程中：</p><p><img src="https://i.loli.net/2017/09/12/59b75c28049bf.png" alt></p><p>然后将“拷贝至剪切板”的结果作为参数传入“运行 Shell 脚本”操作中，即在“运行 Shell 脚本”的右上角的传递输入选择作为自变量。然后在输入框中输入上传的 Shell 脚本：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">jsonRet=<span class="string">""</span></span><br><span class="line"><span class="keyword">for</span> f <span class="keyword">in</span> <span class="string">"<span class="variable">$@</span>"</span></span><br><span class="line"><span class="keyword">do</span></span><br><span class="line">jsonRet=<span class="variable">$&#123;jsonRet&#125;</span>$(curl -F smfile=@<span class="variable">$f</span> https://sm.ms/api/upload)<span class="string">"\n"</span></span><br><span class="line"><span class="keyword">done</span></span><br><span class="line"><span class="built_in">echo</span> <span class="variable">$jsonRet</span></span><br></pre></td></tr></table></figure><p>这里有必要说明一下，之所以用 for 循环，是因为我们可能一次选择多张图片，所以遍历多张图片的路径依次上传。其中 <code>jsonRet</code> 是为了保存多张图片的上传结果并方便以后的处理。</p><p>接下来再次拖拽一个“运行 Shell 脚本”操作到工作流程中，当然你也可以在一个“运行 Shell 脚本”操作中处理，我是习惯于一个“运行 Shell 脚本”操作只处理一件事情：</p><p><img src="https://i.loli.net/2017/09/12/59b7711e20abb.png" alt></p><p>同样的，将上一个“运行 Shell 脚本”操作的输入作为该“运行 Shell 脚本”操作的输入，然后输入筛选出 url 的脚本：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> f <span class="keyword">in</span> <span class="string">"<span class="variable">$@</span>"</span></span><br><span class="line"><span class="keyword">do</span></span><br><span class="line"><span class="built_in">echo</span> <span class="variable">$f</span> | sed <span class="string">'s/\"//g'</span> | grep -o <span class="string">'https:\\/\\/.*'</span> | awk -F <span class="string">','</span> <span class="string">'&#123;print $1&#125;'</span> | sed <span class="string">'s/\\//g'</span></span><br><span class="line"><span class="keyword">done</span></span><br></pre></td></tr></table></figure><p><img src="https://i.loli.net/2017/09/12/59b7716888934.png" alt></p><p>这样我们有了所选图片的链接，接下来只需要将链接拼接成我们所需要的 Markdown 格式文本即可，再次拖拽一个“运行 Shell 脚本”操作到工作流程中，并选择传递输入为作为自变量：</p><p><img src="https://i.loli.net/2017/09/12/59b771e108654.png" alt></p><p>然后输入所需脚本：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">ret=<span class="string">""</span></span><br><span class="line"><span class="keyword">for</span> f <span class="keyword">in</span> <span class="string">"<span class="variable">$@</span>"</span></span><br><span class="line"><span class="keyword">do</span></span><br><span class="line">ret=<span class="variable">$&#123;ret&#125;</span><span class="string">"![](<span class="variable">$f</span>)\n"</span></span><br><span class="line"><span class="keyword">done</span></span><br><span class="line"><span class="built_in">echo</span> <span class="variable">$ret</span> | pbcopy</span><br></pre></td></tr></table></figure><p><img src="https://i.loli.net/2017/09/12/59b7720574b99.png" alt></p><p>有必要说明一下，<code>pbcopy</code> 是将 <code>ret</code> 变量中的内容拷贝至剪切板的意思。相应的 <code>pbpaste</code> 是将剪切板的内容粘贴的意思。</p><p>好，至此我们的工作流程就全部结束了，点击运行测试一下：</p><p><img src="https://i.loli.net/2017/09/12/59b7729c426e7.png" alt></p><p><img src="https://i.loli.net/2017/09/12/59b772c4ba304.png" alt></p><p>发现测试成功，这个时候不要太高兴而忘记将用于测试的“获得指定的 Finder 项目”操作去除哦：</p><p><img src="https://i.loli.net/2017/09/12/59b77314b75c0.png" alt></p><p>之后将服务保存，你在 Finder 中选择图片的时候，右键就可以直接看到或者在服务中看到你刚刚保存的服务了。抓紧测试使用一下吧。</p><p>⚠️注：本文未考虑一切异常情况，只作为抛砖之用，你可以自行增强程序的健壮性。再一个当上传图片的文件名包含中文的时候，存在获取不到链接的情况。</p><p>EOF</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="技术" scheme="https://ultrarex.com/categories/%E6%8A%80%E6%9C%AF/"/>
    
      <category term="Mac Tips" scheme="https://ultrarex.com/categories/%E6%8A%80%E6%9C%AF/Mac-Tips/"/>
    
    
      <category term="Mac Tips" scheme="https://ultrarex.com/tags/Mac-Tips/"/>
    
  </entry>
  
  <entry>
    <title>波西米亚狂想曲</title>
    <link href="https://ultrarex.com/p/353e.html"/>
    <id>https://ultrarex.com/p/353e.html</id>
    <published>2019-03-25T06:19:34.000Z</published>
    <updated>2019-05-01T06:24:07.139Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script>    <div id="aplayer-zPNWjYDb" class="aplayer aplayer-tag-marker meting-tag-marker" data-id="002uFQ2G2zxj1n" data-server="tencent" data-type="song" data-mode="circulation" data-autoplay="true" data-mutex="true" data-listmaxheight="340px" data-preload="auto" data-theme="#555"></div><p><br></p><blockquote><p>Mama, just killed a man,<br>Put a gun against his head,<br>Pulled my trigger, now he’s dead,<br>Mama, life had just begun,<br>But now I’ve gone and thrown it all away</p></blockquote><p>千呼万唤始出来，当熟悉的旋律响起，我知道，终于盼来了获得金球奖最佳剧情片、最佳剧情片男主角，和奥斯卡最佳男主角、最佳剪辑、最佳混音和最佳音效剪辑的「波西米亚狂想曲」公映，其是对皇后乐队、传奇主唱 Freddie Mercury（弗莱德·摩库瑞）以及他们音乐的致敬盛宴，这是一段充满爱、痛苦、接纳和音乐的旅程。不知道为什么从一开始就特别期待，可能是他们藏在我记忆最深处的歌曲深情的呼唤吧。</p><p><img src="/img/Queen.jpg" alt></p><center>（左一：Roger Taylor 左二：Freddie Mercury 右二：Brian May 右一：John Deacon ）</center><br><br><br><br>主唱 Freddie Mercury 曾是一名机场的搬运工，对音乐满腔热血的他，与吉他手 Brian May（布莱恩·梅）、鼓手 Roger Taylor（罗杰·泰勒）、贝斯手 John Deacon（约翰·迪肯）组成皇后乐队。乐队从无到有，从疏离到重聚，从低谷到巅峰，仿佛就是 Freddie 的人生缩影。在他人生最后的时光里，他做出了一个重要的决定，重返皇后乐队，在 Live Aid 上成就自己，成就皇后乐队，将所有热情付诸于音乐。<br><br>皇后乐队之所以是独一无二的皇后乐队，我认为在于他们每个人都可以作词作曲。电影同名曲「Bohemian Rhapsody」是主唱 Freddie 写的；广为人传的「We will rock you」是吉他手 Brian 作曲；Live Aid 演唱会上掀起第一个全场高潮的「Radio Ga Ga」是鼓手 Roger 的；Michael Jackson 大赞过的一定会成为热门单曲的抖腿神曲「Another one bites the dust」是贝斯手 John 的作品。这里还有个有趣的小故事，你们知道 Lady Gaga 的艺名是怎么来的么。没错，正是因为她非常喜爱皇后乐队的一首经典歌曲「Radio Ga Ga」加之对其特别崇拜，便决定自己「Lady Gaga」的艺名。可见皇后乐队对半个世纪以来的乐坛影响之深。<br><br><img src="/img/Queen_movie.jpg" alt><br><br>个人看来这是一部好的人物传记电影，有戏剧性，有人生的阶段划分，有人物的心路历程，最后 Live Aid 长达二十分钟的演出则是把整个电影推向了高潮。身边的小伙伴都被感染的热泪盈眶，当然我也不例外，甚至还起了一身鸡皮疙瘩，一不小心就会抖落一地。<br><br>推荐你们去杜比影院，至少是杜比全景声厅或者说是杜比影厅观看，聆听声音的艺术。如果你因为嫌弃某电总局删减掉了同性的部分，而不想去电影院看，那么我推荐你去美亚购买正版蓝光碟，保证没有删减，任何理由都不应该成为你观看盗版的借口。<br><br>题外话：今天二刷在杜比影院，出了一点小状况，买的是 2D 版本，放映员却放成了转制的 3D 版本，而且入场时并没有发放 3D 眼镜。3D 版本与 2D 版本的区别也只在于字幕是 3D 的（微笑脸），所以如果你的城市有 3D 版本放映，推荐你去观看 2D 版本。在放映十分钟后我确信确实是放错了，便出去找了工作人员。她帮我联系了经理，经理很负责，和我一起确认存在问题之后，便找放映厅确认。经过再次确认之后，确实是放映失误，随即立即停止，她表达歉意之时，放映员也快速的更换好了正确的版本，重新开始放映。本来想着这事就这么愉快的解决了，没想到放映结束电影院工作人员还给每人发放了一张 25 元的兑换券，在以后可以凭此券以 25 元观看任意一部电影，总之，倍感欣慰。<br><br>回到影片本身，我觉得贯穿整部电影的还有一个主题 —— 摇滚精神。什么是摇滚精神，我说不太好，可是我知道皇后乐队在音乐上的造诣就是摇滚精神，不断的否定自己，一次一次超越自己原本的舒适区，尝试新的风格，推陈出新，把自己的音乐带到他人不曾想象过的领域，这一点可以在他们各张风格各异的专辑里得到验证。<br><br>人生如戏，曾经我不以为然，当真真体会过自后，深以为然。游戏有其规则，每一个玩家都遵循着这个规则，不遵守你就会出局。而在到达游戏终点之前，你会选择按照剧情按部就班地到达终点，还是在到达终点前做一些自己想做的事情。现实呢，法律就像是游戏规则，规定了什么你不可以做，你在到达人生终点之前会选择做些什么呢？你想很好的在这个世界上生存就势必需要认真了解这个「游戏规则」，甚至利用规则。在这场「游戏」里，和各个玩家进行交流是我当下觉得最快乐的事情，曾言：每个人都是一座孤岛，没有人是一座孤岛。相连我们的是大海，孤立我们的是自己封闭的心。这也是我捡起写公众号的一个原因，不再孤立自己，学会表达想法和感受，与其他「玩家」交流。<br><br>每个人都是自己的冠军，你也不例外。让我们在到达终点前一起玩点不一样的。<br><br><img src="/img/Queen_bye.jpg" alt><br><br><center>- END -</center>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="电影" scheme="https://ultrarex.com/categories/%E7%94%B5%E5%BD%B1/"/>
    
    
      <category term="影评" scheme="https://ultrarex.com/tags/%E5%BD%B1%E8%AF%84/"/>
    
  </entry>
  
  <entry>
    <title>绿皮书</title>
    <link href="https://ultrarex.com/p/4e0c.html"/>
    <id>https://ultrarex.com/p/4e0c.html</id>
    <published>2019-03-03T06:05:11.000Z</published>
    <updated>2019-05-01T06:18:25.141Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>终于，在今天晚上（2019.03.02，一不小心是昨天了），跟随 Viggo Mortensen 和 Mahershala Ali 的脚步，走过了一段妙趣横生却又充满艰辛的旅程。早在年初金球奖之前，这部电影就被加入了我的观影愿望清单里，希望有朝一日可以在电影院里欣赏。念念不忘必有回响，它来了~</p><p>国内发行海报依然出自于黄海之手，他是一名电影海报设计师，你可能不熟悉他，不过你应该看过他很多被人连连称赞的美妙作品，如果你感兴趣可以点击<a href="https://m.douban.com/group/topic/104280761/" target="_blank" rel="noopener">这里</a>了解更多（看完别忘了回来哟~）。</p><p>（欢迎回来^_^）其实，上周末点映我也有票，但是由于众所周知的原因没去成，我想可能是冥冥之中它想领了奥斯卡的奖再和我见面吧。</p><p><img src="/img/GreenBook.jpg" alt></p><p>《绿皮书》背景知识：南北战争结束后南方实行白人黑人“隔离但平等”的政策，绿皮书就是在这种背景下诞生的。由一个黑人邮递员所写，里面详细记载了愿意为黑人旅客提供服务的餐厅，旅馆。随着马丁·路德·金平权运动的胜利，《绿皮书》和《吉姆·克劳法》于 1966 年一起退出了历史舞台。而故事就发生在种族隔离时期 1962 年，一名黑人钢琴家，为前往种族歧视严重的南方巡演，找了一个粗暴的白人混混做司机。在一路开车南下的过程里，截然不同的两人矛盾不断，引发了不少争吵和笑料。但又在彼此最需要的时候，一起共渡难关。行程临近结束，两人也慢慢放下了偏见…… </p><center><b><u>分割线警告，剧透警告，大写加粗的警告。</u></b></center><p>再次提醒，如果你没看过，请立马关掉，去电影院观看之后再回来说说你的感受，下周日晚（2019.03.10）评论区抽一人报销电影票。</p><p>影评开始：随着影院的灯渐渐亮起，我仿佛穿越回到了这个习以为常的“公平”世界。而这一切正是他们在屈辱和忍耐中，在制度的压迫下，勇敢地去争取的目标。</p><p>影片的开头给我们展示了 Tony Lip 超强的”解决问题能力“，不禁让我想到暴力不是解决问题的终极能力，而是防止别人用它来解决问题的能力。这一点在 Tony Lip 身上体现的所谓是淋漓尽致——在酒店不屑对方是谁，迅速解决麻烦; 在舞台上解决不愿配合提供 STANDWAY 钢琴的工作人员; 在酒吧解救 Don Shirley 等等等等。但是切不可把它当成解决问题的首选方式，比如说在面临警察歧视的时候，因为一时冲动，进了班房。当然那个警察有错在先，可是成年人的世界不分对错，只看利弊。一时冲动的结果是自己进了班房，有可能错失接下来的演出，到手的报酬等等，而那个警察却依然可以在自己的办公室和同事谈笑风声。诉诸暴力绝对赢不了，要赢唯有保持尊严，尊严能够战胜一切。</p><p>Don Shirley 的闪光之处在于，他，勇敢地在和当时的制度、环境、人们的观念做斗争。并不是说他想凭借一己之力来改变那个时代、那个环境，而是他勇敢地迈出那一步，成为万千努力的人们中的一员。这才是作为社会中一员正确的对待社会的方式。改变你能改变的，先接受你不能改变的，等你有力量了，去改变那些你曾经不能改变的，但在此之前，不要让自己变成牺牲品。你也看到，像 Don Shirley 那么一个受欢迎的人，有些许地位的人（毕竟可以直接联系总统），在改变人们根深蒂固的观念面前也显得渺小。唯有勇气，才能改变人心。</p><p>还记得，第二次警察拦下他们那一幕吗。本以为警察会再次找他们麻烦，也想看 Tony Lip 在上次的“教训”之后如何应对，没想到，警察那句：”是，我发现了异常，你们的车在往左偏航，你们的左后方车胎可能破了”。一下直击内心，万千思绪化为热泪在眼眶中跃跃欲试夺眶而出。我想阴天之所以也有光亮正是这些闪闪发光的人所照亮的吧。</p><p>旅行结束，巡演结束，人生继续，而周遭的一切都悄然发生了改变。Tony Lip 和 Don Shirley 两人和解，成为要好的朋友，其他人也慢慢改变固执的观念。我主观感觉有一拨人并不是从骨子里执拗，而是没有勇气在所谓的大环境下，坚持己见，宁可做一个狭隘的伪装者。这让我想到了一个词——人设。思维定式固然可怕，比这更可怕的是人设的定势。就像 Tony Lip 认为黑人都爱吃炸鸡一样，从而冒犯了 Don Shireley 。如今社会中也不乏——程序员就是不懂时尚、秃头、格子衫; 棒子就是 xxx; 小日本就 xxx 等等。更何况，棒子，小日本，等称呼已经就是歧视了，如果你身边有这种人请离他远一点。</p><p>此外，影片中还带了一笔 LGBT，不过国内上映版本被剪掉了，可见平权的路还有很长一段要走。我们一起努力吧~</p><p>这就是我的几点感受，与你分享，也希望你和我分享你的感受。</p><center>- END -</center><p>番外，关于炸鸡：</p><blockquote><p>导演彼得·法雷里谈[绿皮书]吃炸鸡情节，“影片其实有三处吃炸鸡的情节，也都是根据真事改编。一处是他们在橙鸟(Orange Bird)酒吧，真实的故事是他们确实去了一家俱乐部，和电影里的有所不同的是，有个很受欢迎的人在那里演奏乐器，雪利博士后来和他一起演奏起来。”</p><p>“而在车里吃肯德基的情节，在托尼·利普的录音带里有很详尽的描述，他说：‘我有一桶炸鸡，雪利说：“我不想吃”，“你的同胞都喜欢炸鸡”，雪利被这一点冒犯了，说，“托尼，并不是每个人都吃同样的东西”’，于是我们把这个情节放进了电影里。”</p><p>“还有一个他们在一家餐厅里吃炸鸡，这个情节很长，后来被我们剪掉了。那个情节是在餐厅里的人都用刀叉吃东西，而托尼直接用手拿起炸鸡吃，整个餐厅都变得疯狂起来，都开始直接用手吃起来。吃炸鸡的情节太多了，所以我们就把这段剪掉了。”</p><p>（引用自：<a href="https://weibo.com/movieview" target="_blank" rel="noopener">@看电影</a>）<br>（PS：我看完去吃的金拱门，hhh）</p></blockquote><p>小故事：</p><blockquote><p>1982年，Michael Jackson 即将发行他的最新个人专辑《Thriller》，这张专辑也即将改变流行音乐的面貌，成为人类历史上最畅销的录音室唱片。从幼年开始，Michael Jackson 就是家喻户晓的电视明星，时年 25 岁，他已经拥有了成功、名望和来自全世界的宠爱。</p><p>《Thriller》的野心不仅是重新锻造流行音乐，将黑人血缘的音乐韵律推向大众文化的最高峰，它还将改变视觉体验，将 MV 发展为一种全新的艺术形态。在此之前，Jackson 在电视上看到了爱尔兰导演 Steve Barron 为英国乐队 Human League 所拍摄的《Don’t You Want me》MV，被那种电影感的画面所震撼。那就是 Jackson 想要的，不是简单的歌舞唱跳，而是扑朔迷离的平行叙事线。视觉不再是音乐的附庸。他亲自打电话给 Barron，邀请他来美国为他拍摄新专辑的第一首主打歌《Billie Jean》的 MV。</p><p>这支费尽心血的短片在第二年完成，而播放它的最理想平台，是崭新、年轻、时髦的 MTV 电视台。《Billie Jean》单曲在当时已经拿下连续七周 Billboard 冠军，两座格莱美奖、全美音乐奖和所有其他奖项，这支 MV 会是任何电视台梦寐以求的节目。</p><p>但，它居然被 MTV 电视台拒绝了！在 1980 年代，美国的种族歧视情况虽然已经大大改善，但门槛与界限仍处处存在。MTV 在此之前几乎从未播放过任何黑人音乐家的 MV，即便黑人音乐正在兴起，但他们更倾向于播放 Rod Steward、David Bowie 等白人歌手的 MV。这种傲慢惹恼了 Jackson 所属的 CBS 唱片公司主席 Walter Yetnikoff，他本人是一个俄罗斯犹太后裔。他为这种不公平勃然大怒：“我会把所有东西都（从 MTV 电视台）撤下来，我们所有的产品（指 CBS 旗下的其他艺人作品）。我不会再给你们任何视频！我要把这事曝光到公众层面，我他妈的要告诉所有人，让大家知道你们如何嫌弃黑人的音乐！”（’I’m pulling everything we have off the air, all our product. I’m not going to give you any more videos. And I’m going to go public and fucking tell them about the fact you don’t want to play music by a black guy’——来自 Yetnikoff 自传）</p><p>CBS 当时旗下艺人包括 Bob Dylan、Johnny Cash、Simon and Garfunkel、Bruce Springsteen、Barbra Streisand、Leonard Cohen 等无数伟大白人艺术家，Yetnikoff 决定让他们与 Jackson 共进退。</p><p>MTV 于是屈服了，他们决定破例。再之后的事情大家都了解：《Billie Jean》MV 红遍全球，将 Michael Jackson 推上了史无前例的乐史巅峰。MV 成为了崭新的流行艺术形式，从 Prince 到 Beyonce 再到 Kendrick Lamar，一直受益至今。大家都记得《Billie Jean》的伟大成功，却很少有人知道它是 MTV 播放的第一支黑人艺术家作品，它撞破了无形的界限。<br>（引用自：<a href="https://weibo.com/unseendesire" target="_blank" rel="noopener">@熊小默</a> 已获得授权）</p></blockquote>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="电影" scheme="https://ultrarex.com/categories/%E7%94%B5%E5%BD%B1/"/>
    
    
      <category term="影评" scheme="https://ultrarex.com/tags/%E5%BD%B1%E8%AF%84/"/>
    
  </entry>
  
  <entry>
    <title>一个懒癌晚期患者的独白</title>
    <link href="https://ultrarex.com/p/5bf1.html"/>
    <id>https://ultrarex.com/p/5bf1.html</id>
    <published>2019-02-24T06:02:08.000Z</published>
    <updated>2019-05-01T06:04:54.597Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script>    <div id="aplayer-OFDiUBXE" class="aplayer aplayer-tag-marker meting-tag-marker" data-id="001Q8jC33iVnj5" data-server="tencent" data-type="song" data-mode="circulation" data-autoplay="true" data-mutex="true" data-listmaxheight="340px" data-preload="auto" data-theme="#555"></div><p><br></p><p>经历了昨天一整天的上吐下泻之后，今天终于半血复活了，至少有了一些精神，可以写写字。真的，人在虚弱的时候渴望被照顾的感觉才最强烈，还好，都过去了。好了，正文开始。</p><p>2018 年年终计划里有一项——自我审查，其中一条是获取他人对我的评价，所谓良师益友，就索性找我的“同桌”好了。可是“懒癌晚期”的我却一拖再拖，终于，在周五（2019.02.15）临下班前，借用了他近半个小时，获取了他对我的评价。评价很符合我的预期，也有惊喜。</p><p>他指出了在他看来我的两点缺点：一点是做事没有”套路“;  一点是”懒“。</p><p>所谓”套路“具象来看就是：当问题产生时如何去解决？当有新需求提出如何去分析真实意图？当解决问题中遇到难点如何去请教别人？等等。所以可以抽象出：”套路“为分析并解决问题的能力。诚然，这一点我是极其欠缺的。不仅仅表现在他所提出的一些方面，还有诸如人际交往等各个方面。而这一能力的训练，在我看来需要在两方面努力——一个是建立完善的认知模型，一个是训练逻辑思维能力。</p><p>关于这两点，我还仅仅在咿呀学语阶段，就不展开来说（展开了我也不会呀）。</p><p>简单来说所谓认知模型，是人类对真实世界进行认知的过程模型。 所谓认知，通常包括感知与注意、知识表示、记忆与学习、语言、问题求解和推理等方面，建立认知模型的技术常称为认知建模。 目的是为了从某些方面探索和研究人的思维机制，特别是人的信息处理机制。（引用自百度百科）</p><p>逻辑思维过程简单地说就是：合理的假设——演绎（等量置换，不等式置换）——结论。这是一套完整的逻辑体系，而三者中核心是前提假设能力，是常识、经验、判断、价值观。这些也可以称之为输入，演绎是过程。而演绎能力在当今社会是不那么重要的，因为计算机的演绎能力远强于我们人类。这么一看具象的问题，就有了”套路“可循，而且认知模型和逻辑思维是相辅相成，环环相扣的。</p><p>”懒“呢，没啥说的也，就是懒呢（傲娇脸）。你看这篇文章就又拖了好久……真要说一二的话，我觉得可以尝试来分析一下。首先，人天性是贪图安逸的，因为安逸是阻力为 0 的玻璃表面，我们可以在上面毫不费力的一直驰骋（别抬杠还有空气阻力什么的，这里是理想环境下）。再者，内心的驱动力是我们前进的动力，但是驱动力容易受到诸多因素的影响，当结果不是那么重要时，我们常常可能会因为被影响而丧失了前进的动力，而停止不前。当然您要是抬杠说“懒”是我们生存的手段和社会发展的驱动力，我也承认，毕竟发明创造了那么多便捷的工具。不过我这里说的懒，是过程。问题的原因好像是有了，如何解决？我的答案是：当认知一个问题的危害时，你就有了改变的动力，而改变又需要计划，有了计划就需要实施和坚持。看起来像大道理，也确实是大道理，每个人都有自己不同的情况，所以有着自己的解决办法，你的不一定适用于我，我的也同样不适用于你，而想通点也就只有大道理了。</p><p>好了，该结尾了，懒的写了，累了……</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="碎碎念" scheme="https://ultrarex.com/categories/%E7%A2%8E%E7%A2%8E%E5%BF%B5/"/>
    
    
      <category term="碎碎念" scheme="https://ultrarex.com/tags/%E7%A2%8E%E7%A2%8E%E5%BF%B5/"/>
    
  </entry>
  
  <entry>
    <title>春节贺岁档</title>
    <link href="https://ultrarex.com/p/1acb.html"/>
    <id>https://ultrarex.com/p/1acb.html</id>
    <published>2019-02-14T05:56:46.000Z</published>
    <updated>2019-05-01T06:00:51.254Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script>    <div id="aplayer-ZqGLxJVs" class="aplayer aplayer-tag-marker meting-tag-marker" data-id="001NmPTG1fVsUw" data-server="tencent" data-type="song" data-mode="circulation" data-autoplay="true" data-mutex="true" data-listmaxheight="340px" data-preload="auto" data-theme="#555"></div><p><br></p><p>至此，我看完了感兴趣的四部贺岁档电影，《飞驰人生》、《疯狂的外星人》、《流浪地球》、《喜剧之王》。感谢近年来中国电影市场的蓬勃发展，出现了一部又一部不错的电影，让我大饱眼福，可以利用两个小时左右的时间体验各种人生。</p><p>有热闹的地方就有争议、争执甚至争吵。在《流浪地球》还未上映前，就看到网路上充斥着一个声音：有吴京坚决不看！说实话曾经《战狼 2》热映的时候，我也讨厌过吴京，后来就不怎么讨厌了，因为我觉得他不过是消费了大部分人的“爱国主义情怀”，当然也不全是他的问题，也有某些部门的推波助澜。但是这件事真的就该讨厌他一辈子么，我看未必。</p><p>人无完人，孰能无过，做错事付出相应的代价即可，为什么要一棒子打死，把他永远钉在你心里的那根柱子上呢？这么严格的要求别人的人想必对自己也异常严格吧，工作上严于律己，生活上处处小心。社会上任何事物都不该是两元对立、非黑即白的，如何做到独立思考而不是独自思考是我们的必修课。</p><p>再一个时常在电影的评论区看到——评论区是怎么回事，这也算好，你是没看过 xxx 吧; xxx 被过誉了吧; 明明很好看啊，怎么就 xxx 了等等等等……表达我们自己的感受没有错，可是您看到异于自己的观点就想着去说服，去争执就错了。一千个人中有一千个哈姆雷特，也就有一千种感受、一千种观点。你看了一部电影觉得不错，准备去评价 7 星，却看到当前评价 9 星，心想这怎么回事，凭什么 9 星，我要评 1 星，给它拉低，反之亦然。真没必要，坚持最初的想法观点就好。</p><p>不同的电影题材不同、类型不同，根本就没有什么可比性，何必比来比去呢。当然也不是完全不可以比较，电影的本质都是阐述一个故事，这个故事讲的如何，你的感受是最真实的答案……如果你对电影不仅限于看个乐呵，休闲时间，想探寻它，认识它，我可以推荐你几本书，相信看完会有别样的视角——《认识电影》《电影是什么？》《看电影的艺术》等。</p><p>最后感谢韩寒让我结实了体面挣回荣耀的张弛，感谢宁浩给我带来的欢乐和对社会的思考，感谢郭帆让我领略刘慈欣的超然浪漫，感谢周星驰让我看到再小的人物只要不向自己投降就有成功的那一天。愿我们都是那一颗最明亮的星，即使在白天也闪闪发光~</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="电影" scheme="https://ultrarex.com/categories/%E7%94%B5%E5%BD%B1/"/>
    
    
      <category term="电影" scheme="https://ultrarex.com/tags/%E7%94%B5%E5%BD%B1/"/>
    
  </entry>
  
  <entry>
    <title>关于智能家居的一点感受……</title>
    <link href="https://ultrarex.com/p/581.html"/>
    <id>https://ultrarex.com/p/581.html</id>
    <published>2019-02-13T05:54:11.000Z</published>
    <updated>2019-05-01T05:55:41.353Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p><img src="/img/stone_robot.jpg" alt></p><p>年末得知某扫地机器人在促销且它表现还不错，随决定给妈妈买一台来缓解她平时处理繁重家务的压力。一开始她是拒绝的，可能是出于本能，声称什么都不缺，不想让我花钱罢了。我可是早就知道了她这个习性，一般都是先斩后奏。刚刚我的手机收到了来自机器人的提醒“清扫完成，正在回充”，不由的感慨“真香”，也产生了关于智能家居的一点思考。</p><p>2019 年，将会是智能家居正式拉开序幕的一年。曾经有想法搭建一套便捷的智能家居系统，可受制于预算、智能设备和手机等设备的交互等一系列因素，迟迟没有下手。其实还有一个点也是自己愚昧的一个想法：“都什么年代了，智能设备还仅支持 2.4GHz WiFi ”。然而认真对比 2.4GHz 和 5GHz WiFi 的利弊之后，我知晓了智能设备为什么只支持也只需要支持 2.4GHz WiFi。因为智能设备不需要像手机那样有着高移动性和对网速有着高要求，它们所需要的是高可用和稳定，而 2.4GHz WiFi 网络相比于 5GHz WiFi 网络有着较强的穿墙能力，覆盖范围更广等优势，而且省去不必要的 5GHz WiFi 模块也可以节省产品成本。</p><p>再得益于今年 iOS HomeKit 平台的开放和 Shortcut 的推出，已有越来越多的智能硬件厂商开始接入，让你通过 hey Siri 来便捷控制的设备越来越多。以前你想实现这种程度的控制，需要一番较为 hardcore 的折腾。以我了解的方案为例，你需要一个可以搭载 Home Assistant 的设备（包括但不限于 树莓派、Mac mini），然后在 Home Assistant 系统中安装你所使用的智能设备控制插件和 HomeKit Bridge，然后编写一定的规则文件来自定义它们。同时还需要承受这套系统的不稳定带来的不愉快。</p><p>现在在各方的共同努力下，市场已成熟许多。米家智能家居已是较为廉价解决方案的代表，你可以放心随意购买，且大部分支持了 HomeKit，如果你是 iOS 用户的话。</p><p>共同期待吧~</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="碎碎念" scheme="https://ultrarex.com/categories/%E7%A2%8E%E7%A2%8E%E5%BF%B5/"/>
    
    
      <category term="智能家居" scheme="https://ultrarex.com/tags/%E6%99%BA%E8%83%BD%E5%AE%B6%E5%B1%85/"/>
    
  </entry>
  
  <entry>
    <title>写在开工之前</title>
    <link href="https://ultrarex.com/p/d18b.html"/>
    <id>https://ultrarex.com/p/d18b.html</id>
    <published>2019-02-10T05:33:03.000Z</published>
    <updated>2019-05-01T05:37:34.503Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>今天就是大家期盼已久的日子了，祝大家开工大吉~<br>不知大家这个春节过得如何？（红包有多厚呢^_^）</p><p>我呢，总体感觉一般般，因为年前的种种计划，实现了的屈指可数。有的是因为计划赶不上变化（恩，看起来情有可原）；有的是因为迫于魔法攻击（额，算是个借口吧）；还有的是因为自己犯懒（哈哈，这下没有借口了吧）。</p><p>分方面展开说下吧。</p><p>个人方面：</p><ol><li>把王鼎钧的《作文七巧》拜读一遍</li><li>把工作上的些许工作提前做一下</li><li>看 Vue.js 文档，尝试码出一个看得过去的控制台页面</li><li>看《大象席地而坐》</li><li>看《我的天才女友》</li><li>看《大江大河》</li></ol><p>家庭方面：</p><ol><li>给父母尝尝我的手艺</li><li>教弟弟英语音标，单词如何拼读背</li><li>仔细观察一下父母的容颜，记住他们正在变老的速度</li></ol><p>很显然，个人方面的 2、3 肯定没做。因为我常常有一种错觉，工作上做不完的不要着急，利用下别的时间也是可以的，然而闲暇时间用来处理遗留的任务是不可能的。所以呢，还是要该是什么时间完成的任务就什么时间完成，做个成熟的成年人，合理利用时间。</p><p><img src="/img/year_progress.png" alt></p><p>还记得 2019 年初立下的 flag 么（记得记得），实现的如何？农历年一过 2019 年还剩下不到 11/12 了哦（……）。如果您也和我一样还没怎么开始，那么一定要怪罪自己，让自己感受到罪恶、为之付出代价。人因痛苦而改变，因获益而坚持。希望我们都多些痛苦，多些收获。</p><p>在累积一些痛苦、认真的自我审查之后，我把今年要做的事情分为五个方面，并且认真排序：健康、家庭、财富、休闲、工作。</p><p>曾经太看重工作，以为只有工作做好了才有可能兼顾其它方面，然而当认识到工作是为了服务其它方面时，才由衷地认识到它才是最不重要的。最重要的是自己的健康，身体是革命的本钱，一切方面都是建立在自己健康的基础上。</p><p>其次是家庭，生活中和家人难免充斥着各种各样的矛盾和争执。曾经尝试灌输自己的价值观给他们，发现效果甚微。因为每个人都是独立的个体，有着自己的三观，而真正需要解决的并不是他们看待事物的方式和角度，而是我们之间存在的问题。意识到这一点，一切也就迎刃而解了。这也让我联想到网络上那些流言蜚语、所谓的政治正确，比如因为战狼 2 而讨厌吴京、因为百度的一些劣迹而讨厌百度。实际上我们讨厌的并不是吴京、百度，而是电影中的人物形象（如果换个人演你一样讨厌）、百度做错的几件事和后续的自我改变。恋爱中同样如此，你们所面对的不是那个人如何如何，而是他/她做了一件如何如何的事情。</p><p>财富，已经不用过多阐述，在当今时代是多么的重要。不过切忌为了积累财富而积累财富。合理累积，合理利用。</p><p>休闲，可以再细分为看剧、电影，看展，听音乐，旅行等。劳逸结合方能久远，如何平衡休闲和工作也是一个本事呢，去年就没有平衡好，导致工作上出现了一些问题。再一个逸也不是单纯的逸，而是秉着扩展自己的见闻，丰富自己，认识自己为前提的，要不然不就成了骄奢淫逸了么。21 世纪早就是一个多元化的时代，备受应试教育茶毒的我们丧失了太多在校园时代接触其他事物的良好时机，不过为时不晚，一切都来得及。</p><p>最后送大家一句话，也是我近期看到的：</p><p><b>如果必须经历，那么早做准备。</b></p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="碎碎念" scheme="https://ultrarex.com/categories/%E7%A2%8E%E7%A2%8E%E5%BF%B5/"/>
    
    
      <category term="开工" scheme="https://ultrarex.com/tags/%E5%BC%80%E5%B7%A5/"/>
    
  </entry>
  
  <entry>
    <title>写在开始记账一个月后…</title>
    <link href="https://ultrarex.com/p/46ac.html"/>
    <id>https://ultrarex.com/p/46ac.html</id>
    <published>2019-02-02T05:28:12.000Z</published>
    <updated>2019-05-01T05:31:21.888Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>工作三年有余，却一直没有结余，甚至去年还欠下一大屁股债（感谢朋友们的慷慨解囊，帮我度过难关）。于是乎开始自我审查，思考自己的消费观是否真的正确。事实上存在着严重的问题。虽然看起来挺傻的，花了那么长时间才发现在外人看起来很浅显的问题，不过我还是很高兴地认识到自身问题，一切为时不晚。曾经以为每一笔花费都是天经地义，记不记帐的根本无所谓，又有什么必要呢？虽不知每到账单还款日，看着“巨额”账单怎么也回想不起来花在了什么地方。</p><p>而现在，我已经可以定位每天的消费额，各种分类的消费情况，设定消费上限，倒逼自己克制。</p><p><img src="/img/ChargeUp_1.jpg" alt></p><p>直接看我这一个月的战绩吧。注：蓝色表示记账周期起始日，浅蓝色表示在预算之内，黄色表示接近预算但还没有超，红色表示超出预算。其中未超预算 11 天，有 20 天超出，可见情况不容乐观。最可怕的是超出了预算的 149%。</p><p>那么钱都花在什么地方了呢，花费的 Top 3 又是什么呢，有没有“乱”花钱呢（这里定义的“乱”花钱是冲动消费、买了实际不怎么需要的、买了可以不买的东西）。</p><p><img src="/img/ChargeUp_2.jpg" alt></p><p>如图可以清晰的得出，本月 Top 3 为“生活购物”、“餐饮”、“出行”。再分别看每个分类找出“可优化项“，每一笔花费都可溯源。本月可能不具有普遍性，因为临近春节得买往返车票、给父母添置”省时省力好帮手“等硬性花费成为必然，不过，抛开这些依然可以有所得。这就是数据的力量，也是量化的好处。</p><p>从而我知晓了记账的意义，就是：给消费提供量化的依据。在这一个月内，关于记账的心态也在慢慢发生着变化，起初只是好奇心驱使，按部就班的记录。接着是紧张每一笔花费，想一笔不拉的记录。然后想科学记账，如何设定预算、如何记录、如何审查。再者是每天看着预算倒逼自己不要消费。</p><p>一切才刚刚开始，我也只能记录下这一段时间的状态、想法，留给自己以后回味，也给同行的你们做一个参考。正如王鼎钧老先生所感：”我是赤着脚走路的那种人，路上没有红毯，只有荆棘。中年以后整理自己的生活经验，发生了一个疑问。当年走在路上，前面明明有荆棘，为什么走在前面的人不告诉我呢？前面有陷阱，为什么没有人做个标记呢？前面有甘泉，为什么去喝水的人不邀请我同行呢？经过一番研究，我知道一般人在这方面是很吝啬的。于是我又衍生一个想法：我一面赤脚行走，一面把什么地方有荆棘，什么地方有甘泉写下来，放在路旁，让后面走过来的人拾去看看。”不过我留下的这些没有他老先生的那么对后来人有所帮助就是了，能和你们有所交流我已知足。</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="碎碎念" scheme="https://ultrarex.com/categories/%E7%A2%8E%E7%A2%8E%E5%BF%B5/"/>
    
    
      <category term="理财" scheme="https://ultrarex.com/tags/%E7%90%86%E8%B4%A2/"/>
    
  </entry>
  
  <entry>
    <title>我喜爱这个世界什么？</title>
    <link href="https://ultrarex.com/p/88aa.html"/>
    <id>https://ultrarex.com/p/88aa.html</id>
    <published>2018-10-11T05:19:15.000Z</published>
    <updated>2019-05-01T05:27:03.088Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=k1350m1or0g" allowfullscreen="true" width="100%" height="600px"></iframe><p>昨天（2018.10.09）看到德国汉莎航空的视频广告「你为什么喜爱这个世界？」。视频中有人说：因为这个世界太美了；“因为有那么多人”（莎士比亚）；某些地方可能给你不一样的视角去观察这个世界；有很多地方去激励自己做自己；这个美好的世界让自己眼界更宽广；世界充满惊喜；有形形色色的人。</p><p>不期而至的视频，看完很是喜欢，我就问自己：你为什么喜爱这个世界？我想了想，想要究其原因，首先得问自己我喜爱这个世界什么？这也就是本文的来源。</p><p>世界很大。大到我们无法叫出每一个地方的名字，即使我们把 5.1 亿平方公里的世界划分出四大洋：太平洋、大西洋、印度洋、北冰洋，和七大洲：亚洲、非洲、欧洲、南美洲、北美洲、南极洲、大洋洲，接着再细分；大到穷尽我们一生也无法与这个世上的所有人邂逅，无法踏足每一寸土地，亲临每一个角落；大到两个人相遇的几率是那么那么的小，小到一旦分开就很难再见。</p><p>世界很小。小到我们可以用 53 个小时就可以来一场环球旅行；小到你我在同一片天空下共赏一轮明月；小到一个转身，就不知道会遇见什么人。</p><p>那么我喜爱这个世界什么呢？带着这个问题我发了一条朋友圈，问一问大家喜爱这个世界什么？得到了一些回复：喜爱并质疑着；不喜爱；喜爱美食等。似乎每个人都有自己的答案但又不明确，每个人都有自己的视角去观察这个世界，或窄或宽，或近或远。</p><p>那么我喜爱这个世界什么呢？我想我大概喜爱这个世界的碧海蓝天，清晨醒来站在海边看浪花一朵朵涌来，轻轻掠过我的脚，让我感受海的温度；我大概喜爱早晨初升的太阳，阳光穿过树林洒在地上，唤醒万物生灵，一切富有生机；我大概喜爱一个人走在马路上，感受车水马龙，城市的喧嚣，让内心在熙熙攘攘的人群中找到一丝平静；我大概喜爱这世间万物。</p><p>（「更喜爱你」，我发现要是结尾加上这句就有点像情书了哈哈哈）</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="碎碎念" scheme="https://ultrarex.com/categories/%E7%A2%8E%E7%A2%8E%E5%BF%B5/"/>
    
    
      <category term="碎碎念" scheme="https://ultrarex.com/tags/%E7%A2%8E%E7%A2%8E%E5%BF%B5/"/>
    
  </entry>
  
  <entry>
    <title>初识 LLDB</title>
    <link href="https://ultrarex.com/p/689e.html"/>
    <id>https://ultrarex.com/p/689e.html</id>
    <published>2018-09-05T04:55:53.000Z</published>
    <updated>2019-05-01T05:03:33.172Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>越看大别的书愈发觉得自己基础的薄弱，刚对汇编有了一个初步认识，接下来又要用 lldb 来看寄存器数据，这让我如何是好，只好再次放下书，继续 Google ……</p><p>同样，本文只为我在简单了解 lldb 时的笔记，定有纰漏还请见谅。</p><h3 id="什么是-LLDB"><a href="#什么是-LLDB" class="headerlink" title="什么是 LLDB"></a>什么是 LLDB</h3><blockquote><p>The LLDB Debugger (LLDB) is a software debugger. It is built as a set of reusable components which extensively use existing libraries from the larger LLVM Project, such as the Clang expression parser and LLVM disassembler.  — quote from Wikipedia</p></blockquote><p>LLDB 调试器是一款软件调试器。它是作为一组可重用组件构建的，它广泛使用来自较大 LLVM 项目的现有库，如 Clang 表达式解析器和 LLVM 反汇编器。</p><h3 id="如何使用-LLDB-来调试"><a href="#如何使用-LLDB-来调试" class="headerlink" title="如何使用 LLDB 来调试"></a>如何使用 LLDB 来调试</h3><p>这里以经典的 hello.c 程序来演示：</p><p><img src="/img/LLDB_1.jpg" alt></p><p>源码如图所示</p><p>首先我们用 gcc 来编译出可执行文件，gcc hello.c -o hello</p><p>准备工作都做好了，接下来就可以进行调试工作了。</p><p>在命令行中输入 lldb ./hello 即可进入调试模式：</p><p><img src="/img/LLDB_2.jpg" alt></p><p>到了这一步，可能你不知所措了，这个时候可以键入 help 来查看 lldb 所支持的所有指令。</p><p><img src="/img/LLDB_3.jpg" alt></p><p>由于 lldb 有非常多的命令，这里就不一一截图了，只展示一小部分。不过还是要把常用的一些指令拿出来说一下：</p><h4 id="list-l-查看代码"><a href="#list-l-查看代码" class="headerlink" title="list / l 查看代码"></a>list / l 查看代码</h4><p><img src="/img/LLDB_4.jpg" alt></p><p>Tips: 不输入指令直接回车，会执行上一次执行的指令。</p><p>你或许会发现 list 之后再回车或者执行 list 将没有内容输出，这是因为已经 list 到文末，没有内容可以输出了，这个时候键入 list 1 / l 1 就回到第一行来。</p><p>此外，list n （n 表示自然数）表示从指定行向下输入 10 行。如果你的项目由多个文件构成，还可以 list filename 查看指定文件的代码。list function_name 查看具体函数。</p><h4 id="breakpoint-br-断点"><a href="#breakpoint-br-断点" class="headerlink" title="breakpoint / br 断点"></a>breakpoint / br 断点</h4><p>我们知道想要调试程序则必须要有断点，lldb 也一样，通过 breakpoint / br 可以设置断点。</p><p><img src="/img/LLDB_5.jpg" alt></p><p>可以根据函数名下断点，如图所示（br set -n main # C 函数）；</p><p>还可以根据：</p><p>文件名 + 行号：br set –file filename –line line_number</p><p>C++ 类方法：br set –method func</p><p>Objective-C 选择器：br set –selector func</p><p>等等。</p><h4 id="br-list-查看断点列表"><a href="#br-list-查看断点列表" class="headerlink" title="br list 查看断点列表"></a>br list 查看断点列表</h4><p><img src="/img/LLDB_6.jpg" alt></p><h4 id="br-disable-breakpoint-number-breakpoint-number-为-list-所示标号-禁用指定断点"><a href="#br-disable-breakpoint-number-breakpoint-number-为-list-所示标号-禁用指定断点" class="headerlink" title="br disable breakpoint_number (breakpoint_number 为 list 所示标号) 禁用指定断点"></a>br disable breakpoint_number (breakpoint_number 为 list 所示标号) 禁用指定断点</h4><p><img src="/img/LLDB_7.jpg" alt></p><h4 id="br-enable-breakpoint-number-breakpoint-number-为-list-所示标号-启用指定断点"><a href="#br-enable-breakpoint-number-breakpoint-number-为-list-所示标号-启用指定断点" class="headerlink" title="br enable breakpoint_number (breakpoint_number 为 list 所示标号) 启用指定断点"></a>br enable breakpoint_number (breakpoint_number 为 list 所示标号) 启用指定断点</h4><p><img src="/img/LLDB_8.jpg" alt></p><h4 id="br-delete-breakpoint-number-breakpoint-number-为-list-所示标号-删除指定断点"><a href="#br-delete-breakpoint-number-breakpoint-number-为-list-所示标号-删除指定断点" class="headerlink" title="br delete breakpoint_number (breakpoint_number 为 list 所示标号) 删除指定断点"></a>br delete breakpoint_number (breakpoint_number 为 list 所示标号) 删除指定断点</h4><p><img src="/img/LLDB_9.jpg" alt></p><p>OK，断点加好了，这个时候就需要启动了，很简单，键入 r 即可运行。</p><h4 id="run-r-运行"><a href="#run-r-运行" class="headerlink" title="run / r 运行"></a>run / r 运行</h4><p><img src="/img/LLDB_10.jpg" alt></p><p>next / n , step over 下一步</p><p>step / s, step into 步入</p><p>finish. step out 步出</p><p>continue / c, goto next breakpoint 继续执行到下一个断点</p><p>print / p, 打印出变量</p><p>call, 调用</p><p>backtrace / bt, 打印出当前堆栈</p><p>register read, 读取寄存器信息</p><p><img src="/img/LLDB_11.jpg" alt></p><p>disassemble –pc, 打印出寄存器指向的信息</p><p><img src="/img/LLDB_12.jpg" alt></p><p>…</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="技术" scheme="https://ultrarex.com/categories/%E6%8A%80%E6%9C%AF/"/>
    
      <category term="汇编" scheme="https://ultrarex.com/categories/%E6%8A%80%E6%9C%AF/%E6%B1%87%E7%BC%96/"/>
    
    
      <category term="LLDB" scheme="https://ultrarex.com/tags/LLDB/"/>
    
  </entry>
  
  <entry>
    <title>初识汇编</title>
    <link href="https://ultrarex.com/p/129b.html"/>
    <id>https://ultrarex.com/p/129b.html</id>
    <published>2018-09-05T04:51:34.000Z</published>
    <updated>2019-05-01T05:04:21.315Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><h3 id="写在前面"><a href="#写在前面" class="headerlink" title="写在前面"></a>写在前面</h3><p>盼望着盼望着，终于在前些日子买了人生中第一台 MacBook Pro 15。欣喜之余，第一件事就是去拜读大别写的 「macOS 高手进阶 v3」，之前 v2 就已经受益良多，但是受限于没有 Mac 而不能亲自上手实践一下书中的例子，使得阅读功效大打折扣。</p><h3 id="学习汇编的动机"><a href="#学习汇编的动机" class="headerlink" title="学习汇编的动机"></a>学习汇编的动机</h3><p>当看到 Process and Thread 这章的时候，书中出现了汇编代码的例子，加之之前就一直想学习一下汇编，总感觉本科阶段这门课被砍了是一大遗憾，于是乎说干就干，打开 Chrome 就搜索到了一篇阮老师的文章，正式迈入了汇编世界的大门。本篇也只是我在阅读阮老师文章过程中所做的笔记，定有不详细或者不当之处，还恳请谅解并大方指出，多谢。</p><h3 id="汇编语言是什么？"><a href="#汇编语言是什么？" class="headerlink" title="汇编语言是什么？"></a>汇编语言是什么？</h3><p><img src="/img/justcode.me.png" alt></p><p>学习编程其实就是学习高级语言，即那些为人类设计的计算机语言。而计算机不懂高级语言，所以必须通过编译器转成二进制代码才可以运行。而汇编就属于低级语言，可以与硬件进行直接交互。</p><p>CPU 本身只负责计算，执行一条条指令，运行结束就停下来等待下一条指令。这些指令都是二进制的，称为操作码 (opcode) ，比如加法指令就是 00000011。</p><p>对于人类而言，二进制程序是不可读的，根本无法知晓机器干了什么，为了解决可读性需求和可编辑性，就诞生了汇编语言。</p><p>汇编语言是二进制指令的文本形式，与指令是一一对应的关系。比如，加法指令 00000011 写成汇编语言就是 ADD。只要把汇编语言还原成二进制指令，它就可以被 CPU 直接执行，所以它是最底层的低级语言。</p><h3 id="基础知识"><a href="#基础知识" class="headerlink" title="基础知识"></a>基础知识</h3><p>学习汇编语言首先必须了解两个知识点：寄存器 &amp; 内存模型。</p><h4 id="寄存器"><a href="#寄存器" class="headerlink" title="寄存器"></a>寄存器</h4><p>CPU 本身只负责运算，不负责存储数据，数据一般都存储在内存之中，CPU 要用的时候就去内存读写数据。但是 CPU 的运算速度远高于内存的读写速度，为了避免 CPU 长时间等待 I/O 操作，CPU 都自带一级、二级缓存，甚至三级缓存，缓存可以看作是读写速度较快的内存。</p><p>数据存储在缓存中的地址是不固定的，CPU 每次都要读写都需要寻址也会拖慢运算的速度，因此除了缓存之外，CPU 还自带了寄存器 (rigister) ，用来存储最常用的数据。<br>CPU 优先读写寄存器，再由寄存器和内存交换数据。</p><p>每一个寄存器都有自己的名字，CPU 直接通过名字找到具体的寄存器读写数据，这样的速度是最快的，有人比喻寄存器为 CPU 的零级缓存。</p><p>寄存器的种类</p><p>早期的 x86 CPU 只有 8 个寄存器，而且每个都有不同的用途。现代 CPU 已经有上百个之多，都变成通用寄存器。不特别指定用途了，但是早起寄存器的名字都被保留了下来。</p><ul><li>EAX</li><li>EBX</li><li>ECX</li><li>EDX</li><li>EDI</li><li>ESI</li><li>EBP</li><li>ESP</li></ul><p>这 8 个寄存器之中，前七个都是通用的，ESP 寄存器有特定用途，用于保存当前 Stack 的地址。</p><p>我们常常看到 32 位 CPU、64 位 CPU 这样的名称，其实指的就是寄存器的大小。32 位 CPU 的寄存器大小就是 4 个字节。</p><h4 id="内存模型"><a href="#内存模型" class="headerlink" title="内存模型"></a>内存模型</h4><p>Heap</p><p>因为用户主动请求而划分出来的内存区域叫做 Heap （堆）。它由起始地址开始，从低位向高位增长。堆的一个重要特点就是不会自动消失，必须手动释放，或者由垃圾回收机制回收。</p><p>Stack</p><p>除了 Heap 外，其他的内存占用叫做 Stack （栈）。</p><p>栈是由于函数运行而临时占用的内存区域。</p><p>栈是由内存区域的结束地址开始，从高位向低位分配。</p><h4 id="CPU-指令"><a href="#CPU-指令" class="headerlink" title="CPU 指令"></a>CPU 指令</h4><p>push 指令：push 指令用于将运算子放入 Stack</p><p>call 指令：call 指令用来调用函数</p><p>mov 指令：mov 指令用于将一个值写入某个寄存器</p><p>add 指令：add 指令用于将两个运算子相加，并将结果写入第一个运算子</p><p>pop 指令：pop 指令用于去除 Stack 最近一个写入的值（即最低位地址的值），并将这个值写入运算子指定的位置</p><p>ret 指令：ret 指令用于终止当前函数的执行，将运行权交还给上层函数，也就是当前函数的帧将被回收</p><p>拓展：<a href="http://www.cs.virginia.edu/~evans/cs216/guides/x86.html" target="_blank" rel="noopener">x86 Assembly Guide</a></p><p>#EOF</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="技术" scheme="https://ultrarex.com/categories/%E6%8A%80%E6%9C%AF/"/>
    
      <category term="汇编" scheme="https://ultrarex.com/categories/%E6%8A%80%E6%9C%AF/%E6%B1%87%E7%BC%96/"/>
    
    
      <category term="汇编" scheme="https://ultrarex.com/tags/%E6%B1%87%E7%BC%96/"/>
    
  </entry>
  
  <entry>
    <title>Bartender3</title>
    <link href="https://ultrarex.com/p/d03f.html"/>
    <id>https://ultrarex.com/p/d03f.html</id>
    <published>2018-08-16T04:39:02.000Z</published>
    <updated>2019-05-01T04:55:13.013Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>还在忍受状态栏杂乱不堪么？<br>还在忍受状态栏不能显示全状态么？<br>还在忍受状态栏占用了大部分县市区域么？</p><p>快启动 Bartender 3 ，把一切烦忧抛之脑后吧。</p><p>入手 Bartender 3，你买不了吃亏，买不了上当，你买到的是实实在在的畅心。</p><p>让我们看看 Bartender 3 有何高招吧～</p><p>启动 Bartender 3 前状态栏：</p><p><img src="/img/Bartender_status_1.png" alt></p><p>启动 Bartender 3 后状态栏：</p><p><img src="/img/Bartender_status_2.png" alt></p><p>你的世界从此瞬间简洁明朗。</p><p>它可以将优先级低的、不需要经常展示的统统收到二级状态栏中，一键切换：</p><p><img src="/img/Bartender_status.gif" alt></p><p>数学老师说了显然得出这是一款拯救状态栏的神器，不但可以隐藏，还可以优雅的隐藏，你还在等什么？快点击<a href="https://www.macbartender.com" target="_blank" rel="noopener">这里</a>一探究竟吧。</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="好物推荐" scheme="https://ultrarex.com/categories/%E5%A5%BD%E7%89%A9%E6%8E%A8%E8%8D%90/"/>
    
      <category term="软件" scheme="https://ultrarex.com/categories/%E5%A5%BD%E7%89%A9%E6%8E%A8%E8%8D%90/%E8%BD%AF%E4%BB%B6/"/>
    
    
      <category term="Mac App" scheme="https://ultrarex.com/tags/Mac-App/"/>
    
  </entry>
  
  <entry>
    <title>ToothFairy</title>
    <link href="https://ultrarex.com/p/8c72.html"/>
    <id>https://ultrarex.com/p/8c72.html</id>
    <published>2018-08-12T04:31:32.000Z</published>
    <updated>2019-05-01T04:46:02.168Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p>AirPods 作为目前苹果推出的最好用的蓝牙耳机，其优秀的续航，轻巧的机身，连接的便利性无一不深受用户的喜爱。但是在 Mac 上连接 AirPods 还有些许的不便，共需要两个步骤：</p><ol><li>点击状态栏音频图标，展开设备列表</li></ol><p><img src="/img/ToothFairy_devices_list.png" alt></p><ol start="2"><li>选择 AirPods</li></ol><p>虽然只需要两步，看似简单，却没有了 iOS 设备上那种轻轻一点就连接上的便利性。同时在点击连接之后你也不知道到底有没有连接成功，如果是 iOS 设备的话，设备的状态栏上会出现一个类似于 🎧 的图标，而 Mac 上则没有，如果您正在公共场合使用，当点击播放的时候，AirPods 却没有连接成功，好不尴尬😅。</p><p>那么有没有一个小工具可以给你 iOS 那种便利的体验呢？答案是：有，这就是今天的主角「ToothFairy」。</p><p><img src="/img/ToothFairy_Preferences.jpg" alt></p><p>它的设置界面非常简单，左侧会出现连接过的蓝牙设备，右侧是一些简单的设置，比如可以设置状态栏图标：</p><p><img src="/img/ToothFairy_icons.png" alt></p><p>是否显示剩余电量：在 AirPods 打开/连接时，状态栏就会显示充电盒/耳机剩余电量，十分方便。</p><p><img src="/img/ToothFairy_status_1.png" alt><br><img src="/img/ToothFairy_status_2.png" alt></p><p>此外，它还有一些高级功能，比如说：连接成功后执行脚本、断开连接后执行脚本等，可以给你充分的自定义需求。</p><p><img src="/img/ToothFairy_Additional.jpg" alt></p><p>如果您现在就安装了 ToothFairy 那么只需要轻轻的在状态栏上一点，您的 AirPods 就连接上了您的 Mac，如果您设置了热键，手都不需要离开键盘，在您忙碌的码字/编码时可谓是好不方便。</p><p>此款 App 在 <a href="https://itunes.apple.com/cn/app/toothfairy/id1191449274?l=en&amp;mt=12" target="_blank" rel="noopener">Mac App Store</a> 有售。</p><p>⚠️ 内置 W1 芯片的 BeatsX、Beats Solo3 wireless 同样适用。</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="好物推荐" scheme="https://ultrarex.com/categories/%E5%A5%BD%E7%89%A9%E6%8E%A8%E8%8D%90/"/>
    
      <category term="软件" scheme="https://ultrarex.com/categories/%E5%A5%BD%E7%89%A9%E6%8E%A8%E8%8D%90/%E8%BD%AF%E4%BB%B6/"/>
    
    
      <category term="Mac App" scheme="https://ultrarex.com/tags/Mac-App/"/>
    
  </entry>
  
  <entry>
    <title>iMazing</title>
    <link href="https://ultrarex.com/p/9def.html"/>
    <id>https://ultrarex.com/p/9def.html</id>
    <published>2018-08-12T03:29:30.000Z</published>
    <updated>2019-05-01T04:48:14.174Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=g0183nh7j59" allowfullscreen="true" width="100%" height="600px"></iframe><blockquote><p>向那些疯狂的家伙们致敬，<br>他们特立独行，<br>他们桀骜不驯，<br>他们惹是生非，<br>他们格格不入，<br>他们用与众不同的眼光看待事物，<br>他们即不喜欢墨守成规，<br>也不愿意安于现状。</p><p>你尽可以引用他们，<br>否定他们，<br>颂扬抑或是诋毁他们，<br>但唯独不能漠视他们，<br>因为他们改变了事物，<br>让人类向前跨越了一大步。</p><p>或许他们是别人眼中的疯子，<br>但他们却是我们眼中的天才。<br>因为只有那些疯狂到以为自己能够改变世界的人，<br>才能真正地改变世界。</p></blockquote><p>时至今日，Mac 走入我们的生活已经 34 年，无论你是否拥有 Mac，都不可否认它改变了我们的生活，改变了世界。而真正让它改变世界的却是 Mac 背后的你们 —— 开发者、摄影师、艺术家等……</p><p>所以我决定写一写 Mac 上那些可以助你一臂之力的 App，今天先从 iMazing 开始。</p><p><img src="/img/iMazing_1.jpg" alt></p><h3 id="iMazing-是什么？"><a href="#iMazing-是什么？" class="headerlink" title="iMazing 是什么？"></a>iMazing 是什么？</h3><p><img src="/img/iMazing_2.jpg" alt></p><p>iMazing 是迄今为止 Mac 和 PC 上“最好用的” iOS 设备管理器，相比于难用的 iTunes 它不知道高到哪儿里去了。毕竟 iTunes 作为一款主打音乐管理而非 iOS 设备管理的软件，在管理 iOS 设备等诸多方面上显得太力不从心，不符合我们的使用习惯。</p><h3 id="iMazing-高在哪儿？"><a href="#iMazing-高在哪儿？" class="headerlink" title="iMazing 高在哪儿？"></a>iMazing 高在哪儿？</h3><p>详细的介绍请点击<a href="https://imazing.com/zh" target="_blank" rel="noopener">这里</a>了解，这里简单介绍下它的几大杀手锏：</p><h4 id="更人性化的备份"><a href="#更人性化的备份" class="headerlink" title="更人性化的备份"></a>更人性化的备份</h4><p>虽然苹果支持通过 iCloud 来备份您的 iOS 设备，当您设置好备份周期，在您的 iOS 设备闲置充电时它就会自动备份，但是总是要受限于网络状况，当网络不畅时，备份就相当痛苦。而且 iCloud 云空间免费容量只有 5G，根本不够存放 iOS 设备备份，如果需要使用 iCloud 来存放备份还需要额外支付扩容费用，目前我在使用的容量是 200G 每月 21 元。</p><p>而 iMazing 早已经为您考虑周全，它也支持类似于 iCloud 那样的增量备份，只需一次完整备份，之后的备份就能只传输数据有变化的部分，节省大量备份时间和存储空间。同时还支持自由的更改备份存储位置，比如保存到移动硬盘、NAS。</p><p>同时更自由的自动备份也是它的一大特色。您可以设定备份周期为每天、每周还是每月，也可以设置具体的备份时间段，同时还有手机电量高于多少才执行备份选项，再配合其 Wi-Fi 连接功能，让您执行备份不受限于数据线，随心所欲。</p><p><img src="/img/iMazing_3.jpg" alt></p><p><img src="/img/iMazing_4.jpg" alt></p><h4 id="更便捷的迁移数据"><a href="#更便捷的迁移数据" class="headerlink" title="更便捷的迁移数据"></a>更便捷的迁移数据</h4><p><img src="/img/iMazing_5.jpg" alt></p><p>设置您的新 iOS 设备，无需 iTunes 或 iCloud，即可传输现有内容。虽然 iOS 支持了设备靠近来传输，但还是依赖于 iCloud。iMazing 相比起来操作就十分简单了，只需要 3 步即可完成数据迁移：1. 通过 USB 将两台设备连接至电脑；2. 启动 iMazing 的设备间传输助手；3. 等待 iMazing 将内容拷贝至新设备。</p><h4 id="更熟悉的文件传输方式"><a href="#更熟悉的文件传输方式" class="headerlink" title="更熟悉的文件传输方式"></a>更熟悉的文件传输方式</h4><p>想通过拖拽在 Mac 或 PC 上传输照片和音乐？</p><p><img src="/img/iMazing_6.jpg" alt></p><p>看似简单的操作，借助于 iTunes 却无法办到，因为它的同步逻辑太复杂难懂了。有了 iMazing 就完全不必担心了，选择喜欢的音乐/照片等，拖拽至相应的界面即可完成同步。同时还支持 iOS 设备同步到 Mac 或 PC，操作也是如此。</p><p>好了，暂时介绍这么多，更多强大好用的功能还需要您自己去探索。</p><h3 id="入手-iMazing-的好机会（不是广告）"><a href="#入手-iMazing-的好机会（不是广告）" class="headerlink" title="入手 iMazing 的好机会（不是广告）"></a>入手 iMazing 的好机会（不是广告）</h3><p><img src="/img/iMazing_7.jpg" alt></p><p>知道这款应用很久了，但都受制于自己懒一直没有购入使用，用着 iCloud 自身的备份，终于在它很久不能自动备份的 7 月 30 号，我入手了 iMazing ，从此打开了新世界的大门。这里还有个小插曲，我当时购买的时候是 99 元，然后本月（2018年8月），「数码荔枝正版软件」就联合开发商带来了 iMazing 史无前例的冰点促销，仅需 69 元，前两天无聊找客服抱怨了一下，没想到客服就主动答应退还了差价，这里必须要表扬一下「数码荔枝」，这么多年他们在推广正版软件的道路上有着功不可没的功劳。</p><p>今天也在这里宣传一下吧，只需 69 元就能入手这款让您脱离苦海的 iOS 设备管理工具，机会难得，你还在等什么？快去某宝搜索「数码荔枝正版软件」购买吧，啊哈哈~</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="好物推荐" scheme="https://ultrarex.com/categories/%E5%A5%BD%E7%89%A9%E6%8E%A8%E8%8D%90/"/>
    
      <category term="软件" scheme="https://ultrarex.com/categories/%E5%A5%BD%E7%89%A9%E6%8E%A8%E8%8D%90/%E8%BD%AF%E4%BB%B6/"/>
    
    
      <category term="Mac App" scheme="https://ultrarex.com/tags/Mac-App/"/>
    
  </entry>
  
  <entry>
    <title>世间真有时光机</title>
    <link href="https://ultrarex.com/p/22d4.html"/>
    <id>https://ultrarex.com/p/22d4.html</id>
    <published>2018-08-11T06:37:37.000Z</published>
    <updated>2019-04-27T15:27:25.515Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script>    <div id="aplayer-iTtvbUfQ" class="aplayer aplayer-tag-marker meting-tag-marker" data-id="00455rxO0cR80u" data-server="tencent" data-type="song" data-mode="circulation" data-autoplay="true" data-mutex="true" data-listmaxheight="340px" data-preload="auto" data-theme="#555"></div><p><br></p><p>有人说：假如这世上真有时光机，就如何如何。其实我想说这世间真有时光机 —— 相机 / 摄像机，也不必假如，把握好现在即可。</p><p>每一张照片、每一段影片，都是生活的快照，拥有的越多，回忆也就越多，也就越能回到过去。只不过需要用现在来回忆往昔，现在也终将会变成回忆罢了。</p><p><img src="/img/timemachine.jpg" alt></p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="生活" scheme="https://ultrarex.com/categories/%E7%94%9F%E6%B4%BB/"/>
    
    
      <category term="五月天" scheme="https://ultrarex.com/tags/%E4%BA%94%E6%9C%88%E5%A4%A9/"/>
    
  </entry>
  
  <entry>
    <title>当我们希望谷歌回归时，我们在希望些什么</title>
    <link href="https://ultrarex.com/p/acb1.html"/>
    <id>https://ultrarex.com/p/acb1.html</id>
    <published>2018-08-07T02:14:37.000Z</published>
    <updated>2019-04-27T15:21:06.588Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p><img src="/img/googlelogo_color_272x92dp.png" alt></p><p>2018年8月6日，人民日报在 Twitter &amp; Facebook 上发帖，针对谷歌计划以“特供版”搜索引擎回归中国大陆的消息回应称：欢迎谷歌重返中国大陆，但前提是必须遵守中国法律。</p><p>这一消息可谓是振奋人心，从而掀起一股谷歌回归会不会打败百度的讨论热潮。但是我想说，我们期待谷歌回归并不是为了打败 xx 公司，而是为我们提供一个可靠的获取信息的途径，同时给 xx 公司树立一个不作恶的榜样，让其见贤思齐焉，加速成长，共同进步。</p><p>当我们希望谷歌回归时，我们在希望什么？我想我们希望的是真正联通世界的网络、真实可靠的获取信息的途径、应有尽有的 Youtube 视频站点、好用的办公套件等等等等。它不仅仅是一家公司，而是一种工作方式、生活方式，它即将归来，你期待么？</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="碎碎念" scheme="https://ultrarex.com/categories/%E7%A2%8E%E7%A2%8E%E5%BF%B5/"/>
    
    
      <category term="Google" scheme="https://ultrarex.com/tags/Google/"/>
    
  </entry>
  
  <entry>
    <title>养儿不能防老，但防晒能</title>
    <link href="https://ultrarex.com/p/21f7.html"/>
    <id>https://ultrarex.com/p/21f7.html</id>
    <published>2018-07-30T05:08:10.000Z</published>
    <updated>2019-04-27T15:14:05.215Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="/assets/css/APlayer.min.css"><script src="/assets/js/APlayer.min.js" class="aplayer-secondary-script-marker"></script><script class="meting-secondary-script-marker" src="/assets/js/Meting.min.js"></script><p><img src="/img/sunscreen_1.jpg" alt></p><p>这张照片相信大家一定不陌生，没错，就是《新英格兰医学杂志》近期发布的，主人公是 66 岁的威廉·爱德华·麦克利戈特。他是一名送奶工，近30年来，他每天早上 6 点出门，下午 3 点才收工，开着卡车穿梭在芝加哥各超市和加油站之间。他左边的脸和胳膊靠近卡车的车窗，由于没有空调，他必须每天都开着窗，太阳直射进来，天长日久，他的左半边脸衰老得非常快。不光是脸，他的左边胳膊也显得比右边要黝黑许多。</p><p>是什么造成了威廉脸部的这种变化呢，就是紫外线 A （Ultraviolet Radiation A，简称 UVA），你可能会问了，紫外线难道还有分类么，是的，紫外线分为：紫外线 A、紫外线 B、紫外线 C。</p><ol><li>紫外线 C （UVC）：在光谱的范围跨越为 100 至 280 奈米，由于会被大气层所吸收，因此只有极少的量能够抵达地球的岩石表面。这种辐射光谱的特性是有杀菌能力，一般使用为杀菌灯；</li><li>紫外线 B （UVB）：范围为 280 至 315 奈米，它也会被大气层大量吸收，并且和紫外线 C 一起导致光化学反应制造出臭氧层，还会被普通玻璃所阻挡，主要由表皮吸收，可导致晒红和晒伤；</li><li>紫外线 A （UVA）：范围为 315 至 400 奈米，它在任何地区全年都存在，不仅可以穿透玻璃，而且 80% 的 UVA 可穿透真皮上部，作用于血管及其他组织，能被真皮中的黑色素、血红蛋白、胆红素吸收。可导致晒和和老化；</li></ol><p>由此可见真正对我们造成威胁的有紫外线 A （UVA）和紫外线 B （UVB），也就是我们要重点防护的对象，其中紫外线 A （UVA）是需要常年防护的，这也是一般防晒的误区，认为只有大太阳时才需要防晒。</p><p><img src="/img/sunscreen_2.jpg" alt></p><p>弄清楚了是什么无时不刻在危害我们的皮肤，那么如何防晒呢？<br>常见防晒方式：</p><ol><li>防晒霜、防晒喷雾</li><li>遮阳伞</li><li>防晒帽、防晒衣物</li></ol><p>其中，在挑选防晒霜、防晒喷雾的时候，经常会看到两个词 SPF &amp; PA ，这里简单说一下：</p><p>SPF 是防晒指数（Sun Protection Factor）是防晒用品对紫外线 B （UVB）的防护值，其后面跟的数值，表示延长晒红的时间倍数；<br>PA 是防护紫外线 A （UVA）（Protection Anti UVA）由日本化妆品工业联合会制定。以加号 “+” 来标示防护能力的强弱。</p><p>关于防晒产品的推荐我这里就不班门弄斧了，美妆达人一抓一大把，我只简单的分享下关于防晒的一些小知识，希望对你有所帮助。</p><p>对了多说一嘴，紫外线也是白内障的诱因，珍爱眼睛从配一副墨镜开始。</p>]]></content>
    
    <summary type="html">
    
      
      
        &lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; cla
      
    
    </summary>
    
      <category term="生活" scheme="https://ultrarex.com/categories/%E7%94%9F%E6%B4%BB/"/>
    
    
      <category term="防晒" scheme="https://ultrarex.com/tags/%E9%98%B2%E6%99%92/"/>
    
  </entry>
  
</feed>
