inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

북마크 페이지 화면이 이상하게 나옵니다.(망고)

미해결

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

제목에 나왔듯이 북마크 페이지에서 이미지가 나오지 않는데 어떤 페이지를 수정해야 할까요?ㅠㅠ

  • android
  • kotlin
  • firebase
cloverj0 댓글 1 좋아요 0 조회수 205

빌드가 되지 않습니다

해결됨

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

실행하려고 하면 위와 같이 빌드에 실패했다는 말과 함께 오류가 뜹니다. 전체 폴더를 구글 드라이브에 올려두었습니다. https://drive.google.com/drive/folders/1mbyI-lZ2UKh4nxh15dJqfDuF1pAWuNP-?usp=sharing

  • android
  • kotlin
  • firebase
Junho Moon 댓글 2 좋아요 0 조회수 310

jar 배포 시 frontend 페이지에 접속이 안되는 이슈

해결됨

스프링은 어려워! 코틀린과 Ktor로 백엔드/서버개발 기초정복 (커피주문시스템 개발)

./gradlew buildFatJar 로 빌드한 후에 jar를 실행해보니 frontend 페이지가 접속이 안되는 이슈가 있었습니다 (윈도우, 맥 환경 동일). 다른 분들은 정상적으로 실행되는데 제 환경이 잘못되어서 그런지도 모르겠습니다. Routing.kt에 react 설정부분을 아래와 같이 변경하니 정상적으로 동작합니다. frontend 폴더는 ./resources 폴더로 이동시켰습니다. 어떤 문제때문에 발생한 이슈인지 강사님이나 고수님들이 조언 주시면 감사하겠습니다. 😄 [기존 코드] singlePageApplication { react("frontend") } [변경 코드] staticResources("/", "frontend") { default("index.html") preCompressed(CompressedFileType.GZIP) }

  • kotlin
  • ktor
  • koin
  • kotlin-exposed
m2woo 댓글 2 좋아요 1 조회수 372

혹시 kotlinx-datetime 라이브러리를 사용하지 않으신 이유가 있으신가요?

해결됨

스프링은 어려워! 코틀린과 Ktor로 백엔드/서버개발 기초정복 (커피주문시스템 개발)

java 의 datetime 라이브러리를 사용하게 됨으로써, exposed 에서나 kotlinx-serialization 을 통한 직렬화에서도 직접 custom serializer 를 만들어주거나, 별도의 라이브러리를 주입하여 처리해주는 부분이 늘어간 것 같아서 질문을 드리게되었습니다. kotlinx-datetime 라이브러리를 통해 datetime 을 핸들링하게 될 경우엔 kotlinx-serialization 을 통해 직렬화 및 역직렬화를 수행할때, 별도의 custom serializer 를 만들어주지 않아도 라이브러리에서 지원이 되어서요. (exposed 는 이번에 처음 사용해서 지원하는 타입들이 내장되어 있는지 조사해봐야할 것 같습니다.) java 의 datetime 라이브러리가 아무래도 아직 더 대중적으로 사용하는 라이브러리라서, 익숙해서 사용하신 것인지, 이유가 궁금합니다.

  • kotlin
  • ktor
  • koin
  • kotlin-exposed
JI HUN LEE 댓글 2 좋아요 1 조회수 634

BTS 만들 intent 사용에 오류

미해결

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

강의대로 intent 작성 후 alt+enter를 누르면 사진과 같이 밑에 새로운 함수가 생겨버립니다? 어디가 잘못된 걸까요?? import 부분도 강의 부분과 조금 다른듯 해서요

  • android
  • kotlin
  • firebase
ehddnr5477 댓글 2 좋아요 0 조회수 255

FCM 토큰 문의

미해결

[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)

안녕하세요 강의 관련 문의가 있습니다. 3분 00초에서 기존 회원의 경우 토큰 값이 없어서 DB에서 삭제 후 신규 가입을 하셨는데요 회원정보 삭제 없이 DB에 토큰 값만 Update 할 수 있는 방법은 없을까요 ? 강의 잘 보고 있고 항상 감사합니다 :

  • android
  • kotlin
  • firebase
