프로그래밍⚡️ 68

proxmox 설치하기 (feat: ventoy usb)

서버로 쓰던 컴퓨터 CPU에 문제가 있어 부품을 모두 갈고 하는 김에 proxmox os로 서버 컴퓨터를 리뉴얼(?) 해봤습니다. 🛠️ 하드웨어 리뉴얼 1.  CPU일단 VM이든 컨테이너든 여러 개를 돌려야하기 때문에 코어 수가 높아야 된다고 해서 6코어를 알아봤습니다. 근데 가격이 생각해둔 예산을 훨씬 웃돌아서 4코어로 다시 찾아봤고, 4코어는 중고 기준으로 5만원 내로 괜찮은게 많더라고요. 하나 더 고려한 것은 CPU에 내장 그래픽이 내장된 제품으로 찾아봤고 최종적으로 AMD의 2200G로 선택  - AMD 라이젠 3-1세대 2200G (레이븐 릿지)당근에서 2만원에 구매   2. 메인보드AMD cpu를 샀기때문에 당연히 amd 메인보드를 알아봤습니다. 메인보드는 중고로 사기에 고장 위험도 있고해서..

vite 빌드 case 에러와 html2pdf.js 버전 오류

오전까지만 해도 잘 되던 빌드가 오후에 갑자기 에러가 발생했고 이것을 해결하는 과정을 타임라인에 따라 정리했다. 1. vite 빌드 시 case 에러  머지 후 CICD가 잘 돌다가 갑자기 에러가 발생했다. [vite:esbuild-transpile] Transform failed with 1 error:ERROR: Unexpected "case" 분명 로컬에서 빌드할 때는 에러가 발생하지 않았는데 말이다.일단 CICD가 도는 yml 파일의 명령어를 체크해봤다. //bitbucket-pipelines.yml... script: - npm install -g pnpm@9.1.1 && pnpm install && pnpm run build-dev...  빌드 될 때마다 pnpm 9.1.1 버전을 설치하..

커서(Cursor) IDE 사용기

gpt를 사용하다가, 코파일럿을 사용하다가 최종적으로 Cursor(커서)만 사용하고 있는 요즘. 커서의 마술 같은 성능에 놀라기도 하고 무섭기도 하고; 어쨌든 많은 도움을 받고 있는데요. 커서에게 어떤 도움을 받고 있는지 블로그로 남겨봅니다. Cursor간단하게 소개하자면 커서는 AI를 탑재한 IDE이며, vscode 기반이기 때문에 vscode 사용자라면 누구나 손쉽게 적응할 수 있습니다.https://www.cursor.com/ CursorBuilt to make you extraordinarily productive, Cursor is the best way to code with AI.www.cursor.com  사용법사실 사용법이랄게 크게 없습니다. 대부분의 기능은 vscode와 동일하다고 보시..

pending 된 api 요청 중도 취소하기

모바일 웹에서 프로젝트를 만들며 api 요청 시간이 조금 소요되는 api가 있습니다. 문제는 이 api 요청 중에 다른 페이지로 이동하면 요청이 pending 상태에 계속 머물게 된다는 것인데요. 아래 사진으로 설명해보겠습니다. API 요청 pending[홈]에서 요청했던 plcProduction이라는 api 요청이 다른 페이지로 이동해도 여전히 pending입니다. 이것이 왜 문제가 되냐하면, 유저가 페이지를 빠르게 여러번 이동하면 pending 요청이 쌓이게됩니다.만약 빠르게 4번을 왔다 갔다 한다면 4개의 pending이 쌓이게 되겠죠? 이를 해결하기 위해 찾아보니 axios에서는 CancelToken을 제공한다는 것을 알았습니다. axios CancelToken 적용기존 api 요청 코드..

콘웨이의 인생 게임은 어떤 소리를 만들어낼까?

콘웨이 게임이라고 불리기도하는 인생 게임(Life game)을 아시나요? 1970년 에 처음 소개된 게임인데요. 수학자 '존 호튼 콘웨이'가 고안해낸 게임이기에 '콘웨이의 인생 게임'이라고도 부릅니다.콘웨이의 인생 게임이 게임의 규칙 간단합니다. 바둑판 같은 수많은 칸이 있고, 칸에 색이 칠해져있다면 살아있는 세포(Cell)이며 색이 없다면 죽은 세포입니다. 게임을 시작하면 처음 임의 칸 몇 개가 검은색으로 칠해져있고 이 1세대 세포가 규칙에 따라 다음 세대 세포로 태어나거나 죽습니다. 이 과정에서 세포는 전혀 예상치 못한 결과로 이어지기도하며 일정한 패턴을 만들기도 합니다. 자세한 규칙은 생략하고 어떤 게임인지 영상을 첨부하도록 하겠습니다.   콘웨이 게임에서 찾은 의미콘웨이 게임은 단순간 게임을 넘어..

npm 라이브러리 등록하기, 오픈소스에 기여해 봤습니다

