'Java'에 해당되는 글 3건

  1. 2017.03.06 IE11 관련 Javascript 수정사항
  2. 2017.02.01 java 소켓 연결 Timeout 설정
  3. 2017.01.24 복잡한 객체 복사(Deep Copy)

IE 업그레이드와 관련하여, JavaScript 수정 내용입니다.


1)     JavaScript Date methods 중 getYear()는 Deprecated 되었으며, IE11에서 정상적으로 동작하지 않음


getYear() ==> getFullYear()


* jquery에서 사용되는 getYear()은 수정하지 말고 먼저 테스트 진행해서 문제 발생여부 확인)


2)     IE11 업그레이드 후 사용하는 중 event.x event.y 가 IE11에서 정상동작 하지 않는 것을 확인


event.x => event.clientX

event.y => event.clientY


아래는 javascript deprecated and obsolete features 입니다.

대부분 IE not supported이므로 위의 스크립트 부분만 수정하시면 됩니다.


참고:

<Javascript Deprecated and obsolete Features>

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features#RegExp_properties




'Java' 카테고리의 다른 글

java 소켓 연결 Timeout 설정  (0) 2017.02.01
복잡한 객체 복사(Deep Copy)  (0) 2017.01.24
Posted by 우진2015
,

소켓 연결에 대한 Timeout 설정이 없을 경우, 일반적으로 2~3초 내에 아래와 같은 메시지를 받을 수 있으나

10초 가까이 응답이 delay 되기도 합니다.


연결 대상 69.111.112.159...호스트에 연결할 수 없습니다. 포트 3434: 연결하지 못했습니다.



이 경우에 소켓 연결 자체에 대한 Timeout 설정을 해서 Application이 소켓 연결을 위한 wait time을 줄여 주어야 합니다.


Socket m_sock=null;

try{

    int timeout = 500;  //Socket connection check. timeout : 0.5sec

    SocketAddress socketAddress = new InetSocketAddress(sIp, nPort);

    m_sock = new Socket();

    m_sock.connect(socketAddress, timeout); //Socket 연결 자체에 대한 타임아웃 설정

} catch (SocketException se) {

se.printStackTrace();

} catch (IOException ioe) {

ioe.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

m_sock.close();

} catch (Exception e) {

e.printStackTrace();

}

}




'Java' 카테고리의 다른 글

IE11 관련 Javascript 수정사항  (0) 2017.03.06
복잡한 객체 복사(Deep Copy)  (0) 2017.01.24
Posted by 우진2015
,

우리가 객체를 복사할때 Clone() 을 사용합니다. 하지만 이경우, 객체가 가지고 있는 Sub 객체는 복사되지 않고, 주소 정보만 가지고 있게 됩니다.


hOriginalMap = new HashMap();

hOriginalMap.put("key1", "value1");

hOriSubMap = new HashMap();

hOriSubMap.put("subKey1","subValue1");

hOriginalMap.put("keyObj1", hOriSubMap);


HashMap hNewMap = null;

hNewMap = (HashMap)hOriginalMap.clone();



<<Shallow copy 결과>>

Original Map address=[3526198]

new      Map address=[7699183]

Original Sub Map address=[14285251]  <== 같은 주소값 

new      Sub Map address=[14285251]  <== 같은 주소값



위에서 hOriginalMap 과 hNewMap 객체는 서로 다른 주소값을 가지게 되지만,

hOriSubMap 객체의 경우에는 같은 주소값을 가지게 되는 것입니다.

이와 같은 복사 방식을 ShallowCopy 라고 합니다.


그러면 Sub 객체 까지 새로운 메모리 주소로 복사를 하기 위해서는

hOriginalMap 객체 또한 Clone 해서 hNewMap 에 담아 줘야만 Sub 객체를 포함해서

복사를 할 수 있는 것입니다.


하지만 Data Set이 계층형의 복잡한 구조라고 하면, 구조 정보를 파악해서 각각을 복사한다는 것은 쉬운일이 아닙니다. 또한 이러한 Data set이 여러개라면 각각의 Data Set 별로 객체를 복사해서 처리하기는 어렵습니다.


이럴경우, 아래와 같이 하면 객체를 복사 할 수 있습니다.


Object  => Object OutputStream=> new Object InputStream => new Object



아래는 복사하는 방법입니다.


hNewMap = null;

ByteArrayOutputStream byteArrOs;

ObjectOutputStream objOs;

ByteArrayInputStream byteArrIs;

ObjectInputStream objIs;

Object deepCopy;


HashMap hOriginalMap = new HashMap();

byteArrOs = new ByteArrayOutputStream();

objOs = new ObjectOutputStream(byteArrOs);

objOs.writeObject(hOriginalMap);

byteArrIs = new ByteArrayInputStream(byteArrOs.toByteArray());

objIs = new ObjectInputStream(byteArrIs);

deepCopy = objIs.readObject();

hNewMap = (HashMap)deepCopy;

 

 


Object stream을 이용하면 Remote 통신에서 json 등 Plain text 가 아닌 원격지에 동적 java Object를 생성하여 Model 객체를 자동생성 할 수도 있습니다.

 

복잡한 객체 Deep copy 하느라 고생하지 마세요~~^^;


 

 

 


'Java' 카테고리의 다른 글

IE11 관련 Javascript 수정사항  (0) 2017.03.06
java 소켓 연결 Timeout 설정  (0) 2017.02.01
Posted by 우진2015
,