<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>视觉碎片</title>
  <icon>/icon.png</icon>
  <subtitle>有些安排是多余的 这片空旷对我有益</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="/"/>
  <updated>2024-12-21T12:40:10.891Z</updated>
  <id>/</id>
  
  <author>
    <name>视觉碎片</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>2024 年做过的一些梦</title>
    <link href="/dream-in-2024.html"/>
    <id>/dream-in-2024.html</id>
    <published>2024-12-21T12:30:52.000Z</published>
    <updated>2024-12-21T12:40:10.891Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;&lt;em&gt;常年在社交网络上记录记录做过的梦，定期摘录下汇总到这里~&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;出租车&quot;&gt;&lt;a href=&quot;#出租车&quot; class=&quot;headerlink&quot; title=&quot;出租车&quot;&gt;&lt;/a&gt;出租车&lt;/h3&gt;</summary>
    
    
    
    <category term="涂鸦" scheme="/categories/%E6%B6%82%E9%B8%A6/"/>
    
    
    <category term="随笔" scheme="/tags/%E9%9A%8F%E7%AC%94/"/>
    
    <category term="梦" scheme="/tags/%E6%A2%A6/"/>
    
  </entry>
  
  <entry>
    <title>2023 年做过的一些梦</title>
    <link href="/dream-in-2023.html"/>
    <id>/dream-in-2023.html</id>
    <published>2024-12-21T11:24:52.000Z</published>
    <updated>2024-12-21T12:41:32.108Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;&lt;em&gt;常年在社交网络上记录记录做过的梦，定期摘录下汇总到这里~&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;登山&quot;&gt;&lt;a href=&quot;#登山&quot; class=&quot;headerlink&quot; title=&quot;登山&quot;&gt;&lt;/a&gt;登山&lt;/h3&gt;</summary>
    
    
    
    <category term="涂鸦" scheme="/categories/%E6%B6%82%E9%B8%A6/"/>
    
    
    <category term="随笔" scheme="/tags/%E9%9A%8F%E7%AC%94/"/>
    
    <category term="梦" scheme="/tags/%E6%A2%A6/"/>
    
  </entry>
  
  <entry>
    <title>2023 年终总结丨随时开始奔跑的心气</title>
    <link href="/2024-year-end-review.html"/>
    <id>/2024-year-end-review.html</id>
    <published>2024-03-31T10:41:07.000Z</published>
    <updated>2024-10-12T02:11:32.109Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;几日不来春便老，开尽桃花。&lt;/p&gt;
&lt;p&gt;写这个年终总结前看到的一句诗，讲不清很应景，讲不清以这句话起手是否是我想为这篇总结定的主体基调，也讲不清我写的这篇总结的目的只是在年复一年的过程里努力想把握住什么，还是希望未来某刻能以此回忆起某些遗忘掉的事情和感受。讲的清的是，既然石头已然到了山顶，就让他滚落下去吧。&lt;/p&gt;</summary>
    
    
    
    <category term="涂鸦" scheme="/categories/%E6%B6%82%E9%B8%A6/"/>
    
    
    <category term="随笔" scheme="/tags/%E9%9A%8F%E7%AC%94/"/>
    
    <category term="扯淡" scheme="/tags/%E6%89%AF%E6%B7%A1/"/>
    
    <category term="年终总结" scheme="/tags/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93/"/>
    
  </entry>
  
  <entry>
    <title>2022 年终总结丨惠存这一年</title>
    <link href="/2023-year-end-review.html"/>
    <id>/2023-year-end-review.html</id>
    <published>2023-01-16T05:24:52.000Z</published>
    <updated>2024-04-17T09:57:22.636Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;去年没写年终总结，今年发生了很多事，觉得应该抽点时间，回顾记录，以重新出发。&lt;/p&gt;
