Audacity - FFmpeg 라이브러리 추가

기타|2020. 5. 9. 09:50

Audacity(오데시티)를 사용하다보면 FFmpeg 라이브러리(avformat-55.dll)를 요구할 때가 있다. 나는 AAC 파일을 편집하려고 하니까 오류가 발생했다.

FFmpeg 라이브러리는 lame.buanzo.org/#lamewindl에서 다운로드할 수 있다. ffmpeg-win-2.2.2.zip 파일을 다운로드하고 적당한 곳에 압축을 풀면 된다.

Audacity의 편집 > 환경설정 메뉴를 클릭한 후, 다시 라이브러리 메뉴에서 [위치 찾기] 버튼을 클릭하고 FFmpeg를 설치한 폴더에서 avformat-55.dll을 선택하면 된다.

 

도움이 됐다면 공감 버튼을 클릭해 주세요. 감사합니다.

댓글()

유용한 크롬(Chrome) 단축키 - 탭(tab) 이동

기타|2020. 1. 18. 09:39

크롬을 사용하다 보면 키보드로 탭 이동을 해야 할 때가 있다.

단축키 Ctrl+9를 사용하면 탭 개수에 상관없이 마지막 탭으로 이동한다.

단축키 Ctrl+1~Ctrl+8을 사용하면 첫 번째 탭에서 여덟 번째 탭까지 손쉽게 이동할 수 있다.

 

도움이 됐다면 공감 버튼을 클릭해 주세요. 감사합니다.

댓글()

맥 OS(OSX)에서 생성한 파일 이름을 윈도(Windows)에 맞게 변경

기타|2017. 12. 26. 20:23

크롬(Chrome) 이나 파이어폭스(Firefox) 브라우저를 이용하는 방법이다.


크롬(혹은 파이어폭스)에서 F12 키를 누르면 개발자 도구 가 나타난다. 

Console 탭을 클릭해서 이동한 후, 빈 곳을 클릭하면 입력 가능한 상태가 된다. 이곳에 파일명 문자열을 붙여넣고 따옴표로 감싼다. 그리고 바로 뒤에 .normalize() 를 붙여준다. 

아래의 예와 같이 넣으면 된다.

"ㅅㅏㅇㅓㅂㄱㅖㅎㅗㅣㄱㅅㅓ ㅅㅔㅂㅜ.hwp".normalize()

이제 엔터키를 치면 바로 아랫줄에 동일한 문자열이 나오는데 이를 복사해서 사용하면 된다.


만약 OSX 형식으로 다시 변경하고 싶으면 아래와 같이 괄호 안에 NFD 를 추가해서 실행한다.

"사업계획서 세부.hwp".normalize("NFD")

사실 이 방법은 JavaScript의 함수를 이용한 것으로 아래 링크로 가면 더 자세한 내용을 볼 수 있다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/normalize



EOF




태그 : OSX, Windows

댓글()

크롬(Chrome) - 캐시에 있는 이미지 저장

기타|2017. 10. 15. 10:51

Chrome 브라우저의 캐시에 있는 이미지를 저장해야 할 때가 있다.
나의 경우, 주로 지금 보고 있는 웹페이지에 있는 다량의 이미지를 다운로드 하고 싶은 경우다.

아래 링크의 ChromeCacheView 를 다운로드 받아서 사용하면 된다.

ChromeCacheView 홈페이지
ChromeCacheView 다운로드

한글로 사용하고 싶으면, 아래 링크의 한글 언어 파일을 받아서 ChromeCacheView 실행 파일과 동일한 폴더에 두면 된다.

한글 언어팩 다운로드

ChromeCacheView 를 실행하면 캐시에 있는 파일의 목록이 주르륵 나온다.
목록에서 저장을 원하는 파일을 선택한 다음에 File > Copy Selected Cache Files To... 메뉴를 클릭하거나, 툴바의 세번째 버튼을 클릭하면 원하는 폴더에 저장할 수 있다.


도움이 됐다면 공감 버튼을 클릭해 주세요. 감사합니다.

태그 : chrome, image

댓글()

삼성 MP3 플레이어 YEPP YP-T8 케이블 수리(pinout, 핀 배치)

기타|2017. 8. 27. 12:02

