분류 전체보기
-
Puppet을 이용한 배포기타 2014. 8. 1. 09:00
puppet을 통한 배포 프로세스 단일머신에서 puppet apply를 통한 배포 현재 머신에서 지정된 manifest를 이용해서 puppet을 실행. master/agent 구조의 배포 puppet agent가 서비스 형태로 실행되거나 cron으로 실행되고 있는 상태. 에이전트가 직접 매니페스트 파일을 가져와서 컴파일후 실행하는 것이 아니라, 마스터에서 컴파일된 catalog를 가져와서 실행함. (catalog는 puppet manifest가 컴파일된 문서.) Puppet 컴파일 구조. Puppet Master/agent 구조 로컬머신에서 puppet을 이용해서 설정하기 테스트 puppet apply manifest파일 ex) puppet apply test.pp test.pp 파일 내용 file {'..
-
Puppet 설치 및 실행기타 2014. 7. 31. 09:00
agent/master구조와 standlone 형식으로 설치할 수 있음. 여기서는 agent/master 구조로 설치함. OS 환경 Ubuntu 12.04 64bit 네트워크 환경 마스터에 8140 포트로 접근이 가능해야함. 호스트네임으로 각 장비에 접근이 가능해야함. 마스터의 호스트네임은 puppet이 기본값임.(/etc/hosts를 편집하거나 하면 됨.) Puppet 관련 패키지 설치하기(마스터, 에이전트 공통) 패키지 다운로드 wget https://apt.puppetlabs.com/puppetlabs-release-precise.deb 다운로드한 패키지 설치 sudo dpkg -i puppetlabs-release-precise.deb 필요한 패키지 업데이트 sudo apt-get update P..
-
vagrant 설치 및 실행기타 2014. 7. 24. 09:00
vagrant란? 가상머신을 이용한 개발환경 설정을 자동화해주는 도구. 개발환경이 설정된 가상머신(vagrant box)을 공유해서 팀내부에서 동일한 개발환경하에서 개발이 가능하게 해줌. 준비사항 * vagrant 설치 http://www.vagrantup.com/downloads 에서 OS에 맞는 설치 파일 받아서 설치함. * VirtualBox 설치 https://www.virtualbox.org/wiki/Downloads에서 VirtualBox 받아서 설치 처음 실행 vagrant init hashicorp/precise32 vagrant up 위 명령을 실행하면 vagrantcloud.com에서 이미 설정되어 있는 우분투 VM을 가져와서 설정하게 됨. vagrant ssh #설치한 가상머신에 접속..
-
Postgresql에서의 Transaction 종류PostgreSQL 2014. 6. 18. 09:00
표준 트랜잭션 레벨 표준 트랜잭션에는 4가지 레벨이 있지만 PostgreSQL에서는 3가지만 지원함. phenomena 종류 dirty read : 트랜잭션이 현재 커밋되지 않은 트랜잭션에서 작성된 데이터를 읽는다. nonrepeatable read : 트랜잭션은 자신이 실행된 후 최근 커밋된 다른 트랜잭션이 이전에 읽었던 데이터를 수정했으면 그 데이터를 다시 읽는다. phantom read : 트랜잭션의 로우가 최근 커밋된 트랜잭션에서 변경되어서 조건을 만족시키는 로우의 집합이 변경된 경우, 로우의 집합을 다시 얻기위해 트랜잭션이 쿼리를 다시 실행한다. 표준 SQL 트랜잭션 레벨Isolation LevelDirty ReadNonrepeatable ReadPhantom ReadRead uncommitte..
-
Scala Pattern Matching(패턴매칭)Scala 2014. 6. 13. 09:00
입력받은 매개변수가 어떤 케이스에 해당하는지에 따라서 그 다음 연산을 처리함. 다른 언어의 switch와 비슷한 기능을 하지만, 단순히 int형만을 매치하는 것이 아니라 다양한 타입에 대해서 매치가 가능하기 때문에 더 강력하고 유용함. object MatchTest1 { def matchTest(x: Int): String = x match { case 1 => "one" case 2 => "two" case _ => "many" } //]]> matchTest: (x: Int)String println(matchTest(1)) //]]> one println(matchTest(2)) //]]> two println(matchTest(3)) //]]> many def matchTest2(x: Any): ..
-
Scala Currying(커링)Scala 2014. 6. 11. 09:00
Currying : 인자가 여러개 있는 함수를 하나의 인자를 가진 함수의 체인형태로 만들어 주는 것. f:(X*Y) -> Z 형식의 함수가 있을때 이것을 currying하면 curry(f): X -> (Y - > Z) 형태로 만듬. 예) f(x, y) = y/x 의 원본함수가 있다고 했을때 f(2, 3)의 값을 계산하려고 한다면 우선 2를 x에 대입함. 그렇게 되면 함수는 f(2, y) = y / 2 의 형태가 됨. 이때 f(2, y)를 g(y)라는 새로운 함수라고 볼 수 있음. 결국 g(y) = f(2, y) = y/2 라고 볼 수 있음. 이 g(y)의 y에 3을 입력하면 g(3)이 되고, g(3)는 g(3) = f(2, 3) = 3/2 이런형식이 되는걸 알 수 있음. 코드예) 아래 코드에서 보면 mo..
-
Scala Traits(트레잇)Scala 2014. 6. 6. 09:00
스칼라는 기본적으로 하나의 슈퍼클래스만 가질수 있음. 여러개를 상속하기위해서는 자바의 인터페이스처럼 트레잇을 사용하면 됨. 트레잇이 자바 인터페이스와 다른점은 메소드를 선언하는것뿐만 아니라 구현을해도 된다는점. trait Similarity { def isSimilar(x: Any): Boolean def isNotSimilar(x: Any): Boolean = !isSimilar(x) } class Point(xc: Int, yc: Int) extends Similarity { var x: Int = xc var y: Int = yc def isSimilar(obj: Any) = obj.isInstanceOf[Point] && obj.asInstanceOf[Point].x == x } object Tr..
-
Scala Class, Object(클래스, 오브젝트)Scala 2014. 6. 2. 09:00
클래스 따로 생성자가 없음. 메소드 바깥에 있는 코드들이 생성자 역할을 하게됨. 상속해서 메소드를 재정의할때는 override 를 명시해 줘야 함. 오브젝트(object) 싱글톤인 객체. 스칼라에는 따로 전역 멤버를 가지지 않고 오브젝트를 사용함. 클래스, 클래스상속, 오브젝트 예제. class Point(xc: Int, yc: Int) { var x: Int = xc var y: Int = yc def move(dx: Int, dy: Int) { x = x + dx y = y + dy } override def toString(): String = "(" + x + ", " + y + ")"; } class SubPoint(xc: Int, yc: Int, zc: Int) extends Point(xc,..