리눅스 펭귄 TUX 오랜만이야~ 네 친구 불량펭귄(불펭)도 보고싶다.

 

WSL을 제대로 사용하기 위한 첫걸음

WSL은 윈도우를 메인 개발환경으로 사용하는 개발자가 여러 다양한 운영체제, 특히 유닉스/리눅스 계열 운영체제에서 동작하는 서비스를 개발하거나  윈도우에 더 강력한 생산성 도구를 추가 사용하고 싶을 때 고려되는 옵션중 하나이다. MS 윈도우는 GUI를 기반으로 사용자들에게 편리하게 쓰기 쉬운 개인용 컴퓨터 운영체제가 되었지만, 서버의 영역에서는 리눅스(POSIX 운영체제들)에 많이 밀렸다. 다양한 툴과 GNU 컴파일러들, 다양한 서버 프로그램 등 리눅스가 제공해주는 강력한 기능들은 개발자들에게 윈도우에서도 너무 쓰고싶은 리눅스만의 매력 포인트였다.

클라우드 시대가 전개되면서 리눅스는 더 많은 개발자들의 많은 지지를 받게 된다.  하지만 MS는 Visual Studio, 오피스 등 각종 강력한 도구들을 갖추고 있는 회사 아닌가! 운영체제 차원에서는 BSD를 기반으로 하는 맥북이 Unix의 강점을 잘 활용할 수 있는 구조였기에 나도 한동안 맥북을 개발 메인용도로 사용하였다. 집에서는 윈도우를 사용하고 윈도우 기반 앱을 개발하다보니 윈도우를 벗어날 수 없어 한동안 MinGW/msys 나 VirtualBox 같은 도구로 VM을 생성하여 리눅스를 설치하고 사용했었다. 일정 정도 원하는 바를 해소해주는 방안이긴 했으나 호스트 운영체제인 윈도우와 VM상의 리눅스는 상호 운용성이 부족하고, VM 관리도 불편하여 초반 설정후 잘 안쓰게 되었다.

 하지만 WSL이라는 게임 체인저가 등장했다. WS(Windows Subsystem)이라는 개념은 초기 32비트 앱을 실행하기 위한 서브시스템에서 출발했지만 이제는 리눅스(WSL)에서 안드로이드(WSA)까지 확장되어 기존 운영체제 장벽을 허물고 있다. 그런데 의외로 WSL에 대한 서적은 나오질 않았는데, 이 책은 WSL을 다룬 첫번째 국내 서적이다.

리눅스에 사용경험이 있는 윈도우 사용자라면 MS가 워낙 쉽게 구성해서 WSL을 설치 사용해 본 적이 있을 것이다. 그런데 그 구조나 구성 원리에 대한 소개는 찾아보기 어려웠다. 그러나 보니 상호 운용성을 고려해서 설계된 WSL의 능력을 100% 사용하지 못하는 것이 아닌가 생각하던 차에 이 책을 접하게 되었다.

WSL 2 아키텍쳐

이 책의 구조: WSL의 과거와 현재, 미래 방향을 이해하자

이 책은 전체 구조부터 활용까지 WSL이 시도하는 전체 로드맵을 간결하게 소개하고 있다.

 

1장에서는 WSL이 만들어지기까지의 MS사의 시도들, 아스토리아나 드로 브릿지부터 WSL 1과 WSL2의 구조를 설명하면서 이에 대한 장단점을 기술하고 있다. 이런 역사를 다루는 것은 역시 이러한 기술이 왜 등장했으며 어떤 방향으로 나아가고 있는지를 이해하는데 큰 도움이 된다.

2장에서는 WSL을 설치하는 과정을 다룬다. 이미 나는 WSL을 사용한 경험이 있기 때문에 큰 무리없이 읽을 수 있었다.

3장에서는 이제 윈도우와 리눅스를 섞어 사용하기 위하여 디스크 마운팅이나 경로 설정/변환을 다룬다. 쉘 스크립트를 통해 윈도우/리눅스간 장점을 활용하기 위해서는 충분히 이해하고 있어야 한다. 예를 들어 /etc/wsl.conf 파일의 [interop] 섹션을 통해 리눅스 서브 시스템에서 윈도우 프로그램을 연계하여 실행한다거나 윈도우에 설정된 시스템 환경변수 값을 어떻게 가져오는지에 대한 동작을 간략히 소개한다.

