今日已更新 245 条资讯 | 累计 26657 条内容
关于我们

标签:#EV

找到 3744 篇相关文章

AI 资讯

Built a DOM annotation layer for the browser, teams can leave notion-like comments on any element on any webpage.

Hey everyone!! sharing something I've been building for the past 2 months. Leafy lets you and your team annotate any webpage. You click an element (or highlight text), leave a comment, @ mention teammates, and they get notified. Comments are anchored to specific parts of the page and sync across devices. Use cases I've seen people use it for: → Product teams reviewing features on their products → Designers leaving feedback on live prototypes → Researchers annotating sources together → QA marking bugs on staging environments → Sales teams using it on salesforce → Students using it for marking interesting things on any page, to study You can organise teams into "Gardens" (I know, quirky naming). Free tier supports up to 3 gardens with 5 members each. I'd love any feedback! especially on what feels broken or missing. Chrome Web Store: https://chromewebstore.google.com/detail/leafy-annotate-the-web-to/doohbmfpjanoimbigjbjocanpenbfkkh https://preview.redd.it/4riy4haubu5h1.png?width=908&format=png&auto=webp&s=69ecac6f3bef7a4843c58095c3d8a5972ff2ceaa Product page: https://get-leafy.com submitted by /u/maxisrichtofen [link] [留言]

2026-06-07 原文 →
AI 资讯

JPEG XL is objectively better than WebP in almost every way - so why are most browsers still ghosting it? And should we start a petition?

A bit of context first. I run a service that caches images from paywalled sites so users don't have to load them fresh on every visit. The overwhelming majority of what we cache is PNG - huge, bloated, uncompressed PNG. Naturally, I started looking into smarter storage and serving strategies, and JPEG XL kept coming up as the obvious answer. The compression gains on PNGs especially are remarkable: you can cut file sizes by 50–60% compared to JPEG with minimal perceptible quality loss at equivalent settings. So the plan seemed straightforward: Convert everything to JXL Detect browser support via the Accept header Serve JPEG as a fallback on the fly for unsupported browsers Here's what the numbers actually looked like: Strategy Total Size Savings Do nothing ~51 GB - WebP Q85 (universal) ~12 GB −39 GB JPEG Q92 (universal) ~21 GB −30 GB JXL d=1 + JPEG fallback ~16 GB / ~5 GB −46 GB (85% of users get 76 KB avg) The JXL route has the best savings on paper - but it means storing two versions of everything, or doing on-the-fly conversion, which adds latency. WebP Q85 just wins. Universally supported (~97–98% of browsers globally), −39 GB in savings, no fallback needed. I hate that this is the conclusion, because JXL is better across most technical dimensions that matter Chrome removed JXL support in Chrome 110 in October 2022 - and that removal was the real killer, given Chrome's ~65% global market share. The stated reasons were actually fourfold: experimental flags shouldn't remain indefinitely; insufficient ecosystem interest; insufficient incremental benefits over existing formats; and maintenance burden reduction. Critics, including engineers from Intel, Adobe, Cloudinary, Meta, and Shopify, disputed all of these claims vigorously in what became one of the most contentious threads in Chromium history. In 2026: Google has reversed course. Chrome 145 (released February 2026) ships with a JPEG XL decoder - currently behind a flag, but back in the codebase for the first tim

2026-06-07 原文 →
AI 资讯

built a simple video compressor/trimmer because my screen recordings were always too huge to share.

As the title says, creating and sharing short videos on macOS or Windows has never been a smooth flow for me. I used to screen cap with QuickTime or the NVIDIA. The result were huge .mov or .mp4 file. Then I either need to upload a 600 MB file to an online compressor, open Handbrake, or use ffmpeg from the command line. Ffmpeg is great, but for quick everyday use, but I found myself loosing the text file where I keep the most useful commands to adjust parameters, and it's anying when there are silly error because I forgot a parameter. And if I wanted to trim the video, I usually had to open a separate video editor that take time to open and are sort of overkill for a simple trimming. So I built Compress.mov . The basic flow is simple: drag and drop a video, choose whether you want to trim it, compress it, or both, and get the result automatically saved in your computer. Over time I added more features: audio removal, video rotation, codec selection, video rescaling, multiple languages (german, farsi, japanese...), and a small counter that shows how many lifetime megabytes you’ve saved by using the Compress app. The latest feature I’m testing is video recording, so I don’t have to use QuickTime anymore! This started as a side project on my spare time, and I built it without an AI assistant, so it’s fully handmade 😃 You can try it at compress.mov for FREE and if you become a fun please purchase it at the windows store or App Store to help me stay motivated. submitted by /u/tino-latino [link] [留言]