&lt;p&gt;仍旧是过的很快的一年，好像工作后的每一年都过得很快，书上说人之所以觉得成年后的日子过得快，是因为对很多事没有新鲜感了，没接触新的东西，没有记忆点，日复一日，所以很快。我觉得，对了一半。另一半也许因为年岁渐长，人们喜欢追忆，过去的时间也许也并没有比现在过得更慢，只是过去的日子被人们的反复咀嚼，每一天的长度都被放到无止境大，所以看起来就好像过去的日子变得更有份量。长者逝世的那几天尤其印象深刻，互联网上很多人在回忆长者的年代，我想他们又何尝不是回忆那个热情洋溢年代的自己。&lt;/p&gt;</summary>
    
    
    
    <category term="涂鸦" scheme="/categories/%E6%B6%82%E9%B8%A6/"/>
    
    
    <category term="随笔" scheme="/tags/%E9%9A%8F%E7%AC%94/"/>
    
    <category term="扯淡" scheme="/tags/%E6%89%AF%E6%B7%A1/"/>
    
    <category term="年终总结" scheme="/tags/%E5%B9%B4%E7%BB%88%E6%80%BB%E7%BB%93/"/>
    
  </entry>
  
  <entry>
    <title>翻译：Why use dependency injection</title>
    <link href="/translation-why-use-dependency-injection.html"/>
    <id>/translation-why-use-dependency-injection.html</id>
    <published>2021-02-22T01:37:05.000Z</published>
    <updated>2021-02-22T08:25:58.000Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;原文来自：&lt;a href=&quot;/uber/needle/blob/master/WHY_DI.md&quot;&gt;Why use dependency injection&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第一次翻译，如有问题还请留言指出。&lt;br&gt;E-mail：&lt;a href=&quot;mailto:&amp;#114;&amp;#x6f;&amp;#x6f;&amp;#116;&amp;#x40;&amp;#107;&amp;#97;&amp;#x61;&amp;#97;&amp;#97;&amp;#97;&amp;#x69;&amp;#46;&amp;#x63;&amp;#110;&quot;&gt;&amp;#114;&amp;#x6f;&amp;#x6f;&amp;#116;&amp;#x40;&amp;#107;&amp;#97;&amp;#x61;&amp;#97;&amp;#97;&amp;#97;&amp;#x69;&amp;#46;&amp;#x63;&amp;#110;&lt;/a&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="GitHub" scheme="/tags/GitHub/"/>
    
    <category term="Translation" scheme="/tags/Translation/"/>
    
  </entry>
  
  <entry>
    <title>是时候维护一个属于自己的开源库了</title>
    <link href="/its-time-to-build-an-open-source-library.html"/>
    <id>/its-time-to-build-an-open-source-library.html</id>
    <published>2020-11-21T01:37:05.000Z</published>
    <updated>2022-07-07T10:32:25.136Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;使用 GitHub 很久，除了无脑 star、fork 大神们的仓库、输出一些学习代码以外，对于 GitHub 本身的贡献似乎寥寥。&lt;a href=&quot;&quot;&gt;&lt;strong&gt;Arctic Code Vault Contributor&lt;/strong&gt;&lt;/a&gt; 的勋章我受之有愧。如果你也有和我类似的想法，那么，是时候可以尝试一下维护一个自己的开源库了。&lt;/p&gt;
