윈도우 WSL(Windows Subsystem for Linux)로 개발 환경 만들기


하나의 컴퓨터에 OS 두 개를 놓고 쓰는 건 번거로운 일이다.
한국 정부 사이트를 문제없이 사용하려면 윈도우가 필요하고, 개발 편의성은 리눅스가 더 높다.
정부 사이트를 이용할 때마다 재부팅을 해서 윈도우를 사용하는건 귀찮은 일이다.
WSL(Windows Subsystem for Linux)이 발표되고 한참을 눈여겨보다가 새해를 맞아 사용해보기로 했다.
리눅스 파티션을 갈아엎고, 윈도우에서 WSL을 이용해 개발환경을 구축해봤다.
리눅스에서 Wine으로 돌리는 윈도우 애플리케이션보다 안정적인 느낌이다.
watcher가 제대로 동작하지 않는다는 것(https://github.com/Microsoft/WSL/issues/216)은 아쉽지만, OS 두 개를 관리하는 수고스러움에 비할 바는 아니다.
리눅스를 수년간 사용하면서 패키지를 업데이트할 때마다 컴퓨터가 이상해지지는 않을까 노심초사했고, 다음엔 맥으로 바꿔야 하나 고민했다.
그런데 이번에 WSL을 써보니, 윈도우도 좋은 대안이라는 생각이다.
대한민국 정부 사이트 접속도 원활하고, WSL 개발 환경도 만족스럽다.
십 년 넘게 멀리했던 윈도우와 좀 친해져 봐야겠다.


WSL 설치 및 설정

Turn Windows features on or off에서 Windows Subsystem for Linux 선택 설치

Microsoft Store에서 Linux로 검색해서 마음에 드는 리눅스 찾아 설치 (debian)

wsl 베터리 설정

Settings > Update & Security > Windows Defender > Open Windows Defender Secutiry Central > Protection Against Viruses & Threats > Advanced Config… > Exclusions > Add or Remove > Add > Folder에 리눅스 시스템 루트 추가

Group Policy Management Editor > Computer configuration > Windows components > Windows Defender Antivirus > Real-time protection >

Turn off real-time protection Enabled로 변경

참고 - https://medium.com/@leandrw/speeding-up-wsl-i-o-up-than-5x-fast-saving-a-lot-of-battery-life-cpu-usage-c3537dd03c74


debian 설정

WSL 루트 - C:\Users\dorajistyle\AppData\Local\Packages\TheDebianProject.DebianGNULinux_버전\LocalState\rootfs

유저이름과 비밀번호 설정

데비안 버전 알아보기 - cat /etc/issue

데비안 버전 알아보기 - cat /etc/os-release os version

필요 패키지 설치

sudo apt install build-essential patch git-core curl unzip pkg-config libvips-dev apt-transport-https ca-certificates psmisc ack ncdu python python-pip

yarn 설치

sudo apt purge cmdtest (yarn 설치 위해)

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

echo “deb https://dl.yarnpkg.com/debian/ stable main” | sudo nano /etc/apt/sources.list.d/yarn.list

sudo apt-get update && sudo apt-get install yarn


참고 - https://yarnpkg.com/lang/en/docs/install/#debian-stable

installation Problem: Unexpected token { in cli.js 문제 발생 시 - https://github.com/yarnpkg/yarn/issues/6914

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

apt-get install -y nodejs

postgres 설치 (https://www.postgresql.org/download/linux/debian/)

  • sudo nano /etc/apt/sources.list.d/pgdg.list 에 deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main 추가
  • wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  • sudo apt-get update

    sudo passwd postgres

    sudo service postgresql start

    sudo -u postgres psql

    ALTER USER postgres PASSWORD ‘my_postgres_password’;


    Peer authentication failed for user “postgres” 오류시
    /etc/postgresql/10/main/pg_hba.conf 파일에서 local all postgres peer 을 local all postgres md5로 바꿔 저장하고 sudo service postgresql restart로 재시작

nvm 설치

https://yoember.com/nodejs/the-best-way-to-install-node-js

zsh 설치

  • sudo apt-get install zsh
    sudo chsh -s `which zsh`
zsh-nvm 설치

https://github.com/lukechilds/zsh-nvm

watchman 설치

sudo apt-get install -y autoconf automake build-essential python-dev libtool m4 pkg-config libssl-dev libcrypto+±dev

git clone https://github.com/facebook/watchman.git

cd watchman

git checkout v4.9.0 # the latest stable release

./autogen.sh

./configure

make

sudo make install

$ echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_user_watches && echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_queued_events && echo 999999 | sudo tee -a /proc/sys/fs/inotify/max_user_instances && watchman shutdown-server


참고 - https://facebook.github.io/watchman/docs/install.html

pip 패키지 설치

sudo pip install awscli awsebcli


윈도우 유틸리티 설치

hyper 터미널 설정

shell: ‘C:\Windows\System32\wsl.exe’, //shell을 wsl로

shellArgs: [], //비운다.

plugins: [

“hyper-dracula”,

“hyper-search” // CTRL + SHIFT + F로 찾는다.

],


vscode 설정

  • Terminal > External: Windows Exec와 Terminal > integrated > Shell:Windows에 C:\WINDOWS\System32\wsl.exe 를 넣는다.
  • Terminal > integrated: Cwd에 wsl 홈 디렉토리 경로를 넣는다.
  • Ctrl + `를 누르면 터미널이 wsl로 잘 뜬다.

vscode extension

  • setting sync
  • annotator
  • auto rename tag
  • babel es6/es7
  • debugger for chrome
  • dracula Official
  • embrace
  • EsLint
  • File Utils
  • Go
  • MDTools
  • Partial Diff
  • Pomodoro Timer
  • Preview
  • Project Manager
  • Trailing Spaces
  • Vetur
  • vscode-icons

기타 윈도우 설정

  • 필요한 프로그램은 단축키 등록하고, 시작 메뉴나 데스크탑에 넣어둬야 단축키가 작동한다.
  • snap 설정을 통해 창을 관리한다.

기타 WSL 참고자료

https://github.com/sirredbeard/Awesome-WSL/blob/master/README.md



by


Tags : , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

아빠 육아. 101일에서 200일까지


육아의 황금기다.
양육자는 육아에 어느 정도 감을 잡았고, 아기는 아직 겨우 뒤집는 정도다.
아직 잠이 많고, 활동량도 많지 않아 육아가 가장 편한 시기라서 육아의 황금기라고 부를만하다.
아기마다 다르겠지만 음식점에 데려가서 스너그에 앉혀 놓으면 가만히 잘 앉아 있어서 외식도 무리 없었다.


아기 키우기

이가 나기 시작하면서 이앓이를 한다. 새벽에 깨고 칭얼대기도 한다.
아이가 뒤집으면서 기저귀가 새기도 한다. 기저귀 커버를 씌워주면 덜 샌다.
100일이 지난 뒤부터는 스너그에 잠깐씩 앉혀 놓으면 잘 앉아 있다.
기저귀 갈이대가 높다면, 아기가 기저귀 가는 동안 뒤집어서 떨어질 수 있으니 안전에 신경쓴다.


아기 재우기

뒤집기를 시작하면 떨어지지 않도록 안전에 신경쓴다.
뒤집기를 시작하는 시기다. 되집기를 하기 전까지는 푹신한 곳에 두면 질식할 위험이 있으니 잘 확인한다.
되집기까지 하면 스와들업을 사용을 중지하자.



아기 먹이기

6개월 전후로 이유식을 시작한다.
쌀 미음으로 시작해서 한가지 재료로 알레르기 반응을 보고, 이상이 없는지 확인한다.
이유식을 먹게 되면 대변이 달라진다. 먹는 음식에 따라 변비가 생길 수도 있다.
이가 나면 실리콘 칫솔로 양치질해 준다.


아기 놀게 하기

휴대용 유모차를 이용한다면 6개월 이후가 좋다.
쏘서도 너무 일찍 태우면 안 좋다고 해서 6개월 다 되어서부터 시작했다.


아기 예방접종

  • +180일 - B형 간염 3차
  • + 180일 - 독감 1차

특이사항

200일쯤 기저귀 발진이 있어 진료받았다.
비판텐, 리도맥스(스테로이드)를 처방받았다. 스테로이드는 하루 1번 정도만 발라주고, 손 깨끗이 씻는다. 발진이 일어난 부분에 바람이 잘 통하도록 한다.


육아용품

이동

  • 유모차

장난감

  • 쏘서

기타

  • 스너그
  • 기저귀 커버

실 사용 제품

  • 미마 지기 - 휴대용 유모차이지만 안정적이다. 6개월 이후부터 태울 수 있다.
  • 이븐플로 뉴 트리플펀 아마존 쏘서 - 아직은 잘 못 논다. 잠깐씩 앉혀서 익숙해지게 한다.
  • 마마스앤파파스 스너그 - 이 시기에 제일 잘 쓴 용품이다. 잘 앉아 있는다.
  • 토미토미 기저귀 커버 - 빨래를 줄여준다.
  • 피셔 프라이스 아기 체육관 - 여전히 잘 논다. 장난감들은 유모차에 달고 나가도 좋다.
  • 피셔 프라이스 바운서 - 먹이고 바로 앉혀야 할 때 좋다.



by


Tags : , , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.

통계적으로 생각하기


세상을 살아가며 각종 통계 자료를 접할 일이 많은데, 이 책은 자료를 바르게 이해하도록 조언해준다.
그뿐만 아니라, 어떤 데이터를 통계로 가공할 때 놓치기 쉬운 부분들을 짚어준다.

• 선택 편향을 조심하자.
• 만약 P(E|H대안가설들) = 0 라면 P(E|가설)가 매우 낮더라도 H1이 옳다.
• 기저율(base rate)이 올바르게 되었는지 확인한다.
• 필요한 모든 정보를 얻고, 빠진 정보가 없도록 한다.
• 필요한 모든 변수를 포함하는지 확인한다.
• 그 모형의 오차항이 완전히 무작위적이고 다른 변수들 또는 빠진 변수들과 숨겨진 상관관계를 가지고 있지 않은지 확인한다.
• 새로운 정보에 기초해 확률적 평가를 업데이트하지만, 다른 대안 가설들의 기존 확률들을 잊지 않는다.


통계적으로 생각하기 - 책갈피


우리는 종종 관련 모집단의 크기를 정확히 모르는 상태에서 특정 질문에 대한 답을 할 때가 있습니다. 그래서 우리가 얻고 있는 데이터가 존재하는 모든 데이터를 대표한다고 생각하기 쉽지요. 두 번째로 무응답이 존재하는 것을 알더라도 쉽사리 그 무응답자들이 무작위적일 것이고 차이를 만들어내지 않을 것이라 가정하곤 합니다. 아마도 이러한 종류의 실수를 방지하기 위한 가장 좋은 방법은 선택 편향에 존재하는 이론적인 문제점들을 이해하는 것일 수 있겠죠.

미국 연방 정부는 인구조사의 숫자에 기초해 주 정부를 포함한 지방 정부의 사회복지 지원금을 결정합니다. 만약 도시의 저소득층 거주 지역의 주민들이 인구조사에서 빠진다면, 그 지역은 받아야 할 지원금보다 적은 금액을 받게 되는 것이죠.

상사들이 어리석은 결정을 하는 것은 대부분 악의적이거나 지능이 떨어져서가 아니라 데이터의 흐름이 지연되어 정말로 현실을 모르기 때문이라고 말입니다.(또한 그 결과로 발생하는 표본의 선택 편향 역시 원인이 되지요).

만약 당신이 관리자의 위치에 있다면, 좋고 나쁜 피드백이 모두 당신에게 전해지는 시스템을 활용해 다른 경쟁자들을 제치고 앞서갈 수 있습니다.

개인적 삶 가운데 선택 편향이 일어나는 경우가 많은데, 그 이유는 우리가 오직 ‘1인칭’ 시점으로 우리에게 일어나는 일들만 경험할 수 있고 다른 사람의 ‘1인칭’ 경험에 대해서는 정보를 가지고 있지 않기 때문입니다.

내생성((endogeneity)’: 해당 시스템 내에서 결정되거나 생성되는 것을 내생성적이라 한다.

외생성적 : 그 시스템 밖의 요소로 결정되거나 생성되는 것

P(X|Y) : Y가 일어났다는 제약하에서 X가 일어날 조건부 확률 (수직바 (|)는 뒤의 사건이 일어났다는 제약을 뜻한다)

베이지안 분석(Bayesian analysis) -베이즈(Thomas Bayes) 정리

조건부 확률 P(가설|증거)가 네가지 다른 것들에 의존한다.

첫 번째, P(가설|증거)는 P(증거|가설)의 확률에 의존합니다. 만약 가설이 사실일 때 주어진 증거가 일어날 확률이 매우 높다면, 증거가 발생했다는 사실이 가설이 맞을 확률을 증가시킵니다.

두 번째, P(가설|증거)는 새로운 증거를 보기 전에 가설이 맞았을 확률에 의존합니다. 통계학자들은 이러한 확률을 '사전 확률(prior probability)'이라 부릅니다. 새로운 증거를 사용해 우리가 이전에 가지고 있던 가설을 '업데이트’할 수 있습니다. 즉 새로운 증거로 인해 기존의 가설이 맞을 확률이 증가하거나 감소할 수 있는 것이죠. 하지만 이 사전 확률을 절대로 잊어서는 안되죠.

세 번째, 대안 가설의 제약하에서 새로운 증거가 일어날 확률.

네 번째, 이 대안 가설들의 사전 확률

P(가설| 증거) = P(증거|가설)P(가설)/P(증거)

P(X) = X가 일어날 확률

P(X|Y) = Y가 일어났다는 제약하에서 X가 일어날 확률

H : 가설, E : 증거

우리의 가설하에서 새로운 증거 사건이 일어날 확률이 더 높을수록 새로운 증거 사건의 발생이 우리의 가설이 맞을 확률을 증가시킵니다. 만약 사전 확률 P(H1)이 증가한다면 사후 확률 P(H1|E)또한 증가하게 됩니다. 가설의 사전 확률이 높을수록 새로운 증거 사건이 발생한 후 사후 확률이 높아지게 되겠죠. 반대로 P(E|H대안가설들)이 증가한다면 사후 확률 P(H1|E)가 감소하게 됩니다. 대안 가설하에서 새로운 증거 사건이 일어날 확률이 증가한다면, 새로운 증거의 존재는 우리의 H1이 맞을 확률을 감소시킵니다. 마지막으로 사전 확률 P(H대안가설들)이 증가한다면 사후 확률 P(H1|E)가 감소하게 됩니다. 대안 가설들의 사전 확률이 높을수록 새로운 증거 사건이 발생한 후 사후 확률 또한 높아지게 되고, 새로운 증거 사건이 기존 가설을 뒷받침하는 것이 아니라 오히려 대안 가설들이 옳았다는 증거가 될 수 있습니다.

이러한 작용들은 여러 가지 유용한 결과들로 이어지게 됩니다. 그중 하나는 어떠한 증거 사건이 주어졌을 때 우리의 가설이 맞을 확률이 매우 낮더라도, 다른 가설들이 맞을 확률이 더욱 낮다면 우리의 가설은 상대적으로 일어날 확률이 더 높아지게 된다는 점입니다. 셜록 홈즈(Sherlock Holmes)는 "불가능을 제거하고 나면, 남은 것이 아무리 일어날 것 같지 않은 것이라도 그것이 진실이다"라는 말을 합니다.

그가 정말 하고자 했던 말은 "만약 P(E|H대안가설들) = 0 라면 P(E|H1)이 매우 낮더라도 H1이 옳다"라는 것이겠죠.

새로운 증거에 기초해 우리의 가설을 업데이트하는 방법은 항상 중요하지만, 이런한 과정은 당신이 수정 가능한 어떤 '사전 가설’을 가지고 있다는 가정하에서 이루어집니다. 만약 사전 확률을 잘못 알고 있다면 올바른 수정 과정을 시행하더라도 틀린 결론을 얻게 되겠죠. 이 사전 확률의 다른 이름이 바로 기저율(base rate)입니다.

• 항상 당신이 필요한 모든 정보를 얻었는지 확인하고, 그 정보가 누락되지 않았는지 확인하세요.

• 당신의 머릿속 모형이 필요한 모든 변수들을 포함하는지 확인하세요. 그 모형의 오차항이 완전히 무작위적이고 다른 변수들 또는 누락된 변수들과 숨겨진 상관관계를 가지고 있지 않은지 확인하세요.

• 새로운 정보에 기초해 확률적 평가를 업데이트하지만, 다른 대안 가설들의 기존 확률들을 잊으면 안 됩니다.



by


Tags : , , , , , ,

  • 재미있게 읽으셨나요?
    방랑자의 이야기.
    월풍도원에선 기부를 받습니다.