전체 글 42

pnpm의 symlink, hardlink, hoisting 알아보기

공식문서 링크: https://pnpm.io/ko/symlinked-node-modules-structure1. npm과 pnpm 차이 비유npm은 프로젝트마다 필요한 짐(패키지)을 전부 새로 복사해서 트럭에 실어줌.→ 똑같은 짐도 프로젝트마다 다 따로 실어야 하니까 공간 많이 차지하고, 시간 오래 걸림.pnpm은 모든 짐을 공용 창고에 한 번만 넣어두고, 각 프로젝트에는 링크만 걸어줌 (하드 링크라고 함).→ 똑같은 짐을 여러 번 옮길 필요가 없어서 공간 절약되고 빠름.예시 상황project라는 앱이 있고, 여기에 foo라는 라이브러리를 설치했는데foo는 내부적으로 bar라는 라이브러리를 사용pnmp install foo@1.0.0 생기는 일 (foo는 bar를 의존성으로 가짐)1. 실제 라이브러리 코..

조급함은 악에 가깝다.

조금전 웹사이트의 버전업을 진행했다. 동작하기는 하는데 왜 되는지 정확히 잘 모르겠다. 원인을 파악할 겨를이 없다. 일단 되니까 배포를 진행한다. 기능 하나를 배포했다는 뿌듯함과 함께 참아왔던 화장실로 향한다. 10분 뒤, 화장실에 간 사이 슬랙 이슈 채널에 스레드가 올라온다. 강력한 느낌표들과 함께 웹사이트에 문제가 있다는 사업부 관계자들의 외침이 올라온다. 메인페이지가 테스트용 페이지로 잘못 뜬다고 한다. 결제 페이지는 한국어가 아니라 일본어가 나온다고 한다. 이전 일본 대상으로 사이트를 오픈했을 때의 코드가 섞여 들어간 것 같다. 아 이런 오늘 물 한잔하지 못하고 일했는데 사고가 나다니. 내가 너무 조급했지 더 검토하고 천천히 할껄, 화장실에서 뛰쳐나와 자리로 달려간다.때로는 잘못된 방향으로 가고 ..

에세이 2025.03.16

결심보다 행동을: 헬스장을 나오며 든 생각

1. 퇴근 후 헬스장에 오면 무념무상으로 운동을 하게 된다. 몸무게를 늘리고 싶기에 주로 무거운 바벨을 든다. 세트 간 휴식 시간에는 힐끗힐끗 몸좋은 사람들을 구경한다. 그러다 거울 속에서 눈을 마주치면 민망한 마음에 서둘러 세트를 시작한다. 저마다 피곤한 몸을 이끌고 오겠지만 이곳에는 왠지 모를 활기가 있다. 점점 들 수 있는 무게가 늘어가면서 성취감도 느낀다. 그래서 헬스장에 오는 것을 좋아한다.2. 퇴근 후 헬스장을 쉽사리 갈 수 있는 것은 아니다. 일단 너무 피곤하다. 지금 운동을 가면 다음날 몸살이 날 거 같은 확신이 들 때도 있다. 회사에서 머리를 너무 많이 써 중추신경계가 모두 무너진 날이 그렇다. 내가 다니는 헬스장은 저녁 11시까지인데 문 닫을 시간에 가까워질수록 고민이 커진다. 이걸 가..

에세이 2025.02.16

슬랙에 GCP run 배포 성공 여부 알림 보내기

깃헙 액션으로 gcp run에 배포를 하고 있었고 성공여부를 슬랙 메세지로 받고 싶었습니다. 전체 코드는 게시글 마지막에 첨부되어 있습니다. 우선 단계별로 진행 과정을 확인해시면 이해하는데 도움이 되리라 생각합니다.1. 슬랙 앱 기본 셋팅우선 배포시작 알림 메세지를 슬랙에 보내봅시다. 배포가 완료되고 나면 이 메세지에 o , x 이모지로 성공 여부를 표시하려고 합니다. 배포시작 메세지를 보내는것은 curl명령어를 통해 슬랙 앱 api를 호출하면 되는데요. 우선 슬랙 앱을 만들어야겠죠?- https://api.slack.com/apps 이곳에서 슬랙 api 앱을 생성할 수 있습니다. 앱이 생성되면 토큰을 설정하고 권한을 부여합니다. 아래 이미지에서 토큰생성과 권한을 참고해주세요.OAuth 토큰 확인권한 설..

