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

标签:#cli

找到 309 篇相关文章

AI 资讯

ClickHouse 26.8 LTS: 57 Breaking Changes Since 26.3

If you run ClickHouse in production, you're probably on 26.3 LTS. And now 26.8 LTS has been announced, which means the LTS-to-LTS upgrade conversation starts again. Here's the thing most release posts skip: this is not a one-release hop. Going from 26.3 LTS to 26.8 LTS means crossing 26.4, 26.5, 26.6 and 26.7 as well. Every breaking change in those four releases applies to you, and some of the ones most likely to ruin your day aren't in 26.8 at all. So instead of writing another "here are the 26.8 features" post, I wanted to write the thing I'd actually want before scheduling this upgrade: what breaks, what silently changes, what order to do things in, and what you get for the trouble. A note on release timing As of writing (27 August 2026), 26.8 has been announced but is not fully released yet. The release branch is cut and versioned (v26.8.1.1-lts), but the tag and Docker images have not been published yet, and the upstream changelog still marks the 26.8 section as in progress. By the time you read this, the tag has probably landed. Check for yourself: curl -s https://raw.githubusercontent.com/ClickHouse/ClickHouse/master/utils/list-versions/version_date.tsv \ | awk -F '\t' '$1 ~ /^v26\.8\./ {print "26.8 is released - newest: " $1 " (" $2 ")"; f=1; exit} END {if (!f) print "26.8 not released yet"}' version_date.tsv is the list ClickHouse maintains of every released version and its date, so this is the most direct answer available - no auth, no rate limit, nothing to download. As of writing it prints 26.8 not released yet . Worth knowing: the Docker image will lag whatever that command tells you. The Docker Official Images repo trails the GitHub tags by a few patch versions - clickhouse:lts currently resolves to 26.3.20.7 even though 26.3.24.4 has already shipped. So don't treat a missing image as evidence the release hasn't happened. Either way, the timing works in your favour. Historically ClickHouse LTS releases pick up several patch releases quickly - 26.7 had

2026-08-28 原文 →
AI 资讯

Is Slate Auto’s new electric truck the EV Americans need?

EVs account for under 10% of total new-vehicle sales in the US, and the numbers are declining. From a climate perspective, that’s pretty dismal, especially because the transportation sector is the single biggest source of greenhouse-gas emissions in the country. One thing that could help turn that around? Slate Auto’s new truck—a vehicle that seems…

2026-08-27 原文 →
AI 资讯

Being a mom is hard — the heat is making it harder

It's 8:52 AM and 86 degrees Fahrenheit (30 Celsius) where I live in Southern California. My husband just came back from a morning outing with our four-month-old. "How was the botanic garden?" I ask him. "It was okay. It was just too hot," he tells me. I didn't expect us to spend so much of […]

2026-08-27 原文 →
AI 资讯

Fzf com Tmux - integração e pop-ups

