본문 바로가기

책을 읽겠습니다!23

객체지향의 사실과 오해 보호되어 있는 글 입니다. 2023. 12. 26.
[Kotlin in Action] 6장 코틀린 타입 시스템 다루는 내용 널이 될 수 있는 타입과 널을 처리하는 구문의 문법 코틀린 원시 타입 소개와 자바 타입과 코틀린 원시 타입의 관계 코틀린 컬렉션 소개와 자바 컬렉션과 코틀린 컬렉션의 관계 가독성을 위해 널이 될 수 있는 타입과 (nullable type) 읽기 전용 컬렉션이 있다. 배열은 삭제했다. 널 가능성 널 가능성 (nullability)는 NPE를 피할 수 있게 돕기 위한 코틀린 타입 시스템의 특성이다. 코틀린 비롯 최신 언어들은 컴파일 시점에 null을 다룰려한다. 컴파일 시 미리 감지해 실행 시점에 발생하는 NPE를 줄이자는 것이다. 널이 될 수 있는 타입 널 가능, 불가능을 명시적으로 구분한다. 코틀린은 널이 될 수 있는 변수에 대해 메소드를 호출하면 NPE 발생 가능하다. 코틀린은 그런 메소드.. 2023. 11. 2.
[Kotlin in Action] 5장 람다로 프로그래밍 람다식 또는 람다는 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각이다. 람다는 왜 중요할까 람다 소개: 코드 블록을 함수 인자로 넘기기 "이벤트가 발생하면 이 핸들러를 실행하자"나 "데이터 구조의 모든 원소에 이 연산을 적용하자"와 같은 생각을 코드로 표현하기 위해 일련의 동작을 변수에 저장하거나 다른 함수에 넘겨야하는 경우 있다. 기존 자바(8 이전)에서는 내부익명클래스를 통해서 해결했지만 함수형 프로그래밍에서는 함수를 값으로 다뤄서 더 간결히 처리한다. button.setOnClickListener { /* 클릭 시 수행할 동작 */ }람다는 메소드가 하나뿐인 무명 객체 대신 사용할 수 있다. 람다와 컬렉션 컬렉션을다룰 때 수행하는 작업은 몇 가지 패턴으로 정의할 수 있다. 그런 패턴은 라이브.. 2023. 11. 1.
[Kotlin in Action] 4장 클래스, 객체, 인터페이스 자바와 달리 클래스와 인터페이스 final이며 public. 중첩 클래스는 기본적으로 내부 클래스가 아니라 외부 클래스에 대한 참조가 없다. 짧은 주 생성자 구문으로도 거의 모든 경우를 잘 처리할 수 있다. 복잡한 초기화 로직 수행할 경우 대비한 완전한 문법 존재. 프로퍼티도 마찬가지. data class 선언 시 컴파일러가 일부 표준 메소드를 생성해준다. 코틀린 언어가 제공하나ㅡㄴ 위임을 사용하면 위임을 처리하기 위한 준비 메소드를 직접 작성할 필요가 없다. 클래스, 인스턴스를 동시에 선언하면서 만들 때 쓰는 object 키워드에 대해서도 나온다. 싱글턴 클래스, 동반 객체 companion object, 객체 식 object expression (자바의 무명 클래스에 해당) 을 표현할 때 object.. 2023. 10. 12.
[Spring Security in Action] 5장 인증구현 인증 논리를 담당하는 것은 AuthenticationProvider 계층이며 여기에서 요청을 허용할지 결정하는 조건과 명령을 발견할 수 있다. AuthenticatioinManager는 HTTP 필터 계층에서 요청을 수신하고 이 책임을 AuthenticationProvider에 위임하는 구성요소다. 2023. 9. 29.
[Spring Security in Action] 암호처리 public interface PasswordEncoder { String encode(CharSequence rawPassword); boolean matches(CharSequence rawPassword, String encodedpassword); default boolean upgradeEncoding(String encodedPassword) { return false; } }인코드는 문자열을 변환해 반환, 매치를 통해 일치 여부를 알 수 있다. 메치 메서드는 지정된 암호를 인증 프로세스에서 알려진 자격 증명의 잡합을 대상으로 비교한다. 업그레이드인코딩을 트루로 하면 인코딩된 암호를 보안 향상을 위해 다시 인코딩. NoOpPasswordEncoder는 암호를 일반 텍스트 취급 PasswordE.. 2023. 9. 27.
[Kotlin in Action] 3장 함수 정의와 호출 코틀린에서 컬렉션 만들기 val set = hashSetOf(1, 7, 53) val list = arrayListOf(1, 7, 53) val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three")to가 키우드가 아닌 일반 함수다. println(set.javaClass) // getClass()에 해당상호운용을 위해 자바의 콜렉션을 사용하는데 하지만 코틀린은 더 많은 기능이 가능. 예를 들어 리스트의 마지막 원소를 가져오거나 수로 이뤄진 컬렉션에서 최댓값을 찾을 수 있다. 그래도 코틀린에서 볼 수 있는 콜렉션을 쓰는게 코틀린답다한다. val strings = listOf("first", "second", "fourteenth") println(.. 2023. 9. 25.
[Kotlin in Action] 2장 코틀린 기초 기본 요소: 함수와 변수 fun main(args: Array) { println("Hello, world!") } 함수를 선언할 때 fun 키워드를 쓴다. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. 변수를 선언할 때도 마찬가지 함수를 최상위 수준에 정의할 수 있다. (자바와 달리) 꼭 클래스 안에 함수를 넣어야 할 필요가 없다. 배열도 일반적인 클래스와 마찬가지다. 코틀린에는 자바와 달리 배열 처리를 위한 문법이 따로 존재하지 않는다. System.out.println 대신 println이라고 쓴다. 코틀린 표준 라이브러리는 여러 가지 표준 자바 라이브러리 함수를 간결하게 사용할 수 있게 감싼 래퍼를 제공한다. 최신 프로그래밍 언어 경향과 마찬가지로 줄 끝에 세미콜론을 붙이지 않아도 좋다. 함수 .. 2023. 9. 23.