Linux Bash
2022-12-16
我一直用 zsh + omz,但是毕竟 bash 才是大多数情况下的默认 Shell。
zsh 和 bash 都是用上下键来搜索历史记录,但是不同的是,zsh 会利用已经输入部分做前缀匹配,而 bash 不会,只是简单的上一条、下一条。
今天学会一个方法(Bash history search, partial + up-arrow):
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'
凑活凑活吧。
已经加到我个人的 bash 配置中。
Golang
2022-12-15
f1.go
package main
var A int = 3
var B int = A + 1
var C int = A
f2.go
package main
import "fmt"
var D = f()
func f() int {
A = 1
return 1
}
func main() {
fmt.Println(A, B, C)
}
执行
markjour@victus ~/test02
$ go version
go version go1.18.6 windows/amd64
markjour@victus ~/test02
$ go run f1.go f2.go
1 4 3
markjour@victus ~/test02
$ go run f2.go f1.go
1 2 3
分析
f1f2 的情况下:变量初始化的顺序应该为 A B C D,所以输出 1 4 3 是没有问题的。
f2f1 的情况下:变量初始化的顺序应该为 A D B C,所以按理应该输出 1 2 1,实际确实输出 1 2 3。
f1 中 A C 中只要一个的初始化改成这样就可以符合预期:
func initA() int {
return 3
}
func initC() int {
return A
}
这是 Go 的一个 BUG,即将在 Go 1.20 修复。
知道就行了。
参考资料与拓展阅读
时事 COVID19
2022-12-13
封控
由于疫情的封控措施导致官民矛盾非常激烈,到处都是对抗。
我自己小区就有暴力冲突,社区工作人员和物业保安群殴 “闯岗” 租户。我所知道的周边小区也是差不多。其他的某些地方甚至是聚集性的大事件(抖音删帖非常严重)。
这些 “小浪花” 单独拿出来,可能觉得是和物业在斗争、和大白在斗争、和社区工作人员在斗争,实际上背后是对镇府不作为,不敢担当的不满。
市镇府肯定知道下面的情况,可是没有做任何干涉。在一定程度上我能理解,一方面上面有这 m 条、那 n 条,要求 “精准防控”,尽可能开放,一方面又对防疫不力的地方杀鸡儆猴(就没见到几个因为过度防控而收到严厉处分的)。
但是:
第一,居委会作为居民自治组织,没有执法权,将居委会推到一线,给大家封路、封门、钉板子,凭什么。
第二,没有人能够出具有法律效力的(带公章)文件要求封控,经常就是群里发个消息,可能再带一张居委会的 A4 扫描件,也没有公章。问就是上级单位。
第三,小区封控起来之后,物质的供应方面,镇府没有任何作为。
本来我们都在小区铁门内买,门外门店老板递过来,结果工商(?)的一天查几次,要求他们关门,所以经常要到处找哪里有卖菜的地方。
我在买菜的时候,还听到一起买菜的人在说,工商要我们在家吃几天面条挺过去。
本来大部分人都不用和镇府打交道,因为疫情防控的关系,大家直接面对面了。
还有,大家在传核酸企业的一些传闻,这个我不了解情况,就不评论了,但是证监会给他们上市割韭菜的机会是为什么?
注:如果要出小区,需要社区出具的一个小纸条,注明原因,承诺两点一线,物业的检查方面也非常松,基本上是看到拿出来一个纸条就放行,并且没有时间限制。
解封
上面是之前的情况,最近这两天风向来了个 180° 的大转弯。之前是应检尽检,一天几次的在小区群里催大家下楼做核酸。突然一声不吭,
- 做不做核酸都是绿码了,同样没有见到官方的任何说法。
- 一天之内开始拆除所有路障。
- 减少撤销小区周边的便民检测点,残存的几个检测点还在大喇叭喊话,如果没有必要尽量不要做核酸(混管),不要连累家人邻居被封。
- 又两三天之后,所有地方都开始强调不检查核酸绿码了。
感染
再就是身边慢慢星星点点听说有人发烧、有人自测阳性。
药店基本上感冒发烧消毒的东西,啥都没有,只能靠自己挺了。镇府在这方面(医药供应)还是啥都没作为。服了。
之前新闻联播里面天天说美国新冠的情况,现在也不提了。
之前说新冠好像非常严重,现在说是和感冒差不多,可以自己挺过去。
之前强调防控是保障人民的生命权,现在说放开是精准调研之后选择的最好时机。
现在这种从上到下都紧跟 ZZ 形势说话的氛围,做没有脑子的咽喉,让人挺没有信任感的。
虽然表面上看不太出来,但是从长远来讲,这都是信心的流失。
最重要的还是期间各级镇府的不作为。在不违反规定的情况下,其实有好多事情可以做,那样的话,也不会是现在这个局面。
政治
2022-12-01
-
街道,街道办事处,相当于乡政府,镇政府
-
工作人员是事业编制,少部分是公务员
法律依据:
法律依据:
法律依据:
- 《中华人民共和国民法典》
- 《业主大会和业主委员会指导规则》(建房[2009]274号)
参考资料与拓展阅读
- 网易,未经批准擅自组织业委会选举,临沂2人被刑拘!
...,在未经街道办事处和社区组织批准的情况下,...
- 北京市人民政府,社区和居委会的区别是什么?

