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

AI 资讯

AI人工智能最新资讯、模型发布、研究进展

15119
篇文章

共 15119 篇 · 第 488/756 页

Dev.to

Production RBAC patterns for Go and Node startups

A founder told me last year: "We need admin features shipped by Friday. Can we just hardcode the roles for now?" That was 7 months ago. They're still paying for that decision today. This article is the breakdown I wish I had given them before that Friday — the patterns that separate a quick MVP version of RBAC from one that won't bite you back in six months. If you're a startup CTO, technical founder, or senior engineer about to ship admin/dashboard features for the first time, this is for you. The 4 signs your RBAC is a time bomb I've reviewed this exact pattern in 5+ early-stage codebases. Every one of them eventually hit the wall. Look for these signs: 1. Roles hardcoded in the JWT { "sub" : "user_123" , "role" : "admin" } Simple. Until you need to: Add a new role → migration + token refresh strategy Give one user a temporary elevated permission → "we'll just reissue tokens" Audit who had admin last month → good luck 2. Permission checks scattered across 40+ controllers // In every single handler: if user . Role != "admin" { return c . Status ( 403 ) . JSON ( ... ) } By the time you have 30 endpoints, you've made the same mistake 30 times. Refactoring is a full sprint. 3. One admin superuser that can do everything Until a sales rep accidentally deletes a customer record because they were elevated to admin "just for that one task last week." 4. Zero audit trail When the data goes missing, your only investigative tool is git blame on the source code and a desperate grep through CloudWatch logs. If you've nodded at any of these — keep reading. The real problem: policies-as-code Most teams treat permissions like business logic. They live in source files, gated by if statements, deployed with the rest of the code. This is the original sin. Code changes need deploys. Permissions change daily. When marketing onboards a new role next quarter, when a customer success rep needs view-only access to billing, when legal asks "who could have read this customer's data on Tuesda

kensaadi 2026-06-17 17:56 👁 9 查看原文 →
Dev.to

WSL UI, WSL Dashboard, and a "Counterfeit" Claim That Doesn't Survive the Timeline

There is now a second free WSL management tool out there called WSL Dashboard , published by a developer who goes by owu on GitHub. It is open source, it has more GitHub stars than WSL UI, and it is clearly the product of real effort. I have no problem with any of that. Competition is good for users, and WSL deserves more than one good GUI. What I do have a problem with is this notice, which appears both on wslui.com and in the WSL Dashboard README: "This software is not distributed through the Microsoft Store. Any application listed there under the same name is unauthorized and may be counterfeit. Please do not download it to avoid potential scams." WSL UI is on the Microsoft Store. It has been since January. So that notice is, in plain terms, telling people that the genuine, certified, earlier WSL tool is a counterfeit scam. It isn't. And the entire claim falls apart the moment you look at the dates — all of which are public, timestamped, and independently verifiable. What this post is, and what it isn't This is not a "my project is better than yours" post. I'm not going to pick apart WSL Dashboard's features or pretend it's a bad piece of software. It isn't. This is a correction of one specific, factual claim: that the version of WSL UI on the Microsoft Store is unauthorized or counterfeit. That claim is demonstrably false, and because it's aimed at a tool people trust, it's worth setting straight properly — with evidence, not adjectives. The timeline Every date below comes from a public record. I've linked the sources so you don't have to take my word for any of it. Date Event How to verify 2008-12-11 octasoft.co.uk registered. Octasoft Ltd has existed for well over a decade. Nominet WHOIS for octasoft.co.uk 2025-12-14 The octasoft-ltd/wsl-ui repository is created. GitHub API ( created_at ) 2026-01-10 WSL UI's first public release, v0.2.0. WSL UI releases 2026-01-13 WSL UI v0.14.0 is published to the Microsoft Store. The announcement post 2026-01-18 The owu/wsl-

Ian Packard 2026-06-17 17:56 👁 12 查看原文 →
Dev.to

Day 38 of Learning MERN Stack

