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

今日精选

HOT

最新资讯

共 27375 篇
第 631/1369 页
产品设计 Reddit r/programming

Beyond Happy Path Engineering: the Network

What happens when network calls stop behaving like clean request/response interactions. Timeouts, retries, duplicate side effects, idempotency, backoff, circuit breakers, load shedding, degraded states, observability, etc. submitted by /u/OtherwisePush6424 [link] [留言]

/u/OtherwisePush6424 2026-07-01 09:23 5 原文
AI 资讯 Dev.to

Maintaining WordPress sites behind HTTP Basic auth — Playwright, urllib, and encrypted credentials

It's pretty common to throw a layer of HTTP Basic auth on a WordPress site: a staging environment before launch, an internal test instance only employees should see, or any environment that wants an extra gate before the WordPress login screen itself. From a maintenance-tool point of view, this setup creates a peculiar "half-working, half-broken" asymmetry. The SSH/WP-CLI side runs fine. But everything HTTP-based — visual checks, thumbnail generation, browser-based fallback updates — hits 401 and dies. This post walks through how we resolved that asymmetry. What was breaking — two parallel paths, both blocked A maintenance tool actually touches a Basic-auth-protected site through two distinct paths: Playwright path : visual checks, thumbnail capture, browser fallback updates when SSH isn't available. browser.new_context() → navigation → screenshot urllib path : HTTP status checks (pre/post-update 200/5xx/4xx monitoring, rollback decisions) With no credentials, both paths see a 401 Unauthorized from the protected site. The Playwright symptom is the obvious one: the screenshot you save is the browser's "authentication required" dialog. The thumbnail grid fills with dark auth-prompt images, and you start wondering whether anything actually works. The urllib symptom is much worse — it silently breaks rollback decisions . A 401 baseline followed by another 401 after the update looks like "nothing changed = healthy." Real failures can hide behind that match, and the rollback that should have fired never does. The design — consolidate credential extraction into one helper When the same credentials need to flow through multiple code paths, picking them out of the site dict separately at each call site invites format-mismatch and missed-update bugs. So the first thing we did was build a small core/basic_auth_utils.py module that owns every form of credential extraction . # core/basic_auth_utils.py def get_basic_auth_tuple ( site ): """ Return (user, password), or None if not

Susumu Takahashi 2026-07-01 08:56 12 原文
AI 资讯 Dev.to

My Hackathon Journey: From Zero to Champion

My hackathon journey didn't start with winning. It started with losing. My first hackathon was BlueHacks 2025 . We spent almost all of our time building and very little time understanding the business side of our project. When it came time to pitch, we struggled to explain why our solution mattered. That experience taught me an important lesson: A great product means nothing if people don't understand its value. Next came GCash's invite-only hackathon . We didn't win, but I walked away with something more valuable than a trophy. I learned more about product thinking, working with data, and met someone named Neo, who would later become a key part of my hackathon journey. Then came the YSES Hackathon . Once again, we fell short. We believed we had built a strong solution, but we made the same mistake. We focused too much on the technology and too little on market validation, business models, and the value our product created. Everything changed during Based Space Batch 002 . It was my first international blockchain hackathon, and it completely changed how I approached building products. During the program, Sir Eli Becislao, then Country Lead of Base Philippines, emphasized the importance of storytelling, pitching, and business strategy. That was when I realized hackathons aren't just coding competitions. They're startup simulations. Our team eventually pivoted our idea and built NameThat , a Web3 platform on Base where users could earn rewards for creative names and ideas. Although we didn't win, we received the Most Pivoting Project Award , recognizing how much we improved our solution throughout the competition. That experience became a turning point. Next was the Philippine Blockchain Week ICP Hackathon . Simply being selected as one of the Top 50 teams in the Philippines already felt like an achievement. Then we were invited to present FarmChain on the Philippine Blockchain Week stage. When the results came out, we finished Top 6 out of 50 teams . To some, sixth p

Kurt Oswill McCarver 2026-07-01 08:45 13 原文
AI 资讯 Dev.to

Customizing D365 Sales — For Our Own Sales Team (Customer Zero) (2) Common Settings

