月度归档:2022年06月

读书读的是个细嚼慢咽,但也是狼吞虎咽

读书读的是个细嚼慢咽,但也是狼吞虎咽

我最近在读互联网圈爆火的《纳瓦尔宝典》,这本书不厚,但我读的非常慢,和我预想的完全不同。这本薄薄的书,却花费了我不少的时间,我读这本书读了快半个月,也不过读了 30%(大约 70 页),实在算不得快。

又会想起我之前读的《你是你吃出来的》,一两天就翻完了。

这样截然相反的结果让我思考,这是为什么?为什么我读纳瓦尔宝典这么慢?

仔细对比二者的不同,我得到了答案:

  • 对于《你是你吃出来的》,我在读之前,就知道这是一本不错的书,且我读它就是希望获得一些过去我没有的信息的,所以这本书对我来说就是完全输入。我直接阅读即可。
  • 对于《纳瓦尔宝典》,我在读之前同样知道这是一本不错的书,且他和我所在几乎是相同的行业。我虽然是希望获得一些过去我没有的信息的,但因为这里面有太多相似和过去共同的部分,所以我在阅读的过程中,时常会将其中的信息拿去放在我自己的经历当中去做对比。这种拿信息和我自己的对比,让我话费了不少的时间,基本上是读一页就要想一会儿。

哪一种好呢?我觉得都挺好,

  • 前者是让我获取新的信息,我从小白开始快速了解到一些信息,指导我的生活;
  • 后者是让我验证我的判断,我从新的信息里和过去的判断进行对比,增强了自己对于判断的认知,直接指导我的生活。

二者都挺好。

为你的 WordPress 站点配置 Telegram Instant View

为你的 WordPress 站点配置 Telegram Instant View

Telegram 内置了一个非常好用的阅读功能 —— Instant View。Instant View 可以实现在 Telegram 内部重新对网站内容进行排版,从而为读者提供更好的阅读体验。

作为一个网站主,如果你希望对你的网站提供相应的支持,则可以自行在 Instant View 的网站添加你自己的网站进行适配。

为 WordPress 添加 Instant View 适配

访问 Instant View 官网,并使用你自己的 Telegram 账号登录

Instant View 官网

登录成功后,点击右侧的 My Templates,进入到 Templates 管理页面。

并在 Templates 管理页面中间的输入框中输入你网站任一文章的地址,并回车,你会自动进入到规则的适配页面。

规则适配页面

随后,在页面中输入你的站点的规则,这里我们可以使用其他开发者写好的规则。将规则粘贴在页面中

# Use Instant View version 2.0
~version: "2.0"

# Use this template only blog article pages
?exists: /html/head/meta[@property="article:published_time"]

# Get article text in <article> 
body:     //article

# Get title from <h1>

title:    $body//h1[1]
subtitle: $title/next-sibling::h2
author_url: //span[has-class("author")]//@href

# Get article cover image
cover: //img[has-class("wp-post-image")]

# Convert all iframe elements to inline element
@inline: $body//iframe[starts-with(@src, "/media/")]

# Remote header and footer
@remove: //article/header
@remove: //article/footer

# Replace p to figure
@replace_tag(<figure>): $body//p[.//img]

# Youtube Embedded Fix
@replace_tag(<figure>): $body//p[.//iframe]

粘贴并保存后,会自动在最右侧页面生成预览的效果。

加入规则适配后的效果

当你的规则适配效果无误后,接下来只需要点击右上叫的 Mark as Checked ,来标记该页面已经检查完车。

标记为检查成功

测试完成第一个后, 接下来你只需要在你的博客当中挑选出 10 篇文章,进行文章的验证即可。

验证至少 10 个页面才行

根据 Telegram Instant View 的规则,你需要验证满 10 篇文章,才能提交你的模板给官方人员审核。

提交后,你会见到这样的提示,接下来只需要等待你的模板通过测试即可。

提交成功

预览效果

在审核期间,你可以在编辑器页面右上角点击「View in Telegram」来查看预览的效果。包括你也可以复制里面的 rhash 的值,使用这个值来生成 Instant View 的链接分享给别人。不过,最方便的当然还是等官方审核通过以后再用。

