전체 글 50

Archlinux mirrorlist ranking

이 포스팅에서는 Archlinux에서 패키지 매니저의 미러를 빠른 것들로 교체하는 방법을 소개하겠다. sudo pacman -S pacman-contrib --needed curl -s "https://archlinux.org/mirrorlist/?country=KR&use_mirror_status=on" | sed -ne 's/#Server\(.*\)/Server\1/p' | rankmirrors -n 3 - | sudo tee /etc/pacman.d/mirrorlist 위 명령은 /etc/pacman.d/mirrorlist 파일에 가장 빠른 3개의 미러를 저장한다. https://archlinux.org/mirrorlist 사이트는 Archlinux의 공식 미러 목록을 제공한다. - country=..

저(著) 2021.11.29

code bloat(코드 비대화)

코드 비대화는 일반적으로 쓸모없는 코드가 너무 긴 상황을 가리킨다. 예시 python3 에서 URL 생성 및 출력하는 소스 코드이다. - 쓸데없이 긴 경우 (코드 비대화) naver_url = "https://finance.naver.com" search_pending = "item/main.naver" code_query = "code" total = naver_url + "/" + search_pending + "?" + code_query + "=" + "12345" print(total) - 간단한 경우 total = f"https://finance.naver.com/item/main.naver?code={12345}" print(total)

술(述)/풀이 2021.11.24

횡단 관심사(Cross-cutting concerns)

횡단 관심사는 AOP에서 사용하는 용어이다. 이 포스팅에서는 횡단 관심사 자체에 관해서 서술하며, AOP는 서술하지 않는다. 횡단 관심사에서, 관심사(concerns)는 기능을 기준으로 나누어진 시스템 일부를 말한다. 이 관심사는 아래처럼 두 가지가 있다. Core 관심사 Cross-cutting 관심사 Core 관심사 core 관심사는 시스템의 주요 기능이다. 예를 들어, 은행 업무 시스템에서는 계좌 이체, 입금, 출금 등등 하나하나의 기능이 core 관심사이다. Cross-cutting 관심사 cross-cutting 관심사는 전체 시스템에 영향을 줄 수 있는 기능이다. 예를 들어, 로깅, 보안 등등이 있다. 은행 업무 시스템에서 계좌 이체, 입금, 출금할 때, 로깅을 하는 기능이 cross-cutt..

술(述)/풀이 2021.11.18

UUID

필자는 어쩌다 보니 Openstack이라는 함정에 빠져있다. Openstack을 사용하다 보면 어쩔 수 없이 UUID를 마주칠 수밖에 없다. 대시보드를 통해 사용하면 UUID가 뭐든 간에 아무 상관 없이 쓸 수 있다. 하지만 CLI를 통해 사용하면, 욕부터 나온다. 일단 외울 수가 없으니, 조회를 하고 이를 복사해 붙여넣기를 통해서 다시 조회해야 한다. 이런 걸 왜 쓸까? 이 포스팅에서는 UUID가 무엇인지, 무슨 이유로 사용하는지, 어떻게 생성되는지에 관한 내용을 서술하겠다. UUID UUID는 Universally Unique Identifer의 약자로, 범용 고유 식별자이다. 또한, UUID는 RFC 4122 표준이다. UUID의 주요 목적은 기존 중앙 집중식 고유 아이디 생성 방식에서의 탈피이다...

술(述)/풀이 2021.11.14

natural key vs surrogate key

이 포스팅에서는 Primary Key가 무엇인지, 그리고 Primary Key를 지정하는 방법과 각 방법의 장단점에 대해서 살펴보겠다. Primary Key(기본 키) 데이터베이스는 엔티티(entity)를 구분하기 위해서 Primary Key를 지정한다. 이 Primary Key는 엔티티를 구분하기 때문에 몇 가지 특징을 갖는다. 특징은 아래와 같다. 유일해야 한다. NULL이 허용되지 않는다. 자동으로 색인이 된다. 이러한 Primary Key를 지정하는 방식은 두 가지가 있다. Natural Key(자연 키) Natural Key는 말 그대로 자연스러운 키이며, 유의미한 키이다. 키 자체가 가치가 있다. 누군가를 부를 때, 보통 이름을 부르게 되어있다. 만약, 이름이 겹치지만 않는다면 이름 자체가 훌..