전문기 댓글 1 좋아요 0 조회수 240

첫번째 Ktor 서버 띄워보기 전에 강의 하나가 빠져있는것 같습니다.

해결됨

스프링은 어려워! 코틀린과 Ktor로 백엔드/서버개발 기초정복 (커피주문시스템 개발)

프로젝트를 어떻게 구성해야하는지에 대한 설명이 누락되어있는 것 같습니다. kotlinx serialization 을 add 해야 한다던지 그런

  • kotlin
  • ktor
  • koin
  • kotlin-exposed
JI HUN LEE 댓글 2 좋아요 1 조회수 327

ListAdapter / DiffUtil 관련 강의 문의

미해결

[중급편] 친절한 JETPACK 개론 <하> (Android Kotlin)

섹션 2 에 해당하는 모든 강의가 화면이 안보이는데 원래 그런건가요? 혹시 삭제된 걸까요?

  • android
  • kotlin
  • jetpack
leeha0525 댓글 3 좋아요 0 조회수 317

웹 앱 로그인 유지 방법

미해결

안녕하세요. 웹앱 기반의 앱을 만들고 있는 초급 개발자입니다. js에 있는 특정 로그인 암호화 알고리즘을 전부 kotlin에서 재정의하려하니 너무 골이 아파져서 방향을 어떻게 잡아야 할지 우선 여쭤보고 가는게 좋겠다고 생각하여 질문 남기게 되었습니다. 우선 제가 생각한 방법들을 이렇습니다. 로그인 기능만 네이티브앱에서 구현(암호화 알고리즘 kotlin으로 재정의) 해당 js함수를 사용하는 웹을 컨트롤러에서 호출하고, 응답만을 가져와서 Android 클라이언트에 반환 위 두 가지를 일단 시도중인데 2번 방식이 쉽지가 않네요. 애초에 가능한건지도 확실치가 않아 보입니다. 이런 고민을 해보신 적이 있다면 부디 조언 부탁드리겠습니다.

  • springboot
  • andoird
  • kotlin
  • js
장산 댓글 1 좋아요 0 조회수 263

API 제공 사이트에서 test 할때 서버에러가 나는데요.

미해결

노래 들으며 실전 프로젝트로 안드로이드 최신 기술을 공부해 보자! - 이름 궁합 편

이제 더이상 사용할 수 없는 API인걸까요? 해결방법이 있다면 알려주시면 감사하겠습니다.

  • android
  • kotlin
최다빈 댓글 1 좋아요 0 조회수 237

강사님 FCM 단계에서 전체적으로 앱 문제가 발생해서 혹시 원격으로 조치 해주실 수 있나요?

미해결

[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)

강사님 FCM 단계에서 전체적으로 앱 문제가 발생해서 혹시 원격으로 조치 해주실 수 있나요? 3주째 같은 강의 단계에서 멈춰서 진행이 안 되고 있어서... 피드백도 AI가 해주다보니 정확한 조치를 받기도 어려운 단계네요.

  • android
  • kotlin
  • firebase
최성규-방음종합물류도매 댓글 1 좋아요 0 조회수 256

토큰 정보 유저정보에 저장하기 강의 4분 12초 코드를 동일하게 입력했는데 적용이 잘 안되는 것 같아요.

미해결

[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)

위에 toString 부분이 정상적으로 활성화가 안 되는 것 같아요. 노란색 글씨로 변경되어야 하는 걸로 알고 있는데, 앞서 스플래쉬 화면에서도 토큰정보 가지고 올 때도 동일하게 코드가 반응이 없네요. 앱을 켜도 토큰 값이 로그캣에 뜨지않아요.

  • android
  • kotlin
  • firebase
최성규-방음종합물류도매 댓글 3 좋아요 0 조회수 438

FCM 강의, firebaseservice 클래스 내 오류코드 해결방안이 궁금합니다.

미해결

[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)

