skip to content
声控烤箱 | KazooTTT 博客

Notes(102) RSS feed
preview

12. askfm的关停

Updated:

今天翻了一下 todo list, 发现其中有一个是:写 askfm 爬虫

IMG-10B1F940E0B13DE5FDFB9493A2502DE0

于是心血来潮去想去回顾一下 askfm,发现网站已经无法访问了。

IMG-166598D5810641495277DB4DE4F67686

然后在 reddit 上搜到这个网站在 20241201 的时候关停了

IMG-3B8AC1BA520FBB7E13D5029AC1D59765

突然感觉承载了一些记忆的平台就这样关停了,还是挺可惜的。

而且如果不及时关注网站发布的公告,可能连最后备份的机会都没有,所有的数据就这样瞬间清空。

13. 使用 1password 的 secure notes 存储提示词

Updated:

你的提示词模板是如何存储和快速查找获取的?

作为一个能用键盘就不用鼠标,期望减少操作步骤的懒人,我把提示词存到了 1password 的 secure notes 中

alt text

如图所示,提示词的标题以 [提示词-标题] 的形式命名。

然后通过快捷键唤起搜索框,输入 提示词 关键词,就可以搜索到所有的提示词。然后通过 cmd + c 复制内容即可。

alt text

这样的好处是:

  1. 云端存储,只要登录了 1password,就可以查看之前存储的提示词。
  2. 跨平台使用,macos、pc、手机等都可以使用。
  3. 快捷键唤起搜索框,快速复制提示词。

[[使用 copyQ 存储提示词 ]]

14. 记录一次滴滴打车维权

Updated:

时间线

2 月 1 日下午

在滴滴上打了出租车,上车告知手机后四位后司机将应用切至后台,乘客的滴滴 app 上无法看到具体的行驶路径(最终的行程路径为一条直线)。 然后结束打表的时候价格为 24,但是最后在平台生成账单的时候价格为 41。 目前已经走了平台投诉,也打了人工客服电话,但是目前暂时无人接听。

于是在小红书发了求助的帖子,寻求一些解决办法。

alt text

回复中提到:可以通过 12328 投诉多收费,于是我在微信小程序上发起了投诉,他们很快就有人打电话过来确认情况。

所以到这个时候,我走的维权方法有两条:

  1. 通过滴滴平台投诉
  2. 通过 12328 投诉

2 月 2 日

滴滴 app 的投诉工单中回复说这个月会对司机进行培训,如果司机不遵守规则,会不允许司机在平台上接单。

2 月 3 日

接到了滴滴客服的电话,跟我确认了一下情况,然后说会退款 18 元。

2 月 8 日

12328 打电话过来回复处理情况,给司机的处罚是罚款 200 元。

总结

  1. 尽量不要选择打表的出租车,最终金额由司机手动输入,存在很大的操作空间。且后期维权困难。
  2. 维权可以走平台投诉 + 12328 两条路径进行投诉。

18. win11如何下载chatgpt

Updated:

打开设置 - 时间和语言 - 选择国家和地区为美国

IMG-20250104114646389

在 microsoft store 中搜索 chatgpt 下载即可

IMG-20250104114647117

19. how to make a hollow cylinder in blender

Updated:

this is a blender note is to record how to make a hollow cylinder in blender.

we can split the problem into these parts:

  1. create a cylinder
  2. make the cylinder hollow

1. create a cylinder

method 1: in the object mode, press shift + a and select mesh - cylinder, we can create a cylinder in the scene.

alt text

method 2: at the left top of the screen, click add - mesh - cylinder, we can create a cylinder in the scene, too.

alt text

(optional) 2. edit the cylinder when adding it

after we add a cylinder, we can see there has a add cylinder panel in the bottom left of the screen.

and if we click the add cylinder panel, we can edit the props of the cylinder, such as the vertex count, radius, depth, etc.

alt text

