반응형

오라클 클라우드 인프라스트럭쳐(Oracle Cloud Infrastructure) 세팅하기

 

0. 서론

정말 간만의 포스팅이긴 한데... 요 근래 AWS가 정책이 매우 괴랄하게 변했다..

25년 7월 15일에 엄청난 개악(?)을 단행했는데...

  1. 기간 반토막: 12개월 월 750시간 프리티어를 주던 정책을 6개월로 줄임
  2. 대신 용돈 줌: 새로 가입하면 $200 크레딧(현금 포인트)을 주고 "이걸로 6개월 동안 마음껏 써봐!"라는 식으로 바뀜
  3. 거기다가 요새는 가장 기본 프리티어인 t2.micro 조차도 용량을 수정하기 매우 어렵게 완전히 꽁꽁 숨겨놨다.

덕분에 나름 꼼꼼히 보면서 다시 만들었어도, 기본 8gb 용량이라 제대로 아나콘다 하나 설치를 못한다...

그래서 인스턴스 뿌시고, 다시 만들어봤더니... 이야 한달만에 크레딧 다 쓰고 유료 전환하라고 메일이 와서... 이번에 그냥 다른 대안을 찾아보다가 오라클 클라우드(OCI)를 선택했다.

OCI는 하드 총량도 200Gb나 주고, 기본 성능도 t2.micro보다는 좋다고하고, 무엇보다 "평생 무료"이다.

거기에 더불어서 꽤나 좋은 '암페어' 모델도 평생 무료다(그래서 이건 진짜 매번 생성불가에다가, 이미 다른 '매크로'들이 호시탐탐 노리고 있다)

일년마다 프리티어를 새로 만드는 짓거리를 하지 않아도 되는 셈...

그러나 사람이란게 한번 익숙해지면, 새로운 것을 받아들이는덴 참 시간이 걸리고 어려운지라, 오늘 복습도 할겸 한번 끄적거려본다.

 

1. 회원가입하기

일단 회원가입은 기본적인 거니까 쭉쭉 진행을 하면 되는데... 여기서 제일 중요한게 회원가입단계에서 바로 '리전'을 선택하게 되어있다.

그리고 aws랑 다르게 oci는 한번 리전을 설정하면 유료로 돌리기 전에는 바꿀 수 없다.

그래서 '서울'이나 '춘천'을 노리게 되는데... 서울은 진짜 너무 빡세서 리스트에조차 없다. '춘천'도 빡빡하긴 마찬가지...

만약 서울/춘천 둘 다 안되면 적어도 Japan East (Tokyo)Japan West (Osaka)라도 노리자..

이렇게 회원가입을 하고 나면, 의외로 회원가입에 시간이 꽤나 걸린다. 최장 24시간까지 걸린다는 흉흉한 소문도 들어봤고...

내 경우엔 한 10분? 로딩 화면에 있다가 15분 정도 시간 더 걸릴거라는 페이지로 넘어가며 '메일'을 보냈다고 알람이 왔다.

실제로 메일을 받았으면 내 계정은 잘 만들어 진 셈.

그리고 여기는 따로 mfa를 설정하는게 아니라 아예 가입하면서 mfa를 설정할 수 밖에 없게 만들어 놓는다.

그리고.. 여기 프리티어지만, 진짜 무서운게 aws보다 더 빡빡하게 신용카드 결제 가능 여부를 관리한다는 점이다.. 매달 확인한다는 '썰'이 있는데...

일단 프리티어니까 적당히 잘 했으면 이제 인스턴스를 만들러 가보자.

 

2. 인스턴스 만들기

아... 여기서부터 꽤나 힘들다. aws처럼 이 친구들도 엄청나게 복잡하게 화면을 구성해 놨기 때문...

게다가 여전히 aws 처럼 수시로 ui를 바꿔 댈 테니 여기서는 스크린샷은 최대한 자제하고 '느낌'으로 전달하려고한다.

인스턴스 만들때 의외로 단계가 꽤나 된다?는 느낌을 받았다

 

1] Basic Information
 1. 이름 및 위치 (Name & Placement)
 Name: 원하는 대로 (예: main-server)
 Placement: 기본값 유지 (AD-1 하나밖에 없을 겁니다)

 2. 이미지 및 셰입 (Image and Shape)
 이 부분을 반드시 수정(Edit)해야 합니다.

 - Image (운영체제):
 기본값: Oracle Linux
 추천: Canonical Ubuntu 24.04.

 - Shape (하드웨어):
 기본값: VM.M.Standard.E2.1.Micro (aws에서의 t2.micro 모델)
 일단 기본값 자체도 그다지 나쁘지는 않다고 한다.(심지어 내가 돌리려는게 꽤나 큰 모델이나 프로젝트도 아니고...)
 그러나 ARM 프로세서로 OCPU: 4, Memory: 24GB까지 쓸 수 있는 하드웨어도 "평생 무료"라고 한다. 그래서 지금 이 인스턴스는 엄청난 인기! 그래서 한번에 생성은 거의 불가능하다. 보통 이 인스턴스를 쓰고 싶어도 일단 기본값으로 만들어 놓고(얘는 쉽게 생성됨) 거기서 매크로를 돌리는게 일반적이라고 하니...

