工具
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 严格传输安全被定义为网络安全标准。 创建这个标准的主要目的,是为了。
个人
2022-11-11
先说一句,文章链接中的单词不小心写错了,customer,不要在意这些细节。
我司曾经强调过在内外交流中区分客户和用户,不要混用(主要是统一表达方式)。今天突然想到这个问题,特意来仔细琢磨一下。
我司的定义
我记得大概是说:
- 客户:购买我们产品的人
- 用户:客户使用我们产品去服务的对象,也就是客户的客户
我们提供的是消息触达服务(邮件和短信),落到产品中,基础功能可以免费使用(定量),增值功能需要收费。这是背景。
在这个过程中,客户是我们产品的使用者,客户使用我们的产品给他们的客户发送消息。
客户的客户,也就是消息的接收方,就称之为用户。
PS:客户又分成付费客户和免费客户。
这个和原义不大相符,作为内部规范,怎么定义都行,上面怎么说就怎么来。
我认为
-
客户和用户
- 客户,Customer,这描述的是商务关系,认为是购买产品的人,没毛病。
- 用户,User,应该是使用我们产品的人,也就是我们的服务对象。
我在网上找了一遍,大概都是这个意思。和我对这个两个词语义上的理解是吻合的。
-
客户内部的角色
- 决策人(KP)
- 购买人/付款人
- 使用人
他们应该整体作为一个客户,不能区分开来,认为是决策人,或者购买人是客户,使用人是用户。
比如爸爸为孩子挑选了一款平板电脑,妈妈付钱,孩子使用。在平板电脑公司来看,应该认为他们是一个整体,然后找到 KP 做营销,告知这款平板多么利于学习,价格多么合适,还有最后一天的节日优惠。然后为了企业的品牌形象与二次营销,应该提升产品的质量和使用体验(持续更新的学习资料 + 游戏性能)。
-
客户使用我们的产品去通知也好,去营销也好,这些消息的接收方,应该就只是叫做收信方。
通过上面的定义,我们应该很容易理解下面几个观点:
- 仅根据是不是有商务关系(付钱)判断是不是客户。
- 用户分成免费用户、付费用户。
- 免费用户一定不是客户。
免费用户:仅在免费额度范围内使用基础服务、部分产品提供的免费试用。
- 付费用户不一定是客户,因为可能是客户购买之后提供给其他人使用的。
- 我以前做过的一款产品就是客户购买之后,客户的客户使用。
因为日常生活中,很多时候,客户(购买者)往往就是用户(使用者),我们才容易搞混。
在一些业务场景下,我们假定购买者就是使用者,那么付费用户也可以说成是付费客户。
免费用户不能说免费客户(因为没有商务关系)。
产品和服务
在写这篇文章的时候,我又想起另一个概念来了,我们是提供产品,还是提供服务?
如果没记错,在内部会议上讨论过,老板阐述了自己的观点。
当时的讨论内容我忘了,我这里就说说我现在的想法。
比如,我买周黑鸭送给了客户,客户转手把周黑鸭送给朋友吃了。
周黑鸭的客户是我,没有问题。周黑鸭的用户是谁?
如果按照提供产品的观点,最后产品被老板的朋友吃了,那么老板的朋友是用户。
周黑鸭应该为我提供体面又具有性价比的产品,同时为最后吃到鸭脖子的人提供美味(产品体验)。
如果按照提供服务的理念,周黑鸭公司提供的是礼品服务,那么是我在使用这个服务,所以我既是客户,又是用户。
周黑鸭应该为我提供体面又具有性价比的礼品服务,同时为我提供最好的送礼效果(产品体验),就是让我的客户收到礼物之后觉得满意,然后我和客户的友好度 +1。
这个例子可能不太恰当,但是我想表达的意思都说清楚了。
再补充一个,账户与账号
账户 |
Account |
用户 |
User |
账户名 |
Account Name |
用户名 |
User Name |
账户 ID(账号) |
Account ID |
用户 ID |
User ID |
账户是用户在系统内的身份,理论上一个用户可能有多个账户。
- 大多数情况,一个用户一个账户。
- 更重要的是,用户是服务对象,落实到管理系统中,用户就是账户。
- 就算一个用户使用多个身份信息(手机号)注册了多个账户,也没人会特意去调查、区分它们。
所以用户和账户也经常混用。
如果一个用户有多个账户的时候还是会发生一些沟通上的不便,严谨一点,内部对齐客户、用户、账户这几个概念,在不同场景下根据上下文区分使用,还是有一些必要性的。
就系统开发来说:
Linux
2022-11-10
我们编写程序 write 数据到文件中时,其实数据不会立马写入磁盘,而是会经过层层缓存。每层缓存都有自己的刷新时机,每层缓存都刷新后才会写入磁盘。这些缓存的存在是为了加速读写操作,因为如果每次读写都对应真实磁盘操作,那么读写的效率会大大降低。带来的坏处是如果期间发生掉电或者别的故障,还未写入磁盘的数据就丢失了。对于数据安全敏感的应用,比如数据库,比如交易程序,这是无法忍受的。所以操作系统提供了保证文件落盘的机制。我们来看下这些机制的原理和使用。
编程语言 Clang
2022-10-31
英文原文:https://levelup.gitconnected.com/why-modern-alternative-languages-never-replace-c-c-cbf0afc5f1dc
中文翻译:https://mp.weixin.qq.com/s/tr69w96gOO7ia81ttilgVA
总结一下:
- C/C 是优秀的系统级编程语言,无数基础设施是用 C/C 开发的
- C/C++ 可以完全控制机器,开发者拥有最大的灵活性
- C/C++ 性能非常好
- C/C++ 学术友好,简单,高效,直接(没有封装得很抽象)
- 所有操作系统提供 C API,其他语言也都提供了和 C 交互的方式
开发者
2022-10-31
发现一个问题,暂时没有任何思路:
一个线上执行了 66 天的服务,突然在前天凌晨 1:30 没有日志输出了,从外网连接不上,内网可以连上。
等后续有了进展再更新。