工具
2022-11-30

BComp 之前过期也可以一直用,只是提示一下,现在不行了。
这是我在 Windows 平台上非常习惯了的一个工具。
作为一个做软件开发的人,搞这种歪门邪道,我还是会有罪恶感的,所以点进去看了一下官方售价,70 刀,瞬间没有罪恶感了。
网上找了几个注册密钥,都提示 “授权密钥已被吊销”,然后看到这个方法,亲测有效:
在注册表中删除这个条目:HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compare 4\CacheId 就行。
如果不知道我上面说的时什么意思,就把下面这段代码保存为 bcompAddTime.bat,双击执行。
如果提示 “没有适当的权限访问该项目”,就右键,管理员身份运行。
@echo off
echo
echo 开始删除 =====================================================================
echo
reg delete "HKCU\Software\Scooter Software\Beyond Compare 4" /v CacheID /f
echo
echo 删除完成 =====================================================================
echo
reg query "HKCU\Software\Scooter Software\Beyond Compare 4"
pause
SMS
2022-11-28
-
短信,Short Message/Messaging Service,SMS
- 1986 年 GSM 协议的一部分,最大允许 140 字节。
-
彩信,多媒体短信,Multimedia Messaging Service,MMS
- 支持文字,图片,音频
- 支持 300KB 内容(由运营商和手机终端双方面决定的)
Although the standard does not specify a maximum size for a message, 300 kB and 600 kB are the recommended sizes used by networks for compatibility with MMS 1.2 and MMS 1.3 devices respectively.
The limit for the first generation of MMS was 50 kB.
MMS 依赖 WAP。
发送彩信的时候,内容编码之后投递给多媒体消息服务中心(MMSC)(如果跨运营商,会中转到收信人运营商 MMSC)。
收信人运营商会确认设备是否支持 MMS,如果支持,就发送一个 WAPPush 通知,内容就是一个 URL,也就是才新内容的地址。
一般来说,默认都是需要收信人手动确认是否接收,如果同意接收就会连上 URL 下载内容在手机端浏览。(网页?)
-
闪信,Flash SMS
- 似乎有地方称之为屏信,展信
- 经常是政府机关或者运营商用来发送通知、提醒(如果用作营销就太恶心了)
- 可能存在的问题:部分机器不支持闪信,闪信相互覆盖
- 和 SMS 不同,据说是跟 USSD 有关
- 又有资料说是只有短信头不同,存疑,如果是的话,为什么没有看到伪基站大量投递闪信
- 根据网上的资料,CMPP 协议支持发闪信
-
影信,视频短信
-
富信,富媒体短信,Rich Communication Services,RCS
- 同样也是 GSMA 推出的协议(GSMA RCS UP 标准),2019 年成为 5G 标准的一部分。
- 文字,图片,音频,视频,地理位置,文件等,几乎微信可以发送的消息,这里都支持。
- 根据维基百科,RCS 可能也被称之为 Advanced Messaging,Chat,joyn,SMSoIP,Message+,SMS+。
- 【澎湃新闻】当地时间 12 月 2 日,谷歌发文庆祝短信问世 30 周年,称现在应转用富媒体通信(RCS),并顺便挖苦不支持 RCS 的苹果“消息功能还活在 30 年前”。
PS:苹果不支持 RCS。
-
5G 消息,5G 短信,RCS 的国内名称,其实和 5G 技术没有一毛钱关系,只是和运营商的 5G 业务绑定在一起
- 几大运营商都在推,试图将短信服务打造成微信(这么牛 B 的愿景,为什么我一点都没有感受到)
- 不走短信网关,走互联网。如果网络有问题,有回退方案,就是下面的 AIM 这种。
- 2020 年 4 月 8 日,中国移动、中国电信、中国联通携手 11 家合作伙伴共同发布《5G 消息白皮书》,三大运营商计划在 2020 年内推出 5G 消息。
- 2020 年 5 月 10 日,5G 消息 APP 上架。5 月 11 日,5G 消息 APP 因技术原因暂时下架。
- 2020 年 12 月 22 日,短信业务升级为 5G 消息,无需下载客户端,就可实现“消息即服务”。
- 2022 年 1 月 25 日,中国电信 5G 消息正式商用。
- 目前存在的问题:收费(他们的脑子是咋想的?);运营商和手机厂家各怀鬼胎;短信服务早已沦为接受验证码的工具,互联网即时通讯服务的城墙已经非常高了。
-
AIM 短信,智能短信,智慧短信,手机上的短信应用将普通文本短信渲染成更丰富的样式,还有交互的功能,可以打开轻应用,应用,H5 页面,拨号,打开地图等。
- 需要手机厂商支持
- 根据网上的资料,可能是深圳梦网推出的。
- 华为云智能短信 是一回事么?说是覆盖安卓生态。
- 又看到一种新称呼:5G 阅信
参考资料与拓展阅读
个人
2022-11-26
这三年,由于疫情,已经有好些次远程办公了(有时是在老家,甚至有次在旅游景点),相信很多人都是这样。
我没有体验过那种真正远程办公的工作氛围,只是迫不得已的把远程当做备选方案而已。所以现在只能基于我的这些经历说一下自己的思考。
- 通勤时间可以省了
- 在家吃更健康,起码更放心
- 要是就一个人吃,买菜、洗菜、做饭、吃饭、洗碗,这个时间成本,我觉得是不划算的
- 不要久坐,多站起来动动,看看窗外风景也是好的(我在公司也是时不时走一下)
- 最好要有一个属于自己的空间,没人打扰
- 总是被打扰,工作的体验也不好,任务没完成的压力会让人更累
- 和同事之间的沟通应该找一个更好的途径(目前没有)
- 在线通讯只能等回复,要是在公司,三分钟没有回复,我就可以找过去了
- 开发过程中无法保证一直盯着微信,我是做不到的,我也不喜欢总被打断
- 合理的值班制度安排很重要,值班者完全不安排其他需要投入较多时间精力的工作,保证在线回复和处理问题的速度
GitHub
2022-11-17
https://github.com/topics/static-site-generator
GitHub 搜索了一下,知名的静态网站生成器,大部分是 JS/TS 写的。
社区上经常见到的一些项目有 JS 的 Hexo,Ruby 的 Jekyll,Go 的 Hugo。
JavaScript
- gatsbyjs/gatsby