위 코드에서 하단 부분에 notify(id : 123, builder.build ()) 부분이 계속해서 빨간줄로 되어 있는데 어떻게 해결해야하나요?

  • android
  • kotlin
  • firebase
최성규-방음종합물류도매 댓글 2 좋아요 0 조회수 305

FCM 강의 중간부터 코드 오류가 발생했는지 앱에서 회원가입을 해도 파이어베이스 Authentication에는 회원등록이 해도 화면이 넘어가지 않고 데이터도 저장이 안 되네요.

미해결

[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)

회원가입창에서 회원가입을 한다. 2. '회원가입' 버튼을 눌러도 해당화면에서 메인화면으로 넘어가지 않는다. 파이어베이스 Authentication에는 회원등록은 되어 있으나, Realtime Database와 Storage에는 사진등록이 되지 않는다. 회원등록 완료 데이터베이스에 회원정보(닉네임, 성별, 지역 등)가 등록되어 있지 않다. 스토리지에 사진도 등록되지 않아있다. 현재 위와 같은 오류가 발생하네요. 어떤 부분을 확인해야할까요?

  • android
  • kotlin
  • firebase
최성규-방음종합물류도매 댓글 3 좋아요 0 조회수 330

안드로이드 스튜디오 게시글 이미지 업로드 유무

미해결

[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)

