본문 바로가기

전체 글

(45)
[회고록] IT 연합 동아리 코테이토를 2년 간 활동하며 느꼈던 생각들 2023년 3월, 단순히 다양한 사람들을 만나고 프로젝트를 진행하고 싶다는 생각 하나만으로 나는 코테이토에 들어왔다. 그 때부터 6기 ~ 10기, 2년 간(사실 중간에 한 기수 쉬었기 때문에 1년 반이긴 하지만) 동아리 활동을 하면서 느꼈던 생각들을 정리하고자 한다. 쫄아서 신청한 스터디(2023.03 ~ 2023. 08)처음 동아리에 들어왔을 때, 이미 이전 기수부터 들어왔던 사람들은 나와 차원이 다르게 잘한다 생각이 들었다. 첫 뒷풀이 때 주변에서 개발 이야기를 하고 있을 때, 나는 대부분의 이야기를 이해하지 못했다. 그 전까지 의욕만 가득했지 백엔드에 대해 제대로 공부한 적 없는 상태였기 때문에 주눅이 든 상태로 프로젝트, 스터디 신청 기간이 다가왔다. 아무것도 모르는 상태에서 이 사람들이랑 프로젝..
[Spring] Params를 통한 동일 path API 구분 + Swagger에서 불가능한 이유 코테이토 프로젝트에서 이름, 포지션, 합격 기수별 멤버를 필터링 API가 있다. 또한, 이번 스프린트를 통해 멤버 상태(승인, 불승인, OM)에 따라 필터링 하는 같은 경로(path)의 API를 추가했다. 이번 글에서는 Controller에서 같은 path + 다른 파라미터의 API를 구분하게 하는 방법과 Swagger에서 구분할 수 있는지 확인해보겠다.  같은 URL, 같은 HTTP 메서드의 엔드포인트가 존재하면?1. 이름, 포지션, 합격 기수별 멤버 필터링 API@RequestMapping("/v1/api/member")public class MemberController { @Operation(summary = "기수별 멤버에 추가 가능한 멤버 반환 API") @RoleAuthority(..
QueryDSL을 이용한 동적 쿼리 프로젝트를 진행하면서 다양한 조건을 통한 필터링을 구현해야 했다. 이 때 조건이 있을 수도 있고 "전체"로 찾는 경우도 있다. 기존의 방식대로라면 각 조건이 있는지 없는 지 여부에 따라 다양한 API를 구성해야 했다. 이를 한 API로 해결하고자 QueryDSL을 통한 동적 쿼리로 구현하였다. QueryDSL이란?QueryDSL은 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크이다.  왜 사용하는지 설명하기 위해 다른 쿼리 생성 방식을 설명하겠습니다. Spring Data JPA스프링을 사용하면 기본적인 CRUD는 보통 JPA를 통해 구현한다. 이는 repository.findAllByName(String name) 처럼 Repository에서 정해진 간단한 네이밍 룰을 사..
2025년에는 어떤 개발자가 되고 싶은가? 2024년에 4학년이었지만 3학년까지 열심히 학교를 다니면서 학점을 거의 다 채웠기 때문에 1학기 때 프로젝트 수업을 제외하고는 학교를 가지 않았다. 정말 자유로운 한 해였다. 그리고 자유로웠기 때문에 다사다난한 한해였다.  프로젝트에 몰두한 2024년도먼저 1년동안 무엇을 했냐하면 IT 연합 동아리 코테이토 홈페이지 제작을 계속 이어나갔다. 2023년 10월부터 시작한 벌써 1년 3개월째 하고 있는 프로젝트다. 2023년에는 단순히 배운 가벼운 스프링 지식을 기반으로 구현하기에 급급했다. 하지만 실제 서비스를 시작하고 기능 개발과 유지보수를 진행하면서 프로젝트를 통해 배운다는게 어떤 건지 알게 됐다. 새로 배운 지식이 있으면 프로젝트에 적용하면서 과거에 이 정도 코드가 최종 버전이라 생각했던 것이 부끄..
Q. 1644 소수의 연속 합(feat. 투포인터) 이 글을 쓰는 이유지난 주에 싸피 13기 코테를 봤다. 물론 코테 공부는 하지 않았지만 예상했던 것보다 쉽다 느껴졌다.대외비라 자세한 문제는 올릴 수 없지만 투포인터로 풀수 있는 문제가 나왔는데 당시에 도저히 기억이 안나서 DP로 풀었는데 이참에 투포인터를 좀 더 파보자 생각이 들어 이 글을 쓴다.  정보난이도: 골드 3문제 링크https://www.acmicpc.net/problem/1644  문제 요약N을 입력 받고 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수의 갯수를 찾는 문제이다. ex)41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 간단한 문제이지만 여러 문제가 합쳐져 있다.1. 소수 목록 구하기2. 연속된 소수 합 구하기 1. 소수 목록 구하기먼저 소수 ..
[DB] 트랜잭션 파헤치기 날씨가 많이 추워졌죠? 붕어빵 먹어야 하는 시즌인데 집 주변에 붕어빵 가게가 없어서 슬프네요.또 길거리에 있는 붕어빵은 카드가 안되는 곳이 많잖아요. 그래서 보통 계좌이체를 하는데이 때 돈을 분명 보냈는데 붕어빵 사장님에게는 오류가 걸려서 돈이 안 들어오는 거예요.오류가 났으면 내 돈도 빠져나가면 안되는데 내 돈은 가져가 놓고 사장님에게는 입금이 안되면 안되잖아요. 슬슬 눈치채셨죠? 이런 상황이 발생하지 않기 위해 꼭 알아야하는 주제 DB에서 중요한 주제인 트랜잭션에 대해 알아보겠습니다. 목차트랜잭션이란?트랜잭션 특징커밋과 롤백 실습SPRING에서 트랜잭션 전파 방식트랜잭션이란?트랜잭션(Transaction)은 "더이상 분할이 불가능한 업무처리의 단위"를 의미합니다. 위에 말했던 것처럼 입금-출금은 한 ..
[COTATO 네트워킹] 1주차 회고록 코테이토 10기 활동간 네트워킹을 진행한다. 우테코 프로코스와 비슷하게 하나의 과제를 가지고 요구사항에 맞게 구현하고 코드리뷰를 진행하는 방식이다. 1주차 과제는 다음과 같다Gilded Rose 요구사항모든 아이템은 SellIn 값을 가지며, 이는 아이템을 판매해야하는 (남은) 기간을 나태냅니다.모든 아이템은 Quality 값을 가지며, 이것은 아이템의 가치를 나타냅니다.하루가 지날때마다, 시스템은 두 값(SellIn, Quality)을 1 씩 감소시킵니다.판매하는 나머지 일수가 없어지면, Quality 값은 2배로 떨어집니다.Quality 값은 결코 음수가 되지는 않습니다."Aged Brie"(오래된 브리치즈)은(는) 시간이 지날수록 Quality 값이 올라갑니다.Quality 값은 50를 초과 할 수..
[우테코 프리코스] 1주차 과제 명세 작성 과정 1주차 과제 - 문자열 덧셈 계산기문자열 덧셈 계산기 깃허브 링크기능 명세1. 기본적으로 쉼표(,) 또는 콜론(:)을 구분자로 가짐 2. "//"와 "\n" 사이에 위치하는 문자를 커스텀 구분자로 사용 예외 처리1. 사용자가 잘못된 값을 입력할 경우 IllegalArgumentException을 발생 2. 잘못된 입력 예시: 음수, 구분자를 제외한 문자들구현 기능 목록(초안)구분자 모음이 있는 클래스 설계- String 리스트 필드 => 디폴티 값인 쉼표(,) 콜론(:) 추가 - 커스텀 구분자를 추가하는 메소드 구현 로직 구현 - 입력 값을 커스텀 구분자 문자열과 계산기 문자열로 나누는 메소드 구현 - 입력 값에서 커스텀 구분자 리스트를 반환하는 메소드 구현 - 커스텀 구분자 리스트를 구분자 클래스의 필..