전체 글

개발환경

Mac에서 bits/stdc++.h 헤더 사용법

bits/stdc++.h를 사용하면 자주쓰는 헤더들을 한줄에 불러올 수 있어서 편하다. 하지만 bits/stdc++.h는 표준 헤더가 아니다. gcc를 컴파일러로 사용하는 경우 사용 가능하다 백준, 프로그래머스 등에서도 사용이 가능하다. 하지만 mac에서 사용하려면 별도 설정을 해줘야 한다. 1. 경로 확인 installedDir 뒤의 경로를 복사해준다. g++ --version 2. 설치 경로로 이동 InstalldeDir 경로에서 맨 마지막 /bin을 지우고 /include로 바꿔서 이동해준다. cd /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include 3. bits 폴더 생성 sudo mkd..

트러블슈팅

husky사용시 gerrit change-id 자동 생성 안되는 문제 해결법

husky, commitlint, lint-staged를 사용중인데 husky를 사용하면 원래있는 githook을 무시해버리는 문제가 있었다. 이때문에 gerrit의 change id가 제대로 생성되지 않았다. commit-msg파일 맨 및 줄에 아래 코드를 추가해주면 원래 있던 githook의 코드도 같이 실행된다. `git rev-parse --git-dir`/hooks/commit-msg $1 전체 코드 commitlint를 먼저 실행하고 원래있던 githook의 내용도 실행한다. #!/bin/sh . "$(dirname "$0")/_/husky.sh" npx --no-install commitlint --edit `git rev-parse --git-dir`/hooks/commit-msg $1

개발환경

Jenkins 폴더 변경사항 감지 하는 방법

Jenkins로 CI/CD를 할 때, 보통 git의 push이벤트가 트리거가 되어 빌드를 한다. 모노레포일때는 어떻게 해야 할까? turborepo등을 사용하기도 하지만 지금 내 개발 환경은 한 레포지토리에 java백엔드와 nextjs프론트가 함께 있기때문에 적절하지 않은 것 같았다. 알고보니 jenkins pipeline에서 지원하는 기능이 있었다. when과 changeset을 사용하면 된다. 공식문서 Jenkins의 표준 기능이며 별도 세팅이 필요하지 않다. stages { stage('build') { when { changeset "frontend/**"} steps { dir('./frontend'){ sh 'npm run build' } } } } 참고자료 https://stackoverfl..

Javascript/Typescript

isNan() Typescript에서 string 안됨

isNan()은 원래 javascript에서 string도 인자로 받을 수 있다. 문자열이 숫자로 변환될 수 있는지 판단해준다. 하지만, Typescript에서는 숫자만 인자로 넣을 수 있다. 해결방법 isNan(Number(str)) 형태로 사용하면 된다. let num = "123"; console.log(isNan(Number(num))); // true

개발환경

커밋 컨벤션을 강제하자 husky + commitlint + commitizen

팀의 커밋 컨벤션이 정해졌다. 이모지를 활용한 커밋 컨벤션인데 깃모지는 아니다. 익숙한 방식이 아니고 이모지도 입력해야하므로 CLI가 있으면 좋을 것 같다고 생각했다. 그래서 검색하다가 다른 좋은 패키지들도 알게되었다. { "scripts": { "commit": "git-cz" }, "config": { "commitizen": { "path": "@commitlint/cz-commitlint" } } } 커밋 컨벤션에 맞지 않게 커밋을 하려고 하면 에러를 발생시키는 방법이 있다. GitHooks 활용하면 된다. 하지만 githook은 공유하기 어렵고, 실수로 적용하지 않을 수도 있다는 단점이 있다. 그래서 githook을 적용하기 쉽게 해주는 Husky를 사용한다. 그리고 커밋이 컨벤션에 맞는지 확인..

회고록

싸피 특화 프로젝트 4일차 회고록

오늘도 싸피에서 다른 공식 일정들이 있었기 때문에 특별히 개발쪽으로 한 일이 딱히 없었다 그라운드룰을 설정하고 팀워크를 위한 활동이 거의 전부였다. 그래서 개발을 시작하기 전까지는 회고록을 매일 작성하지는 않을 계획이다.

회고록

싸피 특화 프로젝트 3일 차 회고록

Next.js에서 이미지 리사이징이 쉽다는 것을 알게 되었다 원래는 백엔드에 이미지 리사이징을 해달라고 요구했었는데 Next.js는 풀스택 프레임워크라서 그런 요청을 할 필요가 없어진 것 같다. 그냥 이미지 태그에 크기를 지정하면 그 크기만큼 리사이징된다. 하지만 요소 크기는 css가 우선 적용된다. useState를 사용하면 렌더링이 언제 되는지도 공부했다. 아직 프로젝트 기획단계인데 아이디어 내는게 정말 어렵다. 아이디어를 내면... 이미 있거나, 실현이 어렵거나, 규모가 안맞거나..

회고록

싸피 특화 프로젝트 1일 차 회고록

다시 기획의 시간이 왔다 역시 기획은 쉽지 않은 것 같다 그래도 팀원들의 아이디어가 좋은 것 같아서 다행이다 오늘 jenkins를 이용해 프론트 docker에 자동배포하는 것에 성공했다 수동으로 할 때는 docker tag도 바꿔주기 번거로웠는데 자동으로 하니까 tag도 빌드 번호를 바탕으로 자동으로 붙여줘서 편한 것 같다.

리즈(Liz)
localhost:5173