일단 변경 방법은 다음과 같다.

  • Change Shape 클릭
  • Ampere 시리즈 선택 (ARM 프로세서)
  • VM.M.Standard.A1.Flex 체크
    -(여기서부턴 리스트에서 선택인지, 슬라이드 바가 나오는지는 '신비의 전설' 수준이라 명확하진 않지만 어찌되었든)
  • OCPU: 4 / Memory: 24 GB로 선택
  • Select Shape 클릭

당연히 나는 안만들어져서, 기본 마이크로로 만들었다.

2] 시큐리티
아무것도 건드리지 말것

3] 네트워킹 (Networking)
- vnic 이름 만들어주고(이건 나중에 바꿀 수도 있고.. 뭐 대충 아무렇게나..)

- Create new virtual cloud network 선택
아래쪽에 Automatically assing Public IPV4 address 가 체크되면 땡큐인데.. 오라클 홈페이지가 진짜 엄청나게 예민해서 비활성화 되는 경우도 있다. 안되면 나중에 수동으로 붙일 수 있으니 일단 넘어가기

아 그리고 aws랑 다르게 포트(80, 443 등) 여는 건 따로 설정해야 함..

- SSH 키 추가 (Add SSH keys)
당연히 너무나도 잘들 아실테지만.. 이거 잃어버리면 서버 못 들어갑니다.

Generate a key pair for me 선택 (기본값)
Save private key 버튼을 눌러서 .key 파일 다운로드.
public key도 받아도 상관은 없음..

4] 부트 볼륨 (Boot volume)
프리티어는 총 200GB까지 공짜!
근데 여기도 기본 50Gb?로 설정되어 있으니까
Specify a custom boot volume size 눌러서 100GB 정도로 넉넉하게 잡으면 될듯요. (200GB 다 쓰면 나중에 서버 하나 더 만들 때 용량 부족합니다. 뭐 만일을 위해서 좀 남겨두는거고.. 실상 100Gb도 충분하기도 하고...)

 

이렇게 다 세팅을 하고 나면, 리뷰?로 한번 모든 정보를 싹 보여주고 'Create'가 나오는데.. 그냥 마이크로 했으면 바로

Case A: "Provisioning" (주황색) 상태가 된다.

일 것이고, 욕심을 내서 암페어를 골랐다면, 인터넷 창 아래에 빨간 색으로 오류메시지 즉,

Case B: "Out of host capacity" 에러가 뜬다.

가 될 확률이 높죠.

Case B면, 그냥 속편하게 마이크로로 셰입 바꾸고 만드는게 속 편합니다.

 

이렇게 해서 인스턴스를 만들었습니다!

 

 

2. 퍼블릭 아이피 붙이기

자, 느낌적인 느낌으로 설명드릴께요.

방금 인스턴스를 만들었죠? 그러면 바로 인스턴스 창이 브라우저에 뜰 겁니다.

바로 이 인스턴스 창에서 파란색 링크된 인스턴스 클릭(이 부분은 생략될 수도 있습니다. 만들어지고 바로 '디테일'창으로 들어와졌다면요)

인스턴스 명 아래 여러 탭이 보이는데, 그중에 네트워킹 탭 클릭

스크롤 내려서 Attached VNICs 에서 name 아래 파란 링크 클릭

상단 탭에서 'IP administration'클릭

하단 표에서 오른쪽 끝 점 세개 클릭 Edit

Ephemeral Public IP 선택하고 Update 누르면 끝!

수 분 내로(거의 즉시?) 퍼블릭 아이피가 붙습니다.

 

자, 이제 퍼블릭 아이피도 얻었겠다, 일단 ssh로 접속해볼까요?

ssh -i "C:\Users\사용자명\Downloads\ssh-key-2026-01-30.key" ubuntu@"퍼블릭 IP 주소"

위 명령어를 복사해서 붙여넣되, [키파일경로] 부분만 실제 파일 경로로 바꿔주세요.
(팁: ssh -i 치고 한 칸 띄운 뒤, 다운로드 폴더에 있는 .key 파일을 터미널 창으로 드래그 앤 드롭하면 경로가 자동으로 입력됩니다.)

