표지

`개발자에게 바치는 머신러닝 가이드북!`

`개발자의, 개발자에 의한, 개발자를 위한 AI`

 

정말 감각적인 표지 디자인과 함께

이 책의 정체성을 그대로 보여주고 있는 부제목들이다.

 

발행일

 

정말 따끈따끈한 ... 신간 서적이다 !!

 

지은이

 

개인적으로는 첫 중국 출신 지은이들의 책이다.

텐센트와 알리바바 소속 지은이들의 서적이라니... 기대가 되기도 하고, 궁금하기도 하였다.

 

차례

 

차례를 보는 순간

`아! 정말 개발자들의 시각에서 씌여진 책이구나!`

라는 것을 느낄 수 있었다.

 

"머신러닝의 Hellow World"

 

그렇지! 개발자라면 `Hello World`로 시작해야지!!!

 

베타리더

 

베타리더들의 코멘트를 봐도 알 수 있겠지만

이 책은 이론 보다는 실습 위주의 학습을 하기 위한 독자들에게 적합하다.

 

chapter 01

 

그렇다고 해서, 이론적인 설명이 아예 없는 것도 아니다.

정말 꼭 알아야 하는 내용을 정말 깔끔하게 잘 정리해서 설명해주고 있다.

 

code

 

개인적으로 머신러닝/딥러닝을 공부하면서 이런식으로 예시를 보여주는 것은 처음 보았다.

양수/음수 분류 함수를 케라스를 이용해서 비교 구현을 해보다니 !!!

 

마무리/참고자료

 

각 챕터별로 마무리도 깔끔하게 잘 해주고 있다.

그리고 끝까지 개발자의 입장을 놓치지 않고 계속 유지하고 있다.

 

 

이 책은 정말 색깔이 확실하다.

개발자가 머신러닝을 공부할 때 좋은 책 !!!

 

 

조금 길게 설명하자면,

 

머신러닝에 대해서 책 한 권 정도는 훑어보았지만

어려운 이론들과 수학적인 설명들로 인해서 좌절을 느낀 개발자들에게

예전에 공부하던 방식으로

머신러닝과 딥러닝을 공부할 수 있도록 가이드해주는

표지가 아주 멋진 책 !!!

 

※ 제이펍 서평단 활동을 위해 지급 받은 도서에 대한 리뷰입니다.

반응형

 

Docker 또는 Kubernetes 환경에서 Linux를 가지고는 많이 놀아봤지만

Windows를 띄워볼 생각을 해보지는 못했다.

 

Windows 환경에서 Linux를 container로 실행하는 것도 신기하게 여겨졌지만

Windows 자체를 container로 실행하는 것은 생각해보지도 못했다.

 

그러던 중 우연히 찾게된 github.com repository 하나!

 

https://github.com/hectorm/docker-qemu-win2000

 

https://github.com/hectorm/docker-qemu-win2000

 

그렇다! Windows2000을 container로 띄워준다 !!!

 

Windows 2000 on Docker

 

테스트 환경은 다음과 같다.

 

- Host OS

      : Windows 10 Professional

- VM S/W

      : VirtualBox

- Guest OS

      : Ubuntu 18.04 64bit

 

VirtualBox를 이용해서 Ubuntu 환경을 구축한 뒤, Docker 까지 설치했다.

 

Ubuntu in VirtualBox

 

KVM을 사용하기 위해서 VirtualBox 설정을 좀 봐줘야 한다.

 

CPU Core 값도 2 이상 주고,

`네스티드 VT-x/AMD-V 사용하기`를 선택해야 한다.

 

설정

 

제대로 되어 있으면 다음과 같이 확인되어야 한다.

 

vmx / svm

 

`cpu cores` 값도 2 이상이 잡혀 있는지 잘 보고,

`flasg`에 `vmx` 또는 `svm` 값이 보이는지도 잘 확인하자. (안보이면 안된다)

 

 

이걸로 준비 끝이다!

 

docker run --detach \
  --name qemu-win2000 \
  --device /dev/kvm \
  --publish 127.0.0.1:3389:3389/tcp \
  --publish 127.0.0.1:5900:5900/tcp \
  --publish 127.0.0.1:6080:6080/tcp \
  docker.io/hectormolinero/qemu-win2000:latest

 

publish 옵션을 보면 알겠지만,

그리고 README.md에도 잘 설명이 되어있듯이 4가지 방법으로 접근할 수 있다.

 

- RDP (3389/TCP)

      : any RDP client, login with Administrator / password.

