Zero to Hero
article thumbnail
코틀린 하나의 파일에 클래스 하나만 사용하기 vs 여러 개 사용하기
Programming 2025. 1. 19. 21:44

서론코틀린은 하나의 파일(. kt)에 원하면 여러 개의 클래스 파일을 선언할 수 있다. 하나의 파일(. java)에 하나의 클래스만 선언할 수 있는 자바와 다른 점이다. 연관된 클래스를 하나의 파일에 선언할 수 있다는 장점이 있지만 나는 이 부분에 대해서는 하나의 파일에 하나의 클래스만 사용하는 방식이 여러모로 좋다고 생각하는데. 이와 관련된 이야기를 해보려고 한다.이유 1. 하나의 파일에서 많은 코드를 다루는 것은 가독성 관점에서 좋지 않다단순히 생각해 봤을 때 하나의 클래스에 절대적인 코드량이 많다면 이를 이해하는 것이 쉽지 않을 것이다. 사람의 뇌는 한 번에 처리할 수 있는 정보의 양이 제한적이라고 한다. 내가 파일을 열었을 때 받아들여야 하는 코드 양이 적은 것이 많은 것보다 훨씬 집중이 되고, ..

한 편으로 끝내기 - 제네릭과 변성(공변성, 반공변성)
Programming 2024. 10. 13. 15:58

서론최근에 이펙티브 코틀린을 다시 읽고 있습니다. 처음 읽었을 때 이해가 잘 안 되어서 넘긴 내용이 이제는 조금씩 읽혀서 신기하기도 하고 다행이기도 하고 그렇습니다. 책에서 다루는 내용 중 "아이템 24. 제네릭 타입과 variance 한정자를 활용하라" 챕터에서 다루는 코틀린의 제네릭과 변성에 대해서 이해한 내용을 정리했습니다. 예시 코드는 코틀린으로 작성했지만 여러 프로그래밍 언어에서 다루는 개념인 만큼 이번 글을 통해 제네릭의 변성과 관련된 개념을 정확하게 이해하실 수 있도록 풀어보겠습니다.제네릭위키백과에선 제네릭 프로그래밍을 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이라고 설명합니다. 제네릭은 제..

[2023 ver.] 서버 개발자 mac 장비 설정
Programming 2023. 7. 22. 18:45

2021년에 비슷한 주제의 포스트를 작성했습니다. Mac 장비 지급 후 세팅 방법 정리21.10.08. 업데이트 Xcode homebrew iterm 폰트 바꾸기 한글 깨짐 해결 투명도 조절 color scheme 수정 oh-my-zsh 설치 테마 변경 플러그인 설치 호스트 이름 가리기 문단 줄바꿈 자주 사용하는 명령어 alias 설정doljae.tistory.com이번에 개인 장비를 새로 설정하는 과정을 단계 별로 정리했습니다.시스템 계정 생성전체 이름은 변경 가능하지만 유저 디렉토리 이름은 이후에 변경하기 조금 부담스러울 수 있습니다.네이밍 컨벤션 및 저의 경험 상 서버에서 많이 사용하고 있는 firstname.lastname 형식으로 설정합니다.macOS 환경 설정화면 모드스크롤 막대 보기: 항상데..

성능 테스트
Programming 2022. 6. 1. 15:02

지연 테스트(Latency test) 종단 트랜잭션에 걸리는 시간은? 처리율 테스트(Throughput test) 현재 시스템이 처리 가능한 동시 트랜잭션 개수는? 부하 테스트(Load test) 특정 부하를 시스템이 감당할 수 있는가? 스트레스 테스트(Stress test) 이 시스템의 한계점(breaking point)은 어디까지인가? 내구성 테스트(Endurance test) 시스템을 장시간 실행할 경우 성능 이상 증상이 나타나는가? 용량 계획 테스트(Capacity planning test) 리소스를 추가한 만큼 시스템이 확장되는가? 저하 테스트(Degradation) 시스템이 부분적으로 실패할 경우 어떤 일이 벌어지나?

article thumbnail
[springdoc-openapi 전환기 01] Spring Boot 2.6.x 버전에서 springfox와의 충돌 관련 이슈 & 임시 해결책
Programming 2022. 3. 20. 18:27

이 글은 springdoc-openapi 전환기 1편에 해당하는 글입니다. 이 글을 작성하는 시점 기준 최신 Spring Boot 버전은 2.6.4이다. Spring Boot 2.6 Release note를 보면 다음과 같은 변경 사항이 눈에 들어온다. 기본 PathPattern 매칭 전략이 AntPathMatcher → PathPatternParser로 변경되었다. Release note에도 springfox를 사용하고 있다면 정상적으로 프로젝트가 실행되지 않을 것이라고 언급하고 있다. springfox는 Spring Web Component를 기반으로 별다른 설정 없이 지원하는 API를 기반으로 Swagger-ui를 그려주는 의존성이다. 관련 이슈 링크 https://github.com/springf..

article thumbnail
IntelliJ와 build.gradle을 사용하는 Spring 프로젝트를 개발할 때 Gradle runner를 사용하는 이유
Programming 2022. 2. 24. 13:58

IntelliJ로 Spring 베이스의 프로젝트를 개발하거나 공부해본 경험이 있는 분들이 있다면 한 번쯤은 검색해보았을 키워드가 바로 테스트 속도, 빌드 속도일 것이다. 검색 결과의 내용은 거의 대부분 아래와 같은 방법으로 속도를 올릴 수 있다고 나온다. 프로젝트 빌드 툴을 Gradle로 사용하고 있는 경우, IntelliJ의 Preference -> Build, Execution, Deployment -> Gradle -> Build and run 탭을 확인한다. Build and run using과 Run tests using을 전부 Gradle이 아닌 IntelliJ로 변경한다. 하지만 왜 이렇게 하면 속도가 빨라지는지, 그리고 Gradle, IntelliJ의 두 Runner가 무엇이 다른지에 대한..