メインコンテンツにスキップ
Haril Song
Owner, Software Engineer at 42dot

Haril is a software engineer who loves to build things. He is passionate about open-source and loves to contribute to the community. He is the owner of this blog.

View all authors

알아두면 쓸데있는 개발자 도구 - CLI 편

· 10分の読み時間
Haril Song
Owner, Software Engineer at 42dot

Overview

최고의 App 을 설명했던 지난 글 에 이어서 Command Line Interface(이하 CLI) 중 추천할만한 도구를 살펴본다. 이번에 소개되는 모든 툴들은 필자가 최소 6개월 이상 써본 도구들이며, 새로운 장비를 설정할 때 반드시 설치하는 것들이다.

zoxide

GitHub - ajeetdsouza/zoxide: A smarter cd command. Supports all major shells.

한 번이라도 방문했던 디렉토리라면 경로를 기억할 필요가 없게 해주는 툴. 예를 들면 아래와 같은 경우다.

cd ~/.config/somewhere/longlong/path

# 다음부터는 아래 명령으로 바로 방문가능
z path

이게 굉장히 편리해서, 특정 설정 파일이 어디있는지 기억할 필요가 없어진다. zi 를 사용하면 우선순위 List 가 출력되기 때문에, fuzzy 하게 찾아갈 수도 있다.

한 번 써보면 다시는 이 툴을 사용하기 전으로 돌아갈 수 없을 것.

mise

GitHub - jdx/mise: dev tools, env vars, task runner

각종 환경변수 및 언어, 패키지들의 버전 매니저. 구조상 안정성이 매우 뛰어나며, Rust 로 구현되어 속도도 빠르다. 직관적인 명령어는 러닝커브를 크게 완화시켜 준다.

이미 본 블로그에 글로도 소개했을만큼, 굉장히 애정하는 툴이다. mise 역할을 해줄 비슷한 도구는 몇가지 더 있지만 개인적으로는 그 중 가장 추천할만하다고 생각한다. 예를 들면, direnv 는 mise 로 완전히 대체가 가능하고 nix 는 과하게 복잡하여 범용성이 떨어진다.

다양한 언어를 다루는 프로그래밍 Multilingual 이라면, 꼭 써보자.

chezmoi

chezmoi

사용하는 장비가 여러 대라면, 개발 환경을 동기화하기가 여간 귀찮은게 아니다. 특히 CLI 를 자주 사용하는 개발자라면 더더욱.

아예 동기화를 포기하고 지낼 생각이라면 모르겠지만, 어떻게 동기화할 수 있을지 고민하고 있다면 chezmoi 를 써보자. 혹여, 새로운 장비를 구매하더라도 초기 설정에 시간을 들일 필요가 없어진다.

mise 와 마찬가지로 본 블로그에 사용법에 관한 이 있으니 참고.

fzf

GitHub - junegunn/fzf: :cherry_blossom: A command-line fuzzy finder

GitHub Star 약 70k, 더 이상의 설명이 필요할까(참고로 spring-framework 가 57k 이다).

한국인 개발자인 junegunn 님께서 관리하시는 오픈소스 fuzzy finder 로, 표준입출력 파이프라이닝을 통해 어마어마한 범용성을 자랑한다.

검색이 필요하다면, 종류에 상관없이 fzf 를 쓰면 된다. 워낙 이런저런 패키지들이 가져다가 쓰는 중이라, fzf 의 존재를 몰랐더라도 이미 간접적으로 쓰고 있었을 수 있다.

fd

GitHub - sharkdp/fd: A simple, fast and user-friendly alternative to 'find'

find 명령을 대체한다.

Rust 로 작성되었으며, find 에 비해 최대 50% 빠르다고 한다. highlighting 도 깔끔한 편이고, 명령어 옵션도 find 보다 훨씬 직관적이다.

ripgrep

GitHub - BurntSushi/ripgrep: ripgrep recursively searches directories for a regex pattern while respecting your gitignore

grep 명령을 대체한다. 이름은 ripgrep 이지만 rg 를 명령어로 사용한다.

fd 와 비슷하게, Rust 로 작성되었다. grep 에 비해 출력으로 훨씬 다양한 정보를 얻을 수 있다. 명령어도 직관적이라 사용도 쉬운데 속도까지 빠르니 안쓸 이유가 딱히 없다.

그야말로 'RIP, grep'.

lsd

GitHub - lsd-rs/lsd: The next gen ls command

ls 명령을 대체한다.

