Normal view

There are new articles available, click to refresh the page.
Today — 6 January 2025V2EX-最热主题

我转发了一张图到前端群,大周末的群里已经爆炸了

By: kuanat
5 January 2025 at 17:57
kuanat:

图片是这个:

https://imgur.com/XiMulEC.jpg

来源是 jordwalke reactjs 作者:

https://x.com/jordwalke/status/1875336115009573268

本意是想调侃一下,没想到对这个事情的认知分歧竟然这么大……

这个问题可能和这两天火热的 Go 话题有点像,要可读性还是要生产力,还是做成年人?

被 cursor 气出脑血栓

5 January 2025 at 16:44
wryyyyyyyyyyyy: 究竟是谁在说 2 、3 天就能写一个网站出来,之前都是自己写,不懂就 chat ;最近总看到不懂程序的小白啊,产品经理啊,没有基础靠 cursor 就能写出一个网站来 ,就用了一下 composer ,确实速度很快生成了一大堆代码,但 python 库一多,就骨头不顾屁股,bug 一大堆。

举个例子:

我用 fastapi 些项目 ,需要迁移,迁移是不支持用异步驱动的,但 fastapi 生成的时候用的异步,cursor 就像用异步的库来配置 alembic ,发现不支持,就把异步删了换同步,顺便把 fastapi 的异步库删了,但前面的代码都是用的异步代码,他有自己给加回来,然后又把同步的库删掉, 开始循环。

是 fastapi 有什么难度吗?还是我的操作有问题?
Yesterday — 5 January 2025V2EX-最热主题

关于 [伟途亦可思] App 加广告说明

By: ydatong
5 January 2025 at 14:04
ydatong:

我是 [伟途亦可思] 开发者,最近有不少人通过 App 反馈问我为什么加广告了,以及 V 站上也有几个相关的帖子,所以我说明一下。

1.为什么开发 [伟途亦可思]

App 是 19 年上线的,因为我之前属于 V 站重度用户(截止今天 V 站连续 1500 天),我个人又比较喜欢用 App 来浏览内容,所以我就开发了 [伟途亦可思] 这款 App ,然后上架到 AppStore 并且在 V 站做了一些推广。我的初心是打算一直免费并维护,做到最好的 V 站第三方 App 。从 19 年到最近,也确实是一直没收费,并且去年开发了 Android 版本,同样也是免费无广告的。

2.为什么最新版本要加广告?

去年我的开发者账号是 10 月份到期,我没有继续续费了,因为这些年除了 [伟途亦可思] 我基本也没有别的 App 长期上架,加上我最近逛 V 站频率很低了,所以不打算继续维护了,而且 Apple 每年 688 的账号费用也不想继续交了。下架了以后,一直有用户通过邮件或者在 V 站问我,怎么不上架了,下不到了。在犹豫了一段时间后,上周我还是又续费了 Apple 账号。但是我想的是这次我想把这个账号费用赚回来,不然我没有继续维护的动力了。所以重新上架后,我就开通了收费下载,但是开了一天以后,我就感觉我应该先加广告,然后后面再做一个无广告版本,然后我就改成免费的。没考虑到 App 变成限免这回事,导致那两天下载量飙增,V 站竟然有人说我是为了骗下载。。。(我看了一下数据,那天就一个付费下载用户,如果看到这个帖子,可以联系我,后面出了收费版我送给你。)

然后在最近的版本,我就加上广告了。我之前上架过不少 App ,这次是第一次加广告,可能广告展示的太大,然后就看到 V 站有几个帖子在说要卸载,广告太恶心,也有用户在 AppStore 评价号召大家一起卸载。。。

3.后续

后面广告我还是会一直加的,不喜欢 App 内有广告的,可以卸载,这一点我觉得没什么好说的。 后续还会出一个收费下载版,无广告,功能上是同步的。

4.想法

经过这个事,以后我也不打算再做完全免费的产品了,产品做的再好,只要开始有广告或者收费,用户就会弃之而去,还不如开始就奔着赚钱去

有还在用 [伟途亦可思] 的 V 友可以继续反馈问题跟建议,只要我自己还在逛 V 站,App 我就会继续优化下去,毕竟我自己一直在用。

久病成医了都

5 January 2025 at 10:41
jiuzhougege: 这几年吃水果多,遵循专家的建议,多吃水果蔬菜,但是水果吃的尤其有点多(尤其是葡萄,这两年阳光玫瑰便宜,吃的有点多),导致很多糖尿病前期的症状:口干舌燥,尿多,皮肤干燥,尤其小腿瘙痒,大量皮屑,右时候抓的都能挠出血,皮肤发暗,饿的时候发慌等等...水杯不离手,冬季保湿剂如丝塔芙这种更是必备,每天都要涂抹;
但是体检的时候空腹血糖又正常,所以一直也没多注意,以为是冬季本来就干燥;
最近突然想到尝试少吃水果,尤其那种甜的葡萄啥的,基本上皮肤也不干燥了,保湿剂身体乳这种也不涂了,感觉好多了

