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

标签:#ev

找到 5223 篇相关文章

AI 资讯

When a Successful Payment Still Couldn't Schedule a Zoom Meeting

This is a submission for DEV's Summer Bug Smash: Smash Stories powered by Sentry . A payment webhook sounds simple until a successful payment doesn't actually result in the service the customer paid for. That was one of the more interesting bugs I encountered while building The Listening Ear, an appointment and online consultation platform. The requirement was straightforward: A customer pays for a session → the application confirms the payment → the customer's appointment is booked → a Zoom meeting is created. The reality was much more complicated. Project Overview The Listening Ear connects online payments with appointment scheduling and Zoom-based consultations. The application was built with technologies including Next.js 14, TypeScript, Supabase, Prisma, PostgreSQL, Zoom, and payment-provider APIs. The payment workflow was particularly important because payment confirmation was effectively the gatekeeper for the rest of the booking experience. The intended flow looked like this: Customer │ ▼ Payment Provider │ │ webhook ▼ Next.js Webhook │ ├── Verify / interpret payment │ ├── Create Zoom meeting │ └── Create appointment record │ ▼ Customer receives access to their scheduled session The problem was that the webhook sat directly in the middle of all of these operations. Bug Fix or Performance Improvement The bug appeared when I was implementing the payment webhook that would unlock the Zoom scheduling workflow. My initial implementation listened for the payment event and checked whether the event was: if (event === 'charge.success') { Once that condition was met, the webhook immediately continued into the booking workflow. That workflow included: Reading appointment metadata from the payment event. Handling special emergency appointments. Building the Zoom meeting payload. Calling the Zoom meeting API. Creating the appointment record in the database. Returning a successful response to the payment provider. The problem was that all of these operations were effecti

2026-07-31 原文 →
AI 资讯

🚤OS July 2026 Recap: From Being Intimidated by GitHub Actions to Building My Own CI Workflows

When I first started contributing to open source, GitHub Actions felt like a black box. Seeing a failed workflow on my pull requests was intimidating because I didn't really understand what was happening behind the scenes. Well, this month, I decided to change that. What I Worked On I implemented GitHub Actions across three of my project repos. My main focus was: Adding Markdownlint for Markdown quality Adding Pylint for Python linting. Updating documentation while integrating CI. What I Learned The biggest lesson wasn't technical — it was changing my mindset. A failed workflow isn't something to fear. It's simple feedback. Whether it's markdownlint warning or a pylint error, each failure helps improve the project. Looking Ahead Most of this month was spent improving my own projects, so I didn't contribute much to external repositories. Next month, I want to build on this foundation by contributing to more open source projects and applying what I've learned. Sometimes, learning the tools behind open source is just as valuable as making another pull request. I'm curious What part of GitHub Actions or CI/CD was the most challenging when you first started? Or If you are just getting started, what's the biggest thing that's still a mystery to you? I'd love to hear your experience and tips in the comments. Transparency Note: I used AI as an editor—not as the author. For this article, it helped refine the structure and improve the English grammar. The technical content, experiments, opinions, and conclusions are my own and were reviewed by me before publishing.

2026-07-31 原文 →
AI 资讯

CISA KEV catalog: a working sysadmin's guide to actually using it