MP3 플레이어 YEPP YP-T8 의 데이터 전송 케이블이 없어져서 온라인 쇼핑몰에서 하나 구매를 했는데, 아예 인식조차 안 된다.
상담 전화를 했더니 마지막 하나라서 교환이 불가하니 그냥 버리라고 한다.

핀 배열만 알면 약간의 납땜만 하면 고칠 수 있을 것 같아서 열심히 찾아본다.
2005년에 생산된 제품이니 상당히 불안했는데, 다행히 해외 사이트에서 Service Manual을 찾을 수 있었다.

Samsung YP-T8 Service Manual

이 메뉴얼 43페이지의 Schematic Diagram에 핀 배열이 나와 있다!
배열은 아래와 같은데, 내 기억이 맞는다면 USB Micro-B와 배열 순서가 같다. 아마도 1, 2, 3, 5번 핀을 잘 맞춰서 땜질해 주면 될 것 같다.
참고로 6번은 어댑터로 충전할 때만 사용하는 + 핀이다. 아마도 어댑터는 5, 6번 핀만 사용하는 듯.

  1. VBUS
  2. D-
  3. D+
  4. ID
  5. GND
  6. ADT
  7. DM_H
  8. DP_H


우선 구매한 케이블의 8핀 커넥터 외피를 칼로 가른다.


테스터로 각 핀을 일일이 찍어서 접점을 찾아보니 아래 그림과 같았다. 잘 그린 그림은 아니지만 이해하는 데 문제는 없지 않을까 싶다.

참고만 하시길. 모든 8핀 커넥터가 같은 구조는 아닐 것이니 찍어보는 수고는 필수일 것 같다.

힘들게 납땜을 했는데,

컴퓨터와 MP3를 연결해 보니. 제대로 인식이 안 된다.

원인이 무엇일까 생각해 보니 OTG 케이블처럼 ID 핀을 GND 와 합선해 줘야 하는 게 아니냐는 추측을 하게 됐다.
추측이 맞았다. 합선해 주니 이동식 디스크로 인식이 잘된다.

글루건으로 모양을 만들고 수축 튜브로 지저분한 외양을 가려주고 마무리한다.


EOF

댓글()

PDF 문서에서 영어 사전을 쉽게 사용하자

기타|2017. 7. 11. 15:53

PDF를 문서를 보면서 모르는 단어를 만났을 때, 브라우저를 이용해 온라인 영어사전을 검색해 왔습니다. 문득 PDF 문서에서 툴팁을 띄워서 단어의 뜻을 보여주면 좋을 것 같다는 생각이 들었습니다.

찾아 보니, 지금은 지원이 중단 됐지만 다음에서 꼬마사전이라는 프로그램을 제공했었더군요. 예전 버전을 설치하고 꼬마사전이 지원하는 PDF 뷰어인 Foxit Reader도 설치했지만 동작을 하지 않았습니다. Foxit Reader는 궁합이 맞는다는 버전을 부러 찾아서 설치도 해봤습니다만 여전했습니다. 아무래도 윈도 10(Windows 10)에서는 안되는 것 같습니다.

결국 꼬마사전은 포기했지만 어찌어찌 방법을 찾아 냈습니다. 간단합니다. 모질라 파이어폭스(Firefox)를 설치한 후, Naver English Dictionary (Unofficial) 부가 기능을 설치하면 됩니다.


Firefox 다운로드


Naver English Dictionary를 파이어폭스에 추가

다 됐습니다. 이제 PDF 파일을 Firefox 위에 드래그앤드롭하여 PDF 문서를 열고(혹은 Ctrl+O 단축키 사용), 찾고 싶은 단어를 더블클릭하거나 드래그해서 선택하면 됩니다.


2017-07-11 추가

현재 더블클릭이나 드래그를 통해서는 네이버 사전이 동작하지 않습니다. 아래와 같이 하면 PDF에서 사용 가능합니다.

1. 주소줄에서 about:addons 페이지로 이동합니다

2. Naver English Dictionary (Unofficial) 애드온의 설정 버튼을 클릭합니다

3. Mode 항목을 Classic mode (Drag)로 선택합니다

4. Firefox를 재시작합니다

위의 과정을 완료한 후 PDF 파일을 열어서, 원하는 단어를 Alt + Drag 하면 단어 사전이 동작합니다.


EOF

