inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

변수 캡쳐 질문

해결됨

김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 궁금증이 생겨서 질문을 드립니다. 람다 vs 익명 클래스1 을 공부하다가, 변수지역 캡쳐, 부분이 기억이 안 나서 다시 듣게 되었는데요.(지역 클래스 - 지역 변수 캡쳐3) 공부를 하고 다시 듣다 보니 localVar를 변경할수 있는 방법이 생각이 나더라고요. 그래서 변경이 가능한지 테스트를 해보고, 바꾸어 보았습니다. 바꾸어 보니, 값이 변경 할 수 있다는 사실을 알수 있었습니다.(사진 참조) d 여기서 질문이 생깁니다. 이런식 으로 바꿀 수 있는데, 현업 에서도 이렇게 바꾸는 경우가 있냐요? 답변 부탁 드립니다.

  • java
  • 함수형-프로그래밍
  • lambda
  • optional
생각하는자 댓글 1 좋아요 0 조회수 99

책과 관련하여 궁금한 게 있습니다.

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

기본편 강의 수강을 다 하고 복습 및 좀 더 깊은 이해를 위해 JPA 프로그래밍 책을 구매하였습니다 JPA 로드맵의 각 강의가 책의 어떤 부분과 매핑 되는지 알 수 있을까요? - 기본편 : 책 1~10장 - 활용1 : 책 11장 - 활용2, 스프링 데이터 JPA, Querydsl : ??? 기본편과 활용1 두 강의는 1~11장에 딱 매핑 되는 거 같은데 나머지 강의들은 뭔가 순서가 섞여있는 거 같아서요 "어떤 강의는 책의 어느 장을 봐야 한다" 등의 가이드가 혹시 따로 있을까요?

  • java
  • jpa
조태준 댓글 2 좋아요 0 조회수 96

.

해결됨

서버개발자 과제전형 완벽가이드 - 1편

.

  • java
  • spring
  • spring-boot
  • database
zzzzz 댓글 1 좋아요 0 조회수 190

LikeApiTest 에서 질문이 있습니다

해결됨

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판

LikeApiTest 에서 unlike 메서드에 lockType을 추가 하지 않아도 테스트가 깨지지 않은 이유가 궁금한데요.. unlike 메서드에 lockType을 추가하지 않고 api를 호출하면 해당 uri경로가 없지 않나요?

  • java
  • mysql
  • spring-boot
  • kafka
  • redis
kolla 댓글 2 좋아요 0 조회수 117

CloudFireStore에 데이터가 들어가지 않아요

미해결

하울의 안드로이드 인스타그램 클론 만들기

//Promise method (권장) storageRef?.putFile(photoUri!!)?.continueWithTask { task: Task<UploadTask.TaskSnapshot> -> return@continueWithTask storageRef.downloadUrl }?.addOnSuccessListener { uri-> var contentDTO = ContentDTO() contentDTO.imageUrl = uri.toString() contentDTO.uid = auth?.currentUser?.uid contentDTO.userId = auth?.currentUser?.email contentDTO.explain = findViewById<EditText>(R.id.addphoto_edit_explain).text.toString() contentDTO.timestamp = System.currentTimeMillis() // :: firestore에 들어가지 않음!! firestore?.collection("images")?.document()?.set(contentDTO) setResult(Activity.RESULT_OK) finish() } 강의처럼 진행했고 오류도 안나고 하는데도 Cloud Firestore에 들어가지 않습니다..ㅠ 규칙도 다음과 같이 정의했습니다.

  • android
  • kotlin
  • 클론코딩
Lust B 댓글 1 좋아요 0 조회수 99

앱 다작 관련해서 질문드립니다.

해결됨

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

