<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>沨沄的博客</title>
    <description>探索和折腾 | 沨沄，Designer | @FoxGeeker 的个人博客。</description>
    <link>http://ifoxfactory.com/</link>
    <atom:link href="http://ifoxfactory.com/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Mon, 23 Sep 2024 14:59:56 +0000</pubDate>
    <lastBuildDate>Mon, 23 Sep 2024 14:59:56 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>UNTAG：一个新的开始</title>
        <description>&lt;p&gt;你可能会注意到，我已经很久没有更新我的 Blog 了。这是因为我这两年在跟朋友们建立了一个网站：&lt;a href=&quot;https://utgd.net&quot;&gt;#UNTAG&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s2.loli.net/2024/03/21/LX3Tlojq76nmJAM.png&quot; alt=&quot;UNTAG.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href=&quot;https://utgd.net&quot;&gt;#UNTAG&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;网站的产品设计由 &lt;a href=&quot;https://twitter.com/JailbreakHum&quot;&gt;@Hum&lt;/a&gt; 完成，开发由我完成。网站已经经历了多次迭代，从 WordPress 搭建的原型开始，又采用 Vue 进行了完整功能重构，又进一步改善了 SEO，改善搜索功能。&lt;/p&gt;

&lt;p&gt;经过长达一年的开发和测试，现在的 #UNTAG 已经具备了令人舒适的用户界面、美观的文章样式（&lt;a href=&quot;https://github.com/UntagTeam/Untag-CSS-Style&quot;&gt;在 Github 开源&lt;/a&gt;），还更完善的作者系统、评论系统以及讨论社区。&lt;/p&gt;

&lt;p&gt;我个人未来更新的内容都会放在 #UNTAG 发布。&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href=&quot;https://utgd.net/author/10003&quot;&gt;沨沄极客 - 作者主页 - #UNTAG&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;untag-网站介绍&quot;&gt;#UNTAG 网站介绍&lt;/h2&gt;

&lt;p&gt;网站的英文名为 #UNTAG，缩写为 UTGD。UNTAG 一词取“移除标签”之意向。本站不从内容上限制自己，作者们也不从思想和立场上限制自己。&lt;/p&gt;

&lt;p&gt;#UNTAG 在成立之初所希望提供的价值有二。其一，提供一个“解决问题”之处；其二，提供思维框架的基本组成单元。&lt;/p&gt;

&lt;p&gt;互联网上，总能搜到答案；人工智能时代，也许答案更加唾手可得。但哪怕是认真撰写的内容，也难逃有效期限。遇到一个问题，搜索一个答案，明明就是自己问题的解决方案，但怎么也不 work。也许只是因为一个参数、也许只是因为一个系统版本更新的小改变。原文的作者可以轻松解决问题，或者早就迭代了解决方案，但你却在屏幕前抓耳挠腮。很难有机会，或不好意思找作者询问。&lt;/p&gt;

&lt;p&gt;这就是我们希望提供的价值。在我们写作的主要出发点之一便是解决问题。故而以读者群的形式来运营。读者有问题，可进群爽快提问，我们对自己产生的内容长期负责。如果看了文章，希望交流背后的思想；或者想把某个方法结合到自己的生活之中来实践，但一些隐私细节不便公开讨论甚至不想留下文字，皆可提出预约，通过语音与主笔交流，一对一解决问题。&lt;/p&gt;

&lt;p&gt;而所谓“思维框架的基本组成单元”，所对应的是当代急功急利浮躁心态下的话术。本站的发起人相信，真正的思维框架来源于掌握基本组成单元后，基于个人情况的再组装。也就是说，我们不相信直接扔给读者一个思维框架后他可以照搬套用。我们不认可读起来爽但无实践价值、不能解决实际问题的文章。我们相信的是，在读者掌握够了足够的细节后，他将能够根据掌握的细节/工具，也就是基本单元，结合自己的情况发展出自己的理解框架，找到属于自己的最优解。&lt;/p&gt;

&lt;p&gt;#UNTAG 的发起人为 Hum、Minja、文刀、极客。四人各有擅长领域，有代表性的作品和不错的口碑。&lt;/p&gt;

&lt;h3 id=&quot;hum&quot;&gt;Hum&lt;/h3&gt;

&lt;p&gt;Hum 从越狱时代便关注苹果设备在效率领域的应用和自动化，在捷径（原 Workflow）发布伊始即持续保持关注并跟踪写作教程，获得捷径作者之一在 Twitter 上的感谢。&lt;/p&gt;

&lt;p&gt;设备：iPhone, iPad, iMac, MacBook Air, Apple Watch, Amazon Alexa, Google Home 等智能家居设备。&lt;/p&gt;

&lt;h3 id=&quot;minja&quot;&gt;Minja&lt;/h3&gt;

&lt;p&gt;Minja 有十年以上的 iOS &amp;amp; macOS 自动化经验，发表过近五百篇文章，著有多部书籍或教程，阅读量超千万。这一切只是他的业余爱好。&lt;/p&gt;

&lt;p&gt;设备：MacBook Air, iPhone, Kindle，没有其他任何带屏幕的电子设备。&lt;/p&gt;

&lt;h3 id=&quot;沨沄极客&quot;&gt;沨沄极客&lt;/h3&gt;

&lt;p&gt;沨沄极客，全栈开发者，#UNTAG 技术担当，独立完成网站开发工作。擅长 Windows 内容、NAS 领域，曾推出畅销五年的付费教程。重视开源、可本地部署、全平台可用的工具和解决方案。&lt;/p&gt;

&lt;p&gt;设备：主力组合是 Windows + iOS，对智能家居、游戏主机、小众设备亦有研究。&lt;/p&gt;

&lt;h3 id=&quot;文刀漢三&quot;&gt;文刀漢三&lt;/h3&gt;

&lt;p&gt;文刀漢三，手机行业从业人士，多年苹果生态浸泡经历，从生活视角观察科技产品。&lt;/p&gt;

&lt;p&gt;设备：iPhone, iPad, Mac, Apple Watch, 以及 HomePod, Apple TV 等智能家居设备。&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://utgd.net/about&quot;&gt;网站介绍&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;用-rss-订阅-untag&quot;&gt;用 RSS 订阅 UNTAG&lt;/h2&gt;

&lt;p&gt;RSS 可以让你在一个地方订阅各种感兴趣的网站，无需再手动查看网站是否有新的内容。&lt;/p&gt;

&lt;p&gt;RSS 也可以将多个网站更新的内容进行整合，以统一的形式展示给订阅者。&lt;/p&gt;

&lt;p&gt;#UNTAG 的 &lt;a href=&quot;https://rss.utgd.net/feed&quot;&gt;RSS 订阅地址&lt;/a&gt; 如下，你可以复制到 RSS 阅读器中进行订阅。&lt;/p&gt;

&lt;div class=&quot;language-markdown highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;https://rss.utgd.net/feed
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;会员权益&quot;&gt;会员权益&lt;/h3&gt;

&lt;p&gt;#UNTAG Premium 会员拥有专属的&lt;strong&gt;全文 RSS 订阅&lt;/strong&gt;权益，可在阅读器中直接阅读全文。&lt;/p&gt;

&lt;p&gt;请在 &lt;a href=&quot;https://utgd.net/my-membership&quot;&gt;🔗 我的会员&lt;/a&gt; 页面获取地址。&lt;/p&gt;

&lt;h3 id=&quot;关于阅读器&quot;&gt;关于阅读器&lt;/h3&gt;

&lt;p&gt;不同的平台有不同的 RSS 阅读器，你可以根据自己的喜好和需求来选择。&lt;/p&gt;

&lt;p&gt;这里推荐一些 RSS 阅读器：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;网页平台有 &lt;a href=&quot;https://www.inoreader.com/&quot;&gt;Inoreader&lt;/a&gt;、&lt;a href=&quot;https://feedly.com/&quot;&gt;Feedly&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;iOS 平台有 &lt;a href=&quot;https://reederapp.com/&quot;&gt;Reeder&lt;/a&gt;、&lt;a href=&quot;https://apps.apple.com/us/app/unread-2/id1363637349&quot;&gt;Unread2&lt;/a&gt;、&lt;a href=&quot;https://netnewswire.com/&quot;&gt;NetNewsWire&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;macOS 平台有 &lt;a href=&quot;https://reederapp.com/&quot;&gt;Reeder&lt;/a&gt;、&lt;a href=&quot;https://netnewswire.com/&quot;&gt;NetNewsWire&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Windows 10 平台有 &lt;a href=&quot;https://hyliu.me/fluent-reader/&quot;&gt;Fluent Reader&lt;/a&gt;、&lt;a href=&quot;https://apps.microsoft.com/store/detail/newsflow/9NBLGGH58S5R&quot;&gt;Newsflow&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Android 平台有 &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.seazon.feedme&amp;amp;hl=en_US&amp;amp;gl=US&quot;&gt;Feedme&lt;/a&gt;、&lt;a href=&quot;https://www.inoreader.com/&quot;&gt;Inoreader&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Chrome 插件有 &lt;a href=&quot;https://nodetics.com/feedbro/&quot;&gt;Feedbro&lt;/a&gt;、&lt;a href=&quot;https://chrome.google.com/webstore/detail/rss-feed-reader/pnjaodmkngahhkoihejjehlcdlnohgmp&quot;&gt;RSS Feed Reader&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;自建平台有 &lt;a href=&quot;https://freshrss.org/&quot;&gt;FreshRSS&lt;/a&gt;、&lt;a href=&quot;https://tt-rss.org/&quot;&gt;Tiny Tiny RSS&lt;/a&gt;、&lt;a href=&quot;https://miniflux.app/&quot;&gt;Miniflux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;telegram-订阅&quot;&gt;Telegram 订阅&lt;/h3&gt;

&lt;p&gt;你也可以通过 &lt;a href=&quot;https://t.me/untag_rss&quot;&gt;Telegram RSS 订阅频道&lt;/a&gt; 来了解我们。&lt;/p&gt;
</description>
        <pubDate>Wed, 20 Mar 2024 14:08:12 +0000</pubDate>
        <link>http://ifoxfactory.com/2024/03/20/Untag-blog/</link>
        <guid isPermaLink="true">http://ifoxfactory.com/2024/03/20/Untag-blog/</guid>
        
        <category>创业</category>
        
        
      </item>
    
      <item>
        <title>Python Django 如何接入支付宝和微信支付</title>
        <description>&lt;p&gt;这两天在研究 Django-Oscar 这个商城框架，基于这套框架，已经可以完成大部分商城需要的功能。配合 Django-Oscar-API 这个包就可以实现前后端分离了。&lt;/p&gt;

&lt;p&gt;接下来的一个大难题就是 Django-Oscar 的支付模块。&lt;/p&gt;

&lt;h2 id=&quot;django-oscar-支付问题&quot;&gt;Django-Oscar 支付问题&lt;/h2&gt;

&lt;p&gt;在 &lt;a href=&quot;https://django-oscar.readthedocs.io/en/stable/topics/key_questions.html#payment&quot;&gt;Django-Oscar 的官方文档&lt;/a&gt;中，支付模块可以说是语焉不详。官方举了一个 &lt;a href=&quot;https://django-oscar-paypal.readthedocs.io/en/latest/express.html&quot;&gt;Paypal 的例子&lt;/a&gt;，但是具体去看源码，想着仿写一个模块出来，处理了半天又觉得云里雾里。哪些是需要与 Django-Oscar 对接的，哪些又是需要和 Paypal 对接的，并没有分的很清楚。&lt;/p&gt;

