728x90

1. Keyboard Remapping (키보드 리매핑)
- 개념: 키보드에서 입력되는 키 신호를 다른 키나 명령으로 바꿔치기하는 것.
- 왜 필요해?
- Caps Lock 키는 손가락 위치가 좋지만 거의 쓰지 않음 → Ctrl이나 Esc로 바꾸면 훨씬 효율적.
- 자주 쓰는 단축키나 텍스트(이메일 주소, 학번 등)를 단일 키로 매핑하면 반복 입력을 줄일 수 있음.
- 예시:
- Caps Lock → Esc (Vim 사용자들이 즐겨 씀)
- Ctrl ↔ Command/Meta (맥/윈도우 키보드 혼용할 때 편리)
- PrtSc → 음악 재생/일시정지
- 도구:
- macOS: Karabiner-Elements, skhd, BetterTouchTool
- Linux: xmodmap, Autokey
- Windows: AutoHotkey, SharpKeys
- QMK Firmware: 하드웨어 차원에서 직접 키맵핑 가능
👉 요약: 리매핑은 단순 편의 기능을 넘어서 개발자의 손목 건강, 생산성과 직결된다.
2. Daemons (데몬)
- 개념: 사용자가 직접 실행하지 않아도, 시스템이 부팅되면 자동으로 실행되어 항상 백그라운드에서 돌아가는 프로그램. 이름 끝에 d가 붙는 경우가 많음.
- 예: sshd (SSH 접속 대기), systemd (Linux 서비스 관리자).
- 시스템 관리:
- systemctl status → 현재 실행 중인 데몬 확인
- systemctl start/stop/restart → 서비스 제어
- 예시:
- 웹 서버: nginx → HTTP 요청을 계속 대기 중
- DB 서버: mysqld → 클라이언트 요청을 기다림
👉 데몬은 서비스를 항상 켜둔 상태라고 보면 된다. 우리가 접속할 때마다 서버가 켜지는 게 아니라, 이미 대기 중이다.
3. FUSE (Filesystem in User Space)
- 문제 상황: 전통적인 파일시스템은 커널 레벨에서만 구현 가능. 하지만 보통 사용자가 파일시스템을 마음대로 만들고 싶을 때 커널 코드를 짜고 컴파일하는 건 위험하고 번거롭다.
- 해결책: FUSE는 사용자 공간에서 “가짜 파일시스템”을 만들 수 있게 해준다.
- 예시:
- sshfs: 원격 서버의 디렉토리를 로컬에 마운트 (파일이 실제론 서버에 있지만, 내 PC에서 폴더처럼 접근 가능).
- rclone: Dropbox, Google Drive, S3 같은 클라우드를 내 컴퓨터에 디스크처럼 연결.
- gocryptfs: 디렉토리 안에 파일은 전부 암호화되지만, 마운트된 폴더에서는 평문으로 보임.
👉 FUSE는 “파일시스템 호출을 내가 원하는 코드로 가로채서” 동작을 바꾸는 프레임워크.
4. Backups (백업)
- 중요 포인트:
- 동기화 ≠ 백업: Dropbox나 RAID는 데이터가 삭제·오염되면 그대로 전파됨 → 진짜 백업은 과거 상태로 돌릴 수 있어야 한다.
- 좋은 백업의 조건:
- 버저닝: 특정 날짜 시점으로 복구 가능
- 중복제거(Deduplication): 바뀐 부분만 저장해서 공간 절약
- 보안: 백업도 암호화 + 삭제 권한 관리 필요
- 실무적 관점:
- 집 외장하드 = 화재/도난 시 위험 → 오프사이트(클라우드, 다른 지역) 필수
- 정기적으로 복구 테스트해야 함 (백업만 하고 복구 실패하는 경우 많음).
👉 백업은 “복사본을 어디 두느냐”가 아니라, 재해가 났을 때 실제로 복구할 수 있느냐가 핵심.
5. APIs (응용 프로그램 인터페이스)
- 개념: 다른 서비스의 데이터나 기능을 코드로 접근할 수 있는 창구.
- 형식:
- REST API가 흔함 → https://api.service.com/resource?query=value
- 결과는 보통 JSON으로 응답.
- 인증 방식:
- API Key / Token: 서비스에서 발급하는 비밀키
- OAuth: 제한된 권한만 가진 임시 토큰 (예: 구글 로그인)
- 활용 예시:
- 날씨 API → curl https://api.weather.gov/...
- IFTTT → 여러 서비스 API를 연결해 자동화 (“메일 오면 Slack으로 알림” 같은 것).
👉 API는 “사람이 클릭해서 쓰는 웹서비스”를 코드가 대신 호출할 수 있게 해주는 방법이다.
6. Common Command-line Flags (CLI 플래그 공통 패턴)
- --help: 도움말
- --version: 버전 정보
- --verbose / -v: 상세 로그 (중첩 가능: -vvv)
- --quiet: 오류만 출력
- --dry-run: 실제 실행 안 하고 시뮬레이션만
- --: 플래그 해석 중단 (예: rm -- -r)
👉 이 패턴을 알면, 낯선 명령어를 접해도 대략 어떻게 쓰는지 추론할 수 있다.
7. Window Managers
- Floating WM: 일반적인 방식 (창을 자유롭게 움직이고 겹침) → Windows/macOS 기본
- Tiling WM: 창을 타일처럼 분할해서 겹치지 않음 (tmux와 비슷)
- 새 창 열면 자동으로 분할
- 키보드로 크기 조절·이동 가능
👉 마우스 없이 키보드만으로 작업 환경을 빠르게 전환할 수 있어 개발자들이 선호.
8. VPNs
- 정의: 인터넷 서비스 제공자가 아니라 VPN 서버를 통해 트래픽을 보내는 것.
- 이점:
- 공공 와이파이(공항 등)에서 암호화된 터널 확보
- 위치 숨김 (IP가 VPN 서버 위치로 표시됨)
- 주의점:
- ISP 대신 VPN 업체를 신뢰해야 함 → 나쁜 업체는 로그를 팔아먹음
- 이미 HTTPS가 대부분이라 집에서 쓰는 건 효과 미미할 수 있음
👉 VPN은 만능 보안 솔루션이 아니라, “신뢰 대상을 바꾸는 것”이다.
9. Markdown
- 개념: 가벼운 문서 마크업 언어 → 글에 서식 추가 (굵게, 링크, 코드 등).
- 예시:
- # 제목
- **굵게**, *기울임*
- - 리스트, 1. 번호 리스트
- 코드블록
- [링크](url)
👉 Word처럼 무겁지 않고, 어디서나 호환 가능. GitHub, 블로그, 노트 툴 등에서 기본 지원.
10. Hammerspoon (macOS 자동화)
- 개념: macOS 자동화 툴. Lua 스크립트로 시스템 이벤트에 반응.
- 예시:
- 단축키 → 창 이동/정렬
- 특정 Wi-Fi 접속 → 소리 자동 음소거
- 전원 어댑터 구분 → 알림 표시
👉 macOS에서 “원하는 건 거의 다 자동화 가능”하게 만들어주는 프레임워크.
11. Booting + Live USBs
- Booting: PC 켜면 BIOS/UEFI가 하드웨어 초기화 후 OS를 실행.
- Live USB:
- USB에 운영체제를 넣어 직접 부팅 가능.
- OS가 깨졌을 때 복구용으로 사용.
👉 Live USB는 “응급용 OS CD/USB” 같은 것.
12. Docker, Vagrant, VMs, Cloud, OpenStack
- VM (Virtual Machine): 운영체제 전체를 가상화.
- Docker (컨테이너): OS 공유, 훨씬 가벼움.
- Vagrant: VM 환경을 코드(Vagrantfile)로 정의, 쉽게 재현.
- Cloud (AWS/GCP/Azure): 물리 장비 없이 컴퓨팅 자원 대여 가능.
- OpenStack: 오픈소스 클라우드 플랫폼 (AWS 같은 내부 프라이빗 클라우드 구축용).
👉 “내 PC에서 못하는 실험/환경”을 VM이나 클라우드에서 대신 돌릴 수 있다.
13. Notebook Programming
- 개념: 코드 + 실행 결과 + 설명을 한 문서에서 볼 수 있는 개발 환경.
- 예시:
- Jupyter Notebook (데이터 분석, 머신러닝)
- Mathematica (수학 계산, 시각화)
👉 “실험 노트처럼 코드를 기록/실행/시각화”하는 도구.
14. GitHub
- 역할: 오픈소스 개발 협업 플랫폼.
- 기여 방식:
- Issue: 버그 리포트/기능 제안
- Pull Request(PR): 코드 수정 제안 → 리뷰 → 병합
👉 단순히 코드 저장소가 아니라, 개발자 커뮤니티와 협업의 중심이다.
728x90
'프로그래밍공부(Programming Study)' 카테고리의 다른 글
| Security and Cryptography (3) | 2025.09.09 |
|---|---|
| 메타프로그래밍(Metaprogramming)과 DevOps: 빌드·의존성·CI 제대로 이해하기 (0) | 2025.09.08 |
| 커맨드라인 환경 정리 – 효율적인 셸 활용법 (2) | 2025.08.30 |
| grep 명령어 유용하게 잘 쓰는 법 (실전 꿀팁 포함!) (2) | 2025.06.03 |
| SRE, DevOps, 개발자의 업무 초점과 주요 지표(Key Metrics) 한눈에 보기 (0) | 2025.03.08 |
댓글