- VNC (5900/TCP)

      : any VNC client, without credentials.

- noVNC (6080/TCP)

      : http://127.0.0.1:6080/vnc.html

- Shell

      : docker exec -it qemu-win2000 vmshell

 

 

제일 편한 방법은 `noVNC`

크롬으로 접속만 하면 된다.

 

http://127.0.0.1:6080/vnc.html

 

noVNC

 

noVNC

 

진짜다!

Win2K SP4 !!!

정말이다!

 

 

졸려서 여기까지~ ^^

 

반응형

 

`한 권으로 다지는 머신러닝&딥러닝 with 파이썬`

 

표지

 

너무나 매력적인 제목의 책이 새로 나왔다.

한 권으로 머신러닝과 딥러닝을 모두 다진다니... 그것도 파이썬을 이용해서...

 

목차를 보면 정말 알차게 채워져 있다.

 

목차

 

인공지능이 무엇인지에 대한 설명 뿐 아니라,

인공지능이 어디에 쓰이는지 사용 사례까지 소개를 해주고 있다.

딥마인드 팀에서 만든 `알파스타`로 프로게이머를 이긴 이야기도 실려있어서 재미있게 읽었다.

 

뿐만 아니라 본격적인 머신러닝 & 딥러닝 공부에 있어서도

다른 책에서는 잘 언급하지 않는 `특성 공학`부터 하나의 챕터를 할당해서 알려주고 있다.

4장

 

편집도 정말 깔끔하지 않은가!?

 

챕터에 대한 짧은 설명과 함께 학습 목표도 명시적으로 앞에서 소개를 해줘서

무엇을 알아야 하는지 한 번 생각하고 공부를 할 수 있도록 되어있다.

 

5장

 

위 사진들을 보면 알겠지만 조금 아쉽게도 이 책은 Grey Scale 이다.

하지만, 정말 친절하게도 이 책에서 사용된 이미지들을 Colored PDF 파일로 공유해주고 있다.

 

https://static.packt-cdn.com/downloads/9781839219535_ColorImages.pdf

 

color image

 

물론, 예제 코드도 제공해준다.

 

https://git.io/JahHZ

 

예제 코드에서 조금 아쉬운 점은

솔직히 공부하기에는 Jupyter Notebook 형식으로 제공해주는 것이 편한데... 대부분 Python 파일로 제공을 해주고 있다.

그리고, 별도 주석이 있다던지 하지는 않아서... 좀 아쉽다.

 

 

이 책에 대해서 전반적으로 설명을 하자면,

책 제목 그대로 머신러닝과 딥러닝에 대해서 책 한 권으로 정말 깔끔하게 잘 정리된 정성 가득한 책이다.

 

다만, 너무 넓은 범위의 내용을 책 한 권에 담아내다보니

친절한 설명까지는 기대하면 안되고

깔끔하게 요약된 내용을 보면서 다른 책이나 매체를 통해 좀 더 공부를 보충할 필요는 있어 보인다.

 

이미 머신러닝과 딥러닝을 공부하고 있는 분들이라면

이 책으로 한 번 정리한다는 느낌으로 공부하기에도 정말 훌륭한 책이 될 것 같다.

 

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

 

반응형

 

이것 저것 보다가 우연히 발견한

새로운 에디터가 있어서 한 번 설치해보고 써보고자 한다.

 

https://micro-editor.github.io/

 

https://micro-editor.github.io/

https://github.com/zyedidia/micro

 

 

micro text editor

 

이름이 나쁘지는 않은 것 같은데,

일반 명사를 사용하다보니 구글링과 같은 검색을 할 때 원하는 결과를 얻기가 쉽지 않다.

 

 

Features

nano, vi, vim 등의 훌륭한 기본 에디터들이 있음에도 불구하고

굳이 `micro text editor`를 써야 하는 이유가 뭘까!?

 

- Easy to Use
- Highly Customizable
- Colors and Highlighting
- Multiple Cursors
- Plugin System
- Common Keybindings
- Mouse Support
- Terminal Emulator

 

 

뭐 좋은거 같다 ^^

 

 

 

Environments

이하 내용을 진행한 환경은 다음과 같다.

 

- Ubuntu 18.04 Desktop

 

 

 

Download

- 최신 버전 확인 후에 다운로드 부터 받아보자

   . https://github.com/zyedidia/micro/releases/

❯ wget https://github.com/zyedidia/micro/releases/download/v2.0.10/micro-2.0.10-amd64.deb

 

 

Install

- 설치도 쉽다~

