Settings

CI CD Pipeline for Data Science

개요

  • 최근 밑바닥부터 시작하는 딥러닝 3로 수업을 수강생들과 진행하며 배포에 관한 내용이 있었습니다. (p 98).
  • 구체적인 방법은 소개하지 않아서, 보충 자료로 작성하였다. 전
  • 단계별로 진행하는데, 깃허브에 관한 기본적인 내용 및 코드는 알고 있다는 전제하에 작성하였다.

필요한 것

Steps - Travis Logins

  • Travis에 깃허브로 로그인 한다. 아래와 같은 화면이 나오면 로그인이 잘 된 것이다.

  • 영문 내용을 잘 읽어본다.

(1) Activate your GitHub repositories

Once you’re signed in, go to your profile page where you’ll see all the organizations you’re a member of. You can install the GitHub App integration by clicking the Activate button for each organization you would like to use with Travis CI.

ml 개발환경 세팅

개요

  • M1에서 GPU를 활용한 딥러닝을 수행하는 예제 코드를 구현해봤다.

  • Apple 공식 Repo대로 설치를 하면 잘 될 것이라 생각했지만, 생각지 못한 복병을 만났다.

  • 어떻게 해결했는지 그 과정에 대해 잠깐 기술하려고 한다.

Rosetta 너는 누구니?

  • 그동안 맥북은 인텔 기반의 Mac 프로세서를 사용해왔고, M1은 애플이 개발한 프로세서를 처음 도입한 것이다.
  • 그런데, 이게 왜 문제가 되는 것일까?

(Mac) Python 기본 환경설정 및 주피터 노트북 설치

개요

  • M1 맥북을 구입 후, 환경 설정을 하다보며, 기록을 남기기로 하였다.
  • 환경변수에 대해 살짝 다루도록 한다.
  • Jupyter Notebook 설치를 진행해본다.
    • Note: 아나콘다가 아닌, Python 공식홈페이지에서 다운 받은 것을 전제로 한다.

설정 1. zsh to bash 환경으로 바꾸기

  • 필자는 zsh는 잘 쓰지 않았다.
  • 그런데, Mac은 Default로 bash 환경을 쓴다.
  • 써보지 않았기에, bash로 바꾸도록 한다. (쉽다!)
$ chsh -s /bin/bash
  • 위 설정을 진행한 후, 터미널을 종료한 뒤 다시 시작한다.
  • 만약, 현재 쉘 스크립트를 알고자 하면 아래와 같은 명령어를 입력하도록 한다.
$ echo $SHELL
/bin/bash

설정 2. 파이썬 환경설정

  • 먼저 아래 코드를 실행한다.
$ cd ~
$ ls -a
.			.ipython		.zshrc
..			.local			Applications
.CFUserTextEncoding	.matplotlib		Desktop
.DS_Store		.python_history		Documents
.Rhistory		.r			Downloads
.Trash			.rstudio-desktop	Library
.bash_history		.ssh			Movies
.bash_profile		.viminfo		Music
.bash_profile.swp	.zprofile		Myblog
.bash_sessions		.zprofile.swp		OneDrive
.config			.zsh_history		Pictures
.gitconfig		.zsh_sessions		Public
  • 위 파일 중에서 특히 관심을 가져야하는 파일은 두가지다

Hugo Blog 옮기기

개요

  • 새로운 맥을 구입하면서 생긴 여러 에러를 해결하면서 기록으로 남겼다.

선수 학습

  • 본 포스트는 기존 hugo 깃허브 블로그를 운영중인 독자들을 위한 글이다.
  • 만약 깃허브 블로그를 처음 만드시는 분은 공식 홈페이지를 참조하기를 바란다.

기존 블로그 활용

  • 필자는 blog라는 깃허브 repo가 존재하였음
  • 따라서, blog 레포를 내려 받았다.
$ git clone https://github.com/yourname/your_repo.git

