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

标签:#c

找到 32366 篇相关文章

AI 资讯

Keep a Record of What You Believed Before You Knew

Memory is not a log. It is a story rewritten after you learn how it ended. You will remember being less certain than you were. You will remember seeing the risk you missed. That is not dishonesty. That is how remembering works. Which is why you cannot learn judgment from memory alone. The correction is unglamorous. Before the decision, write down what you expect. Not a plan. A prediction. We are choosing this because we believe that. We think it takes three weeks. We think the load arrives by March. If it does not, we were wrong about the growth, not about the design. Four lines. A date. Somewhere you will find it again. Add the number you least want to write. How sure are you. Seven out of ten is a real answer. Certain is almost never a real answer, and writing it down makes you notice how often you reach for it. Then set a time to come back. The value is not in the writing. It is in the reading, six months on, when the outcome is known and the note is not. You find out something nobody else can tell you. Whether you run early or you run late. Whether your confident calls land better than your hesitant ones. Whether you are wrong about people more often than you are wrong about systems. That is calibration. It is the whole difference between ten years of experience and one year lived ten times. It changes rooms, too. A review where somebody can produce what they actually believed in March is a different meeting from one where everyone remembers agreeing. Hindsight makes us unfair in a peculiar direction. It makes the past look obvious, and the people standing in it look careless. They were not careless. They were standing exactly where you are, with less information and no ending. So write down where you are standing. Your future self will not be able to reconstruct it, and your future self is the one who has to get better. – Serguey Asael Shinder

2026-09-08 原文 →
AI 资讯

Efficient Karatsuba Multiplication Algorithm for Resource-Constrained 8-Bit Computers to Boost Computational Speed

Introduction Implementing the Karatsuba multiplication algorithm on an 8-bit computer isn’t just an academic exercise—it’s a practical solution to a real-world problem. Resource-constrained systems, like the 8-bit TTL computer I’ve been hacking on, face inherent limitations in memory, processing power, and clock speed. These constraints force every operation to be scrutinized for efficiency. Traditional multiplication algorithms, such as the grade-school method, become bottlenecks when dealing with large numbers, as they scale quadratically with input size. Karatsuba, however, offers a theoretical edge: it reduces the number of multiplications required from n² to nlog₂3 ≈ n1.585 , making it significantly faster for sufficiently large inputs. The Challenge: Balancing Theory and Practice Theoretical efficiency is one thing; practical implementation on an 8-bit system is another. The Karatsuba algorithm relies on recursive division and addition, which introduces overhead in memory usage and control flow. On an 8-bit computer, where registers are limited to 8 bits and memory addressing is constrained, this overhead can negate the algorithm’s benefits if not carefully managed. For example, splitting a number into high and low parts requires additional memory accesses, and recursive calls can quickly exhaust the stack. The physical limitation here is the finite number of transistors and clock cycles , which directly impact how much computation can be performed within a given time frame. Why Karatsuba? A Comparative Analysis Other multiplication algorithms, like Toom-Cook or even hardware-specific optimizations, were considered. However, Karatsuba strikes a balance between simplicity and efficiency. Toom-Cook, while more efficient for very large numbers, introduces additional complexity in implementation and requires more memory for intermediate results. Hardware-specific optimizations, such as using lookup tables, are limited by the 8-bit architecture’s address space. Kar

2026-09-08 原文 →
AI 资讯

Are You Shipping a Data Warehouse or a Malware Delivery Vehicle?

