싸미~*

MPTCP vs SCTP

.Tech


"SKT, LTE에 와이파이 묶어 1 Gbps 시대 열었다" (Zdnet 기사) 을 보고..


주파수 묶음기술(CA) 가운데 이종망 묶음 국제표준기술인 MPTCP를 개발했다고 30일 밝혔다


MPTCP 란 무엇인가?


MPTCP는 Multipath TCP의 약자로, IETF Mulitpath TCP WG (IETF Link) 에서 표준을 주도 하고 있으며,

기존 TCP Stream 을 여러 개 묶어서 (MPTCP에서는 subflow 라 함) 하나의 Application (또는 Host)에서 데이타를 주고 받는데 사용하는 것이다.


[출처 : MPTCP and Product Support Overview (CISCO)]

그림에서 보면, Client - Server (또는 Host간) 구조에서, 양단에 두 개의 Data Flow Path 가 있다. (TCP sub flow1, TCP sub flow2


기존의 TCP는 데이타를 주고 받는데 있어서 "하나의 Path"만을 사용해왔다. 그런데 인터넷상 또는 데이타센터의 Host들은 여러 Path 들을 갖고 있음에도 불구하고, TCP 제약상 하나의 Path를 통해서 데이타를 주고 받는 것이다. 


MPTCP 는 Host 간 여러 경로를 두어서, 각각의 경로들을 통해서 데이타를 주고 받는데 목적이 있다. 

이렇게 되면, 한쪽이 혼잡제어(Congestion Control)가 걸리거나 , 또는 임의의 이유로 네트워크 끊어졌을 때 다른 네트워크 경로를 통해서 데이타를 주고 받을 수 있는 장점이 있다.


SCTP와 MPTCP


SCTP는 TCP와 다른 방법의 새로운 데이타 전송 기술이다. (참고 : http://ssami.tistory.com/424 )

Multi Streaming 및 Multi Homing 을 지원하고 있어, 차세대 전송계층 (Transport Layer)의 기술로 각광을 받았었다.


그렇다면, MPTCP가 갖는 장점? 또는 SCTP가 갖는 단점은?


Why is SCTP not much used / know? (Stackoverflow)

Issue with Network Address Translation for SCTP (ACM sigcomm)


여기에서 보듯이, SCTP는 구현의 이슈는 차치하더라도, 기존 네트워크 시스템에서 사용하려면 NAT에 대한 이슈가 존재한다. 본 이슈에 대한 내용이 RFC 내에도 기술되어 있다. 

(RFC3257 - 4. SCTP Network Address Translator (NAT) Issues)


그리고, 기존의 TCP 및 UDP로 구현된 프로토콜이 모두 SCTP로 바뀌어야 하는 문제도 있다.


이에 반면, MPTCP는 TCP의 구조를 그대로 사용하며 TCP 에서 제공한 Option 들도 모두 수용할 수 있다.


부가세와 봉사료를 알아보자

.Tech/Payment


매장을 운영하다 보면 왠만한 세법과 회계에 대한 기본 지식은 갖고 있어야 할 것 같다.

오늘 얘기할 부가세나 봉사료도 마찬가지인데, 자영업을 안해본 나로서는 너무 복잡한 문제 인 것 같다.


1. 부가가치세란 무엇인가 (지난 글 참조)

생산 및 유통과정의 각 단계에서 창출되는 부가가치에 대하여 부과되는 조세


음식을 사먹거나 물건을 사거나 하면 10%의 세금을 더 낸다.

이 10%는 해당 제품에 포함된 가격으로 표기가 되고, 국가마다 세율이 정해져 있다.(국가별 부가가치세 세율)

또한, 면세 등의 제품에서는 부가가치세가 0이다. 


하여간, 제품을 파는 사람은 '소비자에게 부가가치세를 포함하여 판매하며' 이는 소비자가 부담하는 것이다.

다만, 판매자가 부가가치세 신고를 대신하는 것 뿐이다.(부가가치세 신고 - 국세청)


2. 봉사료는 뭐지?

"봉사료 또는 봉사료 수입금액"은 사업자가 음식/숙박/안마/이용원 등 또는 유사한 장소에서 용역을 제공하고, 용역을 제공하는 자에게 지급하는 금액을 얘기한다. 

큰 음식점을 가거나, 호텔 로비에 있는 식당이나 커피점을 가면 흔히 10%의 서비스(봉사료)가 부과되는 것을 흔히 볼수 있다.

쉽게 말하면, 음식점의 경우 '소비자'가 용역을 제공하는 '종업원'에게 돈을 주는 것이며, 

이때에는 사업자(사장 or 주인)는 관여하지 않는다고 생각하면 된다.

봉사료에서 주의 할 두가지만 기억하자!


2-1. 봉사료와 세금의 관계는 어떻게 될까?

봉사료 자체에는 세금을 부과하지 않는다. 단 세금을 부과하지 않으려면 다음과 같은 조건이 필요하다.

- 봉사료는 매출과 달리 '봉사료'라는 항목으로 따로 표기되어 소비자가 알수 있어야 한다.

- 봉사료는 전체금액의 100분의 20을 넘지 않아야 한다. (20%이내)

- 봉사료지급대장을 작성하고, 종업원이 지급사실에 대하여 자필로 서명 및 이 자료를 향후 5년간 보존해야 한다.

(참고 - "봉사료를 과세표준에서 제외하고자 하는 사업자가 지켜야 할 사항 고시" - 국세청고시)


2-2. 세금이 부과되는 경우에는 어떤 것이 있을까?

1) 봉사료도 상한제한이 있다. 만약 구입대금의 100분의 20을 초과하는 경우에는 봉사료 전체에 해당하는 금액에 대한 100분의 5를 원천징수하도록 되어있다.

쉽게 말하면, 1만원 음식을 팔고 , 봉사료를 5천원 받아서 총 1만 5천원을 소비자가 부담한 경우, 

5천원의 5% , 즉 250원을 원천징수 하도록 되어있다. (사업자가 원천징수의무자가 된다)


2) 모든 제품과 서비스에 대해 일괄적으로 적용하고, 월말이 되면 종업원에게 월급으로 지급하는 경우에도 세금 부과가 된다. 

