lsof 명령어 해설: 프로세스의 열린 파일 살펴보기

2025-06-06

이 코드 스니펫은 `lsof -p $(echo $$)` 명령어를 사용하여 현재 zsh 프로세스의 모든 열린 파일을 나열합니다. 출력에는 프로세스 ID, 사용자, 파일 디스크립터 유형, 디바이스, 크기, 경로 등의 세부 정보가 표시되어 파일 시스템과의 프로세스 상호 작용을 명확하게 보여줍니다. 프로세스 동작을 이해하고 파일 핸들 누수를 디버깅하는 데 매우 유용합니다.

더 보기

Axum에서 쿠키 기반 인증: 추출기에서 미들웨어로

2025-06-05

이 글에서는 Rust의 Axum 프레임워크에서 쿠키 기반 사용자 인증을 구현하는 두 가지 방법을 살펴봅니다. 먼저, 사용자 정의 추출기 `CookieJwt`를 사용하여 요청에서 JWT 토큰을 가져오고 JWT의 유효성에 따라 조건부로 '프로필' 버튼이나 '로그인' 버튼을 렌더링하는 방법을 보여줍니다. 하지만 이 방법은 복잡한 인증 시나리오에서는 그다지 깔끔하고 확장성이 좋지 않습니다. 그래서 이 글에서는 Axum 미들웨어를 사용하여 솔루션을 리팩터링하여 더 깔끔하고, 재사용 가능하며, 유연한 인증 로직 처리 방법을 제공합니다. 이 미들웨어는 JWT를 효율적으로 검증하고, 새로고침 토큰을 관리하고, 다양한 요청 유형을 처리하여 더욱 강력하고 적응력 있는 사용자 인증 시스템을 구현합니다. 이 글에서는 미들웨어 구현 세부 정보와 추출기 기반 방법에 대한 장점을 강조합니다.

더 보기
개발

쿼리 빌더를 버리고 원시 SQL을 사용해야 하는 이유

2025-01-25

이 글에서는 쿼리 빌더에 의존하는 대신 SQL을 직접 작성하여 데이터베이스 쿼리를 생성하는 것의 장점을 설명합니다. 여러 예시를 통해 저자는 `IS NULL`, `COALESCE`, `ARRAY_REMOVE`, `STRING_TO_ARRAY` 와 같은 SQL 기능이 선택적 매개변수, 배열, 페이징, 일괄 업데이트 등을 효율적으로 처리하여 복잡한 Rust 로직을 줄이는 방법을 보여줍니다. 이러한 접근 방식을 통해 코드가 간소화되고 가독성과 테스트 용이성이 향상되며 데이터베이스 테스트와 디버깅이 쉬워집니다. 저자는 원시 SQL이 복잡한 빌더 패턴보다 대부분의 경우 더욱 깔끔하고 효율적이라고 주장합니다.

더 보기