상황 1. submodule에 대한 충분하지 못한 이해

  • 필자가 실수한 것이 있다.
  • github에서 submodule은 영어 단어 그대로, 서브 모듈이다. 즉, 한개의 메인 프로젝트가 존재하지만, 다른 프로젝트는 공통으로 사용할 모듈이라는 뜻이다.
  • 다시 정리하자면,
    • 필자에게 메인 프로젝트는 blog 레포에 글을 남기는 것이다.
    • 필자가 필요한 것은 깃허브 블로그에 필요한 mainroad라는 테마(theme) 모듈과, 배포를 위한 public 모듈이다.
  • public은 필자의 깃허브 주소와 연동되어 있는 모듈이라고 생각하면 쉽다.
    • 즉, public과 필자의 깃허브 주소 레포와 하나로 연결되어 있기 때문에, 자동으로 배포가 되는 시스템이다.
  • 여하튼, 필자가 실수한 것은 바로, 저 public에 대한 서브모듈을 생각하지 못했고, 이 에러가 가장 치명적이었다.

해결방안

  • 어떻게 해결할까? Note: 순서를 꼭 잘 지키도록 한다
  • 우선, 깃허브를 내려받으면, 기존 publicthemes/your_theme는 삭제한다.
    • 이유: 캐시가 남아 있는데, 위 두개 삭제를 하지 않으면 에러의 무한루프에 빠진다.
    • 아래 코드는 에러의 한 예다.
blog % git commit -m "updated"
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
        modified:   themes/mainroad (modified content, untracked content)

no changes added to commit
  • 위 에러가 발생이 되면, 안된다. 즉, 무언가 제대로 삭제가 되지 않았다는 뜻이며, 폴더가 없음에도 위와 같은 에러가 발생이 되면 그 때는 아래 명령어를 추가하도록 한다.
$ git rm -r --cached themes/mainroad
  • 이 때, 중요한 것은, 삭제 후, git push 까지 진행해야 한다.
$ rm -rf public
$ rm -rf themes/your_theme
$ git add .
$ git commit -m "your commit msg"
$ git push origin master(or main)
  • 이제부터가 중요하다. 순서를 지키도록 한다.
  • 먼저, theme부터 submodule을 진행한 후, 마지막으로 public에 대한 submodule을 설정한다.
    • 코드로 보면 다음과 같다.
$ git submodule add https://github.com/developer_name/your_theme.git themes/your_theme
$ git submodule add -b master git@github.com:your_name/your_name.github.io.git public
  • 이렇게 함으로써 blog 레포안에 있는 public 디렉토리는 your_name.github.io 주소와 연동이 끝나게 되는 것이다.

주의점

  • 필자의 경우, themes/my_theme안에 shortcodecss 코드 등을 추가하였다. 따라서, 이 코드 등도 당연히 추가가 되어야 한다.
    • 이 때에는 복사 붙여넣기로 대체 하도록 한다.

상황 2. ssh keygen의 필요성

  • 필자는 새로운 맥에어 m1을 구입하였기 때문에, SSH Key값을 만들어야 한다.
  • 검색을 통해서 쉽게 구할 수 있기 때문에, 자세한 내용은 메뉴얼을 참고한다. +
  • 코드로 구현하면 아래와 같다.
$ cd ~/.ssh
$ ssh-keygen -t ed25519 -C "your_email@example.com"
> Generating public/private ed25519 key pair.
> Enter a file in which to save the key (/Users/you/.ssh/id_ed25519): [Press enter]
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
$ cat ~/.ssh/id_ras.pub
  • 이때, 출력값 전체(이메일 포함)하여 복사 한후, 깃허브 계정에서 [Settings]-[SSH and GPG Keys]-[New SSH Key]를 클릭하며 붙여 넣기 한 후 저장한다.
  • 그런데, 하나 주의해야 하는 것은, 이대로 끝내면, 블로그를 업데이트 할 때마다, 계속 비밀버호를 입력하라고 한다. 매우 귀찮기 때문에, 아래와 같은 코드를 실행한다.
$ ssh-add ~/.ssh/id_rsa
$ eval $(ssh-agent)

상황 3. 버전 문제

  • 모두에게 해당 사항이 안될 수도 있다.
    • 현재 필자가 겪는 에러이다.
$ WARN 2020/10/12 13:40:31 Failed to get translated string for language "en" and ID "authorbox_name": template: :1:9: executing "" at <.Count>: can't evaluate field Count in type string