즉, A라는 매장의 모든 음식은 봉사료 10%가 일괄 적용되어 있다고 가정하면, 여기서 발생하는 수입을 그대로 종업원에게 주는 경우에 통상 월급으로 보고 있는 것이다. 

쉽게 말하면, 월급으로 보고 있는 것이지 "세금을 부과하지 않는 봉사료"로 보지 않는 다는 것이다.





국내 VAN사 리스트

.Tech/Payment


VAN이란 Value Added Network 의 약자로 보통 부가가치통신망으로 얘기한다 (위키 정의)

하지만 국내에서는 VAN이란 신용카드에 대한 승인을 대행 해주는 업체로 불리고 있다.


[VAN의 역할]

- 카드 승인 중개

- 가맹점 모집

- 매입 대행


[VAN사 리스트]

 

VAN사

1

FDK

2

JTNET

3

KCP

4

KIS

5

KOCES

6

KOVAN

7

NICE

8

SMARTRO

9

KSNET

10

KICC

11

SPC

12

STARVAN

13

금결원


KICC (한국정보통신), NICE, KCP 등이 VAN사 중에 메이져 회사들이다.


카드 승인 중개와 매입 대행등이 주 업무라고 하지만, 실상은 대리점 및 유통을 통해서 

카드사의 가맹점들을 관리(?) 하고 있는 주체이기도 하다. 

아이폰 테더링을 보면서..폰쟁이 옛날 시절 회상

.Tech/Mobile

원글 참고 : "이제 SKT 아이폰으로도 테더링 된다."

테더링, 테더링 하니깐 옛날 생각나서 ^^

예전 폰쟁이 했을 때, 담당했던 업무가 Data Service였다.

그 당시 제조사들은 요즘은 피쳐폰이라고 부르는 조그만 핸드폰안에,
칩세 제조사들이 주는 번들SW을 갖고 UI 바꾸고, 국가나 사업자마다 고유 설정 넣는 등
조그만 일(그렇다고 해도 반년이상이 걸리는)을 했었다.

내 기억에는 (벤처였음) 대당 100-150달러선에서 딜러에게 팔았었는데,
딜러(통신사업자일 수 있고, 그냥 영업회사일 수 있고)는 이 가격에 + 알파 해서 사용자들에게 팔았을 것이다.

100-150달러의 저가폰이지만, 고가폰이라고 해도 300달러 안넘었을 것이고 (중소기업 기준),
더욱이 대기업 회사들은 중소기업과 달리 부품원가가 무지 싸기 때문에
중소기업의 중저가폰 = 대기업의 고가폰은 비슷했을 것 같다. (인건비 비싸다고 해도, 원가에 비하면^^)
(중소기업에서는 30만대면 대박이였는데, 그 당시 S사에서 단일 모델로 1,000만대을 팔았으니..)