Ninety-eight percent of the production container images I audit in financial services contain at least one critical vulnerability, and nearly half of those vulnerabilities have a fix available that the engineering team simply hasn't bothered to apply. It matters because when you’re pulling down a python:3.11-buster image, you aren't just getting an interpreter. You’re getting a Debian distribution, a shell, a package manager, and enough attack surface to keep a red team busy for a month. In a regulated environment, that’s not just tech debt; that’s a liability that will get you a stern email from compliance during your next SOC2 audit. Why I chose this topic: I spent three weeks last quarter cleaning up a Log4j-style mess that only existed because a legacy data job was pulling a bloated, unpatched base image. I’m writing this because I’m tired of seeing production clusters running bloated images that act as a buffet for bad actors. You’re currently facing a binary choice: continue to ship heavy, "convenient" images that make debugging easy but security impossible, or embrace the friction of minimal, hardened artifacts that keep you out of the headlines. The contenders Most data engineers in my circles land on one of three paths when containerizing their PySpark or Pandas workloads. First, there’s the "Standard Distro" approach. This is FROM python:3.11-slim or FROM ubuntu:22.04 . It’s familiar, it has apt , and you can pip install anything without breaking a sweat. Second, we have the "Distroless" camp. This is Google’s gcr.io/distroless/python3 . It contains absolutely nothing but your app and its runtime dependencies. No shell, no package manager, no local tools. Third, there is the "Alpine/Musl" route. This is FROM python:3.11-alpine . It’s tiny, but it swaps the standard glibc for musl, which is a recipe for disaster if your data science libraries rely on C-extensions. Photo by CHUTTERSNAP on Unsplash The hidden cost of "easy" images If you’re using python:3.11-

2026-09-08 原文 →
AI 资讯

We open-sourced a court for AI agents, not another chat protocol

Agents can already talk. MCP and A2A exist. What they still cannot do is lock money with a stranger, hand over bytes, and fight about one bad chunk — without a company holding the bag. That gap is what ArthNeura is for. Two repos on purpose arthneura-core is a Substrate solo-chain. pallet-agent-registry — ML-DSA-65 DID, deposit, reputation pallet-vector-db — Merkle commitment, dispute bound to one chunk index pallet-escrow — lock / release / refund Pallets do not import each other. The runtime wires traits. arthneura-market is only discovery. Listings, signed offers, delivery URLs. No keys. No funds. No verdict. The board names the next chain call and does not submit it. Status Pre-testnet. v0.1. Local --dev node. Not a public network. Not a token post. https://github.com/arthneura/arthneura-core https://github.com/arthneura/arthneura-market https://github.com/arthneura

2026-09-08 原文 →
AI 资讯

The Database That Tells You What It Knows

“Store the data” is only the beginning of the problem. The difficult questions usually come afterward: What structure does this data actually have? Which fields are missing or inconsistent? Which values are invalid? Which changes are safe to apply automatically? What exactly changed after a repair? Can the system prove that its storage and indexes are still consistent? I built Atlas to answer those questions inside the database engine itself. Atlas is a zero-dependency embedded database for semi-structured data. It stores records, builds a full-text search index, infers schema, analyzes data quality, proposes safe repairs, preserves uncertain records, and records an audit trail of applied changes. It does not use SQLite or SQL. It is not intended to replace SQLite for relational workloads. Instead, Atlas focuses on a gap that is usually handled by external scripts and tools: Data inspection, diagnosis, and safe repair as first-class database capabilities. That is the problem Atlas was built to solve. Why data quality belongs inside the database engine Most databases are very good at storing and retrieving data. That is necessary, but real-world data work rarely stops there.** Operational records, imported JSON, CSV files, event payloads, and semi-structured documents often arrive with problems: { "id" : "T-1" , "title" : " Connection timeout " , "priority" : "HIGH" } { "id" : "T-1" , "title" : "connection timeout" , "priority" : "high" } { "id" : "T-2" , "title" : "Unicode café search" , "priority" : null } These records contain several potential issues: Duplicate logical identifiers Leading or trailing whitespace Inconsistent capitalization Null-like values Missing fields Mixed data types Malformed email addresses Different date formats Inconsistent structures across records A storage engine can preserve these values perfectly while still leaving the data difficult to understand and use. The usual response is to add external tools: A schema profiler A data-quality

2026-09-08 原文 →
AI 资讯

Bidirectional Writeback for Apache Iceberg via Google Sheets: Serverless Lakehouse Console

