일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- RaspberryPi
- GitHub
- ruby
- kotlin
- IntelliJ
- jetbrains
- Android
- ruby2d
- maven
- react
- CPP
- Spring
- Java
- rubymine
- OAuth
- plugin
- Baekjoon
- Godot
- OTLanguage
- Python
- Vane
- gradle
- 루비
- error
- boj
- JS
- 개발노트
- C
- gnuplot
- Shell
- Today
- Total
목록Language (76)
PersesTitan(페르) 기술블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dSw9AR/btsxH17sS1l/wKFHUjjWSKKEdyK6ekoRb0/img.png)
변수 정의 코틀린은 타입추론기능을 지원하기 때문에 바로 변수를 정의할때 타입입력이 필수가 되지는 않습니다. java10에서도 var키워드를 이용하여 타입추론이 가능했지만 일부 제약이 존재하였지만 Kotlin에서는 값을 변수에 바로 초기화 해줄경우 타입 입력이 필수가 되지는 않습니다. var 값이 고정되지 않은 변수를 선언할때 사용하는 키워드입니다. 계속하여 값이 변경이 일어날때 해당 키워드를 이용하여 정의하면 됩니다. var value: Int = 1 value = 2 Java에서 Java10에서 부터 var키워드가 존재하지만 Kotlin에서의 var과 Java에서의 var는 서로 다른 기능입니다. val 값이 고정된 변수를 선언할때 사용하는 키워드입니다. 해당 값을 변경할려고 시도하면 에러가 발생하게 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/P8CSL/btsxzXXwDnz/WQmEp9xiDZuc5dR2EKsIM1/img.png)
코틀린의 생성자의 순서는 다음 순서대로 진행됩니다. 주 생성자 init 보조 생성자 순서 확인하기 다음 코드를 보시면 init이 실행되고 보조 생성자가 실행된 것을 볼 수 있습니다. class Test { constructor() { println("보조 생성자 실행") } init { println("init 실행") } } fun main() { Test() } // 출력 // init 실행 // 보조 생성자 실행 해당 순서로 인해 발생하는 문제 위 순서로 인해 발생하는 문제는 다음과 같습니다. 보조 생성자에서 값을 초기화 할 경우 init에서 변수를 가져오게 되면 초기화가 되지 않았다고 에러가 발생하는 것이죠. - 해당 코드는 에러가 발생하지 않습니다. class Test { private val ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ccsI13/btsxigR9boB/dqpfbLJM44NOKjSJUY4HV1/img.png)
인스턴스화 코틀린은 자바에서 사용하는 new 키워드를 사용하지 않는 특징이 존재합니다. 코틀린은 new키워드가 애초에 예약어로 잡혀있지 않은데 new키워드를 사용하지 않고 클래스명에다가 매개변수만 넘겨주면 인스턴스화를 할 수 있습니다. Java Test test = new Test(); Kotlin val test: Test = Test() 주 생성자 (Primary Constructor) 주 생성자는 클래스 명 바로 옆에다가 선언하는데 해당 생성자를 주 생성자라고 부릅니다. 주 생성자는 constructor를 붙쳐 선언하는데 생략이 가능하기도 합니다. 예제 class Test constructor(a: Int, b: String) { } constructor (생략한 경우) class Test(a: I..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6TvUM/btsxtWEhvXq/EuxQGYWA4lCRvh6ynTP4o1/img.png)
public, internal, protected, private이가 존재합니다. 자바와 다르게 kotlin은 접근제어자를 생략했을대 default접근제어자가 아닌 public접근제어자로 설정되어있습니다. kotlin에서는 특이하게 java와 다르게 클래스 밖에도 선언이 가능한 최상위 선언이 따로 존재하기 때문에 어디에 정의하냐에 따라 범위가 다르기도 합니다. public 클래스 내부 선언 최상위 선언 모든 곳에서 접근 가능 모든 곳에서 접근 가능 internal 클래스 내부 선언 최상위 선언 같은 모듈내에서 접근가능 같은 모듈내에서 접근가능 protected 클래스 내부 선언 최상위 선언 하위 클래스에서 사용 가능 사용 불가 private 클래스 내부 선언 최상위 선언 클래스 내부에서만 사용이 가능 같..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/st6Bo/btsvNMKLmgC/f5qYlDq3B6MNQHIIFZhPp1/img.png)
Spring은 jdk 21이 공개되었기 때문에 jdk를 21로 바꾸고 생길 만한 에러를 찾아보았습니다. 예전에도 17로 글을 작성하였지만 21로 업그레이드하면서 문제가 발생할 가능성도 생각하여 작성하게 되었습니다. 해결 방법은 이전과 동일한데요. File -> Project Structure (단축키: Command + ;)를 통해서 설정으로 이동한후 Build, Execution, Deployment -> Build Tools -> Gradle에 들어가서 Gradle JVM에 들어가서 jdk가 21을 선택해주시면 됩니다. jdk21 설치하는법 jdk21이 없으면 아래 링크를 참고하여 설치하시면 됩니다. https://persestitan.tistory.com/119 [IntelliJ] 인텔리제이에서 J..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cxS0xk/btsvNMDSFym/8IhzuCjA3DX04OLGHXffE1/img.png)
jdk21로 올라오면서 새로운 방식의 format이 추가 되었습니다. 평소에 자바는 format에 대한 지원이 약하다고 생각이 들어왔지만 이제는 해당 부분들을 해결할려고 하는 것 처럼 보였습니다. 기존 format StringBuilder 방식 int a = 1; int b = 2; StringBuilder value = new StringBuilder() .append(a) .append(" + ") .append(b).append(" = ") .append(a + b); System.out.println(value); String.format 방식 int a = 1; int b = 2; String value = String.format("%d + %d = %d", a, b, a + b); Syste..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bRRc4T/btsvMJU1qqo/muUkwXEDkuOAOGbuMRtwFK/img.png)
https://www.oracle.com/kr/java/technologies/downloads/#java21 Download the Latest Java LTS Free Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts. www.oracle.com 얼마전 새로운 LTS버전인 JDK21이 새로 나와서 설치해서 사용해보기로 했습니다. 위 링크를 사용하여 수동 다운로드를 해도 되지만 intellij를 사용하고 있는 입장에서 해당 ide를 사용하여 jdk21를 설치하는 방법을 간단하게 작성하게 되었습니다. (약간 새로운 LTS버전이 나오면 새로운 핸드폰 모..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NI2NU/btsvXd8mdcJ/V1dERcWKEgyas0pZ0kpQK0/img.png)
Java 21로 올리고 나서 Unsupported class file major version 65와 같은 에러가 발생했습니다. 해당 에러는 Gradle에서 빌드하는 자바 버전이 현재 버전과 일치하지 않아서 발생하는 에러입니다. 보통 해결 방법은 설정 -> Build, Execution, Deployment -> Gradle 에서 Gradle JVM의 버전이 컴파일 버전과 일치하면 해당 에러를 해결할 수 있습니다. JDK 21 에러 유지 (해당 글 작성일 기준: 2023/09/26) jdk21인 경우 나온지 얼마 되지 않아서 21버전에 맞는 Gradle이 존재하지 않는 것 같습니다. 21버전에 맞는 Gradle버전이 나올때까지는 Empty Project로 생성하여 jdk21를 사용할 수 있을 듯 보입니다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KHbbZ/btsuekWgnz9/TTK7H2kGwkc9VR3kTIUYWk/img.png)
코틀린에서는 apply, also, run, with, let라는 범위지정함수를 지원하는데 해당 함수를 사용하여 코드를 간편하게 만들 수 있게 해줍니다. 각 함수 특징 정리 함수명 접근 방식 반환 값 사용처 기타 apply this 수신 객체 객체의 값 변경 also it(지정한 변수명) 수신 객체 apply와 유사 객체 관련 동작실행등에 사용됨 run this 반환 타입 수신 객체를 이용해 값을 반환 with this 반환 타입 run과 동일 단, 수신 객체를 파라미터로 받음 let it(지정한 변수명) 반환 타입 run, with와 동일 null check가 가능 예시로 사용될 클래스 해당글은 TestItem class을 예시로 작성하였습니다. class TestItem { var a: Int = 0..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8K9yn/btsobdnLJMf/3XSUkz84dZyLRTaZAITyL1/img.png)
발생한 문제 import tkinter as tk t = tk.Tk() t.geometry("200x200") tk.Label(t, text="Hello World").pack() t.mainloop() 처음에는 OS문제인 줄 알았는데 몇번 삽질을 해보니 python 버전이 문제였습니다. pycharm에서는 3.8버전으로 설정되어 있었는데 명령어를 사용해 python3.10(python3.11에서도 동작 확인함)에서 돌려보니 문제 없이 돌아가는 것을 볼 수 있었습니다. 해결 방법 오른쪽 하단에 파이썬 버전이 존재하는데 해당 부분을 누르면 추가된 버전들을 볼 수 있습니다. 여기서 추가를 할려면 Add New Interpreter -> Add Local Interpreter를 눌러 창을 열어줍니다. 여기에서..