안녕하세요! 다작 관련된 부분 수강 중에 추가로 노하우 궁금한 점이 있어 문의드립니다. 회원 관리는 어떻게 하는지 아래 사항들이 궁금합니다. 회원들이 가입해서 사용하는 서비스들도 하시는것같은데, SNS 로그인 등 외부 api를 사용해서 하는지 궁금합니다. (하신다면 효율적으로 어떻게 관리하는지, 안하신다면 어떤 식으로 가입시키는지) 회원들의 데이터들도 전부 한 DB를 사용해서 하는지 궁금합니다. (각 서비스별 디비 칼럼이 다 다를것같아요) DB를 하나로 300개 이상의 앱을 했을 때 회원 테이블은 어떻게 구분해서 사용하는지 궁금합니다.

  • android
  • Google-Ads
  • admob
  • 수익화
jaesung 댓글 2 좋아요 0 조회수 248

도메인 설계에 대한 고민

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] erd 설계를 하다가 스스로 의문이 조금 들어서 질문드립니다. 현재 다음과 같은 앱을 구상하고 있습니다. AI 모델과 연동해서 추천 시스템을 생각 중인데 도메인 설계에 대해서 궁금한 부분이 생겨서 질문드립니다. package forpracticejunbao.junbaoprac_be.recommend.domain; import forpracticejunbao.junbaoprac_be.user.domain.User; import forpracticejunbao.junbaoprac_be.common.util.BaseEntity; import jakarta.persistence.*; import lombok.*; import java.util.ArrayList; import java.util.List; @Table(name = "recommend") @Entity @Getter @NoArgsConstructor @AllArgsConstructor @Builder public class Recommend extends BaseEntity { @Id @Column(name = "recommend_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id", nullable = false) private User user; @OneToMany(mappedBy = "recommend",cascade = CascadeType.ALL, orphanRemoval = true) @Builder.Default private List<RecommendClusterOption> recommendClusterOptions = new ArrayList<>(); @OneToMany(mappedBy = "recommend",cascade = CascadeType.ALL, orphanRemoval = true) @Builder.Default private List<RecommendValueOption> recommendValueOptions = new ArrayList<>(); @OneToMany(mappedBy = "recommend",cascade = CascadeType.ALL, orphanRemoval = true) @Builder.Default private List<RecommendResult> results = new ArrayList<>(); public void updateRecommendClusterOptions(List<RecommendClusterOption> recommendClusterOptions) { if (this.recommendClusterOptions != null) { this.recommendClusterOptions.clear(); this.recommendClusterOptions.addAll(recommendClusterOptions); } else { this.recommendClusterOptions = recommendClusterOptions; } } public void updateRecommendValueOptions(List<RecommendValueOption> recommendValueOptions) { if (this.recommendValueOptions != null) { this.recommendValueOptions.clear(); this.recommendValueOptions.addAll(recommendValueOptions); } else { this.recommendValueOptions = recommendValueOptions; } } } Recommend 클래스를 만들고, ClusterOption(클러스터 선택)과 ValueOption(계절, 요일 등등)을 일대다 다대일로 풀고자 했는데 이 두가지 엔티티가 크게 다르지 않은 것 같아서 그냥 하나로 합치는게 좋을지(그냥 enum으로만 구분) 아니면 의미적으로 좀 다르기 때문에 구분하는게 좋을지 궁금합니다.(클러스터 선택과 계절 선택은 하나만 선택 가능, 나머지는 하나 이상 선택 가능 조건이기에 클러스터와 계절을 도메인으로 묶을지도 살짝 고민이 되는 것 같습니다..) 결과를 RecommendResult로 보여주고자하는데(ai 추천 받은 top 5값에 대한 스팟 정보 제공 목적) 괜찮은 설계일지 궁금합니다. init.sql을 통해 클러스터, 계절, 요일 등 초기값들을 insert 해주고, spot 정보는 csv 파일로 부터 읽어오도록 구현하고 있는데(@PostConstruct, implementation 'com.opencsv:opencsv:5.5' 이용) 실제로 이런 설계에서 초기값을 주입하고 이후 로직 구현하는게 실무적으로 일반적인 방식인지 궁금합니다..! 긴 글 읽어주셔서 감사합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
염경호 댓글 1 좋아요 0 조회수 91

