본문으로 건너뛰기

2023.07.22

· 약 16분

0. 일상

  • "타이탄의 도구들" 책은 거의 다읽었고 "아주 작은 습관의 힘" 책을 사서 보고있는 중이다. 이건 e 북으로 사서 리브2로 보는중. "타이탄의 도구들" 책은 또 한 번 읽고 싶다. 인생에 대한 생각과 행동을 많이 바꿔준 책이다.
  • 아! 저번 일기 때 말한 테스트관련된 건 동료분들께 공유했고 원레포 통합되면 테스트를 적극 도입하기로 했다. 얏호~ 🥳

1. GitHub Enterprise로 옮기고 Actions 트러블 슈팅

좋은점

  • public github보다 runner 성능이 좋아 엄청 빠르다.
  • 인스턴스에 한 번 설치되면 인스턴스 날라가지 않는 이상 재설치가 필요없어져서 속도가 빠르다.
    • playwright는 테스트 돌리기전 browser를 설치해야하는데 public github에서는 크로미움 하나 설치하는데 30s 걸리는데 GHES에서는 4s 걸린다.
  • 전체적인 속도는 1m 30s ~ 2m 30s -> 30s 로 줄어들었다.

안좋은 점

  • runner 개수가 한정되어 있어 여러 프로젝트가 actions를 동시에 돌리면 queue에서 오래 pending되는 경우가 많다.
  • os에 영향을 받는 actions이 있다.
    • 사용중인 runner의 os가 Amazon Linux 2 인데 playwright 설치시 문제가 생겼다. BEWARE: your OS is not officially supported by Playwright; installing dependencies for Ubuntu as a fallback. ubuntu가 설치된 runner를 추가하여 문제를 해결했다.
  • 새로운 actions를 사용하려면 인프라팀에 요청해서 actions를 동기화해주는 작업이 필요하다.

트러블 슈팅한 거

  • playwright 테스트가 예전에는 동작했는데 갑자기 실패하는 경우가 생겼다. 그런데 테스트나 설정의 문제는 아니였고 runner의 문제였는데(예전에 제대로 동작한 action을 재수행해도 에러가 났다) 인프라팀과 컴을 하면 문제를 파악할 수 있겠지만 시간이 걸려 docker를 도입하는 걸로 문제를 해결했다. 시간은 30s 에서 1m 로 늘어났지만 docker를 통해 안정적인 환경을 구축한 것에 만족한다.
  • github actions 에서 docker 설치해서 돌리는게 매우 쉽다. 요렇게만 해주면 된다.
      jobs:
    test:
    container:
    image: mcr.microsoft.com/playwright:v1.32.1-jammy
  • github action docker container 내에서는 github cache를 사용할 수 없다. cache가 저장되어 있어도 cache hit이 안된다. -> caching을 docker container 환경과 동일하게 맞추고 하니 된다.
  • github action runner 내에서 직접 (chromium만 설치)browser를 설치하면 38s 걸리는데 docker install을 하면 모든 브라우저가 설치된 docker image인데도 47s 걸린다.

2. 타이탄의 도구들

타이탄의 도구들 완독 🥳🥳🥳

타이탄의 도구들

3-07 실력을 키울 생각이 없으면 포기하라

꿈보다 목표가 중요하다

꿈은 일어나지 않을지도 모르는 일을 그냥 상상하는 것이다. 하지만 목표는 그걸 이루기 위한 구체적인 계획을 세우고 열심히 노력해 마침내 이루는 것이다. 내게 성공의 본보기가 되어주는 사람들은 모두 조직적인 목표를 갖고 이를 달성하기 위한 탁월한 계획을 세우는 사람들이다.

오늘 밤은 그냥 보여주는 것뿐이다.

내 일은 오늘 밤에 끝나는 게 아니다. 벌써 3개월 전에 끝났다. 오늘 밤은 그냥 보여주는 것뿐이다.

'내가 잘하지 못함에도 계속하고 있는 일은 무엇일까?' 한 달에 한 번, 분기에 한 번, 이 질문을 스스로에게 던질 때 당신과 나는 한 걸음 앞으로 나갈 수 있게 될 것이다.

3-08 생각을 쉬게 하라

상상력을 펼쳐라

