라이엇에서 제공하는 API는 크게 2가지가 있다. Riot API League Client Update API Riot API는 소환사 데이터나 전적 데이터 같은 정적인 데이터를 불러올 때 사용된다. (그냥 일반적인 API와 같다.) LCU API(League Client Update API 약자)는 롤 클라이언트와 상호작용할 수 있는 API다. 예시를 들면 게임매칭이 잡히고 챔피언 선택창에서 나와 내 팀원이 어떤 챔피언을 선택했는지 실시간으로 알 수 있다. 어떻게? 리그 클라이언트 아키텍쳐는 웹소켓 연결을 사용해서 LCU 자체의 변경사항을 UX프로세스(롤 앱이라고 보면 된다. 롤 앱을 LeagueClientUx라고 한다.)에 전달해서 사용자한테 표시하는데, 여기서 웹소켓을 연결하면 우리도 실시간으로 데..
8월 중순부터 지금까지 약 2달간 계속 만들고 있는 프로젝트가 있다. 바로 롤보챗(롤 보이스 채팅)이다. 롤보챗은 롤에서 만난 팀원들과 음성채팅을 할 수 있는 데스크탑 애플리케이션 서비스다. 이미 롤에도 인게임 보이스가 있지만, 사전에 같이 게임을 돌린 팀원들만 연결이 된다. 그래서 나와 프론트를 하는 친구 둘이서 사전에 같이 돌리지 않아도 자동으로 보이스 채팅을 이용할 수 있는 서비스를 만들어보면 좋겠다! 해서 시작하게 되었다. 핵심로직을 간단하게 말하자면, 매칭이 잡히고 챔피언 선택창으로 넘어가는 순간 롤보챗 앱을 이용하고 있는 팀원들끼리 자동으로 보이스방이 연결된다. 기본적으로 최근에 했던 게임 전적을 볼 수 있고, 최근 전적의 승률도 볼 수 있다. 또한 챔피언을 선택할 때마다 해당 챔피언의 평균 ..
많은 CI 툴이 있지만 오늘은 Github Actions를 이용해서 CI 구축을 해보겠다. 프로젝트를 관리할 레파지토리를 생성하자. (이름은 only-ci-test로 정했다) 그리고 Actions탭에 들어간다. 스프링부트로 테스트 할 것이기 때문에 Java with Gradle의 Configure을 눌러준다. 그럼 밑에 있는 사진처럼 디폴트 값으로 짜여져 있는 yml파일이 있다. 이제 yml파일을 건드려서 자신이 원하는 스크립트를 짜면 된다. 나는 JUnit Test Results라는 라이브러리를 사용해서 JUnit 테스트가 성공하든 실패하든 Github Actions 봇이 테스트 결과 정보를 코멘트로 알려주는 기능을 짰다. 옆에 Marketplace를 통해 다양한 기능들을 검색해서 알아볼 수 있고, 각..
Spring boot에는 .gitignore 파일이 있다. 해당 파일에 숨길 파일경로를 설정해주면 깃허브에 올라갈 때 파일은 올라가지 않는다. 예시로 resources 디렉토리를 설정해보도록 하겠다. .gitignore에서 아래와 같이 적어준다. ### Info ### /src/main/resources/** 시작은 루트경로에서 시작한다. IDE에서 자동완성을 도와주기 때문에 별다른 어려움없이 설정이 가능하다. 그리고 git add를 하기 전에 아래 명령어를 해주자. git rm -r --cached . 그다음 git add를 해주면 된다. git add . 확인해보면, 설정한 디렉토리 안에 있는 모든 파일이 올라가지 않는 것을 볼 수 있다. 깃허브 모습 resources 디렉토리가 없어진 모습
Postman은 보통 API을 테스트하는 목적으로 많이 사용했었는데, 요즘은 API Docs도 Postman으로 만들고 있다. 그럼 어떻게 Postman에서 API Docs를 만들 수 있는지 알아보자. 먼저 엄청나게 간단한 API를 만들어보겠다. @RestController @RequestMapping("/test") public class TestController { @GetMapping("/v1") public String test() { return "성공"; } } 그리고 서버를 돌리고 Postman에서 왼쪽 상단에 new 버튼(빨간 박스)을 눌러준다. 컬렉션을 선택한다. 선택했으면 자동으로 생성되는데, 이름은 간단하게 테스트라고 하겠다. 이름을 설정한 다음 아래 빨간 박스를 눌러주자. 요청을 ..
벌써 마지막 미션을 받았다. 자소서를 쓴지 며칠 지나지 않은 것 같은데 11월 달은 유독 더 빨리 지나간 것 같이 느껴진다. 그만큼 몰입하면서 성장했다고 생각한다. 이번 포스팅 역시 4주차 미션을 진행하면서 배운 내용과 아쉬운 점에 대해 작성하도록 하겠다. 배운 내용을 말하기 전에 3주차 회고를 보면 아쉬운 점을 작성했는데, 그것을 바탕으로 4주차 때 3가지 목표를 세웠다. MVC 패턴 적용해보기 외부에서 객체를 주입받는 의존성 주입(DI) 구현해보기 테스트하기 좋은 코드로 리팩토링 해보기 위 목표들을 최대한 적용해보려고 노력했고, 그 결과 조금 더 Clean Code에 대해서 알아가고 있는 것 같아 뿌듯했다. 목표를 세워서 해당 목표를 중심으로 구현해보는 것도 좋은 것 같다. MVC 패턴 지난 과제를 ..
이번 포스팅에선 3주차 과제를 진행하면서 배운 내용, 아쉬웠던 점과 느낀 점을 쓴다. 2주차 회고는 너무 코드 위주로 설명을 해서 아쉬웠다. (회고록을 어떻게 써야하는지 몰랐었다.) 이제라도 회고다운 글을 써볼까 한다. 그럼 배운내용부터 작성하도록 하겠다. 도메인 단위 테스트를 할 때는 하드코딩을 할 것 3주차 추가된 요구사항에서 도메인 로직에 단위 테스트를 구현하라고 했다. 단위 테스트가 처음은 아니지만, 도메인 로직을 단위 테스트로 구현하는 것은 처음이었기에 어떻게 작성해야할지 고민이었다. 정확한 해답 없이 코드를 구현하고 있을 때, 이동욱님의 블로그글을 보면서 한가지 깨달은 점이 있다. 아래코드는 한 가지 문제점이 있는 코드다. @DisplayName("Lotto용지가 생성되는지 확인") @Test..
미션 - 숫자 야구게임을 참고해주세요. (회고 말고 코드 설명을 한다라고 보시면 될 것 같습니다.) 클래스보다 객체의 속성과 행위가 우선이다 클래스는 객체를 추상화하는 도구일 뿐이다. 그럼 먼저 주요 객체들을 알아보자. 구현해야할 게임은 숫자 야구게임으로, 큰 흐름을 생각하면 다음과 같다. 1. 컴퓨터가 랜덤한 3자리 숫자를 생성한다. 2. 게임을 하는 사람은 3자리 수를 입력한다. 3. 입력한 3자리 수에 대한 힌트를 출력한다. 4. 위 과정을 반복한다. 5. 만약 3자리 수가 모두 일치한다면 게임종료를 알리고 재시작 여부를 묻는다. 6. 재시작을 요청하면 재시작을, 종료를 요청하면 종료한다. 위 과정을 프로그래밍적으로 생각하기 전에 현실적으로 봐보자. 우선 3자리 숫자를 생성하는 컴퓨터가 필요할 것 ..
이번 포스팅에서는 저번주 금요일부터 토요일까지 마이다스 기업에서 진행되었던 해커톤에 참여하게 된 계기와 본선 진출, 그리고 3등까지 하게 된 이야기를 하려고 한다. 해커톤에 참여하기까지의 이야기는 짧게 말하고, 구현에 대해서 좀 더 깊게 말할 예정이다. 해커톤에 참여하게 된 계기 현재 부산소프트웨어마이스터고를 다니고 있다. 부산소프트웨어마이스터고등학교와 협약을 맺은 기업들이 많은데, 그 중에서 가장 좋다고 알려진 기업들이 마이다스, 우아한형제들이 있다. 우아한형제들은 협약을 맺었다고는 하지만 다른 기업들과 다르게 채용하지 않고 그냥 지켜보는 느낌인 것 같다. 그래서 선생님들은 이 학교의 최고 아웃풋이 마이다스라고 말하고, 마이다스에 가고 싶은 학생들도 많았다. 마이다스에서는 매년 마이스터 학생들을 몇명 ..
백기선님은 테스트코드, TDD에 대해서 다음과 같이 말한다. 테스트코드를 잘 짜는 개발자의 코드를 신뢰한다. 테스트코드를 짜지 않는 개발자는 좋은 개발자라고 생각하지 않는다. TDD를 짜지 않는다는 것은, 개발자로서 성장하고자 하는 노력을 하지 않은거라고 생각한다. 나도 한 때 TDD에 대해서 살짝 맛봤던적이 있다. 하지만 API 로직을 다 짜놓고 테스트코드를 작성하자니 너무 귀찮았다. "이미 잘 작동하는데 굳이 테스트를 해야하나?" 라고 생각한 것이다. 그리고 컨트롤러에 대한 테스트코드는 어렵다고 생각을 했고, 또 API로직을 짜면서 테스트까지 할 시간이 없었고.. 점점 변명을 만들어가면서 모르는척 넘어갔었다. 백기선님이 영상을 시작하고 첫부분에 짚고 넘어간 부분이 있는데, 바로 밑에 사진이다. 작년 ..
- Total
- Today
- Yesterday