灵光一闪

灵感:一个基于 Github 的 Twitter 用户数据分析工具

这两天在研究 Twitter 的增长。在想有没有可能做一个开源的 Twitter 用户数据分析工具。奈何暂时没空,所以先把灵感记录下来。

特色

  1. 使用 Github 存储数据,无需另行创建数据库
  2. 项目无需服务器

特性

  1. 使用 Github Action 获取数据
  2. 使用 Github 存储数据
  3. 使用 GitHub Pages 展示数据

一些实现的思路

  1. Github Action 支持定时触发,可以设定每小时/每分钟启动一次,这个应该是一个配置参数。
  2. 数据应该是两种,一种是分块数据,按日切片/按小时切片。同时应该还有一个合并后的数据,用于 Web 展示。这部分的实现思路可以参考之前做的 opensource menu
  3. 页面应该是自动构建然后放置在 gh-pages 分支,然后可以默认访问。
  4. 页面应该可以看到数据和在数据前后的 tweet (所以需要调用多个 API)

woman in dress holding sword figurine

宋冬野背后的“人治”问题

前几天,宋冬野在微博上发了一张长图,大意是,自己跑去参加活动,结果被人举报,不让他参加。断了他自己的财路,希望大家能给他一个活路。

后来有不少自媒体提到:“给了你一次机会,谁来给哪些逝去的缉毒警一个机会呢?“

我倒是觉得,这个问题,大家都过于看重了毒品,却忘记了到底谁才能评判一个人的罪。

我们常言,警察是只有执行权,没有司法权的。也就是说,警察只能陈述事实的真相是什么,而不能评判一个人是否有罪。所以警察永远说的“犯罪嫌疑人”,只有法院才能判定一个人是罪犯。

但当这些事情变成“民意”后,大家却觉得这个事情,理所当然,但普通人和个体不应当拥有司法权。不然,便是滥用私刑。这便是我们在遭遇事情后,我们不应自行处理,而是应当将其交给法律。即使可能在我们看来,法律可能并不足以惩戒这个“罪犯”。

回到宋冬野的这个事情身上,这个点我觉得最重要的是,当初司法机构给出的判决是“禁演三年”而非“终生禁演“,而宋冬野也在遵循来自法律的判决,三年禁演。那么三年后,我们作为看客,就应当放下我们内心的不适,去接受这个事实。

而普通民众的举报,也很正常,因为大家并不懂法,所以觉得“为什么吸毒的人可以出来公演”,所以举报。但执法机关却去强制禁演,甚至在社交媒体上禁言,就有点“滥用职权”的意思了。

毕竟,在这个事情上,作为主要人员的宋冬野除了三年前的判决以外,是再无其他过错的。而禁演的三年,就是为了偿还他的过错。我们始终以一个人过去的错误来惩罚他,便忘记了,刑罚除了“惩戒罪犯”以外,还有“教育罪犯”,希望其不要再次犯错。如果一个人以莫须有的罪名而被惩戒,那他如何从中学到呢?毕竟被惩戒的原因可能都是不存在的。

倘若我们认为“无法给缉毒警一个机会”,我们应当做的是,在一开始,就直接终身禁演,而非在法律作出判决之后,一而再,再而三的去践踏法律。

当然,我想,当初之所以没有给终身禁演,司法机关也在考虑是否量刑过重的问题。应当让法律发挥其应有的效力,而不是仅仅凭民意。

回到宋冬野本身,我倒是觉得,司法机关应该尽可能的增加毒品相关的量刑,比如,直接所有的艺人涉毒终身禁演,那对于每一个娱乐圈人士,可能都会在吸毒之前,认真思考一下。

猫

养猫如养子

我养了三只猫,朋友笑称,我以后一定是四年抱三个娃。

但对于我来说,不是这样的。虽然他们只是猫,不是人,但依然是我的亲人,我如同孩子一般看他们。和我亲生孩子的区别,只有一个需要上学,一个不需要上学的区别。

孩子生病了,我很紧张;猫生病了,我一样紧张;

孩子生病了,该做的检查,能做的起的就做。实在做不起的就算了。猫生病一样的待遇。

对我来说,猫并不是一个宠物,而是一个生孩子/养孩子的前置训练。但并不意味着前置训练,我就可以置猫的生命而不顾。我会努力的让他们可以过的更好。享受美好的猫生。

但是,养猫也让我思考,生几个孩子才是最好的,目前来看,我的答案是 : 1 个。猫生病我尚且很难,更何况是人呢?

Freelancer

作为自由职业者,你需要放弃的东西

