본문 바로가기

전체 글137

22년 상반기 회고록 그리고 후반기에는... 안녕하세요. 방구석 개발자입니다. 올 한해도 벌써 6개월이 지났는데요. 하반기를 잘 마무리 하고자 하여 회고를 통해 남은 목표를 다시 잡아보려고합니다. 22년 목표 서비스회사로 이직(완료) * 서비스 회사로 이직하여 현재 열심히 근무중에 있습니다. 이직한 회사에 많은 기여하기 클린코드, 개발문화 등(완료) * 코드리뷰, 테스트 자동화, 테스트 코드 쉽게 짜는 방법, 안정적인 리팩토링 방법을 알리며 2~3번의 세미나도 진행했습니다. 개발문화에 기여하기(작게라도)(취소) * 목표가 너무 추상적이여서 취소하고 밑에 목료 발표 해보기로 도전해보겠습니다. 발표 1회 해보기(기술세션, 유스콘 등) * 발표주제도 생각했고 블로그에 포스팅하여 준비하겠습니다. 김영한강사님의 스프링 고급편 강의 듣기 * 아직 강의를 듣.. 2022. 7. 1.
도커(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.
엘레강트 오브젝트를 읽고 나서 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=258374007 이 책을 읽고 나서 엘레강트 오브젝트를 다 보고 나서 역자 서문을 다시 읽었다. 역자 서문의 글들이 더욱 공감이 갔다. 저자의 문체가 단정적이고 단호 했고 몇가지 객체지향 원칙들은 공감하기 어려운것 들이 였다. 호불호 중에서 불호에 가까운 책이이였다. 그러나 저자가 적어준 원칙대로 코딩할수 있다면 객체지향적인 코드가 될거이라고 생각했다. 2.6 불변 객체로 만드세요. 원칙은 좋은 장점이 많아서 그래도 실무에 생각이다. 이책의 원칙을 벗어난 코드를 짤 경우 더욱 유심해야되는 구나 라고 생각된다. 정적 메소드, 유틸리티 메소드, 가변객체를 실무에서 사용하는 경우가 정말 많은데 최대한 지양하고 좀 더 .. 2022. 2. 4.
1주차 - TDD 해당 포스팅을 하는 이유 그동안 배운 내용들을 정리하면서 복기하여 완전히 내것으로 만들기 위함입니다. 8개의 미션이 있으므로 한개씩 내용을 정리 할 예정입니다. 학습목표 * TDD 기반으로 프로그래밍하는 경험 * 메소드 분리 + 클래스를 분리하는 리팩토링 경험 * 점진적으로 리팩토링하는 경험 과정을 통해 배운 것 TDD란 무엇인가? TDD는 Test Driven Development 이라고 하며 한글로는 테스트 주도 개발이라고 불립니다. 테스트코드를 먼저 짜고 그다음 프로덕션 코드를 짜는 개발 방법론입니다. 실패하는 테스트 코드를 작성하고 -> 테스트가 통과하게만 하는 프로덕션 코드를 작성한다 -> 통과되었다면 프로덕션코드를 리팩토링한다. 해당 싸이클을 반복하여 점진적으로 요구사항 기능을 개발한다. TD.. 2022. 1. 5.
방구석 개발자의 21년 회고와 22년 다짐 안녕하세요. 방구석 개발자입니다.😄 벌써 21년 한해가 마무리 되고 있습니다.😂 한번도 회고정리를 포스팅 해보지 않았는데 이번에 한번 해보고 지속적으로 하려고 합니다. 21년의 목표는 뭐였을까? 저는 원노트를 애용하는 데요. 원노트에 21년 첫 목표를 적었습니다. 커다란 목표 : 개발 경험 및 개발 실력을 올리자 sqld자격증 따기 깃허브와 깃에 익숙해지기 !! 블로그 포스팅 총 100개 만들기 토이 프로젝트 만들기(웹 구축 및 배포까지) 코딩테스트 3번 이상 보기 이력서 정리 (깃허브 링크, 원티드, 프로그래머스에 올려서 최신화) aws 자격증 따기 왜 그런 목표를 세웠는지 20년도 si로 이직을 하게되었고 그 즈음에 개발역량이 많이 부족하다는 것을 알게 되었습니다. 그럼에도 감사하게도 아이핍이라는 스.. 2021. 12. 30.
우아한 테크캠프Pro 3기 후기 안녕하세요. 방구석개발자 입니다.😄 그동안 포스팅을 많이 못했는데요 우테코pro에 집중 하고자 잠시 포스팅 하지 못했습니다. 우테코Pro를 하면서 많은 경험, 인사이트를 얻어서 공유해보고자 합니다. 우테코Pro 란? 우아한테크캠프Pro는 NextStep에서 만들었고 우아한형제들에서 후원하는 강의입니다. 강의 대상자는 경력 3년이상의 웹백엔드 개발자입니다. 소프트웨어 장인으로 성장해 나가는 과정의 로드맵을 제시하고, 어떤 개발자로 성장해 나갈 것인지를 제시하는 과정입니다. 링크를 타고 가보시면 더 자세하게 나와있습니다. 왜 우테코Pro를 했는지? 저는 SI회사에 근무를 하였고 SI에서는 개발 역량을 올리기 힘들었습니다. 어느 순간 자신의 성장 한계를 느꼈고 제가 짠 코드가 맞게 짠건지 앞으로도 이렇게 개발.. 2021. 12. 29.
클린 코드를 읽고 나서 안녕하세요. 방구석 개발자입니다. 클린 코드를 사서 열심히 읽었는데요. 너무 좋은 책이라서 추천 드리려고 합니다. (2회독을 했지만 아직도 어려운 부분이 많긴해요.. ㅎㅎ) 후기 이 책을 읽고 나서는 제 자신이 부끄러웠습니다. 그동안 쓰레기 코드를 양산하는게 아닐까 싶은 생각도 들었습니다. 특히 저는 예전에 boolean을 매개변수로 가지는 함수를 만든 적이 있는데 이 책을 읽고 다신 그렇게 하지 말아야한다는 것을 알게 되었습니다. 특히 동시성부분에서 멀티스레드 코드를 정말 지독하게 테스트 해야 되는 구나를 알게 되었습니다. 최근에 쓰레드를 직접 객체 생성하도록 작성한 스케줄링 코드를 개선한 적이 있는데 스프링에서 주워지는 비동기 코드라던지 의존성주입을 통해 제어했으면 어땠을까? 라는 생각과 조금 일찍 .. 2021. 9. 28.
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.
반응형