1. 서류 전형직무 선택하기현대오토에버는 직무별로 공고를 낸다. 나의 프로젝트 경험을 살펴보고 그나마 가장 연관있는 직무에 넣었다. 설마 2지망을 보내겠어? 하는 마음으로 가볍게 선택하지 말 것. 채용설명회를 들을 수 있다면 듣는걸 추천한다. 채용설명회 출석체크 하면 기프티콘도 주니까 꼭꼭 받아가시길지원동기대내거래 비중이 높다고 평가받는 만큼, 현대오토에버뿐만 아니라 현대자동차그룹이 무엇에 집중하고 있는지, 거기서 현대오토에버가 어떤 역할을 수행하고 있는지를 먼저 조사했다. 그리고 그 방향성을 내가 이루고 싶은 목표와 연관지어 서술했다. 보도자료, 기술 블로그, 사업보고서 등 다양한 자료를 참고했다.커리어 계획기술 블로그에서 내가 지원한 파트와 관련있는 글을 읽었고, 거기서 유추한 문제점을 ~~하게 해결..
전체 글
이 글은 디스코드 블로그의 'How Discord Scaled Elixir to 5,000,000 Concurrent Users?'를 읽고 정리한 글입니다. 저의 이해를 위해 원문에는 없는 추가적인 내용이 포함되어 있으며, 잘못 해석한 부분이 있을 수 있습니다. 0. 들어가기에 앞서디스코드란?실시간 채팅 애플리케이션. 음성 채팅, 텍스트 채팅 등이 가능높은 동시성이 필요한 실시간 시스템 → Elixir와 Erlang VM을 선택Elixir와 Erlang VM이란?Elixir(엘릭서): 프로그래밍 언어의 일종으로, 대용량 분산 시스템을 만드는 데 적합하다.Elixir는 동시성을 지원하며, 오류가 발생해도 시스템이 멈추지 않고 동작한다.Java가 JVM 위에서 실행되는 것처럼, Elixir는 Erlang V..
1. 이전 설계컨트롤러에서 memberId를 받아와야 할 경우, 메서드 파라미터 앞에 @Auth 어노테이션 추가ArgumentResolver가 요청 헤더의 Authorization 값을 추출Authorization 헤더 값이 null인 경우@Auth(required=true)이면 예외 반환@Auth(required=false)이면 컨트롤러 파라미터에 null값을 넘겨줌ArgumentResolver가 헤더에 담긴 JWT를 검증하고, 유효하지 않으면 예외 반환 굳이 이렇게 설계한 건 우리 프로젝트에 회원 여부에 따라 다른 정보를 보여주는 공용 API가 있었기 때문이다. 일반적이지 않고 이해하기 어려운 설계라 1년동안 고치고 싶다고 생각했는데... 다행히도 올해가 가기 전에 노트북 앞에 다시 앉았다👀 2. ..
쪼오끔 늦었지만... 어찌저찌 마무리하고 작성하는 3주차 후기4주차는 언제 쓰지😂 1. 당첨 통계를 어떻게 관리해야 할까?원래는 당첨 통계를 List로 관리할 생각이었다. 그러니까 1등 1개, 2등 3개가 당첨되었다면 List에 원소가 4개 추가되는 식이었다.하지만 이런 방식은 각 등수별 개수를 세기 위해 매번 루프를 돌아야 한다는 문제가 있었다🥲 그래서 조금 더 빠르게 접근할 수 있는 방법이 없을까 고민하던 중, EnumMap이 있다는 걸 알게되었다. EnumMap은 Enum을 key로 갖기 때문에 O(1)만에 해당 등수에 몇번 당첨되었는지 알 수 있다는 사실..! 😲💡 지난주에 배운 일급 컬렉션 개념을 이용하기도 했다. 당첨 통계를 바탕으로 총 당첨금을 계산하기 등 당첨 통계를 이용한 행동이 ..
프리코스 2주차가 지나갔다. 이번 주차에는 테스트 코드까지 작성해야 해서 조금 힘들었지만 그만큼 좋은 경험이었다. 리팩토링까지 끝마친 결과는 아래와 같다. 지난 주차에 비해 클래스의 수가 많아진게 눈에 띈다😂 그럼 이번 주차 회고도 시작~! ᕕ( ᐛ )ᕗ 1. 랜덤값 테스트는 어떻게 해야할까?2주차 미션에서 가장 어려웠던 점이었다. 0~9 사이의 수를 무작위로 뽑아 4 이상이면 차가 전진하는 방식이었는데, 요구사항에 테스트 코드 구현까지 있었다🥹 랜덤값은 컨트롤할 수 없는 부분이라 테스트를 어떻게 구현해야 하나 고민했는데, 결국 Car.move() 메서드에서 랜덤 함수를 직접 호출하지 않고 파라미터로 값을 전달받는 형식으로 단위 테스트를 진행했다.public Car { public void m..
우테코 프리코스 2주차 미션의 학습 목표는 테스트 코드 작성이었다. 학습 자료로 Junit 5와 AssertJ 관련 문서가 주어졌는데, 테스트 코드를 작성하기 전에 필수로 알아야 할 부분이기에 문서를 읽고 내용을 간략하게 정리해보았다. 1. Junit 5와 AsserJ란?Junit 5는 자바에서 테스트의 구조를 제공하고 실행을 지원한다. 테스트는 기본적으로 given(준비) - when(실행) - then(검증)의 세 단계로 구성되는데, AssertJ는 다양하고 가독성이 높은 검증 기능을 제공한다. 그러니까 전체적인 구조는 Junit이, 검증 파트는 AssertJ가 지원한다는 것이다. 두 라이브러리를 함께 쓰는 경우가 많지만 Junit만 사용해도 된다는 점! Junit 5는 이전 버전과 달리 세 개의 하..