기획도 어느정도 프로젝트에 포함된다고 생각되기는 하지만 
아무래도 직접 뭔가를 하는 것은 오늘이 처음인 것 같아서 오늘을 1일차로 정했다.

요구 사항 정의서를 담당하신 동기분이 어제 회의 후 빠르게 정리해주셨고
중요 페이지는 홈, 북마크, 보유, 마이페이지로 4개라고 볼 수 있었다.

관계형이 아닌 페이지형이라고 해서
아무리 검색해도 페이지형 데이터베이스라는 것을 찾기는 어려웠다.
데이터베이스의 구조를 보고 레퍼런스들을 본 결과
관계까지 보면 어려우니 그냥 페이지마다 필요한 데이터 정의서? 같은 느낌을 말씀하신 것 같았다.

diagrams라는 페이지에서 이것저것 만저보며 조금 연습하고
데이터, 상태가 거의 없는 페이지들을 채운 다음 질문드리자
이렇게 하면 된다고 말씀하셔서 안심하고 나머지 데이터를 채우려고 한다.

생각보다 요구사항 명세서의 기능이 많은데
내부에서 사용하는 것 뿐만 아니라 요청할 데이터 양식과
받을 데이터 양식도 문제인 것 같았다.

데이터 정의를 객체로 넣어도 되는지는 모르겠지만 일단 객체로 만들 수 밖에 없었다.

첫 페이지에 api와 거의 모든 데이터가 포함되어 있어 오래걸렸는데
나머지 페이지는 사실상 boolean값을 제외하고는 거의 그대로 사용해서 간단하게 마무리 할 수 있었다.(이게 맞는지는 모르지만)

구조를 보면서 필요 데이터를 찾고 정리하는 것이
개인적으로 작업할 때 바로 axios처리하는 것보다 오래 걸린 것 같지만
이것 또한 좋은 경험이 될 수 있을 것 같다.

일단 생각나는 방식으로 정의했다..




1.IPC(Inter Process Communication)는 기존에 설명했던 내용 중
프로세스는 단일작업이고 스레드는 서로 데이터를 공유해 충돌 위험이 있으며
프로세스는 위험이 없는 대신 무거워질 수 있다는 단점이 있다고 했는데
IPC의 명칭만 봐도 알겠지만 IPC는 프로세스의 소통을 가능하게 해준다.

IPC는 아래와 같은 종류들이 있다.

PIPE - 읽기, 쓰기를 각각 나눠 단방향 통신만 가능한 방식으로
  단방향이기 때문에 구현이 쉽지만 양방향은 복잡하며
  같은 부모를 가지고 있는 프로세스 사이에서만 통신할 수 있다.

Named PIPE - PIPE와 같은 단방향 통신이지만 
  이름으로 식별할 수 있기 때문에 모든 프로세스와 통신이 가능하다.

Message Queue - FIFO(선입선출) 형태로 메모리에서 데이터를 관리하며 
  여러개의 프로세스가 동시에 데이터를 다룰 수 있다.

Shared Memory - 주소 공간의 일부를 공유하며 
  공유 영역을 통해 통신을 하는 방식으로 가장 빠르지만 구현하기 어렵다.

Memory Map - Shared Memory와 유사하지만 파일을 메모리에 맵핑시킨다는 차이가 있다.

Socket - 클라이언트와 서버의 소통에 사용되며 
  서버에서는 bind, listen, accept의 명령어를 사용하고 
  클라이언트는 connect, close를 사용한다.
  
Semaphore - 한번에 하나의 프로세스만 접근 가능하도록 해 프로세스 사이의 데이터를 보호






(1).백준 13241 최소공배수는
유클리드 호제법을 사용해 최소공약수를 구한 다음
두 수의 곱에서 최소공약수를 나누는 방법으로 해결했다.

let [a,b] = `121 199`.split(' ').map(Number)

let x = a
let y = b
while(x%y){
    let z = y
    y = x%y
    x = z
}
console.log(a*b/y)

+ Recent posts