Gemini CLI로 간단하고 심플하게 설명을 받는 명령어
안녕하세요, 무능입니다.
오랜만입니다. 에너지를 모으고 있었습니다. 농담이고 그냥 게으름을 피웠을 뿐입니다. 죄송합니다.
그래서 너무 사소한 이야기지만, Gemini CLI가 출시되어서 CLI 사용자들에게는 희소식입니다.
저는 이것만.bashrc에 넣어봤습니다.
ghelp() {
(echo "이것을 설명해 줘" ; cat $1 ) | gemini
}
별다른 건 없지만 원래 브라우저를 한 번 거쳐서 코드 설명을 LLM에게 시키는 과정이 사라져서 편해졌습니다.
이런 경우라면
[curljs]
thepassenger:[haturatu]:~/git/curljs$ ghelp curl.js
이 코드는 [Puppeteer](https://pptr.dev/)라는 라이브러리를 사용하여 지정된 웹 페이지의 콘텐츠를 가져오는 Node.js 스크립트입니다.
아래에 코드의 각 부분이 무엇을 하는지 설명합니다.
1. **`const puppeteer = require('puppeteer');`**
* Puppeteer 라이브러리를 로드합니다. 이 라이브러리는 프로그램에서 Chrome 또는 Chromium 브라우저를 조작하는 데 사용됩니다.
2. **`(async () => { ... })();`**
* 이것은 '즉시 실행 비동기 함수'입니다. 코드 전체를 비동기 함수로 감싸서 내부에서 `await` 키워드를 사용할 수 있도록 합니다. `await`는 시간이 오래 걸리는 처리(브라우저 시작 또는 페이지 로드 등)가 완료될 때까지 기다리는 데 필요합니다.
3. **`const url = process.argv[2];`**
* 명령줄에서 전달된 세 번째 인수를 `url` 변수에 저장합니다.
* 예: `node script.js https://example.com`과 같이 실행했을 때, `process.argv[2]`에는 `https://example.com`이 들어갑니다.
4. **`if (!url) { ... }`**
* URL이 지정되지 않은 경우 오류 메시지를 표시하고, `process.exit(1)`로 스크립트를 비정상 종료시킵니다.
5. **`const browser = await puppeteer.launch({ headless: true });`**
* 새 브라우저 인스턴스를 시작합니다.
* `headless: true`는 브라우저 UI(화면)를 표시하지 않고 백그라운드에서 실행하는 설정입니다. 디버깅 시와 같이 브라우저 동작을 눈으로 확인하고 싶을 때는 `false`로 설정합니다.
6. **`const page = await browser.newPage();`**
* 시작된 브라우저에서 새 탭(페이지)을 엽니다.
7. **`await page.goto(url, { waitUntil: 'networkidle2' });`**
* 지정된 URL로 이동합니다.
* `waitUntil: 'networkidle2'`는 페이지 로드를 기다리기 위한 중요한 옵션입니다. 이는 네트워크 연결이 2개 이하가 된 후 500밀리초 동안 새로운 연결이 없는 상태가 될 때까지 대기합니다. JavaScript에 의해 동적으로 콘텐츠를 로드하는 현대적인 웹사이트(SPA 등)를 올바르게 표시하는 데 도움이 됩니다.
8. **`await new Promise(resolve => setTimeout(resolve, 5000));`**
* 페이지 로드가 완료된 후, 추가로 5초 동안 대기합니다.
* `networkidle2`만으로는 로드가 완료되지 않는 애니메이션이나 특정 작업 후에 표시되는 콘텐츠 등을 기다리기 위해 추가 대기 시간으로 삽입되었습니다.
9. **`const html = await page.content();`**
* 페이지의 완전한 HTML 콘텐츠를 가져옵니다. 여기에는 JavaScript에 의해 동적으로 생성된 모든 HTML 요소도 포함됩니다.
10. **`console.log(html);`**
* 가져온 HTML을 콘솔에 출력합니다.
11. **`await browser.close();`**
* 브라우저 인스턴스를 닫고 리소스를 해제합니다. 이를 잊으면 프로세스가 종료되지 않고 계속 남아있을 수 있습니다.
### 요약
이 스크립트는 **'명령줄에서 지정된 URL의 웹 페이지를 JavaScript 실행이 완료된 최종 상태로 가져와서, 그 HTML을 표준 출력으로 표시하는'** 처리를 수행합니다.
이는 단순한 HTTP 요청으로는 가져올 수 없는, JavaScript로 동적으로 렌더링되는 웹사이트(SPA 등)의 정보를 가져오고 싶을 때(웹 스크래핑 등) 매우 유용한 방법입니다.
이런 식으로 출력해 줍니다.
뭐, 그게 다지만요....