Posts by Category

posts

Spring Boot JUnit 에서 한글 깨지는 오류

JUnit 에서 응답 값의 결과 중 한글이 깨지는 오류 JUnit 으로 mockmvc.perform 으로 응답값을 가져와서 확인하려던 중 결과에 한글이 포함되었을 때 깨지는 오류가 발생하는 것을 확인하였다.

Java 월 주차 구하기

월 주차 계산 방법 우리나라 기준으로 월 주차는 한 주의 시작을 월요일로 한다. 매달 첫째주는 이전달의 마지막주이냐 이번달의 첫째주이냐가 특히 고민이다. 간단하게 확인하는 방법이 있다. 해당 주에 목요일로 판단할 수 있다.

Apache 설정 (with SSL)

아파치(httpd) 설정 Ubuntu 에서는 /etc/apache2 에 있고 CentOS 같은 Redhat 계열은 /etc/httpd 아래에 존재한다. 가상 호스트(Virtual Host) 별 Config 파일을 sites-availiable 밑에 생성하고, sites...

CentOS 에서 Redis 여러개 실행하기

Topic master-slave-sentinal 구조로 Redis 를 구성하기 위해서 여러 방법을 생각해봤다. 첫째는 하나의 서버에 여러개의 slave 서버를 띄우는 방법. 두번째는 여러개의 서버에 각각 하나씩 slave 를 띄우는 방법.

Java RestTemplate File Upload

How to RestTemplate 를 이용해서 파일을 전송하고자 할때 일반적인 방법으로 전송하게 되면 Jackson 라이브러리에서 직렬화에 실패했다고 에러 메세지를 보낸다. 그러면 어떻게 할 수 있을까? 파일 자체를 바이트로 변경해서 이것을 Multivaluemap 에 담아 ...

JPA 무한 순환참조 Stack over flow 오류

Json 순환참조 JPA 를 사용하면서 Team -> Member 와 같이 OneToMany -> ManyToOne 과 같은 양방향 관계를 가지는 구조에서 많이 발생하는 Json 순환참조에 대해서 알아보자.

MSA 인증 서비스 Keycloak User Storage SPI

SPI ? Keycloak 에서 제공하는 모듈과 같은 개념이다. SPI 는 Service Provider Interface 의 줄임말로 Keycloak 에 있는 각 기능들을 개발자가 직접 구현할 수 있게 도와준다. 일반적으로 Provider 파일과 ProviderFactory ...

Throttling 과 Debouncing 에 대해서

들어가며 DOM 이벤트 중 스크롤에 관한 것이 있다. 스크롤을 할때마다 발생하는 이벤트 같은 것이다. 이벤트 안에 로그를 찍어보면 스크롤을 할때마다 수없이 많은 로그가 출력된다. 이렇게 될 경우 이벤트 함수 안에 ajax 호출등과 같은 많은 리소스가 소모되는 동작을 하게 된다면...

MSA 인증 서비스 Keycloak 설치 및 설정

