기술 용어 및 개념 정리 모음

GC란? 가비지 컬랙션이란 힙에서 참조되지 않는 객체들을 탐색 후 삭제하는 과정으로 삭제된 객체의 메모리를 반환하여 힙 메모리를 재사용할 수 있게 하는 것이다. 힙 영역의 객체 중 stack의 변수와 연결이 끊겨 도달 불가능한 인스턴스들은 가비지 컬랙션의 대상이 된다. MinorGc Young영역(Eden + Survivor1 + Survivor2)에서 이용하지 않는 메모리가 지워지는 과정을 MinorGc라 한다.새로 생성한 대부분의 객체는 Eden영역에 위치한다.Eden 영역에서…

Continue Reading 기술 용어 및 개념 정리 모음

Docker로 빠르게 개발환경 구성하기(mysql, redis)

이번 시간에는 docker를 이용하여 로컬PC에 개발환경을 빠르게 구성하는 방법에 대하여 실습하겠습니다. 일반적인 웹서비스 구축시 DB로는 Mysql을 사용하고 캐시 서버로는 Redis를 주로 이용하게 됩니다. 로컬 환경에…

Continue Reading Docker로 빠르게 개발환경 구성하기(mysql, redis)

Angular2 정리(2) – Hello Angular 및 기본개념설명

앞서 환경이 구축되었다는 가정하에 Angular 프로젝트를 생성합니다. 터미널에서 ng명령어를 통해 Angular 프로젝트를 생성하고 아래와 같이 서버를 실행합니다. // ng new 프로젝트명(소문자와 '-'만 이용하여 생성) $…

Continue Reading Angular2 정리(2) – Hello Angular 및 기본개념설명

Angular2 정리(1) – 설치 및 개발환경 구축

Angular란? Node기반의 완전하고 독립적인 웹 프런트 프레임워크로서, 체계적이고 구조화된 개발 방법 및 환경을 제공합니다. 기존의 웹 개발은 백엔드 서버와 강 결합된 상태의 템플릿 엔진 기반의 개발 방법이 주류였습니다. 웹 개발 환경은 꾸준히 발전해 왔지만 이러한 백엔드 서버의 부가적인 요소로서의 웹 개발은 비효율 적이고, 백엔드 서버의 바운더리 안에서는 더 이상 발전하기 힘든 상황에 직면하였습니다.  Angular를 비롯한 여러 가지 프런트 프레임워크의 주요 목표 중 하나는 html, javascript, css를 통한 웹 개발 시 백엔드 개발 이상의 개발 생산성을 확보하는 것입니다. Angular를 사용하면 개발면에서 상당히 논리적이고 편리한 개발환경을 제공한다는 것을 알 수 있습니다.  뭐가 다른가? 웹 개발을 위한 전용 프레임워크로서, node 기반으로 서버가 실행되며 별도의 백엔드 서버의 부가 요소로서 개발환경을 구성하지 않습니다.(ex. Spring-Freemarker-tomcat) npm명령을 제공하여 쉽게 개발 환경을 구축할 수 있어 기존의 환경보다 놀라운 접근성을 제공합니다.  html, css, typescript 파일로 구성되는 컴포넌트 생성을 통해 기능에 따라 웹 화면을 완전히 독립되어 실행되는 모듈로 만들 수 있습니다.  Typescript의 사용을 통해 여러 가지 이점을 가지고 개발할 수 있습니다. ( 컴파일을 통한 실행 전 오류 검출, 클래스, 인터페이스, 상속 등 객체지향 프로그래밍 지원, 타입 지정을 통해 데이터의 타입에 따른 오류 처리가 필요 없고, 타입 유추가 가능하여 컴파일 단 오류 검출이 가능.) 막강한 자동완성 기능을 제공하여 웹 개발 시 생산성을 향상할…

Continue Reading Angular2 정리(1) – 설치 및 개발환경 구축

Python으로 Redis cache 일괄 삭제 프로그램 만들기

이번 실습에서는 Redis key 일부를 입력받아 연관된 캐시를 찾아 삭제해주는 프로그램을 작성해 보겠습니다. 개요 현업에서 Redis는 DB 캐시로 사용하는 경우가 많습니다. Redis를 사용하면 DB 부하를…

Continue Reading Python으로 Redis cache 일괄 삭제 프로그램 만들기

Java Stream 실습 코드 정리

각종 스트림 사용법 및 예제 실습 코드 정리 // 배열 스트림 String[] strArr = new String[]{"one", "two", "three", "four", "five"}; Stream<String> stream = Arrays.stream(strArr); assertThat(stream.collect(Collectors.toList()),…

Continue Reading Java Stream 실습 코드 정리

Spring Boot Oauth2 – ResourceServer : 비대칭키를 이용한 서명(asymmetric keys to do the signing process)

이번 시간에는 인증서버와 리소스 서버간에 토큰 인증시 서명 방식을 변경해 보겠습니다. 서명이란 서로간에 신뢰성있는 통신을 하기 위한 절차라고 생각하면 됩니다. 최신 소스는 아래 GitHub 주소를…

Continue Reading Spring Boot Oauth2 – ResourceServer : 비대칭키를 이용한 서명(asymmetric keys to do the signing process)

Spring Boot Oauth2 – ResourceServer