오라클 우분투의 기본 아이디는 ubuntu입니다. (opc 아닙니다.)

성공 신호
처음 접속하면 "Are you sure you want to continue connecting?" 이라고 물어봅니다.

yes 라고 타이핑하고 엔터 치세요.

ubuntu@"vnic 이름":~$ 라는 초록색 글씨가 뜨면 접속 성공입니다!

 

3. 포트개방

aws랑은 다르게 오라클은 조금 보안이 빡세서, 단계가 두개가 필요합니다.

1단계: 오라클 웹 콘솔 설정 (문 열기)

AWS의 Security Group 설정과 똑같습니다.

  • Networking 탭: 아까 그 인스턴스 상세 화면에서 중앙의 Networking 탭 클릭.
  • 표에서 Subnet이라 써있고, 그 오른쪽에 파란색으로 링크 된 부분 클릭
  • 상단 탭에서 시큐리티 클릭
  • 시큐리티 리스트가 나오는데, 여기서 디폴트 시큐리티 리스트(파란색 링크) 클릭
  • 상단 탭에서 Security rules클릭
  • Ingress rules가 나오는데, 여기서 Add ingress rules 눌러서
  • Source CIDR: 0.0.0.0/0 (전 세계 허용)
  • Destination Port Range: 80,443,8080,8888,8501,5000
  • 두 개만 써주고 나머지는 그냥 디폴트 값으로 둔 상태에서
  • Add Ingress Rules 클릭


2단계: 서버 내부 설정

이게 제일 중요합니다.

오라클 우분투 이미지는 기본적으로 iptables라는 빡센 방화벽이 켜져 있어서, 위에서 열어도 접속이 안 됩니다.

그러면 어떻게 해야하나... 하면 그냥 터미널에서 쿨하게 방화벽 규칙을 싹 밀어버리고(허용하고) 저장합시다. (어차피 앞단의 오라클 콘솔이 막아주니까요.)

아래 명령어 3줄을 한 줄씩 복사해서 붙여넣으세요.

# 1. 현재 걸려있는 모든 차단 규칙 삭제 (프리패스)
sudo iptables -F

# 2. 앞으로의 모든 접속 허용으로 변경
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

# 3. 재부팅해도 초기화 안 되게 저장 (이거 안 하면 껐다 켜면 다시 막힘)
sudo netfilter-persistent save
끝났습니다.

이렇게 포트도 다 열었구요~

 

4. 이제 aws처럼 웹서버로 씁시다~

이젠, 이 블로그의 다른 포스팅에서처럼 아나콘다를 깔고, 주피터 서버를 만들면 이제 나만의 작은 주피터 서버가 생성되는 것이죠.

그 사이에 좀 많은 변화가 있어서 이참에 조금 정리해 두려고 합니다.

FTP 포트

일단 과거랑 가장 큰 차이는 FTP 포트(21)가 딱히 안전성이 좋지 않아서 굳이 사용하지 않을거라는 점? 그래서 위에서 포트개방때도 딱히 안열었었죠.

아나콘다 설치

그리고 아나콘다 설치는 https://omnil.tistory.com/72이 링크에서 자세히 설명하고 있습니다.

요 근래 아나콘다 설치 후 source ~/.bashrc해도 기본 패스가 잘 안잡히는 경우가 있는데, 이때는

  • export PATH=~/anaconda3/bin:$PATH
  • conda init
  • source ~/.bashrc

한번 더 강제로 돌려주면 잘 돌아갑니다.

주피터 서버

이게 사실상 제일 크게 변한 부분입니다.

과거에는 주피터 서버로 모든걸 관리했는데, 이제 이 부분이 주피터 랩으로 넘어가면서 명령어에 약간의 변화가 생겼습니다.

  • jupyter lab --generate-config
    로 config 파일 만들어주고요
  • cd .jupyter
    로 이동해서
  • vi jupyter_lab_config.py
    config 파일 열고
  • i 눌러서 insert모드 들어가서 enter 두번 치고
    c.ServerApp.ip = '0.0.0.0'
    c.ServerApp.port = 8888
    c.ServerApp.open_browser = False
    c.ServerApp.notebook_dir = '/home/ubuntu/'
    c.ServerApp.allow_remote_access = True
    이렇게 써주고, esc 눌러준 다음 :wq 눌러서 저장하고 나와주시면 됩니다.
  • jupyter lab password
    이걸로 패스워드 진짜 쉽게 설정할 수 있구요
  • screen -S jupyter
    jupyter notebook
    ctrl+a+d
    로 스크린 켜고, 웹 브라우저에서 '퍼블릭 IP:8888'로 접속하면 바로 주피터 노트북이 열릴겁니다.

 

5. 마무리