&lt;p&gt;在我研究了一整个下午后，我看到 Youtube 上一个 &lt;a href=&quot;https://www.youtube.com/watch?v=KCDo-XcubFo&amp;amp;t=9s&quot;&gt;关于 Django Oscar 接入 Paypal 网关的视频&lt;/a&gt; ，它最终的实现效果也不是与 Django-Oscar 做深度集成，也是通过自定义了一个按钮在支付页面上，点击后跳转到 Paypal 做支付的。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s2.loli.net/2022/10/06/ObtscqWGKzoxr1w.png&quot; alt=&quot;示例实现的效果.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;图中就是它最终实现的效果，Django-Oscar 自带的支付界面是右下角的蓝色按钮。而它的官方 Paypal 插件实现的是左下角添加了一个支付按钮。&lt;/p&gt;

&lt;p&gt;我这才意识到，实际上 Django-Oscar 根本没有提供所谓的支付界面，也不需要单独去做什么支付功能的深度集成，因此在支付框架的选择上不必执着于选择 Django-Oscar、Django 相关的框架。&lt;/p&gt;

&lt;p&gt;国内的支付宝和微信接入已经有成熟的第三方包实现了，可以节省大量的时间，不需要自己造轮子。我最终选择了两个 star 数量比较高的 Python 包，很快实现了相关的功能。&lt;/p&gt;

&lt;h2 id=&quot;支付宝支付接口&quot;&gt;支付宝支付接口&lt;/h2&gt;

&lt;p&gt;支付宝提供了第一方的 SDK，但并未提供配套的文档，在尝试调用时仍然遇到了一些困难。&lt;/p&gt;

&lt;p&gt;实际上可以选择集成度更高一些的第三方包。这里我选择了 &lt;a href=&quot;https://github.com/fzlee/alipay&quot;&gt;fzlee/alipay - Github&lt;/a&gt; 这个第三方实现的 Python 支付宝接口。它的 &lt;a href=&quot;https://github.com/fzlee/alipay/blob/master/README.zh-hans.md&quot;&gt;文档&lt;/a&gt; 清晰易懂。&lt;/p&gt;

&lt;h3 id=&quot;具体操作流程&quot;&gt;具体操作流程&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;安装 python-alipay-sdk&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;pip &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;python-alipay-sdk &lt;span class=&quot;nt&quot;&gt;--upgrade&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;创建一个支付应用，例如名为 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unipayment&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;python manage.py startapp unipayment
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;在应用的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;settings.py&lt;/code&gt; 中配置支付宝的基本信息。&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# 支付宝设置
# 支付宝 APP_ID
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ALIPAY_APP_ID&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;2021000121666666&apos;&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 支付宝网关，基本固定
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ALIPAY_SERVER_URL&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;https://openapi.alipaydev.com/gateway.do&apos;&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 支付宝证书
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;APP_PRIVATE_KEY_STRING&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;BASE_DIR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;keys/rsa_private_key.pem&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;r&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ALIPAY_PUBLIC_KEY_STRING&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;BASE_DIR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;keys/ali_public_key.pem&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;r&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 支付宝回调地址
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ALIPAY_RETURN_URL&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;http://xxxx.com/pay_success.html&apos;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;ALIPAY_DEBUG&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;其中需要准备好支付宝的两个证书（应用私钥、支付宝公钥），放在项目根目录下的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/keys&lt;/code&gt; 文件夹中，名称以这两个命名即可。&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;在 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unipayment/views.py&lt;/code&gt; 文件中定义一个 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;alipay&lt;/code&gt; 函数。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;这个函数中需要实现三个功能：&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;构建客户端（从&lt;a href=&quot;https://github.com/fzlee/alipay/blob/master/docs/apis.zh-hans.md&quot;&gt;文档&lt;/a&gt;中复制 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Alipay(...)&lt;/code&gt; 这部分内容，赋值给 alipay_client）&lt;/li&gt;
  &lt;li&gt;发起支付请求（从&lt;a href=&quot;https://github.com/fzlee/alipay/blob/master/docs/apis.zh-hans.md&quot;&gt;文档&lt;/a&gt;中复制 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;client_api(...)&lt;/code&gt; 这部分内容，赋值给 order_string）&lt;/li&gt;
  &lt;li&gt;跳转到支付界面，链接格式基本固定，&lt;a href=&quot;https://github.com/fzlee/alipay/blob/master/docs/apis.zh-hans.md&quot;&gt;文档&lt;/a&gt;中也写的很清楚。&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# 支付宝
&lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;alipay&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AliPay&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;alipay.utils&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AliPayConfig&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;alipay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# 文档 https://github.com/fzlee/alipay
&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# 构建支付的客户端 alipay_client
&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;alipay_client&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;AliPay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;appid&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ALIPAY_APP_ID&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;app_notify_url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;None&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# 默认回调 url
&lt;/span&gt;        &lt;span class=&quot;n&quot;&gt;app_private_key_string&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;APP_PRIVATE_KEY_STRING&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;c1&quot;&gt;# 支付宝的公钥，验证支付宝回传消息使用，不是你自己的公钥,
&lt;/span&gt;        &lt;span class=&quot;n&quot;&gt;alipay_public_key_string&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ALIPAY_PUBLIC_KEY_STRING&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;sign_type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;RSA&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# RSA 或者 RSA2
&lt;/span&gt;        &lt;span class=&quot;n&quot;&gt;debug&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# 默认 False
&lt;/span&gt;        &lt;span class=&quot;n&quot;&gt;verbose&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# 输出调试数据
&lt;/span&gt;        &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;AliPayConfig&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;timeout&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# 可选，请求超时时间
&lt;/span&gt;    &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;c1&quot;&gt;# 使用 Alipay 进行支付请求的发起
&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;subject&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;测试订单&quot;&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# 电脑网站支付，需要跳转到：https://openapi.alipay.com/gateway.do? + order_string
&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;order_string&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;alipay_client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;client_api&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;alipay.trade.page.pay&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;biz_content&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;s&quot;&gt;&quot;out_trade_no&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;20161112&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s&quot;&gt;&quot;total_amount&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;0.01&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;s&quot;&gt;&quot;subject&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;subject&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;return_url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ALIPAY_RETURN_URL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# this is optional
&lt;/span&gt;    &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    
    &lt;span class=&quot;c1&quot;&gt;# 测试接口：http://127.0.0.1:8000/shop/alipay/
&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;redirect&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ALIPAY_SERVER_URL&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;?&apos;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;order_string&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;最后在应用的 urls.py 中添加链接&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;untag_payment&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;views&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;untag_payment_views&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;re_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sa&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;^shop/alipay/&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;untag_payment_views&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;alipay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;alipay&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;运行 runserver&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;python manage.py runserver
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;打开浏览器，访问 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://127.0.0.1:8000/shop/alipay/&lt;/code&gt; 这个地址。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;正常来说，它会跳转到支付宝的扫码支付页面中。&lt;/p&gt;

&lt;h2 id=&quot;微信支付接口&quot;&gt;微信支付接口&lt;/h2&gt;

&lt;p&gt;搞懂了支付宝的接口，微信的接口就大同小异了。&lt;/p&gt;

&lt;p&gt;我选择了第三方实现的 Python 微信支付接口 &lt;a href=&quot;https://github.com/minibear2021/wechatpayv3&quot;&gt;minibear2021/wechatpayv3 - Github&lt;/a&gt;，也有比较完善的 &lt;a href=&quot;https://github.com/minibear2021/wechatpayv3&quot;&gt;文档&lt;/a&gt; 。&lt;/p&gt;

&lt;h3 id=&quot;操作流程&quot;&gt;操作流程&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;安装 wechatpayv3&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;pip &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;wechatpayv3
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;创建一个支付应用，例如名为 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unipayment&lt;/code&gt;，如果上面建过了，则不用再次建立。&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;python manage.py startapp unipayment
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;在应用的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;settings.py&lt;/code&gt; 中配置微信的基本信息。&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# 微信支付设置（沙箱测试）
&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 微信支付商户号，服务商模式下为服务商户号，即官方文档中的sp_mchid。
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;MCHID&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;&apos;&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 商户证书私钥，此文件不要放置在下面设置的CERT_DIR目录里。
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PRIVATE_KEY&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;BASE_DIR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;keys/apiclient_key.pem&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;r&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 商户证书序列号
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CERT_SERIAL_NO&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;&apos;&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# API v3密钥， https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay3_2.shtml
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;APIV3_KEY&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;&apos;&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# APPID，应用ID，服务商模式下为服务商应用ID，即官方文档中的sp_appid，也可以在调用接口的时候覆盖。
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;APPID&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;&apos;&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 回调地址，也可以在调用接口的时候覆盖。
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;NOTIFY_URL&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;https://www.xxxx.com/notify&apos;&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 微信支付平台证书缓存目录，初始调试的时候可以设为None，首次使用确保此目录为空目录。
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CERT_DIR&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;./cert&apos;&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 日志记录器，记录web请求和回调细节，便于调试排错。
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;basicConfig&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getcwd&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;demo.log&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;level&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;DEBUG&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;filemode&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;%(asctime)s - %(process)s - %(levelname)s: %(message)s&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;LOGGER&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getLogger&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;demo&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 接入模式：False=直连商户模式，True=服务商模式。
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PARTNER_MODE&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# 代理设置，None或者{&quot;https&quot;: &quot;http://10.10.1.10:1080&quot;}，详细格式参见https://docs.python-requests.org/zh_CN/latest/user/advanced.html
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PROXY&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;None&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;在 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;unipayment/views.py&lt;/code&gt; 文件中定义一个 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wechatpay&lt;/code&gt; 函数。&lt;/li&gt;
&lt;/ol&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;

&lt;p&gt;基本上也是到 &lt;a href=&quot;https://github.com/minibear2021/wechatpayv3&quot;&gt;文档&lt;/a&gt; 里复制相应的代码，缺什么包补一下引用就结束了。&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# 微信
&lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;wechatpayv3&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;WeChatPay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;WeChatPayType&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;random&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sample&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ascii_letters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;digits&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;json&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;wechatpay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# 文档 https://github.com/minibear2021/wechatpayv3
&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# 构建支付的客户端 wechatpay_client
&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;wechatpay_client&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;WeChatPay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;wechatpay_type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;WeChatPayType&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;NATIVE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;mchid&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;MCHID&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;private_key&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PRIVATE_KEY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;cert_serial_no&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CERT_SERIAL_NO&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;apiv3_key&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;APIV3_KEY&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;appid&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;APPID&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;notify_url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;NOTIFY_URL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;cert_dir&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;CERT_DIR&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LOGGER&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;partner_mode&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PARTNER_MODE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;proxy&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;settings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PROXY&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    
    &lt;span class=&quot;c1&quot;&gt;# 以native下单为例，下单成功后即可获取到&apos;code_url&apos;，将&apos;code_url&apos;转换为二维码，并用微信扫码即可进行支付测试。
&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;out_trade_no&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sample&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ascii_letters&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;digits&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;demo-description&apos;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;amount&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;code&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;wechatpay_client&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;out_trade_no&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;out_trade_no&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;amount&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;total&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;amount&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;pay_type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;WeChatPayType&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;NATIVE&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    
    &lt;span class=&quot;c1&quot;&gt;# 测试接口： http://127.0.0.1:8000/shop/wechatpay/
&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;dumps&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;code&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;code&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;message&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;})&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;在应用的 urls.py 中添加链接&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;untag_payment&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;views&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;untag_payment_views&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;re_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sa&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;^shop/wechatpay/&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;untag_payment_views&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;wechatpay&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;wechatpay&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;运行 runserver&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;python manage.py runserver
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ol&gt;
  &lt;li&gt;打开浏览器，访问 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://127.0.0.1:8000/shop/wechatpay/&lt;/code&gt; 这个地址。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;正常来说，它会返回一个微信的 Json，还需要转一下二维码，就可以生成一个支付二维码让用户扫码支付了。&lt;/p&gt;

&lt;h2 id=&quot;下一步工作&quot;&gt;下一步工作&lt;/h2&gt;

&lt;p&gt;本文主要讲解了 Django 接入支付宝和微信支付的实操步骤，主要是针对网页支付相关的，如果你要做的是 App 支付，根据上面提到的文档链接自己去查找就可以，千万不能照搬照抄。&lt;/p&gt;