2026-06-07 原文 →
AI 资讯

Building a Privacy-First Media Converter in the Browser: No Servers, No Cloud, 100% Client-Side (RAM-Friendly)

Most online file converters require uploading your documents, images, or videos to an unknown server. This is slow, inconvenient, and raises serious privacy concerns. I decided to build something different: a converter that works entirely inside your browser. Processing large files without a backend presents two main engineering challenges: How do you avoid consuming all available RAM? How do you prevent the user interface from freezing? This article explains how I solved these problems using OPFS, Web Workers, and a Backpressure mechanism. The result is a working tool you can try right now: PixelForge Free . The Architecture at a Glance Here is the simplified data flow of the entire pipeline: Drag & Drop → OPFS (Virtual Disk) → Worker Pool (Backpressure) → ZIP Stream → Download Problem 1: Out-of-Memory (OOM) Crashes The Challenge: Loading many files directly into the browser's memory is impossible. A user dropping a folder with 100+ high-resolution images would instantly crash the tab. The Solution: Origin Private File System (OPFS) OPFS provides a fast, isolated virtual disk inside the browser. Instead of loading files into RAM, my pipeline intercepts the drop event and streams the raw binary data directly to this virtual disk. Here is a simplified version of how it works: // Get a reference to the virtual disk const root = await navigator . storage . getDirectory (); const fileHandle = await root . getFileHandle ( `input_ ${ id } .raw` , { create : true }); // Create a writable stream to the disk const writable = await fileHandle . createWritable (); // Stream the file directly from the user's computer to the virtual disk await file . stream (). pipeTo ( writable ); This allows the application to accept a folder with 500+ items without consuming more than a few megabytes of actual RAM. The data stays on the user's SSD, not in memory. Problem 2: UI Freezing The Challenge: Image compression, PDF parsing, and video encoding are CPU-intensive operations. Running them

2026-06-07 原文 →
AI 资讯

I abandoned my campus app 3 years ago. The Finish-Up-A-Thon made me fix it

This is a submission for the GitHub Finish-Up-A-Thon Challenge What I Built CampusBeat 2.0 — a React Native campus super-app for students across 17 colleges in Odisha, India. It started in 2023 as a simple notice board aggregator: scrape college websites so students didn't have to visit them. It worked. Students used it. Then life happened, and it sat untouched on GitHub for three years. This challenge gave me the push to finally open that repo again. What I found was equal parts embarrassing and educational. What it is now: 📰 Real-time notices for 17 colleges — ITER, KIIT, NIT Rourkela, IIT, and more 🎨 Complete UI overhaul — warm cream × charcoal × coral editorial design 🃏 3D tiltable campus identity card you can share with friends 🔖 Bookmarks — save any notice, grouped by college 💬 Real-time campus chat rooms powered by Socket.io 🛒 Campus marketplace — buy/sell within your college 🔔 Push notifications via Firebase Demo The original app from July 2023: LinkedIn post CampusBeat 2.0 — running on device: Onboarding screen - with beautiful animation Onboarding.mp4 - Google Drive drive.google.com Login screen — editorial serif heading, Lottie animation, warm ink hero Register screen — custom college picker bottom sheet with live search Home screen — quote card, college notice feed, floating tab bar Profile screen — 3D tiltable campus card with holographic shimmer Share modal — drag to rotate the card, share natively News Explorer — college chips, notice type tabs, live banner Marketplace — buy and sell within your college Bookmark - your persistent news bookmark.mp4 - Google Drive drive.google.com Chat screen - live interaction within colleges chat.mp4 - Google Drive drive.google.com The Comeback Story What I found after 3 years Opening an old repo is humbling. Here is what I walked into. The dead API. The home screen showed a daily quote — except quotable.io had shut down. Every user was silently seeing the hardcoded fallback for three years: "Villains are not bad, the