우리가 매일 정신적으로 지치는 중요한 이유들 중 하나는, 너무 이성적으로 살아가려고 노력하기 때문이다. 언제나 우리는 '옳고 합리적이고 타당한 것'을 찾는 데 익숙하게 골몰한다. 그러다 보니 정신은 '딴 짓을 할 시간'을 전혀 갖지 못한다. 지치는 건 당연하다. 지치고 피곤할 때는 테트리스를 하라. 그리고 딴 생각. 내가 할 수 있는 가장 말도 되지 않는 생각을 떠올리며 웃어라.

타인을 비난하지 마라

정신건강을 위한 또다른 습관으로 '공개적인 비난을 삼가할 것'을 주문한다. 타인을 비난하는 것은 우리가 가장 중독되기 쉬운 나쁜 습관이다. 내가 내밷은 부정적인 말은 누군가의 하루를 망치거나 그의 마음에 깊이 상처를 내는 데서 그치지 않는다. 상대를 비난하는 순간, 내 마음과 시간에도 상처가 생겨난다. 다만 우리는 그것을 의식하지 못할 뿐이다.

"타인을 공격할 때마다 우리는 한 명 한 명 내 목숨을 구해줄 수도 있는 귀한 사람들을 잃는다. 세상에 그것보다 더 큰 상처와 실패는 없다. 낯선 사람을 따뜻하게 맞이하라. 그난 변장을 한 채 자신을 찾아온 천사일지도 모르니까 말이다."

3-09 아무것도 하지 않는 즐거움을 찾아라

팀 크라이더의 이야기

바쁜 사람은 뭔가 중요한 일을 하는 사람처럼 보인다. 그래서 그에 대한 반응 역시 축하의 의미다. 바쁘다면서 탄식하는 사람들은 자진해서 바쁜 경우가 대부분이다. 그들이 바쁜 이유는 바쁨에 중독되어 있으며 바쁘지않게 될까봐 몹시 두려워한다. 내가 아는 거의 모든 사람이 바쁘다. 그들은 일하지 않을 때는 불안과 죄책감을 느낀다. 바쁨은 인생에 필수적이거나 불가피한 상태가 아니다. 그것은 자신이 선택한 상황이며 묵묵히 따라야만 가능하다.

물론 모두가 바쁜건 사실이다. 하지만 우리는 스스로에게 질문을 던져야 한다. '나는 지금 정확히 무슨 일을 하고 있는가?'라고. 정신없이 바빠 회의에 늦고, 전화기에 대고 소리 지르지만 정녕 말라리아를 없애거나 화석 연료의 대체 에너지를 개발하고, 아름다운 작품을 만드느라고 바쁜 것인가? 바쁨은 존재의 확인이자 공허함을 막아주는 울타리 역할을 한다.

세상에 몰입하지 않은 채로 글의 소재를 찾기는 힘들지만, 세상에서 벗어나지 않으면 소재에 대해 깊이 생각해보고 가장 잘 표현할 수 있는 방법을 찾을 수 없다.

제한된 시간을 가장 훌륭하게 투자하는 방법은 사랑하는 사람들과 보내는 것이라는 사실을 알고 있다. 인생은 바쁘게 살기에는 너무 짧다.

3-10 단 하나의 결단

우리는 나이가 들어서까지 어리석으면 안되며, 좌절해서도 안된다. 뭔가 잘 안풀릴 때는 처음부터 다시 점검하고, 나보다 더 현명하고 지혜로운 사람에게 조언을 얻어야 한다. 소머 코치는 "승자가 되려면 가장 쉬운 것부터 시작하라"고 말한다. "반드시 천천히 하라, 서두르지 마라"고도 말한다. 가장 쉬운 것부터 시작했음에도, 천천히 서두르지 않고 연습했음에도 성과가 지지부진하다면, 소머의 '단 하나의 결단'에 대한 조언이 강력한 효과를 발휘할 것이다.

친애하는 팀에게.

눈에 보이는 발전이 없을 때 나타나는 좌절감은 탁월함을 향해 나가는 과정에서 필수불가결한 일입니다. 좌절감을 느끼지 못하는 사람은 아무것도 배우지 못하니까요. 탁월함을 추구하는 게 쉽다면 누구나 할 수 있을 겁니다. 그러니 괴로워할 일이 아닙니다. 제대로 된 길을 가고 있는지를 점검하는 좋은 기회입니다.

