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

标签:#tor

找到 1191 篇相关文章

AI 资讯

AWS Types of Databases: The Complete 2026 Guide for Developers

If you’re building a generative AI chatbot, global e-commerce platform, or industrial IoT solution in 2026, picking the wrong database can sink performance, blow your budget, or delay your launch. For years, teams relied on one-size-fits-all relational databases for every workload, but modern applications demand specialized tools for specific use cases. AWS solves this challenge with 15+ purpose-built database engines across 8 distinct categories, optimized for performance, scalability, and cost efficiency for every imaginable workload. This guide breaks down every AWS database type, its core features, real-world use cases, and 2026 best practices to help you choose the right tool for your next project. Table of Contents Why Purpose-Built Databases Are the Standard in 2026 AWS Database Categories: A Deep Dive 2.1 Relational Databases 2.2 Key-Value Databases 2.3 In-Memory Databases 2.4 Document Databases 2.5 Graph Databases 2.6 Wide Column Databases 2.7 Time-Series Databases 2.8 Data Warehouse 2026 AWS Database Best Practices Common Mistakes to Avoid When Choosing AWS Databases Conclusion References Why Purpose-Built Databases Are the Standard in 2026 Modern workloads have vastly different requirements: a generative AI RAG system needs fast vector search, an IoT fleet needs high-throughput time-series data ingestion, and a global SaaS platform needs multi-region consistency with zero downtime. A single relational database cannot meet all these needs without tradeoffs. AWS purpose-built databases eliminate these tradeoffs by: Supporting open standard APIs to avoid vendor lock-in Offering serverless deployment options for all major engines Including built-in AI/ML and vector search capabilities Delivering up to 99.999% availability for mission-critical workloads Reducing TCO by 25-48% compared to self-managed or generic alternatives (per IDC) AWS Database Categories: A Deep Dive Relational Databases Relational databases store data in structured tables with fixed schema

2026-06-05 原文 →
AI 资讯

Your AI Agent Craves Curation. Here’s the FADEMEM Memory Architecture That Delivers It.

You have explained your tech stack to your coding agent four times this month. You mentioned your preferred approach to a problem in January, and your agent has no idea it ever happened. You corrected a decision last week and the old version is still surfacing. You set up context at the start of every session because there is nowhere for it to go at the end. This is not a model problem, as GPT-4, Claude, and Gemini all have the same limitations. The model is stateless. They all have inbuilt memory, and still every session starts from zero unless you have the infrastructure to persist what matters and surface it at the right moment. That sophisticated memory infrastructure is what most developers do not have. VEKTOR Slipstream v1.6.3 is a local-first memory SDK for AI agents. This release adds the layer most memory systems skip: not just storing what you tell it, but managing what should still be there months later: curation. What you actually get Before the architecture: What changes for you as a developer embedding this SDK. Every AI memory system forces decisions you didn’t realise you were making. Where does your agent’s context actually lives, is it on your machine or on someone else’s server? Are you paying per token every time your agent understands a memory, or does that happen locally? When you connect your GitHub, your calendar, your files — where does all that data go, and who can see it? Most memory systems answer all four questions for you, quietly, in their terms of service. VEKTOR’s answer to all four is the same: your machine, your data, your rules. Memory lives in a single SQLite file you own. Embeddings run locally on CPU — no API calls, no per-token cost, no data leaving the process. MCP connectors spawn as local stdio processes; nothing is routed through an external service. There is no telemetry, no cloud sync, no account required. If you want to understand exactly what your agent knows about you, you open the database with any SQLite browser and

2026-06-05 原文 →
AI 资讯

Sprint 7 Review: Generics.Collections | Review Sprint 7: Generics.Collections