네, 이렇게 나름 쉽다면 쉽게? OCI를 설정해봤습니다.

평생 무료란게 정말 마음에 드네요.

반응형
반응형

처음으로 지인의 부탁을 받아 shell 스크립트를 짜 보았습니다.

csh로 짰는데, 생각보다 자료가 적어서 크게 당황하였고, 대부분의 자료는 영어였으며, 프로그래밍의 다양성을 존중하는 언어인지 같은 상황에 대해 10가지 문서에서 10가지 다른 프로그래밍 방식을 사용하더군요.

그리고 기본적인 내용을 한번 정리해 보기로 하였습니다.

전에도 한번 했었는데, 워낙 생소한 분야라 한번 익숙해졌다가도 다시 초기화되어 저도 기록을 남깁니다.

작성해본 스크립트는 씨 쉘(csh) 기준입니다.

  • csh, bash 차이에 따라서 프로그래밍 언어도 차이가 있는 것 같습니다.

0) 셸 스크립트 작성 및 실행법

파일 최상단에

#!/bin/csh
#
# comment

입력 후 하단에 쉘 스크립트를 작성해주시면 됩니다.
파일명의 확장자는 .csh이며, mac에서 사용시 그냥 터미널에서 csh 명령어 이후에 파일이름을 써주시면 스크립트 파일이 실행됩니다.
여기서 최상단 문장을 제외한 #으로 시작하는 문장은 전부 주석입니다.

1) 기본적인 변수선언 및 변수 사용

set var = "Hello"

echo $var

2) 쉘스크립트 실행 후 결과값을 변수에 저장

set ls = `ls`

echo $ls

