전체 글
-
어떤 죽음이 삶에게 말했다 - 김범석독서 2022. 5. 6. 18:49
나는 올해 초에 경계성종양을 진단받았다. 한 3년 전쯤인가... 발바닥쪽에 걸리적 거리는 느낌이들어 보니 조그맣게 돌기가 생겼다. 내가 그것을 인지했을 때는 여름즈음이었고 돌기가 생긴 부위가 슬리퍼에 자주 닿는 쪽이었기에 시간이 지나면 자연스레 없어질 굳은살 쯤으로 생각하고 있었다. 그런데 작년부터 돌기가 갑자기 커지기 시작했다. 사마귀인가 싶어 피부과에가서 냉동치료를 두어번 받았는데 큰 효과가 없었다. 냉동치료를 받고 괴사한 피부를 깎아내면 그 안에 묵직한 무엇인가가 만져졌다. 의사선생님말로는 사마귀라면 그 정도로 피부를 냉동시키고 살을 깎아내면 말끔한 살이 드러나야 한다고 했다. "이건 아무래도 이상한데요... 의뢰서 써드릴테니 대학병원가셔서 진료 한번 받아 보시는게 좋을것 같아요" 그렇게 대학병원 ..
-
crontab기타 2022. 4. 24. 19:34
crontab 특정 시간이나 주기별로 실행되는 command를 관리하는 툴 기본 형태 crontab [ -u user ] file crontab [ -u user ] { -l | -r | -e } crontab [ -u user ] [ -i ] { -e | -l | -r } crontab [ -u user ] [ -l | -r | -e ] [ -i ] [ -s ] -u 옵션으로 crontab을 실행 시킬 유저를 명시할 수 있고 그렇지 않으면 기본 유저로 실행된다. 크론 테이블 * * * * * command_to_execute | | | | | | | | | | | | | | DayOfTheWeek(0-6) (0은 일요일) | | | Month(1-12) | | DayOfMonth(1-31) | Hour..
-
[코틀린] also, apply, let, run코틀린 2022. 3. 20. 21:16
코틀린의 Any 객체에는 다양한 메소드가 정의되어있다. 그 중 also, apply, let, run에 대해서 살펴본다. 1. also also는 block을 받아 실행시키고 block의 argument는 실행 컨텍스트가 된다. also 내부의 this 값은 람다가 정의된 곳의 this 다. block 실행 결과는 원래 context가 반환된다. fun toString() = "lexical" val doAlso = "context".also { arg -> print("this: ${this.toString()}, arg: $arg, ") } println("result $doAlso") // 출력 this: lexical, arg: context, result context 2. apply apply..
-
[코틀린] 확장함수와 확장속성코틀린 2022. 3. 20. 15:42
1. 확장 함수 코틀린은 클래스에 함수나 속성을 인젝팅 할 수 있다. 확장 함수와 확장 속성은 인젝팅 되는 클래스의 바이트코드는 변경하지 않으면서 메소드와 속성을 추가한다. data class Book( val title: String, val author: String, val price: Int ) fun Book.isWrittenBy(author: String): Boolean { return this.author == author } val b = Book("Kotlin book", "Park", 100) b.isWrittenBy("Park") // true 위의 코드에서 isWrittenBy는 Book 클래스 밖에서 정의되었다. 하지만 마치 Book의 클래스 메소드처럼 동작한다. 확장함수의 실제..
-
[코틀린] 연산자 오버로딩코틀린 2022. 3. 20. 00:05
1. 연산자 오버로딩 코틀린에서는 개발자가 정의한 클래스에도 +, * 연산자를 정의해 줄 수 있다. 클래스 내에 RationalNumber를 인자로 받는 operator fun plus라는 키워드로 함수를 정의하면 이 클래스들 간의 + 연산이 정의된다. 아래는 RationalNumber 클래스 간의 + 와 RationalNumber 클래스와 정수 간의 + 를 정의한 것이다. class RationalNumber( val numerator: Int, val denominator: Int ) { operator fun plus(other: RationalNumber): RationalNumber { return RationalNumber( this.numerator * other.denominator + o..
-
[코틀린] 내부 반복(map, filter, groupBy, reduce)코틀린 2022. 3. 19. 17:17
1. 내부 반복 코틀린에서는 여러가지 내부 반복자를 제공한다. 반복이 필요한 경우에 명령형 스타일의 외부 반복자를 사용할 수도 있지만 내부반복자와 람다를 이용하면 간단하게 구현할 수도 있다. 아래는 외부 반복자를 이용하여 3의 배수만을 구한 것이다. val multipleOfThree = mutableListOf() for(x in l) { if(x % 3 == 0) { multipleOfThree.add(x) } } println(multipleOfThree) [3, 6, 9] 아래는 내부 반복자인 filter를 이용해 구한 것이다. val multipleOfThreeWithMap = l.filter { it % 3 == 0 } println(multipleOfThreeWithMap) //[3, 6, ..
-
[코틀린] 람다코틀린 2022. 3. 19. 01:20
1. 람다 람다 표현식은 파라미터 리스트와 바디만으로 정의된 함수이다. // { parameter -> body } { e: String -> e + 1 } 람다는 함수형 프로그래밍과 궁합이 잘 맞는다. fun isPrime(n: Int) = n > 1 && (2 until n).none { k -> n % k == 0} 위의 코드는 소수인지 아닌지를 알려주는 로직을 함수형으로 구현한 것이다. 2 이상이면서 2와 n - 1 까지의 숫자중 어떤 숫자로도 나누어 떨어지지 않으면 소수이다. 2 until n 이 리턴한 IntRange의 none 은 함수를 하나 받아 정수 범위의 원소 하나하나에 함수를 적용시킨다. 모든 결과가 false 라면 none은 true 를 리턴한다. 람다가 한 개의 파라미터를 받는다면..
-
[코틀린] 델리게이션코틀린 2022. 3. 16. 23:50
델리게이션은 객체 자신이 처리해야 할 작업을 다른 객체에게 넘겨버리는 개념이다. 1. 델리게이션 아래 예시는 TrainBookAgent가 실제로 해야할 작업을 각각의 TicketBooker로 위임하는 것을 보여준다. interface TicketBooker { fun book() fun isAvailable() } class TrainTicketBooker: TicketBooker { override fun book() { println("Book Train ticket") } override fun isAvailable() { println("Train ticket available") } } class AirplaneTicketBooker: TicketBooker { override fun book(..