이것저것 검토하고 도모하고 시도하는건 좋다 이거야.

그런데 왜 하나같이 이런식의 얘기들만 나오냐 이거지. 아우 속상해.

미국이 쌍방향 요금제니까 우리도 하고, 미국이 의료보험 민영화니까 우리도 하는건가.
쌍방향 요금제가 일리가 전혀 없는것은 아니겠지만, 부작용이 많은것도 사실이자너.
좀 참신하고 공감대를 얻을 수 있는걸 찾고, 없슴 말던가.
뿌리깊은 불합리가 얼마나 많은데, 쓸데없는 일 안벌이고 난해하고 불확실해도 꼭 필요한 일에
도전하고 집중하는 정부가 되어주면 얼마나 좋아.
과거가 씁쓸해도 좋다 이거야. 성향이 럭셔리해도 지켜봐주겠다 이거야.
일잘하는 모습 좀 보고싶다 이거지.

쿼바디스 도미네!


Posted by ukmie
,
"흑인적인 감각으로 해석한 많은 리메이크 곡들을 주로 불러왔으며
리듬앤 블루스가 가미되어있는 소울풍의 멋진곡들을 아름다운 음색으로 들려주고 있다.
아름다운 멜로디에 녹아 있는 달콤하고 매끄러운 목소리는 로만적 이미지를 풍기고 있다."


Almaz

 http://blog.naver.com/popmuze?Redirect=Log&logNo=70025348875

Randy Crawford & Joe Sample - [Feeling Good]
http://blog.naver.com/muzion?Redirect=Log&logNo=90018736322

Street Life
http://blog.naver.com/yb88yb88?Redirect=Log&logNo=30018910453

End of the Line [with Joe Sample]
http://blog.naver.com/danbi3536?Redirect=Log&logNo=90024906266

Posted by ukmie
,
원문 : http://makebob.tistory.com/140


Avast 메일링리스트로 온 자료를 올립니다.

역시나 Kaspersky가 버전을 막론하고 1,2위를 석권하는군요.
ZoneAlarm도 방화벽 성능도 좋지만 백신 성능도 뛰어납니다.
매번 순위권에 랭크되는 F-Secure, Nod32, Avast, F-Prot 등도 90%이상의 성능을 보여주네요.

국산 프로그램으로 3개의 프로그램이 랭크되었습니다.
26. Virus Chaser version 5.0a - 79.51%
29. ViRobot Expert version 5.0 - 69.53%
33. V3 Internet Security version 2007.04.21.00 - 55.09%
예상외로 Virus Chaser가 상당히 우수한 성능을 보여주었습니다.
하지만 V3는 아직... 그래도 전에 비해서 50%는 넘었군요.

원문 출처 :
http://blog.softmail.co.kr/231


바 이러스 테스트로 유명한 VIRUS.GR에서는 연례적으로 테스트를 진행하여 그 결과를 홈페이지에 게재하고 있습니다.  당사에서 취급하고 있는 avast! 안티바이러스와 AVG 안티 바이러스 모두 90% 이상을 상회하는 성능을 보여 주고 있습니다.