都说移动墙中墙,可我觉得电信阻断的更多

By: W4J1e
4 January 2025 at 17:16
W4J1e:

以前一直用电信,后来换了移动,实际体验下来没发现太大的差异,夜间上网速率多少是要受到一些影响,并且去年中旬移动 DNS 的问题导致我排查了好久。但绝大多数时候还是很稳定的。

下旬的时候又换了电信,才发现以前移动间歇性 git push 是可以成功了,有时候需要特殊手段,而电信一直需要特殊手段; xx 给我发了一个小网站,电信打不开,切移动数据可以访问;我的域名前几天被饭渣误伤,解除后移动的响应是最快的,电信的解除速度总是要慢半拍。

还有用移动时,家里的 nas 和路由器通过域名解析的 ipv6 可以不带端口自动跳转访问,但是电信就不得不带端口,还不得不把路由器的端口改成非常用的才行。

除了稳定,基本可以保证跑满带宽上限,电信宽带较移动还有什么优势呢?

读《圣经》出埃及记 这段惊呆了,这是约 3500 年前的事

4 January 2025 at 19:42
zhng920823:

出埃及记 第 5 章

6 就在那天,法老吩咐众民的督工和首领说:7“你们不要像往日一样再把草给人民做砖,叫他们自己去捡草。8 他们往日做砖的数量,你们还是向他们要,一点也不可减少,因为他们是懒惰的,所以他们才呼喊说:‘让我们去献祭给我们的 神。’ 9 你们要把更重的工作加在这些人的身上,好使他们专心作工,不听谎言。”

果然阳光底下没新鲜事,也揭示了网上买不到的圣经的原因。

2025 不想在国内卷了,假如去越南开店的话可行吗?

By: sosme
4 January 2025 at 17:00
sosme: 1:那边的店面租金、人流大概是?

2:外国人在当地做生意的话会有哪些手续,费用,大概是?

3:安全性如何?

4:物价的生活成本的话,如果是自己买菜做饭应该可以忽略这块吧?(因为那边的食物真的完全没食欲,太干净又卫生了:))

当然也不一定非要越南,也可以是东南亚的其他国家或者非洲都行!现在还没最终决定。马上要到 35 中年危机了,感觉现在国内真心有点卷不动了~

[🎁抽奖 3 永久 5 年度] 狂肝一月重构轻翻相册,照片整理新体验, 25 年又有额度了

4 January 2025 at 20:49
tanjianwei: 为了更好提升照片管理的体验,这次做了重大更新,新增了专属的相册快速整理模式,还有照片日历功能,还引入了 AI 自动整理相册照片主题功能,可以更加轻松整理和回忆照片。


✅ 增加了照片日历功能、照片日记功能,用户没有时间写日记也没有关系,每天拍一张照片,就是日记。
✅ 用户整理照片的最大痛点在于需要花费大量时间手动分类、打标签。所以我们打造了自动分类功能,并且预设了 300+的多样化主题名称,通过这些主题,结合 clip 模型的语义识别能力,将照片归类到不同的主题中。
✅ 重构了整个 app 底层系统,极大提升整理体验,用户在删除、分类、浏览照片过程中,非常流畅,自我评价是感觉比 slidebox 用得更顺手。

------- APP 下载地址 -------
轻翻相册 APP 下载地址:
https://apps.apple.com/cn/app/id6449437172


------ 抽奖方式说明 --------
1 、在这里留下评论,随机抽取 8 位回复的用户,前 3 送 永久会员,后 5 个年度会员
2 、评论截止时间:1 月 7 日晚 23 点
3 、抽奖方式:通过 js 脚本生成楼层范围内的随机数
Before yesterdayV2EX-最热主题

关于今天给前端返回数据的结构的争论

By: imba97
4 January 2025 at 17:51
imba97:

今天发生一个离谱的问题

我是个前端开发,有一个列表接口,本来有数据,后面突然列表没了,前端逻辑没动过

我看了看接口,发现接口正常,里面列表数据都在,在控制台打印数据也都正常

最后打印列表字段 rows 发现是 undefined,这才发现列表数据的 key 变成了 data

争论开始了

后端反馈是有两种数据结构,一种是有分页一种是无分页

有分页的接口返回 rows,无分页的接口返回 data

后面甚至提出前端在响应拦截器判断一下,有 rows 的话拿 rows,没有的话拿 data