&lt;p&gt;除此之外，其实还缺少一些前后步骤。&lt;/p&gt;

&lt;p&gt;进行操作之前：需要准备支付宝的认证（需要公司营业执照等）和微信的认证（同样需要公司营业执照和 300 元企业认证费用），并且完整获取代码内所需的信息。这个建议参考两家大厂的官方文档，因为经常会有变化。&lt;/p&gt;

&lt;p&gt;进行操作之后：这里主要实现了与支付平台的接口，还需要在订单内补充“主题、描述、数量、金额”等等信息。在完成支付操作后，还需要实现判断是否付款、退款等功能。这些功能才是完成或未完成支付后的重点。&lt;/p&gt;

&lt;h2 id=&quot;小结一些感想&quot;&gt;小结：一些感想&lt;/h2&gt;

&lt;p&gt;个人认为，在尚未完全了解需要做什么、怎么做的情况下。讲解实操步骤是非常有必要的。其实在我完成接入后回顾整个流程，其实非常清晰，需要什么，就去文档里复制什么。&lt;/p&gt;

&lt;p&gt;而最困难的那一步往往是没有人带你上手，没有方向。&lt;/p&gt;

&lt;p&gt;我花了半天的时间去尝试、找方向，才把支付宝接口调通，搞懂了思路。接着半小时不到就完成了微信的接口。&lt;/p&gt;

&lt;p&gt;在整个过程中，我觉得很神奇的一点是，其实整个接入流程清晰易懂。只要简单说明就可以讲明白整件事，为什么在中文互联网上几乎没有人提到过。明明 Django 也不算特别小众的框架，Django-Oscar 又是 Django 框架下比较有限的商城选择之一，却完全没人提到过这件事。&lt;/p&gt;

&lt;p&gt;我中途还看了不少的实现方法，比如以 Django-Oscar 开头的 &lt;a href=&quot;https://github.com/amyhoo/django-oscar-alipay&quot;&gt;amyhoo/django-oscar-alipay&lt;/a&gt; ，已经七年没有更新了。官方示例 &lt;a href=&quot;https://github.com/django-oscar/django-oscar-paypal&quot;&gt;django-oscar/django-oscar-paypal&lt;/a&gt; 也并没有起到很好的指导作用。还有很多库连最基本的文档都没有，非常难以使用。&lt;/p&gt;

&lt;p&gt;这个时候只要有哪怕一篇文章能把整件事讲清楚，最好能把思路说明白。那就基本上是把最困难的那部分解决了。希望未来中国开发者也能把每一篇面向其他开发者的文档写的清晰易懂。&lt;/p&gt;
</description>
        <pubDate>Wed, 05 Oct 2022 01:02:05 +0000</pubDate>
        <link>http://ifoxfactory.com/2022/10/05/Python-Django-Alipay-Wechatpay/</link>
        <guid isPermaLink="true">http://ifoxfactory.com/2022/10/05/Python-Django-Alipay-Wechatpay/</guid>
        
        <category>开发</category>
        
        <category>Python</category>
        
        
      </item>
    
      <item>
        <title>如何导出 Google Photos 的照片</title>
        <description>&lt;h1 id=&quot;如何导出-google-photos-的照片&quot;&gt;如何导出 Google Photos 的照片&lt;/h1&gt;

&lt;p&gt;最近 Google Photos 更新了它的新政策，从 2021 年 6 月 1 日起，用户不再享受「无限上传高质量照片」的业务。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/11/14/g38Ba1rFenMdimo.png&quot; alt=&quot;01-GooglePhotos 新政策.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;尽管功能调整后的 Google Photos 实用性大不如从前，不付费的 15 GB 空间甚至比不上国内的一些网盘，非常可惜。看来「免费的东西才是最贵的」这句话一点都不假。&lt;/p&gt;

&lt;p&gt;消息来得突然，不过还好尚有大半年的时间留给用户调整，并且 Google 承诺老照片不会被删除，因此当务之急是另寻一个备份照片和视频的场所，以及导出历史的照片数据。&lt;/p&gt;

&lt;h2 id=&quot;关于新的备份空间&quot;&gt;关于新的备份空间&lt;/h2&gt;

&lt;p&gt;新的场所其实很好选（也可以说基本没多少选择），你可以准备一个移动硬盘来存这些照片和视频，这些数据永远都是你自己的，以后想放哪里备份放哪里备份。&lt;/p&gt;

&lt;p&gt;如果数据量大的，还想享受 Google Photos 级别的自动分类的用户，我建议可以准备一台 NAS，NAS 的优势显而易见，备份速度超快，容量灵活调整，隐私安全性高。除了成本稍贵，几乎没有什么明显的缺点。&lt;/p&gt;

&lt;p&gt;为什么我完全不推荐国内网盘或相册服务？动脑子想想，连 Google Photos 都在做战略性调整，再转去国内所谓免费 + 无限容量的一刻相册（某度的，我只是听说），或者其他同类型公有云网盘。或许现在信誓旦旦，但在不久的将来，是不是也会重蹈覆辙？是不是情况只会更糟？——尽管我还没试用过，但我相信国内公有云相册的导出之路一定漫长而艰辛，个人隐私更是个笑话。&lt;/p&gt;

&lt;h2 id=&quot;关于导出数据&quot;&gt;关于导出数据&lt;/h2&gt;

&lt;p&gt;Google 系列的大部分产品都可以导出数据，而且数据非常完整。&lt;/p&gt;

&lt;p&gt;废话不说太多，导出步骤如下：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;进入 &lt;a href=&quot;https://takeout.google.com/settings/takeout&quot;&gt;Google 导出&lt;/a&gt; 的界面，需要登录 Google 账号。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/11/14/QNRHAlZmJGkLbWC.png&quot; alt=&quot;02-导出第一步.png&quot; /&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;勾选「Google 相册」，点击底部的「下一步」。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/11/14/x6Wul7pMwBQYr25.png&quot; alt=&quot;03-导出第二步.png&quot; /&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;选择文件类型、频率和目标位置这里，提供方式选择「通过电子邮件发送下载链接」，频率选择「导出一次」。文件类型选 .tgz 的话能够选择单文件 50 GB，但考虑到下载速度可能并不理想，经常有可能中断连接导致前功尽弃。你可以选择 .zip 格式的 2 GB 大小单文件进行导出。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/11/14/9UadV2DypJlmbPZ.png&quot; alt=&quot;04-导出第三步.png&quot; /&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;然后创建导出作业，就可以静待导出作业完成，然后去邮箱接收邮件并到相应地址下载文件。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Google Photos 原有的无限容量只允许「高质量照片」使用，也就是在不损失太多画质的情况下，将原始质量的照片进行一定的压缩。所以导出的照片文件大小可能会比拍摄时更小。&lt;/p&gt;

&lt;p&gt;整个导出流程并不复杂，困难的反而是如何将这些压缩包稳定地下载到本地。挂上高速的代理能够大大减少下载时间。&lt;/p&gt;

&lt;h2 id=&quot;小结&quot;&gt;小结&lt;/h2&gt;

&lt;p&gt;在导出过程中，我们可以发现不仅仅是 Google Photos，Google 系列的其他产品，如 Chrome、Google Drive、Gmail 等知名或不知名的产品，都能够以多种文件格式进行导出，方便用户转移到其他平台。从不挟数据以令用户，我从前以为这是天经地义，现在反而成了大厂才有的担当。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/11/14/dzM4NvJ8EG95sOR.png&quot; alt=&quot;05-各种格式均可导出.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Google Photos 的调整固然让用户不爽，但毕竟是从 2015 年运行至今的纯免费服务，并且没有动用户的历史数据，没有对用户下载数据进行限制，没有在应用内植入广告（请注意，这些都是纯烧钱行为）。&lt;/p&gt;

&lt;p&gt;像我这样用了四五年的 Google Photos 用户，仅有的代价是给 Google 提供了持续且大量的图像识别算法数据，以及现在产生的一些导出转移成本，这笔买卖对我个人而言并不亏。&lt;strong&gt;用户自愿使用免费服务并承担可能产生的转移成本，我认为尚属于合理的范围。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;回头看看国内某网盘平台，丝毫不考虑用户意见，公然将「永久免费 10 TB」限制到 100GB，再限制到 10 GB。并对用户限制下载速度、超期则冻结账户的行为，我看不到丝毫对用户的尊重。孰高孰低，高下立判。&lt;/p&gt;

</description>
        <pubDate>Sat, 14 Nov 2020 22:12:04 +0000</pubDate>
        <link>http://ifoxfactory.com/2020/11/14/How-to-export-photos-from-Google-Photos/</link>
        <guid isPermaLink="true">http://ifoxfactory.com/2020/11/14/How-to-export-photos-from-Google-Photos/</guid>
        
        <category>技巧</category>
        
        
      </item>
    
      <item>
        <title>与 Windows 互传照片、投屏与控制 iPhone 的新方法 - Dell Mobile Connect</title>
        <description>&lt;h1 id=&quot;与-windows-互传照片投屏与控制-iphone-的新方法---dell-mobile-connect&quot;&gt;与 Windows 互传照片、投屏与控制 iPhone 的新方法 - Dell Mobile Connect&lt;/h1&gt;

&lt;p&gt;早在两年前，戴尔就推出了这款能够连接 iPhone 和 Windows 的软件：&lt;a href=&quot;https://www.dell.com/en-us/shop/dell-mobile-connect/ab/dell-mobile-connect&quot;&gt;Dell Mobile Connect&lt;/a&gt;。它能够让用户在 PC 上接打 iPhone 的电话、发送短信、接收通知、关闭通知等。&lt;/p&gt;

&lt;p&gt;如今戴尔又放了一个大招，通过 Dell Mobile Connect 实现了两个新功能——&lt;strong&gt;图片视频传输&lt;/strong&gt;、&lt;strong&gt;PC 镜像控制 iPhone&lt;/strong&gt;。&lt;/p&gt;

&lt;h2 id=&quot;图片视频传输&quot;&gt;图片视频传输&lt;/h2&gt;

&lt;p&gt;Dell Mobile Connect 实现的照片传输体验很新颖，适合用来传输少量照片或视频。&lt;strong&gt;能够从 PC 端快速下载手机上的近期照片&lt;/strong&gt;。&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;需要保持手机端 App 在后台静默运行。&lt;/li&gt;
  &lt;li&gt;PC 端刷新一次能显示最近拍摄的 15 张照片预览图。&lt;/li&gt;
  &lt;li&gt;点击照片后，照片会被传输到 PC 端。&lt;/li&gt;
  &lt;li&gt;PC 端再点击一次「就绪」的照片，就可以看到图片原图了。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/03/26/pXB2zHnkr9qQlTV.png&quot; alt=&quot;图片传输&quot; /&gt;&lt;/p&gt;

&lt;p&gt;视频也是一样，一次能够加载 15 个视频。点击后传输到 PC 端。可惜的是，&lt;strong&gt;一次只能传输一张照片或一个视频&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;Dell Mobile Connect 还支持&lt;strong&gt;从 PC 端传输照片到手机&lt;/strong&gt;。在右上角的「…」中选择「复制到手机」，然后选择本地的图片文件，就可以把图片传输到手机上了。当然，一次也只能传输一张照片。&lt;/p&gt;

&lt;p&gt;除了 iOS 版可以传输照片和视频，Android 版还支持音乐和文档传输，同样是一次一份。&lt;/p&gt;

&lt;p&gt;总之，这项功能并不能用于批量传输照片视频。而是非常适合快速浏览手机中的近期照片、传输刚刚拍摄的照片。&lt;/p&gt;

&lt;h2 id=&quot;pc-镜像控制-iphone&quot;&gt;PC 镜像控制 iPhone&lt;/h2&gt;

