Press "Enter" to skip to content

月与灯依旧 Posts

Ubuntu 20.04上查看HEIC格式的图片/显示缩略图

Ubuntu 20.04上查看HEIC格式的图片, 仅需要安装一个 heif-gdk-pixbuf 的package, 然后就可以使用 Image Viewer 查看了. 如果还需要在文件管理器中显示缩略图, 那么还需要安装其它2个包

sudo apt update
sudo apt install heif-gdk-pixbuf
sudo apt install heif-thumbnailer
sudo apt install libheif1:amd64

参考这篇文章. 如果需要把heic格式的图片转换成jpg, 可以参考这篇文章(未验证).

Leave a Comment

Python农历转换

在Python中进行公历转换农历, 是一件很简单的事儿.

>>> import datetime
>>> from zhdate import ZhDate

# 农历转公历
>>> date = ZhDate(2022,4,5)
>>> print(date)
农历2022年4月5日

>>> date.to_datetime().date().year
2022
>>> date.to_datetime().date().month
5
>>> date.to_datetime().date().day
5
Leave a Comment

内网穿透: 使用ssh tunnel将内网主机映射到公网

如果希望将一台内网中的主机发布到公网(使用阿里云/腾讯云中转的方式), 使得该内网主机可以在全球任意地点被访问, 仅需要用到ssh即可. 用到的原理就是ssh的remote port forwarding特性, 具体可参考本博客之前写的简单解释 ssh 中的 local port forwarding 和 remote port forwarding.

假设我们已经有了一台阿里云/腾讯云的主机, 其公网IP是1.1.1.1, 需要在ssh配置里启用GatewayPorts(否则ssh tunnel建立以后只会监听127.0.0.1)

在我们的内网主机上写入一个systemd服务

sudo vim /etc/systemd/system/[email protected]    # 写入如下内容
[Unit]
Description=Persistent SSH Tunnel to from port 127.0.0.1:%i on this server to port 3389 on external server(1.1.1.1:3389)
After=network.target
 
[Service]
Environment="LOCAL_PORT=%i"
ExecStart=/usr/bin/ssh -NTC -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -R 3389:0.0.0.0:${LOCAL_PORT} [email protected]
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

参数解释:
T: 禁止分配伪终端
N: 不执行远程指令
C: 请求压缩所有数据

然后启用服务

sudo systemctl daemon-reload
sudo systemctl enable ssh-tunnel@22 --now

然后就可以通过1.1.1.1:3389来访问这台内网主机的22端口了.

参考文档: README-setup-tunnel-as-systemd-service.md

1 Comment

简单评价surface laptop go

是的, 买了个surface laptop go, 来自微软官方商城的翻新产品, 十代i5, 8+128的配置, 2799的价格拿下.

外观图片我就不放了, 网上一大堆, 性能啥的也不再多说, 处理器的性能网上都是可查的. 这里简单写一下我认为的这个本子的优缺点吧.

advantages

  • 田牌LOGO, 拿出去装X的时候逼格满满
  • 做工不错, 哪怕是塑料机身, 也能看出来这不是一般的塑料, 不是外面的野鸡本
  • 全帖合镜面屏幕, 不用担心落灰了, 这点对于有强迫症的我来说简直不要太好
  • 微软键盘比较好用.
  • 12.4寸的触屏, 加上1.1kg的体积, 真是又轻又薄, 满足对轻薄本的所有要求.
  • 可能是所有surface笔记本/平板里面最薄的边框了

disadvantages

  • 电池. 这一点真是最大败笔. 我进行了多次测试, 在将电池模式设置为倒数第二档(推荐模式)+80%的亮度时, 在youtube上观看了大约20分钟的视频, 下降了约8%的电量. 也就是说, 这台surface laptop go在满电的情况下, 最大只能坚持4小时. 在我后来的测试中, 如果大量浏览网页的话, 掉电会更快一些. 所以结论是, surface laptop go的实际续航在2-4小时之间. 这是将系统/固件更新到2022年1月25日的情况下得出的结论.
  • 屏幕亮度低. 据称最高只有320尼特. 我的直观感受告诉我80%的亮度是能接受的最低亮度了. 事实上在一些比较明亮的场合, 可能需要将亮度调整到100%
  • 分辩率低. 是的, 用惯了高分屏的人, 再用回颗粒感的屏幕, 会觉得有些不太舒服.