预览效果。

总结

Telegram Instant View 的开发不困难,掌握了一定的 HTML 、XPath 的基础,就可以开发完成,简单的几步,就可以让你的网站在 Telegram 当中拥有一个不错的预览效果,这个时间值得去花。

为你的服务器配上自定义的登录界面

为你的服务器配上自定义的登录界面

我自己在服务器上使用的是 Ubuntu 20.04,每次在登录时,Ubuntu 都会展示一系列的信息,冗余且在多个服务器上看不出差异,并不能非常友好的提醒我这个是哪个服务器。

于是,我决定对其进行自定义,改成我自己喜欢的样子。

1. 分析现有的 Message 格式

想要修改,就一下先分析一下组成结构。我截图所示的输出可以分为三个部分:header、motd 和 last login message

而我主要不满的是 header 和 motd 的部分,对于 last login message,我虽然觉得有些多余,但在很多场景下,确实可以用于提醒。所以我就不隐藏了。不过,如果你希望隐藏 last login 的话,可以在当前用户的根目录下创建一个 .hushlogin 文件来关闭 last login message

touch ~/.hushlogin

2. 修改 motd 和 header

修改 motd

motd 的全称是 Message of Today,他的内容被存放在 /etc/motd 当中,想要修改 Motd 的文字,只需要直接修改 /etc/motd 文件的内容即可。不过需要注意的是,motd 文件不支持做格式化,只支持展示默认的文本。因此,你可以通过在其中加入空行来引起注意。

修改 header

Header 部分存放在 /etc/update-motd.d/ 目录中,你可以通过修改这个文件夹下的文件来实现不同样式的 motd 风格。其中文件名格式为 优先级-文件名的方式进行组织,你可以根据自己的需要,创建适当优先级的文件。

比如,00-header 文件的源码如下

#!/bin/sh
#
#    00-header - create the header of the MOTD
#    Copyright (C) 2009-2010 Canonical Ltd.
#
#    Authors: Dustin Kirkland <kirkland@canonical.com>
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License along
#    with this program; if not, write to the Free Software Foundation, Inc.,
#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

[ -r /etc/lsb-release ] && . /etc/lsb-release

if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
	# Fall back to using the very slow lsb_release utility
	DISTRIB_DESCRIPTION=$(lsb_release -s -d)
fi

printf "Welcome to %s (%s %s %s)\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"

其中有价值的代码主要就是最后几行的输出。

类似的, 10-help-text 的代码则输出了文字。

#!/bin/sh
#
#    10-help-text - print the help text associated with the distro
#    Copyright (C) 2009-2010 Canonical Ltd.
#
#    Authors: Dustin Kirkland <kirkland@canonical.com>,
#             Brian Murray <brian@canonical.com>
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License along
#    with this program; if not, write to the Free Software Foundation, Inc.,
#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

printf "\n"
printf " * Documentation:  https://help.ubuntu.com\n"
printf " * Management:     https://landscape.canonical.com\n"
printf " * Support:        https://ubuntu.com/advantage\n"

而我们自己如果想要控制,可以自己写一个文件,比如叫 01-custom ,在其中加入如下代码(这段代码可以生成一段黑底红字的输出,用于提醒我自己这是生产环境服务器),并执行 chmod +x /etc/update-motd.d/01-custom 来设置可执行权限。

#!/bin/bash
printf "\u1b[31mwelcome to ixiqin.com production server\n"

这里需要注意的是,/etc/update-motd.d 目录下的文件本质上是一个可执行文件,你可以使用 bash / dash 等任何 Shell 来实现,也可以考虑使用 Node.js、Python 之类的脚本来实现。这样就不用像我一样,使用 Termial Color Code 来实现颜色的变化。

执行完成后的结果如下

根据需要自定义

当你找到了具体的文件的位置和配置的方式,就可以根据自己的需要来调整 /etc/motd/etc/update-motd.d 当中文件的内容,来达到你想要的效果了。

这样,就完成了对于 Shell 的登录界面的改造工作了。

Switch 游戏: 雪人兄弟 Special (SNOW BROS. NICK & TOM SPECIAL) 游玩体验

