VSCode Terminal Customizing

서버에서 vscode 터미널 많이들 사용하고 계시죠?!! 캠퍼여러분들께 도움이되는 터미널 커스텀에 대해서 소개해드릴까 합니다!

vscode의 default terminal은 bash로, 커스터마이징의 끝은 순정이라고는 하지만.. zsh의 강력함을 한 번 맛보면 bash로 돌아가기가 정말 힘듭니다.


굉장히 칙칙한 bash


그러면.. zsh는 뭐가다른데?! 이미지 한장으로 보여드릴게요. 결과는 아래와 같습니다.

Powerlevel10k


딱봐도 엄청나죠..!!!? 위의 것들은 oh-my-zsh과 powerlevel10k, 그리고 zsh-autosuggestions 과 zsh-syntax-highlighting 이라는 플러그인을 적용한 모습입니다. 여러분들도 이대로만 따라하시면 위와같은 스마트한 기능과 멋을 가진 매력적인 터미널을 얻을 수 있습니다!

자 그렇다면 지금부터 본격적인 세팅 들어갑니다. 레쓰기릿!!

자세히 보기

AI Competition의 협업을 위한 플래닝가이드

🍡 떡볶이조 팀원들 🔥

김다영 김아경 문하겸 박지민 이요한 전준영 정민지
Avatar Avatar Avatar Avatar Avatar Avatar Avatar

7명의 팀원이 2주동안 잠도 거의 안자가면서 올인했던 P Stage의 ‘마스크 착용 분류 대회’에 대한 플래닝 가이드입니다. 저희는 각자 실력도 다 다르고 협업문화도 잘 모르는 상태로 대회에 임하였습니다. 그러다 보니 뭘 해야할지 모르는 순간들도 너무 많았고, 여러 시행착오를 겪었기 때문에 다음 기수분들 혹은 인공지능 대회 프로세스 중 협업관리를 어떻게 하는 것이 좋을지 저희의 경험을 조금 나누어볼까 합니다.

당연히 처음엔 너무 막막했어요. 이게 잘 될까? 싶었던 대회였는데, 계속해서 시간과 에너지를 쏟으니 별로 경험이 없는 사람들 7명이서 38개 조 중 13등을 하게 되었습니다. 물론 순위권에 들었으면 좋았겠지만, 대회는 처음인 사람들끼리는 나름 성공적인 결과였다고 생각합니다. 이러한 저희 조의 이야기들이 어떤 형태로든 도움이 되고, 좋은 레퍼런스가 되기를 바랍니다.


🦆 대회 전략 수립 및 협업환경 구축


이번생에 협업은 처음이라..

자세히 보기

Paper Review를 위한 깃허브 협업 페이지 관리하기

팀프로젝트를 진행하면서 여러 목적성을 가진 채널이 필요해졌고, 그 중 하나가 논문리뷰한 자료들을 어떻게 관리할지였다. 팀원들 모두 퀄리티가 너무 좋게 준비를 잘 해오셔서 시각적인 요소들을 사용하여 자료를 공유할 수 있으면 좋겠다는 생각을 했고, 여러 이야기 끝에 깃허브 페이지를 사용해보기로 했다.

Jekyll or Hexo?

깃허브 페이지를 관리할 때 주로 Jekyll과 Hexo를 사용한다. 처음에는 Jekyll로 페이지를 꾸며보았지만 동적 사이트 생성방식인 Jekyll은 반영시간이 매우 길고 관리가 귀찮기 때문에 Hexo로 옮기게 되었다.

Previous Install

  • Node.js
    • Mac의 경우 brew install node 로 설치할 수 있다.
    • 설치가 잘 되었는지 확인하기 위해서는 cmd(window) 혹은 터미널(mac)에서 npm version 을 쳐보자!
  • git

환경 세팅

docs 등 로컬에서 관리할 폴더만 하나 만들어두고, PaperReview 레포지토리를 클론받습니다.

git clone https://github.com/Boostcamp-AI-Tech-1-15/PaperReview.git

PaperReview 레포지토리를 클론받고 현재 develop 브랜치에 관련 파일들을 전부 올려두었는데,

  1. cd PaperReview
  2. git checkout develop
자세히 보기

Vscode에서 Python Convention 지정하기

  1. vscode에 python extention 설치하기

  2. 가상환경에 autopep8 패키지 설치

    • conda install autopep8 (anaconda)

    • pip install autopep8 (pip)

  3. 가상환경에 pylint 패키지 설치

    • conda install pylint (anaconda)

    • pip install pylint (pip)

  4. vscode에서 cmd , (mac) ctrl , (window) 를 누르고 Settings 탭에 진입.

  5. Settings 검색창에 FormatOnSave 검색 후 체크박스에 체크.


