V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ruxuan1306  ›  全部回复第 2 页 / 共 17 页
回复总数  340
1  2  3  4  5  6  7  8  9  10 ... 17  
364 天前
回复了 minmo 创建的主题 问与答 给爷爷买助听器🦻🏻,大家推荐一下
如果双耳听力损失是对称的,建议 airpods pro ,便宜好用不尴尬。

b 站有如何将 airpods pro 设置为助听器的教程。
2024-04-28 01:50:41 +08:00
回复了 axiauk 创建的主题 OpenWrt openwrt 如何优雅的指定 IPV6?有些设备总是不按预期分配。
IPv6 由前缀和后缀组成。

设备获得 IPv6 地址有三种方式:
1. 在设备上手动设置
2. 路由器周期广播包含前缀的路由通告,设备收到通告后,自己搞个后缀拼上( SLAAC )
3. 设备主动请求路由器要一个地址( DHCPv6 )

显然,根据设备不同的获取 IPv6 地址的方式,路由器的控制能力各不相同:
1. 路由器不能控制设备地址的全部:既不能控制前缀,也不能控制后缀
2. 路由器能控制设备地址的一部分:只能控制前缀,不能控制后缀
3. 路由器能控制设备地址的全部:既能控制前缀,也能控制后缀

Windows 系统默认同时启用了 SLAAC 和 DHCPv6 ,在存在路由器 RA 通告和 DHCPv6 服务器的环境中,能拿到两个 IPv6 地址。
但也有 Android 系统只支持 SLAAC ,无视 DHCPv6 ,对于这种设备,指定 DHCPv6 没用。
2024-03-08 23:58:30 +08:00
回复了 yifangtongxing28 创建的主题 问与答 给父母买个看抖音微信不卡的手机,有推荐的吗
这个价位进小米之家随便挑个好看的,感觉都应该不会卡
2024-03-02 23:11:35 +08:00
回复了 QZFCANBA 创建的主题 深圳 求推荐深圳更换 AirPods 电池的店铺
闲鱼:主食爱吃囊

寄了只进过水的耳机过去,老板检查后说没问题,一分钱没要给我发回来了,给我搞不好意思了。
2024-03-02 14:31:44 +08:00
回复了 dtla 创建的主题 输入法 双拼打字真的比全拼快吗?
qr pn da zi vf de bi yu yn ky ma?
token 要跨链,一定是在源链上锁定或销毁 token ,再在另一条链上发行或铸造原 token 的替身。

比如 1 个原生比特币要跨到以太坊链, 我就可以在原先那条链上把币转入一个没人知道私钥的地址,比如全零地址。
然后在以太坊链上凭空制造一个叫做 WBTC 的 token ,并备注上刚才那笔交易的哈希。
这样,任何人都可以自行查看两条链,验证这对交易存在、有效、且数量相等。

很明显,在整个过程中,没有任何东西从一条链上转换到了另一条链上,比特币原生链上的 BTC 和以太坊链上的 WBTC 从技术视角看是完全不同的。

只是我们使用的时候把它们当成一样的:因为在同一时间,这个比特币只能要么以 BTC 的形式在原生比特币链上流通,要么以 WBTC 的形式在以太坊链上流通。

在这整个“转换”过程中,最关键的不是技术,而是共识。
WBTC 之所以能当 BTC 用,是因为我们相信这两种 token 都只是比特币这个概念的不同表现形式。
2024-01-07 12:29:20 +08:00
回复了 jkfadsljlasdgs 创建的主题 OpenAI Copliot 帮你解决了什么问题?
Copilot 擅长将非结构数据转换为结构数据。

直接注释接口文档里的描述,稍微起个头就能快速定义 TypeScript 类型和枚举。
2023-12-31 21:41:03 +08:00
回复了 tianshunovel2 创建的主题 云计算 非得用微服务吗?
没必要,微服务的架构本质来自组织架构。
2023-12-31 11:16:37 +08:00
回复了 momo2023 创建的主题 问与答 持币 5-6k,买 iPhone 15 或安卓哪个好?各有什么优缺点
纠结就买 iPhone ,因为安卓不好用时一定会后悔没买 iPhone ,iPhone 不好用时会自适应。
粘出来格式不好看,原文来自: https://zexi.notion.site/b9f941b097054bb1a28de1de61535adf
我看之前楼层都在情绪输出,我来说说我的思考吧。



两个前提:
1. 老板只在意业务功能是否实现,没人在意前后端之间的接口质量;
2. 督促后端交付高质量接口的沟通成本远大于前端写几行 map 的开发成本;

故结论,前端兼容。



问题是,对于前端的某一字段,不同的后端提交、响应不同,甚至值的类型也不同。
导致在写 TypeScript 时,就要定义大量 TS 类型,还很难起名。
但仔细想想我们真的需要这些“一次性”类型吗?



看个例子,假设我们有两个接口:

```JavaScript
// id 查 user
const res = fetch.get('/user', { id: 1 })
console.log(res.body) // { id: 1, name: 'alice' }

// id 改 user 名
const res = fetch.post('/user', { user_id: '1', new_username: '' })
console.log(res.body) // { code: 1 }
```

很难受吧,查和改的字段居然不一致。
那我用户 ID 究竟叫 id 还是 user_id ?类型究竟是 number 还是 string ?

很简单,按前端方便来:

```
type User = {
userId: string,
username: string
}

<div>
<div>用户 ID:{{userId}}</div>
<div>用户名:<input type="text" value="{{username}}" /></div>
</div>
```



