window 윈재앙으로부터 살아남기 (🚨징징거리기 주의🚨)

wonkydd·2022년 9월 23일
1

Pending ...

목록 보기
6/13
post-thumbnail

나는 쉘을 쓰면서 감동받은 기억이 2가지가 있다.
첫번째는 cmd만 쓰다가 window terminal을 처음 써본 순간이다.


cmd는 과연 쓰라고 만든 것일까?

일단 기본적으로 cmd는 개발할 맛을 뚝떨어지게 만든다.
글꼴도 몇개지원안해,
지원하는 것도 별로야,
테마도 없어,
그리고 가장빡치는 디렉토리 시작위치 설정과 관련해서 할말이 너무 많은데
이건 노션에 정리해뒀으므로 따로 포스팅하겠다.

간단히 말하면
결국 cmd에서 시작위치를 지정하려면
레지스트리를 수정해야 하는데,
경고하지만 절대 레지스트리는 수정하지 말길 바란다.

나의 경우 nodejs관련해서 싹다문제가 발생했고 결국 회귀했다.


은사님, window terminal과의 조우

이런 상황에서 window terminal을 만난 것이다.

폰트이뻐,
색상 지원도 잘돼,
이모지 출력도 돼,
무엇보다 wt가 제공하는 마치 크롬을쓰는듯한 탭기능,
settings.json에서 편하게 딱딱 fontFace와 colorScheme 수정가능,
여러개의 쉘을 드롭다운 한번으로 하나의 창안에서 powershell cmd bash를 모두경험,
다양한 keymap을 지원해서 효용성을 높이고,
디렉터리 시작위치도 간편하게 gui에서 지정할 수 있고

사용하면서 이슈도 있었지만
(여기서 이슈란 wt의 이슈가 아니라
cmd랑 powershell에 대한 기본적인 이해도 없이 질문한
내 지능의 이슈이다)
오픈소스라 issue를 날릴 수 있었고( 그저 ... GOAT, ms )

https://github.com/microsoft/terminal/issues/13427
https://github.com/microsoft/terminal/issues/13426

잘 하지도 못하는 영어 꾸역꾸역 써가면서 질문했더니

메인테이너, 대황 microsoft 개발자,
컨트리뷰트 기여도 1~5위 분들로부터
이슈를 올리자마자 30분도 안되어서 답변을 받았고
잘해결할 수 있었다. 아직까지도 황송하다.

아직도 아래 두분께 감사드린다.
Dustin L. Howett
Leonard Hecker


근데 불편한거는 둘다 여전히 매한가지인데?

하지만 결국 익숙해지면
감사함을 잊게된다.

다알겠는데
결국에는 여전히
환경변수설정은 무슨 gui로 해야돼,
어떤건 user변수 어떤거는 system 변수,
어떨때는 자동으로 path에 추가해주고 아닌 경우도 있고,
관리자권한도 gui로 얻어야돼,
얻으려고 하면 무슨 디바이스변경 권한여부 맨날묻고,

그렇다고 윈도우에서 개발하면 cmd는 안쓰냐?
그것도 아니지..

어떤건 설치를 batch파일로 하게끔하니까 cmd써야하는 경우가 생기고
어떤거는 ps1스크립트로 설치하게하니까 wt쓰고

이것썼다가 저것썼다가..

cmd랑 powershell은 또 명령어가 다르니까
알아야할게 또 생기지

cmd에서는 됐던게 powershell에서는 안되고
진짜 돌아버리는 것이다.
(대표적으로 ExecutionPolicy같은 게 있다.
cmd에서는 따로 없는데 powershell에서는 관리자모드로 들어가
restricted상태를 해제해줘야한다.)


멀티부팅 vs WSL2

이런 상황은

wsl2를 쓸것이냐
멀티부팅을 할것이냐

2가지선택의 고민을 유도하는데
(개인적으로 bash는 쓰기 싫었다)

내가만약 c, d드라이브를 각각 1tb ssd로,
즉 총 2tb ssd로 구매했다면 이미 난 우분투를 깔아서 쓰고 있었을 것이다.