❯ sudo dpkg --install micro-2.0.10-amd64.deb

 

 

 

Execute

- 실행도 쉽다~

❯ micro

micro

 

도움말을 호출하자!

`Ctrl + g` 키를 누르면 된다.

 

help

 

command 명령어를 입력하기 위한 prompt 모드 전환을 위해서는 `Ctrl + e`를 누르면 된다.

단축키를 알아보기 위해서 `help defaultkeys`를 타이핑해보자.

 

prompt

 

 

윗 창과 아랫 창을 왔다 갔다 하기 위해서는 `Ctrl+w`를 누르면 되고,

현재 위치의 창을 닫기 위해서는 `Ctrl+q`를 누르면 된다.

 

 

 

plugins

그렇다. micro editor는 plugin도 지원한다.

 

https://micro-editor.github.io/plugins.html

 

설치법도 친절하게 알려준다

plugin install

 

반응형

 

꽤 오랜 역사를 갖고 있지만,

최근 들어서 갑작스레 많은 관심을 받고 있는 Web-IDE & Cloud-IDE 이야기를 해보고자 한다.

 

학계(?), 업계(?)에서 명확히 구분해서 사용하고 있는 명칭은 아니지만

개인적으로 Web-IDE와 Cloud-IDE는 다음과 같이 구분을 하고 있다.

 

Web-IDE

- 웹 기반으로 소스코드 편집을 지원하는 IDE를 제공하는 서비스

- workspace(terminal) 환경을 제공하지 않는다.

 

Cloud-IDE

- Web-IDE 서비스 포함

- workspace(terminal) 환경도 포함

 

 

즉, `GitHub Codespaces` 서비스는 Cloud-IDE로 분류할 수 있다.

- https://github.com/features/codespaces

출처:  https://github.com/features/codespaces

 

 

아는 사람만 알고 있는 github.dev 서비스는 Web-IDE이다.

- https://www.whatwant.com/entry/githubdev (블로그 홍보^^)

 

 

최근에 preview로 공개한 github.dev의 사촌관계인 vscode.dev 서비스 역시 Web-IDE이다.

- https://vscode.dev/

 

 

많은 분들이 알고 있을 구름IDE는 Cloud-IDE 서비스이다.

- https://ide.goorm.io/

 

구름IDE는 아래 포스팅 내용 중에 소개한 적도 있다.

- https://www.whatwant.com/entry/한빛미디어-알쏭달쏭-C언어-180제

 

 

 

이번 포스트는 뭐 그냥 그렇다는 ...

그냥 기록용~

 

반응형

 

아는 사람만 알고 있다는 숨어있는(?) github.dev 서비스를 알고 있으신가요?

- https://github.dev/

- https://docs.github.com/en/codespaces/the-githubdev-web-based-editor

 

github.dev

 

안냇말을 잘 보면 어!? 하게 된다.

`.` 단축키를 이용하면 된다고!?

 

 

위와 같이 github.com의 특정 repository에서 키보드의 `.` 키를 누르면 된다.

 

 

그러면 github.dev 사이트로 이동하면서

해당 repository의 파일 내용과 함께 IDE 환경이 주어진다.

 

 

VSCode 환경에서 소스코드 편집을 할 수 있게 된 것이다.

수정 후에 git commit 및 push를 할 수도 있다.

 

 

아쉽게도 workspace(terminal) 환경은 제공되지 않는다.

 

workspace(terminal) 환경까지 필요하다면 codespaces 서비스를 돈 주고 사용해야 한다.

 

 

 

하지만,

무료로 VSCode를 웹으로 편하게 사용할 수 있다는 것만으로도 충분히 행복한 환경이다.

 

나만 그렇게 생각하나?!

반응형

 

코딩을 하다보면 난감한 경우를 겪곤한다.

숫자 `1` 과 영어 대문자 'I', 소문자 'l' 등이 헷갈리게 하기도 하고

숫자 '0'과 영어 대문자 'O', 소문자 'o', 한글 'o' 등이 헷갈리게도 한다.

 

그리고 글자에 따라서 가로 크기가 다르기도 해서 고정폭 폰트가 필요로 하기도 한다.

 

그래서 보통 개발을 할 때에는

코딩용 폰트(프로그래밍 폰트?)를 따로 구해서 셋팅하곤 한다.

 

가장 유명한 폰트는 Consolas, Verdana 등이 있다.

 

그런데, 어떤 코딩용 폰트가 나의 취향에 맞는지 찾아주는 재미있는 사이트가 있다!

 

 - https://www.codingfont.com/