2026-06-07 原文 →
AI 资讯

OpenAI-Compatible Gateway Control Plane Checklist

A lot of teams start their LLM stack with one model string in application code. That is fine for prototypes. It becomes painful once multiple products, customers, background jobs, and fallback paths all share the same AI budget. At that point, an OpenAI-compatible gateway should not just be a convenience proxy. It should become a control plane: the place where routing, quotas, cost attribution, keys, and failover are managed consistently. Here is the checklist I use when evaluating whether a gateway setup is production-ready. 1. Keep the SDK surface stable Your application should not need to know every provider-specific header, endpoint, or auth detail. A simple OpenAI-compatible client shape keeps provider changes out of the main code path: from openai import OpenAI import os client = OpenAI ( api_key = os . environ [ " AI_GATEWAY_API_KEY " ], base_url = os . environ . get ( " AI_GATEWAY_BASE_URL " ), ) The app should usually call a logical model or route. Provider-specific decisions should live in gateway configuration where they can be reviewed and changed safely. 2. Route by feature, not by vibes A global default model is easy to start with, but it hides important differences between workloads. A better routing table looks like this: Feature Default tier Fallback tier Budget sensitivity Classification low-cost fast model second low-cost model high Support summary low/mid model mid model high Customer chat mid/frontier model safe fallback medium Coding/analysis strongest reliable model reasoning model low/medium Background enrichment batch/cheap model skip/defer very high The goal is not always to use the cheapest model. The goal is to use the cheapest model that reliably clears the quality bar for that feature. 3. Enforce limits at the gateway boundary Do not rely only on scattered application code for cost control. A shared gateway should enforce: per-API-key quotas per-project or per-customer spend caps per-feature token limits provider and model allow-lists e

2026-06-07 原文 →
开发者

JMGO’s N3 Ultimate projector is the new portable 4K champ

Sorry Anker: JMGO now makes my favorite flagship portable projector. The N3 Ultimate is an excellent portable 4K projector that defeats moderate ambient light at severe placement angles and can rival more expensive home theater installations at night. After a few weeks of testing, I think the raw adaptability exhibited by the JMGO's N3 Ultimate […]

2026-06-07 原文 →
AI 资讯

I turn a spreadsheet into hundreds of static SEO pages — so I built PageForge (free beta)

I run a couple of small niche sites — a pet-health tool and a travel-info site. The thing that actually moves the needle for both isn't clever copywriting. It's having a lot of pages that each answer one specific, low-competition question. "Puppy vaccine schedule by breed." "Is [neighborhood] worth visiting." That kind of thing. This approach has a name: programmatic SEO . You take a data set (one row = one page), pour it into a template, and generate pages at scale. Done well, it's how directories, comparison sites, and tool sites quietly rank for thousands of long-tail terms. Done badly, it's a spam farm that Google buries. More on that later, because it matters. The problem: the tooling is either expensive or a Rube Goldberg machine When I went looking for a way to do this without hand-coding every page, I found two camps: Agency-grade SaaS — powerful, but priced at $99–$299/month . That's a lot of money to spit out HTML when you're a solo operator running sites that make beer money. No-code stacks — wire a spreadsheet to a CMS to a static-site generator with a couple of automation tools in between. It works, but now you maintain a fragile chain of four services, and your pages live inside someone else's platform. Neither felt right. I just wanted: spreadsheet in, clean HTML out, files I own. What I actually built (for myself, first) So I wrote a generator for my own sites. Every morning it reads a CSV, applies a template, and produces a folder of static HTML pages — each with valid JSON-LD, proper meta tags, an internal-link hub, and a sitemap. I deploy the folder. Done. After running it daily for months on my own properties, I cleaned it up and turned it into a product: PageForge . The core idea is deliberately boring: CSV + template → a ZIP of clean static HTML pages you own. No dashboard you have to log into forever. No lock-in. The output is just files. If you stop using PageForge tomorrow, your pages keep working because they're plain HTML sitting in your r