&lt;p&gt;维护一个开源库，听起来很简单，但是真正要开始动手，似乎颇有些千头万绪，无从下手。那让我们来捋一捋，首先我们碰到的第一个问题可能是：我们可以去维护一个怎样的开源库？&lt;/p&gt;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="OpenSource" scheme="/tags/OpenSource/"/>
    
    <category term="GitHub" scheme="/tags/GitHub/"/>
    
  </entry>
  
  <entry>
    <title>iOS 端豆瓣开源许可提到的库</title>
    <link href="/ios-douban-open-source-license-mentioned-in-the-library.html"/>
    <id>/ios-douban-open-source-license-mentioned-in-the-library.html</id>
    <published>2020-10-31T03:24:52.000Z</published>
    <updated>2022-04-26T01:51:43.289Z</updated>
    
    
    <summary type="html">&lt;p&gt;在网上看到一篇&lt;a href=&quot;https://juejin.im/post/6844903749949865991&quot;&gt;豆瓣开源许可-android&lt;/a&gt;的文章，列举了一些 &lt;code&gt;Android&lt;/code&gt; 端豆瓣开源许可中所提到的第三方框架，出于好奇心理在网上搜索了一下想看下有没有 &lt;code&gt;iOS&lt;/code&gt; 版本。结果是没有的，于是索性就自己动手整理了一份：&lt;/p&gt;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="iOS" scheme="/tags/iOS/"/>
    
    <category term="OpenSource" scheme="/tags/OpenSource/"/>
    
  </entry>
  
  <entry>
    <title>推荐几个播客节目</title>
    <link href="/recommend-a-few-podcasts.html"/>
    <id>/recommend-a-few-podcasts.html</id>
    <published>2020-10-26T05:24:52.000Z</published>
    <updated>2022-03-30T03:22:20.186Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;因为最近有点用眼过度，所以在空闲时间想找一件尽量可以不用到眼睛又能涨知识的事情做。我先想到的其实是听书和听线上的付费课程。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;听书&lt;/strong&gt;不太习惯，原因是许多原本通过看书看到的书面语，从看到变为听到，在从声音转换成画面的这个过渡里，总会有因为追不上朗读者稳定而平均的朗读速度而造成的空白。有时思绪想在某些段落稍作停留，有时又因为对当前段落的后续发展有了预见性的推测，想快点赶往下一章节，总之因为听书的方式相比较看书，缺乏一种主动可控的速度变换，而经常有一种错位的感觉。&lt;/p&gt;</summary>
    
    
    
    <category term="工具" scheme="/categories/%E5%B7%A5%E5%85%B7/"/>
    
    
    <category term="播客" scheme="/tags/%E6%92%AD%E5%AE%A2/"/>
    
  </entry>
  
  <entry>
    <title>iOS 自动化打包上传 AppleStore、fir.im，并发邮件通知测试人员</title>
    <link href="/ios-automated-packaging-complicated-by-mail.html"/>
    <id>/ios-automated-packaging-complicated-by-mail.html</id>
    <published>2020-10-19T03:24:52.000Z</published>
    <updated>2022-04-25T09:10:56.299Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;&lt;img data-src=&quot;https://i.loli.net/2020/10/19/XKmLbdSTGNoWYZl.png&quot; alt=&quot;workflow&quot;&gt;&lt;/p&gt;
&lt;p&gt;从上图可以看出使用自动化出包，可以优化掉好几个需要人工介入的步骤，优化开发流程，节省开发者的时间。&lt;/p&gt;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="iOS" scheme="/tags/iOS/"/>
    
    <category term="Xcode" scheme="/tags/Xcode/"/>
    
  </entry>
  
  <entry>
    <title>业余剪辑自我修养</title>
    <link href="/amateur-clipsself-improvement.html"/>
    <id>/amateur-clipsself-improvement.html</id>
    <published>2020-10-02T01:24:52.000Z</published>
    <updated>2020-10-25T13:31:55.000Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;陆陆续续的剪了不少视频，在过程中也有一点收获，遂做个笔记，也做分享。&lt;/p&gt;
&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;</summary>
    
    
    
    <category term="工具" scheme="/categories/%E5%B7%A5%E5%85%B7/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="视频剪辑" scheme="/tags/%E8%A7%86%E9%A2%91%E5%89%AA%E8%BE%91/"/>
    
    <category term="Premiere Pro" scheme="/tags/Premiere-Pro/"/>
    
  </entry>
  
  <entry>
    <title>Swift - 权限请求封装</title>
    <link href="/swift-permission-request-tools.html"/>
    <id>/swift-permission-request-tools.html</id>
    <published>2020-09-12T02:24:52.000Z</published>
    <updated>2022-04-02T01:50:12.888Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;注意到工程里面关于权限请求这块的逻辑没有很好地管理起来，一些是用 OC 的工具类，一些是用 Swift 代码在一些 &lt;code&gt;ViewController&lt;/code&gt; 里面单独调用，不能复用，就想封装一个 Swift 版关于权限请求的工具类，虽然这个需求在 GitHub 上搜索也有很多现成的轮子，但使用起来感觉太重，而且有些久不维护，Swift 版本更新的又快，有些接口就不好使了，索性就自己封装一个。&lt;/p&gt;
