<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>1nan</title>
  <link ref="self" href=""/>
  <link ref="alternate" href="https://yinan.me/"/>
  <updated></updated>
  <author>
    <name>Yinan</name>
  </author>
  <id>ba15f2bcfa5336d8d2f005c8f0aa7951c3b52e50</id>

  
  <entry>
    <title>Is AI making world a better place?</title>
    <link ref="alternate" href="https://yinan.me/ai-world.html" />
    <id>ai-world</id>
    <published>2026-02-10 21:59:11+00:00</published>
    <updated>2026-02-10 22:00:47+00:00</updated>
    <author><name>Yinan</name></author>
    <content type="html">&lt;p&gt;My thoughts/arguments are based on the following three premises:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We live in the limited-resources world.&lt;/li&gt;
&lt;li&gt;In (most) human nature, selfishness more or less impact what we do. Satisfying oneself either physically or spiritually is one of the top priorities.&lt;/li&gt;
&lt;li&gt;Artificial Intelligence, as created by human, and models trained on existing data, in my understanding are unlikely to create innovative results/resources - As the saying that you cannot create what is beyond your comprehension or observation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Looking back in history or current state of the human world, the underlying reason that we did anything can boil down to statement 1, that we live in a world where energies/resources are limited.&lt;/p&gt;
&lt;p&gt;So we trade,  we create, we make money to buy stuff, we fight each other, we start a war, we exploit, we try to be smart or out win others in a competition, we want to win others’ appreciation. In modern society, in current economic world, people usually get what they want by taking from others&#39; production (regardless “fairly” or not, &amp;quot;legally&amp;quot; or not). That is the nature of a human society. We very much rely on others or the whole society to live. Then the statement 2 applies in a limited world, makes sense of we do everything in this society.&lt;/p&gt;
&lt;p&gt;AI helps boost people&#39;s productivity. But what AI really help to produce is the question to ask.
AI also helps for some people to get more resources or in a special case, make more money from others&#39; boosted productivity and from AI itself.&lt;/p&gt;
&lt;p&gt;But as said in premise 3, I doubt the AI will help produce more resources, on the contrary, it consumes more energy. We see AI makes some people richer, at the same time, making others poorer because resources are limited. We are just distributing or carving them up while consuming them in a much faster speed.&lt;/p&gt;
&lt;p&gt;I am not against AI, in fact I am learning and use AI in my daily life and work. But this is a worthy question to think about. Is AI making world a better place?&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Keeping your own data LOCAL</title>
    <link ref="alternate" href="https://yinan.me/your-own-data.html" />
    <id>your-own-data</id>
    <published>2025-09-23 23:17:51+01:00</published>
    <updated>2025-09-25 12:18:40+01:00</updated>
    <author><name>Yinan</name></author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;Note: this article focuses on reading/logging workflow and will be constantly updated.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When I try some new apps or services, the first thing I check is the ability to have the data locally, espeically for memos, bookmarks, read it later, tasks, journals/worklogs/notes.&lt;/p&gt;