我觉得很离谱,在我的认知中,我认为后端返回的数据要保持一致性

类似这样

interface ResponseData {
    code: number
    data: Array | Object // 这里就大概表示一下可以是列表数组可以是对象
    total?: number // 需要的话返回
    message: string
}

争论半天后端大概意思是:“一般都是这样的,分页和其他查询结果有差异”、“没有必要改 不然看不出来 分页和部分也的区别了”、“你现在没数据了你能第一时间知道是接口改成不分页的了”、“这个框架都几十年了一直都是这样” ...

最后虽然也改成统一的了

但我我对这套说辞是:???

想请教一下大家,你们对接的数据结构也是不统一的吗?哪种方式更好呢?

(VPS)全网首家测评--搬瓦工 power box

By: BestVPS
4 January 2025 at 13:37
BestVPS:

搬瓦工 PowerBOX 新出江湖,30 天可退款,ip 被封也能退!

方案名称:Powerbox

方案配置:

硬盘:30 GB SSD

内存:1536MB

CPU:1 核 Intel

流量:1500 GB/月

带宽:2.5Gbps

线路: 电信:双程 CN2GIA

联通:去 4837/回 CN2GIA

移动:去程 CMIN2/回 CN2GIA

搬瓦工所有的套餐,除了香港/日本 GIA 没有,其他套餐基本集齐了

另外,对于大家关心的线路保障情况,瓦工官方回复线路保证问题,会最大化的保持它,确保大家都能开心的使用这款产品。

网络解锁情况:ChatGPT 是 DNS 解锁,谷歌 Gemini 原生解锁,迪斯尼看不了,奈飞只能看自制剧和 DC6 机房一样 image

三网回程情况:三网 CN2GIA 回程,电信 CN2GIA 去程,联通 4837 去程,移动 CMIN2 去程,可以说非常的硬 image

上海大出口,直连洛杉矶 image

网络稳定性,才刚刚开机,不过可以合理预测肯定是一条直线,几乎毫无波动 探针地址: https://n.990599.xyz/ image

融合怪测试,CPU 还是 Intel 的,但是这口子是真大啊!!! image

更多评测及媒体解锁可参考(含搬瓦工新加坡 CN2GIA ): https://990599.xyz/bwg1/

如果你还犹豫不决,可以测试一下线路 点我测试你的速度 image

循环优惠码:BWHCGLUKKB

优惠后是$41.9 年,续费循环享受

购买搬瓦工 DC99-powerBOX 含 aff 直达链接,$41.9

cloudfalre worker 也许是目前 web 服务部署的一种最佳实践。

By: jeesk
4 January 2025 at 15:57
jeesk: 1. 先前我问了一下,如果使用 cf 不考虑大陆,数据中心选择哪里好,后面我将我原有的 go 服务使用 worker 重写后, 速度比以前提高太多。

2. 这个服务我自己做了一个用户注册系统,主要是帮用户申请签名证书,以及商品订阅,以前用户备份的配置信息。js + d1 数据库完全够用。 关键的是还快,没有内存担心的问题。

3. 涉及到 cloudflare api 相关接口, 以前无论是部署到海外还是国内, 接口都慢的要死, 使用 worker 后, 快得无法想象。

4. 我以为使用 cloudflare 如果接口超过 cpu 占用 10ms ,接口就会超时, 从我使用的看来,没有这个问题。



5. worker 加上 d1 ,加上 cf 的证书,认证,限流,安全验证, 可以说从 serverless 的思想,重点狙击个人使用 springboot ,golang 写的 web 服务。

6. 当然也有很多限制, 比如储存文件,文件上传的得使用其他的对象储存。可能没有直接写磁盘方便。国内可能不能正常访问。如果 cf 关闭了这个服务,迁移代码很麻烦。无法使用一些 linux 命令处理一些业务逻辑,这个目前无解。


总得来说如果你有一个简单的服务,如果不想自己处理证书,安全,限流等等一系列的问题, 那么迁移到 worker 目前看,是一条不错的路子。这么香,况且还免费,不是我吹,要是国内能提供这种服务,估计国内阿里云和腾讯云会受到重创。在这种情况下,springboot
和 go 不再是我的优先考虑了。

mysql 数据库频繁插数据的处理方案讨论

4 January 2025 at 11:08
autumnhlf01:

请教个问题,类似温度,湿度硬件对接的时候,数据通过 websocket 获取,这些数据每隔几十秒就会传一组过来,咋处理这些数据?直接存数据库吗,这样数据库压力也太大了,通过 mq 的方式来存储,但是最终还是要插入数据库,还是会造成数据库压力

我的想法是 把数据直接放到 redis 里面,但是越到后期,数据也会很多,查询也不太好查吧?