Conclusion

一直都觉得手上应该有个高逼格的本, 可以偶尔拿出去装X. 一直在surface系列和macbook air系列之间犹豫不决. 当然最重要的还是考虑到价格因素, 一直没有入手.

之前在顺电卖场摸过一些常见本. 对surface laptop go的外观一见倾心. 只论外观的话, 它是所有的surface产品里最符合我审美的一款产品. 只不过, 在顺电的时候, 没法详细的体验这款产品, 直到看到2799的官翻价, 才终于入手了.

一周的体验下来, 基本上也是对这个本有了一些了解. 如同网上说的那样, 这个本的优点和缺点都是非常明显的. 最令我震惊的还是电池的续航问题, 之前我经历过DELL/联想的多款笔记本, 都没有这么弱鸡的续航. 考虑到这一点, 我曾经在犹豫是不是要退掉这个surface laptop go, 后来朋友提醒了我, 看在它是一个2799的田牌产品, 不要想太多了.

一句话总结: 如果你只在意逼格+轻薄, 那它确实是一台相当不错的本. 但凡你对续航有一点要求的话, 那么它就不适合你.

这篇文章是在这台surface laptop go上面完成的.

1 Comment

OpenVZ vps 使用 snapd 部署 certbot

在 OpenVZ 的 vps 上使用 snapd 时, 会出现如下提示

error: system does not fully support snapd: cannot mount squashfs image using "squashfs": mount:
       /tmp/sanity-mountpoint-404380626: mount failed: Operation not permitted.
error: system does not fully support snapd: cannot mount squashfs image using "squashfs": mount:
       /tmp/sanity-mountpoint-404380626: mount failed: Operation not permitted.

下面介绍解决办法:

sudo apt install fuse squashfuse snapd
sudo mknod -m 666 /dev/fuse c 10 229
sudo snap install core; sudo snap refresh core
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

参考文档.

Leave a Comment

Create Worldmap/Table panel in grafana with Elasticsearch datasource

某天接到一个需求, 即在Grafana中添加一个Table panel, 将AD系统里面登陆失败的用户都挑出来, 展示在table里面, 同时也将失败次数展示出来.

Create Table panel in grafana with Elasticsearch datasource
Create Table panel in grafana with Elasticsearch datasource

接下来看看Worldmap panel. 新版Grafana的很多设定都发生了变化.

Create Worldmap panel in grafana with Elasticsearch datasource
Create Worldmap panel in grafana with Elasticsearch datasource
Create Worldmap panel in grafana with Elasticsearch datasource
Leave a Comment

简单解释 ssh 中的 local port forwarding 和 remote port forwarding

1, local port forwarding

ssh client端:
ssh server端: serverIP:80

如果希望在ssh client端访问ssh server端的80端口, 则可以运行

ssh -L 8000:serverIP:80 user@serverIP

然后就可以在client端通过访问127.0.0.1:8000达到访问server端80端口的目的

提示:
8000:serverIP:80这里的serverIP不一定要是server自己, 也可以是127.0.0.1, 或者是任何server端能够访问的远程地址.
然后就可以实现在ssh client端访问serverIP:80(即在client端访问127.0.0.1:8000)

下面是一个例子

如上图. 如果执行了

ssh -L 8000:10.10.1.11:80 [email protected]

那么, 访问192.168.56.101:8000则等同于访问了10.10.1.1:80

2, remote port forwarding

ssh client端: clientIP:80
ssh server端:

如果希望在server端访问client端的80端口

ssh -R 8000:localhost:80 user@serverip

然后就可以在ssh server端通过访问127.0.0.1:8000达到访问client端80端口的目的.

提示:
命令里的localhost指的是client侧的IP, 命令里的localhost不一定得是ssh client本身, 也可以是任何一个ssh client可达的地址.
server端默认是会监听127.0.0.1:8000, 如果想让server端监听0.0.0.0:8000, 需要将ssh配置中的GatewayPorts配置项打开

下面是一个例子

Leave a Comment