게시글을 올릴때 이미지를 업로드 하지 않으면, 안드로이드 스튜디오가 꺼집니다. 혹시 이미지를 업로드 하지 않아도 게시글을 작성하려면 코드를 어떻게 수정해야하나요? package com.example.healthcareapplication.fragments import android.app.Activity.RESULT_OK import android.content.Intent import android.graphics.Bitmap import android.graphics.drawable.BitmapDrawable import android.os.Bundle import android.provider.MediaStore import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.databinding.DataBindingUtil import androidx.navigation.fragment.findNavController import com.example.healthcareapplication.DATA.ContentData import com.example.healthcareapplication.DATA.ContentModel import com.example.healthcareapplication.R import com.example.healthcareapplication.databinding.FragmentCommunityWriteBinding import com.google.firebase.auth.FirebaseAuth import com.google.firebase.ktx.Firebase import com.google.firebase.storage.ktx.storage import java.io.ByteArrayOutputStream import java.text.SimpleDateFormat import java.util.Calendar import java.util.Locale class CommunityWriteFragment : Fragment() { private lateinit var binding: FragmentCommunityWriteBinding private lateinit var auth: FirebaseAuth override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { binding = DataBindingUtil.inflate(inflater, R.layout.fragment_community_write, container, false) val view = binding.root auth = FirebaseAuth.getInstance() binding.writeBtn.setOnClickListener { val title = binding.title.text.toString() val content = binding.content.text.toString() fetchContent(title, content) findNavController().navigate(R.id.action_communityWriteFragment_to_communityFragment) } binding.ImageBtn.setOnClickListener { val gallery = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI) startActivityForResult(gallery, 100) } return view } private fun fetchContent(title:String, content:String){ val userId = auth.currentUser?.uid ?: return val currentDateTime = Calendar.getInstance().time val dateFormat = SimpleDateFormat("yyyy.MM.dd HH:mm:ss", Locale.KOREA).format(currentDateTime) val key = ContentData.boardRef.push().key.toString() ContentData.boardRef .child(key) .setValue(ContentModel(title, content, userId, dateFormat)) Toast.makeText(requireContext(), "게시글 업로드 성공!", Toast.LENGTH_SHORT).show() ImageUpload(key) } private fun ImageUpload(key:String){ val storage = Firebase.storage val storageRef = storage.reference val mountainsRef = storageRef.child(key + ".png") val imageView = binding.imageArea // Get the data from an ImageView as bytes imageView.isDrawingCacheEnabled = true imageView.buildDrawingCache() val bitmap = (imageView.drawable as BitmapDrawable).bitmap val baos = ByteArrayOutputStream() bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos) val data = baos.toByteArray() var uploadTask = mountainsRef.putBytes(data) uploadTask.addOnFailureListener { // Handle unsuccessful uploads }.addOnSuccessListener { taskSnapshot -> // taskSnapshot.metadata contains file metadata such as size, content-type, etc. // ... } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if(resultCode == RESULT_OK && requestCode == 100){ val selectedImageUri = data?.data selectedImageUri?.let { uri -> binding.imageArea.setImageURI(uri) val layoutParams = binding.imageArea.layoutParams layoutParams.width = 300 // 원하는 너비 설정 layoutParams.height = 300 // 원하는 높이 설정 binding.imageArea.layoutParams = layoutParams } } } }

  • android
  • kotlin
  • firebase
류재열 댓글 1 좋아요 0 조회수 242

자식1, 2와 부모코루틴의 관계

미해결

2시간으로 끝내는 코루틴

본 강의를 모두 수강하였습니다! 코루틴에서 헷갈렸던 개념들을 알 수 있어서 좋았습니다! 본 코루틴 강의에서 자식과 부모 관계의 에러가 발생했을 때 에러 핸들링 하는 경우는 자식이 하나만 존재했을 때의 예시밖에 없어서 직접 2개를 가지고 실험을 해보았습니다! 먼저, 자식1이 취소가 됐을 때에는 취소예외가 발생했기 때문에 부모로 전파되지 않고, 그러므로 다른 자식2도 영향을 받지 않는다 라고 이해를 하고 있습니다! 하지만 자식1에서 취소가 아닌 예외가 발생했을 경우 부모로 전파되는 것으로 알고있고, 이 때 적절한 조치가 되지 않는다면 자식2까지 취소되는 것으로 알고있습니다! 따라서 다음과 같이 CoroutineExceptionHandler를 적용해보았습니다. fun main() = runBlocking { val handler = CoroutineExceptionHandler { _, exception -> println("Caught exception: $exception") } val parentJob = CoroutineScope(Dispatchers.Default).launch(handler) { val job1 = launch { println("Job 1 is running") throw RuntimeException("Error in Job 1") } val job2 = launch { println("Job 2 is running") delay(1000) println("Job 2 is completed") } job1.join() job2.join() } parentJob.join() println("Parent job is completed") } Job 1 is running Caught exception: java.lang.RuntimeException: Error in Job 1 Parent job is completed 결과는 자식1만 실행이되고, 거기서 Exception을 던졌는데, Job2는 취소되는것으로 보입니다..! 질문 1 ) 다음과 같이 try catch 로 전환하면 자식2의 취소가 발생하지 않는데, CoroutineExceptionHandler로는 자식2의 취소를 막을수는 없는 것일까요? val job1 = launch { println("Job 1 is running") try { throw RuntimeException("Error in Job 1") } catch (e: RuntimeException) { println("RuntimeException") } } 질문 2) 강의내용에서는 SupervisorJob() 을 사용하면 부모 코루틴으로 예외가 전파되지 않는다고 해주셨는데, 다음 결과에서는 부모코루틴에 해당되는 CoroutineExceptionHandler 가 실행되는 것으로 보입니다. 하지만, 질문1에서 걱정하는 자식2의 취소로 이어지지 않고 있습니다. 이는 부모코루틴으로 예외가 전파되는 상황일까요?? 만일 전파되는 상황이라면 왜 질문1과는 다르게 자식2의 취소로 이어지지 않는 것일까요? fun main() = runBlocking { val handler = CoroutineExceptionHandler { _, exception -> println("Caught exception: $exception") } val parentJob = CoroutineScope(Dispatchers.Default).launch(handler) { val job1 = launch(SupervisorJob()) { println("Job 1 is running") throw RuntimeException("Error in Job 1") } val job2 = launch { println("Job 2 is running") delay(1000) println("Job 2 is completed") } job1.join() job2.join() } parentJob.join() println("Parent job is completed") } Job 1 is running Job 2 is running Caught exception: java.lang.RuntimeException: Error in Job 1 Job 2 is completed Parent job is completed 자바 -> 코틀린 강의부터 시작해서 코루틴 강의까지 너무 감사하게 잘 보고있습니다! 감사드립니다 🙂

  • kotlin
  • coroutine
