전체 글
HTTP GET과 POST
HTTP GET과 POST GET과 POST는 가장 흔이 쓰이는 HTTP 메소드로 클라이언트에서 서버로 요청을 할 때 사용합니다. GET GET 방식은 서버로부터 정보를 조회하기 위해 설계된 메소드입니다. GET 방식은 요청하는 데이터가 URL에 담겨서 전송됩니다. (URL상 ?뒤 key, value로 쌍을 이루는 QueryString이 포함됨) URL상에 포함되서 전송하기 때문에 전송할 수 있는 데이터의 크기가 제한적입니다. 데이터가 URL에 노출이 되기 때문에 보안이 필요한 정보들은 GET방식이 적절하지 않습니다. POST POST 방식은 리소스 생성/변경을 위한 메소드이며 데이터가 HTTP body에 포함되어 전송됩니다. HTTP body는 길이의 제한없이 데이터를 전송할 수 있어 GET방식 보다는..
[React] Hook
Hook Hook은 React 16.8버전에 새로 추가되었습니다. Hook은 함수 컴포넌트에서 React 상태와 생명주기 기능을 연동 할 수 있게 해주는 함수입니다. Hook을 이용하여 Class 작성없이 함수형 컴포넌트에서도 상태를 관리할 수 있습니다. useState useState는 함수형 컴포넌트에서 가변적인 상태를 지닐 수 있도록 해주는 Hook입니다. import React, { useState } from "react"; const example = () => { const [value, setValue] = useState(0); const [text, setText] = useState("text"); return ( {value} setValue(value + 1)}>Click me )..
SSH 포트포워딩
SSH 포트포워딩 포트포워딩은 하나의 IP 주소와 포트 번호 결합의 통신 요청을 다른 곳으로 넘겨주는 네트워크 주소 변환(NAT)의 응용입니다. (위키피디아 참조) SSH 포트포워딩은 SSH 서버를 Proxy처럼 활용하여 터널링(tunneling)이라고도 부르며 통신시 SSH를 이용하기 때문에 통신내용이 암호화되어 전송됩니다. 로컬 포트포워딩 SSH Client에 리스닝 포트를 열어 SSH Server의 지정포트에 연결합니다. 아래는 로컬 8080번 포트를 Remote host의 localhost:80에 연결하는 명령어입니다. ssh -L 8080:localhost:80 $REMOTEHOST # 8080 -> $REMOTEHOST의 localhost:80 리모트 포트포워딩 SSH Server에 리스닝 포..
nmap 명령어
nmap 명령어 nmap은 호스트나 네트워크를 스캐닝 할 때 사용하는 port scanning tool입니다. nmap을 이용하여 방화벽이 오픈되어있는지 확인할 수 있습니다. 사용법 nmap -sT: TCP open scan -sS: TCP half open scan (세션을 성립하지 않음(스텔스 스캔)) -sF: TCP FIN scan (FIN 패킷을 이용한 스캔) -sN: TCP NULL scan (NULL 패킷을 이용한 스캔) -sX: TCP Xmas scan (FIN, PSH, URG 패킷을 이용한 스캔) -sP: ping을 이용한 스캔 -sU: UDP port scan -O: 대상 호스트의 운영체제 판별 -o: 스캔 결과를 텍스트파일로 저장 -F: Fast scan -sV: service ver..
[python] text hash 값 구하기
text hash 값 구하기 python의 hashlib를 이용하여 여러 hash 알고리즘(md5,sha1,sha224,sha256,sha384,sha512,...)에 매칭되는 hash 값을 얻을 수 있습니다. 아래에 hashlib를 이용하여 hash 값을 생성하는 예제코드를 작성해보았습니다. ※ hash 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수입니다. (hash 함수로 얻어지는 값을 hash 값이라고 합니다.) 예제 코드 import hashlib HASH_NAME = "md5" # hash algorithm (md5,sha1,sha224,sha256,sha384,sha512) txt = input("Enter the text to convert: ") text = txt.e..
[python] json에서 dictionary로 변환하는 방법
json에서 dictionary로 변환하는 방법 파이썬에서 dictionary를 json를 변환하거나 json을 dictionary로 변환해야하는 경우가 있습니다. json 라이브러리의 loads와 dumps를 이용하여 dictionary와 json간의 변환이 가능합니다. 아래에 dictionary와 json간의 변환에 대한 예제 코드를 작성하였습니다. ※ json은 키-값 쌍으로 이루어진 데이터를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷 ※ dictionary는 파이썬의 자료형 중 하나로 키-값으로 연결되어있는 순서가 없는 집합 자료형 예시 코드 import json json_data = '{ "p1": { "name": "chulsu", "age": 20 }, "p2":..
[python] REST API 호출
REST API 호출 파이썬의 requests, urllib 모듈을 사용하여 REST API 호출하는 방법을 정리하였습니다. ※ requests는 Apache License 2.0의 라이센스를 가진 python HTTP 라이브러리 (requests 공식문서) ※ urllib는 URL 작업을 위한 여러 기능을 가지고 있는 python 라이브러리 (urllib 공식문서) 1. requests 이용 예시 import requests import json # GET res = requests.get('http://127.0.0.1:5000') print(str(res.status_code) + " | " + res.text) # POST (JSON) headers = {'Content-Type': 'applic..
[python] Shell 명령어 실행법
Shell 명령어 실행법 Python에서 Shell 명령어를 실행하고 싶을 때가 있습니다. 파이썬의 subprocess를 활용하여 shell 명령어 실행하는 예제코드를 작성해보았습니다. ※ subprocess는 새로운 프로세스를 생성하여 input/output/error pipes와 연결을 제공하는 파이썬의 모듈 Shell 명령어 실행 예제코드 run_shell_cmd 함수의 인자로 쉘 명령어를 보내어 결과 값을 출력하는 예제입니다. "echo test!!"라는 명령어를 입력하였을 때 "test!!"라는 결과 값을 나오는 것을 확인할 수 있습니다. import subprocess def run_shell_cmd(cmd): cmd_list = cmd.split(' ') try: sp = subprocess..
find 명령어
find 명령어 find 명령어는 리눅스에서 파일 및 디렉토리를 검색할 때 사용하는 명령어입니다. 여러 옵션(type,perm,name,mtime...)을 이용하여 원하는 파일을 검색할 수 있고 exec 옵션을 사용하여 검색한 파일을 제어할 수 있습니다. 사용 예 현재 경로의 파일,디렉토리 전부를 출력 find . 현재 경로에서 파일만 출력 (-type f) find . -type f 현재 경로에서 디렉토리만 출력 (-type d) find . -type d 하위 디렉토리 검색하지 않기(-maxdepth 1) find . -maxdepth 1 현재 경로의 파일 중 권한이 644(-perm 644)인 것만 출력 find . -type f -perm 644 현재 경로의 파일 중 파일 상태 변경이 5일 이상(..
[python] flask 파일 업로드
flask 파일 업로드 flask를 이용하여 서버에 파일을 업로드 하는 방법입니다. upload_main()은 파일 업로드를 위한 html를 렌더링합니다. upload_files()은 서버에 파일을 업로드하는 역할을 합니다. 사용자가 서버의 파일시스템이 있는 파일을 수정하는 것을 방지하기 위해 secure_filename()를 사용합니다. import os from flask import Flask, request from werkzeug.utils import secure_filename UPLOAD_DIR = "D:/" app = Flask(__name__) app.config['UPLOAD_DIR'] = UPLOAD_DIR @app.route('/') def upload_main(): return ..