1. Retomando: o que é o Fzf Na primeira parte desta série vimos o que é o fzf, como instalá-lo e como usá-lo direto no shell com Ctrl+R , Ctrl+T e Alt+C . Quem também usa tmux no dia a dia ganha um segundo nível de integração: o fzf pode rodar dentro de janelas flutuantes (pop-ups) do próprio tmux, sem interferir no layout de painéis já aberto, e servir de seletor para operações do próprio tmux — trocar de sessão, de janela, de painel, matar processos em outro painel etc. 2. Por que integrar Fzf com Tmux Sem integração, usar o fzf dentro de uma sessão tmux funciona normalmente, mas cada busca ocupa o painel inteiro: se o objetivo é só escolher um arquivo ou trocar de branch rapidamente, o conteúdo do painel (um editor, um servidor rodando) é temporariamente coberto e é preciso "voltar" depois. Além disso, o tmux tem sua própria lista de coisas que fazem sentido filtrar de forma fuzzy — sessões, janelas, painéis — e não há um binding nativo do tmux para isso. O fzf-tmux , incluído na instalação do fzf, resolve o primeiro problema: roda o fzf em uma janela sobreposta (pop-up ou split temporário) que desaparece assim que a seleção é feita, sem afetar o conteúdo do painel original. Combinado com bindings customizados no tmux.conf , também resolve o segundo. 3. fzf-tmux: pop-ups nativos fzf-tmux é um wrapper de shell em torno do fzf que aceita as mesmas opções, mais flags de posicionamento e tamanho da janela sobreposta: # pop-up centralizado, 80% da largura e 60% da altura do terminal fzf-tmux -p 80%,60% # split na parte de baixo do painel atual, ocupando 40% da altura fzf-tmux -d 40% # split lateral à direita, ocupando 50% da largura fzf-tmux -d 50% -r A flag -p (disponível a partir do tmux 3.2, que suporta display-popup ) é a mais usada hoje: cria uma janela verdadeiramente flutuante, sobreposta ao conteúdo do painel, que não reorganiza o layout existente — diferente do -d , que faz um split real e temporariamente redistribui o espaço entre painéis. # substitui o Ctrl

2026-08-26 原文 →
AI 资讯

Fzf - o que é, como instalar e onde usar no dia a dia

1. O problema que o Fzf resolve Quem vive no terminal conhece a cena: Ctrl+R para buscar um comando no histórico, mas a busca é linear e só mostra um resultado por vez; cd para um diretório profundo, mas é preciso lembrar (ou digitar) o caminho inteiro; git checkout para uma branch, mas primeiro é necessário rodar git branch e copiar o nome exato. Em todos esses casos, o gargalo é o mesmo: escolher um item entre muitos, digitando cada vez mais texto até sobrar só um. O fzf (fuzzy finder) resolve isso de um jeito genérico: ele pega qualquer lista de linhas — histórico de comandos, arquivos, branches, processos, o que for — e transforma essa lista em um filtro interativo, digitado em tempo real, onde não é preciso acertar a grafia exata nem a ordem das letras. Basta digitar pedaços do que se lembra e o fzf ordena os resultados por relevância. 2. O que é o Fzf Fzf é um filtro de linha de comando escrito em Go, de código aberto, mantido por Junegunn Choi. Ele não sabe nada sobre arquivos, git ou processos — a única coisa que ele faz é ler linhas da entrada padrão ( stdin ) e devolver, na saída padrão ( stdout ), a linha (ou linhas) selecionada interativamente. Essa simplicidade é o que o torna tão versátil: qualquer comando que produza uma lista de texto pode ser "encanado" ( | ) para dentro do fzf. # a ideia básica: qualquer lista vira um menu interativo ls | fzf history | fzf git branch | fzf ps aux | fzf Na prática, o fzf raramente é usado sozinho dessa forma — o valor real aparece quando ele é integrado ao shell e a outras ferramentas, o que este artigo cobre a partir da próxima seção. 3. Instalando o Fzf O fzf está disponível nos principais gerenciadores de pacote: # Debian/Ubuntu sudo apt install fzf # Fedora sudo dnf install fzf # Arch Linux sudo pacman -S fzf # macOS (Homebrew) brew install fzf Também é possível instalar via git, o que traz um script auxiliar de configuração dos atalhos de shell (usados na próxima seção): git clone --depth 1 https://github.com/j

2026-08-24 原文 →
AI 资讯

Shipping Stock CLIs as Subprocess Instead of Static-Linking SDKs