&lt;p&gt;I would always choose apps/service that fall within the following categories:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Self hosted apps.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;For self-hosted apps, data is stored locally on the machine where you deployed the service, all you need to care is to have a regular backup and have the ability to read your database.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Apps with local database.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;For apps with a local database (e.g. Things 3, Day One), the best practice is also backing up the local machine and maybe writing a script to read the local database to plain text, just in case.
If the app data is cloud based, (e.g. Notion, Ticktick that I once used), I will be cautious before digging down too much into the rabbit hole. For those apps, at least I should be able to read and export &lt;strong&gt;ALL&lt;/strong&gt; the data on the server, whether via API or built in export functionality.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Apps with easy import/export to csv, json or md.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;If an app is cloud only and does not have a export functionality, I will not use it - The data is tightly bound to the specific app/service and is never mine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Apps with RSS intergration and/or full functioning API.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;This could be beneficial if I want to sync the data elsewhere, I can simply subscribe the RSS in karakeep or using API.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;Apps works with local plain-text files.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Obsidian is one of the best in this category, a similar app is Logseq. For todo app, there is also &lt;a href=&#34;https://www.taskpaper.com/&#34;&gt;taskpaper&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;Apps with comprehensive filtering, full text search.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;This is mainly for quick retriving your data when you need it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;My apps/services for the reading/logging workflow&lt;/h2&gt;
&lt;p&gt;I use &lt;a href=&#34;https://freshrss.org&#34;&gt;freshrss&lt;/a&gt; to consume content online, &lt;a href=&#34;https://wallabag.it&#34;&gt;wallabag&lt;/a&gt; for read-it-later, &lt;a href=&#34;https://karakeep.app&#34;&gt;Karakeep&lt;/a&gt; for bookmarks, Things for todo, Day One for journaling and worklogs, &lt;a href=&#34;https://obsidian.md&#34;&gt;Obsidian&lt;/a&gt; for md notes.&lt;/p&gt;
&lt;p&gt;All of my data will be synced/exported locally and periodically via scripts or RSS. For example, if I star an article in freshrss or added one to wallabag, post a Mastodon toot or upvoted a Reddit post, they will be synced to Karakeep via RSS. If I added a task in Things or a worklog entry in Day One, they will be synced to Obsidian via &lt;a href=&#34;https://github.com/liamcain/obsidian-things-logbook&#34;&gt;plugin&lt;/a&gt; or exported to markdown by scripts that periodically read the local database file. All local plain-text files will be in a private .git repo that keep track the changes over time.&lt;/p&gt;
&lt;h2&gt;Other apps I&#39;ve tried and worth mentioning&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Anybox - bookmark app, local data synced via icloud (platform lock), but no full text search.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Raindrop.io - bookmark app, data is on the server, permnent copy under pay wall (but still on their server afaik)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DEVONthink - A really powerfull app (RSS, read-it-later, bookmark, file-management with full text search and local file storage), the only downside is the file system (databases) is not integrated very well with the Finder system, which means you can only backup and restore the whole database but not individual files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Readwise reader - A cloud based RSS and read-it-later apps, great for its TTS. But data is only on its server, TTS for Chinese is still buggy.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pocket, Omnivore - End of life.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I tried to fit these apps into my workflow once, but ending up not using them.&lt;/p&gt;
&lt;h1&gt;Related&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://stephango.com/file-over-app&#34;&gt;File over app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=44473135&#34;&gt;Local-first software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=45333021&#34;&gt;Why Local-First Apps Haven’t Become Popular?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>如何下载 App Store 已经下架的应用</title>
    <link ref="alternate" href="https://yinan.me/downaload-apps-no-longer-available.html" />
    <id>downaload-apps-no-longer-available</id>
    <published>2025-09-11 23:40:16+01:00</published>
    <updated>2025-09-12 00:03:22+01:00</updated>
    <author><name>Yinan</name></author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;tldr, 首先尝试去 App Store -&amp;gt; 头像 -&amp;gt; Apps -&amp;gt; My Apps 从已购买列表重新下载，如果购买列表内也找不到，则需要从保留该应用的旧设备导出 IPA 文件用 iMazing 安装；如果你在意应用可能被下架，最好关闭 &amp;quot;Offload Unused Apps&amp;quot; 功能（设置 -&amp;gt; App Store），防止本地应用被删除导致无法备份。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;不管是 iPhone 换新机或是去 Apple Store 维修，需要从 iCloud 恢复旧手机数据，又或者是打开了 iOS 17 后推出的 Offload Unused Apps （本意是为了节约手机宝贵的存储空间），你一定会发现在手机某些 App 上出现了小小的下载图标。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://yinan.me/pics/6756df272794e8f871094deed48d21a4.png&#34; alt=&#34;offloaded apps&#34; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(A screenshot of iOS showing offloaded apps, source: r/ios)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;iOS 备份并不像时间机器一样全盘备份，而是保存了应用的 iTunes 链接，在恢复备份时重新从 App Store 下载下来。大多数情况，点击 offloaded app 图标后会将其重新下载下来，但是偶尔也会出现以下这种情况，提示你无法下载，应用已经从 App Store 下架。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://yinan.me/pics/4050a16d3eb8b78063e08ece24ce1ea1.png&#34; alt=&#34;unable download apps&#34; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;（source: https://talk.macpowerusers.com/t/offloaded-app-removed-from-app-store/17436/3）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果出现这个提示而你仍想要这个应用，那么最简单的方式可以去 App Store -&amp;gt; 右上角头像 -&amp;gt; Apps -&amp;gt; My Apps 找到所有已经购买的 App （包括已经下载的应用），这种情况通常发生在开发主动将应用退出 App Store (&lt;a href=&#34;https://forum.popclip.app/t/popclip-is-leaving-the-mac-app-store/2188&#34;&gt;Popclip&lt;/a&gt;) 或者老版本被全新的应用替代 (Reeder 4)。这些应用仍能够通过已购买列表重新下载。&lt;/p&gt;
