묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티 OAuth2
keycloak 최신버전(23.0.1) 에서는 implict 설정할때에 redirect url 설정하는 부분이 사라졌습니다
그러다보니 화면대로 implict로 인증받을 때에 401 응답만 계속 받게 되고 토큰 조차 확인이 안되네요 혹시 다른 방법이 있을까요?
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
simple consumer 실행 시 무한 로그 찍힘
안녕하세요!강의를 열심히 따라가는 중입니다.simple consumer 개발 시 실행을 하면15:46:20.636 [main] DEBUG org.apache.kafka.clients.FetchSessionHandler - [Consumer clientId=consumer-test-group-1, groupId=test-group] Built incremental fetch (sessionId=349253680, epoch=15) for node 0. Added 0 partition(s), altered 0 partition(s), removed 0 partition(s) out of 1 partition(s) 15:46:20.636 [main] DEBUG org.apache.kafka.clients.consumer.internals.Fetcher - [Consumer clientId=consumer-test-group-1, groupId=test-group] Sending READ_UNCOMMITTED IncrementalFetchRequest(toSend=(), toForget=(), implied=(test-0)) to broker localhost:9092 (id: 0 rack: null) 15:46:21.150 [main] DEBUG org.apache.kafka.clients.FetchSessionHandler - [Consumer clientId=consumer-test-group-1, groupId=test-group] Node 0 sent an incremental fetch response with throttleTimeMs = 0 for session 349253680 with 0 response partition(s), 1 implied partition(s) 15:46:21.150 [main] DEBUG org.apache.kafka.clients.consumer.internals.Fetcher - [Consumer clientId=consumer-test-group-1, groupId=test-group] Added READ_UNCOMMITTED fetch request for partition test-0 at position FetchPosition{offset=0, offsetEpoch=Optional.empty, currentLeader=LeaderAndEpoch{leader=Optional[localhost:9092 (id: 0 rack: null)], epoch=0}} to node localhost:9092 (id: 0 rack: null) 15:46:21.150 [main] DEBUG org.apache.kafka.clients.FetchSessionHandler - [Consumer clientId=consumer-test-group-1, groupId=test-group] Built incremental fetch (sessionId=349253680, epoch=16) for node 0. Added 0 partition(s), altered 0 partition(s), removed 0 partition(s) out of 1 partition(s) 15:46:21.150 [main] DEBUG org.apache.kafka.clients.consumer.internals.Fetcher - [Consumer clientId=consumer-test-group-1, groupId=test-group] Sending READ_UNCOMMITTED IncrementalFetchRequest(toSend=(), toForget=(), implied=(test-0)) to broker localhost:9092 (id: 0 rack: null)로그가 이런식으로 무한대로 찍히고스프링부트의 카프카 라이브러리를 통해 확인을 하면이렇게 상태가 empty라고 뜨며디버깅을 해보면 레코드에 데이터가 들어오지 않는 것을 확인 할 수 있습니다. 혹시 어느부분을 설정을 해주지않아서 그럴까요..? kafka-console-producer 스크립트를 통해서 메시지를 생성하면 읽을수 있긴 합니다..16:00:43.464 [main] INFO wendy.consumer.simpleconsumer.SimpleConsumer - record: ConsumerRecord(topic = test, partition = 0, leaderEpoch = 0, offset = 1, CreateTime = 1703660442453, serialized key size = -1, serialized value size = 12, headers = RecordHeaders(headers = [], isReadOnly = false), key = null, value = is it work??)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 시간초과 질문드립니다.
http://boj.kr/e1c3caaa80904ade933b274903722b31 시간초과 해결을 못하겠어서 어디 부분이 틀린건지 잘 모르겠습니다 ㅠㅠ
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
페이징처리 관련 문의 드립니다
안녕하세요. 페이징 처리 관련하여 질문 사항 있어 요청 드립니다.현재 다른 분께서 페이징 처리 관련하여 질문하신 것에 강사님께서 댓글 달아주신 내용 보면서 페이징 처리 구현 중인데 잘 안되서 문의드립니다.구현한 사항은 순서대로 다음과 같습니다.1) OB_001.xfdl(게시판 메인화면) 그리드 하단에 div 만들고id : Div00url : cmm::paging_comm.xfdl기입한 후, 저장하였습니다 2) paging_comm.xfdl cmm 폴더내에 paging_comm.xfdl 파일 생성하여 페이징 처리 관련 컴포넌트 만들고 ID 부여하였습니다. 이후, 공유해주신 링크에 paging_comm.xfdl 페이징 처리 스크립트 전체 복사하여 붙여넣었습니다. 3) UiadapterBoardServiceImpl.java에 page_sample.jsp 스크립트를 java 코드로 변환하여 selectOrdLList 메서드에 코드 추가하였습니다.코드 아래와 같이 첨부드리니 확인 부탁드립니다.( HttpServletRequest request = ;, HttpServletResponse response = 부분에서request.getInputStream()과 response.getOutputStream();에서 "The local variable request may not have been initialized" 동일한 오류 납니다. )public ArrayList<Map<String, Object>> selectOrdList(Map<String, Object> ds_searchList) { UiadapterBoardMapper mapper = sqlSession.getMapper(UiadapterBoardMapper.class); try { String strCharset = "utf-8"; // PlatformRequest 생성 및 데이터 수신 HttpServletRequest request = (HttpServletRequest) request.getInputStream(); //The local variable request may not have been initialized 오류 발생 PlatformRequest platformRequest = new PlatformRequest(request.getInputStream(), PlatformType.CONTENT_TYPE_XML, strCharset); platformRequest.receiveData(); PlatformData inPD = platformRequest.getData(); VariableList inVariableList = inPD.getVariableList(); DataSetList inDataSetList = inPD.getDataSetList(); int iRowCnt = inVariableList.getInt("rowCount"); int iPageNo = inVariableList.getInt("pageNum"); // PlatformResponse 생성 HttpServletResponse response = (HttpServletResponse) response.getOutputStream(); // The local variable request may not have been initialized 오류 발생 PlatformResponse platformResponse = new PlatformResponse(response.getOutputStream(), PlatformType.CONTENT_TYPE_XML, strCharset); PlatformData outPD = new PlatformData(); VariableList outVariableList = new VariableList(); DataSetList outDataSetList = new DataSetList(); try { int iTotalRowCount = 1000; int nPageBlock = (int) Math.ceil((double) iTotalRowCount / iRowCnt); int nStartRow = iRowCnt * (iPageNo - 1); int nEndRow = nStartRow + 30; DataSet outDataSet = new DataSet("output"); outDataSet.addColumn("Column0", DataTypes.INT, 10); outDataSet.addColumn("Column1", DataTypes.STRING, 10); outDataSet.addColumn("Column2", DataTypes.STRING, 10); outDataSet.addColumn("Column3", DataTypes.STRING, 10); outDataSet.addColumn("Column4", DataTypes.STRING, 10); outDataSet.addColumn("Column5", DataTypes.STRING, 10); outDataSet.addColumn("Column6", DataTypes.STRING, 10); outDataSet.addColumn("Column7", DataTypes.STRING, 10); outDataSet.addColumn("Column8", DataTypes.STRING, 10); outDataSet.addColumn("Column9", DataTypes.STRING, 10); int nRow; for (int i = nStartRow; i < nEndRow; i++) { if (i + 1 > 1000) { break; } nRow = outDataSet.newRow(); outDataSet.set(nRow, "Column0", i + 1); outDataSet.set(nRow, "Column1", "test"); outDataSet.set(nRow, "Column2", "test"); outDataSet.set(nRow, "Column3", "test"); outDataSet.set(nRow, "Column4", "test"); outDataSet.set(nRow, "Column5", "test"); outDataSet.set(nRow, "Column6", "test"); outDataSet.set(nRow, "Column7", "test"); outDataSet.set(nRow, "Column8", "test"); outDataSet.set(nRow, "Column9", "test"); } outDataSetList.add(outDataSet); Variable pageBlockCount = new Variable("pageBlockCount"); pageBlockCount.set(nPageBlock); Variable totRowCount = new Variable("totRowCount"); totRowCount.set(iTotalRowCount); outVariableList.add("ErrorCode", 0); outVariableList.add("ErrorMsg", "succ"); outVariableList.add(pageBlockCount); outVariableList.add(totRowCount); } catch (Exception e) { outVariableList.add("ErrorCode", -1); outVariableList.add("ErrorMsg", e.toString()); } finally { outPD.setDataSetList(outDataSetList); outPD.setVariableList(outVariableList); OutputStream out = response.getOutputStream(); platformResponse.setData(outPD); platformResponse.sendData(); } } catch (Exception e) { } return mapper.selectOrdList(ds_searchList); } 4) 기존 주문 조회 쿼리를 안내해주신대로 한번 더 감싸서 수정하였습니다4) 기존 주문 조회 쿼리를 안내해주신대로 한번 더 감싸서 수정하였습니다 SELECT * FROM ( A.ORD_NO AS ORD_NO /*주문번호*/ , FN_CODE_NM('001',A.ORD_STAT_CD) AS ORD_STAT_NM /*주문상태*/ , A.CUST_CD AS CUST_NO /*고객번호*/ , B.CUST_NM AS CUST_NM /*고객명*/ , FN_CODE_NM('002',B.CUST_GBCD) AS CUST_GBCD_NM /*고객구분*/ , B.PHONE AS PHONE /*전화번호*/ , B.ADDR AS ADDR /*주소*/ , C.ITEM_NM AS ITEM_NM /*상품명*/ , A.REG_DT AS REG_DT /*주문일시*/ , 0 AS CHK /*체크박스*/ FROM TB_ORD A LEFT JOIN TB_CUST B ON A.CUST_CD = B.CUST_CD LEFT JOIN TB_ITEM C ON A.ITEM_CD = C.ITEM_CD WHERE 1=1 <if test="ORD_NO != null and ORD_NO !=''"> AND A.ORD_NO = #{ORD_NO} </if> <if test="CUST_NM != null and CUST_NM !=''"> AND B.CUST_NM = #{CUST_NM} </if> <if test="COMP_YN == 'true'"> AND B.CUST_GBCD = 'C' </if> <if test="ORD_STAT_CD != null and ORD_STAT_CD !=''"> AND A.ORD_STAT_CD = #{ORD_STAT_CD} </if> <if test="CUST_GBCD != null and CUST_GBCD !=''"> AND B.CUST_GBCD = #{CUST_GBCD} </if>) A <choose> <when test = "pageNum ==1 "> WHERE <![CDATA[A.RNUM <= #{rowCount}]]> </when> <otherwise> WHERE <![CDATA[A.RNUM > (#{pageNum}-1)*#{rowCount} AND A.RNUM <= #{pageNum}*#{rowCount}]]> </otherwise> </choose> 5) 결과상단과 같은 과정을 통해 구현한 후, 넥사크로에서 런치하여 확인해보니 메인화면 자체가 뜨지 않습니다.혹시 paging_comm.xfdl의 스크립트와 page_sample.jsp 자바 형식으로 변환하여 UiadapterBoardServiceImpl에 구현한 코드 공유해주실 수 있으실까요?그리고 OB_001.xfdl에 페이징 처리 div 만들고 "id : Div00"와 "url : cmm::paging_comm.xfdl" 부여한 후, cmm 폴더에 paging_comm.xfdl 형성하여 페이징 처리 관련 컴포넌트 그리고 id 부여하여 스크립트 복붙하는게 맞는지 확인 부탁드립니다.감사합니다.
-
해결됨[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
데이터 불균형
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 데이터 불균형 수업 관련하여 질문드립니다. 수업중에 알려주신 예시는 classification 문제에서의 데이터 불균형 해결 방법을 알려주셨는데요,혹시 regression 문제에서도 데이터 불균형 해결이 필요한것이 맞을까요? (예를들어 신장(키) 학습 시 평균 키를 가지는 샘플이 많은 경우) regression 문제에서 데이터 불균형이 있을 경우, 어떤 방법으로 해결할 수 있을지 궁금합니다!감사합니다.
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
섹션10 RawBuffer의 _result버퍼 생성시 질문
안녕하세요.섹션10 RawBuffer의 _result버퍼 생성시 BUFFER_DESC 설정 부분 질문 드립니다."B-14)+Viewport" 샘플 코드를 참조하였습니다. RawBuffer.cpp (줄: 120) 을 보면 아래와 같이 작성해주셨는데요void RawBuffer::CreateResult() { D3D11_BUFFER_DESC desc; _output->GetDesc(&desc); desc.Usage = D3D11_USAGE_STAGING; desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ; desc.BindFlags = D3D11_USAGE_DEFAULT; // UAV가 연결되려면, USAGE는 DEFAULT여야 함. desc.MiscFlags = 0; CHECK(DEVICE->CreateBuffer(&desc, nullptr, _result.GetAddressOf())); }desc.Usage 에 USAGE_STAGING 을 주셨는데, 아래 BindFlags 옆 주석으로는 "Usage 는 DEFAULT 여야 한다"고 적어주셔서 혼란스럽습니다. 그리고 BindFlags 에 USAGE_DEFAULT 를 주셨는데, 의도 된 값인지, 의도한 값이 아니라면 어떤 Flags 를 주어야 하는지 궁금합니다.감사합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
혹시 예외가 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution(board, moves) { let answer = 0; //count let stack = []; //바구니 //크레인 for문 돌리기 for (const x of moves) { //크레인 위치, index에 맞게 설정 let idx = x - 1; //borad 체크 for (let i = 0; i < board.length; i++) { //인형 const v = board[i][idx]; //0 & null이면 그냥 넘기기 > 다음값을 넣어야 함 //null = 이미 바구니에 들어간 값 if (v !== 0 && v !== null) { //이미 바구니에 있는 경우 if (v === stack.at(-1)) { let pop = stack.pop(); answer += 2; } else stack.push(v); board[i].splice(idx, 1, null); break } } } return answer; } let a = [[0, 0, 0, 0, 0], [0, 0, 1, 0, 3], [0, 2, 5, 0, 1], [4, 2, 4, 4, 2], [3, 5, 1, 3, 1]]; let b = [1, 5, 3, 5, 1, 2, 1, 4]; console.log(solution(a, b));
-
미해결김영한의 실전 자바 - 기본편
자바 기초 이후 스프링
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 자바 입문부터 기초까지 전부 수강을 하였는데 이번 방학에 백엔드 커리를 타고 싶어서 중급, 고급편 나오기 전에 먼저 백엔드커리를 듣다가 중급,고급 나왔을 때 다시 와도되나요? 아니면 듣기전에 미리 선행해야하는 내용이 있을까요?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
src 폴더구조
회원가입 페이지 ui 생성하기 파트 강의에서기존에 src폴더를 사용안하는걸로 next를 설치했는데, 갑자기 src폴더구조가 있어서 당황했습니다. 확인해주시면 감사하겠습니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
getLong 함수 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Oracle DB를 연동해서 강의 내용을 따라가고있는데, 저기 getLong부분에서 계속해서 오류가 발생합니다 ㅠㅠ오류 내용은 위와 같습니다... 실제DB에 값은 잘저장됩니다.Member라는 클래스 대신 User라고 이름을바꿔 사용하고있고, 사진과 같이 멤머변수도 두개 추가하였습니다.(아래는 getter/setter 코드입니다.)오라클 테이블은 다음과 같이 사용하고있습니다..
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
Guard 이론 까지 학습 후 질문
안녕하세요.1강~가드이론까지만 학습후 질문드립니다. (파이프강의에서도 안나왔고 뒤에 강의에 왠지 안나올거같아서) 클라이언트 요청이 컨트롤러까지 가면서미들 -> 가드 -> 인터셉터 -> 파이프의 단계를 거친다고 알려주셨는데nest 에서 이렇게 레이어를 나누어둔 이유, 순서가 이렇게된 이유가 있을까요?혹은 사실 하나의 레이어에서 동작하는건데 이해를 돕기위에 이런 단계를 거친다고 개념적으로만 나누어 둔것일까요?
-
미해결
백엔드 취업에 도움될만한 기술(spring, mysql 제외)
벡앤드 java Spring을 다루는 신입 취준생인데요,인프런(김영한)의 spring, jpa 까지 수강했는데이것외에 취업에 도움될만한 기술들을 배운다면먼저 배워야할 기술들이 뭐가있을지 궁금합니다!
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
오류가 발생하였는데 왜 일까요...?
java.lang.NumberFormatException: null java.lang.Integer.parseInt(Integer.java:542) java.lang.Integer.parseInt(Integer.java:615) kr.bit.controller.MemberInsertController.service(MemberInsertController.java:19) javax.servlet.http.HttpServlet.service(HttpServlet.java:779) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) @WebServlet("/memberInsert.do")public class MemberInsertController extends HttpServlet { protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1. 파라미터 수집(VO) String id=request.getParameter("id"); String pass=request.getParameter("pass"); String name=request.getParameter("name"); int age=Integer.parseInt(request.getParameter("age")); String email=request.getParameter("email"); String phone=request.getParameter("phone"); //MemberVO vo=new MemberVO(id, pass, name, age, email, phone); MemberVO vo=new MemberVO(); vo.setId(id); vo.setPass(pass); vo.setName(name); vo.setAge(age); vo.setEmail(email); vo.setPhone(phone); System.out.println(vo.toString());String형을 int형으로 변환해줬는데도 age쪽에서 오류가 발생하고 아랫부분들은 service메서드쪽에 왜 발생한 것인지 모르겠어요.. 답변 부탁드립니다
-
미해결실시간 트렌드 홈페이지 개발(파이썬 크롤링 + Flask)
[셀레니움 사용해보기]웹 드라이버 경로관련
크롬드라이버 버전(120.0.6099.130(공식 빌드) (64비트)에 맞게 웹드라이버를 다운로드(https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/120.0.6099.109/win64/chromedriver-win64.zip) 해서, app.py 경로에 가져왔고요. 강의 내용과 동일하게 코드를 입력했으나 경로를 찾지 못하는 듯 합니다. 셀레니움이 20년에 비해 많이 지나서 최신 버전이라 강의내용대로 하면 구현이 안되는 걸까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ModelAttribute와 생성자
안녕하세요.@ModelAttribute 바인딩에 대한 질문 드립니다.바인딩 방식으로 제가 생각한 것은필드를 인자로 받는 생성자가 있다면 해당 생성자로 값을 주입한다.없다면 기본 생성자와 Setter를 이용해 값을 할당한다.이렇게 생각했습니다. @Getter @Setter public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; } }이렇게 해놓은 상태에서 Controller addItemV2 메소드를 실행할 경우,Cannot resolve parameter names for constructor public hello.itemservice.domain.item.Item(java.lang.String,java.lang.Integer,java.lang.Integer)위와 같은 오류가 발생합니다. 기본 생성자를 추가했을 경우에는 정상 작동하구요.1번의 방식으로 실행된다면 오류없이 실행되어야 한다고 생각했는데 바인딩 방식을 잘 못 이해하고 있는 것인지 궁금합니다.
-
해결됨[C#/.NET 8.0]어서와, Blazor Server는 처음이지?
BackUp DB > Failed
PostgreSQL 여러번 지우고 재설치 하여 backup DB restore 결과가 Failed 나오네요 문제가 뭘까요?
-
미해결
[무료 MS RPA를 활용한 업무 자동화] Power Automate Desktop Essentials 교재 여부 문의
[무료 MS RPA를 활용한 업무 자동화] Power Automate Desktop Essentials 강의를 듣고 싶은데 교재는 따로 나오는 건지 궁금해요
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
orderProvider 관련 질문이 있습니다.
선생님 안녕하세요. 완강 후 코드 뜯어보면서 복습 중입니다:) 주문 탭 클릭 시 곧바로 주문한 최신 리스트를 볼 수 있게하는 방법을 고민하다가 orderProvider를 들여다 보았는데요.곰곰히 생각해보니 postOrder만 해서는 orderProvider(orderStateNotifier)의 상태가 업데이트가 안되는 거 아닌가 하는 생각이 들었습니다. 그래서 forceRefetch하는 것처럼, postOrder 함수 하단에 true 반환하기 전에 paginate()를 실행하여 주문 탭 클릭시 곧바로 최신 리스트 뜨도록 했습니다.Future<bool> postOrder() async{ try{ final uuid = Uuid(); final id = uuid.v4(); final state = ref.read(basketProvider); final resp = await repository.postOrder( body: PostOrderBody( id: id, products: state.map((e) => PostOrderBodyProduct(productId: e.product.id, count: e.count)).toList(), totalPrice: state.fold(0, (pre, next) => pre + (next.product.price * next.count)), createdAt: DateTime.now().toString())); paginate(); return true; } catch(e){ return false; } }이렇게 하는 게 옳은 방법일까요? 그리고 굳이 forceRefetch를 통해서만 주문탭이 업데이트되게 하신 이유가 있을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
User이 계속 null으로 들어와서 오류가 나네요
강의내용그대로 입력하였는데 왜그럴까요 ㅠㅠ서비스부분public void loan(BookLoanReq req) { Book book = bookRepstory.findByName(req.getBookName()).orElseThrow(IllegalArgumentException::new); if (userLoanHistoryRep.existsByBookNameAndIsReturn(book.getName(), false)){ throw new IllegalArgumentException("대출중인 책입니다."); } User user=userRepstrory.findByName(req.getUserName()).orElseThrow(IllegalArgumentException::new); userLoanHistoryRep.save( new UserLoanHistory(user.getId(),book.getName(),false)); }public interface UserRepstrory extends JpaRepository<User,Long> { Optional<User> findByName(String name); }package com.group.libraryapp.domain.user; import javax.persistence.*; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; public User(String name,Integer age) { if(name==null||name.isBlank()){ throw new IllegalArgumentException(String.format("널값")); } this.name = name; this.age = age; } @Column(name="age",length = 20) private Integer age; @Column(name="name",nullable = false) private String name; protected User(){ } public Long getId() { return id; } public Integer getAge() { return age; } public String getName() { return name; } public void update(String name){ this.name=name; } public User(Long id, Integer age, String name) { this.id = id; this.age = age; this.name = name; } } 마지막으로 오류코드올려드릴게요 ava.lang.IllegalArgumentException: null at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] at com.group.libraryapp.service.book.BookService.loan(BookService.java:39) ~[main/:na] at com.group.libraryapp.controller.book.BookController.loan(BookController.java:29) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
-
해결됨독하게 시작하는 C 프로그래밍
완강 후 실습 관련 질문
안녕하세요! 항상 좋은 강의 만들어 주셔서 감사합니다. 이번에 독하게 시작하는 C를 완강하고 자료구조를 듣는 중입니다. 그런데 C언어를 완강해도 능숙하게 다룰 수 있다는 느낌이 들지 않아서 C 코딩 예제를 플어보고 싶은데 혹시 추천해주실 만한 예제 사이트나 교재가 있으신가요?