Switch 游戏: 雪人兄弟 Special (SNOW BROS. NICK & TOM SPECIAL) 游玩体验

最近王大夫帮我把 Switch 的充电问题给解决了,我又可以开始玩 Switch 了。

第一波开始玩的,是雪人兄弟。我上一次玩这个游戏还是在小学的时候,在同小区的小朋友家插卡带玩的。现在 Switch 上也有了,刚好这两天低价促销,就买了下来。

关于游戏

雪人兄弟的 Switch 版本分为多个版本。其中的 Arcade 重置版模式,则和我们小时候在卡带上玩的版本一样,一关关的向上突破。

此外, Switch 版也支持多个手柄一起玩(意味着你可以和朋友一起玩)。

在整体的游玩体验上来讲,是非常不错的,可以让你回顾一下小时候玩雪人兄弟的感觉。和小时后的雪人兄弟一毛一样。

此外,如果你希望在界面上再回顾一下小时候的感觉,还可以切换画面模式为 Green(绿屏)或 Black & White(黑白屏模式),并开启扫描线,来回溯小时候的那种 CRT 大块头电视的效果。

关于游戏的背景故事

小时候玩雪人兄弟的时候并没有关注雪人兄弟背后的那些故事。这次在 Switch 上就顺便看了一下雪人兄弟的背景故事。

第一感受

我在看完过场动画以后,第一感觉是故事内核和马里奥一毛一样。 X 国家被 Y 国家攻占,Y 还抓走了 X 的公主,X 国家的人奋发图强决定救回公主。

然后又想了一想,觉得和马里奥还是有点区别的 —— 马里奥是爱情,雪人兄弟是亲情。。。因为雪人兄弟被抓走的是雪人兄弟的姐妹,而不是爱人。

图片版

文字版

在遠方,有個寧靜祥和的冰雪樂園。 然而在某一天,卻遭到了Hotteda王國的Artich王的襲擊。 雖然冰雪樂園的孿生王子尼克和湯姆試圖阻止,但卻被Artich王下詛咒,變成了雪人。

而孿生公主Puripuri和Puchipuchi也被綁架,成為了人質。 再這麼下去…冰雪樂園就要完全融化,消失殆盡了。 為了拯救冰雪樂園,恢復原有的寧靜祥和,尼克和湯姆王子踏上了漫長的遠征路途。

「我一定會救出公主們,並且破除詛咒!」

「出發! 雪人兄弟們!!」

macOS 如何从 Nintendo Switch 中复制截图

macOS 如何从 Nintendo Switch 中复制截图

最近沉迷 Switch ,无法自拔。在游玩过程中,截图了不少游戏中的画面,想要将其分享给大家,自然需要能够将截图图片复制出来。而 Switch 使用的是 Micro SD 卡,想要复制图片需要单独准备一个读卡器,显然不如直接将 Switch 作为读卡器,借助 Switch 上的 Type C 接口,来完成图片的复制。

原理

在 Switch 当中,实现了一个名为媒体传输协议(MTP)的通信协议,只需要你在 macOS 当中安装支持该协议的软件,并将电脑与 Switch 相连,就可以实现将 Switch 作为读卡器读取其中的截图文件。

步骤

1. 安装 Android File Transfer

一个比较常用 & 简单的支持 MTP 协议的软件是来自 Google 官方为 Android 提供的 Android File Transfer

下载该软件并进行安装,安装完成后,打开软件,等待 Switch 链接。

2. 在 Switch 上进入复制模式

配置完 Android File Transfer,接下来拿出一根 Type C 数据线,将其插入 Switch 底部的充电口。

并开机,在 Switch 当中找到 「设置」—「数据管理」—「管理截图与视频」

在截图与视频管理中,找到「通过 USB 连接复制到电脑中」,点击这个选项。

随即 Switch 会进入到配对模式,看到如下界面,则说明已经配对成功。

对应的, Android File Transfer 也读取到了 SD 卡当中的截图文件。

其中:「其他」文件夹是你在系统界面截图得到的图片;而以游戏名命名的文件夹,则是各自游戏当中的截图。

接下来你就可以在其中找到你想要的截图,通过拖拽,将其拖到你本地的文件夹中进行查看了。