I'm building yyzTools, which bundles 9 third-party engines (OpenSSL, FFmpeg, ImageMagick, pdfcpu, Aria2, 7-Zip, RapidOCR, Everything...). I chose to spawn them as subprocesses rather than static-link their SDKs. Here's why—and the cost. The conventional approach When your app needs OpenSSL crypto, FFmpeg video processing, ImageMagick image ops—you reach for the SDK. Link libssl, link libav*, link libMagick. One binary, no external deps, fast function calls. It's the textbook answer. I did the opposite. yyzTools ships the stock CLI binaries (openssl.exe, ffmpeg.exe, magick.exe, pdfcpu, aria2c, 7z) and spawns them as subprocesses. The C++ layer is a thin loop: build args → CreateProcess → read stdout → wrap as JSON → return. It doesn't know what -gravity southeast or sm4-cbc means. It just passes the algorithm name through. Why I went this way Upgrades without recompiling This is the big one for a desktop app. OpenSSL ships a CVE, or adds sm2/sm3/sm4 support in 3.x. If you've static-linked, you recompile the whole app, run full regression, re-release, and every user reinstalls. With the subprocess model, I drop in a new openssl.exe. Zero C++ changes. The update is a few-MB delta, not a full reinstall. For a product where users won't tolerate reinstalling for a library bump, this is the deciding factor. No symbol conflicts OpenSSL, zlib, libpng—multiple libraries want to own these symbols. Static linking them all into one binary is a recipe for "which inflate did I just call?" With subprocess CLIs, each tool brings its own dependencies in its own process. No conflict. Transparent supply chain openssl version, ffmpeg -version—auditing which version of each tool is live is trivial. It's an independent binary. Far easier than digging symbols out of a statically-linked blob. Free crash isolation If ffmpeg.exe misbehaves, it exits non-zero and my host wraps that as an error. My main process keeps running. A static-linked bug can take down the whole app. The process boundary

2026-08-23 原文 →
开发者

why some people use neovim

I'm use neovim in cli like in my home but im not use Ide before in my live my first try pc is arch linux and neovim So I think I'm the best person to ask what is special in neovim 1: is so lightweight use ram is just 50-20 mb ram 2: you can config anything in lua language 3: open into terminal ssh protocol edit in code into server 4: vim keybinding like Vim / Neovim Keybindings Cheat Sheet Navigation (Normal Mode) h / j / k / l : Move Left / Down / Up / Right w / b : Jump forward / backward by word e / ge : Jump to end of current / previous word 0 / ^ / $ : Go to start of line / first non-blank char / end of line gg / G : Go to first line / last line of file { / } : Jump to previous / next paragraph Ctrl + u / d : Scroll Half-page Up / Down Ctrl + b / f : Scroll Full-page Up / Down Editing & Insert Mode i / I : Insert before cursor / at start of line a / A : Append after cursor / at end of line o / O : Open new line below / above current line u : Undo Ctrl + r : Redo . : Repeat last editing command Cutting, Copying & Pasting x : Delete character under cursor dw : Delete word dd : Delete (cut) line d$ / D : Delete from cursor to end of line yy / Y : Yank (copy) line yw : Yank word p / P : Paste after / before cursor Search & Replace /pattern : Search forward for pattern ?pattern : Search backward for pattern n / N : Jump to next / previous match * / # : Search word under cursor forward / backward :%s/old/new/g : Replace all occurrences in file :%s/old/new/gc : Replace all occurrences with confirmation prompt Visual Mode v : Character-wise visual mode V : Line-wise visual mode Ctrl + v : Block-wise visual mode y : Yank selection d : Delete selection > / < : Indent / Outdent selection Text Objects (Inside / Around) ci" : Change inside quotes ( "..." ) ca" : Change around quotes (includes quotes) di( : Delete inside parentheses da( : Delete around parentheses yi{ : Yank inside curly braces Buffers, Windows & Tabs :w : Save file :q : Quit buffer :wq / :x : Save and quit

2026-08-23 原文 →
AI 资讯

The next big thing in hydrogen could be underground

There’s a hunt for new sources of hydrogen, and the gas (or at least the right conditions to make it) could be hiding beneath our feet. Hydrogen can be used as a fuel in everything from large trucks to planes to steelmaking. It’s often hailed as a climate solution because when burned, it produces water…

