본문 바로가기
[Effective Objective-C] #21 오브젝티브-C 에러 모델을 이해하라 [Effective Objective-C] #21 오브젝티브-C 에러 모델을 이해하라 출처 : Effective Objective-C -기본적으로 ARC ( Automatic Reference Counting) 가 예외(Exception)에 안전하지 않다.사실 이는 범위 끝에서 릴리스되어야 하는 객체가 예외가 발생하면 릴리스되지 않는다는 것을 의미한다.컴파일러 플래그( flag ) 를 켜면 예외 안전( exception-safe ) 모드를 생성할 수 있지만,그렇게 하면 예외가 발생하지 않는 상황에서도 동작하는 추가적인 코드가 만들어진다.이 컴파일러 플래그는 -fobj-arc-exceptions 다. -ARC 를 사용하지 않더라도 예외가 발생했을 때 메모리 누수를 막는 안전한 코드를 작성하는 것은 어렵다... 2017. 9. 1.
[Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #9 ~ #16 [Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #9 ~ #16 #9 : 클래스 클러스터 패턴을 사용해 구현의 상세 내용을 숨겨라. 클래스 클러스터 패턴은 간단한 퍼블릭 퍼사드 뒤편에 상세 구현을 숨길 때 사용할 수 있다. 클래스 클러스터는 시스템 프레임워크에서 널리 사용된다. 클래스 클러스터의 퍼블릭 추상 클래스의 하위 클래스를 만들 때는 항상 주의를 기울여야 한다. 그리고 문서가 있으면 반드시 먼저 읽어봐야 한다. 정리자 주 : 자바의 Interface 개념 #10 : 연관 객체를 사용해 기존 클래스에 사용자 정의 데이터를 연관 지으라 연관 객체는 객체 두 개를 연결하는 방법을 제공한다. 연관 객체의 메모리 관리 속성으로 최소 소.. 2017. 8. 19.
[Effective Objective-C] #15 접두어를 사용해 네임스페이스 충돌을 피하라 [Effective Objective-C] #15 접두어를 사용해 네임스페이스 충돌을 피하라 출처 : Effective Objective-C -오브젝티브-C 는 내장(built-in) 네임스페이스 기능이 없다.그렇기 때문에 일어날 가능성이 있는 충돌을 피하는 방법을 사용하지 않으면 이름은 쉽게 충돌한다.앱에서 이름이 충돌하면 중복 심벌 에러(duplicate symbol error)가 발생하여 링크(link)가 되지 않는다. -링크가 안 되는 것보다 더 좋지 않은 상황은 중복된 것을 포함한 라이브러리 중 하나가 실행 시간에 로딩되었을 때다.이 경우 동적 로더(dynamic loader)는 중복 심벌 에러와 마주치게 될 것이다.그리고 아마도 전체 앱이 다운될 것이다. -이 문제를 피하는 한 가지 방법은 간.. 2017. 8. 17.
[Server구축/Tutorial] 리눅스 기본 폴더 구조 [Server구축/Tutorial] 리눅스 기본 폴더 구조 -/ 루트 최상위 디렉토리 bin, etc, boot, mnt, usr, lib, home, dev, proc, var, sbin, tmp, root, lost+found 등의 폴더들을 가지고 있다. -/bin binaries 의 약어로 이진 파일들을 가지고 있다. 리눅스의 가장 기본 명령어들을 담고 있다. -/etc 리눅스 시스템에 관한 각종 환경설정에 연관된 파일들과 디렉토리들을 가진 디렉토리. 대부분의 파일들이 시스템 관리자에 의해 관리되는 파일들 웹 서버 환경 설정, 시스템 계정 사용자 정보, 패스워드 관리, 시스템의 파일 시스템 관리 파일, 여러 가지 시스템 보안에 관련된 파일들, 시스템 초기화 설정 파일, TCP/IP 설정 파일 등 시.. 2017. 4. 30.
[Java Concurrency] 객체구성 [Java Concurrency] 객체구성 4.1. 스레드 안전한 클래스 설계 - 객체가 갖고 있는 여러 가지 정보를 해당 객체 내부에 숨겨두면 전체 프로그램을 다 뒤져볼 필요 없이 객체 단위로 스레드 안전성이 확보되어 있는지 확인할 수 있다. - 클래스가 스레드 안전성을 확보하도록 설계하고자 할 때에는 다음과 같이 세 가지를 고려해야 한다. 객체의 상태를 보관하는 변수가 어떤 것인가? 객체의 상태를 보관하는 변수가 가질 수 있는 값이 어떤 종류, 어떤 범위에 해당하는가? 객체 내부의 값을 동시에 사용하고자 할 때, 그 과정을 관리할 수 있는 정책 - n 개의 변수를 갖는 객체의 상태는 n개 변수가 가질 수 있는 값의 전체 조합이다. A라는 객체 내부에 다른 객체 B를 가리키는 변수를 사용하고 있다면, .. 2017. 4. 18.
[Effecitve Java] 네이티브 메소드를 분별력 있게 사용하자. [Effecitve Java] 네이티브 메소드를 분별력 있게 사용하자. - JNI 는 네이티브 메소드를 호출할 수 있게 해준다. 네이티브 메소드는 C, C++ 과 같은 네이티브 프로그래밍 언어로 작성한 특별한 메소드를 말한다. - 지금까지 네이티브 메소드의 주용도는 세가지였다. 레지스트리와 파일 락 같은 특정 플랫폼 관리시스템의 접근을 제공 레거시 데이터를 제공할 수 있는 레거시 코드로 된 라이브러리의 접근 제공 성능 향상을 위해 어플리케이션의 일부를 네이티브 언어로 작성하는 데 사용 - 자바가 발전하면 기존의 네이티브 메소드만이 할 수 있었던 일을 많이 대체하였다. java.util.prefs 패키지가 레지스트리 기능을 제공. java.awt.SystemTray 가 데스크톱 시스템의 휴지통 영역의 접근.. 2017. 2. 14.
[Effective Java] 라이브러리를 배우고 사용하자. [Effective Java] 라이브러리를 배우고 사용하자. - 표준 라이브러리를 사용하면, 그것을 작성한 전문가들의 지식과 더 앞서 사용한 사람들의 경험을 이용하는 것이다. - 라이브러리를 사용하면 해결책을 작성하는 쓸데없는 시간을 낭비할 필요가 없다. - 라이브러리를 사용하면 우리의 노력 없이도 라이브러리의 성능이 지속적으로 개선된다. 또 새로운 기능이 계속 추가된다. - 라이브러리를 사용하면 우리 코드를 주류에 둠으로써 많은 개발자들에 의해 더욱 가독성이 좋아지고, 유지보수 가능하며, 재 사용 가능하게 된다. - 라이브러리를 사용하면 많은 장점이 있지만 많은 개발자들이 그렇게 하지 않는다. 원하는 기능이 라이브러리에 있는지 모르기 때문일 것이다. - 라이브러리는 너무 커서 모든 문서를 파악하기는 어.. 2017. 1. 30.
[python3] 뇌를 자극하는 파이썬 - 코딩을 배우기 전에 읽는 컴퓨터 구조론 [python3] 뇌를 자극하는 파이썬 - 코딩을 배우기 전에 읽는 컴퓨터 구조론 -책을 읽으며 Remind 하는 내용, 핵심 내용, 모르던 내용을 정리한 것입니다. 예문 및 자세한 설명은 책을 구매하여 보세요~ 2.1. 폰 노이만 구조 -최초 컴퓨터는 애니악(ENIAC, Electronic Numerical Integrator and Computer) 였는데, 애니악은 명령어를 기억하고 있지 않기 때문에 프로그램을 변경할 때마다 수많은 케이블을 뽑아 다른 위치에 꽂고 스위치를 내리고 올리는 작업을 해야 했다. 그래서 폰 노이만은 에드박(EDVAC, Electronic Discrete Variable Automatic Computer) 를 개발했다.에드박은 명령어를 기억 장치에 내장하고 있기 때문에 프로.. 2016. 9. 27.
[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.
반응형