&lt;p&gt;Dell Mobile Connect 这次实现了&lt;strong&gt;在电脑上镜像显示手机屏幕&lt;/strong&gt;。还能用电脑的鼠标键盘，&lt;strong&gt;对 iPhone 进行实时操作&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/03/26/hYOlIraDqWQEtyi.png&quot; alt=&quot;投屏&quot; /&gt;&lt;/p&gt;

&lt;p&gt;在初次使用时，需要先让 iPhone 与 PC 连接到相同的局域网，然后在 iPhone 上允许 Dell Mobile Connect 使用蓝牙和录制屏幕。并按照要求到设置中启用「辅助触控」功能。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/03/26/sNDjBKzqTIlu8LE.jpg&quot; alt=&quot;iPhone 端设置&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/03/26/UvzFAnQPCD8OwsX.png&quot; alt=&quot;电脑端设置&quot; /&gt;&lt;/p&gt;

&lt;p&gt;以往市面上有不少工具推出了投屏功能，但一直以来提供的都是 iPhone 显示到 PC 端的单向传输。并没有 PC 控制 iPhone 的能力。&lt;/p&gt;

&lt;p&gt;而这次 Dell Mobile Connect 另辟蹊径地采用了 iOS 中自带的「辅助触控」功能，实现了用 PC 的鼠标键盘直接对 iPhone 进行操作。这在以往的投屏方案中都是看不到的。&lt;/p&gt;

&lt;video id=&quot;my-video&quot; class=&quot;video-js&quot; controls=&quot;&quot; preload=&quot;meta&quot; style=&quot;width:100%&quot; poster=&quot;&quot; data-setup=&quot;{}&quot;&gt;
    &lt;source src=&quot;http://ifoxfactory.com/img/in-post/2020-03-26-Dell-Mobile-Connect/Dell-Mobile-Video.mp4&quot; type=&quot;video/mp4&quot; /&gt;
&lt;/video&gt;

&lt;p&gt;经过测试，在控制 iPhone 期间，用键盘快捷键都可以正常使用，且 Command 对应的都是 Windows 键盘上的 Ctrl 键，体验相当不错。&lt;/p&gt;

&lt;p&gt;我还做了一些尝试，比如在 iPad 上安装 Dell Mobile Connect，不过目前并不提供 iPad 版本，也无法安装，只能等待进一步的更新了。这款工具也没有 macOS 版本。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/03/26/ADValOkYsxoBGJc.png&quot; alt=&quot;iPad 版本无法下载&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Android 手机也能通过 Dell Mobile Connect 进镜像和控制。PC 端还专门做了一个「微信」的按钮，用于接受手机微信的信息。&lt;/p&gt;

&lt;h2 id=&quot;除了办公游戏玩家也可以期待更新&quot;&gt;除了办公，游戏玩家也可以期待更新&lt;/h2&gt;

&lt;p&gt;除了尝鲜和办公之外，对这项功能最感兴趣的一定是 iOS 游戏玩家了。&lt;/p&gt;

&lt;p&gt;由于目前在电脑端游玩的手游基本上都是通过 Android 模拟器实现的，而 iOS 并没有相应的模拟器，或只能投屏无法控制，游玩还是只能在手机上游玩。有了 Dell Mobile Connect 后，是否可以在 PC 上玩到 iOS 游戏呢？&lt;/p&gt;

&lt;p&gt;我尝试了 Time Locker 这款轻量的竖屏小游戏，除了鼠标操作不太习惯，画面的轻微延迟还是可以接受的。但在电脑端投屏游戏时，会在初次进入界面时产生断连的情况。看来在连接的稳定性方面还需要产生优化。&lt;/p&gt;

&lt;p&gt;不过目前依然存在一些问题：&lt;strong&gt;无法正常游玩横屏的游戏&lt;/strong&gt;。最严重的是两个问题：横屏游戏仍以竖屏模式显示、鼠标拖拽方向错误（比如向下滑鼠标在手机端则为向右滑），这让我根本无法正常进行游戏。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/03/26/5G3fmYiMTtk6jBv.png&quot; alt=&quot;游戏试玩&quot; /&gt;&lt;/p&gt;

&lt;p&gt;所以目前来看，投屏和控制的基础功能已经做好了，接下来只需等 Dell 在体验上再做优化了。&lt;/p&gt;

&lt;h2 id=&quot;下载链接&quot;&gt;下载链接&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.microsoft.com/zh-cn/p/dell-mobile-connect/9nx51w9gbs5t?rtc=1&quot;&gt;Windows 下载链接&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/app/dell-mobile-connect/id1241903676&quot;&gt;iOS 版 App Store 下载链接&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.screenovate.dell.mobileconnect&quot;&gt;Android 版 Google Play 下载链接&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;系统要求是移动端在 iOS 11 以上，Android 6 以上就能用。Windows 10 要求 2018 年以及更新的系统就可以了，硬件需要有蓝牙。对机器没有特别的要求，非戴尔机型也能使用。&lt;/p&gt;
</description>
        <pubDate>Thu, 26 Mar 2020 16:57:23 +0000</pubDate>
        <link>http://ifoxfactory.com/2020/03/26/Dell-Mobile-Connect/</link>
        <guid isPermaLink="true">http://ifoxfactory.com/2020/03/26/Dell-Mobile-Connect/</guid>
        
        <category>工具</category>
        
        <category>Windows</category>
        
        <category>iOS</category>
        
        
      </item>
    
      <item>
        <title>为英文视频自动制作中文字幕使用流程</title>
        <description>&lt;h1 id=&quot;为英文视频自动制作中文字幕使用流程&quot;&gt;为英文视频自动制作中文字幕使用流程&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;思路&lt;/strong&gt;：利用 YouTube 的自动生成字幕功能、Google Translate 的自动翻译功能，实现自动为英文视频制作中文字幕。&lt;/p&gt;

&lt;h3 id=&quot;序言&quot;&gt;序言&lt;/h3&gt;

&lt;p&gt;国内现有的&lt;a href=&quot;https://sspai.com/post/55219&quot;&gt;视频转文字方案&lt;/a&gt;有点贵，而且对英文识别未必好：&lt;/p&gt;

&lt;p&gt;今天想了一个流程，能给录制下来的英文视频自动加上中文字幕。需要用到 YouTube 和 Google Translate，大家有空可以试一下。&lt;/p&gt;

&lt;p&gt;先看一看最终效果：&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/01/23/gQ5SlkaxB7ZEhUp.png&quot; alt=&quot;Chinese Subtitle.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;第一步：上传视频&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;将视频上传到 YouTube。&lt;/li&gt;
  &lt;li&gt;上传完毕后，等待 YouTube 生成自动字幕，通常在 1~2 小时左右。&lt;/li&gt;
  &lt;li&gt;如考虑到视频的版权问题，可先设置为「私享」即不公开。等需要下载字幕时一定要将权限设置为「不公开列出」，否则必然无法下载。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/01/23/DCqcXOuFaKRkYmT.png&quot; alt=&quot;Chinese Subtitle _1_.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;第二步：安装油猴插件&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;下载油猴 Chrome 插件。
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo&quot;&gt;官方下载渠道&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.extfans.com/productivity/dhdgffkkebhmkfjojejmpbldmpobfkfo/&quot;&gt;第三方下载渠道&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;注&lt;/strong&gt;：&lt;a href=&quot;https://www.extfans.com/articles/489/&quot;&gt;油猴脚本基础使用方法&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;在油猴插件市场 Greasyfork 下载字幕下载工具，感谢开发者 guokrfans@gmail.com。&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://greasyfork.org/zh-CN/scripts/39188-youtube-%E8%87%AA%E5%8A%A8%E5%AD%97%E5%B9%95%E7%BF%BB%E8%AF%91%E6%88%90%E4%B8%AD%E6%96%87%E5%90%8E%E7%9A%84%E5%AD%97%E5%B9%95%E4%B8%8B%E8%BD%BD&quot;&gt;自动字幕翻译成中文后的字幕下载插件&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/01/23/ItERYcGjVuLkUxm.png&quot; alt=&quot;Snipaste_2020-01-23_02-23-19.png&quot; /&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;可选步骤&lt;/strong&gt;：自动切换中文字幕的油猴插件。&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;&lt;a href=&quot;https://greasyfork.org/zh-CN/scripts/382426-youtube%E8%87%AA%E5%8A%A8%E5%88%87%E6%8D%A2%E4%B8%AD%E6%96%87%E5%AD%97%E5%B9%95&quot;&gt;Youtube自动切换中文字幕&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;&lt;a href=&quot;https://greasyfork.org/zh-CN/scripts/5368-youtube-subtitle-downloader-v20&quot;&gt;Youtube Subtitle Downloader v20&lt;/a&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;第三步：下载字幕&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;回到视频，点击下载字幕即可。此处下载的是「自动生成的英文字幕被自动翻译后生成的&lt;strong&gt;中文字幕&lt;/strong&gt;」。即可完成目标。&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;如显示「没有自动字幕，无法下载」，说明获取不到该视频的字幕链接，需要检查视频是否半公开，&lt;strong&gt;私有视频是无法获取字幕的&lt;/strong&gt;。&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;再不行就需要在后台手动下载 SBV 英文字幕了。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/01/23/rMmXORCoBehW94A.png&quot; alt=&quot;Chinese Subtitle _2_.png&quot; /&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;如果视频自己上传的，可以进入后台，找到该视频自动生成的 SBV 格式字幕。下载完毕后，需要找工具将其转换为 SRT 格式的普通字幕。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;注：格式转换&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;如何转格式就不再赘述了，搜索一下有很多工具。比如：&lt;a href=&quot;https://www.3playmedia.com/solutions/features/tools/captions-format-converter/&quot;&gt;3playmedia 的字幕格式转换&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/01/23/Zx9HOdPuzsQKMBV.png&quot; alt=&quot;Chinese Subtitle _3_.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/01/23/jF1OYsTNJ3ouWbR.png&quot; alt=&quot;Chinese Subtitle _4_.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;第四步：使用字幕&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;下载到本地后，将文件名和视频名保持一致，SRT 格式的字幕即可正常使用。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2020/01/23/gQ5SlkaxB7ZEhUp.png&quot; alt=&quot;Chinese Subtitle.png&quot; /&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 22 Jan 2020 23:11:23 +0000</pubDate>
        <link>http://ifoxfactory.com/2020/01/22/Automatically-Chinese-subtitles-for-English-videos/</link>
        <guid isPermaLink="true">http://ifoxfactory.com/2020/01/22/Automatically-Chinese-subtitles-for-English-videos/</guid>
        
        <category>技巧</category>
        
        
      </item>
    
      <item>
        <title>最软的一次发布会，2019 的苹果发布会都有哪些亮点？</title>
        <description>&lt;p&gt;其实这次发布会苹果都没打算给国内用户看，从官网就可以看出来——&lt;/p&gt;

&lt;p&gt;苹果的美国官网早就更新成四个新服务了：&lt;a href=&quot;https://www.apple.com/&quot;&gt;https://www.apple.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;中国官网毫无动静：&lt;a href=&quot;https://www.apple.com/cn/&quot;&gt;https://www.apple.com/cn/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;先讲讲跟我们关系最大的 &lt;a href=&quot;https://www.apple.com/apple-arcade/&quot;&gt;Apple Arcade&lt;/a&gt;，跟之前想的不太一样，本质是全平台的多游戏订阅服务，有点像游戏方面的 SetApp，而且不准备掺和主机游戏和 PC 游戏，苹果在手游领域都没有能打的对手。但发布会上说的很模糊，连价格也没有公布。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2019/03/26/5c99a52706d57.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;只透露出两个信息，不做云游戏（Play Offline），要做全平台（Jump from iPhone to iPad, Mac, and Apple TV.），将来会在 WWDC 上发布开发解决方案。&lt;/p&gt;