because i am a new user of blender, so i will try to figure out the meaning of the props of panels one by one. (if you do not care about the meaning of the props, you can skip this part)

  1. Vertices:
    • Defines the number of edges or vertices around the base of the cylinder. A higher number results in a smoother circle, while a lower number creates a more polygonal shape.(default 32)
  2. Radius:
    • Sets the radius of the base of the cylinder. This controls how wide the cylinder is.(default 1m)
  3. Depth:
    • Determines the height of the cylinder along the Z-axis.(default_2m)
  4. Cap Fill Type:
    • Specifies the way the top and bottom caps of the cylinder are filled:
    • None: Leaves the ends of the cylinder open.(default)
    • N-Gon: Fills the ends with a single face (polygon) that spans the entire area.
    • Triangles: Fills the ends with triangles arranged in a radial pattern.
  5. Generate UVs:
    • When checked, automatically generates UV mapping for the cylinder. This is useful for texturing the cylinder later.(default checked)
  6. Align:
    • Determines the alignment of the cylinder relative to the scene:
    • World: Aligns the cylinder to the global coordinate system.
    • View: Aligns the cylinder to the current camera view.
    • Cursor: Aligns the cylinder based on the position and orientation of the 3D cursor.
  7. Location (X, Y, Z):
    • Specifies the position of the cylinder in 3D space. These fields allow you to place the cylinder at exact coordinates.(default 0,0,0) unit is meter
  8. Rotation (X, Y, Z):
    • Defines the orientation of the cylinder by specifying its rotation around each of the three axes.(default 0,0,0)unit is degree

3. make the cylinder hollow

press the tab key to enter the edit mode, then press s to select all the vertices, and press delete to delete the vertices.

press the number key 3 to enable the face selection mode, then press s to select all the faces, and press delete to delete the faces.

press the button shift and left click the fases at the top and bottom of the cylinder, like this:

alt text

attention: you should click the faces at the top and bottom both, not the vertices, not the single face or other faces.

then we press the i button to inset the faces, move the mouse and we can see the faces are inseted, like this:

alt text

then if then size is ok ,release the mouse

then press the delete button to delete the faces. (you should select the fases which you nested before)

alt text

now we can see the cylinder is hollow.

alt text

20. 在浏览器中 opengl 的配置与检测

Updated:

在 google 浏览器中硬件加速、OpenGL 的配置与检测

如何配置硬件加速与 OpenGL

优化浏览器设置以提升性能和使用体验 - MasterGo 帮助中心

在这篇文章中,我们可以看到具体的配置流程。

如何检测用户是否开启 OpenGL

在 mdn 的这篇文章中 WEBGL_debug_renderer_info extension - Web APIs | MDN 有提到:我们可以通过获取 canvas 的 webgl 上下文,然后对是否开启硬件加速和设置为 opengl 进行检测。

是否开启硬件加速

function isHardwareAccelerationEnabled() {
const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
if (!gl) {
console.log("WebGL is not supported or hardware acceleration is disabled.");
return false;
}
// 查询 WebGL 渲染器的细节信息,通常可以通过检查硬件信息来确认是否启用硬件加速
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
if (debugInfo) {
const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
console.log("Renderer: ", renderer);
console.log("Vendor: ", vendor);
// 通过查看渲染器信息判断是否使用了硬件加速(一般情况下返回会是显卡的名称)
return renderer && renderer.includes('Apple') || renderer.includes('NVIDIA') || renderer.includes('AMD');
}
return true;
}
isHardwareAccelerationEnabled();

是否使用 opengl

function checkGraphicsBackend() {
const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
if (!gl) {
console.log("WebGL is not supported or hardware acceleration is disabled.");
return false;
}
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
if (debugInfo) {
const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
console.log("WebGL Renderer:", renderer);
if (renderer && renderer.includes("OpenGL")) {
console.log("Graphics backend is OpenGL.");
return true;
}
}
console.log("Graphics backend is not OpenGL.");
return false;
}
checkGraphicsBackend();