본문 바로가기

개발

(68)
SSH SSH(Secure Shell)은 네트워크, 운영 체제 및 구성을 관리한다. ssh 프로토콜은 암호화를 사용하여 클라이언트와 서버 사이의 연결을 보호한다. 개인키-공개키 방식으로 중간에 암호를 해킹당해도 원본을 알 수 없고 강력한 인증 방식을 지원하기 때문에 보안적으로 우수한 프로토콜. 보안적으로 취약했던 기존 rsh, ftp, rlogin, telnet 등을 대체하기 위해 설계됨. 기존의 유닉스 시스템 셸에 원격 접속하기 위해 사용하던 텔넷은 암호화 X. 기본 22번 port를 사용해서 네트워크로 연결되어 다른 리눅스 서버로 접속할 때 사용한다. ssh 서버 실행 파일 : /etc/sbin/sshd ssh 클라이언트 실행 파일 : /etc/bin/ssh 원격 서버에 ssh 프로토콜을 사용하여 터미널에 ..
30일이 지나면 엘라스틱서치 인덱스 삭제하기 #!/usr/bin bash ELASTICSEARCH="http://127.0.0.1:9200" ONEMONTHAGO=$(date --date="30 days ago" +%Y-%m-%d) ONEMONTHAGO2=$(date --date="30 days ago" +%Y.%m.%d) curl -X DELETE "$ELASTICSEARCH/*$ONEMONTHAGO" curl -X DELETE "$ELASTICSEARCH/*$ONEMONTHAGO2" 위 코드는 30일이 지나면 엘라스틱서치 인덱스를 삭제하는 쉘 스크립트다. 30일이 지난 인덱스를 모두 삭제하는 방법은 #!/usr/bin bash # Defaults ELASTICSEARCH="http://127.0.0.1:9200" DATE=$(date --dat..
flask+uwsgi+nginx 로컬에 띄우기 useradd www-data 로 유저를 추가한다. passwd user 로 비밀번호를 설정한다. usermod -a -G www-data www-data (앞에가 그룹, 뒤에가 유저다) www-data 유저와 그룹을 만드는 이유는 www-data 유저와 그룹이 nginx 소켓 파일을 소유하기 때문이다. chmod -R 777 [디렉토리] 로 작업 폴더의 권한을 그룹 유저와 다른 유저에게도 디렉토리 안의 파일에 읽기, 쓰기, 실행 권한까지 준다. nginx conf 파일을 수정해준다. server { location / { include uwsgi_params; } location /hello { include uwsgi_params; } } 같이 사이트의 하위 주소를 명기한다. 다음은 Flask, uW..
GCP 버킷 안의 파일 GCP 주피터 노트북에서 unzip 하기 보통 파이썬으로 통용되는 방법들이 안 되서 좀 헤맸다;; 하지만 웬만하면 로컬 환경에서 unzip 하고 올리십시오... 아래 코드 25G짜리 zip 파일 하나 푸는데 체감상 25분 걸림,, 그리고 반디집 같은 프로그램은 무료인데 GCP 노트북 인스턴스는 시간당 과금..ㅎ from google.cloud import storage from zipfile import ZipFile from zipfile import is_zipfile import io def zipextract(bucketname, zipfilename_with_path): storage_client = storage.Client() bucket = storage_client.get_bucket(bucketname) destination_..
GCP 주피터 노트북 인스턴스로 GCP 버킷의 mp4 비디오 읽기 먼저 버킷을 공개 상태로 만들어야 한다. https://cloud.google.com/storage/docs/access-control/making-data-public 데이터 공개 | Cloud Storage | Google Cloud 의견 보내기 데이터 공개 이 페이지에서는 공개 인터넷의 모든 사용자가 내 소유의 객체를 읽을 수 있도록 하는 방법을 소개합니다. 공개된 데이터에 액세스하는 방법에 대해서는 공용 데이터 cloud.google.com 참고. 이걸 바꾸면 버킷 - 한 파일을 누르면 다음과 같이 URL이 뜨는데 여기서 Public URL의 앞부분을 가져오면 된다. from google.cloud import storage bucket = storage.Client().get_bucket('버킷..
파이썬으로 파일 부분 이름 한번에 바꾸기 import os for (path, dir, files) in os.walk(path): for name in files: ano = name.split('_')[n] newname = '_'.join(name.split('_')[:n])+'_normal_'+ '_'.join(name.split('_')[n:]) file_oldname = str(path)+str(name) file_newname_newfile = str(path)+str(newname) os.rename(file_oldname, file_newname_newfile) 파일 이름이 다음처럼 긴 경로의 파일 중 datefight02 부분의 이름을 normal로 한번에 바꿔줘야 했다. 찾아보다가 내게 맞는 방법으로 변경. /content/..
코랩 프로+, colab pro plus 요금제 사용기 프로젝트용 모델을 학습시키는데 램이 계속 터졌다. 그래서 GCP 노트북 인스턴스를 만들고 하려 했는데 진짜 금액이 만만찮았다.. 코랩 프로에서 제공하는 것보다 더 좋은 GPU 쓰려면 월 3600불인가? 그랬다. 근데 오늘 우연히 코랩+ 가 출시된 것을 보게 되었다!! 검색 결과도 별로 없어 포스팅을 작성한다. 더 빠른 GPU와 더 넉넉한 메모리, 긴 런타임, 백그라운드 실행을 제공한다. GPU는 테슬라 V100인데, GCP 노트북 인스턴스에서 램 60GB에 얘 2대 맞추면 3000달러에 육박하는 후덜덜한 금액이 나온다. 30GB램에 같은 사양의 GPU 1대로 하면 한달 1500달러. 램은 51GB 제공하는데, 나쁘지 않은 것 같다. (나중에 보니 GPU 사용 안해야 51GB 주고 GPU 사용하면 13G인..
Mongodb에서 특정한 문자열 검색해서 결과물 리턴하기 find나 find_one에서 어떻게 특정 문자열을 contain한 결과물을 가져올까? 했는데 정규식을 사용하면 된다. import re text='주식캔 연어왈 연어좋아' title = '좋아' p = re.compile(f'.*{title}.*') m = p.match(text) m.group() >>> 주식캔 연어왈 연어좋아 title이라는 변수가 포함되면 text를 반환하는 정규식 코드다. food_col = db.collection # pymongo 사용 def searchbytitle(title): foodlist = [] findfood = food_col.find({"title":{'$regex':f'.*{title}.*'}}) for f in findfood: foodlist.append..