이번 장에서는 Spring Oauth2를 이용한 ResourceServer(api서버) 구축을 실습해보겠습니다. 이전 장에서 만든 AuthorizationServer와 연동하여 실습은 진행됩니다. 실습은 bearer 토큰 방식부터 진행합니다. 최신 소스는 아래 GitHub 주소를…

Continue Reading Spring Boot Oauth2 – ResourceServer

Redis – cluster

Redis single instance 구성에 이어 cluster를 구성하는 방법을 실습해 보겠습니다. Cluster란 각기 다른 서버를 하나로 묶어 하나의 시스템처럼 동작하게 함으로써 클라이언트에게 고가용성을 제공하는 것을 말합니다.…

Continue Reading Redis – cluster

Windows10 OpenSSH 클라이언트 활성화, 개발자 모드 + Ubuntu Linux 활성화

Windows10 최신 버전부터 윈도우상에서 ssh명령어를 지원하거나, Ubuntu Linux를 사용할 수 있도록 기능을 제공하기 시작하였습니다. 기존 윈도우 환경에서는 개발자가 리눅스나 Mac 환경처럼 서버 개발을 하기가 어려웠는데…

Continue Reading Windows10 OpenSSH 클라이언트 활성화, 개발자 모드 + Ubuntu Linux 활성화

Spring Boot Oauth2 – AuthorizationServer : DB처리, JWT 토큰 방식 적용

앞 장에서는 테스트를 위해 메모리에 정보를 올려놓고 테스트하였으나, 이번에는 DB를 사용해 처리할 수 있도록 개선해 보겠습니다. 최신 소스는 아래 GitHub 주소를 참고해 주세요. https://github.com/codej99/SpringOauth2AuthorizationServer.git 클라이언트…

Continue Reading Spring Boot Oauth2 – AuthorizationServer : DB처리, JWT 토큰 방식 적용

Spring Boot Oauth2 – AuthorizationServer

Spring 프레임웍에서 제공하는 Oauth2 프로젝트를 이용하여 Oauth Authorization Server를 구축해 보겠습니다. Oauth Authorization은 클라이언트가 서비스 제공자로부터 회원 리소스를 제공받기 위해 인증 및 권한 부여를 받는…

Continue Reading Spring Boot Oauth2 – AuthorizationServer

Java Collections – List, Map, Set, Tree, Stack, Queue

Java에서 데이터의 목록을 저장하는 자료구조인 Collections에 대하여 알아봅니다. Collection에 속해있는 다양한 자료구조를 살펴보고 특징 및 사용법에 대하여 실습해 보겠습니다. List Collection 다수의 데이터(객체)를 순서대로 저장하는…

Continue Reading Java Collections – List, Map, Set, Tree, Stack, Queue

Redis – install

Redis는 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈 소스 in-memory 데이터 구조 저장소입니다. string, hashes, lists, sets, sorted sets 데이터 구조를 지원하며. pub/sub를 통한 메시지…

Continue Reading Redis – install

Intellij에서 Github의 Spring Gradle Project import 하기

Intellij에서 Github의 Spring Project를 로컬로 Clone 하여 프로젝트를 구성하는 방법에 대해 알아보겠습니다. 참고로 Gradle로 구성된 SpringBoot 기준입니다. Github 프로젝트 주소 복사 Github로 이동하여 clone or…

Continue Reading Intellij에서 Github의 Spring Gradle Project import 하기

SpringBoot2로 Rest api 만들기(9) – Spring Starter Unit Test

이번 시간에는 지금까지 만든 api를 Unit Test 하여 검증해보는 시간을 갖겠습니다. 현재 개발한 api는 별다른 로직이 없어 Unit Test가 공수 대비 효용성이 없어 보입니다. 하지만…

Continue Reading SpringBoot2로 Rest api 만들기(9) – Spring Starter Unit Test

소나큐브(Sonarqube)를 통한 코드 분석 및 코드 품질 향상

소나큐브는 지속적으로 코드의 품질을 높이고 유지 보수하는데 도움을 주는 정적 분석 애플리케이션입니다. 분석 기능이 탁월하고 개선사항도 자세하게 안내해 줍니다. 간단하게는 코딩 컨벤션부터 코드의 잠재적인 위험 사항까지 안내해주어 올바른 코딩 습관과 코드의 품질향상에 많은 도움을 줍니다. Sonarqube features Linux, Window, Mac 등 다양한 환경에서 모두 구동이 가능합니다. 20개가 넘는 프로그램 언어에 대한 코드 분석을 지원합니다. 개발된 코드의 품질을 어드민을 통해 확인해 볼 수 있고 지속적으로 관리가 가능합니다. 품질 게이트를 통해 표준화된 코드 품질 요구사항을 설정할 수 있습니다. Jenkins 같은 CI엔진과 통합되어 분석이 가능합니다. IDE와 연동되는 다수의 Plugin을 통해 분석이 가능합니다.  다운로드 및 설치 https://www.sonarqube.org/downloads/ 에서 다운로드하고 압축을 해제합니다. 소나큐브 서버 실행 실습은 윈도우 환경하에서 진행합니다. 서버 실행 후에는 어떤…

Continue Reading 소나큐브(Sonarqube)를 통한 코드 분석 및 코드 품질 향상