전체 글 67

[Docker] 도커 컨테이너 IP확인

도커의 Network 환경은 각각의 독립된 환경으로 제공받아있다. Container들은 기본적으로 한개의 Ethernet Interface와 private IP를 자동으로 할당받는다. 참조할만한 사이트 : https://bluese05.tistory.com/15 Docker Network 구조(1) - docker0와 container network 구조 Docker Network 구조(1) - docker0와 container network 구조 [Contents] 1. Docker Network 구조(1) - docker0와 container network 구조 2. Docker Network 구조(2) - Container network 방식 4가지 3. Docker.. bluese05.tistor..

IT/etc 2022.03.23

[Docker] 도커에서 MySQL 컨테이너 설치부터 접속까지

도커가 설치 되어있다면, 아래 순서대로 MySQL 컨테이너를 설치하고 접속할수 있다. -- 최신버전 mysql 이미지 설치 ( 버전 명시를 안하면 최신버전으로 다운로드가 된다 ) docker pull mysql / $ docker pull mysql:8.0.22 -- 다운로드한 docker 이미지를 확인한다 docker images docker images 컨테이너생성방법 1 : Shell 명령어 이용 2. MySQL Docker 컨테이너 생성 및 실행 $ docker run --name mysql-container -e MYSQL_ROOT_PASSWORD= -d -p 3306:3306 mysql:latest -d: 백그라운드 모드 -p: 포트 포워딩 호스트:컨테이너 -e: 컨테이너 내에서 사용할 환경변..

IT/etc 2022.03.23

[Java] TDD 작성, JUnit ( 작성중입니다 )

TDD란? TDD(Test Driven Development)란 '테스트 주도 설계'라고 하여 테스트를 먼저 만들고 실제 서비스 될 코드를 작성하는 개발방법론 중 하나이다. TDD 작성의 장점은 객체지향적인 코드 개발이 가능하며, 설계 수정 및 디버깅의 시간을 단축하고, 유지보수가 용이하며, 오버 엔지니어링의 방지가 되는 점이 있다. 단점은 개발에 소요되는 시간이 증가하고, 테스트 코드가 짜는것이 어렵다는 점이다. 1. 테스트 코드를 작성하는 이유 테스트 코드를 작성하지않으면 문제를 빠르게 파악하기 힘들고, 한번의 수행을 위해 아래의 과정을 반복 해야지 테스트가 가능하다. 1. 코드 작성 > 2. 서버 실행 > 3. 코드 요청 수행 > 4. 요청결과를 디버깅 위 과정을 문제가 해결될때까지 반복해야하는데,..

IT/JAVA 2022.03.18

[Java] Garbage Collection(가비지 컬렉션)이란?

- Garbage Collection (가비지 컬렉션)이란? 프로그램 개발을 하다보면 유효하지 않은 메모리(Garbage)가 발생하게 된다. Java를 이용해 개발하다보면 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해준다. - JVM JVM 자바 가상머신의 약자를 따서 줄여부르는 용어이다. 자바 애플리케이션을 클래스 로더를 통해 읽어들여 실행하는것 JVM은 OS로부터 프로그램이 필요로 하는 메모리를 할당받음. 자바 컴파일러 (javac)가 자바 소스코드(.java)를 읽어들여 byte code(.class)로 변환시키고, Class Loader를 통해 class파일들이 JVM으로 로딩 된다 로딩된 class파일들이 Execution enging(실행 엔진)을 통해 해석된다. 해석된 바이트코드는..

IT/JAVA 2022.03.15

[Java] 자바의 동시성 (Concurrency)

자바의 동시성 자바는 멀티쓰레드를 지원하는 언어이다. 멀티 쓰레드 프로그래밍에서 고려해야 할 것이 바로 동시성 문제이다. -> 동기화를 해주어야 한다. Thread safe? - 쓰레드 세이프라는 것은 멀티쓰레드 프로그래밍 환경에서 특정 자원에 대해 여러 쓰레드로 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없음을 의미한다. - 자바 JVM내 Method 영역내의 데이터나 인스턴스 변수와 같이 Heap영역에 저장되는 데이터는 여러스레드 간에 공유되는 자원이기때문에 Thread safe한 자원이 아니다. -> 그렇기때문에 Thread safe하지 않은 자원에 대해서 데이터의 안정성과 신뢰성을 보장하고, 동시성 문제를 발생시키지 않기 위한 동기화가 필요하다. 자바의 동기화 방법 1. Syncronize..

IT/JAVA 2022.03.15

REST API란?

REST API란? Representational State Transfer 의 약자이다 자원의 이름으로 URI를 명시, 구분하여 HTTP Method ( POST, GET, PUT, DELETE)를 통해 해당자원에 대한 CRUD Operation을 적용하는 것을 의미한다. 창시자 Roy T.Fielding 의 박사학위 논문에 그는 분산 하이퍼미디어 시스템 (예:웹)을 위한 아키텍쳐 스타일 이라고 표현했다. (+) 토스 개발자의 세션을 보고 기록하였습니다. https://tv.naver.com/v/2292653 Day1, 2-2. 그런 REST API로 괜찮은가 NAVER Engineering tv.naver.com 인터넷에 어떻게 정보를 공유할수 있을까? 고민하다가 -> 정보들을 하이퍼텍스트로 연결하는..

