遥遥周刊 第33期
封面图 : 拍摄于家附近的某户人家门口 😄
这户人家的门口一年都布置着各种各样的花花草草,赏心悦目。
效率工具
1. 免费拥有企业邮箱的方法
Cloudflare + Gmail + Resend
具体实现的文档链接:免费拥有企业邮箱的方法
2. Observable Plot
Observable Plot 是一个 D3.js 团队推出的新的图表库,简化了 D3.js 的语法。
3. AI 学习网站 Emergent Mind
Emergent Mind 通过抓取 arXiv 上 AI 最新研究论文,再用 GPT 去总结,通过分类、趋势流行度、时间来筛选,很适合学术研究,需静下心来看看。
Reference: AI 学习网站 Emergent Mind
技术知识
1. 什么是用户旅程图?(User Journey Map)
用户旅程图(User Journey Map)是一种可视化工具,用于描述用户在使用某一特定产品或服务时所经历的各个阶段、触点和情感体验。
它通过从用户的角度出发,以叙述故事的方式展示用户的使用过程,帮助产品团队发现用户在整个使用过程中的痛点和满意点,从而优化产品设计和用户体验。
用户旅程图的构成要素
- 用户角色(Persona):基于用户研究创建的虚拟用户形象,包含用户的基本信息、需求、期望和痛点。
- 时间轴(Timeline):将用户的行为和体验按时间顺序排列,通常分为不同的阶段。
- 行为(Actions):用户在每个阶段所采取的具体行为。
- 想法(Thoughts):用户在不同阶段的想法、问题和信息需求。
- 情感(Emotions):用户在整个过程中情感的波动,通常用情感曲线表示。
- 触点(Touchpoints):用户与产品或服务互动的具体点。
- 痛点(Pain Points):用户在使用过程中遇到的问题和不满。
- 机会点(Opportunities):从用户体验中提炼出的改进和优化机会.
Reference: 什么是用户旅程图?
2. [Golang] 线程安全的 Map,Slice,Stack 等数据结构的实现
threadsafe 是一个 Go 语言包,提供了线程安全的数组、切片、映射、栈和队列的实现,使用了泛型和类型约束。
package main
import (
"fmt"
"github.com/hayageek/threadsafe"
)
func main() {
// Create a new thread-safe map
m := threadsafe.NewMap[string, int]()
// Set values in the map
m.Set("one", 1)
// Create a new thread-safe slice
slice := threadsafe.NewSlice[int]()
// Append values to the slice
for i := 0; i < 5; i++ {
slice.Append(i * 10)
}
// Create a new thread-safe stack
stack := threadsafe.NewStack()
stack.Push(10)
3. [JS] new URL()
的问题
JS 的 URL()
用来解析网址,遇到非法字符串会抛错。作者认为这是一个非常糟糕的设计,并给出了解决办法。
一般来说,我们会使用 try-catch
来捕获错误,但 是这样会导致代码变得臃肿。
const urlstring = "this is not a URL";
let not_a_url;
try {
not_a_url = new URL(urlstring);
} catch {
// we catch and ignore the error
// not_a_url is already undefined so no need to actually do anything.
}
作者给出了一个更好的解决办法。
const urlstring = "this is not a URL";
const not_a_url = URL.canParse(urlstring) && new URL(urlstring);
// not_a_url = false
Reference: The problem with new URL(), and how URL.parse() fixes that
语言学习
1. [日语] 曠日【こうじつ】
一整天什么也不做,虚度光阴。
何もしないで、むなしく日を過ごすこと。