본문 바로가기

언어14

[Effective Java] 직렬화된 인스턴스 대신 직렬화 프록시의 사용을 고려하자. [Effective Java] 직렬화된 인스턴스 대신 직렬화 프록시의 사용을 고려하자. - Serializable 인터페이스를 구현할 때는 결함과 보안 문제가 생길 가능성이 커진다. 정상적인 생성자 대신 언어 영역 밖의 메커니즘을 사용해서 인스턴스가 생성되기 때문이다. 그런 위험을 현저히 줄이는 방법이 직렬화 프록시 패턴(Serialization proxy pattern) 이다. - 직렬화 프록시 패턴은 직렬화 가능 클래스의 private static 중첩 클래스를 설계한다. 직렬화 프록시(serialization proxy) 라고 하는 inner 클래스는 외곽 클래스를 매개 변수 타입으로 하는 단일 생성자를 갖는다. 그리고 이 생성자는 자신의 인자로부터 데이터만 복사한다. 일관성 검사나 방어 복사도 할.. 2017. 3. 28.
[Effecitve Java] 네이티브 메소드를 분별력 있게 사용하자. [Effecitve Java] 네이티브 메소드를 분별력 있게 사용하자. - JNI 는 네이티브 메소드를 호출할 수 있게 해준다. 네이티브 메소드는 C, C++ 과 같은 네이티브 프로그래밍 언어로 작성한 특별한 메소드를 말한다. - 지금까지 네이티브 메소드의 주용도는 세가지였다. 레지스트리와 파일 락 같은 특정 플랫폼 관리시스템의 접근을 제공 레거시 데이터를 제공할 수 있는 레거시 코드로 된 라이브러리의 접근 제공 성능 향상을 위해 어플리케이션의 일부를 네이티브 언어로 작성하는 데 사용 - 자바가 발전하면 기존의 네이티브 메소드만이 할 수 있었던 일을 많이 대체하였다. java.util.prefs 패키지가 레지스트리 기능을 제공. java.awt.SystemTray 가 데스크톱 시스템의 휴지통 영역의 접근.. 2017. 2. 14.
[Django] 파이썬 웹 프로그래밍 - 웹 프로그래밍의 이해 [Django] 파이썬 웹 프로그래밍 - 웹 프로그래밍의 이해 -책을 읽으며 Remind 하는 내용, 핵심 내용, 모르던 내용을 정리한 것입니다. 예문 및 자세한 설명은 책을 구매하여 보세요~ < 1.1. 웹 프로그래밍이란? > < 1.2. 다양한 웹 클라이언트 > * 1.2.1. 웹 브라우저를 사용하여 요청 * 1.2.2. 리눅스 curl 명령을 사용하여 요청 -curl 명령은 HTTP/HTTPS/FTP 등 여러 가지의 프로토콜을 사용하여 데이터를 송 수신할 수 있는 명령이다. * 1.2.3. Telnet 을 사용하여 요청 -telnet 명령은 터미널 창에서 입력하는 내용을 그대로 웹 서버에 전송한다.telnet 명령모드에서 나가려면 아래 두 라인을 입력해야 한다. ^] ( Ctrl + ] )quit .. 2016. 12. 6.
[android] Fragment 와 함께라면 Configuration Change 가 무섭지 않아. [android] Fragment 와 함께라면 Configuration Change 가 무섭지 않아. -애석하게도 대부분의 개발자들이 manifest 에 configChanges 속성을 통해 orientation 값만 설정해주면 모든게 해결되는 줄 안다. 하지만 그렇지 않다. Configuration Change 는 여러 경우에 발생된다. 기본적으로 configChanges 에 들어가는 값들의 상황이 그렇고, 언어가 변경되거나, dock 에 연결되거나, font 크기가 바뀌거나 등의 조건으로 destroy-recreate 되곤 한다. 또한 리소스, 메모리 관리 측면에서 Activity 가 destroy 되고 create 되도록 하는 것이 좋다. - 예전부터 개발을 해온 사람이라면 Activity 에 on.. 2016. 10. 12.
[명동 맛집] 하이디라오 - 제대로 된 중국식 훠궈를 맛보자. [명동 맛집] 하이디라오 - 제대로 된 중국식 훠궈를 맛보자. # 한창 마라샹궈에 빠져 있는 형. 그리고 중국에서의 마라탕 맛을 그리워하는 형수님. 그리고 마라라면 무조건 좋아하는 내가 뭉치게 되서 "하이디라오" 에 원정을 간다. # 현재는 하이디라오 한국지사는 명동점 하나인데, (강남쪽에도 냈다는 소문을 들었다.. )그래서인지 사람이 엄청 많아 평일 저녁이었는데도 웨이팅을 해야 했다. # 또 신기한 것은 중국인들이 그렇게 많이 있다는 것. 한국에 왔으면 한국음식 드시지.. # 웨이팅 하면서 지루하지 않게 기다리라고 장기판이 준비되어 있다. # 한쪽에는 기다리면서 먹으라고 강냉이류가 비치되어 있고, 아래쪽 컵은 웨이팅 테이블에 비치되어 있는 매실차를 마시라고 준비된 것. # 네일 케어 서비스는 웨이팅 때.. 2016. 8. 16.
[iOS Study] 지역화 [iOS Study] 지역화 출처 : 아론 힐리가스의 iOS 프로그래밍 -국제화(internationalization)은 각 나라의 고유 문화 정보를 앱에 하드 코딩 없이 적용하는 것이다.(문화적 정보는 언어, 통화, 날짜 포맷, 숫자 포맷 등을 뜻한다.) -지역화(localization) 은 사용자의 언어와 지역 포맷 설정을 기반으로 앱에 적절한 데이터를 제공하는 과정이다.이러한 설정은 설정 앱에서 찾을 수 있다.[일반] 항목에서 [다국어] 열을 선택하면 된다. -internationalization 은 i18n 으로localization 은 l10n 으로 축약해서 쓰기도 한다. -국제화는 NSDateFormatter 와 같은 Formatter 를 사용해서 구현한다.NSDateFormatter 는 사용.. 2016. 3. 17.
[미움받을 용기] 두번째 밤 - 모든 고민은 인간관계에서 비롯된다. #청년내가 나 자신을 싫어하는 것은 무슨 목적이 있어서 그러한가? 철학자단점만 눈에 들어오는 것은 "나 자신을 좋아하지 말자" 라고 결심 (목적) 했기 때문.자신을 좋아하지 않겠다는 목적 달성을 위해 장점은 안 보고 단점에 주목하는 것. 그 목적을 설정한 이유는 인간관계 속에서 미움을 사고 상처받는 것을 두려워하기 때문.그래서 인간관계를 맺지 않으려고, 스스로 단점을 찾아내서 스스로를 미워하는 것.그런 상태에 있으면 누구와도 관계를 맺지 않아도 되고, 거절 당했을 때도 이유가 될 수 있다.이런 단점이 있어 거절 당했다. 이 단점만 없으면 나도 사랑받을 수 있다. #아들러인간의 고민은 전부 인간관계에서 비롯된 고민이다. #철학자개인에 국한되는 고민, 이를테면 내면의 고민이라는 것은 존재하지 않아.어떤 종류.. 2016. 2. 5.
[Effective Java] 쓸모 없는 객체 참조를 제거하자. [Effective Java] 쓸모 없는 객체 참조를 제거하자. - 자바와 같이 가비지 컬렉션을 자동으로 해주는 언어는 메모리 관리를 따로 해줄 필요가 없다고 생각하기 쉬우나, 이는 틀린 생각이다. GC 의 원리에 대해 정확히 이해하고 메모리 관리를 해주어야 한다. 다만 그 메모리 관리하는 범위가 C, C++ 과 같은 GC 가 없는 언어들에 비해 더 간단할 뿐! - 자바에서도 메모리 누출(memory leak)이 쉽게 발견된다. 메모리 누수가 생기면, 성능저하의 형태로 서서히 나타난다. GC 작업이 증가하거나, 메모리 할당과 회수 횟수가 빈번해지기 때문이다. 심하면 디스크 페이징 현상이 나타나기도 하고, 아주 극단적으로는 OutOfMemoryError 가 발생한다. 메모리 누수의 무서운 점은, 특정 객체.. 2016. 1. 4.
Objective-C 의 기본 ( Basic Objective-C ) Object-C 의 기본 ( Basic Objective-C ) 출처 : http://www.tutorialspoint.com/objective_c/ > - OOP 언어로 Smalltalk-style 을 C 언어 에 가미한 언어이다. Apple 의 OSX 와 iOS 에서 공식적으로 사용되는 언어이다. > - Object-C 는 OOP 의 4가지 조건 ( Encapsulation, Data hiding, Inheritance, Polymorphism ) 을 모두 만족시키는 언어이다. - Foundation Framework 는 아래 명시된 기능들을 비롯해 많은 기능을 제공한다. * NSArray, NSDictionary, NSSet 과 같은 data type 을 제공 * file, string 등 많은 u.. 2015. 6. 16.