惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Blog — PlanetScale
Blog — PlanetScale
博客园 - Franky
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
D
Docker
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
N
Netflix TechBlog - Medium
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Engineering at Meta
Engineering at Meta
H
Help Net Security
B
Blog
宝玉的分享
宝玉的分享

分享创造

分享 KCase 脑图测试用例生成平台(AI 辅助生成测试用例) 标签页囤积症自救:写了个插件 TabRack,主打快速检索、自动分类和 AI 摘要 [file-preview]一个比较全面的在线文件预览组件库-支持 react 和 vue 撸了个 iOS 小应用[极简水印相机],直接免费 做了一个 V2EX Skill 写了个 iOS 打码 App「遮鸭 Maskduck」,纯离线免费 35 岁前端,裁员失业后,我花 1 个月做了个 AI 生图网站 亲身经历猫咪急症,我做了一款猫狗疼痛检测工具,希望能救你家毛孩一命 如何用 AI 做比较酷炫的落地页? 求真!最近 AI 生图的能力强到可怕 开源一个查看 k8s 的菜单栏工具-kubebar Packpour:我做了个专门给 App Store Connect 填多语言元数据的小工具 面对 140 年一遇的超级厄尔尼诺,我做了个全球监测小站 做了一个自动翻译的 Hacker News 客户端 做了一个 AI 头像生成器,可以免费生成 2 次 [送码 50 个] 自己手搓了个高颜值的倒数日 App——拾光机,求 V 友们指点 一个将苹果健康 APP 数据导出的工具,然后把你的数据喂给 AI 分析 我做了一个叫「订阅斩」的 iOS App,专门对付那些悄悄扣钱的订阅 做了个草率的日麻互动漫画,听听反馈 喜欢自己洗车的朋友们,我用 ai 做了一款洗车小程序 -- 洗车志 感谢 V2EX 上各位 NAS🍆 和 Datahoarder 玩家的关注和真实反馈!作为个人开发者,能得到这么多硬核玩家们的讨论,我非常荣幸。 用 AI 开发熊孩子自律的小程序 用 OpenClaw 搭建个人运动助手 今天摸鱼给 NanaAI 也接入了 GPT-Image-2 [Video Companion]一个 chrome 插件,解决大多对视频操作的需求~欢迎使用提 bug AI 时代,做产品简单了,把产品推广出去却变的更难了~ bestskills.dev - Skills 精选和评测站点 免 ROOT 强力卸载安卓广告软件 一个 All In One 的运维工具,支持 SSH、数据库、Redis 管理 [开源] Codeg V0.10:专注于代码生成的多智能体 IDE(cc、codex、gemini、opencode……),新版本重构了工作区,飞一般的体验,支持桌面端、服务器部署
[送码] 维护了快一年的会员订阅管理工具 — 口袋订阅,最近大...
iPocket · 2026-05-26 · via 分享创造

一个苹果 iOS 原生制作的会员订阅管理工具 —— 口袋订阅,维护了快一年了,总体很稳定了,非常感谢国内外的朋友反馈,特别是一个老外叫 Jimmy ,好像非常喜欢我这款产品,他发现 bug 总是发邮件给我,邮件里有和他对话的几十封邮件了,真的非常感谢,也很开心。
产品主打简约,可以快速添加会员订阅,快速查找会员订阅,其他功能,订阅 APP 里该有的应该都有。然后可以通过长按别的 APP 分享到 口袋订阅 快速添加,也可以通过搜索 APP/网站 名称来快速添加,其他功能我倒觉得没那么重要,主要看个大概的费用。
APP 不搜集你的任何数据,这里其实有个缺点,就是你想改善你的产品的时候,没有数据,就会发现无从下手,你根本不知道用户在哪个页面体验不好😂,全靠用户从其他渠道反馈,邮件、小红书等。如有苹果开发者也可以一起交流下这方面的经验。
App Store 地址: https://apps.apple.com/cn/app/%E5%8F%A3%E8%A2%8B%E8%AE%A2%E9%98%85-%E8%AE%A2%E9%98%85%E7%AE%A1%E7%90%86%E4%B8%8E%E8%B4%A6%E5%8D%95%E6%8F%90%E9%86%92/id6752631319
https://i.imgur.com/RApyBOD.png
留言抽 20 个永久会员,明天收市后按上证指数抽出,因为我发现我送的很多兑换码感觉被机器人秒了
抽奖程序由 GPT 提供,代码如下
```javascript
(async function lottery() {
const drawTime = "2026-05-27 18:00:00"; // 开奖时间
const postUrl = "https://example.com/post/123"; // 帖子链接
const shIndex = "3123.45"; // 上证指数,建议用字符串,避免小数精度问题
const replyTotal = 1000; // 回复总数
const winnerCount = 20; // 抽奖个数
if (!drawTime || !postUrl || !shIndex) {
console.error("开奖时间、帖子链接、上证指数不能为空");
return;
}
if (!Number.isSafeInteger(replyTotal) || replyTotal <= 0) {
console.error("回复总数必须是大于 0 的安全整数");
return;
}
if (!Number.isSafeInteger(winnerCount) || winnerCount <= 0) {
console.error("抽奖个数必须是大于 0 的安全整数");
return;
}
if (winnerCount > replyTotal) {
console.error("抽奖个数不能大于回复总数");
return;
}
async function sha256Hex(text) {
const data = new TextEncoder().encode(text);
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
return Array.from(new Uint8Array(hashBuffer))
.map(b => b.toString(16).padStart(2, "0"))
.join("");
}
function hexToBigInt(hex) {
return BigInt("0x" + hex);
}
async function randomInt(seed, counter, maxExclusive) {
const max = BigInt(maxExclusive);
const space = 1n << 256n;
const limit = space - (space % max);
while (true) {
const hash = await sha256Hex(seed + ":" + counter.value);
counter.value++;
const num = hexToBigInt(hash);
// 拒绝采样,避免简单取模产生偏差
if (num < limit) {
return Number(num % max);
}
}
}
async function drawWinners(seed, replyTotal, winnerCount) {
const winners = [];
const swapped = new Map();
const counter = { value: 0 };
for (let i = 0; i < winnerCount; i++) {
const remaining = replyTotal - i;
const r = await randomInt(seed, counter, remaining);
const selectedIndex = i + r;
const selectedValue = swapped.has(selectedIndex)
? swapped.get(selectedIndex)
: selectedIndex + 1;
const currentValue = swapped.has(i)
? swapped.get(i)
: i + 1;
swapped.set(selectedIndex, currentValue);
winners.push(selectedValue);
}
return winners;
}
const rawSeed = [
`开奖时间=${drawTime}`,
`帖子链接=${postUrl}`,
`上证指数=${shIndex}`,
`回复总数=${replyTotal}`,
`抽奖个数=${winnerCount}`
].join("|");
const seedHash = await sha256Hex(rawSeed);
const winners = await drawWinners(seedHash, replyTotal, winnerCount);
const sortedWinners = [...winners].sort((a, b) => a - b);
console.log("========== 抽奖结果 ==========");
console.log("原始种子:");
console.log(rawSeed);
console.log("");
console.log("种子 SHA-256:");
console.log(seedHash);
console.log("");
console.log("中奖楼层:");
console.log(winners.join(", "));
console.log("");
console.log("中奖楼层,升序:");
console.log(sortedWinners.join(", "));
console.log("============================");
})();
```