Korean
🏆 2025
🏆 2024
🏆 2023
✒️ 게시글 수
개발환경/K8S·Docker
[Docker] 1. Ubuntu에 Docker 설치하기 [Docker] 1. Ubuntu에 Docker 설치하기 [Docker] Ubuntu에 Docker 설치하기 1. 필수 패키지 설치 apt-get를 업데이트하고 필수 패키지를 설치합니다. sudo apt-get update sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release 2. Docker 설치 도커를 설 domdom.tistory.com [Docker] 2. Docker registry에서 이미지 다운받아 컨테이너 생성 및 구동하기 [Docker] 2. Docker registry에서 이미지 다운받아 컨테이너 생성 및 구동하기 [ 1. Ubuntu에 Docker 설치하기..
프로그래밍/Python
가끔 프록시 도구로 HTTP 요청을 잡고 싶을 때 프록시 설정을 하곤 합니다. 또는 특정 사이트를 크롤링하거나 접근하게 될 때 프록시 서버에 접속해야하는 경우가 생깁니다. 이 때 requests 모듈로 HTTP 요청 기능을 구현했다면, 프록시 설정을 어떻게 해야하는지 알아보았습니다. 저는 우선 프록시 도구를 많이 사용하기 때문에 프록시 도구 사용 시 예제를 준비해보았습니다. from requests import * proxies = {'http':'http://127.0.0.1:8080','https':'http://127.0.0.1:8080'} res = get('http://www.naver.com', proxies=proxies, verify=False) print(res.status_code) 엄..
장고에서는 비밀번호를 변경하는 PasswordChangeForm을 지원합니다. views.py에서 PasswordChangeForm을 프론트로 전달해주고, 프론트에서 폼을 확인해봅시다. from django.contrib.auth.forms import PasswordChangeForm def mypage(request): form = PasswordChangeForm(request.user, request.POST) return render(request, "mypage.html", {"form":form}) mypage.html에서는 {{form}}을 원하는 곳에 넣어주면 되구요. 기본적으로 아래와 같이 현재 비밀번호, 변경할 비밀번호, 비밀번호 확인 input이 있습니다. 사용자가 비밀번호를 변경하..
파이썬에서 몽고DB를 사용할 때 문자열안에 특정 문자가 포함된 데이터들만 가져오고 싶을때 '$regex'를 사용하게 되는데요, data = collection.find({column: {'$regex': text}}) 반대로, 특정 문자가 포함되지 않은 데이터들만 가져오고 싶을 때는 어떻게 해야할까요? 처음에는 '$ne'를 사용해보려고 했지만 제대로 기능이 작동되지 않는 것 같더군요 (사용하려는 목적과 $ne의 기능이 부합하는지도 의문.. ) $not을 사용할 경우에는 아래와 같은 에러메세지가 출력되구요. { "message" : "$not cannot have a regex", "ok" : 0, "code" : 2, "codeName" : "BadValue", "name" : "MongoError" }..
pip install pycrypto 로 설치할 때 나타나는 오류 legacy-install-failure 아주 간단하게 pycrypto 설치해서 사용하는 방법. pip install pycrypto 대신에, pip install pycryptodome 로 설치하면됨. pip install pycryptodome 설치가 완료되면 파이썬을 열어 Crpyto가 잘 불러져오는지 확인하면 끝!
pip install를 통해 라이브러리를 설치하려고하니 위와 같은 에러가 떴습니다. ValueError: Unable to find resource t64.exe in package pip._vendor.distlib notice에 적혀있는대로 python -m pip install --upgrade pip 명령어를 입력해도 에러는 동일하게 발생합니다. 이때 오류를 해결하기 위해서, 아래 링크에서 오른쪽마우스 클릭 -> "다른 이름으로 링크 저장..."을 누르고 get-pip.py라는 이름으로 저장합니다. (아래 링크는 get-pip.py의 소스코드가 들어있는 페이지입니다) https://bootstrap.pypa.io/get-pip.py 저장을 완료했다면 , cmd를 열어 아래와 같이 get-pip.p..
1. 가장 간단한 방법은 런서버를 할 때 --insecure를 붙이는 것입니다. (보안 모드를 사용하지 않음) python manage.py runserver --insecure 2. 보안 모드에서 DEBUG = FALSE를 적용했을 때 static 파일들을 불러오는 방법도 있습니다. settings.py에 아래와 같이 코드를 붙여넣고, 기존의 STATIC 관련 코드들은 주석처리 합니다. import os #STATIC = os.path.join(BASE_DIR, 'static') #STATIC_ROOT = '' #STATICFILES_DIRS = ( os.path.join('static'), ) STATIC_URL = '/static/' MEDIA_URL = '/media/' if DEBUG: STAT..
1. 짝수인덱스만 삭제 (=홀수 인덱스인 원소들만 남기기) 아래처럼 리스트에 1~10까지의 숫자를 넣어놓고 del data[1::2] (1번째 인덱스부터, 2만큼의 간격마다 삭제)를 해주면 됩니다 data = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] del data[1::2] int가 아닌 list of string이여도 가능합니다. 2. 홀수인덱스만 삭제 (=짝수 인덱스인 원소들만 남기기) 홀수만 삭제하는 경우, del data[0::2] (0번째 인덱스부터, 2만큼의 간격마다 삭제)를 해주면 됩니다
개발환경/Server
Ubuntu 18.04에서 CPU 사용율 확인법 Ubuntu 18.04에서 명령어 top 을 입력했을 때, CPU가 얼마나 사용되고 있는지 확인할 수 있습니다. 배포한 웹사이트에서 접속자가 몰려 서버 CPU 사용량이 급격히 증가했을 때, load average를 통해 웹접속자를 대기 시키는 등의 예외처리가 가능합니다. Load Average란? 제가 위에 스크린샷 찍어놓은 사진을 보면 아래와 같이 3개의 load average값들이 적혀있는데요 load average: 0.15, 0.17, 0.17 첫번째 0.15는 1분 동안의 평균 CPU load, 두번째 0.17은 5분 동안의 평균 CPU load, 세번째 0.17은 15분 동안의 평균 CPU load를 뜻합니다. 실시간적으로는 첫번째 값 CPU l..
matplotlib 그래프 만들 때 한글 폰트를 찾는데 에러가 났을 경우 [matplotlib font family error] findfont: Font family ['NanumGothic'] not found. Falling back to DejaVu Sans. /usr/share/fonts/truetype/ 안에 원하는 한글폰트 파일을 넣어주고, 아래처럼 캐시삭제를 해준 뒤, matplotlib 코드를 재실행하면 한글이 정상적으로 출력됩니당 // 캐시 삭제 fc-cache -f -v rm -rf ~/.cache/matplotlib/fontlist-v330.json
보안/Research
Introduction beautifulsoup4은 제가 한때 웹 크롤링 공부하면서 정말 자주 애용했던 패키지인데요. 근데 딱 o 한 알파벳만 빠진 채로 패키지 하나가 PyPI(파이썬 패키지 저장소)에 올라왔습니다. https://pypi.org/ PyPI · The Python Package Index The Python Package Index (PyPI) is a repository of software for the Python programming language. pypi.org 파이썬 악성패키지 분석은 어느날 CTF 문제에서 출몰한 적이 있어서 갑자기 관심을 가지게 되었습니다. 보통 beautifulsoup4 를 설치할 때 아래와 같은 명령어를 입력합니다. $ pip install beaut..
보안/CTF
Introduction Category : Web Difficulty : easy Description : There's a new trend of an application that generates a spooky name for you. Users of that application later discovered that their real names were also magically changed, causing havoc in their life. Could you help bring down this application? Code Analysis application/blueprints/routes.py 파일의 코드를 보면 GET 파라미터 들어온 text 값을 spookify 함수로 넘기고..