&lt;p&gt;当然如果你运气不好，会发现部分 App 在已购买的 App 列表中也无法找到（即使这些 App 是非常合规的、非钓鱼、非低质量），reddit 上有很多这样的案例，我自己也发现了一两个这样的例子 - 个别从 App Store 下架的应用会因为各种原因从购买列表中也完全移除，彻底被苹果封锁从服务器下载的方式。&lt;/p&gt;
&lt;p&gt;此时如果你仍有旧设备或者其他​&lt;strong&gt;同 Apple ID&lt;/strong&gt;​ 的设备上仍然保留有这个应用，那么就可以从旧设备中中导出IPA，并以 Imazing 将其安装在新设备上。具体步骤可以见&lt;a href=&#34;https://www.reddit.com/r/dropmix/comments/17ozp55/comment/k8327is&#34;&gt;这个帖子&lt;/a&gt;。如果你没有保存本地应用，那只能和这些应用说拜拜了，虽然大概率这个 App 也会是你不再需要的。&lt;/p&gt;
&lt;p&gt;但是以防万一，如果对你来说重要的 App 可能甚至已经从 App Store 下架，那么最保险的方式便是进入设置关闭 Offload Unused Apps （Settings -&amp;gt; Apps -&amp;gt; App Store -&amp;gt; Offload Unused Apps），并且尽可能在换机前保留旧手机上的应用、或者使用 iMazing 等应用做个全局备份。这样即使发现恢复后的新手机上应用被双下架时，也可以通过 IPA 安装。&lt;/p&gt;
&lt;p&gt;如果你比较随缘，并不在意本地应用被删除 Offload，那么打开这个功能也无妨，当换机来临时，被下架的应用自然会被 Offload。&lt;/p&gt;
&lt;p&gt;最后岔开个话题，在我闲来无事翻看 2012 年在 iPod Touch 上下载的旧应用，发现这些应用即使下架了这么久，&lt;a href=&#34;https://appraven.net&#34;&gt;Appraven&lt;/a&gt; 仍然可以看到当年的 App Store 截图和信息，比如以下这个。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://yinan.me/pics/IMG_0508.PNG&#34; alt=&#34;a picture of qq show app&#34; /&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>互联网上有好的东西，但充斥着垃圾。</title>
    <link ref="alternate" href="https://yinan.me/on-the-net.html" />
    <id>on-the-net</id>
    <published>2025-09-04 21:53:26+01:00</published>
    <updated>2025-09-05 03:04:07+01:00</updated>
    <author><name>Yinan</name></author>
    <content type="html">&lt;p&gt;我总是容易一时兴起，再加上囤积症 + fomo，会花很多时间关注一些感兴趣的内容，最后时间过去，或是兴趣的转移，或是源头已变味，又不得不花大量的时间去整理 - 取关和清除。兜兜转转，花了两倍的精力。&lt;/p&gt;
&lt;p&gt;一些曾经关注的 B 站 up 主，不知是卖号了或是其他原因，开始制作一些营销内容。比如说我关注的 &lt;a href=&#34;https://reddit.com/r/macapps&#34;&gt;r/macapps&lt;/a&gt;，自从 AI 浪潮以来，充斥着粗制滥造的 AI app，捞一笔用户而跑路。以前的我可能会把感兴趣的 app 试过，写下自己的使用感受和对比评测，现在我大概能和自己和解了 - 不值得！文字内容也如此，大量 AI 产生的垃圾每时每刻不停产生，蚕食真正有意义的内容。短视频就更不用说了。&lt;/p&gt;
&lt;p&gt;更加令人唏嘘的是，互联网的内容正在被各大平台自建高墙，还在其内塞满了糖衣和广告，圈养着创作者和消费者 - 创作者绞尽脑汁迎合平台算法的推荐，企图能获取一点点的流量、推广，而产生的语料被用来训练大语言模型，来继续生产垃圾。另一方面短平快的内容和 for you 不断刺激和消费读者的注意力，最后通过广告营销内容从中获益。一个“完美”的闭环。&lt;/p&gt;
&lt;p&gt;当然 AI generated content 并不应全盘否定，但应保留作为人的批判思考和创造力。
互联网也并不是一味的垃圾，但找到好东西有如大海捞针。&lt;/p&gt;
&lt;p&gt;写这篇的背景是在整理订阅源的时候发现，很多曾关注的有意思的博客主已经停更了，只有 Freshrss 中的文章存档还能留下 Ta 的一点足迹，当然这或许是一件好事，背后可能意味着博主更加关注现世生活和身边的人。&lt;/p&gt;
&lt;p&gt;希望有一天我能真正做到 Minimalism，在网上和在生活中。
杜绝垃圾。&lt;/p&gt;
&lt;p&gt;一点胡言乱语的垃圾。只为自己和解。NOT BY AI。&lt;/p&gt;
&lt;p&gt;相关:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://chinadigitaltimes.net/chinese/708143.html&#34;&gt;【404文库】何加盐｜中文互联网正在加速崩塌&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Enshittification&#34;&gt;Enshittification&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>推荐几个 Safari 扩展/插件</title>
    <link ref="alternate" href="https://yinan.me/safari-extensions.html" />
    <id>safari-extensions</id>
    <published>2025-08-25 18:46:18+01:00</published>
    <updated>2025-08-25 18:48:52+01:00</updated>
    <author><name>Yinan</name></author>
    <content type="html">&lt;p&gt;前几天升级了 macOS Tahoe 之后，开始逐步从 Chrome 转移到 Safari。这里推荐几个扩展，会持续更新。由于扩展必须上架 App Store，开发者必须交 99刀的年费，所以很多扩展即使是开源的也不一定是免费的。很多插件在手机上的体验也很好。&lt;/p&gt;
