본문 바로가기

항해99_10기

(109)
[기술면접 스터디][230221] OOP와 REST API Q1. 객체지향 프로그래밍(OOP)에 대해 설명해주세요. 알고있는 원칙이나 키워드를 언급해주세요 객체지향 프로그래밍은 프로그램의 상호 작용을 객체 집합으로 표현하며, 객체 내부에 선언된 메서드를 활용하는 프로그래밍 방식을 말합니다. 다른 프로그래밍 패러다임에 비해 처리 속도가 느리고, 설계에 많은 시간이 소요됩니다. 객체지향 프로그래밍의 특징으로는 추상화, 캡슐화, 상속성, 다형성이 있습니다. 또, 설계 원칙으로는 단일책임원칙, 개방-폐쇄 원칙, 리스코프 치환 원칙, 인터페이스 분리 원칙, 의존 역전 원칙의 SOLID 원칙이 있습니다. OOP는 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식 설계에 많은 시간이 소요 처리 속도가 다른 ..
[14주차] [230215] 인텔리픽 모의 면접 후기 오늘은 실전 프로젝트가 끝나고 주말동안 작성한 이력서를 토대로 모의 면접을 진행했다. 사실, 실전 프로젝트가 끝나고 마음이 많이 상해서 뭘 하지 못했다. 이력서 공개 피드백을 받은 다른 사람들의 이력서에는 프로젝트 개선 사항에 대해 화려하게 적혀 있었는데, 나는 6주동안 남들보다 잠도 못자며 시간을 말 그대로 갈아 넣어서 프로젝트를 겨우 완성시켰는데, 개선사항으로 적을 게 하나도 없어서... 너무 허무했다. 그래서, 한 3일을 침대에 파묻혀 지낸 것 같다. 어쨌든.. 그래도 주말에 신청했던 모의 면접 시간이 기어이 다가왔고, 준비를 하나도 하지 않았으니 당연히 기술 질문에 답을 할 수 없었다. 우선 모의 면접 질문은 항해에서 준비해준 50문항 템플릿을 그대로 따라 진행해 주셨다. 준비를 하지 않았던 터라..
[9주차] [WIL] 2023.1.6 ~ 1.12 실전프로젝트 2주차 회고 깃허브 projectd에서 전체 개발 프로세스 이슈 만들기를 했다. 이슈를 늘어놓고 보니, 스케쥴 가늠해보기와 일의 우선순위 정하기가 수월해졌다. 한 주동안, nestjs에서 typeorm을 사용하여 레포지토리르 주입하는 방식을 사용할 수 있도록 작업을 진행했다. 이 과정에서 게임 방을 생성하고, 입장하고 퇴장하는 과정에 필요한 데이터를 설계하였다. socket 코드를 gateway에서 service 레이어를 사용하여 레포지토리에 접근할 수 있도록 리팩토링 작업을 진행했다. 익숙한 express가 아니고, 타입을 맞춰서 작업해야 하기때문에 개발 속도가 무지하게 느려졌다. 그렇지만, express에 비해 좀 더 구조적이고, 코드를 쓰면서 에러를 확인할 수 있다는 장점이 있다. 좀 더 분발해서 개발 속도를 ..
[8주차] [20220103] nest.js 맛보기 실전 프로젝트에서 typescript를 사용하기로 했기때문에, 우리는 오늘 nest.js를 사용해보고 결정하기로 했다. 마침, 노마드 코더에 nest.js REST API 만들기 강의가 무료로 열려 있어서 각자 강의를 통해 간단히 nest.js의 맛을 보고 모여서 프론트와 백이 함께 간단한 CRUD 미니 프로젝트를 진행했다. AWS EC2로 서버를 열었는데, pm2를 이용해 nest start 명령어를 사용할 수 없었다. 인터넷을 찾아보니, package.json scripts에 정의 되어 있는 명령어 중 start:prod를 사용하면 되었다. pm2 "npm start:prod" start:prod는 start dist/main.js로 정의 되어 있다. 따라서, dist 폴더에 main.js가 이미 최..
[8주차] [20230102] 실전 프로젝트 적용 기술 스택 조사 오늘은 프로젝트 진행에 있고 백과 프론트에서 공통으로 사용할 기술 스택에 대해 조사를 진행했다. 우리는 socket 통신을 기반으로 실시간 비디오 / 채팅이 가능한 게임을 구현하기로 했기 때문에, 통신에 필요한 기술을 검색하고 어떤 것이 우리 프로젝트에 어울릴 지에 대해 논의했다. TCP 통신 Node.js 내장 모듈인 http vs https 모듈 비교 The difference between HTTP and HTTPS is if you need to communicate with the servers over SSL, encrypting the communication using a certificate, you should use HTTPS, otherwise you should use HTTP. ..
[WIL 7주차] 2022.12.23 ~ 2022.12.29 회고 (feat. 노션 클론코딩 완료 후기) 7주차에는 1주일간 클론 코딩을 진행했다. 우리 팀에서는 socket.io를 이용해 노션을 클론코딩 하기로 했다. 페이지 내에 접속하는 모든 유저가 공동으로 문서를 실시간 편집하도록 해야 했기 때문에, 우리는 UDP통신을 가능하게 해주는 socket.io 라이브러리를 사용하게 되었다. 사실, 백엔드에서는 통신에 필요한 코드가 전혀 어렵지 않았다. 실시간 문서 공동 편집을 위한 대부분의 기술적 처리는 프론트에서 이루어졌고, 백엔드에서는 랜던 닉네임, queue 자료구조를 이용한 페이지 저장 등의 비즈니스 로직을 구현하는데 힘을 쏟았다. 이 프로젝트를 하면서 가장 좋았던 점은, 내가 해보고 싶었던 기술을 사용해 보았다는 것, 그리고 redis라는 새로운 in memory cache db를 다뤄보았다는 점이다..
[8주차] [20221231] 실전 프로젝트 기획 어제(12/30)부터 드디어 대망의 실전 프로젝트가 시작되었다. 우리팀 디자이너분께서도 아주 열정적으로 아침부터 밤까지 회의에 참여하면서 다 같이 머리를 맞대고 기획회의를 진행했다. 여러 아이디어가 나왔지만, 이미 누군가가 했거나, 우리가 해야 할 메리트를 찾지 못해서 폐기하고 폐기하다가, 결국 우리는 게임을 만들어 보기로 선택했다. 개발자 취업에 도움이 되는 주제로 실시간 대전 게임을 만들어보기로 한 것이다. 자세한 기획 내용은 스포가 될 수 있으므로 생략하도록 하고... 그래도 다행히 다 같이 어느정도 만족하는 내용으로 기획의 방향이 잡힌 것 같아 안심되었다. 뭔가 우리가 하고 싶은 기능들을 잔뜩 늘어놓긴 했는데, 3주라는 시간동안 해당 기능을 모두 개발할 수 있을지는 잘 모르겠다..ㅋㅋㅋ 기획한 기..
[7주차] [20221229] 1주일 notion clone 챌린지 회고 1주일간 노션 클론 챌린지를 진행했다. 프론트 개발을 맡은 팀원들이 많이 고생했고, 덕분에 성공적으로 프로젝트가 마무리되었다. 조금 아쉬운 부분은, 1시간마다 서버에서 페이지 정보를 자동 저장하고, 프론트에서 브라우저의 페이지를 자동 갱신해줘야 하는데, 이부분은 시간이 없어서 제대로 구현하지 못했다. 서버에서는 누가 socket에 접속을 했든 안했든 상관 없이 매 1시간마다 최신 document를 setInterval 함수 안에서 db에 자동 저장하고, 저장 직후에는 document를 null로 할당하는 구조였다. 그런데, 문제는 document를 null로 할당할 때, 서버에서 일어나는 이 이벤트를 감지해서 접속한 모든 socket의 페이지에 반영을 해줘야 하는데, 그게 안된다는 것이었다. socket..