当你拷贝完成后,点击 Switch 上的「解除连接」,就可以安全退出 Android File Transfer,拔下数据线,继续开心的玩游戏了。

总结

我一开始以为 Switch 底层是 Android 改造的,后经推特上推友提醒,Switch 底层是任天堂自己开发的操作系统,只是兼容了 MTP 协议,所以特地在文章前加入了 MTP 协议的说明。

希望这个文章,可以帮到还在用 Switch 玩游戏的你。

在 Next.js 中直接引入 SVG

在 Next.js 中直接引入 SVG

随着 SVG 的兴起,过去使用雪碧图、IconFont 作为界面中图标用法已经过时。大家会更倾向于加载更加简单、空间占用更小、编写更容易的 SVG 作为图标的解决方案。

而 Next.js 同样对于 SVG 提供了支持。

最简单的加载方式 —— URL 加载

如果不希望对应用程序做任何的改进,一个最简单的方式是直接使用路径进行加载。只需要使用一个 img 标签,并设定 src 为 svg 文件的路径就可以了。

<img src="/logo.svg" alt="Logo SVG" />

不过,使用 URL 来加载的问题是,当你的文件夹路径和结构比较复杂的时候,你需要使用一个较长的路径来加载 SVG,比较麻烦。

当然, 你也可以简单的优化这个方案 —— 比如自行封装一个 svg component,支持传入文件名 & alt 文字和其他参数。这样在调用的时候只需要输入文件名即可。

最舒服的加载方式 —— 编程加载

在 Next.js 当中,如果你希望更加舒服的引入 SVG,那比较好的方案是使用 import 标签来进行引入。不过,由于 SVG 本身并不是一个标准的 React 组件,你需要在 Next.js 上安装插件来支持对 SVG 的解析。

加入对 SVG 的解析需要安装 @svgr/webpack 插件。执行如下命令安装插件。

# yarn
yarn add @svgr/webpack
# npm
npm install --save @svgr/webpack

安装完成后,修改 next.config.js添加相关的解析规则。

module.exports = {
  webpack(config) {
    config.module.rules.push({
      test: /\.svg$/,
      use: ["@svgr/webpack"]
    }); // 针对 SVG 的处理规则

    return config;
  }
};

修改后保存,便可以直接使用 import 语法来处理

import Logo from "../assets/logo.svg";


// usage
<Logo />

这样,你就可以直接将 SVG 作为一个 Component 引入,并使用你熟悉的 React Componet Props 来修改这个 Component 的各项属性。

总结

在这篇文章中,分享了两种在 Next.js 的方法,你可以根据自己的实际情况来决定选择具体使用什么样的方式来引入 SVG。

使用 Proxy.py 自建 HTTP Proxy

使用 Proxy.py 自建 HTTP Proxy

如果你需要对一个集群进行开发,且开发过程中需要访问内网,一个比较常见的方式是建立虚拟专有网。但倘如你不愿建立虚拟专有网,那么一个比较简单的方式是建立一层 HTTP Proxy 来访问内网当中的数据,你只需要在某一个节点上设定 HTTP Proxy,并在你自己的电脑上配置 HTTP Proxy ,就可以完成使用对应的节点来访问具体的网页,解决 HTTP 访问的问题。

原理

HTTP Proxy Servr 的原理并不复杂,就是一个标准的正向代理。你只要能搭建这样的一个服务即可。

实际操作逻辑

以下文章以 Debian GNU/Linux 10 为例

1. 在你的节点上安装 Python3 & pip 3

Python3 是运行 Proxy.py 的运行环境,而 pip3 则是安装 Proxy.py 的工具。执行如下命令来安装。

apt install python3 python3-pip

2. 安装 Proxy.py

这里我们不使用 Virtual Env 来安装,主要是方便后续加入 Systemd 来进行控制。如果你习惯使用 Supervisord 来控制的话,就可以使用 Virtual Env 来安装 Proxy.py。执行如下命令

pip3 install proxy.py

3. 启动 Proxy 进行测试

在你的节点上执行如下命令来启动一个测试服务器。

proxy --hostname 0.0.0.0 