우리가 샐패하는 건 좌절감 때문이 아닙니다. '조급함' 때문이죠. 좌절감과 싸우는 동안 조급함을 느끼기 때문에 대부분의 사람들이 목표 달성에 실패합니다. 우리가 알아야 할 것은 우리가 걷고 있는 탁월함의 길이 곧장 뻗은 '직선'이 아니라는 것입니다. 우리는 한지점에서 다른 한 지점으로 가장 빨리 가는 직선을 그리기 위해 조급함과 초조함을 안고 삽니다. 하지만 비범한 성과는 이 직선 위해서는 만날 수 없습니다. 가장 빨리 결승선을 통과하는 사람은 가장 많은 거리를 뛰어온 사람이기 때문입니다. 우리가 좌절감, 초조함, 조급함을 극복하는 비결은 간단합니다. 일터에 가서 일을 하고, 집에 가서 휴식을 취하는 것입니다. 그러면서 일단 결심을 한 것은 절대 그 생각을 의심하거나, 바꾸지 않는 것입니다. 타협하지도 말고요.

눈에 띄는 진전이 없다는 것은 아마도 많은 것을 생각하고 행했기 때문일 겁니다. 다시 말해 집중해야 할 대상이 많아져서 집중을 하지 못하는 역설적 상황을 맞았기 때문일 겁니다.

명심하세요, 드라마 같은 일은 벌어지지 않습니다. 길을 걷다가 작게 튀어나온 돌부리에 발이 걸렸다고 해서 자책할 일도 아니고, 뭔가 새로운 일이 생길 것이라고 기대할 일도 아니라는 겁니다. 당신의 심플하지만 단단한 루틴과 습관을 계속해 나가야 합니다. 그러면 당신의 자세와 걸음걸이를 살펴보며 현명한 조언을 해주는 사람이 나타날 수 있습니다. 아마 목표를 이루는 데 필요한 행운은 여기까지일 겁니다. 발전과 성과가 없다고 해서 자꾸만 자세를 바꾸고, 생각을 고치고, 이것저것 다 해보는 사람에겐 좋은 조언자가 나타나지 않습니다. 너무 변화무쌍하니까요. 정해진 일정 같은 건 잊어버리세요. 시간은 필요한 만큼 걸릴 겁니다.

일련의 작은 중간 목표가 아니라 장기적인 목표를 이루기 위해 노력한다면 당신이 결정하고 지켜야 할 일은 한 가지뿐입니다. 명확하고 단순하면서 직설적이죠. 매 단계를 거칠 때마다 궤도를 벗어나지 않기 위해 작은 결심들을 하고 또 하는 것보다, 단 하나의 큰 결단을 유지하는 게 훨씬 쉽습니다. 작은 결심을 계속 하는 경우에는 당신이 선택한 목표를 무심코 벗어나서 표류할 기회가 너무 많아집니다.

'단 하나의 결단'은 우리가 가진 것들 중에서 가장 강력한 힘을 발휘하는 도구입니다.

3. VS Code 자동 import

타입스크립트에는 파일에 대한 접근제어가 불가능하다. spring 같은걸 보면 상단에 package.* 같은걸 추가해서 패키지별 폴더별 접근이 가능하다. 해당 파일을 정말 추상화를 한거라 일부 파일에서만 가져다 사용하게 제한하고 싶은데 그게 안되어 여러 사람들이 무분별하게 가져다 사용할 수도 있고 여러 파일들이 같은 이름의 함수명을 가지고 있을 때 실수할 수도 있다.

완벽한 해결책은 아니지만 어느정도 해결할 수 있는 방법을 찾았다.

vscode setting을 통해 autoImport를 막을 수는 있네요 https://github.com/microsoft/vscode/pull/153160

이를 구현하기 위한 TS Server option pr: https://github.com/microsoft/TypeScript/pull/49578

"typescript.preferences.autoImportFileExcludePatterns": [
"__mocks__"
]

셋팅하지 않았을 때

__mocks__ autoImportExclude 했을 때