IT/etc 2022.03.14

MVC패턴이란?

Q. 모델-뷰-컨트롤러 (Model-View- Controller) 컴퓨터 프로그램 개발 중 많이 듣는 MVC구조, 패턴, 아키텍처라는 말은 무엇? A. MVC패턴은 디자인 페턴 중의 하나이다. 하나의 어플리케이션을 구성할때 구성요소를 세가지 역할로 구분한 패턴이다. - 데이터 객체를 모델(Model)이라 지칭하고, 데이터는 내부 상태에 대한 정보를 가지고 있어야한다. - 사용자 인터페이스 요소 를 뷰(View)라고 지칭한다. - 데이터와 사용자인터페이스 요소를 잇는 다리역할을 한다. Q.MVC 패턴을 사용 하는 이유는 무엇인가? A. 서로 분리되어 각자의 역할에 집중할 수 있도록 하여, 유지보수성, 어플리케이션의 확장성, 유연성을 증가시키고, 중복코딩이라는 문제점을 제거하기 위해 사용한다. 역할분담하여..

IT/etc 2022.01.24

Swagger 설정하기 (gradle)

Swagger는 REST 웹서비스를 설계, 빌드, 문서화 하는것을 도와주는 오픈소스 소프트웨어이다. Spring으로 RestAPI를 개발하고 그에대한 문서를 정리할때, Swagger를 이용하게되면 이런 작업이 보다 편리하다. 문서 자동화 뿐만 아니라 제공되는 UI에서 직접 API테스트를 할 수 있다. 1. 의존성 추가 아래의 주소에서 사용하고싶은 스웨거 버전의 디펜던시를 찾아 프로젝트에 추가한다. https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui 2. Swagger 설정 추가 @Configuration 으로 스웨거Config를 등록한다. 옵션 설정은 이곳에서 한다. import org.springframework.context.an..

IT/Server 2021.12.17

프록시환경에서 clientIP 얻기

클라이언트와 서버의 중간의 로드밸런서나 프록시를 거치면, 서버 접근 로그에는 로드밸런서나 프록시의 IP 주소를 담고있다. 클라이언트의 원 IP를 알기위해서는 X-Forwarded-For (XFF) 헤더가 표준으로 사용된다. 아래의 코드로 Util 소스에서 처리한다. WebServer, WAS, L4, proxy 종류와 상관없이 clientIP를 가져오기 위해서는 다음과 같은 순서로 IP를 찾아야한다. import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.http.HttpServletRequest; public class LogUtil { private static Logger logger = LoggerFactory.g..

IT/JAVA 2021.12.17

[Docker] 도커/쿠버네티스 실습 기록

참고 서적 : 시작하세요! 도커/쿠버네티스 환경 : Mac OS > vitrualBox > ubuntu 1. 로컬에 우분투 설치 1-1. VirtualBox 다운 및 설정 방법 참고 : https://blog.naver.com/alice_k106/220882666548 1-2. 운영체제에 맞는 virtualBox 다운 https://www.virtualbox.org/wiki/Downloads 1-3. 우분투 가상이미지 .iso 파일 다운 http://releases.ubuntu.com/16.04/ 맥에 설치하면서 시스템 무결성 문제로 겪는 문제 해결에 도움된 사이트 : https://m.blog.naver.com/5341287/221697740777 -> 재부팅할때 복구모드 진입하면서 시간이 오래걸려서 ..

IT/Server 2021.09.01

[Docker] 도커란? MacOS에 도커 설치하기

개발자에게 스터디란 꼭 필요한 부분.. 도커 컨테이너로 토이프로젝트를 만들어 실습해보고자 한다. 도커란 ? Docker는 리눅스 컨테이너에 어플리케이션을 신속하게 구축하고 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다. Docker는 Go언어로 작성되어있으며, 소프트웨어를 컨테이너라는 표준화 된 유닛으로 패키징한다. 이 컨테이너는 라이브러리, 시스템도구, 코드, 런타임 등 소프트웨어를 실행 하는데에 필요한 모든것이 포함되어있다. 도커를 사용하면 환경에 구애받지않고 어플리케이션을 배포 및 확장 할 수 있다. 아주 쉽게 가상화 머신을 생성하고 관리할 수 있어 2013년 배포 이후 꾸준히 인기가 좋아지고있다. 도커파일 하나만 공유하면 다른 환경에서도 같은 셋팅의 가상화머신을 생성 할 수 있다. 도커의 장점 ..

IT/Server 2021.08.31

[GIT] MacOS에서 Git 사용하기

1. 터미널에서 깃 저장소로 사용할 디렉토리로 이동해서 git init 을 입력해 이 디렉토리를 로컬 Git저장소라고 알려주는 작업을 함 drwx------@ 4 we staff 128B 7 6 15:49 Applications drwx------+ 49 we staff 1.5K 8 31 00:43 Desktop drwx------+ 6 we staff 192B 8 29 23:36 Documents drwx------@ 107 we staff 3.3K 8 31 00:44 Downloads drwx------@ 65 we staff 2.0K 7 9 15:57 Library drwx------+ 4 we staff 128B 7 6 09:38 Movies drwx------+ 4 we staff 128B 7 ..

IT/GIT 2021.08.31