这几天阴差阳错地被迫拍了一些人像,直接被公司的 UI 小姐姐给嫌弃了(她还兼着平面设计,照片后期)。

我回忆起来,以前人像也拍得不少。无奈大家都比较害羞,不希望我 po 到网上。所以一般情况下只能发一些风景、特写什么的。

客观地说,N 年没摸相机,确实生疏了。于是我找了一些前几年拍的片子,补了一些后期,聊以慰籍吧(当时非常懒,只管拍,不管出片)。

时间:2013 年 11 月(是的,我没写错)
地点:大连海滨
人物:团队小伙伴们
事件:借着团建的名义旅游
机器:Nikon D80
镜头:AF-S Nikkor 24-70mm f/2.8G ED

BTW,非常期待胡老大、ppeng 兄的点评——当你们不经意看到这篇文章的时候。

老传统,多看图,少说话。

- 阅读剩余部分 -

本文原来拟定的标题为:《墙,墙,又是墙!》,以显示我的愤怒。

故事背景是由于 Google Workspace 放弃了白嫖用户,我转付费了其中若干套,放弃了若干套。放弃的订阅可以导出全部数据到 GCP 存储桶。

大概是这样的:

在 gsutil 工具主页上看到安装方式的文档链接,文档首选通过自定义 repo 的方式安装:

sudo tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM
[google-cloud-cli]
name=Google Cloud CLI
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el8-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
       https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOM

sudo dnf install google-cloud-cli

经测试,由于众所周知的原因,这个方案在国内主机上是行不通的。

知天朝者,Google 也。他们还提供了通过归档包的方式进行安装的方案。目前可以下载到的最新的版本归档是:google-cloud-sdk-377.0.0-linux-x86_64.tar.gz。

这里要感谢仁慈的 TG,没有赶尽杀绝,留了 dl.google.com 活口:

# wget -c https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-377.0.0-linux-x86_64.tar.gz
# tar xzf google-cloud-sdk-377.0.0-linux-x86_64.tar.gz
# cd google-cloud-sdk
# ./install.sh

安装完成后提示:

To update your SDK installation to the latest version [381.0.0], run:
  $ gcloud components update

作为精神强迫症患者,必须来一波:

# gcloud components update

到这里身心还较为愉悦,尝试列出 GCP 存储桶的文件:

# gsutil ls gs://takeout-export-xxxx

我就猜到会报错:

ServiceException: 401 Anonymous caller does not have storage.objects.list access to the Google Cloud Storage bucket.

- 阅读剩余部分 -

穷人的孩子早当家是有一定道理的。由于用不起某里云的 OSS (对象存储)服务,自己折腾了一番。期间踩坑若干,故自行记录聊以慰籍。

技术选型是采用 MinIO 与 Thumbor 无疑,网上相关的文章也很多。我的故事分为 5 个节点:

0x00、最初的记忆——Docker 安装

是的,我一开始打算以 Docker 方式部署。

MinIO 的 Docker 部署方式可以完全参照官方文档进行:

docker run \
  -d \
  -p 9000:9000 \
  -p 9001:9001 \
  --name minio \
  -e MINIO_ROOT_USER='xxx' \
  -e MINIO_ROOT_PASSWORD='xxx' \
  minio/minio server /data --console-address ':9001'

MINIO_ROOT_USER 与 MINIO_ROOT_PASSWORD 是登录 MinIO Console 的账号密码,记得替换。

而 Thumbor 则是选择了一个叫做 Minimal Compact Thumbor 的镜像,真的是简单:

docker run -p 8888:80 minimalcompact/thumbor

一行搞定。

搞到这里,MinIO 已通过 Docker 方式跑起来了,本地测试 Thumbor 发现无法处理 MinIO 提供的私有地址,比如以下这种情况。

通过调用 MinIO 的 getPresignedObjectUrl 接口获取的私有地址:

http://127.0.0.1:9000/test/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=348201GIYPQI49I606RF%2F20210713%2Fxxx%2Fs3%2Faws4_request&X-Amz-Date=20210713T042509Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=xxx

Thumbor 处理的地址:

http://127.0.0.1:8888/unsafe/500x0/http://127.0.0.1:9000/test/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=348201GIYPQI49I606RF%2F20210713%2Fxxx%2Fs3%2Faws4_request&X-Amz-Date=20210713T042509Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=xxx

结果报 400 错误。

- 阅读剩余部分 -

今天通过 acme.sh 给新域名申请 SSL 证书,遇到报错:

[Mon Jul 12 15:53:31 CST 2021] Using CA: https://acme.zerossl.com/v2/DV90
[Mon Jul 12 15:53:31 CST 2021] No EAB credentials found for ZeroSSL, let's get one
[Mon Jul 12 15:53:31 CST 2021] acme.sh is using ZeroSSL as default CA now.
[Mon Jul 12 15:53:31 CST 2021] Please update your account with an email address first.
[Mon Jul 12 15:53:31 CST 2021] acme.sh --register-account -m [email protected]
[Mon Jul 12 15:53:31 CST 2021] See: https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA
[Mon Jul 12 15:53:31 CST 2021] Please add '--debug' or '--log' to check more details.
[Mon Jul 12 15:53:31 CST 2021] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh
Error: Create Let's Encrypt SSL Certificate failed!

有人说需要在 ~/.acme.sh/account.conf 中添加:

ACCOUNT_EMAIL='[email protected]'

但是需要邮箱地址终究是麻烦,希望切换回 Let's Encrypt,可以这样:

# .acme.sh/acme.sh --set-default-ca --server letsencrypt
[Mon Jul 12 15:54:19 CST 2021] Changed default CA to: https://acme-v02.api.letsencrypt.org/directory

官方文档上也都写了,可以猛戳此处

不过据说 ZeroSSL 支持泛域名比较爽,有空再折腾一下,先学党国维稳。

好久没有参加娱乐活动了,今天遇到“偷鸡”趣事一则,随笔记录,聊以慰藉。

起因是早上看到昨天后半夜收到钉钉通知一则:

那行猥琐的代码深深地吸引了我,直接请求了一下。好家伙,XSS 代码:

有点不开心,你好歹专业一点。往这里插入 XSS 代码叫怎么回事嘛。再一看网站,还有这么个玩意儿:

- 阅读剩余部分 -