위의 방법으로 되지 않는다면, vscode의 settings.json 파일 확인 후 아래 인자들이 작성되어있는지 확인, 되어있지 않다면 복붙하고 저장

  • python.formatting.autopep8Path 는 직접 확인하여 작성해야함.
    • Mac(m1)의 경우 Conda 설치시 /opt/homebrew/Caskroom/miniforge/base/bin/autopep8 경로에 있음.
1
2
3
"editor.formatOnSave": true,
"python.formatting.provider": "autopep8",
"python.formatting.autopep8Path": "Autopep8 실행파일 위치",
자세히 보기

협업을 위한 Git 사용 매뉴얼 순한맛

사전준비

  1. git init
  2. git config --global user.name "YOUR_GITHUB_NAME"
  3. git config --global user.email "YOUR GITHUB_EMAIL"

위 세 단계가 이루어지지 않으면 private 레포지토리에 접근할 수 없을 수도 있습니다!

USAGE

  1. git clone "YOUR_REPOSITORY" 관리할 레포지토리를 clone.
  2. cd "YOUR_REPOSITORY" clone 받은 레포지토리로 change directory
  3. git checkout -b "BRANCH_NAME" 을 통해 브랜치를 생성하고 해당 브랜치로 전환.
  4. git add & commit
  5. git push origin "BRANCH_NAME" add/commit 한 내역들을 BRANCH_NAME 브랜치에 push한다.
    • push 가 되어있지 않다면, git pull origin "BRANCH_NAME" 을 시도해볼 것.
  6. 브라우저로 해당 레포지토리로 이동한 후, push한 브랜치로 변경한다.
  7. compare & pull request 버튼을 클릭한다.
  8. pull request를 날리고 싶은 브랜치(head) 를 설정하고 pull request 버튼을 클릭한다.
  9. 다른 팀원들이 리뷰 및 커멘트를 날리고 리뷰가 끝났다면, Merge를 한다.

명령어

  1. git checkout -b "BRANCH_NAME" BRANCH_NAME으로 된 브랜치를 생성하고 현재 브랜치를 생성한 브랜치로 변경한다.
  2. git checkout "BRANCH_NAME" 현재 브랜치를 “이미 생성되어 있는 BRANCH_NAME”으로 변경한다.
  3. git branch -d "BRANCH_NAME" BRANCH_NAME으로 되어있는 브랜치를 삭제한다.
  4. git remote -v 깃에 연결된 원격저장소를 확인한다.
  • 추가예정

그 외 팁들

  1. 커밋메세지 템플릿 적용하기

    • touch ~/.gitmessage.txt gitmessage.txt 파일을 생성한다.

    • vim 등의 에디터로 gitmessage.txt 파일에 아래 내용을 복사&붙여넣기 한다.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      # <타입>: <제목>

      ##### 제목은 최대 50 글자까지만 입력 ############## -> |


      # 본문은 위에 작성
      ######## 본문은 한 줄에 최대 72 글자까지만 입력 ########################### -> |

      # 꼬릿말은 아래에 작성: ex) #이슈 번호

      # --- COMMIT END ---
      # <타입> 리스트
      # feat : 기능 (새로운 기능)
      # fix : 버그 (버그 수정)
      # refactor: 리팩토링
      # style : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없음)
      # docs : 문서 (문서 추가, 수정, 삭제)
      # test : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)
      # chore : 기타 변경사항 (빌드 스크립트 수정 등)
      # ------------------
      # 제목 첫 글자를 대문자로
      # 제목은 명령문으로
      # 제목 끝에 마침표(.) 금지
      # 제목과 본문을 한 줄 띄워 분리하기
      # 본문은 "어떻게" 보다 "무엇을", "왜"를 설명한다.
      # 본문에 여러줄의 메시지를 작성할 땐 "-"로 구분
      # ------------------
    • git config --global commit.template ~/.gitmessage.txt 해당 gitmessage.txt를 전역 커밋 템플릿으로 설정한다.

  2. Alias 적용하기. 아래와 같이 alias 를 (맥이라면 ./zshrc) 저장하면 단축어로 사용할 수 있다.

자세히 보기

Tensorflow에서 Value Error: Unknown Layer: Functional 문제

이미지 출처 - https://bugloss-chestnut.tistory.com/entry/Tensorflow-keras-h5-pb-tflite-%EB%B3%80%ED%99%98-%EC%98%A4%EB%A5%98python

문제 원인 및 발생 경위