&lt;h2&gt;General&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;密码管理和 Passkeys&lt;/strong&gt;：推荐把 Passkeys 存在自带的 Passwords App 打开自动填充，只要是支持 Passkey 的网站（比如说 GitHub, Google）都可以像 Safari 登陆 AppleID 一样指纹登陆，在 Safari 上 Apple Passwords 体验胜过了 1Passwords。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/gb/app/tampermonkey/id6738342400&#34;&gt;Tampermonkey&lt;/a&gt; 油猴（篡改猴）免费替代：&lt;a href=&#34;https://apps.apple.com/gb/app/userscripts/id1463298887&#34;&gt;Userscripts&lt;/a&gt;&lt;/strong&gt;。可以从 &lt;a href=&#34;https://greasyfork.org/&#34;&gt;Greasyfork&lt;/a&gt; 导入脚本，&lt;del&gt;体验和油猴基本无差。&lt;/del&gt;  Update: 刚试了一下导入后的脚本有很多在 Userscripts 还是用不了，最终还是买了 Tampermonkey。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/onetab/id1540160809?mt=12&amp;amp;uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;OneTab&lt;/a&gt;&lt;/strong&gt;: 一键暂存打开的 Tab。Chrome 上就在用，不过 Safari 的 Tab 管理似乎做得比 Chrome 好。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/gb/app/keyword-search/id1558453954&#34;&gt;Keyword Search&lt;/a&gt;&lt;/strong&gt;: 在地址栏通过 &lt;code&gt;pplx&lt;/code&gt;, &lt;code&gt;gpt&lt;/code&gt;, &lt;code&gt;a&lt;/code&gt; 等自定义关键词快捷搜索 perplexity，chatgpt，amazon 等。在手机上使用的意义更大些，可以不用下很多 web 套壳 app，电脑上用 Alfred/Raycast 的 websearch/quicklinks 可能就够了。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/super-agent-for-safari/id1568262835?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;Superagent for Safari&lt;/a&gt;&lt;/strong&gt;: 自动帮你点击 Cookies 选项，手机上免费用 3 次。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/wipr-2/id1662217862?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;Wipr 2&lt;/a&gt;&lt;/strong&gt;: Safari 最强去广告！&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/rsshub-radar/id1610744717?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;RSSHub Radar&lt;/a&gt;&lt;/strong&gt;: 找到当前页面 RSSHub 订阅链接。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/any-font-for-safari-fontflex/id1597034898?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;Fontflex&lt;/a&gt;&lt;/strong&gt;: 自定义 Safari 的字体和字号，有当年 QQ 空间那味儿了。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/singlefile-for-safari/id6444322545?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;SingleFile&lt;/a&gt;&lt;/strong&gt;: 离线保存网页-&amp;gt; HTML，配合 Karakeep 或者 Anybox API，可以保存书签的同时，下载一份网页存档。另外如果你用 Karakeep（原 Hoarder）推荐 karakeeper for karakeep.&lt;/li&gt;
&lt;li&gt;各种 Speed player 插件或者脚本，有很多，微调视频播放速度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/banish-block-login-popups/id1639049780?mt=12&amp;amp;uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;Banish - Block Login Popups&lt;/a&gt;&lt;/strong&gt;：去除烦人的 &#39;Open in App&#39; 和登陆弹窗。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/vimkey/id1585682577?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;Vimkey&lt;/a&gt;&lt;/strong&gt;: 如果你习惯 vim 的话可以 hjkl 控制 Safari。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;YouTube 相关&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/untrap-for-youtube/id1637438059?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;Untrap for YouTube&lt;/a&gt;&lt;/strong&gt;: 隐藏短视频。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/dearrow-for-youtube/id6451469297?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;DeArrow for YouTube&lt;/a&gt;&lt;/strong&gt;: 修改视频缩略图为视频中的一帧，修改夸张的标题，去除标题中 emoji 等。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/socialfocus-hide-distractions/id1661093205?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;SocialFocus&lt;/a&gt;&lt;/strong&gt;: 类似功能，微调各种社交网页，限制使用社交网页。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/sponsorblock-for-safari/id1573461917?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;SponsorBlock for YouTube&lt;/a&gt;&lt;/strong&gt;: 跳过 &amp;quot;This video is sponsored by xxx&amp;quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/vinegar-tube-cleaner/id1591303229?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;Vineger&lt;/a&gt; and &lt;a href=&#34;https://apps.apple.com/us/app/baking-soda-tube-cleaner/id1601151613?uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;Baking Soda&lt;/a&gt;&lt;/strong&gt;: 改变视频播放框，没有怎么体验到他的好处，不过也放在这了。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;其他有名的扩展&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://apps.apple.com/us/app/stopthemadness/id1376402589?mt=12&amp;amp;uo=4&amp;amp;at=10l4tL&amp;amp;ct=searchlink&#34;&gt;Stop the Madness&lt;/a&gt;&lt;/strong&gt;: Reddit 上很火的插件，光看他的设置列表就知道功能强大了，奈何 12 刀，没买。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;另外 Alfred 有很多 Safari 相关的插件，比如说搜索 tab 历史记录，切换 Profile，这里就不多做介绍了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://alfred.app/search/?q=safari&#34;&gt;https://alfred.app/search/?q=safari&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;欢迎大家留言推荐更多好用的 Safari 扩展。下回考虑写个在用的油猴脚本。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Tailscale 访问内网特定端口</title>
    <link ref="alternate" href="https://yinan.me/tailscale.html" />
    <id>tailscale</id>
    <published>2025-06-30 15:26:44+01:00</published>
    <updated>2025-06-30 15:32:10+01:00</updated>
    <author><name>Yinan</name></author>
    <content type="html">&lt;p&gt;搬家之后，家里的宽带从原来的 Virgin Media 1000 Mbps 下行100 Mbps 上行换到了 Hyperoptic 1000 Mbps 上下对等的光纤，价格都在37英镑每月，原以为是一次各方面的升级，结果却发现 Hyperoptic 并没有提供公网 ip（VM 提供公网 ipv4 在套餐内），如果要开通则需额外付5英镑每月。&lt;/p&gt;
