본문 바로가기

분류 전체보기

(122)
리눅스 사용자 및 그룹 관리 1. 사용자 목록 조회 cat /etc/passwd 2. 사용자 추가 adduser -u 1000 [user] - 사용자 비밀번호 설정 passwd [user] - 사용자 그룹 추가 (추가 후 재로그인) sudo usermod -aG [group] [user] 더보기 * CentOS: sudo 명령어 안될 때 usermod -G wheel [user] - 사용자 삭제 userdel [user_id] 더보기 "userdel: user xxx is currently used by process yyy" 에러 발생시 killall -TERM -u [user] 명령어 실행 후 삭제 명령어 재실행 - 사용자 UID 변경 usermod -u 1001 [user] - 그룹 GID 변경 groupmod -g 1001 ..
[Realforce] 무접접 키보드 리얼포스 R1, R2, R3(BT) 총 리뷰 및 Realforce Connect 연결 방법 먼저 저는 키보드 전문가도 아니고 키보드에 관심있는 사람도 아닙니다. 그냥 일반인입니다. 리얼포스를 1세대, 2세대, 3세대 모두 사용해본 경험을 살려 느낀점을 이야기 해보려고합니다. 마냥 좋다고 칭찬하는 글이 아니기 때문에 참고 정도만 하시고 키보드 구매에 도움이 되길 바라겠습니다. 리얼포스 정착기 (TMI - 노관심이면 구분선 아래로) 키보드에 관심은 없지만 그동안 저에게 맞는 키보드를 찾기 위해 은근히 갈아 탔습니다. 처음엔 가격, 다음은 디자인, 마지막엔 타건감.. 경험할 때마다 원하는바가 달라졌고 그렇다보니 정착을 못했습니다. 지인이 처음에 리얼포스를 추천해줬을 때 이제 막 사회생활을 시작한 터라 아무리 좋다고해도 몇십만원하는 키보드를 구매하기엔 가격적 부담이 컸습니다. (솔직히 키보드 좋아봤자..
의존성 production install 후 next build 시 next.config.mjs 에@next/bundle-analyzer 라이브러리 못찾는 에러 해결 production install 은 devDependencies에 나열 된 패키지를 설치하지 않는 것으로, # npm npm install --production # yarn yarn install --production 하지만 위와 같이 하게된다면 next.config.mjs 에서 next build 시 에러가 발생한다. 이유는 @next/bundle-analyzer 를 찾을 수 없기 떄문이다. @next/bundle-analyzer 는 devDependencies 에 있기 때문에 production install 시에 설치되지 않는다. 물론 해당 의존성을 dependencies 로 옮기면 바로 해결 될 문제이겠지만, 이런 하드한 방법을 사용하고 싶지 않았다. 일단 에러가 나는 이유는 next.con..
nextjs 에서 antd 5.x 와 tailwind 적용 tailwind 적용은 https://tailwindcss.com/docs/guides/nextjs 참고 보통 antd 에 tailwind 를 추가로 쓰려고하는 사람은 아마? 대부분 간단한 스타일링을 할 때 (ex: padding, margin 등) inner style은 싫고, 그렇다고 css module 이나 css-in-js 를 사용해 파일을 추가로 생성하는게 부담스러울 때 쓰려고 한다고 생각한다. ※ tailwind 만으로 컴포넌트를 백프로 제작하길 원한다면 쿨하게 antd와 같은 UI 디자인은 버리기를 추천(UI Design 이중화 방지!)한다! tailwind 기본 설정이 끝났다면 tailwind.config.js 에 딱 두줄만 추가해주면 된다. /** @type {import('tailwin..
[Nodejs] phantomjs 사용하여 pdf 파일 추출하기 소스코드 const phantom = require('phantom'); const fs = require('fs'); const fileUtils = new FileUtils(); const uploadFolder = `${process.env.UPLOAD_FOLDER_SMTP_ATTACH}${orderInfo.orderNo}`; const flag = await fileUtils.mkdir(uploadFolder); const attachFile = orderInfo.orderNo + '.pdf'; const instance = await phantom.create(); const page = await instance.createPage(); const file = 'invoicePaid.html'..
[Nodejs] package-lock.json 의존 설치 npm ci 명령어 npm install을 할 때 lock 파일에 의존하여 설치하도록 해야 협업시 버전 관련 문제를 줄일 수 있다. package-lock.json 또는 yarn.lock 파일이 무조건 존재해야하며 pakage.json 과 lock 파일의 dependencies가 맞아야한다. lock파일에 의존하여 설치를 하고싶을 때 아래의 명령어를 실행한다. node_modules을 지우고 실행한다. npm npm ci yarn yarn install --immutable --immutable-cache --check-cache * install 오류 발생시 더보기 error https://registry.yarnpkg.com/xml-utils/-/xml-utils-1.0.2.tgz: Integrity check fail..
Docker 실시간 로그 확인하기 도커 컨테이너에서 발생하는 로그를 확인해야 할 때 docker logs --tail 20 -f [컨테이너명]
next-auth 를 활용한 jwt 인증 및 refresh 토큰 순환 next-auth는 사실 공식홈페이지에서도 소개된 것처럼 서버리스를 지원하도록 처음부터 설계된 오픈소스 인증 솔루션이다. 하지만 실무에서 서버리스로 개발하는 경우는 드물다. 그럼에도 필자가 next-auth를 도입해보게 된 이유는 프론트엔드에서 페이지 라우트별로 접근을 보다 쉽게 제한할 수 있으며, 그래도 상당히 나쁘지않은 보안적인 측면을 기본적으로 보다 쉽게 제공해주는 느낌을 받았기 때문이다. 예를 들면, 서버를 통해 accessToken을 넘겨받은 뒤, 해당 accessToken이 만료가 된다면 서버에서는 api 호출이 되지 않을 것이다. 하지만 각 라우트는 별도의 작업이 없다면 해당 페이지에 접근할 수 있게된다. 물론 HOC(High Order Component)나 각 페이지를 래핑하는 Provid..
타입스크립트에서 코드상수 객체를 통한 코드 타입 만들기! 필자는 서버API 를 통해 응답받는 데이터 중 code 데이터들에 대한 값 비교와 같은 일을 직관적으로 작성해서 추 후 유지보수 때 가독성을 높이기 위해 code 상수를 만들어서 관리하는 편이다. 예를 들면 서버에서 응답받는 상태값(stateCd) 이 001 이라는 값이라고 가정해보면 if (result.stateCd === '001') { alert('유형1'); } 와 비슷한 코드로 작성할 것이다. 하지만 추 후 다른 개발자가 유지보수를 하거나, 오랜 시간이 지난 후에 본인이 직접 봐도 001 이 어떤 값인지 헷깔리는 경우가 많기 때문에 상수로 만들어서 가독성을 높이는 경우가 많이 있을 것이다. 예를 들면, // 1. 객체 프로퍼티 const STATE_CD = { type001: '001', typ..
[Windows] 프로세스 강제 종료 하기 (taskkill) 1. 강제종료를 위한 port의 PID 조회 netstat -ao | findstr [port] 2. taskkill로 강제종료 taskkill /f /pid [pid]