술(述)/비교 2021.11.11

사용자 스토리(User story)

유저 스토리나 사용자 이야기라고 안 부르고 보통 사용자 스토리라고 부른다. 왤까... 사용자 스토리는 사용자 스토리 맵, 스크럼 등 생각보다 많은 곳에서 사용된다. 그런데 참 많은 사람이 사용자 스토리를 잘 알지 못하는 것 같다. 이 포스팅에서는 사용자 스토리가 무엇인지, 어떻게 사용하는 것이 좋은지에 대한 내용을 서술하겠다. 사용자 스토리 사용자 스토리는 협업을 위한 수단이다. 사용자 스토리는 철저히 사용자 측면에서 작성되며, 사용자가 원하는 기능에 대한 간략한 설명이다. 사용자 스토리는 기능에 대한 설명일 뿐, 공식적으로 어떠한 형식을 쓰라는 것은 지정되어 있지 않다. 하지만 보통 아래와 같은 형식을 취한다. As a [페르소나] I want [목표] so that [이유] "[페로소나]로서, 나는 ..

술(述)/풀이 2021.11.10

systemd timer

필자는 리눅스에서 반복 작업을 하기 위해서 주로 cron을 사용해 왔다. 하지만, 필자가 사용하는 리눅스에서는 cron이 기본으로 설치되어 있지 않아 패키지 매니저를 이용해 설치했어야 했다. 이 일련의 과정이 귀찮아 다른 방법들을 찾아보던 중 systemd에 timer가 내장되어 있다는 것을 알게 되었다. 대부분의 리눅스 운영체제에서 systemd를 채용하고 있으므로, 이것이 좋겠다고 판단하였다. 이 포스팅에서는 systemd timer의 자세한 내용이 아니라, 간단한 사용 방법 정도만 정리하겠다. timer 구분 원래는 아래에서 소개하는 것 외에도 다른 방법들이 있지만, 여기에서는 아래의 두 가지만 설명하겠다. Timer(기본 타이머) Transient Timer(일시적인 타이머) Timer 사용법 먼..

저(著) 2021.11.07

ansible 설치

Ansible은 자동화 도구다. 설정 관리, 응용프로그램 배포, 클라우드 프로비저닝 등등 굉장히 다양한 일들을 할 수 있다. 필자는 보통 Openstack이나 Kubernetes처럼 여러 대 노드에 설치와 설정을 해야 할 때 Ansible을 사용한다. 복잡한 일들이 그냥 시간 때우는 일 정도로 변해버린다. 아주 좋다. 설치 Ansible은 아래와 같은 2가지 방법으로 설치할 수 있다. 둘 중 하나를 선택하면 된다. 패키지 매니저 OS의 패키지 매니저를 사용하는 경우, 설치/삭제/업그레이드가 굉장히 쉽게 이루어진다. 그러므로 이 방법을 추천한다. Archlinux sudo pacman -S ansible --noconfirm Fedora 34 sudo dnf install ansible -y Ubuntu ..

편(編)/설치 2021.11.07

Clean Architecture - 2장. 두 가지 가치에 대한 이야기

모든 소프트웨어는 이해관계자에게 서로 다른 두 가지 가치를 제공한다. 행위(Behavior)와 구조(Structure)이다. 행위 누군가가 프로그래머를 고용하는 이유는 아래와 같다. 수익 창출 비용 절약 이해관계자는 기능 명세서와 요구 사항 명세서를 고용된 프로그래머에게 제공한다. 프로그래머는 이러한 요구 사항들을 만족하도록 코드를 작성하며, 요구 사항을 위반할 때 디버깅을 진행한다. 구조 소프트웨어(software)는 부드러운(soft)과 제품(ware)의 합성어이다. 여기서 부드럽다는 변경하기 쉽다는 것을 뜻한다. 즉, 소프트웨어는 변경하기 쉬운 제품을 의미한다. 프로그래머는 변경하기 쉬운 제품을 만들기 위해 소프트웨어의 구조를 잘 만들고, 이 구조를 향상하거나 유지해야 한다. 더 높은 가치(행위 v..

편(編)/책 2021.11.03