반응형

Kotlin 24

[Nexters] 넥스터즈 22기 4~5주차 활동 후기

넥스터즈 활동이 벌써 절반이 지나갔다. 4주차부터는 본격적으로 개발을 시작했으며, 그렇기 때문에 4~5주차를 한꺼번에 작성해보려 한다. 넥스터즈 4~5주차 활동 4주차에는 Usability Test(이하 UT)를 진행했고, 5주차에는 UT 피드백을 반영한 중간 발표를 하는 날이었다. (처음에는 Usageness Test인 줄 알고 이를 구글링했다가 우테코 4기 유세지 깃허브 결과만 뜨길래 당황했었다.. ㅋㅋ) 4주차에 UT를 진행한다길래 이때까지 개발을 끝내야하는 줄 알고 깜짝 놀랐었다. 알고보니 다행히 figma로 대략적인 진행 흐름 및 디자인에 대해서만 발표하는 것이었다. 우리팀은 넥스터즈 출석체크 프로젝트 팀이다. 그렇기 때문에 회원이 로그인하는 경우, 비밀번호 변경, 각 주차별 세션에 접속해서 출..

[230128] 넥스터즈 세번째 세션 활동 후기

설연휴동안 꿀같은 휴식을 보내고, 1월 29일 일요일에 3주차 세션을 진행했다. 넥스터즈 첫 번째 세션 및 OT가 엊그제 같은데 사실상 거의 한달이 된 셈. 3주차부터는 본격적으로 팀 작업이 시작된다. 물론 그 전부터 git 레포 설정, 환경세팅 등을 진행한 팀들이 대부분. 아마 넥스터즈 활동이 3월 4일이 마지막이기 때문에 시간이 빠듯하기 때문에 미리미리 한 것이 아닐까 싶다. 3주차는 1~2주차와 다르게 종로 쪽이 아닌 강남에서 진행됐다. 장소가 한 곳으로 고정이 아닌, 대관 사정에 따라 왔다리갔다리 하나보다. 처음에는 강남쪽이길래 가깝다고 좋아했는데 막상 지도에 쳐보니 종로나 강남이나 둘 다 나한테는 거기서 거기였다는 슬픈 소식 🥹... 팀 작업 전, 레크레이션 또한, 이 날에는 레크레이션도 진행됐..

[230114] 넥스터즈 22기 두번째 세션 활동 후기

넥스터즈에서의 두 번째 활동 세션이 진행됐다. 이 날은 첫 번째 세션에 진행된 팀 빌딩 과정에서 만들어진 팀끼리 기획을 고도화하고 프로세스 및 협업 툴을 결정하는 활동을 진행했다. 첫 번째 세션 후기는 https://kth990303.tistory.com/409 를 참고하자. 두 번째 세션의 상세 일정은 아래와 같다. 두 번째 세션 진행 전, 기술 스택 결정 관련 회의 우리 팀의 경우, 두 번째 세션 진행 전에 미리 기술스택이랑 기능 관련 회의를 어느 정도 진행해둔 상태였다. 특히 프론트 팀의 경우, 카톡으로 기술 스택을 초고속으로 결정하고 초기 세팅까지 미리 해놓는 어마어마한 실행력을 확인할 수 있었다. 역시 3년차 고수들의 모임 ㄷㄷ 중간에 yarn berry랑 turbopack 호환성 관련 이슈가 ..

[230107] 넥스터즈 22기 첫 세션 활동 후기

넥스터즈 22기 활동이 시작됐다! 작년에 우아한테크코스 활동이 마무리될 무렵, 나는 넥스터즈에 지원했고 최종적으로 백엔드 직군으로 합격하는 기쁨을 누릴 수 있었다. 면접 후기는 아래 링크를 참고하자. https://kth990303.tistory.com/401 [221204] 넥스터즈 22기 면접 후기 및 질문리스트 IT 유명 연합동아리 중 하나로 알려진 `넥스터즈`에 지원했다! 넥스터즈는 개발자, 디자이너와 연합해서 두달 간 몰입하여 프로젝트를 진행하는 연합동아리이다. https://teamnexters.com/ NEXTERS : IT Comm kth990303.tistory.com 넥스터즈 첫 세션 활동 전 준비해야할 것들 넥스터즈에 참여하게 되면, 첫 세션에 참여하기 전에 아래와 같이 자기소개를 작..

[Kotlin] kotlin은 왜 Java와 달리 Checked Exception을 제공하지 않을까?