2007년도 테스트 결과는 지난 5월 10일에 발표되었으며, 이 자료를 좀더 편히 보실 수 있도록 정리하여 올려드립니다.

  • 테스트 시점: 2007년 4월 23일부터 5월 10일까지.
  • 시스템 사양: P4 3Hz, 1G RAM, Windows XP Pro SP2
  • 테스트한 백신 제품은 최신 버전과 최신 데이터베이스로 업데이트한 상태로 진행하였으며, 휴리스틱, 전체 검사와 같이 모든 옵션을 켠 상태로 진행. 이로 인해 일부 오진의 경우도 발생할 수 도 있음.
  • 사용한 바이러스 샘플은 174,770개로 VS2000을 기준으로 선정(Kaspersky, F-Prot, Nod32, Dr.Web, BitDefender, McAfeee Antivirus 프로그램)
  • 모든 바이러스 샘플은 압축을 해제한 상태로 검사하였으며, 일부 압축된 샘플들은 winzip, winrar, winace와 같은 도스용 압축 프로그램을 이용하여 압축하였음.
  • 모든 바이러스 샘플은 확장자를 변경하지 않고 그대로 사용하였음.
  • '가짜' 바이러스는 검사에서 제외.
  • MKS_VIR, PER, IPArmor 제품은 영문으로 출시된 버전이 없으므로 테스트에서 제외함.
  • Anti-Hacker Expert, Command, Extendia AVK, GDATA AVK, BOClean, UNA, VET, Freedom은 데모로 제공되는 버전이 없어 테스트에서 제외함.
  • 전체 검사 모드(Thorough mode)는 VBA32에서 사용하지 않음. 이유는 아주 느린 검사 속도 때문임.
  • A-Squared Anti-Malware, eTrust PestPatrol은 안티 바이러스 제품이 아니고 악성 코드 제거 프로그램(or 트로이 목마 제거)이므로 제외함.
  • FProt은 명령행 프롬프트에서 실행함(사용한 옵션은 /adware /applications / report /streams / maxdepth=4 /heulevel=4)
  • Windows Live OneCare, BKAV, PC Tools는 샘플을 검사하는 동안에 문제가 발생하여 테스트에서 제외함.
  • TheShield는 VirobotExpert과 동일한 엔진을 사용힘.
  • Avira는 AntiVir과 동일한 엔진을 사용함.
  • Fire는 Solo과 동일한 엔진을 사용함.
  • MKS_VIR은 ArcaVir과 동일한 엔진을 사용함.
  • VirusBuster는 Vexira과 동일한 엔진을 사용함.
  • BullGuard는 BitDefender free edition과 동일한 엔진을 사용함
  • avast! Profession Edition은 avast! free edition과 동일한 엔진을 사용함.
  • AVG Anti-Malware는 AVG Antivirus free edtion과 동일한 엔진을 사용하고, Ewido 스캔 엔진을 추가로 제공함(세부 정보 보기)
  • A-Squared Anti-Malware Profession은 A-Squared free edition과 동일한 엔진을 사용함
  • InVircible에는 "일반적인" 검사 기능이 없어 테스트에서 제외함.
  • V-Catch는 메일 계정에 대해서만 검사하기 때문에 테스트에서 제외함.
  • 도스 기반으로 실행되는 스캐너로는 검사하지 않음
  • 검 사에 사용한 확장자: SH, ELF, COM, EXE, PL, BAT, PRC, DOC, XLS, BIN, MDB, IMG, PPT, VBS, MSG, VBA, OLE, HTM, INI, SMM, TD0, REG, CLASS, HTA, JS, VI_, URL, PHP, WMF, HLP, XML, SCR, PIF, SHS, WBT, CSC, MAC, DAT, CLS, STI, INF, HQX, XMI, SIT


백신 순위 :

1. Kaspersky version 7.0.0.43 beta - 99.23%
2. Kaspersky version 6.0.2.614 - 99.13%
3. Active Virus Shield by AOL version 6.0.0.308 - 99.13%
4. ZoneAlarm with KAV Antivirus version 7.0.337.000 - 99.13%
5. F-Secure 2007 version 7.01.128 - 98.56%
6. BitDefender Professional version 10 - 97.70%
7. BullGuard version 7.0.0.23 - 96.59%
8. Ashampoo version 1.30 - 95.80%
9. AntiVir version 7.03.01.53 Classic - 95.08%
10. eScan version 8.0.671.1 - 94.43%
11. Nod32 version 2.70.32 - 94.00%
12. CyberScrub version 1.0 - 93.27%
13. Avast Professional version 4.7.986 - 92.82%
14. AVG Anti-Malware version 7.5.465 - 92.14%
15. F-Prot έκδοση 6.0.6.4 - 91.35%
16. McAfee Enterprise version 8.5.0i+AntiSpyware module - 90.65%
17. Panda 2007 version 2.01.00 - 90.06%
18. Norman version 5.90.37 - 88.47%
19. ArcaVir 2007 - 88.24%
20. McAfee version 11.0.213 - 86.13%
21. Norton Professional 2007 - 86.08%
22. Rising AV version 19.19.42 - 85.46%
23. Dr. Web version 4.33.2 - 85.09%
24. Trend Micro Internet Security 2007 version 15.00.1450 - 84.96%
25. Iolo version 1.1.8 - 83.35%
26. Virus Chaser version 5.0a - 79.51%
27. VBA32 version 3.11.4 - 77.66%
28. Sophos Sweep version 6.5.1 - 69.79%
29. ViRobot Expert version 5.0 - 69.53%
30. Antiy Ghostbusters version 5.2.1 - 65.95%
31. Zondex Guard version 5.4.2 - 63.79%
32. Vexira 2006 version 5.002.62 - 60.07%
33. V3 Internet Security version 2007.04.21.00 - 55.09%
34. Comodo version 2.0.12.47 beta - 53.94%
35. Comodo version 1.1.0.3 - 53.39%
36. A-Squared Anti-Malware version 2.1 - 52.69%
37. Ikarus version 5.19 - 50.56%
38. Digital Patrol version 5.00.37 - 49.80%
39. ClamWin version 0.90.1 - 47.95%
40. Quick Heal version 9.00 - 38.64%
41. Solo version 5.1 build 5.7.3 - 34.52%
42. Protector Plus version 8.0.A02 - 33.13%
43. PcClear version 1.0.4.3 - 27.14%
44. AntiTrojan Shield version 2.1.0.14 - 20.25%

