본문 바로가기

프로그래밍106

도메인 주도 설계 핵심 정리 1장 나에게 도메인 주도 설계는 좋은 설계와 나쁜 설계 작업보드 일정관리 스크럼의 가장 중요한 원칙 중 하나인 지식획득은 감안하지 않고 주로 일정 관리를 위해 스크럼을 사용하는 경우로, 정해신 일정 내에 소프트웨어 릴리스를 인도해야하는 압박감으로 인해 자주 발생한다. DDD를 통하여 밑의 다양한 비즈니스 문제를 해결 할 수 있다. 소프트웨어 개발을 이익중심이 아닌 원가 중심으로 생각한다. 문제를 신중하게 연구하고 설계하기보다는 기술적으로 해결하려고 한다. 데이터베이스에 너무 큰 우선순위를 부여 한다. 개발자가 비즈니스 목적에 따라 클래스와 오퍼레이션 이름을 짓는 것에 크게 관심이 없다. 일반적으로 비즈니스와 협업이 빈약하기 때문에 나온 문제다. 프로젝트에 대한 예측을 매우 강하게 요구한다. 개발자가 비즈.. 2022. 7. 20.
도커(docker) 기본 명령어 모음 오늘은 도커의 기본 명령어를 몇개 나열 하고자 합니다. nginx 이미지를 받는다. docker pull nginx nginx를 80번 포트, 이름은 nx로 만든다. docker create -p 80:80 --name nx nginx 도커 상태를 확인한다. docker ps -a 를 붙이면 실행되지 않은 도커컨테이너도 확인 할 수있다. ex) docker ps -a [containder Id]가진 도커 컨테이너를 시작한다. docker start [containder Id] nginx이미지로 컨테이너를 80포트이름이 nx2 로 만들면서 시작한다. docker run -d -p 80:80 --name nx2 nginx 도커 컨테이너를 정지한다. docker stop [컨테이너명] 도커 컨테이너를 재시.. 2022. 6. 17.
Flyway 에러처리 Flyway 란? Welcome to Flyway, database migrations made easy. Flyway는 오픈 소스 데이터베이스 마이그레이션 도구입니다. - flywaydb.org- 플라이웨이는 디비 마이그레이션 도구로써 데이터베이스 형상관리를 위해서 사용합니다. 형상관리란 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것으로, 형상 관리는 일반적인 단순 버전 관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 이야기합니다. 자세한 내용은 우아콘 flyway 를 참고하시면 좋을거 같습니다. Flyway_schema_history flyway_schema_history는 flyway사용할때 생기는 테이블 입니다. flyway를 사용하면 sql 파일을 돌면서.. 2022. 6. 16.
configuration test 대체하기 왜 사용했나요? 테스트 자동화 도입 중 여러 DataSourceConfiguration중에서 RedshiftDataSourceConfiguration 가 있는데 TestContainer에서 제외하고 싶어서 사용했습니다. 어떻게 사용했나요? @TestConfiguration를 붙이고 아래와 같이 작성합니다. @TestConfiguration @Profile({"test"}) public class TestRedshiftDataSourceConfiguration { @Bean(name = "redshiftDataSource") public DataSource redshiftDataSource() { return new DataSource() { //... } //... } } 테스트 하고 싶은 클래스에 @I.. 2022. 5. 7.
스프링 이벤트 프로그래밍 적용하기 안녕하세요. 오늘은 이벤트 기반 프로그래밍에 대해서 알아보고 스프링부트에 적용해보는것까지 확인해보겠습니다. 이벤트 기반 프로그래밍이란? ‘사건’에 따라, 제어 흐름이 결정되어 일을 하도록 하게끔 만들어진 프로그래밍 언어 방식을 뜻한다. -위키백과- 스프링 이벤트는 언제 사용할까? 서비스간의 결합도를 낮추고 싶을때 서브 로직이 에러가 나더라도 메인 로직은 정상적 완료 하고 싶을때 이커머스 도메인으로 해당 상황을 고민해보자면 사용자가 회원을 가입합니다. 회원 가입할때 웰컴쿠폰을 발행합니다. 기존에는 회원가입 서비스에서 쿠폰서비스를 의존하여 사용했습니다. 쿠폰 발행시 에러가 나면 회원가입도 에러가 나서 회원가입이 롤백되었습니다. 스프링 이벤트를 적용하면 두가지 문제를 해결 할 수 있습니다. 구현 코드 간단한.. 2022. 5. 7.
@SpringBootTest @Transactional rollback @SpringBootTest @Transactional rollback 열심히 springboottest 코드를 짜는 와중에 @DataJpaTest처럼 @Transactional rollback이 자동으로 되는줄 알았습니다.. 그래서 알아보니 @Transactional 어노테이션을 붙여야 rollback처리가 되었습니다. 더 알아보니 WebEnvironment.RANDOM_PORT는 롤백이 안될 수 있다고 하여 직접 테스트 해보았습니다. RollBack처리가 잘 됨을 알 수 있었습니다. 테스트한 코드 GitHub - lsm7179/board Contribute to lsm7179/board development by creating an account on GitHub. github.com 결론 @Spr.. 2022. 3. 13.
Spring4 Junit 테스트 코드 작성기 안녕하세요. 방구석 개발자입니다. 현재 프로젝트는 스프링4, 전자정부프레임워크를 이용하여 진행하고 있습니다. 스프링부트가 아니여서 아쉽지만 코드품질을 높이고자 테스트 코드를 작성하려고 합니다. 테스트 코드 작성 각 MVC 패턴에 맞게 테스트 코드가 이루어져야 된다고 생각하여 각 패턴에 맞는 샘플 테스트 코드를 작성해보겠습니다. 우선 pom.xml 에 필요한 dependecy 추가했습니다. junit junit 4.12 test org.springframework spring-test 4.3.22.RELEASE test ControllerTest @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath*:ego.. 2021. 9. 20.
백준 5014 스타트링크 자바 5014 스타트링크 문제 보러가기 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 문제 설명 자바 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; public class Main { static int visited[]; public static void main(String[] args) throws Excep.. 2021. 8. 17.
프로그래머스 상호 평가 자바 https://programmers.co.kr/learn/courses/30/lessons/83201 코딩테스트 연습 - 2주차 [[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD" programmers.co.kr 자바 코드 class Solution { public String solution(int[][] scores) { StringBuilder answer = new StringBuilder(); for(int i=0;i=80){ return "B"; }else if(score>=70){ return "C.. 2021. 8. 10.
백준 7576 토마토 자바 7576 토마토 문제 보러가기 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제 설명 자바 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { static int n, m; static int[] dx = {0, 0, -1, 1}; .. 2021. 8. 4.
ThreadPoolTaskScheduler를 이용하여 자바 스케줄러 구현 및 강제종료 구현 안녕하세요. 방구석 개발자입니다. 현재 진행중인 프로젝트에서 원하는 시간대 실행되는 배치를 등록하고 실행하는 기능을 만들어야 돼서 ThreadPoolTaskScheduler를 이용하여 구현하였는데요. ThreadPoolTaskScheduler가 뭔지 또 어떻게 사용되는지 알아보도록 하겠습니다. ThreadPoolTaskScheduler란 ThreadPoolTaskScheduler는 태스크실행 및 스케줄링에 사용되는 스프링 라이브러리 입니다. 배치 관리 할때 Thread를 개발자가 직접 제어하지 않고 실행하고 싶은 Task와 시간을 Pool에 넣습니다.그러면 ThreadPoolTaskScheduler에서 제어하여 해당 시간에 맞춰서 Thread를 생성 및 실행 시키고 종료 까지 해줍니다. 스프링 공식 문서.. 2021. 8. 2.
백준 1149 RGB거리 자바 1149 RGB거리 문제 보러가기 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 설명 자바 코드 import java.util.*; public class Main{ public static void main(String[] args) throws Exception { Scanner scanner=new Scanner(System.in); int n = scanner.nextInt(); int color[][]=new int[3][n+1]; int result[][]=new int.. 2021. 7. 29.
노마드 코더 니꼴라스와 만드는 진짜 리액트 앱 공부 안녕하세요. 방구석 개발자입니다. 노마드 코더 니꼴라스와 만드는 진짜 리액트 앱 책을 보면서 리액트를 공부했습니다. 공부한 것들을 정리 해보겠습니다. 리액트 기본 동작 원리 자바스크립트 코드를 리액트가 해석 후 html로 끼워 넣는다. ex) index.js 를 리액트가 해석 한다 -> index.html에 끼워 넣는다. 리액트 기초 개념 리액트는 반드시 알아야 할 기초 개념이 있다. 바로 컴포넌트, JSX, props 이다. 이 3가지 개념을 꼭 알아야 한다. 컴포넌트 //App.js import React from 'react' function App(){ return ( Hello ); } 코드에서 App컴포넌트를 정의 했고 App컴포넌트는 HTML을 반환하고 있다. //index.js import.. 2021. 7. 25.
백준 1932 정수 삼각형 자바 1932 정수 삼각형 문제 보러가기 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 문제 설명 자바 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.pa.. 2021. 7. 14.
백준 2579 계단 오르기 자바 계단 오르기 문제 보러가기 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 설명 자바 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.. 2021. 7. 14.
백준 1463 1로 만들기 자바 1로 만들기 문제 보러가기 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 설명 자바 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; public class Main { static int []isVisited; public static void main(String[] args) throws Exception{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int n=Integer.parseInt(br.readL.. 2021. 7. 13.
반응형