묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코틀린 고급편
Kotlin 2.0(K2 컴파일러)에서 달라진 Java SAM 변환 동작
Kotlin에서 Java의 함수형 인터페이스(SAM Interface)를 사용할 때, 이전 버전과 2.0 이후 버전에서 동작이 달라진 부분을 발견해서 공유합니다.@FunctionalInterface public interface StringFilter { boolean filter(String s); }위와 같은 함수형 인터페이스가 있다고 하면은 Kotlin 1.x (구 컴파일러) 에서는 다음과 같이 SAM 생성자를 명시적으로 사용해야만 했습니다. val filter = StringFilter { s -> s.startsWith("A") }Kotlin 2.0+ (K2 컴파일러) 에서는 아래와 같은 방식이 정상 동작 됩니다.val filter: StringFilter = { s -> s.startsWith("A") }왜 바뀌었는지 찾아보니 Kotlin 2.0에서 정식 도입된 K2 컴파일러는 프론트엔드를 완전히 새로 작성하면서, 타입 추론(Type Inference)과 호출 해석(Call Resolution) 시스템이 크게 개선되었습니다. K2 컴파일러 마이그레이션 가이드에서는 이를 다음과 같이 설명합니다."Improved call resolution and type inference."The compiler behaves more consistently and understands your code better.구체적으로 K2 컴파일러는 기대 타입(Expected Type)이 Java SAM 인터페이스인 모든 위치에서 람다의 암시적 SAM 변환을 지원하도록 확장되었습니다. 이전에는 SAM 변환이 함수 인자 전달 등 제한된 위치에서만 적용됐지만, K2에서는 변수 대입을 포함한 더 넓은 범위에서 일관되게 동작합니다.실습하다가 너무 잘 되어서 한번 찾아본 결과를 한번 정리해서 드립니다!https://kotlinlang.org/docs/k2-compiler-migration-guide.htmlhttps://kotlinlang.org/docs/whatsnew20.htmlhttps://kotlinlang.org/docs/fun-interfaces.htmlhttps://kotlinlang.org/docs/compatibility-guide-20.html
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
[인앱결제] 질문
안녕하세요! 강의 도움이 많이 되고있습니다.[34. 유니티 인앱 결제 SDK 설치] 강의에서 질문있습니다. 저는 자체 서버가 있고서버에서 Google Cloud Console통해서 영수증 검증 하는 방식으로 구현하려고 하는데요.강의 중 궁금한부분은Q. 구글플레이콘솔과, 유니티클라우드에 라이선스키 등록하는 부분은 필수일까요?1.PackageManager > In App Purchasing 설치는 클라이언트에서 결제를 해야하니 필수2.ProjectSettings > Service에 UnityProjectID 등록 및 라이선스키 등록은 In App Purchasing 패키지가 동작하는것과는 무관한걸로 조사는 했는데 2번 과정이 어떤 용도인지 확인차 질문드립니다!
-
미해결김영한의 실전 자바 - 기본편
공부방법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]메모리 구조, 동작 순서, 코드는 이해가 가는데 막상 문제와 풀이 부분에서 어떻게 해야할지 모르겠어요. 뭔가 이렇게 해야 될 것 같다 까진 생각이 나는데 막상 코드를 치려고 하면 막막해지는 느낌.. 이런 문제는 어떻게 해결 해 나가야 될까요? 경험 부족일까요?
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
안녕하세요~ 회수라는 의미에 대해서 질문합니다.
안녕하세요~~ 강의 너무 잘 듣고 있습니다. 강의 듣다가 한가지 의문이 생겨서 질문 남깁니다. GC가 회수한다 라고 말씀을 해주셨는데 여기서 회수는 정확히 어떤 의미일까여? reachable 가능성을 따져서 도달 가능한 인스턴스를 제외한 나머지 공간을 OS에 반납(실제 OS에 반납은 아닐거 같지만 JVM에 반납한다? 라는 의미로 얘기합니다..)한다는 의미일까여 아님 그냥 JVM이 사용가능한 공간으로 만들어 주는것 (free와 같은 개념)으로 만들어 주는걸 의미하는 걸까여? 간략하게 여기서 회수란 메모리 재사용 가능 상태(실제 값이 0으로 초기화 되거나 그런게 아니라 연결을 끊음으로써 언제든 그 공간을 새롭게 할당 가능한 상태)로 돌림으로 이해하면 될까여 아님 실제로 반납을 해주는걸까여....? 진짜 어렵네여 ㅠㅠ 일하면서도 단한번 제대로 잡고간적 없는듯 해서 맨날 헷갈리는 개념입니다 ㅠㅠ
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
Future cancel기능을 사용했지만 interrupt가 발생하지 않을 때 어떻게 처리해야하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.Future의 cancel기능에 대해 실험하면서 해결하기 어려운 부분을 만나 질문드립니다.📋실험 내용Callable의 call메서드 내부에서 I/O와 같은 블로킹 작업 진행(or Interrupt가 되지 않는 작업)Future의 cancel 진행스레드 호출 대상은 CancellationException 예외 발생 후 진행※ 스레드 풀의 스레드는 계속 실행 중임을 확인 💥문제 사항이런 방식으로 로직이 지속 실행되면 스레드 풀의 스레드는 종료되지 않으면서 고갈되어 가고 결국엔 작업이 쌓이다가 에러를 뱉어내고 오작동 하게 될 것이라 추측됩니다. ❓질문 내용Q. cancel기능은 Interrupt 를 발생해주면서 작업을 중단합니다. 만약 I/O 작업 처럼 Interrupt가 먹히지 않는 로직에서는 어떻게 스레드의 실행을 종료하고 스레드 풀로 반납할 수 있을까요?💻 코드public class FutureCancelMain { private static boolean mayInterrupIfRunning = true; public static void main(String[] args) { ExecutorService es = Executors.newFixedThreadPool(1); Future<String> future = es.submit(new MyTask()); log("Future.state: " + future.state()); sleep(3000); log("future.cancel(" + mayInterrupIfRunning + ") 호출"); boolean cancelResult = future.cancel(mayInterrupIfRunning); log("cancel(" + mayInterrupIfRunning + ") result: " + cancelResult); try { log("Future result: " + future.get()); } catch (CancellationException e) { log("Future는 이미 취소되었습니다."); } catch (ExecutionException | InterruptedException e) { e.printStackTrace(); } es.close(); } static class MyTask implements Callable<String> { @Override public String call(){ boolean flag = true; // Scanner scanner = new Scanner(System.in); while(flag) { log("무한 작업 중..."); } return "Completed"; } }
-
미해결스프링 핵심 원리 - 기본편
롬복 @Setter를 써야 하는 상황이 있는건가요?
인텔리제이가 requestURL을 필드에서 @Setter로 바꾸라고 추천을 하던데 강의에서는 직접 Setter를 작성 하시더라구요 롬복 @Setter를 쓰면 좋은 상황이 따로 있는건지 아니면 강의에서 보기 편하라고 setter를 직접 작성하신건지 궁금합니다 private String uuid; private String requestURL; public void setRequestURL(String requestURL) { this.requestURL = requestURL; } ================================= ================================ private String uuid; @Setter private String requestURL;
-
해결됨게임회사 취업완성 C++: 10년 기출로 한 번에 합격하기 (기본편)
심화편 수강 등록
안녕하세요기본편 가격 조정으로인한 심화편 수강 등록은 진행되었을까요?혹시나 누락되었나 싶어서 문의 남깁니다
-
미해결스프링 핵심 원리 - 기본편
빈 등록 메서드의 파라미터가 빈이 아니어도 되나요?
@Configuration public class AppConfig { @Bean public A methodA(B b) { b.xxx(); return A; } }위는 예시 코드에서처럼빈을 수동으로 등록하려할 때, methodA에 전달 받는 B 클래스가 스프링 빈이 아닌 일반 클래스여도 되나요? 만약 아니어도 된다면 어떤 식으로 동작하는걸까요?
-
해결됨[CS 기술면접 6] 말이 트이는 자바와 객체지향
JVM - 자바 가상머신의 구조와 실행 매커니즘 2. 자바개요 부분에서 질문 있습니다.
"JVM 설명 부분에서 자바 코드를 바이트 코드로 변환하여 실행하는 역할"이라고 설명 하셨는데,그건 자바 컴파일러가 하는 역할 아닌가요 ?바이트 코드를 기계어로 바꿔주는 것이 JVM이라고 알고 있는데, 헷갈려서 질문 남깁니다.
-
미해결김영한의 실전 자바 - 중급 1편
안녕하세요 코딩테스트와 병행하고 싶어서 질문드립니다.
질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 선생님 수업 감사히 잘 듣고 있습니다. 선생님께서 정리해주신 커리큘럼 모두 읽어봤고, 늦더라도 모두 따라갈 생각입니다.다름이 아니라 시간관계상 그 전에 제가 코딩테스트를 준비해야돼서 역량을 키울 겸 자바 진도와 병행하고 싶은데 자바 로드맵 기준으로 최소한 어디까지 수강하고 코딩 테스트를 준비해보는게 좋을까요??
-
미해결김영한의 실전 자바 - 기본편
상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?
[질문 내용]상속관계에서 자식클래스의 멤버 변수에 부모 클래스와 같은 이름으로 정의를 하게 되면 자식 클래스의 멤버 변수를 먼저 찾는것으로 보여지는데 @Override 어노테이션은 붙히는게 불가능한것 처럼 보입니다 상속관계에서 멤버 변수에는 오버라이딩의 개념이 없는건가요?
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
자료형(실수) 출력 결과 문의
안녕하세요. 강사님.좋은 강의 잘 듣고 있습니다. 감사합니다. 강의 30분쯤 double 자료형(실수)에 대한 사칙연산을 했을 때 제가 예상한 값은 4.0, 5.0 처럼 실수 형태로 표현이 되어야 한다고 생각하는데요. 정확한 결괏값은 제가 예상한대로 실수 형태로 출력 되는 게 맞는지 궁금합니다.<DartPad 실행><안드로이드 스튜디오 실행>DartPad에서 이런 차이가 발생하는 원인은 결과 출력 시 자료형을 double에서 int로 형변환해서 출력한다고 생각하면 맞을까요?
-
미해결스프링 핵심 원리 - 기본편
테스트 속도가 나중에 영향이 있을까요?
전 강의에서 한 "싱글톤 패턴을 적용한 객체 사용" 테스트와 이번 강의에서 한 "스프링 컨테이너와 싱글톤" 테스트의 속도 차이가 꽤 차이 나던데 (제 환경에서는 30ms 대와 300ms대 정도로 10배 차이)이게 나중에 코드가 많아지면 문제가 되는지,이 속도를 빠르게 최적화 하는 방법이 있는지 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
2.스레드 생성과 실행 - 17P 그림 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 강의 잘 수강하고 있습니다. 17P에 시간의 흐름으로 분석 이라는 그림이 있습니다.그런데, 마치 스레드 생성 이후에, start()를 통해 실행을 하는 것 처럼 그림이 그려져 있습니다. 'start() 호출 전 3. 호출 후' 라는 프린트가 중간에 끼어있으니 더 그런것 같은데. 제가 알기로 start() 명령어와 동시에 실제 스택이 생성되고 실행되는 것으로 알고 있습니다. 그렇다면 '1 start() 호출 전' 이 main 박스 맨 위로 가고, 스레드 생성이 호출 뒤로 가야 하는거 아닌가 싶습니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
자바 동시성 현업에서 사용예시가 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예3. 질문 잘하기 메뉴얼을 읽어보셨나요?예[질문 내용]안녕하새요 강사님 수업내용이 너무 알차서 정말 잘 듣고 있습니다 근데 하나 궁금한 점이 생겨서요!요즘 백엔드는 서버가 여러대인 환경이라 각 서버의 메모리가 공유되지 않아서 자바에서 서로 락을 걸어도 서로의 RAM이 다르기때문에 재고쪽 문제에서 생기는 좋아요 수라던가 재고 같은 문제는 자바 쪽 락보다는 DB의 낙관적락 또는 비관적 락으로 막아주는경우가 많다고 보게 되었는데 또 다른 예시로는 버튼을 따닥 해서 여러 요청이 들어오는 경우도 자바 스레드 제어보다는 DB에서 유니크 키로 막을수 있다고 생각이 드는데 그렇다면 현업에서 ConcurrentHashMap이나 Atomic, synchronized 같은 자바 동시성 기술은 구체적으로 어떤 상황에서 필수적으로 사용되나요?DB 부하를 줄이기 위래 또는 성능 최적화를 위해 멀티스레드를 어떻게 활용하는지도 궁금합니다 !
-
미해결멀티패러다임 프로그래밍 1편: 반복자 패턴 & LISP (with TypeScript, Clojure, Kotlin)
예제 소스코드 실행 관련 문의
윈도우10 환경에서 테스트 중입니다.파일을 다운로드 받아서 PowerShell에서 패키지를 설치하고 명령어를 실행했지만, rune Server 관련 에러가 나오는데, 무엇이 문제인 걸까요? PS C:\dev\study\multi-paradigm-programming-main> pnpm -F lecture dev> lecture@1.0.0 dev C:\dev\study\multi-paradigm-programming-main\apps\lecture> pnpm rune dev▲ Rune Server v1.0.24⨯ Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'c:'at throwIfUnsupportedURLScheme (node:internal/modules/esm/load:187:11)at defaultLoad (node:internal/modules/esm/load:82:3)at ModuleLoader.load (node:internal/modules/esm/loader:815:12)at ModuleLoader.loadAndTranslate (node:internal/modules/esm/loader:594:31)at #createModuleJob (node:internal/modules/esm/loader:624:36)at #getJobFromResolveResult (node:internal/modules/esm/loader:343:34)at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:311:41)at process.processTicksAndRejections (node:internal/process/task_queues:105:5)at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:664:25) {code: 'ERR_UNSUPPORTED_ESM_URL_SCHEME'}
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
Firebase iOS 빌드 시 중복심볼
최신 버전 firebase auth를 다운받으면 기존이랑 다르게,이런게 추가되었는데, 이것 때문인지 빌드 후 xCode로 열면 패키지 디펜던시가 같이 들어와서 중복 심볼 에러가 뜨는데 혹시 해결방법 아시나요 ..? 어찌저찌 빌드는 했는데, 유저데이터를 로드하려하면 바로 크러시나서 터지네요.. 결국 10.5.0으로 버전 낮추고 했습니다. 10.7.0부터 firebase sdk가 swift로 종속성을 처리하는걸 추가한거 같은데 그거 때문인거 같아요 혹시나 차후 방법도 알려주시면 감사하겠습니다
-
미해결Python 입문자를 위한 강의
아나콘다에 다운로드 받는 화면이 달라요.
아나콘다 접속하면 individual edition 항목이 없네요. 어디서 다운 받아야 할까요?
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
Array 연습 문제 5번 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Array 연습 문제 5번을 제가 스스로 풀어보았을 때 이런 식으로 코드가 나왔고, 실행시켜봤을 때 답은 똑같이 나오는 것 같습니다.다만 풀이와는 코드가 조금 다른 부분이 있는데 혹시 제가 풀어 본 코드도 맞는 코드인가요? 아니면 틀린 걸까요?
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
fold 함수 문법이 업데이트 된 것 같은데 맞을까요?
함수형 프로그래밍 강의 중에 fold에 관해서 공부 중에 생긴 의문입니다.fold의 리턴타입 제네릭을 적지 않았는데도 prev + next 부분에서 에러가 나지 않고 정상적으로 실행이 되던데, 최근에 업데이트가 된걸까요?