Hello Dev Community! 👋 It is officially Day 38 of my unbroken streak toward mastering the MERN stack! Yesterday, I learned how to extract query strings from the URL bar. Today, I took a massive step forward into full-stack backend architecture by diving into Prashant Sir's (Complete Coding) roadmap to master HTTP Request Methods . Up until now, our server treated every incoming request the same way. Today, I learned how to make the backend execute completely different actions based on the "intent" (HTTP Verb) of the user! 🧠 Key Learnings From Node.js Lecture 6 (HTTP Verbs) An endpoint is no longer static when you map request methods against it. Here is the technical breakdown of what I locked down today: 1. Cracking req.method I discovered that the incoming Request object holds a crucial property called req.method . This tells the server exactly what action the client wants to perform. 2. The Big Four Core Methods GET: Used when the user simply wants to read or fetch data from the server (e.g., viewing a product page). POST: Used when the user wants to securely send or create new data on the server (e.g., submitting a signup form). PUT/PATCH: Used to update existing data records. DELETE: Used to wipe a specific data entry from the server storage. javascript const http = require("http"); const server = http.createServer((req, res) => { if (req.url === "/api/data") { if (req.method === "GET") { res.writeHead(200, { "Content-Type": "text/plain" }); res.end("Fetching and reading secure database records..."); } else if (req.method === "POST") { res.writeHead(201, { "Content-Type": "text/plain" }); res.end("Securely creating and injecting new data into the server!"); } } else { res.end("Standard Route"); } }); server.listen(8000);

Ali Hamza 2026-06-17 17:54 👁 9 查看原文 →
Dev.to

I Stopped Trusting the LLM With the Score: Building an Honest AI Portfolio Reviewer

Ask a language model to score a developer portfolio out of 100 and you get a confident number back. Hand it a near-empty page with a name and a broken avatar, and it will often still tell you something like 92. Nice layout. Strong personal branding. The model is being polite, not accurate. That was the first wall I hit building Leon, the reviewer inside getfolio. If the score is not trustworthy, nothing downstream matters: the critique, the suggestions, and the fix button all hang off a number the model invented to sound encouraging. This is the build log of how I stopped letting the model hold the pen. Short version: a deterministic rules engine owns the score, and the language model only owns the words around it. The failure mode: an LLM judge wants to be liked If you have shipped anything with an LLM evaluator you have probably seen this. You hand it a rubric, a JSON schema, even worked examples, and it still drifts upward. Empty inputs get encouraging scores. Weak inputs get the benefit of the doubt. Strong inputs land in the same band as the weak ones, just with longer praise. A few reasons, roughly in order of how much they hurt: Tuning rewards a helpful, encouraging tone. Harsh scoring reads as unhelpful, so the model softens it. The model has no ground truth for what a 70 versus an 85 looks like in your specific domain. It is scoring on vibes. Scoring and explaining are entangled. The model writes the kind explanation first, then picks a number to match the nice things it just said. Run it twice on the same input and you get two different numbers. There is no anchor. For a portfolio reviewer that real recruiters and developers would act on, that was a non-starter. If Leon says 64, an empty page should not be able to reach 64 by accident, and a strong portfolio should not get talked down to it either. The number has to mean something. The fix: rules engine owns the score, model owns the language The architecture splits responsibilities hard. A deterministic e

Sébastien Doom 2026-06-17 17:53 👁 6 查看原文 →
Dev.to

How to Build a WordPress Plugin Licensing System from Scratch (Without Freemius)