如果你需要监听某一个特定的 IP, 则将 0.0.0.0 修改为你具体的 IP。

配置后,你可以看到如下的输出,则说明已经成功启动了 Proxy 服务器。

启动完成后,你就可以在本地测试访问如下命令来进行测试。

curl -x [服务器IP]:8899  http://httpbin.org/get

当你看到如下输出时,确认返回值当中的 origin 是否是你的节点 IP,如果是你的节点 IP 则说明你的 HTTP Proxy 已经配置成功了。后续你就可以通过这个 HTTP Proxy 来进行访问了。

测试完成后,你可以执行 Ctrl + C 来关闭当前的 Proxy Server。

4. 配置 Basic Auth Authentication

上面配置好了 HTTP Proxy Server,但一个问题是这个 Server 没有安全验证,随时会被别人所利用。所以我们需要配置一些基本的安全配置,来解决这个问题。

在你的 Proxy.py 当中加入 –basic-auth 选项,则可以实现加入基本的鉴权。其中,用户密码用英文冒号隔开。比如我需要创建一个用户名是 admin ,密码也是 admin 的proxy ,就可以执行如下命令。

proxy --hostname 0.0.0.0 --basic-auth admin:admin

5. 配置开机自启动

现在 Auth 也有了,但是我们不能总是开着 Terminal 来运行我们的服务,所以一个好的办法是为其加入 Systemd ,这样我们就可以使用系统自带的能力来完成 Proxy 的自启动了。

执行 systemctl edit --force --full proxy.service 来创建一个新的 Systemd 服务,并在其中加入如下代码并保存。

[Unit]
Description=Proxy Service
Wants=network.target
After=network.target

[Service]
ExecStartPre=/bin/sleep 10
ExecStart=proxy --hostname 0.0.0.0 --basic-auth admin:admin
Restart=always

[Install]
WantedBy=multi-user.target

保存完成后,执行 systemctl enable proxy.service 配置该服务器的开机自启动 & systemctl start proxy.service ,即可实现 Proxy 服务的开机自启动,并在当前启动该服务。

总结

有了 HTTP Proxy ,你能以一个更加简单的方式来访问内网当中的服务器。你只需要控制 Proxy 节点的可访问权限,就能很好的处理内网数据的安全问题。

2022 年 5 月月度总结

2022 年 5 月月度总结

Objective 1:持续获取现金流,并构建未来收益的现金牛

KR1:投资收益达到 20000 元

本月得益于 A 股回暖,所购买的基金开始出现浮盈;当前浮盈 5851.67;

分析原因,主要是在之前 A 股跌破 3000 点的时候进行了买入,处在一个低点买入,赚钱的概率就会得到提升。

KR2 :单篇稿费突破 6000 元

本月无新进展。

KR3 :达成年度预算,支出不超预算

目前的预算执行的比较差,准备接下来采用现金消费的方式,避免信用卡的消费

KR4 :构建软件类现金牛业务,预期产生收益 10000 元人民币

本月开始继续构建 PodHosting,目前进展缓慢。But,至少是开始了。。。

Objective 2:提升生活基础设施,构建未来生活好基础

幸福生活很重要,生活也不能忘记。毕竟,赚钱是为了生活。

KR1:前往 6 个城市旅行

五月份没有外出旅行,不过进山露营了,也算为一次旅行。

今年太难了,一直规划旅行,不过各地的疫情搞的哪里都没去成。。。

KR2:进行 20 次文娱活动

本月没有进行什么文娱活动

KR3:借助智能化设备,缩减在家务相关事务上耗费的时间

本月新购入了「电动拖把」,让拖地这件事变得更省心、省力。自己体验以后发现电动拖把的体验还是一般。长期来看,还是要迭代到扫地机器人才能更加省力省心。

Objective 3 :开拓视野,打造多元行业人才

KR1:写 15 篇书评

继续鸽书评。不过本月读了几本书。应该写几篇书评的。就安排在六月吧。

KR2:输出关于加密货币的 Newsletter 12 封

0 进展。

KR3 :完成计划中的三本图书的写作

0 进展。

从企业视角,为什么要选择 WordPress?

