<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Bookmark on Chen</title><link>https://hechen.github.io/zh-cn/tags/bookmark/</link><description>Recent content in Bookmark on Chen</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 13 Mar 2019 00:30:49 +0800</lastBuildDate><atom:link href="https://hechen.github.io/zh-cn/tags/bookmark/index.xml" rel="self" type="application/rss+xml"/><item><title>在英文语言系统的 Safari 中使用印象笔记</title><link>https://hechen.github.io/zh-cn/post/using-yinxiangbiji-system-english/</link><pubDate>Wed, 13 Mar 2019 00:30:49 +0800</pubDate><guid>https://hechen.github.io/zh-cn/post/using-yinxiangbiji-system-english/</guid><description>&lt;blockquote&gt;
&lt;p&gt;因为 Evernote 在国内使用了不同的账户体系，去年团队也彻底独立出来，但是 Safari 的剪藏插件是同一个，&lt;a href="https://safari-extensions.apple.com/details/?id=com.evernote.safari.clipper-Q79WDW8YH9"&gt;下载地址&lt;/a&gt;，但是当你系统是英文系统的时候，使用 Safari 剪藏有点尴尬，就是根本找不到印象笔记的登录入口，该文做个记录。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;首先 Safari 默认是没有 Develop 菜单的，因此先开启 Develop 模式，进入 Safari 的选项设置面板中，最后 Advanced 选项卡最下方如图勾选。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-39-08_A" loading="lazy" src="https://i.imgur.com/J5HvXn1.png"&gt;&lt;/p&gt;
&lt;p&gt;此时，在 Safari 的顶部菜单中会多出 Develop 菜单入口，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-40-57_A" loading="lazy" src="https://i.imgur.com/OxPf4Ji.png"&gt;&lt;/p&gt;
&lt;p&gt;安装印象笔记的插件之后，点击 Safari 上的印象笔记剪藏按钮，你会发现直接带到 Evernote 的登录界面，没有渠道让我登录印象笔记，即使你 Safari 已经登录了印象笔记，登录的 Session 和 Cookie 信息并没有任何用。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-50-48_A" loading="lazy" src="https://i.imgur.com/gVTWCOc.png"&gt;&lt;/p&gt;
&lt;p&gt;这时，你就登录国际版 Evernote 账户，如果你没有，那就注册一个。总之，你需要先登录进去，因为我们必须让剪藏菜单展示出来才行。&lt;/p&gt;
&lt;p&gt;登录 Evernote 之后，打开一个页面进行剪裁，之后如图，我们终于看到了剪藏菜单：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-52-36_A" loading="lazy" src="https://i.imgur.com/VtvROcP.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-53-45_A" loading="lazy" src="https://i.imgur.com/LsitsxG.png"&gt;&lt;/p&gt;
&lt;p&gt;点击下方的 Options，打开设置选项&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-56-16_A" loading="lazy" src="https://i.imgur.com/KpQefZc.png"&gt;&lt;/p&gt;
&lt;p&gt;此时，因为刚才开启了 Develop 菜单选项卡，此时右键点击该窗口，&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-58-02_A" loading="lazy" src="https://i.imgur.com/ylecnyS.png"&gt;&lt;/p&gt;
&lt;p&gt;点击 Inspect Element 打开页面元素查看器，在下方元素展示区为焦点的前提下，Command +F 搜索 &lt;strong&gt;DeveloperContainer&lt;/strong&gt; 关键字。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_12-59-28_A" loading="lazy" src="https://i.imgur.com/0DSMO39.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capto_Capture 2019-03-13_01-02-18_A" loading="lazy" src="https://i.imgur.com/t3uqMa4.png"&gt;&lt;/p&gt;</description></item><item><title>关于一次 SS 流量丢失的过程记录</title><link>https://hechen.github.io/zh-cn/post/%E5%85%B3%E4%BA%8E%E4%B8%80%E6%AC%A1-ss-%E6%B5%81%E9%87%8F%E4%B8%A2%E5%A4%B1%E7%9A%84%E8%BF%87%E7%A8%8B%E8%AE%B0%E5%BD%95/</link><pubDate>Mon, 28 Jan 2019 17:51:35 +0000</pubDate><guid>https://hechen.github.io/zh-cn/post/%E5%85%B3%E4%BA%8E%E4%B8%80%E6%AC%A1-ss-%E6%B5%81%E9%87%8F%E4%B8%A2%E5%A4%B1%E7%9A%84%E8%BF%87%E7%A8%8B%E8%AE%B0%E5%BD%95/</guid><description>&lt;h2 id="2019-01-29-更新"&gt;2019-01-29 更新&lt;/h2&gt;
&lt;p&gt;早上一到办公室连接上公司网络，网速直接就飚到了 600KB/s，果不其然，还是 &lt;code&gt;com.apple.Safari.SafeBrowsing.Service&lt;/code&gt; 这个服务进程。这就尴尬了，看来并不是说你不用 Safari 就不会触发。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Surge Dashboard" loading="lazy" src="https://i.imgur.com/yifgIEZ.png"&gt;&lt;/p&gt;
&lt;p&gt;直接把 Surge 规则中的 Rule 由 Direct 改成了 Reject。&lt;/p&gt;
&lt;h2 id="问题追踪"&gt;问题追踪&lt;/h2&gt;
&lt;p&gt;在 2018 年 12 月底的时候，偶然间登录 AgentNEO 查看刚买的流量使用情况。但是发现，刚在前几天购买的 SS 流量在短短的 4 天之内就耗了将近 95GB，就在 1 月 1 日元旦当天就耗了接近 75GB，要知道，我平时的月均流量也就维持在 10 GB 不到，毕竟平时在公司办公，业余时间 Youtube 也看的相对少。&lt;/p&gt;
&lt;p&gt;&lt;img alt="AgentNEO 流量面板" loading="lazy" src="https://i.imgur.com/9tRs9vh.png"&gt;&lt;/p&gt;
&lt;p&gt;在最初看到这个统计数据之后，我一度怀疑是他们网站的流量统计有问题。&lt;/p&gt;
&lt;p&gt;后续几天，我实际上对流量耗损比较关注，有一天注意到，Surge 的流量监控速率一直持续不断的显示达五六百 KB/s 的下载流量，但是我知道自己当时并没有下载任何东西。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Surge Menu Bar" loading="lazy" src="https://i.imgur.com/nWz8JAt.png"&gt;&lt;/p&gt;
&lt;p&gt;打开 Surge Dashboard，看到如下的情形：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Surge Dashboard" loading="lazy" src="https://i.imgur.com/9kVX27V.png"&gt;&lt;/p&gt;
&lt;p&gt;可以看到当时在持续不断的进行下载动作的进程名称是 &lt;code&gt;com.apple.Safari.SafeBrowsing.Service&lt;/code&gt;，看请求地址是 safebrowsing.googleapis.com。&lt;/p&gt;
&lt;p&gt;从进程名字来看应该是 Safari 和安全流量相关的服务，通过 Snitch 的数据库查到对其的说明：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Safari has built-in support for Google’s Safe Browsing service to identify fraudulent and unsafe websites. Right before Safari navigates to a certain website, the website gets checked for possible security concerns using Google’s Safe Browsing online database. Accessing the online database requires connections to Google servers.&lt;/p&gt;</description></item><item><title>UserDefaults and Keychain</title><link>https://hechen.github.io/zh-cn/post/userdefaults-and-keychain/</link><pubDate>Fri, 21 Dec 2018 14:30:50 +0000</pubDate><guid>https://hechen.github.io/zh-cn/post/userdefaults-and-keychain/</guid><description>&lt;p&gt;Apple 提供了几种持久化方案，其中 UserDefaults 和 Keychain 是 App 开发过程中使用频率最高的方案，而且从以往和同事的探讨过程中发现对这两个概念中有一些细节还是理解不太透彻，因此本文会针对这二者展开讲一讲。&lt;/p&gt;
&lt;h2 id="userdefaults"&gt;UserDefaults&lt;/h2&gt;
&lt;p&gt;首先，阅读完 Apple 关于 UserDefaults 一节的文档描述之后，我觉得有两个需要注意的点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;UserDefaults 的构成&lt;/li&gt;
&lt;li&gt;UserDefaults 的目的&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="userdefaults-构成"&gt;UserDefaults 构成&lt;/h3&gt;
&lt;p&gt;我们可以看看具体 UserDefaults 存储的地方，如下图，我们在应用中写入 Demo 数据：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Write Key-Value to UserDefaults" loading="lazy" src="https://i.imgur.com/wq9onOa.png"&gt;&lt;/p&gt;
&lt;p&gt;打印 Library 路径，在 Finder 中打开路径:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Library" loading="lazy" src="https://i.imgur.com/65ybYX6.png"&gt;&lt;/p&gt;
&lt;p&gt;如下展示内容，可以看到在 Preferences 目录中存在某个文件，例如该 App Library 目录下存放的文件为 &lt;code&gt;app.chen.ios.PersistenceDemo.plist&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Cache" loading="lazy" src="https://i.imgur.com/ChqnDJa.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Preferences" loading="lazy" src="https://i.imgur.com/cPvlFdR.png"&gt;&lt;/p&gt;
&lt;p&gt;该 plist 内容如图所示，即为我们之前在 App 中写入的 Key-Value。&lt;/p&gt;
&lt;p&gt;&lt;img alt="plist" loading="lazy" src="https://i.imgur.com/shdXoZN.png"&gt;&lt;/p&gt;
&lt;p&gt;所以这也证明了，我们针对 UserDefaults 的读写实质上是针对 plist 文件的读写。&lt;/p&gt;
&lt;p&gt;iOS 系统会自动帮你做 &lt;code&gt;plist&lt;/code&gt; 文件的读入以及 Cache，根据情况会把你在内存中所做的操作同步到 &lt;code&gt;plist&lt;/code&gt; 文件（UserDefaults 同步到内存是同步的，同步到 Database 是异步的， iOS 8 开始，会有一个常驻进程 &lt;code&gt;cfprefsd&lt;/code&gt; 来负责同步）。&lt;/p&gt;</description></item><item><title>如何制作 Send to 2Do 的 Safari 书签</title><link>https://hechen.github.io/zh-cn/post/send-to-2do/</link><pubDate>Mon, 26 Nov 2018 14:59:50 +0000</pubDate><guid>https://hechen.github.io/zh-cn/post/send-to-2do/</guid><description>&lt;p&gt;使用鼠标拖拽下面这个链接到你的 Favorites Bar 上，默认点击行为实际上是模拟在当前页面进行导航，而目标地址由 &lt;code&gt;avascript:window.location&lt;/code&gt; 来指定，目标地址实际上就是各个 App 的 URL Scheme。
你可以在 &lt;a href="https://app-talk.com/"&gt;AppTalk&lt;/a&gt;查看各个主流 App 的 URL Scheme。&lt;/p&gt;
&lt;h2 id="2do"&gt;2Do&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://hechen.github.io/zh-cn/post/send-to-2do/#ZgotmplZ"&gt;Send to 2Do&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后编辑地址，将其替换为如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;javascript:window.location=&amp;#39;twodo://x-callback-url/add?task=&amp;#39;+encodeURIComponent(document.title)+&amp;#39;&amp;amp;note=&amp;#39;+encodeURIComponent(window.location)+&amp;#39;&amp;amp;action=url:&amp;#39;+encodeURIComponent(window.location)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="Change Value" loading="lazy" src="https://i.imgur.com/7M0xN1g.jpg"&gt;&lt;/p&gt;
&lt;p&gt;所以，本质上是执行了一段 JS 代码，结合当前文档的上下文信息，调用 URL Scheme，其中&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;document.title&lt;/code&gt; 为标题&lt;/li&gt;
&lt;li&gt;&lt;code&gt;window.location&lt;/code&gt; 为当前页面链接&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="things"&gt;Things&lt;/h2&gt;
&lt;p&gt;我们知道 Things 的 URL Scheme 的规则如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;/// add a todo due when tomorrow
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nl"&gt;things&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;///add?title=iamtitle&amp;amp;notes=iamnotes&amp;amp;when=tomorrow
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://hechen.github.io/zh-cn/post/send-to-2do/#ZgotmplZ"&gt;Add a todo to Things&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;比如你可以把链接内容改为支持 Send To Things：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;javascript&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;things:///add?title=&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;encodeURIComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;amp;notes=&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;encodeURIComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;amp;when=today&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="omnifocus"&gt;OmniFocus&lt;/h2&gt;
&lt;p&gt;同理，可以有 Send To OmniFocus ，如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;javascript&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;omnifocus:///add?note=&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;encodeURIComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;amp;name=&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nb"&gt;encodeURIComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://hechen.github.io/zh-cn/post/send-to-2do/#ZgotmplZ"&gt;Add a todo to OmniFocus&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;或者直接去 &lt;a href="http://people.omnigroup.com/kc/OmniFocus/SendToOmniFocusBookmarklet.html"&gt;OmniFocus 页面&lt;/a&gt; 用相同方式把起已经设置好正确 Value 的链接拖到上方工具条上即可。&lt;/p&gt;</description></item></channel></rss>