网络寻租

Programmer, Gamer, Hacker

远端零热水方案

| Comments

家里厨房和卫生间很可能不在一个地方,热水器距离卫生间过远,需要热水的时候就要等很久。 为了能够让家里的水龙头立刻就有热水出来,需要改装。

循环水方案

热水器到所有的热水出口设置一个循环水路,里面接一个水泵,如果需要用热水,提前开启水泵,整个循环水路里面就都是热水了。

缺点是需要遥控器来控制水泵开启,也要等一会儿。如果一直开启水泵,电费很贵。

直接放水方案

如果距离不远,直接开启水,等到热水即可。问题一个是浪费水,一个是需要等待。其实水很便宜,浪费一些说不定比改装便宜。

小厨宝方案

远端下面装一个小厨宝,入口对接热水器和冷水用阀门切换,大量用水接热水器,少量热水接冷水。可以达到立刻用热水的目的。

家庭网络没必要上万兆

| Comments

现在家庭网络普遍使用的是千兆,是否有必要升级呢?

首先看需求。可能带宽不够的情况:

  • 大文件拷贝?只是少数情况,稍微多等一下就好。
  • 远程游戏和高清视频?4K屏幕,60hz刷新率,需要带宽11.4Gbps,10G可能都不够,但是视频传输可以压缩,80MB/s应该够了。

然后如果需要改造升级,需要考虑:

  • 速度卡在瓶颈,硬盘瓶颈200MB/s就很多了,换用SSD或者NVME提升明显。
  • 更换设备要全部换,路由器,双端的网卡,万兆的商用退役设备很便宜,光口短距离也可以用电缆直连,不需要光电转换模块,如果想买新的设备,2.5G的TP-Link价格也下来了,还有便宜的2.5G网卡。
  • 万兆的设备功耗更大,也需要考虑进来。
  • 如果需要提升延迟,那么最大的提升就是无线换有线,升级速率提升不大。

所以我考虑的方案:

  • 如果没有出现性能瓶颈,不需要升级,需求还不够强烈。
  • 如果要升级,少数需要高速的网络单独买2.5G交换机加上2.5G网卡,或者万兆的交换机,单独组一个高速子网就好。

笔记本结合台式机开发方案

| Comments

作为程序员,需要移动工作,同时开发环境也比较复杂,便携的笔记本性能不够,就算是再好的笔记本也会有功耗墙来阻止性能的发挥。

我的方案是:便携笔记本电脑结合强力台式机进行开发。方法是这样的:

编辑代码需要快速反应,所以编辑代码还是要在笔记本里面,修改自动推到台式机上。

1
lsyncd -nodaemon -insist -delay 0 -rsyncssh user/workspace/project/ pc user/workspace/project/

台式机有代码和开发环境,跑代码在后台tmux里面,如果不用了就休眠 sudo systemctl hibernate 需要使用的时候就用wakeonlan唤醒,ssh登录上去进行操作。

1
wakeonlan MAC; while [ True ] ; do ssh pc ; sleep 1 ; done

笔记本转发台式机的开发环境网站端口到本地,循环监控保证断点续连。

1
while [ True ] ; do ssh -N -L localhost:3000:localhost:3000 pc ; sleep 1 ; done

如果是在外面,需要想办法连回家,我的实现方式是家里面有一台24小时开机的服务器,跑wireguard,路由器有外网ip和ddns,转发wireguard端口, 这样我在外面就可以通过ddns的地址连到wireguard端口,进入家庭内网了。

其它考虑:

  • 跑通之后,就可以只用轻量级笔记本了,但是轻量级笔记本还是需要使用网页,看视频,开IDE,性能也不能太差。
  • 有的时候不需要使用台式机的时候会忘记休眠,可以写一个脚本断开一段时间后自动休眠。

智能家居之灯光改造方案

| Comments

灯光控制有几类需求:

  • 只需要开关:普通灯
  • 调整亮度:渐开渐关的效果更舒服
  • 冷暖双色调光:主流需要调整灯光颜色就只需要冷暖
  • 颜色调光:一般情况下不需要,家里不是舞厅