从企业视角,为什么要选择 WordPress?

WordPress 在国内日渐式微,从过去的全民博客用 WordPress, 到后来的很少人会使用 WordPress 做博客,再到现在只有一小撮人还在使用 WordPress,伴随着 PHP 的衰落和 Golang 等新语言的兴起,WordPress 不再是国人的选择。过去曾经有一段时间,大家很喜欢用 WordPress 做电子商城,不过随着时间的流逝和国内外电商贸易环境差异的变化,使用 WordPress 开发电子商城也不再是一个选择。如今的企业,不再愿意选择 WordPress 来完成自己的业务。

不过,从我自己的视角来看,我们看待任何一个工具的时候,不能看他是否还流行,而是要看他是否还能解决我们所面临的问题。

WordPress 的优势是什么?

WordPress 最大的优势主要是三点:

  1. 插件市场足够丰富带来的更少的开发工作量:但凡提到 WordPress ,你就不能不提 WordPress 的插件市场。WordPress 海量的插件市场可以帮助你更好的完成你的工作。对于一些传统模式下需要自己开发的功能,你可以选择直接安装 WordPress 来完成工作。
  2. 服务端渲染带来的 SEO 友好:现代 SPA 也有服务端渲染的能力,不过对于开发者来说,则需要单独假设一套服务端渲染的服务来完成这部分工作。或者提前预生成所有的页面。对于页面较小的站点,预生成比较靠谱。但对于数据量极大的站点,预生成也是一个较为痛苦的过程。WordPress 因为更加的传统,所以一直采用的是服务端渲染的模式。服务端渲染在针对 SEO 进行优化时,可以获得更好的优化能力(毕竟有些时候 Spider 不一定会等你的页面在前端渲染完成)。
  3. 极强的编辑性带来的人力释放:WordPress 不仅仅是我们看到的给用户的这一套 UI,还包含了一个强大的用户后台。强大体现在 Editor (Gutenberg)、全站编辑(WordPress 5.9 开始提供的新能力)。这些能力可以让 WordPress 从一个只能用固定模板的网站,变成了提供了一定的自由度,可以通过拖拽来生成一个页面的能力。对于一些比较极致追求拖拽的人,还会使用 Elementor (不过不太好做性能优化,如非必要,不上 Elementor)。这个能力带来的时候可以释放开发团队的人力,在构建好最基础的 Block 之后,交由运营人员来完成后续的管理和维护。

WordPress 的劣势是什么?

但同样的,没有什么东西是只有好处没有坏处的, WordPress 的坏处同样明显。

  1. 使用 PHP 编写,国内维护人员难招:WordPress 所依赖的 PHP 生态式微,则相应的,从事 WordPress 开发的人也渐渐变得更少。对于企业来说,难以找到合适的人是一个很大的问题。
  2. 目标太大,容易被安全攻击:WordPress 作为全球使用量排行第一的 CMS(内容管理系统),盯着它的黑客也多。虽然对于 WordPress 本体的安全攻击很快就会被修复。但针对普通插件的攻击则不那么容易防范。如果选择不当,很有可能把自己变成黑客的肉鸡。

总结

技术领域没有银弹。WordPress 同样也不是那个银弹。在合适的场景下, WordPress 便能放大自己的价值。而如果不合适,同样也无法放大 WordPress 的存在价值。

万事开头难

万事开头难

我在一个多月之前,发布了关于「独立开发者孵化器」的消息,而从一个月前,一直到现在,我们终于将项目的一些基本流程梳理通,把各种细节问题都搞清楚,也开始有新的项目进入到孵化器的正式孵化流程。

不过,啃完了开头的硬骨头,也只不过是开始。接下来则是更加硬的骨头 —— 项目的正式孵化。

我常说,独立开发者不过是创业公司的 MVP 。如果你的独立开发者做的还不错,那么你就可以开始慢慢的加一些人,把自己从一个独立开发者转变为一个公司的老板。而上面的这些事情,都是需要花费时间精力来打磨的。

而我们能做的,就是将这些所有的事情梳理出来,帮助开发者们做好这些事情,然后,帮助他们的成功。

接下来,继续啃更难啃的骨头。