블로그 옮기기 성공

  • 이 글을 보고 있다면, m1에서 처음 작성하여 성공적으로 올린 글을 보게 되는 것이다.
  • 즉, 필자는 성공하였다.
    • hugo의 가장 큰 어려움은 사실 한글자료가 많지 않다.
    • 이 글을 보는 hugo 사용자에게 작은 도움이 되기를 바란다.

Git 명령어 중급편

개요

  • 커밋을 하기 전에 확인해야 할 기본적인 명령어 등을 확인해본다.
  • tracked 상태의 파일을 untracked 상태로 변경하는데, 스테이지에 등록하는 것과 반대 과정이라고 보면 된다.
  • stage 상태에 있는 것을 unstage 상태로 변경하려면 삭제(rm)나 리셋(reset) 명령어를 사용한다.

파일 등록 취소

  • rm 명령어로 삭제 하려면, 기억해야 하는 것은 스테이지 영역에서만 등록된 파일을 삭제하려면 --cached 옵션을 함께 사용한다.
$ git rm --cached main.py
rm 'main.py'
  • 캐시 목록에서 파일이 삭제가 된 이후에 git status를 실행해본다.
$ git status 
On branch master
Changes to be committed:
    (use "git reset HEAD <file>..." to unstage)
        deleted: main.py
Untracked files:
    (use "git add <file>..." to update what will be committed)
        main.py <-- 스테이지 삭제
nothing added to commit but untracked files present (use "git add" to track)
  • 사실 이 때 부터가 조금 중요하다.
  • deleted: main.py의 뜻은 삭제 또는 변화된 것으로 간주하기 때문에, 이 때에는 리셋 후 정리하라는 명령어이다.
$ git reset HEAD main.py ---> 리셋 시도
  • 그리고 다시 status 명령어를 실행하면 정상적으로 커밋이 정리가 된다.
$ git status --> 상태 확인
On branch master
nothing to commit, working tree clean

파일 이름 변경

  • 파일 이름 변경시에는 git mv old_file_name new_file_name와 같이 작업하면 된다.
    • 단, 이 때 주의해야 하는 것은 파일의 경로다.
$ git mv folder/main.py folder/test.py
  • 이와 같은 형태로 수정을 해줘야 한다.
  • 만약, fatal: not under version control, source=folder/main.py, destination=folder/test.py와 같은 에러가 발생을 한다면, 이 때는 새로 추가된 파일을 git add를 하지 않은 untracked 상태인 것을 재 확인한다.

git commit의 의미

  • commit은 크게 HEAD와 스테이지를 결합하여 새로운 객체를 만드는 것과 유사하다. 즉, 변경된 파일의 차이를 깃 저장소에 기록하는 것을 말한다.
  • 그런데, 변경된 파일을 구별하려면 별도의 메시지를 같이 작성해야 하는데, 이를 커밋 메시지라고 해야 한다.
  • 조금 더 쉽게 설명하면 아래와 같다.
    • 제안서 작업을 하기 위해 워드파일을 만들 때, 다음과 같이 저장하는 경우가 종종 있다.
    • 예) 제안서_1201.docx, 제안서_1202.docx
    • 두 문서 사이에는 당연히 차이가 발생한다.
  • 이 때 문서명과 서로 다름을 표시해주는 역할을 해주는 것이 메시지라고 보면 된다.
    • 따라서, 커밋 메시지는 반드시 작성해야 한다.
  • 이제 커밋 메시지를 남긴다.
$ git commit -m "message"

git commit후의 수정

  • git commit이 실행한 뒤에는 git status를 실행해보면 다음과 같다.
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean
  • 이 상태가 되면 git push를 하면 된다.

파일 수정

  • 그런데, git push 이후에 수정할 것이 생겼다고 가정해보자.
  • 파일을 수정하면 modified 상태로 돌아가게 된다.
    • 그런데, 수정하는 과정에서 파일을 잘못 수정할 수도 있다.
  • 깃을 이용하면 수정한 파일을 커밋 전 마지막내용으로 쉽게 되돌릴 수 있다. 즉 이전 커밋으로 되돌리는 명령어는 다음과 같다.
  • 다만, 이 때에는 커밋 이후에 작업한 수정 내역은 모두 삭제가 된다.