2026-08-20 原文 →
AI 资讯

Hands-on: dedicated Lumpcode daemon

Lumpcode is a git-first loop manager : a small CLI that runs long agent campaigns over your own repo, in reviewable slices. Git is the gate (one PR at a time) and the source of truth (what is left is read from remote history, not a distant database). You describe the campaign once, merge what is good, and the next tick continues with the rest. A lump is one campaign under .lumpcode/lumps/<name>/ . Each context is one isolated unit of work: one branch, one PR. You can run a tick by hand, or leave a daemon on a machine that stays on. This article is that dedicated-daemon path. You author on your laptop. A second clone, that you do not develop in, runs the scheduler. When a lump lands on the primary branch, the worker picks it up. The argument for why loops should plug into git is Codemods grew a brain. Our tooling didn't. . 1. Requirements The dedicated clone is a checkout you do not develop in. Put it on a remote machine if you want it to run forever. Pre-flight hard-resets that tree. You need: Git origin with fetch and push A coding agent CLI on PATH ( cursor-agent , copilot , claude , …), already logged in Node 22+ Nothing else. No extra service to stand up. Install the /lumpcode skill so your agent has current docs while you set this up and write configs: npx skills add lumpcode/skills Use /lumpcode in the session when you hit a config or CLI question. 2. Install the CLI On both machines: npm install -g @lumpcode/cli lumpcode --version 3. Laptop: project setup, shared mode From your day-to-day repo: lumpcode project-setup --primaryBranch main Use your real integration branch instead of main if that is what you merge to. .lumpcode/local.json is gitignored and per machine. On the laptop it should be: { "mode" : "shared" } Shared mode never touches this checkout. Runs go to ~/.lumpcode/project-copies/<projectName>/ . Install @lumpcode/cli-utils and @lumpcode/recipes into this repo now , before the first push. Later TypeScript lumps import them from the project's node

2026-08-20 原文 →
AI 资讯

Support networks aim to help kids through the polycrisis

Sometime in the late 2000s, Pim Sullivan-Tailyour was sitting in the back of a car, headed toward her great-grandmother’s tiny town in the south of Thailand. She watched big mountains pass by out the window. She was just six years old but was about to be hit by an adult-size realization. “They were just quarried…

2026-08-20 原文 →
AI 资讯

How to Fix 'command not found' (Without Reinstalling Everything)

Adapted from the Command Line Essentials Companion Guide . You install something, open a fresh terminal, type the command, and get bash: python3: command not found — or on Windows, 'python3' is not recognized as an internal or external command . The installer said it finished successfully. You can probably even find the program in your applications folder. And yet the terminal insists it doesn't exist. The instinct at this point is usually to reinstall, or install a second copy from somewhere else, hoping one of them "takes." That almost never fixes it, because reinstalling doesn't address what's actually wrong. What the error is actually telling you When you type a command, the shell doesn't scan your whole computer looking for it. It checks a specific, ordered list of directories — stored in an environment variable called PATH — and stops at the first match it finds. command not found doesn't mean the program doesn't exist anywhere on your machine. It means none of the directories in that list happen to contain it. That distinction matters, because it splits into three genuinely different problems: A typo. gerp isn't a command; grep is. This is the most common cause by a wide margin, and the easiest to rule out first. It isn't installed at all. The program genuinely doesn't exist on this machine yet. It's installed, but not somewhere the shell is looking. This is the one that catches people off guard — the software is sitting on disk, correctly installed, just outside every directory PATH currently checks. Reinstalling only ever fixes cause 2. If your actual problem is 1 or 3, a second install just gives you a second copy of a program that was never the issue. The fix, step by step Check for a typo first. Read the command back character by character. It sounds too simple to be worth a step, but it resolves this error more often than everything else combined. Confirm whether it's installed at all , independent of whether the shell can currently find it: which pytho

2026-08-20 原文 →