Tech

Tech/GitHub

GitHub Codespaces

개요 Github Codespaces란 Github에서 제공하는 클라우드 개발환경이다. 동작방식은 기본적으로 Docker 컨테이너 위에 Ubuntu 이미지로 생성된다. 또한 접속 방식은 브라우저, VSCode, JetBrains Gateway, Github CLI 등이 있다. 요금 정책 계정별 요금 정책 사양에 따른 요금 부과 정책 생성 방법 이미 생성되었거나 생성할 repository에서 Codespaces 카테고리를 선택한 후, Create codespace on main 버튼을 클릭한다. Codespaces 관리 Stop codespace를 통해 컨테이너를 중지시킬 수 있다. Change machine type을 통해 컨테이너의 성능을 변경시킬 수 있다. 참조 https://docs.github.c..

Tech/Docker

docker에 ubuntu 설치 및 nginx, php, mysql 웹 서버 개발환경 세팅

우선 나의 경우, mac 환경에서 docker를 이용해서 ubuntu 22.04를 띄우고, 이 위에서 개발 환경을 세팅했다. 기본적인 docker 명령어 docker images 확인 docker images -a docker image 삭제 docker rmi 'image name' 실행중인 컨테이너 확인 docker ps -a 컨테이너 실행 docker start 컨테이너ID 컨테이너 중지 docker container stop 'container ID' 컨테이너 삭제 docker container rm 'container id' 컨테이너 접속 docker exec -it 컨테이너ID /bin/bash 호스트-컨테이너 작업 폴더 복사 docker cp 컨테이너이름:컨테이너내경로 호스트내경로 그럼 먼저..

Tech/GitHub

Github에서 Repository를 Duplicate 하는 방법

우선 클론하고자 하는 깃 리포지토리에 bare 옵션을 붙여서 클론해준다. $ git clone --bare https://github.com/krafton-jungle/rbtree-lab.git 여기서 bare 옵션은 GIT repository 를 bare 로 만든다. 즉 를 생성하고 /.git 을 생성하는 대신에 자체를 $GIT_DIR 로 만든다. 그리고 해당 깃 디렉토리로 이동하여 mirror 옵션을 사용하여 원격 저장소의 복사본을 만든다. 이는 --bare 옵션을 포함한다. $ cd ${project_name}.git # 아래 repository는 GitHub미리 만들어 놓아야 함 $ git push --mirror https://github.com/${깃헙ID}/rbtree-lab.git 그리고 ..

Tech/Flask

Flask 기초

flask 시작 코드 from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'HOME' if __name__ == '__main__': app.run('0.0.0.0', port=5001, debug=True) 기본 폴더구조 Flask 서버를 만들때는 프로젝트 폴더 안에 static, templates 폴더와 app.py 를 먼저 만들어 시작한다. HTML 파일 불러오기 templates 폴더는 HTML 파일을 담아두고 불러오는 역할을 한다. 여기에 index.html을 만들어준다. app.py 파일에서 html 파일을 불러올 수 있다. 이때 flask framework에 이미 구현되어 있는 내장함수 render_..

Tech/Web Scrapping

beautifulsoup 사용법

select()는 조건을 만족하는 모든 요소를 리스트에 담아 반환한다. select_one()은 그 중에 가장 위에 나오는 요소를 반환한다. 선택자는 CSS를 작성할 때 사용하는 것과 똑같이 사용하면 된다. # 선택자를 사용하는 방법 -> copy selector soup.select('태그명') soup.select('.클래스명') soup.select('#아이디명') # 위를 조금 더 구체화해서 어떤 경로를 거쳐 요소를 찾아야 되는지 명시할 수 있다. soup.select('상위태그명 > 하위태그명 > 하위태그명') soup.select('상위태그명.클래스명 > 하위태그명.클래스명') # 여러개의 li 태그를 가질 때, 몇 번째 li 인지를 부모의 몇 번째 자식인지 명시해서 지정할 수 있다. soup..

Tech/배포

리눅스 자체 포트포워딩 작동 + nohup 설정

포트포워딩 룰 sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000 이렇게 입력하면 외부에서 오는 요청을 자동으로 우리 서버내에 있는 5000번 포트로 전달하게 하는 포트포워딩이 작동한다. nohup 설정 Git bash 또는 맥의 터미널을 종료하면 프로세스가 종료되면서 서버가 돌아가지 않는다. 이때 우리가 원격접속을 끊어도 서버가 계속 동작하게 만들어본다. 원격 접속을 종료하더라도 서버가 계속 돌아가게 하기 nohup python app.py & 서버 강제종료하는 방법 # 아래 명령어로 미리 pid 값(프로세스 번호)을 본다 ps -ef | grep 'app.py' # 아래 명령어로 특정 프로세스를 ..

Tech/배포

EC2에서 파이썬 파일 실행

python이라는 명령어로 3버전 이상을 실행하도록 하는 명령어 ubuntu@ip:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 update-alternatives: using /usr/bin/python3 to provide /usr/bin/python (python) in auto mode 패키지 설치를 도와줄 패키지, pip 설치하기 # pip3 설치 sudo apt-get update sudo apt-get install -y python3-pip # 버전 확인 pip3 --version # pip3 대신 pip 라고 입력하기 위한 명령어 # 아래 명령어를 입력하면 pip 라고 쳐도 pip3를 작동시..

Tech/Web Scrapping

다음 영화 web scrapping 하여 mongDB에 저장

web scrapping with pymongo import requests from bs4 import BeautifulSoup from pymongo import MongoClient client = MongoClient('localhost', 27017) db = client.daummovie def insert_all(): # URL을 읽어서 HTML을 받아온다. headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"} data = requests.get('https://movie.daum.ne..

Tech/Web Scrapping

Web Scrapping 이란?

정의 웹 스크래핑은 웹 페이지에서 우리가 원하는 부분의 데이터를 수집해오는 것을 뜻한다. 한국에서는 crawling 이라는 용어로 혼용해서 사용하는 경우가 많다. crawling은 원래 자동화하여 주기적으로 웹 상에서 페이지들을 돌아다니며 분류/ 색인하고 업데이트된 부분을 찾는 등의 일을 하는 것을 뜻한다. 따라서 web scrapping이라고 검색해야 페이지 추출에 대한 결과가 나올 것이다. https://dzone.com/articles/web-scraping-vs-web-crawling-whats-the-difference Web Scraping vs Web Crawling: What’s the Difference? - DZone In this article, read an explanation o..

Tech/Web Scrapping

Selenium 활용법

네이버 접속 후 로그인 버튼 클릭 + 검색 창에 검색 단어 입력 후 키보드 엔터 누르기 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys browser = webdriver.Chrome() browser.get("https://www.naver.com") elem = browser.find_element(By.CLASS_NAME, "MyView-module__link_login___HpHMW") elem.click() broswer.back() browser.forward() elem = browser.find_element(By.ID,..

kimjingyu
'Tech' 카테고리의 글 목록