今天遇到一个证书发行商提供的客户端 Windows only,无奈只能在想办法在 macOS 下安装一个 Windows,因为之前就使用过 VMware Fusion,个人使用是免费的,所以立即就上官网下载。
另外 Windows 镜像在 MSDN ITELLYOU 上下载,
安装虚拟机的过程非常简单,将 ISO 拖入到安装界面,然后打开虚拟机就开始了自动安装,但是没想到的是在安装的过程中,遇到了如下的界面,始终无法跳过。
所以在这里记录一下如何在安装的过程中跳过联网。当到联网的画面之后,按下 Shift+F10 或者是 Fn+Shift+F10 快捷键调出命令提示符窗口。
在 cmd 界面中,通过 cd 命令切换到,C:\Windows\System32\oobe\
目录,然后执行 BypassNRO.cmd
,按 Enter 键。系统会自动重新启动,并提供在不联网的情况下完成首次开机设置的选项
在使用上一步完成系统初始化之后,进入 Windows,依然无法联网。可以通过如下的步骤来使得虚拟机中的 Windows 能联网。
powershell
Set-ExecutionPolicy RemoteSigned
cd D:\
./setup.ps1
等待安装完成之后,就可以看到网络已经连接了。
Music Tag Web 是一个基于网页的歌曲元数据编辑工具,支持编辑标题,专辑,艺术家,歌词,封面等信息。之前在 Windows 上用过一个叫做 [[mp3tag]] 的应用,后来在 macOS 上用的是 MusicBrainz Picard,后来发现一款非常不错的音乐播放器 [[Swinsian]],用了很久。我本地的所有音乐文件都会放在一个文件夹中然后使用 Syncthing 来同步。
正因为我的音乐库被同步到了 VPS 中,虽然本地也有一份备份,但是如果恰好电脑不在身边,那就不太好立即操作。
再回到今天的主题 Music Tag Web,它的特点是:
如果有人想要研究一下什么歌曲的元数据,那就避不开 [[MP3 ID3]] 这样一个名次,对于 MP3 ID3 的格式,可以参考这篇文章。
Music Tab Web 的安装非常简单,直接通过 Docker 启动即可。
直接使用命令启动(不推荐):
docker run -d -p 8001:8001 -v PATH_TO_MUSIC:/app/media -v PATH_TO_CONFIG:/app/data --restart=always xhongc/music_tag_web:latest
推荐使用 docker compose 启动,具体的配置可以参考我的仓库
version: '3'
services:
music-tag:
image: xhongc/music_tag_web:latest
container_name: music-tag-web
restart: always
ports:
- "8001:8001"
volumes:
- ${PATH_TO_MUSIC}:/app/media:rw
- ${CONFIG}:/app/data
command: /start
等待启动,使用 docker-compose logs -f
查看日志,没有出现问题即可,之后访问 IP + 端口 http://ip:8001 访问主页面,在路径后面加一个 admin 就可以看到管理界面,默认账号密码 admin/admin。
Music Web Tag 的界面非常直观,支持手动修改,或者根据匹配的信息自动修改,也支持整理文件夹以及简体转繁体,繁体转简体等操作。
和软件的本地版差距不大,除了界面上有所变化功能上并没有变化太大,能够根据平台来索引歌曲文件,可以进行手动的歌曲信息修改,包括了歌手、专辑、风格以及歌词等等信息都可以修改。支持的文件夹整理是一大亮点,可以针对专辑或者歌手,将其歌曲放在一个文件夹中。
自动修改完成之后就可以看到文件的信息被修改,同时也能在操作记录中看到是否有失败项。而针对自动修改错误的,也可以直接在界面进行手动修改。
在很多地方看到过这一本书的书评,Twitter 上关注的人当中也不乏推荐者。
在阅读这本书之前,很早就听过《疯投圈》的播客提到过这个名词,这个世界上有两类公司,一种是小而美的公司,一种是大而全的公司。小而美的公司追求简洁、高效和精益,专注于核心业务,避免过多的复杂性和浪费。而大而全的公司则追求规模、多样性和全面性,拥有庞大的组织架构和复杂的业务流程。我想,很多的大公司都是经历过小而美的阶段,比如说只有一个搜索栏的 Google;比如说只提供照片分享的社交网站 Instagram;比如说专注于影视作品打分的豆瓣。很多小而美的公司会找到自己的盈利模式,比如 Google 的竞价广告,进而变成一家庞大的公司;又或者像 Instagram 这样被大公司收购,进而成为一家主流的图片社交网站;很少一部分会像豆瓣一样,既没有发展成为一家庞大的公司,也没有被另外一家大企业收购进而得到进一步的发展。更有很多的公司,可能因为没有跟上时代的发展,而被淹没在历史里面。
但这一本《小而美》吸引我的点在于,作者提倡去长期经营一家小而美的公司,「刻意」的维持公司的规模不要过大,并且要长期在发展中保持专注高效,为现有客户提供长期的价值。
通过目录,可以看出来这是一本非常实用主义的书,作者的很多建议非常贴近现实,甚至很多都可以直接套用。从创建社区,提出问题,构建想法,提出解决方案,到假设验证,冷启动,营销,运营,作者通过自己创建 Gumroad 的经历给读者编写了一本创业说明书。在很流行 [[独立开发者]] 的当下,这本书受到热捧也是可以理解的。
《小而美》的作者叫做 萨希尔·拉文吉亚(Sahil Lavingia),我是第一次听说这位作者,但是直到我看书,才知道原来他是 Gumroad 的创始人,这本书也是记录他尝试将这个创作者平台做大,却不成之后的思考。他同时也是一个作家,投资人。
《小而美:持续盈利的经营法则》原始的书名是 《The Minimalist Entrepreneur: How Great Founders Do More with Less》,直译过来其实有一些些差别,极简创业者、伟大的创业者如何使用最小的成本来实现更多,但中文书的翻译正恰好说明了本书的全部重点,作者不是教人创建一家大型企业,而是让读者明白如何创建一个可持续盈利的项目。作者自称自己是极简主义创业,那什么是极简主义创业者呢,在解释这个词之前,可以先了解一下前几年非常流行的一个词,叫做「独角兽」,被称为独角兽的企业,是指那些估值超过 10 亿美元的企业,Uber,Dropbox,Evernote 等等,这一些项目有非常成功的,上市的,也有像 Evernote 一样「失败」 的。而回到本文的主题 —- 极简主义,就是那些成为不了独角兽的公司,但是却有其存在的价值,可以通过少量的人力和资源即可维护的项目,能给客户不断提供服务和价值。极简主义创业者不是为了攫取利润,而是为客户和社区创造价值。这也是这一本书的核心。作者倡导创业者通过减少复杂性和浪费,利用自动化,不断优化流程的方式来打造一个企业。
先是创作者,再是创业者
不断重复这个过程,直到找到一个可行的产品,然后扩大经营
这本书非常具有实践意义,并且也给了我很多启发。作者描述的每一个过程都是可以被实施的,如果非要说的话,这一本书可以说是极简主义创业说明书,作者连需要做什么,做几步,怎么做都写得非常清楚,从建立社区,发现问题,解决问题,营销,等等方面都进行了探讨。但个人对这一本书的观感不佳的一个原因是作者每一步实施都浅浅的略过,点到为止,如果说创业者可以按这个说明书操作倒也不错,但这本书更多的是给读者一个思路,一个思考的方向,原来还可以这样做。
Omnivore 是一个开源的,稍后阅读应用,查看起官方的页面,支持非常多的客户端,包括了 iOS, macOS, Chrome,等等 Android 还在测试中。
在之前的自行架设的服务 中有推荐过 [[Wallabag]],但是 Wallabag 界面稍微有一些古早,但是使用起来完全没有任何问题,我自己也搭建用了很久。而非开源的,比如 [[Pocket]],[[Instapaper]],也都是过去非常不错的稍后阅读服务。
Omnivore 吸引我的一点是可以和外部的其他应用同步,比如可以和 Obisidian 同步,还可以接收 Newsletter。 另外还有一个吸引我的点就是,很多宣称可以代替 [[Readwise]] 阅读器,这也是一款我关注了很久,但是还没有深入使用的在线阅读器。 所以这篇文章就来介绍一下它。
功能:
[email protected]
的邮箱地址,在订阅的时候使用该地址,所有发送到该邮箱的订阅内容都会自动存在 OmnivoreOmnivore 可以通过很多方式来添加阅读源
Omnivore 提供了如下几个方式了帮助整理
label:Newsletter
label:Cooking,Fitness
label:Newsletter label:Surfing
label:Coding -label:News
in:inbox
in:archive
in:all
is:read
is:unread
type:articel
type:file
type:pdf
type:highlights
has:highlights
sort:saved
依据保存日期排序sort:updated
根据更新时间排序sort:score
根据相关度-asc
或者 -des
来调整升降序sort:saved-asc
sort:updated-des
将数据发送到其他应用,比如 Logseq,Obsidian,或者通过 API,或者 Webhooks 的方式和其他系统进行集成。
目前 Omnivore 支持四种类型的事件
如果有外部的系统集成,可以根据这四个事件类型去触发。
笔记本电脑用了 3 年多,各种媒体材料,尤其是音乐我喜欢放在本地,以及各种应用程序基本上已经把磁盘自带的空间占满了,这两天刚好看到日亚有促销活动,可能是看我之前搜索过 SanDisk E61,E81 ,所以推荐里面直接推送了一个三星的 T7,看了一下价格只要 10600 JPY,用 Keepa 对比了一下历史价格,以及京东上的价格,感觉还挺合适的,就下了单。
我原本预想就很小,但是到手发现是真的小,和信用卡比了一下,正好是一张信用卡大小,感觉是产品设计的时候特意的,因为和信用卡放在一起也几乎看不出来。
外观
几乎只有 1/3 的硬币直径。
可以看到 T7 的厚度几乎和 iPhone 13 一致。
和 iPhone 相比,大小也非常小。
手持大小。
直接看网上的 电子说明书
T7 默认情况下已经格式化成 exFAT 格式,兼容 Windows,macOS,Android 系统。用户也可以根据自己的常用系统自行格式化。
文件格式 | Windows 系统 | macOS |
---|---|---|
exFAT | 读取和写入 | 读取和写入 |
NTFS | 读取和写入 | 仅读取 |
HFS/HFS+/APFS | 无法读取 | 读取和写入 |
Samsung T7 可以用自带的软件实现磁盘加密。
使用 Disk Speed Test 在 macOS 下测试速度,虽然没有达到理论速度 1050 MB/s ,但日常使用也够了。
买这一块 1T 的固态也只是用来做一下应急处理,主要是家里的 NAS 没有带在身边,而使用普通的硬盘处理 Lightroom 中的照片也略慢,所以临时用这一块固态硬盘来应急一下。如果是存储重要的资料,我个人还是会用类似 Duplicacy 等增量备份工具多地备份一下的。更具体的可以参考之前的备份方案。
[[对象存储]] 的英文是 Object-based Storage System,是一种将数据以对象的形式存储在分布式系统中的服务,而不是传统的文件系统或者块存储。
对象存储服务提供商通常提供以下功能和服务:
一些知名的对象存储服务提供商包括亚马逊 S3(Amazon S3)、微软 Azure Blob Storage、谷歌云存储(Google Cloud Storage)等。这些服务可以根据用户的需求来选择,并根据使用量进行付费。
那么除了上面提到的这些云服务商,还有哪些服务商提供免费的对象存储服务呢。
Oracle Cloud Object Storage 包含了 20 GB 的免费存储空间。
[[Backblaze]] 是一个云存储解决方案提供商,其提供了类似 [[AWS S3]] 的在线块存储服务。 Backblaze B2 价格要便宜一些。并且前 10GB 存储是完全免费的。和 AWS S3 一样,需要为带宽付费,但是通过 Bandwidth Alliance,在 Backblaze 和 Cloudflare 之间的带宽是完全免费的,这也就意味这如果通过 Cloudflare ,那么使用 Backblaze 也就不再需要考虑流量的问题。
Storj 提供的分布式存储可以创建三个项目,每个项目都有 50GB 存储,以及 50GB 流量可以免费使用。 也就是达到了免费的 150G 存储。1
1:https://docs.storj.io/dcs/pricing
免费的对象存储,特点:
Storj 目前只有 AP/US/EU 三个地区有服务器,访问速度可能会受到一定影响。并且目前 Storj 在初创时期,其商业模式是否能为继续也是需要继续考量的。
Contabo 发布的 Object Storage 对象存储,起步价 250GB,2.99$ (2.49 欧元)一个月。不限流,提供 DDOS 防护,兼容 S3 。
目前有欧洲,美国和亚洲三个地理位置。
在刚推出该项目的时候还提供了 20% 的额外优惠,只需要 1.99 欧元(2.49 美元)。1
注册 Scaleway 帐号之后可以获得 75 GB 的免费存储空间。
前段时间看到一篇文章说因为 Nginx 的一个「特性」,在直接访问 IP ,并且没有配置默认证书的情况下 Nginx 就会返回一个 SSL 证书从而倒置域名的泄露,进而泄露了网站的源 IP,使得一些扫描网站,比如 [[censys]] 可以直接查询到域名背后的网站 IP,从而导致网站即使用了 CDN 也会遭受到攻击。在这个契机下,我又开始了衍生,因为在 censys,[[fofa]],[[Shodan]] 等等网站上你只需要输入一个域名就可以获得所有这个站点相关的信息,那么有没有办法可以在只知道一个网站域名的情况下知道所有的二级域名呢。
于是抱着这个新想法,进行了一番调查,果然还是有办法可以知道的。我最最朴素的想法就是写一个遍历,直接通过随机的字符串,[a-z0-9\-]
等等字符的组合,然后进行这些域名检查,ping,dig 的结果,如果有返回,可以认为这个子域名被启用了。但是很显然这个想法的效率太低了,并且遍历这么多无效的域名前缀很显然没有办法最快的找到所有的。
然后我就找到了 [[MassDNS]],一款使用 C 语言编写的高性能子域名扫描工具。它通过使用自定义的 DNS 解析器和并发查询来加快子域名的发现速度。MassDNS 支持使用字典文件进行子域名爆破,并提供了丰富的配置选项来优化扫描过程。 MassDNS 还支持自定义的 DNS 服务器,并可以通过设置最大查询时间和最大重试次数等参数来控制扫描过程中的超时和重试行为。此外,它还提供了多种输出格式,包括文本、JSON 和 CSV,以便用户根据需要对扫描结果进行分析和处理。 使用 MassDNS 进行子域名扫描非常简单,只需指定目标域名和字典文件即可开始扫描。它还提供了多线程支持,可以根据系统资源情况调整并发线程数量,以实现更快的扫描速度。
然后我又循着脉络找到了 OneForAll 这样一个开源的工具,它是一个功能强大的子域名收集工具,集成了非常多的工具,从它的官方介绍上也可以看出来它收集子域名的思路和方法。
censys_api
,certspotter
,crtsh
等等axfr
cdx
cert
csp
robots
sitemap
dnssec
archivecrawl
,commoncrawl
首先获取 OneForAll 的代码
git clone [email protected]:shmilylty/OneForAll.git
通过 pyenv 或者其他熟悉的工具,安装 Python 依赖,然后执行
python3 oneforall.py --target douban.com run
很快就能获得一个 CSV 的结果。
Dokku 是一个开源的 PaaS,用户可以非常轻松地构建自己的 PaaS 云平台。
在深入了解 Dokku 之前,先来了解一下什么是 [[PaaS]],PaaS 的全称是 Platform as a Service,平台即服务。典型的产品有 [[Heroku]],[[Vercel]] 等等。
PaaS 作为一个平台提供给了开发者构建,部署,管理应用的能力,开发者不再需要关系复杂的基础设施,比如操作系统,网络,硬件等等。PaaS 提供商通常提供开发工具,运行时环境,应用管理后台等等。除了上面提到的 [[Heroku]] 之外,AWS Elastic Beanstalk,Google Apple Engine,Microsoft Azure App Service。
与之对应的概念还有
传统的 IT 基础设施需要运维人员从下到上管理
而上面提到的概念则是将不同的部分组合,一步一步简化了开发程序的过程。开发者关系的细节越来越少,与此同时可以在此基础上构建出丰富多彩的应用程序(SaaS)。
Dokku 是一个使用 Go 语言编写的,开源的,最小化的 PaaS 平台。
环境要求:
Dokku 官网文档上有很多的安装方式。推荐的安装方式是直接用一台全新的 VPS,直接安装。我尝试使用 Docker Compose 来安装,发现端口映射以及 SSH Key 配置要麻烦很多。
Dokku 自身不支持数据库,但是可以通过插件的形式来支持。从传统的 MariaDB,[[PostgreSQL]],到 [[CouchDB]],[[Elasticsearch]] 等等,都可以从这个链接 查看。
因为 Dokku 是一个 Heroku 的最小化实现,所以 Heroku 在 GitHub 仓库中的所有例子都可以在 Dokku 这里使用。
如果安装好 Dokku,之后部署应用的步骤基本上也就是分成两部分,在本地完成代码,然后添加 Dokku 为远程,直接将代码推送到远程。
mkdir my-app
cd my-app
npx create-react-app .
git remote add dokku [email protected]:my-app
git push dokku master
更具体的部署操作可以查看这里。
Dokku 默认会使用 Heroku Buildpack 方式部署应用。Buildpack 由一系列脚本组成,会自动完成检测、构建、编译、发布等工作。
目前已支持 Ruby, Node.js, Java, Python, PHP, Go 等众多类型的应用。
创建应用
dokku apps:create $APP_NAME
借助 Dokku 可以让你不在受限于 Firebase,Amazon Elastic Beanstalk,或者 Heroku 的平台,并且 Dokku 和这些服务相比丝毫不差。但于此同时,你需要自己维护 Dokku,并自己管理 Dokku 扩容以及 Dokku 运行的环境。
之前 zlibrary 的域名被取缔也曾经是一度的热门,但是 zlibrary 并没有就此消失。这篇文章就介绍几个继续使用 zlibraray 的小技巧。
zlibrary 的很多域名都被 sized 了,包括
但是 zlibrary 似乎搜集了很多不同顶级域名,虽然一直在被取缔,但是还一直有可访问的网址。我之前的文章 其实一直再更新。这里就放两个,如果还有更新我一般会更新到之前的文章里面。
在使用自己的账号登录 zlibrary 之后,在我的页面中,可以找到绑定 Telegram Bot 的地方,
登录 zlibrary 之后,点击右上角
找到这个 Telegram Bot ,根据这个提示,在 Telegram 中创建 Bot,然后获取 Bot 的 API 。将这个 API 粘贴到网页上。
或者直接编辑个人页面,找到页面下方的 Personal Telegram bot
在绑定了 zlib Telegram bot 之后,只要发送书名,就可以返回搜索的书,然后可以将书转发到我写的 KindlePush bot 中,发到 Kindle
初次使用 KindlePush Bot 需要设置一下邮箱和帐户名密码。
使用账号登录 zlibrary 登录之后可以获得两个私人的访问地址,可以保存到收藏夹然后就可以通过这个私人地址去访问了。
也可以使用如下的脚本
会在界面中添加一个按钮用来在 [[IPFS]] 网络中下载。
通过 IPFS 下载可以不占用 Zlibrary 的配额。
很早之前整理有关日本的书籍的时候就看到过,但是最近拿起来这本书还是因为在公司的书架上看到了,然后就借回家读了读。
蒋丰,对其人不太熟悉,看了一下书封面上的介绍,是 《日本新华侨报》的总编,在日本已经呆了 30 多年了,所以也就有了观察描写日本的资格。
之前在总结日本文化相关的书籍的时候,我自己做了一个分类,比如说有美国人旁观者身份去写的《菊与刀》,英国人写的《剑桥日本史》,有日本人自己写的《战后日本经济史》,还有中国人的观察笔记《静观日本》,对于日本这样一个主题能找到非常多的视角。而这一本《日本的细节》就是从一个现代中国人的视角重新去看日本生活中的细节。
作者通过如下的几个方面,对日本生活的方方面面细节进行了描绘。
这本书抛开了所有宏伟的历史叙事,而仅仅是将当下,现实的日本生活中的细节,一一展现在读者面前。
这本书给我的最大收获就是让我看到了,日本社会的变化,正如书名《日本的细节》作者截取的当下日本生活的截面,但是放到历史的纵向,让我看到了为什么会变成这样。
从这些变化上面也能看到,日本从来就不是那个遵守规则,文明开化的社会,但是能看到的是每一次社会出现问题,就立马会进行调整,纠错。这两天在 Twitter 上也看到了有人来日本旅游,高赞生活中遇见的一切,温热的马桶座垫,拥有不会缺纸的公共卫生间,干净的街道等等。但是我想说的是,每个国家都有每个国家的优点,每个国家也有每个国家的缺点,日本不是一个完美的国家,这个世界上也不存在一个完美的国家,但是这个世界上存在会进步(纠错)的国家,存在保守固执的国家。
日本的交通问题,食品安全问题,医药分离问题都是非常大的问题,甚至森永奶粉受害者们成立的自治受害者协会花了 10 年的时间才让森永低头认罪。这一下子就让我想到了 [[托克维尔]] 在 [[论美国的民主]] 中他观察到美国的[[公民自治]],观察到的自治团体在社会中产生的作用。而日本显然是有这样的自治团体出现的土壤的,人们会为了同一个信念而构成小团体,进而去纠正这个社会的错误。
我过来日本这边也过去了半年,本来在过来一个月的时候就想写一篇总结,但因为拖延症,所以一拖再拖。但是读完这一本书又让我想起了,当时我想写没有写出的「细节」。
对日本这个社会,国家比较感兴趣的人。