본문 바로가기
[Effective Java] 잘 판단해서 최적화하자 [Effective Java] 잘 판단해서 최적화하자 - 최적화에 대한 명언이 있다. 더 많은 컴퓨팅 죄악이 다른 어떤 한 가지 이유(무지로 인한 어리석음을 포함해서)보다는 효율성(달성이 안 되는)의 이름으로 저질러진다. 사소한 효율성은 잊어야 한다. 97%의 시간에 대해 논하자. 성급한 최적화는 모든 죄악의 근원이다. 최적화에 관한 두 가지 규칙을 따르자. 규칙 1. 하지 말자. 규칙 2. (전문가에 한해서). 아직 하지 말자. 정말 최적화되지 않은 솔루션이 있을 때까지는. - 성급한 최적화는 얻는 것보다 잃는 것이 더 많기 쉽다. 최적화를 하면서 빠르지도 않고 제대로 동작하지도 않으며, 문제를 쉽게 해결하기도 어려운 소프트웨어를 만들기도 쉽다. - 성능 때문에 훌륭한 아키텍쳐 원리를 포기하지 말자. .. 2017. 2. 16.
[Effective Java] 클래스와 그 멤버의 접근성을 최소화하자. [Effective Java] 클래스와 그 멤버의 접근성을 최소화하자. - 잘 설계된 모듈과 그렇지 않은 것을 구분 짓는 가장 중요한 잣대는, 모듈 자신의 내부 데이터 및 그 외의 상세한 구현 부분을 다른 모듈로부터 어느 정도로 숨기느냐에 달려 있다. - 모듈은 자신의 API 를 통해서만 다른 모듈과 상호작용한다. 정보 은닉(information hiding) 또는 캡슐화(encapsulation)이 그것이다. - 정보 은닉은 시스템을 구성하는 모듈들 간의 결합도를 낮추어(decoupling) 모듈 별로 개발, 테스트, 최적화, 사용 및 수정이 가능하도록 한다. 또한 이렇게 하면 병행 개발 ( parallel development ) 를 할 수 있어 시스템 개발이 빨라진다. 모듈을 더 빨리 파악할 수 있.. 2016. 10. 17.
[iOS Study] 디버그 도구 [iOS Study] 디버그 도구 출처 : 아론 힐리가스의 iOS 프로그램 -Xcode 5 CPU와 메모리 사용량에 관한 정보를 한눈에 제공하는 디버그 측정기(debug gauges) 가 있다. -디버그 네비게이터는 프로그램 실행 중에(실시 정지나 중단된 경우가 아닌) CPU 와 메모리 측정기를 보여준다. -이 측정기들은 실제 프로그램이 실행 중인 하드웨어를 기반으로 측정한다.Mac 은 iOS 장비보다 가용 램이 훨씬 많고 CPU 코어도 대개 더 많다.따라서 iOS 시뮬레이터에서 프로그램을 실행하면 CPU 와 메모리 사용량은 매우 작게 나타날 것이다. -CPU 디버그 측정기는 편집기 패널에 CPU 리포트를 표시한다. Percentage Utilized 해당 장비가 가진 CPU 코어 수에 상대적인 CPU .. 2016. 2. 26.
[iOS Study] 뷰 컨트롤러 [iOS Study] 뷰 컨트롤러 출처 : 아론 힐리가스의 iOS 프로그래밍 -뷰 컨트롤러는 UIViewController 의 하위 클래스 인스턴스이다.뷰 컨트롤러는 뷰 계층구조를 관리한다.뷰 컨트롤러는 계층구조를 구성하는 뷰 객체들을 만들고 뷰 객체와 관련된 이벤트를 제어하고, 윈도우에 뷰 계층구조를 추가하는 역할을 한다. -UIViewController 의 하위 클래스는 중요한 프로퍼티를 하나 상속받는다. @property (nonatomic, strong) UIView *view; 이 프로퍼티는 UIView 인스턴스를 가리킨다.뷰 컨트롤러의 View 가 윈도우의 하위뷰로 추가되면, 뷰 컨트롤러의 뷰계층 전부가 윈도우에 추가된다. -뷰 컨트롤러의 view 는 화면에 보여줄 필요가 있을 때까지 만들어지.. 2016. 2. 18.
[iOS Study] ARC 를 통한 메모리 관리 [iOS Study] ARC 를 통한 메모리 관리 출처 : 아론 힐리가스의 iOS 프로그래밍 - 메소드나 함수가 실행되면 스택(stack)이라고 하는 메모리 영역의 일부가 할당된다. 이 할당된 메모리 공간을 프레임(frame)이라고 한다. -프로그램을 시작하고 main() 이 실행되면 main() 의 프레임이 스택에 들어간다.main() 이 다른 메소드(또는 함수)를 호춣하면 그 메소드의 프레임은 스택의 꼭대기에 들어간다. 각 메소드나 함수가 끝날 때마다 해당 프레임은 스택 꼭대기에서 즉시 빠져나와 사라진다.그 메소드가 다시 호출되면 새 프레임이 할당되고 스택에 들어간다. - ARC(자동 레퍼런스 카운팅, Automatic Reference Counting) 가 프로그램의 메모리 관리를 대신해준다. - .. 2016. 2. 15.
[최적화] WIZVER Process Manager, Veraport(보안모듈 관리 프로그램), TouchEn key with E2E, KeySharp CertRelay, INISAFE SandBox [최적화] WIZVER Process Manager, Veraport(보안모듈 관리 프로그램), TouchEn key with E2E, KeySharp CertRelay, INISAFE SandBox -아래 프로그램들은 "부산은행" 인터넷 뱅킹을 이용할 때 설치한 프로그램들이다. -WIZVER Process ManagerVeraport(보안모듈 관리 프로그램)TouchEn key with E2EKeySharp CertRelayINISAFE SandBox -삭제해도 될까? "부산은행" 인터넷 뱅킹을 다시 사용할 일이 없으면 삭제해도 된다.위 프로그램들 중 몇가지는 범용적인 보안 프로그램들로 다른 은행의 인터넷 뱅킹을 사용할 때에도 이용된다.삭제를 한다고 엄청 큰 일이 벌어지진 않는다.다음에 인터넷 뱅킹을 .. 2015. 11. 14.
[도서/리뷰] 하루 굶고 하루 먹기 [도서/리뷰] 하루 굶고 하루 먹기 하루 굶고 하루 먹기저자베른하르트 루드비히 지음출판사퍼플카우 | 2013-06-01 출간카테고리건강책소개굵고 짧게 끝내는 격일 단식 21일 프로그램 하룻동안 완전히 굶...글쓴이 평점 이 책을 사야 하나 고민하는 독자에게.. 요즘 1일 1식, 간헐적 단식, 그리고 이 책까지..현대 사회는 영양의 과잉 상태에 있고, 그래서 단식을 해야 한다는 이야기를 많이 하고 있다. 이 책은 내가 읽은 단식에 대한 두번째 책이다..책마다 제시하는 실험결과는 글쓴이의 주장을 뒷받침하기 위한 결과 위주로만 선택한듯한 느낌이 있었다. ( 당연한 것이지만.. 너무 편중되고 극단적인 결과들이 많아, 그 결과들은 오히려 거부감을 줄 정도였다. )단식에 대해서는 글쓴이마다 주장이 조금씩 다르기 때.. 2015. 6. 7.
난독화 ( proguard ) 에 대한 고급정보. 난독화 ( proguard ) 에 대한 고급정보. -proguard option 에 -printusage unused.txt 를 추가해주면, 사용하지 않는 코드들이 출력되어 유지보수에 좋다. -optimization 하는 옵션을 줄 수도 있지만,optimization 은 Dalvik version 에 따라 호환이 안 되는 경우가 있어 함부로 쓰지는 않는 것이 좋다. -open source library 의 경우는 obfuscate(난독화) 할 필요가 없다.이미 open 된 소스들이기 때문이다.이럴 경우 아래와 같은 코드를 추가해주면, build time 을 줄일 수 있다. -libraryjars libs-keep class android.support.v4.app.** { *; }-keep interfa.. 2014. 5. 30.
[Android] Custom View 를 사용할 때 수동 inflate, merge, attribute setting 피하는 방법. [Android] Custom View 를 사용할 때 수동 inflate, merge, attribute setting 피하는 방법. http://trickyandroid.com/protip-inflating-layout-for-your-custom-view/ 보통의 Custom View 는 ViewGroup ( LinearLayout, RelativeLayout, FrameLayout 등 ) 을 상속하여, 여러가지 component 들을 가지고 있는다. 이 경우 보통은 최초 로딩시 inflate 를 통해서 layout 을 불러온다.이 때 root viewgroup 이 custom view 가 상속한 viewgroup 과 같다면, merge 를 사용하여 view hierarchy 를 조금 더 최적화 할 .. 2014. 4. 12.
반응형