If you're shipping a commercial WordPress plugin, sooner or later you'll need a licensing system. Something that lets paying customers activate the plugin on their site, locks it to that domain, and stops people from sharing the same key across fifty sites. The default answer in the WordPress world is Freemius or EDD Software Licensing. They're great. They're also a revenue share, a third-party dependency, and a black box you don't control. When we built RideCab WP , a commercial WooCommerce taxi booking plugin, we decided to build our own. Here's the architecture, the code, and the gotchas we hit along the way. What a Licensing System Actually Needs to Do Before writing any code, get clear on the requirements. A real plugin licensing system needs to: Generate unique license keys when someone buys Let the customer activate the key on their site Bind that key to one (or N) domains Validate the key periodically so revoked or expired keys stop working Handle deactivation when a customer moves to a new domain Fail gracefully — never lock a paying customer out because your license server hiccuped Optionally: deliver plugin updates only to valid license holders We'll cover 1 through 6 in this post. Update delivery is a separate beast and I'll write it up next. The Architecture The system has two halves that live in two different places. The license server runs on your own infrastructure — for us, it's a WordPress must-use plugin (mu-plugin) on the same WordPress install that powers our marketing site. It: Stores license keys in a custom database table Exposes a small REST API for activate, deactivate, and validate calls Provides an admin dashboard to view, create, and revoke keys The client is a PHP class shipped inside the commercial plugin (RideCab WP, in our case). It: Adds a license settings page to the plugin Calls home on activation Caches the validation result Re-validates quietly in the background Two pieces, talking over HTTPS, with the customer's domain as the b

Canopus agency 2026-06-17 17:53 👁 14 查看原文 →
Dev.to

The two causes of your token bill

Originally published on the Sieve blog . Sieve is an open-source (Apache 2.0) context-reduction proxy — I work on it, and I've tried to keep this post about the problem rather than the tool. If you run an LLM agent for real work, the bill is the part nobody warned you about. It starts small, it grows with use, and the worst of it is invisible — most of what you pay for on any given turn is text the model has already seen, or text you never meant to send. There's a temptation to treat this as one problem with one fix. It isn't. An agent's token bill has two distinct causes, and they need two genuinely different kinds of tool. This post is about telling them apart — because once you can, the question stops being "which tool wins" and becomes "which of my two problems am I looking at right now." The bill is mostly things you didn't choose Start with where the tokens actually go, because it's rarely where people assume. When your agent calls a tool, the model doesn't just pay for your request — it pays for the machinery of asking. Anthropic's own pricing documentation spells this out: the tools parameter alone adds hundreds of tokens of schema to every request, the bash tool adds a fixed overhead, and a single web fetch pulls the fetched page straight into your context — "Average web page (10 kB): ~2,500 tokens... Research paper PDF (500 kB): ~125,000 tokens". A tool result you glance at once and never need again can cost more than the entire conversation around it. Now add the part that repeats. On every turn, a typical agent re-sends its system prompt, its full tool catalogue, its persona, and the conversation so far. The variable part of the request — what you actually typed — is often the smallest thing in the payload. The fixed overhead, multiplied across every turn of a long session, is the bill. So the cost has two shapes, and they're not the same shape: Verbose machine output — JSON tool results, logs, search dumps, fetched pages, code listings. Big, one-off, an

Azard Tennant-Hosein 2026-06-17 17:49 👁 6 查看原文 →
Dev.to

A password and a PIN aren't multifactor: the Security+ authentication trap

If you have spent any time on SY0-701 practice questions, you have hit at least one that looks trivial and then quietly fails you. Authentication factor questions are a favorite for this. The scenario sounds secure, the answer feels obvious, and the obvious answer is wrong. Here is the version that catches people. A login asks for your password, then a PIN, then your mother's maiden name. Three prompts, three steps. Is that multifactor authentication? No. It is single-factor wearing a costume. Factors are categories, not steps The exam wants you thinking about authentication in terms of categories , not how many boxes you fill in. There are three classic factors: Something you know (knowledge): a password, a PIN, a security question, a passphrase. Something you have (possession): a phone running an authenticator app, a hardware token, a smart card, a code texted to a device you are holding. Something you are (inherence): a fingerprint, a face scan, an iris pattern, a voiceprint. Multifactor authentication means pulling from different categories. A password (know) plus a code from your authenticator app (have) is two factors. A password plus a PIN plus a security question is still one factor, because all three are things you know. Stacking more knowledge on top of knowledge never changes the category. That is the entire trick. The question piles on prompts so it feels layered, and the count baits you into answering "three things, must be multifactor." Read for the category, not the quantity. The two factors people forget SY0-701 also expects you to recognize two more that sit just outside the classic three: Somewhere you are (location): access is allowed or blocked based on geolocation or which network you are on. A login permitted only from inside the corporate IP range leans on this. Something you do (behavioral): how you type, your gait, the rhythm of your swipe. This is the fuzziest one, and the exam treats it as a real but supporting signal. You will not see the