Turn Google Sheets into a Fully Interactive, Differential ACID Mutation Console for Apache Iceberg without Reverse ETL SaaS or Cloud Servers. Hero Infographic: Interactive Bidirectional Lakehouse Writeback via Google Sheets & Apache Iceberg. Enables business operators to query filtered records from an open Apache Iceberg table on Google Cloud Storage, visually edit values, add new rows, or purge obsolete records directly within a Google Sheets grid with an embedded dark-themed console, and commit atomic, microsecond-tolerant ACID mutations back to Parquet storage via BigQuery without Reverse ETL SaaS or persistent servers. Structural Analysis of the Hero Infographic: The hero infographic illustrates the complete, self-contained operational loop connecting frontline spreadsheet agility with immutable open lakehouse storage across three interconnected stages: 1. Predicate Query (Apache Iceberg Open Lakehouse on GCS) : The left section shows the enterprise analytical foundation hosted on Google Cloud Storage, where Apache Iceberg manages immutable Parquet data files, hierarchical Avro metadata, and commit snapshots. When a user requests high-value records, BigQuery acts as an on-demand distributed compute accelerator, executing SQL queries with predicate pushdown (e.g., SELECT * WHERE price > 1000 ORDER BY id ASC ) to fetch precise subsets in sub-seconds. 2. Frontline Editing in Google Sheets (Intuitive Operational Experience) : The central section features a modern, user-friendly Google Sheets grid docked with the sleek dark-themed Iceberg Lakehouse Console sidebar. A business user effortlessly modifies data on the grid with immediate visual feedback: modifying existing values (e.g., updating price from 1500 to 123 ), appending new rows with unique primary keys ( + ADD (New Row id:121) ), and deleting obsolete rows ( 🗑️ DELETE (Removed id:104) ). Native cell validation guarantees data cleanliness, while a Privacy Mode toggle ( [🔒 Privacy: ON] ) automatically masks sen

2026-09-08 原文 →
AI 资讯

Posterior Inference: From Joint Distributions to the Inference Bottleneck

A probabilistic model can describe more than the data you observe. It can also include hidden variables that capture structure you cannot observe directly. But defining that model is only the beginning. Once an observation x is available, the practical question changes: Given this x , what does the model imply about the hidden variable z ? That is the central problem of Posterior Inference . The notation is compact, but the computation is not always easy. High-dimensional latent spaces, complex posterior distributions, and interactions among hidden variables can make both the posterior itself and expectations under that posterior difficult to compute. Start with the Joint Distribution Suppose a probabilistic model contains an observed variable x and a hidden or latent variable z . The model does not treat them as unrelated quantities. Instead, it represents their probabilistic relationship through a Joint Distribution : p ( z , x ) This joint distribution describes how the observed data and the hidden variable fit together inside a single probability structure. Once x is observed, however, the question becomes conditional. We are no longer asking only how x and z relate in general. We want to know how the possible values of z are distributed given the particular observation x . That conditional distribution is the posterior. Posterior Distribution: Conditioning on Observed Data The Posterior Distribution is p ( z ∣ x ) = p ( x ) p ( z , x ) ​ The numerator p ( z , x ) contains the probabilistic relationship between the latent variable and the observation. The denominator p ( x ) normalizes those values so that the result becomes a conditional probability distribution over z . The distinction is important: The joint distribution p ( z , x ) describes the probability structure of the model. The posterior distribution p ( z ∣ x ) tells us what that structure implies about z after x has been observed. In that sense, the posterior connects the model with actual data. Pos

2026-09-08 原文 →
AI 资讯

Why Compliance Kills Early-Stage Projects and How to Fix It

Compliance itself isn't the villain. The problem is a system designed for large banks being forced onto small teams who measure time in sprints, not fiscal quarters. Innovation was never meant to wait for permission. It's supposed to be fast, chaotic, and full of discovery. But for anyone who has tried to launch a startup especially in Web3, fintech, or any regulated space there is a familiar slowdown that begins the moment compliance enters the conversation. Everything feels alive until the first "verification required" email arrives. That's when the waiting begins. Compliance itself isn't the villain. It protects systems from fraud, builds trust between unknown parties, and ensures accountability. But the way compliance exists today feels like a relic a system designed for large banks, traditional corporations, and legal departments with infinite patience and paperwork. For small teams who measure time in sprints, this system simply doesn't fit. The Repetition Tax Most founders encounter the compliance disconnect the moment they try to grow. After building their MVP and testing their product, they reach the stage where partnerships or investors arrive and suddenly they're asked to complete KYB (Know Your Business) verification again and again. Each time a new partner or service provider comes aboard, the process restarts: upload documents, verify directors, prove legitimacy. It's not that startups resist compliance; they simply don't understand why they must prove the same truth multiple times to different counterparties who have no way to see each other's work. This endless repetition creates what many founders now call the repetition tax. It isn't paid in money but in time and motivation. The same hours that could have gone into improving a product or connecting with users are swallowed by forms, follow-ups, and "under review" messages. And crucially, all this duplicated effort doesn't make the system any safer it just makes it slower. The Security Paradox There