&lt;p&gt;但是这样一来，四种平台会有三种操作方式，作为玩家不得不考虑操作方式，这是它的难点。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2019/03/26/5c99a484a6947.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;如果没有确实好玩的大作，玩家不一定买账（玩家：为什么要每月花钱买一堆小游戏）。苹果又要考虑三种平台的操作，这决定了大作的操作也不能很复杂。我觉得苹果只能以 iOS 为主阵地，macOS 和 TV 将来即使有游戏也会被边缘化。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2019/03/26/5c99a485689d2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;News+ 和 TV+ 都没什么好说的，无缘国内用户……杂志的样式很漂亮，如果有 3 本以上喜欢的外文杂志就可以订阅了。TV+ 部分又臭又长，后半场几乎都是业内名人演讲，有牌面但是无聊，到最后也没说清楚具体是个什么东西。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2019/03/26/5c99a48501736.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Apple Card 我感觉更像支付宝而不是信用卡，发布会上说的也都是 Cash 而非 Balance。&lt;/p&gt;

&lt;p&gt;它作为信用卡的费用比普通信用卡要少（免年费，免逾期罚款），它指的 no fee 是指没有服务费，不还账单应该还是会有大额利息的。&lt;/p&gt;

&lt;p&gt;那张实体卡片也只是让它变得更像「Card」，Apple Card 的本质应该是虚拟支付方式为主，实体卡片为辅。​​​&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2019/03/26/5c99a484e45a5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

</description>
        <pubDate>Tue, 26 Mar 2019 08:31:53 +0000</pubDate>
        <link>http://ifoxfactory.com/2019/03/26/Apple-Conference-2019-3/</link>
        <guid isPermaLink="true">http://ifoxfactory.com/2019/03/26/Apple-Conference-2019-3/</guid>
        
        <category>观点</category>
        
        
      </item>
    
      <item>
        <title>文件归档、日记模板、代码格式化，各种高效率操作一次完成 | Quicker Lab 第 1 期</title>
        <description>&lt;h1 id=&quot;文件归档日记模板代码格式化各种高效率操作一次完成--quicker-lab-第-1-期&quot;&gt;文件归档、日记模板、代码格式化，各种高效率操作一次完成 | Quicker Lab 第 1 期&lt;/h1&gt;

&lt;p&gt;最近发现这款 Quicker 之后，由于它提供了类似 Shortcuts 的动作组合功能。准备更新一个新坑——每天推荐一个 Quicker 动作。&lt;/p&gt;

&lt;p&gt;我会在我的微博、Twitter 同步更新动作的详细信息，更新频率为每天一次。博客则汇总这些更新，同时详细讲解动作制作中遇到的问题、方法、技巧等（尽量保证一周有五个动作推荐）。&lt;/p&gt;

&lt;p&gt;各位可以按需关注&lt;a href=&quot;http://weibo.com/FoxGeeker&quot;&gt;我的微博&lt;/a&gt;、&lt;a href=&quot;https://twitter.com/fengyunkkx&quot;&gt;Twitter&lt;/a&gt;，或者订阅&lt;a href=&quot;http://ifoxfactory.com/feed.xml&quot;&gt;本博客的 RSS&lt;/a&gt;。&lt;/p&gt;

&lt;h2 id=&quot;日记模板---原创--2019-02-18&quot;&gt;日记模板 - 原创 | 2019-02-18&lt;/h2&gt;

&lt;p&gt;开篇动作是日记模板，这个动作参考了 @文刀漢三 的 Day One 每日总结 Shortcuts。&lt;/p&gt;

&lt;p&gt;模板作用是每天问自己几个问题，然后把 Markdown 格式的日记复制到剪贴板。配合 Chrome 的 Day One 扩展一起使用，效果更佳。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.sspai.com/2019-02-28-%E6%97%A5%E8%AE%B0%E6%A8%A1%E6%9D%BF.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://getquicker.net/sharedaction?code=9640dc6a-d637-4c24-2a60-08d69553d63a&quot;&gt;「日记模板」动作链接&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;文件快速归档---原创--2019-02-19&quot;&gt;文件快速归档 - 原创 | 2019-02-19&lt;/h2&gt;

&lt;p&gt;每次都要手动整理文件太糟心？你已经有了一个成熟的文件管理器了，它应该学会自己整理文件了。&lt;/p&gt;

&lt;p&gt;这次的动作是「文件快速归档」系列，按不同的效果分为三个动作，可以把文件按照不同类型，直接放进文件夹。免除手动整理文件的烦恼。&lt;/p&gt;

&lt;p&gt;同类文档归类是我最推荐的动作，可以把许多文件按照文件类型进行分类。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.sspai.com/2019-02-28-%E6%96%87%E4%BB%B6%E5%BF%AB%E9%80%9F%E5%BD%92%E6%A1%A3-%E6%8C%89%E7%B1%BB%E5%9E%8B.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;👉&lt;a href=&quot;https://getquicker.net/Sharedaction?code=06e1bd16-6be0-4f27-05d5-08d6960a88e5&quot;&gt;「同类文件归档」动作链接&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;如果你想给每个文件建立文件夹，用下面这个动作更合适。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.sspai.com/2019-02-28-%E6%96%87%E4%BB%B6%E5%BF%AB%E9%80%9F%E5%BD%92%E6%A1%A3-%E6%AF%8F%E4%B8%AA%E6%96%87%E4%BB%B6.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://getquicker.net/Sharedaction?code=afa673ae-78db-4bea-05d4-08d6960a88e5&quot;&gt;「每个文件归档」动作链接&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;最后是把一堆文件放进同一个文件夹，那么这个动作可以满足你的需求。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.sspai.com/2019-02-28-%E6%96%87%E4%BB%B6%E5%BF%AB%E9%80%9F%E5%BD%92%E6%A1%A3-%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://getquicker.net/Sharedaction?code=db19e33e-9bfc-46d1-05d6-08d6960a88e5&quot;&gt;「所有文件归档」动作链接：&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;这些动作采用了类似的步骤来写，思路是获取选中的文件夹名称，对名称和目录进行重新组合，再将文件移动到相应的文件夹中。适合进行更多的改写。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2019/03/01/5c78baf20490d.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;ios-应用搜索---原创--2019-02-20&quot;&gt;iOS 应用搜索 - 原创 | 2019-02-20&lt;/h2&gt;

&lt;p&gt;由于苹果没有开放 App Store 的网页版，iTunes 也取消了 App 板块。所以如何在 PC 上检索想要的 iOS 应用信息变成了一个问题，我们可以借助 fnd.io 这个网站来搜索 iOS 的应用信息。&lt;/p&gt;

&lt;p&gt;通过这个动作，你可以选中应用名称，或者复制应用名称来实现快速搜索 iOS 应用。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.sspai.com/2019-02-28-iOS%20%E5%BA%94%E7%94%A8%E6%90%9C%E7%B4%A2.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://getquicker.net/sharedaction?code=45aef7b3-afd8-4b46-3b77-08d696eeec88&quot;&gt;「iOS 应用搜索」动作链接&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;解散文件夹---原创--2019-02-21&quot;&gt;解散文件夹 - 原创 | 2019-02-21&lt;/h2&gt;

&lt;p&gt;想把 20 个文件夹中的所有文件提取出来需要几步？&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.sspai.com/2019-02-28-%E8%A7%A3%E6%95%A3%E6%96%87%E4%BB%B6%E5%A4%B9.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;一步就够了！今天给大家介绍的「解散文件夹」动作，可以给文件夹做一次大扫除，将多个文件夹一次性解散。配合前几天推荐的一系列归档动作一起使用效果更佳~&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.sspai.com/2019-02-28-%E8%A7%A3%E6%95%A3%E5%A4%A7%E9%87%8F%E6%96%87%E4%BB%B6%E5%A4%B9.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://getquicker.net/sharedaction?code=6aaceddc-6917-41cf-721a-08d697a27161&quot;&gt;「解散文件夹」动作链接&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;代码在线格式化---原创--2019-02-22&quot;&gt;代码在线格式化 - 原创 | 2019-02-22&lt;/h2&gt;

&lt;p&gt;今日份的动作是「代码在线格式化」。&lt;/p&gt;

&lt;p&gt;我们通常可以用 IDE 和代码编辑器来对代码进行格式化，不过一旦遇到不支持的代码类型，一些在线服务也是很好用的。脚本之家提供了多种语言的格式化服务，我们可以通过这些服务快速美化代码。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.sspai.com/2019-02-28-%E4%BB%A3%E7%A0%81%E6%A0%BC%E5%BC%8F%E5%8C%96.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href=&quot;https://getquicker.net/Sharedaction?code=a6dcb026-f0f5-4422-d64d-08d69892fb0c&amp;amp;fromMyShare=True&quot;&gt;「代码在线格式化」动作链接&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;本周的 Quicker Lab 就到这里了~&lt;/p&gt;

&lt;p&gt;❓ 如果你还不知道 Quicker 是啥，可以先看一下这篇介绍文章：&lt;a href=&quot;http://ifoxfactory.com/2019/02/16/This-new-Windows-software-may-be-your-favorite-weapon-Quicker/&quot;&gt;这款新出的 Windows 软件，或许能成为你最爱的「利器」：Quicker&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Sun, 24 Feb 2019 16:12:15 +0000</pubDate>
        <link>http://ifoxfactory.com/2019/02/24/Quicker-Lab-001/</link>
        <guid isPermaLink="true">http://ifoxfactory.com/2019/02/24/Quicker-Lab-001/</guid>
        
        <category>Quicker</category>
        
        <category>QuickerLab</category>
        
        <category>效率</category>
        
        <category>Windows</category>
        
        
      </item>
    
      <item>
        <title>这款新出的 Windows 软件，或许能成为你最爱的「利器」：Quicker</title>
        <description>&lt;h1 id=&quot;这款新出的-windows-软件或许能成为你最爱的利器quicker&quot;&gt;这款新出的 Windows 软件，或许能成为你最爱的「利器」：Quicker&lt;/h1&gt;

&lt;p&gt;在 2018 年，Windows 平台悄然诞生了一款功能强大的效率工具：&lt;a href=&quot;https://getquicker.net&quot;&gt;Quicker&lt;/a&gt;。你可以把常用操作组合成一个快捷动作，实现原本复杂的操作，从而有效提高效率。&lt;/p&gt;

&lt;figure tabindex=&quot;0&quot; draggable=&quot;false&quot; class=&quot;ss-img-wrapper&quot; contenteditable=&quot;false&quot;&gt;&lt;img src=&quot;https://cdn.sspai.com/2019/02/12/5df865edfd803a33b3310de238c74481.png&quot; alt=&quot;&quot; /&gt;
&lt;figcaption class=&quot;ss-image-caption&quot;&gt;Quicker 主界面&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;单从外观来看，Quicker 的主界面只是一个悬浮窗口和一些图标。在 Windows 下的效率工具、启动器软件有不少，为什么单单称这款名不见经传的软件为年度软件？因为那些软件大同小异，&lt;strong&gt;只有 Quicker 在动作的使用、制作、分享上独树一帜&lt;/strong&gt;。&lt;/p&gt;

&lt;figure tabindex=&quot;0&quot; draggable=&quot;false&quot; class=&quot;ss-img-wrapper&quot; contenteditable=&quot;false&quot;&gt;&lt;img src=&quot;https://cdn.sspai.com/2019/02/12/18ed4207bb11ca81f5514e7990925ef9.gif&quot; alt=&quot;&quot; /&gt;
&lt;figcaption class=&quot;ss-image-caption&quot;&gt;一键开启 Chrome 的 App 模式&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;Quicker 能帮我们做哪些事情呢？就我自己而言，使用最频繁的动作应该是一个官方动作「&lt;a href=&quot;https://getquicker.net/sharedaction?code=951f82b9-5ea8-4fb2-803a-08d63c1b2c18&quot;&gt;一键开启 Chrome 的 App 模式&lt;/a&gt;」。由于 Chrome 没有内置一键进入 App 模式，如果手动操作需要在应用快捷方式后加上参数：&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--app={context} --start-maximized&lt;/code&gt; ，显得有些麻烦了。在 Quicker 中，这个动作可以被分解为三步：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;用 Alt + D 定位到地址栏&lt;/li&gt;
  &lt;li&gt;获取当前网页链接&lt;/li&gt;
  &lt;li&gt;给 Chrome 加上运行参数 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--app={context} --start-maximized&lt;/code&gt; 后打开。&lt;/li&gt;
