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

标签:#ev

找到 5411 篇相关文章

AI 资讯

Enhance your CSS Reset with your Design System

If you're starting a web project, you're probably starting with a CSS reset, and for most of us, that means reaching for a trusted community solution - dropping it in and moving on. If you're building a design system, though, that habit may be working against you. The existing solutions The community reset ecosystem is genuinely good. Each tool approaches the browser compatibility problem from a slightly different angle. Some examples include: Eric Meyer's Reset is a classic: it zeros out margins, padding, and font sizes across every element, giving you a completely blank slate. It's minimal and predictable, which made it influential. Normalize.css smooths over inconsistencies while preserving the ones that are actually useful. sanitize.css and modern-normalize continue that evolution - incorporating contemporary best practices like box-sizing: border-box , improved form element handling, and accessibility-aware defaults. The problem isn't that any of these are bad. The problem is that they're all deliberately, necessarily generic. They can't know anything about your typeface, your color palette, your spacing scale, or how your interactive elements should behave. That's by design - they're tools for everyone, which means they're perfectly tailored for no one. The problem If you're building a design system, generic is exactly what you don't want your reset to be. The moment you drop in one of these resets and start building, you find yourself doing a second round of work. You apply your typeface to body . You reset margins on headings. You make form elements inherit fonts. You define focus styles. You're re-resetting - applying your design language on top of a layer that just cleared out the browser's defaults and replaced them with... more defaults you'll override. Worse, that duplication doesn't stay in one place. Every component you build either re-declares these foundational styles or silently assumes they're already set upstream. You end up with either redundanc

2026-06-30 原文 →
AI 资讯

How a 24-Hour Freelance Project Landed Me a Job (Without an Interview)

Most developers expect to go through multiple interview rounds, coding assessments, or take-home assignments before getting hired. That wasn't my experience. I ended up working with the YouTuber I had admired for years without an interview, without an exam, and without even sending a resume. Here's how it happened. It Started Long Before the Opportunity I started freelancing when I was in Class 9. At first, it wasn't about building a career. I simply enjoyed creating websites and wanted to gain experience while earning some money. Over the years, I worked with different clients, solved different problems, and learned something from every project. Those freelance gigs taught me much more than writing code—they taught me how to communicate with clients, deliver on time, and take ownership of my work. The Opportunity A few months ago, one of my favorite YouTubers posted in his WhatsApp community that he was looking for someone to build a website. I happened to be a member of that group. As soon as I saw the message, I reached out and told him I could build it. Instead of spending time wondering whether I was "good enough," I decided to let my work answer that question. Building It in Under 24 Hours Once I received the project, I focused entirely on delivering it as quickly as possible without compromising quality. I completed the website in less than 24 hours. After reviewing it, he requested a few modifications. I implemented them immediately and delivered the updated version. At that point, I assumed the project was finished. The Unexpected Offer A few days later, he contacted me again. He had another web application that had been stuck because a previous developer couldn't complete it. He asked if I could take over. That conversation eventually turned into a job offer. No coding interview. No aptitude test. No technical assessment. Just trust built through delivering one project well. What I Learned Looking back, I don't think I got the job because I replied quickly

2026-06-29 原文 →
AI 资讯

Every Sanity page builder has the same bug

Every Sanity marketing site ends up with a page builder. An array of sections, an insert menu, a render loop that maps block._type to a component. You've built it. I've built it. We've all built the same thing. And every one of them ships with the same bug. You add a new section. You wire it into the schema. You add a renderer. You add a component. You add the type. And then — because there are five places to touch and you're a human — you forget one. The section renders blank in production. Or it never shows up in the insert menu. Or it fetches no fields because you missed the GROQ projection, so it renders as nothing at all. No error. No red. Just a hole on the page where a section should be. The annoying part isn't the bug. It's that you'll hit it again on the next project, in exactly the same way, because you rewrote the whole thing from scratch — again. The section tax Here's what "add a section" actually costs in a typical Sanity + Next.js page builder: Schema — a new *Section object type, registered in your schema index. GROQ — a new conditional in the page-builder projection so the block's fields actually come down. Component — the React component that renders it. Renderer map — an entry mapping _type → component. Types — the block variant in whatever union your frontend renders. Miss #2 and the block arrives empty. Miss #4 and it silently skips. Miss #5 and TypeScript shrugs because your union is hand-maintained and now lies. Three different failure modes, all of them quiet, all of them "works on my machine until it doesn't." Now look at those five places and ask: which of them is actually unique to your site? The component is. It's welded to your design system — your spacing, your tokens, your brand. Nobody can reuse it and nobody should. The other four are plumbing . "Look up _type in a map, call the renderer, keep the map in sync with the schema and the query." That code is byte-for-byte the same idea on every project you've ever built. So why is it livi

