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

标签:#vs

找到 248 篇相关文章

AI 资讯

Cursor v/s VS Code v/s Windsurf: Which IDE Makes Developers More Productive?

A deep dive into the 3-way battle for the developer's desktop—comparing AI depth, flow state, autonomous agents, and real-world productivity. Three years ago, choosing a code editor was simple: you downloaded VS Code, installed your favorite syntax theme, added a few extensions, and got to work. Today, developer tooling has undergone a seismic shift. AI isn't just an extension sitting in a sidebar; it's driving entire workflows, editing dozens of files simultaneously, and executing complex engineering tasks. Enter the primary contenders dominating the developer landscape: VS Code (+ GitHub Copilot): The battle-tested industry titan with unmatched ecosystem depth. Cursor: The pioneer of the AI-native fork, built specifically for flow state and multi-file orchestration. Windsurf: Codeium's AI-first editor featuring autonomous flow state agents and deep context tracking. If you're trying to figure out which editor will give you or your engineering team the highest return on productivity, here is a practical, data-informed breakdown. The Architectural Divide: Plugins vs. AI-Native Forks Before comparing feature lists, it helps to understand the underlying architecture: VS Code remains an extension-first model. The core editor is unchanged, while GitHub Copilot operates alongside it as an assistant. Cursor and Windsurf are VS Code forks. Their creators modified the editor at an architectural level to give the AI direct access to your local workspace, terminal, file system, and git context. This distinction dictates how each editor feels when you're in the middle of a complex coding session. 1. Inline Autocomplete & Flow State When writing code line-by-line, friction is the enemy of productivity. Cursor Famous for its ultra-fast multi-line predictions. Cursor predicts not just the next token, but your next probable edit location across nearby lines. It keeps you in a continuous "flow state" where hitting Tab feels almost telepathic. Windsurf Features "Supercomplete" inlin

2026-08-04 原文 →
AI 资讯

Deploying code-server for VS Code on Ubuntu 24.04

code-server is the open-source project that runs full VS Code including extensions, integrated terminal, Git, IntelliSense — on a remote server, accessible from any browser. This guide deploys it on Ubuntu 24.04 with Docker Compose, fronted by Traefik for automatic HTTPS. Prerequisites: an Ubuntu 24.04 server (1GB RAM / 2 vCPU minimum), a domain A record (e.g. code.example.com ), Docker and Docker Compose installed. Set Up the Project $ mkdir -p ~/vscode-server/ { project,config,local,letsencrypt } $ cd ~/vscode-server project — your editable workspace config — code-server settings/extensions local — user-specific data letsencrypt — Traefik's ACME certificate storage Find your UID/GID and add yourself to the docker group: $ id $USER $ sudo usermod -aG docker $USER Write the Compose File $ nano docker-compose.yml services : code-server : image : codercom/code-server:latest container_name : code-server user : " UID:GID" # Replace with your user's UID and GID environment : - PASSWORD=SECURE_PASSWORD # Replace with a strong password - DOCKER_USER=LINUXUSER # Replace with your username volumes : - ./project:/home/coder/project - ./config:/home/coder/.config - ./local:/home/coder/.local networks : - internal restart : unless-stopped labels : - " traefik.enable=true" - " traefik.http.routers.code-server.rule=Host(`CODE.EXAMPLE.COM`)" # Replace with your domain name - " traefik.http.routers.code-server.entrypoints=websecure" - " traefik.http.routers.code-server.tls.certresolver=myresolver" - " traefik.http.services.code-server.loadbalancer.server.port=8080" traefik : image : traefik:latest container_name : traefik ports : - " 80:80" - " 443:443" volumes : - /var/run/docker.sock:/var/run/docker.sock:ro - ./letsencrypt:/letsencrypt command : - " --providers.docker=true" - " --providers.docker.exposedbydefault=false" - " --providers.docker.network=internal" - " --entrypoints.web.address=:80" - " --entrypoints.websecure.address=:443" - " --entrypoints.web.http.redirections.entr

2026-07-31 原文 →
AI 资讯

Protect your application from npm supply chain attacks with tinyNpm!

