2025년 3월 16일 일요일

Ubuntu에서 socks proxy 간단 사용

SSH를 이용한 SOCKS 프록시 설정

가장 간단한 방법은 SSH를 이용하여 SOCKS 프록시를 설정하는 것:

ssh -D 1080 사용자명@원격서버주소

이 명령어는 로컬 포트 1080에 SOCKS 프록시 서버를 생성한다.

브라우저 설정

프록시가 설정된 후, 브라우저에서 SOCKS 프록시 설정을 적용할 수 있다:

Firefox 설정:

  1. 설정 → 일반 → 네트워크 설정 → 설정 버튼 클릭
  2. “수동 프록시 설정” 선택
  3. SOCKS 호스트: 127.0.0.1, 포트: 1080 입력
  4. SOCKS v5 선택
  5. 확인 클릭

Chrome 설정:

Chrome은 시스템 프록시 설정을 사용하므로 Ubuntu 시스템 설정을 변경해야 한다.

시스템 전체 프록시 설정

터미널에서 환경 변수를 설정하는 방법:

export http_proxy=socks5://127.0.0.1:1080
export https_proxy=socks5://127.0.0.1:1080

특정 명령어에만 프록시 적용

특정 명령어에만 프록시를 적용하려면:

curl --socks5 127.0.0.1:1080 https://example.com

영구적인 설정

영구적으로 설정하려면 .bashrc 파일에 추가:

echo 'export http_proxy=socks5://127.0.0.1:1080' >> ~/.bashrc
echo 'export https_proxy=socks5://127.0.0.1:1080' >> ~/.bashrc
source ~/.bashrc

Mac에서 모든 네트워크에 이 프록시를 적용하려면 환경설정에서 이더넷의 프록시 설정으로 가서 ‘SOCKS 프록시’ 부분을 설정하면 된다.

2025년 3월 6일 목요일

lxd에서 profile 사용

LXD 프로파일 사용법

  • LXD 프로파일은 컨테이너나 가상 머신을 생성할 때 적용할 수 있는 설정 모음
  • 디바이스, 리소스 제한, 환경 변수 등을 미리 정의해 여러 컨테이너에 일관되게 적용

기본 명령어

프로파일 목록 확인

lxc profile list

특정 프로파일 정보 확인

lxc profile show <프로파일명>

새 프로파일 생성

lxc profile create <프로파일명>

프로파일 편집

lxc profile edit <프로파일명>

프로파일 삭제

lxc profile delete <프로파일명>

프로파일 설정 예시

디바이스 추가 (디스크 마운트)

lxc profile device add <프로파일명> <디바이스명> disk source=<호스트경로> path=<컨테이너내경로>

CPU 제한 설정

lxc profile set <프로파일명> limits.cpu=2

메모리 제한 설정

lxc profile set <프로파일명> limits.memory=2GB

컨테이너에 프로파일 적용

컨테이너 생성 시 프로파일 적용

lxc launch <이미지> <컨테이너명> --profile <프로파일명>

기존 컨테이너에 프로파일 적용

lxc profile assign <컨테이너명> <프로파일명>

여러 프로파일 적용

lxc profile assign <컨테이너명> <프로파일1>,<프로파일2>

2025년 2월 21일 금요일

2025년 2월 20일 목요일

파이썬 패키지 설치 및 환경 관리 도구 uv

소개

  • Rust로 작성된 파이썬 패키지 설치 및 환경 관리 도구
  • 전통적인 pip와 호환되면서도 훨씬 빠른 성능

주요 특징:

  • 매우 빠른 속도 (pip보다 약 10-100배 빠름)

  • pip와 완벽한 호환성

  • 의존성 해결 알고리즘 개선

  • 병렬 다운로드 지원

  • 캐싱 메커니즘 최적화

  • astral.sh에서 개발한 도구로, 2023년 말~2024년 초에 공개

  • https://github.com/astral-sh/uv 참고

UV 간단 튜토리얼

1. UV 설치하기

터미널에서 다음 명령어로 설치합니다:

# macOS/Linux에서 설치
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)에서 설치
irm https://astral.sh/uv/install.ps1 | iex

2. 기본 패키지 관리

# 패키지 설치
uv pip install requests pandas

# 여러 패키지 동시 설치 (매우 빠름)
uv pip install numpy matplotlib seaborn scikit-learn

# 특정 버전 설치
uv pip install flask==2.0.1

# requirements.txt 파일 사용
uv pip install -r requirements.txt

3. 가상환경 관리

# 새 가상환경 생성
uv venv .venv

# 가상환경 활성화 (Linux/macOS)
source .venv/bin/activate

# 가상환경 활성화 (Windows)
.venv\Scripts\activate

4. pip와 함께 사용하기

기존 pip 명령어와 거의 동일하게 작동합니다:

# 패키지 업그레이드
uv pip install --upgrade requests

# 패키지 제거
uv pip uninstall pandas

# 설치된 패키지 목록 확인
uv pip list

5. 프로젝트 의존성 관리

# 현재 환경의 패키지를 requirements.txt로 내보내기
uv pip freeze > requirements.txt

# 개발 의존성과 프로덕션 의존성 분리 (pip-tools 호환)
uv pip compile pyproject.toml -o requirements.txt

UV로 파이썬 3.13.2 가상환경을 만들고 Jupyter를 설정하는 과정

# 1. 특정 파이썬 버전으로 가상환경 생성
uv venv --python=3.13.2 .venv_py3132

# 2. 가상환경 활성화
# Linux/macOS
source .venv_py3132/bin/activate
# Windows
# .venv_py3132\Scripts\activate

# 3. Jupyter와 필수 패키지 설치
uv pip install jupyter notebook pandas numpy matplotlib scipy

# 4. Jupyter 노트북 실행
jupyter notebook

주의사항:

  • UV가 가상환경을 생성할 때 시스템에 파이썬 3.13.2가 설치되어 있어야 합니다. 없다면 먼저 설치해주세요.
  • 데이터 분석에 필요한 기본 패키지로 pandas, numpy, matplotlib, scipy를 포함했습니다.
  • 필요에 따라 scikit-learn, seaborn 등 추가 패키지를 설치할 수 있습니다.

첫 번째 Jupyter 노트북에서 환경이 제대로 설정되었는지 확인하려면:

import sys
print(f"Python 버전: {sys.version}")
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
print("모든 필수 패키지가 성공적으로 로드되었습니다!")

2025년 2월 17일 월요일

python에서 venv를 이용하는 간단한 튜토리얼

Python의 가상 환경(venv) 사용법

  1. 가상 환경 생성하기
# Windows의 경우
python -m venv myenv

# macOS/Linux의 경우
python3 -m venv myenv
  1. 가상 환경 활성화하기
# Windows의 경우
myenv\Scripts\activate

# macOS/Linux의 경우
source myenv/bin/activate

활성화되면 프롬프트 앞에 (myenv)가 표시됩니다.

  1. 가상 환경에서 패키지 설치하기
# 예: requests 패키지 설치
pip install requests

# 설치된 패키지 목록 확인
pip list
  1. 프로젝트에 필요한 패키지 목록 저장하기
pip freeze > requirements.txt
  1. 다른 환경에서 패키지 설치하기
pip install -r requirements.txt
  1. 가상 환경 비활성화하기
deactivate
  • 가상 환경 삭제: 가상 환경이 더 이상 필요하지 않으면 해당 디렉토리를 삭제하면 됩니다.
  • 여러 Python 버전: 시스템에 여러 버전의 Python이 설치되어 있는 경우 특정 버전의 Python을 사용하여 가상 환경을 만들 수 있습니다. 예를 들어, Python 3.9를 사용하여 가상 환경을 만들려면 python3.9 -m venv .venv 명령어를 사용합니다.

  • 프로젝트 디렉토리에 .venv와 같은 이름으로 가상 환경을 만들면 Git 저장소에 해당 디렉토리를 추가하지 않도록 .gitignore 파일에 .venv를 추가하는 것이 좋습니다.

