2017-09-08 honux

코드스쿼드에서 무엇을 학습하였는가?

  • 스프링 부트 - 핸들바, 데브툴즈, H2-Database
  • 자바 - 겍체지향적인 사고(처음부터 객체지향을 설계하지말고 설계를 하고 클래스를 추출하여 객체지향을 완성하라, 단위 테스트를 먼.저. 작성하라.(요구사항에 맞는 단위테스트를 먼저 작성함으로써 프로덕션 코드의 필요한 부분의 구현을 정의한다. ))
  • 기초 - Mysql, 기초 메모리 구조, 알고리즘과 복잡도, Java Collection Framework, …
  • GIT - add, commit, branch, log, merge
  • linux - 우분투를 베이스로 한 명렁어(ls, cd, mkdir, ps, grep, … )
  • db - crud, 최소한 기초책 하나는 더 봐줘야한다.
  • 데이터를 얼마나 잘 저장하는가?
  • 데이터를 얼마나 잘 보여주는가? - 개발자가 하는 일
  • Spring + Collection(List, HashMap) + 자료구조, 알고리즘
  • File IO
  • Thread
  • 동기 / 비동기 - 웹스케일 규모의 사용자를 처리할때 근간이 되는 지식
  • 웹스케일 - 10만명이상의 규모

불필요한 지식은 없다. 여기서 더 알아야 한다.

  • 왜 배워야하는지를 정확히 생각하고 꼭 필요하다고 생각하고 학습하자.

동기, 비동기

  • 동기 / 비동기 블록 / 논블록 으로 나뉘어 진다.
  • 블록킹은 못들어오게 막는다.
  • 논블록킹은 안막는다.
  • 싱크 - 동기 : 상대편과 나와의 상태가 항상 같다.
  • 어싱크 - 비동기 : 상대편과 나와의 상태가 안같아서 언젠가 마춰줘야한다.
  • 블록킹 - 리턴되기전까지 멈춘다. (읽으면 리턴, 못읽으면 멈춘다.)
  • 논블록킹 - 즉시 리턴. (못읽으면 못읽는다. 읽으면 읽는다. 즉시 리턴한다.)
  • 커피를 타달라는 요청이 왓다. 커피가 있으면 타준다(블로킹, 논블로킹 둘다) 커피가 없으면 블로킹- 커피를 사러 멀리간다. 논블로킹 - 커피가 없다고 말한다.
  • 동기 - 주체는 나. 커피가 타졋는지 안타졋는지 확인을 내가한다. 비동기 - 이벤트가 발생하면 콜백(미리등록해노은 이벤트)가 발생한다.
  • 어떤 이벤트를 내가 직접 처리하면 동기, 어떤 콜백함수를 등록해놔서 이벤트가 실행하면 비동기 이미지
  • 대부분의 api들은 동기 - 블록킹이다.(자바의 file io, thread 등등..)
  • 블로킹의 비동기는 없다.(그림이 잘못된 사례다.)
  • 자바에서 비동기를 구현할려면 인터페이스를 만들어야한다.(추상메서드)

리눅스 명령어

  • echo - 알규먼트를 표준 출력 해준다.
  • 함수를 호출할때 넣는 값을 알규먼트, 함수를 선언할때 넣는 값은 파라메터
  • chown - 파일의 소유자 변경
  • chmod - 파일의 권한 설정 (r: 4 w:2 x : 1)
    • rwxr_xr_x : 7 owner 5 group 5 other
  • htop
  • env - 환경변수를 보여줌(배쉬(쉘)가 사용하는 환경변수) 커널(바깥) <-> 쉘 (안)
  • 쉘은 사용자와 운영체제가 대화를 하기위한 프로그램
  • 리눅스 명령어가 실행이 안되는이유는 $PATH에 등록된 위치가 아니거나 PATH가 잘못되었다.
  • 프로세스는 부모로 부터 생겨난다.
  • A라는 프로세스를 생성시키고 싶으면 P라는 부모 프로세스가 fork()로 P’를 생성시키고 exec(A)를 통해 P’를 A로 변환시킨다.
  • export 나와 내 자식에게만 적용된다.
  • export 변수명=값
  • 스크립트 파일을 이용해서 환경변수를 세팅하는 명령어 source (적용 범위는 나와 내 자식)

쉘스크립트 파일을 이용한 구구단

  • vi gugudan.sh 쉘 스크립트 파일 생성
  • chmod +x gugudan.sh 쉘 스크립트 파일에 쓰기 모드 추가
  • gugudan.sh 파일 내용
      #!/bin/bash
      read NAME
      for i in $(seq 1 9)
      do
            echo "$NAME * $i = $(($NAME*i))"
      done
    
  • 실행 화면
      3
      3 * 1 = 3
      ...
      3 * 9 = 27
    

슬랙에서 알림앱 만들기

  • 슬랙의 설정에서 add an app을 클릭한다.
  • 검색에서 Incoming webhooks를 치고 앱을 Add Configuration을 한다.
  • Add imcoming webhooks integration을 클릭한다.
  • Webhook URL 을 확인하고 JSON 파일을 보낸다.
  • 아마존 람다를 사용하면 쉘 스크립트를 사용하지 않고도 알림을 보낼 수 있다.

리눅스 자동배포 스크립트 만들기

  • git의 변경사항을 받아온다. (fetch)
  • 변경사항이 있으면 git merge orign/master 없으면 스크립트 종료
    #!/bin/bash
    echo "1. Run git fetch"
    git fetch
    ori=$(git rev-parse origin/master)
    local=$(git rev-parse master)
    
    echo "2. Check update"
    
    if [[ $ori == $local ]]
    then
          echo "Nothing to do"
          exit 0
    else
          echo "3. start deploy"
          git merge origin/master
          echo "4. Build"
          ./mvnw clean package
          echo "5. Restart Server"
          echo "서버를 죽이고 재시작"
          echo "1분뒤에 재시작"
    fi
    

Comments