•
github
◦
contribute vs fork
멘토링
•
말똥말똥 리팩토링 수비님과 이어갈 예정~!
•
contribute
◦
원본 소스 코드있는 레포지토리에서 branch를 파생해서 여기서 변경된것들을 작업하고
◦
이걸 main/develop 브랜치에 PR을 올려서 머지한다!
◦
레포지토리에 작업자들을 컨트리뷰터로 추가해줘야되는 설정을 해야함!
•
fork
◦
원본 소스코드를 → 내 레포지토리로 복제해옴!
◦
포크질! → 포크로 찍어서 뜨는것
◦
개인의 깃헙 저장소!
◦
원본에 PR을 보내서 어프로브 > 머지하고 이런 과정은 동일하게 거칠 수 있다!
◦
오픈 소스 커뮤니티
•
포크를 포크할 수 있다~
◦
어디든지 PR을 보낼 수 있다!
•
서버 API의 필요성에 대해
◦
DB에 직접 CRUD를 할거야~
◦
리버스 엔지니어링을 해서 앱을 까봐요! 해커들이~
◦
앱 소스 코드를 알아낸다!
◦
소스코드하고 DB의 키값이 어떤건지 → 이 두개만 알면 게임 끝!
◦
클라에서는 DB를 직접 접근하는건 말도 안된다!
◦
힘들겠지만 최대한 보안에 신경쓰도록 해보자~
•
ctrl + option + -
•
케이크 앱을 여러 매장 등록할 수 있게~! 사업화!!
◦
현재는 투자보단 지표를 내봐서 사업성을 입증하고 니즈가 확실한지!!
◦
PO의 관점에서 바라보기!
•
환영합니다ㅎㅎ
•
시니나 케이크 화이팅!! 















•
2월에 Mash-up 모집~ 많관부ㅎㅎ
•
DispatchQueue
◦
UI는 main thread
◦
은행 앱을 만든다~
▪
1번 고객 (동일계좌)
▪
2번 고객
————— 시간의 흐름——————-
1.
1번 고객이 10,000원 입금
2.
2번 고객이 10,000원 출금 (출금이 아직 완료되진 않음)
3.
1번 고객이 10,000원 출금 (출금 버튼을 누름)
은행앱
→ 은행원은 3명
→ 고객줄은 1줄
→ 은행원 2명은 예금/출금 업무 (5초)
→ 은행원 1명은 대출 업무 (10초)
1.
고객Queue → 예금 / 출금 / 예금 / 대출 / 예금
예출금 은행원 예금(1번) 예금(3번)
예출금 은행원 출금 (2번)
대출 은행원 대출 (4번)
예출금 대출 예출금 대출~~~~~~~~~
Context Switching
예출금 1번 thread → 예금 (1번)
예출금 2번 thread → 출금 (2번)
대출 3번 thread
3개의 멀티스레드 → 1개의 프로세스 (프로그램 실행을 위한 작업단위)
스레드는 하나의 프로스세 내에서 실행되는 작업(Task) 흐름의 단위
~~~
멀티 스레딩 → 프로세스에서 둘 이상의 스레드를 동시에 실행하는것!
비동기는 작업에 대해 요청/결과를 동기로 실행하지 않고 1번 작업에 대해서 요청을 받고 결과를 처리하지 않아도 2번 작업 시작하는것!
→ 작업 효율을 높일수 있음
Concurrent(동시성) vs Paralleism(병렬)
동시성
•
싱글코어 멀티스레딩 (사실상 동시에 하는것은 아님)
•
논리적으로 동시에! (물리적으로 동시는 아님)
•
시간 분할 방식을 이용해서 스레드를 서로 번갈아가면서 일을 하게 하는것!
•
그래서 겉으로보면 저 병렬적인것과 동일하게 동시에 하는것처럼 보임! (논리적으로~ 물리적 ㄴㄴ)
•
비동기 자체가 동시성에 대해서 깊은 관련이 있다!
•
Context Switching (문맥 교환)
◦
스레드의 작업 타임을 교환하는것!
1초 2초 3초 4초 5초
◦
예금 예금 예금 예금 예금
◦
출금 출금 출금 출금 출금
◦
예금 출금 예금 출금 출금 예금 출금 예금
병렬은 정말 물리적으로 병렬한것!
•
멀티코어!
•
CPU가 여러개 → 일꾼이 두마리~! → 병렬적인것! (물리적으로 동시에!)
•
멀티 프로세스 vs 멀티 스레드
◦
멀티스레드
•
프로세스
◦
코드 / 데이터 / 스택 / 힙 → 프로세스 (OS내부에서)
◦
프로그램을 실행시키는 인스턴스
◦
프로세스간에는 각 메모리 영역이 독립적~!
◦
최소 1개의 스레드를 보유하고 있어요!
◦
프로세스끼리 기본적으로 접근 불가 (IPC, 프로세스 간 통신, 소켓 통신)
•
스레드
◦
프로세스 내에서 실행되는 하나의 흐름 단위
◦
한 프로세스 내에서 둘 이상의 스레드가 동시에 실행될 수 있죠~
◦
한 프로세스에 여러 스레드가 존재하기 때문에 프로세스의 메모리 자체를 여러 스레드가 공유할수 있다~
▪
스택 영역을 각각 스레드가 독립적으로 할당받고 힙/데이터 영역을 공유
•
CPU에서는 프로세스/스레드든 올려가지고 작업을 실행시켜야함
•
멀티 프로스세스
◦
OS안에서 여러 프로세스로 업무를 처리
•
멀티 스레드
◦
하나의 프로세스 내에서 여러 스레드로 작업을 처리~
•
스레드는 메모리 영역을 공유하기때문에 메모리가 애초에 절약이된다!
•
속도가 빠른것~!
•
멀티스레드는 힙/데이터 영역의 값을 공유 → 동기화 문제!
◦
Lock, Semaphore 같은 차단목을 만듬!
◦
병목현상이 생길 수 있음
◦
톨게이트가 없다보니까 사고가 많이 났음
◦
톨게이트를 1개만 만듬
◦
금요일 저녁 퇴근시간 → 병목이 일어남 ㅠ