한창 오픈소스 문화에 관심을 가졌을 때 무작정 npm에 라이브러리 하나를 등록했었습니다. 한국 욕설을 * 표시로 바꾸는 라이브러리인데요. 욕설 json 파일을 불러와 반복문으로 필터하는 간단한 기능입니다. 문제는 json 파일을 import하는 과정이나 라이브러리르 import하는 과정에서 module 설정을 제대로 이해하지 못해 다운로드 해도 사용할 수 없는 상태였습니다. 그렇게 방치된지 8개월이 지나고, 급! 생각나서 리팩토링 해봤습니다. 오픈소스 라이선스제가 만든 라이브러리는 다른 오픈소스를 수정하여 재배포한 것인데요. 오픈소스라고 마구 퍼다 나를 수 있는 것은 아닙니다. 오픈소스에도 제약의 강도에 따른 라이선스가 존재하는데요. 크게 MIT, BSD, GPL 정도가 있습니다. NPM 라이브러리에도..

맥북으로 우분투 부팅 USB 만들기 +usb 강제 초기화

서버 컴퓨터에 우분투를 설치하기 위해 맥북으로 우분투 부팅 USB 만들어 봤습니다. Rufus 같은 간편한 이미지 라이팅 소프트웨어도 있지만, 터미널로 직접 이미지 파일을 가공(?)하고 USB에 넣은 과정을 공유합니다. 1.  USB 포맷우선 USB를 포맷합니다. 우분투는 4G를 넘지 않기 때문에 Format 유형을 MS-DOS(FAT32)로 했습니다. 처음에 MAC OS Extended로 포맷 후 우분투 부팅 USB로 만들었더니 우분투 설치까지는 되었으나, 실행이 되지 않아 두번째는 MS-DOS(FAT32)로 해봤습니다. (정확히 이 문제인지는 모르겠지만 MS-DOS(FAT32)로 부팅 후에는 우분투 설치에 성공했었습니다.)   2. 우분투 설치 파일 다운로드우분투 다운로드 링크https://ubunt..

피그마 variables 활용 및 토큰화 하기

작년에 피그마 디자인 시스템을 토큰화한 후 자바스크립트로 옮기는 방법을 포스팅했었다. 하지만 그동안 피그마도 많은 업데이트가 있었고 새로운 기능이 출시되며 포스팅했던 과정대로 되지 않을 것이다. 오늘은 그것을 대체할 수 있는 방법과 피그마의 local varialbles 기능으로 이것저것 테스트해 본 것을 글로 옮겨 적어 본다. Local Variables나온 지 꽤 된 기능이지만 제대로 활용을 못하고 있었는데, 살펴보니 거의 반 코딩이나 다름 없었다. (잘 활용하면 디자인 시스템을 코드로 옮기기 정말 편할 것 같은 느낌). 피그마에서 빈 board를 클릭하면 오른쪽 패널에서 Local variables를 확인할 수 있다.   변수(variable) 지정들어가보면 Create variable이 있고, 4..

IntelliJ 서버를 종료해도 Port가 종료되지 않는 경우

인텔리제이에서 서버를 종료하고 창을 닫았는데도 서버가 살아있는 경우가 있다.서버가 살아있다는 것은 port 또한 계속해서 사용하고 있다는 말.그렇다면 새롭게 서버를 키기 위해 port를 바꿔야하는 불편함이 있다. 그런 경우 아래 실행중인 port를 찾아서 종료하는 방법이 있다. Port 강제 종료하는 방법1. cmd 접속, 끄고 싶은 port를 사용하는 프로세스를 찾는다.lsof -i :8050 이게 안 되면, netstat로 시도 해보시길netstat -ano | findstr :8050 2. 위 명령어를 사용하면 해당 포트를 사용하는 프로세스의 정보를 보여주며, 프로세스의 PID를 확인할 수 있다.3. 확인한 PID를 사용하여 프로세스를 종료한다.kill -9  💡 kill -9 ?kill -9 ..

express에서 api 요청 병목 현상 해결하기 connection pool

출시 날, 컨퍼런스 날, 갑자기 프로그램이 정상 작동하지 않는 경험 있으신가요? 얼마 전 정부과제 최종 감리 날 제가 만든 프로그램이 작동하지 않는 아찔한 일이 있었습니다. 로그인 후 대시보드 화면이 나와야 하는데 무한 로딩이 걸려버립니다. 무한까지는 아니었지만 api 요청 후 평균 1분 20초 정도 후에 response가 왔었으니, 사용자 입장에서는 무한이겠죠? 백엔드 서버를 재기동 시키면 다시 정상적인 속도로 돌아왔지만 새로고침으로 재요청할 때마다 50초, 1분 30초, 2분 기하급수적으로 늘었습니다. 이미 감리에서 프로그램이 무한 로딩걸려 작동하지 않았기 때문에 버스는 떠나갔고, 소 잃고 외양간 고치기겠지만 뒤늦게라도 문제를 해결하기 위해 서치해 봤습니다. 문제를 파악해 보니 처음 대시보드에서 요청..