tinyNpm is a vs code extension that helps protect you from supply chain attacks, stale packages, and bloated code! I had been using package.json version keepers for quite some time but after the big supply chain attack i thought they would be the perfect place to add in some security. The idea is just to provide the latest package number x days old. This will help prevent most of the danger in supply in chain attacks. It will also remove the ^ if you have it so you can better control what version of a package your application is using. To be more security focused it gives general hints in the hover menu to help keep an eye on the packages you have installed. These hints include warnings for staleness, high dependency count, and number of downloads. Since all of this is something you can get through the npm api, I called it tinyNpm You can download it on the marketplace

2026-07-31 原文 →
AI 资讯

Compilando Brainf*ck para a JVM, parte 1: o interpretador

Quando eu decidi aprender como a JVM funciona por dentro, eu precisava de uma linguagem simples o suficiente pra não atrapalhar o aprendizado. Algo onde eu pudesse focar na mecânica do compilador sem me perder na complexidade da linguagem fonte. Brainfuck foi a escolha óbvia. Esse é o primeiro post de uma série de três onde a gente vai construir, do zero, um compilador que transforma código Brainfuck em bytecode JVM executável. Sem dependências externas, sem framework, só Node.js puro. No final da série, você vai ter um compilador que gera arquivos .class válidos que rodam direto no java . O código completo está no GitHub . Nesse primeiro post, a gente vai construir o interpretador - que é a base pra tudo que vem depois. O que é Brainfuck Brainfuck é uma linguagem de programação esotérica criada em 1993 por Urban Müller. Ela tem 8 comandos . Oito. E ainda assim é Turing-completa - ou seja, em teoria, você pode computar qualquer coisa que qualquer outra linguagem computa. O modelo de execução é simples: Uma fita de memória com 30.000 células, cada uma armazenando um byte (0-255) Um ponteiro que aponta pra célula atual Entrada e saída (stdin/stdout) Os 8 comandos: Comando O que faz + Incrementa o valor da célula atual - Decrementa o valor da célula atual > Move o ponteiro uma célula pra direita < Move o ponteiro uma célula pra esquerda . Imprime o valor da célula atual como caractere ASCII , Lê um byte da entrada e armazena na célula atual [ Se a célula atual é zero, pula pro ] correspondente ] Se a célula atual não é zero, volta pro [ correspondente Qualquer outro caractere é ignorado - o que significa que você pode escrever comentários livremente no meio do código. Um exemplo simples Pra imprimir a letra "A" (código ASCII 65), você precisa colocar o valor 65 na célula e usar . : +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ . São 65 sinais de + seguidos de um . . Funciona, mas é feio. Uma forma mais elegante: ++++++++ [ > ++++++++ < - ] > +. O qu

2026-07-29 原文 →
AI 资讯

Why Cursor Writes IDOR Into Your API Routes (CWE-639)

TL;DR AI editors add a login check to your API routes but skip the ownership check, so any logged-in user can read another user's data by changing the ID in the URL (CWE-639, IDOR). It happens because tutorials treat "authenticated" as if it means "authorized," and the AI learned from those tutorials. The fix is one line: scope every lookup to the current user instead of trusting a raw ID from the request. I asked Cursor to build an endpoint that returns an invoice by ID. It gave me clean code. Auth middleware on the route, a database lookup, a JSON response. It ran on the first try. Then I logged in as a different test user and changed the number at the end of the URL. Invoice #1001 belonged to someone else. I got the whole thing back: amount, line items, billing address. No error, no warning. Just another user's private data on my screen. That is IDOR, an Insecure Direct Object Reference, and it is one of the most common holes I find in AI-generated APIs. The frustrating part is that the code looks secure. It even has an auth check. It just checks the wrong thing. The Vulnerable Code The endpoint below is broken because it confirms you are logged in but never confirms the invoice is yours. findById takes the ID straight from the URL and returns whatever it finds. // CWE-639: authenticated, but no ownership check app . get ( ' /api/invoices/:id ' , authenticate , async ( req , res ) => { const invoice = await Invoice . findById ( req . params . id ); res . json ( invoice ); }); The authenticate middleware does its job. It proves the request comes from a real, logged-in user. What it does not prove is that this particular user has any right to invoice :id . Change the ID, get someone else's record. Increment it in a loop and you can walk the entire table. Why This Keeps Happening AI editors confuse authentication with authorization because almost every tutorial they trained on does the same thing. Authentication is "who are you." Authorization is "are you allowed to

2026-07-29 原文 →