&lt;p&gt;原本一些运行在 nas 上的服务通过 OpenVPN 提供自组网内访问，但是考虑到安全问题，我并没有把 VPS 加入自组网，如果确实需要访问 nas 中的特定服务则通过路由器端口映射和防火墙提供给 VPS 访问。没有了公网 ip 之后，无法将服务端口映射开放，只能另寻其他解决方案。&lt;/p&gt;
&lt;h2&gt;Tailscale 的安全配置&lt;/h2&gt;
&lt;p&gt;之前在用 OpenVPN 的时候，也尝试过 Tailscale、Netbird 等自组网，现在为了让 VPS 也能访问到 nas 上的特定服务就必须要把 VPS 也加入到 Tailscale 网络，但是我又不想要 VPS 能够访问 Tailscale 网内的所有设备所有服务，就需要限制 VPS 只允许访问内网特定设备的特定端口 - 通过设定 ACL 规则。&lt;/p&gt;
&lt;p&gt;这里贴出我的部分配置方案，去除了默认 grants 中允许所有连接的配置，加上了两条规则，仅允许 VPS 访问 NAS 的13333端口以及其他所有设备和 nas 互联。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
	// Define the tags which can be applied to devices and by which users.
	&amp;quot;tagOwners&amp;quot;: {
		&amp;quot;tag:nas&amp;quot;: [&amp;quot;autogroup:admin&amp;quot;],
		&amp;quot;tag:vps&amp;quot;: [&amp;quot;autogroup:admin&amp;quot;],
	},

	// Define grants that govern access for users, groups, autogroups, tags,
	// Tailscale IP addresses, and subnet ranges.
	//&amp;quot;grants&amp;quot;: [
	// Allow all connections.
	// Comment this section out if you want to define specific restrictions.
	//	{&amp;quot;src&amp;quot;: [&amp;quot;*&amp;quot;], &amp;quot;dst&amp;quot;: [&amp;quot;*&amp;quot;], &amp;quot;ip&amp;quot;: [&amp;quot;*&amp;quot;]},
	//],

	// Define users and devices that can use Tailscale SSH.
	&amp;quot;ssh&amp;quot;: [
		// Allow all users to SSH into their own devices in check mode.
		// Comment this section out if you want to define specific restrictions.
		{
			&amp;quot;action&amp;quot;: &amp;quot;check&amp;quot;,
			&amp;quot;src&amp;quot;:    [&amp;quot;autogroup:member&amp;quot;],
			&amp;quot;dst&amp;quot;:    [&amp;quot;autogroup:self&amp;quot;],
			&amp;quot;users&amp;quot;:  [&amp;quot;autogroup:nonroot&amp;quot;, &amp;quot;root&amp;quot;],
		},
	],
	// 定义访问控制规则
	&amp;quot;acls&amp;quot;: [
		// 规则一：允许所有设备互相访问所有端口。
		// &amp;quot;autogroup:member&amp;quot; 代表 Tailscale 网络中的所有用户及其设备。
		{
			&amp;quot;action&amp;quot;: &amp;quot;accept&amp;quot;,
			&amp;quot;src&amp;quot;:    [&amp;quot;autogroup:member&amp;quot;],
			&amp;quot;dst&amp;quot;:    [&amp;quot;autogroup:member:*&amp;quot;, &amp;quot;tag:nas:*&amp;quot;],
		},

		// 规则二：仅允许 VPS 访问 NAS 的13333端口。
		{
			&amp;quot;action&amp;quot;: &amp;quot;accept&amp;quot;,
			&amp;quot;src&amp;quot;:    [&amp;quot;tag:vps&amp;quot;],
			&amp;quot;dst&amp;quot;:    [&amp;quot;tag:nas:13333&amp;quot;],
		},
	],

	// (可选) 添加测试以验证规则是否按预期工作

	&amp;quot;tests&amp;quot;: [
		{
			&amp;quot;src&amp;quot;:    &amp;quot;tag:vps&amp;quot;,
			&amp;quot;accept&amp;quot;: [&amp;quot;tag:nas:13333&amp;quot;], // 应该允许访问 13333 端口
			&amp;quot;deny&amp;quot;:   [&amp;quot;tag:nas:5000&amp;quot;], // 应该拒绝访问 5000 端口
		}
	],
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;配置完成后，如果测试成功则会正常保存配置文件，接下来回到管理设备页面为 nas 和 vps 分别打上标签即可。&lt;/p&gt;
&lt;p&gt;另外我发现群晖使用 tailscale 的时候似乎无法通过 tailscale ip 来 ping 内网内的其他设备。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ping 100.xx.xx.xxx # 这条会失败