$ git checkout -- 수정파일 이름
  • 수정한 파일은 다시 등록해야 한다.
    • 반복되는 내용이기에 생략한다.
$ git add 수정파일이름
$ git status
$ git commit -m "00 file updated"

git commit 취소

  • 이번에는 파일 수정이 아니라, 커밋을 취소하는 방법이다.
  • 그런데, 이 때에도 주의해야 하는 것은 취소한 해당파일들을 stage로 보낼 것인지, 아니면 unstage로 보낼 것인지를 결정해야 한다.
  • 시나리오는 다음과 같다.
  • 새로운 test.py을 만들어 1차 커밋을 한 뒤, 파일을 재 수정하여 2차 커밋을 진행한 상태이다. (물론, git add 포함)

방법 1. stage로 돌려보내기

  • commit취소 후, 해당 파일들은 staged 상태로 워킹 디렉터리에 보존하는 방법이다.
$ git reset --soft HEAD^
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   test.py
  • 여전히 modified 된 상태이며 여전히 워킹 디렉터리 상태에 있음을 확인할 수 있다.
  • 이 때에는 git add만 해준다.

방법 2. unstage로 돌려보내기

  • 방법1과 동일하지만 종착지가 다른 경우이다.
$ git reset --mixed HEAD^
$ git reset HEAD^
$ git reset HEAD~2 // 마지막 2개의 commit을 취소
  • 필자는 git reset –mixed HEAD^를 사용했다.
$ git reset --mixed HEAD^
Unstaged changes after reset:
M       kaggle/test.py
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   test.py

no changes added to commit (use "git add" and/or "git commit -a")
  • 첫번째 했을 때와 조금 다른 결과값을 나오는데, 아직까지는 현재는 modified 이고 워킹 디렉터리에 보존되는 것을 확인할 수 있다.

방법 3. unstage로 돌려보내고 워킹 디렉터리에서 삭제

  • 방법1과 방법2는 파일들을 삭제하지는 않지만, 다음 명령어를 이용하면 워킹 디렉터리에서 삭제하는 것이다.
$ git reset --hard HEAD^
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean
  • 이 때에는 modified 상태가 없다.
  • 또한, 기존에 작업했던 소스코드들이 아예 사라지는 것을 확인할 수 있다.

요약

  • 기본편과 마찬가지로 stagedunstaged의 개념은 여전히 중요하다.
  • git commit취소하는 방법은 크게 3가지가 있지만, 방법 3을 사용하게 되면 기존 코드가 삭제되는 경향이 있으니 주의한다.

Reference

Git 명령어 기본편

개요

  • 깃 명령어의 기본적인 명령어를 실행하는 것을 목표로 한다.
  • 깃 설치 및 깃허브 설치는 기존 게시글을 확인해본다.

Git 환경설정

  • git 명령어를 입력 시, 제대로 실행되지 않았다면 환경변수를 추가한다.
    • 윈도우에서 제어판을 실행한 후 시스템 > 고급 시스템 설정 > 고급 > 환경 변수를 작성한다.
  • 시스템 변수 항목에서 Path를 더블클릭하도록 한다.
  • 환경 변수 편집 창에 C:\Program Files\Git\cmd 경로를 추가한다.
    • 영상을 통해서 한번 보도록 한다.

Git 기본문법

  • git의 명령어의 기본 문법은 아래와 같다.
$ git 명령어 또는 옵션
  • 이 때, 옵션은 짧은 옵션(-)과 긴 옵션(–)으로 구분한다.

Git Version

  • 다음과 같이 작성한다.
$ git --version
git version 2.28.0
  • 깃 명령어를 여러개 묶어서 사용도 가능하다. 이 때에는 세미콜론(;)으로 구분한다. (예)
$ git --version; git status
(출력 생략)

Git 환경설정

  • git을 설치한다고 해서 바로 github와 함께 쓸 수 있는 것은 아니다.
  • 이 때 config 명령어를 사용한다.

글로벌 사용자

  • 로컬 사용자 등록도 다음과 같은 명령어를 통해 생성이 가능하다.
  • 먼저 cd 명령어를 통해서 깃의 저장소가 있는 폴더로 옮긴 뒤 git config 명령어를 실행한다.