하지만 나의 경우 각각 512gb인데다가
이미 c드라이브에 수많은 ide와 무거운 프로그램들이 쌓여
250gb가 할당된 상태였는지라

멀티부팅을 위헤 c드라이브에 아무리못해도 100gb를 할당해야하는데,
내 c드라이브 미래가 어떻게 될줄알고 100gb만 간당간당남겨놓는 플레이를 할 수는 없었다.

만약 그렇게 하고 파일탐색기를 열때마다 내pc용량바가 빨간색으로 변한 모습을 본다고
상상하니까 벌써 온몸이 와들와들 떨렸다.

그러다보니 난 결국 선택지가 wsl2 밖에 없었다.


윈도우 딜레마 : M1, 사지 않을 이유없다.

나한테 20살의 누군가가 개발을 처음 시작 하려고 하는데
굳이 m1을 냅두고 윈트북을 사겠다고 한다면

일단 뜯어말리겠지만 고집을부린다면
무조건 ssd용량을 2tb이상으로 한뒤 사오자마자 파티션나눠서
bios, uefi 멀티부팅세팅하고 편안하게 개발하라고 할 것이다.

엥. 노트북에 2tb? 그것도 학부생이? 그것도 전부 ssd?

ssd 2tb면 족히 300을 상회할텐데
이건 환율로 가격상승이 반영된
m1 mackbook pro 14 깡통이랑 비슷해진다.

그러니까 차라리 멀티부팅을 포기하고 ssd 용량낮춰서
wsl2 + docker 환경으로만 만족하고
완전한 linux 커널경험은 포기를 하는 방안이 맞다는 것이다.

wsl2 docker셋업은 아래 설명되어있다.
https://velog.io/@wonkydd/%EC%9A%B0%EB%B6%84%ED%88%AC-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95-%EB%B0%8F-docker-%EB%B0%8F-OhMyZsh

그래서 M1맥북에어 이김?

ssd 용량을 1tb로 낮춘다고 해도 200초일텐데
문제는 이건 m1맥북에어 램업글, ssd업글하면 비슷해지는데
이게 맞는 소비일까?

wsl2는 systemctl을 지원하지 않는다

문제는 어찌어찌해서 1tb로 맞췄다고 해도
wsl2의 systemctl 미지원문제로 soruce가 작동하지않고,
본래 linux와는 다른 init.d 방식의 부팅시스템을 사용하기에
개발을 함에있어 여러이슈를 마주할 수 있다.

docker도 wsl2로 돌리는 거라 예외없다.
따라서 ubuntu 이미지로 컨테이너를 띄운다고 해도 문제는 여전히 발생한다.

  • 데스크탑앱
  • gui
  • linux 네이티브 타겟팅으로 출시된 서비스들

이런거는 wsl2에서 못한다는 얘기이다.

그냥 제한적인 리눅스커널을 윈도우에서 별다른 부팅없이
wt라는 터미널 에뮬레이터를 통하여
경험할 수 있다는 것에 의의를 두는것이다.

하고싶다? 멀티부팅을 해야하는 것.

웹개발만 할거야? 그럼 OK

fe이건 be이건 간에,
웹개발만 하는 사람이라면 사용경험이나 만족도가 굉장히 높을 수 있겠다.

하지만 그렇지 않은 사람은 어떻게 될까?

웹개발도 하고
데스크탑앱도 개발하고
안드로이드 네이티브앱도 개발하고
게임도 개발하고

이것저것 잡식으로 다하는 사람이 있다면
그사람은 어떻게 되는 걸까?

이제 재앙이 시작되는 거다.

/mnt의 유혹

일단 wsl2를 처음쓰면 /mnt/c 또는 /mnt/d 경로에다가
윈도우 프로젝트들과 wsl2 프로젝트들을
함께 관리하고자 하는 욕망이 생긴다.

이건 사람의 본능이다.

만약 따로 관리한다면
wsl2의 home경로에다가 프로젝트를 관리하고
윈도우는 윈도우 file system에 관리하니까
뭔가 하나로 정리되지 않는 느낌이 들기 때문이다.

근데 놀랍게도
그 느낌을 감내하면서 개발하는 것이 맞다.
이것도 재앙이긴 하다.
물론 아래에 기술할 재앙에 비하면 작은 재앙이다.