아무튼, 내가 맡은 일은 핸드폰에서 음성통신을 제외한 통신서비스 (데이터통신 서비스)에 관한
"S/W 수정 (일명 포팅)"에 관한 일이였다.

데이터통신서비스란 것이, 핸드폰에서 Browser을 사용한다거나, MMS을 사용한다거나,
또는 모뎀처럼 노트북에 연결해서 인터넷을 한다거나 등에 관한 것이다.

휴대폰 SW에는 이와 관련한 프로토콜이며, 설정 , UI 등이 모두 올라가 있는 상태였다.
다만, SKT향은 "1500 전화번호"로 전화를 걸어, 연결을 맺어준다거나
Browser 접속시 홈페이지를 'wap.sktelecom.com'으로 설정한다거나 등의 일이였다.

모뎀으로 사용했을때는, 휴대폰과 모뎀의 Baudrate 설정 (이건 USB나오면서 불필요한 일이 되었음)부터,
각 통신사마다 별도의 "모뎀 연결 SW"을 배포해야만 했다.

Windows OS에, PPP연결 세션 맺으면 되지만 사용자들이 불편해서 안하기 때문..

요즘에 쓰는 표현으로 이를 "테더링"이라 한다.

그리고, WiFi을 통한 테더링, USB을 통한 테더링, BT을 통한 테더링....
기존에 USB을 통해서 제공되었던 것이, 무선 어댑터나 BT을 통해서 제공하고,
그 사용법 또한 초보자다 금방 따라할정도로 쉽게 되어있다.

예전에는 "휴대폰을 무선 단말기로 쓸 수 있습니다" 라고 그렇게 광고를 했지만,
그 누구도 잘 사용하지 않았다.

- 돈이 비싸기도 했고 (요즘처럼 정액제, 또는 무료가 없었고)
- 사용법 또한 복잡했으며 (PPP 연결이네, Baudrate 맞춰야 하네 등..)
- 느리기도 했다. (WCDMA 지금 속도는, 10년전 CDMA IS95B등에 비하면 ㄷㄷ)

정말...기술이나 기능은 사용하기 편하지 않으면 사장되는 것이 맞는 것 같다.

휴대용 기기를 통하여 인터넷 서비스를 이용하고, (과거~현재)
이런한 기기들을 매개체로 다른 인터넷 단말기 또한 인터넷 서비스를 이용하고, (현재)
기기마다 요금이 부과되는 것이 아니고, 회선에 대하여 부과되며 (현재 데이터쉐어링)
앞으로는, 하나의 단말기에서만 소비하던 서비스가,
다른 단말기에서도 동일한 UX로 소비할 수가 있고, (원소스 멀티유즈)
더욱 앞으로는, 내가 어디에 있던, 어떻게 움직이던 나를 중심으로 컨텐츠나 서비스가
사용되지 않을까 생각한다. (Seamless)




NFC - iPhone 관련 특허

.Tech/Mobile

 

애플 특허를 전문적으로 소개하는 사이트에서

지난달 애플에서 NFC 관련 특허를 출원하였다고 해서 관심 있게 살펴보았다.

 

(출처 : 원문)

 

* Patent 배경/ 소개

Merchant (가맹점) POS (Point-of-Sales) / POP (Point-of-Purchase) 등을 사용하여,

결제를 진행하는데, 일반적으로 POP 라 하면 여러 독립된 디바이스들 (스캐너 같은)을 사용하는데,

각각 다른 기능을 담고 있다.

스캐너 통해서 상품에 대한 금액을 넣고, 금전기를 통해서 납입할 금액,

카드리더 통해서 카드사에 결제 요청 하는 등…

 

결국, 여러 관련 디바이스들을 사용하는 것이, 디바이스 크기나, 통신 수단에 대한

제약사항들로 인하여 Immobile(비이동성) POP System을 구성할 수 밖에 없다.

즉, POP System의 위치(이동)에 대한 제약은, 결국 운영의 유영성이나

시간이 소요될 수 밖에 없는 Sales을 야기시킬 수 있다는 것이다.

 

여기서 iPhone을 통한 ‘Sales Transcation (판매거래)’을 수행 할 수 있는

기술들을 소개한다.

 

