서론
- 7.21 - 주특기 입문 주차 시작
- 아침 9시 ~ 저녁 9시까지 하루 총 12시간(+알파)
일정
- 7.15(금) : 알고리즘 팀 배정 및 OT
- 7.15(금) ~ 7.21(목): 알고리즘 문제풀이 시작
- 7.22(금) : 주특기 입문 주차 팀 배정 및 OT
- 7.22(금) ~ 7.23(토): javascript에 대한 학습 및 개인, 팀 프로젝트 진행
알고리즘
- 걷기반으로 알고리즘 위주보단 JS란 언어에 친해지자는 반으로 총 28문제를 풀이(난이도 하, 중하)
- 1주차 프로젝트에 촉박함에 비해 심적인 여유가 있었던 주차
- 28문제 이상 풀고 싶을 땐, 챌린지, 챌린지의 챌린지란 12문제, 14문제 추가 풀이 가능 (난이도 중, 중상)
- 챌린지까지 총 40문제 풀었음
주특기 입문
- 개인 프로젝트 (JS언어로 Node.js와 express.js를 이용하여 글 작성/수정/삭제 기능 및 댓글 작성/수정/삭제 기능 구현)
- 팀 프로젝트 (Javascript에 대해 중요한 점 찾아서 넣기)
- Node.js, express.js, mongoDB, Thunder Client, RoBo 3T 로 서버를 구현하기 시작함
- 아직 GET과 POST로 DB에서 불러오거나 넣는 기능만 구현 중(로그인, 회원가입은 불가능)
- 그럼에도 매우 복잡하다... 머리가 뒤죽박죽으로 섞여서 정리가 필요
- JS에 대해서도 본격적인 학습 시작. 프로토타입, 클래스, 프로미스, 논블로킹/비동기 방식 등....
- 걱정되는 점... 개인프로젝트에서는 js에 대해 따로 알려주지 않았다... 개인적으로 하고 있는 건데... 기본 베이스는 알려줘야하는 것 아닌가...?
배운점
Javascript
- 프로토타입 : 객체의 유전자 (아직 여기까지... 강의는 제로초, 애플코딩? 등 더 들어야 될 듯 하다.)
- 클래스 : 프로토타입 객체지향 언어인 자바스크립트에서 ES6이후로 Java의 클래스처럼 객체를 생성할 수 있게 함.(그럼에도 프로토타입 기반 언어임은 틀림없다. 기존의 상속을 사용시 코드가 매우 더러워지는데 이것을 클래스 형식으로 맞춤으로써 깔끔해질려고 넣은 듯)
- 프로미스 : 비동기/논블로킹 방식에서 우선 수행을 하고 그 결과를 언제든 자신이 꺼내고 싶을 때(then/catch) 꺼낼 수 있게 해주는 거? (아직 너무 어렵다... await/async동작방식도 알아야할 듯.)
- 비동기/논블로킹 : 한마디로 차례대로 진행하지 않고 하나의 작업을 끝나기도 전에 다른 작업을 진행한다는 뜻(논블로킹). 또한 1번 작업을 시작하고 끝나기 전에 3번을 진행할수도 있고 2번을 진행할 수도 있다(비동기).- 그렇다면 반대는 동기/블로킹이겠지? : 1번이 시작하면 끝날 때까지 다른 것들은 대기. 끝나고 2번을 수행. 3-4-5로 진행
- 싱글스레드 : JS는 싱글스레드이다. 사실 현재는 멀티스레드도 지원가능하지만 우리가 제어할 수 있는 스레드가 한개라 싱글스레드라고 함. 프로그램을 하나의 프로세스이고 그안에 여러 스레드가 있다. 크롬 브라우저를 생각하면 편할 듯. 크롬창 하나가 프로세스이고 그안에 여러 탭이 스레드이다.
- ES? : ES란 ECMA Script의 약자로 자바스크립트의 표준이나 규격을 나타내는 용어이다. 매년 이 표준이나 규격을 정하기 위해 모여서 뭘 더 추가했으면 좋겠다. 어느 버그를 고쳐야한다는 정한다. 그러다가 2015년에 거의 대격변의 느낌쓰로 문법이 변경되어서 ES2015 이전과 이후의 문법이 바뀌였다.(큰 틀은 바뀌지 않음) 여기서 ES2015가 ES6인데 4개의 숫자는 년도를 나타내고 1개의 숫자는 몇번째인지를 나타낸다. 즉 ES2015=ES6로 2015년에 바뀜=6번째로 바뀜이란 뜻. 2015년에 6번째로 바뀌었다. 란 뜻이다.
- ES6
- let, const : 기존 var는 호이스팅으로 변수 호출보다 변수 선언을 밑에 하더라도 변수 호출 시 defined로 나온다. 왜냐하면 var는 변수 선언시 초기화도 같이 해주기 때문인데 이는 우리가 원하지 않는 오류를 야기할 수 있다. 그래서 나온 것이 let과 const로 호이스팅이 되기는 하나 변수 선언과 초기화를 분리했기 때문에 호이스팅을 못하게 막아놓은 것. 또한 var는 함수기반 스코프인데 이는 if문 for문 같이 블록에서는 무쓸모가 된다. 그렇기에 let과 const는 블록 기반 스코프로 if문, for문 어디에서든 지역변수 설정이 가능하게 해준다.
- 비구조화 : 배열과 객체에서 값을 꺼낼 때 하나씩 꺼내와야하는데 이것을 수정해줌.
[a1,b1,c1, ,d1] =[a,b,c,d,e]
으로 가능하게 한 것이 비구조화. - 객체 초기자 : 객체를 생성할 때,
{a : a}
가 기본인데 이것을{a}
로 바꿔줬다. 중복되는 부분을 없애준 것. 함수 선언도 축약되었다. - 화살표 함수 : 콜백함수로 함수를 만들어 줄 때, 한번 쓸 것 같은 함수에 유용하다.
(a,b) => { return a+b}
이런 식으로 매개변수와 그안에 바디만 설정해줘도 가능하다. - 클래스 : 기존 더러웠던 상속을 클래스를 도입하면서 좀 더 가독성있는 코드로 만들어 줌.
- 그 외 많지만 아직 잘 모르겠다. 여기서의 클래스도 프로미스도 상속도 프로토타입도 더 공부해야 한다...
Node.js/ Express.js
- Node.js : JS코드를 브라우저 말고 어디에서든 동작할 수 있게 해주는 런타임(런타임 : 프로그램을 동작할 수 있게 해주는 환경)
- Express.js : JS언어로 코드를 짜고 Node.js로 동작해서 서버를 만들 때 도와주는 프레임워크
- Thunder Client : JS와 Node.js로 프로젝트 개발 시 결과를 브라우저로 확인해야 하는데, 이 프로그램으로 브라우저로 확인하는 것을 방지해줌. VScode내부에서 결과를 볼 수 있게 해줌. API Client라고 부르는데, 대표적인 것이 Postman, Insomnia, Swagger 등이 있다.
- mongoDB : Non-relational Data Base(NoSQL)로 비관계형 DB이다. 무결정과 정합성을 중심으로 하는 RDB에 비해 DB가 견고하지 않지만 급변하는 DB에는 안성맞춤이다. 보통 스타트업처럼 시장의 변화에 빠르게 변화해서 대응해야할 때 많이 쓴다. 그 중 하나가 mongoDB. JSON형식으로 데이터를 저장한다.
- RoBo 3T : DB Client로 데이터 조작과 보기를 도와주는 툴이다.
- GET/POST 메서드만 실행해봄. 아직 갈길이 멀고 머리가 뒤죽박죽인데다가 여기서 나오는 await/async에 대해선 알려주지도 않는다.
나의 생각과 이야기
- 알고리즘 주차에는 비교적 심적인 편안함이 있었다. JS의 filter, reduce, map함수 등 배열 프로토타입의 기능들을 조금은 터득한 듯 하다.
- CS(Computer Science)스터디가 시작되었다. '1일1로그 100일 완성 IT 지식'이란 책을 읽고 설명해주는 스터디이다.
- JS에 대한 기본 지식이 없는 도중에 Node.js와 Express.js 과정이 진행된다.
- 따로 JS에 대한 공부를 꾸준히 해야할 듯 하다. 중간중간 Node.js과정에서 프로미스 같은 것이 나오면 알려주지도 않는다....
- 알고리즘 주차에도 팀운이 좋았다. 동기부여도 되고, 공부하는 방법 등을 찾아가는 과정에서 팀원과 매니저가 도움이 되었다.
- 쉽지 않다....
'항해99 > WIL' 카테고리의 다른 글
[항해 99] WIL 6주차 - 첫 협업(잘 못했던 점...) (0) | 2022.08.21 |
---|---|
[항해 99] WIL 5주차 (0) | 2022.08.14 |
[항해 99] WIL 4주차 - 주특기 숙련, 주특기 심 (후기) (0) | 2022.08.07 |
[항해 99] WIL 3주차 - 주특기 입문, 주특기 숙련 (후기) (0) | 2022.07.31 |
[항해 99] WIL 1주차 - 미니 프로젝트, 알고리즘 (후기) (0) | 2022.07.17 |
댓글