본문 바로가기

Language

(38)
코틀린 표준함수(apply, let, run, with, also, takeIf) 이 포스팅은 빅 너드 랜치의 코틀린 프로그래밍 책을 공부하면서 요약한 내용이다. 코틀린의 표준 함수는 내부적으로 확장함수이며 확장함수를 실행하는 주체를 수신자 또는 수신자 객체라고 한다. 따라서 확장 함수가 호출될 때 수신자 객체의 참조가 확장 함수로 전달된다. 1. apply apply 함수는 구성함수로서 우리가 사용할 객체를 구성할때 반복되는 코드의 양을 줄이기 위해 사용된다. // 일반코드 val f = File("abc.txt") f.setReadable(true) f.setWritable(true) // apply를 사용한다면? val f = File("abc.txt").apply { setReadable(true) setWritable(true) } apply 함수는 람다 내부의 모든 함수 호..
코틀린 Null (안전 호출 연산자, non-null 단언 연산자) 1. 안전 호출 연산자(?) var a = readLine()?.capitalize() 컴파일러가 readLine()? 함수에 접근했을 때 안전 호출 연산자가 있다면 자동적으로 null 값을 검사하는 코드가 실행이된다. 만약 readLine()의 값이 null이 아니면 뒤에 있는 capitalize() 함수를 실행시키고 null이라면 capitalize() 함수가 실행되지 않는다. 2. 단언 연산자 (!!) 단언 연산자는 null이 될 수 없다는 것을 단언하는 연산자다. var a = readLine()!!.capitailize() readLine()값이 null이 아니면 정상적으로 capitailize() 함수를 수행하고 null이면 런타임 시에 NullPoinerException 예외를 발생시킨다.
PHP AES 암호화 (Cipher) string openssl_encrypt ( string $data , string $method , string $password [, int $options = 0 [, string $iv = "" ]] ) string openssl_decrypt ( string $data , string $method , string $password [, int $options = 0 [, string $iv = "" ]] ) $data = 파일이나 텍스트같은 데이터 $method = 암호화 메소드 $password = 암호화키 $option = OPENSSL_RAW_DATA(1 or true) OPENSSL_ZERO_PADDING(0 or false) $iv = cbc를 사용할때 첫번째 암호화 블럭 $data ..
Java Cipher 자바에서 *대칭키 알고리즘을 사용하여 데이터를 암호화 / 복호화할 때 Cipher클래스를 사용한다. 이 클래스는 정적 메서드인 Cipher.getInstance()를 호출하여 사용할 수 있는데 사용시 사용할 알고리즘, 운용 모드, 패딩 방식을 인자로 넘겨줘야 한다. 대칭키 암호화에서 알고리즘, 운용 모드, 패딩을 무엇이고 어떤 역할을 하는지 알아보자. - 혼돈과 확산 안전한 암호문은 공격자가 이를 보고 원본 메시지나 암호화에 사용된 키를 유추할 수 없어야 한다. 이러한 성질을 혼돈과 확산이라고 하며 각각 다음과 같은 의미를 갖는다. @ 혼돈은 *암호문으로부터 키를 알아낼 수 없게 하는 성질이다. @ 확산은 암호문으로부터 원문을 알아낼 수 없게 하는 성질이다. 다르게 말하면 혼돈이란 키의 비트 하나만 바꿔..
자바 synchronized 자바로 개발한 기존 프로젝트를 코틀린으로 변환하는중에 Thread와 블락(synchronized)과 관련된 문제 때문에 애를 좀 먹었다. synchronized, wait, notify은 대충은 알지만 확실한 개념을 잘 몰라서 이번 기회에 정리를 해보려고 한다. 1. synchronized - 정의 : 위키백과에서는 "컴퓨터 과학에서 동기화 란 두 가지 뚜렷하지만 관련 개념 인 프로세스 동기화 및 데이터 동기화 중 하나를 의미합니다. 프로세스 동기화는 여러 프로세스가 특정 시점에서 가입하거나 핸드 셰이크하여 계약에 도달하거나 특정 작업 순서를 확약한다는 아이디어를 나타냅니다"라고 한다. 영어를 직역한거라 말이 어렵다. 간단하게 예시를 들자면 하나의 사과를 여러 명이 동시에 먹으려고 한다면 당연히 싸움이 ..
코틀린의 특징 코틀린은 기존의 자바와는 비슷하면서도 다음과 같은 코틀린의 특징을 가지고 있다. 1. 간결한 문법 - 문장 끝에 세미클론을 넣지 않아도 된다. - new 키워드를 쓰지 않고 객체를 생성한다. - 타입 추론을 지원하므로 일반적인 경우 타입을 적지 않아도 된다. 2. null 안전성 - 객체 타입의 변수에서 null 값의 허용 여부를 구분하지 않던 자바와 달리 코틀린은 허용 여부를 구분한다. 3. 가변/불변 구분 - null값의 허용 여부를 구분하는 것과 유사하게 코틀린에서는 변수 및 변수 내 할당된 값의 불변 여부를 구분한다. 변수의 불변 여부, 즉 최초 생성 시 할당된 값을 이후에도 변경할 수 있는지의 여부를 변수 키워드인 var와 val로 구분한다. - 값을 한 번 할당하고 나면 그 후에 변경할 수 없..