绝大多数的人,提起自由职业者,都会不断的宣传自由职业者的好处(比如我也是这样的),但确实很少有人会提及自由职业者的问题。所以,我觉得有必要写一篇文章,来说明自由职业者的问题。

收入不稳定 & 收入锐减

对于绝大多数行业来说,自由职业都意味着收入锐减。即使你是软件工程师,也不可避免的会遇见收入减少的问题。

这个锐减大概是什么情况呢?对于绝大多数人来说,可能你在企业内的收入,会是你自由职业收入的 2-3 倍。

所以,对于很多已经工作的人来说,自由职业并不是一个靠谱的方案,因为对于他们来说,房贷、车贷等已经背上的杠杆,无法轻易的抹去,如果他们选择了自由职业很有可能会带来无法还贷,致使资金链断裂,房产等被收回。

这也是很多时候我们发现,自由职业者往往是年轻人的选择,因为无贷一身轻。

职业前景暗淡

这个点其实是比较有争议的,因为如果你自由职业了大概率回不去坐班的生活,但如果你还有可能回去坐班上班,那么这个就是给你看的。

自由职业和职场的发展的一个很大的不同便是是否有明确的进阶路线,很显然,自由职业属于没有进阶路线,完全自由自主的。

你的发展可能是全方面的,但是不均衡的。对于需要一个螺丝钉的大企业来说,可能无法找到那个适合你的位置。

当然,如果你始终在自由职业的路上走,那么这是一个不需要你考虑的问题,因为自由职业的路是一个没有常规升级方案的路。从某种意义上,你和创业没什么区别。

与社会生活隔绝

如果你是一个很宅的人(比如像我一样,一周可能都不出门一次),那么意味着你很有可能会和社会隔绝。

山中无历日,寒尽不知年

唐代诗人太上隐者的《答人》

你需要给自己找一些事情去做,主动去与社会沟通、接轨。比如参与到一些社会活动之类的,以获得明确的时间感、界限感。

毕竟,对于你来说,周一和周日没有区别,都是一样的。你可以尽情享受自由的逛街、自由的出游,但同样的,也要忍受一个人出去玩的孤独,因为所有的朋友都在上班。

无法实现资产的增值

我们常说,对于每一个人来说,这辈子最大的杠杆就是你在买首套房的时候,可以用30%的资金,撬起 100% 的资产。

自由职业的话,因为收入不稳定,给自己上杠杆是一个不太保险的手段,选择一些杠杠没有那么高的投资方式,可能是一个更好的选择。

需要生活在小地方

自由职业者,因为职业的原因,可以生活在一些成本更低的地方,来实现地理套利。但同样的,也会因为你的收入低,不得不生活在一些成本更低的地方。

你通过降低生活成本、降低生活满意度,获得一个更加自由的生活。

孰轻孰重,自己判断吧。

总结

自由职业并不是全都是好的方面,同样也有坏的方面,我能给出的建议就是这些,你在做出选择的时候,需要考虑清楚自己想要的是什么,再作出最后的决定。

engine

性能的重要性

今天在一个独立开发者群里,大家在讨论产品的性能,我在群里提出了异议,不建议大家讨论性能。

在我看来,

性能不重要,真的不重要。

性能是成功的充分非必要条件。 客户会因为你的产品解决了问题而选择你,不会因为你的性能好而选择你。

但性能也很重要,因为它也是充分必要条件。

客户不会因为性能选择你,但会因为性能离开你。

对于个人来说,完成优于完美,因为个人的资源是不足的,需要将有限的资源放在最重要的事情上。而对于一个个人而言,业务的验证无疑是最重要的。

同时,谈及选型,我的观点是:

做选型的前提应该是两种方案的实现成本几乎无差,这种情况下是可以做的。但如果实现成本有差的话,还是先解决业务会比较好。

b29692084bbb

如何 Debug WordPress 的 Pingback 功能

前两天,朱峰老师在写博客的时候,引用了我的文章,发现我的博客并没有开通 Pingback。提醒我开通以后,发现依然没有效果。

于是进入了 Debug 模式。

Pingback 如何 Debug

PingBack 是基于 XML 构建的协议,因此,如果你需要调试的话,需要自己发送 XML 请求,以通知 WordPress 进行 Pingback 记录。

你需要构建一个 XML 文件,其中的内容如下

<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
 <param>
  <value>
   <!-- source,发起请求的文章,即要引用别人文章的文章 -->
   <string>https://blog.andie.im/blog-is-back/</string>
  </value>
 </param>
 <param>
  <value>
   <!-- target,被引用的文章,即他人的文章 -->
   <string>https://www.ixiqin.com/2021/10/more-and-more-good-a-lightweight-application-server/</string>
  </value>
 </param>
