목록전체 글 (77)
ballqs 님의 블로그

면접이란? 왜 하는가?공부를 하다보면 취업을 해야하고 취업을 위해서는 면접을 준비해야 한다.면접은 지원자의 기술적인 부분과 성격적인 부분을 판단하기 위한 자리이며 이를 통해 지원한 회사의 구성원과 대화가 잘통하는지 알기 위함이다.또한 지원자 또한 회사가 나랑 맞는지 판단하는 자리이기도 하다. 적혀있는 채용공고의 내용과 일치하는지? 다른 점은 없는지를 본다.1.면접은 어떤 방식으로 진행되는가?회사마다 면접 프로세스는 제각각이다. 예를 들어 아래의 프로세스들이 존재한다.실리콘밸리 초기 스타트업 1. 4시간 동안 쇼핑몰 클라이언트, 서버 개발하기 2. 4시간이 지나면 코드를 제출하고 곧이어 바로 해당 코드에 대한 면접을 진행미국발 글로벌 IT 기업 1. 4일 안에 Golang 언어로 서비스 개발하기 2..

이번에 다룰 내용은 예전에 테스트 코드를 간단하게 다뤘던 적이 있어서 Mock를 통해 Service , Controller 를 테스트 하는 방법에 대해 작성해볼까 한다.예전에 작성한 Test 블로그 글 : https://ballqs.tistory.com/43Given-When-Then 패턴FIRST 원칙Fast : 유닛 테스트는 빨라야 함Isolated : 테스트는 각 테스트간에 독립적으로 실행해야함Repeatable : 테스트는 환경에 상관없이 실행할 때마다 같은 결과를 만들어야 함Self-validating : 테스트는 명확히 성공/실패로 구분하여 테스트 자체가 결과를 검증 할 수 있어야 함Timely : 테스트는 개발간에 즉시 작성해야 함. 대표적으로 TDD 방법론이 있음 given@Testpubl..

예전에 AOP에 관한 글을 작성했는데 그부분은 아주 간단하게 사용하는 방법에 대해서였다.그러나 현재 같은 AOP를 다시 작성하게 된 이유는 동작 흐름이 어떻게 흘러가는지?패턴은 어떤식으로 되는지 배웠기 때문에 작성한다. 이전 AOP 작성글 : https://ballqs.tistory.com/44AOP의 동작 흐름개념적 이해스프링 실제 동작시퀀스 다이어그램(Sequence Diagram)AOP 적용 전 AOP 적용 후Spring이 프록시(가짜 혹은 대리) 객체를 중간에 삽입한다.DispatcherServlet 과 ProductController 입장에서는 변화가 전혀 없다.호출되는 함수의 input, output 이 완전 동일하다"joinPoint.proceed()" 에 의해서 원래 호출하려고 했던 함수,..

Redis 공부해야지 공부해야지 생각만 했었는데 이제서야 들여다보면서 알아보고 적용해보았다.작성하는데 도움이 된 참조글 : https://akku-dev.tistory.com/102 Redis란?Remote Dictionary Server의 약자로, 오픈 소스 기반의 인메모리 데이터 구조 저장소이다.데이터베이스, 캐시, 메시지 브로커 등의 용도로 사용할 수 있고 Redis는 매우 빠른 속도로 데이터를 처리할 수 있어 성능이 중요한 애플리케이션에 많이 사용된다.Redis 특징 인메모리 저장소: Redis는 데이터를 메모리(RAM)에 저장하여 빠른 읽기 및 쓰기 성능을 제공한다. 이 덕분에 캐싱 서버나 세션 저장소로 많이 활용된다.다양한 자료 구조 지원: 일반적인 키-값(Key-Value) 구조뿐만 아니라,..
🍀Keepinterface DTO를 사용해 코드 문제를 해결 한 점이 좋았다.프로젝트 부분에서 팀 분위기가 풀렸긴 하나 좋은 분위기로 프로젝트를 진행하는 점이 좋았다.K: 의견을 낼 때 각자의 장, 단점을 파악하고 설득하려는 부분이 좋았다.구글시트,피그마등 협업 시 공동작업 프로세스들강의에서 배운 내용 외에 처음 접한 기능을 구현하여 차별화된 프로젝트를 완성하였고 그 과정에서 다양한 방식으로 코드를 짤 수 있음을 배웠다.❎ Problem설계 단계에서 제대로 소통이 안되었고 개발 과정에서 설계의 미숙함을 발견하고 중간에 바꾸는게 많았다.팀 내의 의사소통이 별로 없었다.진도가 늦어서 다른 사람들이 하는 기능, 설명 등을 자세히 이해할 수 없다.개발 진행 중 설계 변경이 잦아 햇갈림초반 설계 후 기능구현을 ..
뉴스피드 프로젝트를 진행할 때 여러모로 작성해두었던 예외처리들이 많이 지저분해보여서 CustomException 작성 등 ErrorCode 를 Enum으로 관리해서 코드를 바꾸기로 했다.수정 전 UserService.java 의 한 메서드// 회원 탈퇴public void deleteAccount(AuthUser authUser, UserUnregisterDto userUnregisterDto) { // 사용자 조회 User user = userRepository.findById(authUser.getUserId()) .orElseThrow(() -> new IllegalArgumentException("사용자를 찾을 수 없습니다.")); if (!user.getEma..