https://www.codingfont.com/

 

밸런스 게임과 같이

2개씩 비교해서 최종적으로 하나를 선택하도록 해준다!

 

 

안타깝게도 우리나라에서는 나름 매니아 층을 갖고 있는 Naver D2 Coding 폰트는 위 사이트에서 나오지 않는다.

- https://github.com/naver/d2codingfont

 

 

 

그런데, 여기에서 하나 고려해야 할 문제가 있다.

 

한글!

 

한글을 지원해주는 폰트들도 있지만, 지원해주지 못하는 폰트들도 있다.

그런 경우, 마음에 드는 폰트 하나 정한 후에 fallback 폰트로 D2 폰트를 사용하면 나름 괜찮아진다.

 

 

반응형

 

`git`에 대해서 한창 공부할 때도 있었는데,

요즘엔 쓰던 명령어만 쓰면서 그렇게 지내고 있던 와중에...

 

새로운 명령어(기능?)가 `high-level commands`로 추가되었다는 소식을 듣게 되었다.

 

`v2.23.0` 버전의 릴리스 노트에 `switch / restore` 2개의 새로운 명령어를 소개하고 있다.

  - https://github.com/git/git/blob/master/Documentation/RelNotes/2.23.0.txt

 

 

이하 과정은 `Ubuntu 18.04` 환경에서 진행했다.

 

 

1. 설치된 버전 확인

  - 새로운 명령어를 사용해보기 위해서는 `v2.23.0` 이상의 버전이 필요하다.

  - Ubuntu 환경에서 apt 패키지를 통해 설치되어있는 git 버전을 확인해보자.

$ git --version 
git version 2.17.1

 

  - 오래된 버전을 삭제하려면 다음과 같이...

$ sudo apt remove git

$ sudo apt autoremove

 

 

2. 신규 버전 설치 (PPA)

  - 가장 편리한 방법인 PPA 추가해서 apt를 통해서 관리하는 방법이다.

$ sudo add-apt-repository ppa:git-core/ppa

$ sudo apt update

$ sudo apt install git

 

 

3. 신규 버전 설치 (Source)

  - 개인적인 취향으로 좋아하는 방식인 Source Code 빌드해서 사용하기 ^^

    . https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

$ sudo apt-get install dh-autoreconf libcurl4-gnutls-dev libexpat1-dev gettext libssl-dev asciidoc xmlto libz-dev docbook2x install-info

$ cd /srv/install/git

$ wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.33.1.tar.gz

$ tar zxvf git-2.33.1.tar.gz

$ cd git-2.33.1

$ make configure

$ ./configure --prefix=/usr/local

$ make all doc info

$ sudo make install install-doc install-html

 

  - 자동 완성 기능도 설정하자

    . bash

$ sudo cp ./contrib/completion/git-completion.bash /etc/bash_completion.d/

  . zsh

$ mkdir -p ~/.zsh

$ cp ./contrib/completion/git-completion.bash ~/.zsh/
$ cp ./contrib/completion/git-completion.zsh ~/.zsh/_git

$ nano ~/.zshrc
...
zstyle ':completion:*:*:git:*' script ~/.zsh/git-completion.bash
fpath=(~/.zsh $fpath)

autoload -Uz compinit && compinit
$ source ~/.zshrc

 

  - git에서 결과 화면이 전환되는 방식으로 나오는 것이 싫은 경우

$ git config --global pager.branch false

 

 

4. New Command

  - 새로운 명령어 `switch / restore`는 기존 `checkout` 명령어의 일부 기능이 분리된 것이다.

    . `checkout` : Switch branches or restore working tree files

    . `switch` : Switch branches

    . `restore` : Restore working tree files

 

 

5. Before (As-was)

  - 기존에 해왔던 방식을 살펴보자

 

  - git source code를 가지고 알아보겠다. (사이즈가 좀 크지만 그래도 ^^)

$ cd /srv/workspace

$ git clone https://github.com/git/git.git

$ cd git/

  - branch 정보를 살펴보자

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/maint
  remotes/origin/master
  remotes/origin/next
  remotes/origin/seen
  remotes/origin/todo

 

  - local에 `develop` branch를 생성해보자 = local branch 생성 + 현재 작업 branch 변경

$ git checkout -b develop                            
새로 만든 'develop' 브랜치로 전환합니다

$ git branch -a          
* develop
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/maint
  remotes/origin/master
  remotes/origin/next
  remotes/origin/seen
  remotes/origin/todo

  - 다시 `master` branch로 변경해보자

