분류 전체보기

[프로그래머스] Lv2. 쿼드압축 후 개수 세기
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/68936?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(arr): answer = [0,0] n = len(arr) def dfs(x,y,n): st = arr[x][y] for i in range(x,x+n): for j in range(y,y+n): if arr[i][j] != st: nn = n//2 dfs(x,y,nn) dfs(x+nn,y,nn) dfs(x,y+nn,nn) ..

[Spring] 트랜잭션 - 프록시 내부 호출 문제 2
@Transactional이 붙지 않은 메서드 내부에서 @Transactional이 붙은 메서드를 호출할 경우, 트랜잭션이 적용되지 않는 문제가 생겼다. 메서드 내부에서의 다른 메서드의 호출은 this가 생략된, 즉 자기 자신의 인스턴스 객체의 메서드를 호출하는 것이기 때문에 프록시 객체를 거치지 않아 트랜잭션이 실행되지 않는다. 이를 해결하기 위해서 internal() 메서드를 별도의 클래스에서 실행해야한다. InternalService static class InternalService { @Transactional public void internal() { log.info("call internal"); printTxInfo(); } private void printTxInfo() { boolea..

[Spring] 트랜잭션 - 프록시 내부 호출 문제 1
@Transactional을 사용하면 스프링의 트랜잭션 AOP가 적용된다. 이는 프록시 방식의 AOP를 사용하는데, 프록시 객체를 스프링 빈으로 주입받아 메서드가 실행되면, 적용 대상인지 아닌지를 프록시 객체가 판단 후에 실제 객체의 메서드를 호출하는 것이다. 만약 대상 객체를 직접 호출하게 되면 AOP가 적용되지 않고, 트랜잭션도 적용되지 않는다. 대상 객체 내부에서 메서드 호출이 발생할 경우, 프록시를 거치지 않고 대상 객체를 직접 호출하는 문제가 발생 할 수 있다. 이 경우 @Transactional이 있어도 트랜잭션이 적용되지 않는다. InternalCallV1Test @Slf4j @SpringBootTest public class InternalCallV1Test { @Autowired Call..

[Spring] 선언적 트랜잭션 동작 확인하기
스프링이 제공하는 트랜잭션 추상화를 이용하면, 사용하는 ORM 기술이 변경되어도 동일한 방식으로 트랜잭션을 사용할 수 있다. 스프링이 제공하는 추상 인터페이스 PlatfromTransactionManager를 이용하는 방법은 선언적 트랜잭션: @Transactionl 어노테이션으로 트랜잭션 사용 가능 프로그래밍 방식 트랜잭션: 트랜잭션 관련 코드를 작성하여 트랜잭션 사용 가능 이 있다. 이 중 선언적 트랜잭션을 이용하면 @Transactional 하나만으로 프록시 방식의 AOP가 적용되는데, 어노테이션 하나로 트랜잭션을 관리할 수 있는 만큼, 눈으로 동작 과정을 확인하는 것이 어렵다. 그래서 테스트를 통해 실제 트랜잭션이 적용되고 있는지 알아볼 것이다. TxBasicTest @Slf4j @SpringBo..
[TIL] 230202
오늘 한 일 프로그래머스 Lv2 2문제 해결 토비의 스프링 부트 강의 수강 시작 Spring Security를 이용한 쇼핑몰 프로젝트 생성 포트폴리오 정리 내일 할 일 포트폴리오 작성 프로그래머스 문제 해결 토비의 스프링 부트 강의 수강

[프로그래머스] Lv2. 다리를 지나는 트럭
코드 from collections import deque def solution(bridge_length, weight, truck_weights): cnt = 0 brg = [0]*bridge_length brg = deque(brg) truck_weights = deque(truck_weights) brg_sum = 0 while brg: cnt += 1 tmp = brg.popleft() brg_sum -= tmp if truck_weights: if brg_sum + truck_weights[0]

[프로그래머스] Lv2. 2 x n 타일링
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12900?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(n): dp = [0] * (n+1) dp[1] = 1 dp[2] = 2 for i in range(3,n+1): dp[i] = (dp[i-1] + dp[i-2])%1000000007 return dp[n] class Solution { public int solution(int n) { int[] dp = new int[n+1];..

[Jenkins] 에러 - Package 'jenkins' has no installation candidate
에러 AWS EC2 우분투 22.04 LTS에 젠킨스를 설치하려고 하니, 다음과 같은 에러가 발생했다. sudo apt install jenkins 해결 방법 다음과 같은 명령어를 입력해서 설치하면 정상적으로 설치가 된다. wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \ /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins

[Docker] 컨테이너, 이미지 관련 명령어
이미지를 지우기전에 동작중인 컨테이너를 삭제해야 이미지를 삭제할 수 있다. 컨테이너 동작중인 컨테이너 확인 $ docker ps 모든 컨테이너 확인 $ docker ps -a 컨테이너 삭제 $ docker ps -a 여러개 동시 삭제 $docker rm 컨테이너id,컨테이너id 컨테이너 모두 삭제 $ docker rm `docker ps -a -q` 이미지 현재 이미지 $ docker images 이미지 삭제 $ docker rmi 이미지id 컨테이너 삭제하기 전에 이미지 삭제하고 싶을때 $ docker rmi -f 이미지id (-f는 강제의 명령어)
[TIL] 230201
오늘 한 일 프로그래머스 Lv3 두 문제 해결 기존 프로젝트에 aws rds를 연결했다. docker 에러 해결 및 수정 스프링 트레이드오프 전략 수강 내일 할 일 프로그래머스 문제 해결 포트폴리오 양식 고민 docker에 jenkins 물려서 ci/cd 구축하기