코드스쿼드에서 무엇을 학습하였는가?
- 스프링 부트 - 핸들바, 데브툴즈, 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