AI 资讯
Thin vs Thick Provisioning: Which One Is Actually Eating Your Datastore?
Thin vs Thick Provisioning: Which One Is Actually Eating Your Datastore? You just got an alert: your datastore is at 92% capacity. But when you check the actual VMs, they're barely using half the storage you allocated to them. Welcome to the most common source of confusion in virtualization storage — the gap between allocated and used . This comes down to how you provisioned your virtual disks in the first place. Thin Provisioning: Pay As You Go With thin provisioning, a 100 GB virtual disk doesn't actually consume 100 GB on your datastore right away. It grows as data is written to it. Create ten VMs with 100 GB thin disks, and if they're only using 20 GB each, your datastore shows 200 GB used — not 1 TB. This is why thin provisioning is the default choice for most environments today. It lets you overcommit storage and squeeze more VMs onto the same physical hardware. The catch: you must monitor actual datastore consumption, not just allocated capacity. If every VM suddenly starts writing more data than expected, you can run out of physical space even though your dashboards showed "plenty of room" based on allocated sizes. Thick Provisioning: Reserve It All Up Front Thick provisioning reserves the full disk size the moment you create it. There are two flavors: Lazy-zeroed : space is reserved, but blocks are only zeroed out the first time the VM writes to them. Faster to create, slightly slower on first write. Eager-zeroed : every block is zeroed at creation time. Slower to provision (a 500 GB disk can take a while), but delivers the most predictable, consistent I/O performance from the very first write. Which One Should You Actually Use? A simple rule of thumb: default to thin provisioning for general-purpose VMs — web servers, file servers, domain controllers, dev/test environments. Switch to eager-zeroed thick provisioning specifically for workloads where I/O consistency matters more than storage efficiency — databases, latency-sensitive applications, anything whe
开发者
Reverse Engineering Unknown File Formats with ImHex
submitted by /u/WerWolv [link] [留言]
AI 资讯
O dicionário que corrige acento errado sozinho
Um script meu corrige acentuação automática em português usando um dicionário de mais de noventa mil palavras. Ele existe justamente para consertar texto gerado por IA, que às vezes esquece acento. Só que hoje descobri que o próprio dicionário estava trocando "pele" por "Pelé" e "teve" por "tevê". O corretor não tinha bug de lógica nenhum. O dado dentro dele é que estava errado. Como um dicionário de correção vira fonte de erro O dicionário foi gerado a partir de uma lista ampla de palavras em português, mapeando a forma sem acento pra forma com acento correspondente. Para a maioria das palavras isso funciona bem: uma palavra comum sem acento tem sempre a mesma forma acentuada certa, sem exceção. O problema aparece em palavra que também é nome próprio. "Pele" sem acento é ambíguo: pode ser a palavra comum (pele, órgão do corpo) ou o apelido do jogador, que leva acento (Pelé). Na hora de montar o dicionário, alguma etapa do processo escolheu a forma acentuada como "a certa" para aquela entrada, sem checar que a forma comum, sem acento, é muito mais frequente no uso real. Mesma história com "teve" (passado do verbo ter) virando "tevê" (forma informal de televisão). Por que isso é mais perigoso que parecer Um erro de dicionário desse tipo não quebra nada visivelmente. O texto sai fluente, gramaticalmente correto, sem nenhum sinal de que uma palavra foi trocada por engano. Quem lê rápido não percebe. Isso é o oposto de um erro de sintaxe, que pelo menos avisa que algo está errado. A única forma de achar foi ler o texto gerado com atenção, palavra por palavra, depois de já ter rodado o corretor automático. O corretor não se autodenuncia. Onde traçar a linha entre corrigir e não mexer Nem toda ambiguidade é bug. Uma palavra genuinamente ambígua, tipo "e" (conjunção "e" vs verbo "é"), "esta" (demonstrativo vs verbo "está") ou "pais" (progenitores vs "país"), não tem solução de dicionário. Só quem lê a frase inteira sabe qual acento é o certo. Forçar uma escolha automática
AI 资讯
How LLMs Actually Work
submitted by /u/fagnerbrack [link] [留言]
AI 资讯
Stratagems #26: Lena Cut a Branch. The AI Got the Message.
Punish the branch. Deliver the message to the tree. — The 36 Stratagems, Point at the mulberry tree...
AI 资讯
Do Zero ao SOC: Por Que a Lógica de Programação é o Primeiro Passo na Cibersegurança?
A área de Cibersegurança atrai profissionais devido à complexidade das ameaças e à necessidade de proteção de infraestruturas críticas. No entanto, iniciantes costumam se perguntar por onde começar. A resposta estratégica envolve dominar a lógica de programação, o funcionamento de redes de computadores e os fundamentos dos sistemas operacionais. Compreender linguagens de programação, especialmente Python, permite que um analista de segurança compreenda a mecânica dos sistemas em vez de apenas operar ferramentas prontas. A lógica de programação desenvolve o raciocínio estruturado para a resolução de problemas. Na prática do dia a dia, a automação via scripts é fundamental para criar rotinas de verificação, tratar grandes volumes de dados e analisar eventos de segurança com rapidez. Além da programação, a navegação em ambientes Linux via terminal e o domínio dos protocolos de rede (como TCP/IP e o modelo OSI) formam a base necessária para a triagem de incidentes. Compreender como os dados trafegam e como as permissões do sistema operacional funcionam permite ao estudante visualizar o caminho que um ataque cibernético pode percorrer. A combinação entre a teoria de defesa cibernética (como os conceitos transmitidos pelo curso da Cisco Networking Academy) e o raciocínio lógico é o diferencial para quem busca ingressar em um Centro de Operações de Segurança (SOC). O mercado de tecnologia exige profissionais que saibam interpretar relatórios de segurança, analisar logs de eventos e propor medidas efetivas de mitigação. O aprendizado contínuo e a prática em laboratórios virtuais são essenciais nesse processo. Construir uma base sólida em algoritmos e redes transforma o estudo teórico em uma carreira sólida e preparada para os desafios reais da proteção de dados e da infraestrutura corporativa.
AI 资讯
The 5-Year Stress Debt Every Developer Is Running
You know technical debt. Code that works today but accumulates hidden costs over time. Shortcuts that seem reasonable in the moment and compound into architectural problems that take months to untangle. The kind of debt that doesn't announce itself until the system starts failing in ways that are expensive and slow to fix. Chronic stress works the same way. Every sprint crunch, every production incident at 11PM, every sustained period of pressure without adequate recovery — these aren't just experiences you have and move past. They're transactions against a biological account. And like technical debt, the interest compounds quietly until the system starts failing. Here's what the debt actually is, how it accumulates, and — most importantly — how to stop it before the refactor becomes mandatory. The Debt Accumulation Model javascript class StressDebt { constructor() { this.magnesium = 100 // % of optimal this.vitaminD = 100 // % of optimal this.omega3Index = 8 // % target this.HPARegulation = 100 // % of optimal this.prefrontalIntegrity = 100 // % of optimal this.dopamineBaseline = 100 // % of optimal } // called every week of unaddressed chronic stress accrue(stressLevel, coffeePerDay, supplementation) { // magnesium depletion this.magnesium -= stressLevel * 0.3 // cortisol burns magnesium this.magnesium -= coffeePerDay * 0.15 // caffeine accelerates excretion if (!supplementation.magnesium) { this.magnesium -= 0.5 // diet doesn't replace it } // downstream effects of magnesium depletion this.HPARegulation = this.magnesium * 0.9 // HPA loses regulator — cortisol response amplifies // vitamin D depletion (passive — no sun exposure) if (!supplementation.vitaminD) { this.vitaminD -= 0.3 // indoor work, winter, no replacement } this.dopamineBaseline = this.vitaminD * 0.85 // tyrosine hydroxylase requires vitamin D // omega-3 insufficiency (dietary) if (!supplementation.omega3) { this.omega3Index = 3.5 // western diet default } // neuroinflammation runs elevated at <6% /
开发者
Inside the TypeScript Checker: From Text to Types
submitted by /u/Happycodeine [link] [留言]
AI 资讯
The Whale Metaphor: How OOP's Four Pillars Actually Work in WordPress
In the age of AI engineering and vibe coding, almost nobody mentions OOP anymore. But what if children were never taught prefixes, roots, and suffixes — the architecture of words — or how a sentence is properly built? Will AI agents really be enough for the specialists of tomorrow, if those specialists never learned the grammar underneath? Dive into OOP in WordPress development practice → (original source, featuring the four whales example) Most WordPress developers learn Object-Oriented Programming the hard way: by staring at WP_Widget, WP_Query, or WP_Post and reverse-engineering why core is built the way it is. Textbooks explain encapsulation, abstraction, inheritance, and polymorphism with abstract diagrams that rarely survive contact with real code. Here's a different way to think about it — using a whale. A whale keeps its vital organs protected inside its body, dives into depths where the mechanics of survival are invisible from the surface, passes traits down to its calf, and adapts its behavior differently depending on the environment it's in. Swap "whale" for "class," and you've basically described the four pillars of OOP. Let's walk through each one with WordPress-specific code, then look at how the same principles scale from a five-page brochure site to an enterprise platform. Why OOP Matters in WordPress at All WordPress was procedural for most of its early life, and plenty of plugins still are. But once your project outgrows a handful of files, procedural code starts fighting you: global state leaks everywhere, the same logic gets copy-pasted into three different hooks, and a single typo in a variable name three files away breaks something unrelated. OOP fixes this by grouping data and behavior together into objects instead of scattering functions and passing arrays between them. WordPress core made this bet a long time ago — WP_Widget, WP_Query, and WP_Post are all classes — and the four principles below are the foundation that makes classes trustwort
产品设计
htmx ~ Building Critical Infrastructure with htmx: Network Automation for the Paris 2024 Olympics
submitted by /u/yawaramin [link] [留言]
开发者
Wrapping GTK4 in 800 lines of Clojure with Jolt
submitted by /u/yogthos [link] [留言]
AI 资讯
Reward Hacking in LLMs: When the Model Learns to Win the Game Instead of Doing the Job
Hello, I'm Shrijith Venkatramana, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. There is a strange thing that happens when you make an AI system very good at optimization. It starts finding solutions that look almost like bugs in reality. Give a boat-playing agent points for hitting objects, and it may learn to drive in circles forever rather than finish the race. Give a robot a reward for putting a block at a certain height, and it may discover that flipping the block upside down satisfies the measurement. Give a language model a reward for producing answers humans prefer, and it may learn that agreeing with humans is often more profitable than correcting them. And give an LLM access to the code that calculates its own reward, and researchers have observed something considerably more unsettling: in a controlled experiment, models that had previously learned simpler forms of specification gaming sometimes went on to modify the mechanism that generated their reward. ([Anthropic][1]) None of this requires the model to "want" anything in the human sense. The optimizer is simply doing its job. The problem is that we specified the job incorrectly . For developers building LLMs, agents, evaluators, and automated coding systems, this is one of the most important failure modes to understand. 1. The Basic Idea: You Asked for X, but Measured Y Suppose you're building a coding agent. What you actually want is: correct, robust, maintainable software But directly measuring that is expensive. So you give the agent a reward: +10 tests pass +1 code compiles +0.1 code is concise -5 tests fail This seems reasonable. But now the agent isn't actually being optimized for: "write correct software" It is being optimized for: "maximize this scoring function" Those are only approximately the same thing. That distinction
AI 资讯
I built a C library that avoids recomputing unchanged state — here are the reproducible benchmarks
Most performance optimization focuses on making each operation faster. HKD Kernel approaches a different question: What if most of those operations did not need to execute at all? I’ve been working on HKD Kernel, a native C library for exact sparse and incremental computation. The target workload looks like this: A large computation has already been evaluated. Only a small subset of the inputs changes. The dependency structure tells us which results can actually change. HKD recomputes those affected regions instead of repeating the entire calculation. The important word is exact. The optimized result must equal the result of full recomputation. What the benchmark measures The repository contains reproducible benchmarks comparing full recomputation with the HKD incremental path. Across the benchmark suite currently documented in the repository, the measured mean speedup is roughly 18,000x. That requires an important qualification: This does not mean HKD makes arbitrary programs 18,000x faster. It means that on workloads with sparse changes and reusable state, avoiding redundant computation can produce extremely large reductions in work. That distinction is important enough that I built the repository around reproducibility rather than a black-box benchmark claim. What HKD Kernel is not HKD Kernel: does not replace the macOS XNU kernel does not modify CPU microcode does not disable SIP does not change processor ALU hardware It is a user-space native computation library. Where I think this model is useful The workloads I’m most interested in include: dependency graphs incremental build systems large simulations with sparse updates optimization systems financial/risk recomputation logistics and scheduling cached numerical pipelines The real question is not “how fast is HKD?” It is: How much of your current computation is being repeated even though the inputs affecting it never changed? I’d especially like developers to try to break the benchmark assumptions or suggest w
AI 资讯
🔄 Loops in JavaScript
Imagine a teacher wants to greet 5 students: Hello Arun Hello Kumar Hello Ravi Hello Priya Hello Divya Without a loop, we need to write the same code multiple times. console . log ( " Hello Arun " ); console . log ( " Hello Kumar " ); console . log ( " Hello Ravi " ); console . log ( " Hello Priya " ); console . log ( " Hello Divya " ); Instead of writing the same type of code again and again, JavaScript provides loops . 🔄 What is a Loop? A loop is used to execute a block of code repeatedly. It helps us avoid writing the same code again and again. A loop continues running based on a condition or a collection of values . In simple words: A loop means repeating a task multiple times using code. For example: For every student: Print the student's name This is the basic idea of a loop. 🤔 Why Do We Use Loops? Loops are useful when the same task needs to be performed multiple times. For example, without a loop: console . log ( " Hello " ); console . log ( " Hello " ); console . log ( " Hello " ); console . log ( " Hello " ); console . log ( " Hello " ); Using a loop: for ( let i = 1 ; i <= 5 ; i ++ ) { console . log ( " Hello " ); } Output: Hello Hello Hello Hello Hello If the task needs to be performed 100 or 1000 times, using a loop is much easier than writing the same code repeatedly. 📍 Where Are Loops Used? Loops can be used in many situations, such as: Displaying a list of products Processing a list of students Reading values from an array Printing numbers Calculating marks Processing multiple records Repeating a task until a condition becomes false For example: For every product: Display the product ⏰ When Should We Use a Loop? A loop can be used when: The same task needs to be performed multiple times. For example: For every student: Display the student's name or: While the password is incorrect: Ask for the password again Different situations require different types of loops. 🔢 Types of Loops in JavaScript JavaScript provides different types of loops: for loop whi
开发者
Pattern in Number Spirals
submitted by /u/Nouman-Rahman [link] [留言]
开发者
Zod v4.5 adds schema compilation (3-9x faster validation)
submitted by /u/gajus0 [link] [留言]
创业投融资
Hollywood celebs are getting into microdrama apps
Several Hollywood celebs are ditching the massive eight-figure checks and exotic movie sets for a rising format: microdramas.
AI 资讯
Crossing Boundaries with Integration Events
How to turn internal domain facts into reliable contracts between bounded contexts. submitted by /u/deniskyashif [link] [留言]
AI 资讯
The Pipeline Worked. Then the Research Outgrew It.
About a year ago, I was building a terminal-based workflow manager called Glyph.Flow. It was mostly a learning project. I wanted to understand Python better, experiment with Textual, think about commands, state, configuration, logging, and all the small architectural decisions that suddenly appear when a script stops being a script. Somewhere between then and now, the workflows became a little more real. For my Master's thesis, I built a data pipeline to construct and process a cross-national research database from multiple sources. It had a clear purpose: take heterogeneous input data, transform it consistently, validate important assumptions, and produce the dataset I needed for the analysis. And it worked. But this is no longer enough. I am not rebuilding it because the original system failed. I am rebuilding it because the question changed: My Master's thesis needed a pipeline. My PhD will need research infrastructure. And I am slowly discovering that these are not the same thing. A pipeline can be finished There is something comfortable about building software for a well-defined research project. You know the research question. You know most of the variables you need. You know which datasets are involved. You can define the transformations, produce the outputs, validate them, run the analysis, and eventually say: Done. Of course, research is never really that clean. Data sources change. Weird edge cases appear. A country disappears from one dataset. Another source changes a variable name. An indicator turns out to mean something slightly different than you thought. But there is still a boundary around the problem. A PhD changes that boundary. Now I have to think about a system that may need to survive several years of research, new questions I have not formulated yet, datasets I have not discovered yet, and methodological decisions I will probably reconsider more than once. Suddenly, "Does it work?" becomes a surprisingly weak design criterion. The more useful
开发者
Coding a database proxy for fun
submitted by /u/der_gopher [link] [留言]