무린

무린

자바코틀린스프링 부트
무린무린· 2개월

2025년 이클립스 마켓플레이스 추천 플러그인

Eclipse(이클립스)는 다양한 개발 환경에서 널리 사용되는 IDE 중 하나로, 강력한 플러그인 지원이 특징입니다. 이클립스 마켓플레이스(Eclipse Marketplace)를 활용하면 개발 생산성을 높이고, 다양한 프로그래밍 언어 및 기능을 손쉽게 확장할 수 있습니다. 2025년을 맞아 추천할 만한 인기 플러그인들을 정리해 보았습니다. 📌 1. Java 개발자를 위한 필수 플러그인 🔹 Lombok 보일러플레이트 코드를 줄여주는 필수 플러그인 자동으로 Getter, Setter, toString, Builder 패턴 생성 가능 다운로드 링크 🔹 SonarLint 코드 품질을 자동으로 분석하고, 실시간 피드백 제공 정적 코드 분석을 통해 버그 및 보안 취약점 감지 다운로드 링크 🔹 Checkstyle 코드 스타일을 자동으로 검사하고 일관된 코드 작성 지원 사내 코딩 컨벤션 준수를 위한 필수 플러그인 다운로드 링크 🔹 Spring Tools 4 (ST4) Spring Boot 및 Spring Framework 개발을 위한 공식 플러그인 자동 설정 기능 및 개발 편의성 제공 다운로드 링크 🌐 2. 웹 개발자를 위한 추천 플러그인 🔹 Eclipse Wild Web Developer HTML, CSS, JavaScript, TypeScript 지원 Vue.js, React, Angular 등 최신 웹 프레임워크와 호환 다운로드 링크 🔹 JSDT (JavaScript Development Tools) Eclipse에서 JavaScript 및 Node.js 개발 지원 TypeScript 및 ES6 지원 다운로드 링크 🔹 Angular IDE Angular 프로젝트 개발을 위한 최적화된 환경 제공 실시간 코드 오류 감지 및 IntelliSense 지원 다운로드 링크 💾 3. 데이터베이스 및 백엔드 개발자를 위한 플러그인 🔹 DBeaver 다양한 데이터베이스(MySQL, PostgreSQL, Oracle, MongoDB 등)와 연동 SQL 작성 및 실행을 손쉽게 할 수 있는 UI 제공 다운로드 링크 🔹 MyBatis Plugin MyBatis Mapper XML 파일의 자동 완성 및 SQL 실행 기능 지원 SQL과 Java 코드 간 매핑 기능 향상 다운로드 링크 🔹 JPA Buddy JPA 및 Hibernate를 쉽게 설정하고, 엔티티 클래스 자동 생성 Spring Boot 및 Java EE 환경에서 유용 다운로드 링크 🔧 4. Git 및 형상 관리 플러그인 🔹 EGit Eclipse에서 Git을 쉽게 사용하도록 도와주는 공식 플러그인 GitHub 및 GitLab 연동 지원 다운로드 링크 🔹 Gitflow Plugin Git 브랜치 관리(Git Flow 전략)를 쉽게 적용할 수 있도록 지원 다운로드 링크 🚀 5. 성능 향상 및 개발 편의성을 높이는 플러그인 🔹 Eclipse Memory Analyzer 메모리 사용량 분석 및 메모리 누수 탐지 대용량 힙 덤프 분석 가능 다운로드 링크 🔹 StartExplorer Eclipse에서 파일 탐색기, 터미널, 웹 브라우저 등을 바로 실행할 수 있도록 지원 다운로드 링크 🔹 DevStyle Eclipse UI를 보다 현대적으로 개선하는 플러그인 다양한 테마 및 컬러 스키마 제공 다운로드 링크 🎯 결론 Eclipse 마켓플레이스를 활용하면 개발 환경을 훨씬 강력하게 만들 수 있습니다. 2025년에도 여전히 유용한 플러그인들을 활용해 효율적인 개발 환경을 구축하세요! 여러분이 자주 사용하는 플러그인은 무엇인가요? 추천할 만한 플러그인이 있다면 댓글로 공유해주세요. 😊
404
0
무린무린· 2개월

Kotlin의 Continuation: 비동기 프로그래밍의 새로운 관점