2026-06-29 原文 →
AI 资讯

Semantic HTML and Accessibility: Building Better Websites

Semantic HTML and Accessibility: Building Better Websites Introduction Semantic HTML is the practice of using HTML elements that clearly describe the purpose of the content on a webpage. Instead of using many <div> elements, semantic tags such as <header> , <nav> , <main> , <section> , <article> , and <footer> make the page easier to understand. Semantic HTML is important because it improves accessibility, helps search engines understand web pages, and makes code easier to read and maintain. Before: Non-Semantic HTML <div class= "header" > <h1> My Portfolio </h1> </div> <div class= "navigation" > <a href= "index.html" > Home </a> <a href= "about.html" > About </a> </div> <div class= "content" > <p> Welcome to my portfolio website. </p> </div> After: Semantic HTML <header> <h1> My Portfolio </h1> </header> <nav> <a href= "index.html" > Home </a> <a href= "about.html" > About </a> </nav> <main> <section> <p> Welcome to my portfolio website. </p> </section> </main> Accessibility Issues I Found 1. Images Missing Alternative Text Before: <img src= "images/profile.jpg" > After: <img src= "images/profile.jpg" alt= "Profile picture of Grace Loko" > Adding alternative text allows screen readers to describe images to users with visual impairments. 2. Navigation Was Not Semantic Before: <div> <a href= "index.html" > Home </a> <a href= "about.html" > About </a> </div> After: <nav> <a href= "index.html" > Home </a> <a href= "about.html" > About </a> </nav> Using the <nav> element helps assistive technologies identify the website navigation. 3. Form Inputs Had No Labels Before: <input type= "text" placeholder= "Your Name" > After: <label for= "name" > Name </label> <input type= "text" id= "name" name= "name" > Labels improve accessibility by helping screen readers identify each form field. Conclusion This accessibility audit helped me understand the importance of semantic HTML and accessible web design. By replacing non-semantic elements with semantic tags, adding image alt text,

2026-06-29 原文 →
AI 资讯

🚀 SoloEngine v0.3.0 Release — Checkpoint Mechanism & Message Queue

[v0.3.0] - 2026-06-29 🚀 Added Checkpoint Mechanism — ReActCore introduces three checkpoints during streaming: content_ended (after text content), before_tool_calls (before tool calls), and after_tool_calls (after tool calls), enabling precise interception and state synchronization of the execution flow. Message Queue System — Added a new MessageQueue class in run.py , supporting async enqueue, drain, and remove operations. Users can now queue messages while the LLM is running; queued messages are sent automatically after the current task completes. The frontend introduces a QueueBar component to display queued messages, with CSS spinning animation, single-line ellipsis, and hover-to-delete functionality. Queue Message Merging — MessageQueue.drain_all() now merges consecutive messages with the same name into a single message, preventing fragmented user input when multiple queue entries share the same sender. Queue WebSocket Events — The execution event protocol introduces three new event types: message_queued , queue_drained , and queue_returned ( useRunWebSocket.ts ). The frontend processes queue state updates in real time. Stop & Queue Integration — When the user clicks Stop, pending queued messages are returned to the input box via queue_returned . Checkpoint stops cleanly clear the queue and automatically start the next message. System Notification Messages — Introduced the SystemMessage type (with notification role) to separate error messages from assistant content. Errors are now rendered as independent notification bubbles, no longer embedded within assistant message cards. tiktoken Real-Time Token Estimation — ReActCore initializes a tiktoken encoder on startup for real-time token counting during streaming. Unknown models fall back to o200k_base . 🔧 Improved Custom Model Name Auto-Complete — The model name field in ModelManager has been upgraded from Select to AutoComplete , allowing users to type custom model names not in the predefined list. Message Block T