$ cd 저장소 폴더
$ git config user.name "사용자이름"
$ git config user.email "이메일주소"
  • 깃에서 사용자를 구분하는 데 쓰는 “사용자 이름"과 “이메일 주소” 중 이메일 주소는 깃이 개발자를 구별하는 고유의 키 값으로 사용한다.
  • 이 때에는 해당 저장소에서만 사용이 가능한 것이지, 로컬 환경 내 다른 저장소는 해당이 되지 않는다.
    • 즉, 혼자서만 사용이 가능하다면 매우 불편하다.
  • 혼자서 사용하기 좋은 글로벌 옵션을 추를 한다.
    • 즉, 글로별 옵션을 권장한다.
$ git config --global user.name "사용자이름"
$ git config --global user.email "이메일주소"

환경 설정 파일

  • 환경 설정 파일은 보통 .git/config 파일 형태로 저장되어 있다.
  • 몇몇 명령어를 입력하여 보자.
    • Note: 각 개개인마다 기본 환경이 다를 수 있으니, 참조 바란다.
$ ls .git
COMMIT_EDITMSG  HEAD            config          hooks           info            modules         packed-refs
FETCH_HEAD      ORIG_HEAD       description     index           logs            objects         refs
  • 만약 config 파일을 찾았다면 다음과 같이 코드를 작성한다.
    • 마찬가지로, 결과물은 설정에 따라 다를 수 있다.
$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
[user]
        name = 사용자이름
        email = 이메일주소
  • 만약 파일을 수정하고 싶다면, 편집기를 활용해서 수정하도록 한다.
    • code, vim, emacs, etc 등 다양한 편집기가 있다.
$ code .git/config
  • pycharm 사용자의 경우 다음과 같이 사용하면 파일이 열리기도 한다.
$ open .git/config

깃 개념

  • 우선 폴더 생성 후에는 초기화 명령어를 입력한다.
$ git init 경로명
  • 초기화 명령어를 입력 시, 경로명을 입력하지 않으면, 현재 폴더에서 초기화된다.
$ git init .
Initialized empty Git repository in 경로

git add의 뜻

  • 깃의 동작을 이해햐려면 먼저 워킹 디렉터리 또는 트리라고 한다.
  • 우선 두가지만 기억하면 된다.
    • untracked 상태: 실제 작업파일 및 폴더가 있는데, 이 공간을 자동으로 추적하지 않는다. 즉, 새로 만든 파일은 모두 untracked 상태인 것이다.
    • tracked 상태: Git이 추적을 할 수 있도록 git add 명령어를 사용한다.
  • 깃은 요청받은 파일들만 추적 관리한다.

git add의 뜻, stage & unstage

  • 추적 상태가 된 뒤에는 임시 영역에 해당되는 스테이지 공간으로 들어간다.
  • 즉, git add가 끝나면 커밋을 하기 전 단계인 임시 영역으로 들어가게 된다.
  • 이 때 구분점은 stage 상태와 unstage 상태와 구분된다.
    • 그러나, 실질적으로는 대개의 경우 tracked 부분과 untracked 부분의 영역은 크게 차이가 없다.
  • 그런데, 예외가 있는데, 스테이지 영역에 있는 파일과 워킹 디렉터리 안에 있는 파일 내용에 차이가 있을 경우 unstage 상태가 된다.
    • 즉, 파일이 수정할 경우 임시적으로 스테이지 목록에서 제거가 된 것이기 때문에 해당 파일만 git add로 추가하면 된다.
  • 이 쯤에서 git 라이프 싸이클을 그림으로 확인해본다.

git add의 뜻, modified & unmodified

  • 코드를 변경한다는 뜻은 파일을 수정한다는 뜻이다.
  • 그런데, 파일이 수정되면, 스테이지에서는 수정한 파일과 원본 파일을 구분하기 위해 수정함(modified)와 수정하지 않음(unmodified) 상태로 표현한다.
  • modified의 의미는 깃이 실제로 기록한 파일이며, 실질적으로 버전을 의미한다.
    • 이 때, 깃 commit을 하면 이 변경 내역은 영구적으로 기록된다.
    • 만약, 파일 수정을 하게 되면 이는 재 등록을 의미한다. 따라서 재 등록을 하려면 git add를 작성해야 한다.
  • unmodified의 뜻은 수정하지 않았음을 의미한다.