비동기 코드를 쉽게 작성할 수 있다면 얼마나 좋을까요? Kotlin에서는 Continuation이 이것을 가능하게 해줍니다. Kotlin은 현대 프로그래밍 언어로서 여러 혁신적인 기능을 제공합니다. 그중에서도 Continuation은 비동기 프로그래밍의 복잡성을 해결하는 중요한 개념입니다. 여기서는 Kotlin의 Continuation 개념, 사용 방법, 그리고 실질적인 예제를 통해 이를 깊이 있게 다뤄보겠습니다. 일반 함수의 문제점과 중단/재개 방식의 장점 중단/재개 방식이란 무엇인가요? 중단/재개(suspend/resume) 방식은 함수가 실행되는 도중에 잠시 멈추고, 나중에 멈췄던 지점부터 다시 실행할 수 있도록 하는 방식입니다. 예를 들어, 여러분이 책을 읽다가 책갈피를 끼워놓고 다른 일을 한 후, 다시 책을 펴고 읽던 부분부터 이어 읽는 것과 비슷합니다. 이 방식은 프로그램이 비동기 작업을 처리할 때 특히 유용합니다. 일반적으로 비동기 작업은 작업 완료를 기다려야 하는 상황에서 코드가 복잡해지기 쉽습니다. 왜냐하면 다음과 같은 이유로 작업 흐름을 관리하기가 어려워지기 때문입니다. 작업 대기 중 코드 중첩 증가: 작업이 완료되기를 기다리면서 또 다른 작업을 수행하거나, 작업의 결과에 따라 후속 작업을 이어나가야 할 때, 코드가 점점 중첩됩니다. 콜백 헬: 여러 단계의 작업을 콜백으로 처리하면 코드가 복잡해지고, 흐름을 추적하기 어렵습니다. 에러 처리의 복잡성: 각 작업 단계에서 발생할 수 있는 예외를 처리하려면, 예외 상황마다 별도로 로직을 추가해야 합니다. 중단/재개 방식을 사용했을 때의 장점 중단/재개 방식을 사용하면 이러한 문제를 크게 완화할 수 있습니다. 아래는 그 주요 장점입니다. 지연된 실행: 함수가 특정 조건이 충족될 때까지 기다렸다가 실행을 계속할 수 있습니다. 상태 유지: 함수가 멈춘 시점의 상태(변수, 스택 등)를 저장하고, 재개할 때 그대로 복원하여 이어나갑니다. 간결한 코드 작성: 비동기 작업의 복잡성을 줄이고, 더 직관적이고 읽기 쉬운 코드를 작성할 수 있습니다. 기존 일반 함수의 문제점 일반 함수는 시작부터 끝까지 순차적으로 실행되는 구조를 가지고 있습니다. 이러한 구조는 간단한 작업에서는 유용하지만, 비동기 작업에서는 몇 가지 문제를 야기할 수 있습니다: 비동기 작업의 복잡성 증가: 일반 함수는 작업이 끝날 때까지 기다릴 수밖에 없으므로, 비동기 작업을 처리하려면 콜백(callback)을 사용해야 합니다. 이는 코드가 길어지고 복잡해지며, 가독성을 해칩니다. 상태 관리의 어려움: 비동기 작업의 상태를 추적하고 저장하는 로직을 직접 구현해야 하므로, 코드가 더욱 복잡해집니다. 디버깅 어려움: 비동기 작업이 중첩될수록, 코드 흐름을 따라가고 오류를 찾는 일이 매우 어려워집니다. 중단/재개 방식의 장점 Kotlin은 이러한 문제를 해결하기 위해 Continuation과 코루틴을 제공합니다. 중단/재개 방식을 사용하면 다음과 같은 장점이 있습니다: 코드 가독성 향상: 동기 코드처럼 비동기 작업을 표현할 수 있어 코드가 더욱 간결하고 직관적입니다. 유지보수 용이: 작업의 상태를 명확히 정의할 수 있으므로, 유지보수가 훨씬 쉬워집니다. 디버깅 편의성: 함수의 중단 및 재개 지점을 명확히 알 수 있어, 디버깅이 쉬워집니다. Continuation이란 무엇인가요? Continuation은 간단히 말해, 코루틴이 중단(suspend)된 이후 다시 실행될 시점과 그 상태를 캡슐화한 객체입니다. 이는 suspend 함수와 밀접하게 연관되어 있습니다. Kotlin에서 Continuation은 비동기 코드를 동기 코드처럼 작성할 수 있게 해주는 중요한 도구입니다. 일반적으로 비동기 프로그래밍은 콜백(callback)이나 Future, Promise를 활용하지만, Kotlin은 코루틴(coroutine)과 Continuation을 통해 이러한 패턴을 더욱 간단하고 읽기 쉽게 만듭니다. Kotlin이 일반 함수와 달리 Continuation을 제공하는 이유는 비동기 프로그래밍의 복잡성을 줄이고, 기존 콜백 방식에서 발생할 수 있는 코드 중복과 가독성 문제를 해결하기 위해서입니다. 기존의 비동기 작업에서는 콜백 지옥(callback hell)이라 불리는 코드 구조가 빈번히 발생하며, 이는 디버깅과 유지보수를 어렵게 만듭니다. Continuation을 활용하면 이러한 문제를 완화하고, 상태를 명시적으로 관리할 수 있는 장점이 있습니다. Continuation의 동작 방식 Continuation은 크게 두 가지 구성 요소로 이루어져 있습니다: Suspend 상태: 함수 실행이 중단된 상태를 의미합니다. Resume 상태: 중단된 지점에서 함수 실행을 재개하는 작업을 담당합니다. Kotlin에서 Continuation은 resume과 resumeWithException 메서드를 통해 상태를 제어할 수 있습니다. 코루틴과 Continuation의 관계 코루틴은 Continuation의 추상화를 활용하여 비동기 작업을 처리합니다. 예를 들어 suspend 키워드가 붙은 함수는 자동으로 Continuation 객체를 생성하여 내부적으로 이를 활용합니다. 예제 코드: suspend 함수 내부의 Continuation suspend fun sampleSuspendFunction() { println("작업 시작") suspendCoroutine { continuation: Continuation<Unit> -> // 작업이 끝난 후 resume 호출 continuation.resume(Unit) } println("작업 완료") } 위 코드는 suspendCoroutine을 사용해 비동기 작업을 정의하고, 이를 완료한 후 resume을 호출하여 실행을 재개합니다. Continuation의 실질적인 활용 비동기 작업 처리 아래 예제는 네트워크 호출과 같은 비동기 작업을 동기 코드처럼 작성하는 방법을 보여줍니다. suspend fun fetchData(): String = suspendCoroutine { continuation -> // 비동기 네트워크 호출 예시 networkRequest { result -> if (result.isSuccessful) { continuation.resume(result.data) } else { continuation.resumeWithException(result.error) } } } 이 코드는 비동기 네트워크 작업을 처리하면서도, 호출하는 쪽에서는 마치 일반적인 함수처럼 사용할 수 있습니다. 상태 관리 Continuation을 활용하면 복잡한 상태 전환을 더 쉽게 관리할 수 있습니다. fun statefulComputation(input: Int, continuation: Continuation<Int>) { if (input > 0) { continuation.resume(input * 2) } else { continuation.resumeWithException(IllegalArgumentException("Input must be positive")) } } Kotlin Continuation의 장점 가독성: 비동기 코드를 동기 코드처럼 작성할 수 있어 유지보수가 쉬워집니다. 유연성: 기존 콜백 기반의 비동기 처리보다 훨씬 더 유연합니다. 확장성: 다양한 비동기 라이브러리와 쉽게 통합됩니다. 마무리하며 Kotlin의 Continuation은 비동기 프로그래밍에서 더 나은 가독성과 유연성을 제공합니다. 코루틴을 통해 이를 쉽게 사용할 수 있으며, 개발자는 더욱 간결한 코드를 작성할 수 있습니다. 요컨대, 비동기 프로그래밍의 복잡함을 줄이고 싶다면 Kotlin Continuation을 반드시 학습해 보세요.
219
1
2
0
연금술사
연금술사·2025-03-02
좋네요
무린무린· 3개월

코틀린 코루틴 디버깅 시 'was Optimised Out(최적화로 제거됨)' 메시지 해결하기

코틀린으로 비동기 프로그래밍을 하다 보면, 코루틴의 일시 중단 지점에서 변수 값을 확인하려 할 때 디버거에서 '최적화로 제거됨(was optimised out)'이라는 메시지를 접하게 되는 경우가 있습니다. 이는 코루틴이 상태 기계(state machine)로 컴파일되면서, 일시 중단 지점 이후에 필요하지 않은 변수들은 성능 최적화를 위해 제거되기 때문입니다. 이러한 상황은 디버깅을 어렵게 만들 수 있어서 당혹스러울 수 있는데요, 빌드 설정을 조정하여 디버깅 시에만 이러한 변수를 유지하도록 설정하는 방법을 알아보겠습니다. 이를 통해 IntelliJ IDEA나 Android Studio에서 코루틴을 디버깅할 때 변수 값을 확인할 수 있으며, 프로덕션 성능에는 영향을 주지 않습니다. 왜 변수들이 '최적화로 제거됨' 상태가 되는가? 코틀린 코루틴은 컴파일 시 상태 기계로 변환됩니다. 이 과정에서 일시 중단(suspend) 지점 이후에 사용되지 않는 변수들은 메모리 사용을 줄이기 위해 제거됩니다. 또한, inline 함수로 표시된 코루틴 함수는 컴파일러가 코드 최적화를 위해 불필요한 변수를 제거할 수 있습니다. 이러한 최적화는 성능 향상에는 도움이 되지만, 디버깅 시에는 변수 값을 확인하지 못하게 만드는 원인이 됩니다. '최적화로 제거됨' 변수를 다시 보이게 만드는 방법 디버깅 시에만 코루틴의 변수를 유지하도록 빌드 설정을 동적으로 변경할 수 있습니다. 이를 위해 idea.active 속성을 활용하여, IntelliJ IDEA나 Android Studio에서 작업할 때만 디버그 친화적인 설정을 적용할 수 있습니다. 1. 코루틴 디버깅 동적 활성화 build.gradle.kts 파일에서 다음과 같이 설정합니다. // Kotlin Multiplatform kotlin { compilerOptions { if (System.getProperty("idea.active") == "true") { println("Enable coroutine debugging") freeCompilerArgs = listOf("-Xdebug") } } } // Kotlin JVM kotlin { compilerOptions { if (System.getProperty("idea.active") == "true") { println("Enable coroutine debugging") freeCompilerArgs.add("-Xdebug") } } } 2. 설정의 작동 원리 System.getProperty("idea.active"): 이 시스템 속성은 프로젝트가 IntelliJ IDEA나 Android Studio에서 열릴 때 자동으로 true로 설정됩니다. 이를 통해 IDE에서 작업할 때만 디버그 관련 설정을 적용할 수 있습니다. -Xdebug: 이 컴파일러 인자는 디버그 친화적인 바이트코드를 생성하여, 디버깅 시 코루틴 변수에 대한 정보를 더 많이 유지합니다. 3. idea.active 사용의 장점 성능 저하 방지: -Xdebug와 같은 디버그 옵션은 애플리케이션의 성능을 저하시킬 수 있습니다. 이를 IDE에서 작업할 때만 활성화하여 프로덕션 빌드에는 영향을 주지 않도록 합니다. 작업 흐름 간소화: IntelliJ IDEA나 Android Studio에서 디버그 설정을 자동으로 활성화하여, 개발 중에 설정을 수동으로 변경하는 번거로움을 줄입니다. 안전한 설정 관리: 이 방법을 통해 빌드 스크립트를 깔끔하게 유지하면서, 필요한 경우에만 디버그 플래그를 적용할 수 있습니다. 마치며 코틀린 코루틴을 디버깅할 때 '최적화로 제거됨' 메시지로 인해 변수 값을 확인하지 못하는 문제는 위와 같은 빌드 설정 조정을 통해 해결할 수 있습니다. 이를 통해 디버깅 효율성을 높이고, 프로덕션 성능에는 영향을 주지 않도록 설정할 수 있습니다. 출처: Debugging Kotlin Coroutines: Making “Optimised Out” Variables Visible
204
0
무린무린· 3년

누가 네이버에 jcenter좀 mavenCentral로 바꿔달라고 얘기 좀 전달해주세요~

안드로이드 네이버 로그인 Repository가 jcenter()에만 등록되어 있는데 jcenter()는 없어질 Repository인데 오늘은 아예 접속이 안되어서 네이버 로그인 붙어있는 앱이 빌드가 안되네요. 네이버 로그인을 jcenter()에서 maveCentral()로 이전해 달라고 어디에 요청해야하죠? 네이버 개발자 포럼에는 요청이 계속 올라오는 것 같은데 네이버측의 답변이나 조치를 찾을 수가 없네요😭   * 참고로 네이버 개발자 포럼에 올라온 요청들 https://developers.naver.com/forum/posts/31707 https://developers.naver.com/forum/posts/31905 https://developers.naver.com/forum/posts/31970 https://developers.naver.com/forum/posts/32471
1.8K
1
2
0
·2022-06-09
무린무린· 3년

[긴급] 거의 모든 서버가 위험하다! 매우 치명적인 ‘로그4j’ 보안 취약점 발견

[긴급] 거의 모든 서버가 위험하다! 매우 치명적인 ‘로그4j’ 보안 취약점 발견 거의 모든 서버에 영향을 미칠 수 있는 매우 심각한 제로데이 취약점이 발견돼 이번 주말 공공기관과 기업에 비상이 걸렸다. 취약점이 발견된 로그4j(Log4j) 2는 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티 프로그램으로, 대부분의 서버에서 광범위하게 사용되는 프로그램으로 알려졌다. www.boannews.com Log4j 가 문제가 될 줄이야...
1.3K
4
0
무린무린· 4년

자바로 만든 베스트 게임 7가지

7 Best Games Written in Java - Java Code Geeks - 2023 Interested to learn about Java? Check our article presenting the 7 best games of all time written in java. www.javacodegeeks.com 인기있는 게임 가운데 의외로 자바로 만든 게임들이 있습니다.   1. Watfu https://www.wakfu.com/en/mmorpg Wakfu는 Ankama Games에서 개발한 전술 턴 기반 MMORPG   2. Worms: A Space Oddity https://worms.fandom.com/wiki/Worms:_A_Space_Oddity Wii를 위한 포병 전술 게임   3. Saints Row 2 (Mobile) https://saintsrow.fandom.com/wiki/Saints_Row_2_(mobile) 엑스박스 360외에도 플레이스테이션 3 버전이 먼저 2008년 10월에 발매되었고, 이후 2009년에 마이크로소프트 윈도우 버전으로도 이식되었다.   4. SimCity https://www.origin.com/kor/ko-kr/store/simcity/simcity 엔딩이 없는 타이쿤형 도시 건설 게임 시리즈로, 컴퓨터용과 비디오 게임 콘솔용이 있다   5. Spiral Knights https://www.spiralknights.com/ Three Rings Design에서 만든 대규모 멀티 플레이어 온라인 게임으로 현재 Gray Havens가 소유. 무료로 플레이 할 수있는 Java 기반 게임은 2011 년에 출시되었으며 여전히 가끔 업데이트됨.   6. RuneScape https://www.runescape.com/splash 대규모 다중 사용자 온라인 롤플레잉 게임으로 자스 게임즈 스튜디오가 개발, 출판하였다. 자바 기반의 클라이언트 측에서 제공되는 그래픽 웹 게임으로, 3차원 렌더링도 포함하고 있다.   7. Minecraft https://www.minecraft.net/ko-kr 두말하면 잔소리. 스웨덴의 게임 개발사 모장 스튜디오가 제작한 샌드박스 비디오 게임이다. 마르쿠스 페르손이 자바 프로그래밍 언어로 개발해 2009년 5월 처음 대중에 공개했으며, 옌스 베리엔스텐이 총괄 디자이너직을 이어받으면서 2011년 11월 18일 정식판이 출시됐다.    
7.4K
1
0
무린무린· 4년

try-finally 보다는 try-with-resources를 사용하라

[Effective Java/아이템9] try-finally 보다는 try-with-resources를 사용하라. # try-finally 보다는 try-with-resources를 사용하라 ## 1. 자원이 닫힘을 보장하는 수단, try-finally의 단점 - 코드 가독성에 있어 지저분하다. - 두번째 예외가 첫번째 예외를 집어삼켜버러 실제 시스템에서 디버깅을 어렵게한다. static void copy(String src, String dst) throws IOException { InputStream in = new FileInputStream(src); try { OutStream out = new FileOutStream(dst); try { byte[] buf = new byte[BUFFER_SIZE]; int n; while((n = in.read(buf)) >= 0) out.write(buf, 0, n.. frogand.tistory.com try-finally의 단점과 try-with-resources의 장점을 간략하게 정리
1.1K
1
0
무린무린· 4년

Kotlin으로 만든 아재개그 앱 소스

GitHub - ErickSumargo/Dads: *BA DUM TSSS* *BA DUM TSSS*. Contribute to ErickSumargo/Dads development by creating an account on GitHub. github.com 이름이 "Dads"네요ㅋ 외국에서도 아재개그로군요😁  
1.3K
1
0
무린무린· 4년

Kotlin에서 외부 라이브러리 사용하지 않고 JSON 데이터 파싱하는 3가지 방법

How to parse JSON in Android using Kotlin | John Codeos - Blog with Free iOS & Android Development Tutorials Parse JSON (simple, array, and nested) in Android without using any 3rd party library johncodeos.com 심플한 JSON, 배열로 된 JSON, 그리고 중첩된 JSON에 데이터에 대해 파싱하는 방법을 설명합니다.   심플한 JSON JSON 예:  { "id": "1", "employee_name": "Jack Full", "employee_salary": "300800", "employee_age": "61" } HTTP를 통해 response로 데이터를 받았다고 가정할 때 JSON 문자열을 JSONObject로 파싱한 후 데이터를 추출합니다. val jsonObject = JSONTokener(response).nextValue() as JSONObject // ID val id = jsonObject.getString("id") Log.i("ID: ", id) // Employee 이름 val employeeName = jsonObject.getString("employee_name") Log.i("Employee Name: ", employeeName) // Employee 급여 val employeeSalary = jsonObject.getString("employee_salary") Log.i("Employee Salary: ", employeeSalary) // Employee 나이 val employeeAge = jsonObject.getString("employee_age") Log.i("Employee Age: ", employeeAge)   배열로 된 JSON JSON 예: [ { "id": "1", "employee_name": "Tiger Nixon", "employee_salary": "320800", "employee_age": "61" }, { "id": "2", "employee_name": "Garrett Winters", "employee_salary": "170750", "employee_age": "63" }, // ... ] JSON 문자열을 JSONArray로 파싱한 후 반복 루프를 돌면서 값을 추출합니다. val jsonArray = JSONTokener(response).nextValue() as JSONArray for (i in 0 until jsonArray.length()) { // ID val id = jsonArray.getJSONObject(i).getString("id") Log.i("ID: ", id) // Employee 이름 val employeeName = jsonArray.getJSONObject(i).getString("employee_name") Log.i("Employee Name: ", employeeName) // Employee 급여 val employeeSalary = jsonArray.getJSONObject(i).getString("employee_salary") Log.i("Employee Salary: ", employeeSalary) // Employee 나이 val employeeAge = jsonArray.getJSONObject(i).getString("employee_age") Log.i("Employee Age: ", employeeAge) // Save data using your Model // Notify the adapter } // Pass adapter to the RecyclerView adapter   중첩된 JSON JSON 객체 안에 또 다른 JSON 객체가 있는 경우 중첩되었다고 합니다. JSON 예 :  { "data": [ { "id": "1", "employee": { "name": "Tiger Nixon", "salary": { "usd": 320800, "eur": 273545 }, "age": "61" } }, { "id": "2", "employee": { "name": "Garrett Winters", "salary": { "usd": 170750, "eur": 145598 }, "age": "63" } }, // ... ] } JSON 문자열을 JSONObject 로 파싱한 다음 JSON 데이터의 키값(위 예에서는 &#39;data&#39;)으로 JSONArray을 가져와서 루프를 돌며 값을 추출합니다. val jsonObject = JSONTokener(response).nextValue() as JSONObject val jsonArray = jsonObject.getJSONArray("data") for (i in 0 until jsonArray.length()) { // ID val id = jsonArray.getJSONObject(i).getString("id") Log.i("ID: ", id) // Employee val employee = jsonArray.getJSONObject(i).getJSONObject("employee") // Employee 이름 val employeeName = employee.getString("name") Log.i("Employee Name: ", employeeName) // Employee 급여 val employeeSalary = employee.getJSONObject("salary") // Employee 급여(달러화) val employeeSalaryUSD = employeeSalary.getInt("usd") Log.i("Employee Salary in USD: ", employeeSalaryUSD.toString()) // Employee 급여(유로화) val employeeSalaryEUR = employeeSalary.getInt("eur") Log.i("Employee Salary: ", employeeSalaryEUR.toString()) // Employee Age val employeeAge = employee.getString("age") Log.i("Employee Age: ", employeeAge) // Save data using your Model // Notify the adapter } // Pass adapter to the RecyclerView adapter  
8.4K
1
0
무린무린· 4년

[Kotlin 팁] Kotlin 실행시간 측정

kotlin.time.TimeMark를 이용해서 간단하게 실행시간을 측정할 수 있습니다. import kotlin.time.* @OptIn(ExperimentalTime::class) fun main() { // 실행 전에 mark 생성 var mark = TimeSource.Monotonic.markNow() // 실행 Thread.sleep(200) // 실행시간 출력 println(mark.elapsedNow()) } 예제 실행 : https://pl.kotl.in/5mxWjijwV
3.0K
1
0