V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  magicdawn  ›  全部回复第 1 页 / 共 45 页
回复总数  894
1  2  3  4  5  6  7  8  9  10 ... 45  
alias pls="sudo"
alias please="sudo"
整个人都有礼貌了
10 天前
回复了 mikexfreeze 创建的主题 macOS MacOS 鼠标中键
better and better 有三指按下模拟中键的功能,
也就是这个功能导致有时候单击被误判成中键,点击 Tab 被判定成中键点击,然后直接关闭 tab 了。。。
https://www.reddit.com/r/MacOS/comments/wma8fd/stop_chrome_from_closing_tabs_with_magic_mouse/?tl=zh-hans

better touch tool 也有类似的功能。
15 天前
回复了 XTTX 创建的主题 OpenAI chatgpt 用什么接码方便?
@tianlianjie

#9 垃圾平台,七块钱只能收一次验证码,过期了再次发送收不到,纯纯浪费钱,还是包的别人的 API
关键词 ​smsflow

这一看就是推广,关键是东西还不行,我要举报
6

不过 node 和 反过来的 deno 都有了
bun 和 反过来的 [nub]( https://nubjs.com/) 也有了
你可以命名你的项目叫 bnu ubn unb nbu 🐶
比我强, 我专职前端...
5 月 20 日
回复了 frank1256 创建的主题 Google antigravity 变成了 codex 的模样, 3.5 更新
vscode 后面也会分两个 App: 编辑器 + Agents
5 月 13 日
回复了 Livid 创建的主题 信息安全 用 socket.dev 给 npm install 包一层安全防御
@jaff #7 Pypi 也有投毒啊...

之前的 litellm

这次 mistralai 2.4.6
https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack
4 月 17 日
回复了 BretTaylor 创建的主题 OpenAI 分享下最近低价 GPT Codex 的来源(源头)
刚充好 USDT ,7 块的就没了。。。
4 月 4 日
回复了 v2exgo 创建的主题 程序员 中转站真的就是一个辛苦钱,还要被人锤
搞笑又扎心
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 选么?
1  2  3  4  5  6  7  8  9  10 ... 45  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   946 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 20:09 · PVG 04:09 · LAX 13:09 · JFK 16:09
♥ Do have faith in what you're doing.