2026-06-07 原文 →
AI 资讯

China LLM API Benchmark 2026: Prices, Speed, and Setup Guide

Chinese models now account for 61% of global LLM token consumption. DeepSeek, Qwen, GLM, and Doubao consistently dominate the global top 10 on OpenRouter. But for developers outside China, accessing them is painful — no English docs, no international payment, confusing pricing. I tested all 6 major APIs. Here's what I found. Price Comparison (June 2026) Model Provider Input $/1M tokens Output $/1M tokens vs OpenAI DeepSeek V3 DeepSeek $0.35 $0.52 95% cheaper DeepSeek V4-Flash DeepSeek $0.003 $0.015 99.7% cheaper Qwen-Max Alibaba $0.58 $1.74 92% cheaper GLM-5 Zhipu AI $0.87 $4.05 84% cheaper Doubao Pro ByteDance $0.43 $0.87 95% cheaper MiniMax M2.5 MiniMax $0.45 $0.90 95% cheaper DeepSeek V4-Flash at $0.003/M is 1/300th the cost of GPT-4o . For agent chains or batch processing, you can call it without thinking about cost. Quick Start All Chinese models follow OpenAI API format. Change base_url and model — zero code changes. # DeepSeek curl https://api.deepseek.com/v1/chat/completions \ -H "Authorization: Bearer $API_KEY " \ -d '{"model":"deepseek-chat","messages":[{"role":"user","content":"Hello"}]}' # Qwen — same format, different endpoint curl https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \ -H "Authorization: Bearer $API_KEY " \ -d '{"model":"qwen-max","messages":[{"role":"user","content":"Hi"}]}' How to Get API Access Model Sign Up Payment Free Tier DeepSeek platform.deepseek.com Alipay/WeChat 5M tokens Qwen dashscope.aliyun.com Alipay 2M tokens/month GLM-5 open.bigmodel.cn WeChat/Alipay 1M tokens Doubao console.volcengine.com/ark Alipay 500K tokens MiniMax platform.minimaxi.com Alipay 1M tokens All platforms support English UI. Most don't require a Chinese phone number. Latency (tested from Singapore) Model TTFT Tokens/sec Total (100 tokens) DeepSeek V3 380ms 85 t/s 1.5s DeepSeek V4-Flash 120ms 240 t/s 0.5s Qwen-Max 450ms 65 t/s 2.0s GLM-5 520ms 55 t/s 2.3s Which Model for What Use Case Model Agent chains (5-10 calls) DeepSeek V3 Bulk process

2026-06-07 原文 →
AI 资讯

I built an open-source vs-code extension to scan vulnerable dependencies and avoid getting compromised via another supply-chain.

Hi everyone, posting here after a really long time. Our industry is experiencing a major shift, we are getting closer to the reality of agentic programming every single day. Though I'm all in for agentic programming, I don't think it should come at the cost of our codebases getting compromised because an LLM decided to install a compromised dependency. With supply-chain attacks being on the verge of becoming part of our daily lingo as developers, especially in the js/ts ecosystem, I've built a vs-code extension which scans your lock files (npm/yarn/pnpm, all three supported) against the listings on Github Advisory Database and osv.dev. Based on the listing it determines the health status of your project. It also scans dependencies which were not installed by you but are required by other dependencies to function properly. Based on the scan, you get four status in the sidebar: SOS Alert - Your installed version is compromised. Act now. Don't Upgrade - You're safe, but a newer version is compromised. Don't Downgrade - You're safe, but an older version is compromised. Passed - Green check. All safe. This is how the extension reporting looks: https://preview.redd.it/c8df2fjegs5h1.png?width=2624&format=png&auto=webp&s=ce506f033beb83d97915281ebf2888c456428fd4 The scanning is done: - Polling based: every 30 minutes. - every time you open the window. - can be manually triggered by commands. Right now it only scans via osv and gha, I plan to integrate more reliable and faster sources like synk in future. Would love everyone's opinion on this since I did not do much research in this and just built it on saturday. The extension can be installed from: https://marketplace.visualstudio.com/items?itemName=uskhokhar.trust-me-bro-vsc The codebase is available at: https://github.com/USKhokhar/trust-me-bro Please give it a try. Rate it on marketplace if you like and star it on github if you like it a little extra. I'm also posting this here seeking open-source contributors who are mor

