2024.3월, OPIc IH 후기
동아리 및 기타 활동2024. 3. 21. 15:292024.3월, OPIc IH 후기

마지막으로 치른 어학 시험은 토익으로, 약 3년 전이었다. 정확히 기억은 안나지만, 885 였던 것 같다. 아무튼, 삼성전자 지원 조건에 스피킹 점수가 필수적이길래 시험을 응시해야 했다. 스피킹 시험은 토익 스피킹과 오픽이 있는데, 간략히 알아보니 토익 스피킹: Script를 외워서 가는 자에게 유리. 오픽: 프리토킹이 가능한 자에게 유리. 이러한 느낌이었다. 고민도 없이 오픽을 신청했다. 시험 일정이 굉장히 촘촘하게 있었고, 2일 뒤 시험에 응시 가능하길래 바로 신청했다. 시험 장소는 시청역 인근 오픽 센터였는데, 대학 강의실 하나만한 곳에 컴퓨터가 따닥따닥 붙어있고... 그냥 헤드폰 끼고 말하는 방식이었다. 앞, 옆 사람이 말하는 것 다 들린다. 나는 최소한의 방음부스? 독립적인 공간은 있을 줄 알았..

2024 1회 정보처리기사 필기 합격
동아리 및 기타 활동2024. 3. 21. 15:162024 1회 정보처리기사 필기 합격

사실 남들 다 따길래 그냥 시험치러 가봤다. 1학기 개강 직전에 보러갔고, 인턴을 하고 있었기 때문에 따로 공부할 시간도 없었다. https://www.kinz.kr/subject/7872 정보처리기사 객관식 필기 기출문제 CBT 목록 - 킨즈 www.kinz.kr 위 사이트에서 2022년 기출 2회분을 풀어보고, 10문제 내외로 틀리길래 그냥 응시하러 갔다. 3학년 1학기에 4학년 소프트웨어공학 수업을 먼저 들었는데, 이 과목 내용이 상당히 도움이 되었고, 소프트웨어 엔지니어로 인턴생활을 하며 배운 많은 부분도 도움이 되었다. 아마 전공자이고, 개발 경험이 좀 있고, 소프트웨어공학 수업을 열심히 들었다면 별다른 노력 없이 합격할 것이라 예상한다.

Auto-Increment(    @GeneratedValue(strategy = GenerationType.IDENTITY))를 위한 DB 수정
Software Development/Trial-and-error2024. 2. 16. 23:59Auto-Increment( @GeneratedValue(strategy = GenerationType.IDENTITY))를 위한 DB 수정

더미데이터 위에도 회원가입이 가능해야 하는데, 초창기 엔티티를 만들 때 미처 고려해주지 못했다. 이를 위해 단순히 @GeneratedValue(strategy = GenerationType.IDENTITY) 만 붙여줬는데, DB에 반영되지 않는 문제가 있었다. 수정 이후라 잘 반영되어 있지만, Auto Increment에 체크를 해줘도 다른 테이블과 제약조건이 걸린 탓에 반영이 안되는 상황. 이를 위해, 잠시 DB의 외래 키 제약조건을 비활성화 하고, 다시 활성화 해주는 작업이 필요했다. SET foreign_key_checks = 0; alter table member modify id bigint auto_increment; alter table member auto_increment = 1; SET..

비동기 메서드 테스트 코드 작성 시, DB 관련 유의점.
Software Development/Trial-and-error2024. 2. 5. 17:37비동기 메서드 테스트 코드 작성 시, DB 관련 유의점.

https://20180913.tistory.com/70 [Java Spring] 비동기 메서드에 대한 테스트코드 작성법 @SpringBootTest @ActiveProfiles("api-test") public class ActionServiceTest { @Autowired private ActionApiRepository actionApiRepository; @Autowired private ActionService actionService; // ThreadPoolTaskExecutor 빈을 생성하여, 비동기로 실행되 20180913.tistory.com @Async 어노테이션이 붙은 비동기 메서드로 DB에 데이터를 생성 혹은 삭제하는 메서드가 있었다. 이걸 테스트를 하는데, 하나의 클래스 안에서..

Software Development/Trial-and-error2024. 2. 1. 20:35[Java Spring] 비동기 메서드에 대한 테스트코드 작성법

