V2EX magicdawn 的所有回复 第 1 页 / 共 45 页
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX    magicdawn    全部回复第 1 页 / 共 45 页
回复总数  885
1  2  3  4  5  6  7  8  9  10 ... 45  
搞笑又扎心
3 月 30 日
回复了 uni 创建的主题 Node.js npmmirror 竟然有些包没有更新到最新版本
@uni #9 为什么不去了解一下背景呢?大 npm 包被影视站利用,成本你出么?

如果你嫌弃就不要用,没有收费为何要承担被你喷的困境。

是的你没有了解背景的义务,但同时你也没有喷的权利。
3 月 29 日
回复了 uni 创建的主题 Node.js npmmirror 竟然有些包没有更新到最新版本
npmmirror v.s tencent mirror ,坐标湖北武汉, 结果:

=== Final Result (sorted by tarball avg) ===

npmmirror
metadata avg: 229.4 ms
metadata p50: 253.9 ms
metadata p90: 409.2 ms
tarball avg: 435.1 ms
tarball p50: 266.1 ms
tarball p90: 906.1 ms


tencent
metadata avg: 777.0 ms
metadata p50: 700.7 ms
metadata p90: 1336.7 ms
tarball avg: 508.6 ms
tarball p50: 440.9 ms
tarball p90: 938.3 ms

脚本 via ChatGPT
```js
#!/usr/bin/env node
import { performance } from 'node:perf_hooks'

const registries = [
{
name: 'npmmirror',
base: 'https://registry.npmmirror.com',
},
{
name: 'tencent',
base: 'http://mirrors.tencent.com/npm',
},
]

// 多包(覆盖不同大小 & 热门程度)
const PACKAGES = [
{ name: 'react', version: '18.2.0' },
{ name: 'lodash', version: '4.17.21' },
{ name: 'typescript', version: '5.4.5' },
{ name: 'axios', version: '1.6.7' },
]

// 多轮(建议 ≥10 )
const RUNS = 10

// 并发数(模拟 npm )
const COnCURRENCY= 4

async function fetchWithTiming(url) {
const start = performance.now()
const res = await fetch(url)
await res.arrayBuffer()
return performance.now() - start
}

// 简单并发控制
async function runPool(tasks, limit) {
const results = []
let i = 0

async function worker() {
while (i < tasks.length) {
const idx = i++
results[idx] = await tasks[idx]()
}
}

await Promise.all(Array.from({ length: limit }, worker))
return results
}

async function testRegistry(registry) {
const metadataTimes = []
const tarballTimes = []

for (let run = 0; run < RUNS; run++) {
const tasks = []

for (const pkg of PACKAGES) {
const metadataUrl = `${registry.base}/${pkg.name}`
const tarballUrl = `${registry.base}/${pkg.name}/-/${pkg.name}-${pkg.version}.tgz`

tasks.push(async () => {
const t = await fetchWithTiming(metadataUrl)
metadataTimes.push(t)
})

tasks.push(async () => {
const t = await fetchWithTiming(tarballUrl)
tarballTimes.push(t)
})
}

await runPool(tasks, CONCURRENCY)
console.log(`[${registry.name}] run ${run + 1}/${RUNS} done`)
}

function stats(arr) {
const sorted = [...arr].sort((a, b) => a - b)
const avg = arr.reduce((a, b) => a + b, 0) / arr.length
const p50 = sorted[Math.floor(sorted.length * 0.5)]
const p90 = sorted[Math.floor(sorted.length * 0.9)]
return { avg, p50, p90 }
}

return {
name: registry.name,
metadata: stats(metadataTimes),
tarball: stats(tarballTimes),
}
}

async function main() {
const results = []

for (const r of registries) {
console.log(`\nTesting ${r.name}...`)
const res = await testRegistry(r)
results.push(res)
}

console.log('\n=== Final Result (sorted by tarball avg) ===')

results.sort((a, b) => a.tarball.avg - b.tarball.avg)

for (const r of results) {
console.log(`
${r.name}
metadata avg: ${r.metadata.avg.toFixed(1)} ms
metadata p50: ${r.metadata.p50.toFixed(1)} ms
metadata p90: ${r.metadata.p90.toFixed(1)} ms
tarball avg: ${r.tarball.avg.toFixed(1)} ms
tarball p50: ${r.tarball.p50.toFixed(1)} ms
tarball p90: ${r.tarball.p90.toFixed(1)} ms
`)
}
}

main()
```
3 月 29 日
回复了 uni 创建的主题 Node.js npmmirror 竟然有些包没有更新到最新版本
https://i.imgur.com/I7e6HEH.png