댓글()
  1. BlogIcon Geronimo 2017.10.09 16:22 댓글주소  수정/삭제  댓글쓰기

    꼬마사전이 지금도 작동하기는 하는데, 어떤 PDF에서는 되고, 어떤 PDF에서는 안되는 것 같네요.

    1. OCR인식이 되어있어야 함.
    2. [추정] 외국 DB에서 받은 논문은 작동함.
    3. but 국내 DB에서 받은 영어논문은 작동 안함.

    혹시 이유를 알 수 있을지 ...

  2. tip-thankyou 2017.11.20 02:12 댓글주소  수정/삭제  댓글쓰기

    좋은 팁 감사합니다!!!

애플 무선 키보드를 윈도(Windows)에서 편리하게 사용하는 방법

기타|2017. 5. 20. 10:27

애플 무선 키보드를 윈도에서 조금이라도 편하게 사용하려면 uxsoft의 Apple Wireless Keyboard를 설치해 보세요.
몇 가지 좋은점이 있습니다.

  • 볼륨 조절, 음악 재생기 제어 등의 기능키를 사용할 수 있습니다
  • DELETE 키를 사용할 수 있습니다(fn + delete)
  • Page Up, Page Down, Home, End 키를 사용할 수 있습니다(추가 설정이 필요합니다)

Apple Wireless Keyboard 는 아래 링크에서 다운로드할 수 있습니다.
http://uxsoft.cz/Projects/AppleWirelessKeyboard

참고로 제 설정의 스크린샷을 남깁니다.

EOF

태그 : Apple, Keyboard

댓글()

XnConvert를 이용한 이미지 일괄 변환

기타|2015. 2. 22. 17:33

브로셔 등의 문서 자료를 카메라로 찍은 후 스마트폰으로 볼 때 가독성이 문제가 되는 경우가 많습니다.
이럴 때 저는 이미지 편집툴을 사용해서 아래와 같이 몇 가지 전처리를 한 후에 사용합니다.

  • 흑백(Greyscale)으로 변환
  • 선명하게 처리(Sharpen)
  • 대비(Contrast) 조정

이렇게 전처리를 하면 글자가 선명해져서 눈이 좀 더 편합니다.
지금까지는 Comic4Portable을 사용해서 위와 같은 전처리를 해왔습니다.

그런데 이미지의 양쪽을 일정 부분 잘라내어야 하는 일이 생겨서 오늘은 다른 툴을 찾아봤습니다.
그래서 찾아낸 툴이 XnConvert! 저에게 필요한 전처리와 잘라내기(Crop)을 모두 지원합니다.
아래 링크에서 내려받아서 무료로 사용할 수 있습니다.

XnConvert 내려받기

간단 사용법

XnConvert를 실행하면 Input 탭에서 시작합니다. 먼저 처리가 필요한 이미지를 끌어다 놓기 하거나 좌측 하단에 있는 Add files, Add folder를 클릭해서 가져옵니다.

Input

가져온 이미지를 일괄 변환하기 위해서 Actions 탭을 클릭하여 이동한 후, 다시 Add action을 클릭하여 Image, Map, Filter, Misc 등의 여러가지 전처리기를 적용합니다. 저는 Filter > Sharpen, Map > Automatic contrast, Image > Change color depth, Image > Crop을 추가하고 각각의 세부 옵션을 조정했습니다(세부 옵션은 아래 이미지를 참조하세요).

Actions

이제 Output 탭을 클릭하여 이동한 후, 변환된 파일을 저장할 위치나 파일명을 조정할 수 있습니다. 저는 D:\ImageOutput로 저장 위치를 지정하고 파일명 형식으로는 원본 파일명 뒤에 _result 문자열을 덧붙이는 {Filename}_result을 선택했습니다.

Output

마지막으로 우하단에 있는 Convert를 클릭하여 이미지 일괄 변환을 시작합니다. 변환이 완료되면 자동으로 Status 탭으로 이동하면서 변환 내역을 보여주며, 지정한 Output folder에는 변환된 이미지가 생성됩니다.

Status


댓글()
  1. 미마 2015.11.10 14:59 댓글주소  수정/삭제  댓글쓰기

    이미지 일괄변환이 꼭 필요했는데 덕분에 좋은 프로그램을 알아갑니다
    감사합니다

네스프레소 16캡슐SET 케이스를 활용한 캡슐 보관함 제작