2026-09-08 原文 →
AI 资讯

Craigslist's JSON-LD has no ID field — we join 290 of 325 listings by title alone

Quick answer Craigslist search pages ship two copies of every listing: a static HTML list, and a JSON-LD <script> block with images, currency, and geo-coordinates. The obvious move is to join them by ID. Don't — Craigslist's JSON-LD carries no shared identifier at all , not a bare post ID, not a URL, not a SKU. The only field both copies reliably share is the listing's title, and titles repeat. We joined by title through a per-title FIFO queue and measured it recovering 290 of 325 listings (89%) end-to-end on a captured 298-item page. That number is the ceiling of what a title-only join can do on this page shape — plan your field completeness around it, don't assume 100%. Why can't you just match the JSON-LD by ID? 🧩 When we built the Craigslist Multi-City Listings Scraper , the first design assumed what almost every JSON-LD block on almost every e-commerce-shaped site provides: a productID , a sku , a url , an @id — something that lines up a JSON entry with its DOM counterpart deterministically. Live inspection of a captured Craigslist search page found none of those. Each itemListElement entry has exactly name , image , offers , @type , and a position field that looks like it should solve the problem — until you check it against the static list past the first ~18 entries, where some static-list rows have no JSON-LD counterpart at all and the position numbering drifts out of alignment. So the join key that's actually usable, live, is title — and titles aren't unique. The fix is a FIFO queue per title: walk the static <li> list in document order, and for each title pop the next unconsumed JSON-LD entry with a matching name. # actors/craigslist-listings-scraper/src/search_parser.py def _parse_ld_json ( tree : HTMLParser ) -> dict [ str , deque [ _LdEntry ]]: by_title : dict [ str , deque [ _LdEntry ]] = defaultdict ( deque ) for list_item in data . get ( " itemListElement " , []): entry = _ld_entry_from_item ( list_item ) title = list_item . get ( " item " , {}). get

2026-09-08 原文 →
AI 资讯

BBB.org's business data isn't in the HTML — it's in an analytics script tag

Quick answer BBB.org doesn't render business data into the HTML table it looks like it does. Both the search-results page and every business profile page embed the real data as one inline JSON blob — webDigitalData — sitting inside a <script> tag meant for analytics, not for you. The visible <dt> / <dd> list underneath it only carries the fields the analytics layer left out (accreditation date, years in business). If you scrape the DOM table and ignore the script tag, you'll get a name and maybe a phone number and nothing else. If you scrape the script tag and ignore the DOM, you'll get ratings and IDs but no address, no years-in-business, no website. You need both, merged, per business. Why does the DOM only have half the data? 🕵️ When we built the BBB Business Leads Scraper , the first pass assumed BBB profile pages worked like most directory sites: a template with labeled fields you css_first() your way through. That assumption survives for exactly four fields — address, accreditation date, years in business, and website — which live nowhere except a <dt> / <dd> definition list further down the page. Everything that actually matters for lead scoring — business name, BBB letter grade, accreditation status, phone number, the internal IDs BBB uses to build its own canonical URL — comes from a different place entirely: a webDigitalData object, wired into the page for BBB's own analytics vendor, that happens to be complete, well-formed JSON: # actors/bbb-business-leads-scraper/src/parsers/common.py WEB_DIGITAL_DATA_MARKER = " webDigitalData " def extract_web_digital_data ( html : str ) -> dict | None : marker_pos = html . find ( WEB_DIGITAL_DATA_MARKER ) if marker_pos == - 1 : return None brace_start = html . find ( " { " , marker_pos ) raw = _extract_balanced_json ( html , brace_start ) ... return json . loads ( raw ) That is not a regex grabbing {.*} between two markers — a naive non-greedy match snaps shut on the first stray } inside a nested object, which this blo

2026-09-08 原文 →