4장에서는 WSL 백업에 관한 이야기인데, 사실 나는 내 개인 블로그의 이전 글에서 WSL백업을 다룬 적이 있었다. C드라이브의 용량부족을 해소하기 위하여 다른 디스크로 기본 경로를 옮겼었는데, 그때는 기술 블로그를 보면서 따라하는 수준이었다면 4장의 내용을 통해 왜 그렇게 되는지를 좀 더 이해할 수 있게 되었다.

책에서는 WSL1과 WSL2를 같이 사용할 수 있다고 되어있겠지만, 특별한 이유가 없다면 최신 기술인 WSL2를 이용하는 것이 좋다. 5장에서는 WSL2의 구조적 변화를 설명하고 있다. WSL2의 효용가치를 높이기 위해 마이크로소프트사가 직접 관리하는 리눅스 커널을 사용하고 있는 것도 놀라웠다. (마치 우리 MS가 바뀌었어요를 보는 느낌.) 

6장의 파일시스템과 7장의 네트워킹은 윈도우/리눅스간 상호 운용성을 어떻게 구현하고 있는지에 대한 기반 기술을 간략하게 소개하고 있다. WSL을 구성하는 파일시스템 형식이 volfs, drvfs, tmpfs, procfs, sysfs 등 여러개인 것은 생각하지 못했던 부분이었다. 각 파일시스템과 용도, 특징을 잘 소개하다보니 MS가 왜 그렇게 구현했고, WSL이 어떻게 동작하는지에 대한 이해가 높아진다. 막연히 윈도우와 리눅스간 파일 공유는 SAMBA를 사용하지 않았을까 했는데 P9NP라는 프로토콜로 새롭게 구축한 배경도 재미있게 읽었다.

8장과 9장은 개발환경 구축, 리눅스용 프로그램을 윈도우에서 실행하는 방법과 도구를 소개하고 있는데, WSL을 처음 접하는 개발자라면 도움이 될 것이다. 윈도우에서 실행한 비주얼스튜디오 코드에서 리눅스 서브시스템에 접근하여 코드를 개발하는 방법 등을 소개하고 있다.

 

WSL을 통해 리눅스와 윈도우 두 운영체제 명령어를 섞어 사용하여 둘간의 격차를 좁힐 수 있다.

WSL의 빠른 개발속도로 인해 책 내용과 살짝 안맞는 부분이 있다. 예를 들어 윈도우 터미널에서 WSL을 설정하는 부분이 예전에는 설정파일이었는데, 이제는 GUI에서 설정하도록 변경되었다. 하지만 책 내용을 이해하고 따라하는데에는 문제가 되지 않는 정도이다.

 

WSL을 처음 사용할 때 반드시 읽어보고 시작할만한 책 

이 책은 WSL을 사용해 보고자 하는 개발자 또는 WSL을 예전 리눅스를 사용하던 느낌으로만 쓰고 있는 개발자들이 WSL의 능력을 좀 더 이해하고자 할 때 좋은 길잡이가 될 수 있는 책이다. "개발자 및 IT 전문가를 위한 리눅스용 윈도우 하위 시스템 실무 안내서"라는 이 책의 부제가 딱 들어맞는 내용과 구성이다. 관련 기술들을 훑고 있다는 점에서는 좋게 평가한다. 다만 기술의 깊이 면에서는 조금 더 자세히 설명해 주어도 괜찮지 않았을까 하는 아쉬움이 들지만.. 그래도 잘 구성한 실무 안내서이다.

 

개인적으로 별점 4.5개를 부여해 본다. 당연하지라고 생각했던 WSL에 대한 구조를 좀 더 이해할 수 있게 되었다. 이 책을 읽고나니 WSL에 좀 더 궁금점들이 생겨서 "Pro WSL"(APress)을 읽어보고 있다. 이 책을 통해 WSL의 기본 개념을 얻었기 때문인지 상대적으로 쉽게 읽고 있는 중이다.

 

