页面上经常需要每几秒钟轮询服务器接口更新页面状态,这种场景多发生在一些监控页面里,如果不用RxJS可能我们这写轮询代码
const do_request = () => {
fetch('https://www.qttc.net/api')
.then((r) => {
console.log(r);
});
};
setInterval(do_request, 2000);
...
页面上经常需要每几秒钟轮询服务器接口更新页面状态,这种场景多发生在一些监控页面里,如果不用RxJS可能我们这写轮询代码
const do_request = () => {
fetch('https://www.qttc.net/api')
.then((r) => {
console.log(r);
});
};
setInterval(do_request, 2000);
...
当时正在紧张的编写一个快要必须要在下班前演示的程序,结果在读取Cookie信息时出错了,于是我使用VSCode的Debug模式调试程序,这是个灾难的开始。VSCode配置如下
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) Boot",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/target/debug/rust-debug.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "externalTerminal"
}
]
}
...
在中国做软件开发,往往需要特殊的技能,这点非常麻烦。crates.io经常因为网络问题会卡在
$ cargo update
Updating crates.io index
幸运的话可以通过,最头疼的是等了相当长的时间过后因为网络问题的终止,解决这个问题可以配置crates.io国内镜像,这里以清华大学开源软件镜像站做例子,编辑~/.cargo/config
文件,添加以下内容
[source.crates-io]
replace-with = 'tuna'
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
...
在制作本博客时,有一个文章页生成二维码的一个小需求,简单来说就是传入一个URL返回一个二维码图片。于是自然的就想起了浏览器在发出HTTP请求时通常会默认把来源URL添加到HTTP的请求头Referer字段的这么一个特性
GET /qrcode HTTP/1.1
Host: www.qttc.net
Referer: https://www.qttc.net/about.html
于是页面上显示二维码的代码这么写
index.html
<img src="https://static.qttc.net/qrcode" />
...
遇到一个比较奇怪的问题,发现经过Nginx反向代理到服务器端时部分头字段被过滤掉了。经过查阅资料,得知HTTP头字段名称在标准下是使用中划线拼接的,例如
Custom-Header: QTTC
假如你想使用下划线拼接
Custom_Header: QTTC
这是不符合HTTP标准的,默认在Nginx下进行会被drop掉,担心跟CGI变量混淆,以下是官方说明
missing-disappearing-http-headers
...
随着WebAssembly越来约完善,很多Web应用可以利用它解决性能计算的业务场景,甚至WebAssembly未来还有计划实现调用外部JavaScript方法的计划。
目前官方推荐使用四种语言编写WebAssembly的源码,它们分别是
C/C++
所有人都知道的语言Rust
我最喜欢的语言AssemblyScript
如果你写C/C++,Rust不舒服,这是最佳的选择WebAssembly
直接编写WebAssembly的格式,难度比较大...
在Rust中字符串是个复杂的概念,String和&str的性质不一样,&str可以使用to_string()转换
let str: String = "琼台博客".to_string();
如果要把String转回&str,可以使用切片的引用模式
let str: &str = &"琼台博客".to_string()[..];
...
在JavaScript中encodeURI
与encodeURIComponent
不少人容易混淆两个的区别与正确用法,从英文单词上理解的话很容易看出来关键性区别的地方,即一个带Component
,另一个不带。也就是说带Component
的encodeURIComponent
就把输入当作一个完整的部件全部编码。另一个encodeURI
则是对URI
进行编码,为了保证返回的参数仍然是一个有效的URI
,http://
或者https://
的://
不会被编码,来看看例子。
以https://www.qttc.net/Hello World
作为入参,分别测试两个函数的返回值
...
今天,像正常一样访问网页时,发现页面空白,没有渲染任何元素,感觉有异常。
于是打开开发者工具一看,果然发现有一条网络错误,
xxxx.js net::ERR_CONTENT_LENGTH_MISMATCH
如以上截图,这个错误我还是第一次遇见,有点懵,光从错误代号上大概就能直到意思,在接收这条脚本内容时实际字节数与HTTP协议头字段Content-Length
不匹配。
...
因为要基于Gitlab的基础上去做一个每当有仓库push的时候会自动触发Docker自动打包Image的功能,Gitlab有System Hooks功能,System Hooks简单来说就是可以定义每当有仓库有一些动作,这些动作包括
当发生以上任意一种事件时,就会以POST请求预定好的一个URL,并且带着本次事件的具体详情以JSON格式作为请求体。
...