Programming/Groovy9 (Groovy) Rotate Backup file or Log file Windows 에서 백업파일을 Rotate 하여 최근 N일 동안의 백업파일을 유지하도록 하였다.final DAY_LIMIT = 14 // N일final TARGET_DIR = "M:/"def today = new Date()def command = "cmd /c m: & cd \\ & mkdir ${today.format('YYYYMMdd')} & move backup\\*.tib ${today.format('YYYYMMdd')}"command.execute().waitFor()new File(TARGET_DIR).eachFile { path -> if (path.directory && path.name =~ /201[2-9]\d{4}/) { def lastModified.. Programming/Groovy 2012. 6. 28. (Groovy) 여러 디렉토리의 사이즈를 구하고 크기 순으로 정렬하기 Ruby 버전에 이어서 Groovy 버전도 만들어보았다. 거의 생김새가 비슷한 언어여서, 몇가지만 수정하면 바로 동작한다.def FOLDER_LIST = [ "/path/to1", "/path/to2", "/path/to3", "/path/to4", "/path/to5", ]def startDate = new Date().format('yyyy/MM/dd HH:mm:ss')def size_folder_list = []FOLDER_LIST.each { folder_name -> def folder_siz.. Programming/Groovy 2012. 6. 15. (Groovy) Grails : ROOT Context 로 Grails App 실행하기 Grails 로 App 을 만들어서, 실행을 하면, App Name 을 콘텍스트로 사용하여 아래와 같이 접속하여야 한다. URL 뒤에 콘텍스트 이름까지 입력하려니 많이 번거롭다.http://localhost:8080/myApp사이트를 만들면 ROOT 콘텍스트로 바로 접속할 수 있도록 하여, http://localhost:8080/ 로 접근을 하려는 것이 보통일 것이다.이를 위해서 2가지 방법이 제공이 되는데, 첫번째는 application.properties 파일에 아래 내용을 추가 하는 것 :app.context=/두번째 방법은 Config.groovy 에 아래 내용을 추가하는 것이다grails.app.context = "/" Programming/Groovy 2012. 5. 23. (Groovy) 버전 정보 가져오기 Groovy 스크립트를 실행하면서 현재 실행되고 있는 Groovy 인터프리터의 버전을 알고 싶을 때, 버전에 따라서 아래와 같이 할 수 있으며, 현재 주력 버전이 1.8.6 이고, 곧 2.0.0 도 나올 것이라서 거의 대부분 첫번째 방법으로 사용하면 될 것이다. [groovy 1.6.6 and 1.7-rc-1 released 이후의 방법]import groovy.lang.GroovySystemprintln GroovySystem.version// orprintln GroovySystem.getVersion()if (GroovySystem.version >= "1.8.0") println "1.8.0 이상" [예전 방법]import org.codehaus.groovy.runtime.InvokerHel.. Programming/Groovy 2012. 5. 23. Groovy : 수정된지 N일이 넘는 파일들 삭제하기 특정 디렉토리 밑에 있는 파일 중에서 일정시간이 지난 파일을 삭제하고자 할 때 필요한 스크립트이다. 파일 서버를 관리하다보면, 주기적으로 필요 없는 파일들을 삭제해야 하는데, Unix(Linux) 환경에서는 find, rm 등을 조합하여 사용할 수도 있다. 그런 것이 여의치 않고, 굳이 Groovy 를 이용하려고 할 때, 활용하면 좋겠다.final DAY_LIMIT = 2 // N일final TARGET_DIR = "./"println("[Deleted Files]\n")new File(TARGET_DIR).eachFileRecurse { file -> if( file.file ) { def lastModified = new Date(file.lastModified()) d.. Programming/Groovy 2012. 3. 9. Groovy : 클로져(반복자)에서 빠져나오기 보통의 반복문에서 중간에 빠져나오려면 break 를 사용하지만, 클로져(반복자)에서 break를 사용하면 에러가 발생한다. 다음 코드를 작성하여 실행해보면, 에러를 확인할 수 있을 것이다.10.times { item -> println item if(item == 6) break}이에 대한 대안으로는 Exception 을 사용하면 된다. 이제 다시 Exception 을 이용해서 클로져를 빠져나오는 코드를 보자. 좀 번거롭기는 하지만, 확실하게 break 와 같은 효과를 볼 수 있다.try { 10.times { item -> println item if(item == 6) throw new Exception("break") }} catch (e) {} Programming/Groovy 2012. 3. 7. Groovy : 100MB 이상의 파일중에서 중복된 파일 찾기 Groovy 에서도 100MB 넘는 파일 중에서 중복된 파일을 찾는 프로그램을 만들어보았다. 모든 언어를 공부하면서 만들어보는 것인데, MD5 Checksum 이 같으면 중복된 파일로 인식하고, 카운트하여 정렬하고 출력하도록 하였다. 파일에 대한 MD5 Checksum 기능이 없어서 직접 구현되었고, 이 부분을 제외하면 Ruby 와 거의 비슷하다.// -----------------------------------------------------------------------------// 100MB 이상의 파일중에서 중복된 파일 찾기// ----------------------------------------------------------------------------- import java.se.. Programming/Groovy 2012. 3. 7. Groovy : 파일 md5sum 구하기 Groovy에서 md5sum 을 구하려면, Java 의 MessageDigest 모듈을 이용해야 한다. 안타깝게도 file 에 대한 md5 checksum 을 구하는 부분은 구현되어 있지 않기 때문에 별도로 구현해야 한다. 다른 언어에서의 방법과 유사하므로 그리 어렵지는 않다. Java 의 모듈을 그대로 이용해야하기 때문에, 구현은 Java 의 그것과 거의 같다.import java.security.MessageDigest def md5sum(final file) { MessageDigest digest = MessageDigest.getInstance("MD5") file.withInputStream() { is -> byte[] buffer = new byte.. Programming/Groovy 2012. 3. 6. Groovy : 하위 디렉토리의 모든 파일 출력하기 Groovy에서 하위 디렉토리의 모든 파일을 출력하는 방법을 알아보자. 인터넷에서 검색하면 금방 나오는 내용이지만, 일단 적어둔다. new File("C:\\").eachFileRecurse { filename -> println "Filename: $filename"} Programming/Groovy 2012. 3. 5. 이전 1 다음