요약

  • 다양한 의견이 오갔기 때문에 한번 더 설명하면 아래와 같다. 즉, 스테이지를 기준으로 삼자.
  • modified는 unstage 상태를 말하며, 이 때에는 해당 파일을 git add 하라는 뜻이다.
  • 우리가 습관적으로 git add 한다는 뜻에는 이와 같이 다양한 logic이 내부적으로 돌아가고 있다는 뜻이기도 하다.

git status

  • 이러한 변화의 상태들을 확인하는 가장 좋은 방법은 git status를 의미한다.
  • 필자의 예를 들면 아래와 같다.
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)
        modified:   content/Settings/git_basic.md

no changes added to commit (use "git add" and/or "git commit -a")
  • 여기에서 눈여겨 봐야 하는 것은 modified 영역이다.
    • 이 영역은 현재 필자가 작업중인 파일이다. 즉, unstage 영역이기 때문에, 이 때, git add를 진행해야 함을 의미한다.

.gitignore

  • 데이터 분석가들에게, 가장 어려운 부분은 데이터셋을 깃허브로 올리는가 하는 부분이다.
    • 아쉽지만, 간단한 샘플 데이터를 제외하면, 올리지 않는 것이 좋다. (용량 제한)
  • 이 때, .gitignore 파일에 불필요한 파일이나, 또는 숨기고 싶은 파일, 데이터셋의 경로등을 나열해서 적어둔다.
    • 여기에 파일 목록이 등록이 되면, 해당 파일은 tracked 되지 않는다.
  • 파일을 등록하는 방법은 직접 파일명을 작성하는 방법을 사용하거나, 또는 정규표현식을 사용하기도 한다.

Reference

이호진(2020). Git 교과서. 서울: 길벗. Retreieved from https://thebook.io/080212/

(R+Git) 초보자를 위한 깃허브 연동 및 에러 대처법

개요

  • 본 Repo는 강림직업전문학교 수강생을 위해 예시로 작성한 Repo입니다.
  • 본 Repo에서는 R을 활용한 데이터 과학 발표자료를 공유하기 위해 만들어졌습니다.

Git & Github

  • 우선 Git을 설치합니다.

  • Terimnal 창에서 git을 실행하여 정상적으로 설치되었는지 유무를 확인합니다.

  • 그 다음은 Github에 회원가입을 합니다

  • 이제 RStudio에서 프로젝트를 클릭한 후 아래 화면에서 Version Control을 클릭합니다.

  • 그 다음은 github에서 주소를 클릭합니다.

  • 복사한 주소를 아래그림과 같이 주소를 붙여 넣습니다.

OCE 패키지 소개

개요

  • 새로운 분야에 대한 자료 정리는 언제나 흥미롭다.
  • 오늘은 해양과학을 분석해보는 시간을 갖는다.
  • 사실 필자는 해양과학을 모른다.

교재

패키지 설치

  • 패키지 홈페이지를 참고한다.
  • 패키지 저자는 CRAN에서 다운로드 받는 것 보다는 깃허브에서 받는 것을 추천한다.
    • 패키지 업데이트가 1년에 몇번 되지 않는다고 조금은 솔직하게 말한다.
# install.packages("oce", dependencies = TRUE)
library(oce)
## Loading required package: gsw
## Loading required package: testthat

Evolution of oce

  • 홈페이지에서 Oce는 오픈 소스 시스템으로 소개하고 있기 때문에, 관련 학문에 종사하는 사람들이 참여 해주는 것이 해당 패키지 발전에 매우 중요한 부분이다.

그래프

  • 간단한 시각화를 구현해보도록 한다.
data(buoy, package = "ocedata")
theta <- (90 - buoy$direction) * pi / 180
u <- -buoy$wind*cos(theta)
v <- -buoy$wind*sin(theta)
s <- c(-1, 1) * max(buoy$wind, na.rm = TRUE)
plot(u, v, xlab = "u [m/s]", ylab = "v [m/s]", xlim=s, ylim=s, asp=1)
for (ring in seq(5, 30, 5))
  lines(ring*cos(seq(0, 2*pi, pi/32)), 
        ring*sin(seq(0, 2*pi, pi/32)), col="gray")