45. PC Door Guard version 4.2.0.35- 19.95%
46. Trojan Hunter version 4.6.930 - 19.20%
47. VirIT version 6.1.75 - 18.78%
48. E-Trust PestPatrol version 8.0.0.6 - 11.80%
49. Trojan Remover version 6.6.0 - 10.44%
50. The Cleaner version 4.2.4319 - 7.26%
51. True Sword version 4.2 - 2.20%
52. Hacker Eliminator version 1.2 - 1.43%
53. Abacre version 1.4 - 0.00%

PS: BOClean 제품은 무료로 사할 수 있습니다. (Avast 홈버전도 무료..)

감사합니다.


Posted by ukmie
,
http://www.zdnet.co.kr/webtv/whiteboard/0,39038514,39164700,00.htm

제목 : IT영업「세일즈(sales) 2.0」으로 체질전환 서둘러라… Genius.com CEO 데이빗 톰슨

  • 날짜 : 2008. 01. 09
  • 기획 제작 : 지디넷 편집부
  • 재생시간 : 00:02:48

세일즈(Sales) 2.0은 말 그대로 웹 2.0 기술을 새로운 영업 판매 기술에 적용, 중소기업에게 더 많은 제품을 빠른 시일 내에 판매할 수 있도록 돕는 기술을 뜻한다. 이번 영상에선 세일즈 1.0과 2.0의 차이점을 살펴보고, 향후 기업들이 지향해야 할 영업 전략 방향을 제시한다.@




Posted by ukmie
,
말도많고 탈도 많은 국민연금도 수술이 시작되는군요. 개정은 불가피하겠지만 방향이 좀..--

기초연금제와 병행하게 되면 소득재분배의 기능이 확대된다고도 볼 수도 있는거 아닌가요.
보험료 상한제 폐지만 아니면 괜찮은 시도인거 같은데, 뭐가 어떻게 되고 있는건지,,
저소득층의 노후에 도움이 되야 연금제도가 의미가 있을거라 봅니다만,,쩝

언론도 이익단체이며 각자의 색깔을 유지할 권리는 당연히 인정한다 치고,
또 아래기사도 일방적이긴 하지만 , 조선일보 기사는 정말 심하네요.
현재는 소득이 적은 사람이 유리하게 되어있는데 비례연금이 되서 좋다는 식으로 얘기하네,,참나. 게다가 드는 예도 자영업자들이 번돈을 축소신고하고 혜택을 받는 불합리가 없어진다니..
그래서 국민연금이 소득비례제로 가나,,  어처구니,,--

원문 : http://www.mediatoday.co.kr/news/articleView.html?idxno=64215

국민연금 무력화 기도 시작됐다
[경제뉴스 톺아읽기]기초연금으로 생색… 보험료 상한 폐지, 소득 재분배 기능 완화 등

