{
"name": "tutorial",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
이름처럼 JSON 포맷으로 이루어져 있다.
npm init // 프로젝트명, 설명 등 작성할 내용이 있을 경우
npm init -y // 입력할 내용없이 package.json 생성
yarn init
yarn init -y
기본 정보란 package.json을 자동으로 생성할 때(npm init), -y를 명령어를 붙이지 않은 경우 입력하게 되는 것들을 나타낸다.
name, version, description, author, license 등을 입력할 수 있는데, 프로젝트에 대한 간략한 내용을 입력할 수 있다. 처음 생성할 때 입력하지 않은 경우에 추후에 package.json을 변경하여 입력할 수 있다.
{
"name": "tutorial",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"react": "^17.0.2", // react 설치 결과
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
npm install
여기까지가 기본적인 형태와 설명들이고
보다 자세한 설명은 https://hoya-kim.github.io/2021/09/14/package-json/ 여기를 참고하면 더 상세하게 나와있습니다.
REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다.
즉 REST란
Create : 데이터 생성(POST)
Read : 데이터 조회(GET)
Update : 데이터 수정(PUT)
Delete : 데이터 삭제(DELETE)
REST는 다음과 같은 3가지로 구성이 되어있다.
자원(Resource) : HTTP URI
자원에 대한 행위(Verb) : HTTP Method
자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load
Server-Client(서버-클라이언트 구조)
Stateless(무상태)
Cacheable(캐시 처리 가능)
Layered System(계층화)
Uniform Interface(인터페이스 일관성)
HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해 준다.
HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
서버와 클라이언트의 역할을 명확하게 분리한다.
표준이 자체가 존재하지 않아 정의가 필요하다.
사용할 수 있는 메소드가 4가지밖에 없다.
HTTP Method 형태가 제한적이다.
브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구된다.
구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다.(익스폴로어)
하지만 REST API를 올바르게 설계하기 위해서는 지켜야 하는 몇가지 규칙이 있으며 해당 규칙을 알아 보겠습니다.
#1
프로세스 와 스레드 사실 살면서 처음들어보는 단어인데, 이것에 관해서 조사를 해서 설명을 하고 발표를 하라니
내 스스로 생각해도 너무 대책없이 나간건 아닌가 하는 생각이 들었다.
하지만 이걸 준비하면서 스스로가 더욱 성장할 수 있다라는 생각에 지원했던 만큼 안하려면 안했지 기왕한거 멋지게 하자는 생각에 열심히 준비했던 것 같다.
회사 생활을 할때 내가 후배 사원들을 가르칠 때 느꼇던 것중 가장 큰 요소는 내가 스스로 알지 못하면 가르치지 못한다는 점이였고, 내가 안다고 해서 상대방도 그것을 무조건 알아들으라는 법은 없다는 것이였다.
즉, 내가 제대로 알지 못하면 제대로 설명할 수 없고, 그것은 제대로 알고 있는 것이 아니였다.
#2
그래서 항해톡을 준비하며 우선은 내 스스로가 이해하려고 더 노력했던 것 같다.
그 다음은 내가 이해한 것을 어떻게 하면 쉽게 설명할 수 있을까 였다.
짧은 시간에 이해하려다보니 깊게 이해하기보다는 조금은 가볍게 이해하고 있어서 설명에 어려움이 있던 찰나
역시나 뭐가 안될때는 구글링이 답이였다.
너무나 좋은 예시로 설명해준 부분들을 참고하면서 나의 발표를 듣는 모든 사람들이 나처럼 힘들게 아는게 아니라 쉽게 이해하길 바랬고, 다행히도 그런 나의 의도가 잘 전달된거 같아서 너무 기뻣다.
#3
약간의 핑계를 대자면 항해톡에 집중하느라 개인과제에 힘을 못쓴게 조금 아쉽긴 하지만, 그래도 이것을 하면서 확실히 얻어가는게 더 많았다고 생각한다.
라는 게 이번주의 핵심인것 같다.
- 쉽게 말하면 **자신이 무엇을 알고 무엇을 모르는지 아는 것을 의미합니다.**
- 프로젝트에 돌입하기 자신의 강점, 보완점을 꾸준히 파악하고 이에 따른 학습을 계획합시다!
#1
우선 이번주차의 나의 가장 큰 실수는 내가 해야될 정확히는 이번주의 해야될 과제 내용을 정확히 파악하지 않은채 이해하겠다는 생각으로 강의만 주구장창 본게 나의 가장 큰 잘못인 것 같다.
심지어 그것조차도 내가 완전히 이해하고 새롭게 만들 생각은 못한채 내가 이해할 수 있는 부분은 한정적이니깐 우선 기존 과제를 조금 수정해서 만들어야지 라는 오만한 생각까지 했다는게 너무 괘씸하다.
그래놓고 이렇게 따라만 해서 내가 나중에도 잘할 수 있을까 하는 의문을 들었다는게 더더욱 충격인것 같다.
마치 이길이 아닌것 같은데 하는 하면서도 그 길로 가는 길치들의 전형적인 특성처럼, 내 스스로가 나를 잘못된 길로 가게하고 있던 건 아니였나 하는 생각이 들었다.
#2
누군가에게는 오지랖일수도 있지만 누군가에게는 인생이 바뀔수도 있는 것이 바로 그 사람의 단점을 말해주는것이라고 생각한다. 잘못된 길로 가서 낭떠러지로 가고 있어도 그걸 말해주지 않는다면 살인 방조죄나 다름 없듯
단점을 지적한다는 것은 어떻게 받아들이냐에 따라서 누군가의 인생이 바뀔수도 있는 문제이다.
그래서 단점을 보고도 말해주지 않는게 사람이 할 수 있는 가장 나쁜짓이라고 하는건데, 나는 나 스스로에게 그렇게 하고있었다.
모르는게 있으면 부족한게 있으면 그것을 알고 넘어갈 생각을 해야하는데 지금은 일단 해야하니깐, 지금은 어떻게든 넘기고 나중에 보충하면 되지, 라는 안일한 생각이 나를 점점 더 깊이감 없는 개발자로 바꿔나가고 있었던 것 같다.
과거 회고록에서 적었듯 나는 내가 부족한 것을 알면서도 그것을 고치려하지 않는 나쁜 버릇이 있었는데, 이번것도 그것의 연장선 인것 같다.
그래도 난 다행인지 좋은 사람들을 많이 만나서, 나의 단점을 나의 부족한 것들을 채워줄 수 있는 사람들을 만나서 조금의 변화는 있을 것 같다.
최경식 매니저님이 가르쳐준
라는 피드백은 남은 2주차 역시 힘들겠지만 어떻게 생각하고 행동해야 될지를 알게된 것 같아서 기뻤고,
이번주차의 같은조원인 성현님과 진우님에게
라는 피드백 역시 나의 단점을 지적하면서 내가 어떻게 해야될지를 짚어주는 피드백이여서 너무나 도움이 되었다.
확실히 개인적인 이유로 스스로가 너무 조급해하며 배웠던 것도 있는 것 같다. 힘들겠지만 조급함을 내려놓고
배움으로써 생기는 무지에 대한 두려움을 떨쳐내는 기쁨을 좀더 생각해야 겠다.
그리고 위에 적어놨던 것처럼 내가 스스로 알지 못하면 그것은 할줄 아는게 아니고, 자꾸 미루고 미루고 하면 결국 나는 미루기만 할 줄 아는 개발자가 될 것이기 때문에, 나의 이 단점들을 극복하기 위해 기술적인 TIL 도 좀 써가면서 내가 못하는것만이 아닌 내가 잘하고 할줄 알게 되는것을 좀더 가꿔야겠다는 생각이 든 한주차 였따.