TiltedLunar123 2026-06-17 17:47 👁 6 查看原文 →
The Verge AI

The next humanoid robot might not look human at all

The next humanoid robot might not have a head. It might not have legs. It might even sit on a wheeled base and fold down like a deck chair. But, as Genesis AI puts it, "humanoid robots don't need to look human." That explains the look of Eno, the new robot from the French startup […]

Robert Hart 2026-06-17 17:46 👁 8 查看原文 →
Dev.to

Day 37 of Learning MERN Stack

Hello Dev Community! 👋 It is officially Day 37 of my continuous streak toward mastering the MERN stack! Yesterday, I configured clean structural routing to map pages like /about or /contact . Today, I advanced further into Prashant Sir's (Complete Coding) backend roadmap to tackle an essential data communication concept: URL Parsing and Query Parameters . When a user searches for something or filters products on an e-commerce platform, that data is passed directly inside the URL string. Today, I learned how to intercept and decode that data natively! 🧠 Key Learnings From Node.js Lecture 5 (The URL Module) An incoming URL is much more than just a text path; it is a complex structured object. Here is the technical breakdown of how I dissected it today: 1. Ingesting the Native url Module I explored Node's legacy and modern URL parsing engines. By passing the raw req.url string into the parser, Node breaks down the web address into a fully accessible metadata object. 2. Dissecting Pathname vs Query String I learned the difference between the structural endpoint location and the dynamic data payload: Pathname: The core location path (e.g., /search or /api/products ). Query: The actual data key-value strings attached after the question mark ? (e.g., ?name=ali&id=7 ). javascript const http = require("http"); const url = require("url"); const server = http.createServer((req, res) => { // Parsing the URL path and query parameters together cleanly let parsedUrl = url.parse(req.url, true); let pathname = parsedUrl.pathname; let queryData = parsedUrl.query; // Converts query text into a clean JS Object! if (pathname === "/search") { res.writeHead(200, { "Content-Type": "text/plain" }); res.end(`Searching logs for user: ${queryData.name} with ID: ${queryData.id}`); } else { res.end("Standard Endpoint View"); } }); server.listen(8000);

Ali Hamza 2026-06-17 17:46 👁 8 查看原文 →
Dev.to

Mavka and the June Solstice: A Magical Forest Energy Quest

This is a submission for the June Solstice Game Jam What I Built Perfume Calendar: June is a small atmospheric adventure game inspired by nature, folklore, and the changing moods of June. Players take on the role of Mavka , a forest spirit, and travel across a calendar-shaped map representing the 30 days of the month. Each day has a different nature element—forest, sun, water, or mist—that affects the player's energy. The goal is to make strategic movement choices, gather enough energy from beneficial days, and reach June 21st , the summer solstice, with at least 10 energy points. If successful, Mavka awakens the forest and completes her journey. My intended goal was to create a simple but thematic experience where a calendar becomes an interactive game board rather than just a way to track dates. I wanted players to feel like they were moving through a living month, with each day offering different opportunities and risks. The game relates to the challenge theme by transforming a calendar into the core gameplay mechanic. Instead of simply displaying dates, the days themselves become locations that influence the player's progress. The June setting, seasonal energy, and the solstice objective reinforce the idea of time, nature, and progression through a month in a playful and interactive way. Video Demo Code wailixi / Mavka Game How I Built It I built the game using HTML, CSS, and JavaScript without any external libraries. The 30 days of June are displayed as a 6×5 grid , where each day has a terrain type (forest, sun, water, or mist) that affects the player's energy. A key design choice was turning the calendar into a navigable map. Players move Mavka between days, collect energy, and plan their route to reach June 21st with enough energy to win. Movement restrictions add a simple strategy element, while color-coded terrain helps communicate each day's effect. My goal was to create a small, atmospheric game that transforms a calendar into an interactive adventure in

Anton Krasko 2026-06-17 17:39 👁 8 查看原文 →
Dev.to

I've Been Trying to Build Something Online Since 2020. Still Not There. Looking for Advice.

In 2020, I discovered the idea that people could make money online by building things. Since then, I've tried almost everything. I started websites. I learned design. I learned marketing. I built digital products. I launched projects that nobody used. I launched projects that got almost no traffic. Every year I thought: "Maybe this is the year it finally works." But somehow I always ended up back at zero. The frustrating part is that I didn't quit. For 5 years I've been consistently learning new skills: Graphic design Website building Digital products Content marketing SEO Social media Yet I still haven't reached the point where I can say: "Yes, this business is working." Recently I spent weeks building a library of 500+ Notion templates. I launched it. The result? Almost nothing. No viral launch. No overnight success. Just another reminder that building is easier than distribution. That's the lesson that keeps hitting me: Building isn't my problem anymore. Getting attention is. I can create products. I can design landing pages. I can write content. But distribution still feels like a puzzle I'm trying to solve. So I'm asking developers, founders, and creators who are further ahead: If you were starting again today with no audience and no reputation, what would you focus on? Would you: Double down on content? Build more products? Focus entirely on one distribution channel? Spend more time networking? I'm genuinely curious because after 5 years of trying different things, I'm convinced the answer isn't "work harder." It's probably "work differently." I'd love to hear your advice.

Jaabir Yusuf 2026-06-17 17:39 👁 8 查看原文 →
HackerNews

Show HN: High-Res Neural Cellular Automata

Neural CAs model self-organizing pattern formation. Now they can generate patterns at HD resolution in real-time, enabled by turning each CA cell into a Neural Field. Try 3 demos: grow a pattern from a seed (and damage it, it heals), synthesize PBR textures that can regenerate, or create 3D textures like clouds.

esychology 2026-06-17 17:28 👁 3 查看原文 →
Product Hunt

Adapt

The company brain that gets work done Discussion | Link

Ashley 2026-06-17 17:12 👁 2 查看原文 →
MIT Technology Review

Entrepreneurs in Nairobi make the case for going solar

Most of Kenya’s power grid runs on renewables. But with 25% of communities lacking centralized electricity, the nation is looking to off-grid solar to hit its goal of delivering universal electricity access by 2030 without driving up emissions. The ever-­improving economics of solar technology have helped. A couple of years ago, a panel cost about…

Geoffrey Kamadi 2026-06-17 17:00 👁 10 查看原文 →
MIT Technology Review

Hacking the atmosphere: Geoengineering gets a reality check

Jim Franke pulls away the cover page of a presentation on the wraparound desk in his office, revealing an illustration of an odd-­looking aircraft with massive wings stretching out from a stubby fuselage. The uncrewed plane is soaring thousands of meters higher than commercial jets fly—so high you can see the curvature of the Earth.…

James Temple 2026-06-17 17:00 👁 10 查看原文 →
InfoQ

GitHub Copilot Desktop App Targets Parallel Agentic Workflows

GitHub has introduced the GitHub Copilot app, a desktop control centre for agent-native development that aims to keep engineers in charge while AI agents handle more coding work. Mario Rodriguez writes on the GitHub blog that the recent wave of coding agents has brought faster delivery but also "disjointed workflows, more context switching, and too much time spent reviewing agent-generated code". By Matt Saunders

Matt Saunders 2026-06-17 16:00 👁 11 查看原文 →