...
이명박 정부의 국민연금 개편 아이디어는 다음과 같다. 보험료율을 9%로 유지하되, 소득 대체율을 40%에서 20%로 낮추고 보험료 상한제를 폐지, 낸 만큼 돌려받는 비례연금제도로 바꾼다는 것이다. 또한 기초노령연금을 실시, 노인 80%에게 평균소득의 20%를 지급한다는 계획이다.
...
주목할 부분은 인수위가 국민연금의 보험료 상한을 폐지하겠다고 언급한 대목이다. 보험료 상한이 폐지되면 고소득 계층도 내는 만큼 연금으로 돌려 받게 된다. 이 경우 적게 내는 사람에게 상대적으로 좀 더 많은 연금을 돌려주고 많이 내는 사람이 상대적으로 좀 더 적게 받는 국민연금의 소득 재분배 기능이 무력화하게 된다.
...
 
  .
▲ 조선일보 1월7일 1면.

..
인수위와 한나라당은 국민연금의 소득 재분배 기능을 축소시킬 가능성이 크다. 연금의 금융화는 세계적인 연금 개악의 과정이기도 하다. 많이 내는 만큼 많이 받아가는 구조는 고소득 계층에게 유리하겠지만 저소득 계층에게는 연금이 무용지물이 된다.
...

PS. “경제신문은 ‘시장 만능’ 이데올로기 선전물인가”

Posted by ukmie
,
출처 : http://lhs0806.wowdns.com/tt/lhs/200
===== 실행 =====
1. Ctrl + F11 : 바로 전에 실행했던 클래스 실행
 
===== 소스 네비게이션 =====
1. Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때
2. Alt + ->, Alt + <- : 이후, 이전
3. Ctrl + o : 해당 소스의 메소드 리스트를 확인하려 할때
4. F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.
===== 문자열 찾기 =====
1. Ctrl + k : 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.
2. Ctrl + Shift + k : 역으로 찾고자 하는 문자열을 찾아감.
3. Ctrl + j : 입력하면서 찾을 수 있음.
4. Ctrl + Shift + j : 입력하면서 거꾸로 찾아갈 수 있음.
5. Ctrl + f : 기본적으로 찾기
 
===== 소스 편집 =====
1. Ctrl + Space : 입력 보조장치(Content Assistance) 강제 호출 => 입력하는 도중엔 언제라도 강제 호출 가능하다.
2. F2 : 컴파일 에러의 빨간줄에 커서를 갖져다가 이 키를 누르면 에러의 원인에 대한 힌트를 제공한다.
3. Ctrl + l : 원하는 소스 라인으로 이동
   로컬 히스토리 기능을 이용하면 이전에 편집했던 내용으로 변환이 가능하다.
4. Ctrl + Shift + Space : 메소드의 가로안에 커서를 놓고 이 키를 누르면 파라미터 타입 힌트를 볼 수 있다.
5. 한줄 삭제 CTRL + D
6. 파일 닫기 : CTRL+W
7. 들여쓰기 자동 수정. (3.0 NEW) : CTRL+I
8. 블록 주석(/*..*/) 추가.(3.0 NEW): CTRL+SHIFT+/
  8.1 Ctrl + / 해주면 여러줄이 한꺼번에 주석처리됨. 주석 해제하려면 반대로 하면 됨.
9. 위(아래)줄과 바꾸기 : ALT+UP(DOWN)
10. 블록 선택하기.  : ALT+SHIFT+방향키
11. 메소드의 파라메터 목록 보기. : CTRL+SHIFT+SPACE
12. 자동으로 import 하기 : CTRL+SHIFT+O
13. 열린 파일 모두 닫기 : CTRL + SHIFT + F4
14. 블록 주석 제거 : CTRL+SHIFT+
15. 전체화면 토글 : CTRL+M
16. 한줄(블럭) 복사 : Ctrl + Alt + 위(아래)
17. 다음 annotation(에러, 워닝, 북마크 가능)으로 점프 : Ctrl + , or .
18. 퀵 픽스 : Ctrl + 1 
19. 메소드 정의부로 이동 : F3
20. 하이어라키 ㅤㅍㅏㅍ업 창 띄우기(인터페이스 구현 클래스간 이동시 편리) : Ctrl + T 
21. 메소드나 필드 이동하기 CTRL + O
22. ULTRAEDIT나 EDITPLUS 의 CTRL+TAB 과 같은 기능. : CTRL+F6
 
