전체 글

기록하며 공부하는 기술 블로그
Study

[Jenkins] 젠킨스 플러그인 오프라인 설치 (윈도우 plugins 폴더 위치)

폐쇄망의 경우 젠킨스를 설치해도 플러그인의 다운로드가 어렵습니다. https://plugins.jenkins.io/ 위 사이트를 통해서 폐쇄망이 아닌 PC에서 원하는 플러그인을 검색해서 hpi를 다운로드 받고, plugin 폴더로 이동시키는 방법이 있는데, 여러개의 hpi를 다운로드 시킨다면 번거롭고, 필요한 다른 플러그인을 일일이 실행시키는 일은 매우 귀찮습니다. 해결방법(Windows) 폐쇄망이 아닌 PC에 젠킨스 설치 후 필요한 플러그인 다운로드 C:\ProgramData\Jenkins\.jenkins 아래에 plugins 폴더를 복사 폐쇄망 PC의 C:\ProgramData\Jenkins\.jenkins에 있는 plugins 폴더 삭제 후 복사한 plugins 붙여넣기

Languege/Java & Spring

[김영한 스프링] 빈 스코프

빈 스코프란? 기본적으로 스프링 빈은 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될때 까지 유지되는데, 이것은 스프링 빈이 싱글톤 스코프로 생성되기 때문입니다. 그렇다면 다른 생명주기를 가진 스코프는 어떤게 있을까요? 싱글톤: 기본스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너가 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 짧은 범위의 스코프 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 싱글톤으로 생성된 빈은 스프링 DI ..

Languege/Java & Spring

[김영한 스프링] 빈 생명주기 콜백

빈 생명주기 콜백 시작 DB 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션이 시작하는 시점에 연결하고, 종료되는 시점에 연결을 종료하는 작업을 하려면 객체의 초기화와 종료 작업이 필요합니다. 이번 강의에서는 스프링에서의 빈 생명주기 콜백을 공부했습니다. 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성 스프링 빈 생성 의존관계 주입 초기화 콜백 사용 소멸전 콜백 스프링 종료 초기화 콜백: 빈이생성되고, 빈의 의존관계 주입이 완료된 후 호출 소멸전 콜백: 빈이 소멸되기 직전에 호출 객체의 생성과 초기화를 분리하자. 생성자는 필수 파라미터를 받고, 메모리를 할당해서 객체를 생성하는 책임을 가집니다. 반면 초기화는 이렇게 생성된 값들을 이용해 외부 커넥션 연결 등 무거운 동작을 수행합니다. 따라서, 생성자..

Algorithm

[백준] 4375번 1 파이썬 초간단 문제 풀이

문제 풀이 처음에는 이게 뭐지? 했는데 3의 배수(3, 6, 9 , 12, ...)중에 1로만 이루어진 수 '111'은 3자리수기 때문에 3을 출력하고, 7의 배수(7, 14, 28, ...)중에 '1'로만 이루어진 수를 찾는 문제였습니다. 문제를 이해하니 간단하게 풀 수 있습니다. 저는 직관적으로 문자열을 1씩 더해가며 나누어 떨어지면 자릿수를 출력하도록 작성하였습니다. 이 문제는 종료 조건이 따로 명시되어 있지 않기 때문에 try except를 이용하여 EOFError가 발생하면 멈추도록 작성하였습니다. while True: try: n = int(input()) except EOFError: break total = '1' while True: if int(total) % n == 0: print(..

Algorithm

[백준] 1476번 날짜 계산 파이썬 문제 풀이

[문제 풀이] 위 문제는 브루트 포스 문제로 수의 범위가 넘어가면 1로 초기화해주면 되는 아주 간단한 문제이기 때문에 코드에 대한 설명은 생략하겠습니다. E, S, M = map(int, input().split()) year = 0 E1 = 0 S1 = 0 M1 = 0 while True: if E == E1 and S == S1 and M == M1: break year += 1 E1 += 1 S1 += 1 M1 += 1 if E1 > 15: E1 = 1 if S1 > 28: S1 = 1 if M1 > 19: M1 = 1 print(year)

Languege/Java & Spring

[김영한 스프링] 의존관계 자동주입

다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 있습니다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입이 가장 중요하고 많이 쓰임으로 생성자 주입만 기재하겠습니다. 생성자 주입은 말 그대로 생성자를 통해서 주입을 받는 방법입니다. 생성자 주입의 특징 생성자 호출 시점에 딱 1번 호출되는 것이 보장 불변, 필수 의존관계에 사용 생성자 주입의 특징은 생성자가 딱 1개만 있다면 @AutoWired를 생략해도 자동으로 주입됩니다. (스프링 빈에만 해당) 옵션처리 주입할 빈이 없어도 스프링이 동작해야 하는 경우가 있은데 @Autowired만 사용하면 required 옵션의 기본값이 true로 되어있어서 자동 주입 대상이 없으면 오류가 발생합니다. 자동 주입 ..

Algorithm

[프로그래머스] 완주하지 못한 선수 파이썬 문제 풀이

문제 풀이 : 1.딕셔너리를 이용해서 참여자의 수를 구해줍니다. 만약 dict1안에 동명이인이 존재하다면 1을 더해주고 아니라면 1을 추가해줍니다. 2. 위에 1번에서 구했던 참여자 중 완주자가 있다면 -1 시켜줍니다. 3.완주하지 못한사람 (key,val)에서 val이 0이 아닌사람이 있다면 return 시켜줍니다. 처음에는 count를 이용해서 간단하게 문제를 풀었는데 효율성 테스트에서 시간초과 되어 문제의 핵심인 해시(딕셔너리)를 이용하여 풀었습니다. 아래는 효율성 테스트에서 실패한 코드입니다. 알고리즘은 결과도 중요하지만 효율성이 가장 중요하다는걸 깨달았네요. 매일 하나씩 알고리즘 문제를 풀다가, 얼마 전 백준 100문제를 넘게 풀었더라구요.(어느덧 실버2) 항상 꾸준하게 문제를 풀다보면 프로그래..

Languege/Java & Spring

[김영한 스프링] 싱글톤 컨테이너

웹 애플리케이션과 싱글톤 웹 애플리케이션은 보통 여러 고객이 동시에 서버에 요청을 보냅니다. 스프링이 없는 순수한 DI 컨테이너에 memberService를 클라이언트 A,B,C가 요청한다고 쳤을 때, DI 컨테이너는 매번 다른 객체를 새롭게 생성하게 됩니다. 하지만 고객 트래픽이 초당 100개 1000개씩 생성된다면 메모리 낭비가 심해질 것 입니다. 이를 해결하기 위해서 gof디자인 패턴에서 나오는 싱글톤(Singleton) 이라는 패턴이 나왔는데, 하나의 static 객체를 메모리에 띄우고 이를 재사용하여 시스템의 효율을 높이는 방법입니다. 싱글톤 패턴의 문제점 순수 자바의 싱글톤 패턴은 아래와 같은 형식으로 사용이 가능합니다. 하지만 이 방법에는 여러가지 문제점이 있습니다. 싱글톤 패턴을 구현하는 ..

mntdev
MNT_Dev