이책을 통해 학습하면서 알게된 사이트 몇군데를 함께 공유한다.

 

YES24 구입 좌표: http://www.yes24.com/Product/Goods/107889281

 

처음 만나는 WSL - YES24

설치 방법부터 다양한 활용까지 쉽고, 간편하고, 빠르게 익히는 WSL WSL은 가상 머신이나 듀얼 부팅 설정 없이 윈도우에서 최적화된 리눅스 환경을 제공하는 시스템이다. 이 책은 WSL을 사용하는

www.yes24.com

 

마이크로소프트사의 WSL  한글 문서 페이지: https://docs.microsoft.com/ko-kr/windows/wsl/

 

Linux용 Windows 하위 시스템 설명서

Linux용 Windows 하위 시스템 설명서의 개요입니다.

docs.microsoft.com

 

마이크로소프트 코맨드라인이라는 개발 블로그: https://devblogs.microsoft.com/commandline/

 

Windows Command Line

Windows Terminal, Console and Command Line, Windows Subsystem for Linux, WSL, Windows Package Manager

devblogs.microsoft.com

   "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

반응형

데이터분석을 위한 거미줄 가져오기 - 사내 도서관에서 빌려읽기

기대가 컸던 탓일까? 조금 많이 아쉬운 책이다. 기본적인 웹 크롤링 기법을 소개하긴 하지만 깊이가 입문에 그친 느낌이다.  하지만 저자의 의도가 정확히 반영된 책이라는 생각이다. 나야 오래전 검색엔진을 개발하면서 크롤링을 C++로 구현했던 경험도 있었고, 그 뒤에도 파이썬과 BS(BeautifulSoup)을 이용하여 크롤러를 구현해 본 적이 있기 때문에 내용이 쉽게  느껴졌다.

 

이 책은 총 3편으로 구성된다. 파이썬을 사용할 줄 안다면 1편은 넘어갈 수 있다. 웹의 동작원리를 안다면 3장은 그냥 넘어가도 된다. 파이썬으로 웹을 크롤링할 때 중요한 모듈이 requests와 BeautifulSoup이다. 이 두 모듈을 이용한 다음 직접 HTTP 호출을 통해 크롤링하는 방법, 동적 웹사이트를 위해 웹드라이버를 이용하여 셀레니엄으로 크롤링하는 방법, 데이터 제공자가 API를 제공해 줄 경우 사용하는 방법을 소개한다.  3편은 데이터 분석이었는데, pandas와 matplotlib의 기본적인 사용법을 다룬다. 사실 mysql 데이터베이스로 저장하는 것은 살짝 애매하다고 생각한다.  매번 데이터베이스로 갱신하는 방법도 좋지만 CSV를 mysql로 직접 importing하는 방법도 좋지 않을까?

 

 

1편은 총 2개 장에 걸쳐 파이썬의 기본적인 문법을 설명한다. 

1장은 파이썬 소개, 아나콘다 설치하고 가상환경 설치하는 내용

2장은 파이썬 자료구조, 연산자, 반복문, 예외처리, 함수, 패키지, 클래스 

 

2편은 웹 크롤링의 기본적인 내용으로 4개의 장으로 구성된다.

3장부터 크롤링, HTML, CSS, BS 소개,셀레니엄 소개, API로 데이터 얻기를 소개한다.

 

3편은 데이터 분석 부분인데, CSV로 만들고, 데이터를 그래프로 그리는 방법 정도를 소개한다.

7장에서 pandas로 CSV와 엑셀 파일 처리, matplotlib으로 데이터 시각화 8장은 mysql 데이터베이스로 수집한 데이터 넣는 내용.

 

웹 크롤링에 파이썬을 사용하기로 했다면 크롤링 관련 프로젝트들이 많다. 예를 들어 scrapy 같은 프레임워크가 이미 잘 나와있는데, 이런 부분에 대한 소개가 약한 느낌이 들었다. 하긴 입문자들에게는 이런 프레임워크를 처음부터 사용하면 프레임워크의 기능 제약사항에 갇히게 될 것이니, 기본 바탕을 익히는 정도로 이 책을 살펴보면 좋을 것 같다.

 

 

 

 

 

반응형

+ Recent posts