$ git checkout master
'master' 브랜치로 전환합니다
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

$ git branch -a      
  develop
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/maint
  remotes/origin/master
  remotes/origin/next
  remotes/origin/seen
  remotes/origin/todo

  - 파일 하나를 변경하고 staging까지 해보자

$ nano README.md

$ git status   
현재 브랜치 master
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

커밋하도록 정하지 않은 변경 사항:
  (무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
  (use "git restore <file>..." to discard changes in working directory)
수정함:        README.md

커밋할 변경 사항을 추가하지 않았습니다 ("git add" 및/또는 "git commit -a"를
사용하십시오)

git add README.md

git status
현재 브랜치 master
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

커밋할 변경 사항:
  (use "git restore --staged ..." to unstage)
수정함:        README.md

  - staged 상태에 있는 파일을 빼내자

$ git reset HEAD README.md
리셋 뒤에 스테이징하지 않은 변경 사항:
M README.md

$ git status
현재 브랜치 master
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

커밋하도록 정하지 않은 변경 사항:
  (무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
  (use "git restore <file>..." to discard changes in working directory)
수정함:        README.md

커밋할 변경 사항을 추가하지 않았습니다 ("git add" 및/또는 "git commit -a"를
사용하십시오)

  - 변경된 파일을 원복 해보자

$ git checkout -- README.md 

$ git status               
현재 브랜치 master
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

커밋할 사항 없음, 작업 폴더 깨끗함

 

 

 

6. Now (To-be/is)

  - 이제 새로운 명령어로 위의 과정을 다시 해보자

 

  - `develop-2` branch를 생성하고 이동해보자

$ git switch -c develop-2
새로 만든 'develop-2' 브랜치로 전환합니다

$ git branch -a
  develop
* develop-2
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/maint
  remotes/origin/master
  remotes/origin/next
  remotes/origin/seen
  remotes/origin/todo

  - `master` branch로 이동!

$ git switch master
'master' 브랜치로 전환합니다
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

$ git branch -a
  develop
  develop-2
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/maint
  remotes/origin/master
  remotes/origin/next
  remotes/origin/seen
  remotes/origin/todo

  - 파일 하나 수정

$ nano README.md

$ git status
현재 브랜치 master
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

커밋하도록 정하지 않은 변경 사항:
  (무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
  (use "git restore <file>..." to discard changes in working directory)
수정함:        README.md

커밋할 변경 사항을 추가하지 않았습니다 ("git add" 및/또는 "git commit -a"를
사용하십시오)

git add README.md

git status
현재 브랜치 master
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

커밋할 변경 사항:
  (use "git restore --staged ..." to unstage)
수정함:        README.md

  - 파일을 일단 unstaged 상태로~

$ git restore --staged README.md

$ git status
현재 브랜치 master
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

커밋하도록 정하지 않은 변경 사항:
  (무엇을 커밋할지 바꾸려면 "git add <파일>..."을 사용하십시오)
  (use "git restore <file>..." to discard changes in working directory)
수정함:        README.md

커밋할 변경 사항을 추가하지 않았습니다 ("git add" 및/또는 "git commit -a"를
사용하십시오)

  - 파일 원복!

$ git restore README.md

$ git status
현재 브랜치 master
브랜치가 'origin/master'에 맞게 업데이트된 상태입니다.

커밋할 사항 없음, 작업 폴더 깨끗함

 

 

지금까지 git에 새롭게 추가된 2개의 명령어 `switch / restore` 에 대해서 살펴보았다.

 

보면 알겠지만 기존에 안되던 새로운 기능이 추가된 것은 아니고

`checkout`에서 했던 기능 中 일부분을 분리해서 구성한 것일뿐이다.

 

기존에 `checkout`을 잘 사용해왔던 분들이라면, "굳이 왜~?"라는 말을 할 수도 있겠으나

처음 git을 접하는 분들이라면 조금 더 직관적인 명령어로 느끼지 않을까라는 생각이 든다.

 

그 동안 너무 git을 멀리해왔던 것 같아서 간만에 포스팅해봤다!

 

 

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

Universe 2021 & GitHub Actions  (0) 2022.01.18
github.dev (Web-IDE)  (1) 2021.11.03
git 설치 (Git 2.33.0, Windows 10)  (0) 2021.10.02
GitHub Copilot 처음 써보기  (0) 2021.07.26
GitHub CLI (GitHub Command line)  (0) 2020.09.20

+ Recent posts