분류 전체보기
-
[Python] pyximport언어/파이썬 & 장고 2017. 2. 18. 15:12
pyximport는 Cython의 한 부분입니다. import를 해서 사용할 수 있습니다. 만약 특별한 C 라이브러리를 요구하지 않거나 특별한 setup을 빌드하기를 원하지 않으면 pyximport 모듈을 사용하면 됩니다. pyximport을 import하면 setup.py을 작성하지 않고 .pyx파일을 직접 로드할 수 있습니다.import pyximport; pyximport.install() >>> import helloworld Hello World
-
-
Saltstack서버 2017. 2. 18. 14:04
인프라의 규모가 커질 수록 서버 설치와 설정에 대한 부담이 늘어납니다. 특히 트래픽이 급격히 늘어나는 경우, 이에 빠르게 대처하여 서버를 구축하기 위해서는 자동화가 필수입니다. Saltstack은 이런 대규모 인프라를 관리하기 위한 자동화 관리 시스템입니다. 장점빠릅니다. server 와 agent 간 zeromq 를 통해 통신하는데, agent 요청에 대해 비동기 병렬로 처리 하기 때문에 agent가 많아져도 수 초안에 처리가 가능합니다. 1만대 이상 agent 에 명령을 보내고 응답 받는데 2초가 걸리지 않습니다.구조가 심플합니다. Server-agent 기반의 매우 단순한 구조입니다. 서버의 경우 DB조차 사용하지 않습니다. (DB를 사용하고 싶은 경우 plug-in 구조로 DB를 사용할 수 있게 ..
-
블록 암호 운용 방식 (block cipher modes of operation)보안 & 보안 2017. 2. 18. 13:45
블록 암호란?블록 암호(block cipher)란 기밀성있는 정보를 정해진 블록 단위로 암호화 하는 대칭키 암호 시스템입니다. 만약 암호화하려는 정보가 블록 길이보다 길 경우에는 특정한 운용 모드가 사용됩니다.(예, ECB, CBC, OFB, CFB, CTR)스트림 암호란?스트림 암호(stream cipher)는 대칭 키 암호의 구조 중 하나로, 유사난수를 연속적(스트림)으로 생성하여 암호화하려는 자료와 결합하는 구조를 가집니다. 일반적인 스트림 암호는 유사난수를 1비트 단위로 생성하고, 생성된 값과 암호화하려는 각 값을 XOR하여 1비트의 암호화된 자료를 얻습니다. 즉 키의 길이가 유동적입니다. 스트림 암호는 일회용 난수표(OTP)를 유사난수로 대체한 것으로 볼 수 있습니다. 스트림 암호는 하드웨어 구..
-
[Golang] 파이썬 모듈 실행하기언어/Golang 2017. 2. 18. 13:14
파이썬 모듈을 go자체에서 import 하는 방법은 모르겠고.. exec 패키지를 사용해 리눅스에 파이썬 모듈을 command를 날리는 형식으로 실행합니다.// testpython 모듈 실행 코드 // testpython 모듈 내의 test_function()을 호출하여 반환 값을 print()하는 코드 command := "import testpython; print(testpython.test_function())" // 리눅스내 파이썬 명령어 실행 cmd := exec.Command("python3", "-c", command) out, err := cmd.CombinedOutput() if err != nil { fmt.Println(err) } // 결과출력 fmt.Println(string(o..
-
[Golang] AES ECB 모드 암호화 (PKCS5, PKCS7)언어/Golang 2017. 2. 17. 15:24
package main import ( "bytes" "crypto/aes" "crypto/cipher" "encoding/base64" "fmt" "strings" ) func main() { /* *src 암호화 대상 *key 암호 key, 16bit면 AES-128, 32bit면 AES-256 */ src := "테스트 평문" key := "0123456789abcdef" crypted := AesEncrypt(src, key) AesDecrypt(crypted, []byte(key)) Base64URLDecode("") } func Base64URLDecode(data string) ([]byte, error) { var missing = (4 - len(data)%4) % 4 data += st..
-
[Golang] JSON 사용하기언어/Golang 2017. 2. 16. 20:44
Go에서 JSON을 사용하려면 encoding/json패키지를 import해야 합니다. 아래는 해당 패키지에서 제공하는 JSON 함수입니다.func Marshal(v interface{}) ([]byte, error): Go 언어 자료형을 JSON 텍스트로 변환func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error): Go 언어 자료형을 JSON 텍스트로 변환하고 사람이 보기 편하도록 들여쓰기를 해줌func Unmarshal(data []byte, v interface{}) error: JSON 텍스트를 Go 언어 자료형으로 변환key-value 구조 JSONJSON 직렬화아래는 맵 형태의 데이터를 JSON 형태로 변환하는 방법입니..
-
[Python] psycopg2 모듈을 사용한 효율적인 PostgreSQL bulk insert언어/파이썬 & 장고 2017. 2. 16. 20:06
PostgreSQL은 데이터를 관리, 구성, 질의 및 검색하는 데 매우 뛰어나지만 Insert 자체가 매우 느릴 수 있습니다. PostgreSQL에서 가장 빠른 Insert 방법은 COPY문을 사용하는 것입니다. 응용 프로그램이 PostgreSQL을 사용할 수 있는 권한이 있다고 해도 소프트웨어 구성 요소 간에 엄격한 기능 분리를 유지하는 관점에 있어서는 COPY문을 사용하는 것을 권하지 않습니다. 다음은 COPY문을 제외한 100,000개의 row들을 insert할 때 찾은 효율적인 방법을 소개합니다.Test 구성테스트는 아래의 테이블에 insert하는 데 걸리는 시간을 기준으로 합니다.CREATE TABLE upload_time_test( uuid uuid primary key default uuid..
-
[Python] 상위, 하위 , 동일 폴더 내 모듈 from, import 하는 방법언어/파이썬 & 장고 2017. 2. 16. 10:08
먼저 프로젝트 구조가 아래와 같이 구성되어 있다고 가정합니다.project -- test +-- sub1 -- __init__.py -- aa.py -- bb.py +-- sub2 -- __init__.py -- cc.py -- dd.py -- ee.py -- ff.py -- __init__.py -- gg.pyee.py에서 다른 모듈 참조 (하위 폴더 내 파일, 동일 폴더 내 파일 참조)이와 같은 방법은 간단합니다.# aa.py를 참조할 경우 from sub1 import aa # ff.py를 참조할 경우 import ff # 또는 from . import ff # from . 은 동일폴더라는 의미를 나타냄.상위 폴더 내 파일 참조예를들어 aa.py에서 sub2에 있는 cc.py을 참조하는 방법은 두 ..
-
[Golang] const와 iota언어/Golang 2017. 2. 15. 20:22
아래와 같이 status 변수에 상태를 정의한다고 가정합니다.type status int const UNKNOWN status = 0 const TODO status = 1 const DONE status = 2 이러한 세 상수는 서로 연관이 있으므로 묶어서 쓸 수 있습니다.const ( UNKNOWN status = 0 TODO status = 1 DONE status = 2 ) 위와 같이 순서대로 수를 붙인다면 아래와 같이 iota를 사용할 수 있습니다. 또한 자료형도 첫 줄과 동일하게 묶입니다.const ( UNKNOWN status = iota TODO DONE ) iota는 순서대로 0, 1, 2 붙이는 것 이욍도 사용방법이 많습니다.const ( _ = iota // 첫 줄 무시 KB Byte..