&lt;p&gt;一开始的思路也是想通过枚举来创建不同权限字段，通过静态方法来实现请求，但是蓝牙权限和定位权限需要实例化对象，设置代理。当使用 &lt;code&gt;static&lt;/code&gt; 关键字来创建蓝牙和定位对象，当应用内有其他的业务也要使用蓝牙和定位对象时，代理响应就会有点问题。后面索性就用单例方法创建一个整体的权限管理对象，然后创建类方法，在类方法中自己调用自己。&lt;/p&gt;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="iOS" scheme="/tags/iOS/"/>
    
    <category term="Swift" scheme="/tags/Swift/"/>
    
  </entry>
  
  <entry>
    <title>iOS - HMAC 加密算法和一个 MD5 加密的问题</title>
    <link href="/ios-hmac-encryption-and-an-md5-problem.html"/>
    <id>/ios-hmac-encryption-and-an-md5-problem.html</id>
    <published>2020-09-06T02:24:52.000Z</published>
    <updated>2020-09-12T03:54:35.000Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&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;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://swift.gg/2016/06/17/when-to-use-mutating-functions-in-swift-structs/&quot;&gt;Swift 结构体何时使用 mutating 函数&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://juejin.im/post/6862898534857834510&quot;&gt;2020 年疫情之下 iOS 面试题总结篇&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.csdn.net/tianhai110/article/details/6339565&quot;&gt;UML类图几种关系的总结&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="iOS" scheme="/tags/iOS/"/>
    
    <category term="OC" scheme="/tags/OC/"/>
    
    <category term="Swift" scheme="/tags/Swift/"/>
    
  </entry>
  
  <entry>
    <title>iOS - 一些蓝牙问题的解决</title>
    <link href="/ios-some-question-about-bluetooth.html"/>
    <id>/ios-some-question-about-bluetooth.html</id>
    <published>2020-08-15T02:24:52.000Z</published>
    <updated>2020-08-15T04:44:19.000Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&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;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/44030213/whats-the-swift-best-practice-for-reusable-uialertcontroller-configuration-via-e&quot;&gt;通过枚举在 Swift 中实现 UIAlertController 的复用性&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mp.weixin.qq.com/s/FShd9WAMQdWU9Mp6eZR4rA&quot;&gt;一文看破Swift枚举本质&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cnblogs.com/onepixel/articles/7674659.html&quot;&gt;十大经典排序算法（动图演示）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://daily.zhihu.com/story/9726758&quot;&gt;为什么人会变成「工作狂」？这算不算一种上瘾行为？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="iOS" scheme="/tags/iOS/"/>
    
    <category term="OC" scheme="/tags/OC/"/>
    
    <category term="Swift" scheme="/tags/Swift/"/>
    
  </entry>
  
  <entry>
    <title>Swift - 顶部弹出框封装</title>
    <link href="/swift-toppop-upboxencapsulation.html"/>
    <id>/swift-toppop-upboxencapsulation.html</id>
    <published>2020-08-04T05:24:52.000Z</published>
    <updated>2022-04-26T01:51:43.360Z</updated>
    
    
    <summary type="html">&lt;p&gt;抽空把项目里的顶部弹出框封装了一下。&lt;/p&gt;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="iOS" scheme="/tags/iOS/"/>
    
    <category term="Swift" scheme="/tags/Swift/"/>
    
  </entry>
  
  <entry>
    <title>被光放弃的人</title>
    <link href="/a-person-abandoned-by-the-light.html"/>
    <id>/a-person-abandoned-by-the-light.html</id>
    <published>2020-07-18T02:13:52.000Z</published>
    <updated>2022-07-07T06:09:15.090Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;看科幻小说常常会感到一种作为人类的自卑感，对于宇宙来说，我们只是其中数以亿计星球中的一个，即使拥有灿烂的文化和恢弘的历史，也一粒尘埃反射出的微弱光芒。&lt;/p&gt;
