분류 전체보기
-
OpenStack Swift서버 2017. 1. 26. 17:55
OpenStack Swift는 Object Storage 중 하나이며 Open Source Project입니다. 분산 구조의 Object 데이터의 저장 스토리지 체계로서 가장 많이 사용되는 Open Source Project가 바로 OpenStack Swift입니다. Object Storage가 비록 빠른 성능을 요구하는 경우에 쓰이기에는 부적절하지만 안정적이면서도 대용량의 저장공간이 필요할 때 사용하기 적절한 스토리지입니다. 개요OpenStack Swift는 OpenStack의 Object Storage 서비스를 위한 구성요소로 개발되어 최근 다양한 클라우드 서비스의 Object Storage 인프라로 가장 많이 사용되는 Open Source Project입니다. OpenStack Swift는 동영상,..
-
[Django] static 파일언어/파이썬 & 장고 2017. 1. 26. 17:19
Django 정적 파일Django는 실 서비스 환경에서 사용할 정적 파일을 제공하는 기능을 제공하지 않습니다. 서버에 저장된 정적 파일을 읽어들여서 그대로 웹 클라이언트에 보내기만 하면 그만인 단순한 기능인데도 Django는 그런 기능을 제공하지 않습니다. 왜냐하면 그럴 필요가 없기 때문인데, 앞서 설명한 바와 같이 그런 작업에 대해서는 웹 서버가 전문가이기 때문입니다. 게다가 웹 애플리케이션은 웹 서버와 연결하는 중간 인터페이스를 거치므로 효율이 더 떨어집니다. 하지만, 개발 상황인 경우는 효율보다는 기능(역할)이 중요한 경우가 많습니다. 정적 파일이 제대로 제공되는지 확인하려고 항상 웹 서버를 구동할 필요는 없습니다. Django는 개발 단계에서 쓸 정적 파일 제공 기능을 제공합니다. 성능은 웹 서버..
-
블록 스토리지와 오브젝트 스토리지서버 2017. 1. 23. 10:55
블록 스토리지와 오브젝트 스토리지에 앞서 정형 데이터와 비정형 데이터에 대해 먼저 간략하게 설명하겠습니다.비정형 데이터란?일정한 규격이나 형태를 지닌 숫자 데이터와 달리 그림이나 영상, 문서와 같이 형태와 구조가 각기 다른 구조화 되지 않은 데이터정형 데이터란?텍스트와 같이 일정한 규격과 형태를 가진 데이터 형식블록 스토리지블록 스토리지는 실제 컴퓨터에 추가 하드 디스크를 꼽아서 사용하는 개념과 유사합니다.상세개념클라우드 컴퓨트 서비스에서 할당 받은 인스턴스가 있다고 가정해봅니다. 인스턴스는 실제 물리 컴퓨터를 여러 대 사용할 수 있도록 가상화 시켜 놓은 컴퓨터이므로 실 컴퓨터처럼 하드 디스크를 추가할 수 있습니다. 클라우드 컴퓨팅에서 컴퓨터나 서버를 인스턴스라고 부르는 것처럼, 인스턴스에 추가하는 하드..
-
[Golang] 파라미터 ... 의미언어/Golang 2017. 1. 18. 18:05
Go 패키지를 볼 때, 아래와 같은 문법을 사용한 함수를 심심찮게 볼 수 있습니다.func GetCommandLineMultiArgs(args ... string) { arguments := make(map[string]*string) for _, arg := range args { tempVar := flag.String(arg, "", arg) arguments[arg] = tempVar } flag.Parse() } ...의 의미는 파이썬의 *args와 유사합니다. 파라미터로 입력된 타입의 데이터를 몇 개 받을지 확실하지 않을 때 사용합니다.아래는 String 타입의 데이터를 받는 예제입니다.package main import "fmt" func main() { test("111") test("11..
-
[Golang] init() 함수 호출 시점언어/Golang 2017. 1. 18. 18:00
var WhatIsThe = AnswerToLife() func AnswerToLife() int { return 42 } func init() { WhatIsThe = 0 } func main() { if WhatIsThe == 0 { fmt.Println("It's all a lie.") } }AnswerToLife()함수는 init()함수가 호출되기 이전에 호출이 됩니다. 그리고 init() 함수는 main() 함수가 호출되기 이전에 호출이 됩니다.명심해야 할 것은 main()이 있던 없던 init()함수는 항상 호출됩니다. 따라서 init()함수를 가지고 있는 패키지를 import할 경우 init()함수가 실행됩니다. 또한, 패키지 당 여러 init () 함수를 가질 수 있으며, 모든 변수가 초기..
-
[Python] 스코프 규칙언어/파이썬 & 장고 2017. 1. 18. 14:47
파이썬에는 지역, 전역, 내장 스코프를 지원합니다.지역 스코프: 함수 내부에서 생성되는 스코프전역 스코프: 모듈(파이썬 파일) 스코프내장 스코프: 파이썬 자체 내장 영역 스코프각각의 스코프 특성 때문에 변수의 트성도 지역과 전역으로 나뉘어 집니다. 파이썬이 지역과 전역을 선언할 때 전역변수를 선언하거나 명시할 때 global 키워드를 사용해야 합니다. def func_scope(): print(a) a = 100 func_scope() # 결과 # 100위의 예제와 같이 전역변수를 참조만 하여 사용할 때 (전역변수의 수정이 일어나지 않을 때)는 global 키워드 없이 그대로 사용할 수 있습니다. def func_scope(): print(a) a = 200 print(a) a = 100 func_sco..
-
[Golang]슬라이스 용량 주의사항언어/Golang 2017. 1. 18. 09:44
슬라이스는 가변적으로 변하기 때문에 연속된 메모리 공간을 활용합니다. 따라서 용량에 제한이 있습니다.만약 슬라이스를 make([]int, 5)와 같이 선언하면 용량도 5가 됩니다. 여기에 임의의 정수값 하나를 덧붙인다면 용량이 부족하므로 현재 상주하고 있는 메모리 공간이 아닌 더 넓은 메모리 공간으로 이사를 가게 됩니다.이러한 작업이 빈번하게 일어나면 당연히 성능이 저하됩니다. make([]int, 5, 10)과 같이 가능하면 슬라이스를 사용할 때 최대로 사용할 메모리 공간을 미리 설정하는 것이 성능에 도움이 됩니다.
-
[Golang] 현재 폴더 경로 확인언어/Golang 2017. 1. 17. 17:13
import ( "os" ) func main() { path, _ := os.Getwd() )
-
[Linux] sudo 명령어 실행시 PATH 연결이 안될 때 해결 방법서버 2017. 1. 17. 17:11
우분투에서 어떤 프로그램을 어느 경로에서든지 실행시키기 위해서는 아래와 같이 PATH를 추가합니다.$ export PATH=$PATH:{명령어경로} //명령어 경로에 해당 프로그램이 있는 경로를 넣습니다. 그런데 만약 이 프로그램이 sudo 이용해야만 정상 실행된다면 위에서 PATH를 등록해도 되지 않습니다. 왜냐하면 우분투에서 sudo 명령어를 했을 때 현재 유저의 PATH 환경을 가져오지 않도록 기본 설정되어 있기 때문입니다. 아래와 같이 sudo 상태에서 env를 출력해서 해당 프로그램이 PATH에 있는지 확인합니다. 아래에서 보시면 PATH는 기존 계정의 PATH와는 다름을 알수 있습니다. PATH 뿐만 아니라 다른 환경변수도 조금 다를 수 있습니다. 이 PATH는 /etc/visudoers 에서..
-
CSRF란?보안 & 보안 2017. 1. 16. 20:40
CSRF란?사이트 간 요청 위조(Cross-site Request Forgery)웹 어플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격방법을 의미합니다. 2008년에 발생한 옥션의 개인정보 유출사건에서도 관리자 계정을 탈취하는데 이 방법이 사용되었습니다. 공격의 난이도가 높지 않아 널리 사용되는 방법 중 하나입니다.공격방법이러한 공격을 하기 위하여 해커는 우선 공격을 할 사이트를 먼저 분석합니다. 예를 들어, 나무위키의 경우에 토론은 namu.wiki/topic/ 이라고 시작하며 뒤에 숫자가 붙는 형식인데 이 뒤의 숫자에 패턴이 있습니다.(실제론 토론이 개설된 순서대로 붙는 일련번호..