본문 바로가기

전체 글

빌드도구란? (Maven, Gradle) 빌드도구는 소스코드에서 어플리케이션 생성을 자동화 하기 위한 프로그램이다. 빌드는 코드를 사용 or 실행 가능한 형태로 컴파일링, 링킹, 패키징 하는것을 포함한다. 기본적으로 빌드 자동화는 아래와 같은 정형화된 다양한 작업을 스크립팅하거나 자동화 하는 행위이다. 종속성 다운로드 소스코드를 바이너리코드로 컴파일 바이너리 코드를 패키징 테스트 실행 프로덕션 시스템에 배포 사용 이유 대규모 프로젝트에선 빌드프로세스를 수동으로 호출이 실용적이지 않다. 무엇을 빌드할지, 어떤 순서로 할지, 어떤 의존성이 있는지 모두 추적하기 쉽지 않기 때문이다. 빌드도구를 사용하면 이를 일관되게 할 수 있다. Maven vs Gradle Maven은 고정적이고 선형적인 단계의 모델을 기반으로 한다. 반면 Gradle은 작업 의존.. 더보기
N Tech Service 인턴십 3,4주차 회고 3주차, 시간 배분과 계획을 제대로 수행하지 못한 한 주 였다. Project 2를 마무리하고 Project 3을 들어가야 했기에 봐야 할 강의가 많았다. 하지만 설 연휴만 믿고 출퇴근 시간과 퇴근 후 시간을 허비했다. 심지어 설 연휴에 생각지못한 바쁜 일정으로 계획한 내용을 거의 수행하지 못했다. 할 일을 미뤄서 좋을게 없다는걸 다시 한번 깨달은 한 주 였다. 4주차, 지난주의 부진을 보완하기위해 바쁘게 보낸 한 주 였다. 퇴근 후에도 집에 가기전, 집에 가서 늦게까지 미션을 진행하고 공부하면서 겨우겨우 템포를 맞출 수 있었다. 그러나 아직 학습이 부족했고, 명확이 설명을 할 수 없는 코드가 존재했다. 자바, 스프링을 모르는 상태에서 시작했으니 좀 더 열심히 노력 해야겠다. 아쉬운 부분 테스트 코드 부.. 더보기
N Tech Service 인턴십 2주차 회고 이번 한주는 시간이 참 부족한 한 주였다. Java를 제대로 공부해 본 적이 없다 보니 관련해서 학습해야 할 내용이 많았다. 자료를 찾고, 해당 내용을 익히느라 시간을 많이 소비했다. 그렇다 보니 다른 사람에 비해 속도는 많이 나지 않았다. 하지만 많은 자료를 찾아보고 정리하고 공유하면서 배운 게 많은 한 주였다. 아쉬운 점 자동생성, 외부참조 코드의 의미 파악 부족 이번 한 주는 내가 작성한 코드의 의미는 최대한 파악하면서 보냈다. 하지만 간과한 부분이 있었다. 프로젝트생성시 자동생성 코드와 외부 코드를 참조할때 의미를 파악하지 않고 그대로 붙여넣었다. 이로 인해 불필요한 디펜던시를 사용하고 있었고, 사용하지 않는 인스턴스를 생성했다. 내가 직접 작성하지 않은 코드라도 의미를 파악하고 남에게 설명 할 .. 더보기
N Tech Service 인턴십 1주차 회고 N Tech Service(이하 NTS) SW개발분야 인턴십을 1주일간 진행하며 느낀점과 배운점. 인턴십 진행방식 NTS SW개발 분야 인턴십은 부스트코스 강의를 수강하고, 미션을 제출하면 멘토들이 리뷰해주는 방식으로 진행된다. 대부분 인턴 4명당 멘토 2명이 배정되었고, 우리조는 인턴2명에 멘토 2명이다. 부스트코스 부스트코스는 자바기반 풀스택 과정이다. 온라인 강의는 윤지수님과 강경미님께서 해주신다. 나는 Node.Js 중심으로 학습 해왔기에 새로 배울 내용이 많지만, 코스 진행방식이 내가 학습했던 코드스쿼드와 비슷하기 때문에 어렵지 않게 따라갈 수 있을것 같다.(윤지수님은 코드스쿼드에서 웹프론트엔드 마스터로 강의하고 계신다.) 아쉬웠던 점 코드의 의미파악 X 가장 아쉬운 부분이다. 정확한 내용은 모.. 더보기
다른 도메인 간에 Fetch API로 Cookie 주고받기 in Express.js 개발을 하다보면 서버와 클라이언트가 각각 별도의 도메인을 가지고 있는 경우가 있습니다. 이때 Fetch API를 이용해서 Cookie 를 주고 받는 방법에 대해서 알아보겠습니다. API 생성 먼저 쿠키를 생성하는 api와 요청에 들어온 쿠키를 응답해주는 api를 작성해 줍니다. const createError = require('http-errors'); const express = require('express'); const path = require('path'); const cookieParser = require('cookie-parser'); const logger = require('morgan'); const app = express(); app.use(logger('dev')); app... 더보기
이진 트리 (Binary Tree) 2진트리(Binary Tree) 2진 트리(Binary Tree)란 각각의 노드가 최대 두개의 자식 노드를 가지는 트리이다. 목차 순회 종류 완전 이진 트리 구현 순회 비선형 자료구조인 트리의 순회에는 많은 방법이 존재한다. 전위순회 (Preorder) 중위순회 (Inorder) 후위순회 (Postorder) 전위 순회 부모 노드 - 왼쪽 자식 노드 - 오른쪽 자식 노드 순서로 순회한다. 중위 순회 왼쪽 자식 노드 - 부모 노드 - 오른쪽 자식 노드 순서로 순회한다. 후위 순회 왼쪽 자식 노드 - 오른쪽 자식 노드 - 부모노드 순서로 순회한다. 출처 : wikipedia 전위 순회 : F - B - A - D - C - E - G - I - H 중위 순회 : A - C - E - D - B - F - G.. 더보기
트리 자료구조(Tree Data Structure) Tree 트리구조 (Tree) 트리구조란 그래프의 일종으로 서로 다른 두 노드를 잇는 길이 하나뿐인 그래프, 즉 순환 되지 않는 그래프를 트리라고 부른다. 또한 여러 노드가 한 노드를 가르킬 수 없다. 그래프 그래프 트리 구성요소 트리는 정점과 간선으로 이루어져 있다. 정점 / Node / Vertex 간선 / Link / Edge 차수 : 자식노드의 갯수 ( 트리의 차수 : 최대 차수) 레벨 (Level) : 루트 노드가 레벨 0 에 해당되고 자식노드로 내려갈수록 레벨을 1씩 증가한다. 높이 (Height)/ 깊이 (Depth) : 트리의 최대 레벨 뿌리(Root) 노드 : 최상위 노드 자식(Child) 노드 : 어떤 노드의 하위 노드 부모(Parent) 노드 : 어떤 노드의 상위 노드 잎 (Leaf).. 더보기
리눅스 환경에서 학습하기 리눅스 환경에서 학습하기 나는 어릴때부터 지금까지 쭉 윈도우를 사용하고 있다(DOS는 제외하고). 그렇게 내 인생에서 운영체제는 윈도우만 있을 줄 알았으나 개발 공부를 시작하고 조금씩 바뀌기 시작했다. 주변에 같이 공부하는 동료들은 대부분 맥을 사용하고 있었고, "윈도우는 개발하기에 좋지 않다.", "백엔드 개발자는 리눅스를 잘 알아야 한다."라는 말을 들으며 자연스레 눈을 돌리게 됐다. 리눅스를 사용해야 하는 이유에 대해서 찾아봤고, 이론공부를 시작하는 것보단 먼저 사용하면서 리눅스에 익숙해지자는 마음으로 Ubuntu 를 설치했다. 리눅스를 사용해야하는 이유 리눅스를 써야 하는 이유를 검색해보면 가장 많이 나오는 건 "리눅스는 무료입니다!" 였다. 하지만 나는 "개발자로서 왜 리눅스를 알아야 하는가?!.. 더보기