| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- react
- SCSS
- react env
- icon
- nextjs .env
- typescript react
- bootstrap
- github
- styled components
- git lab
- dart 변수
- API 토큰
- There isn’t anything to compare
- next.js css
- ngrok설치
- nextjs
- fetch
- npm styled-reset
- gitaction
- ngrok실행
- Git
- rewrites
- input type=file
- API token
- github io
- CSS
- createGlobalStyle
- next.js
- getModifierState
- react typescript
- Today
- Total
목록전체 글 (144)
꾸준히 성장하는 개발자
평소에는 AWS EC2 서버에 .pem 키 파일로 접속하는 방식만 사용해왔다.그런데 유지보수 중인 프로젝트에서 배포가 필요했고, 해당 서버는 비밀번호 기반 SSH 접속 방식이었다.배포 스크립트를 자동화하려면 SSH 접속 시 비밀번호를 자동으로 입력해줘야 했고, 이를 해결하는 방법을 찾게 됐다.방법 1. sshpass 설치sshpass는 SSH 접속 시 비밀번호를 자동으로 입력해주는 도구다.스크립트에서는 아래처럼 사용할 수 있다.sshpass -p "비밀번호" ssh user@host "명령어"sshpass -p "비밀번호" scp file.tar.gz user@host:~/path/macOS 설치 방법macOS에서는 기본 brew로 설치가 안 되고 별도 탭을 추가해야 한다.brew install hudo..
운영 중이던 서비스에서 어느 순간부터 모든 사용자에게 동일한 에러가 발생하기 시작했다.특이한 점은 새로 배포한 코드가 전혀 없었다는 것이다.로그인은 정상적으로 되는데, 보호된 페이지로 이동하는 순간 400 Bad Request 가 발생했다. 이번 글은 그 원인을 추적하고 해결한 과정을 정리한 내용이다.사용 스택Next.js 14 (App Router)NextAuth (JWT 전략)AWS EC2 + PM2 + nginx외부 포털 SSOiframe + postMessage 로 토큰 전달1. 증상현상은 단순했다.로그인 성공보호된 페이지 진입 시 즉시 400 Bad Requestnginx 기본 에러 페이지 출력에러 메시지는 다음과 같았다.400 Bad RequestRequest Header Or Cookie T..
GitHub Actions에서는 별도의 설정 없이 ${{ }} 문법만으로 다양한 컨텍스트 변수에 접근할 수 있다. 이 글에서는 실무에서 자주 사용하는 핵심 컨텍스트를 정리하고, 바로 활용 가능한 패턴까지 함께 정리한다.1. github 컨텍스트워크플로우를 트리거한 이벤트와 실행 환경 정보를 담고 있다. 가장 많이 사용하는 핵심 컨텍스트다.주요 변수변수설명예시github.ref_name브랜치 또는 태그 이름main, devgithub.ref전체 ref 경로refs/heads/maingithub.sha커밋 해시 (전체)abc1234ef...github.event_name트리거 이벤트push, pull_requestgithub.actor실행 유저usernamegithub.repository리포지토리 이름org..
GitHub Actions self-hosted runner에서 pnpm install, next build를 돌리다 보면 인스턴스 RAM이 작을 때 OOM(Out Of Memory) 으로 프로세스가 죽는 경우가 있다. 스왑은 실제 RAM을 늘리는 건 아니지만, 일시적으로 메모리 압박을 완화해 빌드가 끝까지 가게 도와준다. 스왑은 디스크를 쓰기 때문에 느려질 수 있다. 근본 해결은 인스턴스 타입 상향이지만, 비용·긴급 대응으로 스왑은 자주 쓰는 방법이다. 사전 확인1) 메모리free -hSwap이 0이고, 빌드 중 OOM이 났다면 스왑 추가를 검토한다. 2) 디스크 여유 (루트 볼륨)스왑 파일은 보통 /swapfile로 루트 디스크에 만든다. 4GB 스왑을 만들려면 여유 공간이 4GB 이상 있는지 확인한..
1. 초기 설정 & claude.md 작성법프로젝트 루트에서 시작하며, /init 명령어로 claude.md 파일을 자동 생성claude.md는 프로젝트별 설정 및 명령어, 규칙 등을 정의하는 핵심 문서claude.md 작성 시 고려사항글로벌 설정 (~/.claude/claude.md)과 프로젝트별 설정 분리절대 규칙, 아키텍처, 빌드 명령어, 도메인 컨텍스트, 코딩 컨벤션 등 포함트리거 키워드 설정으로 자동화 플로우 등록 가능팀 공유는 claude.md 커밋을 통해 Compound Engineering(복합 엔지니어링) 실현 2. 키보드 단축키 & 네비게이션Shift+Tab: Plan Mode와 Accept Mode 간 전환Escape: 현재 작업 즉시 중단Escape × 2: 입력된 내용 삭제 후 ..
이번에 모바일 웹을 진행하면서 크롬에서 내려받을수 있는 PWA(Progressive Web App, 프로그레시브 웹앱)을 설정하는걸 진행 PWA 홈 화면에 앱 아이콘으로 설치 가능브라우저 UI 없이 앱처럼 실행오프라인 또는 저속 네트워크에서도 동작 가능푸시 알림 지원 가능 위 기능들을 사용하기 위해 설정해야 하는 것은 아래와 같다 HTTPS 환경Web App ManifestService Worker 1. next-pwa 설치Next.js에서 Service Worker를 쉽게 적용하기 위해 next-pwa를 사용한다 yarn add next-pwayarn add -D @types/minimatch minimatch TypeScript 프로젝트에서 minimatch 타입 오류가 발생하는 경우가 있어 아래..