控制灯光最好的方法还是有线方法:

  • 灯线都走电箱,控制器都放电箱导轨上面。
  • 用模块控制:开关模块,LED 0-10v调光模块,调色模块。
  • 开关控制走485总线或者KNX总线,485转IP,上面还可以再用home assistant控制。

image

这样价格可能高一些,但是有线带来的稳定性不是无线可以比拟的。

不过大家一般不会在装修阶段思考清楚这样设计,最后主要还是改造方案。

  • 网络方面最好采用zigbee协议,只组网,更少干扰。
  • 改造主要几个维度:是否换智能灯,开关是否有零线,是否多控。

如果灯具是智能灯,开关通断会影响智能灯的工作,必须保持常通的模式。

  • 有的智能灯支持凌动开关的模式,原理就是开关保持常连,按一下就是快速断开连上,智能灯可以识别这个脉冲变化切换开关,但是对电源有冲击,个人觉得最好不要用。
  • 有的智能灯有的支持433射频开关,这样废弃掉旧的开关,用无线433射频开关控制。
  • 如果实在不行,就只能用无线开关接入,用home assistant总控配置了。

如果是非智能灯,需要购买一个智能通断模块,放在开关处或者灯处。

  • 一般电灯开关的走线方式是只走一根火线,开关控制火线的通断,火线再接到灯上,零线连到灯。
  • 这种情况下,智能模块放到开关处就没有零线了,需要购买单火的智能模块,原理是保持一个微弱的电流让智能模块工作, 副作用是灯那边也有电流,可能出现微亮的情况。如果是zigbee模块,这个电流就比较小,影响不大。
  • 如果不想用单火模块,就需要把智能模块放在灯上面,开关保持常闭,另外接无线开关(同上面智能灯的方法)。

如果灯具需要多控,分情况:

  • 如果火线的入口和出口都在一个开关处,只要换一个单火模块串进来就可以了。
  • 如果不在一个开关处,可以串联起来,用凌动开关,这样一个开关发出脉冲信号,通断模块就可以开关。

智能家居之全屋音乐方案

| Comments

目标:每个房间都有音箱,可以通过手机以及智能中控根据需要在每个房间播放音乐。 可以同时播放同一首,也可以不同房间播放不同的音乐。

选择协议:airplay2,支持多个音箱同时播放,并且有时序控制保持播放进度一致。 可以用iphone手机控制播放什么音乐,同时linux也有插件可以输出到airplay。

选用设备:如果有钱每个房间丢一个homepod,但是价格比较贵,我的方案是用便宜的电视盒子做主机, 操作系统armbian,按照这里的教程编译安装Shairport Sync这种开源的airplay2实现。 设备选择M401A电视盒子或者N1,usb声卡PCM2704,音箱找一个淘宝桌面音箱就可以。

ubuntu接入airplay方法如下,然后就可以局域网内自动发现和手动选择输出设备了。

1
2
3
4
sudo apt-get install paprefs pulseaudio-module-raop

# 处理pulseaudio问题
sudo ln -s /usr/lib/pulse-13.99.1/ /usr/lib/pulse-13.99

价格:电视盒子72,usb声卡20,音箱158,控制通断的wifi开关插座20。

实现的场景: – 想要听音乐的时候,用HA开启wifi开关,手机音乐软件播放音乐,选择airplay输出的音箱。 – 未来还可以接入Home Assistant,armbian里面跑VLC telnet,HA控制播放声音提醒。

为什么要搞智能家居

| Comments

在入住了新买的二手房之后,我研究和实施了简单的智能家居改造,现在基本成型,我认为现阶段智能家居已经足够亲民,可以推荐给所有人了。

首先是智能家居的必要性,为什么有必要搞智能家居?智能家居到底有什么东西?智能家居没有必要搞?