juneeeiii 댓글 1 좋아요 1 조회수 247

10 issues were found when checking AAR metadata:

미해결

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

파이어베이스 북마크 만들기 하면서 나오는 에러입니다. 1. Dependency 'androidx.credentials:credentials:1.2.0-rc01' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.0.0 is 33. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 34, then update this project to use compileSdk of at least 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 2. Dependency 'androidx.credentials:credentials-play-services-auth:1.2.0-rc01' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.0.0 is 33. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 34, then update this project to use compileSdk of at least 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 3. Dependency 'androidx.navigation:navigation-common:2.7.5' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.0.0 is 33. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 34, then update this project to use compileSdk of at least 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 4. Dependency 'androidx.navigation:navigation-common-ktx:2.7.5' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.0.0 is 33. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 34, then update this project to use compileSdk of at least 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 5. Dependency 'androidx.navigation:navigation-runtime:2.7.5' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.0.0 is 33. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 34, then update this project to use compileSdk of at least 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 6. Dependency 'androidx.navigation:navigation-ui:2.7.5' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.0.0 is 33. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 34, then update this project to use compileSdk of at least 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 7. Dependency 'androidx.navigation:navigation-runtime-ktx:2.7.5' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.0.0 is 33. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 34, then update this project to use compileSdk of at least 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 8. Dependency 'androidx.navigation:navigation-ui-ktx:2.7.5' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.0.0 is 33. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 34, then update this project to use compileSdk of at least 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 9. Dependency 'androidx.navigation:navigation-fragment-ktx:2.7.5' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.0.0 is 33. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 34, then update this project to use compileSdk of at least 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 10. Dependency 'androidx.navigation:navigation-fragment:2.7.5' requires libraries and applications that depend on it to compile against version 34 or later of the Android APIs. :app is currently compiled against android-33. Also, the maximum recommended compile SDK version for Android Gradle plugin 8.0.0 is 33. Recommended action: Update this project's version of the Android Gradle plugin to one that supports 34, then update this project to use compileSdk of at least 34. Note that updating a library or application's compileSdk (which allows newer APIs to be used) can be done separately from updating targetSdk (which opts the app in to new runtime behavior) and minSdk (which determines which devices the app can be installed on). 대체 어떤 부분을 봐야 할까요...

  • android
  • kotlin
  • firebase
cloverj0 댓글 2 좋아요 0 조회수 461

섹션 1 CardStackView의 Implement members 질문있습니다.

미해결

[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)

7:16 Implement members를 하려고 하는데 어떻게 해야되나요? 여담으로 아직 섹션 1 끝내지도 않았는데 옛날 버전이라 그런지 진도 나가기가 너무 힘들어요... 강의 최신 버전으로 업데이트는 안되나요? 프로젝트 생성부터 Gradle 추가까지 지금 7분밖에 못 들었는데 두시간을 넘게 찾고있는거 같습니다.

  • android
  • kotlin
  • firebase
xodnr9012 댓글 1 좋아요 0 조회수 260

소스코드 컴파일 오류

해결됨

입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기

컴파일시 오류가 발생합니다. 포트가 사용되고 있다고 하면서 웹서버 구동이 안되는데 포트를 바꿔봐도 오류가 발생합니다. 깃허브에서 소스코드는 받았습니다. 해결방법 좀 부탁드립니다. AI 답변이 달렸길래 추가 내용을 적습니다. 포트도 변경해봤고, 사용중인 포트가 없는것도 확인했습니다. 오류 코드는 다음과 같습니다. *************************** APPLICATION FAILED TO START *************************** Description: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that's listening on port 8080 or configure this application to listen on another port. Process finished with exit code 1

  • kotlin
  • mysql
  • docker
  • spring-boot
  • jpa
박경서 댓글 2 좋아요 0 조회수 238

인기 태그

인프런 TOP Writers

주간 인기글