Reading view

There are new articles available, click to refresh the page.

新玩意:Windows Hello 指纹识别器

  • 渠道:淘宝
  • 价格:47 元

这个 Windows Hello 指纹识别器是帮女朋友买的,她在公司的电脑虽然设置了密码,但是有人在旁边的时候就很尴尬,输密码担心别人看到,不输又用不了电脑,在我的建议下才决定入手这款指纹识别器。

其实除了指纹识别,摄像头也可以用于解锁电脑,但是由于使用了上下双屏幕,没有合适的位置放摄像头,而且不确定摄像头的触发方式是否会导致意外解锁,所以还是选择了指纹识别器。

在淘宝上找到了三款比较符合要求的指纹识别器:一款是 USB 款式的,指纹识别就集成在 USB 上,比较适合笔记本或者上方有 USB 插口的台式机;另一款需要通过数据线连接到电脑,整个识别器可以平放在桌面上,材质是铝合金,整体外形看起来比较大;最后一款跟前面那款类似,但是要小巧很多。

三种款式如下图所示,综合考虑之后选择了最后一款,不仅小巧,而且通过数据线可以放到不同位置,铝合金的材质也提分不少。

款式选择

到手后是一个袋子,外包装上提供了使用教程的二维码,扫码后即可访问。除了指纹识别器主体和数据线,卖家还送了两个易拉胶。

包装内容

看到主体的第一感觉就是很精致,铝合金材质确实有质感,拿在手里也有点分量,接口是 Type-C 的。

背面的贴合好像是有胶水残留,不过处于背面倒也不影响,反正最后也要粘到桌子上。

外观展示

跟着文档很快就设置好了指纹识别,其实就三步:指纹识别器连接电脑,安装驱动,录入指纹。需要注意的是,录入指纹需要先设置 PIN。感兴趣的可以查看详细文档:https://docs.pomin.top/finger_hello.html

录入指纹后赶紧试了一下解锁,那感觉就一个字:快!比输入密码快了不是一星半点。无论亮屏还是息屏状态又或者是刚开机,都可以成功识别,再也不用担心输密码被别人看到了。

解锁速度

基本上只要手指放到识别器上就可以马上解锁成功,但是如果位置找的不准也会存在识别失败的情况,多次指纹识别失败需要输入 PIN 进行解锁。

本来为了美观是把指纹识别器反着贴到桌下的,但是试了下并不好找位置,最后还是贴在桌面上了。其实也可以考虑贴在机械键盘的上方或者侧面,这样手指也可以以一个相对自然的状态去进行解锁。

如果你也苦恼于每天都要输电脑密码,或者很多情况下不方便输密码,可以考虑入手一个 Windows Hello 指纹识别器。

电脑死机问题排查

又是一次有意思的问题排查,每当以为接近了问题源头的时候却又峰回路转。

电脑开始死机

最近一段时间,我的台式机电脑突然开始死机,不是蓝屏,而是毫无征兆的突然死机,任何操作都无效,只能重启。

电脑买了几年了印象中就没死过机,最近的死机我认为有以下几种可能:

  • 内存或者独显的问题:内存是最近换过,独显也是最近加的
  • 系统问题:最近升级过 Windows 系统
  • 网络问题:死机时候的操作基本都是跟网络有关

死机情况也没有规律可循,有时候好几天死一次,有时候死机后重启电脑,电脑启动后刚一操作又死机了。

总共死机大概四五次,想着找个时间重新装一下内存和显卡,看能不能解决死机的问题,顺便清理一下机箱。

又死机了

还没等我动手,前天晚上电脑又死机了,本来也没想着排查问题,但重启之后继续死机前的操作,结果再次死机了,看来不找一下原因是不行了。

死机的时候正好在跟朋友聊天,我说怀疑是网络问题,他说网络不应该让电脑死机,最多也就是断网,我觉得有道理。

那为什么我怀疑是网络问题呢?因为死机之前我是在用终端 ping 一个地址,结果就死机了。

本来想通过 Windows 的事件查看器查看死机前出了什么错误,但是发现在死机的时间点根本没有记录,只能手动排查了。

排查

环境

先说下电脑系统和使用到的软件:

  • 电脑系统是 Windows 11
  • 使用了「Quicker」这款快速启动软件来启动终端
  • 在粘贴网址的时候使用了「Ditto」这款剪贴板历史软件进行粘贴
  • 终端安装了「Clink」这款支持历史记录的插件

复现死机

复现死机的过程如下:

通过 Quicker 打开终端,在终端输入 ping,然后使用 Ditto 粘贴网址,粘贴上马上就死机了。

多次尝试都能复现死机,接下来就是排查是什么原因导致的死机。

Ditto

一开始怀疑是 Ditto 的问题,因为用了比较久,数据库已经有 1.23G 了,担心是数据库过大导致的,所以先把数据库清空了。

重复上面导致死机的步骤,仍然会死机,暂时排除 Ditto。

Clink

又怀疑是终端安装了 Clink 导致的,但是卸载插件后立马就死机了,重启后测试仍然死机,暂时排除 Clink。

另一台电脑

这时候有点没头绪了,用另一台电脑进行测试,发现不会导致死机。

不同之处在于终端的启动方式,死机的电脑是通过 Quicker 启动的终端,而没问题的电脑是鼠标右键菜单启动的。

Quicker

回到死机的电脑,通过鼠标右键菜单启动终端后测试并未死机,到这里就怀疑是 Quicker 的问题。

查看了下 Quicker 启动终端的动作,如下如所示:

终端

我的终端默认配置是「命令提示符」,所以我就将 Quicker 启动终端改为了启动命令提示符:

命令提示符

修改之后再次测试,果然不死机了。

其他测试

在排查过程中,我还做了以下测试:

  • 在开始菜单搜索并启动终端
  • 直接去 C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.18.3181.0_x64__8wekyb3d8bbwe 目录启动终端

上述方式启动的终端经测试都不会导致死机。

一开始我以为 Quicker 启动的终端输入任意字母后再调用 Ditto 才会导致死机,但是后面测试的时候发现只要是 Quicker 启动的终端,输入字母后切换到别的程序再切回来就会死机。所以跟 Ditto 没关系,而是因为打开 Ditto 相当于从终端切出去了。

搜狗输入法

为了彻底搞清楚死机的原因,我使用了虚拟机来进行测试,毕竟电脑一直强制关机重启也不好。

在虚拟机里,我安装了 Quicker、Clink 和 Ditto,模拟电脑的操作,但是并没有出现死机的情况。

测试了好久也没复现,就在我准备放弃的时候,突然想到,还有个软件我没考虑到,那就是搜狗输入法。赶紧在虚拟机里安装了搜狗输入法,然后测试了一下,果然死机了!

再进一步测试,我发现使用 Quicker 启动终端后,如果输入法是中文状态,这时候在终端里打字,即使没有选中文本而是删除输入的内容,切换到别的程序再回到终端就会死机。

死机过程

如果是使用英文状态输入就不会出现死机的情况,太离谱了。

环环相扣

我这次碰到的死机问题,可以说是环环相扣:

  • 首先电脑需要安装 Quicker 和搜狗输入法
  • 其次用 Quicker 配置了终端启动
  • 再然后用 Quicker 启动了终端
  • 接着用搜狗输入法在中文状态下输入内容
  • 最后从终端切换到其他软件

但凡中间有一个对不上,电脑就死不了机。

总结

死机原因

其实到最后也没找到根本原因,但是已经知道了是 Quicker 启动的终端和搜狗输入法的联合作用下导致的死机。

也难怪最开始我认为死机跟网络有关,因为打开终端基本上不是 ping 网址就是拉代码,肯定是跟网络有关系,但是这是表象,现在清楚了,随便打个字母都会导致死机,跟网络完全没关系。

但我是没看出来 Quicker 启动的终端和开始菜单搜索启动的终端有什么不同,暂时不继续深究了,如果有大佬知晓原因的话还请在评论区赐教。

解决办法

不使用 Quicker 启动终端,而是启动命令提示符,或者使用其他方式启动终端。

排查技巧

总结了几个排查问题的小技巧:

  • 重复出问题之前的操作,看是否能复现问题
  • 通过控制变量进行排查
  • 使用类似设备进行对比测试
  • 通过虚拟机模拟环境进行重复测试

感悟

  • 只要出现过问题,大概率会再次出现
  • 只要下功夫,一般都能够找到解决办法

找到电脑死机的原因固然开心,但排查问题的过程何尝不让人觉得有趣和激动呢。

贴一下之前的一篇问题排查文章:「Mac 下 Chrome 浏览器右键菜单需双击的问题」。

新玩意:WESCOM 31.5 英寸 4K 显示器

  • 渠道:WESCOM 官方京东自营旗舰店
  • 价格:912 元

之前一直在用的显示器是几年前从闲鱼买的一台 LG 29 寸带鱼屏,当时感觉 29 寸很大,可以同时开两个窗口,感觉很棒。细心的读者应该在之前的文章「新玩意:乐歌 E2 升降桌」见到过了,当然新买的显示器也在其中。

今年又捡起了编程,与朋友协作开发的时候要多个窗口来回切换,同时开两个窗口已经不能满足我了。年中回家的时候临时用了一下我外甥的 32 寸显示器,当时的感觉太爽了,可以同时开四个窗口,不需要来回切窗口。

本来想着再买一台 29 寸显示器,跟原来的显示器组个双屏,但是稍微研究了一下,发现双屏有点麻烦,而且显示效果也不是很完美,所以就考虑直接上 32 寸的显示器,分辨率也一步到位上 4K。

其实我的需求比较简单,就是换个大屏幕,对画质色彩要求不高,能亮就行,最主要就是能同时开多个窗口。在做了攻略之后决定购买「WESCOM 31.5 英寸 4K 显示器」,主打一个性价比高。

官方给出的参数如下:

产品规格

显示器到手的第一感觉就是大,很大,视觉上比 29 寸的显示器多了 1/4 的面积。跑了一下坏点和漏光测试,发现左下角和右下角在显示黑色的时候会有点漏光,但是基本不影响使用,所以就没有换货。

我的电脑是联想天逸,买之前咨询客服是否支持 4K 显示器,得到的答复是最大支持 2K,感觉有点坑,果然品牌整机在消费者不容易注意到的地方省钱了。不过好在可以加装一个半高的独立显卡,我从闲鱼买了一个 R5 240,纯亮机卡,但是也够用了,唯一的缺陷就是 Windows 的系统动画稍微有点卡顿,不过时间长了也就习惯了。

显示器带了一个金属的支架,但为了桌面整洁我给显示器配了一个「Brateck 北弧显示器支架」。由于显示器太大太重,支架出厂的设置都抬不起头,需要单独调整气弹簧的压力。调整后虽然可以抬起头了,但是毕竟快 20 斤的重量,稍微大力晃动桌子就会导致显示器晃动。

显示器

显示方面,在 Windows 11 下分辨率设置为 3840 x 2160 后会自动将缩放设置为 150%,字体大小看起来会比较合适。从 1080 换到 4K 之后提升还是很明显的,显示效果很细腻,正常观看画面完全没有颗粒感。

Windows 下部分软件如果没有适配高分屏可能会出现字体模糊的情况,解决办法如下:

  • 找到软件 exe 或者快捷方式,鼠标右键选择属性
  • 点击兼容性中的更改高 DPI 设置
  • 勾选下方的替代高 DPI 缩放行为
  • 下拉框中尝试不同的选项
  • 修改后重启软件查看是否生效

高 DPI 设置

显示器的亮度是 250 尼特,我设置的是 100% 亮度,而 LG 那款我只需要开到 70% 的亮度,不过也 250 尼特也够了。

显示器后方的按键手感特别硬,跟 LG 的完全没法比,不过价格在这里,也不能苛求,因为手感太差,我每天都不关显示器电源。

还有个细节问题,由于显示器的接口比较靠下,视频线无法完全隐藏到后面,为此我专门买了个弯头的转接头。

转接头

虽然这款显示器有各种小问题,但是这样的价格,对我这种只求点亮的用户来说也足够了,毕竟不到一千就可以上 31.5 寸 4K60Hz,已经很香了。

不过还是要强调一下,如果你对显示器的画质色彩和亮度等有比较高的要求,推荐看看其他品牌和价位的显示器。

文章被“抄袭”了

偶然发现自己的文章被“抄袭”了,觉得还挺有意思的,所以记录一下。

声明

先声明一下:确实是很偶然发现了“抄袭”,而且我的本意就是觉得挺有意思想记录一下,并没有想人肉“抄袭者”,所以也尽量隐去细节信息,读者就看一乐,没必要较真。

偶然发现

上个月我在看「1link.fun 科技周刊 | 第 75 期」的时候看到一个「免费 SEO 工具:反向链接检查器」。

这个反向链接检查器使用很简单,只要输入域名就可以查询有多少反向链接。我把自己的域名输入查了一下,搜索结果显示有 1.5K 的反向链接,由于没付费,只展示了一小部分的结果。

大概看了一下搜索结果,在其中发现了一些熟悉的博客,有些是有我的留言,有些是推荐了我的文章或博客,还有的是一些「XX 源码网」搬运我的文章。

在这其中,有个英文的网站引起了我的好奇心,文章的标题跟我写过的一篇文章标题很像,只不过是英文的,但是我点进去看了一下并没有发现引用我文章链接的地方,回反向链接检查器又看了下,才知道是其中部分文字链接到了我的博客分类。

我就更奇怪了,仔细看了下英文的文章,越看越觉得熟悉,越看越震惊,马上去我的博客里搜了一下,果然是我写过的,这人就是把我的文章翻译成了英文,甚至连文章中引用的链接都没修改。

算“抄袭”吗

其实我也不确定这算不算“抄袭”,这个人完整翻译了我的文章,不仅没有注明出处,甚至在他的关于页面还专门链接到了这篇文章,给人的感觉这篇文章是他原创的。

如果有人能翻译或者分享我的文章,我是很开心的,但是上面这人的做法我不太理解,就算是翻译别人的作品提一下原作者也算是表示尊重吧。

沟通

过了两天,我决定给对方发个邮件,邮件内容很简单,就是希望对方能注明一下文章的出处。

我是期待对方能给我个回复的,毕竟也算是有“缘分”。

结果

但是过了几天并没有等到对方的回复,我就重新访问了下对方的那篇文章,结果让我再次震惊,文章的内容已经完全修改了,修改的时间就是我发邮件的当天!

我还想着等个回复,结果人家收到邮件马上就修改了文章,以此来跟我断绝“缘分”。

感受

这件事给我最大的感受就是有意思,一开始是因为发现的偶然性,接下来是发现对方“抄袭”文章居然都不检查文中引用的链接,最后是对方收到邮件后的修改操作。

在我查看反向链接的过程中还发现了自己博客中的几个问题,赶紧改正或修复。居然还有意外收获,更有意思了。

在互联网时代,我们在网络上的操作都会留下痕迹,而这些痕迹串联在一起,就是数字世界的我们。

新玩意:乐歌 E2 升降桌

  • 渠道:乐歌京东自营旗舰店
  • 价格:1106 元

两年前就想买乐歌的升降桌了,但是觉得价格太贵,尝试过参加半价抢购活动,但无奈几次下来也没能抢到半价名额,就不了了之了。

后来一直在用的是一款塑料折叠桌,本来是买来给女朋友拍视频用的,她觉得不是很好用,正好当时刚搬家我没有自己的桌子,就拿来当电脑桌了。

塑料折叠桌

虽然是塑料的,但是承重还是可以的,一台 29 寸的显示器加底座少说也得有二十多斤,只有一点点压弯的迹象,还算比较稳。

但是塑料毕竟是塑料,用了两年多下来开始发黄,尤其是胳膊接触的位置,而且桌子的尺寸是 1.2*0.6m 的,放了键盘、显示器和笔记本基本就没有剩余空间了,东西一多就显得杂乱,所以还是想换个大点的桌子。

本来双十一之前一直在淘宝看实木桌,8cm 厚的松木实木桌,桌腿是铁艺桌腿,样子参考下图。

实木桌

但这一套实木桌下来要五六百,也不便宜,而且松木材质较软,长时间使用容易有划痕,就想着直接换个乐歌的升降桌,一步到位。正好双十一乐歌有优惠,心一横就冲了。

整体外观

我买的这款是 1.4*0.7m 原木色桌 + 雅白腿,双十一价格 1549 元,各种满减优惠后实付 1106 元,再加上购物返利,最后到手是 990 元,可以说相当划算了。

到手后先检查了桌面,包装保护很到位,没有磕碰,给我的第一感觉就是做工比前面提到的实木桌要精致的多。

关于安装,我的建议是如果没有动手能力或者工具,就老老实实预约官方的安装。给我安排的安装师傅是万师傅的,应该是跟乐歌有合作。师傅安装还是挺熟练的,但也花了至少 20 分钟的时间,可想而知如果是自己安装,在没有电动工具的情况下,一个小时能装好都是快的。

桌子装好后给我的第二感觉是稳,一直以来我都觉得升降桌不是很稳,尤其是 E2 这种倒装的,上粗下细,很容易晃动。但实际情况是,即使升到最高的高度,正常使用情况下也只有轻微的晃动,我个人觉得一方面是得益于乐歌桌腿的品质,另一方面是因为桌面比较沉。

这款升降桌的桌面虽然不是实木材质,但还是挺重的,厚度是 2.5cm,使用显示器支架也是没问题的。1.4*0.7m 的桌面,比之前要宽敞多了,由于要升降,就把台式主机放到了桌面,即使这样桌面也不显得拥挤。

桌面

就升降来说,我个人用的比较少,但偶尔站起来用电脑还是舒服的。升降过程电机的噪音在可接受范围,毕竟也就十秒钟的事,升降的过程也很稳。

购买建议:

  • 关于升降桌购买,我的建议是买大桌面,至于单双电机并不是很重要,毕竟升降次数还是比较少的,但是大桌面却有着很明显的提升,要不是放置位置的限制,我可能会选更大的尺寸。
  • 购买时机自然是等 618 或者双十一这种大促活动,不仅价格优惠,而且还会赠送一些东西,我的就送了送了桌垫和万向轮。

香港一日游

这周三去了一趟香港,记录一下行程和感受。

计划

我原本没想去香港的,因为没什么东西要买,我又不喜欢去不熟悉的地方。但是女朋友一直说想带我去香港逛逛,正好这周比较清闲,周二晚上临时决定第二天去香港。

出行方案

既然决定了去,那第一件事肯定是确定一下怎么去。我们是从广州出发,准备到香港西九龙。在小红书搜索了一下,从广州到香港西九龙有几个方案:

  • 方案一
    • 广州南–香港西九龙:高铁
  • 方案二
    • 广州南–深圳北:高铁
    • 深圳北–香港西九龙:高铁
  • 方案三(错误方案)
    • 广州南–深圳北:高铁
    • 深圳北–香港西九龙:地铁