智能家居的准备:

  • 电器接入:可以控制和观察的电器都智能化,主要有电灯,空调温度控制,湿度控制,窗帘电机等。
  • 传感器接入:每个房间的温湿度,人在传感器,门窗开关传感器。
  • 智能化控制逻辑:根据传感器的状态,以及预设的逻辑,来进行智能化操作。

做到上面几个层面,就可以进行下面的操作:

可视化和可控化:可以观察到全家的灯光,电器使用状态,并且可以控制。 这是我觉得最大的好处,配置好之后手机上面一张户型图标好各种电灯电器,一目了然地掌握家里的状态:

image

场景化:使用家庭空间本质是场景化的,比如正在工作,休息,娱乐,会去调整家电(比如开关某些灯,开启电视,关闭窗帘,放下投影幕布等),手动调整比较费力,一键进入场景,就可以同时控制多个家电进入状态。

智能化:配上传感器之后,就可以根据传感器判断状态,把本来需要人工判断和处理的事情都智能化,比如:

  • 接近到家自动开空调,到家开灯播放音乐
  • 早上自动开热空调,开灯,帮助起床
  • 厕所,储物室根据人在自动开关灯
  • 下雨了自动关灯

构建方法:

  • 智能控制中心采用home assistant,开源的智能家居系统,可以接入大量的设备,包括米家,各大空调品牌的智能设备。
  • 传感器,开关等智能节点购买zigbee的设备,专门用来做智能家居的协议,更稳定。有线控制其实更稳定,但是需要装修阶段搞定,并不适合所有人。
  • 购买zigbee usb网关(sonoff品牌的那个),用 z2m 接入所有第三方的zigbee设备,先上网站看看设备是否可以接入再购买。
  • 设备要能够直接接入home assistant,不要用第三方的网关和主控,因为不够开放,不能把所有的设备都接入到一个地方,智能化操作就受到很大限制。
  • home assistant可以对接homekit,手机siri可以语音发出命令控制全屋电器。

改造智能家居现在已经不怎么花钱了,费用:

  • home assistant 闲置主机,电视盒子刷系统100多,拼多多可以直接买刷好系统的。
  • zigbee usb网关:100
  • 全屋灯智能改造:一个灯的zigbee通断模块50,一起预估500。
  • 各种传感器:移动传感器,门窗开关传感器,根据需要加,一个30左右。闲鱼有便宜的京鱼座套装,90元带有开关,门磁,插座,人体传感。
  • 窗帘电机:300一个,根据需要加。我觉得太贵没有加。
  • 智能家电:空调,新的空调都智能化了,基本大品牌都可以直接接入home assistant。

如何做到不带包随时远程工作

| Comments

需求

外出的时候,如果没有带笔记本,只能刷手机浪费时间,如果能够随时远程工作就好了。

首先外出的时候如果带了包,就可以装轻薄笔记本, 但是带包加上带笔记本比较麻烦,有没有随身的解决方案?

实现方法

首先不考虑随身设备本地开发,准备多套环境太麻烦了,并且性能不够。 开发主力机平时放在家里,随身的设备远程连进来。

方法:找电信运营商要到外部IP,路由器端口转发到本地电脑ssh端口。 ssh协议是安全的,不用担心暴露出去。

本地电脑开放ssh协议,通过密钥登录,开发环境用 tmux + emacs,可以在终端里面进行开发工作。

外出设备是难点,显示和输入必须随身。

输入设备:

  • emacs快捷键是组合键,必须用键盘,不能通过触摸屏解决,同时键盘操作效率才过的去。
  • 随身蓝牙键盘的体积必须能够放到口袋里,不方便带就不愿带了。
  • 键盘的键位必须是标准的,非标键位使用太难受。
  • 综上所述,考察了现在能够买到的价格适中的产品,选用BOW的HB188s

显示设备:

  • 不考虑笔记本电脑和平板,不能放进口袋的设备都不方便,不考虑。
  • 所以只能是手机,屏幕尽量大。
  • 考虑折叠屏手机:现在设备还是太贵,不考虑。

手机软件用termius,免费版本就可以用需要的功能了,可以保持ssh连接, 同时带有端口转发功能,可以把开发机上的web app转发到手机里面,用浏览器看效果。