Java, Kotlin은 둘 다 JVM 생태계 언어로써 상당히 비슷한 면이 많다. 하지만 둘은 다른 언어다보니, 당연히 다른 점들도 꽤 많이 존재한다. kotlin의 null-safe operator로 편리하고 안전하게 null 관련 처리를 할 수도 있고, 확장함수를 통해 자유롭게 커스터마이징이 가능하며, 다양한 lambda functions를 제공해줌으로써 Java의 stream 기능 못지 않게 간단한 코드를 작성할 수 있다. 그럼 반대로 Java에선 제공해주지만 Kotlin에서는 제공하지 않는 기능이 뭐가 있을까? Java에서는 checked exception을 제공하지만, Kotlin에서는 이를 제공하지 않는다! 이번 포스팅에선 이 내용에 대해 적어보도록 하겠다. Checked Exception? ..

[Kotest] Nested Test spec에서의 context 생명주기 및 트랜잭션

코틀린 프로젝트에서 kotest로 테스트 코드를 짜다가 통과해야 할 테스트가 통과하지 않는 현상을 마주치게 됐다. 우리는 StringSpec과 유사한, 중첩되지 않은 구조에서 Given - When - Then 구조의 BehaviorSpec 스타일로 테스트를 마이그레이션하고 있었다. 위 두 테스트 코드는 아예 동일하다. 그저 계층만 나뉘게 바뀌었을 뿐. 구조에 따라 계층을 나누기만 하고, 순서 변경이라든지 코드의 변경이 없었으니 테스트는 당연히 문제 없이 통과할 줄 알았다. 그런데 결과는? Tests Failed... 당연히 WAITING에서 PASS로 변경될 줄 알았는데 Given에서 진행해준 update가 진행되지 않고 WAITING인 상태로 테스트가 진행됐다. 심지어 코드 변경은 전혀 없고 구조에 ..

[Kotest] Kotest Spec으로 다양한 테스트 코드 스타일을 작성해보자

스프링에서 코틀린을 사용할 때, 테스트 도구로 JUnit뿐만 아니라 kotest를 사용할 수 있다. kotest는 다양한 테스트 스타일을 제공한다. JUnit과 유사한 Annotation Spec, String Spec, 그리고 우리가 흔히 사용하는 given when then 스타일을 사용할 수 있도록 Behaivor Spec을 제공해주기도 한다. DCI 패턴을 활용할 수 있도록 Describe Spec도 제공해준다. 이번 시간에는 kotest에서 제공해주는 spec을 살펴볼 것이다. kotest의 장점 JUnit, Mockito를 사용할 경우 Kotlin DSL을 사용하지 못한다는 단점이 존재한다. kotest를 활용하면 kotlin DSL을 사용해 더 코틀린스러운 테스트를 작성할 수 있게 된다. 위..

[Kotlin] Kotlin DSL + Spring REST Docs + MockMvc 적용기 (2)

kotlin DSL과 Spring REST Docs 세팅을 MockMvc 방법으로 설정하는 포스팅이다. 환경세팅 및 adoc 형식 설정은 지난 포스팅에서 확인할 수 있다. https://kth990303.tistory.com/347 [Kotlin] Kotlin DSL + Spring REST Docs + MockMvc 적용기 (1) 현재(22.07.17.) 는 아직 Spring REST Docs에서 kotlin DSL 공식지원을 하지 않고 있는 상황이다. https://github.com/spring-projects/spring-restdocs/issues/677 Document how to use Spring REST Docs with th.. kth990303.tistory.com 이번 포스팅에선 k..

[Kotlin] Kotlin DSL + Spring REST Docs + MockMvc 적용기 (1)

현재(22.07.17.) 는 아직 Spring REST Docs에서 kotlin DSL 공식지원을 하지 않고 있는 상황이다. https://github.com/spring-projects/spring-restdocs/issues/677 Document how to use Spring REST Docs with the MockMVC Kotlin DSL · Issue #677 · spring-projects/spring-restdocs Was trying to implement RestDocs MockMvc in our Kotlin project However noticed that when using the MockMvc Kotlin DSL snippets were not generated e.g. fun..

[Kotlin] Sealed Class를 이용한 무분별한 상속 확장을 방지하기

kotlin의 클래스와 메서드는 기본적으로 final이다. 따라서 어떠한 클래스의 상속을 허용하려면 클래스 앞에 open 변경자를 붙여주어야 한다. 상속을 사용하고 싶어서 open 변경자로 클래스를 열어주었는데, 외부에서 무분별하게 상속을 통해 기능을 확장시키는 건 막고 싶을 수 있다. 이러한 경우 Sealed Class를 이용하면 좋다. Sealed Class Operator 인터페이스의 구현체들인 Plus, Minus, Multi 클래스들이 있다. calc 함수는 when절을 이용하여 Plus, Minus, Multi인지 확인하고 결과를 반환하는 함수이다. 만약, 어떤 것에도 해당하지 않으면 else문을 작성해주어야 한다. else문이 없으면 위와 같이 컴파일 에러가 발생한다. 외부에서 Operato..

반응형