&lt;/ol&gt;

&lt;figure tabindex=&quot;0&quot; draggable=&quot;false&quot; class=&quot;ss-img-wrapper&quot; contenteditable=&quot;false&quot;&gt;&lt;img src=&quot;https://cdn.sspai.com/2019/02/12/e1289dea38734f48eeb6008f45d70388.png&quot; alt=&quot;&quot; /&gt;
&lt;figcaption class=&quot;ss-image-caption&quot;&gt;Chrome 的 App 模式动作组成&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;这样就可以通过 Quicker 一键进入当前网页的 App 模式了。&lt;/p&gt;

&lt;h3 id=&quot;兼顾鼠标键盘的使用体验&quot;&gt;兼顾鼠标键盘的使用体验&lt;/h3&gt;

&lt;p&gt;使用方面，Quicker 面板分为 12 个全局按钮和 16 个应用按钮（上下文按钮），前者可以在任何场景下使用，后者则自动在不同的应用中切换。比如打开 Word，应用按钮面板会自动变成 Word 相关的快捷按键。&lt;/p&gt;

&lt;p&gt;Quicker 的使用方式也充分考虑到了用户的习惯，单是「激活面板」这个操作就提供了多达五种方式：「鼠标中键、长按右键、滚轮左击、Ctrl + 中键、Ctrl + 右键」，也允许自定义键盘快捷键来激活面板。&lt;/p&gt;

&lt;p&gt;激活主面板之后，可以为每个按钮自定义一个触发按键，解决了以往「纯快捷键不够直观的问题」，&lt;strong&gt;即使你不喜欢鼠标操作，也可以用纯键盘操作使用 Quicker。&lt;/strong&gt; 可以说是兼顾了鼠标党和键盘党的感受。&lt;/p&gt;

&lt;figure tabindex=&quot;0&quot; draggable=&quot;false&quot; class=&quot;ss-img-wrapper&quot; contenteditable=&quot;false&quot;&gt;&lt;img src=&quot;https://cdn.sspai.com/2019/02/12/827cabe9043e122a015d505845ea38e2.png&quot; alt=&quot;&quot; /&gt;
&lt;figcaption class=&quot;ss-image-caption&quot;&gt;自定义动作键位&lt;/figcaption&gt;&lt;/figure&gt;

&lt;h3 id=&quot;自己做一个组合动作&quot;&gt;自己做一个组合动作&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Quicker 最强大的地方在于自制动作&lt;/strong&gt;。自制动作有 4 种基础动作类型「键盘输入、运行程序、打开网址、键入文本」，以及 2 种高级动作类型「执行脚本、组合动作」、还有 2 个切换面板动作。我们来看看基础和高级动作类型。&lt;/p&gt;

&lt;figure tabindex=&quot;0&quot; draggable=&quot;false&quot; class=&quot;ss-img-wrapper&quot; contenteditable=&quot;false&quot;&gt;&lt;img src=&quot;https://cdn.sspai.com/2019/02/12/8e28806e150fd0abb8ec2d9b7ac5d044.png&quot; alt=&quot;&quot; /&gt;
&lt;figcaption class=&quot;ss-image-caption&quot;&gt;组合动作列表&lt;/figcaption&gt;&lt;/figure&gt;

&lt;h4 id=&quot;4-种基础动作类型&quot;&gt;4 种基础动作类型&lt;/h4&gt;

&lt;p&gt;基础动作「键盘输入、运行程序、打开网址、键入文本」。可以实现「打开一个软件」「打开一个网站」「按下一个快捷键」之类的简单操作。如果只是把 Quicker 当成简单的启动器来用，只要直接用这几个动作就能实现，几乎没有门槛。&lt;/p&gt;

&lt;p&gt;如果仔细研究，还会发现不仅可以实现单一的快捷键，还能按顺序连续输入多个快捷键来实现稍复杂的操作。比如「&lt;a href=&quot;https://getquicker.net/sharedaction?code=7169a8c3-f38b-4d6a-44e4-08d690b5076c&quot;&gt;短时间查看 TIM 信息&lt;/a&gt;」这个动作，就是简单的 Ctrl + Alt + Z 调用 TIM 窗口，5 秒后再按一次隐藏 TIM 窗口。来降低社交软件对工作的干扰。这样的简单动作人人都能自己制作。&lt;/p&gt;

&lt;h4 id=&quot;2-种高级动作类型&quot;&gt;2 种高级动作类型&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Quicker 内置了一个「组合动作编辑器」&lt;/strong&gt;，左侧内置了丰富的快捷动作，从字数统计到执行脚本，还有「循环、判断」等逻辑动作，右侧则可以自定义一些需要用到的变量。把这些快捷动作拖到中间，组成特定的步骤就可以做出属于自己的动作了。&lt;/p&gt;

&lt;p&gt;这和 macOS 的 Automator、iOS 的 Shortcuts 有相似之处。如果对它们已经有所了解，再上手 Quicker 就容易的多。&lt;/p&gt;

&lt;figure tabindex=&quot;0&quot; draggable=&quot;false&quot; class=&quot;ss-img-wrapper&quot; contenteditable=&quot;false&quot;&gt;&lt;img src=&quot;https://cdn.sspai.com/2019/02/12/3be5b9151465054c774229fcbf8a0e7b.png&quot; alt=&quot;&quot; /&gt;
&lt;figcaption class=&quot;ss-image-caption&quot;&gt;组合动作&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;Quicker 的另一个高级动作是「执行脚本」&lt;/strong&gt;，支持 CMD 命令、CMD 批处理、BAT 批处理、PowerShell 脚本，以及 AutoHotkey 脚本，允许直接通过管理员身份运行。所以「清理图标缓存」「定时关机」等常用的批处理命令都可以直接交给 Quicker 来运行。&lt;/p&gt;

&lt;figure tabindex=&quot;0&quot; draggable=&quot;false&quot; class=&quot;ss-img-wrapper&quot; contenteditable=&quot;false&quot;&gt;&lt;img src=&quot;https://cdn.sspai.com/2019/02/12/17cbd70dec1d0626104de2e729aa8f44.png&quot; alt=&quot;&quot; /&gt;
&lt;figcaption class=&quot;ss-image-caption&quot;&gt;执行脚本&lt;/figcaption&gt;&lt;/figure&gt;

&lt;h3 id=&quot;官方的动作分享平台&quot;&gt;官方的动作分享平台&lt;/h3&gt;

&lt;p&gt;全靠自己做动作难免有些麻烦，Quicker 为此提供了一个官方的动作共享库。每个人都可以把自己做的动作分享到共享库中。&lt;/p&gt;

&lt;p&gt;Shortcuts 的官方库都由苹果钦定，Automator 也没有统一的分享库，想要分享自己做的动作，只能依靠分享链接，或是通过第三方分享平台分享。相比之下 Quicker 的动作共享库可谓百花齐放。&lt;/p&gt;

&lt;p&gt;Quicker 的分享库由「通用动作」和「应用动作」组成。通用动作在任何环境下都可以使用，应用动作则仅限于在应用内使用。&lt;/p&gt;

&lt;figure tabindex=&quot;0&quot; draggable=&quot;false&quot; class=&quot;ss-img-wrapper&quot; contenteditable=&quot;false&quot;&gt;&lt;img src=&quot;https://cdn.sspai.com/2019/02/12/2ca73e3265ef683750af5dd7dcc8b3f2.png&quot; alt=&quot;&quot; /&gt;
&lt;figcaption class=&quot;ss-image-caption&quot;&gt;分享动作&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;分享方式可以分为「公开分享」和「临时分享」，分享后会同时生成一个链接和一个网页。将链接粘贴到主面板中就会自动变成动作。&lt;/p&gt;

&lt;p&gt;分享时可以自定义动作图标、用途、备注、分类等。分享时需要通过审核，保证分享的动作中不包含恶意代码和危险动作。如果你的动作中出现了问题需要更新，可以在原动作上修改，更新会同步到这个页面。（原动作一旦删除，便无法更新）。当你从分享库中下载动作，并在它的基础上进行修改后二次分享时会显示「此动作从已分享的动作创建，点击查看来源信息」，有效保证了原作者的权利。&lt;/p&gt;

&lt;figure tabindex=&quot;0&quot; draggable=&quot;false&quot; class=&quot;ss-img-wrapper&quot; contenteditable=&quot;false&quot;&gt;&lt;img src=&quot;https://cdn.sspai.com/2019/02/12/51d28ffa28e7d803bbdb620a82aea3cd.png&quot; alt=&quot;&quot; /&gt;
&lt;figcaption class=&quot;ss-image-caption&quot;&gt;网页版共享库&lt;/figcaption&gt;&lt;/figure&gt;

&lt;h3 id=&quot;找对门路的效率软件&quot;&gt;找对门路的效率软件&lt;/h3&gt;

&lt;p&gt;我们讨论效率工具时，通常是为了给自己节省重复劳动的时间。我很少使用那些启动器软件的原因之一就是「打开应用」这件事本身就不算浪费时间，所谓的「启动器软件」无非是「从桌面、从开始界面打开软件」变成了「从启动器中打开软件」而已。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;真正的效率工具应当是尽可能实现「简单地完成复杂操作」&lt;/strong&gt;。Quicker 的设计让每个人都能按照自己的需求去定制动作，而且兼顾了简单功能和复杂动作，让每个人都能找到适合自己的用法。&lt;/p&gt;

&lt;p&gt;最后值得一提的是，Quicker 的开发者凭一己之力完成了 Windows、Android、iOS（测试版）的开发，还搭建了 Web 版的共享库，是一位相当有实力的独立开发者。同时他每天都会在用户群内解答疑问，并根据用户的意见改进产品，效率极高。目前仍然处于快速开发状态，免费使用，未来可能会收费。你可以在 &lt;a href=&quot;https://getquicker.net&quot;&gt;Quicker 官网&lt;/a&gt; 免费下载。&lt;/p&gt;

&lt;p&gt;注：由于 Quicker 需要实现的许多功能会无法避免用到钩子，可能被 360 等杀毒软件误报有病毒，也有人出现了添加白名单仍无法使用的情况，建议彻底退出或卸载 360 解决问题。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;本文由我撰写，节选自 少数派 Power+ 付费栏目。订阅 Power+，你将可以获得每周 4 篇深度文章，会员群服务，以及每个月都有的 Pi Store 福利产品和各种优惠券。最近正在热卖的少数派 2019 定制周边，Power+ 会员也同样可以享受到折扣价格。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2019/02/18/5c6a7886ea001.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</description>
        <pubDate>Sat, 16 Feb 2019 22:16:10 +0000</pubDate>
        <link>http://ifoxfactory.com/2019/02/16/This-new-Windows-software-may-be-your-favorite-weapon-Quicker/</link>
        <guid isPermaLink="true">http://ifoxfactory.com/2019/02/16/This-new-Windows-software-may-be-your-favorite-weapon-Quicker/</guid>
        
        <category>Quicker</category>
        
        <category>QuickerLab</category>
        
        <category>效率</category>
        
        <category>Windows</category>
        
        
      </item>
    
      <item>
        <title>温哥华游学之旅感想 - 推荐篇</title>
        <description>&lt;h1 id=&quot;温哥华游学之旅感想---推荐篇&quot;&gt;温哥华游学之旅感想 - 推荐篇&lt;/h1&gt;

&lt;p&gt;有段时间没有更新了，一方面是生活上事务繁忙，另一方面自然是上个月去了趟国外。&lt;/p&gt;

&lt;p&gt;去年的 12 月，我报名参加了 UBC 的暑期项目。在国际部老师的帮助下完成了一系列的准备工作之后。我有幸来到了温哥华，参加加拿大的不列颠哥伦比亚大学（下简称 UBC）的 VSP 暑期游学项目。&lt;/p&gt;