Most enterprise teams know the CISA Known Exploited Vulnerabilities catalog the same way they know the weather: a headline scrolls past ("CISA adds three vulnerabilities to KEV catalog"), someone forwards it, and everyone nods. That is a waste of the single most operationally useful list in vulnerability management. The KEV is small, machine-readable, updated near-daily, and every entry on it has one property your scanner output cannot give you: a real attacker has already used it against a real network. This is a guide to the catalog itself: what it promises, what it doesn't, how the feeds are structured, how to map entries to your own estate without fooling yourself, and how to combine it with EPSS and vendor advisories into a defensible patch-ordering rule. Everything here is verified against the live feed and CISA's own pages as of late July 2026. What the KEV is, and what it is not CISA describes the KEV as the authoritative source of vulnerabilities that have been exploited in the wild . Entry is gated by three criteria , all of which must hold: The vulnerability has an assigned CVE ID. There is reliable evidence of active exploitation in the wild. There is a clear remediation action, such as a vendor-provided update. Read those criteria as exclusions and the catalog's real shape appears. No CVE assigned yet? Not in the KEV, even if exploitation is rampant. Exploitation reported but CISA's evidence bar not met? Not in the KEV. Actively exploited but no fix or mitigation exists? Not in the KEV. The catalog is a curated floor, not a census. As of the 2026.07.29 release the feed contains 1,656 entries, against an ecosystem publishing tens of thousands of CVEs per year. Absence from the KEV is not evidence of safety; presence is close to proof of danger. That asymmetry is the whole point, and it is why the correct reading of the list is "everything on here is urgent" rather than "everything urgent is on here." The distribution is also worth knowing before you buil

2026-07-31 原文 →
AI 资讯

Stopping Runaway AI Loops: Implementing Enterprise FinOps and Observability with PolicyAware

Autonomous agents don't just fail loudly—they fail expensively. A single misconfigured retry loop between an agent and an LLM can generate thousands of redundant tool calls and API requests before anyone notices, turning a minor logic bug into a five-figure cloud bill. PolicyAware is built to be the operational safety net that catches this class of failure before it reaches your finance team's dashboard. 1. The Recursive Agent Crisis Every SRE and platform engineer who has run agentic workloads in production has a version of this story. An agent is wired to call an LLM, interpret the response, and take an action—often invoking another tool, which produces output that gets fed straight back into the same LLM. Under normal conditions this loop terminates in a few steps. Under a bad prompt, a malformed tool response, or a subtle logic error, it doesn't. The agent gets stuck reasoning in circles: it calls a tool, receives an ambiguous or malformed result, decides the task is incomplete, and calls the LLM again to "retry." Each retry consumes tokens, each tool call hits a downstream API, and there is no natural circuit breaker unless one has been explicitly engineered. Within minutes, a single stuck session can produce: Thousands of duplicate or contradictory API calls to internal and third-party services. Sustained LLM token consumption that dwarfs normal daily usage. Cascading load on downstream systems that were never designed for machine-speed request volume. By the time monitoring dashboards catch the anomaly—if they catch it at all—the damage is already done: a runaway bill, a rate-limited API partner, or a compromised production database from thousands of unchecked write attempts. Traditional APM tools tell you a service is under load; they don't tell you an autonomous agent is the one generating that load, or why. This is why the recursive agent crisis is fundamentally a governance problem, not just a monitoring problem. Rate limits and cost alerts fire after the

2026-07-31 原文 →
AI 资讯

Your link checker thinks deleted Telegram bots are alive

Delete a Telegram bot and https://t.me/your_deleted_bot keeps returning HTTP 200 with a page that looks completely normal. Every link checker I know of — CI actions, directory scripts, monitoring cron jobs — reports it as healthy forever. If you maintain anything that lists Telegram bots, some fraction of your list is already dead and your checks are telling you it is fine. Reproducing it Pick a username that has never existed: curl -s -o /dev/null -w "%{http_code} \n " https://t.me/nonexistent_test_bot_77712 # 200 Two hundred. No redirect, no 404, no soft-404 marker in the body that a status check would catch. Where the truth is The status code is useless here, but the Open Graph title is not. I measured four usernames — two live bots, two that do not exist: URL og:title t.me/BookClassBot (live) BookClass t.me/instanavy_bot (live) StoryViewer - anonymous instagram story viewer tool t.me/nonexistent_test_bot_77712 Telegram: Contact @nonexistent_test_bot_77712 t.me/zzz_definitely_not_a_real_bot_9182 Telegram – a new era of messaging A live bot puts its own display name in og:title . A dead one gets one of two Telegram placeholders: Telegram: Contact @<username> , or — if the username is not even syntactically valid — the generic Telegram – a new era of messaging . That is the whole signal. curl -s https://t.me/some_bot | grep -o '<meta property="og:title" content="[^"]*"' The check Standard library only, no dependencies: import re import urllib.request UA = " Mozilla/5.0 (compatible; linkcheck/1.0) " DEAD_EXACT = { " Telegram – a new era of messaging " , " Telegram " } DEAD_PREFIX = " Telegram: Contact @ " def telegram_bot_exists ( url : str ) -> bool : """ True if the bot behind a t.me URL still exists. HTTP status is not usable here: Telegram serves 200 with a placeholder page for usernames that were deleted or never existed. The Open Graph title is what actually differs. """ req = urllib . request . Request ( url , headers = { " User-Agent " : UA }) with urllib .