效果

开发状态

以后出门只需要多带这个折叠键盘在口袋里,就可以保证随时随地进行开发工作了。适用场景:

  • ssh连服务器开发
  • emacs访问本地的个人笔记
  • emacs开发各种程序

遗留问题:

  • 屏幕还是小了一些,需要换大屏幕手机。
  • termius + tmux + emacs下中文输入法很不方便,显示错位。
  • 必须要有台面,不能坐下就可以做事。

更合理的文件备份方法

| Comments

重要资料需要通过备份保证不丢失,这里整理一下我研究的备份策略。

首先资料应该远程备份,不能和当前的存储介质在一个区域,不然出事了就一起完蛋了。

资料备份应该自动和定期,手动太繁琐,很容易坚持不下去。不定期备份起不到备份的效果。

资料应该可以增量备份,不然空间占用太多。

增量备份需要和备份比较计算,所以远端机器必须参与计算。 现在大家常用的工具是rsync,但是并不能很好地做到增量计算。

我推荐用borgbackup, 服务器安装borgbackup之后,并不需要跑服务,执行备份的时候,会通过ssh执行服务器端的可执行文件来跑服务器的工作,架构比较简单。 其它还有一些工具都比较重量级需要跑服务,就不推荐了。

安装:sudo apt install borgbackup

本地机器可以通过命令行工具查看备份,比较备份结果,把某个历史镜像加载到本地,具体可以看教程, 或者快速例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mkdir -p ~/data/workspace/borg
cd ~/data/workspace/borg

borg init -e none backup
borg create backup::1 data
borg create backup::2 data
borg list backup
# 1                                    Wed, 2020-10-28 13:55:56 [xxx]
# 2                                    Wed, 2020-10-28 13:56:13 [xxx]

# 换名称
borg create backup::`date +%FT%T` data

# list files
borg list backup::2
# recover
borg extract backup::1
borg extract backup::1 data/a.txt

borg delete backup::1

borg diff backup::1 2

# 加载备份到本地,可以拷贝需要恢复的文件出来
borg mount
borg umount

如果需要定期备份到远端, 本地机器加上一个cronjob定期跑备份即可:

1
2
crontab -e
1 14 * * * ~/scripts/backup_laptop.sh

脚本内容在这里

小型IT系统如何架构

| Comments

整理一下如何管理好一个小型的IT系统架构。

除了大公司,大多数的小公司都不太会有高性能的需求,瓶颈主要在于管理复杂度, 这里整理一下我的解决方案。

首先所有服务都上云,基础的模块是VPS,没有必要自己拥有机器,同时云服务并不通用。

VPS本身是可丢弃的,存储采用云存储架构。这样保证可用性,架构上也保持简单。

服务器采用ansible构建,构建脚本用git管理,这样就有一个全系统架构的索引和记录, 配置文件另外用加密git来保存。

可以用docker跑一些app,这样方便在各个vps之间转移,如果不需要可伸缩,不需要k8s这种重量级的方案, 手动准备docker-compose文件就好。

所有持久化用云存储:云数据库,key value文件数据库,采用AWS或者另外构建云存储架构。

VPS本身出现问题,可以快速用ansible重建。

云存储可以单独思考如何做备份,以及灾难演练,包括服务挂掉,数据丢失和损坏。

如何解决人口老龄化问题

| Comments

中国现在的生育率越来越低了,随着新生人口的减少,中国慢慢变得老龄化,后续问题很严重。

为什么现代人不生小孩

主要是生小孩能够获得的收益太少,投入又太多。

以前农业社会,普通人获得生产力不需要经过长期的学习。 娃能够吃饱,活下来几岁的时候就可以帮做家务,十几岁就可以投入农业劳作。 同时农村丛林社会,不多生的族群很快就被干掉,激励大家努力多生。

现代信息化社会,普通人需要经过很长的教育时间(姑且不论是否必要和有效率),能够给家族带来价值的周期太长。 社会舆论上,也没有约束子女给父母赚钱的义务,父母也很难强迫。 反过来,因为优生优育观念盛行,社会舆论对于父母不对子女投资有很大的压力。