其实广州南到香港西九龙是有高铁直达的,也就是方案一,但是直达有个问题,那就是车票要贵点。同样的路程,如果从深圳北换乘一下,也就是方案二,一个人就可以省下六十多块钱。

我们商量按方案二买票的,就先买了广州南到深圳北的高铁票,还尝试了买同一车次的深圳北到西九龙的票,结果提示“ 出票失败,本次列车为跨境旅客列车,涉及跨境车票不办理延长乘车区间业务”,那只好买下一车次的票了,大约晚半个小时。

购票提示

但是付款之前,女朋友说想体验一下坐地铁到香港,所以深圳北到西九龙的高铁票就没付款,也就是只买了广州南到深圳北的高铁,等过了关之后再坐地铁到西九龙。

至于为什么说方案三是错的,后面会详细说到。

行程安排

具体到香港之后去哪里逛,我没有查,女朋友已经安排好了。其实主要是逛一下,看看香港什么样子,时间充裕就多逛一下,时间不够就少逛一下,也不买什么东西。

行李准备

由于只去一天,不需要准备换洗的衣物,只带了现金、移动电源、数据线、身份证、港澳通行证、纸巾和雨伞等物品。

说到现金,买完车票我们才发现没有提前兑换港币,查了下汇率,1 人民币 ≈ 1.0746 港元,想了下其实换不换都行,因为买东西可以刷卡,地铁可以用支付宝,基本没什么要用现金的。

出发

计划赶不上变化

周三早上七点半起床,八点出门,九点到广州南站,准备检票的时候才发现,深圳北到西九龙没有地铁,有地铁的是深圳站,这也是上面提到方案三是错的原因。

既然马上检票了,广州南到深圳北是肯定要坐的,那接下来就买深圳北到西九龙的高铁票就好了,也就是说最终还是选择了方案二,真是计划赶不上变化,变化又变了回去。

换乘

广州南到深圳北也就半个小时,本来想着上车眯一下,结果还没睡着就到了。到站后换乘也很方便,直接走到对应的站台即可。这里最好跟车站人员确认一下,防止有误。

等了不到半小时下一辆车就来了,上了车发现车座跟普通高铁的不太一样,有点硬,不过也就十几分钟的车程,无所谓了。

动感号

到香港西九龙站之前把提前买好的国际上网套餐启用了,我买的是 12 块钱 10G/天,感觉足够用了。

过口岸

过口岸其实跟着人群走就行了,一般走快捷通道,在机器上刷港澳通行证和指纹,有两道关口,一个是出中国内地,一个是入香港,所以刷证和指纹也要两次。需要注意的是香港还是要求扫健康码的,可以提前通过微信「海关旅客指尖服务」小程序申报。

出了口岸发现有兑港币的,就兑了300 块钱,结果 300 人民币只兑了 301.5 的港币,那五毛的硬币还生锈了,至少亏了二十块钱,也怪自己没问就直接让人家兑了。

港币

出来就是柯士甸地铁站,可以使用百度或者高德查看路线,紫色的闸机可以用支付宝和微信扫码进站,如果不会操作可以查看附近的提示或者问下工作人员。

柯士甸地铁站

逛逛逛

接下来就是逛逛逛了,去了尖沙咀、旺角、海港城、金鱼街等等。

逛了卖衣服的、卖化妆品的、很贵的超市、零食超市等等,反正就是各种逛,累坏了。

吃饭

中午本来是要去吃荣记粉面的,据说陈奕迅经常去这家,到了之后发现好多人在排队,天气太热了,我们就去对面吃了麦当劳。

当时已经一点多了,麦当劳还是很多人,桌子上的二维码点餐其实是麦当劳 App 的下载链接,下载完也注册不了,因为需要香港手机号。

去点餐机点了个脆辣鸡腿堡、薯条和可乐,可乐感觉没什么不同,汉堡更多汁,没那么脆,薯条更咸一点。还看到好多人拿着薯条放到袋子里,再加上调料包摇啊摇,在广州还真没见过这种吃法。

下午在街边小店吃了个鲜虾馄饨,店里贴着老板跟陈奕迅的照片,这种小店一般只收现金。

返程

晚上我们从海港城逛到了星光大道,但是为了赶高铁,星光大道也没逛,有点可惜了,香港的夜景还是挺不错的。

返程是八点半的高铁,跟去的时候类似,还是从深圳北换乘,这次到深圳北我们先出站然后再进站的,主要是想看看候车室有没有什么吃的,由于是晚上,进站的人也不多,半个小时绰绰有余。

十点多回到了广州南,回到住的地方差不多已经十一点了。

感受

行程安排

一日游时间还是有点短,想逛的地方又多,基本上就是走马观花,再加上不熟悉,找路也花了不少时间。

一天下来走了三万步,是真的累,脚疼腰疼,再加上天气也热,商场里的空调冷气又很足,上一秒还一身汗,下一秒就觉得冷,真係頂唔順。

下次再去香港的话,我会选择住一晚,或者少去几个地方,这样就不会那么赶了,相对轻松一些

花费

整趟行程下来花费 1000 元左右,主要花在了交通费用上。

心情

刚到香港还发生了一点小插曲,我跟女朋友有点不开心,不过我们很快调整了过来,最后我们对整个旅程都比较满意。

毕竟旅途本身就挺累的,如果心情再不好,那岂不是身累加心累?所以要保持一个好心情,旅途才会愉快。

对香港的印象

我们逛的地方人都比较多,估计也有很多跟我们一样的游客。游客多也促进了香港的支付发展,基本上除了街边小店,都支持微信支付宝或者刷卡。

交通方面我们只坐了地铁,支持支付宝和微信扫码进站,还是很方便的,速度也很快,但是地铁里给人的感觉有点局促,比如地铁车厢比较矮,车站的扶梯比较宅窄,很多都是仅能一人通过的那种。

建筑比较密,马路也比较窄,女朋友说是因为香港的山比较多,适合居住的平原比较少,自然就会显得比较拥挤,听起来比较合理。

香港整体给我的感觉没有澳门破旧,不知道是不是我个人的错觉。整体消费还是挺高的,从吃饭就可以看出来,内地二三十就可以吃一顿,香港四五十起步。

有一些头发花白的老人还在工作,这挺出乎我意料的。

注意事项

整理了一下去香港的注意事项,供大家参考,也算是做一下笔记,以后再去可能还用得上。

港澳通行证签注

去香港首先要准备好港澳通行证签注,广州可自助签注的地点可查看「广州市赴港澳签注智能办理点一览表」,选择好具体位置后可以通过百度或高德地图搜索办公地点的电话,电话确认后再前往,避免白跑一趟。

签注分个人和团体,我的通行证在签注机上只能签团体的,所以专门打电话问了关口,得到的答复是个人和团体没区别,过关的时候都是一样刷通行证和指纹。

港币

虽然说香港绝大部分的商场店铺都可以使用支付宝微信和银行卡,但还是要提前准备一些港币,因为一些街边小店可能只收现金。当然如果花的不多也可以不兑港币,香港也收人民币,不过是按一比一的比例收。

交通工具

提前确定前往香港的交通工具并尽早购票,可选择的方案还是比较多的,有大巴、高铁和地铁,根据自己的情况选择。

健康申报

确定行程后记得提前通过微信「海关旅客指尖服务」小程序进行健康申报并截图,过关的时候就可以直接扫码通过了。

国际上网

内地的手机号在香港是无法上网的,可以提前购买国际上网套餐,到香港之后开启就可以上网了。

国行的手机一般都能购买国际上网服务,我使用的一加 Ace Pro,在设置–移动网络里就可以找到国际上网服务。

交通

百度和高德地图在香港是可以使用的,感觉比谷歌地图更适合国人使用。

以上建议可能不够全面,有需要可以提前上小红书搜索下去香港的攻略。

照片

最后放几张在香港拍的照片,感觉黑白照片拍出来还是挺有感觉的。

市场

十字路口

街头

小巴

金像奖女神

维多利亚港

跨平台开发之 Quasar

使用 Quasar 可以真正做到一次编码,全平台客户端覆盖。

上一篇文章「跨平台开发之 Tauri」,主要记录了桌面端应用的跨平台开发,这次要记录的框架 Quasar 比 Tauri 更强大,不仅能开发桌面端应用,还支持手机 App 和网页端等。

需求

我的需求是这样的,做一个跨平台的软件,至少要有手机端、电脑端和网页端,类似于一个网盘,可以上传文件或文本。

之所以要做这样一个软件,是因为以下两种使用场景:

  • 要给旧手机分享文件或配置文本
  • 临时使用一台电脑,需要安装软件或者登录网站

为什么不使用微信或者网盘呢?

  • 微信不够轻量级,在旧手机上可能带不动或者很慢
  • 网盘下载文件一般都需要安装客户端,临时下载文件不想装客户端

那为什么要做手机端、电脑端和网页端呢?

  • 在手机上使用客户端要比网页体验更好
  • 电脑端是给主力电脑使用,用于文件上传,如果无法实现客户端网页端也可以
  • 网页端是给临时要下载文件或者传输文本的电脑使用,用完即走

又是跨平台开发,那么选什么框架呢?

框架选择

本来想考虑一下 Tauri 的,但是支持手机客户端的版本 2.0 还是 Alpha 版,只好寻找其他框架。

uni-app

首先想到的是 uni-app,uni-app 号称能够「一套代码编到14个平台」,除了 Android、iOS 和 Web,还有一众的小程序。

uni-app

在尝试编码的过程中,我发现了 uni-app 的两个问题。一是生成的 Android 安装包比较大,初始体积就在十几兆。最致命的是第二个问题,通过 npm 安装的包在客户端上会报错。

尝试解决无果后,只好再次寻找其他框架。

Quasar

官方仓库:https://github.com/quasarframework/quasar

在搜索其他框架的时候,我多次看到了「Quasar」。回想起来我自己的收藏里好像也有这个,但当时看到 Quasar 网站的时候感觉有点不够亮眼,就直接跳过了。

Quasar

入门视频

在没有其他可选框架的情况下,我抱着尝试的心态,打开了 「Why Quasar」 的介绍视频,结果发现进入了新大陆。

视频展示了如何在半小时内制作一个 TODO 应用,并且可以在 Android、iOS、Mac、Windows 和网页上使用。看视频的第一眼我就被 Quasar 开发出的软件界面给吸引了,居然可以做出如此优美的界面,差点就被 Quasar 不够吸引人的网站给迷惑了。

quasar to do app

quasar to do desktop app

quasar to do web

推荐初学者先看一下入门视频「Create an App for Android, iOS, Mac & Windows - in 30 MINUTES!」,如果无法访问可以下载网盘中的视频和字幕进行查看,链接: https://pan.baidu.com/s/12xcGb-J_-03v3lEBrdmOwg ,提取码: zhh2。

为什么要选择 Quasar

之所以选择 Quasar,对我个人而言,有以下两点:

  • 开箱即用的 UI 组件,遵循 Material Design
  • 支持生成 SPA、SSR、PWA、BEX、手机 App 和跨平台的桌面应用

Quasar 有丰富的组件可以选择,而且遵循 Material Design,巧的是我个人很喜欢 Material Design 的设计。

再加上一次编码即可生成 6 种跨平台的应用,反正我是没找到能与 Quasar 匹敌的框架。

快速开始

需要先安装 Quasar CLI

yarn global add @quasar/cli# ornpm install -g @quasar/cli

接下来初始化项目:

yarn create quasar# or:npm init quasar

网页预览:

quasar dev

预览

可以看到,Quasar 的初始化项目就包含了一个抽屉菜单,满满的 Material Design 风格。

打包:

quasar build

更多信息可参考官方文档「Quick Start」。

开发

跟 Tauri 类似,只要会 Vue 就可以进行开发了,这里不赘述。

Quasar 提供了样式、布局、Vue 组件、Vue 指令、插件和工具等丰富内容,使开发更加容易,具体内容可阅读文档进行了解。

开发移动应用

开发移动应用有两种方式:

  • Capacitor
  • Cordova

这里以 Capacitor 为例开发安卓客户端,需要做好 Android Studio 相关配置,具体可参考「Preparation for Capacitor App」。

添加 Capacitor 模式:

quasar mode add capacitor

预览:

quasar dev -m capacitor -T android

此时会自动编译代码并启动 Android Studio,点击 Run app 按钮即可安装客户端并进行预览。

Android Studio

提示:Android Studio 打开后可能会提示升级 Gradle,直接忽略就好,千万不要升级。

Android 预览

打包:

quasar build -m capacitor -T android

如果打包报错,可以使用下面命令生成最终资源,然后使用 Android Studio 进行打包。

quasar build -m capacitor -T android --ide

更多关于移动客户端开发的信息可以参考「Developing Mobile Apps」。

开发 Electron 应用

添加 Electron 模式:

quasar mode add electron

预览:

quasar dev -m electron

Electron 预览

打包

quasar build -m electron

更多关于 Electron 客户端的信息可以参考「What is Electron」。

项目目录

┌── public│   ├── icons│   └── favicon.ico├── src│   ├── assets│   ├── boot│   ├── components│   ├── css│   ├── layouts│   ├── pages│   ├── router│   └── App.vue├── src-capacitor│   ├── android│   ├── node_modules│   ├── www│   ├── capacitor-flag.d.ts│   ├── capacitor.config.json│   ├── package.json│   └── yarn.lock├── src-electron│   ├── icons│   ├── electron-flag.d.ts│   ├── electron-main.js│   └── electron-preload.js├── README.md├── index.html├── jsconfig.json├── package.json├── postcss.config.js├── quasar.config.js└── yarn.lock

可以看到,Quasar 的项目目录跟 Vue 基本一致,多出来的 src-capacitorsrc-electron 分别是 Capacitor 和 Electron 的相关资源。

生成图标

为了快速生成各平台下的图标,Quasar 提供了 Icon Genie CLI,使用方法如下:

icongenie generate -i 图片路径

原始图片最好是 1024x1024px 及以上尺寸的 png 图片,执行命令后即可生成各平台下的 icon。

可查看「Icon Genie CLI Command List」进行详细了解。

界面展示

展示一下我使用 Quasar 开发的应用页面。

登录

首页

抽屉菜单

新增数据

文件上传

图片预览

文本复制

关于

Quasar 踩坑

Android 相关

logo 放大

在部分设备上 App 的 logo 会放大,我的处理是删除 anydpi-v26 相关的资源文件。

删除 anydpi-v26

状态栏颜色

styles.xml 里的 AppTheme.NoActionBar 增加以下代码:

<item name="colorPrimaryDark">@color/colorPrimaryDark</item>

重复显示启动画面

在 Android 12 及更高版本上会显示两个启动画面,第一个是 Android 系统默认的,第二个是 Capacitor 生成的。

暂时未处理,更多相关信息了访问 Migrate your existing splash screen implementation to Android 12 and higher 了解。

启动画面显示黑色背景

部分手机启动画面会显示黑色背景,我的处理是将 styles.xml 里的 AppTheme.NoActionBar 改为 Theme.AppCompat.Light.DarkActionBar

启动页面 logo 拉伸变形

部分手机启动画面的 logo 会拉伸变形,我的处理是修改 capacitor-androidcom.getcapacitor 下的 Splash 类。

String scaleTypeName = config.getString(CONFIG_KEY_PREFIX + "androidScaleType", "FIT_XY"); 中的 FIT_XY 修改为 CENTER_CROP

复制文本报错

复制文本会提示 NotAllowError: Write permission denied,复制未生效。

首先修改 com.getcapacitor 下的 BridgeActivity 类,在 load 方法里增加下面的代码:

webView.getSettings().setJavaScriptEnabled(true);webView.addJavascriptInterface(new WebAppInterface(), "NativeAndroid");

然后增加 WebAppInterface

public class WebAppInterface {    @JavascriptInterface    public void copyToClipboard(String text) {      ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);      ClipData clip = ClipData.newPlainText("datasync", text);      clipboard.setPrimaryClip(clip);    }}

最后在 Vue 代码里增加平台判断,当处于 android 平台时调用上面定义的 copyToClipboard 方法,否则则调用 Quasar 的 copyToClipboard 方法:

copy(content) {  if (this.$q.platform.is.android) {    NativeAndroid.copyToClipboard(content);    this.$q.notify({        color: "primary",        textColor: "white",        icon: "check",        message: "复制成功",        timeout: 500,      });  }else{    copyToClipboard(content)    .then(() => {      this.$q.notify({        color: "primary",        textColor: "white",        icon: "check",        message: "复制成功",        timeout: 500,      });    })    .catch((error) => {      this.$q.notify({        color: "negative",        textColor: "white",        icon: "clear",        message: error + "复制失败",        timeout: 500,      });    });  }}

返回按键无响应

Quasar 的配置文件 quasar.config.js 里可以配置 backButtonExit,用于处理应用的返回退出,但是我尝试配置后,在登录页面点击返回按键无响应。我的处理是在登录页面的 beforeRouteLeave 增加判断:

