RT,业务需求需要搭一个win10的系统,预期需要7*24小时运营,相当于当做服务器使用。 核心需求点应该是CPU,显示器随便,预期5k以内吧,想问问佬们有无推荐合适的电脑主机~ 在京东上看有小盒子的迷你电脑主机,不知道这类主机合不合适当做服务器来使用~ 21 个帖子 - 6 位参与者 阅读完整话题
Article URL: https://github.com/drasimwagan/mdv Comments URL: https://news.ycombinator.com/item?id=47816629 Points: 2 # Comments: 0
stream disconnected before completion: Transport error: timeout 问一下 最近频繁出现这个问题 自己接的cpa 是vps的问题还是我的网络问题啊 之前好像基本没有这个问题的 这两天好严重 求佬友解答 1 个帖子 - 1 位参与者 阅读完整话题
Article URL: https://solyto.app Comments URL: https://news.ycombinator.com/item?id=47816514 Points: 8 # Comments: 6
Article URL: https://github.com/Nour833/StegoForge Comments URL: https://news.ycombinator.com/item?id=47816491 Points: 1 # Comments: 0
Hi friends! Awesome news! We had started our playtest. It will last for about a month, maybe more, depending on demand. The goal of this playtest is to check the game from Chapter 1 to Chapter 3, and collect your feedback. Please write all your thoughts in the game's community hub. You can playtest Shop Crush on the game's Steam page. Comments URL: https://news.ycombinator.com/item?id=47816464 Points: 1 # Comments: 1
Comments URL: https://news.ycombinator.com/item?id=47816451 Points: 1 # Comments: 0
Article URL: https://github.com/raullenchai/Rapid-MLX Comments URL: https://news.ycombinator.com/item?id=47816238 Points: 1 # Comments: 0
RT,Ark API的限制是什么(例如并发什么的),有没有佬知道的 害怕高并发把号搞没了 6 个帖子 - 3 位参与者 阅读完整话题
RT,这两天有没有仍然可用的codex或者Claude呀,中转站或者公益站都行,或者有没有不太贵的氪金玩法,求各位佬们推荐 18 个帖子 - 14 位参与者 阅读完整话题
RT,之前看到有大佬去计算CodeX套餐对应的额度 那么是否计算过智谱新套餐/Kimi各套餐的对应额度吗? 今天看到腾讯出了企业套餐,那么其实在考虑如果直接用各家云的按量计费不知道对比CodingPlan成本会上浮多少? 毕竟在某些用量下有可能在按量计费的前提也许比直接订购还便宜 感谢! 1 个帖子 - 1 位参与者 阅读完整话题
Article URL: https://hack-game-pi.vercel.app/ Comments URL: https://news.ycombinator.com/item?id=47816065 Points: 1 # Comments: 1
<script setup> import { ref } from 'vue'; import { onLoad } from '@dcloudio/uni-app'; import request from '@/utils/request'; import { getFiles, getRandomFile, getFileArray } from '@/utils/yangUtils'; const imageSuffix = ['png', 'jpg', 'jpeg']; const videoSuffix = ['mp4', 'avi', 'mov']; const imageNum = ref(0); const videoNum = ref(0); // 获取父级传入的数据 const props = defineProps(["modelValue", "limit", "message", "isDelete", "isAdd"]); // 定义 emits const emit = defineEmits(['update:modelValue']); // const listData = ref(["https://yxdjpw.oss-cn-beijing.aliyuncs.com/uploadDefault/20260417192542-d3ea46.png", "https://yxdjpw.oss-cn-beijing.aliyuncs.com/uploadDefault/20260417194449-bfb1ba.mp4"]); const listData = ref([]) const onSelectFile = async () => { let result; // #ifdef APP || APP-PLUS || MP-WEIXIN || MP-TOUTIAO || MP-LARK || MP-JD || MP-HARMONY || MP-XHS result = await uni.chooseMedia({ count: props.limit || 9, mediaType: ['image', 'video'], sourceType: ['album', 'camera'], maxDuration: '30s' }) // #endif // #ifdef WEB || H5 result = await uni.chooseFile({ count: props.limit || 9, type: 'all', }) // #endif let arr = []; console.log(result); for (let filePath of result.tempFiles) { // 判断文件是否超出10M if (filePath.size > 10 * 1024 * 1024) { uni.showModal({ title: '提示', content: '文件大小不能超过10M!', showCancel: true, }) return; } if (imageSuffix.includes(filePath.name.replaceAll('"', '').split('.').pop()?.toLowerCase())) { imageNum.value++; } else if (videoSuffix.includes(filePath.name.replaceAll('"', '').split('.').pop()?.toLowerCase())) { // 判断之前有没有上传过视频或者图片 if (imageNum.value >= 1 || videoNum.value >= 1) { uni.showModal({ title: '提示', content: '图片和视频不能同时上传,并且视频只能上传一个!', showCancel: true, }) return; } videoNum.value++; } const data = await request("/upload/uploadFile", filePath.path, "post"); arr.push(getFileArray(data)[0]); } listData.value = listData.value.concat(arr); // 将数据返回出去 emit("update:modelValue", listData.value.join(",")); } // 删除 const onDelete = (index) => { // 1. 先拿到要删除的项(必须在 splice 之前拿!) const deletedItem = listData.value[index]; // 2. 判断类型,更新计数 const ext = deletedItem.split('.').pop()?.toLowerCase(); if (imageSuffix.includes(ext)) { imageNum.value--; } else if (videoSuffix.includes(ext)) { videoNum.value--; } // 3. 再删除元素 listData.value.splice(index, 1); // 4. 更新双向绑定 emit("update:modelValue", listData.value.join(",")); } // 查看 const onView = (item) => { } // 类型判断 const isSuffix = () => { return listData.value.some(item => { // 获取后缀(转小写,避免大小写问题) const ext = item.split('.').pop()?.toLowerCase() return videoSuffix.includes(ext) }) } </script> <template> <view> <view class="header"> <view v-if="props.message" class="message">{{ props.message }}</view> <view class="numCount">{{ `${listData.length}/${props.limit || 9}` }}</view> </view> <view class="image-grid" :class="isSuffix() ? 'grid-video' : ''"> <template v-for="(item, index) in listData" :key="index"> <view class="grid-item grid-item-content" :class="isSuffix() ? 'grid-item-video' : ''" @click="onView(item)"> <image v-if="imageSuffix.includes(item.split('.').pop())" class="img" :src="item" mode="aspectFill" /> <video v-else-if="videoSuffix.includes(item.split('.').pop())" class="video" :src="item" /> <view class="grid-item-delete" v-if="(isAdd ?? true)" @click="onDelete(index)"><uni-icons class="icon-delete" type="closeempty" color="#D3D4D6" size="24" /></view> </view> </template> <view class="grid-item icon-add" v-if="(isAdd ?? true) && !isSuffix() && listData.length < (props.limit ?? 9)" @click="onSelectFile()"> <uni-icons type="plusempty" size="60" color="#F1F1F1"></uni-icons> </view> </view> </view> </template> <style lang="scss" scoped> .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20rpx; } .image-grid { display: grid; grid-template-columns: repeat(3, 1fr); /* 一行3个,自动均分 */ gap: 20rpx; /* 格子间距 */ box-sizing: border-box; } .grid-item { width: 240rpx; height: 240rpx; } .grid-video { grid-template-columns: repeat(1, 1fr) !important; } .grid-item-video { width: 100%; height: 400rpx; } .numCount { display: flex; flex-direction: row-reverse; font-size: 26rpx; } .img, .video { width: 100%; height: 100%; } .grid-item-content { position: relative; } .icon-add { background: #FFFFFF; line-height: 240rpx; text-align: center; border: 1rpx solid #EEEEEE; border-radius: 6rpx; } .grid-item-delete { position: absolute; top: 0rpx; right: 0rpx; z-index: 1; } </style> 方法解析 文件后端返回的是 /api/upload/xxx.png getFiles 将图片拼接成正常能访问的 比如 http://域名.com/api/upload/xxx.png getRandomFile 是随机访问 getFileArray 是拼接成数组 limit → 最多上传数量 默认为9 message → 提示 比如请上传视频 可不填 isDelete → 是否可以删除重新上传 默认为true isAdd → 是否可以新增,比如有些地方可以直接回显 比如产品的图片,但是你不想让它显示新增的框 可以为false 默认为true // 文件加载 export const getFiles = (url) => { if (!url) { return ""; } if (url.startsWith("http://") || url.startsWith("https://")) { return cleanString(url); } else { return baseURL + cleanString(url); } }; // 随机加载文件 export const getRandomFile = (url) => { if (!url) { return ""; } const urls = url.split(","); const randomIndex = Math.floor(Math.random() * urls.length); const selectedUrl = urls[randomIndex]; if ( cleanString(selectedUrl).startsWith("http://") || cleanString(selectedUrl).startsWith("https://") ) { return cleanString(selectedUrl); } else { return baseURL + cleanString(selectedUrl); } }; export const getFileArray = (url) => { if (!url) { return []; } let baseUrl = []; url.split(",").forEach((v) => { if ( cleanString(v).startsWith("http://") || cleanString(v).startsWith("https://") ) { baseUrl.push(cleanString(v)); } else { baseUrl.push(baseURL + cleanString(v)); } }); console.log(baseUrl); return baseUrl; }; 请求就是 uni.request的请求 你们按照你们自己的改 当前只支持H5 你们需要的话 我会再更新 如果上传了视频就直接独占一行 并且不能上传其他视频和图片 仿照的是朋友圈 其他页面调用就是 比如文件名叫uploadFile.vue吧 import UpLoadFile from '@/components/uploadFile.vue' // 页面代码 <UpLoadFile v-model="form.media" /> 第一次封装 还有些问题 我会持续更新的 1 个帖子 - 1 位参与者 阅读完整话题
No self-reporting. Only code. Built a platform that tries to infer what you know from your actual work. Comments URL: https://news.ycombinator.com/item?id=47815869 Points: 1 # Comments: 0
Email Signature Builder that is completely free, supports placeholders, and with WYSIWYG / HTML Editor you're completely free to build it your way. Comments URL: https://news.ycombinator.com/item?id=47815858 Points: 1 # Comments: 0
https://www.nature.com/articles/s41586-026-10319-8 1 个帖子 - 1 位参与者 阅读完整话题
Article URL: https://github.com/Higangssh/pvm Comments URL: https://news.ycombinator.com/item?id=47815391 Points: 4 # Comments: 0
RT,目前搜索到的大部分都是ClaudeCode 第三方插件 Obsidian,但是习惯用codex之后,实在懒得折腾了…佬们有木有办法? 求指教 3 个帖子 - 2 位参与者 阅读完整话题
Article URL: https://github.com/eph5xx/tweakidea Comments URL: https://news.ycombinator.com/item?id=47815028 Points: 1 # Comments: 0
Article URL: https://itlinks.me Comments URL: https://news.ycombinator.com/item?id=47814937 Points: 2 # Comments: 0