This continues from Part ① . In Part ②, we'll configure the common settings and the internal-processing Power Automate flows. Common Settings Setting Up Connections Open Power Automate ( https://make.powerautomate.com ) Go to "Data" → "Connections" → "New connection" and create a Microsoft Dataverse connection Do the same to create an Office 365 Outlook connection Basic Flow Creation Steps Click "Create" → select "Automated cloud flow" (event-triggered) or "Scheduled cloud flow" (recurring) Name flows in the format [Zone]-[Number] [Description] (e.g., "A-1 Opportunity Stage Stall Alert") Always run a test after creating a flow to verify it works 2. Internal-Processing PA Flows — 4 Flows (Write-back portions of A-4, C-5, C-6, D-3) Once the common settings are done, it's time to build. A-4: Write Back Stage Changed Date Without this flow, the stall-day calculations in A-1 and B-1 will not work. Implement this first. In Microsoft Dynamics 365 (D365), a "stage" refers to a major milestone in a process — such as a sales deal or customer engagement — that guides the responsible person through what needs to happen next. It's how a series of activities is visualized and managed. From here, all work is done in Power Automate. Step Task Details 1 Create the flow "Automated cloud flow" → select trigger "When a row is added, modified or deleted (Dataverse)" 2 Configure trigger Table: Opportunities / Change type: Modified 3 Add condition Add a "Condition" action: "When Status Reason (statuscode) has changed" 4 Write-back action "Update a row (Dataverse)" → set cr917_stage_changed_date to utcNow() C-5: Auto-Set Renewal Date + Auto-Create Renewal Opportunity (on Won) On Won close, two things happen: ① auto-set the renewal date to close date + 365 days, and ② auto-create a new Opportunity for the renewal cycle and add it to the pipeline. Step Task Details 1 Create the flow "Automated cloud flow" → trigger "When a row is added, modified or deleted (Dataverse)" 2 Configure trigger Ta

Miwa J 2026-07-01 08:28 8 原文
AI 资讯 Dev.to

Aikido buys Root to patch open source in place, without the upgrade dance

