전체 글 75

Spring boot와 MySQL을 Docker 컨테이너로 올리기

Spring boot로 어플리케이션 개발하던 중 도커를 이용하여 동작시키면 어떨까 하여 진행하였고, 그 과정에 여러 가지 일들을 기록하고 공유하고자 한다. 먼저 어플리케이션은 spring boot로 되어있고 데이터베이스는 mysql을 사용한다. mysql과 spring boot를 도커 컨테이너로 각각 올려야 한다. 이 과정에서 docker compose라는 것을 사용하여 같이 동작시키고 한 네트워크 안에서 만들 수 있으나, 데이터베이스와 어플리케이션을 분리하여 관리하고 싶어서 docker composer를 사용하지 않았다. 각각의 docker 컨테이너를 실행시킬 때 문제는 컨테이너 간 네트워크가 연결되어야 한다는 것이다. 도커 네트워크에 대해서는 아래 블로그에 자세하게 나와 있어 확인이 가능하다. jun..

공부/Spring 2020.08.22

Java가 Call by reference가 아니라 Call by Value 인 이유

java가 call by reference가 아니라 call by value인 이유를 알아보겠습니다. call by reference : 참조에 의한 호출, 함수에서 인자 값을 넘길 때 레퍼런스(객체를 참조하는 주소)를 넘김. call by value : 값에 의한 호출, 함수에서 인자 값을 넘길 때 값을 복사해서 넘김. 먼저 예제 코드 전체를 보겠습니다. public class Main { public static void main(String[] args) { Persion personA = new Person("Choi"); changeName(personA, "Park"); System.out.println(personA.getName());// Park changePerson(personA); ..

공부/Java 2020.08.20

내가 만든 Java gradle 라이브러리를 maven repository 에 등록하기 회고

java 라이브러리를 만들었고 maven repository에 등록을 하였다. 그 방법이 매우 어렵고 복잡하여 (php의 경우 간단함) 간단하게라도 정리하고자 한다. 이 과정에서 많은 도움이 되었던 글을 공유한다. 이 글 보고 따라 하면 다들 성공할 것으로 생각된다. (다만 maven프로젝트에 대한 설명이다. gradle의 설정에 대한 정보는 아래 첨부한다.) 정리가 매우 잘되어있어 많은 도움이 되었다. (감사합니다) https://jojoldu.tistory.com/161 Java 라이브러리 maven 저장소에 등록하기 안녕하세요? 이번 시간엔 Java 라이브러리 maven 저장소에 등록하는 방법을 소개드리려 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다...

공부/Java 2020.07.27

내가 만든 PHP composer package를 packgist.org 에 등록하기

php에서는 패키지간 의존성 관리를 위한 도구를 composer라고 한다. 필요한 패키지를 composer를 통해 설치하고 사용할 수 있다. 패키지를 packgist.org에 등록을 하게 되면 아래와 같은 명령어로 설치가 가능하다. composer {package_name} install 직접 php package를 만들어 packgist.org에 등록하였다. 이 방법을 공유하고자 글을 쓴다. 참고로 java 라이브러리를 만들어 maven repository에도 등록하였는데 php에 비해 매우 복잡하다. 그 방법은 여기 링크를 통해 확인 가능하다. 그 방법은 간단하게 설명하면 패키지를 만들고 github에 업로드하고 packgist.org에 깃헙을 연동하면 끝이다. 매우 간단하지만 아래 조금더 자세하게 ..

공부/PHP 2020.07.27

Gradle 프로젝트에서 junit5 실행하기

java로 graddle프로젝트를 생성하여 개발하려고 하였다. junit5로 테스트하려고 하였으나 테스트가 되지 않아서 여기저기 찾아보고 삽질하여 답을 찾았다. 나와 같은 사람들이 이 글을 보고 빠르게 해결하기를 바라며 공유하고자 한다. 1. intellij에서 java gradle 프로젝트를 생성한다. 2. gradle에 junit5 추가 junit5를 이용하여 코드를 작성하기 위해선 junit-jupiter-api가 필요하다 그리고 테스트 실행하기 위해서 junit-jupiter-engine이 필요하다. maven repository에서 junit을 검색하였다. 아래와 같이 사용하라고 나온다. testCompile group: 'org.junit.jupiter', name: 'junit-jupiter..

공부/Java 2020.07.18

[PHP] APCu 프로세스 간 자원 공유

APCu는 APC에서 opcode 캐시 부분만 제거된 모듈로 데이터를 공유 메모리에 저장하여 프로세스 간 데이터를 공유할 수 있는 기능을 제공한다. APC란 Alternative PHP Cache (APC) 정의 Alternative PHP Cache (APC)는 PHP를 위한 무료 opcode 캐시입니다. 그것의 목표는 PHP 중간 코드를 캐싱하고 최적화하기 위한 자유롭고 개방적이며 견고한 프레임 워크를 제공하는 것입니다. php manual unhosted.tistory.com 멀티 프로세스를 동작하는 php특성상 프로세스가 종료될 때 자원이 해제되어 자원을 공유하기 위해서는 DB형태로 저장해야 된다고 생각하였으나, APCu를 이용하여 프로세스 간 자원 공유를 사용할 수 있다는 것을 알게 되었다. 실..

공부/PHP 2020.07.16

Alternative PHP Cache (APC)

정의 Alternative PHP Cache (APC)는 PHP를 위한 무료 opcode 캐시입니다. 그것의 목표는 PHP 중간 코드를 캐싱하고 최적화하기 위한 자유롭고 개방적이며 견고한 프레임 워크를 제공하는 것입니다. php manual에는 아래와 같은 경고 문구가 나온다. 현재는 개발이 중단되었으며 opcode 캐시 기능이 제외되고 데이터 스토어 기능만 지원하는 APCu로 대체되었다. APCu를 사용하여 프로세스 간 데이터 공유를 할 수 있게 되었는데. 아래 링크에 자세하게 설명되어있다. unhosted.tistory.com/39 [PHP] APCu 프로세스 간 자원 공유 APCu는 APC에서 opcode 캐시 부분만 제거된 모듈로 데이터를 공유 메모리에 저장하여 프로세스 간 데이터를 공유할 수 있..

공부/PHP 2020.07.10

OAuth 2.0 인증 서버 (Authorization Server)

스프링 부트로 OAuth 2.0를 만들기로 하면서 OAuth 2.0에 대해 공부하는 중이고 알게 된 내용을 정리하려고 한다. 카카오 간편 로그인과 RFC문서를 참조하였으며 api 명세는 카카오 간편 로그인과 거의 동일하다. 보안에 가장 적합하다고 판단되는 Authorization Code 방식에 대한 내용만 작성하였다. 먼저 인증에 필요한 용어들 1. Resource Owner : 자원 소유자 (사용자) 2. Client : 사용자가 사용할 어플리케이션 4. Authorization Server : 인증 서버 (권한 서버). 어플리케이션을 사용하기 위해 인증절차를 수행해야 하는 서버 5. Resource Server : 어플리케이션에서 사용할 데이터가 저장되어있는 서버 6. User-Agent : 사용자..

공부/etc 2020.06.06

오픈소스 기여하기

코드이그나이터4에 pull request를 날린 끝에 두건이 병합이 되었고 기여자가 되었다. 간단하지만 그 과정을 공유한다. 오픈 소스에 기여하는 방법 1. 오픈소스를 사용하다가 문제가 되거나 고치면 더 좋을 부분을 발견한다. 2. 코드를 수정하고 테스트 진행하여 문제가 없는지 확인한다. 3. 오픈소스를 포크 한다 4. 브랜치를 생성하여 커밋 푸시한다 이때 커밋에 서명을 해야 하는 경우도 있다. 5. 해당 저장소에서 풀 리퀘스트를 생성한다 6. 테스트가 통과되고 merge가 되면 병합이 되고, 승인되면 끝. https://github.com/codeigniter4/CodeIgniter4/commits?author=ByeongUkChoi codeigniter4/CodeIgniter4 Open Source ..

일상/개발 2020.06.04

PHP에서 Closure로 Lazy loading 구현하기

spring jpa를 사용하면 간단하게 db에 있는 데이터를 객체로 받는다. 연관된 테이블도 어노테이션 하나만으로 JOIN이 가능하다. 또한 fetchType을 이용하여 즉시 조회할지 지연 조회할지 설정도 가능하다. 게시판 테이블 board_id name 1 공지 게시판 2 자유 게시판 게시글 테이블 post_id board_id title content 1 1 공지글 공지글 입니다. 2 1 공지사항 공지사항 입니다 3 2 자유글 자유글 입니다 위 테이블을 예로 들면 게시판 객체에는 멤버 변수로 게시판 아이디, 게시판 이름, 게시글(1:N)이 있을 것이다. 그래서 jpa를 사용하면 게시판 한번 조회 시 1:N으로 연결된 게시글도 모두 가져올 수 있다 하지만 여기서 게시판만 조회해서 사용하려는 경우도 게시..

공부/PHP 2020.05.29
728x90
반응형