</params>
</methodCall>
Code language: HTML, XML (xml)

将上述的 URL 修改为你自己的以后,就可以在命令行中对 WordPress 发起请求,以实现 PingBack 功能。

curl -X POST -d @pingback.xml https://domain/xmlrpc.php #将 Domain 替换为你自己的博客地址
Code language: CSS (css)

发送成功后,你会看到这样的一个提示,就说明你的 Pingback 发起成功了,接下来要做的,就是在 WordPress 的评论页面去给 Pingback 进行放行了。

朱峰老师的文章

Reference

https://wordpress.org/support/topic/inbound-pingbacks-not-working/

green and white electric device

越来越好的轻量应用服务器

这几天规整我手头的 VPS、云主机,意外发现腾讯云推出了 LightHouse DB,激起了我的兴趣,刚好也对比一下其他几家的产品。

You don’t NEED scaling 中,我提到,对于绝大多数的企业来说,根本用不到云计算厂商提供的产品,他们需要的仅仅是一个简单的 VPS即可。

各家云厂商也意识到了这个问题,纷纷推出了低配版的云主机(VPS),亚马逊的叫 Lightsail,阿里云的叫轻量应用服务器,腾讯云的叫轻量应用服务器 LightHouse

名字接近,定价也相差无几,起步定价均在 24 元/月附近,直逼 Digitalocean 的 $5/月的定价,和 Vultr 的 $2.5/月的定价也没贵多少。可以看出,这类产品的对标,便是 Do、Vultr、Linode 之类的 VPS 厂商。

而过去,国内的轻量应用产品都是处在不能用的场景下,因为

  1. 没有独立的数据盘:这导致无法实现系统和数据的分离,在数据安全性方面,有所问题。
  2. 内网与其他云产品不互通:这导致无法使用云数据库类型的产品,数据安全方面得不到保障。

这两点让使用这类产品的时候,都会面临需要自己做更加细致的运维的工作。

不过,我现在发现,各家的产品都在变好了。如,阿里云针对数据盘问题,提供了独立的数据盘的能力(但之前购买的轻量云服务器无法添加数据盘)。

腾讯云则针对内网不互通的问题进行了优化,提供了内网互联和LightHouse DB 的能力,让用户可以自行配置所使用的云资源。

经过这么一优化,我觉得,这两者基本都达到了可用的层次。

阿里云用户可以通过数据盘来规避数据安全的问题,为数据提供更高的保护等级;腾讯云用户则可以通过内网互联,将用户上传的文件,托管到 COS 对象存储中;将用户数据放在 LightHouse DB 中;将缓存放在云 Redis 中。

相比之下,我更倾向于使用腾讯云的 LightHouse(希望能早日支持数据盘),要不是我的博客服务器续费了一年,我现在就打算切换到腾讯云了。

2022.03.11 更新

green and white electric device

You don’t NEED scaling

云计算成为当下时代的主流,云计算的“弹性伸缩”,把创业者搞的五迷三道。似乎云计算成为了当下的唯一选择,没有使用云计算,你就是 Low B ,你的公司就会在出现问题以后,一夜崩塌。

但,事实真的是如此的么?

世界上做云最早的,是 AWS,亚马逊的 AWS 是云计算行业的先驱和老大哥。国内做云最早和最专业的事,是阿里云,阿里巴巴旗下的阿里云成为国内初创企业的云计算必选项。

但,你有没有想过为什么会是他们?

这是因为作为一个电商企业,云计算是他们所必须的。每逢黑色星期五/双十一/六一八,电商企业就需要采购大量的基础设施,以应对节日的流量洪峰。但除了电商企业以外,很少有企业需要面对那么极致的弹性伸缩。

对于电商企业来说,节日的流量可能是日常的 100 倍、1000 倍。而对于绝大多数的业务,即使出现了流量爆炸,往往也是在 10 倍、20倍的变化。正常情况下,流量的变化也是一个可以预期的事情。

对于这些没有那么强弹性诉求的企业来说,云计算提供的弹性伸缩能力很好,但确实没有什么应用场景。倒是让企业为此付出了不少的代价。

对于绝大多数的企业来说,他们需要的仅仅是一个 VPS,甚至,仅仅需要一个虚拟主机,但云计算的洗脑,让你感觉你”好像需要弹性伸缩能力“,让你感觉,你”好像拥有了和 AWS 同等级别的弹性伸缩能力“。

但是,别忘了,弹性伸缩不仅仅是云计算的事情,还需要你的业务架构能支持、你的运维人员能搞定,你的钱包能 Cover 住。