&lt;p&gt;这次是我第一次跨越大半个地球，来到西方国家交流学习。在这一个月里，我参加了 UBC 安排的暑期学习课程，游览了这里的风景名胜，在温哥华感受了异国风情，这让我产生不少感悟。这就以“推荐”的形式给其他感兴趣的朋友做一些介绍。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9cdfab873.jpg&quot; alt=&quot;001.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;文中提到的内容，仅代表我个人的所见所闻，如果有失偏颇欢迎指正。&lt;/p&gt;

&lt;h2 id=&quot;准备&quot;&gt;准备&lt;/h2&gt;

&lt;p&gt;去加拿大之前的一些准备。签证之类的流程按旅行社给的要求去办就好。基本不会出太大问题。但是要尽快去办，越早越好，以免出现意外。&lt;/p&gt;

&lt;p&gt;诸如衣物、鞋子、洗漱用品、充电线等旅行必备的物品，就不再赘述了。这里主要讲讲一些需要携带、又很容易忘记的物品（到了温哥华之后，我才发现它们必不可少）。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9cddc52e6.jpg&quot; alt=&quot;002.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;除了常规的旅行物品，温哥华的气候是温带海洋性气候，夏季的白天阳光强烈，晚上很清凉不用开空调。一天内的温差最高会达到十几度，所以建议带上一件冲锋衣或稍厚的外套，防风保暖，必备良品。如果遇到较冷的天气，也不用因为没有厚衣服受冻了。同时考虑到中午的太阳并不比国内的弱，也可以记着备好防晒霜。&lt;/p&gt;

&lt;p&gt;外国人没有用脸盆的习惯，我在很多便利店和超市都没有找到脸盆。最后在一家华人商店才找到了脸盆……如果出发时旅行箱还有空间，可以考虑带一个小脸盆，无论是洗漱还是洗衣服，都会比较方便。&lt;/p&gt;

&lt;p&gt;除了这些，还可以考虑带上几桶方便面，在那吃不惯西餐的漫漫长夜里，一桶熟悉的方便面无疑是你最好的慰藉（顺带一提，国外的方便面是不带叉子的哦）。&lt;/p&gt;

&lt;p&gt;最后还建议携带少量必要的药品，比如预防发烧感冒的药物、胃药、创可贴等。由于不一定会用到，可以跟同伴商量好各带一盒，也足够应付一个月了。值得注意的是，有些药品成分是违禁品，不能带上飞机，提前查好，防止耽误了行程。&lt;/p&gt;

&lt;h2 id=&quot;食物&quot;&gt;食物&lt;/h2&gt;

&lt;p&gt;很多人会关心国外的饭菜是否能吃得惯。&lt;/p&gt;

&lt;p&gt;这里就要讲一个笑话了：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;一个英国人问中国人：“中国的饺子很有名，你们中国人是不是每顿都吃饺子？”
“并不是这样的。打个比方，英国的土豆也很有名，难道你们顿顿都吃土豆吗？”
“对啊”
“……”
“顿顿都吃”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;外国人似乎没有“好好吃顿饭”的概念，温哥华本地人日常会吃快餐类主食，像是面包、肉类、土豆的组合，形式包括但不限于汉堡、肉卷、披萨；蔬菜也多是生菜、玉米、西兰花，配上沙拉直接吃。想象中的牛排似乎只有正经餐厅才会提供，价格也相对较高。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9ce10706f.jpg&quot; alt=&quot;003.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;国外的饮食给我的感觉是高热量和高饱腹度，快餐多以吃饱为第一目的，一个汉堡下去基本就饱了。部分快餐的菜单上会标明卡路里含量，供平时有健身习惯的朋友参考。&lt;/p&gt;

&lt;p&gt;我们吃了十几二十年的中餐，而外国人的口味总是有些不一样的，吃不惯是很正常的事情。不过这里有很多亚洲餐厅，像是中餐、日料、韩国料理等通常都是本国人开的店，所以味道不会特别奇怪。学校的 &lt;a href=&quot;https://www.google.com/maps/place/University+Village/@49.2670877,-123.2475569,16.48z/data=!4m12!1m6!3m5!1s0x548672cc2fd41e03:0xc79dd4e7732aa2f3!2z5LiN5YiX6aKg5ZOl5Lym5q-U5Lqa5aSn5a2m!8m2!3d49.2606052!4d-123.2459938!3m4!1s0x548672c7f747ae8b:0x991e4c3e7e3580d1!8m2!3d49.2663768!4d-123.2434212&quot;&gt;University Village&lt;/a&gt; 就有很多。不习惯顿顿吃汉堡的同学在温哥华也能每天换着花样吃。&lt;/p&gt;

&lt;p&gt;总之，别人我不太清楚，反正我不太能接受每天汉堡薯条的生活……所以在吃了几天的西餐之后，我毅然决然地找了一家中餐快餐店，解决了大部分的温饱问题（嗯，酸菜鱼配米饭真香）。&lt;/p&gt;

&lt;p&gt;学校宿舍提供厨房，炉子烤箱厨具餐具一应俱全，厨艺好的小伙伴可以大显身手，不会做菜也可以选择方便食品，在学校附近的 Save on foods 食品商店里就能买到各种微波炉食品、泡面等方便食品。图中是我和我的舍友煮泡面和煎培根现场。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9ce085bb8.jpg&quot; alt=&quot;004.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;我还试着买了一份生披萨，放进烤箱 21-23 分钟就可以烤至脆皮。味道居然意外的不错，价格比快餐便宜不少，还可以分给舍友一起吃。&lt;/p&gt;

&lt;h2 id=&quot;学习&quot;&gt;学习&lt;/h2&gt;

&lt;p&gt;既然是游学，学习自然是主要任务。&lt;/p&gt;

&lt;p&gt;在 UBC 体验了将近一个月的学习生活之后，我发现国外的课堂环境跟国内区别非常大。&lt;/p&gt;

&lt;p&gt;UBC 提供了丰富的课程供我们选择，我选择了 ARTS 类的 Package G 课程，内容是（英文）自然语言处理与机器学习。包含两门课程，分别是语言学和机器学习。&lt;/p&gt;

&lt;p&gt;虽然暑期学习的时间短，但是课程质量一点不低。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9ce0bb8e9.jpg&quot; alt=&quot;005.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;在课程的整体安排上看，VSP 的所有 Package 都进行两门课程的组合学习，上午下午各 3 小时，期间两门课程各有一次期中考试，三次小测验，周末作业，我们最后的期末考试是一次团队答辩和现场编写代码，课程安排可谓非常紧凑。&lt;/p&gt;

&lt;p&gt;我所选择的机器学习课程，仅用了一周的时间就讲完了 Python 基础，第二周就开始学习语言处理相关的 NLTK 库了，进度之快令人咋舌。这还仅仅是一个月的暑期课程，最后的成绩评定不会非常严格。如果在 UBC 正式学习的话，一学期最多可以选五门课程，想要在每一门课程上都获得好成绩，仅靠上课时间学习是远远不够的，一定要在课余时间进行自习和预习，不懂的地方及时询问教授，才能完全跟上教授的讲课节奏。这也从侧面反映了在保证教学质量的同时，学生本身一定要有很强的自我学习能力。图中是我们上课的教室，同学正在问教授问题。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9ce106e72.jpg&quot; alt=&quot;006.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;如果要做个对比，国内的大学课堂以老师讲解为主，学生只负责听老师讲课，在课堂参与度方面非常低，上课效率也值得怀疑。&lt;/p&gt;

&lt;p&gt;而在 UBC 的课堂上，教授更注重与学生的互动，以学生能否听懂为标准进行讲解。如果学生在上课期间提出问题，也会尽可能的及时解答。除了正常的上课内容以外，我们的教授还建议我们可以在课前买一些咖啡，闲暇时也会聊一些生活上的话题，交流语言学相关的心得。&lt;/p&gt;

&lt;p&gt;我的一位朋友在课上反映语速太快，教授在课后专门发了邮件鼓励她；班里一大半都是中国人，教授就结合中文进行讲解和授课；还有一次因为教室热，教授提议我们到户外进行实践学习……能够做到这些，一方面得益于班级人数较少，一方面也得益于国外以人为本的教育理念，课堂的结构不再是以老师为中心，而是一种平等的关系，氛围也因此变得更为轻松。&lt;/p&gt;

&lt;p&gt;经历了这次亲身体验，我才意识到为什么说国外的高等教育水平高，因为只有打破“单方面传授知识”的屏障，才更有利于学生在课堂上活跃思路，在课后自我思考，从而实现共同进步。&lt;/p&gt;

&lt;p&gt;当然，这并不是非要比出个高低，也不是说国外的教育一定比国内更好。但在高等教育方面，我认为国外的课程设计、授课节奏、课堂氛围都要比国内好得多。&lt;/p&gt;

&lt;p&gt;再来一张学校里到处都是的自习室。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9ce121dc0.jpg&quot; alt=&quot;007.jpg&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;语言&quot;&gt;语言&lt;/h2&gt;

&lt;p&gt;语言问题是我的老大难，在报名参加 UBC 项目之前，我还因为自己的英语不过关而惴惴不安，担心会不会因为英语太差而出现尴尬。&lt;/p&gt;

&lt;p&gt;实际情况是，英语不好的人完全可以在这里正常地生活。日常英语交流和课堂上的英语听力不一样。我们和人交流，不单单依靠话语，还可以用表情、肢体动作表达自己的意思，再结合环境和语境，猜都能猜个八九不离十。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9ce15e704.jpg&quot; alt=&quot;008.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;再加上国外服务业发达，无论是学校还是市区，商店还是餐厅，服务员的态度都非常好。如果因为语速或者口音问题没听清，完全可以请对方复述一遍。再结合环境，一般都能听懂。就我个人感觉，高中毕业的英语水平足以应对日常生活中的大部分对话（更不用提不少商店里会有华人 Waiter），不必担心生活上的交流有太大问题。&lt;/p&gt;

&lt;p&gt;但是在课堂上，对语言的要求就要高很多。教授不会因为少部分人重新讲一遍，如果想要完全弄明白课上的内容，最好结合 PPT，抓住教授话中的关键词，尽可能去理解他想表达的意思。这还仅仅是理解课堂内容，如果想和教授交流感想，口语表达能力也是必不可少的，这也是锻炼口语的大好机会。&lt;/p&gt;

&lt;p&gt;所以如果真的遇到问题，还是要及时和教授沟通，请他放慢语速，尽量减少因为语言产生的学习问题。当然，如果你实在听不懂，也不必勉强，发挥一下社交能力，去找几个英文好的朋友帮你简单翻译一下吧。&lt;/p&gt;

&lt;h2 id=&quot;社交&quot;&gt;社交&lt;/h2&gt;

&lt;p&gt;与人交流是一件非常重要的事情，尤其是在国外，社交就显得愈发重要。&lt;/p&gt;

&lt;p&gt;UBC 的每个学院都会有“文化大使”，这些“文化大使”其实是 UBC 本校的志愿者们组成的团队，他们会带领我们参加各式各样的活动，包括每晚一次的 Field Trip。如刚到 UBC 时人生地不熟，报一些喜欢的 Field Trip 可以很快认识不少朋友。像是我所在的 Arts 学院，他们提供的 Field Trip 就非常丰富，这些自由选择的活动中有沙滩旅行这种组织集体出去玩的项目，有参观博物馆这类了解各地文化的项目，也有迷你高尔夫、采蓝莓等以娱乐为主的项目。不仅可以感受不一样的文化，还能认识许多朋友。&lt;/p&gt;

&lt;p&gt;图中是“文化大使”们组织大家在沙滩上做游戏。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9ce13e84e.jpg&quot; alt=&quot;009.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;如果你不太擅长英语、也没有关系很好的朋友，孤身一人在国外，该如何掌握与自己有关的第一手资讯呢？那也不用担心，网络上也能获得许多资讯。&lt;/p&gt;