===== 템플릿 사용 =====
1. sysout 입력한 후 Ctrl + Space 하면 System.out.println(); 으로 바뀐다.
2. try 입력한 후 Ctrl + Space 하면 try-catch 문이 완성된다.
3. for 입력한 후 Ctrl + Space 하면 여러가지 for 문을 완성할 수 있다.
4. 템플릿을 수정하거나 추가하려면 환경설정/자바/편집기/템플리트 에서 할 수 있다.
 
===== 메소드 쉽게 생성하기 =====
1. 클래스의 멤버를 일단 먼저 생성한다.
2. override 메소드를 구현하려면 : 소스->메소드대체/구현 에서 해당 메소드를 체크한다.
3. 기타 클래스의 멤버가 클래스의 오브젝트라면 : 소스->위임메소드 생성에서 메소드를 선택한다.
 
===== organize import =====
1. 자바파일을 여러개 선택한 후 소스 -> 가져오기 체계화 해주면 모두 적용된다.
 
===== 소스 코드 형식 및 공통 주석 설정 =====
1. 환경설정 -> 자바 -> 코드 스타일 -> 코드 포멧터 -> 가져오기 -> 프로파일.xml 을 불러다가 쓰면 된다.
2. 또한 다수의 자바파일에 프로파일을 적용하려면 패키지 탐색기에서 패키지를 선택한 후 소스 -> 형식화를 선택하면 된다.
3. 환경설정 -> 자바 -> 코드 스타일 -> 코드 템플리트 -> 가져오기 -> 템플리트.xml 을 불러다가 쓰면 된다.
 
===== 에디터 변환 =====
1. 에디터가 여러 파일을 열어서 작업중일때 Ctrl + F6 키를 누르면 여러파일명이 나오고 F6키를 계속 누르면 아래로
2. Ctrl + Shift + F6 키를 누르면 위로 커서가 움직인다.
3. Ctrl + F7 : 뷰간 전환
4. Ctrl + F8 : 퍼스펙티브간 전환
5. F12 : 에디터로 포커스 위치

Posted by ukmie
,
MBTI 검사지는  4가지 척도의 관점에서 인간을 이해하려고 한다.
그리고 그 결과는, E(외향적)-I(내향적), S(감각)-N(직관), T(사고)-F(감정), J(판단, 계획적)-P(인식, 유연적) 중 각 개인이 선호하는 네 가지 선호지표를 가지게 된다.


검사용 플래쉬 파일
http://www.jumpthelife.com/project/main.html

검사결과 모음


ENTP - 발명가형이란다. 나를 알기 위해 문제를 풀어야 한다니..쩝.

Posted by ukmie
,
IMS Enterprise Service 스펙은 학습이 일어나는 문맥 안에서 개인, 그룹, 멤버쉽에 대하여 기술된 정보를 시스템끼리 어떻게 교환하고 관리할 것인가에 대하여 정의한다.
IMS Enterprise Service 스펙이 나오기 이전에 IMS Enterprise 스펙이 이미 존재하였었다. 원래의 IMS Enterprise 스펙은 엔터프라이즈 시스템의 통신에서 교환하는 정보를 위한 데이터 모델을 기술하는데 초점이 맞추어져 있었다. Enterprise Service 스펙은 이러한 데이터 모델에 대한 behavior model을 추가하여 확장한 것이다. IMS Enterprise Service 1.0은 IMS Enterprise 1.1을 대체한다.

IMS Enterprise Service 스펙은 IMS Abstract Framework 1.0의 권고 사항에 따라 만들어졌다. 이것은 Enterprise Sevice 스펙이 상호운용성(Interoperability), 서비스 지향적(Service-oriented), 컴포넌트 기반(Component-based), 레이어 접근(Layering), 다중 바인딩(Multiple Bindings), 채택(Adoption) 등과 같은 개념에 기반한다는 것을 의미한다.
IMS Enterprise Service 스펙은 매우 간단하고 추상적인 수준에서 엔터프라이즈 시스템간의 메시징 모델을 표현한다. 추상적인 메시징 표현을 채택한 이유는 엔터프라이즈 시스템 아키텍처가 느슨하게 연결된(loosely coupled) 시스템에 기반하고 있고 IMS 바인딩은 XML 문서와 메시지의 교환에 중점을 두고 있기 때문이다.