2026-06-07 原文 →
AI 资讯

Why a single AI confidently lies to you — and a council doesn't

By Vladislav Shter · The Sovereign Ecosystem Ask any major AI model a question and you'll notice something: it almost always agrees with you. You propose an idea, it tells you the idea is great. You make a claim, it validates the claim. You ask if your code is fine, it reassures you that it's fine. This is not an accident. It's a design choice. And once you see it, you can't unsee it. The agreeable machine Modern AI assistants are trained, in part, to keep you satisfied. A satisfied user comes back. A user who comes back keeps the subscription. So the models are nudged — through their training — toward being pleasant, encouraging, and agreeable. Researchers even have a name for this failure mode: sycophancy, the tendency of a model to tell you what you want to hear rather than what is true. It feels good. You get a small hit of validation every time the AI confirms you were right. But for anyone doing serious work — auditing code, checking facts, making decisions — that agreeableness is dangerous. A tool that mostly agrees with you is not a tool that catches your mistakes. And it gets worse when the model doesn't actually know the answer. When confidence and truth come apart Here's the real trap: a single model doesn't just agree too easily — it also fills gaps with invented detail, delivered in the same confident tone as its correct answers. There is no visible difference between "I know this" and "I'm guessing and dressing it up." The fluency is identical. Even the heavyweight, expensive models do this. A premium model like Gemini can produce beautifully written, authoritative text that contains fabricated facts, invented citations, or specifics that simply aren't real. For an inexperienced user this is invisible. For an experienced user it's worse — it's actively disorienting, because the wrong answer looks exactly as polished as the right one. So you're left with two problems stacked on top of each other: the model is biased toward agreeing with you, and when it

2026-06-07 原文 →
AI 资讯

Building Open Source Racing Analytics

Spent the last few months of my free time working on this, essentially a version of race studio that works on mobile/tablet/desktop Now supports AiM (xrk), iRacing (ibt), and RaceBox (vbo) files a webapp designed around an offline-first philosophy, works 100% offline. Supports video overlays (not chunked videos yet) Historical weather Saving chassis setups in a way that locks a version to a session so changing the setup won't mess with historical data overlay data from any session onto the current session And so much more And includes a FOSS datalogger as well Nothing gated behind a paywall except you dumping logs on my server, unlimited local storage Before I overhaul this horrible UI, I was probably going to add a "fastest lap" social section where people would upload their fastest laps, and users can reference that data. If anyone here races (shocking amount of devs at the track) just list whatever features you think the popular software is missing, and give me a couple days lol https://HackTheTrack.net submitted by /u/Willing_Comb_9542 [link] [留言]

2026-06-07 原文 →
AI 资讯

Run Coding Agents on Local AI — Zero Cloud, Full Control

Coding agents — Codex CLI, Claude Code, Cursor, and Pi — are productivity multipliers. But they all assume you are happy sending your code to someone else's servers. For many of us that is a deal-breaker: proprietary codebases, client NDAs, compliance requirements, or just the principle of owning your own compute. This guide shows how to swap out every cloud API with a local Ollama server running qwen3-coder:30b . Same tools, same workflows, no data leaving your network. Why Run AI Locally? The case is simple: Zero data exfiltration. Your code never leaves your machine or LAN. No per-token cost. Run 10,000 completions or 10 — the electricity bill does not care. Works offline. Airplane mode, restricted network, flaky VPN — irrelevant. No rate limits. No 429s at 2 am when you are in flow. The honest tradeoff: frontier models (Claude Opus 4, GPT-5) still outperform local models on complex multi-step reasoning and very large context tasks. For the 80% of day-to-day coding work — autocomplete, refactors, test generation, documentation — a well-chosen local model is more than good enough. Hardware Requirements I run this on an Apple M4 Pro with 48 GB unified memory . Apple Silicon's unified memory architecture is exceptionally well-suited to LLM inference: the GPU and CPU share the same memory pool, so a 22 GB model fits comfortably alongside a full development environment. Minimum viable setup: RAM What fits 16 GB 7–8B parameter models (qwen3:8b, llama3.2:8b) 32 GB 14–20B models (qwen3:14b, gpt-oss:20b) 48 GB 30–35B models (qwen3-coder:30b, qwen3.6:35b) 64 GB+ 70B models (deepseek-r1:70b, llama3.3:70b) On Intel/AMD systems with discrete GPUs the math is different: VRAM is the bottleneck, and models that don't fit entirely in VRAM fall back to slow CPU offloading. Choosing a Model For 48 GB unified memory, these are the models worth knowing about: Model Size on disk Active params Strengths qwen3-coder:30b ~22 GB 3.3B (MoE) Coding, 256K context, HumanEval SOTA qwen3.6:35b

