goGo에서의 메서드 (Method in Go)Go에서는 함수외에도 메서드를 제공한다. 메서드는 리시버 인자(Receiver Parameter)를 가진 함수를 말한다. 기능적으로 보면 일반 함수와 별 차이가 없고 아래 문법과 같이 func…
go타입 스위치 (Type switch)티입 스위치는 형 단언을 실행하여 해당 변수의 타입이 스위치 문의 조건에 일치하는 블럭을 실행한다. 타입 스위치 선언문은 형 단언 와 같은 구문을 가진다. 그러나 T…
go타입 변환 (Type Conversion)타입 변환은 데이터 타입을 변경하는 것이다. Java에서는 명시적 타입 변환(explicit type conversion)과 암시적 타입 변환(implicit type conversion) 둘 다 지원하지만, Go…
goGo에서의 게터, 세터 메서드 (Getter, Setter in Go)캡슐화는 내부 속성값을 외부에서 직접적으로 접근하게 못 하게 하고 공개된 메서드 (ex. getter, setter)로만 접근하여 내부 값을 보호하는 역할을 한다. 즉, 내부 구현을 감추고 데이터 체크를 통해서 유효한 값만 저장하게 한다. Go…
gitGit Reset으로 커밋된 내용 다시 되돌리기 (using GitKraken)1.Git Reset Git으로 작업하다 보면 커밋된 이력을 다시 되돌려야 할 때가 종종 발생한다. Git Reset에서는 아래와 같이 3가지 옵션을 제공한다. 각 옵션의 차이점에 대해서 알아보자. 1.1 Git Reset…
goGo에서의 로그깅 (Logging in Go)1. 들어가며 Go 표준 패키지 중에 log에서 로깅에 필요한 기본 메서드를 제공한다. 표준 출력 stdout, stderr외에 파일로 로그를 저장하는 방법, 그리고 로그 포맷 변경해서 출력하는 방법 등에 대해서 알아보자. 추가 설치 없이 log…
jacocoMaven + JaCoCo + Coveralls + Travis CI : 자바 프로젝트 Coverage 생성하는 방법1. 들어가며 Maven + Java 프로젝트의 코드 커버리지를 확인할 수 있는 방법에 대해서 알아보자. 전체적인 작업 흐름은 JaCoCo로 자바 커버리지를 생성하고 Coveralls 사이트로 업로드하여 결과를 확인할 것이다. JaCoCo…
java자바8 스트림 사용해서 max, min 값 찾기1. 들어가며 자바8의 스트림 API를 사용해서 List나 배열에서 max, min 값을 찾는 방법에 대해서 알아보자. 2. 스트림을 사용하여 max 값 찾기 2.1 숫자 List에서 Max 값 찾기 : 숫자 List에서 max…
travisTravis CI에서 Slack 연동해서 빌드 notification 받기들어가며 Travis CI로 빌드 이후 notification을 Slack으로 받는 방법에 대해서 알아보자. Github 소스를 Travis CI…
awsSSL 인증서 Ngnix 서버에 설치하기 (무료 Lets Encrypt 인증서 발급)1. 들어가며 웹사이트를 HTTPS로 설정하는 방법에 대해서 알아보자. HTTP -> HTTPS로 적용하려면 아래 절차가 필요하다. SSL 인증서 발급 받기 letsencrypt에서 SSL 인증서를 무료로 받을 수 있다 서버에 SSL…
java자바 자료구조 - Priority Queue (우선순위 큐)1.Priority Queue (우선순위 큐)란? 자바에서 제공하는 여러 자료구조 중에 에 대해서 알아보자. 우리가 잘 알고 있는 자료구조와 같이 (First-In-First-Out) 알고리즘으로 동작하지만, 추가로 우선순위가 있는 (Best…
http자주 접하는 게 되는 Http Status CodeAPI 개발 시 접하게 되는 HTTP 상태 코드를 정리해보았다. 이외에도 더 많겠지만, 한 번쯤 들어보고 접한 응답 코드들이다. HTTP 상태 값에 따라 고양이 이미지를 보여주는 사이트도 존재한다. 이 개발자는 고양이를 무척 좋아하나보다. HTTP…
python파이썬 딕셔너리 리스트에서 특정 키 값으로 정렬하기1. 들어가며 파이썬에서 딕셔너리 리스트에서 특정 키 값(ex. age)에 따라서 정렬하는 방법에 대해서 알아보자. 리스트 정렬를 위해 파이썬에서 기본적으로 와 함수를 제공한다. 리스트를 직접 수정하여 방식으로 정렬한다 list…
python파이썬에서 람다 함수 익숙해지기1. 람다란? 파이쎤에서도 이름 없는 함수인 람다 표현식을 지원한다. syntax는 아래와 같다. 파이썬에서는 bracket (ex. { })을 지원하지 않아 single line으로만 작성해야 한다. 람다에서 multi-line…
javaCustom HandlerMethodArgumentResolver 만들어보기1.HandlerMethodArgumentResolver란? 1.1 들어가면 에 대해서 알아보자. 아래와 같이 컨트롤러 메서드에 여러 인자 값(ex…
gitGit 브랜치 여러 개 한번에 삭제하기Git local, remote 브랜치를 한번에 삭제하는 방법에 대해서 알아보자. 1. 다중 Local 브랜치 삭제하기 1.1 삭제하려는 브랜치 목록보기 명령어로 삭제하려는 브랜치 목록을 확인한다. 1.…
java자바8 Stream API 사용해서 List of Object 생성하기자바8에 도입된 스트림 API에 조금 더 익숙해지기 위해 loop으로 자주 사용하던 코딩을 스트림 API로 변환해보자. 1. Loop 사용해서 객체 리스트 생성하기 - 자바8 이전 자바8 전 버전에서는 아래와 같은 방식으로 for loop…
java스프링부트 기본 에러 페이지 변경하기 - Customize Whitelabel Error Page1. 들어가며 존재하지 않는 API를 접속하게 되면 아래와 같은 Whitelabel Error Page를 자주 접하게 됩니다. 별도 설정을 하지 않았다면 스프링부트에서는 기본적으로 Whitelabel Error Page…
java자바8 스트림 사용해서 List -> Map 형태로 변환하는 방법1. 들어가며 객체 를 형태로 변환할 때 아래와 같이 loop을 돌면서 에 내용을 채운다. 자바8에 도입된 스트림을 사용해서 -> Map으로 어떻게 변환하는지 알아보자. 2. List -> Map 변환 2.1 자바8에서 스트림 사용하여 List…
java자바 Comparable과 Comparator의 차이점자바에서 객체 정렬 시 사용되는 Comparator와 Comparable 인터페이스 간의 차이점을 알아보겠습니다. 예제로 작성한 코드는 github java-compare 모듈을 참고해주세요. Comparable vs. Comparator…
ngrindernGrinder 사용법에 대해서 알아보자1. 들어가며 nGrinder는 스트레스 테스트 도구로 Grinder 오픈소스 기반으로 작성되었고 네이버에 의해서 개발되었다. nGrinder 설치에서부터 API 테스트까지 알아보자. 1.1 nGrinder 구성요소 구성 설명 controller…
java자바8 HashMap 보다 간결하고 효과적으로 작성하기자바8부터 에 여러 메서드들이 추가되었고 이런 메서드를 사용해서 을 조금 더 간결하면서 효율적으로 사용하는 방법에 대해서 알아보겠습니다. 작성된 코드는 java8-hashmap을 참고해주세요. 1. putIfAbsent() vs…
database[JPA-4] JPA 일대일(1:1) @One-To-One 연관관계1. 들어가며 이번 포스팅에서는 일대일 (1:1) 매핑에 대해서 알아보겠습니다. 2. 개발 환경 포스팅에서 작성한 코드는 깃허브에 올라가 있어요. OS : Mac OS IDE: Intellij Java : JDK 1.8 Source code…
database[JPA-3] JPA N+1 문제 및 해결방법1. 들어가며 JPA로 작업하다 보면 N+1 문제에 맞닥뜨리게 되는데요. N+1은 언제 발생할 수 있는 이슈이고 이를 해결하기 위해서 어떤 방법들이 있는지 알아보겠습니다. 2. 개발 환경 포스팅에서 언급한 코드는 github…
database[JPA-2] JPA 다대일(N:1)+일대다(1:N) @ManyToOne, @OneToMany 연관관계1. 들어가며 JPA 연관관계 매핑에 대한 내용은 JPA 연관관계 매핑 정리 포스팅을 참고해주세요. 이번 포스팅에서는 JPA에서 가장 자주 사용하는 다대일(N:1)과 그 반대 방향인 일대다(1:N) 연관관계에 대해서 알아보겠습니다. Post…
database[JPA-1] JPA 연관관계 매핑 정리1. 들어가며 엔티티는 다른 엔티티의 참조(변수)를 가지면서 관계를 서로 맺게 됩니다. 블로그에서 해당 포스트에 댓글을 다는 경우를 예를 들면, 댓글(Comment) 엔티티는 포스트 (Post…
Q&AQ&A : Spring Boot 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 1. application.properties : server…
Q&AQ&A : JPA 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 1. @EntityListeners 이란? 엔티티를 DB…
spring[Quartz-3] Multi WAS 환경을 위한 Cluster 환경의 Quartz Job Scheduler 구현1. 들어가며 Quartz에서는 메모리 기반의 스케줄러뿐만이 아니라 DB 기반의 스케줄러도 지원합니다. DB 기반의 스케줄러의 경우에는 스케줄러 정보를 메모리가 아닌 DB에 저장하기 때문에 다중 서버 간의 스케줄링이 가능합니다. Quartz…
quartz[Quartz-4] Quartz에서 실행중인 Job을 Interrupt하여 Job Scheduler를 정상종료 시키는 방법1. 들어가며 본 포스팅은 Quartz 튜터리얼에서 4번째 시리즈로 Quartz 서버를 셧다운 시킬 때 gradefully하게 처리하는 방법에 대해서 다룹니다. 셧다운 이벤트가 발생하면 실행 중인 Quartz Job에 내부 interrupt…
quartz[Quartz-2] Spring Boot + Quartz을 이용한 Job Scheduler 구현 (In-memory)1. 들어가며 이 포스팅은 Quartz 튜터리얼 시리즈에 한 부분으로 첫 번째의 포스팅 Quartz Job Scheduler란? 에 이어 2부 내용으로 Spring Boot 기반의 RAMJobStore을 이용한 Quartz…
quartz[Quartz-1] Quartz Job Scheduler란?1. 들어가며 Quartz Job Scheduler에 대한 내용은 여러 시리즈 형식으로 작성을 하였습니다. Quartz에 대한 간단한 설명을 시작으로 스프링 부트 기반에서의 Quartz Job Scheduler…
Q&AQ&A : Git 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 미 답변 질문 - 답변완료 1. WIP란? Work In Progress…
Q&AQ&A : Spring Boot Annotation 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A…
Q&AQ&A : Spring JPA Annotation 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 쉽게 찾기 위해서 알파벳 순으로 정리합니다. @EntityScan…
spring스프링 RestTemplate1. 들어가며 스프링 프레임워크에서는 REST 서비스의 Endpoint를 호출할 수 있도록 크게 2가지 방식인 동기, 비동기 REST Client을 제 공합니다. 이번 포스팅에서는 동기방식인 RestTemplate…
npmNode.js 모듈 NPM 저장소에 배포하기1. 들어가며 이번 포스팅에서는 Node.js 모듈을 NPM 저장소에 배포하는 방법에 대해서 알아보겠습니다. NPM은 Node Package Modules 약자로 Node.js 모듈 관리해주는 패키지 관리자입니다. NPM의 명령어로 쉽게 Node.js…
Q&AQ&A : Lombok 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 1. @AllArgsConstructor…
Q&AQ&A : Java 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 미 답변 질문 - java8 에서 mapToInt(ToIntFunction…
countdown맥환경에서 countdown shell script으로 집중력 강화하기1. 들어가며 스터디나 블로그 작성을 시작하려고 노트북을 켜면 바로 스터디나 블로그 작성보다는 먼저 가는 곳이 인터넷 뉴스나 유튜브 동영상을 먼저 보게 됩니다. 그리고 3…
jaywayJava Jayway JsonPath 사용법1. 들어가며 Jayway JsonPath는 Stefan Goessner의 JsonPath 구현을 자바로 포팅한 라이브러리입니다. XML의 가장 큰 장점은 XPath(XML Path Language)로 XML…
ssl자바 keystore에 SSL 인증서 import 하기1. 들어가며 회사에서 Zencoder API 을 사용하게 되어 자바에서 작업을 시작하려는데, 아래와 같이 SSLHandshakeException…
ssmSimple Spring Memcached(SSM)란1. 들어가며 In-memory DB로 Memcached를 사용하면 자바에서는 simple-spring-memcached (SSM) 라이브러리를 자주 사용됩니다. SSM…
lombokLombok 기본 사용법 익히기1. 들어가며 Lombok는 자바에서 작성해야 하는 boilerplate code(ex. getter/setter, constructor, toString…
database데이터베이스의 키 종류1. 데이터베이스의 키 종류 이번 포스팅에서는 데이터베이스의 여러 키 종류를 정리해보겠습니다. 키 종류에 대한 설명을 위해 아래 샘플 데이터를 사용하겠습니다. 샘플 데이터는 자동으로 생성해주는 dummy data 사이트에서 얻어왔습니다. 1.…
java자바 커스텀 어노테이션 만들기1. 어노테이션이란 스프링 프레임워크를 사용하면 어노테이션을 자주 사용하게 됩니다. 아래는 스프링 웹 MVC를 사용한 예로 GET HTTP 요청(/helloworld)이 있으면 “Hello World…
java맥 환경에서 여러 JDK 버전 설치하고 변경하기자바 개발을 하다 보면 하나의 JDK 버전이 아니라 여러 버전을 설치해야 할 때가 종종 있습니다. 진행하는 프로젝트마다 개발하는 JDK…
python파이썬 : 커맨트 라인에서 명령어 옵션들 argparse 모듈를 이용해서 쉽게 파싱하기1. argparse 모듈이란? 셀이나 리눅스 명령어를 실행할 때 많은 옵션이 존재합니다. 아래는 pip 명령어(파이썬 패키지 관리자)의 옵션 목록입니다. Flag 형태의 옵션(ex. —no-color)이나 입력값을 받을 수 있는 옵션(ex. —log…
algorithmAlgorithm : 정수값에서 1이 설정된 bit를 카운트하기1. Problem 정수값에서 1인 비트를 카운트하는 문제입니다. 1.1 입력 / 결과 7 : 111 —> 3 23 : 10111 —> 4 13 : 1101 —> 3 2. Solution 2.1 Approach…
gc자바 Garbage Collection이란1. 가비지 컬랙션이란? C/C++ 언어와 달리 자바는 개발자가 명시적으로 객체를 해제할 필요가 없습니다. 자바 언어의 큰 장점이기도 합니다. 사용하지 않는 객체는 메모리에서 삭제하는 작업을 Gargabe Collection(GC)라고 부르며 JVM…
java10새로운 기능 및 개선 사항 목록 - 자바10에서의 변화자바10 언어 JEP 286: Local Variable Type Inference JVM/Compiler JEP 304: Garbage-Collector Interface JEP 307: Parallel Full GC for G1 JEP 31…
java새로운 기능 및 개선 사항 목록 - 자바Beyond에서의 변화자바Beyond JEP 301: Enhanced Enums - 현재 보류중 JEP 302: Lambda Leftovers - Candidate JEP 305: Pattern Matching - Candidate JEP ???: Data Classes…
java새로운 기능 및 개선 사항 목록 - 자바11에서의 변화자바11 JEP 181: Nest-Based Access Control JEP 309: Dynamic Class-File Constants JEP 315: Improve Aarch64 Intrinsics JEP 318: Epsilon: A No-Op…
java새로운 기능 및 개선 사항 목록 - 자바9에서의 변화자바9 Java Platform Module System JEP 222: Jshell - REPL JEP 158: Unified VM logging JVM component에 대한 공통 로깅 시스템 제공 (-Xlog) HTML5 Javadoc HTML…
java새로운 기능 및 개선 사항 목록 - 자바8에서의 변화자바8 언어 람다식 표현 스트림 Method Reference Default Method Type inferece 개선 Optional 새 자바스크립트 엔진 (Nashorn) JDK11에서 제거될 예정 Joda Time 방식의 새 날짜 API…
java전후처리를 위한 자바 메서드 래퍼 메서드 생성하기 - pre and post processing for java wrapper method1.개요 코딩을 하다 보면 어떤 작업을 하기 전에 전후 처리가 필요할 때가 종종 생깁니다. 전처리(pre-processing)에서는 실제 작업을 수행하기 전에 필요한 세팅을 하고 후처리(post-processing)에서는 cleanup…
herokuHeroku에 Node.js+MongoDB App 배포하기1. Heroku란 헤로쿠(Heroku)는 PaaS(Platform as a Service)형태의 클라우드 서비스입니다. 헤로쿠는 터미널이나 웹에서 필요한 여러 티어(ex. DB)를 쉽게 생성하고 연동시킬 수 있습니다. 최초 버전에서는 Ruby…
method자바에서 클래스의 상속 구조에서 메서드 체이닝 해보기 - Method Chaining with Inheritance1. 메서드 체이닝이란 메서드 체이닝이란 여러 메서드 호출을 연결해 하나의 실행문으로 표현하는 문법 형태를 말합니다. (위키피디아 참고 #4.1) 메서드 체이닝의 매직은 간단합니다. 체이닝으로 연결하고 싶은 메서드의 반환 값으로 this…
web파이썬으로 웹 스크래핑하는 방법 - Web scraping1. 소개 웹 정보 바다라고 할 만큼 엄청난 양의 데이터를 가지고 있습니다. 트위터, 페이스북과 같은 사이트에서는 정규화된 JSON 형태의 데이터를 API로 제공해서 쉽게 원하는 데이터에 접근할 수 있습니다. 하지만, API…
아마존 S3 Bucket API 사용법1. 들어가며 기업에서도 그렇고 이제 아마존 서비스를 쓰지 않은 곳이 없을 정도로 회사마다 아마존의 서비스를 많이 사용하고 있습니다. 최근에 이직을 한 곳에서도 S3 (Simple Storage Service) 스토리지 서비스를 이용하고 있어 S…
algorithmAlgorithm : 괄호 기호가 Valid한지 체크하기1. Problem 괄호 기호가 OPEN, CLOSE 매칭이 제대로 되도록 확인하는 코드 문제입니다. 1.1 입력 / 결과 입력 가능한 String 값은 아래와 같습니다. ()()() —> true )( —> false…
Q&AQ&A : Mybatis 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 1. _long 타입은 뭔가? _long : long…
Q&AQ&A : MySql 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 1. 테이블 생성시 InnoDB를 왜 설정해야 하나? MySQL…
junitJUnit Rules이란1. 들어가며 JUnit Rules은 테스트 케이스를 실행하기 전후에 추가 코드를 실행할 수 있도록 도와줍니다. @Before와 @After로 선언된 메서드에서도 실행 전후처리로 코드를 넣을 수 있지만, JUnitRules…
Q&AQ&A : Cache-SSM 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 1. @CacheKeyMethod 란? SSM…
Q&AQ&A : JsonPath 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 1. com.jayway.jsonpath…
Q&AQ&A : Maven 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 1. maven으로 특정 클래스의 메서드 unit test…
java[자바8-1] 자바8 Optional이란1. Optional이란 Optional은 null을 대신하기 위해 만들어진 새로운 코어 라이브러리 데이터 타입입니다. Optional 클래스는 null이나 null이 아닌 값을 담을 수 있는 클래스입니다. 이미 다른 언어(ex. Scala…
gitbookGitbook으로 전자책 만들어보기1. 개요 요즘은 콘텐츠 시대라고 해도 과언이 아닙니다. 특정 방송 회사가 콘텐츠를 만들기보다 개인이 직접 좋은 콘텐츠를 만들어 유튜브와 같은 플랫폼에서 퍼블리쉬하는 시대로 바뀌었습니다. 리디북스 와 같은 eBook…
Q&AQ&A : Jackson 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 1. @JsonInclude(Include.NON_NULL…
Q&AQ&A : JavaScript 관련 질문 모음개인적으로 모르는 부분 적어두고 알게 되는 부분에 대해서 간단하게 정리해둔 자료입니다. 미 답변중에 알고 계신 부분 있으면 코멘트 달아주세요. 감사합니다. Q&A 전체 목록 답변완료 1. 이건 뭔가? ES…