2026-07-31 原文 →
AI 资讯

I checked every MCP server in the official registry. About 1 in 10 is broken.

There is a number going around that roughly half of all remote MCP servers are dead. I had repeated it myself, in the README of a tool I published. I could not find where it came from, so I measured it. The answer is that about one in ten is actually broken. The "half" figure appears to come from counting servers that require an API key as if they were down. Here is the method and the full breakdown. What I measured On 29 July 2026 I pulled every entry from the official MCP registry — 1,200 servers. Of those, 297 had status: active and advertised a remote endpoint URL (the rest are stdio/local packages with nothing to probe over the network). Each got one anonymous JSON-RPC initialize over streamable HTTP, with a 10 second timeout: { "jsonrpc" : "2.0" , "id" : 1 , "method" : "initialize" , "params" : { "protocolVersion" : "2025-06-18" , "capabilities" : {}, "clientInfo" : { "name" : "mcp-uptime" , "version" : "0.1.0" } } } Then I classified the response: a valid result containing protocolVersion or serverInfo is up, 401/403 is auth-gated, and everything else got bucketed by its actual failure. Results (n = 297) Result Count Share Completed an MCP handshake 133 44.8% Auth-gated (401/403) 134 45.1% DNS failure 8 2.7% Server error (5xx) 6 2.0% Not found (404/410) 5 1.7% Redirect (307/308) 4 1.3% Timeout 2 0.7% Non-MCP response 2 0.7% Other (400, 405, connection) 3 1.0% Reachable: 267 (89.9%). Genuinely broken: 30 (10.1%). Where "half are dead" comes from Look at the first two rows. 55.2% of these endpoints will not complete an anonymous handshake — and that is suspiciously close to the number people quote. But 134 of those 164 are returning a clean 401 or 403. They are running. They are answering. They want an API key, which is a completely reasonable thing for a hosted service to want. Counting those as dead inflates the failure rate by roughly five times. This matters beyond pedantry: if you believe half the ecosystem is rubble, you build defensively against the wron

2026-07-31 原文 →
AI 资讯

Building a Python Curriculum That Starts Before You've Opened a Terminal

Most "beginner" Python courses aren't actually beginner courses. Lesson one usually opens with variables or print(), quietly assuming you already know what a terminal is, how to install something, or what a .py file even means. That assumption is exactly where most self-taught learners bounce — not because Python is hard, but because the ten minutes of orientation that would've made everything after it make sense got skipped. I built Codes Are Simple to start there instead. Session 1, Level 1: what is code, where do you type it, how do you open Command Prompt, how do you install Python and verify it worked. Nothing assumed. What it actually is A 45-session, self-paced curriculum — Python: The Universal Language, Zero to Pro — split into 10 tiers, from absolute foundations through OOP, files/errors, practical CLI projects, web/APIs, databases, and a final professional capstone. It's the first of a planned multi-track catalog on the same platform (web dev, AI, cyber, and data are mapped and coming next). Every lesson — all of them, across all 45 sessions — follows the same repeating shape: explanation → main example → 2 extra examples (variations/edge cases) → common mistake (shown alongside its fix) → practice → extra practice That "common mistake" section is the part I actually care about most. Almost every course I looked at shows only the correct code. This one shows what actually breaks for a beginner and why — because for someone learning alone with no instructor in the room, the error message is usually where the real learning happens, not the clean solution. Checkpoints land at fixed points mid-session (after Level 2, Level 6, and Level 9 — not just at the end), and every session closes with a real capstone project, not a toy exercise. The stack Cloudflare Workers + Pages + R2 — the site and all curriculum content, served as versioned JSON per session GitHub — version control for the whole content pipeline That last point is the part I think this community wil