뉴스피드 게시물 조회하는 기능을 구현하고 있는 도중 발생한 문제이다.해당 데이터들을 어떻게 가져와야 할지? 고민이 많았고 모든 과정을 기록하진 못하지만 이렇게 해서 해결했더라 정도를 기록하는 글이다.도입부뉴스피드 게시물 조회란?내 게시물이랑 친구 게시물을 페이지네이션 및 정렬기준과 기한 검색을 기반으로 하는 기능이다. 해당 기능을 구현하기 위해 구성한 Entity의 구성을 작성해야 추후 내가 다시 봤을때 왜 그랬는지 이해가 쉬울 것 같다.작성한 구조는 아래와 같다. 해당 Entity의 구성에서 뉴스피드 게시물 조회를 진행하기로 했다. 게시물 위주의 조회다보니 주가 되었던건 게시물(Board) 기반으로 코드를 작성하여 아래와 같이 틀을 잡았다.NewsfeedController.java 작성@RestCon..

Spring Security란?Spring 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해주며 웹 개발 과정에서 필수적인 사용자 관리 기능을 구현하는데 도움을 주는 Spring의 강력한 프레임워크이다.dependencies 추가implementation 'org.springframework.boot:spring-boot-starter-security'@Configuration를 통한 사용 방법@Configuration@EnableWebSecurity // Spring Security 지원을 가능하게 함public class WebSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) ..

스프링은 여러 특징이 있고 그중 하나가 AOP 라고 생각한다.AOP란?AOP(Aspect-Oriented Programming)는 '관전 지향 프로그래밍' 이라는 의미이고 메소드에 대해서 공통적으로 적용해줘야 하는 기능이 있다면 메소드마다 따로 코딩하면 중복코딩이 많아지기 때문에 AOP를 통해서 공통적으로 적용할수 있다. 대표적으로 사용되는 상황은 아래와 같다.로깅(Logging) : 애플리케이션의 전역적인 로깅을 구현할 때 AOP를 사용! 특정 메서드나 클래스에 대한 로그를 남기는 작업을 코드에 직접 삽입하는 대신, AOP를 통해 자동으로 로그를 기록할 수 있다. 이는 코드의 중복을 줄이고 유지보수를 쉽게 만든다.트랜잭션 관리(Transaction Management) : 트랜잭션 관리는 비즈니스 로직..

오늘은 강의를 들으면서 테스트 코드 작성하는 것에 대해서 메모했다. 기본적인 테스트 코드 작성 방법MyMath.java 코드 작성public class MyMath { public int calculateSum(int[] numbers) { int sum = 0; for (int number : numbers) { sum += number; } return sum; }} 테스트 코드 작성public class MyMathTest { private MyMath math = new MyMath(); @Test void calculateSum_ThreeMemberArray() { // Absence o..