본문 바로가기

분류 전체보기

(27)
[Zsh] Powerlevel10k로 Zsh 멋지게 설정하기 보통 Zsh을 사용하는 많은 분들이 shell configuration 관리 용으로 Oh My Zsh을 추천한다. 특히 agnoster 테마는 개발자의 기본 터미널 테마로 엄청난 인기를 얻고 있기도 하다. 하지만 agnoster 테마는 개인적으로 매우 싫어하는 스타일의 테마인데 테마 적용 자체부터 귀찮을뿐 아니라 제대로 적용이 가능한 폰트도 매우 제한적이기 때문이다. 그래서 이것저것 알아본 결과 Powerlevel10k 테마를 알게됐다. 만약 Oh My Zsh이 깔려있다면 아래 명령어를 통해서 Powerlevel10k 테마를 바로 추가할 수 있다. git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh..
[Kotlin] apply, also, let, run, with 상황에 맞게 사용하기 Scope Functions Kotlin 표준 라이브러리는 몇 가지 객체의 Context 내에서 코드 블록{}을 실행하는 것이 유일한 목적인 몇 가지 함수가 포함되어 있다. 객체에서 이 람다 함수를 호출하면 해당 함수는 일시적인 Scope를 생성하고, 해당 Scope 안에서는 객체의 이름 없이도 접근이 가능하다. 이러한 함수를 Scope Function(범위 지정 함수)이라고 하며, let, run, with, apply, also가 있다. 기본적으로 이 5가지 함수들은 동일한 기능을 수행하기 때문에 어떤 상황에 어떤 Scope Function을 사용하는 것이 맞는지 매우 혼동스럽기 때문에 처음 Kotlin을 사용하는 사용자 입장에서는 난처한 상황을 겪게된다. 일단 아래 5가지 함수의 정의를 살펴보자. ..
[Kotlin] Delegate Pattern 이란? by 키워드 사용하기 Delegate Pattern 이란? Delegate Pattern을 알기 전에 Delegator와 Delegate 용어를 정리해보자. Delegator는 어떤 행위를 다른이에게 위임하는 위임자, Delegate는 어떤 행위를 위임받아 실제로 수행하는 대리자를 의미한다. 따라서 Delegate Pattern이란 어떤 기능을 자신이 수행하지 않고 다른 객체에 위임하여 해당 객체가 일을 수행하도록 구성한 디자인 패턴이다. Delegate Pattern이 필요한 이유는? Delegate Pattern의 필요성을 이해하기 위해서는 상속(Inheritance)과 구성(Composition)에 대한 내용을 함께 이해해야 한다. 흔하게 상속은 is-a 관계라고 말하는데(Hero class가 SuperMan class..
[IT 리뷰] Logitech MX Keys for Mac 30일 사용기 손목이 아파오다 개발자라는 직업의 특성 때문에 평소 기계식 키보드를 고집해왔다. 정말 다양한 기계식 키보드를 사용해왔는데, 최근에는 리얼포스(Realforce) R2 균등 30g 저소음을 사용했다. 원래 회사에서는 노트북과 모니터를 상하로 연결해서 사용하는 스타일이라서 기계식 키보드는 집에서만 활용했었는데 최근에 재택근무로 집에서만 일을 하다보니 자연스럽게 기계식 키보드를 계속 사용했다. 그런데 문제가 생겼다. 갑자기 손목이 아파오기 시작한 것이다. 기계식 키보드를 꽤 오랫동안 사용해왔다고 생각했는데 갑자기 손목이 아파오니 당황스러웠다. 함께 구매했지만 사용하지 않고 있었던 팜레스트도 사용해봤지만 사실 손목 통증의 완화보다는 손목 위치 변화에 따른 타건감의 이질감이 어색했다. 그래서 펜타그래프 방식의 키..
[번역] Vim 정복하기: 4주 계획 이 글은 Peter Jang님의 블로그 포스트 [How To Learn Vim: A Four Week Plan]을 번역한 글이다. Vim에 관심이 있지만 아직 서툴다면 도움이 되는 글이다. 물론 나는 아직도 적응중이다. Vim은 배우기 어렵다고 악명이 높은 Command Line Text Editor 입니다. 그렇다면 이미 다른 Text Editor나 IDE를 편하게 사용하고 있는 상황에서 당신은 왜 Vim을 배워야할까요? 장점은 다음과 같습니다. (1) 이미 Unix 기반 시스템에 설치되어 있기 때문에, 대부분의 서버 환경에서 바로 실행하여 파일을 수정할 수 있습니다. (2) 대부분의 text editor들과 IDE들과 비교하여 매우 가볍기 때문에, 하드웨어 파워가 부족한 환경에서도 빠르고 효과적으로 ..
[클린 아키텍처] 5가지 SOLID 설계원칙 좋은 소프트웨어란 깔끔한 코드(Clean Code)로 시작된다. 하지만 깔끔한 코드도 정작 시스템 아키텍처를 엉망으로 만들면 의미가 없어진다. 따라서 좋은 코드로 좋은 아키텍처를 만들기 위한 원칙이 필요하며, 객체지향 설계에서는 SOLID라고 불리는 원칙이 있다. 객체지향 설계의 5가지 핵심 원칙으로 불리우는 SOLID 원칙이란 (1) SRP(단일 책임 원칙), (2) OCP(개방-폐쇄 원칙)**, (3) LSP(리스코프 치환 원칙), (4) ISP(인터페이스 분리 원칙), (5) DIP(의존 역전 원칙)이다. SOLID는 이 5가지의 원칙들의 앞자를 따서 부르는 약자이다. SOLID 설계원칙의 목적은 무엇일까? 결국 좋은 코드로 좋은 아키텍처를 만들기 위해서 제시된 원칙이기 때문에, 변경에 유연하고, ..
[Git] merge된 local 브랜치 한번에 쉽게 정리하기 Git 전략에 따라서 작업하는 방식은 여러가지가 존재하지만, 대부분은 local에서 특정 브랜치를 생성하고 작업이 완료되면 최종적으로 master나 develop 같은 특정 브랜치로 merge하게 된다. 이런 경우 조금만 작업이 많아지면 local에 브랜치가 무한정 쌓이게 되는데, 아래처럼 git-prune.sh 라는 스크립트로 만들어서 사용하면 특정 로컬 브랜치 기준으로 merge된 브랜치를 깔끔하게 삭제할 수 있다. #!/bin/bash cbranch=$(git rev-parse --abbrev-ref HEAD); git checkout -q $cbranch && git for-each-ref refs/heads/ "--format=%(refname:short)" | while read branch;..