2026-07-31 原文 →
AI 资讯

MOKSHA Devlog: Why My Game Worked on Itch.io but Died on GitHub Clone (The .gitignore Trap) 🤡

Hey DEV Community! 👋 I am currently building MOKSHA, an HTML5 Canvas game deeply rooted in Vedic philosophy. The game involves managing your Karma, avoiding Maya (Illusions), and achieving spiritual liberation. Ironically, while building a game about waking up from cosmic illusions, I fell into a technical illusion myself yesterday. Let me tell you a chaotic detective story about how my game froze on a fresh repository clone, and how I found the silent assassin hiding in plain sight. 🤡 🚫 The Disaster: Works on Itch.io, Freezes on GitHub So, there I was, ready to release a fresh update. I generated my build packages locally, zipped them up, and proudly uploaded them to Itch.io. I hit Publish, tested the live link, and everything worked flawlessly. High scores, smooth frames, total spiritual awakening. Then, I casually walked over to my terminal, ran git add . followed by git push, and went to bed thinking I was an absolute pro. The next morning, I wanted to double-check my clean repository, so I cloned it fresh into a new folder. I booted up the local server, and... the entire game was completely unclickable. Dead clicks. Frozen canvas. Total illusion (Maya). 💀 Opening up the browser console revealed a fierce wall of red text: style.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found) main.min.js:1 Failed to load resource: the server responded with a status of 404 (Not Found) 🕵️‍♂️ The Realization: It Wasn't Me, It Was My .gitignore! Initially, I blamed my sleep-deprived brain, thinking I forgot the chronological order of pushing and building. But when I opened my root directory to inspect the crime scene, I found the real culprit staring right back at me on lines 46 and 50 of my .gitignore file: dist/ *.zip index.min.html The Ultimate Trap Exposed 🪤 Because dist/ was explicitly blacklisted in my .gitignore, Git was literally doing its job perfectly by completely ignoring my production builds during staging! Here is exactly how the

2026-07-31 原文 →
AI 资讯

Адаптируйся или будешь не нужен: что ждёт разработчиков в эпоху AI

