실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요 !! 자바 개발자가 되기 위해 학습하다가 코틀린을 새로 배우는 과정에서 이 강의를 듣게 된 학생입니다!! 먼저 좋은 강의 제공해주셔서 정말 감사합니다!! 멀티 모듈에서 Repository를 각각 api 모듈에 맞게 구현하고, Spring Data JPA Repository를 코어 모듈에 둔다고 하셨는데. 이런 경우에는 api 모듈에서 core와 관련된 그래들 설정(Querydsl or db 등)이 들어가겠구나 라는 생각이 들었습니다. 멀티 모듈의 장점 중 하나가 모듈의 역할에 맞게 의존성을 관리하는 것도 있다고 생각하는데, 이런 경우 이 장점을 잃지는 않을까 우려됩니다. 그래서 저는 멀티모듈을 사용할 때, core 모듈에 Repository와 관련한 코드를 놓고, 사용하는 모듈에서 인터페이스, 혹은 Repository를 참조하는 구현체를 만들어 해당 클래스만 사용하게끔 유지하는 게 좋지 않을까 생각하는 편인데요. 혹시 강사님의 의견은 어떠신지 궁금합니다!! (적고 보니 강의 내용과는 조금 다른 질문인 것 같아 조금 죄송스럽네요 ㅠㅠ)
안녕하세요 선생님, [초급편] 안드로이드 커뮤니티 앱 만들기를 완강한 수강생입니다. 게시글 수정/삭제 파트와 아래 두 질문을 참고해가며 현재 댓글 수정/삭제를 구현하기 위해 애쓰는 중인데, 잘 되지 않아 질문드립니다. https://www.inflearn.com/questions/411607 https://www.inflearn.com/questions/619233 게시글 설정과 마찬가지로 내가 쓴 댓글에만 보이는 설정 버튼을 클릭하면 다이얼로그를 통해 수정/삭제로 진입하게끔 만드는 데 까지는 성공했습니다. 첫 번째 질문입니다. 우선 수정 기능의 경우 아래 ????? 부분에 어떤 값을 넣어야 할지 감이 안 옵니다. BoardReadActivity.kt // 댓글 클릭하면 -> 대화상자 뜸 // 파이어베이스의 댓글 키를 기반으로 댓글 데이터(=본문+uid+시간) 받아옴 cLV.setOnItemClickListener { parent, view, position, id -> // 명시적 인텐트 -> 다른 액티비티 호출 val intent = Intent(baseContext, CommentEditActivity::class.java) // 댓글수정 액티비티로 댓글의 키 값 전달 intent.putExtra("?????", ?????) // 댓글수정 액티비티 시작 startActivity(intent) } "key", key를 넣으면 댓글이 아닌 게시글의 키 값이 되어 댓글이 수정되지 않고, "commentKey", commentKey를 넣으면 앱이 죽습니다. 게시판 프래그먼트에서 리스트뷰 아이템을 클릭하면 게시글로 이동하듯 댓글 리스트뷰 아이템을 클릭하면 수정 액티비티로 넘어가는 것도 시도해봤는데요, 빨간색이 게시글의 키, 파란색이 댓글의 키일 때 다행히 댓글의 키는 잘 받아오는데 댓글의 키'만' 알다보니 파이어베이스로부터 기존 댓글 내용을 받아올 수도, 수정한 내용을 업데이트 할 수도 없습니다. BoardReadActivity.kt // 댓글 클릭하면 -> 대화상자 뜸 // 파이어베이스의 댓글 키를 기반으로 댓글 데이터(=본문+uid+시간) 받아옴 cLV.setOnItemClickListener { parent, view, position, id -> // 명시적 인텐트 -> 다른 액티비티 호출 val intent = Intent(baseContext, CommentEditActivity::class.java) // 댓글수정 액티비티로 댓글의 키 값 전달 intent.putExtra("commentKey", commentKeyList[position]) // 댓글수정 액티비티 시작 startActivity(intent) } 다이얼로그에서 댓글수정 액티비티로 넘길 때와 마찬가지로 ????? 부분에 어떤 값을 넣어야 할지 모르겠습니다. CommentEditActivity.kt // 댓글을 수정 private fun editCommentData(commentKey: String) { // 수정한 값으로 업데이트 FBRef.commentRef.?????.child(commentKey).setValue(CommentModel( // 제목 및 본문은 직접 수정한 내용으로, binding.commentMainArea.text.toString(), // uid와 시간은 자동 설정됨 FBAuth.getUid(), FBAuth.getTime() )) // 수정 확인 메시지 Toast.makeText(this, "댓글이 수정되었습니다", Toast.LENGTH_SHORT).show() // 댓글수정 액티비티 종료 finish() } 혼자 해결하려니 너무 맨 땅에 헤딩이라ㅠㅠ 질문 올립니다.
강의를 보고 따라서 진행을 했더니 빨간색으로 심각이 나오네요... 그래서 로그에 들어가서 최근 100개의 로그를 보니까 오류 원인으로 추정되는 부분이 있었습니다. 2022/08/28 17:41:22.790598 [INFO] save docker tag command: docker tag 0370c9c70821 current_backend:latest 2022/08/28 17:41:22.790604 [INFO] save docker tag command: docker tag d942a3872fb6 current_nginx:latest 2022/08/28 17:41:22.790609 [INFO] save docker tag command: docker tag 75708d3d8c71 current_frontend:latest 2022/08/28 17:41:22.790614 [INFO] save docker tag command: docker tag 2b7d6430f78d nginx:latest 2022/08/28 17:41:22.790618 [INFO] save docker tag command: docker tag 5dcd1f6157bd node:16-alpine 2022/08/28 17:41:22.790631 [INFO] Running command /bin/sh -c docker rm `docker ps -aq` 2022/08/28 17:41:22.942159 [INFO] Error response from daemon: You cannot remove a running container 6a0c86ea39e968de428d3d30608a610c32c9250c12390b835b82e2367f1e5329. Stop the container before attempting removal or force remove Error response from daemon: You cannot remove a running container 9c2ffeccce2f1e0b49d4f50e7c5de38e7084d077faf3f19123151adc30de6dcb. Stop the container before attempting removal or force remove Error response from daemon: You cannot remove a running container d4507eceb5d8d6384be032723cbcae38f1a427f9b261cef64c78199ed24595a2. Stop the container before attempting removal or force remove 2022/08/28 17:41:22.942188 [INFO] Running command /bin/sh -c docker rmi `docker images -aq` 2022/08/28 17:41:23.115076 [INFO] Error response from daemon: conflict: unable to delete 968794bfee27 (cannot be forced) - image has dependent child images Error response from daemon: conflict: unable to delete 60a98349297b (cannot be forced) - image has dependent child images Error response from daemon: conflict: unable to delete 0370c9c70821 (cannot be forced) - image is being used by running container d4507eceb5d8 Error response from daemon: conflict: unable to delete 8ad18f4e6824 (cannot be forced) - image has dependent child images Error response from daemon: conflict: unable to delete d942a3872fb6 (cannot be forced) - image is being used by running container 6a0c86ea39e9 Error response from daemon: conflict: unable to delete 69041b2058c4 (cannot be forced) - image has dependent child images Error response from daemon: conflict: unable to delete 75708d3d8c71 (cannot be forced) - image is being used by running container 9c2ffeccce2f Error response from daemon: conflict: unable to delete f9fde158cd3b (cannot be forced) - image has dependent child images Error response from daemon: conflict: unable to delete b91481250af7 (cannot be forced) - image has dependent child images Error response from daemon: conflict: unable to delete a5f559502b12 (cannot be forced) - image has dependent child images Error response from daemon: conflict: unable to delete 2b7d6430f78d (cannot be forced) - image has dependent child images Error response from daemon: conflict: unable to delete 5dcd1f6157bd (cannot be forced) - image has dependent child images 이렇게 나오더라구요... 뭐가 원인인지 뭘 해결해야 하는건지 혹시 알려주실 수 있으신가요??ㅠㅠ
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안드로이드에서는 잘 되는데 아이오에스 시뮬레이터 버젼 ios 15.5에서 에러가 나면서 안됩니다. 구글맵과 충돌인거 같은데..ㅠㅠ 맥북 에어 m2 사용중입니다. Error (Xcode): Building for iOS Simulator, but linking in object file built for iOS, file '/Users/ddur/Documents/flutterDev/mapgogo/ios/Pods/GoogleMaps/Maps/Frameworks/GoogleMaps.framework/GoogleMaps' for architecture arm64 Could not build the application for the simulator. Error launching application on iPhone SE (3rd generation).
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
Book.name 에 @Column(nullable = false) 을 붙였으니 UserLoanHistory.bookName 도 논리적으로 null이 될 수 없는데요. 그래서 bookName 에는 애노테이션을 붙이지 않으신 건가요? 애노테이션을 붙여서 DDL에 물리적으로 not null을 설정해야 하는 게 아닌가 싶어 질문 드립니다.
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
많은 개린이분들이 저처럼 시간낭비하지말라고 글을 남깁니다.. 거의 다잉메세지입니다... 강사님이 nginx.conf파일을 수정하시는데요 실제로 우리가 내려받는 파일의 09폴더에 있는 nginx.conf.http파일에는 고쳐야할 부분이 총 세가지 입니다. (영상과는 다르게 되어 있는 부분들도 있습니다. 그것들까지 포함해서 총 세개!) 도메인(총 6개 였습니다.) : funcoding.xyz >> 각자 도메인으로 수정 맨 아래 server블락(443포트 https관련) 위아래로 있는 주석(*/, /*)삭제 역시 맨 아래 server블락에 servername아래에 있는 네줄의 코드 앞에 있는 #. 역시 주석관련된 건데, #를 모두 삭제 다시 되돌아보면 부끄러울정도로 간단한 것들이였는데, nginx나 docker가 처음이다보니 허둥대다가 몇일을 날렸는지 모르겠네요
안녕하세요 개념이 정립이 잘 안되서 그러는데 결국 paramMap이라는게 http://localhost:8080/request-param?username=hello&age=20 이걸 예로 들면 username=hello, age = 20이걸 paramMap에 저장한 다음 꺼내는 건가요?
#include <iostream> using namespace std; class Some { private: static int val_; int val2_=2; public: static int getVal() { return val_; //return val2_; } int temp() { return this->val_+this->val2_; } }; int Some::val_ = 1; int main() { Some s1; int (Some:: * ptr)() = &Some::temp; cout << ptr << endl; cout << (s1.*ptr)() << endl; return 0; } 안녕하세요. 위의 코드를 실행시켰을 때 1 3 이라는 결과가 나왔는데요, ptr을 출력했을 때 1이 나왔습니다. 왜 ptr출력시 1이란 값이 나오는 걸까요? ptr만 출력했기 때문에 혹시 주소가 나올까 생각했는데 값이 나왔고, 또 왜 1이란 값이 나왔는지 잘 모르겠습니다.
let list=[1,2,3,4] let a=list[Symbol.iterator]() a.next () 라고 하면 문제없이 실행되는데 let list=[1,2,3,4] let a=list[Symbol.iterator] a().next() 라고 하면 왜 에러가 날까요 anonymous 에러면 브라우저에서 인식하는 방식이나 이런 문제일까요 아 혹시 얕은 복사 문제일까요? VM2199:1 Uncaught TypeError: Cannot convert undefined or null to object at <anonymous>:1:1