기타|2014. 10. 13. 15:47

20140927_111032

네스프레소 커피 머신을 구매하면 "16가지 그랑 크뤼 캡슐 박스"라는 것을 줍니다. 이 샘플용 케이스가 꽤나 탄탄하고 예뻐서 캡슐 보관함을 만들어 봤습니다.

20140927_111200

20140927_110319

샘플 케이스에 맞춰서 나무 틀을 만들고.

20140927_110335

20140927_110319

바닥으로 빠지지 않도록 나무 조각으로 막아 줬습니다.

20140927_110350

두 개만 붙였는데 하나쯤 추가 해주는게 좋을 걸 그랬습니다. 들어 올려서 캡슐을 고를라치면 조금 불안정합니다.

20140927_110357

틀은, 외관 상 깨끗하고 크게 힘을 받을일도 없을 것 같아서 모두 본드로 붙여서 완성했습니다.

사방에 있는 안쪽으로 돌출된 부분은 모두 칼로 잘라서 뚜껑이 부드럽게 열릴 수 있도록 합니다. 한 쪽에 두 개씩 모두 8개를 잘라내야 합니다.

20140927_110518

20140927_110455

본드가 굳기를 기다렸다가 캡슐을 가득 채운 샘플 케이스를 넣어 주면 완성입니다.

20140927_111103

댓글()

java.lang.ClassFormatError - 이클립스에서 JUnit 테스트 실행시 발생

기타|2012. 6. 4. 13:43

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletOutputStream

Maven dependency에 아래와 같이 javaee-web-api가 설정되어 있을 때 발생함

<dependency>  
   <groupId>javax</groupId>  
   <artifactId>javaee-web-api</artifactId>  
   <version>6.0</version>  
   <scope>provided</scope>  
</dependency>

아래와 같이 tomcat-servlet-api로 대체하면 오류가 사라진다.

<dependency>  
   <groupId>org.apache.tomcat</groupId>  
   <artifactId>tomcat-servlet-api</artifactId>  
   <version>7.0.8</version>  
   <scope>provided</scope>  
</dependency>

참고링크

http://www.oracle.com/technetwork/articles/java/unittesting-455385.html

The standard Java EE 6 APIs in the Maven repository were processed by a tool, which removes the method body implementation from the bytecode and makes the javaee-web-api dependency unusable for unit testing.

태그 : error, log

댓글()

사용자가 다운로드하는 파일을 기본 프로그램으로 열 수 없습니다

기타|2012. 5. 27. 15:12

“사용자가 다운로드하는 파일을 기본 프로그램으로 열 수 없습니다”

 

Internet Explorer에서 pdf 등의 연결된 프로그램을 열 때 위와 같은 오류 메시지가 발생하는 경우에는,

다음 글을 참고하여 레지스트리를 수정한 후에 다시 시도해본다.

 

http://support.microsoft.com/kb/925832/ko


——

 

발생 상황

 

Content-Disposition: inline; filename=”49573868-c5d1-43b5-8b71-cee0501e8c06.pdf”;

Content-Transfer-Encoding: binary

Content-Type: application/pdf;charset=UTF-8

Content-Language: ko

Content-Length: 32419

 

Content-Disposition 헤더 값이 inline으로 지정되고, Content-Type이 application/pdf로 응답이 왔지만,

다운로드 다이어로그가 뜨면서 위의 경고 메시지가 출력되었음.

댓글()

Google App Engine 1.3.1 실행 시의 오류 - javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found

기타|2010. 2. 28. 23:38

이클립스에 구글 앱 엔진 플러그인을 설치한 후 어플리케이션을 하나 만들고, 결과를 확인하려고 '프로젝트명 우클릭 > Run As > Web Application'을 실행했다.

간단한 테스트 앱이라 잘 될거라 생각했는데, 왠걸 이클립스 콘솔에 오류 로그가 주르륵 출력된다.

2010. 2. 28 오후 3:10:52 com.google.apphosting.utils.jetty.JettyLogger warn

경고: failed com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@ca0115{/,D:\dev\WORKSPACE_APPENGINE\JavaShop\war}

javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found

    at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:134)

    at org.mortbay.xml.XmlParser.setValidating(XmlParser.java:92)

    at org.mortbay.xml.XmlParser.<init>(XmlParser.java:84)

    at org.mortbay.jetty.webapp.TagLibConfiguration.configureWebApp(TagLibConfiguration.java:202)

    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1215)

    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)

    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)

    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)

    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)

    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)

    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)

    at org.mortbay.jetty.Server.doStart(Server.java:217)

    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)

    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:188)

    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:147)

    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:219)

    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:162)

    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)

    at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:113)

    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89)


The server is running at http://localhost:8888/

어쨌든 서버는 시작됐다니까 주소줄에 'http://localhost:8888/'을 넣고 이동해 봤다. 역시 제대로 안뜬다.

구글링 해보니까 'war/WEB-INF/lib' 디렉토리에 xercesImpl.jar 파일을 넣으면 해결된단다. 구글 앱은 XML Parser 관련한 이런 저런 문제가 좀 있는 것 같다.

서버를 죽이려고 구글 앱을 위한 Server View가 있나 찾아 봤는데, 그런건 없다. 콘솔 우측의 Terminate 버튼을 눌러서 서버를 중지한 후 xercesImpl.jar를 복사해 넣어 주고 재시작.

잘 된다.

댓글()

Groovy 1.5가 릴리즈 되었습니다

기타|2007. 12. 12. 10:04
여행을 다녀온 후 조금 멍한 기분으로 infoq.com에 갔더니, 지난 주말에 Groovy 1.5가 릴리즈 되었다는 소식이 있더군요. 자바5에 대한 지원이 강화된 점이 눈에 띕니다.

http://www.infoq.com/articles/groovy-1.5-new

태그 : Groovy, 그루비

댓글()

Groovy 처음 시작하기 : Scriptom 설치

기타|2007. 11. 1. 23:40

Groovy에서 COM이나 ActiveX를 사용할 수 있게 해주는 모듈인 Scriptom을 설치해 보겠습니다.

Scriptom의 설치는 매우 간단합니다. Groovy를 설치한 후 몇 개의 관련 파일을 설치 폴더에 복사해 주기만 하면 됩니다.

Scriptom 설치를 위한 선행조건

  • Java 1.5 이상이 설치 되어 있어야 합니다(Scriptom 2.0은 Jacob 1.4를 사용하기 때문입니다)
  • Groovy 1.1이 설치 되어 있어야 합니다
  • GROOVY_HOME 환경 변수가 설정되어 있어야합니다(Groovy 설치 폴더를 가리키도록)

Scriptom 설치

먼저 Scriptom 페이지에서 가장 최신인 Scriptom 2.0 alpha Scriptom 2.0 (Beta) 버젼을 다운로드 다운로드 받습니다. 보통은 알파 버젼을 추천하지는 않겠지만, Scriptom은 2.0 버젼 부터는 하위 호환성을 보장하지 않기 때문에 2.0 버젼부터 시작하는 것을 추천합니다.

다시 말씀드리지만 설치는 간단합니다. 다운로드 받은 scriptom-2.0-alpha.zip 파일을 원하는 경로에 압축을 풀어주고 새로 생긴 폴더에 있는 jacob.dll, scriptom-2.0-alpha.jar 두 개의 파일을 복사해 주기만 하면 됩니다.
만약 jacob이 의존하고 있는 라이브러리가 PC에 설치가 안된 상태라서 '응용 프로그램 구성이 올바르지 않기 때문에...' 메시지를 보게된다면 Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)를 설치해야할 수도 있습니다

저는 D:\Repository\Groovy\zip\scriptom-2.0-alpha 폴더에 압축을 풀었습니다.

사용자 삽입 이미지

D:\Repository\Groovy\zip\scriptom-2.0-alpha 폴더에 압축을 풀었습니다


이제 압축을 풀어 둔 폴더에 있는 scriptom-2.0-alpha.jar 파일을
%GROOVY_HOME%\lib 폴더로 복사합니다(scriptom-2.0-alpha.jar 파일은 이전 버젼과는 다르게 scriptom이 의존하고 있는 jacob 라이브러리까지 포함하여 패키징되었습니다).
제 시스템환경변수에는 %GROOVY_HOME%이 'D:\SDK\groovy-1.1-rc-1' 폴더로 지정 되어 있어서 'D:\SDK\groovy-1.1-rc-1\lib' 폴더로 복사했습니다(환경변수 설정에 대해서는 이전 글을 참고하세요).

