프로그래밍/Groovy 34

IntelliJ IDEA 를 이용하여 작성한 Groovy 애플리케이션

JetBrasins 사의 인텔리제이 IDE 는 매우 유명한 자바 IDE 중 하나이다. 상용과 커뮤니티 용이 있는데 인텔리제이 IDE 내려받기에서 내려받으면 된다. IDEA 를 처음 실행할 때 Java 홈 디렉토리와 Groovy 홈 디렉토리를 지정하고, IDEA 창에서는 약간의 아이콘 메뉴를 지정한다. 새 Project 를 생성하고 src 폴더에 Groovy 클래스 GroovyHello 를 생성하여 아래와 같이 작성한다. (Java 소스와 거의 유사한 Groovy 소스이다.) 윈도우즈의 파일 인코딩이 MS949 라 하더라도 IDEA 는 UTF-8 이 디폴트 인코딩이다. Build 메뉴에서 빌드한 후, Run 메뉴에서 실행한다. 빌드하여 생성된 GroovyHello.class 를 명령창에서 java 커맨드로..

이진 파일을 읽어서 16진수로 보여주는 HexView 소스 with Groovy

Groovy 언어 소스: // Filename: testHexView_03.groovy // // Execute: groovy testHexView_03.groovy [filename] // // Date: 2013. 7. 28. import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class TestHexView_03 { public static void printUsage() { System.out.println("groovy testHexView_03.groovy [filename]"); } public static String toHex(byte b) { String s = ""; int x1,..

Groovy 언어로 평방근, 입방근, n제곱근 구하는 함수를 구현하고 테스트하기

음이 아닌 실수 A 의 평방근 sqrt(A) 를 구하는 Heron 의 방법: 반복함수 g(x) = (x + A/x) / 2 를 이용 실수 A 의 n제곱근 root(n, A) 를 구하는 Newton-Raphson 의 방법 반복함수 g(x) = ((n-1)*x + 1/(x**(n - 1))) / n 를 이용 n = 2 인 경우에는 Newton-Raphson 의 방법이 Heron 의 방법과 동일하다. (참조. http://en.wikipedia.org/wiki/Newton's_method ) Groovy 언어로는 Java 언어 처럼 java.lang 패키지의 지수 연산 함수 Math.pow(밑수, 지수) 를 사용하면 된다. 아니면 Python 언어 처럼 (밑수)**(지수) 의 형식의 구문을 사용해도 된다. 하..

Groovy 언어로 역삼각함수, 역쌍곡선함수 값을 구하는 예제

역삼각함수란 삼각함수의 역함수를 의미하고, 역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다. 수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, Groovy 언어에서는 Java 의 java.lang.Math.asin(double) 메소드f를 사용한다. /* * Filename: testArcSine.groovy * * Execute: goovy testArcSine.groovy * * Date: 2013. 1. 2. * Copyright (c) pkim _AT_ scripts.pe.kr */ def sin(double x) { double y = Math.sin(x) return y } def double asin(double x) { double y = Math.asin(x) return y }..

Tomcat 6 또는 Tomcat 7에서 Groovlet을 reload할 때 404 에러가 나는 경우

Groovy 버전이 너무 높으면 나는 에러입니다. 이런 에러를 내지 않는 버전은 현재로서는 1.8.4 와 2.0.1 까지 입니다. 그 이후 버전에서는 *.groovy 로 인식되는 Groovlet 웹페이지를 재방문할 때 404 (Resource Not Found) 에러가 납니다. * web.xml 파일에 추가할 내요 SessionExample SessionExample Groovy groovy.servlet.GroovyServlet GTemplate groovy.servlet.TemplateServlet groovy.source.encoding UTF-8 GTemplate *.ghtml GTemplate *.gsp Groovy *.groovy [참고 자료] Jira 버그 리포트: https://jira.c..

Groovy 언어의 지수 연산자 ** 의 연산 진행 순서에 관한 문제

2**2**5 은 (2**2)**5 와 2**(2**5) 중에 어느 것과 같을까? 즉, 지수 연산자 **는 왼쪽에서 오른쪽으로(left to right) 진행할까? 아니면 오른쪽에서 왼쪽으로(right to left) 진행할까? 만일 2**2**5 == (2**2)**5 라면 그 결과는 2**10 과 같을 것이고, 만일 2**2**5 == 2**(2**5) 라면 그 결과는 2**32 과 같을 것이다. * 미리 결론을 말하면 Groovy 언어에서는 지수 계산의 순서가 다른 언어(Python. Ruby, Maxima 등)의 것과는 다르다는 것이다. 1. groovy 의 경우 groovysh 로 테스트하였다. Groovy Shell (1.7.3, JVM: 1.6.0_17) Type 'help' or '\h' ..

숫자 맞추기 게임 with Groovy

Groovy 언어로 숫자 맞추기 게임을 작성해 보았다.소스에서 눈여겨볼 부분은 15째~17째 줄이다.    def r = new BufferedReader(new InputStreamReader(System.in))    def sbuf = r.readLine()    def guess = sbuf.toInteger()Groovy 언어의 구문 바탕(syntax body)은 Java의 것을 빌려쓰고 있다.소스 파일명: guessNumber01.groovy /* *  Filename: guessNumber01.groovy *  Purpose:  Interatice game guessing a given number.  *                if {CONDITION) { *               ..

스트링 배열에서 스트링 찾기(find) with Groovy

우선 다음 소스는 Java용 소스를 //// 표시가 붙은 줄 한 줄만 수정하여 Groovy영 소스로 고친 것이다. [파일명: testStringFindApp.groovy]------------------------------------------------ import java.util.*; public class TestStringFindApp { public static void main(String[] args) { String[] words = [ "하나", "둘", "셋", "넷", "다섯", "여섯" ] as String[]; //// int where; System.out.print("array: "); printArray(words); where = find(words, "셋"); if (..