今日精选
HOT最新资讯
共 29690 篇Building IRIS: An Adaptive Accessibility Companion
Hey Techie 🌸 Before I continue my go series, I wanted to share a personal project that I'll be working on alongside my learning. What is IRIS? IRIS is an adaptive accessibility companion meant to help people with invisible disabilities navigate the media in ways preferable to them. Most websites and systems are one-size-fits-all and do not take user preferences into account in depth. The assumption is that every user views technology the same way, and that's not true at all. This is where IRIS shines her glory. The goal of creating IRIS is that it adapts to the user's needs rather than the user adapting to it. She will be able to personalise things like text-to-speech, colour themes, layouts, and other accessibility features based on their needs. As I continue learning Go and backend development, I'll also be sharing the progress of building IRIS, from designing the database and API to developing the backend and, eventually, the complete application. I look forward to sharing my progress and the challenges I will face and having discussions with you, my dear techie friends 🌸
Configurable Video Transition Duration in Reel Quick
Video transitions are one of those details that quietly shape the feel of an edit. In Reel Quick issue #13 , the goal was simple: let users control how long a scene transition lasts instead of forcing a fixed value. Issue URL: https://github.com/ronin1770/reel-quick/issues/13 The problem The app already supported transition effects between scenes, but the duration was fixed. That meant creators could choose what transition to use, but not how long it should run. For short-form video, that matters a lot: fast transitions create a snappier pace longer transitions feel smoother or more cinematic some edits need no transition at all The feature The new behavior adds a configurable transition duration: minimum: 0.0 seconds maximum: 4.0 seconds step: 0.5 seconds A slider in the frontend lets the user choose the duration, and that value is sent to the backend for FFmpeg video generation. If the value is 0.0 , transitions are disabled entirely. The FFmpeg math When two clips are joined with a transition, the transition overlaps the end of the first clip and the start of the second clip. So the final duration is: final length = clip 1 + clip 2 - transition duration Example 1 Clip 1 = 7 seconds Clip 2 = 8 seconds Transition duration = 4 seconds Math: 7 + 8 - 4 = 11 seconds Final video length: 11 seconds Example 2 Clip 1 = 7 seconds Clip 2 = 8 seconds Transition duration = 0.5 seconds Math: 7 + 8 - 0.5 = 14.5 seconds Final video length: 14.5 seconds Why validation matters This feature also needs guardrails. The backend validates that: the duration is between 0 and 4 the duration is a multiple of 0.5 clips are long enough for the selected transition That last point is important. A 4 second transition cannot work safely if a clip itself is only 3 seconds long. Implementation notes The implementation touches both frontend and backend: Frontend add a transition duration slider show the selected value beside it send transition_duration in the video creation request show inline vali
Terraform e YAML - Implementação Prática em Projetos de CI/CD
1. Introdução: Conectando IaC e Automação Nos artigos anteriores desta série, exploramos a poderosa combinação de Terraform e YAML para gerenciar configurações de infraestrutura em múltiplos ambientes, desde os conceitos básicos até padrões avançados de deep merge e modularização. No entanto, a verdadeira força da Infraestrutura como Código (IaC) se manifesta quando integrada a um pipeline de Integração Contínua e Entrega Contínua (CI/CD). É no CI/CD que a promessa de provisionamento automatizado, consistente e seguro da infraestrutura se torna realidade. Este artigo se aprofundará na implementação prática desses conceitos em um projeto real de CI/CD. Abordaremos a estrutura ideal do repositório, as etapas essenciais de um pipeline, estratégias de branching, considerações de segurança e as melhores práticas para garantir que sua infraestrutura seja implantada de forma eficiente e confiável. 2. Estrutura do Repositório para CI/CD Eficaz Uma estrutura de repositório bem definida é crucial para a organização e automação em um ambiente de CI/CD. Ela deve refletir a separação entre código Terraform e dados YAML, além de acomodar múltiplos ambientes e serviços. . (root do repositório) ├── README.md ├── .github/workflows/ # Ou .gitlab-ci/, .azure-pipelines/, etc. │ └── terraform.yml ├── terraform/ # Código Terraform genérico e módulos │ ├── main.tf │ ├── variables.tf │ ├── outputs.tf │ └── modules/ │ ├── vpc/ │ │ ├── main.tf │ │ └── variables.tf │ └── webserver/ │ ├── main.tf │ └── variables.tf └── config/ # Dados de configuração YAML por ambiente/serviço ├── global.yaml ├── environments/ │ ├── dev/ │ │ ├── base.yaml │ │ └── services/ │ │ ├── webapp.yaml │ │ └── database.yaml │ ├── staging/ │ │ ├── base.yaml │ │ └── services/ │ │ ├── webapp.yaml │ │ └── database.yaml │ └── prod/ │ ├── base.yaml │ └── services/ │ ├── webapp.yaml │ └── database.yaml └── services/ ├── defaults/ │ ├── webapp.yaml │ └── database.yaml └── overrides/ ├── webapp-prod.yaml └── database-dev.yaml Exp
Validate Kubernetes Manifests with Flux Schema
If you run GitOps with Flux, a broken manifest usually gets caught the slow way: it merges, the reconciler chokes, and you find out from a failing Kustomization. Flux Schema, the plugin that shipped with Flux 2.9, moves that check left into CI. It validates every YAML document against JSON Schema and CEL rules using the same evaluation logic as the Kubernetes API server, so a bad field fails the pull request instead of the cluster. Install and run it Flux Schema is a CLI plugin, not part of the core binary. Install it through the plugin system: $ flux plugin install schema $ flux schema --help Pin a version in CI so a new release never changes your gate's behavior mid-sprint: $ flux plugin install schema@0.5.0 Point it at a directory of manifests and it validates each document: $ flux schema validate ./manifests It ships with built-in schemas for Kubernetes, OpenShift, Gateway API, and the Flux CRDs, so a fresh install already knows your HelmRelease and Kustomization kinds without any setup. Strict validation flags unknown fields, wrong types, and missing required properties as hard errors, which catches the typos kubectl apply --dry-run=client quietly ignores. What CEL adds over plain schema checks JSON Schema catches shape problems: a string where an int belongs, a misspelled key. CEL rules catch logic problems. Because Flux Schema runs the x-kubernetes-validations rules embedded in CRDs through the same CEL engine the API server uses, a manifest that violates a cross-field constraint (say, a replica count that must stay below a limit, or two mutually exclusive fields both set) fails in CI with the exact message the cluster would have returned. You are testing against the real admission logic, not a stale copy of it. Wire it into a config file Drop a .fluxschema.yml at your repo root to control what gets checked. The file uses the schema.plugin.fluxcd.io/v1beta1 API and a Config kind: apiVersion : schema.plugin.fluxcd.io/v1beta1 kind : Config skipKind : - Secret s
Engineering an Autonomous Support Loop with Aidbase and MCP
The most expensive part of running AI-powered customer support isn't the token cost or the infrastructure—it's the maintenance of truth. You deploy a chatbot, it works brilliantly for three days, then your product team pushes a breaking change to your API or shifts your refund policy. Suddenly, that 'intelligent' agent is hallucinating outdated information with extreme confidence. This is where most developers fail: they treat AI support as a static RAG (Retrieance-Augmented Generation) problem when it should be treated as an observability and orchestration problem. I've spent years building systems where the drift between documentation and reality was the primary cause of production incidents. The MCP (Model Context Protocol) changes this trajectory because, for the first time, we have a standardized way to move beyond 'read-only' agents. When I looked at how Aidbase implements its MCP server, I didn't see just another way to query an FAQ. I saw the blueprint for a self-healing support loop. The Shift from Reading to Operating Most people use MCP to give Claude or Cursor access to their codebase or some documentation files. It's useful, but it's passive. You ask a question; the agent finds an answer. With the Aidbase implementation, the capabilities are fundamentally different because they include 'write' operations via tools like add_aidbase_faq_item and add_aidbase_website_knowledge . This shifts the LLM from being a passive librarian to an active Support Engineer. Think about your current workflow. You find a bug, you fix it, you update the PR, and then... you remember you need to go into the Aidbase dashboard (or Zendesk, or Intercom) to manually update the FAQ so the bot doesn't keep telling customers the old way is correct. That manual step is where human error lives. With this MCP server, your workflow looks like this: You finish the PR in Cursor. You point at the new documentation URL or a snippet of code. You tell Claude: "Update our Aidbase knowledge base
I thought giving my group chat AI assistant Google Calendar would take 5 minutes, and then OAuth humbled me
I went looking for a simple answer to a simple question: How do you give an agent access to Google Calendar? Not a demo. Not a screenshot. A real agent, running unattended, with enough access to be useful and enough guardrails that it won’t turn into a security incident. While researching OpenClaw setups, I found a thread on r/openclaw where someone asked what looked like a tiny question: what do I need to add Google Calendar to OpenClaw? One reply said: "Look into gog cli." That answer is way more revealing than it looks. Because the hard part usually isn’t Google Calendar itself. The hard part is everything hidden behind the phrase "connect Google" . And if you’re building agents in n8n, Make, Zapier, OpenClaw, or a custom OpenAI-compatible loop, auth is only half the problem anyway. Once the workflow runs 24/7, you also need to think about retries, quota limits, caching, and how many LLM calls the thing is quietly making in the background. That’s where a lot of teams hit the same wall: the integration works, but the operational shape of it is bad. Security is fuzzy. Request volume is noisy. And AI costs get weird fast if every poll and retry triggers more model calls. The demo version is lying to you If you’ve used something like n8n Cloud, you’ve seen the polished version: Click Google Calendar Sign in Approve access Done That flow is real inside a managed product. But the minute you leave the managed garden — self-hosted n8n, OpenClaw, a custom MCP server, a Python worker on Ubuntu, or your own app using the OpenAI SDK against an OpenAI-compatible endpoint — you inherit the boring parts. Now "connect Google" actually means: create a Google Cloud project configure the OAuth consent screen choose the right OAuth client type enable the Google Calendar API pick the right scopes store credentials safely handle refresh tokens deal with quota errors later That’s not setup trivia. That’s infrastructure. One user in that same OpenClaw discussion realized it immediately:
AI-Enabled Security Researchers Discover How a Crafted Video Can Provide Attackers Access to Your PC
JFrog Security Research revealed "PixelSmash," a vulnerability in the FFmpeg media framework, allowing for Remote Code Execution and Denial of Service attacks. Present for sixteen years, it affects numerous applications using the MagicYUV decoder. Exploitation requires only a crafted media file. Users are advised to check for the vulnerability and apply patches or disable the decoder if necessary. By Olimpiu Pop
Claude Opus 5 Benchmarks: What the Numbers Actually Show
Opus 5 posts 79.2 percent on SWE-bench Pro against Opus 4.8 at 69.2, a 10 point jump with no change in per-token price Anthropic published most gains as ratios (three times ARC-AGI-3, more than double Frontier-Bench) rather than absolute scores On CursorBench 3.2 at max effort it lands within 0.5 percent of Fable 5's peak at half the cost per task Public GDPval-AA figures disagree across sources by up to 117 Elo, so I left that row out entirely Anthropic shipped Claude Opus 5 on July 24, and the coverage filled up with ratios instead of scores. Three times the next-best model. More than double the previous Opus. Just over a third of the cost. I went looking for the actual numbers behind those phrases. What I found says as much about how model launches get reported as it does about the model. The Numbers That Are Actually Comparable The cleanest row is SWE-bench Pro, which runs a model against real GitHub issues and checks whether the patch passes the repository's own tests. It is harder than the older SWE-bench Verified set and it is the row the whole industry now quotes. Model SWE-bench Pro Released Claude Fable 5 80.3 2026-06-09 Claude Opus 5 79.2 2026-07-24 Claude Opus 4.8 69.2 2026-05-29 GPT-5.6 Sol 64.6 2026-07-09 That is a 10 point jump from Opus 4.8 to Opus 5 inside two months, and the per-token price did not move (both tiers run at 5 and 25 per million tokens). Fable 5 keeps a 1.1 point lead and charges double for it. Those two facts together are the actual story of this release, and neither one is a ratio. On SWE-bench Verified, the older and easier set, Opus 5 reports 96.0 percent averaged over five trials. The averaging matters. A single run on a set that saturated above 90 percent tells you very little, because the spread between runs starts to rival the gap between models. Five trials is better practice than most launch tables bother with, and it is worth noticing when a lab does it. It is worth being precise about why those two rows behave differently,
What You Can Do With C#
Let's get the joke out of the way, because you're going to hear it within four minutes of telling anyone you're learning C#: "Oh, C#? Isn't that just Microsoft Java?" Yes. Kind of. A little. Here's the actual story. Back around 2000, Microsoft wanted a modern, garbage-collected, object-oriented language for their shiny new .NET platform. Java existed and was extremely popular. Microsoft had previously shipped their own version of Java, Sun sued them into the sea, and the whole thing ended in tears and lawyers. So Microsoft did the very sensible, very corporate thing: they hired Anders Hejlsberg , the man who built Turbo Pascal and Delphi, and said: "make us a Java, but ours, and don't get us sued." He did. And then he kept improving it for twenty-five years while Java spent a decade arguing about whether it should add lambdas. So calling C# "Microsoft Java" today is like calling a smartphone "a Microsoft telegraph." Technically, you can trace the lineage. It is also extremely funny to the person being insulted, which is the only thing that matters. So, what can you actually do with this thing? More than you'd think. Let's take the tour. First, the obligatory Hello World Every language tour is legally required to start here. C#'s has changed a lot, which tells you something about the language's whole vibe. The old way, circa 2005, was a ceremony: using System ; namespace MyFirstApp { class Program { static void Main ( string [] args ) { Console . WriteLine ( "Hello, world!" ); } } } Eleven lines to say hello. You needed a namespace , a class , a Main method with a specific signature, and the kind of static void incantation that makes beginners quietly close the tab and go learn Python instead. The modern way (C# 9 and later) is this: Console . WriteLine ( "Hello, world!" ); That's the whole program. The compiler quietly puts all the ceremony back for you behind the scenes. This is C# in a nutshell: it grew up in a buttoned-up enterprise suit, and over twenty years it
Modeling Facts and Reactions with Domain Events
submitted by /u/deniskyashif [link] [留言]