사용자 삽입 이미지

scriptom-2.0-alpha.jar 파일 복사


다음으로 jacob.dll 파일을 %GROOVY_HOME%\bin 폴더로 복사합니다. java.library.path에 포함되는 다른 곳(예를 들면 'C:\WINDOWS\system32')에 복사해도 됩니다.

사용자 삽입 이미지

jacob.dll 파일 복사


이제 Scriptom 설치는 완료 되었습니다. 간단하죠? :)

Caught: java.lang.UnsatisfiedLinkError: D:\SDK\groovy-1.1-rc-1\bin\jacob.dll: 응용 프로그램 구성이 올바르지 않기 때문에 이 응용 프로그램을 시작하지 못했습니다.
위와 같은 오류 메시지를 보게 되면 Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)를 설치합니다.


설치가 완료 됐으니까 정말 잘 된건지 확인해 보도록 하겠습니다.
먼저 명령 프롬프트를 하나 띄운 후, 압축을 풀어 둔 폴더 하위의 examples\ie 폴더로 이동합니다. 저는 'D:\Repository\Groovy\zip\scriptom-2.0-alpha\examples\ie'로 이동했습니다.
groovy IE.groovy 명령을 실행한 후, 익스플로러 창이 열리면서 http://glaforge.free.fr/weblog 사이트로 이동하면 제대로 설치에 성공하신 겁니다.

사용자 삽입 이미지

+

아침에 출근해 보니 몇시간 사이에 alpha 버젼이 없어지고 Beta 버젼으로 변경되었더군요. 급하게 링크만 수정했습니다

댓글()
  1. BlogIcon 지니랜드 2008.03.29 20:35 댓글주소  수정/삭제  댓글쓰기

    제가 가진 버전은 예제에서 ie.Navigate "http://glaforge.free.fr/weblog" 에 괄호를 넣어야 에러가 안나더라구요. ie.Navigate ("http://glaforge.free.fr/weblog" )

Practical JRuby on Rails Web 2.0 Projects 출간

기타|2007. 10. 30. 11:41
Apress에서 JRuby 책이 출간되었습니다.
제목은 Practical JRuby on Rails Web 2.0 Projects입니다. 책의 소개 페이지로 가서 좌측의 Book Extras 메뉴를 보면 목차, 소스코드, 1장 샘플 챕터가 있습니다. 그리고 TheServerSide.COM의 Practical JRuby on Rails Book Excerpt 페이지에 가시면 3장, 4장을 다운 받을 수 있습니다. :)

댓글()

Groovy 처음 시작하기 : 설치

기타|2007. 10. 26. 18:02
Scriptom 2.0 alpha에 관한 글을 작성하고 보니 너무 뜬금 없는 얘기가 된 것 같아서, 자바개발자를 위한 Groovy 설치법을 간단히 설명해 보려고 합니다. 그리고 아마도 다음 글에서는 Scriptom 설치에 관해서 쓸 것 같습니다.

Groovy 설치를 위한 선행조건
  • Java SDK 1.4 버젼 이상이 설치되어 있어야합니다
  • JAVA_HOME 환경 변수가 설정되어 있어야합니다(Java SDK의 설치 디렉토리를 가리키도록)
Groovy 설치

당연한 얘기지만 Groovy 홈페이지에서 배포본을 다운 받아야 합니다. 지금(2007.10.28) 받을 수 있는 가장 최신의 버젼이 Groovy 1.1-rc-1이라서 저는 이 배포본으로 예를 들도록 하겠습니다.
다운로드 받은 압축파일을 설치를 원하는 위치에 압축을 풀어줍니다. 저는 'D:\SDK' 디렉토리에 풀었습니다.

압축파일을 풀어준다

D:\SDK 디렉토리에 압축파일을 풀었다


이제 압축을 푼 후 새로 생성된 'D:\SDK\groovy-1.1-rc-1' 디렉토리를 Groovy의 홈디렉토리로 설정합니다. "내 컴퓨터" 아이콘을 우클릭한 후 "속성" 선택 - "고급" 탭 선택 - "환경 변수" 버튼을 클릭한 후 가장 아래에 있는 "새로 만들기" 버튼을 클릭합니다. 새 시스템 변수 창이 뜨면 변수 이름에 GROOVY_HOME을, 변수 값에 Groovy 배포본의 압축을 푼 후 생긴 디렉토리의 전체 경로를 입력합니다. 저는 'D:\SDK\groovy-1.1-rc-1'을 입력했습니다.

