Skip to content

Instantly share code, notes, and snippets.

Avatar

Kim Ji-Heon ihoneymon

View GitHub Profile
@ihoneymon
ihoneymon / how-to-write-by-markdown.md
Last active Jul 29, 2021
마크다운(Markdown) 사용법
View how-to-write-by-markdown.md

[공통] 마크다운 markdown 작성법

1. 마크다운에 관하여

1.1. 마크다운이란?

Markdown은 텍스트 기반의 마크업언어로 2004년 존그루버에 의해 만들어졌으며 쉽게 쓰고 읽을 수 있으며 HTML로 변환이 가능하다. 특수기호와 문자를 이용한 매우 간단한 구조의 문법을 사용하여 웹에서도 보다 빠르게 컨텐츠를 작성하고 보다 직관적으로 인식할 수 있다. 마크다운이 최근 각광받기 시작한 이유는 깃헙(https://github.com) 덕분이다. 깃헙의 저장소Repository에 관한 정보를 기록하는 README.md는 깃헙을 사용하는 사람이라면 누구나 가장 먼저 접하게 되는 마크다운 문서였다. 마크다운을 통해서 설치방법, 소스코드 설명, 이슈 등을 간단하게 기록하고 가독성을 높일 수 있다는 강점이 부각되면서 점점 여러 곳으로 퍼져가게 된다.

1.2. 마크다운의 장-단점

1.2.1. 장점

@ihoneymon
ihoneymon / use-git-and-git-flow.adoc
Last active Jul 19, 2021
git 을 기반으로 git-flow를 사용하여 애플리케이션 배포버전을 관리하자.
View use-git-and-git-flow.adoc

GIT을 기반으로 한 프로젝트 개발프로세스

깃을 사용합시다. 깃을 쓰자. 깃을 쓰란 말야!!

  • SVN은 변경이력이 많아질수록 속도가 느리지.

    • 커밋 및 처리속도가 빠르다. 변경이력이 많이 축적되어 있어도 속도저하가 거의 없다.

  • 커밋찍기가 어렵다.

@ihoneymon
ihoneymon / 20190408-kotlin-night-seoul.adoc
Last active Jul 9, 2021
깃헙은 은근히 여기저기 얼굴을 많이 비춘다. 아직도 목마른가?
View 20190408-kotlin-night-seoul.adoc

20190408 Kotlin Knight 서울

자바 개발자 관점의 '왜 코틀린인가?' (by 강현식)

  • Java 8 이상 쓰는 곳이 거의 없다.

  • 자바코드는 장황하다?

    • 롬복(Lombok)

      • 롬복이 지원안될 수 있다.

      • Annotation Processor 와 충돌 가능성

@ihoneymon
ihoneymon / 20190322-ngrinder-upload-file-script.adoc
Created Mar 22, 2019
nGrinder 파일 업로드 테스트 스크립트
View 20190322-ngrinder-upload-file-script.adoc

20190322 nGrinder file upload(multipart/form-data) 기능 확인

nGrinder 를 이용한 성능테스트를 작성하고 있다. 이 과정에서 다른 시스템과 연계하는 과정에서 운영으로 넘어가기 위한 성능테스트를 준비하고 있는데, 파일업로드를 하는 과정이 필요했다.

이 구현코드는 여기저기 찾아보다가 grinder script gallery가 제일 깔끔하게 정리되어있다.

@ihoneymon
ihoneymon / 201904-java-byte-array-to-input-stream.adoc
Created Apr 4, 2019
[spring] RestTemplate 를 이용한 파일 업로드 기능: ByteArrayResource -> InputStreamResource 변경
View 201904-java-byte-array-to-input-stream.adoc

20190404 [spring] RestTemplate 를 이용한 파일 업로드 기능

기존 방식의 문제점

public AgreementResponse uploadAgreement(String memberId, File agreementFile) {
    log.info("Upload CMS Agreement: memberId: {}, agreement: {}, size: {}", memberId, agreement.getName(), agreement.getSize());
    MultiValueMap<String, Object> bodyMap = new LinkedMultiValueMap<>();
View springboot-introduction.md

스프링부트 소개

0. 스프링부트SpringBoot란?

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.

  • 스프링부트는 단독실행되는, 실행하기만 하면 되는 상용화 가능한 수준의, 스프링 기반 애플리케이션을 쉽게 만들어낼 수 있다.
  • 최소한의 설정으로 스프링 플랫폼과 서드파티 라이브러리들을 사용할 수 있도록 하고 있다.
View 20181017-spring-boot2-junit5.adoc

[spring-boot] Junit5 적용기

JUnit5 의존성 추가

JUnit5가 세상에 모습을 드러내놓은지는 제법 됐다. 새로운 프로젝트를 시작하면서 JUnit5 와 Spock 을 기반으로 한 테스트를 작성하고자 한다.

스프링 부트 2에서 JUnit5 에 대한 의존성을 추가하고 테스트를 작성하는 방법을 설명한다.

View 20190529-java-memory-leak-analysis.adoc

20190528 [java] HeapDump 분석하기

아직까지는 메모리 릭 등의 문제로 힙덤프(HeapDump)를 생성하고 이를 분석하는 일을 해본 경험은 없다(…​ 이 넓고 얕은 지식이여).

우아한형제들 회사 블로그(도움이 될수도 있는 JVM memory leak 이야기, http://woowabros.github.io/tools/2019/05/24/jvm_memory_leak.html)를 보고 난 이후, '방법은 알아(정리해)둬야겠다' 싶어 정리한다.


@ihoneymon
ihoneymon / 20200718-lombok-copy-constructor-annotation.adoc
Created Jul 18, 2020
롬복(lombok)에서 생성자 필드에 선언된 애노테이션을 복사적용하는 것
View 20200718-lombok-copy-constructor-annotation.adoc

[Lombok] Constructor annotation 복사하기

스프링에서 사용할 수 있는 스프링 빈 주입방식은 크게 3가지가 있다.

  • 생성자 주입

  • 설정자(Setter)를 이용한 주입

  • 애노테이션(@Autowired, @Inject, @Resource)이 선언된 필드(field) 주입

@ihoneymon
ihoneymon / SpringSecurity5DelegatingPasswordTest.java
Created Feb 12, 2018
Spring Security5 add DelegatingPasswordEncoder test code
View SpringSecurity5DelegatingPasswordTest.java
import org.junit.Before;
import org.junit.Test;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.*;
import java.util.HashMap;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;