IMS Enterprise Service 1.0에서 다루는 엔터프라이즈 서비스 분야는 개인관리서비스, 그룹관리 서비스, 멤버쉽 관리 서비스이다.

- 개인 관리 서비스 : 개인에 대한 정보를 관리하는 것이다. 각 개인들은 학습활동과 관련 되어있다.
- 그룹 관리 서비스 : 오브젝트들의 집합에 관한 정보를 관리하는 것이다. 오브젝트는 학습활동 또는 개인들과 관련이 있다.
- 멤버쉽 관리 서비스 : 멤버쉽 구조에 대한 정보를 관리하는 것이다. 멤버쉽 구조는 그룹에 대한 멤버를 정의하는데 사용한다.

IMS Enterprise Service 정보 모델은 UML을 사용하여 정의하였으므로 다양한 방법의 바인딩을 가능하게 한다. IMS Enterprise Service에서는 바인딩 방법의 한 예로 WSDL 바인딩에 대한 문서를 제공하고 있다.

관련 기술 표준

(1) IMS Enterprise
IMS Enterprise Service 스펙이 나오기 이전에 IMS Enterprise 스펙이 이미 존재하였었다. 이 스펙의 가장 최근 버전은 2002년 7월 16일에 발표한 1.1 final 버전이다. 원래의 IMS Enterprise 스펙은 엔터프라이즈 시스템의 통신에서 교환하는 정보를 위한 데이터 모델을 기술하는데 초점이 맞추어져 있었다. Enterprise Service 스펙은 이러한 데이터 모델에 대한 behavior model을 추가하여 확장한 것이다. IMS Enterprise Service 1.0은 IMS Enterprise 1.1을 대체한다.

(2) IMS Abstract Framework
IMS Enterprise Service 스펙은 IMS Abstract Framework 1.0의 권고 사항에 따라 만들어졌다. 이것은 Enterprise Sevice 스펙이 상호운용성(Interoperability), 서비스 지향적(Service-oriented), 컴포넌트 기반(Component-based), 레이어 접근(Layering), 다중 바인딩(Multiple Bindings), 채택(Adoption) 등과 같은 같은 개념에 기반한다는 것을 의미한다.

IMS Abstract Framework은 다양한 분야에서 제시하고 있는 프레임워크를 분석하여 각 분야 프레임워크를 포괄할 수 있는 추상 프레임워크를 제시한 것이다. 이것은 IMS 아키텍처가 아니라 IMS가 그동안 개별적인 단위로 만든 스펙이 어떤 맥락에서 사용되고 있는지, 앞으로 어떤 스펙을 개발할 것인지를 예측하기 위한 방법론적인 접근으로 보아야 한다. 다시말하면 IMS Abstract Framework는 스펙은 아니지만 IMS가 표준화 작업을 하는데 있어서 방향성을 제시하는 역할을 하고 있다.

이 밖에도 IMS Enterprise Service는 IMS Learner Information Package, IETF vCard, Internet2/Education eduPerson 등과 관련이 있다.

IMS Global Learning Consortium Inc
http://www.imsglobal.org/es/index.cfm

[thanksto:ksa]
Posted by ukmie
,
원래는 비틀즈의 노래이다. 난 이 노래를 통해서 피오나 애플이란 가수를 알게 되었는데,
개인적으로 원곡보다 이 노래를 더 좋아한다. 나른한 목소리를 듣고 있자면 오히려 권태가
씻겨내려가는듯한 느낌이 들곤한다.

존 레논이 이곡을 쓰게된 동기가 재밌어서 카피해놓는다.

"John Lennon started writing this while lying in bed with his first wife, Cynthia. John said Cynthia was talking on and on and the words to this song started floating into his head. He couldn't sleep, got out of bed and wrote as much as he could. Lennon said it was one of his favorites. He especially liked the lyrics." (thanks for the info go to Mike - Mountlake Terrace, WA. U.S.A)




