분류 전체보기

    [코틀린(Kotlin) - 2일차 2/?] 코틀린의 특징 - 변수

    2장에서는 코틀린의 특징에 대해 간략하게 살펴본다. 살펴보는 내용은 아래와 같다. 함수, 변수, 클래스, enum, 프로퍼티 제어 구조 스마트 캐스트 예외 던지기와 예외 잡기 변수 코틀린에서 변수는 아래 형태로 정의된다. 코틀린에는 두 가지 형태의 변수 키워드가 존재한다. val: 값을 변경할 수 없는 변수(value) var: 값을 변경할 수 있는 변수(variable) 값을 변경할 수 없는 val은 변수 초기화 후엔 값을 변경할 수 없다. val value : Int = 3 value = 3 val을 선언하는 첫 번째 줄은 문제가 없지만, val의 값을 변경하는 두 번째 줄에서 문제가 발생한다. (IntellJ IDE에서는 Val cannot be ressigned 라는 오류 메세지 띄운다.) 반면 ..

    [코틀린(Kotlin) - 2일차 1/?] 코틀린의 특징 - 함수

    2장에서는 코틀린의 특징에 대해 간략하게 살펴본다. 살펴보는 내용은 아래와 같다. 함수, 변수, 클래스, enum, 프로퍼티 제어 구조 스마트 캐스트 예외 던지기와 예외 잡기 함수 코틀린에서 함수를 선언하기 위해서는 fun을 이용한다. fun add(a: Int, b: Int) : Int { return a + b } 함수의 구조는 아래와 같다. return은 반드시 쓸 필요는 없다. 예를 들어 아래와 같이 단순히 입력받은 값을 출력하는 경우 반환타입과 return은 생략될 수 있다. fun printAdd(a:Int, b:Int) { println("$a + $b") } 위 코드는 a, b두 가지 값을 받아 어떤 값을 더하는지를 println문으로 출력하는 함수이다. $a, $b는 문자열 탬플릿이라 하..

    [코틀린(Kotlin) - 1일차] 왜 코틀린(Kotlin)을 배워?

    코틀린(Kotlin)이란? 코틀린은 자바 플랫폼에서 돌아가는 프로그래밍 언어이다. 왜 코틀린을 배우는가? 코틀린을 배우고 싶은 마음이 샘솟기 위해서는 코틀린의 장점에 대해 알아보면 된다. 간결성: 코드 작성을 위해 불필요한 부분을 최소화 실용성: 기존의 여러 프로그래밍 언어들에 의해 검증된 방법을 채택 안정성: 오랜 기간 검증된 자바의 JVM위에서 돌아가기 때문에 안정적 + 컴파일시 Null, 형 변환(Cast)에 대한 검증 자바 코드와의 상호운용성: 기존 자바 코드와 호환 위 글만 읽어보면 장점이 와닿지 않는다. 이제 예시를 보며 코틀린의 장점을 하나씩 느껴보자. 1. 간결성 어떤 언어가 간결하다는 말은 그 언어로 작성된 코드를 읽을 때 의도를 쉽게 파악할 수 있는 구문 구조를 제공하고, 그 의도를 달..

    자바(Java)와 파이썬(Python)의 바이너리(binary) 차이

    자바에서 double 형태의 데이터를 바이너리 파일로 저장한 후, 파이썬에서 이를 읽어들이는데 자꾸 다른 값을 읽는 문제가 있었다. 이는 자바와 파이썬이 서로 다른 순서로 바이트 정보를 저장하기 때문이다. 바이트 저장 순서로는 빅 엔디안, 리를 엔디안 두 가지가 있다. 자바: 빅 엔디안(big endian)을 따름. 파이썬: 리를 엔디안(little endian)을 따름. 빅 엔디안은 시작 주소에 상위 바이트(앞 부분)부터 기록 하고, 리를 엔디안은 시작 주소에 하위 바이트(뒷 부분)부터 기록한다. 예를 들어, 0x12345678의 바이너리 값을 저장한다면, 아래와 같이 다른 순서로 데이터를 저장한다. 빅 엔디안(자바): 0x12, 0x34, 0x56, 0x78 리를 엔디안(파이썬): 0x78, 0x56..

    텐서플로우 convolutional layer 가중치 세팅

    텐서플로우의 conv 레이어가 어떻게 동작하는지 실행해보려 하니, conv 레이어에 가중치를 세팅하는 문제가 발생하였다. 가중치를 세팅해주지 않는 경우, conv 레이어의 초기 가중치를 랜덤하게 생성한다. 랜덤하게 생성한 가중치는 결과값을 보기에도 불편하고 어떻게 동작하는지 확인하기 힘들어, 가중치를 세팅하는 방법에 대해 찾아보게 되었다. import tensorflow as tf import numpy as np import os os.environ["CUDA_VISIBLE_DEVICES"]='1' image = [1,2,3,4,5,6,7,8,9] image = np.array(image) image = np.reshape(image, (3,3)) image = image.astype(np.float)..

    Git 줄바꿈 문자, CRLF 설정

    OS마다 줄바꿈 문자가 다르며, CR(\r), LF(\n)를 사용하여 줄바꿈을 표현한다. 윈도우: \r\n (CRLF) 리눅스: \n (LF) 맥 OS: \r (CR) Git에 파일을 올리게 되면 로컬 OS에 따라 CRLF가 깨질 수 있다. 따라서 이를 통일해주기 위한 설정이 필요하다. 보통 Git에는 리눅스의 줄바꿈 문자를 이용한다. Window 개발환경의 경우 아래 설정을 해주면 git에서 pull을 할땐 LF를 CRLF로, push 시엔 CRLF를 LF로 자동으로 변경해준다. git config --global core.autocrlf true프로젝트 시작 전, git의 CRLF 설정을 해주어 줄바꿈 문자로 인한 파일 깨짐을 방지하자.

    git push 오류 - ! [rejected] master -> master (non-fast-forward)

    프로젝트 생성 후, 로컬 저장소에서 원격 저장소(github)로 push를 하려는데 아래 오류가 발생하면서 push가 되지 않았다. ! [rejected] master -> master (non-fast-forward) 이유는 원격 저장소와 로컬 저장소의 버전이 맞지 않기 때문이다. 먼저 pull을 통해 원격 저장소의 데이터를 가져와 버전을 맞춰준다. git pull [원격저장소 이름] [브랜치 이름] 그 다음 push를 실행하면 된다. 이래도 안되면 강제로 push하는 명령어가 있는데, 이 명령어를 사용하게 되면 원격 저장소에 있는 다른 사람이 작성한 소스코드가 날아갈 수 있으니 주의해야 한다. git push -f [원격저장소 이름] [브랜치 이름]

    .gitignore 특정 디렉토리 규칙 예외 지정

    .gitignore을 쓰다보면 특정 디렉토리는 .gitignore 규칙을 적용하고 싶지 않은 경우가 있다. 이 경우 ! 기호를 이용하여 .gitignore 규칙을 적용하지 않을 디렉토리를 지정할 수 있다. 예를 들어 base 디렉토리는 .gitignore 규칙을 적용하지 않으려면 아래와 같이 등록하면 된다. !base 위 내용을 .gitignore에 등록하면 base 파일 및 하위 파일은 ignore되지 않는다.