본문 바로가기
[SQLite] JOIN 에 대한 이야기 [SQLite] JOIN 에 대한 이야기 -다음과 같은 JOIN 이 있다. CROSS JOIN INNER JOIN OUTER JOIN CROSS JOIN 첫번째 table 의 모든 row 와 두번쨰 table 의 모든 row 를 JOIN 한다.만약 각 table 에 x, y 개의 컬럼이 있다면, 결과 table 은 x+y 개의 컬럼이 된다.만약 각 table 에 a, b 개의 row 가 있다면, 결과 table 은 a*b 개의 row 가 된다. CROSS JOIN 은 큰 table 을 만들기 때문에 꼭 필요한 경우에만 써야 한다. SELECT … FROM table1 CROSS JOIN table2; INNER JOIN 조건에 의한 JOIN 을 수행한다.조건을 만족시키는 첫번째 table 의 row 와 .. 2017. 8. 22.
[Kotlin Tutorial] Kotlin 의 Type system #2 [Kotlin Tutorial] Kotlin 의 Type system #2 참조 : Kotlin in action 6.2. Primitive and other basic types 6.2.1. Primitive types: Int, Boolean, and more -Kotlin 은 primitive type 과 wrapper type 을 구분하지 않는다. -그렇다면 Int 가 object 라면 Kotlin 은 모든 primitive type 을 실제로 object 로 만드는가?당연히 그렇게 안 했다.compiler 가 대부분의 Int type 을 Java 의 primitive type 으로 변형시킨다.generic, collection 등은 원래 Java 의 Integer 형태만 담을 수 있으므로 이 경.. 2017. 8. 22.
[Effective Objective-C] #18 가변 객체보다는 불변 객체를 사용하라 [Effective Objective-C] #18 가변 객체보다는 불변 객체를 사용하라 출처 : Effective Objective-C -프로퍼티를 기본 설정으로 두면 읽기 쓰기(read-write) 인데 이는 클래스를 가변적(mutable)로 만든다. -컬렉션이 가변 객체를 저장하고 집합(컬렉션)에 포함된 객체가 변형된다면, 집합의 내부 데이터 구조는 쉽게 불일치(inconsistent) 상태가 될 것이다.객체는 필요할 때만 가변적으로 만드는 것을 추천한다. -불변 객체를 만든다는 것은 프로퍼티를 외부에 읽기 전용으로 만든 다음 필요할 때만 데이터를 노출하는 것을 의미한다. -클래스를 불변으로 만들려면 모든 프로퍼티에 readonly 속성을 추가하면 된다.이제 무엇이든 프로퍼티 값을 변경하려 하면 컴파.. 2017. 8. 21.
[Effective Objective-C] #17 description 메서드를 구현하라 [Effective Objective-C] #17 description 메서드를 구현하라 출처 : Effective Objective-C -디버깅할 때 객체의 내용을 출력하면 유용할 때가 있다.내용을 출력하는 방법 중 하나는 객체의 모든 프로퍼티를 출력하는 로깅 코드를 작성하는 것이지만, 다음과 같이 하는 것이 더 일반적인 방법이다.NSLog(@“object = %@“, object); 문자열이 로그로 기록될 때 object 는 description 메시지를 받을 것이다. -여러분이 만든 클래스에서 NSObject 기본 구현의 description 이 호출될 것이다.이 메서드는 NSObject 프로토콜에 정의되어 있지만, NSObject 클래스가 구현한다.많은 메서드가 NSObject 프로토콜에 속해있는.. 2017. 8. 20.
[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] #16 지정 초기화 메서드를 만들라 [Effective Objective-C] #16 지정 초기화 메서드를 만들라 출처 : Effective Objective-C -객체가 제대로 동작하기 위해 필요한 정보를 객체에 주는 초기화 메서드를 지정 초기화 메서드(designated initializer) 라고 한다. -클래스의 인스턴스를 생성하는 방법이 한 가지 이상이 있는 클래스는 하나 이상의 초기화 메서드가 있을 것이다.초기화 메서드가 여러 개 있는 것도 괜찮지만, 모든 초기화 메서드가 호출하는 한 가지 지정 초기화 메서드가 있는 것이 더 좋다. -지정 초기화 메서드가 있다는 것은 나머지 초기화 메서드들이 이 지정 초기화 메서드를 호출함을 뜻한다. -지정 초기화 메서드는 객체 내부 데이터를 저장하는 유일한 곳이다.객체의 데이터를 저장하는 데이.. 2017. 8. 18.
[Kotlin Tutorial] Kotlin 의 Type system - Chap6. The Kotlin type system [Kotlin Tutorial] Kotlin 의 Type system - Chap6. The Kotlin type system 출처 : Kotlin in action 6.1. Nullability 6.1.1. Nullable types -Kotlin 은 nullable types 를 지원한다.nullable type 이라는 것은 어떤 variable 이 null 을 가질 수 있는지를 명시하는 것이다. -nullable 하지 않은 곳에 null 을 넣으면 compile error 가 난다.기본 type 은 nullable 하지 않으며, nullable 을 만드려면 type 뒤에 ? 를 붙여주면 된다.어떤 타입이든 뒤에 ? 를 붙여줄 수 있다.fun strLenSafe(s: String?) = … 6.1.2.. 2017. 8. 18.
[Effective Objective-C] #15 접두어를 사용해 네임스페이스 충돌을 피하라 [Effective Objective-C] #15 접두어를 사용해 네임스페이스 충돌을 피하라 출처 : Effective Objective-C -오브젝티브-C 는 내장(built-in) 네임스페이스 기능이 없다.그렇기 때문에 일어날 가능성이 있는 충돌을 피하는 방법을 사용하지 않으면 이름은 쉽게 충돌한다.앱에서 이름이 충돌하면 중복 심벌 에러(duplicate symbol error)가 발생하여 링크(link)가 되지 않는다. -링크가 안 되는 것보다 더 좋지 않은 상황은 중복된 것을 포함한 라이브러리 중 하나가 실행 시간에 로딩되었을 때다.이 경우 동적 로더(dynamic loader)는 중복 심벌 에러와 마주치게 될 것이다.그리고 아마도 전체 앱이 다운될 것이다. -이 문제를 피하는 한 가지 방법은 간.. 2017. 8. 17.
[Kotlin Tutorial] 람다로 프로그래밍 하기 - Chap5. Programming with Lambdas [Kotlin Tutorial] 람다로 프로그래밍 하기 - Chap5. Programming with Lambdas 참조 : Kotlin in Action 5.1. Lambda expressions and member references 5.1.1. Introduction to lambdas : blocks of code as function parameters 5.1.2. Lambdas and collections -val people = listOf(Person(“Alice”, 29), Person(“Bob”, 31))println( people.maxBy{ it.age } ) // function 을 argument 로 받는다. { } 는 lambda syntax lambda 가 단순 functio.. 2017. 8. 16.
반응형