All (175) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ๐ Python * socket ์ฐ๊ฒฐ + ๋ฌธ์์ด ์ ์ก SERVER 1. ๋จผ์ ํต์ ํ ์์ผ์ ๊ตฌ์กฐ๋ฅผ ์์ฑํฉ๋๋ค. class SocketInfo() : HOST='' #HOST์ ์๋ฌด๊ฒ๋ ์ง์ ํ์ง ์์ผ๋ฉด ๊ฐ๋ฅํ ๋ชจ๋ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํ๋ค. PORT=1024 #๋ ๋๋ฐ์ด์ค๊ฐ ๋ง๋ ์ง์ ์ ์ ํด์ค๋ค๊ณ ์๊ฐํ๋ฉด ํธํ ๊ฒ ๊ฐ๋ค. #ํฌํธ๋ฒํธ๋ ์๋ฌด๊ฑฐ๋ ํด๋ ์๊ด์์ผ๋ ์ด๋ฏธ ์ ํด์ ธ ์๋ ํฌํธ๋ฒํธ๋ ์ฌ์ฉํ๋ฉด ์๋๋ค. # HTTP, FTP ๋ฑ์ ์ง์ ํฌํธ๋ฒํธ ์ฌ์ฉ ๋ถ๊ฐ BUFSIZE=1024 #์์ผ์ด ํ๋ฒ์ ๋ฐ์์ฌ ์ ์๋ ์ฉ๋์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๊ฒ ๋ค. #์ต๋ 1024 byte๊น์ง๋ง ์ ๋ฌ ๋ฐ๊ฒ ๋ค. ADDR=(HOST, PORT) #ํ์ server์์ bind ํจ์๋ฅผ ์ฌ์ฉํ ๋ bind ํจ์์ ์ธ์ ๊ฐ์ด ( IP, PORT ) ์ด๊ธฐ ๋๋ฌธ์ #๊ทธ๋ฅ ํ๋๋ก ํฉ์ณ์ค ๊ฒ์ด๋ค. ํ์ผ๋ก .. Codecov? ๋ญ๋ ๋.. ์ฝ๋.. ์ปค๋ฒ๋ฆฌ์ง...๋ ๋...OTL PyPI์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ํ๊ณ ์๋๋ฐ ์ด๋ฐ ํ์๋ฅผ ๋ณด์๋ค. ์ฝ๋๊ฐ ์์ฑ๋์ง ์์๋ค๋ ๋ป์ธ๊ฐ ํ๊ณ ์๊ฐํ๋ ๋ฌด์งํ ๋๋..๐ Codecov๊ฐ ๋ฌด์์ธ์ง ์ฐพ์๋ณด์๊ณ ์ ์ํ๋๋ฌด ์ ํ์๊ฐ ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ์ธก์ ํด์ฃผ๋ ๋๊ตฌ๋ค ์ค ํ๋์ธ ๊ฒ์ ์์๋ค. PyPI์์ ์ ํ์๋ฅผ ๋๋ฅด๋ฉด ํด๋น ์ฌ์ดํธ๋ก ์ด๋ํ๋๋ฐ ์ฌ์ดํธ ์ด๋ฆ๋ Codecov์ด๋ค. ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง( Code Coverage )๋? ์ํํธ์จ์ด์ ํ ์คํธ๊ฐ ์ผ๋ง๋ ์ฝ๋๋ฅผ ์ ์ปค๋ฒํ๊ณ ์๋ ๊ฐ๋ฅผ ๋ํ๋ด๋ ์งํ ์ค ํ๋, ์ํํธ์จ์ด์ ํ ์คํธ๋ฅผ ๋ ผํ ๋ ์ผ๋ง๋ ํ ์คํธ๊ฐ ์ถฉ๋ถํ ๋์๋์ง๋ฅผ ๋ํ๋ด๋ ์งํ ์ค ํ๋๋ผ๊ณ ํ๋ค. . . .๐;; ์ฝ๊ฒ ๋งํด์ ์ํํธ์จ์ด ํ ์คํธ๋ฅผ ์งํํ์ ๋ ์ฝ๋ ์์ฒด๊ฐ ์ผ๋ง๋ ์คํ๋์๋๋ ๊ฒ์ ๋ํ๋ด๋ ๊ฒ ์ด๋ค! = ์์ค ์ฝ๋๊ฐ ํ ์คํธ๋ ์ ๋.. ๐ง Ubuntu * nohup, ๋ฐ๋ชฌ ํ๋ก๊ทธ๋จ ์คํ ์๊ฒฉ์ ์ ํ ํ๋ก๊ทธ๋จ์ ์คํ ์์ผฐ๋๋ฐ, ์๊ฒฉ ์ ์์ ๋๊ณ ์ปดํจํฐ๋ฅผ ์ข ๋ฃํ๊ณ ์ถ๋ค.. ์ด๋ป๊ฒ ํด์ผํ ๊น? ๋ฆฌ๋ ์ค๋ผ๋ฉด ์์ธ๋ก ์ฝ๊ฒ ํด๊ฒฐ๋๋ค. What is the Nohup? 1. ํ์ค ์ถ๋ ฅ์ nohup.out ๋๋ ๋ค๋ฅธ ํ์ผ์ผ๋ก ๋๋ฆฐ๋ค. 2. no hang up์ ์ค์ธ ํค์๋ ๋ช ๋ น์ด๋ก ํ๋ก์ธ์ค ์ค๋จ( hang up )์ ๋ฌด์ํ๊ณ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๋ช ๋ น์ด. = ํฐ๋ฏธ๋ ์ข ๋ฃ ํ์๋ ํ๋ก๊ทธ๋จ์ ๋ฐ๋ชฌ ์ฒ๋ผ ์คํํ๊ณ ์ถ๋ค. Output Control $ nohup program ์ด ๊ฒฝ์ฐ ์ถ๋ ฅ๋๋ ๋ด์ฉ์ nohup.out ์ด๋ผ๋ ํ์ผ์ ์ ์ฅ๋๋ค. ํ์ผ์ด๋ฆ์ ์ง์ ํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? $ nohup program > file ์ถ๋ ฅ์ด ํ์์์ด์, ํ์ผ์ ์์ฑํ๊ณ ์ถ์ง ์๋๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? $ nohup pro.. ์ฝ๋ฃจํด vs ์ค๋ ๋ Python network modules๋ฅผ ๊ฒ์ํ๋ค ๋ณด๋, ๊ฐ ๊ฐ์ network module๋ค์ด coroutine์ ์ด์ฉํด์ ๋ง๋ค์๋ค๋ ๋ฌธ์ฅ์ ์์ฃผ ๋ณด๊ฒ ๋์๋ค. ๋๋ถ์ด Coroutine์ด Thread์ ๋น์ทํ๊ฒ ์คํ์ค๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ๋์์ด ๋ค๋ฅด๋ค๋ ๊ฒ๋, ๊ทธ๋์ ๋ ๊ฐ์ง์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ์์๋ณด๊ธฐ๋ก ํ๋ค. ๋ ๊ฐ์ง์ ์ฐจ์ด์ ์ ์๊ธฐ์ ์ ์์๋ฌ์ผํ๋ ๊ฒ์ผ๋ก ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ ๋ํ ๋ด์ฉ์ด ์๋ค. >> 2020/03/05 - [๐ Note] - ๋์์ฑ vs ๋ณ๋ ฌ์ฑ ( Concurrency vs Parallelism ) At stackoverflow Coroutines are a form of sequential processing: only one is executing at any given time.. ๐ Python * MQTT module paho๋ฅผ ์ด์ฉํ MQTT ํต์ ์ค์นํ๊ธฐ 1. Download $ pip install paho-mqtt 2. MQTT ํต์ $ sudo git clone https://github.com/eclipse/paho.mqtt.python.git $ cd org.eclipse.paho.mqtt.python.git $ sudo python setup.py install - ์ฒ์ ๋ช ๋ น์ด๋ฅผ ์ณค์ ๋ git์ ์ค์น๋ผ๊ณ ํ๋ฉด ์ค์น ํ ์งํํ์ ์ผ ํฉ๋๋ค. ( ์น์ ํ๊ฒ ๋ช ๋ น์ด ๊ฐ๋ฅด์ณ ์ค์ ) - ๋์ ์ root ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ์๊ณ ์์ ๋ช ๋ น์ด๋ฅผ ์ณ์ฃผ์ธ์. - ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ์ ๊ฒฝ์ฐ ์์ ๋ช ๋ น์ด์์ ์ ์ํ ์์น(org.eclipse.paho.mqtt.python.git)์ ๊น๋ฆฌ์ง ์์ setup.py ํ์ผ์ด ์๋ ๊ณณ์ผ๋ก ์ฐพ์๊ฐ์ต๋๋ค. ๊ทธ๋ฅ ํ ์์น์์.. ๐ง Ubuntu * mosquitto, mosquitto-client ์ค์นํ๊ธฐ 2019/08/09 ๊ธฐ์ค Mosquitto์์ snap ์ปค๋งจ๋๋ฅผ ์ง์ํ๋ค. ๋ช ๋ น์ด๋ฅผ ์ฐ๋ฉด ํจ์ฌ ๊ฐํธํ๊ฒ ์ค์นํ ์ ์๋ค. Broker (mosquitto-server) ์ค์น 1. ์ ์ฅ์๋ฅผ ์ด์ฉํ Broker Server ์ค์น A. ์ ์ฅ์ ์ ๋ฐ์ดํธ $ sudo apt-get install python3-software-properties $ sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa $ sudo apt-get update B. ์ ์ฅ์ ์ ๋ฐ์ดํธ ํ์ธ $ sudo apt-cache search mosquitto C. Mosquitto server ์ค์น $ sudo apt-get install mosquitto D. ์ค์น ํ์ธ $ mosquitto 2. .. โ๏ธ Google Cloud * Speech to Text ์์๋ณด๊ธฐ ์ด ๊ธ์์ ์ค๋ช ํ ๋ด์ฉ์ ์์ ๋ Speech To Text ๋ฒ์ 1.9X.XX, v1p1beta1 workspace๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ฒ์ ๋ณ๋ก ํฌํจํ๊ณ ์๋ ๊ธฐ๋ฅ์ด ์์ดํ๋ ์คํํ์ค ๋ ๊ผญ ์ฐธ๊ณ ํ์ธ์! ๋ฐ๋ก ๋์ ๋ด์ง ์์๋ $300์ผ ๋ฌด๋ฃ ํฌ๋ ๋ง์ 12๊ฐ์๊ฐ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ฌด๋ฃ ํ๊ฐํ ์ข ๋ฃ ํ ์๋ ์ฒญ๊ตฌ๋์ง ์๋๋ค๊ณ ํ๋ค. ์ ์ฉ์นด๋๋ฅผ ๋ฑ๋กํ๊ฒ ๋์ด ์๋๋ฐ ์ด๋ ์๋ ๊ฐ์ ์ ๋ฐฉ์งํ๊ธฐ ์ดํด์์ด๋ฉฐ ์ฌ์ฉ์๊ฐ ์ ๋ฃ ๊ณ์ ์ผ๋ก ์ง์ ์ ๊ทธ๋ ์ด๋ํ์ง ์๋ ํ ์๊ธ์ด ์ฒญ๊ตฌ๋์ง ์๋๋ค๊ณ ๋์์๋ค. ํด๋ผ์ฐ๋ ์์ฑ ํ ์คํธ Cloud Speech-to-Text ์์ฑ ํ ์คํธ(STT) ๋ณํ์ ๋จธ์ ๋ฌ๋(๊ธฐ๊ณํ์ต)์ ์ฌ์ฉํ๋ฉฐ ์งง๊ฑฐ๋ ๊ธด ํ์์ ์ค๋์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค. Speech-to-text conversion power.. ๐ Python * ๋ฌธ์ ↔ ์์คํค์ฝ๋ ๋ณํํ๊ธฐ 1. ord() - ๋ฌธ์๋ฅผ ์์คํค์ฝ๋๋ก ๋ณํํ๊ธฐ print ord("A") #65 print ord("B") #52 print ord(" ") #32 - ๋ฌธ์์ด์ ์์คํค์ฝ๋๋ก ๋ณํํ๊ธฐ for in "hi everyone": print ord(i), #๊ฐํ์ ํ์ง ์๊ธฐ ์ํด print() ๋ค์ ,๋ฅผ ๋ถ์์ต๋๋ค! #104 105 32 101 118 101 114 121 111 110 101 2. chr() - ์์คํค์ฝ๋๋ฅผ ๋ฌธ์๋ก ๋ณํํ๊ธฐ print chr("84") #T print chr("36") #S print chr("74") #J ๐ Python * ์/ํ์, ๋์ผ ํด๋ ๋ด ๋ชจ๋ from, import ํ๋ ๋ฐฉ๋ฒ --__init__.py -- file1.py -- file2.py +-- dir1 -- __init__.py -- dir1_file1.py -- dir1_file2.py +-- dir2 -- __init__.py -- dir2_file1.py -- dir2_file2.py +-- document -- document_file1.txt 1. ์ฐธ์กฐํ ๋ชจ๋ ๋ฐ ํ์ผ์ด ์๋ dir์ __init__.py ํ์ผ์ ์์ฑํด ์ค๋ค. ํ์ผ ์์ ์๋ฌด ๋ด์ฉ์ด ์์ด๋ ์๊ด์๋ค. ๊ทธ๋ฅ dir ์์๋ค๊ฐ __init__.py ๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ํ์ผ์ ์์ฑํด์ค์ผ, Python์ด ์์น๋ฅผ ์ฐพ์๊ฐ ์ ์๋ค. 2. ๋ค๋ฅธ ๋ชจ๋ ์ฐธ์กฐ ( ํ์ ํด๋ ๋ด ํ์ผ, ๋์ผ ํด๋ ๋ด ํ์ผ ์ฐธ์กฐ ) #dir1_file1.py ๋ฅผ .. โ๏ธ Google Cloud * ํ ์คํธ๋ฅผ ์ฝ์ด์ฃผ๊ฒ ๋? for Python Text to Speach๋ 2018-06์ ํ์ฌ Protocol, Java, Node.JS, Python ์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค. ์ด ํฌ์คํธ์์๋ Python์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ํฌ์คํ ํ์์ต๋๋ค. ์ฌ์ฉ ์์๋ Python ์ธ์ ๋ค๋ฅธ ์ธ์ด๋ ๋์ผํ๊ธฐ์ ์์๋ง ๋ณด์๊ณ , Java, Node.JS ๊ฐ์ ๊ฒฝ์ฐ ์๋ #์ฐธ์กฐ๋ด์ฉ์ ํ์ธํ์ธ์. Google Cloud์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ ์ฐจ๊ฐ ๋จผ์ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. ๐ Before Start Google Cloud Library ์ฌ์ฉ๋ Package์ variable, method ์ ๋ณด๋ฅผ ์๊ณ ์ถ์ผ๋ฉด ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ธ์! Text To Speech ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ์ ํน์๋ผ๋ Google Cloud๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๊ธฐ๋ณธ์ธ์ฆ์ ํ์ง ์์๋ค.. TCP/IP * 2. ํ๋กํ ์ฝ ์ฒด๊ณ์ ์์ผ ํ์ ( TCP, UDP ) ๋คํธ์ํฌ ํ๋ก๊ทธ๋จ์ ํ ๋ ๊ฐ์ฅ ํต์ฌ์ด ๋๋ ๊ฒ์ด ์์ผ์ด๋ค. socket์ ์ด์ฉํ์ฌ ๊ฐ์ข ๋๋ฐ์ด์ค์ ๋ฐ์ดํฐ ์ก์์ ์ ํ๋ค. ์ด๋ฐ socket์ ์์ฑํ ๋ 2๊ฐ์ง ์ค์ํ ์ ๋ณด๋ฅผ ์ ๋ ฅ ํ๋๋ฐ ๊ทธ๊ฒ์ด ๋ฐ๋ก ํ๋กํ ์ฝ ์ฒด๊ณ์ ์์ผ์ ํ์ ์ด๋ค. ํ๋กํ ์ฝ ์ฒด๊ณ - Protocol ( ํ๋กํ ์ฝ ) ์ด๋ ๋๋ฐ์ด์ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ด๋ค. ์ฆ, ๊ฐ ๋๋ฐ์ด์ค ๊ฐ ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด์ ์ ์ํด ๋์ ์ฝ์์ ๋ปํ๋ค. ์ด๋ฌํ ๊ท์ฝ์ ์ ํด ๋์ง ์์ผ๋ฉด ์๋๊ฐ ๋ด๊ฐ ์๋ํ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ดํดํ ์๋ ์๋ค. ์์ผ ํต์ ์ ํ ๋ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ ๋ถ๋ฅ๊ฐ ๋ช๊ฐ์ง ์๋ค. ์ด๋ฌํ ๋ถ๋ฅ๋ฅผ ํ๋กํ ์ฝ ์ฒด๊ณ๋ผ๊ณ ํ๋ค. ์ด๋ฌํ ๋ถ๋ฅ๋ฅผ ํ๋กํ ์ฝ ์ฒด๊ณ๋ผ๊ณ ํ๋ฉฐ c ์ธ์ด์์ socket์ ์์ฑํ ๋ ๋ค์๊ณผ ๊ฐ์ด ํจ์๋ฅผ ํธ์ถ ํ ๋.. ๐ง Ubuntu * D2Coding ํฐํธ ์ค์น ๋ฐ Powerline symbol ์ค์ D2 Coding fonts ๊ธฐ์กด์ ์ค์น ํ๋ ๋ฒ์ ์ ์ง์ฐ๊ณ ์ ๋ฒ์ ์ ์ค์นํด์ผํ๋ค๊ณ ํ๋, ํญ์ ์ ๋ฒ์ ์ ์ค์นํ ๋ ์ฃผ์ํ๋๋ก ํ์! ์ผ๋จ git์์[ nave/d2codingfont ]์์ ์ต์ release file์ .zip์ผ๋ก ๋ค์ด ๋ฐ๋๋ค. ์ค์น ๋ฐฉ๋ฒ 1. Command - ๋ค์ด๋ฐ์ ํด๋๋ก ๊ฐ์ unzip ๋ช ๋ น์ ์คํ์์ผ ์ค๋ค. ์๋ฅผ ๋ค์ด ๋ค์ด ๋ฐ์ .zip ํ์ผ๋ช ์ด D2coding ์ด๊ณ ์ด๋ฅผ D2CondingFont๋ผ๋ ํด๋๋ช ์ผ๋ก ๋ง๋ค๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค. $ sudo unzip D2coding.zip -d /usr/share/fonts/D2CodingFont ์ด๋ ๊ฒ ํ๋ฉด ์ค์น๊ฐ ์๋ฃ๋๋ค! ์ค์น ๋ฐฉ๋ฒ 2. GUI install - ๋ค์ด๋ฐ์ ํด๋๋ก ๊ฐ์ .zip ํ์ผ์ ์์ถ์ ํ.. ์ด์ 1 ยทยทยท 9 10 11 12 13 14 15 ๋ค์