2026-06-29 原文 →
AI 资讯

Building a Legal AI Platform on Aurora DSQL and Vercel

I built this project as an entry for the H0: Hack the Zero Stack with Vercel v0 and AWS Databases Hackathon. #H0Hackathon Inspiration Justice moves slowly. I learned that firsthand as my family navigated a legal dispute. What struck me wasn't just the stress — it was that things were quite disorganised. Documents were paper-based or buried somewhere in emails. Updates came through WhatsApp messages. Simple documents took a really long time to draft and send. The system was fragmented and difficult to navigate. Companies like Harvey tackle document drafting well, but legal research tools and LLM wrappers can hallucinate case law, citing judgments that don't exist. I knew that if I was going to build something for this space, it had to be grounded in real, verifiable law. That led me to Laws Africa, which provides structured access to actual South African legislation and court judgments. I also noticed a problem that lawyers experience daily: the mechanical work. Logging into court portals to file a case. Hunting through OneDrive, Google Drive, and Dropbox for the right version of a document. Sifting through hundreds of emails to find something relevant to a matter. Onboarding a new client when the intake form is a PDF someone emails you. These are not AI problems. They are automation problems — and lawyers or their secretaries are doing them manually every single day. That became Agently. What Agently Does Agently is a legal workspace that handles the full lifecycle of a matter, from the moment a client submits an intake form to the day the case closes. Matter Management. Every client engagement lives in a structured matter. Documents, emails, notes, contacts, workflows, and AI conversations are all scoped to it. A lawyer can open a matter and immediately see everything relevant. AI Agent with Real Legal Research. The AI connects to Laws Africa's knowledge bases — South African legislation, court judgments, and municipal law — so research is grounded in actual legal

2026-06-29 原文 →
开源项目

These camera-free smart glasses made me feel like Tony Stark

Xgimi, the Chinese company known for its all-in-one smart projectors, is expanding its portfolio with a new line of screen-equipped smart glasses that first debuted at CES 2026. Unlike AR glasses from companies like Meta and Snap, Xgimi’s new privacy-focused MemoMind One skip cameras for a lighter and more discreet design that helps hide their […]

2026-06-29 原文 →
AI 资讯

Inside Target’s LLM-Based System for Semantic Matching in Marketing Forecast Pipelines

Target built a generative AI system to improve marketing campaign forecasting by retrieving and ranking similar historical campaigns. Using embeddings, vector search, and LLM ranking, it replaces rule-based workflows. Evaluation shows 75% top-1 and 100% top-3 coverage. The system reduces manual effort, improves consistency, and uses feedback loops to refine retrieval using campaign outcomes. By Leela Kumili

2026-06-29 原文 →
AI 资讯

What Actually Happens in the First Call With a US Team After Your CV Passes

You finally get the response. The CV cleared whatever filter it was up against, and now there is a calendar invite for a thirty or forty five minute call. Most developers treat this as the technical screen and prepare accordingly. They load up on system design questions, leetcode style problems, or deep dives into the stack listed in the job post. What actually happens in that first call is often lighter on code and heavier on whether the person on the other side can picture working with you week after week. The engineering lead or hiring manager is trying to answer a few practical questions the CV could not fully settle. Can this person explain their decisions without needing constant context? Do they push back on unclear requirements in a way that moves the conversation forward instead of creating friction? Do they already understand how remote contractor work tends to flow, or will every interaction need extra translation? The candidates who lose ground here rarely fail on raw technical ability. They lose it on rhythm and assumptions. Some over-prepare the technical side and under-prepare the part where they need to show how they handle ambiguity. Others treat every question as an interview question that demands a polished answer, when what the lead wanted was a working conversation. The call ends with a quiet sense that this person will need more hand-holding than the role allows. Timezone and async signals are another place people slip. When a candidate spends the call reassuring the other person that they can work US hours or that they are always available for meetings, it often lands as uncertainty. The reassurance backfires. Teams that hire contractors remotely have already accepted some timezone spread. What they want to hear is how you have made async work in the past, what you leave behind when you log off, and how you keep momentum without daily syncs. The calls that move forward feel like two people working a problem together. The candidate is not sitti