你真的需要云计算么?你真的需要弹性伸缩么?

red padlock on black computer keyboard

从 1Password 到 Bitwarden

近日,1Password 从原生开发变为了 Electron 开发,而我购买 1Password 家庭版也两年有余。虽然成本不高,但考虑到希望节省开支,便在考虑将一部分支出精简。可以自行托管的 Bitwarden 就成为了 1Password 的替代品。

借着国庆假期,将密码管理软件从 1Password 转换到了自建的 Bitwarden 上。

备份 1Password 的数据

既然要迁移,自然要先备份现有的数据,比如 1Password 中的数据。

在迁移方面,Bitwarden 官方提供了教程,你可以直接参考。

Import Data from 1Password | Bitwarden Help & Support

部署 Bitwarden

Bitwarden 官方的开源版本使用的是 C# 编写的,对于资源的消耗较大。而我是希望在 NAS 中运行,因此,就选择了一个对于资源消耗更少的版本 —— VaultWarden(之前的 bitwarden_rs 项目),一个基于 Rust 编写的 Bitwarden 服务端。

部署的过程也不复杂,使用 Docker 将镜像拉到本地,并复制官方的执行命令,稍做修改即可部署。

# <meta charset="utf-8">/vw-data/ 修改为你自己服务器上的数据存储位置。
docker run -d --name vaultwarden -v /vw-data/:/data/ -p 80:80 vaultwarden/server:latest
Code language: HTML, XML (xml)

不过,我并没有使用 Docker 部署,而是使用 Docker 的替代品 Podman 进行部署(主要是想试试新技术)。

整个的使用过程也很简单

# 拉取镜像
podman pull docker.io/vaultwarden/server
# 启动容器
podman run -d --name vaultwarden -v /vw-data/:/data/:Z -e ROCKET_PORT=8080 -p 8080:8080 vaultwarden/server:latest
# 进入 systemd 目录
cd /etc/systemd/system/
# 生成 service 文件
podman generate systemd --name vaultwarden --files
# 设置自启动,并启动服务
systemctl enable /etc/systemd/system/container-vaultwarden.service
systemctl start container-vaultwarden.service
Code language: PHP (php)

通过几行代码,就完成了 Bitwarden 的部署。

使用 Nginx 对Vaultwarden 进行反向代理(非必需)

默认情况下,你配置的 Bitwarden 服务器会运行在 8080 端口下,如果你希望将其使用 Https 保护起来,或使用HTTP的 80/443 端口,一个比较简单易行的方式就是使用 Nginx 来进行反向代理。

fmphu

Vaultwarden 官方提供了 Nginx 的配置文件可供参考,其他的代理服务器也可以找到类似的说明,具体的配置你可以自行访问前面的连接进行查看。

注册账号,并导入数据

配置完成后,访问你的Vaultwarden 地址,并注册一个新的账号,就可以在 Bitwarden Web 端的“工具”页面,进行数据导入了。

vc40l
导入界面

需要注意的是,如果你选择的是文件上传导入,则会使用 WebSocket 进行导入。这里如果你没有配置 WebSocket ,就无法通过文件进行导入,需要使用文本编辑器打开备份文件,复制到下方的输入框中进行恢复。

安装各个平台客户端

在完成了各项配置后,最后就是安装各平台的客户端,并配置服务器、账号密码等,登陆客户端,并同步账号密码了。

s4u5v
配置说明

总结

其实 Bitwarden 的部署不算复杂,不过,Bitwarden 的使用体验目前还是不够好的,在一些网页上,1Password 可以完成自动填充,但 Bitwarden 就需要自行复制粘贴,在用户体验方面还有待提升。

black laptop computer keyboard in closeup photo

使用 Space Sniffer 分析 Windows磁盘占用

3ewz5
cleanMyMac 提供的空间透镜功能

在 macOS 中,我可以使用 cleanMyMac 中提供的“空间透镜“功能, 对我的电脑中的磁盘进行分析。如果你使用的是 Windows ,希望实现类似的效果,则可以考虑使用 Space Sniffer 进行分析

ldcp8
Space Sniffer 分析界面

和 cleanMyMac 的空间透镜一样, Space Sniffer 功能也是对磁盘中文件进行分析,因此,只需要下载软件并启动软件,选择需要分析的磁盘,就会自动生成如上图一般的占比图。

接下来要做的,就是根据占比,对大文件进行清理啦。

主页:http://www.uderzo.it/main_products/space_sniffer/index.html

下载地址:https://www.fosshub.com/SpaceSniffer.html