1) iPhone을 통해서, Sales Transcation의 전체를 다룰 수 있다.

   - Ringing up articles of merchandise

   - Receiving payment information

   - ..

   여기서 NFC (near-fied communication, 근거리통신) 인터페이스, 카메라,

   스캐너와 같은 Input 장치들을 포함한 iPhone을 통하여,

   상품정보 및 결제 정보를 처리를 할 수 있다는 것이다.

 

2) iPhone과 Merchant 서버 연결

   iPhone에서, 무선 네트워크, Personal-area 네트워크, NFC 채널을 통해서

   Merchant 서버와 통신을 할 수 있는 하나이상의 인터페이스를 포함한다.

   게다가, 데이터 처리 속도, 보안 기능, 다른 설정값에 따라서,

   최적의 연결 인터페이스를 설정할 수도 있다.

 

   또한, 어플리케이션을 통하여, 다양한 영업 – 즉, Reward programg,

    고객 financing 등의 부가 기능까지 지원한다.

 

## iPhone 의 POP (Point-of-Purchase 시스템)

  위 그림은 iPhone의 POP를 보여주고 있다.

  #32 는 POP 아이콘

  #44 는 NFC Device을 포함하고 있다는 Exterior Symbol

      ISO 18092/ ISO 21481와 같은 표준과 호환 (low data rate : 424 kb/s)

      TransferJet Protocol 과 호환 (high data rate : 460 Mbps)

 

  #45 는 Biometric Sensor (생체 인식 센서)

       사용자 인증 및 확인 기능

       또는 이 기능을 포함하고 있는 스마트 카드와 지원

       또는 사용자를 인증하여, 결제 정보를 얻음

 

  #47는 Scanner

       Scanner 을 통하여 상품정보 및 결제 정보를 얻을 수 있음

  #46 는 Camera,

       Camera 통해서도 상품 정보 및 결제 정보를 얻을 수 있음    

 

 

 

  #198 는 결제 형태 선택 화면

  #200 에서 결제 방법(생체 인식) 을 선택하면, #338의 생체 인식 입력 화면으로 넘어옴

  #340 에서처럼 안내가 나오고, 지문인식과 같은 Scanner를 보여줌

 

  물론, Apple에서는 얼굴인식, 손모양, 음성인식과 같은 여러 형태의 Sensor를 둘 수 있다고 함

 

 

  iPhone에서 지문인식된 정보를 갖고, Payment 정보와 연계된 DB을 액세스함

  이 DB는 merchant 또는 3rd party에서 갖고 있을 수 있는데,

  이는 iPhone 디바이스 안에 있을 수도 있고, External Server에 있을 수도 있음 (#96)

 

  (중략)

  Fig4 를 보면, ‘Sales Transaction’을 처리하는 시스템을 보여준다.

  이 시스템은 집에서 피자를 주문하거나, 비행기내 있거나 등의 여러 곳에서 결제를 도와준다.

 

  또한, iPhone에서 Identification 정보들, 즉 SKU 넘버, UPC 코드, 모델 넘버, 시리얼 넘버 등 과

  같은 정보를 받을 수 있다.

 

 

  Fig 7에서는, 스캐닝을 통한, NFC을 설명하고 있다.

  Merchant(#178) 는, POP (#10)을 들고, 상품을 들고 있는 고객(#180)에게 다가가고 있다.

  Fig, 8,9,10 은 iPhone POP 애플리케이션을 통하여, 결제를 진행하는 것을 보여준다.

  (Merchant 의 POP인 것임)

 

 

< In-Store Basket System >

 

  Fig 43에서는 판매원 도움 없이, 상품을 스캔하고, 결제할 수 있는 것을 보여준다.

  예를들어, 상품들은 각각 보안태그를 부착하고 있어서, 결제를 진행하면

  알람기능이 자동으로 꺼지고, 결제를 하지 않은 상품의 경우 (매장을 나가는 등의)

  알람을 통하여 경고를 알리는 것을 보여준다.

 

  (특허에서는 어떻게 처리가 되고, 어떤 내용들을 담고 있는지 상세하게 보고하고 있다고 함)

 

 

< System Component Overview >

모바일에서의 멀티태스킹, 멀티프로세싱

.Tech/Mobile

다른 자료와 마찬가지로, 여기저기 짜집기 한 내용입니다.

 

[궁금한 사항]

요즘 스마트폰들은 멀티프로세서를 탑재하고 있을까?

멀티프로세서를 탑재하면 어떤 좋은 점이 있을까?

멀티프로세싱이 가능하려면, 그 조건은?

[내려가는 썰]

 

참고 : ‘세상, 그 중심의 나’, ‘스마트폰의 멀티태스킹 모델

무선 멀티미디어의 멀티 프로세싱 지원 (TI사)’ , ‘ARM Cortex-A9 MPCore RISC Multiprocessor Spec’

아이폰과 옴니아 2 스펙비교 (app.co.kr)’, ‘옴니아2의 아쉬운 점(틱플)’

애플리케이션 오견에 따른 멀티프로세싱 디자인 티업

휴대폰용 멀티 프로세서 출시 붐’, ‘쓰레드와 프로세스의 차이점…

 

 

1. 멀티프로세싱, 멀티태스킹, 멀티스레딩

>> 멀티태스킹

Task라는 것은 운영체제(OS)가 제어하는 프로그램의 기본 단위를 말한다. (출처 : 텀즈)

하나의 프로그램이 여러 유틸리티 프로그램들에게 요구를 할 수 있기 때문에,

유틸리티 프로그램들을 태스크라고 간주 할 수 있다.

멀티태스킹이란, 정해진 시간동안 이런 Task를 교대로 수행하는 것이라 할 수 있다.

(인터넷을 하면서, 음악을 듣거나 하는 등의 작업)

 

퀄컴에서 제공하는 S/W를 보면,

UI Task,DS Task , FS Task 등의 용어를 사용하는데,

여기서 UI Task라 하면, UI와 관련된 기능들을 수행하는 기본 단위라고 볼 수 있다.

 

>> 멀티스레딩

멀티스레딩이란, 하나의 프로세스(작업)가 병렬처리를 위하여, 작은 프로세스들을 돌리는 것을 의미함

멀티태스킹과 차이점

이 둘의 차이점은, 멀티태스킹은 동시에 여러 개의 프로그램을 실행 (사실상 시간적으로 분할 – 스케쥴링)

멀티스레딩은 하나의 프로그램을 여러 개의 기능으로 나누어 이를 동시에 실행

더욱 간단한 차이는, 멀티태스킹은 OS가 알아서 관리를 함.

멀티스레딩은 프로그램설계시 개발자가 이를 직접 구현해줘야 함.

 

또 다른 차이로,

멀티태스킹의 경우, 각 Task간의 자원이 공유되지 않는다. (멀티태스킹에서는 보통 Context-Switching을 하죠)

멀티쓰레딩의 경우, 각 쓰레드간의 자원이 공유되면, 이는 프로그래밍을 통해 구현이 가능하다.

 

>> 멀티프로세싱

조금 더 HW레벨의 이야기가 되겠는데요.

멀티프로세싱이란, 하나의 프로세서가 아닌 여러 개의 프로세서가 서로 협력하여 일을 처리하는 것을 의미합니다.

하나의 컴퓨터에 여러 개의 프로세서가 있을 수 있고,아니면 여러 컴퓨터에 각각의 프로세서가 있을 수 도 있습니다.

 

 

즉, 한 프로그램이 여러 컴퓨터에 걸쳐서

Feature Phoone의 경우,

Floating Point 연산 프로세서나 다량의 신호처리에 필요한 DSP 등의 프로세서를 추가장착함

 

 

2. 모바일 폰에서 멀티프로세서가 장착이 되나?

   또한, 멀티태스킹이 되나?

(이는 내일 다시 써야겠다)

아이폰의 경우, 멀티태스킹이 안됨

옴니아의 경우, 멀티태스킹이 됨

==> 이는 운영체제 차이라고 할 수 있는데, 뭐가 더 좋다라고는 말 못함^^

Pre-Condition vs Post-Condition

.Tech

구글 검색을 해보니 객체지향설계나 UML쪽에서 자주 언급이 되는 말이였군.

 

일단 우리말로는 Pre-Conditions 은 사전 조건, Post-Conditions 은 사후 조건이라 한다.

 

점 더 와닿는 설명을 한 곳이 있길래 인용하면

(참고 : 여기 가보시라)

 

"소프트웨어의 검증이라는 입장에서는 서비스란 메소드나 함수의 호출이 된다

예를 들면, 제곱근을 계산하는 서비스를 제공하는 메소드 double sqrt (double x )에

관한 계약은 서비스를 받는 측의 의무(0 혹은 정수의 인수 x를 건네주는 서비스를

제공하는 측의 의무) 결과를 제곱하면 인수와 동일한 것이 된다

서비스를 받는 측의 의무를 사전 조건(Pre-conditions)이라 하고,

서비스를 제공하는 측의 의무를 사후 조건(Post-conditions)이라 한다.

계약이란 사전 조건이 만족되면 사후 조건도 만족된다는 것을 보증하는 것이다."

이렇게 설명하니깐 쉽게 이해가 간다^^;;

RFC2119 - MUST, SHOULD, MAY, SHALL + NOT 차이

.Tech

흔히 어느 스펙을 명시하고 있는 표준문서들을 보면 다음과 같은 문구가 나오는 것을 알 수 있다.

"

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”,
“RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [RFC2119]

"

자자 그럼 이건 어디서 나오는 말들일까?

 

RFC (Request For Comments) 문서 2119번을 보자.

(자세한 것은 여기 참고^^)

 

* MUST : REQUIRED, SHALL과 마찬가지로 '해당 정의가 표준에서 절대적으로 요구된다는 것'

* MUST NOT : SHALL NOT과 마찬가지로, '해당 정의가 표준에서 절대적으로 금기시 된다는 것'

* SHOULD : RECOMMENDED 와 유사한 뜻으로,

                  특정 상황에서는 해당 정의가 무시될수도 있지만,

                   이런 상황이라도 충분히 고려해야 한다는 것

* SHOULD NOT : NOT RECOMMENDED 와 유사한 뜻으로,

                  특정 상황에서는 해당 정의가 유용하거나 받아들일 수도 있지만,

                  이런 상황이라도 충분히 고려해야 한다는 것

* MAY : OPTIONAL 와 유사한 뜻으로, 시장 상황에따라, 제품성능 향상을 위해서

             선택할 수 있다는 뜻

           

@ SHOULD 가 약간 아리까리 하군

Java) Sublist , Not-serializable

.Tech/Java

자바 프로그램의 상태를 저장할때,

일반 텍스트 파일로 저장할 수도 있고, 직렬화를 통해서 저장할 수도 있다.

 

직렬화를 하려면, Class에서 "implements Serializable"을 통해서 인터페이스를 구현해야 한다.

또, 직렬화를 하면, 이 객체와 관련된 것이 모두 직렬화(자동) 되어서 저장이 된다.

 

하지만, 직렬화 되지 않는 경우가 있다.

예를들어, Collection 클래스에서 'sublist'라는 메서드를 사용하는 경우

sublist 는 'java.util.RandomAccessSubList'의 instance를 리턴하게 되는데,

이는 직렬화가 안된다.

 

이런 경우, ArrayLIst와 같은 'Serializable List'에 그 내용을 담아야 한다.

 

다음은 직렬화 되지 않는 경우

Collections.sort(userList,userComp);

userList.sublist(min,max);

 

직렬화를 하려면..

List list = new ArrayList();

Collections.sort(userList,userComp);

userList.sublist(min,max);

list.addAll(userList);

 

 

..관련 자료

http://journeymanjournal.blogspot.com/2005/07/collectionssublist-returns-non.html

http://xrath.com/javase/ko/6/docs/ko/technotes/guides/collections/designfaq.html#5

http://dmi.ensica.fr/doc/Java/j2sdk-1_4_2-doc/docs/j2h/java/util/Collections.java.html

Java) Matrix Package (Jama, Colt, MTJ)

.Tech/Java

Java 에서 SVD 계산하는 일이 있어서,

관련 Package 를 찾아봤는데, 제목에 있는 3개가 유명하다는 것을 알았다.

 

1. Jama

    JAMA 링크

   Dense Matrix을 다루는데 있어서 작고 가볍다.

   LNPACK , EISPACK 에 적용된 알고리즘과 같은 알고리즘을 사용한다.

 

2. Colt

    COLT 링크

    Jama 보다 조금 높은 성능을 보인다 하는데, (테스트 결과로는 별 차이 없다)

   다양한 Matrix Algorithm을 보여주고 있다.

 

3. MTJ

    MJT 링크

    Jama 보다 더 많은 Matrix Type을 포함하고 있고,

    Colt 보다 조금더 최적화된 Sparse matrix을 다룰 수 있다 한다.

 

* 위 3개의 Library을 통해서 MxN Matrix에 대한 SVD 을 구해보았다.

   M, N의 다양한 값들과 Dense/Sparse Matrices 을 다루어 보았는데,

   테스트 결과는 3개다 비슷하다.

 

* Java Forum에서 논의 된 내용 보는 것도 도움이 될 듯 하다.