삼실에서 나 뭐하고 있는거지?
하늘은 꾸리꾸리하고.. 아무것도 하기 귀찮네..
빨랑 끝내고 집으로 고고싱~ 하면 될 것을
이렇게 밍기적 대고 있는건 뭐냐..
상콤한 노래 들으며 빨랑 끝내고 집으로 고고싱~
해야쥐~~~~
ZipOutputStream
및 java.util.zip
패키지에 대해 구체적으로 다룬다.
ZIP 또는 JAR 파일의 생성을 살펴보기 전에 그 목적을 언급하는 것이 중요하다. ZIP 파일은 패키징 메커니즘을 제공하여 여러 파일을 하나의 파일로 묶을 수 있게 한다. 따라서 파일 그룹을 웹에서 다운로드해야 할 경우 이 파일들을 하나의 ZIP 파일로 패키지하여 단일 파일로 쉽게 전송할 수 있다. 이 패키지 파일은 디렉토리 계층구조 같은 추가 정보를 포함할 수 있으므로 압축을 풀 때 애플리케이션 또는 시리즈의 자원에 필요한 경로를 유지할 수 있다.
이 팁에서는 ZIP 파일 사용의 세 가지 측면을 다룬다. 즉, ZIP 파일 생성, ZIP 파일에 파일 추가 및 해당 추가 파일 압축에 대해 다룬다.
우선 ZIP 파일을 생성할 때는 ZIP 스트림이 생성된다. ZipOutputStream은 송신 바이트 압축을 위한 스트림을 제공한다. 다른 OutputStream
을 받는 ZipOutputStream
의 단일 구성자가 있다.
public ZipOutputStream(OutputStream out)
구성자 인수가 FileOutputStream
유형이면 ZipOutputStream
이 작성한 압축 바이트는 파일에 저장된다. 하지만 ZipOutputStream
을 파일과 관련해서만 사용할 수 있는 것은 아니다. 소켓 연결 또는 기타 일부 비파일 중심 스트림으로부터 나오는 OutputStream
을 사용할 수도 있다. 따라서 파일 중심 ZipOutputStream
의 경우 일반적인 사용법은 다음과 같다.
String path = "afile.zip";
FileOutputStream fos = new FileOutputStream(path);
ZipOutputStream zos = new ZipOutputStream(fos);
생성된 후에는 ZipOutputStream
에 바이트를 작성하는 것으로 충분하지 않다. 대신 출력 스트림을 구성요소의 컬렉션으로 다루어야 한다. ZipOutputStream
의 각 구성요소는 ZipEntry
와 쌍을 이룬다. 이 ZipEntry를 생성하고 ZipOutputStream
에 추가한 후에 해당 컨텐츠를 스트림에 실제로 작성해야 한다.
String name = ...;
ZipEntry entry = new ZipEntry(name);
zos.putNextEntry(entry);
zos.write(<< all the bytes for entry >>);
각 엔트리는 전체 스트림에서 마커 역할을 하며 라이브러리 파일에서 엔트리와 관련된 바이트를 찾을 수 있다. ZIP 파일이 생성된 후 엔트리 컨텐츠를 도로 가져와야 할 경우 관련 입력 스트림을 요청하기만 하면 된다.
ZipFile zip = "afile.zip";
ZipEntry entry = zip.getEntry("anEntry.name");
InputStream is = zip.getInputStream(entry);
ZIP 파일을 생성하고 해당 파일에 엔트리를 추가하는 방법을 살펴본 이 시점에서 java.util.zip 라이브러리가 ZipOutputStream
의 추가 엔트리에 대해 일정 수준의 제어를 제공한다는 것을 지적할 필요가 있다. 먼저, 엔트리를 ZipOutputStream
에 추가하는 순서는 엔트리가 .zip 파일에 실제로 위치하는 순서이다. ZipFile
의 entries()
메소드에 의해 반환된 엔트리의 열거를 조작하여 영문자 또는 크기 순서대로 목록을 생성할 수도 있지만 엔트리는 출력 스트림에 작성된 순서대로 저장되어 있다.
ZIP/JAR 파일에 추가된 파일은 개별적으로 압축된다. 라이브러리 패키지를 전체적으로 압축하는 Microsoft CAB 파일과 달리, ZIP/JAR 파일 내의 파일들은 각각 별도로 압축되거나 압축되지 않는다. ZipOutputStream
에 ZipEntry
를 추가하기 전에 해당 연관 바이트의 압축 여부를 결정해야 한다. ZipEntry
의 setMethod
메소드를 사용하면 두 가지 사용 가능 압축 형식 중에서 어떤 형식을 사용할지 지정할 수 있다. 압축되지 않은 파일을 원하면 ZipEntry
의 STORED 상수를 사용하고, 압축된 버전을 원하면 DEFLATED 설정을 사용한다. 압축 효율성은 제어할 수 없다. 이는 연관 엔트리의 데이터 유형에 좌우된다. 일반 텍스트는 원래 크기의 80% 정도까지 쉽게 압축할 수 있지만 MP3 또는 JPEG 데이터의 압축률은 이보다 현저히 떨어진다.
모든 파일을 압축하는 게 당연하다고 생각할 수도 있지만 파일을 압축하고 푸는 데에는 시간이 소요된다. 생성 시점에서 압축 작업에 너무 많은 시간과 자원이 소요될 경우 전체 파일 데이터를 STORED 형식으로 저장하여 원시 바이트를 저장하는 것이 나은 경우가 있다. 압축 해제의 경우에도 마찬가지이다. 물론, 압축되지 않은 파일은 용량이 더 크므로 파일 전송 시 더 많은 대역폭을 사용하고 더 많은 디스크 공간을 차지하므로 이에 따른 비용을 지불해야 한다. ZipFile 전체가 아니라 각 엔트리에 대한 설정을 변경해야 한다는 것을 유념한다. 하지만 각 엔트리에 대해 각기 다른 설정을 사용하는 것보다 전체 ZipFile을 압축 또는 비압축하는 것이 보다 일반적이다.
압축 방법으로 STORED 상수를 사용할 경우 알아 두어야 할 한 가지 사항이 있다. 엔트리가 압축될 때 자동으로 설정되는 ZipEntry
의 특정 속성을 명시적으로 설정해야 한다. 해당 속성은 엔트리의 입력 스트림에 대한 체크섬, 압축 크기 및 크기이다. 입력 파일인 경우 크기 및 압축 크기는 바로 파일 크기가 될 수 있다. 체크섬을 계산하려면 ava.util.zip
패키지의 CRC32
클래스를 사용한다. checksum
값을 무시하기 위해 단순히 0 또는 -1을 전달할 수는 없다. ZIP 파일을 작성하고 나중에 해당 파일을 읽을 때 입력사항을 검증하기 위해 CRC 값이 사용된다.
ZipEntry entry = new ZipEntry(name);
entry.setMethod(ZipEntry.STORED);
entry.setCompressedSize(file.length());
entry.setSize(file.length());
CRC32 crc = new CRC32();
crc.update(<< all the bytes for entry >>);
entry.setCrc(crc.getValue());
zos.putNextEntry(entry);
예 를 들어, 다음 프로그램은 STORED 압축 메소드를 사용하여 일련의 파일을 결합한다. 프로그램의 첫 번째 인수는 생성할 ZIP 파일이 된다. 나머지 인수는 추가할 파일을 나타낸다. 생성할 ZIP 파일이 이미 존재하면 프로그램은 파일을 수정하지 않고 종료된다. 존재하지 않는 파일을 ZIP 파일에 추가하는 경우 프로그램은 존재하지 않는 파일을 건너뛰고 나머지 명령줄 인수를 생성된 ZIP에 추가한다.
JAR 파일의 봉합 및 버전 지정을 비롯한 자세한 내용을 보려면 The Java Tutorial의 JAR Files 단원에서 Packing Programs를 참조한다.
원문 출처 : http://www.sdnkorea.com/blog/398
BEA 웹로직에서 JMS 서비스 구현에관한 Dev2Dev 링크:
http://www.dev2dev.co.kr/devcenters/category.jsp?category=jms
BMT Message-Driven Bean 과 Spring을 이용한 고성능 메세지 프로세싱
http://www.dev2dev.co.kr/pub/a/2006/01/custom-mdb-processing.jsp
WebLogic JMS 프로그래밍 하기
http://edocs.bea.com/wls/docs81/jms/index.html (weblogic 8.1 )
http://edocs.bea.com/wls/docs61/jms/index.html (weblogic 6.1 )
BEA 웹로직8.1 JMS설정하기 :: JMS and WebLogic Server
http://edocs.bea.com/wls/docs81/ConsoleHelp/jms_config.html (weblogic 8.1 )
http://edocs.bea.com/wls/docs61/adminguide/jms.html (weblogic 6.1 )
화니님의 마이센스 ( MySense ) ::
http://adsensekr.com/
http://wanny.tistory.com/396
http://www.soonjin.net/128
애드로거( AdLogger ) ::
http://www.engagestory.com/tt/217
http://offree.net/541
http://blog.iteach4u.net/dikafryo/entry/태터툴즈에-구글-ADSense-광고-플러그인부정클릭방지-AdLogger-v14-버전
새벽 두시가 넘은 시간에 보기 시작해서 화면에서 눈을 뗄 수가 없을 정도로 몰입 해서 본 영화.
개봉 당시에 극장에서 꼭 보고싶었는데, 이런저런 이유로 보지 못한게 한스러울 정도 였다.
개봉당시에 서양의 눈으로 바라본 왜곡된 일본 이야기 라고 꽤 이슈가 되었던 영화이기도 하다.
영화가 가지는 문화적 파급 효과를 모르는 바 아니나, 난 그런 문화적 이해에 대한 심도가
0.1mm도 되지 않는 바. 무게 있는 이야기들을 다 덜어내고 나면 이 영화는
'보고 즐길 수 있으며, 보고난 후 몇 장면이 강하게 기억에 남는' 그런 멋진 영화다.
(극장에서 못본게 정말 후회 된다.)
이 영화가 멋지게 느껴지 몇가지 이유는
첫째, 볼거리! 멋진 색감과 그에 부응하는 화면 구성.
시카고를 통해 멋진 화면을 선보였던 롭 마샬 감독은 게이샤의 추억 이라는 이 영화를 통해
또 한번 나를 감동 시켰다.
영화를 보는내내 이런 화면을 만들어 내기위해 고심하고 이렇게 멋진 화면을 내 눈 앞에 펼쳐 준
스탭과 배우 분들에게 박수를 보냈다.
둘째, 이야기! 원작이 꽤나 인지도 있는 소설인 만큼(아쉽게도 원작을 읽어보지 못했다.)
드라마로서의 이야기가 부족하다고 느끼지 못했다.
영화를 보는 내내 그들의 이야기에 빠져들었으니 탄탄하다고 해 줘도 괜찮을 듯.
셋째, 배우! 이 영화에서 일본의 숨은 보석 같은 아역 배우를 찾아낸 것 만으로도 럭키!
그 특유의 눈매와 생김새에 시선 고정.
(뭐.. 내가 이쁜 애기들 보면 언제나 기분이 좋아지는 타입이긴 하지..)
앞으로 그녀의 출연작은 관심있게 지켜 봐야 겠다. 좋은 연기자로 자라서 날 실망 시키지 않았으면
좋겠다.
자... 그럼 영화의 몇 장면을 감상 해 보자..
정말 간만에 황홀한 영상속에서 눈이 즐겁고 감정이 풍부해 지는 영화를 봐서 기분이 좋다..
본글은 제가 2006년 9월 모 포탈 블로그에 게시했던 글입니다.
헉.. 있다..
Gallery 2.2.2 is now available for download. As a minor stability release it adds no new features and includes bug fixes only.
Over 30 bugs have been fixed in this stability release. Some highlights are:
Read on for more details and upgrade instructions...
정도로 밝히고 있습니다.
그러면서 친절하게도 차기 메이저 버전업인 Gallery 2.3 릴리즈를 기다리지 못하는 이용자라면
갤러리 2.2에서 사용 가능한 실험적인 플러그인들을 통해 2.3의 기능을 미리 볼 수 있다고 하는군요..
자.. 그럼 전 서비의 갤러리 업그래이드 하러 이만.. 춍춍춍...
그래봐야 옵션....
행여나하는 마음에..
저도 잠깐씩 페이지로딩이 느려지거나 심지어 안열려서
(이때는 새로고침으로도 잘 안되더라구요.. )
브라우저 새로 열고 접속 하기도 했습니다...
뭐, 지금은 저도 웹인사이드 스크립트를 다 내렸으니...
얼른 수정되었으면 좋겠습니다.
Draco님 블로그는 잠시 멈추긴 하지만 이내 전송이 완료 되더군요..
< / body> 태그 바깥쪽에 웹인사이드 스크립트를 심어서 그런걸까요..
신기하네요..
Webmini님,Simulz님,Draco님?
어느분이 영감님이신지 저도 궁금해 지네요.. ^^;;
광대하다는 넷도 의외로 좁군요..
공통 관심사가 있는것도 아닌데..
이렇게 한다리 건너니 아는분이 나온다니..
Draco님이요.
웹, 그 중에서도 블로그라는 수단의 숙명적 한계겠죠.
드러내고 싶은 것만 보여질 수 있는 웹과
더 나아가 특별한 주제의식이 암묵적으로 강요되는 블로그.ㅎㅎ
예.. 아미료님 말씀대로인것 같습니다.
특히나 메타블로그사이트는 그런 문제에 좀 더 예민한것 같습니다.
개인사 같은거 투고한다고 한마디 하는 블로거 분들도 많죠..
개인의 완전한 독립성과 정체성의 표출을 갈망하면서도
외부와의 교류 없이는 견디지 못하는 인간의 속성 때문이겠죠..
저 역시 독립도메인을 개설하면서 망망대해에 혼자 떠 있는것 같고
허공에다 대고 떠드는것 같은 느낌을 받았으니까요..
소셜 네트워크로의 블로그란 서비스가 나온지 몇해가 지났지만, 한동안은
이 블로그스피어란 세계에 맞는 질서와 사회성이 정립되어가는 과도기라고 생각해요..
안녕하세요 , 현재 구글 블로그를 사용중인데요
구글 애널리틱스 , 구글 웹로그, 그글 웹마스터
이렇게 세가지가 있는데요,,, 다 같은것인가요?....
너무 많이 등록하면, 블로그 속도에 방해가 되는것인가요?
답변 부탁드려요
초코맛님 안녕하세요.
구글 애널리틱스와 구글 웹로그는 같은 제품입니다.
사이트 접속 통계부터 특정 페이지 도달율까지 사이트를 마케팅 도구로 활용할때 필요한 전반적인 데이타를 수집 제공하는 제품이구요.
구글 웹마스터의 경우 Google 검색 로봇이 사이트를 잘 읽어가고 있는지 확인 할 수 있고, 문제점은 없는지 기타등등 Google 검색과 연계된 분석으로 웹사이트 상태 확인과 사이트 최적화에 도움을 주는 기능의 제품으로 알고 있습니다. 구글 애널리틱스와 연계하여 사용도 가능하구요.. 웹마스터는 저도 사용해 보지 않았는데 https://www.google.com/webmasters/tools/home?hl=ko 동영상을 참고하시면 어떤 제품인지 대략 감을 잡으실 수 있을것 같습니다.