가상 환경을 사용하면 다음과 같은 장점이 있습니다:

  • 프로젝트별로 독립된 Python 환경을 유지할 수 있습니다
  • 패키지 버전 충돌을 방지할 수 있습니다
  • 다른 개발자와 동일한 환경을 쉽게 공유할 수 있습니다

가상 환경을 생성할 때 특정 버전의 Python을 지정하는 방법

  1. 특정 버전의 Python 실행 파일을 직접 지정하기
# Python 3.8을 사용하여 가상 환경 생성
/usr/local/bin/python3.8 -m venv myenv

# Windows의 경우
C:\Python38\python.exe -m venv myenv
  1. pyenv를 사용하는 방법
# pyenv 설치 (macOS)
brew install pyenv

# 특정 Python 버전 설치
pyenv install 3.8.12

# 해당 버전을 사용하여 가상 환경 생성
pyenv local 3.8.12
python -m venv myenv
  1. conda를 사용하는 방법
# 특정 Python 버전으로 환경 생성
conda create -n myenv python=3.8

# 환경 활성화
conda activate myenv
  1. 이미 생성된 가상 환경의 Python 버전 확인하기
# 가상 환경 활성화 후
python --version

추가로 알아두면 좋은 점:

  • 시스템에 설치되지 않은 Python 버전은 사용할 수 없습니다
  • pyenv나 conda를 사용하면 여러 Python 버전을 쉽게 관리할 수 있습니다
  • requirements.txt에 Python 버전을 명시하는 것이 좋습니다 (예: python_version >= "3.8")

2025년 2월 9일 일요일

우분투 터미널 볼륨 조절, 녹음 볼륨 조절

우분투 터미널에서 볼륨 조절

우분투 터미널에서 볼륨을 조절하는 주요 명령어들을 설명해드리겠습니다.

  1. amixer 사용하기:
# 마스터 볼륨 증가 (5%)
amixer set Master 5%+

# 마스터 볼륨 감소 (5%)
amixer set Master 5%-

# 특정 볼륨으로 설정 (예: 50%)
amixer set Master 50%

# 음소거/음소거 해제
amixer set Master toggle
  1. pactl 사용하기 (PulseAudio):
# 볼륨 증가 (5%)
pactl set-sink-volume @DEFAULT_SINK@ +5%

# 볼륨 감소 (5%)
pactl set-sink-volume @DEFAULT_SINK@ -5%

# 특정 볼륨으로 설정 (예: 50%)
pactl set-sink-volume @DEFAULT_SINK@ 50%

# 음소거/음소거 해제
pactl set-sink-mute @DEFAULT_SINK@ toggle
  1. alsamixer 사용하기:
# 대화형 볼륨 믹서 실행
alsamixer

alsamixer를 실행하면 화살표 키로 이동하고, 위/아래 방향키로 볼륨을 조절할 수 있습니다. ‘M’ 키를 눌러 음소거/음소거 해제가 가능하며, 'Esc’로 종료할 수 있습니다.

위 명령어들 중에서 가장 편리한 것을 선택하여 사용하시면 됩니다. 자주 사용하는 명령어는 별칭(alias)으로 설정해두면 더욱 편리하게 사용할 수 있습니다.

녹음 볼륨 조절

리눅스에서 시스템 볼륨과 녹음(입력) 볼륨은 별도로 관리됩니다.

ffmpeg로 녹음할 때의 볼륨은 입력 장치(마이크)의 볼륨 설정을 따르게 됩니다. 시스템의 마스터 볼륨이나 스피커 볼륨을 조절해도 녹음되는 소리의 크기에는 영향을 주지 않습니다.

입력 볼륨을 조절하려면:

# 마이크 볼륨 확인
amixer get Capture

# 마이크 볼륨 조절
amixer set Capture 80%

# 또는 PulseAudio 사용
pactl set-source-volume @DEFAULT_SOURCE@ 80%