没咋处理过这种场景,一时间没啥头绪,特来问问 v 友,有没有实际处理过类似问题的,求教

如何搭建 PB 级影音存储服务器?

By: Raynard
4 January 2025 at 00:43
Raynard:

纯家用,不需要外网访问,

提出这个问题的原因是我有豚鼠的习惯,各种影视作品都想收集全,缺了少了会很难受。

目前用的是黑裙,100tb 已经存满了,为了下稀缺资源,删了好多普通资源,实在是心痛,所以生此想法。

期望的要求:维护简单,使用方便,可靠性高。

优先级排序(重要在前):价格、易用、可靠、耗电、噪音。

希望老哥们分享一下经验,感谢!能有详细设备型号参考最好了!

在工作中遇到了很恶心的需求该怎么办

3 January 2025 at 18:42
bluebird007:

职位是后端开发,最近的需求是将一个原本是前端完成的工作变为后端完成:前端轮询系统接口获取新增交易单后,根据一系列筛选条件过滤之后调用三方接口完成交易。产品需求是获取新增交易单后后端可以直接完成整个流程逻辑,对前端无感。产品想法很简单,但是对后端来说就很麻烦:我需要去看前端代码这一系列的筛选过滤条件的逻辑,以及调用三方接口的参数的组装逻辑。更麻烦的是前端一个 select 下的不同 option 可能对应着不同的逻辑,每一种逻辑的每一个步骤我都得保持一致;从前端轮询变成后端接收消息处理,后端接收消息进行处理,消息 QPS 相当高,对于性能要求很高。然而这也不是最恶心的,最恶心的是这个需求只能在 prod 来验证。

来这个部门才不到一个月,这其中的核心逻辑都不甚清楚。评审会的时候更是人微言轻,主管只说先做先做,然后就开始排期。

自从接了这个需求之后似乎就没怎么高兴的过过周末。脑子里一想到这个需求就好像有什么恶心的东西挂在背上,时不时刺你一下,但是你还甩不掉。。。

可以利用 wsl 绕过公司电脑监控吗?

4 January 2025 at 09:13
shmilypeter:

公司配发的电脑经过标装,安装软件只能通过指定的应用商店,否则根本没权限执行安装程序。 同样即便是公司笔记本带回家,本地的上网行为管理软件也不允许访问大部分外部网站,会直接拦截掉,同时即便是允许的外部网站上网行为管理软件也做了证书替换。

我想通过 wsl 装一个 ubuntu 桌面版,通过远程桌面连接直接用 ubuntu 桌面版,用桥接给虚拟机联网这样就绕过了上网行为管理,然后自然在 wsl 虚拟机里我想干啥就干啥了。

请问这样还有被发现的可能吗?

才知道,移动的高频骚扰电话拦截业务,会消耗移动流量。

3 January 2025 at 20:54
JerryLee13: 移动的高频骚扰电话拦截业务,会消耗移动流量,这到底是个怎么样的逻辑呢?

我是怎么发现这个情况的呢?

前提:主卡是联通卡,副卡是移动卡,蜂窝数据是主卡,事发时一直都是连接 WIFI 。移动卡是从化 0 月租的卡,套餐内是没有流量和通话时长的(套餐外流量按照 0.29 元/MB 收费,不足 30 元按实收取,每达 30 元即自动赠送 921MB 国内通用流量)

经过:今天下午收到移动短信说,成功拦截了一通境外电话。隔一分钟后,收到流量超额扣费的信息。疑惑?遂电话客服咨询,确认是高频骚扰电话拦截,使用了流量。再问也没问出个所以然来。

结果:要求退费,取消高频骚扰电话拦截业务,关闭上网服务。

react 新手关于 react useEffect 的困惑,为什么 useEffect 里面的 cleanup 函数里面的 props 是旧的,如何从源码解释?

By: ooo4
3 January 2025 at 17:09
ooo4:

版本: react@18.3.1

我看源码就是先 UnmountEffects 后 MountEffects,里面也只是递归遍历而已,为什么 cleanup 里面的 props 是上一次的了?

commitPassiveUnmountEffects(root.current);
commitPassiveMountEffects(root, root.current, lanes, transitions);
// 复现的 demo
function App() {
  const [num, setNum] = useState(100)
  window.__setNum = setNum
  return <Comp num={num}></Comp>
}

function Comp(props) {
  debugger
  useEffect(() => {
    debugger
    props // {num:1000}
    return () => {
      debugger
      // 为什么这里是旧的 props? {num:100}
      props
    }
  }, [props.num])
  return (
    <p>
      <span>{props.num}</span>
    </p>
  )
}

setTimeout(() => {
  __setNum(1000)
}, 1000)
❌
❌