周末带娃看舞台剧,很欢乐~
Algorithm
本周选择的算法题是:Find All Groups of Farmland。
impl Solution {
pub fn find_farmland(mut land: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
let mut res = vec![];
let n = land.len();
let m = land[0].len();
for i in 0..n {
for j in 0..m {
if land[i][j] == 1 {
let mut x = i;
let mut y = j;
while x < n && land[x][j] == 1 {
x += 1;
}
while y < m && land[i][y] == 1 {
y += 1;
}
res.push(vec![i as i32, j as i32, x as i32 - 1, y as i32 - 1]);
for a in i..x {
for b in j..y {
land[a][b] = 0;
}
}
}
}
}
res
}
}
Review
This is the Difference of Gaussians
Difference of Gaussian(俗称 DoG)是一种图像处理技术,通过对同一张图像应用不同参数的高斯滤波器,然后将结果相减来提取图像的内在特征,它在计算机视觉和图像处理领域中有广泛应用,尤其是在特征检测和边缘检测中。
这句话里包含了 DoG 的定义、目的和作用:
- 定义:对同一张图像在不同的高斯滤波器做高斯模糊之后的结果求差,得到的输出图像
- 目的:通过增强图像中的边缘和细节,提取图像的内在特征
- 作用:可用于图像增强,比如变清晰、噪点提取、艺术效果 & 风格化等等
视频介绍了它的不同 style 和常见的使用场景:
- 图像增强:通过突出边缘和细节,使得图像更清晰,更容易进行后续处理和分析
- 噪点提取:可以用于检测和分析图像中的噪点,帮助识别和去除不需要的噪声
- 风格化:用于艺术效果和风格化处理,使得图像具有特定的视觉效果,例如模拟手绘风格或其他艺术风格
问题复杂,但作者讲的随意、浅显易懂,非常精彩~
Tip
.node
文件的原理,虽然它的后缀是 .node
,但实际上是原生平台的构建产物,比如在 macOS 上是 Mach-O:
以图片处理 sharp 包为例,真正执行任务的还是 C++ 代码: https://github.com/lovell/sharp/tree/main/src,平台相关的处理则在这里: https://github.com/lovell/sharp/blob/main/lib/libvips.js#L42。
Share
分享手动安装 VS Code Server 的方法
使用 Dev Containers attach 容器时,有时候遇到 VS Code Server 下载失败的情况,报错如下:
[3523 ms] Exit code 1
[3524 ms] Start: Run in container: cat /root/.vscode-server/data/Machine/settings.json
[3566 ms]
[3568 ms] cat: /root/.vscode-server/data/Machine/settings.json: No such file or directory
[3568 ms] Exit code 1
[3568 ms] Start: Run in container: test -d '/root/.vscode-server/bin/89de5a8d4d6205e5b11647eb6a74844ca23d2573'
[3606 ms]
[3607 ms]
[3607 ms] Exit code 1
[3608 ms] Installing VS Code Server for commit 89de5a8d4d6205e5b11647eb6a74844ca23d2573
[3608 ms] Start: Downloading VS Code Server
[3609 ms] 89de5a8d4d6205e5b11647eb6a74844ca23d2573 linux-x64 stable
[4591 ms] Client network socket disconnected before secure TLS connection was established
[4591 ms] Retrying to download VS Code Server.
[5907 ms] Error: XHR failed
at v.onerror (vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:97:2011)
此时可以尝试手动安装:
- 从报错信息中,找到 VS Code Server 的版本号、平台等信息,如
89de5a8d4d6205e5b11647eb6a74844ca23d2573
、linux-x64
、stable
- 然后带上这些信息手动下载:
curl -output /path/to/download https://update.code.visualstudio.com/commit:89de5a8d4d6205e5b11647eb6a74844ca23d2573/server-linux-x64/stable
- 下载下来的文件是
.tar.gz
格式,重命名,并解压:tar -xvzf 89de5a8d4d6205e5b11647eb6a74844ca23d2573.tar.gz
- 将解压后的文件移动到
/home/$user/.vscode-server/bin/
目录下
上述操作可以直接在容器里进行,最终的目录结构如下:
root@af7a30e9dc88:~/.vscode-server/bin# pwd
/root/.vscode-server/bin
root@af7a30e9dc88:~/.vscode-server/bin# ls
89de5a8d4d6205e5b11647eb6a74844ca23d2573
root@af7a30e9dc88:~/.vscode-server/bin# ls 89de5a8d4d6205e5b11647eb6a74844ca23d2573/
LICENSE bin extensions node node_modules out package.json product.json
然后重新 attach 容器即可。