ls 명령은 어마어마하게 많이 쓰는 명령이다. 명령어 자체가 오래되었기도 하지만, 출력으로 알 수 있는 정보가 다양하지는 않다. lsd 를 사용하면 기존 ls 를 완전히 대체할 수 있다.

bat

GitHub - sharkdp/bat: A cat(1) clone with wings.

cat 명령을 대체한다.

cat 명령은 단순 출력이지만, bat 을 사용하면 code highlighting 을 누릴 수 있다. 어느 정도 눈치 빠른 개발자라면 라인 출력을 보고 '쉘 파이프라이닝을 방해하는거 아닐까' 걱정이 될 수 있지만, 전혀 방해하지 않는다. 걱정말고 신문물을 누려보자.

필자는 bat 명령의 alias 를 cat 으로 설정하여 사용하고 있다.

HTTPie

HTTPie – API testing client that flows with you

curl 을 대체한다.

APP 도 있어서 어느 글에 포함시켜야할까 고민을 했지만, 개인적으로는 cli 로만 사용하기 때문에 이쪽 글로 넣었다.

curl 대신 HTTPie 를 선호하냐하면, 매우매우 직관적이기 때문이다. 간단한 GET 요청은 아래처럼 보낼 수 있다.

https httpie.io/hello

응답은 이렇게 포맷팅되어 온다.

curl 응답을 떠올려보자. 개발자도 예쁜걸 좋아한다.

Orbstack

OrbStack · Fast, light, simple Docker & Linux

Docker Desktop 을 대체한다.

Docker 컨테이너를 사용할 때 조금 더 빨라지고 몇몇 버그들이 사라진다. 하지만 진정한 진가는 VM 을 사용할 때인데, 전통적으로 VM 을 쓰기 어려웠던 맥에서 VM 을 굉장히 가볍게 실행시킬 수 있다. 우분투나 칼리리눅스 등의 OS 에서 테스트가 필요할 경우, orbstack 을 사용하면 매우 빠르고 편리하게 관리할 수 있으니 사용해보자. 개인적으로 매우 재밌는 경험이었다.

atuin

GitHub - atuinsh/atuin: ✨ Magical shell history

chezmoi 를 사용하면 사용하는 도구들의 설정은 동기화할 수 있었다. atuin 을 사용하면 회사에서 쳤던 명령어 history 를 동기화할 수 있다. 더 이상 회사에서 사용했던 명령어가 뭐였는지 기억해내려고 안간힘을 쓸 필요가 없다.

警告

한가지 아쉬운 점은 터미널로 Warp 를 사용한다면 온전히 atuin 을 활용하기 어렵다는 점이다. Warp 는 자체 history 기능을 제공하여 atuin 과 간섭이 있다. 아래 명령을 사용하면 history 에서 명령어 검색이 가능하여, 임시방편으로 쓰고 있다.

atuin history list | fzf

trash-cli

터미널에 '휴지통' 기능을 구현한다. 따라서 더 이상 rm -rf / 을 두려워할 필요가 없어진다. 얼마든지 복원이 가능하기 때문.

개발자 최대의 적인 rm -rf / 에서 자유로워질 수 있다는데, 그 이상의 이유가 필요한가?

Conclusion

지금까지 개인적으로 매우 좋아하는 여러 툴들을 소개했다.

사실 이 외에도 추천할만한 도구는 얼마든지 더 있지만, 누가 뭘 추천해주든 자기 손에 익은게 제일 좋은 법이다. 나머지는 자신의 환경에 맞게 찾아써보자.

情報

사용 중인 모든 툴은 여기서 볼 수 있다.

알아두면 쓸데있는 개발자 도구 - App 편

· 14分の読み時間
Haril Song
Owner, Software Engineer at 42dot

Overview

MacOS 만 사용해온지 어느덧 13년이라는 시간이 흘렀다.

개발자로 커리어를 시작하기 전부터 Mac 을 편리하게 사용하기 위해 이런저런 도구들을 살펴보는 취미가 있었다. 새로 나온 도구를 써보는거 자체가 재미있기도 하고.

그렇게 정말 많은 툴들이 함께 하다 스러져가길 반복했다.

이번에는 끝까지 살아남아 필자와 함께 온갖 역경을 헤쳐나가고 있는 도구들에 대해 소개해보고자 한다. App 과 CLI 분야를 나눠서 소개할 예정이며, 이번 글은 App 편이 되겠다.

네트워크 모니터링을 위한 도구들

· 9分の読み時間
Haril Song
Owner, Software Engineer at 42dot

banner