sudo tailscale ping 100.xx.xx.xx # tailscale ping 却能成功
pong from (vps)xxx via 173.xxx.xxx.xxx:xxxxx in 87ms
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;似乎和&lt;a href=&#34;https://github.com/tailscale/tailscale/issues/1995&#34;&gt;这个 bug&lt;/a&gt; 有关。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>About</title>
    <link ref="alternate" href="https://yinan.me/about.html" />
    <id>about</id>
    <published>2023-06-19 17:35:38+01:00</published>
    <updated>2025-03-23 11:18:38+00:00</updated>
    <author><name>Yinan</name></author>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://yinan.me/hello-world&#34;&gt;中文简介&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hi, I am Yinan, a PhD student in Physics. You can access this blog via &lt;a href=&#34;https://yinan.me/&#34;&gt;yinan.me&lt;/a&gt; and &lt;a href=&#34;https://yinan.ch/&#34;&gt;yinan.ch&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since I started my PhD, I have been reading and learning a lot, by writing down tons of notes and worklogs. Most of my notes are Markdown files stored in an app called &lt;a href=&#34;https://obsidian.md/&#34;&gt;Obsidian&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since almost all of my notes are going digital now, it is not a bad idea to put them online. Also, I have been writing short articles in Chinese since very young, but hadn&#39;t had the chance to collect and share them with others. I have been thinking about starting a blog for a long time.&lt;/p&gt;
&lt;p&gt;Now, I finally decided to start one, thanks to a great tool &lt;a href=&#34;https://github.com/ahui2016/pyboke&#34;&gt;PyBoke&lt;/a&gt;, which makes it very easy to create a blog using Markdown files. I know other tools like WordPress and Hugo that can do the same thing, but I like the simplicity of PyBoke.&lt;/p&gt;
&lt;h2&gt;About this blog&lt;/h2&gt;
&lt;p&gt;This blog is created by a modified version of &lt;a href=&#34;https://github.com/yinan-c/pyboke&#34;&gt;PyBoke&lt;/a&gt;, where I added features like full text RSS, navigation buttons, and abstracts on the homepage.&lt;/p&gt;
&lt;p&gt;The original version of PyBoke is created by &lt;a href=&#34;https://github.com/ahui2016&#34;&gt;ahui2016&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This blog is fully open source. All the articles in Markdown format, together with the templates I use on this website can also be found in the &lt;a href=&#34;https://github.com/yinan-c/blog&#34;&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I use the theme &lt;a href=&#34;https://newcss.net/&#34;&gt;newcss&lt;/a&gt;, and publish the blog on &lt;a href=&#34;https://pages.github.com/&#34;&gt;GitHub Pages&lt;/a&gt; and &lt;a href=&#34;https://pages.cloudflare.com&#34;&gt;Cloudflare Pages&lt;/a&gt;. You can also access the blog via &lt;a href=&#34;https://1nan.pages.dev/&#34;&gt;1nan.pages.dev&lt;/a&gt; or &lt;a href=&#34;https://yinan-c.github.io/&#34;&gt;yinan-c.github.io&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What will I write here?&lt;/h2&gt;
&lt;p&gt;I am interested in many things, including but not limited to: RSS, macOS softwares, Python ... As I browse the internet (mostly via RSS), interesting things will pop up and I am happy to share online here.&lt;/p&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Twitter logo icons created by &lt;a href=&#34;https://www.flaticon.com/free-icon/twitter_3670151&#34;&gt;Md Tanvirul Haque - Flaticon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Email icon from &lt;a href=&#34;https://www.freepnglogos.com/images/email-13765.html&#34;&gt;freepnglogos.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Matodon logo by Eugen Rochko &amp;amp;amp; other Mastodon contributors - https://blog.joinmastodon.org/, AGPL, https://commons.wikimedia.org/w/index.php?curid=120470930&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;License&lt;/h1&gt;
&lt;p&gt;The articles I write are licensed under &lt;a href=&#34;https://creativecommons.org/licenses/by-nc/4.0/&#34;&gt;CC BY-NC 4.0&lt;/a&gt;. You are free to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Share — copy and redistribute the material in any medium or format&lt;/li&gt;
&lt;li&gt;Adapt — remix, transform, and build upon the material&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The licensor cannot revoke these freedoms as long as you follow the license terms.&lt;/p&gt;
&lt;p&gt;Under the following terms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Attribution — You must give appropriate credit , provide a link to the license, and indicate if changes were made . You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.&lt;/li&gt;
&lt;li&gt;NonCommercial — You may not use the material for commercial purposes .&lt;/li&gt;
&lt;li&gt;No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Hello World</title>
    <link ref="alternate" href="https://yinan.me/hello-world.html" />
    <id>hello-world</id>
    <published>2023-06-18 18:59:53+01:00</published>
    <updated>2025-03-23 11:18:38+00:00</updated>
    <author><name>Yinan</name></author>
    <content type="html">&lt;h2&gt;我是谁?&lt;/h2&gt;