return; 오류

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 메서드 반환 타입 강의 중 MethodReturn2 내용에서 똑같이 한 거 같은데 missing return value 오류 뜹니다. 메서드 [71~73] 강의를 참고하여 매소드에 각 출력문장마다 return age;를 넣어봤더니 정상실행이 됩니다. 질문 1. 강사님께서 하신 내용 그대로 따라한 거 같은데, 오류가 난 이유가 궁금합니다.(인텔리제이 강사님과 같은 버전으로 다운 안돼서 최신버전이긴 한데 이게 원인인지..) 질문 2. 위 첫번째 사진(강의와 같은 코딩)을 예시로 인텔리제이가 return; 을 return age;로 (1번 사진이 2번 사진처럼)알아서 인식하여 모든 메서드에 return; 으로만 작성해도 되는건지 궁금합니다. (현재 메서드 정의 강의 중 [메서드 2] 와 같이 반환타입 없는 경우만 return;으로 사용(생략도 가능)으로 이해한 상태.) ex) 매개변수와 반환타입 있을 경우 -> return 매개변수; 매개변수와 반환타입 없을 경우 -> return;(생략 가능)

  • java
  • 객체지향
김영훈 댓글 2 좋아요 0 조회수 100

new Condition 부분 질문

미해결

자바 동시성 프로그래밍 [리액티브 프로그래밍 Part.1]

선생님 안녕하세요. 이해가 안되는 부분이 있습니다. 대기 메서드가 호출되면 락이 해제되고, => 대기 메서드가 호출 되면 락이 해제되는 것까지는 이해했습니다. 신호 메서드(notify)가 호출되어 대기 메서드에서 반환하기 전에 스레드는 락을 다시 획득한다. => 이부분이 잘 이해되지 않는데요. 대기 메서드가 호출되면서 락이 해제, 와 동시에 신호 메서드가 호출되어 대기가 다 끝나기전에 (wait) 락을 다시 획득한다는 말인가요? 즉, public wait () { 1. 락 해제 2. 신호 메서드 호출 (notify all) 3. Thread.currentThread -> 락 획득?? } 답변 부탁드립니다! 감사합니다.

  • java
  • 동시성
  • multithread
  • synchronisation
김규영 댓글 1 좋아요 0 조회수 117

채팅목록 스크린에서 ref.listen ()말고 ref.watch().when()을 쓰는 이유는?

미해결

Flutter로 메신저앱 만들기

채팅목록화면을 만들때 final chatListProvider = StreamProvider.autoDispose<List<ChatModel>>((ref) { final currentUserModel = ref.watch (authProvider).userModel; return ref.watch (chatRepositoryProvider).getChatList( currentUserModel: currentUserModel, ); }); ref.watch(chatListProvider).when()을 사용하여 채팅목록화면을 만듭니다. when 문을 쓰게 되면 데이터 변화가 있을때마다 getChatList 함수가 실행됩니다. 매번 데이터에 변화가 있을때마다 getChatList함수가 실행이되면 너무 많은 데이터를 불러올 것으로 생각이 되어집니다. 여기서 궁금한 건, 채팅화면에서는 페이지네이션을 적용해서 초기화면을 조회할때는 limit를 설정해서 몇개의 데이터만 불러오고 화면을 올렸을때 lastid를 기준으로 데이터를 추가적으로 불러오는 형태로 화면을 구상하였는데, 채팅목록도 마찬가지고 처음에는 몇개의 데이터만 가져오고 사용자가 화면을 스크롤했을때 추가적으로 데이터를 불러오게 하면 안 되는건가요...?

  • flutter
  • android
  • firebase
  • dart
  • riverpod
박수훈 댓글 1 좋아요 0 조회수 133

빌드 시에 테스트 무한로딩

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 2-4. 프로젝트 설정하기 14:09에 강의 런칭 시점에는 테스트 모두 통과하도록 변경했습니다. 라고 적혀있는데 테스트에서 무한로딩이 걸리길래 ./gradlew build --info로 띄워 봤습니다. 그래서 보니깐 이 로직이 계속 반복되더라구요 그래서 찾아보니 여기 while문에 계속 걸리는 거 같은데 제가 잘못 세팅한 건가요? 강의 앞전에 bootRun해서 http://localhost:8080/api/chapter2/boards 까지 접속되는 거 확인했고 도커에서 backend-pass-portfolio 컨테이너에 Db-mysql 만 실행된 채로 build눌렀습니다.

  • java
  • spring
  • mysql
  • redis
  • 이력서