如果你对独立开发者孵化器感兴趣,欢迎访问 :https://www.nglab.io/incubator 了解详情

书摘也是一种「随手发」

书摘也是一种「随手发」

在前面的文章当中,我提到过,我创建了一个用于随手发的 Channel,在这个 Channel 当中发布一些我自己看到的一些 Newsletter、博客、文章当中我认为有价值的,值得回味的话随手发进去,主要是服务于我自己有事没事没灵感的时候,可以翻一翻,重新回味,便可以形成一篇博客文章(水文利器)。

刚好最近在用 Kindle 看书,今天装了 Klib ,突然意识到,在读书时的「画线/高亮」,何尝不是一种随手发的实践?

后续把 Kindle 中的数本书的书摘也发在 TG Channel 当中

使用 Iriun Webcam + Pixel6 作为 macOS 的摄像头

使用 Iriun Webcam + Pixel6 作为 macOS 的摄像头

为什么要这么做?

昨天在推上看到一个视频,注意到他是使用 Sony ZV1 作为直播摄像头的。而作为一个视频制作者,我的不少视频都是以真人 + 教程的形式提供给我的观众的,我突然想起来,或许我可以使用手机来作为摄像头来完成视频的录制。

和 MBP 自带的摄像头相比,可以让我在视频中更加清晰、更加明亮,让我的视频的观众们可以更好的看到我(没错,就是这么自恋)。于是,我决定用我的备用机 — Pixel 6 来完成这个操作。

为什么是 Iriun Webcam

Iriun Webcam 的一个好处是免费版可以使用 4K,且免费版的水印也十分的不明显,对于白嫖用户十分友好。如果你需要完全去除水印或更加强大的控制能力,则可以付费获得。不过对于绝大多数场景,免费版足矣。

所需软件

  • macOS 驱动下载:https://iriun.com/
  • Android Play Store 应用:https://play.google.com/store/apps/details?id=com.jacksoftw.webcam
  • iOS App Store 应用:https://itunes.apple.com/us/app/iriun-webcam-for-pc-and-mac/id1439303579?mt=8

所需硬件

  • 与手机适配的 USB 数据线:如果本地网络速度足够快,也可以不使用数据线。不过我推荐你使用 USB 数据线,主要是理论上会更加的稳定。

操作流程

安装软件

PC 端

想要实现软件连接,需要先下载安装相应的软件。Iriun Webcam 支持 WIndows 、 macOS 和 Ubuntu ,你只需要访问其官网,并下载对应的软件,并在本地进行安装即可

手机端

手机端则可以在你的手机上搜索 Irirun webcam,并进行安装。

配置设备连接

安装完成后,在 macOS 上打开 Iriun Webcam 会看到如下的界面,此时说明你的 PC 已经准备好了。

未连接状态的效果

在手机上打开同样的软件,稍等片刻,二者就会自动连接到一起

已连接状态的效果

换用 USB 连接

使用 Wi-Fi 连接的最大的问题是不稳定,以及延迟高。因此,你可以选择改用 USB 数据线进行连接,从而获得一个更低的延迟和更稳定的视频效果。

你需要先将自己的手机开启开发者选项,并开启「USB 调试」,随后将手机与电脑连接(如果有授权窗口,则授权 PC 进行调试)。

授权完成后,稍等片刻软件就会自动刷新,手机后的「Wi-Fi」变为「USB」,则说明你已经成功切换为使用 USB 连接。

配置软件摄像头

当你配置完成 Iriun 的 Webcam 之后,就可以在你日常使用的软件当中切换具体使用的摄像头为 Iriun Webcam 来获得从手机取得的视频画面。

腾讯会议的摄像头选择框

如果你使用 OBS 的话,还可以将音频输入修改为 Iriun Webcam audio (腾讯会议并不支持),来获取手机当中传递过来的音频信号。

总结

使用手机摄像头来替代 Mac Book Pro 上自带的摄像头可以帮助我们获得一个更好的画质和视频观看体验。相比于购买一个全新的摄像头,不妨用上你的旧手机来完成你的直播诉求。而你所需要的,不过是一款免费软件 + 一根 USB 数据线。