@SpringBootTest @ActiveProfiles("api-test") public class ActionServiceTest { @Autowired private ActionApiRepository actionApiRepository; @Autowired private ActionService actionService; // ThreadPoolTaskExecutor 빈을 생성하여, 비동기로 실행되는 메소드가 실행되기 전에 테스트가 종료되는 것을 방지한다. @Autowired private ThreadPoolTaskExecutor threadPoolTaskExecutor; @Test public void testWhenFollowAction() throws InterruptedException {..

카테고리 없음2024. 1. 30. 15:56JPA의 Persistent Context에 대해 알아보자..

Repository 테스트 코드를 작성하다 겪게 된 문제이다. 단순히 입력된 값이 올바르게 저장되었는지만 테스트 해보고 말았는데, JPA의 Persistent Context를 고려하지 못한 테스트 방법이었다. 간략하게 이해하자면, DB IO Overload를 방지하기 위해, JPA는 Persistent Context라는 일종의 버퍼를 만들어 두고, 어떠한 기준으로 버퍼에 쌓인 데이터를 DB에 적용한다. DB에 다이렉트로 뭔가를 하는게 아니기 때문에, 그 완전성과 무결성을 보장할 수 없다는 의미임. 그러니까, 테스트코드를 작성할 때도 saved, willBeSaved로 비교하는 방식은 잘못되었다는 이야기. 적합한 방식은 이와 같다. 1. 내가 오늘 저지른 경범죄 코드. @Test void of(){ // ..

Software Development/Trial-and-error2024. 1. 29. 17:57테스트 코드를 작성하며 겪는 시행착오들

부끄럽지만, 오늘 테스트 코드를 작성하며 겪었던 황당한 실수들을 정리해보고자 한다. 1. Repository 불러올 때 @Autowired 빼먹기 @Autowired private PostCommentApiRepository postCommentApiRepository; .... 2. 연관관계에 있는 Repository 초기화 깜빡하기... @OneToMany 등의 연관관계가 명시되어 있는 Repo들은, 반드시 초기화 해줘야 한다. 추가로, A는 B와, B는 C와 연관관계가 있고, C에 대한 Repo 테스트코드를 작성하고자 한다면? 마찬가지로, A, B, C 모두 불러와야 한다. 반대로, 의존관계를 따로 설정해주지 않았을 경우 다른 레포를 초기화 해줄 필요는 없다. 3. @BeforeEach, @Befo..

Software Development/Trial-and-error2024. 1. 29. 17:45InvalidDataAccessResourceUsageException: could not prepare statement; SQL

문제 상황 특정 테이블을 만들고, 테스트코드를 작성 및 실행하던 도중(Repository 테스트) org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement; SQL [insert into post_comment (id, created_by, created_dt, deleted, updated_by, updated_dt, version, content, hate_count, like_count, parent_comment_id, pinned, post_id, reply_count, user_id) values (default, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?..

[Spring]  Error creating bean with name 'jwtService': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'jwt.secretKey' in value "${jwt.secretKey}"
Software Development/Trial-and-error2024. 1. 27. 21:28[Spring] Error creating bean with name 'jwtService': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'jwt.secretKey' in value "${jwt.secretKey}"

황당하게 Bean 주입이 안된다는 메시지가 자꾸 발생했다. https://oingdaddy.tistory.com/235 Spring properties 사용시 UnsatisfiedDependencyException: Could not resolve placeholder 오류 조치 Spring을 사용하면서 외부 설정 파일(properties or yml)은 필수적으로 사용된다. 하지만 이를 읽어오지 못하는 문제는 자주 직면하게 된다. 예를 들면 다음과 같은 오류다. org.springframework.beans.factory.Uns oingdaddy.tistory.com 해당 블로그를 통해 맥락을 짚을 수 있었는데, application.yml 을 통해 모든 외부설정을 관리하지 않고, application..

Software Development/Architecture2024. 1. 25. 12:58MSA에 대한 여러 생각들

MSA로 전환할 여지가 있는 서비스 개발에 참여하면서, 매일 점심때 우아콘 및 빅테크 기업들의 아키텍처를 강제시청 하고 있다. 무분별한 도입보다는, 서비스의 특성에 맞는지 충분히 고려하고 도입하는게 알맞다는 생각이 든다. 대표적인 장점으로는, - 확장에 부담이 적다. - 한 쪽에서 장애가 발생해도, 전체에 영향을 미치지 않는다. - 작은 단위로 개발하고 배포하므로, 협업에 유리할듯?(내 생각) 단점으로는, - 복잡하다. 통신도 복잡하고, - 관리가 어렵다. - 데이터 일관성 유지 문제? 정도가 있겠다. 일단 여기까지.

image