家族养老变成了社会养老,家庭交社保和投资获得保障,不生小孩经济上是有利的,通过社保,投资资产的方式,让生小孩的家庭补贴不生小孩的家庭。

资本主义下,消费主义洗脑,让所有人更愿意把资源投入在花钱享受上。“工作主义”洗脑,女性更愿意通过工作来体现自己价值,而不是生育。资本获得了收益,个体利益损失了。

简而言之,父母养小孩风险大,收益少。

从供给上看:

人口其实很大程度上是有多生意愿的家庭创造出来的,很多人就是不想生,或者生的少,多生家庭可以一直生下去。计划生育把他们都限制死了。

超长的教育年限,压缩了育龄女性的生育时间。单身女性生育也不受鼓励。

一夫一妻制度让男女资源错配,优质男性很快被消耗光,同阶层女性无法匹配到适合的优质男性。

生育率下降的问题

如果大家都不愿生育,模拟一下会怎么样?

  • 下一代人口减半,干活的人少了,真实的GDP随着人口的减少而下跌,
  • 物资少了,货币不变,造成通货膨胀,所有和人相关的服务都涨价得厉害。
  • 老人存的钱和财富变得不值钱,社保作为庞氏骗局破产,很多老人只能出来继续工作。
  • 国力下降,竞争力下降,被外国压迫,GDP降低更多,生活水平螺旋式下降。
  • 年轻人都变成香饽饽,到处都抢年轻人。

人口数量没有瓶颈

有的人说,人口多了,环境压力大,地球养不了太多的人口。

其实现在生产力已经发展到普通人创造的价值远远高于人类本身的消耗,人口是核心资源。

现代社会主要的瓶颈在处理信息,能源是不缺的,可以工业化大生产的东西都便宜到吓人,处理信息电脑只是杠杆,基本面还是要靠人脑。

保障人幸福和健康的基础维护成本很低:一个100平的水泥格子,可以工业化大生产的粮食,肉和蔬菜,再加上维持网络和出行的电力。 其他的娱乐和服务基本是信息化的,大规模复用下成本很低。 普通人创造价值超过这些,可能只需要每天工作不到4小时,更别说人才和精英了,在信息化杠杆下,创造的价值可能是百万倍。

人口增长的瓶颈可以很高很高,地球环境下可能一万亿都不成问题。

如何增加人口

现在一些老龄化国家有各种政策鼓励生育,但是效果都不是很好。因为并没有很好地解决生小孩收益低,风险大的问题。给钱,减税给不了多少钱,只能改善一点点。 针对性把生育的劣势减少,加强优势的部分,其实可以解决的。

  • 养老权利和义务对等:多生育可以获得更多社保和养老收益,不生或者少生降低甚至没有收益。
  • 增加女性生育收益:放开婚育限制,单身女性可以自由生育,自由选择男方,同时可以通过生育养育过程获得收益,比如代孕,比如非婚生育从男方获得赡养费(很多有钱人愿意付钱多子女)
  • 保障多生群体积极性。有钱人愿意并且有资源多生,只是被各种限制住了。
  • 呼吁数量大于质量,扭转教育内卷的不正之风。
  • 呼吁女性家庭比工作重要。生小孩是自己的,工作是老板的。

至于生育人口耗尽,生不了多少的问题,现代生产力发达,有的是办法解决。 只要政策放开,有钱人通过代孕的方式,购买生育服务。中国女性如果受不了苦,还有外国穷国女性可以生。

模拟一下:代孕一个人需要花费100万,养育一个人,包括吃住和看护教育费用每年10万,养到20岁可以工作,需要200万,一起要300万,再加上父辈有钱人的社会资源和智慧传递,一年算平均赚30万(不算天才可以创造千百倍收益),可以6年投入回本,后续都是赚的。

创造1000万人口,需要30万亿,现在1年GDP可以创造3千万人口,补回来还是有可能的。