kongminoo 댓글 2 좋아요 0 조회수 247

테스트 반복하기 관련 질문입니다

미해결

더 자바, 애플리케이션을 테스트하는 다양한 방법

@DisplayName("파라미터 테스트") @ParameterizedTest(name = "{index} {displayName} message={0}") @ValueSource(ints = {10, 20, 40}) void parameterizedTest(Study study){ System.out.println(study.getLimit()); } Junit5 테스트 반복하기 2부에서 이 부분 질문드리려 합니다. 강의에서는 Study 타입으로 받아서 객체를 생성하고 getLimit으로 값 가져오는 것까지 묵시적으로 진행이 잘 되었습니다만, 제 환경에서는 ```java Error converting parameter at index 0: No built-in converter for source type java.lang.Integer and target type com.example.testpractice.Study org.junit.jupiter.api.extension.ParameterResolutionException: Error converting parameter at index 0: No built-in converter for source type java.lang.Integer and target type com.example.testpractice.Study at java.base/ java.util.stream .ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) at java.base/ java.util.stream .ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/ java.util.stream .ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/ java.util.stream .ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/ java.util.stream .ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) at java.base/ java.util.stream .ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/ java.util.stream .ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) at java.base/ java.util.stream .ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ``` 와 같은 에러가 발생해서 Junit이나 JDK의 버전에 따라 스펙이 바뀌었는지 궁금해져서 질문드립니다

  • java
  • junit
  • mockito
  • testcontainers
  • jmeter
  • chaos-monkey
  • archunit
  • 소프트웨어-테스트
woo 댓글 1 좋아요 0 조회수 143

firebase storage에서 putfile해도 이미지 업로드가 안되요..

미해결

하울의 안드로이드 인스타그램 클론 만들기

var storageRef = storage?.reference?.child("images")?.child(imageFileName) // FileUpload storageRef?.putFile(photoUri!!)?.addOnSuccessListener { Toast.makeText(this, getString(R.string.upload_success), Toast.LENGTH_LONG).show() } 이런식으로 강의랑 똑같이해도 에러는 안나지만 Toast메시지가 안뜹니다. 제 버전과 storage 규칙은 아래와 같습니다. // 버전 firebaseAuth = "23.2.0" firebaseStorageKtx = "21.0.1" // 규칙 allow read, write: if false;

  • android
  • kotlin
  • 클론코딩
Lust B 댓글 1 좋아요 0 조회수 137

자료구조&알고리즘 강의

미해결

김영한의 실전 자바 - 중급 2편

코딩인터뷰용 자료구조&알고리즘 강의 만들어주시면 안되나요. 김영한님 한테 전달좀 해주세요ㅜㅜ

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
최연승 댓글 2 좋아요 1 조회수 190

h2 database jdbc 주소 변경

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

jdbc:h2:tcp://localhost/~/test는 다른 프로젝트에서 연습하고 있어서 다른 주소로 사용하려고하면 어떻게 하죠???

  • java
  • jpa
miiska 댓글 1 좋아요 0 조회수 186

xxxValue() 와 parseXxx()

해결됨

김영한의 실전 자바 - 중급 1편

[질문 내용] intValue()처럼 래퍼클래스를 기본형으로 반환하는 것과 parseInt()도 기본형으로 반환하는 것과 무슨 차이가 있는지 구체적으로 알려주세요.

  • java
  • 객체지향
soojinkimss 댓글 1 좋아요 0 조회수 76

findValue 메소드 리턴값

해결됨

김영한의 실전 자바 - 중급 1편