사용자 삽입 이미지

GROOVY_HOME 시스템 환경변수 설정


마지막으로 %GROOVY_HOME%\bin 디렉토리를 Path 시스템 환경변수에 추가해줍니다. 이미 존재하는 Path 변수를 선택하고 "편집" 버튼을 누른 후, 이미 입력되어 있는 변수 값의 끝에 세미콜론(;)을 추가한 후 다시 %GROOVY_HOME%\bin을 입력한 후 확인 버튼을 누릅니다. 중간에 추가하던 마지막에 추가하던 이미 입력된 다른 경로명과 세미콜론으로 경계를 지어 주어야한다는 점만 주의하면 됩니다.

사용자 삽입 이미지

Path에 %GROOVY_HOME%\bin을 추가


이제 명령 프롬프트 창을 하나 실행한 후, groovy -version 명령을 실행 해 봅니다.
"Groovy Version: 1.1-rc-1"이 출력되면 Groovy를 제대로 설치한 겁니다.

사용자 삽입 이미지

정상 설치 여부 확인





태그 : Groovy, 그루비

댓글()

Scriptom 2.0 alpha

기타|2007. 10. 25. 17:42
Groovy 홈페이지에 오래간만에 들어가 봤더니 Scriptom 2.0 alpha버젼이 나와있더군요.  Scriptom은 ActiveX나 COM 컴포넌트를 Groovy에서 접근할 수 있게 해주는 훌륭한 모듈입니다.
루비의 'win32ole'로 엑셀을 만지는 재미를 Groovy에서도 느낄 수 있을까해서 예전에 사용해 봤었는데 루비와 비교해볼 때 기능이 약했던 기억이 있습니다.
하지만 Scroptom 2.0은 1.2 버젼과 비교해서 많은 면에서 발전이 있다고 합니다. 아직 alpha 버젼이지만 코드는 안정화된 상태고 기능구현도 완료되었다고 해서 금새 다운 받아서 예제를 실행시켜 봤습니다.

Scriptom 페이지에 Quick Start 예제로 나와있는 그루비 코드는 examples/speech 폴더에 각각 'Speak.groovy', 'SpeechInterfaces.groovy'라는 파일로 있었습니다. Quick Strat 예제답게 잘 실행됩니다.
 그런데, 가장 완성도 높은 예제라고 소개된 examples/excel 폴더의 'ExcelReport.groovy'는 아래와 같이 오류가 발생합니다.

D:\Repository\Groovy\zip\scriptom-2.0-alpha\examples\excel>groovy ExcelReport.groovy
  CREATING A SPREADSHEET FROM A TEMPLATE:
  Opening Excel template, inserting data, and creating a chart.
  The output document is 'D:\Repository\Groovy\zip\scriptom-2.0-alpha\examples\excel\report.xls'.
Caught: com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Item
Description: 매개 변수의 개수가 잘못되었습니다.
        at ExcelReport$_run_closure2.doCall(ExcelReport.groovy:30)
        at ExcelHelper$_create_closure1.doCall(ExcelHelper.groovy:101)
        at ExcelHelper$_create_closure1.doCall(ExcelHelper.groovy)
        at ExcelHelper.create(ExcelHelper.groovy:69)
        at ExcelReport.run(ExcelReport.groovy:28)
        at ExcelReport.main(ExcelReport.groovy)

COM에서 발생한 예외라니! 나보고 어쩌라고...... 줄 30을 찾아보니 다음과 같았습니다.

def worksheet = workbook.Worksheets.Item[1]

한참을 멍하니 있다가, Excel Workbook의 Worksheets 컬렉션에서 Item을 호출하는건 Excel API를 바로 호출하는거니까 일반적인 컬렉션을 다루는 문법과는 다를 것이라는 생각에 대괄호를 소괄호로 바꿨습니다.

def worksheet = workbook.Worksheets.Item(1)
               .
               .
               .
def worksheet = workbook.Worksheets.Item('DATA') // 줄95

저장하고 다시 실행해 보니. 이번에는 줄 61에서 예외가 발생했습니다. 'Item'을 키워드로 파일 내용을 검색하다보니 눈에 띄었던 부분이었습니다.