&lt;p&gt;而作为个体，虽然每个人都有自己引以为傲的事情，经历过的人和事、在事件中的感受，我们也因为这些而变得与众不同。然而目光宇宙，时间、空间，都能比量出我们的不值一提。甚至可能只是一场灾难，我们日常曾以为很深刻的痛苦也会立马失去他原来的分量。&lt;/p&gt;</summary>
    
    
    
    <category term="旁白" scheme="/categories/%E6%97%81%E7%99%BD/"/>
    
    
    <category term="随笔" scheme="/tags/%E9%9A%8F%E7%AC%94/"/>
    
    <category term="电影" scheme="/tags/%E7%94%B5%E5%BD%B1/"/>
    
    <category term="观后感" scheme="/tags/%E8%A7%82%E5%90%8E%E6%84%9F/"/>
    
  </entry>
  
  <entry>
    <title>OC - 多代理的实现</title>
    <link href="/oc-multi-delegate-implementation.html"/>
    <id>/oc-multi-delegate-implementation.html</id>
    <published>2020-07-16T05:24:52.000Z</published>
    <updated>2020-11-05T02:18:20.000Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&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;迭代项目的时候碰到一个问题， 原因是负责的内容有一项是封装各大 AI 开放平台的 SDK 集成到一个 SDK 里，然后输出统一的接口，目的是为了可以在不同的 AI 中快速切换并使用。但由于之前输出给了兄弟公司使用，他们在一个音乐 SDK 中用语音 SDK 实现语音点歌的功能。然后当我的主应用同时使用两个 SDK 时，由于音乐 SDK 中实现了语音 SDK 的代理，所以我在上层再初始化语音 SDK 设置代理就不起作用。&lt;/p&gt;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="iOS" scheme="/tags/iOS/"/>
    
    <category term="OC" scheme="/tags/OC/"/>
    
  </entry>
  
  <entry>
    <title>我的 AIO-notion 工作流搭建</title>
    <link href="/about-my-notion-workflow.html"/>
    <id>/about-my-notion-workflow.html</id>
    <published>2020-06-07T05:24:52.000Z</published>
    <updated>2022-04-26T01:51:43.000Z</updated>
    
    
    <summary type="html">&lt;p&gt;&lt;img data-src=&quot;https://i.loli.net/2020/06/07/cSgrjKnkbB41AxI.jpg&quot; alt=&quot;cSgrjKnkbB41AxI&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="工具" scheme="/categories/%E5%B7%A5%E5%85%B7/"/>
    
    
    <category term="时间管理" scheme="/tags/%E6%97%B6%E9%97%B4%E7%AE%A1%E7%90%86/"/>
    
    <category term="笔记软件" scheme="/tags/%E7%AC%94%E8%AE%B0%E8%BD%AF%E4%BB%B6/"/>
    
    <category term="Notion" scheme="/tags/Notion/"/>
    
  </entry>
  
  <entry>
    <title>解决使用 GitPage 重定向多次问题</title>
    <link href="/web-resolve-recirculation-errors.html"/>
    <id>/web-resolve-recirculation-errors.html</id>
    <published>2020-05-30T09:24:52.000Z</published>
    <updated>2022-04-02T02:03:35.566Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&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;博客网站更换了 DNS 解析的服务商，访问出现以下问题。&lt;br&gt;![03oBxi-20200530][image-1]&lt;/p&gt;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="Web" scheme="/tags/Web/"/>
    
    <category term="Https" scheme="/tags/Https/"/>
    
    <category term="DNS 解析" scheme="/tags/DNS-%E8%A7%A3%E6%9E%90/"/>
    
  </entry>
  
  <entry>
    <title>Swift - ?和!的学习</title>
    <link href="/swift-optional-and-unwrapping-learning.html"/>
    <id>/swift-optional-and-unwrapping-learning.html</id>
    <published>2020-04-24T09:24:52.000Z</published>
    <updated>2020-11-21T02:09:49.000Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&lt;p&gt;　　最近在优化一个项目的过程，过程中发现之前开发时由于刚接触 &lt;code&gt;Swift&lt;/code&gt; 的原因，在 &lt;code&gt;Swift&lt;/code&gt; 中的类里使用了很多 &lt;code&gt;OC&lt;/code&gt; 的写法，比如字典数组对象会习惯性用 &lt;code&gt;NSDictionary&lt;/code&gt;、&lt;code&gt;NSArray&lt;/code&gt;来初始化，而不是用 &lt;code&gt;[KeyType: ValueType]()&lt;/code&gt; 或是 &lt;code&gt;[SomeType]()&lt;/code&gt; 这种类型来实例化变量。虽然在使用上没有什么问题，但看起来多少有点。。。不优雅。&lt;br&gt;　　当我把大部分类型都修改成 &lt;code&gt;Swift&lt;/code&gt; 中的写法后（部分未修改是因为使用 &lt;code&gt;String&lt;/code&gt; 类型来给文本做截取和富文本定义，实在不如 &lt;code&gt;NSString&lt;/code&gt; 顺手，这种不顺手让我不由想起 Stack Overflow 上看到的一个评论：I thougt i already getting along well  with Swift.）发现，原来一些变量是否为空的判断中，使用 &lt;code&gt;Swift&lt;/code&gt; 里的 &lt;code&gt;optional&lt;/code&gt; 类型会方便很多。&lt;br&gt;　　比如解析一个 json 数据，如果层级多而且里面每个元素都是不确定的，那么可能就需要每个层级都判一次空。而如果使用 ? 来设置当前对象为可选值，只需要在最后一层实际使用到对象值时，判一次空就 OK 了。&lt;br&gt;　　对于 ? 和 ! 的区别和总结，网上有很多文章，在这里就不重复造轮子了。下面就对这个 &lt;code&gt;optional&lt;/code&gt; 的自己两个疑问做个记录。