[질문 내용] 래퍼클래스 - 기본형의 한계 2 영상에서 findValue 메소드의 코드를 보면 if 조건문으로 리턴값이 myInteger라고 했습니다. 그런데 if 조건문 안에 myInteger.getValue()를 통해 value의 값을 뽑아서 그렇게 된다면 int타입의 값을 같은 int 타입인 target과 비교를 할 수가 있죠. 그런데 출력값을 확인해보면 -1, 0, 1 이 나오는 것을 확인할 수 가 있는데 리턴값도 똑같이 myInteger.getValue()로 나와야 되는거 아닌가요? return myInteger; 라고 했을 때 그냥 myInteger는 참조값이 반환될거라고 예상이 되는데 어떻게 출력이 -1, 0, 1이 나오는지 너무 궁금하네요.

  • java
  • 객체지향
soojinkimss 댓글 1 좋아요 0 조회수 95

hashIndex함수의 매개변수가 E가 아닌 이유

미해결

김영한의 실전 자바 - 중급 2편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요, 제네릭 Set 4 부분 강의에서 질문드리고 싶은 점이 있어 여쭤봅니다. private int hashIndex(Object value){ return Math. abs (value.hashCode())%capacity; } 이 부분에서 매개변수가 E value가 아닌 Object 로 들어오는 이유는 타입 이레이저 때문일까요 ?

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
wonderwall09in 댓글 1 좋아요 0 조회수 113

sealed class 사용시 기능은 동작하지만 Radio위젯에 선택 표시가 안되는 부분 질문

미해결

Flutter 중급 1편 - 클린 아키텍처

sealed class 사용시 Radio위젯에 선택 표시가 안되는 이유는 Radio위젯에 value == groupValue 값이 같아도 객체 참고가 다르기 때문에 발생되는 것으로 확인했습니다. orderType비교시 == 값이 같은 경우 가능하도록 내용을 수정했는데 제대로 수정했는지 궁금해서 문의드립니다. *참조코드 2 내용 1.*참조코드 2 내용 수정이 잘되었는지 확인 2.freezed 사용시 자동으로 만들어 주는 부분인데 seald 클래스 사용시 팁이 있는지 궁금합니다. 3.copyWith 부분도 추가하는 형태도 궁금합니다. 참조코드 1 import 'package:flutter/material.dart'; import 'package:flutter_note_app/domain/model/util/note_order.dart'; class OrderSection extends StatelessWidget { final NoteOrder noteOrder; final Function(NoteOrder noteOrder) onOrderChanged; const OrderSection({ super.key, required this.noteOrder, required this.onOrderChanged, }); @override Widget build(BuildContext context) { return Column( children: [ Row( children: [ Radio<NoteOrder>( value: NoteOrder.title(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.title(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('제목'), Radio<NoteOrder>( value: NoteOrder.date(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.date(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('날짜'), Radio<NoteOrder>( value: NoteOrder.color(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.color(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('색상'), ], ), ], ); } } 참조코드 2 import 'package:flutter_note_app/domain/model/util/order_type.dart'; sealed class NoteOrder { final OrderType orderType; const NoteOrder(this.orderType); factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; factory NoteOrder.date(OrderType orderType) = NoteOrderDate; factory NoteOrder.color(OrderType orderType) = NoteOrderColor; @override bool operator ==(Object other) { return runtimeType == other.runtimeType && other is NoteOrder && other.orderType == orderType; } @override int get hashCode => Object.hash(runtimeType, orderType); } class NoteOrderTitle extends NoteOrder { NoteOrderTitle(super.orderType); } class NoteOrderDate extends NoteOrder { NoteOrderDate(super.orderType); } class NoteOrderColor extends NoteOrder { NoteOrderColor(super.orderType); } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

  • flutter
  • ios
  • android
mhlee 댓글 2 좋아요 0 조회수 148

모든 강의를 수강했지만 수강진도율이 98.98%에서 오르지 않습니다

미해결

김영한의 실전 자바 - 기본편

[질문 내용] 모든 강의를 수강했지만 수강진도율이 98.98%에서 오르지 않습니다. 수강증명서를 받고 싶지만 98.98%에서 오르지 않아 수강증을 못 받고 있습니다. 하지만 모든 강의 수강완료라고 떠 있습니다.

  • java
  • 객체지향
밥은묵고다니나 댓글 2 좋아요 0 조회수 164

인기 태그

인프런 TOP Writers

주간 인기글