worksheet.Cells.Item[row+1,1] = "$row/1/2007"

줄 61과 줄 65를 마찬가지 형식으로 변경했습니다.

worksheet.Cells.Item(row+1,1) = "$row/1/2007"
               .
               .
               .
worksheet.Cells.Item(row+1,col+1) = (row + col)

엉뚱한 에러가 납니다.

D:\Repository\Groovy\zip\scriptom-2.0-alpha\examples\excel>groovy ExcelReport.groovy
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, ExcelReport.groovy: 61:
"worksheet.Cells.Item((row + 1), 1)" is a method call expression, but it should be a variable expression at line: 61 column: 35. File: ExcelReport.groovy @ line 61, column 35.
       worksheet.Cells.Item(row+1,1) = "$row/1/2007"
                                                                ^
1 error

Item Property를 호출하여 Range 객체를 꺼낸 것까지는 좋았는데 문자열 할당을 하려면 Value Property에 해야한다는걸 깜빡했나 봅니다.

worksheet.Cells.Item(row+1,1).Value = "$row/1/2007"
               .
               .
               .
worksheet.Cells.Item(row+1,col+1).Value = (row + col) // 줄65

이제야 잘되는군요. :)

D:\Repository\Groovy\zip\scriptom-2.0-alpha\examples\excel>groovy ExcelReport.groovy
  CREATING A SPREADSHEET FROM A TEMPLATE:
  Opening Excel template, inserting data, and creating a chart.
  The output document is 'D:\Repository\Groovy\zip\scriptom-2.0-alpha\examples\excel\report.xls'.
        EVENT Change (1,2) = 1/1/2007
        EVENT Change (2,2) = 2.0
        EVENT Change (3,2) = 3.0
        EVENT Change (4,2) = 4.0
        EVENT Change (5,2) = 5.0
        EVENT Change (6,2) = 6.0
        EVENT Change (1,3) = 2/1/2007
               .
               .
               .

가장 완성도 높은 예제라고 했는데 왜 오류가 있을까요? 단순히 추측해보면 Groovy에서 List나 Map을 다루는 방식으로 COM의 Property(indexed properties)를 다룰 수 있도록 한다는 Scriptom 2.0의 개선사항 반영이 제대로 안된게 아닌가하는 생각이 듭니다.

+

COM Methods and Properties in Scriptom 이 문서를 보니까 확실히 알파버젼이라서 생기는 문제군요. 그렇다면 베타 버젼쯤에서는 이 예제가 멀쩡히 잘 돌아가겠지요?

+

2007.11.02
베타 버젼이 나와서 테스트 해 봤습니다. 줄 30과 줄 95의 소스가 약간 변경('workbook.Worksheets'가 'workbook.Sheets'로) 되었지만 여전히 제 PC에서는 같은 오류가 발생합니다. 'workbook.Worksheets'를 'workbook.Sheets'로 변경하지 않고 괄호 등만 위의 방식으로 변경하면 잘 실행됩니다만...... 이거 설마 제 PC에서만 안되는건가요? Excel 2003 버젼 쓰고 있습니다만...... :(

댓글()

UTF8과 UCS2 간에 서로 변환할 수 없습니다

기타|2007. 10. 4. 10:19
java.sql.SQLException: UTF8과 UCS2 간에 서로 변환할 수 없습니다
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:189)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:231)
    at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:957)
    at oracle.sql.LobPlsqlUtil.plsql_read(LobPlsqlUtil.java:202)
    at oracle.jdbc.dbaccess.DBAccess.lobRead(DBAccess.java:700)
    at oracle.sql.LobDBAccessImpl.getChars(LobDBAccessImpl.java:210)
    at oracle.sql.CLOB.getChars(CLOB.java:247)
    at oracle.sql.CLOB.getSubString(CLOB.java:159)
  • CLOB 컬럼에 정상적으로 insert된 컨텐츠가, 읽어올 때에는 오류가 발생 함.
  • OC4J 10g 버젼에서 오래된 jdbc driver(classes12.jar)를 사용하였을 때 발생 하는 것으로 추정.
  • Oracle 10g Release 2 버젼용 jdbc driver(ojdbc14.jar)로 변경하자 정상적으로 작동함.


태그 : clob, JDBC, oracle

댓글()