Every open-source CVE backlog has that one line item you keep sliding into next quarter. The library is a couple of majors behind, the upgrade breaks four services, and the fix upstream ships against a version you cannot ride to. So you file the ticket again. (Everyone's doing great, thanks for asking.) On June 30, Aikido Security said it had acquired Root, whose whole pitch is to make that ticket go away by another route: patch the vulnerability directly into the version already resolved by your build, and skip the upgrade entirely. Per The New Stack, the deal is worth $70 million, and Root's patching technology gets folded into a new Aikido product. Let me phrase what has just moved as plainly as I can. A vendor now edits open-source packages on your behalf and hands you back a version string upstream never shipped. If that sentence made you flinch, hold the flinch. It is doing useful work. The problem this is actually solving The dirty secret of dependency remediation is that a lot of "known" CVEs sit unfixed because remediating them means a version bump that carries breaking changes. You do not get a security patch for the 2.x line, you get a "fixed in 4.0" release note and a laugh track. Backporting the fix is the right operational move: keep the API surface, change only the vulnerable bytes. Linux distributions have done exactly this for decades. The reason your app team is not doing it too is that nobody has the muscle to maintain a patched fork of every transitive dependency in a lockfile. If Aikido now makes that muscle available to the average CI/CD owner, teams get a lever they simply did not have. That is the honest upside. Own it. Who is signing what, exactly Here is the part I care about, which is trust. When your build resolves a package by name and version, you rely on a chain: the registry answers, the digest matches what upstream published, the SBOM you generate downstream still refers back to that same identity. A backported build breaks that chai

Leo 2026-07-01 08:24 8 原文
AI 资讯 Dev.to

How AI Assist Turns a Rough Draft into a Polished Document in Minutes

You've got a rough draft. Bullet points, half-finished paragraphs, maybe some notes you pasted from a meeting. It needs to become a real document — but rewriting takes time you don't have. That's exactly where AI Assist comes in. What AI Assist Does AI Assist lives inside PaperQuire's editor. Select any text, right-click, and choose an action: Rewrite — Rephrase your selection for clarity and tone, keeping the meaning intact Expand — Turn bullet points or short notes into full paragraphs Summarize — Condense a long section into a concise summary Fix grammar — Clean up spelling, punctuation, and awkward phrasing Translate — Convert your text to another language Custom prompt — Tell the AI exactly what you want ("make this more formal", "add examples", "simplify for a non-technical audience") Every action works on your selection — you stay in control of what gets changed and what doesn't. Bring Your Own Key PaperQuire doesn't route your content through our servers. You plug in your own API key from any supported provider: OpenAI (GPT-4o, GPT-4o mini) Anthropic (Claude Sonnet, Claude Haiku) Google (Gemini Pro) Local models (Ollama, LM Studio — for fully air-gapped workflows) Your documents, your key, your choice. Nothing leaves your machine unless you explicitly configure an external provider. A Real Workflow: Meeting Notes to Executive Summary Here's a concrete example. You come out of a 45-minute meeting with this: - Q2 revenue up 12% vs forecast - APAC expansion delayed, regulatory issues - New pricing tier launching Aug 1 - Customer churn down to 3.2%, lowest ever - Engineering headcount: 3 open roles, 2 offers out - Board meeting moved to July 18 Select all, click Expand , and AI Assist turns it into: Q2 revenue came in 12% above forecast, driven primarily by enterprise upsells in North America. The planned APAC expansion has been delayed due to unresolved regulatory requirements in two target markets; the team is working with local counsel to clear the path for a

paperquire 2026-07-01 08:22 4 原文
AI 资讯 Dev.to

Introducing PaperQuire — Markdown to Beautiful PDFs, 100% Offline

We're excited to launch PaperQuire — a desktop app that turns plain Markdown into professional, print-ready PDFs. No cloud uploads, no accounts, no subscriptions required for personal use. Why We Built PaperQuire If you write in Markdown, you've probably hit this wall: your content looks great in your editor, but the moment you need to share it as a polished document — a proposal, a report, a spec — you're stuck copy-pasting into Word or fighting with LaTeX. We wanted something simpler. Write in Markdown, click Export, and get a document that looks like a designer made it. No extra steps, no cloud dependency, no learning curve. What PaperQuire Does Live preview — See your formatted document side-by-side as you type. What you see is what you'll get in the PDF. Professional templates — Choose from templates designed for technical docs, proposals, reports, and more. Every template supports custom branding: your logo, your colors, your fonts. Offline-first — Your documents never leave your machine. PaperQuire runs entirely on your desktop — macOS, Windows, and Linux. Plugin system — Extend PaperQuire with plugins for diagrams (Mermaid), math (KaTeX), syntax highlighting, and more. AI Assist — Bring your own API key and get writing suggestions, grammar fixes, and content generation right inside the editor. How It Works Open PaperQuire and start writing Markdown — or open an existing .md file Choose a template and customize your branding (logo, colors, fonts) Click Export to generate a polished PDF instantly Share your document with confidence The entire process takes seconds, not minutes. Free for Personal Use PaperQuire is free for personal use with no restrictions on the core features. The Pro plan adds advanced exports (DOCX, HTML), batch processing, and priority support for teams that need more. Get Started Download PaperQuire for your platform: macOS (Apple Silicon) Windows (x64) Linux (x86_64) Check out the documentation for a quick walkthrough, or just start writi

paperquire 2026-07-01 08:21 9 原文
AI 资讯 Dev.to

Desenvolvedor: de técnico a arquiteto do produto

Existe um desconforto generalizado na área de desenvolvimento. Uma sensação de que o chão mudou, mas ninguém deu o mapa novo. A IA generativa entrou no dia a dia, e de repente aquilo que antes levava horas: escrever funções, montar queries, criar componentes, resolver bugs triviais. Agora passou a levar minutos. Às vezes, segundos. A reação mais comum é: ou "a IA vai substituir todo mundo", ou "não muda nada, é só mais uma ferramenta". As duas posições estão erradas. A primeira é alarmismo. A segunda é negação. O que aconteceu foi uma mudança de papel . O desenvolvedor não deixou de ser necessário. O tipo de contribuição que se espera de um desenvolvedor mudou. E entender essa mudança cedo, especialmente para quem está no início da carreira, é a diferença entre se tornar um profissional de pouco impacto e um profissional indispensável. O modelo que conhecíamos Durante muito tempo, a indústria funcionou com uma divisão razoavelmente clara de responsabilidades: O ciclo tradicional de uma demanda: Alguém identifica um problema → alguém de produto investiga e define o escopo → um arquiteto ou pleno projeta a solução → um desenvolvedor implementa. Cada etapa tinha suas pessoas, suas cerimônias, seus rituais. Refinamento, sprint planning, design review, code review. Não que isso fosse ruim, só era uma estrutura que fazia sentido quando cada etapa era custosa. Dentro desse modelo, a progressão de carreira era mais ou menos assim: Junior recebia tarefas pequenas e bem definidas. Codificava, testava, corrigia. A maior parte do tempo era gasto na execução: a parte braçal . Pleno pegava demandas mais complexas, começava a pensar em como o código se encaixa no sistema. Refatorava, participava de decisões técnicas . Senior definia arquitetura, avaliava trade-offs, mentorava. Codava menos, pensava mais . A IA comprimiu isso. Muito do trabalho braçal que servia como treinamento para o junior agora é automatizado. E isso gerou a pergunta que paira no ar: "Se a IA faz o que eu fazia

William Cunha Cardoso 2026-07-01 08:10 4 原文
AI 资讯 The Verge AI

Anthropic’s long-sidelined Fable 5 is greenlit to return

After weeks of negotiating with the Trump administration, Anthropic is finally going to be able to bring Claude Fable 5 back online. In a post on X, Anthropic said it plans to begin restoring access tomorrow. Anthropic: We've received notice that the Department of Commerce has lifted export controls on Claude Fable 5 and Mythos […]

Hayden Field 2026-07-01 08:03 6 原文
AI 资讯 Dev.to

"How to Stop AI Agent Skills, Hooks, and Cron Jobs from Silently Conflicting Over Where They Run and What Data They Trust"

Originally published on hexisteme notes . Make every skill, hook, and scheduled job declare four invariants before it ships — Locality (where it can run), Source-of-truth (which facts it owns or borrows), Cross-ref (what depends on it and what it depends on), and Trigger-measurability (whether its trigger is observable at runtime or hidden in external state) — and refuse to hand off any component that leaves one undeclared, because an undeclared assumption is exactly the seam where two components silently disagree. Two separate runtime leaks surfaced in a single audit session, and both traced back to the same root cause: a component that never declared its assumptions. One read configuration from a file that had stopped being the source of truth (so it always returned a stale default); the other was a scheduled job pointed at a remote sandbox while its prompt referenced local-only paths — caught minutes before registration, where any later and it would have billed compute and produced nothing. Neither was a coding bug. Both were missing declarations. The failure mode: components that work alone but leak when combined When you build an AI agent system out of small parts — skills the model loads on demand, hooks that fire on lifecycle events, cron jobs and scheduled routines that run unattended, helper scripts, config profiles — each part usually gets tested in isolation. It works. You move on. The trouble is that "it works" only proves single-shot correctness; it says nothing about whether the part's assumptions agree with the rest of the system. Every component carries hidden assumptions: where it runs (local machine vs. a remote sandbox), which facts it treats as authoritative, what other components it silently depends on, and what its trigger actually measures. When those assumptions go undeclared, conflicts stay invisible until they surface to the user as a flaky, hard-to-trace symptom — the kind that feels like a vicious cycle because every fix in one place re-o

John 2026-07-01 08:00 9 原文
AI 资讯 Dev.to

Além da IA: Por que a colaboração humana é o verdadeiro motor do Open Source

A narrativa atual da tecnologia está fortemente inclinada para a automação. Com agentes de IA escrevendo boilerplate , gerando componentes e até estruturando projetos inteiros, é fácil olhar para o futuro do desenvolvimento de software e assumir que o elemento humano está diminuindo. Mas se você mantém ou contribui ativamente para um projeto open source , sabe que a realidade é bem diferente. A IA pode escrever código, mas não consegue validá-lo contextualmente contra décadas de edge cases obscuros. Ela não sabe dizer por que uma regra de negócio específica falha em produção. Mais importante ainda: a IA não constrói comunidade. A evolução de um software robusto ainda depende inteiramente de pessoas colaborando, quebrando código, reportando bugs e validando se o código realmente funciona no mundo real. Para ver isso na prática, precisamos olhar para projetos que tentam fechar lacunas geracionais gigantescas na tecnologia. Um exemplo perfeito disso é o AxonASP . A Filosofia do AxonASP: Modernizando o Legado Por muito tempo, o ASP Clássico e o VBScript foram considerados presos a um modelo de servidor obsoleto — amarrados ao IIS e deixados para trás pelas práticas modernas de deploy . O AxonASP muda esse cenário. É um runtime open source e cross-platform que trata o ASP Clássico como uma Aplicação moderna, em vez de uma relíquia do passado. Ele traz o VBScript, o ASP e, principalmente, o suporte ao JavaScript Síncrono para o futuro. Construir um runtime que lida com código legado enquanto opera em um ecossistema moderno e multiplataforma não é algo que você consegue simplesmente pedindo para um LLM. Exige um ciclo de feedback agressivo. O AxonASP está em franca evolução e apresenta altíssima compatibilidade com o ASP Clássico. Mas essa compatibilidade não é mágica — ela é o resultado direto de usuários pegando seus scripts legados de 15 a 20 anos atrás, rodando no motor, vendo onde falham e reportando exatamente o que aconteceu. Cada issue aberta e cada bug reportado p

Lucas Guimarães 2026-07-01 08:00 9 原文
开发者 Dev.to

One Year

A year ago today, I started at Approov. A hundred days in, I wrote about the transition: leaving management, the refreshing day-to-day feedback loop, the strange experience of relearning a craft I thought I'd lost. I stand by most of it. But a hundred days is enough to notice a change; it takes a year to understand it. So here is what a year taught me that a hundred days couldn't. The rust that mattered At a hundred days I called myself rusty. I was. I reached for patterns that no longer fit and looked up syntax I once knew by heart. I expected that to be the hard part. It wasn't. The rust came off faster than I feared, and somewhere along the way I realised I'd been worried about the wrong thing entirely. The agentic era arrived in earnest this year, and it quietly rewrote the job description. The premium skill is no longer how fast you can produce code from memory. It's whether you can write a precise specification and make a strong architectural decision, then judge honestly whether what comes back is any good. Those are not new skills for me. They are the exact skills that years of reviewing architecture and mentoring engineers had been sharpening the whole time. The craft I sat down to relearn was not the craft that turned out to matter. I spent years assuming management had pulled me away from engineering. It hadn't. It had been quietly preparing me for the version of engineering that was coming. Charity Majors has a name for the shape of this: the engineer/manager pendulum. The idea that a healthy career swings between the two, rather than treating management as a one-way door you walk through once and never come back. I didn't choose when mine swung back. But it swung the right way, and the years spent on the other side weren't lost. They were compounding. A secure transaction is a secure transaction The work itself has been a homecoming of a different kind. I spent years in payments. Now I work in mobile and API security. On paper those are different worlds

Brendan Devenney 2026-07-01 08:00 9 原文
AI 资讯 Dev.to

Stop re-flagging the same finding — without going silent

A reviewer that flags the same known issue on every run trains you to ignore it. The fix can't be "hide findings," because a tool that silently drops things is worse than one that nags. CommitBrief has two ways to accept a finding and move on — a per-developer baseline and an in-source suppression marker — and both are built so that what they remove is always counted, never quietly swallowed. The interesting part is how a finding keeps its identity when the code around it moves. TL;DR Baseline ( .commitbrief/baseline.json , gitignored): accept the current findings once; later runs drop anything whose fingerprint is already in the file. Inline suppression : a commitbrief-ignore: <reason> comment on or above a line removes that finding — and lives in committed source, so a reviewer sees it. A finding's fingerprint deliberately excludes its line number , so accepting it survives the code drifting up and down the file. Both are TRUE removals — they affect --fail-on and the JSON findings[] , not just the display — and both print what they removed. The limit. The baseline is per-developer, not a shared team policy; it quiets your runs, not CI's. The fingerprint that survives code drift The whole design rests on one question: when is a finding "the same finding" you already accepted? If the answer included the line number, a baseline would evaporate the moment you added an import above the issue. So it doesn't. A finding's identity is three fields, hashed: func normalizeTitle ( title string ) string { return strings . ToLower ( strings . Join ( strings . Fields ( title ), " " )) } func Fingerprint ( f render . Finding ) string { h := sha256 . New () h . Write ([] byte ( f . File )) h . Write ([] byte { 0 }) h . Write ([] byte ( f . Severity )) h . Write ([] byte { 0 }) h . Write ([] byte ( normalizeTitle ( f . Title ))) return hex . EncodeToString ( h . Sum ( nil )) } File, severity, and a normalized title — and nothing else. Line is out, so the same issue keeps its finger

Muhammet ŞAFAK 2026-07-01 08:00 9 原文