&lt;p&gt;我叫Yinan，目前在英国读博，物理专业。本科在中科大，也是学的物理。这个博客的域名是 &lt;a href=&#34;https://yinan.me/&#34;&gt;yinan.me&lt;/a&gt; 和 &lt;a href=&#34;https://yinan.ch/&#34;&gt;yinan.ch&lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;为什么写博客？&lt;/h2&gt;
&lt;p&gt;回想过去的25年，虽然有记录，写笔记的爱好，但是我还没有正经得把自己的所见所思整理，更没有发布。开始读博以后，有意识的把工作记录和日常见闻记录成文档，碎碎念积少成多，也就成为我在这个世界上来过的一点点证明。&lt;/p&gt;
&lt;p&gt;博客作为一个自己的 digital 小岛，我认为非常适合将这些见闻想法汇集。平时阅读很多文章，浏览很多新闻信息，但是大多很快就忘了，它们只是作为信息从我脑中漂过，而不是作为知识想法被我内化。组织语言记录是对这些繁杂信息的整理消化，“再创作”，也是一次自我反思。从这个意义上看，写博客或许可以帮助我学习知识，内化想法，同时可以提升表达想法的能力。&lt;/p&gt;
&lt;p&gt;我个人非常欣赏 Blog 这种“链接孤岛“的想法，同时也非常认同 open web 的愿景，觉得有价值的信息是应该被分享的，至少值得被记录下来。但是我不喜欢中心化的平台，更不用说 under sensorship 的那些，不喜欢被算法推荐的信息来源，我喜欢把数据自托管，所谓的 self-hosted。&lt;/p&gt;
&lt;p&gt;另外还有一个原因，阅读确实会让人有表达的冲动。我从小就不擅长写文章，但我在初中时仍是写了几篇中短篇小说，高中时候也会在月考作文里写写短篇，偶尔还能拿高分，就是因为当时看了很多各式各样的小说，当时的我很有表达，模仿的欲望。而现在写文章能力已经大大退步了，所以写博客权当给自己练练手，希望我能坚持。&lt;/p&gt;
&lt;h2&gt;我会写些什么&lt;/h2&gt;
&lt;p&gt;我平时喜欢折腾软件，写写脚本（因为平时科研工作有太多重复作业了），喜欢打游戏，每天刷刷 RSS，听听播客，听音乐看剧。在日常冲浪中，任何我觉得有意思，有分享意义的东西，都可能会发布在这里。又也许会把之前的一些想法笔记整理出来，发在这里。&lt;/p&gt;
&lt;h2&gt;博客用了什么&lt;/h2&gt;
&lt;p&gt;本博客的文章用 Markdown 编写。
采用了开源方案 &lt;a href=&#34;https://github.com/ahui2016/pyboke&#34;&gt;PyBoke&lt;/a&gt; 生成静态网站，自己在此基础上加了点&lt;a href=&#34;https://github.com/yinan-c/pyboke/&#34;&gt;其他功能&lt;/a&gt;，例如首页显示摘要，文章底部翻页，full text RSS 格式。使用的是 &lt;a href=&#34;https://newcss.net/&#34;&gt;newcss 主题&lt;/a&gt;，再通过 &lt;a href=&#34;https://pages.github.com/&#34;&gt;GitHub Pages&lt;/a&gt; 和 &lt;a href=&#34;https://pages.cloudflare.com&#34;&gt;Cloudflare Pages&lt;/a&gt; 发布。你也可以通过 &lt;a href=&#34;https://1nan.pages.dev/&#34;&gt;1nan.pages.dev&lt;/a&gt; 或 &lt;a href=&#34;https://yinan-c.github.io/&#34;&gt;yinan-c.github.io&lt;/a&gt; 访问。&lt;/p&gt;
&lt;p&gt;本博客所有源 markdown 文件，以及模板开源，托管在 &lt;a href=&#34;https://github.com/yinan-c/blog&#34;&gt;GitHub&lt;/a&gt; 上。&lt;/p&gt;
&lt;h2&gt;版权&lt;/h2&gt;
&lt;p&gt;本博客所有文章采用 &lt;a href=&#34;https://creativecommons.org/licenses/by-nc/4.0/&#34;&gt;CC BY-NC 4.0&lt;/a&gt; 协议。您可以自由地：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;共享 — 在任何媒介以任何形式复制、发行本作品&lt;/li&gt;
&lt;li&gt;演绎 — 修改、转换或以本作品为基础进行创作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只要你遵守许可协议条款，许可人就无法收回你的这些权利。&lt;/p&gt;
&lt;p&gt;惟须遵守下列条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;署名 — 您必须给出 适当的署名 ，提供指向本许可协议的链接，同时 标明是否（对原始作品）作了修改 。您可以用任何合理的方式来署名，但是不得以任何方式暗示许可人为您或您的使用背书。&lt;/li&gt;
&lt;li&gt;非商业性使用 — 您不得将本作品用于 商业目的 。&lt;/li&gt;
&lt;li&gt;没有附加限制 — 您不得适用法律术语或者 技术措施 从而限制其他人做许可协议允许的事情。&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Pagefind</title>
    <link ref="alternate" href="https://yinan.me/pagefind.html" />
    <id>pagefind</id>
    <published>2025-03-22 22:05:54+00:00</published>
    <updated>2025-03-22 22:14:00+00:00</updated>
    <author><name>Yinan</name></author>
    <content type="html">&lt;p&gt;I found &lt;a href=&#34;https://pagefind.app/&#34;&gt;Pagefind&lt;/a&gt; as a full text search for static sites.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pagefind is a fully static search library that aims to perform well on large sites, while using as little of your users’ bandwidth as possible, and without hosting any infrastructure.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So I added a small search button on the homepage and asked Claude to modify the style a bit. The best thing about this tool is that it is also a static index, meaning you don&#39;t have to keep the index server running in the back ground, once the index is generated, and the following snippet added to a page of your choice:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;link href=&amp;quot;/pagefind/pagefind-ui.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot;&amp;gt;
