小技巧 Tips
这里主要记录不适合或者还不足以单独开一个文档的知识
开发实践
结合自己的经历,记录一些开发实践。
记得封装数据库操作
在设计架构时,不管选择哪个数据库,一定要用工厂模式来封装数据库操作,这样可以方便切换数据库。
(我刚开始利用 Python 开发的应用选用了 SQLite,用了一个类来操作,现在我想更换为 MySQL,发现要改动的地方太多了)
错误捕获可以更细致
在捕获异常时,可以更细致一些,比如针对可能出现错误的地方,都单独捕获异常,这样可以更好地定位问题。
另外,也可以针对不同的异常类型,做不同的处理。
使用 FTP 工具时避免拖动
在使用 FTP 工具时,尽量避免拖动文件,而是使用右键操作,这样可以避免文件被误拖动到其他目录。
如果生产环境中的目录被拖动到其他目录,可能会导致服务中断,影响用户体验 @2024-11-24
优雅的代码
优化代码案例
多个判断变成一行
# 优化前
if a == b:
if b == c:
return True
return False
return True
# 优化后
return not a == b or b == c
Regex 正则表达式
设计笔记官方有一篇文章专门介绍正则表达式,可以参考这里。
这里相当于是一个补充,通过使用场景来介绍正则表达式的使用。
1. 匹配 MD 中的标题
比如我想匹配## Title
这样的标题,直接搜索##
也会匹配到### Title
,这个时候就可以用正则来匹配,在搜索替换中输入下面命令就可以排除掉 H3 的标题:
(?<!#)##\s
(?<!#)
: 表示不匹配#
,即##
前面不能有#
。\s
: 表示空格。
YAML
Yaml 是一种轻量级的数据序列化格式,易于阅读和编写。在 Python 中,我们可以使用 PyYAML 库来读写 Yaml 文件。
基础语法
字典:使用冒号
:
来分隔键值对,使用缩进表示层级关系。yamlkey1: value1 key2: - value2 - value3
列表:使用连字符
-
表示列表元素,使用缩进表示层级关系。yaml- value1 - value2
注释:使用井号
#
表示注释。yaml# 这是一个注释
换行符:使用
|
表示保留换行符,使用>
表示折叠换行符。yamlkey: | 这是一个 多行字符串
换行连字符: 如果一行太长,可以使用连字符
\
来换行,依然表示一行。yamlkey: 这是一个很长的字符串,\ 可以使用连字符来换行
YAML Front Matter
YAML Front Matter 是一种在 Markdown 文件中使用的元数据格式,用于定义文件的属性。
目前 VitePress 和 Jekyll 等静态网站生成器都支持 YAML Front Matter。
Xpath
Xpath 是一种在 XML 文档中定位节点的语言,也可以用于 HTML 文档。
基础语法
在网页爬虫中,我们经常会用到 Xpath 来定位元素,这里记录一些常用的 Xpath 语法。
//
:从根节点选取节点。(如果已经在根节点,可以省略/
)/
:从当前节点选取直接子节点。.
:选取当前节点。..
:选取当前节点的父节点。@
:选取属性。[]
:用于筛选节点。节点是从 1 开始计数的,例如
//div[1]
表示选取第一个 div 节点。contains()
:用于匹配包含指定文本的节点。例如
//div[contains(@class, 'content')]
表示选取类名包含content
的 div 节点。text()
:选取文本节点。last()
:选取最后一个节点。position()
:选取当前节点的位置。and
:逻辑与。./parent::
:选取当前节点的父节点。./following-sibling::
:选取当前节点之后的所有兄弟节点。./preceding-sibling::
:选取当前节点之前的所有兄弟节点。./ancestor::
:选取当前节点的所有祖先节点。
使用案例
找到所有 div 元素,并且类名为
content
:bash//div[@class='content']
找到所有 div 元素,并且类名包含
content
:bash//div[contains(@class, 'content')]
找到所有 div 元素,并且类名包含
content__
,并且 id 为main
:(通过这个方法可以实现一些模糊匹配)
bash//div[contains(@class, 'content__') and @id='main']
找到类名为
content
的 div 下面的所有 a 元素:bash//div[@class='content']//a
如果是选择第一个 a 元素,可以使用
//div[@class='content']//a[1]
。找到类名为
content
的 div 下面的 span 元素,并且文本为添加商品
:bash//div[@class='content' and ./span[text()='添加商品']]
编码与格式
URL 编码
URL 编码是一种将 URL 中的特殊字符转换为 %
加上十六进制数的编码方式,遵从 RFC 3986 标准。
字符编码规则
- URL 中只允许 ASCII 字符的一部分(如字母、数字和部分符号
-._~
等)直接使用,称为“保留字符”。 - 其他字符(包括非 ASCII 字符,如中文)需要转换为
%
后跟两个十六进制数字的形式(即百分号编码)。 - 中文字符在 URL 编码前会先转换为 UTF-8 编码的字节流,然后对字节流中的每个字节进行百分号编码。
- 如中文字符 “你” 的 Unicode 码点是
U+4F60
转为 UTF-8 字节流后是E4BDA0
(三个字节),URL 编码后变为%E4%BD%A0
。
Base64 编码
Base64 是一种将二进制数据编码为 ASCII 字符的编码方式,常用于在 URL、Cookie、网页中传输数据。
字符编码
ASCII:美国信息交换标准代码,使用 7 位或 8 位二进制数表示字符。
UTF-8:一种可变长度的字符编码,支持全球范围内的字符。
Unicode:一种字符集,包含了世界上所有的字符。
GBK:中文编码标准,支持简体中文、繁体中文等。
ISO-8859-1:拉丁字母表的字符编码,支持西欧语言。
加密算法
哈希算法
哈希算法是一种将任意长度的输入数据转换为固定长度的输出数据的算法,常用于密码存储、数字签名等场景。
MD5
MD5(Message Digest Algorithm 5)是一种常用的哈希算法,生成 128 位的哈希值。
SHA
SHA(Secure Hash Algorithm)是一系列哈希算法的统称,包括 SHA-1、SHA-256、SHA-512 等。
对称加密
对称加密是一种加密方式,使用相同的密钥进行加密和解密。
AES
AES(Advanced Encryption Standard)是一种常用的对称加密算法,支持多种密钥长度,包括 128 位、192 位、256 位。
非对称加密
非对称加密是一种加密方式,使用公钥加密、私钥解密,或者私钥加密、公钥解密。
RSA
RSA 是一种常用的非对称加密算法,可以用于数字签名、密钥交换等场景。
字体推荐
字体格式:
.ttf
表示 TrueType 字体,.otf
表示 OpenType 字体中文字体尾缀:
-SC
表示简体中文,-TC
表示繁体中文字体尾缀含义:
Mono
表示等宽字体,Regular
表示常规字体
使用细节
- 设置
font-family
时,不要直接固定为Pingfang SC
,而是推荐-apple-system, BlinkMacSystemFont, sans-serif
,它会有更好的中西文兼容性。
英文
开源免费字体
开源免费字体
苹果西文标准字体,有多个版本,包括:
SF Pro
iOS 11 及以上版本使用的字体。SF Compact
watchOS 和 tvOS 使用的字体。SF Mono
macOS 10.11 及以上版本使用的等宽字体。New York
macOS 10.10 及以下版本使用的字体。代码字体,支持等宽显示
代码字体,支持等宽显示
中文
Inter + 思源黑体的混合体
Adobe 出品的开源字体,支持简体中文、繁体中文、日文、韩文
阿里还有更多免费字体:
阿里妈妈方圆体
中文双轴可变字体淘宝买菜题
AI 字体阿里妈妈数黑体
中文字体阿里妈妈东方大楷体
中文字体
华为
小米
Markdown
使用建议
推荐使用
**
来表示加粗,使用_
来表示斜体。它更符合语义化,也更容易阅读。
特殊自定义信息块
类似于一种警告提醒弹窗,这一个特性并不是所有的 markdown 编辑器都会支持,支持的语法可能也不同
Typora 使用了类似 Github 风格的语法,支持以下这些:
实测 VitePress 也都是支持的
NOTE
Highlights information that users should take into account, even when skimming.
TIP
Optional information to help a user be more successful.
IMPORTANT
Crucial information necessary for users to succeed.
WARNING
Critical content demanding immediate user attention due to potential risks.
CAUTION
Negative potential consequences of an action.
VitePress 的语法是:
效果需要在 VitePress 网站上查看
INFO
This is an info box.
TIP
This is a tip.
WARNING
This is a warning.
DANGER
This is a dangerous warning.
Details
This is a details block.
惊喜的是,它们都支持自定义标题,比如:
提示
这是一个提示
PlantUML
官方网站:PlantUML
在线编辑器:online server
PlantUML 是一种开源工具,可以通过简单的文本描述生成 UML 图。它支持多种类型的 UML 图,包括类图、时序图、用例图等。
在 VSCode 中使用 UML
在 VSCode 中,可以安装 PlantUML 插件,支持实时预览和导出 UML 图。
支持的格式
*.wsd, *.pu, *.puml, *.plantuml, *.iuml
插件设置
导出设置
plantuml.diagramsRoot
: 指定 PlantUML 文件的根目录(相对于工作区)。plantuml.exportOutDir
: 导出文件的目录。plantuml.exportFormat
: 导出格式,支持 PNG、SVG、PDF 等。
更多资源
TeX/LaTeX
TeX/LaTeX 是一种排版系统,广泛用于科学、数学和技术文档的书写。TeX 是基础排版系统,而 LaTeX 是基于 TeX 的一个宏包,提供了更高级的功能,使得文档的排版更简便。它们特别擅长处理复杂的数学公式和参考文献。
数学公式
在 Typora 中,我们可以使用 TeX/LaTeX 语法来输入数学公式。
行内公式: 使用
$
包裹公式,例如$a^2 + b^2 = c^2$
。行间公式: 使用
$$
包裹公式,例如$$a^2 + b^2 = c^2$$
。上标: 使用
^
,例如a^2
。下标: 使用
_
,例如a_1
。乘号: 使用
\times
,例如a \times b
。分数: 使用
\frac{分子}{分母}
,例如\frac{a}{b}
。空格: 使用
\quad
表示一个空格,使用\qquad
表示两个空格。\,
表示一个窄空格,\:
表示一个中等空格,\;
表示一个宽空格,如\text{Min} \, w
。\
也可以表示一个空格,如a \ b
,常用在横版公式中,在逗号后面加一个空格。换行: 使用
\\
,例如f(x) = \begin{cases} 0 & x < 0 \\ 1 & x \geq 0 \end{cases}
。等于符号: 使用
=
,例如a = b
。geq
表示大于等于,leq
表示小于等于。approx
表示约等于,neq
表示不等于。开方: 使用
\sqrt{}
,例如\sqrt{2}
。累加: 使用
\sum
,例如\sum_{i=1}^{n} i
。\sum \left( \frac{CF_t}{(1 + r)^t} \right)
中的\left
和\right
用于调整括号大小,用于显示长公式。百分号: 使用
\%
,例如50\%
。积分: 使用
\int
,例如\int_{a}^{b} f(x) dx
。矩阵: 使用
\begin{matrix} \end{matrix}
,例如\begin{matrix} 1 & 2 \\ 3 & 4 \end{matrix}
。矢量: 使用
\vec{}
,例如\vec{a}
。变化量: 使用
\Delta
,例如\Delta x
。文字: 使用
\text{}
,例如\text{Hello, World!}
。\mbox{}
也可以用于显示文本,但\text{}
更好用。
电力系统
电气基础原理及工具的使用
直流电与交流电的区别
直流电(DC):电流方向不变,电压大小不变。
一般用于电池、电源等设备。
交流电(AC):电流方向周期性变化,电压大小周期性变化。
一般用于家用电源、电动机等设备。
万用表的使用
选择挡位时,养成从大到小的习惯,可以避免烧坏万用表。
基础用法
万用表有两个探针,一个红色,一个黑色。在测量电路时,红色探针连接正极,黑色探针连接负极。
直流电一般使用 $V$ 档,交流电一般使用 $V$~ 档。
如果测量时显示的 0L,表示电路断路,或者超过了测量范围。
检测电路通路
档位通常使用表示 $Ω$ 或者类似 WIFI(蜂鸣) 的符号。
这个时候把两个探针连在一起,就可以听到蜂鸣声,表示两个探针是通路的。
之后就可以用这个方法来检测电路是否通路。
如果是负数,表示两个探针反了,可以利用这个方法来判断电路的正负极。
测量电压
在测量电压时,需要选择合适的档位,一般选择最接近待测电压的档位。
电池的电压一般在 1.5V 左右,如果低于 1.4V,可能就需要更换电池了。
家用电压一般在 220V 左右。
测量电流
在测量电流时,需要将电流表串联到电路中(可能需要破坏),并且选择合适的档位。
知道电流后,可以根据 $P=V×I$ 来计算功率。
KOMAX KM-168B
左上角橙色(FUNC):切换按键(切换测量功能,也用于切换直流和交流)、长按 手电筒
右上角橙色(HOLD):读数保持、长按 屏幕夜光
EBCE 孔:三极管插孔
顶部凸出的部分:NCV 感应区域(用于非接触电压检测)
转盘对应的测量功能:
Live
火线识别V
直流交流电压测量Ω
电阻测量/二极管测量/线路通断测量(FUNC 按钮切换)HZ
测量频率hFE
晶体三极管电流放大倍数NCV
非接触交流电压测量
安装与连接
电线剥皮与连接方法
电线剥皮
电线剥皮是指将电线的绝缘层去掉,露出金属导线,以便连接电路。
如果用老虎钳剥皮,一般先用老虎钳夹住电线外皮,然后旋转老虎钳,直到电线外皮被剥开。(应避免直接夹住电线进行剥皮,以免损坏电线导致容易折断)
电气计算
电费计算
已知功率,如何算出所需电流
功率(瓦特,W)和电流(安培,A)之间的关系可以通过公式 $P=V×I$ 来表示,其中 $P$ 是功率,$V$ 是电压,$I$ 是电流。在中国,标准电压为 220V。
例如,对于一个功率为 2600W 的热水壶,计算电流为:
$$ I = \frac{P}{V} = \frac{2600W}{220V} \approx 11.82A $$
民用电量度数计算
1 度电(千瓦时,kWh)是指一个功率为 1 千瓦的设备运行 1 小时所消耗的电能。
例如,2600W 的热水壶使用 1 小时就消耗了 2.6 度电。
材料与设备
电子元件
电阻
电阻(欧姆,Ω)是电流通过时产生电压降的元件。
电阻的计算公式为:
$$ R = \frac{V}{I} $$
其中 $R$ 是电阻,$V$ 是电压,$I$ 是电流。
电容
电容(法拉,F)是电压变化时储存电荷的元件。
它相当于一个储水池,可以储存电荷,以保证电路的稳定。
电容的计算公式为:
$$ C = \frac{Q}{V} $$
其中 $C$ 是电容,$Q$ 是电荷,$V$ 是电压。
摄影摄像
基础知识
对焦模式
单次对焦 AF-S:按下快门键,相机会对焦一次,然后锁定焦点。
连续对焦 AF-C:按下快门键,相机会持续对焦,直到你松开快门键。
DMF:自动对焦的基础上,可以手动调整对焦。
手动对焦 MF:手动调整焦距。
影像制式
PAL:主要用于欧洲、澳大利亚以及亚洲等地区。
NTSC:主要用于美国、日本以及中国台湾地区等地区。
ZV-E10
技巧
Fn 键可以快速呼出菜单,方便调整参数。
ISO 设置为自动才可以设置曝光补偿。自动曝光可以设置最大值,以满足不同场景的需求。
菜单介绍及推荐设置
拍摄设定 1 --> 动态影像 1(P1) --> USB 流动传输 = 可以直接用相机当摄像头使用
拍摄设定 1 --> 照相模式(P3) --> 拍摄设置存储 = 可以保存自己的拍摄设置
1 是设置存到机身,M1-M4 是存到存储卡
可以为户外和室内设置不同的设定
防抖 std/act = 标准防抖/增强防抖(适合拍摄运动)
拍摄设定 2 --> 自定义操作 --> 自定义按键 = 可以设置修改机身按键的功能
拍摄设定 2 --> 自定义操作 --> 功能菜单设置 = 可以设置 Fn 按键的菜单选项
Wordpress
使用技巧
如何获取 Wordpress 网站的主题信息
在浏览器中按下 F12
键,打开开发者工具,切换到 Elements
选项卡,然后搜索 wp-content/themes
,就可以找到当前网站使用的主题名称。
如果想知道主题的头部信息和截图,可以在浏览器中输入以下地址:
修改 example.com
为你的网站域名,theme-name
为主题名称
https://www.example.com/wp-content/themes/theme-name/style.css
https://www.example.com/wp-content/themes/theme-name/screenshot.png
直播
- 直播玩法流行的有:
平播
、憋单
海外转账
跨境汇款
工商银行跨境汇款到新加坡 OCBC
2024-12-12 更新:OCBC 开始清理中国大陆用户,之后 OCBC 账户将无法入帐
工商银行购汇(选择新加坡)
购汇标志选:
汇
购汇用途选:
因私旅游
选择跨境汇款到新加坡银行
收款行 SWIFT 代码:
OCBCSGSG
收款行地址:
63 CHULIA STREET 10-00, OCBC CENTRE EAST, SINGAPORE, 049514
投资账户入金
新加坡 Tiger Brokers 账户入金
选择入金方式
选择转账汇款 --> 选择新加坡元 --> 获取收款信息及转账附言
新加坡 OCBC 银行转账
登录 OCBC --> 本地转账 --> 填写收款信息 --> 输入转账附言 --> 确认转账
注意: 第一次添加新的收款人需要等待 12 小时,之后才可以转账。
换汇
如果想进行外汇兑换,可以在 Tiger Brokers 中进行换汇操作。
换汇目的选:
证券交易
香港银行开卡
移民局 12367 小程序 可以查询出入境记录
主要推荐: 汇丰银行、中银香港(出入金无损)
开户时间: 周一到周六上午 9:00 - 5:00
开户理由: 储蓄、理财、投资港美股
汇丰银行
可以提前 30 天预约,
支持线上开户,之后线下打开 APP 完成激活(提交开户流程后 90 天内到香港)(@2024-12-18 尝试已经要求去香港后才能开通 one 账户)预约可以通过微信公众号
汇丰银行
进行 --> 选择轻松开户
--> 选择汇丰 one
(提交后还需要接听电话和网点确认才算预约成功)预约分行推荐: 旺角分行、尖沙咀分行、九龙城、荃湾,不推荐元朗分行
预约后记得截图,不会收到邮件通知
APP 名称 HSBC HK,申请理由可以说
理财
,选择汇丰 one
账户开通后可以申请
Mastercard
,可以在香港和国内使用,APP 上可以选择借记卡直接申请
中银香港
可以提前 7 天预约(想预约的日期减去 8)
APP 名称 BOCHK
数字银行
ZA Bank,可以拿到实体卡,比较适合在香港取现用
Livi 理慧
常见问题
转数快是什么
"转数快"(FPS)又名快速支付系统,是一个连接银行的实时网上转账及支付平台,由香港金融管理局推出,支持香港银行账户之间的实时转账。
可以通过手机号码、电邮地址、FPS ID 或者香港身份证号码进行来进行登记,之后就可以通过这些信息进行转账,而无需银行资料。
到达香港后手机网络问题
无需换卡,和客服确认下手机是否开通漫游即可。
联通的默认开通无需操作,到香港可以直接使用流量,每日 25 元费用封顶,每日最多 3GB 流量,达量限速。
可以在机场购买本地电话卡
连接香港 Wi-Fi,商场酒店等地方都有免费 Wi-Fi
香港银行开户需要准备什么
身份证或护照
港澳通行证和有效签注(团签个签都可以)
过关小白票
港币现金(开户需要存款)
地址证明
招商银行信用卡账单上有住址
理财证明,如证券月结单
或者券商 APP 交易明细
出境旅游
香港
住宿
Trip.com
Booking.com
住宿
湾景国际酒店
旺角智选假日酒店
购物及景点
维多利亚港
旺角,尖沙咀
太平山顶: 香港岛最高点,可以俯瞰维多利亚港
大屿山,天坛大佛: 世界最大的室外青铜佛像
庙街夜市: 有很多小吃和纪念品
东荟城购物中心,大牌折扣店
迪士尼乐园
中环,上环: 有很多文化景点,如半山扶梯、中环天星小轮、上环文武庙
注意事项
苹果钱包可以直接添加八达通卡,方便乘坐地铁和巴士。
支付宝微信也可以扫码乘车
需要换港币,有的店只能接收港币现金。
穿舒服的鞋子,因为要走很多路。
支付宝和微信都可以直接购买境外流量包,方便使用。
考虑带个充电宝,香港不方便借充电器。
需要带转化插头,香港插头是英式三孔插头。