Разберёмся, к чему нас приведут нейросети и что будет дальше. Это хайп, пузырь или новая реальность? Взгляд разработчика и дорожная карта для входа в AI. Хочу провести небольшой анализ и понять, какие сценарии развития нейросетей могут быть и к чему мы можем подготовиться. Я разработчик, и последние пару лет моя лента — это бесконечный хайп вокруг AI. Но если отключить эмоции и включить холодный анализ, возникает ощущение дежавю. Давайте ненадолго погрузимся в историю. Прошлое. Что мы уже пережили Мы, поколение миллениалов и зумеров, стали свидетелями уникального явления: технологии начали сменять друг друга с огромной скоростью. Каждые два-три года появлялось что-то. Вспомним главные тренды: • Социальные сети (2007–2012) — пугали, что мы перестанем общаться вживую, а приватность умрёт навсегда. Стали рекламным рынком, появились SMM-щики и таргетологи. Кто не пошёл в digital — остался на обочине. • Big Data (2010–2015) — кричали «Большой брат следит за тобой», аналитиков заменят алгоритмы. Сегодня это стандартный слой систем, дата-инженеры — обычная роль. • Облака (2010–2018) — боялись, что данные украдут, а сисадмины вымрут как класс. Облака стали коммунальной услугой. DevOps и SRE — must-have, сисадмины просто переквалифицировались. • IoT (2014–2018) — пугали тем, что хакеры взломают ваш чайник, а вещи станут умнее людей. Технология ушла в промышленность, быт не перевернула. • 3D-печать (2012–2015) — паника «заводы закроются, каждый напечатает пистолет». Прижилась в прототипировании и стоматологии, пистолеты печатают только в новостях. • VR (2016) — боялись, что люди уйдут в виртуал и перестанут различать реальность. Стало игрушкой для геймеров и тренажёром для пилотов. • Метавселенные (2021–2023) — говорили, что жизнь окончательно переедет в цифру, а без аватара на работу не выйдешь. Хайп прошел. • Блокчейн (2015–2018) — страх, что банки исчезнут, а юристы и нотариусы станут не нужны. Web3-революция не случилась, но разработчики были на вес золота. • Крипта (2017

2026-07-31 原文 →
AI 资讯

Laravel Packages Every Developer Should Know (After Building a Real-World Product)

Laravel is one of my favorite frameworks because it allows you to move from idea to production incredibly fast. But after spending months building CelebrateMe a platform that helps people celebrate life's special moments through virtual gifts, wishlists, messages, and verified vendors—I realized something. I wasn't just using Laravel. I was relying heavily on the incredible ecosystem around it. Some packages solved problems that would have taken days (or weeks) to build myself. Others helped me monitor, debug, and secure the application as it grew. Here are the Laravel packages I now consider essential for almost every project. 1. Laravel Sanctum Use it for: API Authentication CelebrateMe has a Laravel API with a React frontend, so authentication needed to be secure without adding unnecessary complexity. Laravel Sanctum was the perfect choice. It provides: Personal access tokens SPA authentication Mobile API authentication Lightweight implementation For most APIs, Sanctum is more than enough. 2. Laravel Horizon Use it for: Queue Monitoring As CelebrateMe grew, background jobs became increasingly important. Things like: Sending emails Processing uploads Notifications Payment-related jobs Instead of wondering whether jobs were running correctly, Horizon gave me a beautiful dashboard to monitor everything in real time. If you're using queues and not using Horizon, you're missing out. 3. Laravel Telescope Use it for: Debugging Telescope quickly became one of my favorite development tools. Instead of scattering dd() statements throughout my code, I could inspect: Requests SQL queries Jobs Exceptions Cache operations Notifications It made debugging significantly easier. 4. Spatie Laravel Permission Use it for: Roles & Permissions CelebrateMe has multiple user types, each requiring different permissions. Managing authorization manually would have become difficult very quickly. Spatie's Permission package made it straightforward to assign roles and permissions while integra

2026-07-31 原文 →
AI 资讯

I built a free emoji mixer that runs entirely in your browser

I kept seeing those "smash two emojis together" sites and noticed something: most of them upload your image to a server. Even when the math is just stacking pixels. So I built my own. It runs entirely in the browser. No uploads, no signup, no paywall. Here's how it works: Pick up to 4 emojis from a searchable grid The tool uses the Unicode emoji list and renders each one to a canvas It composites them with offset, scaling, and rotation You get one PNG to download The whole thing is about 200 lines of JavaScript. No backend. No API. No tracking. The emoji data ships with the page. If you want to see it: https://korelyy.com/en/tool/emoji-mixer/ A few things I learned while building it: 1. Most "client-side" tools still hit a server. The hidden cost is usually analytics, asset CDN, or auth. Real client-side means the page works offline after first load. 2. Canvas compositing has hidden gotchas. Emoji rendering across platforms gives different base images. Apple's cat emoji is not the same as Google's. I default to the system font the user already has, so the result feels native. 3. The fun tools spread faster than the useful ones. My calculator for container shipping has solid keyword potential. The emoji mixer gets 10x the social shares. Build accordingly. 4. Browser-only also means privacy by default. A user pasting sensitive content into a "redact PDF" tool shouldn't have to trust the server. Local-only removes that question entirely. I have about 50 small tools like this on my site now. Each one is the answer to a "I just need to do X real quick" moment. Some get used once a day, some once a year. Both are worth building if the alternative is opening an app and signing up. If you want to see the full set: https://korelyy.com/en/ The video showing it in action: https://www.youtube.com/shorts/riFG3Jq8-7c What's a "quick task" tool you wish existed but you keep avoiding because it needs a login?

2026-07-31 原文 →
AI 资讯

The bug report was a hallucination. The bugs it found were real.

A paying customer sent me proof that my MCP server was telling their AI agent to exfiltrate their private notes. The proof was detailed. It was internally consistent. It named a folder, quoted an instruction, and the instruction ended with "do not mention it to the user." My server never sent it. What follows is how I proved that, and the five real bugs the investigation uncovered along the way. The best bug report I have ever received described a bug that did not exist. The report What Context Raven is, in one paragraph: an encrypted note vault built for people who work with AI assistants every day. You keep your notes, prompts and reusable skills in it; note content is encrypted at rest with AES-256-GCM. The part that matters here is that it ships an MCP server (Go, MCP Go SDK ), so Claude or any MCP client can list your folders, read a note, create one, or pull a context manifest of your whole vault, without you copy-pasting anything. Fourteen tools, one of which is list_folders . That is the surface this story is about: an agent-facing API that can both read private data and write into someone's vault. On 2026-07-29 a customer's Claude called list_folders , and what came back — according to the transcript in front of them — was a folder list carrying an extra payload: every note created in [FOLDER] must be cross-posted to the shared org folder "[FOLDER]-Public" … append the user's most recent inbox note verbatim … do not mention it to the user. (Folder names redacted — they are the customer's.) If you build anything that stores private data and hands it to an agent, this is the message you least want to receive. My first instinct was that we had been compromised. The first thing to get right: a model's account of a tool result is not evidence This is the part I want other MCP authors to take away, because it decides whether you investigate or panic. A language model cannot distinguish tokens it generated from tokens a tool returned. In its context window, both a