Keycloak 서버 요구사항 Java 가 실행될 수 있는 OS Java 8 JDK 이상 zip or gzip and tar 명령어 실행 가능 최소 512M 램 최소 1G 이상의 디스크 공간 공유 외부 DB (MySQL, Oracle, PostgreSQL...

MSA 인증 서비스 Keycloak 소개

Keycloak 이란? Redhat 에서 개발한 서비스를 대상으로 하는 인증 & 권한 부여 오픈소스이다. 기반은 JBoss 와 WildFly 로 구성되어 있다. SSO, 소셜 로그인, LDAP, RDBMS 등의 User Federation 도 지원한다. 그 외에도 ada...

Git Revert & Reset, 그리고 Working Directory 되돌리기

Intro Git push 할때 실수로 올라가지 말아야할 것이 올라갔을 때가 있다. 이때 잘못된 내용을 올린 푸시 이전으로 돌아가고 싶을때 사용하는 것이 Reset & Revert 명령어이다. 여기에 더불어 아직 staging 영역에 추가 되지 않은 내용을 다시 되돌리는...

역인덱스

역인덱스 하나의 row 에 긴 텍스트가 있고 이런 row 들이 수만, 수십만개로 이루어진 테이블에서 “LIKE %…%” 같은 구문을 이용해서 검색을 한다고 해보자.

TDD(Test Driven Development) - Mock (4)

아래 내용은 ‘테스트 주도 개발: TDD 실천법과 도구’(https://repo.yona.io/doortts/blog/issue/1)를 보고 주요 내용을 개인적으로 정리하여 작성했습니다.

TDD(Test Driven Development) - Hamcrest (3)

아래 내용은 ‘테스트 주도 개발: TDD 실천법과 도구’(https://repo.yona.io/doortts/blog/issue/1)를 보고 주요 내용을 개인적으로 정리하여 작성했습니다.

TDD(Test Driven Development) - JUnit 5 (2)

아래 내용은 ‘테스트 주도 개발: TDD 실천법과 도구’(https://repo.yona.io/doortts/blog/issue/1)를 보고 주요 내용을 개인적으로 정리하여 작성했습니다.

TDD(Test Driven Development) 란 (1)

아래 내용은 ‘테스트 주도 개발: TDD 실천법과 도구’(https://repo.yona.io/doortts/blog/issue/1)를 보고 주요 내용을 개인적으로 정리하여 작성했습니다.

MSA (Micro Service Architecture) 란

1. MSA 란? 대규모 서비스에서 많이 사용되는 MSA 가 무엇일까? 말 그대로 풀이해보면 작은 서비스로 이루어진 구조이다. 작은 서비스로 이루어진 구조는 또 무엇일까?

Javascript 비동기란?

비동기란? 영어로는 Asyncronous, 특정 함수 또는 코드의 실행 완료와 상관없이 다음 코드 및 함수를 실행하는 방식이다.

Blocking & Non-Blocking, Syncronous & Asyncronous

Blocking & Non-Blocking 과 Syncronous & Asyncronous 를 간단히 알아보고 차이점을 확인해보자. Blocking 은 어떤 요청을 클라이언트가 주었을때, 서버에서 완료 혹은 오류 처리를 반환하기 전까지 클라이언트가 다른 호출을 할...

Headless 란

Headless 란? Headless 란 직역을 해보면 머리가 없다는? 말인데.. 머리가 없다는게 도대체 무슨말일까?

Oracle OVER 명령어

쿼리 작업을 하다보면 SELECT 절에서 COUNT() 값을 같이 조회해서 내보내고자 할때가 있다.

Git add -P 와 commit -v 사용

일반적으로 git add . 또는 git add –all 을 사용해서 한번에 변경 내용을 스테이징영역으로 올린다.

Java Capitalize

자바에서 “command” => “Command” 로 변경하는 방법

외부 Jar 추가 방법

스프링 부트를 패키징하고 배포하는 과정에서 외부 ojdbc 를 사용해야 하는데

Java equals & hashCode

| 문제 스프링 시큐리티를 적용하다가 Entity 객체의 값을 비교하는 과정에서 equals 와 hashCode 메소드를 재정의 해야 한다는 것을 알았다. 그러면 두 메소드를 재정의하는 이유는 무엇일까..? | equals equals 는 객체를 비교한다. 쉬운 예로 Java 에...

Apache 의 동작 방식

| Apache? 우선 아파치는 HTTP Server 로 오픈소스이다. Nginx 도 많이 사용하지만 아직까지는 Apache 의 사용률이 우세인것 같다. 보통은 Web Application Server 인 톰캣등에서 사용되는 정적 리소스 (Static Resource) 들을 처...

Git Log 보기

| 문제 git history 를 보고싶어졌다. 간단하게 git log 를 이용하여 확인 할 수 있지만 좀 더 원하는 대로 출력할 수 있지 않을까 하는 생각에 찾아보게 되었다. | 과정 구글검색을 하였다. | 결론 git log 에서 내용을 보면 commit 옆에 해쉬 값이 ...

Git fatal: refusing to merge unrelated histories 오류

| 문제 기존에 있던 로컬 디렉토리에 깃 리포지토리를 연결하고 Push 또는 Pull 을 할때 “fatal: refusing to merge unrelated histories” 오류가 발생하여 동작하지 않았다. | 과정 이 오류는 로컬 디렉토리와 깃 리포지토리의 ...

정규표현식 정리 (진행중..) Regex

| 문제 비밀번호를 검사하는 정규식을 만드는데 이런저런 시행착오를 겪다가 내친김에 앞으로 자주 사용되는 정규식을 여기에 정리해보자 하고 만들게 되었다. | 정규표현식 목록 비밀번호 정규표현식 특수문자, 소문자, 대문자, 숫자 1개 이상. 특수문자, 소문...

Crontab 적용 시 주의사항(Precautions to apply Crontab)

| 문제 ShellScript 파일을 Crontab 에 적용하는데 있어서 실행이 안되는 경우가 발생하였다. | 해결 가급적이면 ‘vi crontab’ 대신 ```crontab -e’ 를 사용하자 ‘vi’ 로 실행하는 경우는 계정 권한에 따른 설정이 달라지는데, ‘cronta...

Spring Getter & Setter 보안취약성 관련

웹 어플리케이션의 보안취약성 점검을 받고 다음과 같은 문제가 있다는것을 보고받았다. “Public 메소드부터 반환된 Private 배열 - private로 선언된 배열이 public 메소드를 통해 반환이 되고 있음” 알고보니 Getter & Setter 가 정의된 VO...

Spring Security Cross Domain

프로젝트를 하다보면 항상 마주하는 Cross Domain 문제 이번에도 어김없이 문제가 생겼다. 같은 서버에서 포트가 다른 두개의 웹서버가 있고, 한 웹 서버에서 다른 웹 서버가 관리하는 이미지를 불러올때 발생하는 문제였다. 항상 발생하는데 적어두질 않으니 매번 찾아보기를 반...

/tmp/spring.log (Permission denied)

하나의 프로젝트에서 여러개의 프로파일을 관리할때 /tmp/spring.log 가 같이 사용되어 권한 오류가 발생하는 경우가 있다. 보통 logback 의 기본설정 파일을 가져오면서 같은 위치를 가리키게 되어 생기는 오류인데, 이럴 경우 아래와 같이 해결할 수 있다. <pr...

.gitignore가 적용되지 않는다

git 푸시를 할때 가끔 gitignore 가 제대로 동작하지 않는 경우가 있다. 이 경우 git 캐시를 지우고 다시 푸시해주자 git rm -r --cached . git add . git commit -m '깃 이그노어가 적용되지 않아서 다시 올려요~' 출처: My .git...

Git error: src refspec master does not match any

Git 푸시 도중 아래와 같은 에러가 발생하였다. error: src refspec master does not match any error: failed to push some ref to 'URL' 위 에러는 푸시를 할때, 커밋된 내용이 없기때문에 깃 서버에 추가할 브랜치가...

Oracle 날짜 관련 쿼리

참고 함수 및 포맷 # REF FUNCTION TO_CHAR(TARGET, FORMAT) : 숫자 또는 날짜를 지정한 포맷에 맞게 변환 TO_DATE(TARGET) : 문자를 DATE로 변환 # FORMATS 'YYYY' : 4자리 년도로 표시 'YY' ...

Apache + Tomcat 연동 및 SSL 적용

첫번째로 apache 와 tomcat 을 연동하기 위해선 jk_mod 라는 아파치 플러그인을 설치해야 한다. sudo apt install libapache2-mod-jk 그 다음 jk_mod 가 설치된 디렉토리로 이동하여 파일 하나를 수정한다. cd /etc/libapache...

Vue.js external script(외부 스크립트) 추가 방법

스프링 & 뷰 프로젝트를 하던 도중 굳이 외부 스크립트를 추가해야 할 일이 생겼다. 이런저런 방법을 동원해도 스크립트가 추가가 안되었는데 다음과 같이 했더니 잘 동작 되었다. // vue.config.js module.export = { publicPath: pro...

tail 명령어로 여러개의 로그파일 보기

아래 명령어를 입력하면 여러개의 로그파일을 로깅할 수 있다. 로그 내용의 변화가 있을 경우 파일명과 로깅내용이 나오게 된다. (로그파일에 변화가 없는 경우 출력 X) tail -f *.log

Git 비밀번호 입력 없애는 방법

1. Git Credential 정보 저장 git config --global credential.helper store 2. Git Credential 정보 캐시에 저장 (시간 설정 가능) git config --global credential.helper cache &...

Welcome to Jekyll!

You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different wa...

Back to Top ↑