The fastest frontend for the headless web. Build modern websites with React.
- hexojs/hexo

A fast, simple & powerful blog framework, powered by Node.js.
- vuejs/vuepress

📝 Minimalistic Vue-powered static site generator
- netlify/netlify-cms

A Git-based CMS for Static Site Generators
- 11ty/eleventy

A simpler static site generator. An alternative to Jekyll. Transforms a directory of templates (of varying types) into HTML.
- react-static/react-static

⚛️ 🚀 A progressive static site generator for React.
- gridsome/gridsome

⚡️ The Jamstack framework for Vue.js
- metalsmith/metalsmith

An extremely simple, pluggable static site generator.
- getgridea/gridea

✍️ A static blog writing client (一个静态博客写作客户端)
- GetPublii/Publii

Publii is a desktop-based CMS for Windows, Mac and Linux that makes creating static websites fast and hassle-free, even for beginners.
Python
- mkdocs/mkdocs

Project documentation with Markdown.
- getpelican/pelican

Static site generator that supports Markdown and reST syntax. Powered by Python.
Ruby
- jekyll/jekyll

:globe_with_meridians: Jekyll is a blog-aware static site generator in Ruby
Rust
- getzola/zola

A fast static site generator in a single binary with everything built-in. https://www.getzola.org
Go
- gohugoio/hugo

