블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 

'노트'에 해당되는 글 3

  1. 2014.08.18 루비 기본 문법 정리 (1)
  2. 2014.01.24 Vert.x 노트
  3. 2013.02.01 Maven 스터디 노트 (2)
 

루비 기본 문법 정리

프로그래밍/Ruby | 2014.08.18 23:10 | Posted by 조대협

Ruby 언어 기본 문법


루비언어의 특성을 자바나 다른 언어에 비해서 다른 부분만 요약 정리


Class,Object 

- 클래스 변수는 @@를 사용해서 정의 @@name = 'hello'

클래스 메서드는 클래스로만 호출 가능. object에서는 호출 불가

클래스 변수나 메서드에 대해서는 http://dimdim.tistory.com/entry/Ruby-%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9D%EC%B2%B4-%EB%B3%80%EC%88%98 보고 다시 정리 필요


Object

- 생성 : New를 이용해서 class로 부터 생성 Class명.new 로 생성. 예 object=MyClass.new 

- 객체 변수는 @를 사용해서 정의 예 @hello = hello

- Putter와 Setter

class Horse


  def name # getter

    @name

  end


  def name=( value ) # setter

    @name = value

  end


end


Module

- Module : 외부에서 import되는 라이브러리로, Object 처럼 new로 생성이 불가. require를 이용해서 불러옴. include를 이용해서 Statement를 통째로 넣을 수 있음

모듈 예)

#dics.rb

module Dice


  # virtual roll of a pair of dice

  def roll

   p 'im in module'

  end


end


#game.rb

require 'dice'


class Game

 include Dice

end


g = Game.new

g.roll


==> im in module


변수

- 전역 변수는 $를 사용 $global=10

- Type은 define하지 않음 x=10, mystring="hello" 식으로 정의함

- 문자열은 ' 또는 " 양쪽 다 사용 가능함


숫자 타입

- 일반 연산자는 같음 

- ** : 제곱


배열

- 배열 : [] 로 감쌈 - a = [1,2]. print a[0]

- 해쉬 : {} 로 감쌈 Key/value는 =>로 구별  지정 - h = {"name"=>"terry","address"=>"seoul"} , p h["terry"]

- 배열,해쉬 traverse : 

    a.each do |e|

      p e

    end


메서드 정의

- def hello

   # logic

  end

- 리턴 방식은 return 을 그냥 사용 또는 리턴 값을 return 없이 그냥 써도 됨

  def f

    10

  end

  f() #==> 10이 출력됨

- 인자가 있는 경우 def hello(name,age) 

- 디폴트 값이 있는 경우 def hello(name="terry",age) 이경우 호출은 hello(40)

- Variable argument 를 넘길때는 *를 사용함 def sayhello(var,*vars)


Comment

- 주석은 #를 사용함 


Ruby 언어만의 좀 특이한 특성


Block 

- {} 로 둘러싸인 코드 블럭

- yield를 호출하면 코드 블럭으로 치환함 (일종의 include와 같은 효과)

예)

 def func

   p "hello"

   yield

   p "world"

   yield

 end

 func { p "this is code block"}

 실행 결과 =>

"hello"

"this is code block"

"world"

"this is code block"

=> "this is code block" # 이건 리턴 값


Procs

- 일종의 함수 포인트와 같은 개념

- name = Proc.new{ statement로 로직 정의}

  name.call 하면 statement가 실행됨

  

Symbol

- :로 시작함

- 조금더 research 필요


Quick Reference는 http://www.tutorialspoint.com/ruby/를 참조하면 좋음



저작자 표시
신고

'프로그래밍 > Ruby' 카테고리의 다른 글

Ruby 개발환경 설정하기 (윈도우7에서)  (1) 2014.08.18
루비 기본 문법 정리  (1) 2014.08.18

Vert.x 노트

클라우드 컴퓨팅 & NoSQL/Vert.x & Node.js | 2014.01.24 23:25 | Posted by 조대협

1. vert.x를 다운받아서 설치

2. Python을 사용하기 위해서 Jython 을 설치

- Jython 인스톨 방법은

% java -jar jython_installer-2.5.2.jar 


환경변수에 JYTHON_HOME을 Jython 인스톨 디렉토리로 설정


환경 준비 완료


3. 간단한 Python 테스트


※ Company Proxy로 인하여, Vertx 모듈이 설치가 되지 않는 경우. 


방법 1. 

Vertx는 module (라이브러리)를 외부 리포지토리로 부터 읽어와서 자동 설치 하는데,