&amp;lt;script src=&amp;quot;/pagefind/pagefind-ui.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;div id=&amp;quot;search&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;script&amp;gt;
    window.addEventListener(&#39;DOMContentLoaded&#39;, (event) =&amp;gt; {
        new PagefindUI({ element: &amp;quot;#search&amp;quot;, showSubResults: true });
    });
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You&#39;re good to go, it works perfectly with GitHub pages (what I&#39;m using currently) or any other website framework such as Hugo. Alternatively, you can use it as a web server to host your static pages (add a --serve flag in the end, maybe it can update the index while new pages were generated).&lt;/p&gt;
&lt;p&gt;Try it out in my &lt;a href=&#34;https://yinan.me&#34;&gt;blog&lt;/a&gt;!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>On &#34;You don&#39;t need to work on hard problems&#34;</title>
    <link ref="alternate" href="https://yinan.me/on-you-dont-need-to-solve-hard-problems.html" />
    <id>on-you-dont-need-to-solve-hard-problems</id>
    <published>2025-03-05 15:09:38+00:00</published>
    <updated>2025-03-05 15:18:43+00:00</updated>
    <author><name>Yinan</name></author>
    <content type="html">&lt;p&gt;&lt;a href=&#34;https://www.benkuhn.net/hard/&#34;&gt;You don&#39;t need to work on hard problems - Ben Kuhn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I just came across this interesting article. I have to agree on how the problems  (and how you are evaluated) in school set deliberately to be linear or 1 dimensional. While in real world, problems tend to be multi-dimensional, which relies on both so-called soft skills and hard skills. However, it is also exactly the same reason that there is no other place than school, that you&#39;ll been evaluated in a fair, straight-forward way.&lt;/p&gt;
&lt;p&gt;I am not saying that you don&#39;t need to work hard in school. However, what school really taught us was really far beyond solving hard problems.&lt;/p&gt;
</content>
  </entry>
  

</feed>