노드가 무엇인지에 대해 여러가지 의견이 많지만, 어떠한 설명도 노드 공식 사이트(https://nodejs.org/ko/)의 설명보다 정확하지는 않을 것입니다. 노드 공식 사이트에서는 노드를 다음과 같이 설명하고 있습니다. 노드는 자바스크립트 런타임입니다. 여기서 런타임이란 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻합니다. 따라서 노드는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있습니다. 쉽게 말해 노드는 자바스크립트 실행기라고 생각하면 됩니다. 기존에는 자바스크립트 프로그램을 웹 브라우저 위에서만 실행할 수 있었습니다. 브라우저는 기본적으로 자바스크립트 런타임을 내장하고 있으므로 자바스크립트 코드를 실행할 수 있습니다. 브라우저 외의 환경에서 자바스크립트를 실행하기 위한 여러 시도가 ..
이번에는 프론트엔드 환경을 구축해서 Vue를 사용할 수 있는 환경을 만들어 보도록 하겠습니다. 우선 NPM을 사용하기 위한 환경을 구축하도록 합니다. NPM(Node Package Manager)는 자바스크립트를 위한 패키지 관리자입니다. 즉, 자바스크립트에서 사용하는 모듈들을 패키지화해서 관리하고 베포하는 자바스크립트 런타입 환경인 Node.js의 기본 패키지 관리자입니다. 과거에는 npm을 별도로 설치해야 했지만 지금은 node.js만 설치하면 자동으로 설치가 됩니다. node.js 사이트에서 node.js installer를 다운로드 합니다. node.js 다운로드 페이지 : https://nodejs.org/en/ Node.js Node.js® is a JavaScript runtime built..
이제 본격적으로 게시판의 기능들을 구현해보려고 합니다. src/main/java 에 패키지를 작성합니다. - com.dream.controller : 웹에서 처리해야할 데이터를 받아서 해당 데이터를 담당할 service를 선택하여 호출합니다. - com.dream.service : 데이터를 DAO를 통해 넘겨주거나 받으면서 비즈니스 로직을 수행하는 역할을 합니다. - com.dream.mapper: mapper에 기제된 SQL문을 호출하여 DB의 데이터에 접근합니다. - com.dream.vo : DB에 있는 테이블 컬럼 값을 java에서 객체로 다루기 위해 사용합니다. vo 패키지에 BoardVO 클래스를 생성합니다. BoardVO클래스에 BOARD테이블에 맞게 VO객체를 생성합니다. package c..
리액트에 대해서는 개인적으로 생활코딩님의 강의를 정독한 이후로 실무에서는 VUE만 사용하다보니 손놓은지 오래되었는데 간만에 리액트를 구현할 일이 생겨 간단하게 구현했다가 애를 먹은 상황을 공유하고자 합니다. 원하는 상황은 이렇습니다. 경로 /에서 /about경로로 갈때에 지연시간을 걸어 오래동안 대기를 하는 상황을 의도적으로 만들어 대기시간을 발생시키도록 합니다. 여기서 필요한 것은 리액트에 내장되어 있는 함수인 lazy, Suspense를 사용합니다. 그럼 lazy와 Suspense가 무엇인가에 대해 알아보자 React.lazy React.lazy는 코드를 분할하게 해줍니다. 코드 분할은 앱을 "지연 로딩"하게 도와주고 앱 사용자들에게 획기적인 성능 향상을 하게 합니다. 앱의 코드 양을 줄이지 않고도 ..
HTTP 상태 에러 코드중에 405에러가 나왔습니다. 콘솔 에러에서 잡힌 로그 Resolved exception caused by handler execution: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported친절하게도 POST를 지원하지 않는다라고 합니다.브라우저에서 호출할때 POST로 호출하고Controller에서는 당당히 @RequestMapping(value = "호출URL.do", method = RequestMethod.GET)'매핑하여 받는 주소에 대한 method를 GET으로 지정해서 POST 방식으로 지정해서 Request를 받아라'라고 GET은 허용불가하다..
CTRL + SHIFT + R : 파일 찾기(Open Resource) 원하는 파일을 찾기 위해서 Project Explorer나 Package Explorer의 트리를 사용해서 찾을 수도 있지만, 폴더와 파일이 많으면 빨리 찾기가 쉽지 않습니다. 파일 이름을 어느정도 알고 있다면 단축기 CTRL + SHIFT + R 키를 눌러 Open Resource 창을 열고 파일 이름의 전부 또는 일부를 타이핑하여 쉽게 원하는 파일을 찾을 수 있습니다. 문자에 * 을 넣으면 포함하는 임의의 모든 파일들을 조회 할 수 있습니다. CTRL + SHIFT + O : Organize Imports 파일내의 import 문장을 재구성 합니다. 필요없는 import는 제거하고 필요한 import는 자동으로 삽입합니다.
Gabage Collection, 줄여서 약어로 GC라고 부른다. 영어로 그대로 읽어서 가비지 컬렉션이라고 부릅니다. 메모리 관리 방법 중에 하나로, 말그대로 안쓰는 쓰레기(자원)를 수집(회수)한다고 생각하면 됩니다. 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터라고 부릅니다. 가령 C언어는 개발자가 메모리를 할당한(malloc) 뒤 수동으로 해제(free) 작업을 직접 관리하여야 한다. 그래서 메모리를 할당해 놓고 필요없어진 뒤에도 해제를 안하는 일 등이 생겨서 메모리 누수가 생기거나 거꾸로 해제했던 메모리를 다시 사용하는 실수등 버그가 생기게 된다. 하지만, 가비지 컬렉션 기..
Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuilder, StringBuffer가 있습니다. 이 세가지 클래스 모두 문자열을 저장하고 관리하는 클래스이며 연산이 많지 않을때에는 이 중 어떠한 클래스를 사용해도 이슈가 발생할 가능성은 거의 없습니다. 각 클래스의 특징에 맞게 상황에 따라 적절하게 사용해주면 됩니다. | String VS StringBuilder / StringBuffer String은 immutable(불편)하고 StringBuilder,StringBuffer는 mutable(가변)하다는 차이로 나눌 수 있습니다. HelloWorld 라는 문자열을 예시로 보겠습니다. HelloWorld 라는 문자열을 만들기 위해 먼저 할당된 'Hello' 문자열을 생성했다고 ..
String 문자열에서 원하는 특정 문자들을 잘라서 사용해야 할 때가 자주 있습니다.이번 포스팅은 이런 문자열을 자르는 방법들에 대해서 알아보겠습니다. substring() - 특정 인덱스를 기준으로 자른 문자열을 반환📄substring(int index) - index부터 문자열 끝까지 문자열을 리턴(String)📄substring(int beginIndex, int endIndex) - beginIndex 부터 endIndex전까지 문자열을 리턴(String)String으로 구성된 문자열은 기본적으로 char형태의 한개의 문자를 여러개로 구성한 형태인데이러한 String을 특정 index를 중심으로 자르는 방법으로 substring() 메소드를 사용합니다. subString은 특정 인덱스의 숫자를..
이번 포스팅은 실무에서 주로 날짜 데이터를 다룰때가 있는데 그때마다 주로 사용하는 방법들을 정리해보려고 합니다. 1. 경과된 밀리세컨드(millisecond)를 현재시간에서 빼기1234567891011// millisecond 값이 String으로 주어졌을때 // 2412716459밀리세컨드 만큼의 값이 흘렀을 때 현재시간에서 밀리세컨드를 뺀 날짜를 구하기String strMilliSeconds = "2412716459";Long MilSeonds = Long.parseLong(value.toString()); Date nowDate = new Date(); long wantMilSecs = nowDate.getTime() - MilSeonds; Date wantDate = new Date(wantMil..
Project Explorer > Link with Editor 선택 (그림 빨간영역)파일을 선택하면 프로젝트에 파일들을 자동으로 펼쳐서 해당파일이 선택됩니다!
데이터를 받는 방식인 동기와 비동기. 이 둘의 개념과 차이에 대해 알아보겠습니다. 동기 (Synchronous : 동시에 일어나는)동시에 일어난다는 뜻이다. 요청과 그 결과가 동시에 일어난다는 약속이다.바로 요청을 하면 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어져야 한다.요청과 결과가 한 자리에서 동시에 일어난다.장점 : 설계가 매우 간단하고 직관적단점 : 결과가 주어질 때까지 아무것도 못하고 대기해야 한다. 비동기 (Asynchronous: 동시에 일어나지 않는)동시에 일어나지 않는다를 의미한다. 요청과 결과가 동시에 일어나지 않을 것이라는 약속이다.요청한 그 자리에서 결과가 주어지지 않는다.노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.장점 : 결과가 주어지는데 시간이 걸리더라도 ..