Overview

발표 준비를 어디서부터 시작해야할지 모르겠다는 분들을 위해 짤막하게 준비해본 세션입니다. 네트워크 모니터링 및 실험에 사용할 수 있는 다양한 도구들에 대해 소개하고 사용법을 설명합니다.

환경

네트워크를 공부하기 위해 어떤 환경을 준비해야할까요? 물론 공부하고자하는 주제에 따라 다르겠지만, 자주 사용되는 방법 몇가지를 살펴봅시다.

도커의 네트워크 타입들

· 14分の読み時間
Haril Song
Owner, Software Engineer at 42dot

Overview

docker 의 네트워크 타입은 총 6가지가 있다.

  • Bridge
  • Host
  • IPvlan
  • MACvlan
  • Overlay
  • None

아마 많은 백엔드 개발자들은 네트워크 타입에 대해서 잘모르거나, 알아도 bridge 만 쓰고 있을거라 생각한다. 필자 또한 관련 내용이 궁금해서 스터디를 진행했고, 이 글은 스터디를 진행하며 발표한 내용 중 일부를 발췌한 것이다.

Orbstack 으로 VM 을 실행하여 실습을 진행한다.

안녕 2024, 안녕 2025

· 21分の読み時間
Haril Song
Owner, Software Engineer at 42dot

reminiscence

Overview

警告

개인적인 일기를 바탕으로 작성했기 때문에, 글이 살짝 오글거릴 수 있습니다 😂

2024년엔 정말 많은 일이 있었다.

더 좋은 문장이 떠오르지 않아서, 이런 뻔하기 그지없는 문장으로 회고를 시작한다. 누구나 '오늘, 엄마가 죽었다' 같은 문장으로 글을 시작할 수 있는건 아니니까. 아니, 그게 가능한가. 잘 모르겠다.

「[書評] コード執筆ガイド」

· 7分の読み時間
Haril Song
Owner, Software Engineer at 42dot

石川宗俊の『コード執筆ガイド』の表紙

情報

このレビューは出版社から提供された本をもとに書かれていますが、内容や評価には影響を与えていません。

概要

コードをレビューしやすくするにはどうすればいいのか?

読みやすくレビューしやすいコードを書くためのガイドは、現役のLINE開発者が自身の経験をもとに執筆した本です。コードの可読性を向上させるためのさまざまな方法と原則を詳しく解説しています。

個人的には、コード規約の入門書として非常に優れていると思います。その理由を説明します。

Naver DAN 24 Review

· 25分の読み時間
Haril Song
Owner, Software Engineer at 42dot

overview

Overview

  • 참가 일시: Nov 11, 2024
  • 장소: 코엑스 그랜드블룸
  • 관련 링크: DAN 24

운좋게도 네이버에서 주관한 DAN24 에 다녀올 수 있었습니다. 결론부터 말씀드리면, 24년에 참여한 컨퍼런스 중 가장 수준이 높았다고 할 수 있을 것 같아요. 아래는 대략적인 내용을 적어둔 것이며, 자세한 내용은 DAN24 공식페이지를 참고해주세요.

KafkaKRU Meetup Review

· 6分の読み時間
Haril Song
Owner, Software Engineer at 42dot

KafkaKRU 밋업 리뷰: Event Sourcing부터 리더 파티션 밸런싱까지

2024년 11월 21일, 서울 중구 삼화타워에서 열린 KafkaKRU 밋업에 참석했습니다. 사실 대기자 명단에 있었어서 참석이 어려운 상태였던 것 같지만, 열정으로 봐주셔서 다행히 쫓겨나지는 않았습니다. 결과적으로는 예상을 훨씬 뛰어넘는 값진 시간이었어요.

[Shell] 面倒なダミーファイルを簡単に整理する方法

· 10分の読み時間
Haril Song
Owner, Software Engineer at 42dot

概要

複数のデバイスでクラウドストレージを使用していますか?それなら、おそらく衝突ファイルが少しずつ増えていく経験をしたことがあるでしょう。

衝突ファイルが増えている様子を示すアニメーション

隙あらば増えていく衝突ファイル

ファイルが同期される前に編集作業を行ったり、ネットワークの問題で同期が少し遅れたりするなど、さまざまな理由で衝突ファイルは増え続けます。

個人的には常にきれいな状態を好むので、こうしたダミーファイルを定期的に削除しています。

しかし、今日は何だか繰り返しの作業が面倒に感じます。久しぶりにシェルスクリプトを書いて、開発者らしさを出してみようと思います。