2026-06-29 原文 →
AI 资讯

Why I Built a JSON Toolkit That Never Touches a Server

Most of the time, when I need to inspect a complex JSON payload, I copy the raw string from my terminal or network tab, open a browser tab, and paste it into one of the many "JSON Formatter" sites that clutter the first page of Google. It’s a ritual we all do. We paste, we click "Format," and we wait. For small payloads, this is fine. But when you are debugging a massive API response, a deeply nested configuration file, or a large dataset, that ritual breaks down. The browser freezes. The site asks you to upload a file. Worse, many of these tools send your data to a server for processing. If that JSON contains API keys, user PII, or internal schema definitions, you are essentially trusting a third-party service with your proprietary data every time you hit "pretty print." I got tired of the latency and the privacy overhead. So I built JSONForge . The core premise is simple: do everything locally. No server-side processing. No file uploads. No network requests for the core logic. Everything happens in your browser, powered by WebGPU for heavy lifting and a small model that runs in your browser for schema inference. The WebGPU Advantage JSON parsing is computationally cheap for a modern CPU, but rendering and diffing large structures is not. When you have a 5MB JSON file, the DOM manipulation required to display it as a tree view can cause significant jank. By offloading the parsing and formatting logic to the GPU via WebGPU, JSONForge handles massive payloads without blocking the main thread. You can open a file, click "Pretty Print," and see the result instantly, even if the file is hundreds of kilobytes or larger. The UI remains responsive because the heavy computation is parallelized on the graphics card. This also means the tool works offline. If you are on a plane, or your internet drops in the middle of a debugging session, your toolkit doesn’t vanish. You can continue to diff, validate, and format without interruption. Schema Generation Without the Server Roun

2026-06-29 原文 →
AI 资讯

How to Turn Any Bootcamp Into Real Learning

We’ve all been there. You scroll through your feeds, see a flashy ad promising a high-paying tech job in 3 months, and think, “This is it. This is my golden ticket.” You buy the bootcamp, spend sleepless nights watching lectures, stack up a dozen colorful certificates on your LinkedIn, and then... nothing. No callbacks. No interviews. Just a lingering feeling of frustration and the nagging thought: Are bootcamps and online courses just a massive scam? I used to think so. When I was trying to break into tech, I bought courses like crazy. I collected certificates like they were Pokémon cards. Yet, my first real developer job didn't show up until five or six years later. And let me tell you a secret: it wasn’t the certificates that got me the job. It was because I finally figured out how to actually learn. The truth is, almost every bootcamp or course—even the mediocre ones—has something valuable to offer. The problem isn’t always the material; it’s how we interact with it. If you feel stuck in "tutorial hell," here is a positive, practical guide to changing your approach, reclaiming your time, and turning any learning material into real, career-changing expertise. 1. Curate Your Sources (Choose Your Battles Wisely) Before we talk about how to study, we need to talk about what to study. Even though you can extract value from almost any course, your time is highly valuable. Don't waste it on low-quality content. When choosing a course or bootcamp, look for these four green flags: The Instructor Has Real-World Mileage: Is the instructor a practitioner, or are they just reading the official documentation back to you? If they don't work with the technology daily, they won’t be able to explain the nuances, edge cases, and real-world trade-offs. A Project-First Curriculum: Avoid courses that are just endless lectures of "theory first, practice never." Look for curriculums that build actual applications. Good Pacing and Editing: We've all watched those tutorials where the ins

2026-06-29 原文 →
AI 资讯

How to Turn Any Bootcamp Into Real Learning

