본문 바로가기
[Effective Java] 직렬화된 인스턴스 대신 직렬화 프록시의 사용을 고려하자. [Effective Java] 직렬화된 인스턴스 대신 직렬화 프록시의 사용을 고려하자. - Serializable 인터페이스를 구현할 때는 결함과 보안 문제가 생길 가능성이 커진다. 정상적인 생성자 대신 언어 영역 밖의 메커니즘을 사용해서 인스턴스가 생성되기 때문이다. 그런 위험을 현저히 줄이는 방법이 직렬화 프록시 패턴(Serialization proxy pattern) 이다. - 직렬화 프록시 패턴은 직렬화 가능 클래스의 private static 중첩 클래스를 설계한다. 직렬화 프록시(serialization proxy) 라고 하는 inner 클래스는 외곽 클래스를 매개 변수 타입으로 하는 단일 생성자를 갖는다. 그리고 이 생성자는 자신의 인자로부터 데이터만 복사한다. 일관성 검사나 방어 복사도 할.. 2017. 3. 28.
[Effective Java] 독자적인 직렬화 형태의 사용을 고려하자 [Effective Java] 독자적인 직렬화 형태의 사용을 고려하자 - 클래스를 설계할 때 클래스가 Serializable 을 구현하면서 기본 직렬화 형태를 사용한다면, 나중에 함부로 버릴 수 없고, 그 직렬화 형태를 계속 유지해야 할 가능성이 높다. - 적합 여부를 우선적으로 고려해보고 기본 직렬화 형태를 수용하자. 기본 직렬화 형태는 유연성, 성능, 정확성의 관점에서 타당하다는 결정이 섰을 때 사용해야 한다. 일반적으로 말하면, 우리가 독자적인 직렬화 형태를 설계한다고 할 때 하게될 인코딩과 대부분 같은 경우에만 기본 직렬화 형태를 사용해야 한다. - 이상적인 객체 직렬화 형태는 그 객체가 표현하는 논리적 데이터만 포함한 것이다. - 기본 직렬화 형태는 객체의 물리적 표현이 논리적인 내용과 동일할 .. 2017. 3. 23.
[Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. [Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. - 객체 직렬화(object serialization) API 는 객체를 바이트 스트림으로 인코딩하고, 인코딩된 바이트 스트림으로부터 객체를 복원(디코딩) 하는 프레임워크이다. - 객체를 바이트 스트림으로 인코딩하는 것을 직렬화(serializing)이라 하고, 그 반대의 절차를 역직렬화(deserializing)이라고 한다. - 객체가 일단 직렬화되면, 인코딩된 객체는 향후에 역직렬화 하기 위해 하나의 실행 중인 VM 에서 다른 VM 으로 전송되거나 디스크에 저장될 수 있다. 직렬화는 원격 통신을 위한 표준 통신 회선 수준의 객체 표현을 제공한다. 직렬화 프록시는 effective java 의 직렬화 주제중 가장 .. 2017. 3. 21.
[Effecitve Java] 네이티브 메소드를 분별력 있게 사용하자. [Effecitve Java] 네이티브 메소드를 분별력 있게 사용하자. - JNI 는 네이티브 메소드를 호출할 수 있게 해준다. 네이티브 메소드는 C, C++ 과 같은 네이티브 프로그래밍 언어로 작성한 특별한 메소드를 말한다. - 지금까지 네이티브 메소드의 주용도는 세가지였다. 레지스트리와 파일 락 같은 특정 플랫폼 관리시스템의 접근을 제공 레거시 데이터를 제공할 수 있는 레거시 코드로 된 라이브러리의 접근 제공 성능 향상을 위해 어플리케이션의 일부를 네이티브 언어로 작성하는 데 사용 - 자바가 발전하면 기존의 네이티브 메소드만이 할 수 있었던 일을 많이 대체하였다. java.util.prefs 패키지가 레지스트리 기능을 제공. java.awt.SystemTray 가 데스크톱 시스템의 휴지통 영역의 접근.. 2017. 2. 14.
[실용주의 프로그래머] 적당히 괜찮은 소프트웨어 [실용주의 프로그래머] 적당히 괜찮은 소프트웨어 출처 : 실용주의 프로그래머-우리는 종종 뭔가 나아지게 하려다가 괜찮은 것마저 망친다. - 리어왕 -적당히 괜찮은 - 사용자, 미래의 유지보수자 혹은 자기 마음의 평화를 유지하기에 적당히 괜찮은 - 소프트웨어를 만들도록 자신을 단련할 수 있다. -“적당히 괜찮은” 이라는 문구는 너절하거나 형편없는 코드를 의미하지 않는다.시스템이 성공하려면 사용자의 요구사항을 충족해야 한다.당신이 생산해 낸 것이 어느 정도면 적당히 괜찮은지를 결정하는 과정에사용자가 참가할 기회를 가져야 한다는 걸 알아야 한다. -품질을 요구사항으로 만들어라. -오늘의 훌륭한 소프트웨어는 많은 경우, 내일의 완벽한 소프트웨어보다 낫다.사용자들에게 뭔가 직접 만져볼 수 있는 것을 일찍 준다면,.. 2016. 7. 27.
[iOS Study] 지역화 [iOS Study] 지역화 출처 : 아론 힐리가스의 iOS 프로그래밍 -국제화(internationalization)은 각 나라의 고유 문화 정보를 앱에 하드 코딩 없이 적용하는 것이다.(문화적 정보는 언어, 통화, 날짜 포맷, 숫자 포맷 등을 뜻한다.) -지역화(localization) 은 사용자의 언어와 지역 포맷 설정을 기반으로 앱에 적절한 데이터를 제공하는 과정이다.이러한 설정은 설정 앱에서 찾을 수 있다.[일반] 항목에서 [다국어] 열을 선택하면 된다. -internationalization 은 i18n 으로localization 은 l10n 으로 축약해서 쓰기도 한다. -국제화는 NSDateFormatter 와 같은 Formatter 를 사용해서 구현한다.NSDateFormatter 는 사용.. 2016. 3. 17.
안드로이드도 안전모드가 있다? 안드로이드도 안전모드가 있다? 출처 : http://sjinwon2.blog.me/220084216131 - 안드로이드의 안전모드란? 윈도우 안전모드와 비슷한 녀석으로 최소한의 드라이버와 시스템 구성으로 안드로이드를 부팅한다. 안전모드로 부팅되면 기본앱은 정상적으로 작동하지만, 3rd party app 은 투명으로 표시되며 실행하려 하면 "어플리케이션이 설치되지 않았습니다" 라고 나온다. - 안전모드에서 되돌아가는 방법 낮은확률로 스마트폰의 하드웨어/소프트웨어 결함으로 자동으로 안전모드에 진입되는 경우도 있지만, 거의 찾기 힘들다. 안전모드에서 일반모드로 돌아가려면 그냥 폰을 재부팅하면 된다. - 수동으로 안전모드 들어가는 방법 1. 폰 부팅 할 때 통신사 로고가 등장하면 메뉴키(소프트키라도 상관 없음).. 2015. 7. 15.
[android] camera take and crop ( 사진 찍으면서 crop 까지 하기 ) 안드로이드, 사진 찍으면서 crop 까지 하기 갤러리로부터 이미지 선택하며 크롭하는 방법. Camera 로 사진을 찍으면서 Crop 까지 하는 sample code. private static final int REQUEST_CODE_PROFILE_IMAGE_CAPTURE = 545;private static final int REQUEST_CODE_PROFILE_IMAGE_CROP = 2103; private static final String TYPE_IMAGE = "image/*";private static final int PROFILE_IMAGE_ASPECT_X = 3;private static final int PROFILE_IMAGE_ASPECT_Y = 1;private static fina.. 2013. 8. 5.
반응형