beforeRouteLeave(to, from, next) {  if (    this.$q.platform.is.android &&    this.$q.platform.is.capacitor &&    to.fullPath == "/"  ) {    if (currentUser) { // 登录状态      next(true);    } else {      NativeAndroid.exitApp();    }  } else {    next(true);  }}

其中 exitApp 方法在上面提到的 WebAppInterface 里添加即可:

public class WebAppInterface {    @JavascriptInterface    public void exitApp() {     getBridge().getActivity().finish();    }}

WebView 版本

Capacitor 对 WebView 版本的要求是 60 及以上,如果 Android 设备的 WebView 低于此版本打开软件会显示白屏,解决办法是升级 WebView。

可访问 Android System WebView APK,查找需要的版本进行下载安装。

实测在三星 Note4(Android 6.0)上安装 60 版本的 WebView 依然显示白屏,索性升级到 70 版本显示就正常了,如有同样问题可以参考升级到更高的版本。

导航栏滚动

在布局中定义了类似于 Android ActionBar 的组件,正常情况下 ActionBar 应该固定位置和高度,但是实际滑动页面的时候 ActionBar 在低版本 Android 会显示发光效果,尤其在高版本 Android 上会出现拉伸和反弹的效果,与预期不符。

之所以产生这种情况是因为所谓的 ActionBar 其实是网页的一部分,而出现的发光、拉伸和反弹效果其实是 Android 的默认滚动效果,暂时无解,除非用 Android 原生组件。

Electron 打包

如果选用了 builder 方式进行打包,那么打包的时候可能会提示 electron-builder could not build Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT,这是因为较低版本的 electron-builder 依赖于 Python2 打包,但是在电脑上没有找到 Python2。

解决办法是升级 electron-builder 到 23 即可:

"electron-builder": "^23.0.0",

v-ripple

Quasar 按钮、菜单等组件默认自带 v-ripple 属性,即水波纹点击效果,但是如果点击后出现抽屉菜单或者跳转页面,则来不及显示水波纹效果,体验不流畅。

暂无解决办法。

总结

体验下来,感觉 Quasar 的优势还是很明显的:

  • 开箱即用的 UI 组件,遵循 Material Design
  • 支持 SPA、SSR、PWA、BEX、手机 App 和跨平台的桌面应用
  • 打包后的手机 App 安装包体积很小

虽然桌面客户端安装包的体积比较大,但个人感觉还是要比 Tauri 更强大,跨平台的体验更一致,也更适用于商业项目,毕竟目前市面上 Electron 应用占有相当大的比例。

如果需要同时开发手机 App、桌面应用和网站,可以考虑使用 Quasar。

跨平台开发之 Tauri

比起 Electron,Tauri 打包后的安装包体积是真的小。

跨平台开发

最近使用跨平台开发框架写了一个软件,在此记录一下。

说起跨平台开发,我的理解是这样的:

  • 多依赖浏览器环境运行
  • 多使用前端语言进行开发
  • 只需一次编码,但不同平台可能需要做兼容处理
  • 能够在 macOS、Windows、Linux 或者 Android、iOS 上运行

跨平台框架选择

需求

女朋友让我帮忙写个文件上传的软件,先描述一下软件的功能需求:

  • 支持上传文件到七牛云
  • 上传后自动复制文件链接
  • 支持查看上传历史
  • 图片视频等资源可以直接预览

其实之前用 Java 写过一个「七牛云上传工具」,也能用,但是依赖 Java 环境,而且界面比较丑,也没有上传历史记录。

可能有人会说, PicGo 之类的软件不就可以满足需求么,干嘛还自己造轮子。

其实是这样的,类似 PicGo 的软件只能上传图片,而且安装包太大。我需要的是一个能上传文件,并且安装包小的轻量级软件,所以正好借这个机会自己来实现。

经过我的考虑,我对框架选择提出了以下要求:

  • 使用 Vue 开发
  • 能够打包成客户端
  • 客户端支持 macOS 和 Windows

这么看下来肯定是跨平台开发了,那选择哪个框架呢?

Electron VS Tauri

本来是想用「Electron」的,但是说真的,只看官方文档没看出来怎么使用 Vue 入门。GitHub 虽然有一个「electron-vue」项目,但已经太久没维护了,连项目初始化都报错。

无奈只好放弃使用 Electron,一番搜索后找到了「Tauri」,跟 Electron 类似,也支持在 Mac、Win、Linux 上运行,并且最新的 2.0(Alpha)还支持在 Android 和 iOS 上运行。不过这不是最主要的,最主要的是以下两点:

  • 官方脚手架初始化项目支持 Vite,也就是说可以无缝使用 Vue 进行开发。
  • 打包后的安装包体积小,众所周知 Electron 打包会包含一个浏览器,而 Tauri 并不会。

Tauri 入门

官方仓库:https://github.com/tauri-apps/tauri

特点

不同于 Electron 嵌入 Chromium 的做法,Tauri 利用 macOS 上的 WebKit、Windows 上的 WebView2 和 Linux 上的 WebKitGTK,以此来避免嵌入浏览器的笨重包袱,使得安装包能够做到很小的体积。

但这也可能导致兼容性问题,例如低版本的 Windows 系统不包含 Webview2,需要设置 Webview2 的安装配置;不同系统对混合内容等问题的兼容性不同。

环境准备

这里只介绍一下 macOS 下的准备工作,其他系统准备工作请参考「Prerequisites」。

  • CLang 和 macOS 开发依赖项
xcode-select --install
  • Rust
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

初始化

我这里以官方 Vite 初始化项目为例,更多初始化请参考官方文档「Quick Start」。

npm create tauri-app@latest

选择适合自己的配置项。

❯ npm create tauri-app@latestNeed to install the following packages:  create-tauri-app@3.3.5Ok to proceed? (y) y✔ Project name · tauri-app✔ Choose which language to use for your frontend · TypeScript / JavaScript - (pnpm, yarn, npm)✔ Choose your package manager · npm✔ Choose your UI template · Vue - (https://vuejs.org)✔ Choose your UI flavor · JavaScript

然后安装依赖:

npm install

接下来预览项目:

npm run tauri dev

控制台会显示预览链接,点击即可通过浏览器进行预览。同时会启动一个客户端的预览界面,如下图所示(第一次运行需要下载资源,可能会比较慢,耐心等待即可)。

客户端预览

如果只想通过浏览器进行预览,执行 npm run dev 即可。

项目目录

可以看到项目的目录跟 Vue 基本是一致的,多出的 src-tauri 目录便是 Tarui 特有的。

┌── public│   ├── tauri.svg│   └── vite.svg├── src│   ├── assets│   ├── components│   ├── App.vue│   ├── main.js│   └── styles.css├── src-tauri│   ├── icons│   ├── src│   ├── target│   ├── Cargo.lock│   ├── Cargo.toml│   ├── build.rs│   └── tauri.conf.json├── README.md├── index.html├── package-lock.json├── package.json└── vite.config.js
  • icons:各个平台的图标,可查看「Icons」进行详细了解
  • src:Rust 代码,Tauri 可以在前端调用 Rust 代码,可查看「Calling Rust from the frontend」进行详细了解
  • target:打包目录
  • Cargo.lock & Cargo.toml & build.rs:Rust 相关
  • tauri.conf.json:Tauri 的配置文件,可查看「Configuration」进行详细了解

开发

Tauri 虽然支持 Rust,但是完全不会 Rust 也没影响,像我就完全没接触过 Rust。

就跟正常开发 Vue 项目一样,安装依赖包,引入依赖,写页面、组件即可。

我这里使用了 View UI Plus七牛云 JavaScript SDK,按照各自的文档进入引入和使用即可。

额外说一句,七牛云 JavaScript SDK 需要先获取到上传凭证才能上传,具体可参考「上传凭证」文档。

API

Tauri 提供了一些列 API 使得开发更加容易,这里以「clipboard」为例,简单说下 Tauri API 的使用。

首先,需要在 tauri.conf.json 里设置 clipboard 节点,参考下面的代码:

{  "tauri": {    "allowlist": {      "clipboard": {        "all": true, // enable all Clipboard APIs        "writeText": true,        "readText": true      }    }  }}

如果仅需设置剪贴板内容,无需读取,则只设置 writeTexttrue 即可。

在代码中使用 writeText

import { writeText } from '@tauri-apps/api/clipboard';await writeText('Tauri is awesome!');

更多关于 Tauri API 使用可查看「@tauri-apps/api」。

生成图标

Tauri 支持 macOS、Windows 和 Linux 三个平台,为了简化 icon 的制作,Tauri 提供了专门生成 icons 的命令。

npm run tauri icon 图片路径

原始图片最好是 1024x1024 的 png 图片,执行命令后即可生成各平台下的 icon。

可查看「Icons」进行详细了解。

打包

npm run tauri build

使用 Mac 进行打包,那么打出来的就是 dmg 包,只能 macOS 使用。如果想实现跨平台打包,可以参考「Cross-Platform Compilation」。其他平台打包可参考「Building」。

界面展示

展示一下我使用 Tauri + Vue + View UI Plus 实现的界面。

文件上传

历史记录

图片预览

上传配置

Tauri 踩坑

在使用 Tauri 过程中踩了一些坑,也记录下来。

文件拖拽

拖拽上传需要在配置文件里将 tauri.conf.json 里 windows 节点下的 fileDropEnabled 设置为 false,否则会跟 Vue 组件的拖拽冲突。

"windows": [  {    "fullscreen": false,    "resizable": false,    "title": "文件上传工具",    "width": 800,    "height": 450,    "fileDropEnabled": false,  }]

并且为了防止将图片拖拽到非上传区域导致页面显示图片的情况,需要阻止页面 dropdragover 的默认监听:

window.addEventListener("drop", (e) => e.preventDefault(), false);window.addEventListener("dragover", (e) => e.preventDefault(), false);

右键菜单

软件最后要打包成客户端,不需要浏览器的右键菜单,可参考下方代码,禁用右键菜单:

window.addEventListener("contextmenu", (e) => e.preventDefault(), false);

复制文本

View UI Plus 带有 $Copy 复制到剪贴板 的全局方法,但在 Tauri 框架里有可能会失败。

解决办法就是调用 Tauri 的 writeText

混合内容

Tauri 打包后的应用其实是 https:// 的一个网页应用,如果页面中包含了 http:// 的资源那就是混合内容,控制台会报错,图片等资源会显示不出来;如果资源也是 https:// 那就不是混合内容,也不会报错。

由于做的是图片预览,所以我的解决办法是使用 Tauri 的 os type 判断,在 Windows 下直接打开一个 WebviewWindow 来加载图片 url,显示是没问题的。

但是在 macOS 上打开 WebviewWindow 加载图片 url 图片无法显示,控制台会提示 Failed to load resource: The resource could not be loaded because the App Transport Security policy requires the http://xxx.xxx.xxx use of a secure connection,暂时只能提示手动去浏览器访问预览。

这里要注意,在开发模式下混合内容是不会报错的,显示也都正常,但是打包之后就会报错并且显示异常。

Windows 相关

Windows 下执行脚本可能提示「无法加载文件 xxx,因为在此系统上禁止运行脚本」,这是因为 PowerShell 执行策略导致的。

我的做法是更改 PowerShell 执行策略为 Bypass

Set-ExecutionPolicy -ExecutionPolicy Bypass

但是这个策略是有风险的,如果你的主力系统是 Windows,建议参考「about_Execution_Policies」选择合适的执行策略和执行策略范围。

打包的时候遇到 Error failed to bundle project: error running light.exe: error running light.exe 的问题,设置 budle 节点下的 windowswix 语言为 zh-CN

"bundle": {  "windows": {    "wix": {      "language": "zh-CN"    }  }},

在 Windows 上 Tauri 依赖的是微软的 WebView2,Windows 10 1803 及以后的版本和 Windows 11 都是自带 WebView2 的,但如果是低版本的系统,在安装时会自动下载和安装 WebView2,但是安装过程没有提示,感觉像是卡住了,体验不是很好。如果想自行配置 Webview2 的安装选项,可以参考 「Webview2 Installation Options」。

窗口居中闪烁

默认的窗口位置并不是居中的,可以设置 windows 节点的 cnetertrue

"windows": [  {    "fullscreen": false,    "resizable": false,    "title": "文件上传工具",    "width": 800,    "height": 450,    "fileDropEnabled": false,    "center": true  }]

但是这个居中有点问题,窗口还是会从默认位置出现,然后再跳到居中的位置,能看到跳的过程,体验不是很好。

总结

总体来说使用 Tauri 开发跨平台应该还是不错的,与 Vue 生态完美配合,安装包的体积也可以做到很小。

但也不可避免的有一些问题,例如 Windows 下 Webview2 的安装问题、不同系统下混合内容的兼容性问题等。

我觉得如果是个人项目可以用 Tauri 搞一下,但如果是商业化的项目需要提前评估,防止入坑后需要过多的时间来填坑。

更多关于 Tauri 的使用参考请查看「Tauri 官方文档」。

三星 Note4 超级省电模式之 Kindle 看书

用三星 Note4 的超级省电模式看书,没想到真的可以。

再次相遇

过年的时候去我哥家,发现了躺在抽屉里的三星 Note4,是我刚上班的时候买的手机,后来换新手机之后给我哥用了。

说真的,对这台手机我还是很有感情的,一方面是因为这是我上班之后买的第一台手机,而且是心心念念的带手写笔的超大屏旗舰手机;另一方面当时不够钱买,好朋友们知道我喜欢这手机,专门借钱给我买。

虽然过去好几年了,但看见它的时候立马就回想起当时的感受:

  • 大屏幕,显示效果惊艳
  • 手写笔,装逼范儿十足
  • 大缝隙,打电话夹头发
  • 小电池,一天一冲够呛
  • 渣三星,旗舰机都卡顿

念及旧情,我准备把它拿走,反正也没人用了。充电开机之后才发现,真是没人用,密码都没人记得。幸好可以通过指纹解锁,不然还得费一番功夫。多说一句,Note4 的指纹是滑动解锁,很奇怪的方式。

想法

手机拿回来之后,清洁机身、重置系统、整理软件,把玩下来,感慨良多。

长期的使用之后,边框的漆有些脱落了,电池也不耐用了,就连屏幕也不堪负重,留下了「烧屏」的痕迹。不愧是三星的 AMOLED 屏幕,还真的会烧屏。等下,说到 Note4 的「Super AMOLED」屏幕,我突然想到除了烧屏之外它还有个特性,那就是显示黑色不发光!再想到之前为了省电用过的超级省电模式,黑白界面加限制应用使用,确实能省电。

突然灵光一闪,有了一个想法:我是不是可以用 Note4 来安装 Kindle,在超级省电模式下 看书?

  • 虽然是好多年前的手机,但是骁龙 805 处理器 + 3GB 内存,再怎么也比 Kindle 青春版要流畅的多吧?
  • 看书流畅的同时又带不动现在主流的软件,杜绝了看书时的干扰。
  • 再配合黑色背景不发光的特性,既省电对眼睛的伤害也小。

安装 Kindle

想法是美好的,但现实是残酷的。第一步还没迈出去就失败了,Kindle 安装不上,提示「解析软件包时出现问题」。

解析错误

我先是在酷安上下载的 Kindle 安装包,重试了几次都提示解析错误。我又尝试把我一加手机上的 Kindle 安装包传给 Note4 进行安装,仍然是同样的问题。无奈我只好上亚马逊官网下载安装包,居然还是一样的问题。

就当我以为这个想法要胎死腹中的时候,突然柳暗花明,使用腾讯的「应用宝」成功安装了 Kindle!

我就好奇为什么其他地方甚至官方下载的安装包都安装不了,应用宝怎么就可以呢?对比了一下我一加手机和 Note4 两个 Kindle 的版本,明显 Note4 安装的是低一点的版本,应该是从某个高版本开始 Kindle 放弃了对低版本系统的支持,毕竟现在基本没人用 Android 6.0 的手机了。

接下来登录 Kindle 账号,设置阅读背景为黑色,这想法就已经完成一半了。

超级省电模式

说实话,因为距离上次使用 Note4 已经太久了,我已经忘记了超级省电模式,只记得有个模式是黑白的,而且很省电,但是这个模式叫什么,怎么进入我已经想不起来了。不过还好有百度,搜索一下就知道了,原来是叫「超级省电模式」。

百度搜索

进入超级省电模式之后,我以为只要把 Kindle 添加到首页就可以了,结果就遇到了第二个问题,在此模式下找不到 Kindle,只有系统和官方合作的软件可以添加。

其实,即使不使用超级省电模式也基本能满足我的需求,但是作为一个爱折腾的人,怎么会轻易放过这个折腾的机会?再加上超级省电模式不仅能省电,还进一步减少了花花绿绿的干扰,何乐而不为?

搜索解决办法

一番搜索下来,发现一个教程「三星超级省电模式之手动添加任意程序」,感觉应该是可以搞定的。

文中提到需要修改超级省电模式的数据库,既然如此,那肯定需要获取手机的 Root 权限。

Root

继续搜索三星 Note4 的 Root 教程,找到了「三星 NOTE4 ROOT 教程」,按照步骤一步步操作即可完成 Root。

需要注意的是,Root 后开机的时候上面会出现红色字体,不影响使用。

Root 以及下方提到的软件都会在文章最后提供下载链接。

修改数据库

Root 之后首先安装 SQLiteEditor 和 Root Explorer,打开后均授予 Root 权限,使用 Root Explorer 找到 /data/data/com.sec.android.provider.emergencymode/databases 目录下的 emergency.db 数据库文件,将此文件复制到别处备份。

然后打开 emergency.db 下的 launcheradd 表,点击添加按钮添加一条数据,package、class、permission 和 mode 的值分别如下:

  • com.amazon.kindlefc
  • com.amazon.kindlefc.KfcUpgradePage
  • 0000
  • 1

保存后进入设置–>电池,启动超级省电模式,启动后通过点击加号并选择 Kindle 阅读将其加入到超级省电模式首页。

如果想移除默认的图标,可以参考「三星超级省电模式之手动添加任意程序」进行修改。

效果展示

这里忍不住感慨一句,安卓开放的感觉真好。

总结

用三星 Note4 的超级省电模式看书,感觉还是不错的,不仅没有干扰因素,看书翻页也比 Kindle 电纸书要流畅,我很满意。

但要说完美也算不上,每次在 Kindle 的阅读界面锁屏,等再次解锁的时候会有八九秒的白屏时间,不过也能接受,毕竟是一台老机器了,得包容。

除了折腾手机的系统,我还把屏幕四周的边框漆全部用美工刀刮了刮,让它看起来还整洁一点。虽然电池不太行了,但是我还没换,因为在超级省电模式下还算省电,等真的不行了再换。

能让这台老手机再次被用起来,也算废物利用了。我很享受这个折腾的过程,最终还能实现预期的目的,这种感觉太爽了。

最后,文章提到的软件都已经放在【蓝奏云】(密码:6o64),有需要的自取,也欢迎沟通交流。

博客升级

博客升级半个多月了,目前运行稳定,记录一下升级过程。

升级原因

我的博客使用的是「Halo」,部署时间是 2019 年,到现在有四年时间了,当时部署的版本是 0.4.0-0.4.2 之间的一个版本,有点记不太清了,紧接着升级到了 0.4.3,然后就一直用到了现在。

用了这么久,发现这个版本还是有些问题的:

  • 管理端界面不够现代化
  • 版本过旧,可能存在安全漏洞
  • 数据库使用的是 H2,访问不方便
  • 程序和数据分开,数据备份迁移不方便
  • 底部最近评论如果包含特殊符号可能显示异常

博客之前遇到过一次恶意评论,短时间内有大量评论涌入,我虽然开启了评论审核,但持续的评论使邮箱通知疯狂报错,无奈只好停了博客,从数据库中查到评论的 IP 地址,通过设置服务器黑名单才解决。说实话,H2 数据库的访问还是挺麻烦的,尤其是服务关了,想要本地访问就更麻烦了。

去年年底的时候就考虑升级博客,当时 Halo 已经开始 2.0 版本的测试了,稳定版是 1.6.0。

随后我就在本地测试博客升级,过程虽然有点繁琐,但是升级是可以走通的。

升级方案

一直想找个合适的时间升级一下,结果拖着拖着就到了今年,直到从「科技爱好者周刊(第 242 期):一次尴尬的服务器被黑」看到阮一峰老师博客被黑的消息,加速了我升级博客的步伐。

于是,找了个时间,开始博客的升级,此时最新的 v1 版本已经是 1.6.1 了,目测应该不会有什么更新了,便决定升级到此版本。

升级

升级方案

我的升级方案是先在本地虚拟机中进行升级,数据检查无误之后再迁移到服务器上。

具体的步骤如下:

  • 虚拟机 1
    • 恢复服务器同版本的 0.4.3 及数据
    • 升级到 0.4.4
    • 检查数据完整性
    • 导出数据
  • 虚拟机 2
    • 部署 1.2.0
    • 导入数据
    • 检查数据完整性
    • 升级到 1.6.1
    • 导出数据
  • 虚拟机 3
    • 下载配置文件
    • 设置使用 MySQL 数据库
    • 创建数据库
    • docker compose 映射本地目录
    • docker compose 部署 1.6.1
    • 导入数据
    • 修改配置项
  • 服务器
    • 复制 docker compose 配置文件和映射目录
    • 部署并启动
    • 检查数据和配置

方案说明

  • 为什么要在虚拟机上进行升级操作?
    • 避免直接在服务器上操作导致数据出错或丢失。
  • 为什么要先升级到 0.4.4?
    • 这是 1.0 之前的最后一个版本,需要升级到此版本才能将数据导出。
  • 为什么导入到 1.2.0?
    • 印象中这个版本之后就不支持导入旧版本的数据了。
  • 为什么采用 docker compose 方式部署?
    • 方便数据备份和迁移,只需将映射的目录和 docker-compose.yml 备份好,即可进行数据迁移。

遇到的问题

迁移中也遇到了一些问题,记录在此。

首先是评论导入失败,看日志是有一条评论内容过长,在导入数据的时候失败了,同时导致后续几条评论也导入失败。后来尝试修改目标数据库的字段长度,成功导入进去。

其次,升级过程时间较久,可能会把虚拟机挂起,导致虚拟机时间不准,访问的时候出现问题。解决办法也很简单,对服务器时间进行校准即可。

还有就是升级过程中使用非 80 端口可能无法访问博客,我也没深究原因,只是把端口改为 80 即可。最后迁移到服务器上使用非 80 端口是没问题的。

配置检查

关于需要检查的配置项,我这列举一下:

  • 配置文件
    • 数据库:选择 MySQL 数据库,更稳定可靠
    • 缓存:选择 level,即使重启服务也不会丢失数据
  • 数据库
    • OPTIONS 表:修改 birthday,用于展示建站天数
  • 博客设置
    • SMTP 服务:配置后测试
    • 评论设置
      • 打开所有开关
      • Gravatar 镜像源:如无法访问则寻找替代源
    • 附件设置:检查存储位置和配置
    • 其他设置:添加统计代码
  • 高级选项(博客设置右上角点击「切换到高级选项」)
    • 自定义页面前缀:p
    • API 服务:打开,填写之前的 Access key

升级总结

总体来说先在本地虚拟机进行升级还是比较靠谱的,以后有类似的升级也会参考此方案。

截止到目前,升级已经有半个多月了,博客运行稳定,暂未发现有什么问题。

其实我升级的时候 Halo 2.0 正式版已经出了,但我还是选择了 1.6.1,主要原因还是求稳。博客毕竟是以内容为主,博客本身的版本并不是特别重要,只要能保证博客系统的稳定性和安全性就可以了,还是以内容产出为最终目标。

除此之外,我个人是一个妥妥的升级狂人,各种软件基本都是第一时间升级到最新版,如果升级到 hao 2.0,那么随着官方的更新,我也会忍不住更新,一方面占用时间,另一方面对内容产出也起不到什么作用,甚至需要花时间解决升级遇到的问题。

所以,我选择了 Halo 1.6.1,既能保证稳定性和安全性,又避免了紧跟最新版不断升级带来的焦虑感。

最后友情提示,升级最重要的就是数据备份,一定切记。只要有备份,再加上在虚拟机里操作升级,怎么搞都可以,大不了从头再来一遍。

以上就是本次博客升级的过程,欢迎沟通交流。

使用 Jpom 自动构建和部署项目

比 Jenkins 简单的项目构建和部署工具。

前端项目自动构建部署

我有几个自用的前端项目,每次修改代码后都需要本地打包再上传到服务器进行部署,感觉有点麻烦,不够自动化,所以一直想找个能够实现自动构建和部署的工具。

这时候可能会有人说用 Jenkins,其实我有体验过,但没能用起来,一方面是 Jenkins 对服务器配置要求高,另一方面是配置过于复杂。另外也使用过一段时间的 Vercel,虽然可以很方便的实现自动化部署,但是项目访问速度不理想,而且必须使用 GitHub,也弃用了。

最近发现了一个新的工具「Jpom」,不仅能在线构建、自动部署项目,还支持日常运维和项目监控等功能,并且配置相对简单,使用上也足够本地化,完全能满足了我的需求。

Jpom

这里我就以前端 Vue 项目构建部署为例,说一下 Jpom 的安装和使用。

安装

安装分为三部分:

  • node 环境安装
  • Jpom 服务端安装
  • Jpom 插件安装

node 环境安装

  • 下载安装
wget -O node-v16.13.1-linux-x64.tar.gz https://oss.npmmirror.com/dist/node/v16.13.1/node-v16.13.1-linux-x64.tar.gzmkdir -p /usr/node/ && tar -zxf node-v16.13.1-linux-x64.tar.gz  -C /usr/node/
  • 配置环境变量
echo '# node '>>/etc/profileecho 'export NODE_HOME=/usr/node/node-v16.13.1-linux-x64'>>/etc/profileecho 'export PATH=$NODE_HOME/bin:$PATH'>>/etc/profilesource /etc/profile

如构建遇到错误提示 /bin/bash: npm: command not found,可以执行如下命令建立软连接 ln -s /usr/node/node-v16.13.1-linux-x64/bin/node /usr/local/bin/node ln -s /usr/node/node-v16.13.1-linux-x64/bin/npm /usr/local/bin/npm

Jpom 服务端安装

官方提供了多种安装方式,推荐使用「一键安装」,默认会安装到 /usr/local/jpom-server 目录。

# 一键默认安装 + 自动配置开机自启服务curl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+default+service

可以通过以下命令管理 Jpom 服务端:

  • 启动:systemctl start jpom-server
  • 停止:systemctl stop jpom-server
  • 重启:systemctl restart jpom-server

更多 Jpom 服务端安装方式可以查看「安装 Jpom」。

Jpom 插件安装

插件安装也同样推荐使用「一键安装」,默认会安装到 /usr/local/jpom-agent 目录。

# 一键默认安装 + 自动配置开机自启服务curl -fsSL https://jpom.top/docs/install.sh | bash -s Agent jdk+default+service

可以通过以下命令管理 Jpom 插件:

  • 启动:systemctl start jpom-agent
  • 停止:systemctl stop jpom-agent
  • 重启:systemctl restart jpom-agent

使用

初始化

浏览器访问 IP:2122(或自行绑定域名)进入管理页面,如下图所示:

初始化

设置初始化系统账户,根据需要开启两步验证:

两步验证

逻辑节点

节点简单理解为服务器就可以,点击节点管理 > 逻辑节点 > 快速绑定,如下所示:

逻辑节点

由于上面已经安装了 Jpom 插件,所以这里我们直接进行快速绑定,展开快速绑定并复制命令,如下图所示:

快速绑定

进入到 Jpom 插件安装的目录,如果是默认安装那么目录为 /usr/local/jpom-agent,执行复制好的快速绑定命令。

等待页面的执行结果显示绑定成功即完成绑定,如果有多个 IP 可能需要手动选择要绑定的 IP。

绑定成功

点击节点的管理按钮,进入到管理页面,如下图所示:

管理节点

点击插件端配置 > 白名单配置,项目路径填写 /usr/local/web(自定义前端项目的部署目录,此处仅用于举例),点击提交。

白名单配置

点击项目管理 > 项目列表 > 新增,如下图所示:

新增项目

填写各项信息,其中运行方式要选择 File,填写后点击确定,如下图所示:

编辑项目

在线构建

点击在线构建 > 仓库信息 > 新增,如下图所示:

新增仓库信息

填入各项信息,点击确定。

编辑仓库

构建列表

点击在线构建 > 仓库信息 > 构建列表 > 新增,如下图所示:

新增构建

按提示填写各项信息,点击确定即可,可以参考下图:

编辑构建

说明:

  • 构建方式:选择本地构建
  • 构建命令:可以参考提示或按照项目实际的命令填写
  • 产物目录:按照本地构建后的目录填写,一般都是 dist
  • 发布操作:选择项目
  • 清空发布:选择是

点击构建 > 直接构建,开始构建和部署项目。

直接构建

等待日志显示构建结束,即可通过 IP 或域名(自行配置 Nginx)访问项目。

构建日志

自动部署

上面实现了项目的构建和部署,但是并没有实现自动化,那要怎么才能实现自动化呢?下面以 Gitee 为例,实现自动化构建和部署,即代码提交后自动触发构建部署。

在构建列表点击更多 > 触发器,如下图所示:

触发器

复制触发器地址,如下图所示:

触发器地址

访问 Gitee 的项目,依次点击管理 > WebHooks > 添加webHook,如下图所示:

添加 webHook

将复制的触发器地址粘贴到 URL 输入框,并点击添加按钮,如下图所示:

填写 URL

这样,以后每次提交代码之后,就会自动触发项目的构建和部署。

详细文档可查看「Gitee 提交代码后自动执行构建」。

实践案例

上面介绍的就是 Jpom 官方文档里提到的「本地构建 + 项目发布 node 项目」。

除此之外,官方还提供了其他实践案例的参考,例如 Java、Python 等项目实践案例,可访问「实践案例目录」进行查看。

总结

Jpom 满足了我自动化构建和部署前端项目的需求,作为个人或者企业测试环境的自动化工具还是很不错的。

Jpom 更多功能

除了项目的构建和部署,Jpom 还支持 SSH 终端、在线脚本、docker 管理、项目监控等功能,可以访问 https://jpom.top 进行探索。

注意事项

在体验 Jpom 的过程中,发现一些使用问题,记录下来供参考:

  • Jpom 服务端和插件不能安装到同一目录,如果使用官方一键安装可自动避免。
  • 官方一键安装脚本安装 JDK 较慢,可自行安装配置 JDK 环境。
  • 如果使用 docker 方式部署 Jpom,在构建项目时无法使用本地构建,推荐使用官方一键安装,可避免此问题。
  • SSH 使用报错,解决办法可参考「web socket 错误,请检查是否开启 ws 代理」。
  • Jpom 可能会占用过大的内存,可通过修改 /usr/local/jpom-server/bin/Server.sh/usr/local/jpom-agent/bin/Agent.shXmsXmx 大小。
  • 无需编译的前端项目构建命令,例如我有一个 docsify 项目,直接编写 markdown,那么构建命令可以参考 mkdir dist && cp * dist

新冠肺炎症状记录

照顾阳了的女朋友,在她第四天的时候我终于求阳得阳了,记录一下自己新冠的症状。

第一天

晚上有点咳嗽,感觉是有征兆了,赶紧把碗洗了,垃圾扔了。

第二天

起床后嗓子痒,咳嗽,但不严重,身上有点酸疼,分不清是没睡好还是阳了,脑子也感觉有点糊涂,注意力无法集中,只觉得恍惚。

上午测体温 37.4,下午就 38.6 了,吃了布洛芬就睡了,睡着了感觉还行,睡醒还吃了根香蕉,平时都不喜欢吃水果的。

一直到晚上,中间睡了好几觉,每次都出汗,最后一次睡醒之后坐着还是不停出汗,体温也降到了 37.8,身体感觉冷热交替,精神已经好多了,甚至都觉得已经好了。

第三天

头天晚上没吃药,一晚上没怎么睡好,各种做梦难受。早上测了下又发烧了,吃完饭又赶紧吃了布洛芬,下午好多了。

晚上嗓子开始疼了,嗓子疼是真难受,尤其是还要咳痰。怕晚上睡不好,睡觉前又吃了一颗布洛芬。

第四天

昨晚睡觉好多了,但是嗓子越来越难受,感觉火辣辣的,咳痰的时候憋的双眼通红。

吃了阿莫西林,希望嗓子疼能缓解,但感觉没什么效果。下午测体温 38.9,又吃了布洛芬。

嗓子越来越疼,喝粥都难以下咽,吃腌黄瓜更是扎嗓子。中午虽然听到肚子咕咕叫,但也没什么胃口。

身体也止不住的出汗,一天至少换两件衣服。睡觉前又吃了阿莫西林。

第五天

嗓子更疼了,甚至轻轻摸脖子的位置也能感觉到疼,咳出来大黄的鼻涕。

喝小米粥的时候感觉米粒都喇嗓子,实在太疼了,研究了一下哪些药可以止痛。参考了 TK 教主的文章「“退烧药”也可以治嗓子疼吗?」,由于布洛芬和阿莫西林不起作用,就买了「洛索洛芬钠片」准备试下。

吃了洛索洛芬感觉嗓子轻松了一些,不过很快就开始咳嗽了。晚上吃了第二片洛索洛芬感觉作用不是很大。

第六天

一觉醒来嗓子又很难受,可能是没怎么喝水。喝粥都感觉粘在了嗓子眼,得把米粒咳出来。

继续吃洛索洛芬,中午感觉好了很多,还吃了生菜和鸭肉。

下午睡了一觉,醒来感觉喘不过气,原来是鼻子堵了。嗓子好多了,没什么胃口,又吃了一粒洛索洛芬。

第七天

嗓子基本不疼了,开始有点痒,感觉洛索洛芬对我是有用的。

没什么精力,差不多睡了一天,鼻子很堵。

第八天

开始腰疼,咳嗽,但是没什么痰,想咳又咳不出来的难受,咳的严重的时候腰都觉得疼。

吃饭比较正常了,虽然饭量还没恢复到正常水平。

七八天没洗头了,头油的能炒一盘菜了,实在受不了了,趁着感觉状态好点了,洗了个头。

有点拉肚子。

第九天

还有点拉肚子,不过也不严重。

主要就是咳嗽,吃饭也算正常。

好久没洗澡了,鼓起勇气洗了个澡,真舒服。

第十天

测了一下抗原,阴了。

只剩咳嗽了。

总结

整个过程中,最开始的发烧还比较好忍受,虽然会感觉忽冷忽热,但是只要吃了退烧药,再不断出汗,基本有个两三天就退烧了。

最难受的要数嗓子疼,喝口水都疼,真的是亲身经历过才知道有多疼,而且还很难缓解。我个人感觉洛索洛芬对我是有效的,布洛芬和阿莫西林基本无效。

除了第二天晚上没睡好,其他时间睡觉都还可以。

这期间我喝水比较少,是个不好的例子,因为一开始有症状我就不觉得渴也不觉得饿,所以也想不到喝水,再加上中间嗓子疼,更不想喝水了。不过由于没有食欲,多数时间都是喝粥,也算补充水分了。

以上就是我个人感染新冠肺炎的症状记录,现在只剩下咳嗽了,估计还要持续几天,也祝大家都能早日康复!

开源数据备份工具 Duplicati

使用 Duplicati + 腾讯云 COS,完美备份我的服务器数据。

文件备份需求

我有两台腾讯云的服务器,一台部署了博客,一台部署了一些个人项目,虽说云服务器很稳定,基本不会发生丢失数据的问题,但我个人之前经历过数据丢失,俗话说一朝被蛇咬十年怕井绳,所以一直在尝试把博客和项目的数据备份到其他地方。

我自己写过一个备份文件的 Java 程序,通过 crontab 定时任务和 shell 脚本可以把文件定期备份到七牛云。但由于没有可视化界面,配置起来比较麻烦,再加上程序本身也不支持恢复数据,需要去七牛云自行下载数据,所以还是想找一个比较完善的备份工具。

备份工具的选择肯定是开源优先,除了要支持图形化界面配置,还要支持国内的对象存储,并且支持周期性备份和数据恢复。

找了一圈,最终选择了「Duplicati」这款工具,完全符合上述需求。关于存储类型这里多说一句,虽然 Duplicati 支持的国内对象存储只有「Tencent COS」也就是腾讯云的 COS,但是通过使用「S3 兼容」协议,可以支持国内大多数云厂商的对象存储。

Duplicati 使用

Duplicati 开源地址:https://github.com/duplicati/duplicati

部署

首先部署 Duplicati,我选择了 Docker Compose 方式进行部署,使用的镜像是 linuxserver/duplicati

关于 docker 和 docker compose 的安装可以参考「Docker环境搭建(CentOS篇)」。

docker-compose.yml 文件内容如下:

version: "2.1"services:  duplicati:    image: lscr.io/linuxserver/duplicati:latest    container_name: duplicati    environment:      - PUID=1000      - PGID=1000      - TZ=Asia/Shanghai      - CLI_ARGS= #optional    volumes:      - ./appdata/config:/config      - ./backups:/backups      - ./source:/source      - /opt:/opt    ports:      - 8200:8200    restart: unless-stopped

配置文件这里要额外说明一下,docker 方式部署可能会导致某些文件目录读取不到,所以需要在 volumes 节点下增加映射,例如 opt 映射,如果你也遇到文件目录读取不到的问题,参考上述配置增加 volumes 映射即可。如果需要读取 root 目录,需要把 PUID 和 PGID 改为 0,并且设置 rootvolumes 映射。

在 docker-compose.yml 文件同目录下执行 docker compose up -d 启动项目,浏览器访问 http\://:8200 或自行配置域名访问。首次进入会提示设置密码,也可以稍后在设置中进行设置。

首次访问

备份文件

Duplicati 部署好之后,我们来看下如何备份文件。

点击「新增备份」菜单,默认选择的是「配置新文件」,如果需要导入其他地方导出的任务可以选择「从文件导入」。

添加新备份

点击下一步,设置备份的名称、描述和加密方式,我这里选择了不加密。

常规备份设置

点击下一步,配置备份的保存位置,默认是备份到本地磁盘,可以点击下拉菜单选择其他选项。

备份保存位置

这里我选择「S3 兼容」,然后填写如下配置:

  • 服务器:选择自定义服务器地址,我的存储桶所属地域是北京,所以地址为 cos.ap-beijing.myqcloud.com,其他地区替换链接中的 ap-beijing 即可
  • Bucket 名称:访问「腾讯云存储桶列表」 可查看存储桶的名称
  • 文件夹路径:duplicati/photo-stream,根据个人需求填写
  • AWS 访问 ID:访问「API 密钥管理」查看 SecretId
  • AWS 访问密钥:访问「API 密钥管理」查看 SecretKey

S3 兼容

其他选项保持默认,点击测试,弹框提示调整 bucket 名称选择「否」,再次弹框显示测试成功说明配置正确。

点击下一步配置源数据,即要备份的文件或目录,这里我选择备份我的相册目录。

源数据

点击下一步,设置备份计划,我这里修改时间为晚上 23:00。

计划

点击下一步,配置远程卷大小和备份保留策略。远程卷大小可以保持默认,我这里设置了远大于需要备份的文件大小,备份保留策略选择永久保留,你也可以根据自己的需要选择合适的备份保留策略。

常规选项

点击保存,会弹框提示是否继续不启用加密,由于我最开始选择了不加密,所以这里选择继续不启用加密。

不启用加密

保存成功会后跳转到首页,会展示备份任务列表,在这里可以立即执行某个任务,或者点击下拉菜单进行更多选择和设置,例如编辑、导出、删除、查看日志等。

首页

这里我运行了一下备份任务,通过下图的日志可以看到,500M 的文件,40 秒就完成了备份,这速度相当快了。

日志

恢复文件

讲完备份再来说下如何恢复文件,一般有两种场景,一种是已备份的文件不小心删除了,需要恢复到原位置;另外一种是需要把已备份的文件下载到其他设备,Duplicati 都可以满足。

点击「恢复文件」菜单,有三种恢复方式:

  • 直接从备份文件中恢复:以我为例,就是直接通过 S3 兼容协议连接腾讯云 COS 进行文件恢复
  • 从配置中恢复:从其他设备导出的备份任务文件进行恢复
  • 已存在的备份:从本机已有的备份任务进行恢复

恢复文件

具体操作和配置选择可自行查看,这里略过。

使用感受

存储类型选择

我一开始使用的存储类型是七牛云,但是我发现每次备份 Duplicati 都会把已备份的文件下载到服务器,而七牛云的 S3 兼容方式又是付费的,也就是说频繁的周期性备份会导致较高的费用。

经过搜索,我发现腾讯云会给 COS 老用户永久的免费额度,于是就改为使用腾讯云 COS。如果你也是腾讯云客户,可以访问「免费额度资源包」查看是否有免费额度。

免费额度资源包

起初我是选择了「Tencent COS」进行配置,但是发现 Duplicati 的内存占用居高不下,甚至会导致服务崩溃,由于之前使用七牛云的 S3 兼容协议时并未发现此问题,所以我尝试使用 S3 兼容协议配置腾讯云 COS,果然内存占用过高的问题不存在了。

由于我的服务器也是腾讯云,而且跟 COS 是同一地区,这就使得备份走的是内网,也就是说除非我把文件恢复到我的电脑或其他地方,否则是不消耗外网下行流量额度。唯一的限制是存储容量,但是 50G 的免费额度也足够了。

可以按照你自己的服务器厂商选择对应的对象存储,理论上同一家服务器和对象存储之间应该都是支持内网传输的,而且大部分的国内云服务器厂商的对象存储也支持 S3 兼容协议,这样就可以省下不少外网下行流量额度或费用。

备份流程

Duplicati 备份会把文件打包压缩上传,并且在同目录生成对应的配置文件。

文件结构

后面的每次备份都会把文件下载到本地,然后再进行比对,前面也说到了,这部分是可能产生费用的,需要考虑对象存储和备份的频率的选择。

优点

  • 项目开源免费
  • 可以自己部署
  • 占用资源少
  • 界面简洁
  • 操作简单

注意事项

  • docker 方式部署可能看不到部分文件夹,给对应目录配置 volumes 映射即可
  • 存储类型选择 Tencent COS 会导致内存占用过高,建议修改为 S3 兼容协议
  • 备份会导致对象存储产生外网下行流量或费用,需要考虑选择合适的对象存储和备份频率

客户端

Duplicati 除了可以在服务器上使用,也可以在电脑端使用,访问「Duplicati Download」查看更多系统的客户端下载。

Duplicati 配合腾讯云 COS 完美解决了我的服务器文件备份需求,如果你也有文件备份的需求,可以尝试一下 Duplicati。

使用 NotionNext+Notion+Vercel 部署我的木刻网站

无需服务器即可部署网站,还可以随时修改 Notion 来改变网站内容,用来做博客或者内容网站妥妥的。

写在前面

最近看到有人推荐使用 NotionNext + Vercel 把 Notion 页面部署为网站,正好我前端时间整了一个木刻作品的 Notion 页面,就试着搞了一下。

废话不多说,先看部署好的效果,点击「掘墓人的木刻」访问即可。

掘墓人的木刻

网站的主题我选择的是「Hexo」,比较适合展示图片,在此基础上对页面样式做了微调;评论使用的是「Valine」,看起来简洁大方,配置也比较简单。

如果你也想把 Notion 页面做发布为一个网站,可以参考下面的步骤尝试一下。

NotionNext + Notion + Vercel

NotionNext 文档:https://docs.tangly1024.com

Fork NotionNext

首先 fork「NotionNext」项目。

修改项目里的 blog.config.js 配置文件,主要修改以下内容:

  • AUTHOR:作者
  • BIO:作者简介
  • LINK:网站地址
  • KEYWORDS:网站关键词 英文逗号隔开
  • NOTION_PAGE_ID:Notion 页面的 ID,下一步骤会提到如何获取

其他配置可以根据自己的需要进行修改,配置文件中有注释说明。

Duplicate Notion page

然后复制「NOTION BLOG」这个 Notion 页面。

notion 模板

记得打开页面「Share to web」,点击「Copy web link」复制页面的链接,其中域名和问号之间的内容就是上一步骤提到的 NOTION_PAGE_ID。

https://www.notion.so/02ab3b8678004aa69e9e415905ef32a5?v=b7eb215720224ca5827bfaa5ef82cf2d 为例,NOTION_PAGE_ID 就是 02ab3b8678004aa69e9e415905ef32a5

Vercel 部署

不了解 Vercel 的可以访问我上一篇文章「使用 Vercel 快速部署前端项目」。

大致说下操作步骤:

  • 访问 https://vercel.com
  • Add New Project:添加一个新项目
  • Import Git Repository:导入步骤一中 fork 的项目
  • Deploy:点击部署按钮

两分钟左右即可部署完成,再配置一下自定义域名,整个部署就完成了。

接下来只需要参考 Notion 模板里原有的数据进行内容的编辑就可以了。

关于木刻

了解我的人应该知道我一直对木工很感兴趣,之前做过置物架,搬家之后还把置物架改造了,改造的同时还做了手机支架

不过毕竟是在小区里租的房子,使用的工具有限,而且很可能会因为噪音过大被邻居投诉,所以我就转向了木刻。木刻需要的空间小、可选的工具多、噪音还小,不过就是有点「费手」。

这个木刻网站就是我的木刻作品展示,算不上刻的有多好,但是我个人很喜欢。图片只是记录下作品完成时的样子,主要还是享受雕刻的过程,以及把一块木头变成一件作品的成就感。

这其中我最满意的作品是鲸鱼(相思木)和簪子(白酸枝)。

鲸鱼

簪子

后面会把木刻的工具和更多的作品发布到木刻网站,感兴趣的可以看下,也欢迎沟通交流。

使用 Vercel 快速部署前端项目

Vercel:一键部署前端项目。

前端项目部署的问题

先来说下前端项目的部署,一般来说有以下几个步骤:

  • 项目打包
  • 上传到服务器
  • 域名解析
  • SSL 证书申请
  • Nginx 配置
  • CDN 加速

如果是公司的项目,打包之后的步骤一般有专门的运维人员负责,对前端开发者来说并没有什么负担。

但如果是个人的项目,那不仅要有服务器,还要会申请 SSL、配置 Nginx 和 CDN 加速,学习成本很高。而且即使配置好了,后面每次修改代码之后都要重新打包并上传到服务器,很麻烦。

那么,有没有简单一点的办法,能快速部署前端项目,并且能简化一系列的配置问题?

Vercel

这就不得不提到这次的主角:Vercel

Vercel 支持 30 多种前端框架,开发者可以快速部署自己的项目,同时支持自定义域名、代码提交触发部署。把复杂部署和配置等工作交给 Vercel 处理,开发者就能把精力放在代码和功能开发上。

Vercel 的使用还是很简单的,主要分为下面几个步骤:

  • 注册/登录
  • 部署项目
  • 自定义域名

做好下面的准备工作,教程就正式开始了。

  • GitHub/GitLab/Bitbucket 账号
  • 前端项目(上传到上面的 Git 仓库)
  • 域名

注册/登录

访问「Vercel Sign Up」进行注册。

注册

这里我以 GitHub 为例,点击上图中的「Continue to Dashboard」按钮,在弹出窗口里登录 GitHub 账号并进行授权,授权后可能需要输入手机号并进行短信验证码验证,验证之后即注册成功,如下图所示。

注册成功

部署项目

我的 GitHub 账号准备了一个项目,是我从「md」fork 过来的,md 是一款高度简洁的微信 Markdown 编辑器,我的公众号文章都是用它来排版,你也可以 fork 此项目在 Vercel 上进行部署。

这里还是以 GitHub 为例,点击上图中的「Continue with GitHub」,会弹出安装 Vercel 的授权窗口,可以选择所有仓库或者指定的仓库。

Install Vercel

我这里选择了所有仓库,点击「Install」按钮后会自动关闭窗口,页面就会显示 GitHub 的项目列表。

GitHub 项目列表

点击项目后的「Import」按钮,跳转到项目信息的配置界面。

配置项目

这里可以对项目的信息进行编辑:

  • 项目的名称(PROJECT NAME)
  • 框架预设(FRAMEWORK PRESET)
  • 根目录(ROOT DIRECTORY)
  • 打包和输出设置(Build and Output Settings)
  • 环境变量(Environment Variables)

需要注意的是,md 项目的文档中有提到,如果要把项目部署在根目录,需要执行 npm run build\:h5-netlify,所以要打开 BUILD COMMAND 的 OVERRIDE 按钮,把命令粘贴在前面的输入框即可覆盖默认的打包命令。

覆盖打包命令

配置好之后点击「Deploy」即可开始部署项目,等两分钟左右就可以看到部署成功的提示,然后会自动跳转到下图所示的页面。

部署成功

点击「Continue to Dashboard」按钮,跳转到下图页面。本来点击「Visit」或者 DOMAINS 下的两个域名都可以访问部署好的项目页面,但是目前 vercel.app 域名在国内访问不了,所以就需要进入到下一步配置自定义域名。

跳转到访问地址

自定义域名

依次点击 Settings-->Domains,在输入框中输入你的域名并点击 Add 按钮。

添加域名

这里我以我自己的域名为例,输入 markdown.juemuren4449.com。不用管页面给出的提示,直接去域名解析的地方配置 NS 解析,具体配置参考下图。

配置 NS 解析

该配置就是将 markdown.juemuren4449.com 域名通过 NS 方式解析到 ns1.vercel-dns.com。再添加一条解析,其他信息与上图一致,记录值改为 ns2.vercel-dns.com

配置后返回 Vercel,页面显示域名已配置好,正在生成 SSL 证书(Generating SSL Certificate)。

生成 SSL 证书

等 SSL 证书生成之后就可以使用自定义域名「https://markdown.juemuren4449.com」进行访问了(说明:此项目用 Safari 访问有问题,使用 Chrome 或者 Edge 访问即可)。

访问自定义域名

提交代码触发部署

通过上面的配置和部署应可以看出 Vercel 的方便快捷了,而接下来就是 Vercel 的另一个大招,提交代码之后自动触发部署。

在本地编辑刚才的项目代码,把右上角的「发布」按钮删除,然后提交代码。稍等几秒钟,Vercel 的 Deployments 页面就开始自动部署了,部署完之后还会给你的邮箱发送邮件通知。

提交代码触发部署

再次访问 https://markdown.juemuren4449.com,右上角已经没有了发布按钮

删除发布按钮

如果是自己做一些小项目,再也不用每次修改代码之后还要打包上传到服务器了,只需要把代码提交到仓库,Vercel 会自动触发部署,部署完成之后再通知你,这体验真的是无比丝滑。

总结

从前面的的部署步骤看,使用 Vercel 部署项目有以下优点:

  • 提供免费的静态服务器
  • 快速导入项目并一键部署
  • 自动生成 SSL 证书
  • 提交代码自动触发部署

而且,Vercel 提供的免费的套餐足够个人使用(不同套餐包含内容可以访问「Plan Compare」查看),配合自定义域名在国内的访问速度也不错。

只是简单的点击几个按钮,就可以把项目导入并部署,再配合自定义域名,即可实现项目的访问。整个过程对于常规的项目部署来说要简单太多,极大的降低了开发者部署项目的难度,使开发者能把更多的精力放在代码和功能的开发上。

不过,Vercel 毕竟是国外的服务,访问存在不确定性,所以拿来部署一下个人的项目还可以,公司的项目就不要考虑了。

与 Vercel 同类型的服务还有「Netlify」,感兴趣的可以自行了解。

企业共享办公好助手:可道云 kodbox

企业共享办公,kodbox 可能是个不错的选择。

一、产品介绍

1、kodbox 简介

kodbox 是「可道云」公司的产品,其实在 kodbox 之前他们家很早就推出了 kodexplorer,kodbox 是在 kodexplorer 的基础上进行了系统重构的全新产品,更多关于两款产品的区别可以查看「可道云旗下 kodbox 与 kodexplorer 有什么不同」,这里就不赘述了。

kodbox 有着如 Windows 般的操作体验,不仅支持私有化部署,还支持数百种文件格式在线预览和编辑,可以通过全平台客户端轻松访问,也可以随时分享,高效协作。

kodbox 是可以免费使用的,免费版虽然最多支持 10 个用户,但是基础的功能都有,小团体或者个人使用也是完全足够的,不同版本的功能区别可以参考下图或访问「价格与服务」查看。

价格对比

2、部署

首先我们需要一个环境才能实际体验,有两个选择,没有部署能力的可以选择官网的 demo 环境进行体验,访问「体验 DEMO」即可体验,账号密码都是 demo。

有部署能力的小伙伴可以考虑自己部署,然后再进行体验。官方的部署文档,除了 Linux、Windows,甚至还有群晖和爱快等系统的部署步骤,访问「安装」查看即可。

部署文档

3、界面介绍

有了环境,接下来我们就可以实际体验了,首先是界面的介绍。

怎么算有着 Windows 般的体验呢?看下面这张图,你是不是以为这是电脑的桌面截图?

桌面

其实这并不是电脑桌面截图,而是 kodbox 的桌面截图。没错,kodbox 的桌面不仅长得跟 Windows 的桌面很像,操作逻辑也类似。双击 kodbox 桌面的软件图标可以以窗口的方式打开,同时会在下面任务栏显示已打开的软件,甚至可以打开多个软件/窗口。

窗口及任务栏

接着再说下文件管理/我的电脑界面,打开后看着跟 Windows 的资源管理器看起来也很像。左侧是导航,上方是目录和菜单按钮,中间的部分是文件列表,右侧是目录或文件的属性信息。

文件管理

这种 Windows 般的操作体验,即使是第一次使用的人也能轻松上手,完全没难度。需要注意的是,默认登录后进入的是「文件管理」,需要管理员去设置里修改为桌面,用户默认登录后才会进入到桌面。

修改设置

4、功能介绍

网盘

kodbox 最基础的功能就是网盘,而且做了「个人空间」和「企业网盘」的区分。同时还可以根据文件类型和标签等进行快速筛选和查看。

个人空间和企业网盘

作为网盘,最基本的上传下载体验如何呢?我的感受是:很方便。

先说上传,上传支持以下几种方式:

  • 上传按钮:在文件管理中找到上传按钮,点击即可选择本地文件进行上传

  • 离线下载:可以通过文件的网址进行上传

  • 拖拽上传:从本地或网页拖拽文件到文件管理器即可完成上传

  • 复制粘贴上传:通过快捷键 Ctrl + C 复制文件,在文件管理中 Ctrl + V 即可完成上传

再来说下载,支持以下的方式进行文件下载:

  • 下载按钮:点击菜单栏的下载按钮或者鼠标右键打开菜单找到下载按钮

  • 拖拽下载:直接拖拽文件到电脑即可完成下载,如果选中多个文件会自动打包下载

在体验了 kodbox 的拖拽上传和下载之后,会给人一种浑然一体的感觉,就好像是在电脑本地进行文件的拖拽复制。

除此之外,kodbox 还支持数百种文件格式在线预览、编辑和播放,例如图片、视频等场景多媒体、Office 文档、甚至是 CAD 、epub 电子书都可以轻松在线查看。

PS:在线编辑文档需要购买企业版。

针对单个文件,kodbox 还提供了历史版本的功能,可以针对当前文件上传新的版本,同时保留历史版本,方便查看和回溯。

历史版本

权限管理

kodbox 的另一个特色功能就权限管理。

管理员在给员工创建账号的时候,可以设置账号的角色和操作权限,极大保证了文件的安全性。

创建账号

也可以在文件夹上右键,设置文件夹的权限。

公共文件夹设置可查看权限

如果需要协作,也可以将目录分享给其他部门或人员。

协作分享

如果需要把文件分享给企业外部人员,可以选择外链分享,支持设置密码、到期时间等功能。

外链分享

安全管控

除了上述的权限管理,还可以通过安全管控查询用户的登录或操作日志,无论是安全预防还是出现安全事故后的溯源都是有利的工具。

操作日志

插件

插件也是 kodbox 的特色功能,除了常见的文档、图片、视频相关插件,还有短信、代码、认证登录等插件。

插件中心

轻应用

轻应用在我看来其实就是网页书签,除了系统自带的常见网站,还可以自己添加,并且可以设置以对话框方式打开,感觉像是 kodbox 的一部分,体验还不错。

轻应用

客户端

kodbox 支持全平台客户端,但是在我看来,使用网页端的体验是最好的,尤其是在手机上访问,使用手机浏览器访问的体验居然出奇的好。

客户端

当然除了以上提到的功能,kodbox 还有以下的特色功能:

  • 支持多达 14 种存储类型
  • 支持备份策略和快速恢复
  • 支持 WebDAV 挂载

我在家里的台式机上部署了 kodbox,并且设置了开机启动,这样就可以随时备份或者查看文件,而且通过手机 App 还可以自动备份相册,很方便。

二、场景举例

这部分我们按照团队使用 kodbox 过程中可能出现的场景进行模拟和配置。

1、部门文件夹

跟根据不同的部门创建同名文件夹,设置只有部门内的员工可以进行文件的访问和上传,实现不同部门资料的访问隔离。

首先,我们在系统设置里先创建「设计部门」和「运营部门」两个子部门。

创建部门

然后在企业网盘中创建对应的「设计部门」和「运营部门」两个子文件夹,分别设置权限为各自部门拥有编辑权限。

创建文件夹并设置权限

再次回到系统设置里,在设计部门和运营部门下分别创建账号张三和李四。

新建用户

这样,张三就可以访问设计部门的文件夹,李四就可以访问运营部门的文件夹了,并且无法看到其他部门的文件夹。

设置部门文件夹可以保证各部门能且只能维护自己部门的文件,保证文件安全的同时也避免了显示过多的不相关文件。

2、协作分享

协作分享是怎么一回事呢?我们可以设想这样一个场景,运营部门要搞一个促销活动,需要设计部门配合设计一些海报素材,相关的活动背景和规则说明已经上传到「运营部门」文件夹下的「促销活动」文件夹了。

在这种情况下,设计部门的同事默认是访问不了运营部门的文件夹的,如果给设计部门的同事授权运营部门文件夹的访问权限又不合理,因为活动是有时效性的,设计部门只需要在活动结束前拥有促销活动文件夹的访问权限就可以了;如果单独把文件给到设计部门的话又比较低效,他们还要再次上传到设计部门文件夹才可以给部门内同事共享。

这个时候可以把促销活动的文件夹设置为协作分享,添加设计部门或者负责设计的同事即可。

协作分享

设计同事通过文件管理左侧的「与我协作」即可找到刚才设置协作分享的促销活动文件夹。

与我协作

设计同时也可以把设计好的素材以协作分享的形式与运营同事进行分享,便于运营同事访问下载素材。

3、外链分享

外链分享比较好理解,例如一个文件,需要给到客户进行审核或查看,就可以通过外部分享功能实现。

具体的操作是在文件管理中选中要分享的文件或目录,点击菜单栏的「外链分享」或者鼠标右键菜单选择「外链分享」即可打开外链分享,同时可以对外链分享进行更进一步的设置,例如设置提取密码、到期时间、禁用下载等。

外链分享

文件分享多了如何确保安全或者进行管理呢?除了在分享的时候设置到期时间,还可以通过文件管理左侧的「外链分享」导航菜单对所有分享的文件进行查看,同时可以批量取消外链分享的文件。

外链分享管理

4、在线预览

kodbox 支持文件在线预览,即无需下载即可在线预览文件的内容。

除了常见的图片、音乐和视频等多媒体格式,也支持 Office、PDF 等文档格式,还支持流程图、CAD、3D 模型、PSD、epub 等格式在线预览。

在线预览

更令人想不到的是,kodbox 居然支持压缩文件(zip、rar、7z、rar、tar、tar.gz)的在线预览。当你不确定一个压缩文件是否是你需要的,可以在线预览压缩包内的文件,再决定是否下载。

在线预览压缩文件

5、文档协作编辑

同一个文档可以由多人同时进行在线编辑,同时可以对文档的内容进行选中和评论,且支持留言的回复、删除和解决操作。

文档协作编辑

三、总结

总结一下,kodbox 有着极易上手的 Windows 操作体验,并且支持数百种文件格式在线预览和编辑,可以通过全平台客户端轻松访问,也可以随时分享,高效协作,并且可以私有化部署。

完善的网盘功能让资料能井井有条,历史版本让版本有迹可循,在线预览无需下载即可查看;灵活的权限控制既保证了资料的安全,同时又可以将指定的文件进行分享和协作;详细的安全管控可以查看每个用户的操作痕迹,给安全再上一把锁;丰富的插件让文档和多媒体的体验更上一层楼;全平台可访问让移动和远程办公更加轻松。

无论是创业团队还是中大型企业,kodbox 都是共享办公不错的选择,感兴趣可以访问「可道云官网」进行了解。

新玩意|一加 Ace Pro

  • 渠道:苏宁易购天猫旗舰店
  • 价格:3713 元

决定换手机是因为我的三星 S20+ 屏幕会时不时白屏,严重影响使用,而且玻璃后盖也有缝隙了,粘了两次还是会开胶。本来还想再撑一撑,等到有合适的手机再换的,但是当时的情况已经不允许我继续等下去了。

在下半年发布的骁龙 8+ 处理器手机里,有小米 12S Pro、realme GT2、vivo iQOO 10 Pro、一加 Ace Pro 等机型可选,综合考虑之后我选择了一加 Ace Pro,一方面是之前用过一加 6T,对一加这个品牌有好感,另一方面是性价比高。

我入手的是 16+256 版本,之前用的三星是 12+128 的,存储空间不够用,基本上只能剩下 5G 左右的空间,所以这次存储选了 256G,应该够用了。

在外观设计上,一加 Ace Pro 基本沿用了一加 10 Pro 的设计,摄像头虽然没有了哈苏联名,但是跟玻璃后盖做成了一体化。我这台是黑森配色,后盖是竖纹磨砂质感,不粘指纹,官方还有一款青雾配色,类似于青釉的感觉,但是亮面特别容易沾指纹。

黑森

一加 Ace Pro 主打性能标杆,在散热和游戏方面都有了极大提升,我虽然不玩游戏,但女朋友会玩原神,整体体验下来确实比较流程,而且发热控制的也比较好。

原神

使用原装 150W 充电套装充电是真的快,大约 20 分钟就能充满,评价晒图还送了一个 65W 的充电套装,充满电也只需要半小时左右。

150W充电

刚从三星换到一加还是很不适应的,一方面是手机尺寸和重量都有增加,拿在手上能明显感觉到增加了分量,这么说吧,S20+ 戴了手机壳也比一加 Ace Pro 要轻薄;另一方面是系统和交互,感觉 ColorOS 在某些方面还不如 OneUI 做的好。不过换机总是有这样或者那样的不习惯,多用几天就慢慢适应了。

ColorOS 也有让我印象深刻的地方,一个是息屏可以设置人像绘影,一个是图标下沉。

息屏设置人像绘影其实就是识别照片中人物的轮廓,可以跟时间等信息显示在息屏状态下。

息屏

图标下沉是在桌面时,从屏幕的左侧或者右侧向上滑动,即可触发图标下沉,滑动到应用图标上松手,即可打开应用,便于单手操作。

图标下沉

要说一加 Ace Pro 不足之处,那就是塑料中框、摄像头和指纹识别了。如果不带手机壳,塑料中框看起来确实要廉价一些;拍照感觉也不如三星 S20+;指纹识别过于靠下。但是毕竟价格在那,不可避免地要做取舍,在某些方面节约成本。

总体来说,我个人对一加 Ace Pro 还是比较满意的,充电快、性能好,虽然也有一些节约成本的地方,但整体的性价比还是很高的。

使用 Photo Stream 部署相册

很早就想部署一个相册网站,把喜欢的照片放在一起。

相册网站

照片

自从开始用手机,尤其是智能手机,就在不断地拍照,记录生活。其中有些照片自我感觉拍的还不错,就想搭建一个属于自己的相册网站集中展示。

当然除了自我感觉拍的还可以,这些照片还代表了我在不同时间和空间的所见所闻,是我回忆的组成部分,如果能有一个专属的地方可以保存起来,就可以时不时回忆一下。

需求

其实关于这个相册网站,我的需求也比较简单:网站主页展示相册列表,点击照片即可查看大图。

不需要太复杂的功能和样式,简洁美观、能够突出照片本身即可。

搜索

我在 GitHub 上找到了几个开源的相册网站:

按照我对相册网站的要求,我最终选择了「Photo Stream」。

Photo Stream

部署文档参考:Photo Stream: how-to-install

我使用了 docker 进行部署,如果未安装 docker 可以参考我之前的文章「Docker环境搭建(CentOS篇)」安装 docker 环境。

截止本文发出时,Photo Stream 最新版为 1.4.2,如后续有版本更新,配置文件以官方下载地址为准。

下载 docker-compose.yml

官方下载地址:docker-compose.yml

备用下载地址:docker-compose.yml

文件下载后上传到服务器,我是放在了 /opt/photo-stream 目录下。

下载 .env 配置文件

官方下载地址:.env

备用下载地址:.env

配置文件下载后,修改文件内容,这里贴一下我修改后的内容:

TITLE=掘墓人的相册EMAIL=dev@juemuren4449.comAUTHOR_NAME=掘墓人AUTHOR_EMAIL=dev@juemuren4449.comAUTHOR_WEBSITE=https://p.juemuren4449.comDESCRIPTION=掘墓人的相册BASEURL=# URL must end with / or links will be brokenURL=https://p.juemuren4449.com/SHOW_OFFICIAL_GITHUB=0ALLOW_ORDER_SORT_CHANGE=1ALLOW_ORIGINAL_DOWNLOAD=1ALLOW_INDEXING=0ALLOW_IMAGE_SHARING=0PHOTO_PATH=./photos# leave the following blank to disableTWITTER_USERNAME=GITHUB_USERNAME=INSTAGRAM_USERNAME=CUSTOM_LINK_NAME=CUSTOM_LINK_URL=SYNCUSER=SYNCPASS=SYNCSERVER=SYNCFOLDER=

部分配置项说明:

  • SHOW_OFFICIAL_GITHUB:是否显示官方 GitHub 地址,0 是禁止,1 是允许
  • ALLOW_ORDER_SORT_CHANGE:是否允许改变照片的排序,0 是禁止,1 是允许
  • ALLOW_ORIGINAL_DOWNLOAD:是否允许下载原图,0 是禁止,1 是允许

配置文件修改好之后,上传到服务器 /opt/photo-stream 目录下。

启动

进入到 /opt/photo-stream 目录,如果安装的 docker-compos 是 V2 版本,那么执行:

docker compose up -d

如果 docker-compos 是 V1 版本,那么执行:

docker-compose up -d

如果提示 docker-compose: 未找到命令 则按照下面的命令安装 docker-compose 即可。

 yum install docker-compose-plugin

命令执行完之后会在 /opt/photo-stream 下创建 photos 目录。

上传照片

进入 /opt/photo-stream/photos 目录,将照片上传到此处。

访问配置

Nginx 设置代理和 SSL 证书申请和配置略过。

修改 favicon

首先准备好 favicon.png,复制一份改名为 favicon.svg。

然后查询容器的 id:

docker ps

我查询到的容器 id 为 b12453ddf3ce

最后复制文件:

docker cp favicon.png b12453ddf3ce:/photo-streamdocker cp favicon.svg b12453ddf3ce:/photo-stream

我的相册

网站链接:https://p.juemuren4449.com

掘墓人的相册

我挑选照片的原则是好看,只要好看,不论拍的是树叶还是丹顶鹤,都可以进到这个相册里。

几乎所有的照片都是我拍摄的,极少数是我女朋友拍摄的,而且基本都是原图直出,极个别在拍摄之后调整过色调。

截止到本文发出时,我的相册已经有了 158 张照片,最早的照片可以追溯到大学时期。

Photo Stream 优缺点

我使用 Photo Stream 有两个多月了,整体来说还是很满意的,虽然有一点点小问题,但无伤大雅。

  • 优点
    • 简洁
    • 美观
    • 带 RSS 订阅
  • 缺点
    • 上传图片略微有点麻烦
    • 首次加载的时候页面布局会跳动

我上传照片的工具:

  • 手机:Solid Explorer
  • 电脑:FileZilla 或 FinalShell

个人感想

  • 现在的手机比起以前的卡片相机毫不逊色,甚至更胜一筹。
  • 不敢说自己拍的照片有多好,但每一张都记录了所见所闻,都是记忆的一部分。
  • 对普通人来说,无需考虑各种参数的设置,只需拿起手机按下快门,大量的计算和优化便在手机内完成了。
  • 一张照片拍的好,是景色、光线、角度和设备的组合,人在其中的作用便是将这些元素进行组合,然后按下快门。

新玩意|罗技 MX Master 3 鼠标

  • 渠道:京东
  • 价格:463 元

在买罗技这款鼠标之前,用的一直是雷蛇的有线鼠标,中间坏了两次,还好是从京东自营买的,都给免费更换了,第二次更换由于原款鼠标没货,还换了一个更好一点的。所以这次购买鼠标自然也是选择京东自营,毕竟京东的售后好,用过的人都知道。

我购买的是灰色的版本,刚拿到手的时候发现鼠标的左右按键高度不一样,就申请了换货,可是换货后的还是一高一低,不过好在比之前的那个好一点,也不影响使用,就没再换了。左图是第一次收到的鼠标,右键要比左键低很多,右图是换货后的,高度差没那么明显了。

左右按键高度不一样

后来有个朋友也买了这款鼠标,也是左右键高度不一样,而且滚轮声音还特别大,看来罗技的品控还有很大的提升空间。

这款鼠标最吸引我的两个点:造型和滚轮。

造型比普通鼠标更好看,并且手在自然状态下的形状刚好可以把鼠标塞进去,不过我的小拇指会接触到鼠标垫,如果能像大拇指的区域一样增加一个侧翼就更好了。

由于鼠标的造型与普通鼠标不同,刚到手的时候还需要适应一下。以前都是手腕放在桌边操作鼠标,换了 Master 3 之后,这种操作方式相当难受,感觉鼠标难移动,操作也不精准。后来尝试把小臂一多半放到桌子上,很大程度上缓解了操作的不适感。

握持

这款鼠标的滚轮「MagSpeed 电磁滚轮」也是它的一大卖点,有段落模式和疾速滚动两种模式可选。段落模式下需要持续滚动才可以带动滚轮,会有明显的段落感;而疾速模式下,滚轮极度丝滑,滚动毫不费力。

两种模式各有优缺点,段落模式下可以更好地控制滚轮,但是滚动会有声音;疾速模式下可以轻松滚动滑轮,但是会明显感觉到滑动停止的时候会有回弹。不知道是不是没有习惯所谓的电磁滚轮,反正现在都是用段落模式,虽然会有点声音,但至少滚动的时候不会回弹。

这款鼠标可以连接三台设备,通过底部的切换按钮可以切换设备。我的 ThinkPad 同时连接鼠标和蓝牙音箱的时候,音箱经常会出现卡顿的现象,不知道是电脑蓝牙问题还是鼠标问题,后来用优联模式连接鼠标就没问题了。

除了造型和滚轮比较有特色,Master 3 还支持 Logitech Flow 功能。

只需将光标移至屏幕边缘即可切换至另一台电脑。还可以轻松在电脑之间传送文本、图像或文件 - 只需在一台电脑上复制然后粘贴至另一台即可。

Flow

想要了解更多关于 Logitech Flow 的功能,可以访问「什么是 Logitech Flow,如何设置和排除故障?」。除了 Flow 功能,Master 3 还可以通过软件进行按键和滚轮的自定义设置,提高使用的效率。

充电口是 Type-C 的,而且位置在鼠标的前面,充电的时候也不影响使用,这一点也算是加分项。

有“线”鼠标

2021 年终总结

再晚两三个月就不是去年的年终总结,而是今年的年中总结了。

一年时间很快就过去了,再一眨眼,小半年又过去了,小时候总是嫌时间过得慢,长大了却感叹时光匆匆不等人。

我准备从下面几个方面来对去年做一个回顾总结:

  • 生活
  • 工作
  • 学习
  • 写作

生活

做饭

我本身是一个比较宅的人,再加上工作基本都是远程,更是雪上加霜,一周下来都不怎么出门。长期待在家中,自然要想办法解决吃饭问题,过去的一年,我做了很多饭菜,自我感觉厨艺稍有长进,具体的就不展开说了,详情可以阅读「我用66张照片记录过去一年做过的饭菜」。

个人感觉自己做饭肯定是比较省的,点个外卖二三十,就能买好几顿的菜了。还有一个观察:我习惯通过外卖买菜,从最开始的盒马,到现在的朴朴和美团,随着卖菜平台的逐渐稳定,再加上疫情的影响,菜价整体呈上涨趋势,例如番茄,最早三块钱一斤,现在要五六块。

游玩

上面也说了,我本身就比较宅,很少出去,更别说出去游玩了,所以广州当地有什么好玩的地方我不太清楚,之前在北京工作的时候也就去过天安门故宫,其他也没去过什么地方。

去年中秋的时候,重庆的朋友来我这边玩,我基本没怎么做攻略,一方面是我对广州也不太熟,另一方面是我觉得跟朋友好久不见了,能坐一起吃吃饭聊聊天就可以了。但事实证明我欠考虑了,多亏了女朋友救场,让本来的毫无安排变得相对井井有条。

不管是谁来做客,作为东道主要安排好游玩和吃饭,毕竟人家远道而来,如果没有留下什么回忆,岂不是太可惜了?以后再有谁来广州,我肯定会用心安排。

购物

过去一年,买了不少东西,按类目分一下。

  • 数码相关
    • 罗技 Master3 鼠标
    • Keychron K8 机械键盘
    • 希捷 5T 移动硬盘
    • 海备思手机支架
    • 水凝膜

其中键盘、手机支架和水凝膜是让我比较满意的,鼠标说实话比我的预期要差一些,硬盘就是拿来备份数据的。

  • 生活相关
    • Yeelight 人体感应灯
    • 海氏 K3 空气炸锅烤箱
    • 卡式炉
    • 磨刀石

人体感应灯晚上的时候还是挺有用的,烤箱可以解锁很多食材的新吃法,卡式炉解决了公寓没有燃气的问题。磨刀石,对,没看错,我因为 Bilibili 的一个磨刀视频就买了,个人感觉磨出的刀效果还不错。

工作

找工作

五一之后跟上家公司提了离职,其实公司就我们两个人,跟老板也比较熟,一方面公司的发展方向与我个人的设想有很大偏差,另一方面拖欠了几个月的工资,所以思考很久之后还是提出了离职。

找新的工作整整花了两个月的时间,在第二个月的时候我的心态是有点崩溃的,还好在这期间女朋友的鼓励让我坚持了下来。说真的,找了两个月才找到合适的工作,也让我更加确定之前的离职决定是正确的,广州相对安逸的生活和工作的不匹配让我几乎快要丧失了自己的工作技能、热情和对未来的职业规划。也让我发现了自己表达方面的不足,尤其是如何在面试的过程中将自己的工作能力展示给面试官。

还好找到了新的工作,虽然前几个月的适应期让我忙到飞起,但是那种充实的感觉让我重新找回了自我的价值,运用之前积累下来的工作技能也让我重新找回了信心。

工作环境

我跟女朋友都是在家工作,本来我们是在一张桌子上工作,但是长期下来我发现我太容易受到干扰了。所以考虑很久之后还是把办公环境分开了,女朋友在楼下,我在楼上卧室。

分开办公之后效果还是很明显的,关上门,基本不会受到什么干扰,而且也不用担心可能在卧室睡觉的问题,毕竟要保持跟同事一样的作息,总不可能困了累了就去床上睡觉吧?

学习

一年下来,学习方面比前一年有了不小的进步:

  • 读书:看完了六本书
  • 文章:平均每天至少读一篇好文
  • 粤语:已经可以听懂一部分粤语了
  • 英语:看英语新闻或者测评视频基本能理解意思
  • 大师课:看完了九个大师课,一方面增长见识,一方面也是学习英语

其实上面提到的几个学习的内容也是我每天打卡的任务,个人感触较深的一个是读书 & 文章,一个是学英语。

以前的我很少能沉下心读书,坚持打卡对我的读书习惯养成帮助很大,不仅让我能在一段时间内沉下心去完成阅读,还在这个过程中发现书或者文章中的新知识新视角。即使我可能很快就忘记了读过的内容,看过的道理,但至少在读的那一刻我的心是平和的,焦虑也暂时消失了,慢慢的就喜欢上了阅读的感觉。

关于学英语,现在的我看英文的数码电子相关视频时,搭配英文字幕,基本都能理解视频的意思。除此之外,看一些技术相关的英文文档也更加得心应手。说实话,还是挺让我自己感到惊讶的,语感这个东西还是要多听多看才行。

如果对打卡感兴趣可以看下「我的习惯养成计划:五分钟规则+打卡」这篇文章,共勉。

关于学习还有一个比较大的变化,就是笔记软件的变化。之前我都是用有道云笔记,但是后半年我基本都是在用 notion 做记录,它的 all in one 理念、强大的数据库以及页面无限嵌套都是我使用的原因,传统的笔记软件在这些方面确实毫无招架之力。

最有意思的是,我从不跟别人安利 notion,但是不止一个同事在看到我用 notion 做的笔记都问我用的是什么软件,看起来挺好的。甚至跟客户开会的时候用 notion 展示会议议程,客户也会问我用的什么软件。优秀的软件看起来就能吸引人,用起来更是效率的大提升。

写作

写作量

去年只写了 12 篇文章,而且都是前半年写的,后半年找到新工作之后基本没有时间考虑写作的事情,虽然工作不忙,也不用加班,但是一个相对比较陌生的领域,还是要花时间和精力学习和适应的,所以写作的耽误也就有了「正当理由」。

写作思考

关于写作,我从一开始对自己文章的要求是这样的:文章要完整、逻辑要清晰、行文流畅。通俗一点说就是:一篇文章要讲一个完整的事、要按照一定的思路来讲、并且语句要通顺,我想要写出一个相对「完善」的文章。

但是我发现这样会有很大的问题,一方面,一篇在我看来相对「完善」文章会消耗比较多的精力,每一段话我可能都要花不少的时间去想怎么措辞,每次想要动笔之前其实就给自己压了很大的包袱,再加上自己很容易拖延,所以就会导致文章一拖再拖,越拖越不想写,很多想写的内容也就搁置了。另一方面,我看到有一些博主写文章不会写的那么「完善」,更多的是通过叙事表达自己的所思所想所感。

所以我想了很久,对文章的要求是不是应该适当做出些改变?对自己要求放低一点,不用那么严格,只要写出了自己的所思所想,及时将有价值的内容记录下来,甚至以后有机会再将此文拿出来反思丰富,是不是也可以?

例如我买了一个新的电子产品,按我之前的习惯,会将其写成一个开箱及测评的过程,但是测评可能需要一段时间,等到那个时候,买东西的新鲜劲已经过去了,可能就不想写了。如果降低一下要求,其实可以写一个简单的展示和描述,如果还有可能,后面再写一篇更完整的使用体验。

例如这几篇新玩意系列的文章,也是有感于「少数派」的新玩意栏目。

如此一来,我可以在表达欲比较旺盛的时候尽早记录下来,而不至于一拖再拖。所以在以后的写作中,我会尝试稍微降低写作的要求,将更多想要写的内容及时写出来,在写的过程中不断积累写作的感觉,不断提升自己的写作能力。

2022 年 3 月的最后一天了,总算是把去年的年终总结写出来了,虽然还有好多内容没写出来,不过都已经过去了,着眼当下和未来就好。

历史年终总结回顾:

新玩意|Bcase 数据线磁吸收纳器

  • 渠道:拼多多
  • 价格:16.8 元

最近在帮女朋友整理电脑桌面,手机充电线放到桌上感觉不是很美观,就想着把它固定在桌子底下,这时候就需要用到数据线收纳器。

很久之前在小米有品上看见过一款收纳器,稍加搜索便找到了 Bcase 数据线磁吸收纳器,特点就是磁吸式,但是买一件不包邮,于是果断拼多多走起,最后 16.8 搞定,不仅包邮还更便宜。

我买的是胡桃木版本,说实话,打开包装看到实体的第一眼,感觉没有宣传图上的那么好看,除了有一点点毛边,还有一点偏色,不过这价格也不能太苛刻,多看一会就适应了。

外观

两个磁吸底座,一个圆形和一个长条,加上三个夹扣,可以有多种组合。

  • 圆形底座 + 夹扣
  • 长条底座 + 两个夹扣
  • 长条底座 + 三个夹扣

组合方式

因为女朋友只需要用一根手机充电线,所以只使用圆形的底座加夹扣即可满足。

使用方法也很简单:

  • 将底座背胶撕开,粘到合适的位置
  • 将夹扣打开,把数据线放到合适的位置并扣紧
  • 将夹扣吸附到底座上

这里要说明一下,三个夹扣其实分两种,其中一个底座上写着 BIG,另外两个写着 3'。3' 底座可以夹三种不同粗细的数据线,市面上绝大部分线材都可以匹配;如果你的数据线很粗,比如编织的那种线,又或者是扁线,使用 BIG 夹扣即可适配。也就是说无论你的线是粗的细的,还是圆的扁的,都可以牢牢夹住,这个设计还是很棒的。

夹扣和底座里各有一个吸铁石,磁力比我想象的还要大,吸住一根数据线完全没问题,所以即使把底座倒贴在桌子底,数据线也不会掉下去。我就选择了把底座贴到桌底的方式,只需充电的时候把数据线从桌底拿上来即可使用,收纳之后桌面也看不到数据线,隐蔽性更好,桌面也更整洁。

粘在桌底

当然你也可以选择把底座固定在桌边,显示器边缘等位置,只要自己觉得舒服、拿着方便就好。

粘贴位置

除了我选择的这款胡桃木色,还有樱桃木色可以选择,不过所谓的木色感觉就是一个木质的塑料贴纸,看上去有木质的感觉。还有黑绿蓝红亮色塑料的款式,颜色有点点刺眼,而且亮面感觉容易刮花。

上面说的两种都是磁吸式的,除此之外还有一种非磁吸式的束线器,需要手动把数据线卡在凹槽里,会稍微便宜一点。综合来说还是更推荐胡桃木或者樱桃木的款式,价格贵不了多少,看上去还更有质感,并且磁吸式收取线材都很方便。

种类

磁吸收纳器除了用来收纳数据线,还可以用来收纳钥匙,只要把底座粘到门上或者墙上,夹扣固定到钥匙圈上,回家之后就会把钥匙吸上去,奇怪的用法又增加了。

挂钥匙

我的习惯养成计划:五分钟规则+打卡

每天坚持做一件事五分钟,并通过打卡让自己养成习惯。

两分钟规则

不知道你有没有过这样的情况,想要坚持做一件事或者养成一个习惯,但却总是半途而废。别人我不知道,我自己就是这样,长期如此很是打击人的自信心的。但是去年一年我定了一些目标,基本都坚持下来了,我是依靠什么做到的呢?

2020 年底,我读到了一篇文章「Get started with 2-minute rule」,对我的影响很大。

要说这篇文章,也挺有意思的,最开始是在阮一峰老师的「科技爱好者周刊(第 132 期)」上看到的,然后去看了原文,发现文章是从一本书里总结得来的,又去看了这本书--「掌控习惯」。

文章部分截图如下:

文章截图

  • 读一本书 → 读一页
  • 写一篇文章 → 写一句话
  • 跑十公里 → 穿上跑鞋
  • 做一百个俯卧撑 → 做一个俯卧撑
  • 吃更多的蔬菜 → 吃一个苹果
  • 为面试学习 → 浏览笔记
  • 编写程序 → 写一个函数

最重要的就是把目标具体化并且使其简单易行,一旦迈过开始的阶段,也是最难的部分,就能获得动力坚持下去。

  • 阅读一页 → 阅读十页 → 完成第一章
  • 写一句话 → 写开头段 → 写正文
  • 穿上跑鞋 → 步行五分钟 → 跑步五分钟

一旦开始做,继续做下去就会比较容易,甚至在你没有注意的时候就可能已经完成了任务。

五分钟规则

我在作者的基础上改进了一下,形成了自己的「五分钟规则」。

之所以称之为「五分钟规则」,是因为我想在作者的两分钟基础上提高一点点难度,其次就是给一些不好量化的动作指定一个可量化的持续时间。

很多时候,我们制定的目标太大导致难以执行,例如读 10 本书,可能一开始还能读几天,但是很难坚持下来,因为总是想到「10 本书」这个大目标。

但是如果改为每天读 5 分钟,那么不到一个月就可以读完一本书,并且在这个过程中,慢慢就会发现,每天不止读了 5 分钟,而且也不会因为 10 本书的目标而担忧了,因为只需要完成每天的「5 分钟」就可以了,没有了压力,在阅读的过程中也开始享受阅读的乐趣。

依靠「五分钟规则」,我在 20 年 12 月读完了《一往无前》这本书,过程比我想象的要轻松,结果我很满意。

打卡

既然五分钟规则能帮我读完一本书,那么是不是还可以养成其他习惯?

其实在很早之前我就用「滴答清单」给自己设定了任务清单,例如每天编程,但是过了一段时间就坚持不下去了。

这次,我没有使用任务清单功能,而是选择了「打卡」功能。

滴答清单打卡

先解释一下打卡和任务清单的不同之处:

  • 任务:如果没完成,就没办法勾选完成,不勾选完成就会导致任务过期。即使是一次任务过期,也会产生无形的压力。
  • 打卡:与任务不同,打卡如果没有完成,就不用勾选,但是并不会显示过期,明天又是新的一项打卡任务,基本没有负担。

我给自己设定的预期是这样的,每天完成任务打卡,偶尔可能没时间或者单纯不想做,那么当天就不打卡。

设定目标

有了五分钟规则和打卡工具,接下来就是设定目标。

目标要具体,能量化的就量化,不好量化的就用五分钟这个时间长度来量化。

下面是我举出的几个正反例子:

反例正例
读书 / 读十本书读书五分钟
学英语 / 看英语书读一篇英文文章
锻炼锻炼五分钟
冥想冥想五分钟

其次,规划好什么时间完成什么打卡,例如在通勤的时候可以听音频,有座位的时候可以看书看文章,中文文章看累了可以看英文的。

根据以上设定,我制定出了以下打卡目标:

  • 刮胡子
  • 每日总结
  • 读一篇文章
  • 阅读五分钟
  • 读一篇英文文章
  • 收拾五分钟
  • 冥想五分钟
  • 学一句粤语
  • 听一段音频
  • 锻炼五分钟

效果

方法、工具和目标都有了,那么在 2021 这一年里,我打卡的效果如何呢?

刮胡子

  • 开始时间:2021.2
  • 坚持时间:334 天无间断打卡

以前我基本一周才会刮一次胡子,每次跟我妈视频她都会说我胡子拉碴的,看起来很憔悴。开始打卡后,我一般都是早上洗漱的时候刮一下,偶尔忘了晚上也会刮一下。

每天刮胡子,虽然很小的一个习惯,但刮了胡子,整个人会精神很多,可以一定程度上增强个人的自信心。

每日总结

  • 开始时间:2021.4
  • 坚持时间:258 天无间断打卡

每天我会把值得纪念的事情记录下来,并且反思一天中做的不好的地方,同时记录随手拍下的照片。每日总结都写在了 notion 里,下面是部分列表和模板样式截图。

每日总结

每日总结模板

读一篇文章

  • 开始时间:2020.1
  • 坚持时间:365 天无间断打卡

我所读的文章,一部分是群友推荐的,还有一部分是自己关注的公众号文章。说是每天读一篇,但读上瘾了会一下读好几篇。

阅读五分钟

  • 开始时间:2020.1
  • 坚持时间:365 天无间断打卡

阅读五分钟是指读书五分钟,读书和读文章我都是在 Kindle 上完成的,说是读五分钟,但是每次都不止五分钟。

一年下来读完了 6 本书,这个数量可能对很多人来说轻而易举,但对我来说还是很难得的。

书籍阅读

读一篇英文文章

  • 开始时间:2021.1
  • 坚持时间:258 天

我个人比较喜欢数码和电子产品,但国内很多数码电子的视频和文章都是搬运国外的,我就想看第一手的资料,所以设立了一个每天读一篇英文文章的目标。

最早开始看的是「TechXplore」,后来看「The Verge」,到后来直接看油管大佬「Marques Brownlee」的视频。

看了有大半年的时间,我在看英文的数码电子相关视频时,搭配英文字幕,基本都能理解视频的意思。除此之外,看一些技术相关的英文文档也更加得心应手。说实话,还是挺让我自己感到惊讶的。

学一句粤语

  • 开始时间:2021.4
  • 坚持时间:141 天

来广州一年多的时候,听粤语还迷迷糊糊的,所以我就想学一下粤语,于是跟着 B站上的「粤语会话三月通」进行学习,都是比较基础的日常交谈用语。

说是每天学一句,其实平均下来每天学了差不多两句,我还跟着视频做了笔记,其实就跟小时候学英语标记读法差不多。

粤语学习笔记

由于女朋友和她家里人都说的是「海话」,并不是粤语,所以我一直没感受到所学的粤语有用武之地,所以后来就没有坚持学下去。直到今年年初去女朋友的朋友家,听了一晚上的粤语,才发现自己已经可以听懂三分之一了,原来学习粤语是真的有用的。

锻炼五分钟

  • 开始时间:2021.1
  • 坚持时间:137 天

这是我所有打卡里坚持时间最短,且最没有成效的一个。很大程度上源自于自己嫌麻烦,简单的运动对身体机能没有明显的提升,而强度较大的运动又要铺瑜伽垫,又要洗澡,久而久之就荒废了。

不过我自己还是释然了,至少一年还坚持了一百多天,总比这一百多天都不锻炼要好吧。

总结

坚持了一年下来,刮胡子、每日总结、读书等习惯都已经无需打卡了,每天会在特定的时间点或场景下自动完成。不过,也有一些习惯未能长期坚持下来,例如健身,但整体上还是有很大的进步的。

习惯的坚持可以很大程度上增强自我的掌控力,进而增强自信心,我把这些都归功于我的「五分钟规则 + 打卡」方法。

这也让我不由得感慨,过来人的经验果然是智慧的结晶,可以让你找到一个参考,再结合自身的情况进行改进或调整,总结出适合自己的方法去提升自我。

但无论是「两分钟规则」还是「五分钟规则 + 打卡」,这些只是养成习惯的一些技巧或经验总结,并不能百分百帮你养成习惯,还是需要结合你的毅力和对自我提升的渴望才能发挥出最大的效用。

如果你也很难养成习惯,那么可以参考文中的方法尝试一下,从小的习惯做起,从最基本的动作做起,先做起来,就有可能坚持下去。坚持本身是反人性的,但利用适当的办法和工具,是可以做到的。

最后,推荐多看一些文章和书,一方面增长自己的见识,另一方面也可以从文章和书中获得一些感悟,甚至影响自己的习惯和行动。

我用66张照片记录过去一年做过的饭菜

放在很久以前,从没想过自己会每天做饭。

自己做饭

为什么决定自己做饭呢?

原因有二:

  • 来广州两年多了,基本上都是居家办公,每天至少都能省下两个小时的通勤时间。
  • 女朋友肠胃消化不太好,吃多了外面的饭菜肠胃就会不舒服。

虽然刚开始的时候也点外卖,但是既然有空闲的时间,女朋友又吃不惯外面的饭菜,何不自己动手做饭呢?

说做就做,但毕竟还是要工作的,一天三顿做下来还是有点费时费力,所以尽量控制做饭的时间,基本上半个小时到一个小时做好一顿饭。

饮食差异

我是北方人,女朋友是南方人,两个人的饮食习惯天然就不一样。我喜欢吃面,她喜欢吃米饭;我喜欢喝小米粥,她喜欢喝大米粥。这里就不提端午吃咸粽子还是甜粽子这些了,毕竟只是节日食物,不能体现日常生活。

经过不断磨合,我和女朋友日常的饮食基本是这样的:早上吃小米粥、蒸包子或地瓜等;中午和晚上米饭和面替换着吃。

不过整体上还是女朋友照顾我的饮食习惯,基本都是做我喜欢吃的菜,还有一个原因可能是我掌勺比较多吧。

做饭矛盾

两个人一起做饭可能会产生矛盾,听起来不可思议,但实际上经历过才会明白。

  • 我处理完一个菜才会把另一个菜从冰箱拿出来,女朋友是一下子把所有的菜拿出来;
  • 我做完饭习惯先吃饭再收拾,女朋友会先把厨房收拾一下再吃饭;
  • 我比较注重厨房台面的整洁,女朋友比较注重厨房地面的整洁;
  • 等等...

这些看起来不是什么大问题,但是长期下来还是会导致一些争执,我想她按我的方式做,她想让我按她的方式做,双方又都觉得自己的方式才是最好的。

在经历过几次争吵之后,我们只好约定:尽量一个人在厨房做饭,另一个人不要评价,最好是不要出现在厨房里。约定下来之后,基本没有因为做饭争吵过了。

做过的饭菜

每次做了饭菜,觉得好吃或者值得记录的都会拍下来,不知不觉已经拍了这么多。这 66 张饭菜的照片,没有刻意摆盘或摆拍,基本都是吃饭前的随手一拍。

友情提示:前方多图预警 ❗️❗️❗️

饭菜种类一句话评价图片
打卤面面食基本每天都吃,中间的是捣蒜打卤面
鸡蛋火腿炒面面食打卤面吃多了就吃炒面换下口味鸡蛋火腿炒面
豆角焖面面食出锅的时候撒一把蒜末,那味道绝了豆角焖面
油泼面面食热油一泼,小味挠一下就上来了油泼面
番茄汤面面食简单方便番茄汤面
鸡蛋焖面面食做法简单味道好,唯一缺点就是没有蔬菜鸡蛋焖面
黄瓜凉面面食夏日清爽有滋味黄瓜凉面
茄子炸酱面面食炸酱面跟打卤面味道还是不一样的茄子炸酱面
韭菜盒子面食馅是那个味,就是皮有点硬了韭菜盒子
凉拌面藕面食夏天吃很带劲凉拌面藕
酸汤水饺面食酸酸的开胃地很酸汤水饺
韭菜鸡蛋饺子面食皮是买的现成的,馅是自己调的,比速冻的可好吃太多了韭菜鸡蛋饺子
炒米粉粉类颜色差点意思,但是味道是够的炒米粉
素炒粿条粉类粿条比较细,味道跟河粉不太一样素炒粿条
素炒河粉粉类感觉鸡蛋炒的河粉比牛肉的好吃素炒河粉
萝卜干鸡蛋饼加了萝卜干,味道就不一样了萝卜干鸡蛋饼
鸡蛋煎饼加了鸡蛋,煎饼更好吃了鸡蛋煎饼
葱花鸡蛋饼加了葱花,又是不一样的味道葱花鸡蛋饼
蒜苗香干炒菜既有蒜苗的香味,又有豆干的豆香,下饭蒜苗香干
腐竹五花肉炒菜一口腐竹一口饭,下饭利器腐竹五花肉
蒜薹炒肉炒菜原来我也可以炒出这个味道蒜薹炒肉
大葱鸡蛋炒菜味道好又下饭,就是大葱有点贵大葱鸡蛋
洋葱牛肉炒菜洋葱有点多了洋葱牛肉
西红柿炒鸡蛋炒菜经典下饭菜,从小吃到大西红柿炒鸡蛋
外婆菜炒鸡蛋炒菜新晋下饭菜,直逼西红柿炒鸡蛋外婆菜炒鸡蛋
红烧豆腐炒菜嫩豆腐更入味红烧豆腐
韭黄炒鸡蛋炒菜偶尔吃一下,感受不一样韭黄炒鸡蛋
青椒鸡蛋炒菜抖音学的快手菜,很下饭青椒鸡蛋
手撕包菜炒菜火要够大才够味手撕包菜
地三鲜炒菜女朋友的拿手菜,跟外卖的地三鲜味道很接近了地三鲜
土豆丝炒菜卷饼比就米饭更好吃土豆丝
青椒炒肉炒菜当菜叶子吃了青椒炒肉
土豆蒜薹炒鸡蛋炒菜用来盖饭不错土豆蒜薹炒鸡蛋
醋溜娃娃菜炒菜酸爽可口,适合搭配小米粥醋溜娃娃菜
炒豆芽炒菜比较清单,豆芽的味道炒豆芽
青椒豆皮炒菜很难做出东北的那个味道青椒豆皮
炒菜心炒菜清淡解腻炒菜心
菜心烫菜生抽耗油加持下很香菜心
秋葵烫菜一开始接受不了秋葵黏黏的感觉,到现在习以为常秋葵
茼蒿烫菜茼蒿特有的味道茼蒿
麻辣烫烫菜不辣也不麻,加了麻酱其实就是小火锅麻辣烫
西蓝花玉米饺子鸡蛋养生真·养生套餐西蓝花玉米饺子鸡蛋
茄子炖豆角炖菜汤有点多了,味道还是很不错的茄子炖豆角
白菜豆泡炖菜豆泡吸满了汁,一个豆泡一口米饭白菜豆泡
猪肉炖粉条炖菜粉条比猪肉好吃猪肉炖粉条
炖冬瓜炖菜目前还没能做到很入味炖冬瓜
土豆茄子炖豆角炖菜炖到土豆软烂,就米饭绝了土豆茄子炖豆角
豆腐脑豆制品女朋友做的,在南方还能吃到豆腐脑,太难得了豆腐脑
不辣香锅干锅做法比我想的要简单,味道却一点不差不辣香锅
洋葱鸡蛋炒饭炒饭比单纯的鸡蛋炒饭耐吃,不腻洋葱鸡蛋炒饭
炸鸡翅煎炸卖相差点意思,但是味道还不错炸鸡翅
马鲛鱼煎炸没有鱼刺,煎着吃可太香了马鲛鱼
炸薯条煎炸口感略软,但是卖相不错炸薯条
酱香豆腐煎炸跟路边的铁板豆腐有一拼酱香豆腐
炸鸡块煎炸快赶上肯德基了炸鸡块
洋葱肉卷煎炸潮汕的肉卷,煎过之后超好吃洋葱肉卷
烤鱼烤制由于不能边吃边加热,差了点意思烤鱼
芝士烤吐司烤制女朋友很喜欢吃吐司芝士烤吐司
烧烤烤制烧烤还有啥说的,yyds,就是有点过火了烧烤
烤菜烤制有烧烤的味道,又很下饭烤菜
焖鸡蛋焖菜第一次吃的时候感觉惊为天人焖鸡蛋
油焖大虾焖菜香是真香,油盐也是真重油焖大虾
疙瘩汤跟我爸学的拿手菜疙瘩汤
紫菜蛋花汤解腻汤紫菜蛋花汤
海带鸡蛋豆腐汤味道也不错,稍微有点麻烦海带鸡蛋豆腐汤
茶叶蛋味道不比外边卖的差茶叶蛋

小时候家里不富裕,觉得能吃饱就很不错了,所以直到现在个人对饮食的要求也并不高。还因为小时候有次一下子吃了太多肉,吃伤了,导致后来对肉很抵触,现在也只能吃为数不多的几种肉,整体饮食偏素。

做饭的小心得

做了两年多的饭,头一年处在把饭菜煮熟的水平,第二年算是把饭菜做出了一些滋味,也总结了一些小的心得,大佬勿喷。

  • 大葱、小葱、蒜、香菜,调味的时候必不可少
  • 得靠生抽耗油酱油来调味,老抽主要上色
  • 小葱可以切好了放急冻,随吃随取
  • 葱姜和料酒处理肉的时候不可或缺
  • 烫菜之前加盐和油,菜会更翠绿
  • 火力大小会影响菜炒出来的味道
  • 油泼不管是面还是凉菜都好吃
  • 五花肉煸一下再炒菜会更香
  • 炒菜要后放盐,否则会出水
  • 油炸食品是真香

现在做饭已经比较熟练了,米饭蒸上,然后开始炒菜,菜炒好了米饭差不多也蒸熟了。如果是做面,基本半个小时就做好了。

饭菜的做法我一般是在抖音或者下厨房找的,对家常菜来说足够了。如果做的好吃我会把做法整理到 notion 里,方便下次查找。

一直住的都是公寓,没有明火,用电磁炉炒菜难以炒出明火的锅气,虽然后面买了一个卡式炉,但是火力还比不上电磁炉的大。自我感觉,如果有明火,我的厨艺说不定还可以再上一个台阶,哈哈。

饭菜和生活

以前在家住的时候,母亲总是说做饭不好做,那时候并不理解。现在跟女朋友在一起住,自己每天做饭,才渐渐懂了一些。即使是做两个人的饭,也要考虑做的饭菜是不是大家喜欢的;还要考虑饭菜的量是不是合适,太少吃不饱,太多吃不完浪费;天天做饭也会饮食疲劳,不知道吃什么好了。

做饭也不仅仅是煮饭、洗菜、切菜和炒菜,吃完饭还要洗碗、打扫餐桌和厨房,定期还要补充食材调料、清理油烟机等等。其实挺麻烦的,有时候也会不想做饭,就点外卖或者出去吃。

虽然做饭看起来挺繁琐的,但这些繁琐的背后就是生活最真实的样子,忙碌且充实,在工作之余给生活增添了一点色彩。做了一道新菜,得到了对方的称赞;吃到了很久没吃过的一道菜,熟悉的感觉涌上味蕾;边吃饭边看电视,惬意的滋味让人舒服。

饭菜里有生活,生活里有饭菜。

送你一个虎年红包封面:虎虎生威

新年快到了,找了一张威风的老虎照片,做成微信红包封面送给大家,希望大家在虎年能够「虎虎生威」。

定制红包封面

去年在公众号发布了 12 篇原创文章,平台给了我「定制红包封面的机会」,赠送了 2000 个红包封面的兑换额度。

定制红包封面

正好快放假了,比较清闲,就做了两款虎年的红包封面。一款卡通的老虎,一款真老虎,都是在无版权图库里找的素材。

两款封面

本来是想发两款的,但是赠送的额度只能一次性兑换完,所以最后选择了真老虎这款封面,看起来「虎虎生威」。

领取方式

闲言少叙,领取方式如下:

  • 使用微信扫描下方海报的二维码,即可进行领取。

封面海报

提醒:领取后的红包封面在三个月内有效,超过三个月后即无法使用。

欢迎转发给亲朋好友,给虎年增加一点趣味。

新玩意|海氏K3空气炸锅烤箱

  • 渠道:天猫「苏宁易购官方旗舰店」
  • 价格:409 元

刷抖音的时候经常看到别人用烤箱或者空气炸锅做吃的,一直也想买来试下,终于,买了个二合一的「海氏K3空气炸锅烤箱」。

先来看下外观,整体呈一个较高的立方体,造型比较可爱,淡淡的米黄色,放在家里不会突兀。上面是三个旋钮以及运行指示灯,下面是把手和玻璃窗口。通过三个旋钮可以依次控制模式、温度和时间。

外观

有两个盘子,一个是搪瓷的,用来烧烤;一个是不锈钢网的,用来炸东西。其中搪瓷的盘子有点问题,客服给发了一个新的,好评。

到手之后立马就试了下烧烤,第一次上手,温度控制没控制好,烤肠都烤干了,不过还好,整体的味道还不错。

第一次有点翻车

后来陆续又做了烤鱼、烤菜、烤吐司、炸薯条等,还有烤地瓜,但是忘了拍照了,其中薯条的卖相是最好的。

烤鱼、烤菜、烤吐司、炸薯条

几次使用下来,我的感受是:需要短时间烤的食物做出来的效果比较好,例如吐司和薯条;但是需要长时间的食物上面会有点烤焦了,看上图的烤菜就知道了。

原因其实也很简单,这个型号的烤箱不能调节上下火,已经放到最下层了,但是上面的火力还是比较大,所以会导致烤焦。解决办法也有,把耐烤的放在上面,或者用锡纸把食材包住。

按官方的介绍,这款 K3 可以一机多用,除了常见的空气炸锅和烤箱模式,还可以用来做干果机、轻食机、发酵机、烧烤机、多士炉、酸奶机、解冻箱和爆米花机。

官方介绍

支持这么多模式,可以做各种类型的食物,是不是很完美了?其实并不是,至少 K3 这个型号并不是。

  • 容量:如果是做两个人的量,K3 还是小了点,可以考虑买 K5,尺寸更大,发挥空间也更大。
  • 火力控制:其实上面也有提到,无法控制上下火,容易造成食物上层烤焦。

但总的来说,400 块钱的价格买到一个空气炸锅和烤箱等多合一的设备还是很划算的,毕竟做起食物会有更多的选择,也比单独的空气炸锅(十大无用商品榜首)要合适的多。

几个注意事项:

1、新买的机器使用之前可以空烧一两次,散一下味道。

2、烤食物还是建议给烤盘包上锡纸,清洗比较方便。

3、烤地瓜要选蜜薯,烤出来很好吃。

新玩意|Yeelight易来 智能人体感应灯小夜灯

有感于少数派的「新玩意」频道,开一个新的分类,记录一下新买的一些小玩意。

  • 入手渠道:Yeelight京东自营旗舰店
  • 价格:35.87元 / 2 只

前两年租的房子,房东装修的时候在墙裙安装了夜灯,体验很棒,晚上上厕所或者拿个东西亮度足够,不用开大灯被亮瞎眼了。

今年六月的时候租房到期了,换了一个房子,这时候才发现没有夜灯是多么的不习惯。新租的是一个复式,楼梯部分采光不好,而且卧室在楼上,晚上上下楼不开灯不安全,又不想开大灯,所以就想着搞两个夜灯。

在京东挑了挑,品牌的选择并不多,再加上可充电的要求,最后决定买 Yeelight 的夜灯。USB 充电的有白光和暖光两种,果断选择了暖光,比较柔和,不刺眼。长这个样子:

Yeelight-夜灯

把灯摆在了楼梯的两个转角,上下楼都可以保证有一个灯先亮,亮度足够走到让下一个灯亮起的位置。

夜灯摆放位置.jpg

由于采光不好,下午的时候上下楼就会亮,用的比较多,大约半个月就要充一次电。充电的时候会有红色指示灯,充电完成会熄灭。需要注意的是充电口是 Micro USB,略微有点遗憾。

充电

这里还有个小插曲。这款夜灯的背面是支持磁吸的,买的时候送了配件,可以粘到楼梯等位置,然后把灯吸上去,可问题是,第一次给我发的是两个铁片加两个单面的 3M 胶,跟客服聊了半天才理解我意思。

客服聊天

右边是一开始附赠的铁片;左边是后来补发的,是双面的胶,有一面已经贴在铁片上了,可以看到一大一小,品控差点意思。不过后来也没用上,也就无所谓了。

铁片

17 年的时候就给家里买过 3 个夜灯,当时也是买的 Yeelight 的充电感应夜灯(见下图),京东现在卖 60 多一个。比现在买的款式好在可挂可贴,电量更充足,不过价格方面就没有竞争力了,一个的价格都可以买三个低配版了,所以也要看自己的需求,供有需要的人参考。

Yeelight 充电感应夜灯

超稳的高颜值支架:海备思铝合金手机支架

趁着 618 活动入手了海备思铝合金手机支架,真香。

之前在微博看到一位数码博主发过一款手机支架,当时没有记下名字,还专门搜了一番,最后找到了,就是「海备思」的这款支架。

开箱

6 月 1 日,「hagibis旗舰店」正好做活动,半夜下单购买。

订单

快递用了个袋子,拆开之后,里面的盒子都被压开了,虽然盒子上有胶布,但是胶布可能承受了它不应该承受的压力,所以才造成了这种尴尬局面。

包装

还好支架没事。

支架

盒子压扁了,没办法拍合影了,直接上一张官方的图吧。

全家福

使用感受

拿到手的第一感觉没有想象中那么「沉」,可能是自己预期太高了,毕竟铝合金密度还是比较小的。

但是,得益于铝合金材质 + 底部硅胶 + 合理设计,放上手机之后的感觉就一个字:「稳」。正常操控手机不会出现支架或手机晃动的情况,实际上即使大力点也基本不会晃动。

手机支架

支架的面板,凹槽和底部都有防滑硅胶保护,凹槽处还预留了充电孔位。我习惯把手机靠近凹槽的边缘,这样便于操作手机底部导航栏;但是充电的时候就要把手机放在凹槽的中间,这样手机充电口与充电孔位才能对齐。

放置角度

转轴的阻尼感很强,很大程度上保证了其承重能力,由于我的平板没在家,所以我把装满水的保温杯放上去了,还是稳得一批。

放保温杯

铝合金的材质确实很有质感,我买的是银白色的,到货之后才发现跟我电脑(深灰色)不是很搭,所以就给女朋友用了,重新下了一单深灰色。

支架和电脑

另外,从支架的正前方看,横向的边缘都是有打磨的,摸起来也不觉得割手;但是其他边缘就比较割手,而且容易「刮花」。不过也不是什么太大的问题,毕竟绝大部分时间注意力是在手机上,而不是在支架上。

支架边缘

总结

其实我有好几个手机支架了,有塑料的,木质的,但没有铝合金的,海备思的这款支架,可以说兼具了塑料支架的可调节和木质支架的稳定性,并且颜值还高。

总结一下海备思铝合金手机支架的优缺点。

优点:

  • 简约设计--颜值高
  • 铝合金材质--有质感
  • 转轴阻尼感强--超级稳

缺点:

  • 快递包装--拉胯
  • 边缘锋利--割手、易刮花

总得来说,我觉得海备思铝合金手机支架还是很值,毕竟这价格能有这质感和稳定性,很香了!

没有了无限免费存储空间,谷歌相册还能继续用吗?

2021 年 6 月 1 日起,以高画质和极速备份画质备份的内容将占用您 Google 帐号的存储空间。

为什么用谷歌相册

不记得从什么时候开始使用谷歌相册了,但我打开谷歌相册,找到最早的一张照片是 12 年的(不代表是 12 年上传的)。

从接触谷歌相册开始到现在,换了几次手机,每次都会装上谷歌相册来备份照片和视频。谷歌相册有什么好的,我非要用它呢?毕竟使用起来还是有一定门槛的。

在我看来,谷歌相册有如下亮点:

  • 人脸识别
  • 智能分类
  • 照片地图
  • 无限空间(当然现在不是了,后面再详细解释)

谷歌相册亮点

当然了,对我来说,谷歌相册也是除百度网盘之外的另一个备份工具。

不再免费

2020 年 11 月,和其他谷歌相册用户一样,我收到了有关 Google 相册存储空间的重要更新的邮件。

邮件截图

邮件的内容也比较简单,就是要取消无限免费的存储空间,更详细的说明可以查看「Google 相册的存储空间政策变化」。

从 2021 年 6 月 1 日起,使用谷歌相册备份照片和视频会占用账号的存储空间,而在此之前以高画质备份的内容不占用账号的空间。而今天就是 6 月 1 日,也就是说,从今天开始,谷歌相册不再提供无限免费的存储空间

谷歌相册不再免费的原因也很简单,就是存了太多的照片和视频,截止到 2020 年 11 月,已经有 4 万亿的照片和视频。

还能用吗

没有了无限免费存储空间,谷歌相册还能继续用吗?

普通用户

当然可以,只不过是没有无限空间了而已,默认还是有 15G 的免费空间的。可能有人就要说了,15G 应该存不了多少吧,毕竟现在一张照片的容量也不小。

具体能存多少,谷歌出了一个估算的工具,访问「管理存储空间」即可查询。

我的存储空间是 17G,大概能用 4 年,我觉得完全可以继续用着。

存储空间可以用多久

即使空间不够了,也可以考虑通过「清理账号存储空间」来腾出些空间。

Pixel 手机用户

当然如果你有 Pixel 系列手机,那么可以继续享受无限免费存储空间,谷歌帮助文档的表述如下:

如果您使用的是 Pixel 5 或更早版本的设备,则可以继续享受无限免费存储空间,用来备份 Pixel 设备中的照片和视频。

更详细的说明,请查看「Pixel 存储空间信息」。

付费使用

当然,如果你确实照片和视频比较多,可以考虑付费使用,访问「升级到适合您的方案」可以选择合适的存储方案进行付费使用。

付费方案

奇怪的是,截止到本文发布时,我尝试上传图片和视频到谷歌相册,发现存储空间并没有变。按说应该没有什么变数了,具体什么情况可能要过几天才能知道。

更新:

  • 2021 年 6 月 24 日,谷歌相册已经开始占用空间了。

开始占用空间

置物架改造

最近搬了家,之前做的置物架用不上了,就改造了一下。

小桌子

之前做过一个置物架,详情可见文章「自己动手做置物架」。

前不久刚搬了家,置物架用不上了,就想着怎么能再次利用起来。正好新租的房子沙发旁边缺个放东西的小桌子,就把置物架改造了一下。

置物架原来是这样:

置物架改造前的样子

改造之后成了这样:

置物架改造后的样子

其实就是把四根突出的木头给锯平了,把上边加宽了一下,更方便放东西,在上面临时铺上一个鼠标垫放手机,底下那层用来放插排和其他杂物。

小桌子

颜色有点不太搭,有时间再换个桌布啥的铺在上面。

手机支架

锯下来的几块木头我看着木料还可以,就顺手做了两个手机支架。

一个是单个的手机支架,平时放在桌子上放手机。

单支架

一个做成了可以放两个手机的支架,放在小桌子上,收纳手机或者 Kindle,手机充电的时候也可以收纳起来。

一拖二

本来一共锯下来四块木头,那两块纹理不太好,就没做成支架有机会再看看做成啥比较好吧。

后记

本次改造,一个置物架变成了一个小桌子和两个手机支架。

手里的工具比较简陋,就锤子、钉子和锯子,之前的文章里也有提到,所以做出来的效果也一般,这要是我爸做,那比买的还好看。

这次置物架改造,声音可能有点大,被邻居投诉了,有点尴尬,以后还是要注意点。

两个支架

左边那个是几年前我爸随手做的支架,右边的是我刚做的。

希望老了能有个自己的工作室,跟我爸一起做木工,拍拍抖音啥的,说不定还能当成副业做,哈哈。

❌