<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>面具熊小屋</title>
  <icon>https://example.com/img/myself.png</icon>
  
  <link href="https://example.com/atom.xml" rel="self"/>
  
  <link href="https://example.com/"/>
  <updated>2025-12-02T05:38:38.000Z</updated>
  <id>https://example.com/</id>
  
  <author>
    <name>面具熊</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>苹果拍摄的MOV格式转换问题</title>
    <link href="https://example.com/2025/12/02/%E8%8B%B9%E6%9E%9C%E6%8B%8D%E6%91%84%E7%9A%84MOV%E6%A0%BC%E5%BC%8F%E8%BD%AC%E6%8D%A2%E9%97%AE%E9%A2%98/"/>
    <id>https://example.com/2025/12/02/%E8%8B%B9%E6%9E%9C%E6%8B%8D%E6%91%84%E7%9A%84MOV%E6%A0%BC%E5%BC%8F%E8%BD%AC%E6%8D%A2%E9%97%AE%E9%A2%98/</id>
    <published>2025-12-02T09:00:00.000Z</published>
    <updated>2025-12-02T05:38:38.000Z</updated>
    
    <content type="html"><![CDATA[<p> 事情起因是公司同事找我说手机拍摄的视频文件，在公司电脑上无法播放。我一看估计就是苹果家.mov格式支持问题，于是用ffmpeg转换成.mp4格式想着就能播放了。然而事情没那么简单，至少尝试了有3轮，才最终搞定了该问题。写篇文章记录下该问题解决。</p><h3 id="第一次尝试"><a href="#第一次尝试" class="headerlink" title="第一次尝试"></a>第一次尝试</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ffmpeg -i E:\test.MOV E:\test.mp4</span><br></pre></td></tr></table></figure><p>什么参数都不添加的情况下，虽然转换出了MP4格式视频，但失败了✖️。怀疑是H264格式编码+音频编码问题，重新改下参数</p><h3 id="第二次尝试"><a href="#第二次尝试" class="headerlink" title="第二次尝试"></a>第二次尝试</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ffmpeg -i E:\test.MOV -c:v libx264 -c:a aac E:\test.mp4</span><br></pre></td></tr></table></figure><p>指定输出采用通用H264格式+acc音频解码，还是失败了✖️。没办法只能靠度娘了。</p><h3 id="第三次尝试"><a href="#第三次尝试" class="headerlink" title="第三次尝试"></a>第三次尝试</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ffmpeg -i E:\test.MOV -c:v libx264 -c:a aac -pix_fmt yuv420p E:\test.mp4</span><br></pre></td></tr></table></figure><p>终于搞定了☑️，看来windows media player像素格式只能用yuv420p才能搞定，以后再碰到这种需求就能避免踩坑了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt; 事情起因是公司同事找我说手机拍摄的视频文件，在公司电脑上无法播放。我一看估计就是苹果家.mov格式支持问题，于是用ffmpeg转换成.mp4格式想着就能播放了。然而事情没那么简单，至少尝试了有3轮，才最终搞定了该问题。写篇文章记录下该问题解决。&lt;/p&gt;
&lt;h3 id=&quot;第</summary>
      
    
    
    
    <category term="编程" scheme="https://example.com/categories/%E7%BC%96%E7%A8%8B/"/>
    
    
    <category term="FFmpeg" scheme="https://example.com/tags/FFmpeg/"/>
    
  </entry>
  
  <entry>
    <title>人生的第一把三模木坨坨-Null68</title>
    <link href="https://example.com/2025/11/06/%E4%BA%BA%E7%94%9F%E7%9A%84%E7%AC%AC%E4%B8%80%E6%8A%8A%E4%B8%89%E6%A8%A1%E6%9C%A8%E5%9D%A8%E5%9D%A8-Null68/"/>
    <id>https://example.com/2025/11/06/%E4%BA%BA%E7%94%9F%E7%9A%84%E7%AC%AC%E4%B8%80%E6%8A%8A%E4%B8%89%E6%A8%A1%E6%9C%A8%E5%9D%A8%E5%9D%A8-Null68/</id>
    <published>2025-11-05T23:29:00.000Z</published>
    <updated>2025-11-06T08:52:45.000Z</updated>
    
    <content type="html"><![CDATA[<p>已经不记得上次写文章是什么时候的事情了，工作和生活忙起来真的没啥时间静静的水一篇文章。而且之前就说过2025年，个人博客网站真的没啥人会看，属于是自嗨的一种方式。不过既然每年都在给网站续费，那还是要坚持没事写点东西放上去。空空荡荡总是不好。</p><span id="more"></span><hr><h2 id="起因"><a href="#起因" class="headerlink" title="起因"></a>起因</h2><p>回归正题，这个title我是抄的以前买Rainy75时的标题，只是把铝坨坨换成了木陀陀。而这把键盘是我最近捡漏咸鱼淘到的，曾经躺在我淘宝购物车里很久很久很久，但因为价格较高，而且我又不是什么键盘发烧友，加之一直传说木陀陀比较精贵，容易损伤啥的，所以一直没有下手。但这次键盘群里的老板突然清仓大甩卖，完美品相的三模木陀陀只要239元！！！还好我下手快，抢了一把，1分钟不到，老板放的所有货都被抢空了。大家的消费能力还是强啊！</p><p><img src="https://liudundun.top//%E7%A7%8D%E8%8D%89%E9%9B%86/%E6%9C%A8%E9%99%80%E9%99%80/%E6%B8%85%E4%BB%93%E7%94%A9%E5%8D%96.jpg" alt="清仓甩卖"></p><h2 id="包装"><a href="#包装" class="headerlink" title="包装"></a>包装</h2><p>下单没多久，很快我就收到了人生中第一把木陀陀。而且这同时也是我第一把从头开始组装的机械键盘，之前虽然买了两把Rainy75，但是都只是自己换轴和键帽，没有从PCB板，卫星轴，各种声音包开始组装。所以我对从头开始装一把键盘也是非常感兴趣，正好这次都能体验到了。</p><p><img src="https://liudundun.top//%E7%A7%8D%E8%8D%89%E9%9B%86/%E6%9C%A8%E9%99%80%E9%99%80/%E5%8C%85%E8%A3%85.jpg" alt="包装"></p><p>第一次打开客制化键盘的包装，果然和以前视频里看到的一样，一层又一层的泡棉，一袋又一袋的零件，大大小小的尽显逼格。让人一看到就觉得很高级，200多真值啊！</p><h2 id="键帽"><a href="#键帽" class="headerlink" title="键帽"></a>键帽</h2><p>有了键盘，理论上应该考虑的是轴体，再考虑键帽。但说实话，这把键盘我捡漏的很意外，一开始没准备添加设备的，但好在很早之前我就看中了一套『爱情故事』的键帽，这样就不用再挑选了。</p><p><img src="https://liudundun.top//%E7%A7%8D%E8%8D%89%E9%9B%86/%E6%9C%A8%E9%99%80%E9%99%80/%E6%8A%98%E6%97%A7%E7%9A%84%E6%83%85%E4%B9%A6.jpg" alt="折旧的情书"></p><p>当时刷小红书看到这套键帽时就很喜欢，收藏下来想着以后可以换掉红色键盘上的『折旧的情书』键帽的，毕竟键盘换一套键帽感觉就跟换把新键盘一样。而大部分跟红色键盘比较搭的键帽都同样适合木坨坨键盘。所以只要再选好轴木键盘就大功告成了。</p><h2 id="轴体"><a href="#轴体" class="headerlink" title="轴体"></a>轴体</h2><p>然后就是轴体的选择可把我难住了，再选轴体时我回忆了下之前自己用过的那些键盘，那些轴体表现。从最初Filco的cherry茶轴入坑，到FL870自己装的TTC静音茶轴，再到FL680的佳达隆cap黄跟风换了TTC金粉轴，最后因为深爱着金粉轴的手感，入了云炬红V2装到我的第一把铝坨坨。又防止办公室用吵到同事，第二把铝坨坨装了窗总的蝴蝶轴。总的来说，每当我想畅快打字时，我就会用云炬红的键盘，而怕扰民时就会换成蝴蝶轴键盘。有没有什么轴体能兼具云炬红的手感和蝴蝶的安静么？（理论上不存在，毕竟需要硅胶消音降噪，手感自然会变肉）<strong>但是</strong>地瓜（开发云炬红的老板）牛逼，出了一个YUMO静音轴,传说通过优化改进轴体结构，使得兼具了静音效果与云炬红的手感！简直是我心目中的理想轴体。那还有什么好犹豫的，冲爆！（PS：就是粉色的外壳感觉差点意思，不太配木坨坨🤦‍♂️）</p><h2 id="好事多磨"><a href="#好事多磨" class="headerlink" title="好事多磨"></a>好事多磨</h2><p>好吧，其实YUMO轴又ABCD四款，对应不同的压力克数，只有B款手感和云炬红一致，A款太轻，CD款偏重。B款又非常！非常！非常难产，并不是我想冲就能冲到的东西。没办法，只能潜水在地瓜的群里，每天看看有没有货，争取能抢点。闲鱼是一点机会都没有，只有人出ACD款的，B款是一点影子都没有。</p><p>这一等就是近1个月，我的键盘和键帽都要有一层浮灰了，我才终于抢到了70颗轴体，太难了！而且抢到没多久，就又售罄了，地瓜的产能真是堪忧。</p><p><img src="https://liudundun.top//%E7%A7%8D%E8%8D%89%E9%9B%86/%E6%9C%A8%E9%99%80%E9%99%80/yumo%E8%BD%B4.jpg" alt="yumo轴"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>凑齐了键盘，轴体，键帽后，终于可以按步骤组装键盘了。成品键盘非常的好看！木坨温润的触感太适合冬天使用了。最近天气越来越冷，铝坨坨们也该跟夏天的蚕丝被一样被好好收起来，待明年夏天再掏出来用了。</p><p>总的来说，这是一次非常意外，又充满愉悦的木坨坨装配体验。YUMO轴上手后也确实如同地瓜所说的那样是一款静音云炬红，手感非常棒，声音也几乎没有，静音轴手感天花板名不虚传，也不枉我费劲千辛万苦等它。这篇文章就是用它输入的，至于下次我还会爆流水账写点啥，那明年再说吧，今年估计不会再写文章了。</p><p><img src="https://liudundun.top//%E7%A7%8D%E8%8D%89%E9%9B%86/%E6%9C%A8%E9%99%80%E9%99%80/Null68.jpg" alt="Null68"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;已经不记得上次写文章是什么时候的事情了，工作和生活忙起来真的没啥时间静静的水一篇文章。而且之前就说过2025年，个人博客网站真的没啥人会看，属于是自嗨的一种方式。不过既然每年都在给网站续费，那还是要坚持没事写点东西放上去。空空荡荡总是不好。&lt;/p&gt;</summary>
    
    
    
    <category term="产品体验" scheme="https://example.com/categories/%E4%BA%A7%E5%93%81%E4%BD%93%E9%AA%8C/"/>
    
    
    <category term="键盘" scheme="https://example.com/tags/%E9%94%AE%E7%9B%98/"/>
    
    <category term="客制化" scheme="https://example.com/tags/%E5%AE%A2%E5%88%B6%E5%8C%96/"/>
    
    <category term="木陀陀" scheme="https://example.com/tags/%E6%9C%A8%E9%99%80%E9%99%80/"/>
    
    <category term="Null68" scheme="https://example.com/tags/Null68/"/>
    
  </entry>
  
  <entry>
    <title>日本名古屋游记</title>
    <link href="https://example.com/2025/04/02/%E6%97%A5%E6%9C%AC%E5%90%8D%E5%8F%A4%E5%B1%8B%E6%B8%B8%E8%AE%B0/"/>
    <id>https://example.com/2025/04/02/%E6%97%A5%E6%9C%AC%E5%90%8D%E5%8F%A4%E5%B1%8B%E6%B8%B8%E8%AE%B0/</id>
    <published>2025-04-02T12:00:00.000Z</published>
    <updated>2025-06-23T06:31:19.000Z</updated>
    
    <content type="html"><![CDATA[<p>距离上次写文章又过去了小半年时间了，说实话，自从上次发文章后，我时不时会去自己的网站上看下究竟又多少人访问。然而令人难过的是似乎整个网站只有我自己一个人会看。2025年的今天，个人博客真的是一个信息孤岛，一个属于自己的孤岛。</p><p>说回正题，由于这次我刚刚完成了为期五天的日本名古屋旅游，趁着自己还有些感受和想法，及时作为日记记录一下。说不定下次带儿子去玩的时候就能避开一些坑了。</p><h2 id="第一天"><a href="#第一天" class="headerlink" title="第一天"></a>第一天</h2><p>自从有了娃，每天都变得格外规律。出门游玩时也总是带着他一起亲子游，旅行前带娃的行程规划和纯大人的行程完全不一样。主要会考虑娃的喜好，娃的休息以及各种饮食交通工具等都要考虑，这样一来自由度几乎就没了（例如去年底在澳门过圣诞）。而这次日本名古屋之行由于只有我和我老婆两个年轻人，所以整体行程就可以紧凑点，强度高点。</p><h3 id="出发"><a href="#出发" class="headerlink" title="出发"></a>出发</h3><p>第一天，我们直接订了8：40分的航班，计划到日本吃中饭。所以4点多，天还没亮，我们就偷偷地爬起来，洗漱更衣，想着静悄悄地走。没想到还是偷溜失败，人还没走，娃就哭闹着起床找妈妈了🤦‍，好在一阵连哄带骗下，跟娃好好的暂别了。</p><p>6点多的浦东机场人办理值机的人还不是很多，非常顺利的通过安检后，又一次乘着小火车去卫星楼等待登机。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E5%90%8D%E5%8F%A4%E5%B1%8B%E4%B8%AD%E9%83%A8%E6%9C%BA%E5%9C%BA.jpg" alt="名古屋中部机场"></p><p>飞机落地已经是日本当地时间快12点了，提前准备好QR码的我们顺利通过了海关，拖着两个28寸的大箱子信心满满地按照攻略坐上了前往名古屋站的快速列车。然而名古屋站复杂的地下迷宫狠狠教育了刚刚下车的我们，之前做攻略时标注的地标和参考物在庞大的地下迷宫中根本无处寻觅，川流不息的人流更是让我们彻底失去了方向。</p><p>没办法，只能放弃原本的攻略，随机找家广告牌上13F的意大利面馆先填饱肚子再说。可就在我们拖着疲惫的身躯，好不容易找到了面馆后，前面写满2页等候人员名字的等位表让我们彻底放弃了，日本人真是太能排队了……随机找了个没人排队的寿司店，打发了我们到日本的第一餐。</p><h3 id="午餐"><a href="#午餐" class="headerlink" title="午餐"></a>午餐</h3><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E5%AF%BF%E5%8F%B8.jpg" alt="寿司"></p><p>整个寿司做的中规中矩，在这么多的寿司里面，我最爱的要数鳗鱼寿司了。不过对饥肠辘辘的我们来说，有的吃就很好了！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E7%AA%97%E5%A4%96%E6%99%AF%E8%89%B2.jpg" alt="窗外景色"></p><p>吃完了中餐，后面的酒店入住倒是异常顺利，草草将行李丢在小小的酒店房间后，第一时间我们就出发前往荣商圈了。</p><h3 id="买买买1"><a href="#买买买1" class="headerlink" title="买买买1"></a>买买买1</h3><p>这次来日本，一个最重要的目的就是给我老婆买包，所以我们第一站自然就是荣商圈的Chanel店了。这时就要说了，小红书的攻略+google map的导航太不靠谱了。我们往返多次跑到三越百货和松坂屋之间，一直没找到一楼的Chanel商铺，最后还是看了楼层示意图，才在二楼找到了此行目的地。后面就简单了，试背买单一气呵成！这次日本的主要目标GET！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/Chanel%E6%B0%B4.jpg" alt="Chanel水"></p><p>可惜遇到了松坂屋本馆装修，原计划给儿子买的东西今天就搁置了。由于晚上预定了20点的飞弹牛肉，我们奋战到了最后一分钟，匆匆忙忙的往地铁赶去。地铁站旁巧遇了露天表演，见识到了日本人打call的热情！平日里I到不行的日本人，没想到打起call来，现场氛围感拉满！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E9%9C%B2%E5%A4%A9%E8%A1%A8%E6%BC%94.jpg" alt="露天表演"></p><h3 id="晚餐"><a href="#晚餐" class="headerlink" title="晚餐"></a>晚餐</h3><p>晚餐定在了“飞弹牛一头家·马食一代”，好吃！真的很好吃！尤其是牛肉刺身，不同于以前在上海吃到的薄刺身，这次厚厚的牛肉刺身一点异味都没有，入口即化，鲜美极了！就是顶级牛肉吃到后面免不了都会感到有点腻，猛猛灌下一杯冰水，才舒坦点。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E9%A3%9E%E5%BC%B9%E7%89%9B1.jpg" alt="飞弹牛1"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E9%A3%9E%E5%BC%B9%E7%89%9B2.jpg" alt="飞弹牛2"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E9%A3%9E%E5%BC%B9%E7%89%9B3.jpg" alt="飞弹牛3"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E9%A3%9E%E5%BC%B9%E7%89%9B4.jpg" alt="飞弹牛4"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E9%A3%9E%E5%BC%B9%E7%89%9B5.jpg" alt="飞弹牛5"></p><h3 id="买买买2"><a href="#买买买2" class="headerlink" title="买买买2"></a>买买买2</h3><p>吃完了飞弹牛，看了眼时间，22点还不到，最近的唐吉诃德还开着，带着老婆就深夜暴走，冲！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E5%90%8D%E5%8F%A4%E5%B1%8B%E5%A4%9C%E6%99%AF.jpg" alt="名古屋夜景"></p><p>等回到酒店已经12点多了，拖着疲惫的身躯草草收拾一下，粘枕就睡着了。</p><h2 id="第二天"><a href="#第二天" class="headerlink" title="第二天"></a>第二天</h2><p>今天的行程是名古屋主要景点一日游，计划从热田神宫起，途径大须观音街，SuperKidsLand采购完，最后前往名古屋城，逛好晚上回名铁站吃鳗鱼饭，结束所有的行程。</p><p>7点不到，我们就起床洗漱准备出发了。先是按计划到名铁站附近的一家天然酵母面包店，想着解决早饭的。谁想到11点前，他们家都不提供面包……最后只能草草地在隔壁711解决了此行日本第一顿早餐🤦。</p><p>顺着地铁站里的提示，成功在机器上买好了一日通勤票（只要坐三次地铁就回本）。我们就前往了今天第一站，热田神宫。</p><h3 id="热田神宫"><a href="#热田神宫" class="headerlink" title="热田神宫"></a>热田神宫</h3><p>其实最初做攻略的时候，热田神宫并不在我的计划景点中，因为小红书都说这里是避雷景点。但反正今天有一天的时间逛吃逛吃，作为供奉草薙剑的三大神社之一，还是逛一下。</p><p>地铁站一出来，就看到了一棵开得很好看的樱花树，咔咔拍两张，就被老婆拉着继续前往神宫了。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E5%9C%B0%E9%93%81%E7%AB%99%E6%A8%B1%E8%8A%B1.jpg" alt="地铁站樱花"></p><p>我们进了神宫后，第一个前往的就是草薙馆，里面展示了很多太刀等日本古剑。并且还能亲手体验双持大太刀的感觉，有一说一大太刀真的是超级重！真不知道画作中日本先人是怎么挥舞砍杀的。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E8%80%81%E5%A9%86%E6%8B%8E%E5%89%91.jpg" alt="老婆拎剑"></p><p>逛完了小小的草薙馆，门口自动贩卖机上买了两瓶咖啡，坐在长椅上吹着小风，还是很惬意的！</p><p>稍坐片刻，我们继续神宫走览。周末早上神宫的人流量也不少，主要以本地人为主。看到许许多多人都去求个签，买个平安符。我们也凑个热闹，保佑我外公身体能健康起来（也不知道日本的神仙做不做跨国业务😌）</p><p>整个神宫感觉和国内寺庙差不多，大家都挺虔诚的。就是游览过程中正好看到了有神官给当地人新买的汽车，摩托车祈福，真是让我开眼了！这项业务国内各大寺庙道观也可以推广啊！</p><h3 id="大须观音-amp-大须观音街"><a href="#大须观音-amp-大须观音街" class="headerlink" title="大须观音&amp;大须观音街"></a>大须观音&amp;大须观音街</h3><p>大须观音街紧挨着大须观音，是日本三大电器街之一，也是我这次日本行最主要的购买地。草草给大须观音景点拍了张樱花照后，我和老婆就进商业街逛吃逛吃了。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E5%A4%A7%E9%A1%BB%E8%A7%82%E9%9F%B3.jpg" alt="大须观音"></p><p>离开入口不远，就看到了一家卖鲷鱼烧和当地特色五福饼的店。人气还挺旺的，由于已经临近中午，我们肚子也有点饿了，便进店堂食。</p><p>鲷鱼烧除了传统的豆沙口味外，还上了樱花季限定款。我这个人是看到限定款，必须试试的。好在虽然樱花口味听上去有点猎奇，但主题口感和味道 还是和豆沙很香，挺好吃的。至于五富饼，就像是涂了酱油的炸年糕，味道凑活儿，不会吃第二次了。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E9%B2%B7%E9%B1%BC%E7%83%A7.jpg" alt="鲷鱼烧"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E4%BA%94%E7%A6%8F%E9%A5%BC.jpg" alt="五福饼"></p><p>随便吃了点，垫垫肚子，就继续逛大须观音街了。整个商业街逛起来就很像之前在大阪的黑门市场，典型日本商业街的感觉，也没感到其他啥特别的。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E5%A4%A7%E9%A1%BB%E8%A7%82%E9%9F%B3%E8%A1%97.jpg" alt="大须观音街"></p><p>今天的中饭根据原计划就是随便吃吃，没啥特别的目标。所以在商业街尾找了家人气还不错的日式拉面店，草草打发了。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E6%97%A5%E5%BC%8F%E6%8B%89%E9%9D%A2.jpg" alt="日式拉面"></p><p>###买买买3</p><p>下午的第一站就是这次我日本采购的重点了，『SUPER KIDS LAND』。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/superkidsland.jpg" alt="superkidsland"></p><p>原计划，我这次带28寸的行李箱来，是要购买RG元祖2.0+MGSD的自由或者狼王的，但是！！我寄予厚望的『SUPER KIDS LAND』什么也没有！！！连一台过的去的高达都没有！！！最后只能买把神之手+辆TLV安慰下了。😞</p><h3 id="名古屋城"><a href="#名古屋城" class="headerlink" title="名古屋城"></a>名古屋城</h3><p>既然钢普拉没买到，那后面的行程就好好享受名古屋的美景了。这次来日本旅行运气真的不错，恰好赶上了名古屋的樱花季，名古屋城内外满开的樱花让人看了流连忘返！漂亮极了！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E6%A8%B1%E8%8A%B11.jpg" alt="樱花1"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E6%A8%B1%E8%8A%B12.jpg" alt="樱花2"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E6%A8%B1%E8%8A%B13.jpg" alt="樱花3"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E6%A8%B1%E8%8A%B14.jpg" alt="樱花4"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E6%A8%B1%E8%8A%B15.jpg" alt="樱花5"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E6%A8%B1%E8%8A%B16.jpg" alt="樱花6"></p><h3 id="晚餐-1"><a href="#晚餐-1" class="headerlink" title="晚餐"></a>晚餐</h3><p>赏完樱花，重拾了愉悦的心情来品尝早早预订的名古屋必吃特色美食──<strong>鳗鱼饭</strong>。</p><p>我对鳗鱼饭的印象完全来自于柯南里元太，动漫里每次元太的出场总是会宣传一遍鳗鱼饭是”世界第一“的美食！但说实话，我在国内为数不多的几次鳗鱼饭体验都觉得一般般。这次来名古屋，对于『鳗鱼饭』我还是非常期待的！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%97%85%E6%B8%B8/%E5%90%8D%E5%8F%A4%E5%B1%8B/%E9%B3%97%E9%B1%BC%E9%A5%AD.jpg" alt="鳗鱼饭"></p><p>名古屋的鳗鱼饭是有三种吃法的，将一整碗的鳗鱼饭分为4份，其中第一份直接品尝原味；第二份加入山葵和香葱伴着吃；第三份加入茶汤泡着吃。至于第四份则是上述三种吃法中挑一个自己最喜欢的口味，再吃一次。</p><p>从我自己喜好来看，我最爱的还是山葵和香葱！山葵微微的刺激感混合着香葱，整个鳗鱼饭吃起来别有风味！不得不说，比国内的鳗鱼饭强太多了！要不是后面的行程还有太多美食需要品尝，我觉得我可以连吃三天鳗鱼饭！</p><p>吃完了鳗鱼饭，直接回酒店休息了。由于明天预订了高山白川乡一日游，需要起早集合，所以要养好精神。</p><!--从日本回来后，就写到第二天的内容。现在时间已经是6月份了，果然一忙起来就来不及爆流水账了。后续的以后再更新吧--><h2 id="第三天"><a href="#第三天" class="headerlink" title="第三天"></a>第三天</h2><p>这次来日本，主要的旅游行程就是高山白川乡，或者说名古屋除了吃吃喝喝，周围的比较有名的旅游线路就是高山和白川乡了。简单在携程上报了一日游后，全程就跟着旅行团走了。今天最有意思和记忆深刻的就是兜遍白川乡没买到的高山牛奶（每月30号白川乡唯一的超市歇业），在高速公路的休息站超市买到了！生活真是处处惊喜！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;距离上次写文章又过去了小半年时间了，说实话，自从上次发文章后，我时不时会去自己的网站上看下究竟又多少人访问。然而令人难过的是似乎整个网站只有我自己一个人会看。2025年的今天，个人博客真的是一个信息孤岛，一个属于自己的孤岛。&lt;/p&gt;
&lt;p&gt;说回正题，由于这次我刚刚完成了为期</summary>
      
    
    
    
    <category term="个人日记" scheme="https://example.com/categories/%E4%B8%AA%E4%BA%BA%E6%97%A5%E8%AE%B0/"/>
    
    
    <category term="名古屋" scheme="https://example.com/tags/%E5%90%8D%E5%8F%A4%E5%B1%8B/"/>
    
    <category term="旅行" scheme="https://example.com/tags/%E6%97%85%E8%A1%8C/"/>
    
  </entry>
  
  <entry>
    <title>咖啡烘豆初体验</title>
    <link href="https://example.com/2024/12/09/%E5%92%96%E5%95%A1%E7%83%98%E8%B1%86%E5%88%9D%E4%BD%93%E9%AA%8C/"/>
    <id>https://example.com/2024/12/09/%E5%92%96%E5%95%A1%E7%83%98%E8%B1%86%E5%88%9D%E4%BD%93%E9%AA%8C/</id>
    <published>2024-12-08T23:29:00.000Z</published>
    <updated>2025-01-16T07:00:15.783Z</updated>
    
    <content type="html"><![CDATA[<h2 id="手冲咖啡"><a href="#手冲咖啡" class="headerlink" title="手冲咖啡"></a>手冲咖啡</h2><p>来新单位后，最明显的一点就是喜欢喝咖啡的同事多了不少。部门同事都喜欢中午在茶水间冲泡一杯现磨手冲精品咖啡，而且用的还是自己烘的咖啡豆。这让我了解到了烘咖啡豆是一件非常有趣且能节约成本的方案。毕竟同档次的咖啡豆，自己烘和购买成品差价能达到1倍以上。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/coffee/%E6%89%8B%E5%86%B2%E5%92%96%E5%95%A1.jpg" alt="手冲咖啡"></p><p>但是当我打开淘宝，查看各类烘豆机时，高达2k+的售价直接给我心底刚刚燃起的小火苗浇上了一盆冷水。不得不说，成品烘豆机实在是太贵了！不过就在我心灰意冷，刷B站时，一个up主<a href="https://www.bilibili.com/video/BV1CpmGYYE5g/?share_source=copy_web&vd_source=1047bd9784602f69d4239c9c780a1aba">手搓咖啡烘豆机</a>的系列视频又重新点燃了我的希望。</p><h2 id="DIY烘豆机"><a href="#DIY烘豆机" class="headerlink" title="DIY烘豆机"></a>DIY烘豆机</h2><p>第一时间加群，买齐配件，然后开始手搓！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/coffee/%E7%BB%84%E8%A3%85%E7%83%98%E8%B1%86%E6%9C%BA1.JPG" alt="组装烘豆机1"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/coffee/%E7%BB%84%E8%A3%85%E7%83%98%E8%B1%86%E6%9C%BA2.JPG" alt="组装烘豆机2"></p><p>总的来说，得益于群里大家组装时细致的查漏补缺，以及up主一个又一个耐心教学的视频，整个烘豆机的组装还算顺利！最后算下来我只花了400不到，就做好了一台带曲线控制的（后来发现自己烘自己喝，曲线其实没必要）咖啡烘豆机。</p><h2 id="烘豆初体验"><a href="#烘豆初体验" class="headerlink" title="烘豆初体验"></a>烘豆初体验</h2><p>既然烘豆机都已经组装好了，必须赶紧买咖啡生豆体验一下烘豆的快乐。</p><p>第一次烘豆我选了我最近特别爱喝的西达摩。500g生豆只要120块钱，对比100g熟豆120块钱的价格真是太便宜了！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/coffee/%E7%AC%AC%E4%B8%80%E6%AC%A1%E7%83%98%E8%B1%86.GIF" alt="第一次烘豆"></p><p>很快，我人生第一锅咖啡豆就出锅了。第一次烘豆难免会出纰漏，比如我这锅最初的照片发群里后，群里的大佬就指出咖啡豆可能没烘熟，不得已，我只能回锅再烘一下了。下面的照片是回锅重烘的状态，虽然风味丧失了很多，但还是满满的成就感。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/coffee/%E8%87%AA%E5%B7%B1%E7%83%98%E8%B1%86.jpg" alt="自己烘豆"></p><p>以上就是我的咖啡烘豆初体验了，现在距离我第一次烘咖啡豆又过去了2个月了，最初买的生豆基本豆烘完喝完了。目前看来整个降本方案非常成功，我也终于可以和同事一样，不用心疼价格的随便喝手冲咖啡了！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;手冲咖啡&quot;&gt;&lt;a href=&quot;#手冲咖啡&quot; class=&quot;headerlink&quot; title=&quot;手冲咖啡&quot;&gt;&lt;/a&gt;手冲咖啡&lt;/h2&gt;&lt;p&gt;来新单位后，最明显的一点就是喜欢喝咖啡的同事多了不少。部门同事都喜欢中午在茶水间冲泡一杯现磨手冲精品咖啡，而且用的还是自己烘</summary>
      
    
    
    
    <category term="DIY" scheme="https://example.com/categories/DIY/"/>
    
    
    <category term="咖啡烘豆机" scheme="https://example.com/tags/%E5%92%96%E5%95%A1%E7%83%98%E8%B1%86%E6%9C%BA/"/>
    
  </entry>
  
  <entry>
    <title>人生的第一把三模铝坨坨-Rainy75</title>
    <link href="https://example.com/2024/08/05/%E4%BA%BA%E7%94%9F%E7%9A%84%E7%AC%AC%E4%B8%80%E6%8A%8A%E4%B8%89%E6%A8%A1%E9%93%9D%E5%9D%A8%E5%9D%A8-Rainy75/"/>
    <id>https://example.com/2024/08/05/%E4%BA%BA%E7%94%9F%E7%9A%84%E7%AC%AC%E4%B8%80%E6%8A%8A%E4%B8%89%E6%A8%A1%E9%93%9D%E5%9D%A8%E5%9D%A8-Rainy75/</id>
    <published>2024-08-04T23:29:00.000Z</published>
    <updated>2024-10-15T02:38:02.428Z</updated>
    
    <content type="html"><![CDATA[<p>今年确实事情太多了，自己小站上的文章也许久没更新了。这次想写这篇产品体验的主要原因还是因为新入手了一把键盘。一把键盘的主要功能是什么？那肯定是输入文字啊。那这篇文章的出现就合情合理了，既能体验一下新键盘在大段码字时的感受，又能水一篇文章省的小破站吃灰。</p><hr><p>我发现最近我的文章都没法一口气写完，总是写了个开头，就因为生活，工作中的许许多多其他事情导致半途而废。现在是2024年10月12日了，我在我的文档库里看到了这篇只写了个开头的博文。算起来，新键盘也用了2个多月了，现在的我少了最初创作的激情，但我又不想一篇开天窗的文章放在库里。还是简单分享下吧。</p><h2 id="手感"><a href="#手感" class="headerlink" title="手感"></a>手感</h2><p>机械键盘最重要的一点，无非就是输入的手感（HiFi党除外哈）。之前我退役的FL680是单独换了TTC的金粉V2，那是我第一次感受低压力线性轴的魅力，每次文字输入时都仿佛轻抚键盘一般，文字就滔滔不绝的输入进文本。而这次我是在小黄鱼上淘的半成品改装雨75，原主人是改装了炸虾米声音包+增加额外3500mAh电池包，去掉了原厂轴和键帽。所以拿到套件后光是轴体的选择，我就纠结了3天，期间不停地在小红书和B站上刷了各种各样的轴体搭配。只能说现在的机械键盘圈真的太卷了，再也不是被当年cherry青茶红黑一统天下的状态了，许许多多新轴体跟雨后春笋一言冒出来，让人看得眼花缭乱。当然最终，在刷了无数文章视频的帮助下，我毅然决然选择地瓜新出的云炬红V2轴体，根据小红书与B站up主们的分享来看，云炬红V2轴体是金粉的完美替代与升级。事实证明，这波我赌对了，强！！实在是太强了！爽！!手感是真的好爽！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/rainy75/%E4%BA%91%E7%82%AC%E7%BA%A2V2.JPG" alt="云炬红V2"></p><p>这款轴体的手感在过去2个月的使用过程中，已经深深的征服了我。以至于我现在逢人买新键盘都无脑推荐这款轴体。我相信只要是喜欢用低压力线性轴的人没有一个会不喜欢它。</p><h2 id="声音"><a href="#声音" class="headerlink" title="声音"></a>声音</h2><p>说完了手感，再来谈谈声音的问题。其实早些年机械键盘并不怎么追求打字的声音，最多也就是段落轴，线性轴敲击在不通定位板上的声音差异罢了，但不知道什么时候开始，机械键盘圈子里也刮起一股HiFi风。什么石子音，麻将音，雨滴声等等，键盘的使用不仅仅只是触感上的追求，大家还同时追求听感上的享受。当然我自己还是优先保证手感的，只能说如果声音能更好听，那肯定是加分项了，这也是为啥我淘了这把改装炸虾米声音包的雨75的原因。</p><p>可能是因为声音包的原因，也有可能是雨75本身做工扎实，铝坨坨的先天优势。整把键盘在输入的时候，声音非常的扎实，即使云炬红V2这种被UP主们成为声音杂乱的轴体，在雨75的套件上表现的依旧让我满意，哒哒哒的声响，虽然还没到麻将音那么紧致，但干净利落很好听。再多的描述陷于我贫穷的词汇难以表达了，总之就是比我的老腹灵好听很多！</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>以上就是我这段时间体验新键盘的感受了，激情和冲动的褪去使我能更加客观的描述新键盘的表现。总得来说，我很满意，非常满意！如果现在有好友或者同事让我推荐机械键盘的话，我应该会无脑推荐雨75，毕竟400不到的价格能有这种实力的产品在我读大学那会真是想都不敢想。回首想起曾经年轻的自己购买大F（Filco 104键位茶轴）时指望着它能陪伴自己一辈子，而现在因为轴体进灰手感粘滞的问题，已经被我束之高阁了。也许有一天Rainy75 也会退役吧，但当下它就是我最爱用的键盘！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;今年确实事情太多了，自己小站上的文章也许久没更新了。这次想写这篇产品体验的主要原因还是因为新入手了一把键盘。一把键盘的主要功能是什么？那肯定是输入文字啊。那这篇文章的出现就合情合理了，既能体验一下新键盘在大段码字时的感受，又能水一篇文章省的小破站吃灰。&lt;/p&gt;
&lt;hr&gt;
&lt;</summary>
      
    
    
    
    <category term="产品体验" scheme="https://example.com/categories/%E4%BA%A7%E5%93%81%E4%BD%93%E9%AA%8C/"/>
    
    
    <category term="键盘" scheme="https://example.com/tags/%E9%94%AE%E7%9B%98/"/>
    
    <category term="客制化" scheme="https://example.com/tags/%E5%AE%A2%E5%88%B6%E5%8C%96/"/>
    
    <category term="Rainy75" scheme="https://example.com/tags/Rainy75/"/>
    
  </entry>
  
  <entry>
    <title>“我最爱的充电头居然失效了？”</title>
    <link href="https://example.com/2024/02/19/%E6%88%91%E6%9C%80%E7%88%B1%E7%9A%84%E5%85%85%E7%94%B5%E5%A4%B4%E5%B1%85%E7%84%B6%E5%A4%B1%E6%95%88%E4%BA%86%EF%BC%9F/"/>
    <id>https://example.com/2024/02/19/%E6%88%91%E6%9C%80%E7%88%B1%E7%9A%84%E5%85%85%E7%94%B5%E5%A4%B4%E5%B1%85%E7%84%B6%E5%A4%B1%E6%95%88%E4%BA%86%EF%BC%9F/</id>
    <published>2024-02-19T04:30:00.000Z</published>
    <updated>2024-02-19T08:24:36.975Z</updated>
    
    <content type="html"><![CDATA[<p>最近在使用MT3000路由器时，我发现酷态科的15号充电宝和家里许多15W以上的常规充电头都能正常给MT3000供电。然而，我随身携带的Anker 65W超能冲却无法供电，这引起了我的好奇心。</p><p>通过询问GLinet淘宝客服，我得知MT3000使用的不是PD的充电协议，应该是QC协议，但是根据快冲协议检测结果来看。Anker这款充电头也支持常规的QC3.0。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/anker%E5%85%85%E7%94%B5%E5%8D%8F%E8%AE%AE.jpg" alt="anker充电协议"></p><p>进一步调查QC协议规则后发现，QC2.0和QC3.0的区别在于：QC2.0协议输出的是5V、9V、12V、20V四组固定电压挡位，而QC3.0输出的是3.6V到20V的波动电压，两者触发方式也有显著差异。</p><p><img src="https://pic3.zhimg.com/v2-46d42f8c6b5d0c3e3bbaf8ea32f73c56_b.jpg" alt="QC协议工作原理"></p><p>Anker这款65W超能冲的PD2.0协议据查只支持9V和12V两档。因此，我推测MT3000的充电协议应该是采用了QC2.0的5V档进行供电，而Anker超能冲65W恰好不支持该档位的协议，导致无法给路由器供电。这一系列巧合凑在一起，才导致了这次“充电头失效”的意外。不过，正是因为这次意外，我又学到了不少充电协议相关知识，这个经历让我觉得很有趣，因此我想与大家分享。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;最近在使用MT3000路由器时，我发现酷态科的15号充电宝和家里许多15W以上的常规充电头都能正常给MT3000供电。然而，我随身携带的Anker 65W超能冲却无法供电，这引起了我的好奇心。&lt;/p&gt;
&lt;p&gt;通过询问GLinet淘宝客服，我得知MT3000使用的不是PD的充</summary>
      
    
    
    
    <category term="技术分享" scheme="https://example.com/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
    <category term="Anker" scheme="https://example.com/tags/Anker/"/>
    
    <category term="充电器" scheme="https://example.com/tags/%E5%85%85%E7%94%B5%E5%99%A8/"/>
    
  </entry>
  
  <entry>
    <title>2023年总结</title>
    <link href="https://example.com/2024/01/06/2023%E5%B9%B4%E6%80%BB%E7%BB%93/"/>
    <id>https://example.com/2024/01/06/2023%E5%B9%B4%E6%80%BB%E7%BB%93/</id>
    <published>2024-01-06T05:30:00.000Z</published>
    <updated>2024-05-18T14:52:50.554Z</updated>
    
    <content type="html"><![CDATA[<p>2023年对于我整个人生来说注定是非同寻常的一年。无论是墩墩的诞生，还是带娃的第一年经历，再到年终突然被告知的裁员。我的整个2023年真是可以用跌宕起伏来形容。而且自从娃出生后，一直没什么机会再更新我的博客，上篇文章的主体还是篇AI生成的水文章。</p><p>趁着年终了，对于这片互联网的自留地，我不更新个年终总结啥的，实在说不过去。</p><h2 id="年初"><a href="#年初" class="headerlink" title="年初"></a>年初</h2><p>年初的时候，老婆怀孕已经 30 周+了，每天基本都担心宝宝会不会突然降临。但事实证明还是我想多了，我们家墩墩一点没有要出来的意思，感觉在妈妈肚子里舒服极了。最后定在了 2 月 3 日，进行“强拆”！但由于疫情的原因，从我和老婆入住医院到墩墩诞生后的这几天，只能由我一个人单独陪同，说实话，当时我慌的一批。就怕照顾不好术后的老婆和刚刚诞生的小生命。好在在护工阿姨的帮助下，顶着两个熊猫眼，我成功坚持到了护送母子一起回家。说到这，突然想到术后的老婆流着冷汗一步步爬 5 楼的样子，心又揪起来了。孩子妈，你辛苦了！</p><p>然后再说说第一次见到墩墩时候的心情吧，激动的忘记了言语！感觉那一时刻的时空都停滞了，小家伙出生的时候长得太像我了，那小眼睛，小鼻子。简直和我一模一样！果然只有拥有自己的娃后，才能感受到那份独特的感受。当然结果就是我完全没注意到护士跟我说的宝宝的情况，毕竟我已经呆了。</p><h2 id="年中"><a href="#年中" class="headerlink" title="年中"></a>年中</h2><p>随着月嫂到期后的离去，整个家庭都围绕着墩墩忙碌了起来。家里面到处摆放的都是宝宝的东西，温奶器、消毒柜、奶瓶箱、尿布台……墩墩的到来给整个家庭都带来了翻天覆地的变化。</p><p>那会墩墩每天晚上都要起夜3次左右，而我和老婆的生物钟也很快越来越习惯起夜的频次。当然每天我上班的时候都必须靠喝两杯咖啡来撑着，不然真怕开会的时候，开着开着就睡着了。不过随着墩墩一天天长大，起夜次数也终于不用这么频繁了，我的作息也渐渐恢复之前的状态。</p><hr><blockquote><p><em>现在是2024年5月11日，看了眼之前写到一半的文章，突然发现已经过去了快小半年时间。有一说一，在年中写前一年总结确实不好，因为之前的回忆会随着时间淡化。缺少文字作为记忆点，我没法回到1月份写下笔时的状态了。所以简单续写下吧，顺便也梳理下这半年来我的新经历。</em></p></blockquote><h2 id="年底"><a href="#年底" class="headerlink" title="年底"></a>年底</h2><p>年中的时间过得很快，每天都过着两点一线，上班-下班-带娃的生活。平淡又幸福。直到5月多，我们一家子突然陆续感染了新冠（我们都是第一次得新冠），大家非常艰难地度过了2周，才慢慢痊愈。</p><p>再之后因为公司营业情况越来越恶化，周边一些熟悉的同事也被裁员，大家都进入了人人自危的状态。当然我当时的心态是如果我也真的被裁员了，正好趁此机会去外面的世界锻炼一下。毕竟我大学毕业后整个青春都给了它，我无法下决心主动离开。（Flag就是这么被立的(T_T)）</p><p>11月底，部门经理约我谈话了。但当时给我传达公司的规划非常的摇摆，希望我还是安心工作，所以我没有主动出去寻找新机会，而是继续保持着原来的上班节奏。但很显然，公司绩效的恶化终究还是要进行常规裁员操作。12月底，很突然，我接到了被裁通知。留给我的准备时间只有半个月，这下我慌了！只能赶紧投简历，找下家，争取无缝衔接。</p><p>于是每天我都在与新猎头认识，投简历，电话面试等等。在得知我不得不离开老东家的时候，我失眠了两天，但很快我的心态因为忙碌的找工作便顾不得难过了。直到我在落笔这篇年度总结前，我暂时找到了下家，于是我放松了下来，想写点东西记录下当时的心境。（现在的我没法回忆当时的心情了(-｡-;））</p><p>以上基本就是我2023年经历的许许多多的事情了。为什么会拖这么长时间才流水帐完，主要还是因为我进新公司后生活都被出差和加班填满了，剩下一点点有限的时间都抽出来陪娃了。</p><p>现在的我又换到了一家工作强度正常，离家近，可以照顾孩子成长的新单位。写完这篇给未来自己看的2023年总结，留下记忆的锚点。并希望未来儿子健康快乐成长，我自己的事业也越来越好！</p><p>完结撒花🎉</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;2023年对于我整个人生来说注定是非同寻常的一年。无论是墩墩的诞生，还是带娃的第一年经历，再到年终突然被告知的裁员。我的整个2023年真是可以用跌宕起伏来形容。而且自从娃出生后，一直没什么机会再更新我的博客，上篇文章的主体还是篇AI生成的水文章。&lt;/p&gt;
&lt;p&gt;趁着年终了，</summary>
      
    
    
    
    <category term="个人日记" scheme="https://example.com/categories/%E4%B8%AA%E4%BA%BA%E6%97%A5%E8%AE%B0/"/>
    
    
  </entry>
  
  <entry>
    <title>Python调用OpenAI GPT4-vision API方式</title>
    <link href="https://example.com/2023/11/12/2023-11-12-Python%E8%B0%83%E7%94%A8OpenAI-GPT4-vision-API%E6%96%B9%E5%BC%8F/"/>
    <id>https://example.com/2023/11/12/2023-11-12-Python%E8%B0%83%E7%94%A8OpenAI-GPT4-vision-API%E6%96%B9%E5%BC%8F/</id>
    <published>2023-11-12T09:30:00.000Z</published>
    <updated>2023-11-24T08:13:25.362Z</updated>
    
    <content type="html"><![CDATA[<p>自从有了娃之后，抽空写文章的时间越来越少。看了下自己上一篇发布的博客文章已经是今年7月份了，一晃4个月时间就过去了。</p><p>最近因为OpenAI发布会，跟着热点尝试用python调用GPT4-vision的接口，看看如今AI识图究竟能做到什么程度。尝试之后感觉非常的惊艳，照这个发展速度，每个人拥有专属“贾维斯”的时代很快就能到来了。</p><h2 id="Python代码"><a href="#Python代码" class="headerlink" title="Python代码"></a>Python代码</h2><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><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> base64</span><br><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line"><span class="comment"># OpenAI API Key</span></span><br><span class="line">api_key = <span class="string">&quot;$API key&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Function to encode the image</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">encode_image</span>(<span class="params">image_path</span>):</span><br><span class="line">    <span class="keyword">with</span> <span class="built_in">open</span>(image_path, <span class="string">&quot;rb&quot;</span>) <span class="keyword">as</span> image_file:</span><br><span class="line">        <span class="keyword">return</span> base64.b64encode(image_file.read()).decode(<span class="string">&#x27;utf-8&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># Path to your image</span></span><br><span class="line">image_path = <span class="string">&quot;$image path&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Getting the base64 string</span></span><br><span class="line">base64_image = encode_image(image_path)</span><br><span class="line"></span><br><span class="line">headers = &#123;</span><br><span class="line">    <span class="string">&quot;Content-Type&quot;</span>: <span class="string">&quot;application/json&quot;</span>,</span><br><span class="line">    <span class="string">&quot;Authorization&quot;</span>: <span class="string">f&quot;Bearer <span class="subst">&#123;api_key&#125;</span>&quot;</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">payload = &#123;</span><br><span class="line">    <span class="string">&quot;model&quot;</span>: <span class="string">&quot;gpt-4-vision-preview&quot;</span>,</span><br><span class="line">    <span class="string">&quot;messages&quot;</span>: [</span><br><span class="line">      &#123;</span><br><span class="line">        <span class="string">&quot;role&quot;</span>: <span class="string">&quot;user&quot;</span>,</span><br><span class="line">        <span class="string">&quot;content&quot;</span>: [</span><br><span class="line">          &#123;</span><br><span class="line">            <span class="string">&quot;type&quot;</span>: <span class="string">&quot;text&quot;</span>,</span><br><span class="line">            <span class="string">&quot;text&quot;</span>: <span class="string">&quot;可以使用中文对识图要求进行描述&quot;</span></span><br><span class="line">          &#125;,</span><br><span class="line">          &#123;</span><br><span class="line">            <span class="string">&quot;type&quot;</span>: <span class="string">&quot;image_url&quot;</span>,</span><br><span class="line">            <span class="string">&quot;image_url&quot;</span>: &#123;</span><br><span class="line">              <span class="string">&quot;url&quot;</span>: <span class="string">f&quot;data:image/jpeg;base64,<span class="subst">&#123;base64_image&#125;</span>&quot;</span></span><br><span class="line">            &#125;</span><br><span class="line">          &#125;</span><br><span class="line">        ]</span><br><span class="line">      &#125;</span><br><span class="line">    ],</span><br><span class="line">    <span class="string">&quot;max_tokens&quot;</span>: <span class="number">300</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">response = requests.post(<span class="string">&quot;https://api.openai.com/v1/chat/completions&quot;</span>, headers=headers, json=payload)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(response.json())</span><br></pre></td></tr></table></figure><p>先放代码，这段代码也是从网上抄来的。稍作修改，非常可行。下面就放些AI识图的效果演示。</p><h2 id="案例1"><a href="#案例1" class="headerlink" title="案例1"></a>案例1</h2><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/ai%E8%AF%86%E5%9B%BE/%E6%A1%88%E4%BE%8B1.jpg" alt="罗马街景"></p><ul><li><p>结果</p><p>  这张照片显示了一条有电车轨道的街道，电车上有意大利语广告，表明照片很可能是在意大利某个城市拍摄的。街道两侧是一排欧式建筑风格的建筑物。从光线看，可能是在傍晚时分拍摄的。电车是绿色的，上面有”NUOVO LEROY MERLIN SALARIA”的字样，意味着可能是在罗马拍摄的，因为Salaria是罗马的一条街道。电车还带有”NUOVA VOLGIA DI FARE.”的标语，这是一个建材超市Leroy Merlin的广告宣传语。整体上，这张照片传达出一个典型意大利城市街道的日常景象。</p></li></ul><h2 id="案例2"><a href="#案例2" class="headerlink" title="案例2"></a>案例2</h2><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/ai%E8%AF%86%E5%9B%BE/%E6%A1%88%E4%BE%8B2.jpg" alt="地标建筑"></p><ul><li><p>结果</p><p>  这张图片显示的是一座具有精细金属构架和大量玻璃窗的宏伟穹顶结构。穹顶的设计通常与19世纪晚期的建筑风格相符合，这种风格强调了装饰艺术和使用钢铁及玻璃等工业时代的新材料。</p><p>  根据您的提示(<strong>提示在米兰拍摄</strong>），这张照片很可能是在意大利米兰的一处地标性建筑拍摄的。考虑到米兰著名的建筑和地点，以及照片中穹顶的特点，有很大的可能是在米兰的Galleria Vittorio Emanuele II（埃马努埃莱二世长廊）中拍摄的。这是一座著名的19世纪购物长廊，以它的豪华和建筑之美而知名。</p></li></ul><h2 id="案例3"><a href="#案例3" class="headerlink" title="案例3"></a>案例3</h2><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/ai%E8%AF%86%E5%9B%BE/%E6%A1%88%E4%BE%8B3.jpg"></p><ul><li><p>结果<br>  这张图片显示了一条典型的窄巷，在黄昏或傍晚时分拍摄。巷子里没有人，墙壁显现出一些剥落的油漆<br>  或老化的迹象。一些灯光亮着，为这个空旷的场景提供了温暖的光线。</p><p>  （<strong>误导在米兰拍摄，实际是威尼斯拍摄</strong>）虽然没有具体的地标显示这个照片可能是在米兰拍摄的，但是这个场景更可能是意大利的某个老城区的一部分，米兰也许有类似的街道，但这个照片的风格和氛围与威尼斯或其他意大利历史悠久的城市里的小巷相似。威尼斯尤其以其狭窄的水道和小巷著称。如果这个场景确实位于米兰，它可能位于该市的一个老区域，具有传统的意大利建筑风格。</p></li></ul><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>这次测试仅是针对AI根据图片信息识别地点的能力，其他方面暂时没有尝试。但效果显而易见，非常强！期待未来AI能力越来越强，配合具有视频拍摄功能的眼镜等只能穿戴设备，实现真正意义上增强现实生活的效果。后续我会继续尝试其他AI相关的能力，可能也会作为水文章填充下冷冷清清的博客吧。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;自从有了娃之后，抽空写文章的时间越来越少。看了下自己上一篇发布的博客文章已经是今年7月份了，一晃4个月时间就过去了。&lt;/p&gt;
&lt;p&gt;最近因为OpenAI发布会，跟着热点尝试用python调用GPT4-vision的接口，看看如今AI识图究竟能做到什么程度。尝试之后感觉非常的</summary>
      
    
    
    
    <category term="编程" scheme="https://example.com/categories/%E7%BC%96%E7%A8%8B/"/>
    
    
    <category term="Python" scheme="https://example.com/tags/Python/"/>
    
    <category term="AI" scheme="https://example.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>Ubuntu系统上手美化</title>
    <link href="https://example.com/2023/07/10/2023-07-10-Ubuntu%E7%B3%BB%E7%BB%9F%E4%B8%8A%E6%89%8B%E7%BE%8E%E5%8C%96/"/>
    <id>https://example.com/2023/07/10/2023-07-10-Ubuntu%E7%B3%BB%E7%BB%9F%E4%B8%8A%E6%89%8B%E7%BE%8E%E5%8C%96/</id>
    <published>2023-07-10T09:30:00.000Z</published>
    <updated>2023-08-09T01:03:40.529Z</updated>
    
    <content type="html"><![CDATA[<p>写在开头，这篇文章是从<a href="https://blog.imfing.com/2020/06/ubuntu-18-04-theme-terminal-setup/">Ubuntu 美化与终端配置 - Fing’s Blog (imfing.com)</a>这篇文章中节选出适用我自己配置ubuntu server的内容。重新复制这篇文章的主要原因是方便自己未来重装系统后配置美化用。所有对配置文章感兴趣的小伙伴，请参考Fing‘ Blog的原文。</p><h2 id="终端配置"><a href="#终端配置" class="headerlink" title="终端配置"></a>终端配置</h2><p>首先安装 <a href="https://www.zsh.org/">zsh</a> 并通过 <code>chsh</code> 命令将其设置为默认的 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><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 安装 zsh</span></span><br><span class="line">sudo apt install zsh</span><br><span class="line"></span><br><span class="line"><span class="comment"># 确认 zsh 安装成功</span></span><br><span class="line"><span class="built_in">which</span> zsh</span><br><span class="line"></span><br><span class="line"><span class="comment"># 设置为默认 Shell</span></span><br><span class="line">chsh -s /usr/bin/zsh</span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看当前shell</span></span><br><span class="line"><span class="built_in">echo</span> <span class="variable">$SHELL</span></span><br></pre></td></tr></table></figure><h2 id="安装-Oh-My-Zsh"><a href="#安装-Oh-My-Zsh" class="headerlink" title="安装 Oh My Zsh"></a>安装 Oh My Zsh</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sh -c <span class="string">&quot;<span class="subst">$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)</span>&quot;</span></span><br></pre></td></tr></table></figure><h2 id="配置Zsh"><a href="#配置Zsh" class="headerlink" title="配置Zsh"></a>配置Zsh</h2><ul><li><p>安装Powerlevel10k主题</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></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> --depth=1 https://github.com/romkatv/powerlevel10k.git <span class="variable">$&#123;ZSH_CUSTOM:-~/.oh-my-zsh/custom&#125;</span>/themes/powerlevel10k</span><br><span class="line"></span><br><span class="line">vim ~/.zshrc</span><br></pre></td></tr></table></figure><p>  在<code>.zshrc</code>文件中设置<code>ZSH_THEME=&quot;powerlevel10k/powerlevel10k&quot;</code></p><p>  安装Powerlevel10k的推荐字体（如果终端能正常显示图标，就不需要安装）</p><ul><li><a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf">MesloLGS NF Regular.ttf</a></li><li><a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf">MesloLGS NF Bold.ttf</a></li><li><a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf">MesloLGS NF Italic.ttf</a></li><li><a href="https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf">MesloLGS NF Bold Italic.ttf</a></li></ul></li><li><p>安装zsh插件</p><ul><li><a href="https://github.com/zsh-users/zsh-autosuggestions">zsh-autosuggestions</a></li><li><a href="https://github.com/zsh-users/zsh-syntax-highlighting">zsh-syntax-highlighting</a></li></ul>  <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">git <span class="built_in">clone</span> https://github.com/zsh-users/zsh-autosuggestions <span class="variable">$&#123;ZSH_CUSTOM:-~/.oh-my-zsh/custom&#125;</span>/plugins/zsh-autosuggestions</span><br><span class="line">git <span class="built_in">clone</span> https://github.com/zsh-users/zsh-syntax-highlighting.git <span class="variable">$&#123;ZSH_CUSTOM:-~/.oh-my-zsh/custom&#125;</span>/plugins/zsh-syntax-highlighting</span><br><span class="line"></span><br><span class="line">vim ~/.zshrc</span><br></pre></td></tr></table></figure><p>  在<code>.zshrc</code>文件中设置<code>plugins=(git zsh-autosuggestions zsh-syntax-highlighting)</code></p></li><li><p>更新 zsh 配置文件</p>  <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">source</span> ~/.zshrc</span><br></pre></td></tr></table></figure></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;写在开头，这篇文章是从&lt;a href=&quot;https://blog.imfing.com/2020/06/ubuntu-18-04-theme-terminal-setup/&quot;&gt;Ubuntu 美化与终端配置 - Fing’s Blog (imfing.com)&lt;/a&gt;这篇文章</summary>
      
    
    
    
    <category term="编程" scheme="https://example.com/categories/%E7%BC%96%E7%A8%8B/"/>
    
    
    <category term="ubuntu" scheme="https://example.com/tags/ubuntu/"/>
    
    <category term="美化" scheme="https://example.com/tags/%E7%BE%8E%E5%8C%96/"/>
    
    <category term="zsh" scheme="https://example.com/tags/zsh/"/>
    
  </entry>
  
  <entry>
    <title>DIY NAS</title>
    <link href="https://example.com/2023/06/23/DIY-NAS/"/>
    <id>https://example.com/2023/06/23/DIY-NAS/</id>
    <published>2023-06-23T09:30:00.000Z</published>
    <updated>2023-07-07T15:54:20.646Z</updated>
    
    <content type="html"><![CDATA[<p>继五月份购入了中年人三好的充电器之后，趁着六月份 618 活动，“油腻”如我又折腾起了 NAS。（其实还有软路由，但是软路由毕竟还是不适合放在内网上分享，所以我还是先分享一下 DIY NAS 的过程吧。对我这个中年人来说，过程可以说是相当艰辛了。当然现在配置完毕后，耍起来非常愉快！</p><span id="more"></span><h2 id="配置选择"><a href="#配置选择" class="headerlink" title="配置选择"></a>配置选择</h2><p>既然要 DIY NAS，那首先就是要确定配置清单了。其实我自己本身有一台当初闲鱼淘来的矿难垃圾『暴风酷播云』，它的配置如下：</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/DIY_NAS/%E6%9A%B4%E9%A3%8E%E9%85%B7%E6%92%AD%E4%BA%91.jpg" alt="暴风酷播云"></p><p>其实这套配置用起来没什么问题，就是两盘位在过去的使用过程中明显感觉不太够了，所以趁着这次 DIY NAS 的机会，直接 4 盘位走起。当然这次突然 DIY NAS 的起因也是因为无聊的时候刷闲鱼，突然发现了 B 站是喵大佬的<a href="https://www.bilibili.com/video/BV1hm4y1b75U/?share_source=copy_web&vd_source=1047bd9784602f69d4239c9c780a1aba">开源 4 盘位马里奥机箱方案</a>，一见倾心，再见剁手……</p><p>因为机箱已经确定了，接下来就是配合机箱选主板，电源等硬件了。考虑到这次怎么说都是一次升级，再用 J3455 就有点说不过去了，无论如何都得把性能再升级一波。但是我又已经习惯了群晖的操作系统，原生 moments 是真的好用，所以考虑到核显兼容性问题，我这次闲鱼淘了一块 i3-8100 的 CPU 作为 NAS 的核心，完美兼顾了性能，兼容性和功耗问题。由于预算不高，围绕着 i3-8100 构建剩余的硬件，除电源，风扇外，其他硬件均走闲鱼。最终我这次的 NAS 配置如下：</p><p>![DIYNAS配置](<a href="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/DIY_NAS/DIYNAS%E9%85%8D%E7%BD%AE">https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora本地图床/DIY_NAS/DIYNAS配置</a>.<br>    jpg)</p><p>其实我也是一阵剁手，剁完了算总价才发现已经接近成品 NAS 的价格了……不多说了，跪榴梿去了&#x2F;(ㄒ o ㄒ)&#x2F;~~</p><h2 id="装机"><a href="#装机" class="headerlink" title="装机"></a>装机</h2><p>其实 DIY 最享受的就是 DIY 的过程了，但这次的 NAS 由于是整个机箱设计的非常极限。各个位置留下的间隙非常小，整个机箱一旦装配完毕后，卡的会非常紧。导致一旦装配出了点错误，要拆开这个盒子就非常非常非常的痛苦。下面是我这次装机遇到的问题和踩过得坑。</p><ul><li><p><strong>硬盘笼背板装反</strong></p><p>这个我要重点说下！因为这个错误，我得整个主机全拆了，再重装一边！就是下图中绿色部分，上下颠倒了。我是完全装配完毕后，才发现硬盘怎么插，都没法正确连接背板！！当场心态爆炸，啊啊啊啊啊！虽然背板电源和 Sata 线都已经接好，理好了。没办法，只能全拆了！！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/DIY_NAS/%E8%A3%85%E9%85%8D%E9%94%99%E8%AF%AF.jpg" alt="错误装配"></p></li><li><p>硬盘笼背板距离机箱风扇太近</p><p>  由于整个机箱的体积控制的非常极限，所以硬盘笼在装入内壳后，硬盘背板和风扇的距离太近了。加上按风道设计要求机箱风扇要反装，这就导致两根大 4Pin 电源线和 4 根 Sata 线距离存在和机箱风扇干涉的问题，继而 NAS 一启动，后面就咔擦咔擦响。只能拆出来，重新紧固好线材。来回好几次，才保证线材不会和风扇干涉。</p></li><li><p>机身设计的间隙太小</p><p>  整个 NAS 的外壳可以理解为是三层嵌套的壳体。分别是硬盘笼套在白色内壳里，而内壳又套在黄色外壳里。根据群里是喵大佬的说法，设计间隙就 0.2mm……再加上材质收缩，可想而知整个壳体在<strong>拆</strong>装的时候有多痛苦。要让我形容下痛苦的程度，那就是为了把内壳抽出来，我整整花了 20 分钟……</p></li><li><p>电源接口位置台阶</p><p>  不知道是 3D 打印的精度问题还是原始设计问题，我的益衡电源接口没法正常的固定在内壳上，壳体的内侧有一个台阶会和电源口干涉。由于装机的时候手边没有锉刀，只能斜着安装电源了。还好不影响使用，只是有点逼死强迫症。</p></li></ul><h2 id="完工"><a href="#完工" class="headerlink" title="完工"></a>完工</h2><p>在经历和克服了诸多苦难之后，终于是成功点亮机子了。看到整个DIY NAS别致的外观，加上安静无比的工作状态，付出这么多的艰辛都是值得了。这台NAS我最满意的一点，就是颜值。考虑到今年我可爱的儿子出生了，总想在家里多添置点有趣的东西丰富他的成长环境！而比起传统傻大黑粗的NAS，这次的马里奥机箱真是太好看了！再次感谢是喵大佬设计出如此有趣的东西！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/DIY_NAS/%E6%88%90%E5%93%81.jpg" alt="成品展示"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;继五月份购入了中年人三好的充电器之后，趁着六月份 618 活动，“油腻”如我又折腾起了 NAS。（其实还有软路由，但是软路由毕竟还是不适合放在内网上分享，所以我还是先分享一下 DIY NAS 的过程吧。对我这个中年人来说，过程可以说是相当艰辛了。当然现在配置完毕后，耍起来非常愉快！&lt;/p&gt;</summary>
    
    
    
    <category term="DIY" scheme="https://example.com/categories/DIY/"/>
    
    
    <category term="NAS" scheme="https://example.com/tags/NAS/"/>
    
  </entry>
  
  <entry>
    <title>Hexo butterfly主题添加RSS插件</title>
    <link href="https://example.com/2023/05/12/Hexo_RSS%E6%8F%92%E4%BB%B6%E9%85%8D%E7%BD%AE/"/>
    <id>https://example.com/2023/05/12/Hexo_RSS%E6%8F%92%E4%BB%B6%E9%85%8D%E7%BD%AE/</id>
    <published>2023-05-12T11:00:00.000Z</published>
    <updated>2023-05-15T06:43:42.632Z</updated>
    
    <content type="html"><![CDATA[<p>由于我自己是一个 RSS 信息流的忠实用户，所以自己的博客怎么能没有 RSS 的信息流订阅方式呢！本文参考网上诸多教材，记录一下自己的 Hexo 博客网站 butterfly 主题配置 RSS 的过程。</p><span id="more"></span><h2 id="插件选择"><a href="#插件选择" class="headerlink" title="插件选择"></a>插件选择</h2><p>根据 butterfly 主题的进阶教程里插件推荐，可以使用<a href="https://github.com/hexojs/hexo-generator-feed">hexo-generator-feed</a>插件进行 RSS feed 的制作。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/image-20230515140411461.png" alt="image-20230515140411461"></p><p>于是根据<a href="https://github.com/hexojs/hexo-generator-feed">hexo-generator-feed</a>的官方教程，一步步进行插件配置。</p><h2 id="hexo-根目录安装插件并配置"><a href="#hexo-根目录安装插件并配置" class="headerlink" title="hexo 根目录安装插件并配置"></a>hexo 根目录安装插件并配置</h2><ol><li><p>进入 hexo 的根目录，执行如下命令进行插件安装</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-generator-feed --save</span><br></pre></td></tr></table></figure></li><li><p>根据官方建议配置 hexo 根目录的_config.yml 文件，再_config.yml 文件末尾添加如下配置信息</p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="attr">feed:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span> <span class="comment">#是否启用插件</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">atom</span> <span class="comment">#有atom和rss2两个选项，使用默认atom就好了</span></span><br><span class="line">  <span class="attr">path:</span> <span class="string">atom.xml</span> <span class="comment">#也用默认配置atom.xml就行</span></span><br><span class="line">  <span class="attr">limit:</span> <span class="number">20</span> <span class="comment">#展示文章的数量,使用 0 或 false 代表展示全部</span></span><br><span class="line">  <span class="attr">hub:</span> <span class="comment">#这个我没用上，根据官网，空着就行</span></span><br><span class="line">  <span class="attr">content:</span> <span class="comment">#默认是false，true的话会在rss文件中包含整个文章内容</span></span><br><span class="line">  <span class="attr">content_limit:</span> <span class="number">140</span> <span class="comment">#摘要长度</span></span><br><span class="line">  <span class="attr">content_limit_delim:</span> <span class="string">&#x27; &#x27;</span> <span class="comment">#没看明白官方的意思，就跟着默认不填了</span></span><br><span class="line">  <span class="attr">order_by:</span> <span class="string">-date</span> <span class="comment">#采用日期进行排序</span></span><br><span class="line">  <span class="attr">icon:</span> <span class="string">icon.png</span> <span class="comment">#给rss链接配置icon</span></span><br><span class="line">  <span class="attr">autodiscovery:</span> <span class="literal">true</span> <span class="comment">#自动发现提要</span></span><br><span class="line">  <span class="attr">template:</span> <span class="comment">#给rss文章配置模板</span></span><br></pre></td></tr></table></figure><p>为防止我的理解有问题，下面放上官方原文：</p><ul><li><strong>path</strong> - Feed path. When both types are specified, path must follow the order of type value. (Default: atom.xml&#x2F;rss2.xml)</li><li><strong>limit</strong> - Maximum number of posts in the feed (Use <code>0</code> or <code>false</code> to show all posts)</li><li><strong>hub</strong> - URL of the PubSubHubbub hubs (Leave it empty if you don’t use it)</li><li><strong>content</strong> - (optional) set to ‘true’ to include the contents of the entire post in the feed.</li><li><strong>content_limit</strong> - (optional) Default length of post content used in summary. Only used, if <strong>content</strong> setting is false and no custom post description present.</li><li><strong>content_limit_delim</strong> - (optional) If <strong>content_limit</strong> is used to shorten post contents, only cut at the last occurrence of this delimiter before reaching the character limit. Not used by default.</li><li><strong>order_by</strong> - Feed order-by. (Default: -date)</li><li><strong>icon</strong> - (optional) Custom feed icon. Defaults to a gravatar of email specified in the main config.</li><li>autodiscovery - Add feed autodiscovery. (Default: true)<ul><li>Many themes already offer this feature, so you may also need to adjust the theme’s config if you wish to disable it.</li></ul></li><li>template - Custom template path(s). This file will be used to generate feed xml file, see the default templates: atom.xml and rss2.xml.<ul><li>It is possible to specify just one custom template, even when this plugin is configured to output both feed types,</li></ul></li></ul></li></ol><h2 id="主题目录配置文件"><a href="#主题目录配置文件" class="headerlink" title="主题目录配置文件"></a>主题目录配置文件</h2><ol><li><p>在 butterfly 主题目录下的_config.yml 文件内添加配置内容：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">rss:</span> <span class="string">/atom.xml</span></span><br></pre></td></tr></table></figure></li><li><p>在_config.yml 文件中找到 social settings 项，添加如下内容。（这样主页就能正确显示 RSS 图标了）</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">fas fa-rss:</span> <span class="string">https://你的域名地址/atom.xml</span></span><br></pre></td></tr></table></figure></li></ol><h2 id="大功告成"><a href="#大功告成" class="headerlink" title="大功告成"></a>大功告成</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo clean &amp;&amp; hexo g &amp;&amp; hexo d</span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">&lt;p&gt;由于我自己是一个 RSS 信息流的忠实用户，所以自己的博客怎么能没有 RSS 的信息流订阅方式呢！本文参考网上诸多教材，记录一下自己的 Hexo 博客网站 butterfly 主题配置 RSS 的过程。&lt;/p&gt;</summary>
    
    
    
    <category term="技术分享" scheme="https://example.com/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"/>
    
    
    <category term="博客美化" scheme="https://example.com/tags/%E5%8D%9A%E5%AE%A2%E7%BE%8E%E5%8C%96/"/>
    
    <category term="RSS" scheme="https://example.com/tags/RSS/"/>
    
  </entry>
  
  <entry>
    <title>闪极67w麦金塔充电器使用体验</title>
    <link href="https://example.com/2023/05/12/%E9%97%AA%E6%9E%8167w%E9%BA%A6%E9%87%91%E5%A1%94%E5%85%85%E7%94%B5%E5%99%A8%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C/"/>
    <id>https://example.com/2023/05/12/%E9%97%AA%E6%9E%8167w%E9%BA%A6%E9%87%91%E5%A1%94%E5%85%85%E7%94%B5%E5%99%A8%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C/</id>
    <published>2023-05-12T04:50:00.000Z</published>
    <updated>2023-05-12T07:59:04.851Z</updated>
    
    <content type="html"><![CDATA[<p>都说互联网时代中年男性油腻的三大特征：充电器，路由器和 NAS，不得不说有点道理。起码人到中年的我对这三个产品都非常感兴趣，也购入了不少，之前还特地写了篇<a href="https://post.smzdm.com/p/a9gqk2v0/">自用的充电头文章</a>投稿到了张大妈。而最近我的日常充电器又添加了新成员，就是闪极四月份最新发布的 Retro67 充电器。</p><span id="more"></span><h2 id="购买原因"><a href="#购买原因" class="headerlink" title="购买原因"></a>购买原因</h2><p>其实这次购买新充电器的原因还要追溯到半年前，那会我的数码设备在充电的时候只能共享一个充电插座，而我的 65W 多口充电器又被老婆大人征用了，意味着每次我冲完手机或者 iPad，如果需要冲电脑就得去换个高功率的充电头。或者不换充电头，但得更换充电线（什么时候苹果才能所有接口都换成 TypeC 啊！！！）所以那时候我就计划再入一款多口的 65w 以上充电器，最好 C 口多点（我现有的 ZMI 的 65W 充电头是 1 个 C，2 个 A，无法做到同时手机与电脑快冲，一直感觉很遗憾）</p><h2 id="上手体验"><a href="#上手体验" class="headerlink" title="上手体验"></a>上手体验</h2><p>最早知道闪极这个品牌是因为他们家硬核的充电宝。有一说一，要不是高昂的价格，只说产品外观和性能还是非常吸引人的。也是因为这个产品，闪极在我的印像中一直就是产品设计优秀但价格也很高的非性价比之选品牌。而 Retro67 这款充电器也是这样一款产品。首发 269 元的价格实在是和性价比没什么关系！</p><h3 id="包装"><a href="#包装" class="headerlink" title="包装"></a>包装</h3><p>但等到产品实际到手后，便能发现整体产品从包装开始的细节，确实对得起产品售价。四四方方的小盒子上正面印着产品外观，侧边则是作为卖点之一的绿色数字雨，属于是直男看到就会被吸引的设计。而包装下方的封条，以及开启后的阻尼，体验都非常棒！<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E9%97%AA%E6%9E%8167w%E5%85%85%E7%94%B5%E5%99%A8/%E5%8C%85%E8%A3%85.JPG" alt="闪极充电器"></p><h3 id="产品实物"><a href="#产品实物" class="headerlink" title="产品实物"></a>产品实物</h3><p>打开包装，充电器就静静地躺在底座上像台麦金塔电脑小手办一样，「好看！非常好看！喜欢！非常喜欢！」这就是我对它的第一印象，从内而外透出的精致，复古太戳中我了！如果你也喜欢这种设计风格的产品，相信我，Retro 肯定能满足你。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E9%97%AA%E6%9E%8167w%E5%85%85%E7%94%B5%E5%99%A8/%E5%85%85%E7%94%B5%E5%99%A8.jpg" alt="闪极充电器"></p><h3 id="数字雨"><a href="#数字雨" class="headerlink" title="数字雨"></a>数字雨</h3><p>迫不及待插到插座上看下数字雨显示效果，整体亮度不是很高，非常低调优雅。接入负载后能够实时的显示充电功率，彻底解决了我的充电焦虑。不知道有没有人和我一样，每次充电的时候，总是好奇是不是当时的充电功率到底是多少？是不是正常快冲了？负载和充电器是不是正常握手了？可以说，闪极又一次戳中了我的痛点（当然，为了解决这个焦虑，我之前还特地买了 USB 电压表……）<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E9%97%AA%E6%9E%8167w%E5%85%85%E7%94%B5%E5%99%A8/%E6%95%B0%E5%AD%97%E9%9B%A8.JPG" alt="闪极充电器"></p><h3 id="充电协议"><a href="#充电协议" class="headerlink" title="充电协议"></a>充电协议</h3><p>既然我有 USB 电压表，没道理不测试下充电协议的支持，看看是不是和官方介绍的一样全。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E9%97%AA%E6%9E%8167w%E5%85%85%E7%94%B5%E5%99%A8/%E5%85%85%E7%94%B5%E5%8D%8F%E8%AE%AE.jpg" alt="闪极充电器"><br>从测试结果来看，这款充电器除了没有小米的快冲协议，其他该有的都有了，这样看来，它应该是我手边目前充电协议最全的充电器了！好感又添了几分！</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>如果说之前的 Retro 单口 35w 充电头只是颜值吸引我的话，闪极新的 Retro 67W 充电头真是太实用了，无论是三个随意插都能满功率的 TypeC 口，还是可以直接显示充电功率的点阵屏，加上超复古的外观，都是吸引我的点。到手后，做工、品质、充电协议之全都超棒！虽然价格在同类产品中不算便宜，但我觉得物有所值！如果预算足够，65w+的充电器里，我非常推荐它！毕竟你想买了个手办，它居然还能充电，而且充电协议还特别全，想想都赚是吧！</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;都说互联网时代中年男性油腻的三大特征：充电器，路由器和 NAS，不得不说有点道理。起码人到中年的我对这三个产品都非常感兴趣，也购入了不少，之前还特地写了篇&lt;a href=&quot;https://post.smzdm.com/p/a9gqk2v0/&quot;&gt;自用的充电头文章&lt;/a&gt;投稿到了张大妈。而最近我的日常充电器又添加了新成员，就是闪极四月份最新发布的 Retro67 充电器。&lt;/p&gt;</summary>
    
    
    
    <category term="产品体验" scheme="https://example.com/categories/%E4%BA%A7%E5%93%81%E4%BD%93%E9%AA%8C/"/>
    
    
    <category term="充电器" scheme="https://example.com/tags/%E5%85%85%E7%94%B5%E5%99%A8/"/>
    
    <category term="闪极" scheme="https://example.com/tags/%E9%97%AA%E6%9E%81/"/>
    
  </entry>
  
  <entry>
    <title>DIY个单片机，优雅地“偷”数据吧！</title>
    <link href="https://example.com/2023/04/19/DIY%E5%8D%95%E7%89%87%E6%9C%BA/"/>
    <id>https://example.com/2023/04/19/DIY%E5%8D%95%E7%89%87%E6%9C%BA/</id>
    <published>2023-04-19T09:00:00.000Z</published>
    <updated>2023-06-25T08:24:58.727Z</updated>
    
    <content type="html"><![CDATA[<h2 id="起因"><a href="#起因" class="headerlink" title="起因"></a>起因</h2><p>最近因为个人项目需要，要将不允许联网的主机里数据库的数据发送至远程服务器。考虑到既然主机无法联网，不如用单片机作为中间人，通过串口将数据发送给单片机，再由联网的单片机将数据发送至服务器。这不就完美实现“偷数据”的操作了么！说干就干！</p><span id="more"></span><h2 id="主机数据抓取"><a href="#主机数据抓取" class="headerlink" title="主机数据抓取"></a>主机数据抓取</h2><p>既然要将数据发送至单片机，那首先我得先拿到数据。由于主机是离线且最高权限状态，果断装一个python环境（这样可以先分析一波数据，将异常值与有效的数据进行区分后选择发送），通过pyserial和pymssql进行数据抓取。详细的代码就不列了，说下在过程中碰到的一个坑。</p><p>最开始由于python程序中没有设计发送截至符，所以测试时，单片机无法确定数据截至位置在哪，导致发送至远端服务器的数据都是断断续续的。而在主程序中添加截至符发送后，完美解决该问题。</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> serial</span><br><span class="line"><span class="keyword">import</span> json</span><br><span class="line"><span class="keyword">import</span> pymssql</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_data</span>():</span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line">    <span class="keyword">return</span>(data)</span><br><span class="line"></span><br><span class="line"><span class="comment">#后续增加截至符的发送</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">deliver_data</span>():</span><br><span class="line">    myChar=<span class="string">&#x27;#&#x27;</span></span><br><span class="line">    <span class="comment">#设置对应串口号与通讯波特率</span></span><br><span class="line">    ser = serial.Serial(port=<span class="string">&quot;COM4&quot;</span>, baudrate=<span class="number">115200</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 将json格式进行转换后，发送</span></span><br><span class="line">    data=get_data()</span><br><span class="line">    comdata=json.dumps(data)</span><br><span class="line">    write_len = ser.write(comdata.encode())</span><br><span class="line">    ser.write(myChar.encode())</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;串口发出&#123;&#125;个字节。&quot;</span>.<span class="built_in">format</span>(write_len)) </span><br><span class="line">    ser.close()</span><br><span class="line">    </span><br><span class="line"><span class="keyword">def</span> <span class="title function_">main</span>():</span><br><span class="line">    deliver_data()</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&#x27;传输完毕&#x27;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__==<span class="string">&#x27;__main__&#x27;</span>:</span><br><span class="line">    main()</span><br></pre></td></tr></table></figure><p>对了，由于主机无法联网而且还是windows7操作系统，其实配置python环境也格外艰难！在趟过了各种坑后，成功运行抓数据的脚本时，我的眼角都湿润了。</p><h2 id="单片机程序编写"><a href="#单片机程序编写" class="headerlink" title="单片机程序编写"></a>单片机程序编写</h2><p>由于esp8266可以非常愉快的使用arduino框架进行开发，大大降低了我们这种萌新的上手难度。参考<a href="https://juejin.cn/post/7103089496052203557">《arduino(2)–通过ESP8266模块实现串口接收数据，使用TCP协议进行局域网通信》</a>文章，略作修改，就成功实现了串口数据的读取与发送。</p><figure class="highlight c"><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><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&quot;ESP8266WiFi.h&quot;</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">define</span> led 2</span></span><br><span class="line"><span class="type">const</span> <span class="type">char</span> *ssid     = <span class="string">&quot;wifi名称&quot;</span>;</span><br><span class="line"><span class="type">const</span> <span class="type">char</span> *password = <span class="string">&quot;wifi密码&quot;</span>;</span><br><span class="line"><span class="type">const</span> <span class="type">char</span> *host = <span class="string">&quot;服务器地址&quot;</span>;</span><br><span class="line">WiFiClient client;</span><br><span class="line"><span class="type">const</span> <span class="type">int</span> tcpPort = 服务器端口;</span><br><span class="line"><span class="type">static</span> String comdata = <span class="string">&quot;&quot;</span>;</span><br><span class="line"><span class="type">char</span> myChar=<span class="string">&#x27;#&#x27;</span>;</span><br><span class="line"><span class="type">void</span> <span class="title function_">setup</span><span class="params">()</span></span><br><span class="line">&#123;</span><br><span class="line">    Serial.begin(<span class="number">115200</span>);    </span><br><span class="line">    pinMode(led,OUTPUT);</span><br><span class="line">    delay(<span class="number">10</span>);</span><br><span class="line">    Serial.println();</span><br><span class="line">    Serial.print(<span class="string">&quot;Connecting to &quot;</span>);</span><br><span class="line">    Serial.println(ssid);</span><br><span class="line">    WiFi.begin(ssid, password);<span class="comment">//启动</span></span><br><span class="line">     <span class="comment">//在这里检测是否成功连接到目标网络，未连接则阻塞。</span></span><br><span class="line">    <span class="keyword">while</span> (WiFi.status() != WL_CONNECTED)</span><br><span class="line">    &#123;</span><br><span class="line">        delay(<span class="number">500</span>);</span><br><span class="line">    &#125;</span><br><span class="line"> <span class="comment">//几句提示</span></span><br><span class="line">    Serial.println(<span class="string">&quot;&quot;</span>);</span><br><span class="line">    Serial.println(<span class="string">&quot;WiFi connected&quot;</span>);</span><br><span class="line">    Serial.println(<span class="string">&quot;IP address: &quot;</span>);</span><br><span class="line">    Serial.println(WiFi.localIP());</span><br><span class="line">&#125;</span><br><span class="line"><span class="type">void</span> <span class="title function_">loop</span><span class="params">()</span></span><br><span class="line">&#123;</span><br><span class="line"><span class="comment">/******************串口接受数据************************/</span></span><br><span class="line">  <span class="keyword">while</span> (Serial.available() &gt; <span class="number">0</span> ) <span class="comment">// 串口收到字符数大于零。</span></span><br><span class="line">  &#123;</span><br><span class="line">    comdata = Serial.readStringUntil(myChar);</span><br><span class="line">  &#125;</span><br><span class="line"> <span class="comment">/******************串口打印数据************************/</span> </span><br><span class="line">  <span class="keyword">if</span>(comdata!=<span class="string">&quot;&quot;</span>)<span class="comment">//如果接受到数据</span></span><br><span class="line">  &#123;</span><br><span class="line">    client.print(comdata);<span class="comment">//向服务器发送数据 </span></span><br><span class="line">   &#125;</span><br><span class="line">   comdata=<span class="string">&quot;&quot;</span>;<span class="comment">//清空数据</span></span><br><span class="line">  <span class="keyword">if</span> (client.connected()) <span class="comment">//尝试访问目标地址，如果连接后LED灯灭,毕竟这种事情要低调</span></span><br><span class="line">    digitalWrite(led, HIGH);</span><br><span class="line">  <span class="keyword">else</span></span><br><span class="line">    digitalWrite(led, LOW);</span><br><span class="line"></span><br><span class="line">  <span class="keyword">while</span> (!client.connected())<span class="comment">//若未连接到服务端，则客户端进行连接。</span></span><br><span class="line">  &#123;</span><br><span class="line">    <span class="keyword">if</span> (!client.connect(host, tcpPort))<span class="comment">//实际上这一步就在连接服务端，如果连接上，该函数返回true</span></span><br><span class="line">    &#123;</span><br><span class="line">       Serial.println(<span class="string">&quot;连接中....&quot;</span>);</span><br><span class="line">       delay(<span class="number">500</span>);</span><br><span class="line">    &#125;    </span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>事情到了这一步，整个流程其实已经完全跑通了，也成功实现了“偷”数据。但是主机后边插一根数据线，数据线再连接到一个大大的NodeMCU开发板上。实在太不优雅了！令我完全无法接受！</p><p>上淘宝看看有没有更简约的方案。似乎简单的USB转TTL通讯板+ESP-01s就能解决这个问题。果断买来换掉原方案。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%96%B9%E6%A1%88%E5%8D%87%E7%BA%A7.jpg" alt="方案升级"></p><p>然而，想象的很美好，这个方案却有一个致命问题，那就是通讯不稳定。导致主机的数据无法正确发送到单片机上。为此我还特地找来两台主机上分别实验了一下，其中一台能够正常通讯，另一台就一直失败。而旧方案相比之下就非常稳定，都能成功偷发数据。初步怀疑可能是新方案供电不稳定导致的，但是没有继续验证，如果有大佬懂得，麻烦告知一下，谢谢！</p><h2 id="DIY单片机"><a href="#DIY单片机" class="headerlink" title="DIY单片机"></a>DIY单片机</h2><p>既然现有方案无法满足我的需求，那只有一条路了！自己制作一个小巧玲珑，性能稳定的单片机。像我这样的萌新，直接开干，那肯定是不可能的了，还是得上开源硬件平台看看有没有大佬已经做过类似的项目。成功仿造一个，不就成了么！</p><p><a href="https://oshwhub.com/moguiliue/usb-esp8266">usb-esp8266 - 嘉立创EDA开源硬件平台 (oshwhub.com)</a></p><p>感谢moguiliue大佬开源的项目，直接打板，开干！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E9%93%81%E6%9D%BF%E7%83%A7.GIF" alt="铁板烧"></p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E4%BB%BF%E9%80%A0.JPG" alt="仿造"></p><p>大佬的方案确实可以！成品能够稳定运行，完美满足我的需求。不过过程中发现原设计USB公头位置的PCB会有干涉问题（不知道是不是我买的元器件不对🤦‍）。每套主板前端都要把干涉的位置用锉刀磨掉，才能焊上USB头。有点费力</p><p>而且这个方案只能满足最基本的数据通讯，没有将其他GPIO口引出，导致后续无法外接传感器或者显示屏。虽然优雅，但可玩性又差点意思。<strong>怎么办？</strong></p><h2 id="DIY单片机2-0"><a href="#DIY单片机2-0" class="headerlink" title="DIY单片机2.0"></a>DIY单片机2.0</h2><p>既要优雅，又要能扩展，不如参考大佬的思路，自己再从头设计一版！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%96%B0%E8%AE%BE%E8%AE%A1.JPG" alt="新设计"></p><p>自己从头设计的开发板，将原有CH340G的方案改为CH340C，省下外围晶振电路的空间，增加一个4pin母座用于引出I2C通讯。由于原设计的走线和布局很难改动了，只能重构整体。目前进度是已打板，但还未制作。希望等材料到了之后，这块自己第一次从头设计的单片机能成功运行！</p><h3 id="2023-x2F-4-x2F-23-update"><a href="#2023-x2F-4-x2F-23-update" class="headerlink" title="2023&#x2F;4&#x2F;23 update:"></a>2023&#x2F;4&#x2F;23 update:</h3><p>今天终于把自己第一次设计的单片机做出来了，一切运行正常，开心~<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/DIY%E5%8D%95%E7%89%87%E6%9C%BA.JPEG" alt="新设计"><br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E5%8D%95%E7%89%87%E6%9C%BA%E8%BF%90%E8%A1%8C.GIF" alt="新设计"></p>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;起因&quot;&gt;&lt;a href=&quot;#起因&quot; class=&quot;headerlink&quot; title=&quot;起因&quot;&gt;&lt;/a&gt;起因&lt;/h2&gt;&lt;p&gt;最近因为个人项目需要，要将不允许联网的主机里数据库的数据发送至远程服务器。考虑到既然主机无法联网，不如用单片机作为中间人，通过串口将数据发送给单片机，再由联网的单片机将数据发送至服务器。这不就完美实现“偷数据”的操作了么！说干就干！&lt;/p&gt;</summary>
    
    
    
    <category term="DIY" scheme="https://example.com/categories/DIY/"/>
    
    
  </entry>
  
  <entry>
    <title>腹灵FL680使用体验</title>
    <link href="https://example.com/2022/07/07/%E8%85%B9%E7%81%B5FL680%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C/"/>
    <id>https://example.com/2022/07/07/%E8%85%B9%E7%81%B5FL680%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C/</id>
    <published>2022-07-06T23:29:00.000Z</published>
    <updated>2023-05-10T05:14:10.915Z</updated>
    
    <content type="html"><![CDATA[<h2 id="起因"><a href="#起因" class="headerlink" title="起因"></a>起因</h2><p>差生文具多，说的就是我。去年 9 月份刚买了一把腹灵 MK870 键盘+TTC 的静音茶轴 V2+光头哥微光的组合，想着在办公室用个痛快，也不会打扰到周围办公的同事。为此我之前还写了一篇文章<a href="https://sspai.com/post/69378">《萌新的第一把客制化机械键盘——腹灵 MK870》</a>，来记录一下第一次自己选配一款机械键盘的经历。这半年使用下来，只能说我 TTC 静音茶轴的输入体验 YYDS！<br>可惜上海的疫情来得太突然，老婆大人被迫在家办公，并且征用了我的 MK870。那我也只能委屈下我的钱包了。</p><span id="more"></span><h2 id="选购键盘的心路历程"><a href="#选购键盘的心路历程" class="headerlink" title="选购键盘的心路历程"></a>选购键盘的心路历程</h2><p>因为我已经有了一把大 F 的 104 键圣手茶，一把 87 键的 MK870。所以这次我想买把尺寸再小一点的键盘，同事考虑到疫情期间，可能随时居家办公，那么 75%配列及以上的键盘随身携带起来还是有点不方便。那么基本就锁定在 40%～ 65%配列区间里了。<br>为了尽可能平衡尺寸和使用体验，最终选择了带方向键的 68 键键盘，毕竟日常需要 ssh 登陆远程服务器，没有方向键使用起来实在不太方便。<br>确定了具体的配列，那么接下来就选购。由于之前的两把键盘都是有线单模的键盘，而我有时需要多设备间切换使用，非常不方便，所以这次的 68 键盘准备购买三模键盘。同时因为之前两把都是黑壳的键盘，搭配键帽的时候不如白色壳体好搭，所以这次准备买白色的三模 68 键盘。<br>调查了市面上比较主流的 68 键机械键盘，包含成品和套件。基本锁定在了 NJ68，IFD68 Pro 和 FL680。经过简单的对比之后，入手了 FL680。至于对比过程……</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E9%94%AE%E7%9B%98%E5%AF%B9%E6%AF%94.png" alt="键盘对比"></p><p>淘宝上 NJ68 和 IFD68 Pro 都没有白色现货，算是天意了。</p><h2 id="轴体及键帽颜色的选择"><a href="#轴体及键帽颜色的选择" class="headerlink" title="轴体及键帽颜色的选择"></a>轴体及键帽颜色的选择</h2><p>由于所有白色壳体的茶轴都缺货，又一次老天替我选择了，原装我只能选择线性轴体了。而上网查找后，都说 FL680 的 CAP黄轴非常棒。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E9%94%AE%E7%9B%98%E8%B7%9F%E9%A3%8E.JPG" alt="键盘跟风"></p><p>于是跟风入了 CAP黄轴。也是因为 CAP 黄+白色壳体的选择有且仅有粉色的 FL680，所以键帽颜色的选择我也省事儿了。敏敏之中自有天意，看来我和这款粉色的 CAP 黄 FL680 有缘。</p><h2 id="上手体验"><a href="#上手体验" class="headerlink" title="上手体验"></a>上手体验</h2><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/IMG_0619.jpg" alt="键盘主体"></p><p>虽然选购键盘的时候是跟风+顺遂天意。但是真正上手了之后才发现，我是真的不怎么能适应线性轴啊。直上直下的手感，让习惯了段落轴的我完全感受不到按键带来的确认感，打字的时候只能每个键用力地按到底，直到键帽接触下方钢板带来了反馈，才敢将手指切换到下一个按键上。久而久之，一篇文章写了一半，就感觉手指有点酸疼了。并且由于 FL680 采用了 FSA 球帽高度，导致习惯了 XDA 高度键帽的我总是在够键帽，非常不适应。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%8D%A2%E8%BD%B4.JPG" alt="换轴"></p><p>最终导致我只能换轴+换键帽了，可怜的钱包被我榨得干干净净。就当是花钱买教训了，盲目跟风不可取。<br>既然都要换轴了，正好可以把之前 MK870 用剩下的 TTC 静音茶 V2 给利用上（剩 25 颗）+MK870 上不常用的 INS、HOME 等 9 颗轴+淘宝补充 TTC 新出的茶静轴（20 颗）&#x3D;54 颗静音茶。</p><img alt="轴体对比" src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora本地图床/轴体对比.JPG" style="zoom:30%;"/><p>将 FL680 上除数字区和右下角不常用的 shift，win，fun 以及 PGDN，PGUP 外，都换成了我熟悉的静音茶。打字体验终于又回到原来的感觉了。<br>再入了一套浅笑新出的迷雾键帽，换上去后，颜值手感都大大提升。一阵操作猛如虎，手是舒服了，钱包也彻底空了。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E8%BF%B7%E9%9B%BE%E9%94%AE%E5%B8%BD.JPG" alt="迷雾键帽"></p><h2 id="再聊聊-FL680"><a href="#再聊聊-FL680" class="headerlink" title="再聊聊 FL680"></a>再聊聊 FL680</h2><p>毕竟文章是想分享一下 FL680 的上手感觉，虽然我把大部分轴和键帽都换了，但不得不说，网上的评价还是很中肯的。腹灵的大键调教确实是第一梯队，无论是我的 MK870 还是这把 FL680，大键使用时都非常的紧致，手感和声音都非常棒！<br>原装二色成型的 FSA 球帽做工也很精细，品质对得起价格。至于佳达隆的 CAP黄轴也很润，很稳，打字的时候哒，哒，哒的键声非常的动听。换掉它们不是因为它们不够优秀，是我配不上它们。<br>再说三模体验，真是用了就不想再用单模了。因为少了根线，桌面整洁了不少，同时现在键盘切换到 iPad，树莓派和电脑时，再也不用拔来拔去线了，使用体验大大提升。<br>当然，这把 FL680 也有我不得不吐槽的点。那就是 2.4G 接收器的收纳，居然是侧边磁吸的方式。无论是看上去还是用起来都感觉非常的敷衍！同时 FL680 的壳体感觉也不如我的 MK870 做工好，可能是因为左右侧做了造型的镂空，拿取键盘的时候有点松垮，会有嘎吱嘎吱响声，不是很满意。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>购买和使用 FL680 的过程真是相当折腾，但好在在经历了这些之后。我已经清晰的认识到自己对于机械键盘的偏爱。真的是没有走过弯路，就永远不知道正确的究竟是什么。适合别人的产品并不一定适合自己，盲目跟风不可取啊！<br>希望未来一段时间，我的钱包能好好休养生息。这次它太苦了！</p><p>（FL680 有点高，偷偷又买了实木的掌托，嘿嘿）</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%8E%8C%E6%89%98.JPG" alt="掌托"></p>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;起因&quot;&gt;&lt;a href=&quot;#起因&quot; class=&quot;headerlink&quot; title=&quot;起因&quot;&gt;&lt;/a&gt;起因&lt;/h2&gt;&lt;p&gt;差生文具多，说的就是我。去年 9 月份刚买了一把腹灵 MK870 键盘+TTC 的静音茶轴 V2+光头哥微光的组合，想着在办公室用个痛快，也不会打扰到周围办公的同事。为此我之前还写了一篇文章&lt;a href=&quot;https://sspai.com/post/69378&quot;&gt;《萌新的第一把客制化机械键盘——腹灵 MK870》&lt;/a&gt;，来记录一下第一次自己选配一款机械键盘的经历。这半年使用下来，只能说我 TTC 静音茶轴的输入体验 YYDS！&lt;br&gt;可惜上海的疫情来得太突然，老婆大人被迫在家办公，并且征用了我的 MK870。那我也只能委屈下我的钱包了。&lt;/p&gt;</summary>
    
    
    
    <category term="产品体验" scheme="https://example.com/categories/%E4%BA%A7%E5%93%81%E4%BD%93%E9%AA%8C/"/>
    
    
    <category term="键盘" scheme="https://example.com/tags/%E9%94%AE%E7%9B%98/"/>
    
    <category term="客制化" scheme="https://example.com/tags/%E5%AE%A2%E5%88%B6%E5%8C%96/"/>
    
    <category term="腹灵" scheme="https://example.com/tags/%E8%85%B9%E7%81%B5/"/>
    
  </entry>
  
  <entry>
    <title>日常Python Tips</title>
    <link href="https://example.com/2022/07/06/Python_Tips/"/>
    <id>https://example.com/2022/07/06/Python_Tips/</id>
    <published>2022-07-06T09:00:00.000Z</published>
    <updated>2023-05-15T05:55:50.055Z</updated>
    
    <content type="html"><![CDATA[<ol><li><p>Python中使用remove命令导致的问题：</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># wrong code example:</span></span><br><span class="line">list_a=[<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>,<span class="number">6</span>]</span><br><span class="line">list_b=[<span class="number">1</span>,<span class="number">2</span>,<span class="number">4</span>]</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> list_a:</span><br><span class="line">    <span class="keyword">if</span> i <span class="keyword">not</span> <span class="keyword">in</span> list_b:</span><br><span class="line">        list_a.remove(i)</span><br></pre></td></tr></table></figure><p> 上述代码的目的是为了将<code>list_a</code>与<code>list_b</code>做交集，并取<code>list_a</code>的交集部分。但是由于python中<strong>remove</strong>函数会导致列表结构的<strong>索引会少于原始列表，并导致无法完全遍历整个列表</strong>，最终出现上述结果为<code>list_a=[1,2,4,6]</code>。<span id="more"></span></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></pre></td><td class="code"><pre><span class="line"><span class="comment"># Correct code example:</span></span><br><span class="line">list_a=[<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>,<span class="number">6</span>]</span><br><span class="line">list_b=[<span class="number">1</span>,<span class="number">2</span>,<span class="number">4</span>]</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> list_a[::-<span class="number">1</span>]:</span><br><span class="line">    <span class="keyword">if</span> i <span class="keyword">not</span> <span class="keyword">in</span> list_b:</span><br><span class="line">        list_a.remove(i)</span><br></pre></td></tr></table></figure><p> 通过将list_a反序遍历，即可避免remove函数导致的索引缺失问题。关键方法：<code>[::-1]</code>。</p></li><li><p>Python中时间模块的使用方法</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> time</span><br><span class="line">time.localtime(time.time())</span><br><span class="line"><span class="string">&#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="string">作用是格式化时间戳为本地的时间。</span></span><br><span class="line"><span class="string">输出结果为time.struct_time(tm_year=2020, tm_mon=8, tm_mday=17, tm_hour=14, tm_min=22, tm_sec=39, tm_wday=0, tm_yday=200, tm_isdst=0)</span></span><br><span class="line"><span class="string">&#x27;&#x27;&#x27;</span></span><br><span class="line"><span class="comment">#使用time.strftime()进行格式化</span></span><br><span class="line">date=time.strftime(<span class="string">&#x27;%Y-%m-%d&#x27;</span>,time.localtime(time.time()))</span><br></pre></td></tr></table></figure><p> 通过上述方法，可以得到参数date为<code>&#39;2020-8-17&#39;</code>。对于创建csv文件或文件夹时，可以加入其中作为标签。非常实用！</p></li><li><p>Python中pathlib模块使用，用于对路径进行分段：</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> pathlib</span><br><span class="line"></span><br><span class="line">now_path = pathlib.Path.cwd() / <span class="string">&quot;demo.txt&quot;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;name&quot;</span>,now_path.name)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;stem&quot;</span>,now_path.stem)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;suffix&quot;</span>,now_path.suffix)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;parent&quot;</span>,now_path.parent)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;anchor&quot;</span>,now_path.anchor)</span><br></pre></td></tr></table></figure><hr><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></pre></td><td class="code"><pre><span class="line">name demo.txt</span><br><span class="line">stem demo</span><br><span class="line">suffix .txt</span><br><span class="line">parent /Users/chennan/pythonproject/demo</span><br><span class="line">anchor /</span><br></pre></td></tr></table></figure></li><li><p>pathlib中使用<code>Path.iterdir(path_name)</code>获得<code>path_name</code>下所有文件或文件夹名称的列表时，需要使用<code>list(Path.iterdir(path_name))</code>方法，才能与过去<code>os.listdir(path_name)</code>一致</p></li><li><p>Python中利用strip函数可以去除字符串首尾特定的字符，且即使没有相应的字符，也不会报错</p></li><li><p><code>args</code>和<code>kwargs</code>是python中的可变参数：<code>args</code>表示任意多个无名参数，返回一个tuple；<code>kwargs</code>表示关键字参数，返回一个dict。</p><p>   其实并不是必须写成<code>*args</code> 和<code>**kwargs</code>。 只有变量前面的 <code>*</code>(星号)才是必须的. 你也可以写成<code>*var</code> 和<code>**vars</code>. 而写成<code>*args</code> 和<code>**kwargs</code>只是一个通俗的命名约定。</p><p>   同时使用args和kwargs时，args参数必须在kwargs参数之前，像<code>foo(a = 1, b = &#39;2&#39;, c = 3, &#39;a&#39;, 1, None)</code>这样的调用，会提示语法错误“SyntaxError: non-keyword arg after keyword arg”</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></pre></td><td class="code"><pre><span class="line"><span class="comment">#输入</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">test</span>(<span class="params">a, *args, **kwargs</span>):</span><br><span class="line">    <span class="built_in">print</span>(a)</span><br><span class="line">    <span class="built_in">print</span>(args)</span><br><span class="line">    <span class="built_in">print</span>(kwargs)</span><br><span class="line"></span><br><span class="line">test(<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, d = <span class="string">&#x27;4&#x27;</span>, e = <span class="number">5</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment">#输出</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line">(<span class="number">2</span>, <span class="number">3</span>)</span><br><span class="line">&#123;<span class="string">&#x27;d&#x27;</span>: <span class="string">&#x27;4&#x27;</span>, <span class="string">&#x27;e&#x27;</span>: <span class="number">5</span>&#125;</span><br></pre></td></tr></table></figure><p> <code>**kwargs</code>的巧妙用法（python自带的dict就是利用kwargs创造字典）：</p></li><li><p>Python中确认两个list中元素是否完全一致，可以通过sorted排序后，进行全等比较。不能用sort方法，因为sort无返回值，而sorted会返回列表</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></pre></td><td class="code"><pre><span class="line">a=[<span class="string">&#x27;a&#x27;</span>,<span class="string">&#x27;b&#x27;</span>,<span class="string">&#x27;c&#x27;</span>]</span><br><span class="line">b=[<span class="string">&#x27;c&#x27;</span>,<span class="string">&#x27;a&#x27;</span>,<span class="string">&#x27;b&#x27;</span>]</span><br><span class="line"><span class="keyword">if</span> a.sort()==b.sort():</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&#x27;列表a和列表b中元素完全一致&#x27;</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&#x27;列表a和列表b中元素存在差异&#x27;</span>)</span><br></pre></td></tr></table></figure></li><li><p>Python 进度条模块tqdm在windows环境下为了使进度条美观的只在一行呈现，可增加ncols参数：</p> <figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> tqdm(<span class="built_in">range</span>(<span class="number">100</span>),ncols=<span class="number">80</span>)</span><br><span class="line">    j = i*i</span><br></pre></td></tr></table></figure></li><li><p>使用pyinstaller打包python脚本时，可通过–exclude-module&#x3D;pandas方法去除不需要的模块，从而缩小成品软件体积。</p> <figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pyinstaller --exclude-module=pandas --exclude-module=numpy --exclude-module=PIL --exclude-modulue=lxml belle.py</span><br></pre></td></tr></table></figure></li><li><p>List可以用index（）函数确认其中某个元素在list中的位置信息。<code>listname.index(str,start,end)</code></p></li><li><p>Python爬虫遇到\xa0时，可通过<code>输出字符串=””.join(输入字符串.split())</code>获取</p></li><li><p>Python中函数参数中的冒号是<strong>参数的类型建议符</strong> ：</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></pre></td><td class="code"><pre><span class="line"><span class="comment">#!/usr/bin/python3</span></span><br><span class="line"><span class="comment"># -*- coding:utf-8 -*-</span></span><br><span class="line">    </span><br><span class="line"><span class="keyword">def</span> <span class="title function_">twoSum</span>(<span class="params">num1: <span class="built_in">int</span>, num2: <span class="built_in">int</span>=<span class="number">100</span></span>) -&gt; <span class="built_in">int</span>:</span><br><span class="line">    <span class="built_in">sum</span> = num1 + num2</span><br><span class="line">    <span class="keyword">return</span> <span class="built_in">sum</span></span><br><span class="line">    </span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">&quot;__main__&quot;</span>:</span><br><span class="line">    <span class="built_in">print</span>(twoSum.__annotations__)</span><br><span class="line">    <span class="built_in">print</span>(twoSum(<span class="number">1</span>,<span class="number">2</span>))</span><br><span class="line">    <span class="built_in">print</span>(twoSum(<span class="number">1</span>))</span><br><span class="line">    <span class="built_in">print</span>(twoSum(<span class="string">&#x27;I love &#x27;</span>,<span class="string">&#x27;Arsenal&#x27;</span>))</span><br><span class="line">    <span class="comment">#print(twoSum(&#x27;Arsenal&#x27;))</span></span><br></pre></td></tr></table></figure><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></pre></td><td class="code"><pre><span class="line">&#123;<span class="string">&#x27;num1&#x27;</span>: &lt;<span class="keyword">class</span> <span class="string">&#x27;int&#x27;</span>&gt;, <span class="string">&#x27;num2&#x27;</span>: &lt;<span class="keyword">class</span> <span class="string">&#x27;int&#x27;</span>&gt;, <span class="string">&#x27;return&#x27;</span>: &lt;<span class="keyword">class</span> <span class="string">&#x27;int&#x27;</span>&gt;&#125;</span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">101</span></span><br><span class="line">I love Arsenal</span><br></pre></td></tr></table></figure></li><li><p>Python中判断数据类型的方式:</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 判断输入的item是否是字符串类型</span></span><br><span class="line"><span class="keyword">if</span> <span class="built_in">isinstance</span>(item,<span class="built_in">str</span>):</span><br><span class="line">……</span><br><span class="line">……</span><br></pre></td></tr></table></figure></li><li><p>Python中将字符串编码转化为 %xx 的形式</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> urllib.parse <span class="keyword">import</span> quote</span><br><span class="line"><span class="string">&quot;&quot;&quot;特殊符号：汉字、&amp;、=等特殊符号编码为%xx &quot;&quot;&quot;</span></span><br><span class="line">KEYWORD = <span class="string">&#x27;苹果&#x27;</span></span><br><span class="line">url = <span class="string">&#x27;https://s.taobao.com/search?q=&#x27;</span> + quote(KEYWORD)</span><br><span class="line"><span class="built_in">print</span>(url)</span><br><span class="line"><span class="comment"># 运行结果：https://s.taobao.com/search?q=%E8%8B%B9%E6%9E%9C</span></span><br><span class="line"></span><br><span class="line">KEYWORD = <span class="string">&#x27;=&#x27;</span></span><br><span class="line">url = <span class="string">&#x27;https://s.taobao.com/search?q=&#x27;</span> + quote(KEYWORD)</span><br><span class="line"><span class="built_in">print</span>(url)</span><br><span class="line"><span class="comment"># 运行结果：https://s.taobao.com/search?q=%3D</span></span><br></pre></td></tr></table></figure></li><li><p>Python中将字典参数编码为URL查询字符串，即转换成以 key1&#x3D;value1&amp;key2&#x3D;value2 的形式</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> urllib.parse <span class="keyword">import</span> urlencode</span><br><span class="line">base_url = <span class="string">&quot;https://m.weibo.cn/api/container/getIndex?&quot;</span></span><br><span class="line">params1 = &#123;<span class="string">&quot;value&quot;</span>: <span class="string">&quot;english&quot;</span>, <span class="string">&quot;page&quot;</span>: <span class="number">1</span>&#125;</span><br><span class="line">url1 = base_url + urlencode(params1)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(urlencode(params1))</span><br><span class="line"><span class="comment"># value=english&amp;page=1</span></span><br><span class="line"><span class="built_in">print</span>(url1)</span><br><span class="line"><span class="comment"># https://m.weibo.cn/api/container/getIndex?value=english&amp;page=1</span></span><br></pre></td></tr></table></figure></li><li><p>Python中列表查重方法</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> collections <span class="keyword">import</span> Counter <span class="comment">#引入Counter</span></span><br><span class="line">a = [<span class="number">29</span>,<span class="number">36</span>,<span class="number">57</span>,<span class="number">12</span>,<span class="number">79</span>,<span class="number">43</span>,<span class="number">23</span>,<span class="number">56</span>,<span class="number">28</span>,<span class="number">11</span>,<span class="number">14</span>,<span class="number">15</span>,<span class="number">16</span>,<span class="number">37</span>,<span class="number">24</span>,<span class="number">35</span>,<span class="number">17</span>,<span class="number">24</span>,<span class="number">33</span>,<span class="number">15</span>,<span class="number">39</span>,<span class="number">46</span>,<span class="number">52</span>,<span class="number">13</span>]</span><br><span class="line">b = <span class="built_in">dict</span>(Counter(a))</span><br><span class="line"><span class="built_in">print</span> ([key <span class="keyword">for</span> key,value <span class="keyword">in</span> b.items()<span class="keyword">if</span> value &gt; <span class="number">1</span>]) <span class="comment">#只展示重复元素</span></span><br><span class="line"><span class="built_in">print</span> (&#123;key:value <span class="keyword">for</span> key,value <span class="keyword">in</span> b.items()<span class="keyword">if</span> value &gt; <span class="number">1</span>&#125;) <span class="comment">#展现重复元素和重复次数</span></span><br></pre></td></tr></table></figure></li><li><p>Python正则匹配中的贪婪及非贪婪模式<br><code>&#123;X,Y&#125;</code>为贪婪模式匹配</p><p>贪婪模式，总是尝试匹配尽可能多的字符；</p><p>非贪婪模式则相反，总是尝试匹配尽可能少的字符。</p></li><li><p>Python<code>replace</code>方法细节注意：<br>字符串是不可以修改的类型，使用replace方法并不能修改原始的字符串，举例如下</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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 输入代码</span></span><br><span class="line"><span class="built_in">str</span>= <span class="string">&quot;abcdef&quot;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">str</span>.replace(<span class="string">&quot;abc&quot;</span>,<span class="string">&#x27;AAA&#x27;</span>))</span><br><span class="line"><span class="built_in">print</span>((<span class="built_in">str</span>))</span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">id</span>(<span class="built_in">str</span>))</span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">id</span>(<span class="built_in">str</span>.replace(<span class="string">&quot;abc&quot;</span>,<span class="string">&#x27;AAA&#x27;</span>)))</span><br></pre></td></tr></table></figure><figure class="highlight markdown"><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></pre></td><td class="code"><pre><span class="line">输出结果：</span><br><span class="line">AAAdef</span><br><span class="line">abcdef</span><br><span class="line">10515104</span><br><span class="line">12049600</span><br></pre></td></tr></table></figure><p>如果你想要通过str的引用得到修改后的值，那么，将str这个变量指向修改后的内存地址即可</p><p><code>str=str.replace(”abc”,”AAA”)</code></p></li></ol>]]></content>
    
    
    <summary type="html">&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Python中使用remove命令导致的问题：&lt;/p&gt;
 &lt;figure class=&quot;highlight python&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;# wrong code example:&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;list_a=[&lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;number&quot;&gt;2&lt;/span&gt;,&lt;span class=&quot;number&quot;&gt;3&lt;/span&gt;,&lt;span class=&quot;number&quot;&gt;4&lt;/span&gt;,&lt;span class=&quot;number&quot;&gt;5&lt;/span&gt;,&lt;span class=&quot;number&quot;&gt;6&lt;/span&gt;]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;list_b=[&lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;,&lt;span class=&quot;number&quot;&gt;2&lt;/span&gt;,&lt;span class=&quot;number&quot;&gt;4&lt;/span&gt;]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;keyword&quot;&gt;in&lt;/span&gt; list_a:&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;keyword&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;in&lt;/span&gt; list_b:&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        list_a.remove(i)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt; 上述代码的目的是为了将&lt;code&gt;list_a&lt;/code&gt;与&lt;code&gt;list_b&lt;/code&gt;做交集，并取&lt;code&gt;list_a&lt;/code&gt;的交集部分。但是由于python中&lt;strong&gt;remove&lt;/strong&gt;函数会导致列表结构的&lt;strong&gt;索引会少于原始列表，并导致无法完全遍历整个列表&lt;/strong&gt;，最终出现上述结果为&lt;code&gt;list_a=[1,2,4,6]&lt;/code&gt;。</summary>
    
    
    
    <category term="编程" scheme="https://example.com/categories/%E7%BC%96%E7%A8%8B/"/>
    
    
    <category term="Python" scheme="https://example.com/tags/Python/"/>
    
  </entry>
  
  <entry>
    <title>「我的A7M4初体验」</title>
    <link href="https://example.com/2022/06/04/%E3%80%8C%E6%88%91%E7%9A%84A7M4%E5%88%9D%E4%BD%93%E9%AA%8C%E3%80%8D/"/>
    <id>https://example.com/2022/06/04/%E3%80%8C%E6%88%91%E7%9A%84A7M4%E5%88%9D%E4%BD%93%E9%AA%8C%E3%80%8D/</id>
    <published>2022-06-03T19:50:00.000Z</published>
    <updated>2023-05-10T02:35:24.791Z</updated>
    
    <content type="html"><![CDATA[<p>自从去年索尼发布 A7M4 的时候开始，我就一直心心念念想升级手上的 M2。但是不知道是因为疫情原因还是产线爬坡问题，自发布以来，供需不平衡导致完全没有机会原价抢到 A7M4。直到从今年 5 月中旬开始 M4 的产能和库存都提高了，终于在 5 月底的时候，我在索尼官网抢到了一台带 CfexpressA 卡存储套装的 A7M4。回想过去半年蹲守官网，京东，淘宝的经历，真是太不容易了。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E8%AE%A2%E5%8D%95%E6%88%AA%E5%9B%BE.jpg" alt="订单截图"></p><span id="more"></span><h2 id="硬件感受"><a href="#硬件感受" class="headerlink" title="硬件感受"></a>硬件感受</h2><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/A7M4-2.jpg" alt="机身正面"><br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/A7M4-1.jpg" alt="机身背面"></p><p>从包装里把 M4 谨慎小心地拿出来的时候，第一个感觉就是大且重。由于我的 M2 已经服役了 6 年多了，所以我对它的手感和重量可以说非常熟悉了，一上手 M4，就能明显的感受到尺寸和重量上的变化。握把宽了不少，抓起来更加舒服。顺手按一按机身上的按钮，转一转前后的波轮，明显和 M2 上的按键是完全两种不同的东西。以前没觉得，现在对比下来，M2 的按键感受就和玩具一样。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/A7M4-3.jpg" alt="电池对比"></p><p>取出包装中的 NP-FZ100 电池，真的是比 M2 的 FW50 大上了一整圈，可想而知续航能提升不少。可惜我之前买的这么多原装 FW50 电池和充电器，只能和 M2 一起呆在防潮箱里了。而且还得重新买 FZ100 电池和充电器了</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/A7M4-4.jpg" alt="micro USB接口"></p><p>还好，这次 M4 点的接口里还有 micro USB 口，不然我的无线遥控器也得跟着吃灰，这点索尼还算良心。虽然。因为慢门拍摄的太少的原因，我的无线遥控器使用次数也是屈指可数。但能有机会用上总是好的！万一呢！</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/A7M4-5.jpg" alt="无线遥控器"></p><h2 id="拍摄感受与系统"><a href="#拍摄感受与系统" class="headerlink" title="拍摄感受与系统"></a>拍摄感受与系统</h2><p>作为新鲜热乎的新相机，我肯定是迫不及待地要开机体验一下。然而，装上电池，一开机，系统马上就因为没电自动关机了，<del>想第一时间玩耍</del>。只能耐着性子用原装数据线连着相机进行充电了。（趁 618 买的绿联的电池已经发货了，但是因为疫情原因物流比较慢，只能线充了）</p><p>陪老婆打一把王者荣耀的时间，相机也冲进了 15%的电量，起码可以愉快耍一阵了。简单设置好语言，时区等基本设置后，技能咔咔咔的拍了。不得不说，M4 上 759 个相位对焦点真是 bug 一样的存在，尤其我还是从 M2 的 117 个相位对焦点提升上来的。索尼大法好！我深深感受到了人民币的力量，只要取景框里有人脸出现，焦点可以瞬间对到人眼上。以后出去玩，再也不会出现回看照片的时候，人虚景实了！！老婆再也不用保持 pose 等我对焦了，就凭对焦这一点，砸锅卖铁升级的机身就值了！NAS 里多少张虚掉又舍不得删除的照片都是对焦带来的痛。😭😭</p><p>除了对焦，还有就是 EVF 和显示屏的自动切换终于能用了。再也不会我好好的看着显示屏，突然屏幕就黑了，误切到 EVF 上了。M2 上曾经如鲠在喉的一点，如今终于解决了。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E9%9A%8F%E6%89%8B%E6%8B%8D.JPG" alt="第二天随手拍的照片"></p><p>随手拍两张直出的 jpg 照片，就进入系统看看。听说这次索尼将 A7S3 上改良后的系统搬到这次 A7M4 上了。大大优化了系统的逻辑。以前用 A7M2 的时候，虽然相机功能不像现在的相机这么多，但是混乱+多层嵌套的结构，使得偶尔用到些不常用的功能时，只能一个个的翻过去，体验非常抓狂。而 A7S3 上的这套系统，总共只有三层，且每一层的逻辑都非常清晰。而且配合超强的自定义按键+第一栏「我的收藏」中自己添加的常用功能，整个系统使用起来非常流程，清晰。索尼终于把相机系统完善到比较好用的状态了！</p><p>其他的特性，由于是初步上手，没法细细感受。等未来我使用一段时间后，可能会写一篇长期使用的体验文章。暂时拍摄上的明显进步就是上述几点。仅凭目前的体验，我觉得 M4 完美符合我的预期，名副其实的 2022 年水桶机！</p><h2 id="初体验总结"><a href="#初体验总结" class="headerlink" title="初体验总结"></a>初体验总结</h2><p>优点：</p><ul><li>超级无敌强大的对焦系统</li><li>逻辑清晰，自定义功能强大的相机系统</li><li>EVF 与显示屏自动切换功能正常</li><li>相机直出的色彩不错</li><li>FZ100 电池带来更长时间的续航</li><li>改善的按键和波轮手感</li></ul><p>待体验：</p><ul><li>视频拍摄能力</li><li>5.5 级防抖的效果</li><li>3300W 像素带来的提升</li><li>日常拍摄操控体验</li><li>相机的可靠性（之前拍黄山雪景时，M2 频繁死机）</li><li>焦点图在日常拍摄中的使用体验</li><li>USB 推流的效果</li><li>USB 3.2「我的A7M4初体验」.lmod Gen 2 的有线传输和 5GHz WiFi 的无线传输体验</li></ul>]]></content>
    
    
    <summary type="html">&lt;p&gt;自从去年索尼发布 A7M4 的时候开始，我就一直心心念念想升级手上的 M2。但是不知道是因为疫情原因还是产线爬坡问题，自发布以来，供需不平衡导致完全没有机会原价抢到 A7M4。直到从今年 5 月中旬开始 M4 的产能和库存都提高了，终于在 5 月底的时候，我在索尼官网抢到了一台带 CfexpressA 卡存储套装的 A7M4。回想过去半年蹲守官网，京东，淘宝的经历，真是太不容易了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E8%AE%A2%E5%8D%95%E6%88%AA%E5%9B%BE.jpg&quot; alt=&quot;订单截图&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="产品体验" scheme="https://example.com/categories/%E4%BA%A7%E5%93%81%E4%BD%93%E9%AA%8C/"/>
    
    
  </entry>
  
  <entry>
    <title>「Taio」使用感受</title>
    <link href="https://example.com/2022/05/06/Taio%E4%BD%BF%E7%94%A8%E6%84%9F%E5%8F%97/"/>
    <id>https://example.com/2022/05/06/Taio%E4%BD%BF%E7%94%A8%E6%84%9F%E5%8F%97/</id>
    <published>2022-05-06T09:30:00.000Z</published>
    <updated>2023-05-10T02:34:56.230Z</updated>
    
    <content type="html"><![CDATA[<p>Taio，作为一款高级版买断价格 298 元，订阅年费 88 元&#x2F;年的软件，不得不说是真的挺贵的。但想一想年费高达 388 元&#x2F;年的 XMind，298 元的买断价格看起来也就没有那么贵了。当然，实际还是要看软件对自己到底有多大用途，才能决定软件的价值。所以我准备水一篇文章聊聊钟大的 Taio 这款软件。</p><span id="more"></span><p>具体的软件介绍可以参考钟大自己在少数派上写的文章<a href="https://sspai.com/post/63729">《Pin 的下一站，为文本而生的 iOS &#x2F; iPadOS 效率工具：Taio》</a>。但由于钟大是在 2020 年底，刚刚发布 Taio 时写的文章，所以经历了一年多的软件更新迭代，Taio 我觉得比钟大自己写的文章要完善了更多，起码之前根本没 mac 端什么事，但现在 mac 端的 Taio 已经是个完全体，并且足够好用。</p><h2 id="Taio-的功能模块"><a href="#Taio-的功能模块" class="headerlink" title="Taio 的功能模块"></a>Taio 的功能模块</h2><ul><li>作为 Markdown 编辑器</li></ul><p>其实我对 Taio 的功能主要还是将它作为剪贴板管理器来用，它本身的 markdown 编辑器的功能在写这篇文章之前使用的非常少。通常我写 markdown 文章在各个平台都用专门的 markdown 编辑软件</p><ul><li><p>ios ：「metion」</p></li><li><p>macbook ：「Markdown.app」</p></li><li><p>Android ：「纯纯写作」</p></li><li><p>Windows ： 「Typora」</p><p>从众多 markdown 软件就能看出，我是一个不折不扣的软件控，而且最近我还在持续关注 Thorn 这款 Markdown 多平台新软件，预计今年 7 月份发正式版，到时候应该也会尝试下，内测时软件的颜值给我留下了不错的映像。<br>说回 Taio，在我看来专门领域的 app 总是强于 all in one 的 app。然而这次在写这篇文章的时候，我尝试着使用 Taio 来完成写作，意外的非常爽快。可以说哪怕把 Taio 看作专业的 Markdown 编辑器也是完全可以的，无论是语法高亮，格式美化还是多端同步，使用起来都非常爽。我觉得我可以放弃 metion，转用 Taio 就足够完成我日常写水文了。虽然一些细节上如自定义左 shift 按住时，标点符号使用英文输入这类功能只在 metion 上有，且用过就回不去，但对比其他 Markdown 编辑器，Taio 已经非常完善了。</p></li></ul><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">print</span>(“Taio写Markdown的感觉非常爽”)</span><br></pre></td></tr></table></figure><ul><li><p>作为剪贴板管理器</p><p>其实我 90%的时间都用 Taio 作为剪贴板管理器。苹果原生的备忘录基本被 Taio 剪贴板完美替代掉了。除非需要手写或者圈划，不然我都喜欢把内容直接写在 Taio 里，无论查找，快速复制粘帖，多端同步，都非常棒！配合 Taio 独有的文本动作，我只想说 YYDS。<br>作为第一批买断 Taio 的老用户，很大程度上就是因为 Taio 的剪贴板管理太适合我了，用起来太顺手。其中每天都用的一个场景就是家庭芭芭农场助力，每天只要把固定的 6 条支付宝淘宝助力挨个点过去，很快得就能完成助力。尤其每次复制完的内容都会自动置顶，这样方便我很好地区分哪些助力过，哪些还没助力，超方便（主要是助力自动化流程还没研究出来）。</p></li><li><p>类似「快捷指令」的文本动作</p></li></ul><p>Taio 跟其他同类软件相比，我觉得最强的就是集成了文本动作。可以利用现成的动作，进行如「快捷指令」一样的模块话动作编写。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/Taio%E5%8A%A8%E4%BD%9C.JPEG"><br>而在文本动作里最强的就是集成了钟大之前开发的 JSBox。<br>集成了完整的 JSBox 意味着 Taio 理论上能玩出各种花样。下面就是我尝试在 Taio 里跑一段 JSBox 调用相机的脚本，非常的强大。理论上可以把各种大神们写的 JSBox 脚本都无缝移植过来，而文本动作正是 Taio 高级版的卖点之一。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora本地图床/taio脚本.gif" style="zoom:30%;"/><br>当然我认为 Taio 主要侧重点还是在于文本内容的编辑和处理，而钟大集成 JSBox 主要还是为了文本处理服务。所以本质上 Taio 和 JSBox 还是两个类型不同的软件。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>其实我并不能算是 Taio 这款强大无比的文本处理软件的深度使用者，但是不得不说我喜欢并非常享受使用这款软件。无论颜值，功能还是多平台以及持续不断的更新内容都让我对 Taio 非常满意。尤其是最近一次的更新，钟大居然把图床软件直接做进了 Taio 里，简单配置一下后，之前 app store 专门为了移动端买的图床软件「upic」感觉瞬间不香了。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora本地图床/taio图床.gif" style="zoom:30%;"/><br>除了说钟大牛 X 外，还能说什么……期待未来的 Taio 越变越强大！</p><h2 id="自制-Taio-动作分享"><a href="#自制-Taio-动作分享" class="headerlink" title="自制 Taio 动作分享"></a>自制 Taio 动作分享</h2><ul><li>在 Markdown 文章中插入图片，有的时候在 hexo 博客中显示太大，想要缩小。于是会采用 HTML 语法将<code>![测试](图片url)</code>变成 <code>&lt;img alt=“测试“ src=“图片url“ style=“zoom:50%;”/&gt;</code><br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E7%BC%A9%E5%B0%8Fmarkdown%E5%9B%BE%E7%89%87%E5%8A%A8%E4%BD%9C.jpg" alt="缩小markdown图片动作"></li><li>对含有中文路径的图床链接进行重新编码<br>Taio 自带的图床动作在上传完图片后，如果 url 地址里有中文，那么直接复制黏贴到 Markdown 文章里时会因为编码导致乱码，就像我的图床文件名叫做<code>typora本地图床</code>复制黏贴后会变成<code>typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A </code>。<br>需要对地址重新进行一次解码动作，才能正常显示中文。所以做了个简单的文本解码动作。。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/decodeURL%E5%8A%A8%E4%BD%9C.jpg" alt="decodeURL动作"></li></ul><p>后续如果我还制作了新的文本动作，应该会在这篇文章中再更新进去。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Taio，作为一款高级版买断价格 298 元，订阅年费 88 元&amp;#x2F;年的软件，不得不说是真的挺贵的。但想一想年费高达 388 元&amp;#x2F;年的 XMind，298 元的买断价格看起来也就没有那么贵了。当然，实际还是要看软件对自己到底有多大用途，才能决定软件的价值。所以我准备水一篇文章聊聊钟大的 Taio 这款软件。&lt;/p&gt;</summary>
    
    
    
    <category term="软件体验" scheme="https://example.com/categories/%E8%BD%AF%E4%BB%B6%E4%BD%93%E9%AA%8C/"/>
    
    
    <category term="Markdown" scheme="https://example.com/tags/Markdown/"/>
    
    <category term="ios" scheme="https://example.com/tags/ios/"/>
    
    <category term="macos" scheme="https://example.com/tags/macos/"/>
    
  </entry>
  
  <entry>
    <title>萌新从零开始用Echarts做一个自己的地图标记网页！</title>
    <link href="https://example.com/2022/03/10/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E7%94%A8Echart%E5%81%9A%E4%B8%80%E4%B8%AA%E8%87%AA%E5%B7%B1%E5%BF%83%E4%BB%AA%E7%9A%84%E5%9C%B0%E5%9B%BE%E6%A0%87%E8%AE%B0%EF%BC%81/"/>
    <id>https://example.com/2022/03/10/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E7%94%A8Echart%E5%81%9A%E4%B8%80%E4%B8%AA%E8%87%AA%E5%B7%B1%E5%BF%83%E4%BB%AA%E7%9A%84%E5%9C%B0%E5%9B%BE%E6%A0%87%E8%AE%B0%EF%BC%81/</id>
    <published>2022-03-10T09:00:00.000Z</published>
    <updated>2023-05-08T01:18:55.000Z</updated>
    
    <content type="html"><![CDATA[<h2 id="起因"><a href="#起因" class="headerlink" title="起因"></a>起因</h2><p>那是一个风和日丽的夜晚，我可爱的老婆大人突然跟我说她最近制作一份 PPT 的时候需要进行地图标记，但是原先她使用的网站失效了，问我有没有什么地图标记的好办法，最好能按照她的要求进行一定的定制。我想了想，要不直接再给我老婆做一个网页算了，虽然我已经很久没练过HTML，CSS和JavaScript了，但好歹之前接触过点皮毛，要不趁这次机会再试一次？</p><span id="more"></span><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><p>说干就干，反正电脑上本身就装了<a href="https://code.visualstudio.com/">VSCode</a>，那么直接写个静态的HTML文件应该就能搞定。至于制作地图的方案么，想到前段时间分析数据的时候用过pyecharts进行制表，这次索性直接用Echarts进行做个试试。由于之前从来没用过Echarts，所以先上<a href="https://echarts.apache.org/zh/index.html">官网</a>看看<a href="https://echarts.apache.org/handbook/zh/get-started/">上手教程</a>和<a href="https://echarts.apache.org/examples/zh/editor.html?c=map-HK">地图案例</a>。</p><p>按照[上手教程](<a href="https://echarts.apache.org/handbook/zh/get-started/">Handbook - Apache ECharts</a>),先把<a href="https://www.jsdelivr.com/package/npm/echarts">echarts.js</a>文件下载下来，然后根据<a href="https://echarts.apache.org/examples/zh/editor.html?c=map-HK">地图案例</a>还需要下载<a href="https://www.jsdelivr.com/package/npm/jquery">jquery.js</a>。这两个依赖下载完成后就能开始编写HTML文件了。</p><h2 id="撸代码"><a href="#撸代码" class="headerlink" title="撸代码"></a>撸代码</h2><h3 id="创建空白模板"><a href="#创建空白模板" class="headerlink" title="创建空白模板"></a>创建空白模板</h3><p>在echarts.js和jquery.js文件的同目录下创建一个名为index.html的空白文件（反正需求简单，一个静态网页搞定一切）。VSCode编辑时，直接输入</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">!</span><br></pre></td></tr></table></figure><p>回车后，一个空白的HTML文件模板就完成了。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/index%E6%A8%A1%E6%9D%BF.png"></p><h3 id="引入外部js文件并创建视图容器"><a href="#引入外部js文件并创建视图容器" class="headerlink" title="引入外部js文件并创建视图容器"></a>引入外部js文件并创建视图容器</h3><p>在头部文件中添加echarts.js和jquery.js</p><figure class="highlight html"><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></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">&quot;X-UA-Compatible&quot;</span> <span class="attr">content</span>=<span class="string">&quot;IE=edge&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;echarts.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;jquery.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>Document<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!--style中定义视图的长宽尺寸--&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;main&quot;</span> <span class="attr">style</span>=<span class="string">&quot;width: 1600px;height:1200px;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!--生成地图的主代码文件--&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span>&gt;</span></span><br><span class="line">        ……</span><br><span class="line">    ……</span><br><span class="line">        ……</span><br><span class="line">    <span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure><h3 id="参考案例画出中国地图"><a href="#参考案例画出中国地图" class="headerlink" title="参考案例画出中国地图"></a>参考案例画出中国地图</h3><p>根据官网上的<a href="https://echarts.apache.org/zh/option.html#title">文档</a>，及其他百度到的案例，利用阿里云的<a href="http://datav.aliyun.com/portal/school/atlas/area_selector">geoJson</a>作为绘制中国地图的数据源</p><figure class="highlight html"><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="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">&quot;X-UA-Compatible&quot;</span> <span class="attr">content</span>=<span class="string">&quot;IE=edge&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;echarts.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;jquery.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>Document<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!--style中定义视图的长宽尺寸--&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;main&quot;</span> <span class="attr">style</span>=<span class="string">&quot;width: 1600px;height:1200px;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">      <span class="comment">// 初始化echarts实例</span></span></span><br><span class="line"><span class="language-javascript">      <span class="keyword">var</span> myChart = echarts.<span class="title function_">init</span>(<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;main&#x27;</span>));</span></span><br><span class="line"><span class="language-javascript">      myChart.<span class="title function_">showLoading</span>();</span></span><br><span class="line"><span class="language-javascript">$.<span class="title function_">get</span>(<span class="string">&#x27;https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json&#x27;</span>, <span class="keyword">function</span> (<span class="params">geoJson</span>) </span></span><br><span class="line"><span class="language-javascript">      &#123;</span></span><br><span class="line"><span class="language-javascript">       myChart.<span class="title function_">hideLoading</span>();</span></span><br><span class="line"><span class="language-javascript">       echarts.<span class="title function_">registerMap</span>(<span class="string">&#x27;china&#x27;</span>, geoJson);</span></span><br><span class="line"><span class="language-javascript">       myChart.<span class="title function_">setOption</span>(</span></span><br><span class="line"><span class="language-javascript">         option = &#123;</span></span><br><span class="line"><span class="language-javascript">             <span class="attr">title</span>: &#123;</span></span><br><span class="line"><span class="language-javascript">             <span class="attr">text</span>: <span class="string">&#x27;中国地图&#x27;</span></span></span><br><span class="line"><span class="language-javascript">             &#125;,</span></span><br><span class="line"><span class="language-javascript">             <span class="attr">geo</span>: &#123;</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">name</span>: <span class="string">&#x27;中国地图&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">type</span>: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">map</span>: <span class="string">&#x27;china&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                &#125;</span></span><br><span class="line"><span class="language-javascript">            &#125;</span></span><br><span class="line"><span class="language-javascript">       )</span></span><br><span class="line"><span class="language-javascript">    &#125;)</span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure><p>这样一个最简单的中国地图网页就已经完成了，而且在鼠标移动到不同区域的时候能够高亮并显示省名。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E9%BC%A0%E6%A0%87%E9%80%89%E6%8B%A9.gif"></p><h3 id="定制属于自己的地图标记"><a href="#定制属于自己的地图标记" class="headerlink" title="定制属于自己的地图标记"></a>定制属于自己的地图标记</h3><p>查阅了很多他人写的案例，但最终发现只有<a href="https://echarts.apache.org/zh/option.html#title">官方文档</a>最有用。因为Echarts就像是一件功能丰富的工具，而官方的文档就是这件工具具体的使用手册，涵盖了这个工具所有的功能。只要你像查字典一样学会了查询官方文档，那么就能将地图按你心目中想象地样子进行定制。</p><p>比如想用鼠标可以选中多个中国地图中的区域，而不是只能置于其上时高亮。那么就需要先看看geo这个类有哪些方法可以被使用。</p><p>在文档中搜索geo后，下图中红框圈出的就是geo具有属性和方法</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%90%9C%E7%B4%A2geo.png"></p><p>而我们需要的就是「selectMode」这个方法，根据查询到的手册，这一栏我们可以填写布尔值或是’single’,’multiple’的。那么我们只要将「selectMode」添加到「geo」类中，并输入’multiple’，就能开启鼠标选中地图中的区域的功能。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/selectMode.png"></p><figure class="highlight html"><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></pre></td><td class="code"><pre><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">      <span class="comment">// 初始化echarts实例</span></span></span><br><span class="line"><span class="language-javascript">      <span class="keyword">var</span> myChart = echarts.<span class="title function_">init</span>(<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;main&#x27;</span>));</span></span><br><span class="line"><span class="language-javascript">      myChart.<span class="title function_">showLoading</span>();</span></span><br><span class="line"><span class="language-javascript">$.<span class="title function_">get</span>(<span class="string">&#x27;https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json&#x27;</span>, <span class="keyword">function</span> (<span class="params">geoJson</span>) </span></span><br><span class="line"><span class="language-javascript">      &#123;</span></span><br><span class="line"><span class="language-javascript">       ……</span></span><br><span class="line"><span class="language-javascript">             <span class="attr">geo</span>: &#123;</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">name</span>: <span class="string">&#x27;中国地图&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">type</span>: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">map</span>: <span class="string">&#x27;china&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">selectedMode</span>: <span class="string">&#x27;multiple&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                &#125;</span></span><br><span class="line"><span class="language-javascript">    ……</span></span><br><span class="line"><span class="language-javascript">    &#125;)</span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>同理，如果我们想要添加标记的散点，那么除了绘制geo地图外，还要在此图层上添加一层散点图。我们查看一下「setOption」中「series」属性具有的选项。在这些选项中，很快我们就能发现「scatter」就是我们要的散点。于是和「geo」一样，我们将「scatter」添加进「setOption」中，并采用「geo」的坐标系。</p><figure class="highlight html"><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></pre></td><td class="code"><pre><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">      <span class="comment">// 初始化echarts实例</span></span></span><br><span class="line"><span class="language-javascript">      <span class="keyword">var</span> myChart = echarts.<span class="title function_">init</span>(<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;main&#x27;</span>));</span></span><br><span class="line"><span class="language-javascript">      myChart.<span class="title function_">showLoading</span>();</span></span><br><span class="line"><span class="language-javascript">$.<span class="title function_">get</span>(<span class="string">&#x27;https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json&#x27;</span>, <span class="keyword">function</span> (<span class="params">geoJson</span>) </span></span><br><span class="line"><span class="language-javascript">      &#123;</span></span><br><span class="line"><span class="language-javascript">       ……</span></span><br><span class="line"><span class="language-javascript">             <span class="attr">geo</span>: &#123;</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">name</span>: <span class="string">&#x27;中国地图&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">type</span>: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">map</span>: <span class="string">&#x27;china&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">selectedMode</span>: <span class="string">&#x27;multiple&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">              &#125;,</span></span><br><span class="line"><span class="language-javascript">              <span class="attr">series</span>: &#123;</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">name</span>: <span class="string">&#x27;标记点&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">type</span>: <span class="string">&#x27;scatter&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">coordinateSystem</span>: <span class="string">&#x27;geo&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">              &#125;</span></span><br><span class="line"><span class="language-javascript">    ……</span></span><br><span class="line"><span class="language-javascript">    &#125;)</span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>完成到这里，打开index.html文件，你会发现地图上并没有任何标记点。这当然是因为——你没告诉它点在哪里，那它当然就啥也不给你标出来！所以和上面的步骤一样，我们查询官方文档中scatter.data，并在散点图上给一个标记点。</p><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/series_data.png"></p><p>既然是中国地图，那么以广东省广州市为例，我们查询一下广州市的经纬坐标值，将数据填写进scatter，并将「label」的「show」属性设置为 true ，格式化「label」的显示格式和放在标记点左边显示（都是查官方文档查的），这样再次打开地图就能看到标记点了。</p><figure class="highlight html"><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></pre></td><td class="code"><pre><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">      <span class="comment">// 初始化echarts实例</span></span></span><br><span class="line"><span class="language-javascript">      <span class="keyword">var</span> myChart = echarts.<span class="title function_">init</span>(<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;main&#x27;</span>));</span></span><br><span class="line"><span class="language-javascript">      myChart.<span class="title function_">showLoading</span>();</span></span><br><span class="line"><span class="language-javascript">$.<span class="title function_">get</span>(<span class="string">&#x27;https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json&#x27;</span>, <span class="keyword">function</span> (<span class="params">geoJson</span>) </span></span><br><span class="line"><span class="language-javascript">      &#123;</span></span><br><span class="line"><span class="language-javascript">       ……</span></span><br><span class="line"><span class="language-javascript">             <span class="attr">geo</span>: &#123;</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">name</span>: <span class="string">&#x27;中国地图&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">type</span>: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">map</span>: <span class="string">&#x27;china&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">selectedMode</span>: <span class="string">&#x27;multiple&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">              &#125;,</span></span><br><span class="line"><span class="language-javascript">              <span class="attr">series</span>: &#123;</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">name</span>: <span class="string">&#x27;标记点&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">type</span>: <span class="string">&#x27;scatter&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">coordinateSystem</span>: <span class="string">&#x27;geo&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">data</span>: &#123;<span class="attr">name</span>: <span class="string">&#x27;Guangzhou&#x27;</span>, <span class="attr">value</span>:[<span class="number">113.23333</span>,<span class="number">23.16667</span>]&#125;,</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">label</span>:&#123;</span></span><br><span class="line"><span class="language-javascript">                    <span class="attr">formatter</span>: <span class="string">&#x27;&#123;b&#125;&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                    <span class="attr">show</span>: <span class="literal">true</span>,</span></span><br><span class="line"><span class="language-javascript">                    <span class="attr">position</span>: <span class="string">&#x27;right&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                  &#125;,</span></span><br><span class="line"><span class="language-javascript">              &#125;</span></span><br><span class="line"><span class="language-javascript">    ……</span></span><br><span class="line"><span class="language-javascript">    &#125;)</span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>“授人以鱼不如授人以渔”。只要按照上面「根据需求」-&gt;「<a href="https://echarts.apache.org/zh/option.html#title">查官方文档</a>」-&gt;「将查到属性或方法放入加进源代码」的逻辑，那么就能完全定制出自己想要的一个地图标记网页。如果你也是个爱折腾的人，不妨也试试看做一个属于自己的地图标记网页。（最后把这篇文章做的示例放在结尾，并且把echarts.js和jquery.js改成从网站获取，有需要的人可以拷走直接看成果）</p><figure class="highlight html"><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><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;en&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">head</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">http-equiv</span>=<span class="string">&quot;X-UA-Compatible&quot;</span> <span class="attr">content</span>=<span class="string">&quot;IE=edge&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width, initial-scale=1.0&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;https://cdn.jsdelivr.net/npm/echarts@5.3.1/dist/echarts.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">src</span>=<span class="string">&quot;https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">title</span>&gt;</span>地图Demo<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">head</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line">    <span class="comment">&lt;!--style中定义视图的长宽尺寸--&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;main&quot;</span> <span class="attr">style</span>=<span class="string">&quot;width: 1600px;height:1200px;&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">&quot;text/javascript&quot;</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">      <span class="comment">// 初始化echarts实例</span></span></span><br><span class="line"><span class="language-javascript">      <span class="keyword">var</span> myChart = echarts.<span class="title function_">init</span>(<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;main&#x27;</span>));</span></span><br><span class="line"><span class="language-javascript">      myChart.<span class="title function_">showLoading</span>();</span></span><br><span class="line"><span class="language-javascript">$.<span class="title function_">get</span>(<span class="string">&#x27;https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json&#x27;</span>, <span class="keyword">function</span> (<span class="params">geoJson</span>) </span></span><br><span class="line"><span class="language-javascript">      &#123;</span></span><br><span class="line"><span class="language-javascript">       myChart.<span class="title function_">hideLoading</span>();</span></span><br><span class="line"><span class="language-javascript">       echarts.<span class="title function_">registerMap</span>(<span class="string">&#x27;china&#x27;</span>, geoJson);</span></span><br><span class="line"><span class="language-javascript">       myChart.<span class="title function_">setOption</span>(</span></span><br><span class="line"><span class="language-javascript">         option = &#123;</span></span><br><span class="line"><span class="language-javascript">             <span class="attr">title</span>: &#123;</span></span><br><span class="line"><span class="language-javascript">             <span class="attr">text</span>: <span class="string">&#x27;中国地图&#x27;</span></span></span><br><span class="line"><span class="language-javascript">             &#125;,</span></span><br><span class="line"><span class="language-javascript">             <span class="attr">geo</span>: &#123;</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">name</span>: <span class="string">&#x27;中国地图&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">type</span>: <span class="string">&#x27;map&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">map</span>: <span class="string">&#x27;china&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                 <span class="attr">selectedMode</span>: <span class="string">&#x27;multiple&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                &#125;,</span></span><br><span class="line"><span class="language-javascript">             <span class="attr">series</span>: &#123;</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">name</span>: <span class="string">&#x27;标记点&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">type</span>: <span class="string">&#x27;scatter&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">coordinateSystem</span>: <span class="string">&#x27;geo&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">data</span>: [&#123;<span class="attr">name</span>: <span class="string">&#x27;Guangzhou&#x27;</span>, <span class="attr">value</span>:[<span class="number">113.23333</span>,<span class="number">23.16667</span>]&#125;],</span></span><br><span class="line"><span class="language-javascript">                  <span class="attr">label</span>:&#123;</span></span><br><span class="line"><span class="language-javascript">                    <span class="attr">formatter</span>: <span class="string">&#x27;&#123;b&#125;&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                    <span class="attr">show</span>:<span class="literal">true</span>,</span></span><br><span class="line"><span class="language-javascript">                    <span class="attr">position</span>: <span class="string">&#x27;right&#x27;</span>,</span></span><br><span class="line"><span class="language-javascript">                  &#125;,</span></span><br><span class="line"><span class="language-javascript">             &#125;</span></span><br><span class="line"><span class="language-javascript">            &#125;</span></span><br><span class="line"><span class="language-javascript">       )</span></span><br><span class="line"><span class="language-javascript">    &#125;)</span></span><br><span class="line"><span class="language-javascript">    </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure><p>PS：很高兴老婆大人对我最后的成品非常满意，嘿嘿嘿~</p>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;起因&quot;&gt;&lt;a href=&quot;#起因&quot; class=&quot;headerlink&quot; title=&quot;起因&quot;&gt;&lt;/a&gt;起因&lt;/h2&gt;&lt;p&gt;那是一个风和日丽的夜晚，我可爱的老婆大人突然跟我说她最近制作一份 PPT 的时候需要进行地图标记，但是原先她使用的网站失效了，问我有没有什么地图标记的好办法，最好能按照她的要求进行一定的定制。我想了想，要不直接再给我老婆做一个网页算了，虽然我已经很久没练过HTML，CSS和JavaScript了，但好歹之前接触过点皮毛，要不趁这次机会再试一次？&lt;/p&gt;</summary>
    
    
    
    
  </entry>
  
  <entry>
    <title>一个iphone用户的最佳备机——红米K40</title>
    <link href="https://example.com/2022/02/20/%E4%B8%80%E4%B8%AAiphone%E7%94%A8%E6%88%B7%E7%9A%84%E6%9C%80%E4%BD%B3%E5%A4%87%E6%9C%BA%E2%80%94%E2%80%94%E7%BA%A2%E7%B1%B3K40/"/>
    <id>https://example.com/2022/02/20/%E4%B8%80%E4%B8%AAiphone%E7%94%A8%E6%88%B7%E7%9A%84%E6%9C%80%E4%BD%B3%E5%A4%87%E6%9C%BA%E2%80%94%E2%80%94%E7%BA%A2%E7%B1%B3K40/</id>
    <published>2022-02-20T07:58:00.000Z</published>
    <updated>2023-05-10T05:20:01.492Z</updated>
    
    <content type="html"><![CDATA[<h2 id="前情提要"><a href="#前情提要" class="headerlink" title="前情提要"></a>前情提要</h2><p>回想起来，离我上一次用 android 手机大概已经过去快八年了吧。依稀记得当初变成苹果党的主要原因还是因为已经厌倦了国产安卓越来越臃肿的系统，随处可见的广告和各种来历不明的软件包等……而随着全家桶越来越齐全以及习惯了大量苹果商店独占的软件之后，一度感觉自己再也不会用安卓了，包括身边的小伙伴也认定了我是”真-苹果死忠粉”。<span id="more"></span><br>直到最近为了陪老婆大人玩王者荣耀，我想方设法要在我那可怜的 64G XS里塞下一个 9G 的王者荣耀。为此只能我只能先卸支付宝，淘宝；后删微信聊天记录。将所有照片存云端，各种使用频次低的软件也上云端之后，我才成功装上了王者荣耀。<br>老婆大人在看了我一阵花式操作后，可能是被我一心一意带她上分的努力所感动。询问我”要不我换个 13 pro ，把淘汰下来的 256 G 12 pro 给你用吧?”当时我深深地被感动了，但还是义正严辞的拒绝了老婆大人。理由当然是 :我想用 14 pro (毕竟传言 14 pro 有机会上 type C，可以结束我多年来出门带两根充电线的烦恼。13 在我看来还是一个过渡产品，没意思)<br>那么问题随之而来，在 iphone 14 pro 发布之前的这 7 个月，我如何用那台存储空间已经到极限的 XS 撑过去呢?经历了漫长的看评测，做对比以及想到自己那仅 3 位数余额的支付宝之后。果然性价比才是王道啊!而现在性价比最高的是什么手机?那必须是红米 K40 啊，1800 元 12+256 G 120Hz E4 屏，还要啥自行车?而且看看 手机CPU 天梯图，<br><img src="https://pic2.zhimg.com/v2-a21a290c21ce4f94fcaf52dd6b8aee75_b.webp?consumer=ZHI_MENG" alt="手机 CPU 天梯图"><br>骁龙 870 还胜过我的 A12 不少呢。就它了!(在此感谢老婆大人的赞助，不然我也就只能看看)</p><h2 id="红米-K40-初上手"><a href="#红米-K40-初上手" class="headerlink" title="红米 K40 初上手"></a>红米 K40 初上手</h2><p>说了近 600 字的前期提要，突然感觉没啥想说的了……(我都想吐槽我自己)。好吧，我来说说一个萌新对 2021 年的安卓机的使用感受。<br>上手 K40 的第一个感受就是”太不环保了！” 比起为了环保连充电头都不给的苹果，包装盒里又是快充套，又是清水壳，连屏幕本身都还贴了膜。我只能说”干得漂亮！，开局好感爆满！”<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/k40_charger.jpeg"><br>点亮屏幕后， 第一个给我的感受就是大。相比 5.8 寸的 iphone XS，红米 k40 6.67 寸的挖孔屏非常具有冲击力，加上 200g 不到的重量，拿在手上感觉非常棒！所以说人总是喜欢“更大”的东西这句话一点都没错。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/k40.jpeg"><br>而且在疫情期间，侧边微凸的指纹识别的方案在我看来比人脸识别体验也更加优秀，对红米 k40 的好感蹭蹭往上涨，直到我点开个应用商城，点开游览器，点开不知道自己什么时候点到的乱七八糟软件后，铺天盖地的广告和各种牛鬼蛇神算法的推送，瞬间让我想起了当年被广告支配的恐惧！果然世界上没有免费的午餐，性价比的背后，是无孔不入的广告植入。如果你和我一样有应用洁癖，相信我，那一瞬间会非常的痛苦！<br>好在按照<a href="https://www.bilibili.com/video/BV1oq4y1C7fC?from=search&seid=12400889628403822369&spm_id_from=333.337.0.0"> B 站上的教程</a>将各模块中的「个性化推荐」关闭之后，各原生软件勉强还是能用用的（除了游览器，建议换成 chrome 或者夸克)。</p><h2 id="软件生态"><a href="#软件生态" class="headerlink" title="软件生态"></a>软件生态</h2><p>一台手机的使用感受其实 90%都是由手机上的软件带来的，再精致的手机外观也没有一个轻松点开健康码的快捷方式给人的体验感更好。而 MIUI 是我心目中最符合国人使用习惯的系统，只有想不到，就没有它做不到的。当然功能的齐全也难免给人系统臃肿，好在 12+256 G 的配置就像豪宅一样给人宽敞轻松的感觉。<br>支付宝，微信，淘宝……等一众生活必备的软件是全平台都有的，所以无论哪款手机在使用上感受也都差不多。但是我 XS 上最常用的却往往是许许多多优秀的 iOS 独占软件，像是 VVebo，Tweetbot，Reader，Taio ，熊掌记……这在 Android 系统上只能想办法找替代品了。VVebo-&gt; share（已下架，需要在酷安上找酷友珍藏版本)，Tweetbot-&gt;(Twitter ⊙︿⊙，没有合适的，只能用官方)，Reader-&gt;Inoreader，Taio-&gt;快贴，熊掌记-&gt;纯纯写作……在一阵摸索，寻找，试用之后，总算使K40能够满足我的日常使用习惯了。不得不感慨，苹果最具优势的还是app store啊！尤其Google Play被禁的情况下，许多android优质的国外软件都无缘国内了。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>毕竟不是专业评测手机的，我也是因为买了「新玩具」后一时兴起才有了这篇文章，最后做个简单总结：</p><h3 id="优点"><a href="#优点" class="headerlink" title="优点"></a>优点</h3><ul><li>120Hz高刷E4大屏幕</li><li>MIUI人性化和隐私做的不错</li><li>令人满意的续航时间</li><li>超高的性价比</li><li>超强的系统自由和可玩性</li><li>能体验5G了</li></ul><h3 id="缺点"><a href="#缺点" class="headerlink" title="缺点"></a>缺点</h3><ul><li>无处不在的广告</li><li>软件生态较为薄弱</li><li>软硬件使用体验比较粗糙，不够精致</li><li>相机能扫二维码</li></ul><p>可以说K40非常好的完成了一个备机应该完成的所有任务，并且许多方面与iphone能做到互补。能在2000块钱左右买到这样一部手机感觉非常值！及时未来我换掉了XS，应该还是会安卓苹果双持。毕竟好玩还是得安卓！</p>]]></content>
    
    
    <summary type="html">&lt;h2 id=&quot;前情提要&quot;&gt;&lt;a href=&quot;#前情提要&quot; class=&quot;headerlink&quot; title=&quot;前情提要&quot;&gt;&lt;/a&gt;前情提要&lt;/h2&gt;&lt;p&gt;回想起来，离我上一次用 android 手机大概已经过去快八年了吧。依稀记得当初变成苹果党的主要原因还是因为已经厌倦了国产安卓越来越臃肿的系统，随处可见的广告和各种来历不明的软件包等……而随着全家桶越来越齐全以及习惯了大量苹果商店独占的软件之后，一度感觉自己再也不会用安卓了，包括身边的小伙伴也认定了我是”真-苹果死忠粉”。</summary>
    
    
    
    <category term="产品体验" scheme="https://example.com/categories/%E4%BA%A7%E5%93%81%E4%BD%93%E9%AA%8C/"/>
    
    
    <category term="红米" scheme="https://example.com/tags/%E7%BA%A2%E7%B1%B3/"/>
    
    <category term="手机" scheme="https://example.com/tags/%E6%89%8B%E6%9C%BA/"/>
    
    <category term="K40" scheme="https://example.com/tags/K40/"/>
    
    <category term="android" scheme="https://example.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>小米双接口U盘使用体验</title>
    <link href="https://example.com/2022/01/22/%E5%B0%8F%E7%B1%B3%E5%8F%8C%E6%8E%A5%E5%8F%A3U%E7%9B%98%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C/"/>
    <id>https://example.com/2022/01/22/%E5%B0%8F%E7%B1%B3%E5%8F%8C%E6%8E%A5%E5%8F%A3U%E7%9B%98%E4%BD%BF%E7%94%A8%E4%BD%93%E9%AA%8C/</id>
    <published>2022-01-22T15:41:00.000Z</published>
    <updated>2023-05-10T02:34:20.089Z</updated>
    
    <content type="html"><![CDATA[<p>前段时间，刷微博的时候看到小米有品即将推出一款双接口的 U 盘。超小的体积加上榫卯式结构的精致外观，让人第一眼就很心动。虽然 U 盘采用的 USB3.2 Gen1 协议(也就是过去的 USB3.0)，读取速度最高 150MB&#x2F;s 对于用惯 三星 T7 的我来说有点慢，但颜值即正义，加上我经常需要在 Macbook 和老 PC (没有 TypeC 接口)上来回拷数据，所以一直想要一个速度快点，体积小点儿的双口 U 盘。小米有品这款可以说完美符合我的预期。于是 1 月 21 日开售后，我第一时间入手。下面说说我对它的使用感受。</p><span id="more"></span><p><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/U%E7%9B%986.JPG"><br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/U%E7%9B%985.JPG"><br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/U%E7%9B%983.JPG"></p><h2 id="外观"><a href="#外观" class="headerlink" title="外观"></a>外观</h2><p>拆开快递的包装，映入眼帘的小米 U 盘在光线的照射下，显得格外精致。棱角分明，全金属磨砂的表面看上去就非常的有质感。正面除了标识 U 盘容量的镭射标外，再没有其他的 Logo，整体非常简洁，优雅。可以说外观方面，我非常满意。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/U%E7%9B%982.JPG"><br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/U%E7%9B%981.JPG"></p><h2 id="使用体验"><a href="#使用体验" class="headerlink" title="使用体验"></a>使用体验</h2><p>摸索了起码 30s，才发现如果需要使用 TypeC 口，需要先将中间印有容量的金属板向后滑动，才能翻折 U 盘，露出隐藏其中的 TypeC 数据接口。不得不说，这个过程让我想起小时候玩华容道的过程，确实既有趣又精巧。但是金属板滑开后，与整个滑槽的上下间隙有点大，让人感觉松松垮垮的，瞬间破坏了那种精致的感觉，有点失望。<br>说了这么多外观方面，重点说下使用感受。毕竟 U 盘买来毕竟不是用来看和把玩的，还是要用的。而这款 U 盘真的是只要用一次，就能让人如鲠在喉！首先是过于的方正外观，使的每一次手指无意间触碰到 U 盘的边边角角就非常难受，格外的割手。其次，在将 U 盘插入接口的时候，如果是台式机的 TypeA 接口，手指捏着空窗位置感觉还好。但如果使用笔记本电脑，尤其是在用 TypeC 接口的时候，插入时由于两侧金属面非常滑，手指难免会顶着 U 盘上的顶角才能推入。而拔 U 盘的时候，更是让人怀疑人生，光滑无比的金属面仿佛每次都在嘲笑我的指力太弱，连个 U 盘都拔不出……<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%8F%92%E6%8B%94U%E7%9B%98.gif"><br>难不成正确的姿势是用手指提着中间，横向往里插?这个动作操作起来也很难受啊!<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E6%90%9E%E7%AC%91%E5%A7%BF%E5%8A%BF.jpg"></p><h2 id="传输速度"><a href="#传输速度" class="headerlink" title="传输速度"></a>传输速度</h2><p>至于传输速度方面，这款 U 盘读取确实是 150MB&#x2F;S ，但写入只有 50MB&#x2F;S 左右，使用软件测试的结果和实际使用体验差不多。中规中矩的 USB3.0。<br><img src="https://md-1307777334.cos.ap-shanghai.myqcloud.com/typora%E6%9C%AC%E5%9C%B0%E5%9B%BE%E5%BA%8A/%E4%BC%A0%E8%BE%93%E9%80%9F%E5%BA%A6.jpg"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结:"></a>总结:</h2><p>这款小米新出的双口 U 盘在外观上还是非常精致且漂亮的。但为了追求外观上的简约好看以及过分注重设计而轻用户体验，让我对这款产品非常失望。加上 169 元不算便宜的售价，和 USB3.2 Gen1 非常一般的传输速度。如果再给我一次机会，我一定不会选它了。希望我的这些经验教训能够帮助到想要选购这款产品的人，也希望小米下次设计产品的时候，还是多注重点人性化的操作体验，毕竟 U 盘还是要拿来用的。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;前段时间，刷微博的时候看到小米有品即将推出一款双接口的 U 盘。超小的体积加上榫卯式结构的精致外观，让人第一眼就很心动。虽然 U 盘采用的 USB3.2 Gen1 协议(也就是过去的 USB3.0)，读取速度最高 150MB&amp;#x2F;s 对于用惯 三星 T7 的我来说有点慢，但颜值即正义，加上我经常需要在 Macbook 和老 PC (没有 TypeC 接口)上来回拷数据，所以一直想要一个速度快点，体积小点儿的双口 U 盘。小米有品这款可以说完美符合我的预期。于是 1 月 21 日开售后，我第一时间入手。下面说说我对它的使用感受。&lt;/p&gt;</summary>
    
    
    
    <category term="产品体验" scheme="https://example.com/categories/%E4%BA%A7%E5%93%81%E4%BD%93%E9%AA%8C/"/>
    
    
    <category term="小米" scheme="https://example.com/tags/%E5%B0%8F%E7%B1%B3/"/>
    
  </entry>
  
</feed>