Across the Universe

Words are flying out like
endless rain into a paper cup
They slither while they pass
They slip away across the universe
Pools of sorrow waves of joy
are drifting thorough my open mind
Possessing and caressing me

Jai guru deva om
Nothing's gonna change my world
Nothing's gonna change my world
Nothing's gonna change my world
Nothing's gonna change my world

Images of broken light which
dance before me like a million eyes
That call me on and on across the universe
Thoughts meander like a
restless wind inside a letter box
they tumble blindly as
they make their way across the universe

Jai guru deva om
Nothing's gonna change my world
Nothing's gonna change my world
Nothing's gonna change my world
Nothing's gonna change my world

Sounds of laughter shades of life
are ringing through my open ears
exciting and inviting me
Limitless undying love which
shines around me like a million suns
It calls me on and on across the universe

Jai guru deva om
Nothing's gonna change my world
Nothing's gonna change my world
Nothing's gonna change my world
Nothing's gonna change my world
Jai guru deva
Jai guru deva


Posted by ukmie
,
nio 패키지의 ByteBuffer 에 있는 allocateDirect 를 사용하면 시스템 메모리를 직접 
사용할 수 있다. 쉽게 사용할 수 있도록한 유틸클래스가 있어 저장해놓는다.

http://www.koders.com/java/fidCA9FE2D4CBBD117C2E10FD0D4CEE77005582F45F.aspx
DirectByteBufferProvider by Phex Development Group
with GNU General Public License
/*
* PHEX - The pure-java Gnutella-servent.
* Copyright (C) 2001 - 2006 Phex Development Group
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Created on 17.02.2005
* --- CVS Information ---
* $Id: DirectByteBufferProvider.java 3536 2006-08-05 22:16:44Z gregork $
*/

package phex.utils;

import java.nio.ByteBuffer;
import java.util.*;

import phex.common.Environment;

/**
* TODO find out the usuall requested buffer sizes and provide storage slots for
* these sizes.
*/