회사 proxy 등을 사용할 경우 설치가 안되며, 이를 회피하기 위한 방법도 없다. 

방법은 간단한 웹서버를 로컬에 띄운후, mod.zip 파일을 그 디렉토리에 넣어야 한다.

이때 주의할점은 vertx는 repository의 80포트만 참조한다. (다른 포트로 띄우면 안된다).

가장 간단한 방법은 python -m SimpleHTTPServer 80 으로, 서버를 띄우는게 가장 쉽다.


C:\dev\tools\vert.x-1.3.0.final>bin\vertx run app.js -repo localhost

Attempting to install module vertx.web-server-v1.0 from http://localhost/vertx-mods/mods/vertx.web-server-v1.0/mod.zip

Downloading module...

Installing module into directory 'mods'

Module vertx.web-server-v1.0 successfully installed


아니면 직접 mod.zip 을 다운로드 받아서

{Vertx가 설치된 디렉토리}/mods/{모듈명}/ 아래에 압축을 풀어놓아도 된다.

Python이나 Javascript등에 필요한 모듈은 /mods가 아니라 sys-mods/ 아래에 깔아야 한다. 


방법 2. 

다른 방법 http://jcenter.bintray.com/ 에 들어가서 패키지를 찾아서 다운 로드 받은 후에

local maven repository안에 복사해놓는다. C:\Users\bw.cho\.m2\repository\io\vertx\lang-rhino\2.0.0-final

io.vertx~lang-jython~2.0.0-final 의 경우 C:\Users\bw.cho\.m2\repository\io\vertx\lang-jython\2.0.0-final에 lang-jython-2.0.0-final-mod.zip 파일만 복사




4. 로그 확인

로그는 시스템 디폴트 temp 디렉토리 아래 vertx.log로 생긴다.

$VERTX_HOME/conf/loggng.conf 에서 로그 위치 정의 가능

윈도우에서는 %TEMP%\vertx.log 에 생김


 


노트

- Vertx는 내부적으로 in-memory grid인 hazlecast를 사용. 이말은 즉슨 클러스터링에서 멀티 인스턴스 환경에서도 상태 공유가 가능하다는 이야기. 이를 통해서 내부적으로 BUS라는 것을 사용하는 것 같음

- 모듈이 제대로 설치되었는지 확인해보려면, vertx runmod을 이용해서 확인한다.

예) vertx runmod vertx.web-server-v1.0

- 레파지토리로 mvn 레파지토리 사용이 가능함. 레파지토리 경로는 $VERTX_HOME/conf/repo.txt에 지정됨


주의 : 인터넷에 떠돌아 다니는 예제가 1.x 등 예전 버전일 경우가 많음. 샘플코드가 안맞는 경우가 많으니 반드시 버전 확인하고 수행 바람. 




저작자 표시
신고

Maven 스터디 노트

프로그래밍/Spring & Maven | 2013.02.01 00:21 | Posted by 조대협

Maven의 가장큰 특징은 best practice를 기반으로 하며, 마치 표준 처럼 제공하기 때문에, 모든 개발자가 공통으로 사용할 수 있다.
디렉토리 구조, 빌드 배포의 절차등을 템플릿 형태로 제공한다.

mvn archetype:generate \
  -DarchetypeGroupId=org.apache.maven.archetypes \
  -DgroupId=com.mycompany.app \
  -DartifactId=my-app

groupId - 조직이나 도메인을 구별하기 위한 identitifier  (mvn install시 이 구조로  source directory가 생성됨)
version - 빌드 버전 (artifact 버전)
artifactId - project에 의해서 생성되는 파일명 예를들어 jar를 만드는 프로젝트라면 jar 파일 명은
 {artifactId}-{version}.jar 가 된다.


테스트케이스 Naming Rule
  • **/*Test.java
  • **/Test*.java
  • **/*TestCase.java
mvn install하면, 디렉토리 구조가 잡히는데, 이 디렉토리 구조는 http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html 의 규칙을 따르며 구조의 내용은 다음과 같다.

src/main/javaApplication/Library sources
src/main/resourcesApplication/Library resources
src/main/filtersResource filter files
src/main/assemblyAssembly descriptors
src/main/configConfiguration files
src/main/scriptsApplication/Library scripts
src/main/webappWeb application sources
src/test/javaTest sources
src/test/resourcesTest resources
src/test/filtersTest resource filter files
src/siteSite
LICENSE.txtProject's license
NOTICE.txtNotices and attributions required by libraries that the project depends on
README.txtProject's readme


저작자 표시
신고