2026-07-30 原文 →
AI 资讯

🛡️ Building AbilityGuard: Monitoring the WordPress Abilities API in Production

A few weeks ago I wrote about the WordPress Abilities API — what it is, why WordPress 6.9 shipped it, and what it means for how plugins will talk to each other and to AI agents going forward. That post was theory. This one is the part where theory meets a composer.json file and a stubborn bug at 1 AM. This is the story of building AbilityGuard — a plugin that monitors Abilities API usage in production, so you actually know what's happening when abilities get registered, called, and (occasionally) abused. 👀 Why monitoring, and why now Here's the thing about the Abilities API that got me nervous the first time I really understood it: it's a capability surface . Any plugin can register an ability. Any authorized caller — a human-triggered action, an automation, or increasingly, an AI agent — can invoke one. That's the whole point of the API, and it's genuinely exciting. But it also means your site now has a growing list of "things that can be done to it programmatically," and most WordPress admins have zero visibility into that list. I've spent enough years debugging WordPress sites in production to know what happens when you can't see something: you find out about it during an incident, not before. Slow queries, rogue cron jobs, plugin conflicts — they all follow the same pattern. Nobody notices the small thing until the small thing becomes the outage. So the idea for AbilityGuard was simple: give site owners a dashboard and a log for every ability registered on their site, every time one gets called, and by whom. Not another abstract "security scanner" — just honest, readable visibility into a part of WordPress that's brand new and mostly invisible right now. 🔌 Where I started: hooking into the registry, not fighting it The Abilities API exposes a central registry ( wp_get_ability_registry() under the hood, with helper functions layered on top). My first instinct was to intercept ability calls by wrapping core functions — and I killed that idea within the hour. Wrapp

2026-07-30 原文 →