Bilingual post · Post bilíngue Jump to: English · Português English {#english} Sprint 7 Review: Generics.Collections Mintlify docs tour — after Sprint 4 exceptions , Sprint 7 brings the collections every Horse API and CRUD service needs. Generic containers are not syntactic sugar in Delphi — they are how you build caches, registries, and JSON maps. Sprint 7 ( v2.15.0 ) shipped System.Generics.Collections with working TDictionary<K,V> and TList<T> , including TryGetValue with proper var write-back. What the review documents From Sprint 7 Review : var parameters — Value::Reference , write-back in procedures/functions and TryGetValue . TDictionary::Add / TryGetValue — dispatch in simulate_function_execution ; direct routing for instantiated generics. Parser — generic types with Integer / String in expressions ( TDictionary<String,Integer> ). RTL — rtl/sys/System.Generics.Collections.pas ; semantic layer recognizes Generics.Collections . Tests — generics_collections.rs plus fixtures. Tag v2.15.0 approved. Dictionary pattern in production code program DictDemo ; uses System . SysUtils , System . Generics . Collections ; var D : TDictionary < string , Integer >; V : Integer ; begin D := TDictionary < string , Integer >. Create ; try D . Add ( 'apples' , 3 ); if D . TryGetValue ( 'apples' , V ) then WriteLn ( 'apples = ' , V ); finally D . Free ; end ; end . TryGetValue only writes V when the key exists — the Delphi idiom you expect in services and controllers. Why var was the sprint's hidden hero Before v2.15.0, incomplete var semantics blocked realistic APIs. TryGetValue requires the callee to mutate the caller's variable through a reference. CrabPascal introduced Value::Reference and write-back in procedure dispatch specifically for this surface. Three implementation lessons from the retrospective: D := TDictionary<...>.Create needs normalize_call_name in execute_assignment — not just in direct calls. Generic instance methods must hit intrinsics before empty VMT lookups

2026-06-04 原文 →
AI 资讯

A Practical Guide to the ROS Navigation Stack: Core Components & Tuning

With rapid advances in robotics, autonomous navigation has become essential for mobile robots. The ROS Navigation Stack is the de facto open-source framework for building reliable, real-world navigation systems. It integrates perception, mapping, localization, path planning, and motion control into a unified pipeline. This article breaks down the core components, working principles, configuration best practices, and common pitfalls of the ROS Navigation Stack to help engineers build stable autonomous robots. Overview The ROS Navigation Stack is a collection of coordinated packages that enable a robot to: Localize itself on a map Plan global paths to a goal Avoid dynamic obstacles locally Control motion safely It relies on sensor inputs (LiDAR, depth cameras, wheel odometry, IMU) and outputs velocity commands to the robot base. Core Components move_base The central coordinator of the entire navigation system. Manages the navigation state machine Runs global and local planners Triggers recovery behaviors when the robot is stuck Exposes an Action interface for goal commands Key states: PLANNING, CONTROLLING, CLEARING, RECOVERY. AMCL (Adaptive Monte Carlo Localization) AMCL uses particle filter localization to estimate the robot’s pose on a pre-built map. Particle filter steps: Initialize particles over a pose distribution Predict motion using odometry Weight particles by sensor likelihood (LiDAR scan matching) Resample to keep high-confidence particles Output the weighted average pose AMCL is highly tunable: min_particles / max_particles laser_model_type odom_model_type update_min_d / update_min_a costmap_2d Costmaps represent the environment as a grid of “cost” values, indicating collision risk. Two costmaps: Global costmap: large-scale, slow-update, for path planning Local costmap: small-scale, fast-update, for obstacle avoidance Cost values: 0: free space 253: lethal obstacle 254: inscribed obstacle 255: circumscribed or unknown Inflation expands obstacles by the ro

2026-06-04 原文 →
AI 资讯

Let us filter AI slop, you cowards

It's almost impossible to avoid seeing AI-generated content online, but it doesn't have to be this way. YouTube, Instagram, TikTok, and more have ramped up content authentication efforts over the last year, with many now automatically applying labels to distinguish AI-generated images, videos, and music from those made by real, human creators. That's all very […]

2026-06-04 原文 →
AI 资讯

Navigating the Reorganized CrabPascal Docs | Navegando a documentação Mintlify

Bilingual post · Post bilíngue Jump to: English · Português English {#english} Navigating the Reorganized CrabPascal Docs Phase 1 of this blog series covered fundamentals — CLI, lexer, sprints, and how to contribute. If you read Contributing to CrabPascal: Get Involved , you already know where the repo lives and how to open a PR. Phase 2 is different: we walk the Mintlify documentation site the way a new teammate would, mapping each article to the pages you actually need in daily work. The live docs live at crabpascal.mintlify.app . The source is under mintlify/ in the Bitbucket repo. Think of Mintlify as the canonical handbook; Dev.to posts are the guided tour. Why the docs were reorganized CrabPascal grew from a v1.5 experimental interpreter (October 2025) to v2.22.0 with sprint-driven releases, Horse E2E tests, and honest build-exe . Old folders like documentation/00-INICIO/ still exist in git history, but Mintlify groups content by job to be done : You want to… Start here Install and run Quickstart See current capabilities Project status Understand architecture Architecture Follow releases Changelog Historical reports from v1.5–v2.8 remain under Histórico with archive banners — useful for context, not for "what works today." The home page is your compass Open the Mintlify index . It shows v2.22.0 at a glance: real diagnostic spans, System.* RTL, Unicode strings, dual-mode run/build, and Horse HTTP parity. Four cards link to quickstart, changelog, sprint roadmap, and technical-debt backlog. Essential CLI commands are listed once: crab-pascal check programa.dpr # diagnostics with line/column crab-pascal run programa.dpr # interpreter / runtime crab-pascal build-exe programa.dpr # native binary via C toolchain Bookmark this page. When someone asks "is feature X done?", check status + changelog before diving into Rust sources. The documentation map: question-driven navigation The page essentials/documentation-map is the "I want X, go to Y" cheat sheet. It answers sc

2026-06-04 原文 →
开发者

How to Build a Browser Tool and Sell It on Gumroad — A Complete Guide

I built 24 browser-based tools. Here is the complete technical guide for building your own and selling PRO licenses on Gumroad. Architecture: One HTML File + GitHub Pages + Gumroad No frameworks, no backend, no monthly costs. One HTML file on GitHub Pages. Gumroad handles payments. The PRO Flow User hits free limit → PRO modal Buy button → Gumroad popup ( window.open , NOT target=_blank ) Payment → Gumroad postMessage with license key message listener catches key Key verified via Gumroad API ( /v2/licenses/verify ) localStorage saves PRO (in try-catch!) Gotchas From 24 Tools postMessage security: Check d.success && d.purchase , never just d.license_key . I had this bug in 17 files. localStorage: Wrap in try-catch . Uncaught throws crash the whole page. CDN scripts: Always <script defer> . Without it, slow CDN blocks rendering. Gumroad publish: curl returns false every time. Use PowerShell. Buy button: Popup connects the page to Gumroad. Redirect breaks postMessage . Packed 5 templates with everything pre-configured: Browser Tools Starter Kit ($19)

2026-06-04 原文 →
AI 资讯

ACID vs BASE: What Database Guarantees Actually Promise

When people say a database is "ACID-compliant" or "eventually consistent," they are making promises about what happens when things go wrong — concurrent writes, crashes, network failures. ACID and BASE are the two vocabularies for those promises, and knowing the difference tells you what you can and cannot rely on. What ACID guarantees ACID is the contract that traditional transactional databases — PostgreSQL, MySQL/InnoDB, Oracle, SQLite — make about a transaction (a group of operations treated as one unit). The four letters: Atomicity : the whole transaction succeeds or none of it does. If a bank transfer debits one account but the credit fails, the debit is rolled back. There is no half-done state. Consistency : a committed transaction moves the database from one valid state to another, never violating its declared rules (constraints, foreign keys, types). It will not let you, say, leave a foreign key pointing at a row that does not exist. Isolation : concurrent transactions do not step on each other. The result is as if they ran one at a time, even when they actually ran in parallel. (In practice databases offer tunable isolation levels — from "read committed" to "serializable" — trading strictness for speed.) Durability : once the database says "committed," that data survives a crash or power loss. It has been written somewhere persistent, not just held in memory. The payoff is that you can reason about your data simply: after a successful commit, the world is exactly what you asked for. The cost is coordination, which gets expensive when data is spread across many machines. What BASE trades away BASE is the model many distributed and NoSQL systems adopt — think Cassandra, DynamoDB, or Riak — when they need to scale across many nodes and stay up through failures. The acronym is deliberately a chemistry pun on ACID, and it stands for: Basically Available : the system answers requests even during partial failures, possibly with stale or incomplete data rather tha

2026-06-04 原文 →
AI 资讯

How Git Actually Stores Your Code: Blobs, Trees, and Commits

Most people picture Git as a tool that records changes — a stack of diffs layered on top of each other. That mental model is wrong, and it makes Git feel mysterious. Git is really a small key-value database that stores snapshots, and once you see the four object types it uses, commands like reset , checkout , and rebase stop being magic. Git is a content-addressed object store Everything Git tracks lives in .git/objects as an object, and every object has an ID that is the hash of its own content. By default that hash is a 40-character SHA-1 digest (newer Git supports SHA-256). The same bytes always produce the same ID, so the ID is the content's address — change one byte and you get a completely different object. This is why Git data is effectively immutable: you never edit an object in place, you create a new one with a new name. You can look inside any object with git cat-file . The -t flag prints the type, -p pretty-prints the content: $ git cat-file -t 3b18e512 blob $ git cat-file -p 3b18e512 hello world There are exactly four object types: blob , tree , commit , and tag . A blob is just file contents — raw bytes, with no filename and no metadata. The blob for README.md knows nothing about being named README.md ; it only knows what's inside. A tree is a directory listing. It maps names to other objects: each entry has a mode (like a file vs. an executable vs. a subdirectory), a name, and the hash of either a blob (a file) or another tree (a subdirectory). Trees are how Git represents folder structure. Inspecting one shows exactly that: $ git cat-file -p HEAD^ { tree } 100644 blob a906cb... README.md 040000 tree fe8e3b... src A commit ties it together. A commit object points to exactly one top-level tree (the full state of your project at that moment), plus the hash of its parent commit (or parents, for a merge), the author and committer with timestamps, and the commit message. Running git cat-file -p HEAD shows these fields in plain text. Because each commit nam

2026-06-04 原文 →
AI 资讯

Qtractor Complete Guide

Complete First-Time Setup Guide for Qtractor on Ubuntu 26.04 install and prepare the system verify audio works configure PipeWire/JACK configure Qtractor record audio record while playing other tracks export projects tune latency troubleshoot problems Qtractor is a lightweight Linux DAW (Digital Audio Workstation) for audio and MIDI recording. On Ubuntu, most problems come from: JACK / PipeWire / ALSA conflicts Permissions Wrong audio device selection Monitoring setup Sample-rate mismatches USB devices reconnecting Tracks not armed correctly This guide walks through a strategic / systematic / stable setup from zero, and covers the common failure cases along the way. PART 1 QUICK START SETUP 1. Understanding the Linux Audio Stack Modern Ubuntu audio typically works like this: Applications PipeWire JACK compatibility layer ALSA drivers Audio hardware For Qtractor, the recommended setup is: PipeWire enabled JACK compatibility enabled Qtractor using JACK mode through PipeWire 2. Install the Required Packages Install everything needed: sudo apt update sudo apt install \ qtractor \ pipewire \ pipewire-audio \ pipewire-pulse \ pipewire-jack \ wireplumber \ qpwgraph \ helvum \ pavucontrol \ alsa-utils \ jackd2 \ qjackctl \ ffmpeg Useful tools: Tool Purpose qtractor DAW qjackctl JACK control panel qpwgraph audio routing graph helvum simpler routing pavucontrol audio device management alsa-utils microphone troubleshooting 3. Reboot After installation: reboot This ensures all audio services start cleanly. 4. Verify the Audio System Is Running Check PipeWire: systemctl --user status pipewire Check WirePlumber: systemctl --user status wireplumber Check Pulse compatibility: systemctl --user status pipewire-pulse You should see: active (running) 5. Verify Audio Devices Exist Check Playback Devices aplay -l Check Recording Devices arecord -l Check PipeWire Audio Nodes wpctl status You should see sections like: Audio Devices Sinks Sources Typical onboard audio may appear as: Built-i

2026-06-04 原文 →
AI 资讯

Building a API in PHP

Books API Structure Create folders app/ app/controllers/ app/core/ app/models/ app/models/DAOs/ app/models/DTOs/ app/models/entities/ app/utils/ config/ public/ api/composer.json Configure Composer and the PSR-4 autoload so that classes with the namespace App\ are searched inside the app/ folder. Key content: { "name": "user/api", "autoload": { "psr-4": { "App\": "app/" } } } After creating it, run this command inside the api folder: composer dump-autoload api/config/config.php Defines the base URL of the project. The router removes it from REQUEST_URI to keep only routes such as /books/get. <?php define('BASE_URL', '/proyect/api/public'); api/config/dbconf.json MySQL DB connection: { "host": "localhost", "user": "root", "password": "", "db_name": "books_db" } api/public/.htaccess Makes Apache send all routes to index.php. RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [QSA,L] api/public/index.php This is the entry point. It loads Composer, loads the configuration and calls the router. <?php use App\Core\Router; require_once DIR . '/../vendor/autoload.php'; require_once DIR . '/../config/config.php'; (new Router())->dispatch($_SERVER['REQUEST_URI']); api/app/core/Router.php <?php namespace App\Core; class Router { protected array $routes = [ '/' => 'HomeController@index', '/books' => 'BookController@index', '/books/get' => 'BookController@getAll', '/books/getById' => 'BookController@getById', '/books/create' => 'BookController@create', '/books/update' => 'BookController@update', '/books/delete' => 'BookController@delete', ]; public function add($route, $params): void { $this->routes[$route] = $params; } public function dispatch($uri): void { $uri = parse_url(str_replace(BASE_URL, '', $uri), PHP_URL_PATH); if (!isset($this->routes[$uri])) { $this->sendNotFound(); return; } [$controller, $method] = explode('@', $this->routes[$uri]); $controller = 'App\\Controllers\\' . $controller; if (!class_exists($co

2026-06-04 原文 →
AI 资讯

Inside Swift's plan to modernize thousands of Ansible Playbooks - and govern automation at scale

At Red Hat Summit 2026, SWIFT shared the approach they’re rolling out — including the pilot results that informed it, and the scale they’re targeting next. Imagine running automation that touches roughly one third of global GDP every day. Tens of thousands of VMs, network devices in production, elevated privileges across production systems — and every playbook you run is, effectively, a software supply chain. That is the everyday reality at SWIFT, the secure financial messaging backbone connecting 11,000+ financial institutions across more than 200 countries. At Red Hat Summit 2026, Suvasish Ghosh , Product Owner for CI/CD Engineering and DevOps Engineering Services at SWIFT, joined Gregor Berginc , CEO of XLAB Steampunk, on stage to talk about how SWIFT is using Steampunk Spotter to govern Ansible automation at this scale. Why automation at SWIFT scale needs governance by design For SWIFT, security, availability and auditability are not features added on top — they are baseline engineering requirements. Regulatory frameworks (including DORA) codify the expectations, but as Suvasish made clear on stage, governance is by design at SWIFT, not driven solely by regulation. That stance reflects a simple truth that more and more platform teams are arriving at: automation is production infrastructure, and it must be governed as such. When you run an Ansible playbook, you are executing a software supply chain — collections, modules, roles, Python packages, system packages, the execution environment, the operating system underneath. The playbook itself is just the tip of the iceberg. Errors propagate fast. The blast radius is large. And yet, until recently, most of the security and compliance attention in IT organizations went to the applications shipping to production. The automation that built and configured everything around them often slipped through. Suvasish put it directly during the session: “We spent a lot of time being compliant and secure in our application, but w

2026-06-03 原文 →
AI 资讯

I built a client's booking site in an afternoon (AI for the UI, headless CRM for the hard parts)

Syndicated from the FavCRM blog . The old quote was two weeks. With an agent on the UI and a headless backend, it's an afternoon. A client needs a booking site. The old quote was two weeks: a calendar, a database, an availability engine, payments, a customer table. With an AI agent building the frontend and FavCRM as the headless backend , the real work is an afternoon. Here is the whole job, start to finish. The scenario A small clinic. Three services, one practitioner, online booking with deposit. You are the agency; you have an AI agent in your editor and a terminal. The plan: Register the clinic's FavCRM workspace Configure services and availability Wire one server route that talks to FavCRM Let the agent build the booking UI against that route Test a real booking end to end Step 1 — Register the workspace (~5 min) The favcrm CLI registers a workspace and issues an API key. No dashboard. favcrm signup request --email clinic@example.com \ --organisation-name "Bright Smile Clinic" favcrm signup verify --request-id < id > --code <6-digit-code> The verify step prints a fav_mcp_* key. Put it where your build can read it — never in the repo: export FAVCRM_API_KEY = fav_mcp_... Step 2 — Configure services and availability (~30 min) Hand the brief to your agent and let it call the tools. Inspect a schema first: favcrm tool describe create_service Then create each service: favcrm tool call create_service '{ "name": "New Patient Exam", "durationMinutes": 45, "price": "80.00" }' favcrm tool call create_service '{ "name": "Cleaning", "durationMinutes": 30, "price": "60.00" }' Set when the practitioner works, so availability is real: favcrm tool call set_staff_availability '{ "weekday": "mon", "start": "09:00", "end": "17:00" }' Repeat per weekday. At this point the backend is done — services, hours, an availability engine that knows about clashes. You wrote no schema. Step 3 — One server route (~30 min) The browser must never hold the API key. Put it in one server route tha

2026-06-03 原文 →