　　&lt;/p&gt;
&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;</summary>
    
    
    
    <category term="笔记" scheme="/categories/%E7%AC%94%E8%AE%B0/"/>
    
    
    <category term="EXP" scheme="/tags/EXP/"/>
    
    <category term="iOS" scheme="/tags/iOS/"/>
    
    <category term="Swift" scheme="/tags/Swift/"/>
    
  </entry>
  
  <entry>
    <title>《文学回忆录》读书笔记</title>
    <link href="/literary-memoirs-reading-notes.html"/>
    <id>/literary-memoirs-reading-notes.html</id>
    <published>2020-04-18T05:00:52.000Z</published>
    <updated>2020-11-05T02:21:02.000Z</updated>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; class=&quot;aplayer-secondary-style-marker&quot; href=&quot;/assets/css/APlayer.min.css&quot;&gt;&lt;script src=&quot;/assets/js/APlayer.min.js&quot; class=&quot;aplayer-secondary-script-marker&quot;&gt;&lt;/script&gt;&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;div align=&quot;right&quot;&gt; [木心](https://book.douban.com/subject/20440644/) &lt;/div&gt;</summary>
    
    
    
    <category term="剪报" scheme="/categories/%E5%89%AA%E6%8A%A5/"/>
    
    
    <category term="读书笔记" scheme="/tags/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/"/>
    
    <category term="中国近代文学" scheme="/tags/%E4%B8%AD%E5%9B%BD%E8%BF%91%E4%BB%A3%E6%96%87%E5%AD%A6/"/>
    
  </entry>
  
</feed>