&lt;p&gt;在国内的新浪微博上可以看到许多 UBC 的学生和曾经参加过 VSP 的留学生给出的攻略，不少建议很有建设性。你也可以在国外的社交平台 Facebook 中加入 VSP 的 Group，或是在 Instagram 上关注学校的账号。“文化大使”们也会把第一手消息发布到 Facebook Group 里，同样不会让自己掉队。&lt;/p&gt;

&lt;p&gt;再加上加拿大是一个移民国家，在温哥华的街头随便走走，就能看到不同肤色的人。参加 VSP 的人里中国人占了大多数，身在国外时我们都会下意识地互帮互助，热心人还会倡议大家建立 VSP 微信群，完全不愁找不到朋友。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9ce116430.jpg&quot; alt=&quot;010.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;（我们抵达温哥华的第二天早上，正好是世界杯决赛，大家在宿舍底楼大厅看球。）&lt;/p&gt;

&lt;h2 id=&quot;旅行&quot;&gt;旅行&lt;/h2&gt;

&lt;p&gt;讲完了各种严肃的话题，自然要谈一谈这里的课余生活，比如旅行。&lt;/p&gt;

&lt;p&gt;温哥华作为全球最为宜居的城市之一，周围的景点和娱乐活动也非常丰富。除了上面提到的 Field Trip，每周末还有两天自由安排的时间，我利用这些时间报名参加了维多利亚小镇，自己去了吊桥公园，最后一周报名了学校的落基山脉旅行。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9d3096d91.jpg&quot; alt=&quot;011.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;国外的景点大多没有进行过度开发，都是原生态的景色，除了公路、缆车、必要的围栏以外，你可以在这些地方看到真正的大自然美景。落基山脉让我这个从未去过山区的人第一次领略到了山脉的巍峨。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9d305f33e.jpg&quot; alt=&quot;012.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;此外，如果愿意自己做攻略 + 能找到同行的朋友，也可以进行自由行。国外对学生也是有不少优惠的。我们去吊桥公园的那天没有带学生证，售票处也非常大度的给予了学生优惠价，每人便宜了十几刀。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9d30cbad8.jpg&quot; alt=&quot;013.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;如果对景点不感兴趣，这里也有各种各样的免费沙滩、海滩、公园，学校里还有凭学生证免费入内的游泳馆和旱冰场。在八月初温哥华还有一年一度的烟花比赛，可以欣赏到来自其他国家的烟花表演。&lt;/p&gt;

&lt;p&gt;总之，只要多去了解，一定可以在这里找到不少有趣的活动。&lt;/p&gt;

&lt;h2 id=&quot;消费&quot;&gt;消费&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;购物消费方面&lt;/strong&gt;，国外与国内最大的区别在于“税”，大部分商品标示出来的价格都是不含税的，付款时会加上税。温哥华所在的 BC 省，税收一般是 7.5% + 5%，所以买东西时不要贪便宜而忘记加上 12.5% 的税，以免出现付款时才发现比国内贵的尴尬情况。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9d310d804.jpg&quot; alt=&quot;014.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;餐饮消费方面&lt;/strong&gt;，“小费”作为一种传统西方文化，自然是要入乡随俗。哪些情况下是需要支付小费的呢？&lt;/p&gt;

&lt;p&gt;一般而言，只要是正经坐下吃饭的餐厅里，有服务员走到你身边帮你点单、帮你倒水，那么八成是要支付小费的。&lt;/p&gt;

&lt;p&gt;现金支付，可以留下一些零钱。信用卡支付，会包含在餐费里。直接支付即可。我们作为学生，在学校里的消费通常在 10-20 刀之间，小费通常是餐费的 10% - 15%，也就是 1-2 刀。如果是去市区的高档餐厅，小费自然也是水涨船高。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;回国纪念品&lt;/strong&gt;，加拿大的特产有枫糖、保健品、优质蜂蜜，还有 Canada Goose 的羽绒服等等，这些就不多提了，网上找找攻略就好了。&lt;/p&gt;

&lt;p&gt;如果希望多带一些纪念品回国，可以选择一些加拿大本地品牌和特产，会比国内便宜不少。非加拿大品牌就要仔细计算一下税后价格。如果不急着购买，也可以到机场免税店进行购买。图中是景区的特色商店。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.loli.net/2018/08/20/5b7a9d31081ca.jpg&quot; alt=&quot;015.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;这里也要提醒一下，航空公司对行李的重量是有要求的，如果行李超过了免费行李额就要加钱或者托人了。注意适度购物哦。&lt;/p&gt;

&lt;h2 id=&quot;小结&quot;&gt;小结&lt;/h2&gt;

&lt;p&gt;总而言之，温哥华是一个风景迷人，气候宜居的城市，这次的游学长达一个月的学习、生活、旅行，让我认识了世界各地的朋友，全方位地增长了眼界，在地球另一端的国家体验到了不一样的风情，这实在是一件很有趣的事情。&lt;/p&gt;

&lt;p&gt;可以说的内容实在是太多太多，由于篇幅有限，就只介绍到这里了，希望这篇推荐能对你的游学之旅起到一定的帮助~&lt;/p&gt;
</description>
        <pubDate>Mon, 20 Aug 2018 18:54:10 +0000</pubDate>
        <link>http://ifoxfactory.com/2018/08/20/Vancouver-study-tour-feelings/</link>
        <guid isPermaLink="true">http://ifoxfactory.com/2018/08/20/Vancouver-study-tour-feelings/</guid>
        
        <category>旅行</category>
        
        <category>游记</category>
        
        
      </item>
    
      <item>
        <title>对锤子新品发布会的 TNT，我有一些想法</title>
        <description>&lt;h1 id=&quot;对锤子新品发布会的-tnt我有一些想法&quot;&gt;对锤子新品发布会的 TNT，我有一些想法&lt;/h1&gt;

&lt;p&gt;这次锤子发布的两个产品大家也看到了，一个坚果 R1，一个 TNT。&lt;/p&gt;

&lt;h2 id=&quot;tnt-为什么不行&quot;&gt;TNT 为什么不行？&lt;/h2&gt;

&lt;p&gt;关于 TNT，先说结论：这是一款 &lt;strong&gt;交互足够优秀，但无法让任何用户买单的产品&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;为什么这么说？&lt;/p&gt;

&lt;p&gt;TNT 最致命的问题，在于它的价格完全没有考虑到受众。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;有哪些人愿意花 9999 元去购买一个电子设备呢？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;专业的游戏玩家，对 PC 大作的画质、细节有足够高的要求，购买游戏主机。&lt;/p&gt;

&lt;p&gt;企业，需要长时间的协作、办公，对产品质量有高要求，购买企业级设备。&lt;/p&gt;

&lt;p&gt;这款产品的配置、系统，都没有办法提供，因为手机是要充电的，游戏也只能是 Android 平台的，系统兼容性也不够好。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;那么反过来讲，在同等价位下，9999 元可以买到什么？&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;对于普通用户而言，这个价格可以买一台相当不错的台式机、一体机。&lt;/p&gt;

&lt;p&gt;对于游戏玩家而言，可以是一台搭载 GTX1070 显卡的游戏本。&lt;/p&gt;

&lt;p&gt;对于手游玩家而言，可以是一台 iPhone X。&lt;/p&gt;

&lt;p&gt;对于企业而言，可以购买一台配置专业图形卡的高配主机。&lt;/p&gt;

&lt;p&gt;像是发布会上展示的 Office 套件，文职工作者不会买单，展示的手机游戏，专业玩家不屑一顾，这样一款产品，要卖给谁呢？&lt;/p&gt;

&lt;p&gt;可以说，无论是个人用户还是企业用户，都没有任何理由去购买一台「需要连上手机才能启动的 Android 台式机」。&lt;/p&gt;

&lt;h2 id=&quot;tnt-真的一无是处吗&quot;&gt;TNT 真的一无是处吗？&lt;/h2&gt;

&lt;p&gt;说完了缺点，这个产品还是有优点的。&lt;/p&gt;

&lt;p&gt;在 TNT 的 &lt;a href=&quot;https://weibo.com/tv/v/GgNQHseSQ?fid=1034:b22eee1ea851417ef96498321bc5c64f&quot;&gt;宣传视频&lt;/a&gt; 里，展现出来的交互其实非常优秀，比发布会上的尴尬场面要好很多。&lt;/p&gt;

&lt;p&gt;良好的交互确实是锤子的拿手好戏。无论你是锤粉还是锤黑，这一点应该没有办法否认。&lt;/p&gt;

&lt;p&gt;换个角度想想，如果这次拿出 TNT 的是微软，是苹果，是谷歌，这款产品至少不会像现在一样在各个平台被嘲讽。&lt;/p&gt;

&lt;p&gt;其实早些年，摩托罗拉、三星、微软，都拿出过类似的产品。Lumia 950 自带了一个完整的 Windows UI，可以运行桌面版 UWP，代价只是一个 1000 元以内的转接 Hub。依然没有人买单（这和 WP 系统也有一定的关系）。&lt;/p&gt;

&lt;p&gt;如果能够将 Smartisan 的这套交互拿到 Windows、macOS，甚至是 Linux 上，都会是非常惊艳的。但是很可惜，对于锤子这个体量的公司，Android 是唯一的选择。因此也导致了 TNT 现在的尴尬局面。&lt;/p&gt;

&lt;p&gt;包括在发布会上，TNT 的演示是放在 OS 介绍里的，所以这个环节其实不是介绍 TNT 的，而是介绍 Smartisan 6.0 系统的。&lt;/p&gt;

&lt;p&gt;换句话讲，这个 TNT 根本不是重点，而是拿出来吸引喷子火力的，甚至很有可能是专门拿出来做炮灰的。因为锤子知道，无论正面评价还是负面评价，这种新形态的产品一定会被各种媒体评价。即使被喷，也能提高热度。至少让大家都知道「锤子的手机有外接功能了」，可以看作是一波针对锤子系统的强势宣传。在将来很有可能推出更平民化的产品——当然，如果锤子能熬过这阵的话。&lt;/p&gt;

&lt;p&gt;相比之下，本来应该是主角的坚果 R1，除了全面屏和 1TB 的超大容量之外，乏善可陈。&lt;/p&gt;

&lt;h2 id=&quot;其实从锤子角度看明明有更多的选择&quot;&gt;其实从锤子角度看，明明有更多的选择&lt;/h2&gt;

&lt;p&gt;我可以理解锤子科技急于拿出一款有创新的产品来证明自己的心理。&lt;/p&gt;

&lt;p&gt;目前市场环境下，推 Win 电脑、Win 平板都太蠢了，与传统厂商没有竞争力。靠堆砌硬件肯定也堆不起来，前有神船后有小米，实在是下下策。&lt;/p&gt;

&lt;p&gt;想做除手机之外的，有亮点的产品，我能想到的可能是 VR、AR、智能穿戴（眼镜、手环）、智能音箱、智能balabala……哪怕是单独出一个低端 Android 桌面笔记本，或是把 Smartisan OS 桌面版单独拿出来都是不错的。&lt;/p&gt;

&lt;p&gt;走 Android PC + Hub 显示器路线倒是真的没想到，实在是太偏门了……难道是想复制最早期 Smartisan OS 在系统方面的成功？&lt;/p&gt;

&lt;p&gt;总之，这款产品有亮点，也有致命的缺点，注定无法被大众接受。&lt;/p&gt;
</description>
        <pubDate>Tue, 15 May 2018 23:24:42 +0000</pubDate>
        <link>http://ifoxfactory.com/2018/05/15/Smartisan-and-TNT/</link>
        <guid isPermaLink="true">http://ifoxfactory.com/2018/05/15/Smartisan-and-TNT/</guid>
        
        <category>感想</category>
        
        <category>硬件</category>
        
        
      </item>
    
  </channel>
</rss>