public class DirectByteBufferProvider
{
public static final int BUFFER_SIZE_64K = 64 * 1024;
private static final DirectByteBufferProvider instance;

private Map<Integer, Set<DirectByteBuffer>> sizeToBufferListMap;

/**
* Max use 10MB in buffer cache.
*/

private static final long MAX_TOTAL_BUFFER_SIZE = 10 * 1024 * 1024;

static
{
instance = new DirectByteBufferProvider();
}

private DirectByteBufferProvider()
{
sizeToBufferListMap = new LinkedHashMap<Integer, Set<DirectByteBuffer>>();

Environment.getInstance().scheduleTimerTask(new CleanupCheckerTask(),
CleanupCheckerTask.TIMER_PERIOD, CleanupCheckerTask.TIMER_PERIOD);
}

public static DirectByteBuffer requestBuffer(int sizeInBytes)
{
return instance.requestDirectByteBuffer(sizeInBytes);
}

protected synchronized void releaseDirectByteBuffer(
DirectByteBuffer directByteBuffer)
{
//NLogger.debug( NLoggerNames.GLOBAL, "Releasing DirectByteBuffer:" + directByteBuffer );
debugDump();
ByteBuffer buffer = directByteBuffer.getInternalBuffer();
int kb = (int) Math.ceil(buffer.capacity() / 1024.0);
Integer key = new Integer(kb);
Set<DirectByteBuffer> set = sizeToBufferListMap.get(key);
if (set == null)
{
set = new HashSet<DirectByteBuffer>();
sizeToBufferListMap.put(key, set);
}
set.add(directByteBuffer);
debugDump();
}

private synchronized DirectByteBuffer requestDirectByteBuffer(int capacity)
{
//NLogger.debug( NLoggerNames.GLOBAL, "Requesting DirectByteBuffer:" + capacity );
debugDump();

int kb = (int) Math.ceil(capacity / 1024.0);
Integer key = new Integer(kb);
Set<DirectByteBuffer> set = sizeToBufferListMap.get(key);
if (set == null)
{
set = new HashSet<DirectByteBuffer>();
sizeToBufferListMap.put(key, set);
}
DirectByteBuffer directByteBuffer;
if (set.isEmpty())
{
directByteBuffer = allocateDirectByteBuffer(kb * 1024);
}
else
{
directByteBuffer = set.iterator().next();
set.remove(directByteBuffer);
}
ByteBuffer buffer = directByteBuffer.getInternalBuffer();
buffer.clear();
buffer.limit(capacity);

//NLogger.debug( NLoggerNames.GLOBAL, "Requested DirectByteBuffer:" + directByteBuffer );
debugDump();
return directByteBuffer;
}

/**
* @param kb
* @return
*/

private synchronized DirectByteBuffer allocateDirectByteBuffer(int capacity)
{
ByteBuffer byteBuffer;
try
{
byteBuffer = ByteBuffer.allocateDirect(capacity);
}
catch (OutOfMemoryError err)
{
clearBuffers();
System.runFinalization();
System.gc();
Thread.yield();
try
{
byteBuffer = ByteBuffer.allocateDirect(capacity);
}
catch (OutOfMemoryError err2)
{
NLogger.error( DirectByteBufferProvider.class,
"Out of memory while trying to allocated direct byte buffer.");
throw err2;
}
}
DirectByteBuffer directByteBuffer = new DirectByteBuffer(byteBuffer,
this);
return directByteBuffer;
}

/**
* Clears available buffers of the provider.
*/

private synchronized void clearBuffers()
{
for ( Set<DirectByteBuffer> set : sizeToBufferListMap.values() )
{
set.clear();
}
}

private synchronized void cleanupChecker()
{
long bytesUsed = 0;
Iterator<Integer> iterator = sizeToBufferListMap.keySet().iterator();
while (iterator.hasNext())
{
Integer key = iterator.next();
Set<DirectByteBuffer> set = sizeToBufferListMap.get(key);

bytesUsed += key.intValue() * set.size() * 1024;
}

if (bytesUsed > MAX_TOTAL_BUFFER_SIZE)
{
performCleanup(bytesUsed - MAX_TOTAL_BUFFER_SIZE);
}
}

private synchronized void performCleanup(long bytesToFree)
{
// we remove buffers from sizes with the highest amount of cached buffers
int mapSize = sizeToBufferListMap.size();
int highestCount = 0;
int[] bufferSizeArr = new int[mapSize];
Set[] bufferSetArr = new Set[mapSize];

int i = 0;
Iterator<Integer> listIterator = sizeToBufferListMap.keySet().iterator();
while (listIterator.hasNext())
{
Integer key = listIterator.next();
Set<DirectByteBuffer> set = sizeToBufferListMap.get(key);
bufferSizeArr[i] = key.intValue() * 1024;
bufferSetArr[i] = set;
int setSize = set.size();
if (setSize > highestCount)
{
highestCount = setSize;
}
i++;
}

long bytesFreed = 0;
while (bytesFreed < bytesToFree && highestCount > 0)
{
for (i = 0; i < mapSize; i++)
{
// if this is the largest buffer list remove
// one buffer.
if (bufferSetArr[i].size() == highestCount)
{
bufferSetArr[i].remove( bufferSetArr[i].iterator().next() );
bytesFreed += bufferSizeArr[i];
}
}
highestCount--;
}
}

private synchronized void debugDump()
{
// Iterator keys = sizeToBufferListMap.keySet().iterator();
// while ( keys.hasNext() )
// {
// Integer key = (Integer) keys.next();
// System.out.println( "------------------------" );
// System.out.println( "Key: " + key.intValue() );
// Set keySet = (Set) sizeToBufferListMap.get(key);
// Iterator bufferIterator = keySet.iterator();
// while ( bufferIterator.hasNext() )
// {
// DirectByteBuffer buffer = (DirectByteBuffer) bufferIterator.next();
// System.out.println( buffer );
// }
// }
}

private class CleanupCheckerTask extends TimerTask
{
private static final int TIMER_PERIOD = 10 * 60 * 1000;

/**
* @see java.util.TimerTask#run()
*/

public void run()
{
cleanupChecker();
}

}
}

Posted by ukmie
,