The world’s fastest framework for building websites.
Pipenv
2022-11-13
~/.local/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 1.1build1 is an invalid version and will not be supported in a future release
warnings.warn(
~/.local/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 0.1.43ubuntu1 is an invalid version and will not be supported in a future release
warnings.warn(
~/.local/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 2.9.0.Odd.Olm is an invalid version and will not be supported in a future release
warnings.warn(
Pipenv 最近执行命令的时候会有这些提示,看这个意思是检测了一些 Python 包的版本不被支持。
用 traceback 排查之后,确认是在 Python PATH 下检查所有包的版本。
出问题的三个包是:
- distro-info
<LegacyVersion('1.1build1')> /usr/lib/python3/dist-packages
- python-debian
<LegacyVersion('0.1.43ubuntu1')> /usr/lib/python3/dist-packages
- Shredder
<LegacyVersion('2.9.0.Odd.Olm')> /usr/lib/python3/dist-packages
查找路径:
~/.local/lib/python3.10/site-packages/pipenv/patched
~/.local/lib/python3.10/site-packages/pipenv/vendor
~/Projects/Mine/staticize
/usr/lib/python310.zip
/usr/lib/python3.10
/usr/lib/python3.10/lib-dynload
~/.local/lib/python3.10/site-packages
~/.local/lib/python3.10/site-packages/mackup-0.8.33-py3.10.egg
/usr/local/lib/python3.10/dist-packages
/usr/lib/python3/dist-packages
相关代码:
File "~/.local/lib/python3.10/site-packages/pkg_resources/__init__.py", line 997, in __init__
self.scan(search_path)
File "~/.local/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1030, in scan
self.add(dist)
File "~/.local/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1050, in add
dists.sort(key=operator.attrgetter('hashcmp'), reverse=True)
File "~/.local/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2623, in hashcmp
self.parsed_version,
File "~/.local/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2671, in parsed_version
self._parsed_version = parse_version(self.version)
File "~/.local/lib/python3.10/site-packages/pkg_resources/__init__.py", line 122, in parse_version
print(''.join(traceback.format_stack()))
HTTPS TLS 信息安全
2022-11-11
HTTPS = HTTP + TLS
原来是 TCP -> HTTP
现在是 TCP -> TLS -> HTTP
提升了安全性的同时,降低了一些性能。
更重要的是,互联网基础设施层面开始淘汰 HTTP:
- 包括谷歌在内的浏览器厂商将使用 HTTP 访问的网站标记为不安全网站,Google 还会降低 HTTP 网站的排名。
- 其他平台,比如苹果 App Store,微信小程序等,都要求使用 HTTPS 协议。
1、怎么提升安全性
- 加密数据传输: TLS 数据加密,难以被窃听和解密。即使攻击者能够截获传输的数据包,他们也不能轻易读取其中的内容。
- 身份验证: 受信任的第三方机构颁发的 TLS 证书,可以用来验证服务器身份。
- 完整性验证: 使用消息摘要算法(如 SHA-256)来验证数据的完整性,防止数据被篡改(中间人攻击)。
2、降低了多少性能
相关通信过程在 2021/01/08,了解 HTTPS 背后的原理 有描述。
损耗主要在哪些环节呢?
- 握手
- 加密、解密
- 数据传输(加密之后数据增大)
- 证书验证 - 优化:浏览器缓存证书
3、如何优化
参考 HTTPS 的资源消耗,针对消耗点进行优化。
4、工具
5、清单
在 2012 年的 RFC 6797 中,HTTP 严格传输安全被定义为网络安全标准。 创建这个标准的主要目的,是为了。