여기서 ` 부분은 작은 따옴표가 아니라 그레이브 혹은 백틱 이라는 탭 키 위에 있는 문자입니다.
이 그레이브로 쌓인 문장은 쉘에서 실행된 뒤 그 결과를 반환하는 약간의 '부분실행' 명령어 같은 것입니다.
여기서는 배쉬(bash) 명령어인 ls로 현재 디렉토리의 파일 리스트를 읽어온 뒤 그것을 다시 ls라는 변수에 저장하였습니다.

3) 파이프 명령어(pipe operation, |)

|는 엔터 근처에 있는 \표시 혹은 백슬래시기호를 시프트 키를 누른 채 누르면 써지는 파이프 기호입니다.
csh에서 이 파이프 기호는 왼쪽 명령의 결과를 오른쪽 명령의 인풋으로 사용한다는 뜻입니다.

4) 파일 출력 명령어 >

> 는 파일을 출력하라는 명령어이며, 왼쪽의 결과를 오른쪽에 쓰는 파일 이름으로 저장합니다,
예를 들어
echo "Hi" > hi.txt
라고하면 hi.txt라는 파일에 Hi가 입력된 채로 파일이 생성됩니다.

5) foreach

사실 요새는 for 보다는 foreach 같이 내부 요소를 순환하는 명령이 사용하기 더 편합니다. (직접적으로 수의 증감이 필요한 경우 제외하고)
csh에서 foreach명령문의 형태는 아래와 같습니다.

foreach var1 ( $var2 )

    echo $var1

end

즉, var2에 저장된 요소들을 하나씩 var1에 저장하며 for문을 도는 것입니다.
여기서는 단순히 출력만을 합니다.
조금 더 활용하면

foreach var1 ( `명령` )

    echo $var1

end

와 같이 활용할 수도 있습니다. 직접적으로 명령을 입력해서 그 출력을 foreach의 순회 요소로 만드는 것이지요.

6) if

if (조건문) then

    실행문

endif

if는 위와 같은 구조로 구성됩니다.
여기서 조건문의 or와 and는 c와 같은 ||, && 연산자로 처리할 수 있습니다.
또한 같다 다르다의 명령 또한 c와 같은 ==, !=입니다.
추가적으로 텍스트 비교를 위해서는 단순히 $text1 == $text2라고 하면 "if: Expression syntax"에러를 내기 때문에 `echo $text1 ` == `echo $text2`의 변형기출이 필요합니다.

7) 파일 경로 조작

전체 파일 경로에서, 끝에 :t를 붙이면 확장자를 포함한 파일 명만 나오고, :r을 추가로 붙이면 확장자를 제외한 파일 명을 리턴해줍니다.
즉, "/dir1/test.txt":t:r을 써주시면 test만 출력됩니다.
더욱 자세한 정보는 이곳을 클릭해주세요.

8) awk

사실 awk만으로도 단순 쉘 스크립트 뿐만이 아닌 거의 독자적인 문서 리딩 명령이라고 할 수 있습니다.
그래서 awk를 사용하기 위해서도 복잡한데 기본적인 것들만 정리해보도록 하겠습니다.
기본적으로 awk는 문서를 순차적으로 한줄씩 읽어내려간다고 생각하시면 됩니다.
awk의 기본 형태는
awk '조건 및 실행문' 입력파일
입니다.
입력파일
이 부분에서 파일 입력을 받아서 조건 및 실행문에서 조건에 맞게 무언가를 실행하고 그것을 출력하는 함수입니다.
여기서 cat 입력파일 | awk '조건 및 실행문'으로 입력해도 됩니다. (cat은 단순히 입력파일의 내용을 보여주는 함수입니다.)
'조건 및 실행문'
이 안에서 awk에서 제공하는 조건문은 그냥 작성 됩니다. (같다/다르다 ==/!= 명령, or/and명령 ||/&& 사용가능)
그리고 built-in variables라고, 내장 변수와 함수들이 존재합니다.
$0 : 전체 라인
$1 : 첫번째 열
$2 .. $n : n번째 열
NR : 행 번호(가령 첫번째 행은 1)
length(변수) : 변수의 길이
이외에도 더 있지만, 가장 자주 쓰는 내장 변수들은 이정도입니다. 더 궁금하시면 구글링 해보시면 됩니다.
또한 정규표현식(regex)도 사용할 수 있습니다.
/정규표현식/로 사용이 가능하며, 시작 끝표현인 ^ $ 등 정규표현식에서 사용하는 방식은 전부 사용됩니다.
기본적으로 아무것도 써주지 않고 조건만 써주면 현재 라인 전체에서 찾습니다.
정규표현식에서 built-in variables를 사용하기 위해선 ~ 명령어로 '이 안에서 찾아라'라는 것을 명시해 주어야 합니다.
가령
/hello/, $0 == "hello", $0~/hello/
위의 세 명령어는 전부 같은 조건입니다.
NR==1, NR==5를 조건으로 입력하면 첫번째 행부터 5번째 행까지 출력합니다.
단순히 NR<6으로 작성할 수도 있습니다.
기본적으로 awk에서 조건에 맞는 결과는 바로 리턴해줍니다. 그러나 awk내에서 csh과 같은 프로그래밍 문법을 사용하려면 대괄호(brace, {})안에 작성하여야 합니다.
기본적으로 if (), print, printf, substr(), length(), for(;;)등 사용 가능합니다.
예시로
awk '$1=="test" {printf "%s %s",$3,substr($4,1,length($4)-1)}' test.txt
같이 사용하며
print안에서 연속해서 변수를 출력할경우 print $1,$2와 같이 콤마로 연결하여 쓰며, 여러 명령어를 동시에 사용할 땐 print $1 print $2와 같이 공백으로 연결해줍니다. 혹은 명시적으로 세미콜론으로 구분지어주기도 합니다.
print명령의 경우 뒤에 아무 것도 쓰지 않으면 전체 줄 출력, print $1과 같이 변수 입력하면 해당 변수 출력합니다.

8-1) awk 심화(문서 조건)

awk의 조건명령문 안에서 대괄호는 세미콜론으로 연결됩니다.
또한 BEGIN, END등의 명령으로 문서의 시작점과 끝점에서 특정하게 실행시킬 명령문을 지정할 수 있습니다.
awk 'BEGIN {print};END {print}' test.txt 명령은 처음 한줄과 끝 한줄만을 출력합니다.

8-2) awk 심화(변수 passing)

awk를 사용하다보면, csh의 변수를 awk에서 사용해야 할 때도 있고, 반대로 awk의 결과를 변수로 저장해야 할 경우도 있습니다.
사실 이 경우가 정말 검색에서 잘 안나오는데, 하나하나 설명드리겠습니다.

1) csh변수 -> awk변수

-v

가장 흔히 쓰는 방식은 -v 명령을 통하여 변수를 링크시키는 것입니다.
예를 들면 awk -v var=$ex_var 'print var'라는 명령에서 csh의 ex_var라는 변수를 awk 내부의 var라는 변수로 대입시켜 print하는 명령입니다.

'"${}"'

awk내에서 '"${변수이름}"'식으로 shell variable을 awk내에서 사용 가능합니다.
2) awk변수 -> csh변수
이게 진짜 아무데도 안나오고, csh에 맞게 설명되어있는 부분이 없습니다.
인터넷에 declare, source, eval 이런 명령어들을 사용하는데, 정말 단순합니다.

set var = `awk '{print}' test.txt`

echo $var
var = $(awk 'NR>5 {print}' test.txt)

echo $var

이렇게 하면, test.txt에 쓰여져 있는 것들이 print로 출력되며, 이 결과가 var라는 csh변수에 저장되고, 이것을 echo가 출력하게 됩니다.

9) 기타 shell script 명령어들

1) for

for i in {start..end...step}
do
    내용
done

2) foreach

foreach i ( 1 2 3 4 5 )
    내용
end

3) if

if (condition) then
endif
if [condition] then
elif [condition] then
else
fi

만약 더 사용하게되며 추가적으로 알게되는 내용은 실시간으로 업데이트 예정입니다.

반응형

'Software > Shell script' 카테고리의 다른 글

[csh] data extractor  (0) 2020.01.19
반응형
#!/bin/csh
#
# data extractor
#

set lat = "60 22.77700N"
set lon = "42 54.63700W"

foreach file ( `ls` )
   echo $file
   set clat = `awk '$1=="Latitude" {printf "%s %s",$3,substr($4,1,length($4)-1)}' $file`
   set clon = `awk '$1=="Longitude" {printf "%s %s",$3,substr($4,1,length($4)-1)}' $file`
   # set clat = `cat $file | awk '$1=="Latitude" {printf "%s %s",$3,substr($4,1,length($4)-1)}'`
   # set clon = `cat $file | awk '$1=="Longitude" {printf "%s %s",$3,substr($4,1,length($4)-1)}'`
   if (`echo $lat` == `echo $clat` && `echo $lon` == `echo $clon`) then
      set sl = `cat $file | awk '{if (NR>40 && $1=="//") print NR}'`
      # set sl = `cat $file | awk '{if (NR>40 && $1~/\/\//) print NR}'`
      awk -v sl=$sl 'NR>sl {print}' $file > $file:t:r_ext.txt
      # cat $file | awk -v sl=$sl 'NR>sl {print}' > $file:t:r_ext.txt
   endif
end
반응형

'Software > Shell script' 카테고리의 다른 글

[Linux/shell/bash/csh] shell 스크립트 튜토리얼  (0) 2020.01.20
반응형

[AWS/Ubuntu/Linux/Anaconda/Selenium] aws에서 작동하는 selenium 패키지를 활용한 python 실행 파일 만들기

 

aws에서 selenium 패키지를 활용하여 웹 크롤링 혹은 스크래핑을 진행하는 데 있어 정말 여러가지 오류들이 있어서, 이참에 아예 한번 싹 정리해봅니다.

 

아예 완전히 aws 인스턴스를 처음 만들었다고 가정합니다.

관련 페이지: https://omnil.tistory.com/67, https://omnil.tistory.com/144

 

1. 아나콘다 다운로드 및 설치

- 관련페이지의 설명과 같이 Anaconda3-2019.10-Linux-x86_64.sh 이 부분만 원하는 버전으로 바꿔주시면 됩니다.

wget https://repo.continuum.io/archive/Anaconda3-2019.10-Linux-x86_64.sh && sh Anaconda3-2019.10-Linux-x86_64.sh

 

2. 배쉬 리프레시 및 설치파일 제거

source ~/.bashrc && rm Anaconda3-2019.10-Linux-x86_64.sh

 

3. 새 폴더 생성 및 이동

mkdir sandbox && cd sandbox

 

4. unzip과 chromium-browser설치

sudo apt update && sudo apt install unzip && sudo apt-get install -y chromium-browser

 

5. chromium-browser version확인

- 여기서 확인한 버전으로 크롬드라이버를 깔아주어야 합니다.

chromium-browser --version

 

6. (위에서 확인한 버전에 맞는) 크롬드라이버 다운로드, unzip, chromedriver 실행권한 변경 및 기본 path로 이동

- 위에서 확인한 버전에 맞는 크롬드라이버 다운로드 링크는 >>여기<<서 확인하실 수 있습니다.
wget https://chromedriver.storage.googleapis.com/79.0.3945.36/chromedriver_linux64.zip

unzip chromedriver_linux64.zip && chmod +x chromedriver && sudo mv chromedriver /usr/bin/chromedriver && rm chromedriver_linux64.zip

 

7. 크롬드라이버 버전 확인

- chromium-browser --version과 동일해야 합니다.

chromedriver --version

 

8. 파이썬 파일에서 사용할 패키지 설치

pip install selenium telepot

 

9. 스크린 작동

- 스크린에 관련하여서는 >>페이지<< 하단에 자세하게 나와있습니다.
screen -S noti

 

10. 파이썬 파일 실행

- 파이썬 파일 이름은 watch_key.py입니다.

python watch_key.py

 

11. 파이썬 파일 내부에서 selenium을 사용할 경우에는 반드시 아래와 같은 옵션을 주고 드라이버를 실행하여야 합니다.

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(options=chrome_options)

반응형
반응형

[python/jupyter/notebook] 주피터 노트북으로 발표하기!

 

주피터 노트북으로 발표할 수 있는 방법은

1] nbviewer

  장점: 온라인으로 바로 보여줄 수 있음, 공유가 쉬움

  단점: 매 강의자료마다 gist로 publish해주어야함, 강의자료 공개, 인터넷 환경 필수

2] nbconvert

  장점: 다른 어떤 조작도 필요없이 커맨드 명령어 만으로 바로 강의자료를 만들어줌

  단점: 컨버팅에 인터넷 환경 필수, 각 강의자료마다 하나하나 변환해주어야 함

3] RISE

  장점: 인터넷 필요 없음, 주피터 노트북만 떠 있다면 바로 주피터를 슬라이드 쇼로 변환가능, 쇼 중간에 셀 실행 가능

  단점: 처음 설치가 까다로움

의 세가지가 있습니다.

그리고 그 전에 각 셀마다 슬라이드 타입을 설정해 주어야 합니다.

 

0] 슬라이드 타입 설정

1) 메뉴바 -> View -> Cell Toolbar -> Slideshow를 클릭

2) 그러면 각 셀 위에 오른쪽에 dropdown메뉴로 slide 타입을 설정할 수 있는 메뉴가 생성

3) 각 셀마다 슬라이드 쇼에서 어떻게 나타낼지를 결정해주면 된다.

  slide : 한 화면에 나올 slide

  sub-slide : 한 화면에 나오는 slide지만 위의 slide에 종속되어 있는 슬라이드. 아래화살표 버튼을 누르면 보여줄 수도 있지만, 바로 슬라이드를 넘김(>)으로 생략할 수도 있다.

  fragment : 한 슬라이드내에서 '나타나기'로 나타나는 조각을 만든다.

  skip : 노트북에서는 보이지만 슬라이드 화면에서 보이지 않는 셀로 만든다.

  notes : 발표시에 참고가능한 노트로 만든다.

4) 저장한다.

 

1] nbviewer

1) 주피터 노트북 파일(.ipynb)로 저장된 파일을 메모장으로 열어준다.

2) 나오는 코드를 그대로 전체 복사

3) gist.github.com에 접속

4) 새 글쓰기를 해서 관련 내용을 붙여넣은 뒤 'create public gist'를 눌러 새 글을 만든다.

5) 새 글이 써진 뒤 url에서 자기 아이디 뒤의 해시코드를 복사한다.

6) https://nbviewer.jupyter.org/에 접속한다.

7) 복사한 해시코드를 입력창에 붙여넣고 Go!를 누른다.

8) 발표자료가 바로 실행된다.

 

2] nbconvert

1) jupyter nbconvert <주피터파일>.ipynb --to slides --post serve 명령어를 터미널에서 입력한다.

2) 이 과정은 인터넷이 필요한 과정이다.

3) 만들어진 .html파일은 인터넷이 없어도 사용할 수 있다.

 

3] RISE

1) pip3 install jupyter_contrib_extensions

(or conda install -c conda-forge jupyter_contrib_nbextensions)

2) jupyter contrib nbextension install --user

3) pip3 install rise

(or conda install -c damianavila82 rise)

 * 혹은 jupyter-nbextension install rise --py --sys-prefix 도 가능

 * 만약 permission denied에러가 난다면 --sys-prefix옵션을 빼고 실행하면 된다.

4) jupyter nbextension enable rise --py --sys-prefix

 * 만약 permission denied에러가 난다면 --sys-prefix옵션을 빼고 실행하면 된다.

5) 메뉴바 아래 아이콘 버튼 중 맨 오른쪽에 차트모양의 'enter/exit RISE Slideshow'가 뜨면 성공! 이제 이 버튼으로 슬라이드쇼를 시작할 수 있다.

6) 단축키는 alt+r

반응형
반응형
반응형
반응형

[AWS/Linux] wget으로 아나콘다 깔기

1) https://repo.continuum.io/archive/ 에 접속한다

2) 원하는 아나콘다 버전을 찾는다.

3) 링크에서 오른쪽 클릭하여 "링크 주소 복사"를 누른다.

4) 명령 프롬프트에 $ wget [복사한 링크 주소]를 입력한다.

5) 다운 완료!

반응형
반응형

가장 흔하게 쓰는 프로그래밍 케이스(case) 타입

 

프로그래밍을 하다보면 정말 흔하게 카멜케이스니 스네이크케이스이니 하는 것들을 들어보게 된다.

 

블로그의 취지에 맞게 딱 맞게 한줄로 정리해본다.

 

Camel case(카멜 케이스) : testVariableOne

  기본적으로 두 단어를 합쳤을 때 두번째 단어의 첫 글자만 대문자로 바꾸는 것이 카멜케이스이지만, 세 단어를 합쳤을 때에는 첫번째 단어만 제외하고 나머지 단어들의 첫 글자를 대문자로 바꾸어 주는 것이 카멜케이스.


Snake case(스네이크 케이스) : test_variable_one

  두 단어 이상을 합칠 때 언더바(언더스코어)로 구분해준다.


Kebab case(케밥 케이스) : test-variable-one

  두 단어 이상을 합칠 때 바(대시)로 구분해준다. 꼬치에 꿰인 케밥 고기 모양이라 이 이름이 붙었다.


Pascal case(파스칼 케이스) : TestVariableOne

  카멜케이스와 비슷하지만, 첫 단어의 첫글자 까지 대문자로 바꾸어주는 것이 파스칼 케이스이다.


Upper case (with snake case) : TEST_VARIABLE_ONE

  프로그래밍에서 많이 쓰이는 케이스는 아니지만, 보통 상수 중에서 여러 단어가 합쳐진 경우에는 스네이크 케이스를 사용하여 연결하는 경우가 많다. (대문자를 그냥 다 붙여쓰는 경우는 정말 거의 없는 듯..)

반응형
반응형

Git bash에서 jupyter notebook사용하기

 

처음에 아나콘다를 깔 때, add system path ~하는, 체크박스가 위 아래 있는 창에서 위쪽 체크 해제된 체크박스를 체크해주면 시스템 패스에 anaconda가 잡히고, 여기서 바로 jupyter notebook을 사용할 수 있다.

 

[체크하면 빨간색 글씨가 되는데, 처음에는 다들 이거보고 무서워서 체크 안하는데 하는게 다른 프로그램에서 아나콘다 사용하기 좋다.]

반응형
반응형

[OpenCV] OpenCV 설치-3(Visual Studio와 연동)

 

저번까지는 각 프로그램들을 깔고 환경 설정하는 것까지만 하였습니다.

 

이번에는 두 프로그램을 연동해보겠습니다.

(엄밀히 말해서 OpenCV자체는 프로그램이라 보기 힘들지만..)

 

 

1) Visual Studio에서 새로 프로젝트를 하나 만들어줍니다.

2) 왼쪽의 "설치됨" 아래 항목인 "Visual C++" 아래 "Windows 데스크톱"을 선택해주시고 "Windows 데스크톱 마법사"를 선택해 주세요. 

3) 프로젝트 이름은 아무거나 정하셔도 상관없습니다.

4) 이름 정하는 곳 오른쪽 아래 "솔루션용 디렉터리 만들기"라는 체크박스가 있는데 해제해 주세요.

5) 이렇게 하고 확인을 누르면 새로 팝업이 하나 더 뜹니다. 여기서는 "미리 컴파일된 헤더"의 체크박스를 풀고 "빈 프로젝트"의 체크박스를 선택한 뒤 확인을 눌러줍니다.

6) "파일, 편집, 보기, 프로젝트..." 등이 있는 메뉴바 아래에 "x86"이라고 써진 부분을 "x64"로 고쳐줍니다.

7) 메뉴바에서 "프로젝트" -> "속성"을 눌러줍니다.

8) 왼쪽의 디렉터리 리스트에서 "구성 속성" -> "링커" -> "일반"을 선택한 뒤 "추가 라이브러리 디렉터리"항목을 누르면 아래 드롭다운으로 <편집>이라고 나옵니다. 이것을 누른 뒤 위의 창에다가 $(OPENCV_DIR)\x64\vc15\lib 이라고 입력한 뒤 확인을 눌러줍니다.

9) "링커" -> "입력"을 선택한 뒤에 "추가 종속성" 항목에 위와 같은 방법으로 opencv_world410d.lib을 입력합니다.

10) 8)~9)과정을 창 맨 왼쪽 위에 있는 "구성"에서 현재 "활성(Debug)"인 것을 클릭하여 "Release"로 바꾼 뒤 똑같이 진행합니다. 여기서는 "추가 종속성" 항목에 쓰는 내용이 opencv_world410d.lib 대신 opencv_world410.lib입니다.

 

 

이렇게하여 OpenCV와 Visual Studio를 연동하는 것까지 끝났습니다.

 

이후에는 OpenCV로 작성된 코드를 가지고 와서 소스코드로 만든 뒤 디버깅 혹은 실행하면 제대로 작동되는 것을 보실 수 있습니다.

 

 

Reference: OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝

반응형

'Software > OpenCV' 카테고리의 다른 글

[OpenCV] 설치하기-2(OpenCV 설치)  (0) 2019.09.04
[OpenCV] 설치하기-1(Visual Studio 2017 설치)  (2) 2019.09.03

+ Recent posts