alsamixer를 사용할 경우:

  1. alsamixer 실행
  2. F4를 눌러 Capture 모드로 전환
  3. 마이크나 Line-in 등 입력 장치의 볼륨을 조절

또는 ffmpeg 명령어에서 직접 볼륨을 조절할 수도 있습니다:

# volume 옵션으로 입력 볼륨 조절 (1.0 = 100%)
ffmpeg -f alsa -i default -af "volume=1.5" output.wav

녹음 중에는 입력 볼륨을 급격하게 변경하지 않는 것이 좋습니다. 갑작스러운 볼륨 변화는 녹음 품질에 영향을 줄 수 있기 때문입니다.

2025년 1월 31일 금요일

grep 명령어 간단 설명

1. 기본 검색 구문

grep "검색어" 파일명        # 기본 검색
grep -r "검색어" .         # 현재 디렉토리 하위 모든 파일 검색

2. 파일 타입 필터링

# 단일 확장자 검색
grep -r "검색어" --include="*.py" .

# 여러 확장자 검색
grep -r "검색어" --include="*.{js,jsx,ts,tsx}" .

# 특정 디렉토리 제외
grep -r "검색어" --include="*.py" --exclude-dir={node_modules,dist,build} .

3. 컨텍스트 표시

grep -C 3 "검색어" 파일명  # 매칭 기준 위아래 3줄
grep -B 3 "검색어" 파일명  # 매칭 기준 이전 3줄
grep -A 3 "검색어" 파일명  # 매칭 기준 이후 3줄

4. 매칭 옵션

grep -w "test" 파일명     # 정확한 단어 매칭
grep -i "Test" 파일명     # 대소문자 구분 없이
grep -v "제외어" 파일명    # 매칭되지 않는 라인 검색

5. 카운트 및 파일명

grep -c "검색어" 파일명    # 매칭된 라인 수 출력
grep -rc "검색어" .       # 파일별 매칭 라인 수
grep -l "검색어" *        # 매칭된 파일명만 표시
grep -L "검색어" *        # 매칭되지 않는 파일명 표시

6. 다중 패턴 검색

# OR 검색
grep -E "pattern1|pattern2" 파일명
egrep "pattern1|pattern2" 파일명

# AND 검색
grep "pattern1" 파일명 | grep "pattern2"

7. 정규식 검색

# 기본 정규식 패턴
grep -E "^[A-Z]{3}[0-9]{4}$" 파일명    # 대문자3자+숫자4자

# 이메일 주소 검색
grep -E "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}" 파일명

8. 출력 포맷팅

grep --color "검색어" 파일명           # 매칭 부분 색상 강조
grep --color=always "검색어" 파일명    # 항상 색상 강조
grep -n "검색어" 파일명               # 라인 번호 표시

9. 자주 사용되는 조합

# 개발 파일 검색 기본 세트
grep -rin --color "검색어" --include="*.{js,jsx,ts,tsx}" --exclude-dir={node_modules,dist} .

# 컨텍스트 포함 정확한 검색
grep -w -C 2 --color "검색어" 파일명

# 디버깅용 로그 검색
grep -A 5 -B 2 "error" --include="*.log" --color .

주요 옵션 정리:

  • -r: 재귀 검색
  • -i: 대소문자 구분 없음
  • -n: 줄 번호 표시
  • -w: 정확한 단어 매칭
  • -c: 매칭 수 카운트
  • -l: 파일명만 표시
  • -v: 매칭되지 않는 라인 검색
  • -E: 정규식 사용
  • -A: 매칭 후 라인 표시
  • -B: 매칭 전 라인 표시
  • -C: 매칭 전후 라인 표시

Ubuntu에서 socks proxy 간단 사용

SSH를 이용한 SOCKS 프록시 설정 가장 간단한 방법은 SSH를 이용하여 SOCKS 프록시를 설정하는 것: ssh -D 1080 사용자명@원격서버주소 이 명령어는 로컬 포트 1080에 SOCKS 프록시 서버를 생성한다. 브라우저 설정 프...