Hexo Blog 만들기

개요

  • 간단하게 Hexo 블로그를 만들어 본다.

I. 필수 파일 설치

  • 1단계: nodejs.org 다운로드
    • 설치가 완료 되었다면 간단하게 확인해본다.
$ node -v
  • 2단계: git-scm.com 다운로드
    • 설치가 완료 되었다면 간단하게 확인해본다.
$ git --version
  • 3단계: hexo 설치
    • hexo는 npm을 통해서 설치가 가능하다.
$ npm install -g hexo-cli

II. 깃허브 설정

  • 두개의 깃허브 Repo를 생성한다.
    • 포스트 버전관리 (name: myblog)
    • 포스트 배포용 관리 (name: rain0430.github.io)
    • rain0430 대신에 각자의 username을 입력하면 된다.
  • 이 때, myblog repogit clone을 통해 적당한 경로로 내려 받는다.
$ git clone your_git_repo_address.git

III. 블로그 만들기

  • (옵션) 적당한 곳에 경로를 지정한 다음 다음과 같이 폴더를 만든다.
$ mkdir makeBlog # 만약 Powershell 이라면 mkdir 대신에 md를 쓴다. 
$ cd makeBlog
  • 임의의 블로그 파일명을 만든다.
$ hexo init myblog
$ cd myblog
$ npm install
$ npm install hexo-server --save
$ npm install hexo-deployer-git --save
+ ERROR Deployer not found: git
+ hexo-deployer-git을 설치 하지 않으면 deploy시 위와 같은 ERROR가 발생합니다.
  • _config.yml 파일 설정
    • 싸이트 정보 수정
title: 제목을 지어주세요
subtitle: 부제목을 지어주세요
description: description을 지어주세요
author: YourName
+ 블로그 URL 정보 설정
url: https://rain0430.github.io
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
+ 깃허브 연동
# Deployment
deploy:
  type: git
  repo: https://github.com/rain0430/rain0430.github.io.git
  branch: main

IV. 깃허브에 배포하기

  • 배포 전, 터미널에서 localhost:4000 접속을 통해 화면이 뜨는지 확인해본다.
$ hexo generate
$ hexo server
INFO  Start processing
INFO  Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.
  • 화면 확인이 된 이후에는 깃허브에 배포한다.

데이콘 대회 참여 - 10 데이터 시각화

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

사전작업

  • 한글 시각화를 위해 나눔고딕 폰트를 불러온다.
!pip install psankey #  sankey diagram
%config InlineBackend.figure_format = 'retina'
!apt -qq -y install fonts-nanum
Requirement already satisfied: psankey in /usr/local/lib/python3.6/dist-packages (1.0.1)
fonts-nanum is already the newest version (20170925-1).
The following package was automatically installed and is no longer required:
  libnvidia-common-440
Use 'apt autoremove' to remove it.
0 upgraded, 0 newly installed, 0 to remove and 33 not upgraded.
import matplotlib.font_manager as fm
import matplotlib as mpl
import matplotlib.pyplot as plt

fontpath = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
font = fm.FontProperties(fname=fontpath, size=9)
plt.rc('font', family='NanumBarunGothic')
mpl.font_manager._rebuild()
mpl.pyplot.rc('font', family='NanumGothic')
fm._rebuild()
  • 위 코드 정렬이 끝난 이후에는 런타임-다시시작을 진행한다.
  • 위 셀만 실행한다.

I. 빅쿼리 연동

  • 지난 시간에 데이콘에서 내려받은 데이터를 빅쿼리에 넣는 작업을 진행하였다.
  • 빅쿼리에 저장된 데이터를 구글 코랩으로 불러오려면 다음과 같이 진행한다.

(1) 사용자 계정 인증

구글 코랩을 사용해서 인증 절차를 밟도록 한다. 아래 소스코드는 변경시키지 않는다. 아래 절차대로 진행하면 된다. Gmail 인증 절차와 비슷하다.