#277 几个小脚本

2018-12-05

随便翻一下谷歌浏览器调试工具(F12)执行过的脚本,摘几个贴一下。
1. Gitee GVP
2. API 测试时先调登录接口
3. heidiSQL 找回数据库密码
4. 列出 Python 文档中的章节
5. 自动删除网易邮箱的邮件

#276 OneTab 快速删除所有 URL 的方法

2018-12-05
function confirm() { return true; } // 覆盖 confirm 方法,一直返回确认
nodelist = document.querySelectorAll('#contentAreaDiv > div > div:nth-child(1) > div > div:nth-child(5) > div:nth-child(3)');
nodelist.forEach(function(ele, index, list) { setTimeout(function() { ele.click(); }, 1000 * index); });

#275 PEP

2018-11-22

主要是了解一下 PEP(Python Enhancement Proposal)的状态和类型。

#274 PHP 5.2 与 PHP 5.3+ 的几处差异

2018-11-22

修改一个我之前开发的一个 Discuz 插件对于 PHP 5.2 的支持(当时插件开发环境是 PHP 5.6.37),发现以下几处需要注意的地方:

#273 Web 保存数据的特殊方案

2018-11-08

将数据通过编码存在图片里面,实现导出导入功能。
虽然我不知道什么场景下需要使用这个方案,但这个想法特有意思。

#272 程序员字体

2018-11-01

纯英文:

  • Apple Monaco
  • Courier New
  • Consolas
  • DejaVu Sans Mono <>
  • JetBrains Mono
  • Source Code Pro
  • Ubuntu Mono
  • Inconsolata
  • Fira Code

中文:

  • 思源黑体(Source Han Sans)
  • YaHei Consolas Hybrid
  • Google Noto Mono

#271 Mongo 基础

2018-09-05

版本

以下是几个大版本和发布时间,作为一个大概的时间线吧:

2009/12 1.2
2010/03 1.4
2010/08 1.6 分片(支持水平拓展)
2011/03 1.8
2011/09 2.0 GridFS
2012/08 2.2 Aggregation Framework
2013/03 2.4 全文搜索
2014/04 2.6 WiredTiger 存储引擎
2015/03 3.0
2015/12 3.2 Change Streams
2016/11 3.4 多文档事务
2017/11 3.6
2018/06 4.0
2019/08 4.2
2020/07 4.4
2021/07 5.0 时间序列 + 聚簇索引(Clustered Indexing)+ 实时重分片 (Live Resharding) + 版本化 API (Versioned API)
2022/07 6.0
2023/08 7.0 可查询加密技术(Queryable Encryption)
2024/10 8.0
2025/09 8.2 功能完善与性能提升

当前最新版本 8 月发布的 4.0.2

Update @ 2021/06/07:
之后主版本号就一直停在了 4,2020 年之后甚至一直停在了 4.4(2019 年 4.2,2020 年 4.4),这也意味着功能组件稳定下来了。

#270 短信的原理

2018-09-04
  • Short Message, 短信
  • SMS, Short Message Service, 短信服务
  • MO, Mobile Originate, 发短信
  • MT, Mobile Terminate, 收短信
Terminal 终端
SMC      短信中心
SMS GW   短信网关

重要协议

编码方案

  • 7bit ASCII
  • 8bit ASCII
  • UCS2 (早期的 Unicode 方案,2 Bytes 表示一个字)

长度

受协议限制,短信内容最大 140 字节,所以:

采用 8bit 编码的话,最长 140 字符。
采用 7bit 编码的话,最长 160 字符(正好)。
采用 UCS2 编码的话,最长 70 字符。

如果涉及长短信切割,根据通行的拓展协议,需要采用头三个字节存储相关信息。

采用 8bit 编码的话,每段最长 137 字符。
采用 7bit 编码的话,每段最长 156 字符(最后剩余 4 bits 空着)。
采用 UCS2 编码的话,每段最长 67 字符。

长短信分割

参考 GSM 03.40 9.2.3.24 TP-User Data (TP-UD) 部分,一般有两种方案:

\x05        剩余协议头长度
\x00        短信标识 GSM 03.40
\x03        剩余短信标识长度
随机字节(1 字节)
总包数
包序号(1 开始)

还有一种没有怎么见过的方案,就是采用两个字节做随机标识,然后头三字节改成 \x06\x08\x04

第二字节叫做 The Information Element Identifier(信息元素标识符),上面的 \x00\x08 分别标识 1 字节,2 字节随机标识方案。其他值可以参考文档。