Programming(74)
-
Kotlin: Function with receivers
리시버를 지닌 함수 리터럴은 다음과 같은 형태입니다.A.(B) -> C예를들어 다음과 같이 정의될 수 있습니다.val sum: Int.(Int) -> Int = { other -> plus(other) }이 경우 함수 리터럴의 바디 안에서 전달된 리시버 객체는 this가 되어 this 없이 그 멤버들에 접근이 가능합니다.위 예에서도 Int의 plus에 접근하고 있습니다.리시버가 없는 경우Int의 확장함수 wrapper는 람다함수를 func로 받고 func에 this 즉, Int객체를 넘겨서 호출합니다.람다 함수 내에서는 매개변수 it으로 hashCode()에 접근 합니다. fun Int.wrapper(func: (num: Int) -> Unit) = func(this)fun main(args: Array..
2025.10.02 -
Kotlin generics
Grammarclass다음 예에서 T는 타입 파라미터이며 Box 클래스가 어떤 타입이던 속성으로 지닐 수 있게 합니다. class Box(val value: T) { fun getValue(): T = value}다음과 같이 사용할 수 있습니다.val intBox = Box(123)val strBox = Box("123")println(intBox.getValue()) // 123println(strBox.getValue()) // 123다음과 같이 타입추론도 가능합니다. val intBox = Box(123)where clause여러 타입 파라미터에 복합 제약을 주거나, 하나의 타입 파라미터에 여러 제약을 줄 때 사용합니다.다음 예에서 T는 CharSquence를 구현하고, R은 Appenda..
2025.10.02 -
backtrace 정보 출력
exception 발생 시 혹은 오류 발생 시 call stack 정보를 출력하고자 하는 경우가 발생합니다. 이럴때 C++에서 다음과 같이 코드를 작성할 수 있습니다.#include "back_trace.h"#include #include #include #include #include #include #include const uint32_t MAX_NUM_TRACE = 32;std::string BackTrace::get_backtrace() { void* callstack[MAX_NUM_TRACE]; int frames = backtrace(callstack, MAX_NUM_TRACE); char** messages = backtrace_symbols(callstack, frames..
2025.03.31 -
makefile 주요 문법
기본 문법allmakefile을 작성하고 console에서 make를 실행하면 기본적으로 "all:" 부분에 정의된 내용이 수행됩니다. 다음은 간단한 makefile의 예 입니다.OBJ = $(patsubst %c, %o, $(wildcard \*.c)) all : diary diary: $(OBJ) $(CC) -o $@ $^ 위와 같이 makefile을 작성한 뒤 다음과 같이 make를 실행합니다.~$ make 그럼 makefile이 위치한 폴더 내 모든 .c 파일들이 빌드되어 diary라는 파일을 생성합니다.make options -n, --just-print, --dry-run, --recon "No-op" The activity is to pr..
2025.01.03 -
go get 오류 발생 시 대처
go get 시 다음과 같이 connection이 거절되는 오류가 발생할 수 있습니다. ✗ go get git.linecorp.com/VISION-PLATFORM/photato-server@v1.6.2 go: downloading git.yourcompany.com/organization/yourproject v1.0.0go: git.yourcompany.com/organization/yourproject@v1.0.0: verifying module: ... : reading https://sum.golang.org/lookup/git.yourcompany.com/.../yourpro..
2024.05.09 -
Python set 사용 주의점
set을 선언하는 방법에는 두가지가 있습니다. 첫 번째는 set()을 사용하는 방법이고, 두 번째는 {}를 사용하는 방법입니다. set()을 사용하는 경우와 {}을 사용하는 경우 모두 (0, 0)인 tuple 값을 추가해 보겠습니다. 우선 set()을 사용하는 경우 입니다. unique = set((0, 0))그리고 {}을 사용하는 경우 입니다. unique = {(0, 0)}두 경우 모두 같은 결과로 (0, 0)인 tuple 원소가 set에 들어 있을것으로 기대할 수 있으나, (0, 0) tuple 원소가 저장된 경우는 두 번째 {}를 사용한 경우 뿐 입니다. 첫 번째 set()을 사용해서 (0,0)을 추가한 경우에는 (0, 0)이 아닌 0과 0 즉, 0만 저장됩니다. 이렇듯 파이썬 사용에는 주의해야 ..
2024.02.21