???



因为 JavaScript 里常用驼峰命名,userId 通常也只是展示,不会涉及什么数值运算,绑定 input 之类也比较方便…

噢,哈哈,你肯定早就知道这些,我知道你是在疑惑,接口怎么办?

别急。



我们知道,TypeScript 类型系统很好很强,除非 any 泛滥。
要想抑制 any 渗入 TS ,就要观察 any 从哪产生:

什么函数返回 any ?

- JSON.parse()
- fetch()
- ...

喔,外部数据流入 TS 时,就是 any ,有才有德的我知道,此时我应该立刻手动为标记类型:

```JavaScript
// 接口响应类型
type GetUser = { id: number, name: string }

// 前端易用类型
type User = { userId: string, username: string }

function fetchUser(userId: string) {
// 外部数据
const res = fetch.get('/user', { id: Number(userId) })
console.log(res.body) // { id: 1, name: 'alice' }

// 标记类型 any -> GetUser
const data: GetUser = res.body

// 转为前端易用的格式
const user: User = {
userId: String(data.id ?? ''),
username: data.name
}
return user
}
```

很好很完美,我们成功封装了一个接口请求函数,它能通过 string 的 userId ,查到 User 数据,以前端想要的格式。

但多看一眼,我们真的有必要定义 GetUser 吗?

简化下可以吗:

```JavaScript
type User = { userId: string, username: string }

function fetchUser(userId: string): User {
const res = fetch.get('/user', { id: Number(userId) })
return {
userId: String(res.body.id ?? ''),
username: res.body.name
}
}
```

噢,虽然 res.body 是 any ,虽然按照 TypeScript 最佳实践我应该马上声明它的类型,但事实上,完全可以将这个明晰 any 的过程延迟到数据转换一并进行。

这样一切就变得简单多了,只要我守好数据流入和流出的关口,那无论多离谱的后端,我都不需撕逼,分钟对接:

```JavaScript
function updateUser(userId: string, username: string): boolean {
const res = fetch.post('/user', {
user_id: Number(userId),
new_username: username
})
return res.code === 1
}
```


于是作为前端:
在开发阶段,我以最舒适的姿势定义 State 的数据结构、绑定 UI 组件。
在联调阶段,我直接对着浏览器抓包的响应体,实现关口函数内的转换。
完全摆脱各接口字段定义不一致、实际响应和接口文档不符、string 和 number 类型没对上之类来回沟通筋疲力尽的鸡零狗碎。



再温故一遍:
1. 老板只在意业务功能是否实现,没人在意前后端之间的接口质量;
2. 督促后端交付高质量接口的沟通成本远大于前端写几行 map 的开发成本;
2023-11-12 17:58:20 +08:00
回复了 victorc 创建的主题 OpenAI GPT 是程序员卖给资本家的绞索
在公司开发流程中,开各种评审会议、写各种留痕文档、读历史屎山、和测试来回拉锯的工时最多,编码的占比非常之小。
2023-11-12 17:54:17 +08:00
回复了 Richard14 创建的主题 程序员 有没有数学和算法好的朋友,计算线性回归用啥算法最快?
哦不好意思没注意,原来是在对比计算机运行的效率,不是人算出结果的效率
2023-11-12 17:52:43 +08:00
回复了 Richard14 创建的主题 程序员 有没有数学和算法好的朋友,计算线性回归用啥算法最快?
2023-11-12 12:35:52 +08:00
回复了 61162833 创建的主题 Java Java 中一个保存了 1 万个整数的 ArrayList 占多少内存?
@yfugibr 自动扩容是在 append 时原容量不够才发生的,new 时候给定大小,然后直接用下标设置就不会触发扩容。
2023-11-11 15:18:58 +08:00
回复了 tasselyue 创建的主题 职场话题 即将毕业该怎么办? 好迷茫
想太远了,这才大三上,考虑考研考公就业那都是明天春天后的事。

---

**“我也意识到了,但我不知道该怎么改变。”**

先从每天运动开始。

人在成年后,只有健身是一分努力一分收获。

健身的反馈周期也比较合适,叠上新手福利期,最多一两周就能看到配速变快了、心率变低了、肌肉变强了,这些都是结结实实的正反馈。

**你必须首先做成一件事,才能获得自己有能力做成事的信心。**

躺在宿舍床上畏畏缩缩瞻前顾后?

起来。
训练。
2023-08-19 16:34:16 +08:00
回复了 xiyy02 创建的主题 程序员 既然总是避免不了被淘汰,那努力钻研技术的意义是什么?
你只是基因驾驶的蛋白质机甲。

基因主人为你这套智能机甲设计了两个任务:

1. 摄入能量,维持自己稳定运行;
2. 在自己损坏之前,制造出新的机甲。
@BBCCBB 确实,你一说我才发现,第一句话实际是在预先合理化自己之后的行为。
b 站有个“戒社”,经常读一些赌狗私信,OP 文章的第一句话,和那些私信第一句好像。

想起来之前看过的一句话:

大多数时候我们以为自己在思考,其实都是在对自身的行为和欲望进行合理化,这正是人类被称作“自我解释的动物”的原因。
yoga 13s ,三千左右,轻薄质感好,但是处理器可能有点老。
1  2  3  4  5  6  7  8  9  10 ... 17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2332 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 11:29 · PVG 19:29 · LAX 04:29 · JFK 07:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.