We’ve all been there. You scroll through your feeds, see a flashy ad promising a high-paying tech job in 3 months, and think, “This is it. This is my golden ticket.” You buy the bootcamp, spend sleepless nights watching lectures, stack up a dozen colorful certificates on your LinkedIn, and then... nothing. No callbacks. No interviews. Just a lingering feeling of frustration and the nagging thought: Are bootcamps and online courses just a massive scam? I used to think so. When I was trying to break into tech, I bought courses like crazy. I collected certificates like they were Pokémon cards. Yet, my first real developer job didn't show up until five or six years later. And let me tell you a secret: it wasn’t the certificates that got me the job. It was because I finally figured out how to actually learn. The truth is, almost every bootcamp or course—even the mediocre ones—has something valuable to offer. The problem isn’t always the material; it’s how we interact with it. If you feel stuck in "tutorial hell," here is a positive, practical guide to changing your approach, reclaiming your time, and turning any learning material into real, career-changing expertise. 1. Curate Your Sources (Choose Your Battles Wisely) Before we talk about how to study, we need to talk about what to study. Even though you can extract value from almost any course, your time is highly valuable. Don't waste it on low-quality content. When choosing a course or bootcamp, look for these four green flags: The Instructor Has Real-World Mileage: Is the instructor a practitioner, or are they just reading the official documentation back to you? If they don't work with the technology daily, they won’t be able to explain the nuances, edge cases, and real-world trade-offs. A Project-First Curriculum: Avoid courses that are just endless lectures of "theory first, practice never." Look for curriculums that build actual applications. Good Pacing and Editing: We've all watched those tutorials where the ins

2026-06-29 原文 →
AI 资讯

CKA Scenario 5 - Force nginx to TLS 1.3 with a ConfigMap edit + rolling restart (CKA Workloads)

Force nginx to TLS 1.3 An nginx server is accepting an old TLS version, and the exam wants it locked to TLS one point three. The config lives in a ConfigMap. The catch is that editing the ConfigMap alone changes nothing. Let's do it the way the CKA expects. 🎥 Watch the video: https://www.youtube.com/watch?v=rx-77YBw99w This is a CKA Workloads & Scheduling walkthrough. Every command below is real output from a live cluster, and you can reproduce the whole thing yourself (scripts at the end). The scenario An nginx-static Deployment serves HTTPS, and its server config comes from a ConfigMap named nginx-config. Right now it allows both TLS one point two and one point three. Your task is to allow only TLS one point three, then make nginx actually use the change, so that a TLS one point two request fails. nginx-static serves HTTPS from the nginx-config ConfigMap It currently allows TLS 1.2 AND 1.3 Restrict ssl_protocols to TLS 1.3 only A TLS 1.2 request to the Service must then fail How nginx, ConfigMaps, and rolling restarts fit together Two ideas drive this. First, ssl_protocols is an allow list; leave only TLSv1.3 and nginx rejects any older handshake. Second, a ConfigMap mounted into a pod updates the file on disk, but nginx only reads ssl_protocols when it starts. So you must roll the Deployment, with kubectl rollout restart, for the new value to take effect. Inspect the current state Start by seeing what is running and what the config says. The nginx-static Deployment, its Service on port four forty three, and the nginx-config ConfigMap are all here. Grep the rendered ConfigMap for the ssl_protocols line: it lists TLSv1.2 and TLSv1.3, so old clients still get in. $ kubectl -n nginx-static get deploy,svc,configmap NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/nginx-static 1/1 1 1 17h deployment.apps/tester 1/1 1 1 17h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/nginx-static ClusterIP 10.96.13.162 <none> 443/TCP 17h NAME DATA AGE configmap/kube-root-ca.

2026-06-29 原文 →
AI 资讯

Presentation: Million PDFs: Building a Modern Document Infrastructure with Rust and Typst

Erik Steiger discusses the operational pain of legacy PDF generation in regulated banking and manufacturing. He explains how transitioning from resource-heavy engines like Puppeteer and LaTeX to a serverless Rust architecture powered by Typst can drop render latencies below 2ms. He shares how applying Git and Docker concepts to template registries ensures ironclad compliance and rapid debugging. By Erik Steiger

2026-06-29 原文 →