这个包水平低下,严重浪费开发者磁盘,建议停用
https://www.npmjs.com/package/effect-solutions?activeTab=code
3 月 29 日
回复了 uni 创建的主题 Node.js npmmirror 竟然有些包没有更新到最新版本
这是个公益站,恶心不用就是。没有收你一分钱哦~
因为我觉得很好,必须站出来说句好
因为 npmmirror 我的常用命令 `corepack use pnpm@latest && ncu-safe && pi && p dedupe && p prune` 快了不少

export COREPACK_NPM_REGISTRY=https://registry.npmmirror.com


```sh
where ncu-safe
ncu-safe: aliased to ncu -t minor -u

where pi
pi: aliased to pnpm install

where p
p: aliased to pnpm
```
3 月 29 日
回复了 uni 创建的主题 Node.js npmmirror 竟然有些包没有更新到最新版本
确实烦,但是一个包 325MB 就不得不反思为什么 npm 包要这么大?
npm 应该用来分发代码, assets 请自建分发,参考 puppeteer 下载浏览器实例.

> 325793115 / 1000 / 1000
325.793115
发 ncr 的没毛病,OP 描述有问题。
ncr 是防止访问 google.com 重定向到 google.com.hk ,ncr = no country redirection.
OP 的标题让人想到这个。

OP 想说的是 safari 浏览器搜索引擎选择谷歌时,safari 内置的是 google.cn ,这是个中间页问你要不要到 google.com.hk 上搜索,想要看到结果必须再点一下链接。
这个锅只能 safari / Apple 背,ipad 上搜索引擎这几个预设选项,没有自定义,还不修正 google.cn 的行为。
@hpan #20

https://developer.mozilla.org/en-US/docs/Web/API/File_System_API
只能说 web 无所不能...

webgpu webusb ...
2025 年 12 月 7 日
回复了 SayHelloHi 创建的主题 分享发现 轻量级 macOS Clash 菜单栏客户端
type=select 的 proxy-group 怎么处理的
需要开 dashboard 选么?
2025 年 11 月 9 日
回复了 mqnu00 创建的主题 Javascript js 判空值 最佳实践
和 Vue 生态比较接近的是 mobx / valtio

valtio 个人觉得好用...

也是 pmndrs 组织下的, (jotai zustand 同作者)
2025 年 7 月 30 日
回复了 Dg3gWjbFvvq 创建的主题 程序员 语法最优雅的编程语言是什么?
C# 吧, 十多年前就支持 LINQ, 十多年后依旧无人能及

> 糖多是优雅还是不优雅
适度吧, 有些属实没必要的糖会降低优雅程度.


最不优雅 golang, 啥都没有, 我的评价是连 C/C++ 都不如.
2025 年 7 月 26 日
回复了 wuruxu 创建的主题 职场话题 在软件开发领域, AI 会有能力边界吗?
哦是他说的

> Meta 又从 OpenAI 挖到了大牛。

> OpenAI 核心科学家、思维链提示词( CoT )核心作者、o1 关键人物 Jason Wei 。

> 而在离开 OpenAI 之际,Jason Wei 连续更新了两篇博客,对于 RL 之后的发展提出了自己的想法验证者定律:训练 AI 解决某个任务的容易程度,与该任务的可验证性成正比。所有既可能解决又容易验证的任务,都将被 AI 解决。

我的记忆是 「一切可以被快速验证的东西都可以被 AI 实现」有误, 他的原话是「所有既可能解决又容易验证的任务,都将被 AI 解决」
2025 年 7 月 26 日
回复了 wuruxu 创建的主题 职场话题 在软件开发领域, AI 会有能力边界吗?
忘了在哪看到的信息, 说的是一切可以被快速验证的东西都可以被 AI 实现.
我觉得有道理, 在软件开发领域还剩啥不可以被快速验证?
AI 做不到的: 谈判 一些不是非黑即白的中间地带
哈萨克是说俄语的
2025 年 7 月 25 日
回复了 evada 创建的主题 反馈 感觉这个招聘来盗资产的
真恶心啊
2025 年 7 月 24 日
回复了 Need4more 创建的主题 .NET csharp 这回真成了脚本语言: dotnet run app.cs
1  2  3  4  5  6  7  8  9  10 ... 45  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5851 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 49ms UTC 02:00 PVG 10:00 LAX 19:00 JFK 22:00
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86