2026-06-07 原文 →
AI 资讯

I got tired of manual job applications, so I engineered an automation workspace instead.

Hi everyone, As a Full-Stack and Cloud engineer, I’m used to automating everything I can. Whether I'm managing my 28+ container Kubernetes homelab on Proxmox or writing deployment scripts, I absolutely hate doing the same manual task twice. But a few months ago, when I was hunting for a new role, I found myself doing exactly that: manually tweaking my resume for every single job, copy-pasting into black-box ATS portals, and tracking it all in a chaotic spreadsheet. It was completely draining. So, I took a break from the applications and built a tool to solve my own problem. It’s called OneApply. It started as a small browser extension to check ATS keywords, but it quickly snowballed into a complete workspace. Here is what the stack handles now: Resume Tailoring: Automatically adjusts your resume to fit specific job descriptions. ATS Keyword Scoring: Checks your overlap with the job description so you know you'll actually pass the automated filters. Cover Letter Generation: Drafts contextual cover letters based on the role and your specific engineering experience. Pipeline Tracking: Manages all your applications natively so you can finally ditch the spreadsheets. Building this and using it to automate the worst parts of the daily grind actually helped me land my current SRE role. Since it worked for me, I decided to polish it up and release it for other devs who are currently stuck in the application trenches. We all know the tech market is tough right now, and any edge helps. I would love for this community to try it out and roast the UX, the workflow, or the core features. Check it out here: https://www.oneapply.app I am more than happy to hand out some premium access codes to anyone here who is actively applying and wants to test drive the full feature set. Just drop a comment below!

2026-06-07 原文 →
AI 资讯

async/await is a Generator in Disguise. Let's Build It From Scratch

You write await a dozen times before lunch. Fetch a row, await it. Call a service, await that. It works, you move on, and you never have to think about what the word is doing. Then one day someone asks you to explain it. Maybe it's an interviewer."But what does await actually do?" And you open your mouth and what comes out is "it, uh, waits for the promise." Which is true, and also explains nothing. We can build async/awit mechanism from scratch using generators as a learning exercise. It requires a pause button wired to a small loop that waits on a promise and then presses play again. You already know one half of that machinery if you read the last post in this series . The other half is a trick generators have that we glossed over. Put the two together and you can build a working version of async/await yourself, by hand, and watch it behave exactly like the real thing. Let's do that. The shape of the problem Strip await down to what it has to accomplish and you get two requirements: First, a function has to be able to stop in the middle. Right at the await, freeze everything, the local variables, the spot in the loop, all of it, and hand control back to whoever called it. Normal functions can't do this. They run start to finish and that's the deal. Second, something on the outside has to wait for the promise to settle and then nudge the frozen function back to life, handing it the resolved value as if the await expression had simply evaluated to it. That's the whole job. A function that pauses, and a driver that resumes it when a promise is ready. Hold that picture, because the rest of this is just filling in those two pieces with things JavaScript already gives you. The half you've seen: pausing A generator function, the function* kind, can pause itself with yield and resume later from the exact same spot. We leaned on that hard in the CSV piece to pull rows through a pipeline one at a time. A line came in, got yielded, and the generator sat frozen until someone

2026-06-07 原文 →