All (175) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ Monkey Patch (๋ฉํค ํจ์น) A monkey patch is a way for a program to extend or modify supporting system software locally (affecting only the running instance of the program). ํ๋ก๊ทธ๋จ์ ํ์ฅํ๊ฑฐ๋, ๋ก์ปฌ ์์คํ ์ํํธ์จ์ด๋ฅผ ์ง์ํ๊ณ ์์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค(์ค์ง ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค์ ์ํฅ์ ๋ฏธ์น๋ค). ๐ Monkeypatching the Standard Library ๋ฐํ์์์์ ํจ์, ๋ฉ์๋, ์์ฑ์ ๋ฐ๊พธ๋ ๊ฒ์ ์ด์ผ๊ธฐํ๋ค. ์์ค์ฝ๋๊ฐ ์๋ ์๋ํํฐ ์ ํ์ ์ฌ์ฉํ๋ ์ค ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ํ์ฅ์ ์ํด ์ฌ์ฉํ๋ค. ๋ฐํ์ ์คํ์ค ๋ฉ๋ชจ๋ฆฌ์์ ์ค๋ธ์ ํธ์ ์ ์ฉ๋๋ค. ๊ฐ๋ฅํ ์ธ์ด๋ก๋ Javascript, Python, PHP,.. ๐ง Ubuntu * SCP → SSH ํ์ผ ์ ์ก Port Number = 22 ssh์ ํฌํธ ๋ฒํธ๊ฐ ๊ธฐ๋ณธ ๋ฒํธ์ธ 22๋ฒ์ธ ๊ฒฝ์ฐ ํน๋ณํ ์ค์ ์ด ํ์ํ์ง ์์ต๋๋ค. SSH๋ฅผ ์ด์ฉํ์ฌ ๋ค๋ฅธ ์๋ฒ๋ก ํ์ผ์ ์ ์กํ ๋ scp command๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค. $ scp ์ ์กํ ๊ฒ ์์ ํ ์๋ฒ:์ ์ฅ๋ ์์น ์์ ํ ์๋ฒ์๋ ssh ์ ๋ ฅํ์ค ๋์ฒ๋ผ ํ์๋ฉด ๋ฉ๋๋ค. root@์ฃผ์.์ฃผ์.์ฃผ์.์ฃผ์ - - - - ์ ์ก ์์ ๋ฐ ํ์ธ ์ ๋ ฅํ์์ ๋๊ฐ์ผ๋ฉฐ, ์ ๋ณด๋ณดํธ๋ฅผ ์ํด ํ์์ผ๋ก ์น ํ์์ค๋ ์ํด๋ถํ๋๋ฆฝ๋๋ค. - - - - Tip. -r ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋๋ ํ ๋ฆฌ์ ํ์ ํ์ผ๊น์ง ํ๋ฒ์ ์ ์ก์ด ๊ฐ๋ฅํฉ๋๋ค. $ scp -r ์ ์กํ ๋๋ ํ ๋ฆฌ ์์ ํ ์๋ฒ:์ ์ฅ๋ ์์น ๋ค๋ฅธ ํฌํธ ๋ฒํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -P ์ต์ ์ ์ฌ์ฉํ์ฌ ํฌํธ๋ฅผ ์ง์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. → ์๋ฌธ์๊ฐ ์๋๋ผ ๊ผญ! ๋.. โ Solved * [Ubuntu] Crypto install Error and How to Install with Python ์ํธํ๋ฅผ ํด๋ณด๊ธฐ์ํด Cryto๋ฅผ ์ค์นํ๋ ค๊ณ ์๋์ ๋ช ๋ น์ด๋ฅผ ์ณค๋๋ ์ ๋ฐ Error๋ฅผ ๋ด๋ฟ์ผ์ จ๋ค.. $ pip install pycryto Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-LL3mve/pycrypto/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-Hz4VaT-record/install-record.txt --single-version-exter.. ๐ Python * Message ์ํธํ AES128, HMAC 1. Root๋ก ์ ์ํ๋ค. $ sudo su root 2. ์ํธํ์ ํ์ํ Module์ ์ค์นํ๋ค. โ 2020/03/09 - [SW/๐ Python] - โ Solved * [Ubuntu] Crypto install Error and How to Install with Python 3. ์ํธํ, ๋ณตํธํ์ ๋ํ ์ฝ๋ฉ ๊ฐ๋จ ์ค๋ช ์๋ ์ ์ฒด ์ฝ๋๊ฐ ์์ต๋๋ค! A. import module B. HMAC hash C. iv ์์ฑ D. ๋ณตํธํ E. ์ํธํ F. ์คํ ์ ์ฒด์ฝ๋ # -*- coding: utf-8 -*- import hmac, binascii import Crypto.Random from Crypto.Cipher import AES def gen_sha256_hashed_key_salt(key): .. SSL(TLS)์ ๋ํ์ฌ, ๊ฐ๋จํ ์์๋ณด๋ ๋์นญํค/๊ณต๊ฐํค python genvet module์ ์ดํด๋ณด๋ค๊ฐ SSL์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์ ํ์๋ ๊ฒ์ ๋ณด์๋ค. ๋์ฒด SSL์ด ๋ฌด์์ผ๊น ์ถ์ด์ ๊ณต๋ถ๋ฅผ ์์ํ๋ค. ์ผ๋จ SSL์ ๋ํด ์์๋ณด๊ธฐ์ ์ HTTP์ HTTPS์ ์ฐจ์ด์ ์ ๋ณด์๋ฉด, HTTP๋ Hypertext Transfer Protocol๋ก ํต์ ๊ท์ฝ์ค์ ํ๋๋ค. HTTPS๋ HTTP์์ S๊ฐ ์ถ๊ฐ๋ ํํ๋ก ๋ณด์์ด ๊ฐํ ๋ HTTP์ธ๋ฐ, S๋ Over Secure Socket Layer์ ์ฝ์์ด๋ค. ๊ฐ๋ HTTPS์ SSL์ ๊ฐ์ ๊ฒ ์ฒ๋ผ ์๊ธฐํ๋ ์ฌ๋๋ค์ด ์๋๋ฐ, ์๋ฐํ ๋งํด์ ๋ค๋ฅธ ๊ฒ์ด๋ค. ์์ ์ฌ์ง์์ ์ฒ๋ผ, SSL์ด ์ ์ฉ๋ ์์๋ Application Layer๋ค์ HTTP, FTP, Telnet ๋ฑ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๊ณ ๊ทธ ์ค์์ HTTP์ ์ ์ฉํ์ฌ ์ฌ์ฉํ.. ๐ง Ubuntu * ํ๋ผ์คํฌ(Flask) ์ค์นํ๊ธฐ ์๋์ ๋ช ๋ น์ด๋ฅผ ํฐ๋ฏธ๋ ์ฐฝ์ ์ ๋ ฅํ๊ณ root ๋น๋ฒ์ ์ ๋ ฅํด ์ฃผ์ธ์. $ pip3 install flask ์ค์น๊ฐ ๋์๋์ง ํ์ธ $ flask --version + ๋ ์์๋ณด๊ธฐ ํน์ ๋ฒ์ ์ Flask ํจํค์ง๋ฅผ ์ค์นํ ๊ฒฝ์ฐ flask==๋ฒ์ ์ ์ถ๊ฐํด ์ฃผ์๋ฉด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด 1.0 ๋ฒ์ ์ ์ค์นํ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ์ ๋ ฅํ์๋ฉด ๋ฉ๋๋ค. $ pip3 install flask=1.0 Thanks for ๐ [ book ] Flask ๊ธฐ๋ฐ์ ํ์ด์ฌ ์น ํ๋ก๊ทธ๋๋ฐ - ์ด์งํธ ์ง์ - Pycharm * ์ฌ์ฉ์ ๋ฐ์ค, ๋ฌผ๊ฒฐ ํ์ ๋ค๋ฅธ ์๋ํฐ์์ ์ฝ๋ฉํ ๋ด์ฉ์ Pycharm์ผ๋ก ์ฎ๊ฒผ๋๋ฐ ์ฝ๋ ์ ์ฒด์ ๋ฌผ๊ฒฐ์ด ์๊ธฐ๋ ๊ฒ์ด ์๋๊ฐ.. ์์๋ณด๋ Pycharm์๋ PBP(Python Enhance Proposal)8์ด๋ผ๋ ์ฝ๋ฉ ์คํ์ผ ๊ฐ์ด๋๊ฐ ์ค์น๋์ด์๋ค. ๋ฐ๋ผ์, ํด๋น ๋ฐ์ค์ ์ด ๊ฐ์ด๋์ ๋ง์ด ์๋ค๊ณ ์๋ ค์ฃผ๋ ๋ด์ฉ์ด๋ค. ์ด ์ฝ๋ฉ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ํด์งํ ์๋ ์๊ณ , ๋ฐ๋ผ์ ์ฝ๋ฉํ ์๋ ์๋ค. ํด์ง๋ฅผ ์ํ ๊ฒฝ์ฐ ์๋ ์ฐธ์กฐ๋ด์ฉ์์ ํค์ฝค๋ฐฑ์ ๊ฐ๋ฐ ์ด์ผ๊ธฐ๋ฅผ Clickํ๋ฉด ๋๋ค. PBP8 -- Style Guide for Python Code ๊ฐ์ด๋๋ฅผ ์์๋ณด๊ณ ์ถ๋ค๋ฉด ์ฐ์ PBP8์ Clickํ๋ฉฐ ๋๋ค. Thanks for ๐ ํค์ฝค๋ฐฑ์ ๊ฐ๋ฐ ์ด์ผ๊ธฐ ๐ Python * MySQLdb ๋ชจ๋ ์ค์น MySQL ์ค์น๋ฅผ ํ๋ ค๊ณ ํ๋๋ฐ ํ .. ์ ์๋๋ค.. ์๋๋ $ pip3 install MySQL-python3 ํ๋ฉด ๋์ผํ๋๋ฐ ์ค์น๊ฐ ์๋๋ค!! ๋ง๋ง ์ด์ํ ์๋ฌ๋ฅผ ๋ฐ์์ํค๋ฉด์.. (์บก์ณ๋ฅผ ๋ชปํ..) ๊ทธ๋์ ์ฐพ์๋ณด๋ ์์กด์ฑ ํจํค์ง๊ฐ ์์ด์ ๊ทธ๋ฐ ๊ฒ์ผ๋ก ํ์ธ๋์๋ค. ์์กด์ฑ ํจํค์ง๋ฅผ ๊น์์ฃผ๊ณ pip๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง ๊ทธ๋ฅ apt-get์ผ๋ก ์์์ ํ๋๋ก ํ ์ ์๋ค. ๋ ๊ฐ์ง ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์ - ๋ง์ฝ ๋ฒ์ ์ด 2.X์ธ ๊ฒฝ์ฐ์๋ python3๋์ python์ ์ ์ด์ ์ค์นํด ์ฃผ๋ฉด ๋๋ค. 1. apt-get ๋ช ๋ น์ด ์ฌ์ฉ $ apt-get install python3-mysqldb 2. ํจํค์ง ์ค์น ํ pip ๋ช ๋ น์ด ์ฌ์ฉ A. ์์กด์ฑ ํจํค์ง ์ค์น $ apt-get install python3-de.. ๐ง Ubuntu * wsgi๋ฅผ ์ด์ฉํ Apache httpd ์ฐ๋ํ๊ธฐ (Flask) ์ํ์น๋ฅผ ์ํ ํจํค์ง๋ ์ค์นํ๊ณ ์ํ์น๋ ์ค์นํ๋ค๋ฉด, ์ด์ ๋ wsgi๋ฅผ ์ด์ฉํด์ ์ํ์น httpd ์น ์๋ฒ๊ฐ flask app์ ์๋น์คํ ์ ์๋๋ก ์ค์น ํ ์ฐ๊ฒฐ์์ผ๋ณด์! WSGI๋ ๋ฌด์์ผ๊น? ์น ์๋ฒ ๊ฒ์ดํธ์จ์ด ์ธํฐํ์ด์ค(WSGI, Web Server Gateway Interface)๋ ์น์๋ฒ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ธํฐํ์ด์ค๋ฅผ ์ํ ํ์ด์ฌ ํ๋ ์์ํฌ๋ผ๊ณ ์ ์๋์ด์๋ค. ์ฆ, ์น ์๋ฒ(Apache)์ Flask ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ๋ํด์ฃผ๊ธฐ ์ํ ํ๋ ์์ํฌ์ด๋ค. ์ค์นํด๋ณด์ ์ผ๋จ WSGI ํ์ด์ง์์ ๋ค์ด๋ก๋ ๋ถ๋ถ์ ํด๋ฆญํ์ฌ ์ค์นํ ๋ฒ์ ์ ์ ํํ๊ณ ๋ค์ด๋ฐ์. ํด๋น ํฌ์คํธ์์๋ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ๋ค์ดํ ๊ฒ์ด๋ฉฐ / ์๋ src ํด๋๋ฅผ ์์ฑํ์ฌ ๊ทธ๊ณณ์์ ์์ ์ ์งํํ ๊ฒ ์ด๋ค. $ cd /src $ wget https:/.. ๐ง Ubuntu * Apache ์ค์น๋ฅผ ์ํ ์์ฑ ํจํค์ง ์ค์นํ๊ธฐ ์ํ์น ์ค์น ๋ฐ ์คํ์ ์ํด์๋ APR, PCRE๋ฅผ ๋จผ์ ์ค์นํด์ฃผ์ด์ผ ํ๋ค. Cent OS์์ yum ๋ช ๋ น์ด๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์ธํฐ๋ท์ ๋ง์ด ์์ผ๋ ๋ ubuntu๊ณ yum์ด ์ค์น๋์ด ์์ง ์์ผ๋๊น ์ฝ๋๋ฅผ ๋ค์ด๋ฐ์์ ์ค์นํด๋ณด์! ๊ถํ์ด ๋ถ์กฑํ๋ค๊ณ ํ ๋๋ ๋ช ๋ น์ด๋ค ์์ sudo ๋ก root ๊ถํ์ ๋ถ์ฌํด์ ์งํํ๋ฉด ๋๋ค! APR, APR-Util ์ค์นํ๊ธฐ ์ฝ๋๋ฅผ ๋ค์ด๋ฐ์์ ์์ถ์ ํด์ ํ๋ ค๋ฉด ๋ค์ด๋ก๋ ํ์ด์ง์ ์ ์ํด์ ์ํ๋ ๋ฒ์ ์ ์์ค์ฝ๋๋ฅผ ๋ค์ด ๋ฐ๋๋ก ํ๊ณ , ๋ค์ด ๋ฐ์ ์ฎ๊ธฐ๋ ๊ฒ์ด ๊ท์ฐฎ์ ๋๋ wget ๋ช ๋ น์ด๋ฅผ ํตํ์ฌ ๋ค์ด๋ฐ๋๋ก ํ๊ฒ ๋ค. ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๋๋ ๊ผญ ํํ์ด์ง์์ ๋ค์ด๋ก๋ ๋งํฌ๋ฅผ ํ์ธํ๊ณ ์งํํ๋๋ก ํ์! ๋ฃจํธ ๋๋ ํ ๋ฆฌ ์๋ src ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ์ฌ ์งํํ์๋ค. $ cd /src $ wge.. ๐ง Ubuntu * Apache ์ค์น ๋ฐ ์คํํ๊ธฐ Flask๋ฅผ ์ฌ์ฉํ์ฌ Webserver๋ฅผ ์์ฑํด๋ณด๋ ค๊ณ ํ๋ค. ์ผ๋จ Flask๋ง์ผ๋ก๋ Webserver ์๋น์ค๋ฅผ ์คํํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค. ํ๋ฒ์ ํ๋์ ๋์๋ง ์คํ ํ ์ ์๊ธฐ ๋๋ฌธ์ Flask๋ง์ ์ฌ์ฉํด์๋ง๋ ์น์ฑ์ ์คํ์ ์ฌ๋ฌ๊ฐ์ง ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค. ์ํ์น๋ฅผ ์ค์นํด์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ ์ํ์น๋ฅผ ์ค์น ๋ฐ ์คํ์ ํ๊ธฐ ์ํด์๋ ์์กด์ฑ ํจํค์ง๋ค(APR, PCRE)์ด ์ค์น๋ ํ์ํ๋ค. ๋ง์ฝ configure: error: APR not found. Please read the documentation ์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋์จ๋ค๋ฉด APR๋ฅผ ์ค์นํด ์ฃผ์ด์ผ ํ๋ ๊ฒ์ด๋ค. ์์ง ์ด๋ฅผ ์ค์นํ์ง ์์๋ค๋ฉด Apache ์ค์น๋ฅผ ์ํ ์์กด์ฑ ํจํค์ง ์ค์นํ๊ธฐ ๋ถํฐ ๋จผ์ ๋ณด๊ณ ์ค์! โ 2020/03/09 - [OS/๐ง Linu.. ๐ Python * Linux(Ubuntu) ํ๊ฒฝ๋ณ์ ์ฝ๋๋ก ๊ฐ์ ธ์ค๊ธฐ 1. ํ๊ฒฝ๋ณ์ ์ ์ฅํ๊ธฐ - Terminal ์ฐฝ์์ export command๋ฅผ ์ด์ฉํ์ฌ ํ๊ฒฝ๋ณ์๋ฅผ ์ ์ฅํฉ๋๋ค. $ export ๋ณ์๋ช =๊ฐ - ํ๊ฒฝ๋ณ์ ์ญ์ ๋ unset command๋ฅผ ์ด์ฉํฉ๋๋ค. $ unset ๋ณ์๋ช 2. Python์์ ๋ถ๋ฌ์ค๊ธฐ - os.environ๋ os.getenv ๋ฅผ ์ด์ฉํ์ฌ ํ๊ฒฝ๋ณ์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. environ์ ํด๋น ๋ณ์๊ฐ ์์ ๊ฒฝ์ฐ ERROR ๋ฅผ ๋ฐ์์ํค๊ธฐ ๋๋ฌธ์ getenv ๋ฅผ ์ฌ์ฉํ์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค. getenv๋ ํด๋น ๋ณ์๊ฐ ์์ ๊ฒฝ์ฐ NONE ์ returnํฉ๋๋ค. import os print('\ngetting_system_value.py {}\n'.format('-'*20)) # ================================== # fi.. ์ด์ 1 ยทยทยท 8 9 10 11 12 13 14 15 ๋ค์