python configparser 사용하기
프로젝트를 하다보면 프로젝트의 설정 파일을 만들어 줘야 할 때가 있습니다.
그럴 때 유용한 것이 있으니 그것은 바로 python의 기본 내장 모듈 configparser 입니다.
여기서 간단하게 configparser를 다뤄보고자 합니다.
우선 임포트를 해줍니다.
import configparser config = configparser.ConfigParser()
그리고 만들어 둔 설정 파일을 configparser로 읽어 줍니다.
config.read('/home/python_user/server.conf')
여기서 읽어 오는 샘플 설정 파일인 server.conf 를 보자면
[MAIN] project_root = /home/python_user/project/api_server/ db_host = 127.0.0.1 db_port = 3306 db_user = test_user db_passwd = test_passwd db_name = test_db temp_path =/home/python_user/temp/ image_path =/home/python_user/image/
이러한 식으로 MAIN이라는 카테고리를 만든 후 그 아래 여러가지 설정값들을 넣었습니다.
그리고 읽어들인 설정을 사용하려면
config = config['MAIN']
여기서 MAIN 카테고리를 선택 후
project_root_path = config['project_root']
이런식으로 project_root_path라는 변수에 project_root 설정값을 저장할 수 있습니다.
이 방식이 아닌 다른 방식도 있지만 저는 주로 이 방식을 즐겨 사용합니다.
전체 코드는 아래에~
import configparser config = configparser.ConfigParser() config.read('/home/python_user/server.conf') config = config['MAIN'] project_root_path = config['project_root']
참 쉽죠?
저는 처음에 헤매었다가 지금은 즐겨 사용하고 있습니다. 끝~!
'Python' 카테고리의 다른 글
실시간으로 뉴스를 크롤링하여 뉴스 검색엔진 API 만들기 (1) | 2018.08.07 |
---|---|
Python sounddevice를 이용한 소리 탐지 (0) | 2018.04.23 |
Django 에서의 간단한 마이그레이션 과정 (0) | 2018.02.16 |
Flask socketIO simple usage and code (0) | 2018.02.14 |
python multiprocessing 사용하기 (1) | 2018.02.12 |
NodeJS로 간단한 채팅 서버 구축하기
이번에는 지인과 함께 간단한 앱을 만들면서 생성하게 된 채팅서버를 공개해 봅니다.
바로 갑니다앙~!
var app = require('http').createServer(handler); var fs = require('fs'); var io = require('socket.io').listen(app);
우선 http와 나중에 사용할 fs, 그리고 필수 라이브러리인 socket.io를 import 합니다.
if (process.argv.length < 3){ console.log('app <port>'); process.exit(1); } app.listen(process.argv[2]); console.log(process.argv[2] +' Started!! '); function handler(req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); data = data.toString('utf-8').replace('<%=host%>', req.headers.host); res.end(data); }); }
그리고 렌더링할 index.html 파일 경로를 설정해주고, 렌더링 코드를 입력해 줍니다.
process.argv로는 매개변수로 포트를 설정할 수 있도록 합니다.
그 다음으로 socket.io 코드를 작성합니다.
io.sockets.on('connection', function (socket) { fs.readFile( __dirname + "/../data/chat.json", "utf8", function (err, data) { prev_data = JSON.parse(data); socket.emit('init', prev_data); console.log(prev_data); }); socket.on('message', function(data){ var split_cnt = prev_data.length; if(split_cnt > 10){ // 저장될 채팅메시지의 갯수 prev_data.splice(0,1); } prev_data.push(data); fs.writeFile( __dirname + "/../data/chat.json", JSON.stringify(prev_data), function(err) { // throws an error, you could also catch it here if (err) throw err; // success case, the file was saved }); socket.broadcast.emit('message', data); }); });
chat.json은 서버상에 저장될 채팅 메시지를 json 파일로 저장하는 역할을 합니다.
경로는 여러분이 원하는 곳에 놔두셔도 됩니다.
그리고 중간에 저장될 채팅메시지 갯수를 지정할 수 있는데요. 배열 길이와 일치하도록 했습니다.
이것 또한 여러분이 커스터마이징 하시면 됩니다.
요 위까지 서버측 코드입니다.
——————————————————————————————-
이제 아래로 클라이언트 코드입니다.
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>socket io redis store</title> <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script type="text/javascript" src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://<%=host%>'); $(document).ready(function(){ socket.on('init',function(data){ for(var i=0; i<data.length; i++){ console.log(data[i]); $('#chat').append('<li>' + data[i] + '</li>'); } }); socket.on('message',function(data){ $('#chat').append('<li>' + data + '</li>'); }); $('#btnSend').click(function(){ send(); }); $('#inputT').keyup(function(e){ if(e.keyCode == 13) send(); }); }); function send() { var message = $('#inputT').val(); if (message.length < 1) return; socket.emit('message', message); $('#chat').append('<li>'+message+'</li>'); $('#inputT').val(''); } </script> </head> <body> <input type="text" id="inputT" /> <button id="btnSend">보내기</button> <ul id="chat"></ul> </body> </html>
코드 작성을 완료하였으면 실행을 해줍니다.
node index.js 3000
저는 3000번 포트로 실행시켰습니다.
끝~
'JavaScript > NodeJS' 카테고리의 다른 글
NodeJS의 forever 모듈 설치하고 다루기 (0) | 2017.11.12 |
---|
Python 딥러닝 관련 간단한 활성화 함수
딥러닝 공부를 하는 중이나 복습 차 python코드로 된 활성화 함수 몇가지를 올려봅니다.
여기서 활용하는 함수들의 출처는 – 밑바닥부터 시작하는 딥러닝 – 에서 참고하였습니다.
일단 신경망의 기초가 되는 퍼셉트론에서는 활성화 함수로 계단 함수를 이용한다라 할 수 있습니다.
python으로 구현하는 간단한 계단함수 코드는
def step_function(x): if x > 0: return 1 else: return 0
가 되겠습니다.
x가 0을 기준으로 0과 1로 결과값이 나눠집니다.
이 코드를 numpy를 사용하여 더 편하게 사용하려면
import numpy as np def step_function(x): return np.array(x > 0, dtype=np.int)
로 사용하시면 되겠습니다.
결과값이 true 또는 false로 분기되는 것을 dtype=np.int를 통해 정수형으로 형변환을 시켜주는 원리입니다.
여기까지는 계단함수를 보았습니다.
다음은 시그모이드 함수 구현입니다.
시그모이드의 공식은 아래와 같습니다.
이것을 numpy를 통해 쉽게 코드로 구현하면
import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x))
그래프는 아래와 같이 나옵니다.
마지막으로 (ReLU)렐루 함수를 보겠습니다.
렐루 함수는 0이하이면 0을 출력, 0을 넘으면 그대로의 값을 출력하는 함수입니다.
렐루 함수는 파이썬 코드로 상당히 간결하게 구현이 가능합니다.
import numpy as np def relu(x): return np.maximum(0, x)
위와 같이 0과 값중에 최대값을 출력하면 렐루 함수가 됩니다.
여기까지 간단한 Python코드로 구현해보는 활성화 함수 세가지를 보았습니다.
'DeepLearning' 카테고리의 다른 글
BERT 한국어버전(korquad) training 및 evaluating 해보기 (0) | 2019.09.04 |
---|---|
간단하게 보는 CPU와 GPU의 연산 차이 (0) | 2018.03.29 |