/mnt의 유혹을 이기지 못한자의 최후

만약 고통을 감내하지 않고서
/mnt/드라이브 아래에
자연스럽게 본능이 이끈느 대로 모두 관리한다면
정말 큰재앙이 시작되는 것이다.

일단 이 일을 저지른 순간부터
당신은 윈도우를 재설치할 각오를 해야한다.
안믿기겠지만 내가 그랬고, 아무런 생각이 없었다.

나의 경우 자고일어나니까 갑자기
무선 랜카드가 게이트웨이를 잡지 못하는 문제가 발생했다.
분명 자기전인 6시간 전까지 잘 썼는데 말이다.

어느순간 갑자기 당신의 윈도우는 붕괴할 것이고
어떤 모습으로 그것이 찾아올지는 모른다.

위는 심각한 상황을 얘기한 거고
섞어쓰게 됐을 때 문제들이 꽤많다.

일단 I/O 속도가 말도 안되게 느려진다.
웹팩 빌드타임이 /home 경로에서 작업한거 대비
/mnt에서 작업한게 대략 10배정도 느렸다.

또 /mnt에서 작업시 핫리로드가 작동하지 않는 이슈가 있다.
여기서 말하는 핫리로드는 react-refresh를 말한것이다.

유혹을 이겨냈다고 한들...

위와같은 것을 인지하고서
철저하게 wsl2는 /home아래에서만 작업했다고 하자.

이러면 편해지나?
전혀. 그냥 태풍이 지나간거지
휩쓸고 지나간자리는 여전히남아있다.

말그대로 작업환경이 이원화되어서
아마 정신이 나갈것이다.

어떤 프로젝트는 powershell에서 하고
어떤 프로젝트는 wsl2에서 하고

이러다보면
cmd랑 powershell같이 쓰던 고통이랑 다른게 뭔지싶고
고통은 해결되지않은 채로 개발하게 될 것이다.


감사합니다, oh-my-zsh

깔고 보니까 일단 디자인 측면에서는 wt와 동등하거나 그이하였다.
그러다보니 zsh에 대한 욕망이 생기는 건 자연스러운 수순.

갑갑~한 bash쉘만 보다가
든든~한 zsh쉘 + oh-my-zsh 쉘을 한번 맛보면
더이상 돌아갈 수 없다.

autosuggestions
syntax highlighting 까지 맛보면
정말 신세계이다.

터미널 쉘로 zsh를 선택한 macOS가 정말 멋지고,
역시 세계최고 부동1위의 기업 Apple답다.


셋중하나 선택해라

  1. wt + wsl2 + oh-my-zsh 를 기반으로 세팅후, 웹개발만 하기

  2. ssd를 여유있게사서 멀티부팅을 하기

  3. 쉘고통을 감내하고 윈도우로만 개발하기

근데 아무리생각해도
만약 개발을 처음 시작하는 사람한테 윈도우로 시작하라한다면
인류애적인 측면과 범우주적인 관점에서 범죄다.

입문하는 사람은
용어도 모르고 개념도 존재하지 않는 완전한 백지의 상태이기때문에
불편하긴하고 힘들기는 한데 뭐라고 표현하지를 못한다.
표현하려고 해도 표현할 단어가 머리에 없는데 당연한 것이다.

이 상황은 악순환으로 이어져서 개발입문자에게 스트레스로 다가오고,
개발을 느껴보기도 전에 이탈시킬 수도 있다고 본다.


결론

지금이라도 늦지않았다.

M1 맥북에어 미개봉,
M2 맥북에어,
여유있다면 M1 맥북프로 14 구입해서
고통받지말고 개발하자.

대학생이라면 unidays를 통한 교육할인지원에,
할부로 6개월까지 공홈에서 제공하니까
한번 고려해보자.

윈도우를 못쓰는게 걸린다?
패럴렐즈가 있기 때문에 괜찮다.

돈을 내야한다고?
패럴렐즈 역시 교육할인이 제공되므로
년단위로 30000원정도만 쇼부보면 된다.

그것도 내기싫다?
부트캠프가 있다. 괜찮다.

0개의 댓글