Tensorflow 로 구현된 사전학습 모델을 사용하게 되면 심심치 않게 해당 오류를 발견할 수 있다. 이것은 로컬 혹은 컨테이너 환경에서의 Tensorflow 버전이 사전학습 모델의 Tensorflow 버전과 일치하지 않아서 생기는 문제이다.

왜냐하면 Tensorflow 2.3 버전에서 model을 저장할 때의 json 구조가 달라졌기 때문이다.

기존의 (Tensorflow 2.2 버전 이전) 모델 저장 구조

1
2
{"class_name": "Model", "config": {"name": "model_1", "layers": [{"name": "input_1", "class_name": "InputLayer" ...

변경 이후 (Tensorflow 2.3 버전 이후) 모델 저장 구조

1
2
{"class_name": "Functional", "config": {"name": "functional_1", "layers": [{"class_name": "InputLayer" ...

- 참고 smecsm.tistory.com/180

필자는 Tensorflow 2.3 버전이 Release 되기 전에 학습되어 공개된 사전학습 모델들을 사용하거나 새로 학습을 시킨 모델을 load하려는 상황에서 Value Error: Unknown Layer: Functional 에러를 자주 보았는데, 이것을 해결하기 위해 상당히 많은 시행착오를 겪었다.

자세히 보기

Your True Review - 감정분석기반 영화 리뷰 평점 예측 서비스

안녕하세요. ‘2020 국어 정보 처리 시스템 경진 대회’에 참가하게 된 42Seoul의 Team Gaepodong 입니다.

너무나 좋은 동료분들과 함께 프로젝트를 진행하였으나, 대회에는 아쉽게 탈락하게 되었습니다.😭

그럼에도 이렇게 대회 참여 후기를 작성할 수 있게 해주신 Polarbear님과,

이런 좋은 경험을 할 수 있게 해준 42Seoul에 다시금 감사함을 느끼면서

저희의 프로젝트를 공유해드리고자 합니다.

1. 대회 소개

문화체육관광부와 국립국어원이 주최하는 ‘2020 국어 정보 처리 시스템 경진 대회’는

국립국어원이 구축한 말뭉치 자원의 활용도를 높이고 국어 정보를 처리하는 시스템의 개발 및 수준을 높이기 위한 대회로,

자세히 보기

Word2vec Visualization

작년에 정부주도의 차세대 정보처리 연구사업(이하 차세정) 2019에 연구원으로서 참여했을 때

처음으로 받았던 과제이지만 당시에는 내 실력이 너무 부족했기 때문에

시도조차 할 수 없었다.

오랜만에 지도교수님을 뵈었을 때, 실력이 늘었으면 한 번 시도해보라는 말씀에 다시 과제를 잡게 되었다.

그런데 웬걸, 몇시간도 걸리지 않고 과제를 완료할 수 있었다.

과제관련 github

Van-Thuy Phi라는 사람이 만든 프로젝트로

word2vec model을 json으로 converting한 후 웹페이지에 tree구조로 시각화하는 것이 과제였다.

내가 받은 과제에서는 english-cosine-skipgram으로 생성된 모델들이 전처리가 되지 않은 채 들어있었다.

자세히 보기

Papago NMT API를 이용하여 자동번역 카카오챗봇 만들기

안녕하세요.

네이버의 Papago NMT API를 이용하여 자동번역 카카오톡 챗봇을 구현해 보겠습니다.

사전 준비

카카오톡 OBT 신청

개발 환경

Goorm IDE, Flask, Python, Kakaotalk, Naver API


1. Naver Developers App 생성

https://developers.naver.com/products/nmt/

우선 위 링크에 들어가서 오픈 API이용 신청을 클릭합니다.

자세히 보기

Teachable Machine Model과 카카오 챗봇 연동시키기

안녕하세요.

어린이도 쉽게 만드는 인공지능, 구글의 Teachable Machine에서 추출한 모델을 가지고

goormide, keras, flask를 이용하여 API를 만들어서 카카오 챗봇과 연동시켜 보겠습니다.

개와 고양이를 분류하는 모델을 만들고

유저가 챗봇에서 개 사진을 보내면 “개”라는 텍스트를,

고양이 사진을 보내면 “고양이”라는 텍스트를 출력해 보겠습니다.

주의사항

챗봇을 만들기 위해서는 사전에 카카오 i 오픈빌더에 오픈베타 신청을 하셔야 됩니다.

사전준비 및 모델 생성

이미지를 직접 웹캠으로 추출해도 되지만, 편의를 위해 크롬의 확장 프로그램 ‘Image Downloader’를 이용하여

자세히 보기