카테고리 없음 2025.01.30

react native kakao login 에러 해결

react-native-kakao-login 라이브러리를 적용하던 중 ios 에서 access 토큰을 받아오지 못하고 아래와 같은 에러로그가 찍혀서 해결한 과정입니다. - Error: The operation couldn’t be completed. (KakaoSDKCommon.SdkError error 2.) 1. 카카오 디벨롭퍼에서 플랫폼 ios에서 번들 ID 등록이 되어 있는지 확인하기. - 번들 ID 는 xcode의 general탭에서 identity를 보면 확인할 수 있고 수정도 가능하다. 2. 카카오 디벨로퍼 간편가입 메뉴에서 ON으로 되어 있는지 확인하기

react-native 2023.10.03

개발자 원칙을 읽고

"개발자 원칙"은 테크리더 9명이 더 나은 개발자로 살아가기 위한 원칙과 철학을 9챕터로 나누어 담은 책이다. 덕업일치를 넘어서 - 박성철 챕터에서 기억하고 싶은 내용 동기 벡터에서 기대되는 성과와 내가 일하는 동기 그래프가 가장 기억에 남는다. 결국 내가 일하는 동기를 기준으로 나의 성과를 만들어낼 수 있다면, 지금 내가 옳은 방향으로 잘 일하고 있다는 측정 도구로 사용해볼 수 있을 것 같았다. 소감 나는 어떤 일을 하고 어떻게 살 것인가에 대해 나온 많은 책이 있지만 개발자로서의 고민이 담긴 글은 처음이었다. 같은 개발자여서 더 당연히 더 흥미가 갔다. 무슨 일을 하면 행복할지 그리고 개발자가 되면 정말 행복할까에 대해 취준생 때 많이 고민 했지만 직장인 개발자가 되고나서는 이러한 고민들에 대해서 소..

카테고리 없음 2023.05.07

공통컴포넌트 any 대신 제네릭을 사용해볼까?

아래와 같이 공통 컴포넌트에서 onSelect의 param을 any로 정의하는 것에 대한 문제를 해결하고 싶었다. // SelectField.tsx (공통 컴포넌트) interface Props { ... onSelect?: (param: any) => void; } const SelectField = (props: Props) => { return( ) } 첫번째 방법 (Not OK) onSelect의 제네릭 타입을 param에 넘겨주는 방법을 시도 했다. 에러는 없으나 Form.tsx에서 제네릭이 any로 추론되어 적용되었기 때문에 올바른 방법이 아니다. 또한 onSelectSettlementPeriodType라는 함수를 실행할때에는 타입을 넣어주어서 의미가 있겠지만 props로 넘겨만 주고 실행은 ..

react 2023.04.02

[RN] 자동으로 android emulator 가 켜지지 않을때

https://reactnative.dev/docs/0.65/environment-setup 위의 리액트 네이티브 환경설정 가이드대로 준비를 마쳤다면 npx react-native run-android 명령어를 통해 메트로 서버가 켜지는 동시에 에뮬레이터가 자동으로 켜져야 한다. 에뮬레이터가 켜지지 않을 경우 다음과 같은 순서로 잘못된 부분을 찾아볼 수 있을 거 같아서 정리한다. 1. 현재 리액트 네이티브 버전에 맞는 환경변수가 .zshrc에 추가되어 있는지 확인해보자. 예를 들어 0.65 공식문서의 경우 추가하라는 변수가 아래와 같지만, export ANDROID_HOME=$HOME/Library/Android/sdk export PATH=$PATH:$ANDROID_HOME/emulator export..

react-native 2022.05.16

[RN] AutoHeightWebview crash with navigation

react-native-webview가 있는 페이지에서 react-native-navigation으로 페이지가 이동할때 실제 디바이스에서 앱이 죽는 이슈가 있어서 해결방법을 찾아보았다. 우선 이 문제는 많은 RN 개발자들이 겪는 문제로 이미 해결방법이 크게 두가지로 나와 있었다. webview에 style={{ opacity: 0.99 }} 를 넣어야 하거나, androidLayerType="software"를 속성으로 넣는 방법이다. androidLayerType은 androidHardwareAccelerationDisabled가 Deprecated되고 대체되어 사용되어지는 속성이니 참고로 알아두자. 처음에는 webView의 속성으로 androidLayerType="software" 을 넣어서 테스트를..

react-native 2022.05.10