묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 시작은 프리캠프
CSS정렬 - 회원가입 과제 코드 공유
완벽하지는 않지만, 이미 올려주셨던 분들의 코드까지 참조해서 좀 더 나은 버전으로 만들어 봤습니다.100% 완전하지는 않은 코드지만 그래도 가시적으로 보기에는 더 나은 것 같아서 코드 공유 드립니다.<!-- test.html --> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>회원가입</title> <link rel="stylesheet" href="./test.css"> </head> <body> <div> <div class="container"> <h2>회원가입을 위해<br>정보를 입력해주세요.</h2> <!-- input도 inline요소중에 하나다. --> <!-- inline이란 하나의 태그가 레코드(가로)방향을 모두 차지하는게 아니라, 자신이 속한 영역만 가지게 되는 것이다. --> <label for="email">* 이메일<br> <input type="text" id="email"><br><br> </label> <label for="name">* 이름<br> <input type="text" id="name"><br><br> </label> <label for="password1">* 비밀번호<br> <input class="pw" id="password1" type="password"><br><br> </label> <label for="password2">* 비밀번호 확인<br> <input class="pw" id="password2" type="password"><br><br> </label> <!-- 선택 영역 두번째 --> <!-- name을 부여함으로 인하여 radio의 선택 가능한 것들을 하나의 그룹으로 묶어준다. --> <form> <input type="radio" class="radio" name="gender">  여성 <input type="radio" class="radio" name="gender">  남성 </form> <br><br> <form> <input type="checkbox" class="agree">  이용약관 개인정보 수집 및 정보이용에 동의합니다. </form> <hr> <hr> <button>가입하기</button> <!-- 기능자체는 input의 타입을 button으로 하면 사용은 가능하지만, 굳이 button 태그를 사용하는 이유는 --> <!-- 커스터마이징이 button 태그가 더 용이하기 때문이다. --> <!-- <input type="button" value="가입하기"> --> </div> </div> </body> </html> /* test.css */ div { /* 바로 상위 태그인 body를 기준으로 맞춰주게끔 */ /* position의 absolute라는것이, 설정하게 되면 바로 직계부모 태그의 영향아래 놓이게 된다는 말이다. 더불어서 네모를 영역으로 봤을때 왼쪽 상단 꼭지점을 기준으로 움직이게 된다. */ position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 670px; height: 960px; background: #FFFFFF; border: 1px solid #AACDFF; box-shadow: 7px 7px 39px rgba(0, 104, 255, 0.25); border-radius: 20px; /* 이것의 의미는 타겟팅된 영역에 대해 지정된 만큼 움직여주는 거라고 한다. */ /* justify-content: space-evenly; align-content: column; */ margin: 0px; padding: 100px; box-sizing: border-box; display: flex; flex-direction: column; flex-wrap: nowrap; } h2 { width: 466px; height: 94px; left: 725px; top: 132px; font-family: 'Noto Sans CJK KR'; font-style: normal; font-weight: 700; font-size: 32px; line-height: 47px; color: #0068FF; justify-content: space-evenly; } button { width: 400px; height: 50px; left: 725px; top: 875px; background-color: #FFFFFF; color: royalblue; border-radius: 8px; border: #0068FF solid 1px; } input { padding: 0px; border: none; border-bottom: 1px solid #CFCFCF; width: 466px; height: 30px; } label { color: lightgrey; } .radio { align-items: center; font-size: 20pt; width: 15px; height: 15px; } /* div.container { justify-content: space-between; flex-direction: row; align-items: center; } */ input.agree { align-items: center; font-size: 20pt; width: 15px; height: 15px; }
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
routes/subs.ts 의 topSubs 쿼리빌더에서 sql 오류가 자꾸 발생합니다.
routes/subs.ts 의 topSubs 쿼리빌더에서 sql 오류가 자꾸 발생합니다.수고 많으십니다수업 잘 듣고 있습니다다름이 아니라const topSubs = async (req: Request, res: Response) => { try { const imageUrlExp = `COALESCE(s."imageUrn",'https://www.gravatar.com/avatar?d=mp&f=y')`; const subs = await AppDataSource.createQueryBuilder() .select( `s.title, s.name, ${imageUrlExp} as "imageUrl", count(p.id) as "postCount"` ) .from(Sub, "s") .leftJoin(Post, "p", `s.name = p."subName`) .groupBy('s.title, s.name, "imageUrl"') .orderBy(`"postCount"`, "DESC") .limit(5) .execute(); } catch (error) { console.log(error); return res.status(500).json({ error: "문제가 발생하였습니다" }); } };위 소스를 실행하기 위해http://localhost:4000/api/subs/sub/topSubs를 실행하면{"error":"문제가 발생하였습니다"}같은 에러가 발생하고세부로그를 보면QueryFailedError: 구문 오류, "s" 부근 at PostgresQueryRunner.query (D:\webwork\nextwork\raddit-clone-test-01\server\src\driver\postgres\PostgresQueryRunner.ts:299:19) at processTicksAndRejections (node:internal/process/task_queues:95:5) at async SelectQueryBuilder.execute (D:\webwork\nextwork\raddit-clone-test-01\server\src\query-builder\QueryBuilder.ts:523:20) { query: `SELECT "s"."title", "s"."name", COALESCE(s."imageUrn",'https://www.gravatar.com/avatar?d=mp&f=y') as "imageUrl", count("p"."id") as "postCount" FROM "subs" "s" LEFT JOIN "posts" "p" ON "s"."name" = p."subName GROUP BY "s"."title", "s"."name", "imageUrl" ORDER BY "postCount" DESC LIMIT 5`, parameters: [], driverError: error: 구문 오류, "s" 부근 at Parser.parseErrorMessage (D:\webwork\nextwork\raddit-clone-test-01\server\node_modules\pg-protocol\src\parser.ts:369:69) at Parser.handlePacket (D:\webwork\nextwork\raddit-clone-test-01\server\node_modules\pg-protocol\src\parser.ts:188:21) at Parser.parse (D:\webwork\nextwork\raddit-clone-test-01\server\node_modules\pg-protocol\src\parser.ts:103:30) at Socket.<anonymous> (D:\webwork\nextwork\raddit-clone-test-01\server\node_modules\pg-protocol\src\index.ts:7:48) at Socket.emit (node:events:513:28) at Socket.emit (node:domain:489:12) at addChunk (node:internal/streams/readable:324:12) at readableAddChunk (node:internal/streams/readable:297:9) at Socket.Readable.push (node:internal/streams/readable:234:10) at TCP.onStreamRead (node:internal/stream_base_commons:190:23) { length: 90, severity: '오류', code: '42601', detail: undefined, hint: undefined, position: '220', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'scan.l', line: '1192', routine: 'scanner_yyerror' }, length: 90, severity: '오류', code: '42601', detail: undefined, hint: undefined, position: '220', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'scan.l', line: '1192', routine: 'scanner_yyerror' } GET /api/subs/sub/topSubs 500 35.980 ms - 43 QueryFailedError: 구문 오류, "s" 부근 at PostgresQueryRunner.query (D:\webwork\nextwork\raddit-clone-test-01\server\src\driver\postgres\PostgresQueryRunner.ts:299:19) at processTicksAndRejections (node:internal/process/task_queues:95:5) at async SelectQueryBuilder.execute (D:\webwork\nextwork\raddit-clone-test-01\server\src\query-builder\QueryBuilder.ts:523:20) { query: `SELECT "s"."title", "s"."name", COALESCE(s."imageUrn",'https://www.gravatar.com/avatar?d=mp&f=y') as "imageUrl", count("p"."id") as "postCount" FROM "subs" "s" LEFT JOIN "posts" "p" ON "s"."name" = p."subName GROUP BY "s"."title", "s"."name", "imageUrl" ORDER BY "postCount" DESC LIMIT 5`, parameters: [], driverError: error: 구문 오류, "s" 부근 at Parser.parseErrorMessage (D:\webwork\nextwork\raddit-clone-test-01\server\node_modules\pg-protocol\src\parser.ts:369:69) at Parser.handlePacket (D:\webwork\nextwork\raddit-clone-test-01\server\node_modules\pg-protocol\src\parser.ts:188:21) at Parser.parse (D:\webwork\nextwork\raddit-clone-test-01\server\node_modules\pg-protocol\src\parser.ts:103:30) at Socket.<anonymous> (D:\webwork\nextwork\raddit-clone-test-01\server\node_modules\pg-protocol\src\index.ts:7:48) at Socket.emit (node:events:513:28) at Socket.emit (node:domain:489:12) at addChunk (node:internal/streams/readable:324:12) at readableAddChunk (node:internal/streams/readable:297:9) at Socket.Readable.push (node:internal/streams/readable:234:10) at TCP.onStreamRead (node:internal/stream_base_commons:190:23) { length: 90, severity: '오류', code: '42601', detail: undefined, hint: undefined, position: '220', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'scan.l', line: '1192', routine: 'scanner_yyerror' }, length: 90, severity: '오류', code: '42601', detail: undefined, hint: undefined, position: '220', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'scan.l', line: '1192', routine: 'scanner_yyerror' } GET /api/subs/sub/topSubs 500 6.997 ms - 43와 같습니다.아무리 봐도 에러 원인을 찾지 못해 이렇게 글을 올립니다해결방법을 알려주셨으면 합니다.db는 postgresql 15.1 입니다감사합니다
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
시작페이지 에러
시작 페이지 404에러가 납니다. index.html을 추가했는데 나는 상황입니다. 스프링 MVC 기본기능 - 프로젝트 생성 부분의 내용입니다. 주신 공식 문서 링크도 확인했는데 어떻게 해결해야할지 잘 모르겠네요.
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
socket.js 에서 referer로부터 roomId를 가져올 때
안녕하세요! 조현영님! 강의 감사히 잘 보고 있습니다. 조현영님 강의를 듣고 시퀄라이즈 말고 직접 쿼리를 이용해서 회원 간의 채팅을 구현해보고 있는데요.socket.js 에서 socket.request.headers.referer로부터 roomId를 가져오려고 합니다. 분명 강의에서도 그렇게 해서 제가 하고 있는 코드에서도 동일하게 사용했는데요,강의 코드에서는 referer가 잘 추출이 되는데 제가 작성한 것에는 referer가 undefined로만 뜹니다.referer로부터 roomId가 추출이 안되서 일단 숫자 1로 고정해놓고 실행시키면 채팅도 서로 잘 왔다갔다 하고 db에 저장도 잘 됩니다. 진짜 딱 referer로부터 roomId만 추출하면 되는데 이게 안됩니다.조현영님 강의 코드에서 console.log(socket.request.headers)를 하면 이렇게 referer가 잘 뜨는데제가 작성한 코드에서는 이런 식으로 referer 항목이 아예 없습니다. 이 둘의 차이라고 하면 connection 부분이 위에는 keep-alive이고 제꺼에는 upgrade 인데 이것이 문제인 걸까요?? 소켓을 이용한 방식에는 차이가 없고 mysql을 연결한 방식에만 차이가 있습니다(시퀄라이즈를 사용했는가 또는 mysql 모듈을 사용해서 직접 연결했는가). 도대체 무엇이 문제인 걸까요?? 며칠 째 이 문제를 해결하지 못하고 있습니다..도와주세요ㅠㅠㅠ (좀전에 다른 분 질문에서 댓글로 같은 질문을 간단하게 했을 때'이 부분은 유튜브에 있는 강좌12강(리뉴얼 개정3판)을 보세요. 현재 무료공개기간입니다. 최신버전으로 진행하고 있어 코드도 깔끔하고 에러도 없습니다.'라고 답변 주셨는데 해당 부분 강의를 유투브에서 찾지 못해서 다시 자세하게 질문 올렸습니다. ) 감사합니다!!
-
미해결왕초보를 위한 네트워크 기초
포워딩이 뭔지 잘 모르겠습니다.
스위치의 동작원리를 듣던 중 스위치가 데이터를 포워딩한다고 설명하셨는데 포워딩이라는게 무엇인가요?
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
나도코딩님 매소드쪽 질문있습니다!
public static void 이다음에 매소드 이름을 입력하던데public static void 이건 별다른 뜻이 없는걸까요?그러면 이 문장은 바뀌는일은 없는지 궁금합니다 p.s 강의가 너무 재밌고 답변도 쉽게 알려주셔서감사히 배우고있습니다. 앞으로도 강의 만들어주세요다른것들도 배우고싶네요!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
MessageSourceTest의 helloMessage() 메서드 테스트 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]MessageSourceTest의 helloMessage()메서드를 테스트중 인데 계속 오류가 발생해 질문을 남기게 되었습니다.처음엔 인코딩 문제인 것 같아 인코딩과 관련된 설정은 모두 질문에 나와있는데로 바꾸었는데도 불구하고 계속 오류가 뜹니다.messages_en.properties 파일을 지우고 messages.properties 파일 하나만 남겨두고 테스트를 하면 테스트가 정상적으로 성공합니다. 하지만 messages_en.properties를 추가하는 순간이런식으로 Expecting이 "hello"로 바뀌고 오류가 뜨는 것 같습니다. 해결방법을 가르쳐주시면 감사하겠습니다.
-
미해결스프링 핵심 원리 - 기본편
@ComponentScan 질문
@ComponentScan( excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Configuration.class) ) ComponentScan을 이용해서 configuration 어노테이션이 들어간 클래스들을 제외하고 component로 등록을 하는 것은 이해가 되는데AutoAppConfig 파일에도 @Configuration이 붙어 있는데AutoAppConfig 파일은 그러면 어떻게 되는 건가요? 상관이 없는건가요? 갑자기 궁금합니다.
-
해결됨Microservice 설계(with EventStorming,DDD)
도메인 이벤트 추출관련해서 여쭤보고 싶습니다!
강사님.도메인 이벤트 추출관련해서 여쭤보고 싶은 부분이 있는데 하기와 같이 단순히 "영화가 예매됨"이 아닌 "상영중인 영화가 예매됨"과 같이 구체적으로 추출해도 상관이 없는것인지 궁금합니다!예를들어 "상영중인 영화가 예매됨"같은 경우에는 커맨드를 추출할 때, 조금 표현하는게 애매한거 같아서요... 이렇게 구체적인 표현보다는 좀 더 추상적으로 표현하는게 좋을까요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Item class 에 public Item() 역할
public Item(){} 은 왜 생성하는지 질의드립니다.Item.java@Data public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2468번 문제 질문드립니다
안녕하세요!!! 열심히 따라가고 있는 수강생입니다 ㅜㅜ다름이 아니고 2468번 정답코드에 있는 e[101][101]과 temp는 왜 선언이 되어있는건지 궁금해서 질문드립니다!!! 혹시 디버깅이나 제가 모르는 뭔가의 반례를 막기 위함으로 선언하신건가 하구요!!!
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
vscode 터미널에서 오류가 발생하고 있습니다
안녕하세요 m1 맥으로 수강을 듣고 있는 학생입니다.vscode를 설치하고 설정하는 영상을 따라하였지만, vscode 명령어에서 계속 오류가 생겨 글을 작성하게 되었습니다. 맥 터미널에서 python manage.py runserver 이라는 명령어를 입력했을시 주소가 뜨면서 잘 작동하는 모습을 보여줬는데, vscode에서 Terminal을 돌리면 처음에 뜨는 코드가 conda activate base라고 뜨면서 영상에 나오는 (conda activate askcompany)랑 다르게 뜨네요..그렇지만 vscode에서 직접 conda activate askcompany를 누른후 python manage.py --version을 입력해 하게 된다면, 영상과 같이 파이썬 버전이 잘 출력이 되고 있습니다.이와같이 현재 terminal select default shell 이라는것이 안되는 상태인데, 해결 방법을 알려주실수 있으신가요?
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
이진 탐색 트리 - 제거 구현 질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 노드를 삭제할 때 자식 노드가 양쪽 다 있는 경우의 코드중 일부분 입니다.if (replacingNodeParent.getLeftSubTree() == replacingNode) { replacingNodeParent.setLeftSubTree(replacingNode.getLeftSubTree()); } else { replacingNodeParent.setRightSubTree(replacingNode.getLeftSubTree()); } 위 코드에서 replacingNode는 해당 트리중 가장 큰 값이니까 무조건 replacingNodeParent의 오른쪽 자식일 것 같아서 아래와 같이 작성해도 될 것 같은데 혹시 제가 생각하지 못한 다른 케이스가 있을까요?replacingNodeParent.setRightSubTree(replacingNode.getLeftSubTree());
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
Jpa, Map Syntax, readOnly 에러 관련 질문
안녕하세요! 아주 용감하게.. 선생님의 두 강의를 동시에 듣고 있는 학생입니다 ^^질문이 몇 가지 있는데요,1) 아직 기본적인 부분도 채워가는 중이라 트랜잭션의 기본 정의부터 검색을 여러모로 해보다가 "데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미"한다는 내용을 발견했는데 이와 관련하여 Transactional annotation을 사용하신 게 맞죠? :)2) 선생님이 다른 분에게 답변하신 내용 중에 트랜잭션 처리를 Service의 역할로 본다고 하신 의견을 참고 하고, Jpa 연동된 프로젝트랑 Jdbi를 셋업해둔 프로젝트를 살펴봤는데 Jdbi 기반인 코드의 서비스 레벨에서는 Service나 Transactional annotation을 안쓰더라구요. 그게 딱 Jpa에 한정된 내용인가요?3) 수업 시간에 deleteUser fun을 작성하실 때, 유저를 삭제하는 부분 로직이 들어갔는데요. 만일 제가 delete fun에 여러 테이블의 데이터를 삭제하고자 한 특정 repository의 delete 메소드를 여러 번 호출해서 그 대표 func 안에 두어도 되나요? Jdbi를 사용하는 프로젝트에서는 그렇게 풀어나가는 걸 봤는데 Jpa에서도 @Trasactional 달고 가능한지 궁금합니다. 아님 single responsibility로 fun deleteA, fun deleteB 이렇게 나누는 게 나을지요?4) 수업 시간에 .map { UserResponse(it) } 과 .map(::UserResponse) 보다는 .map { user -> UserResponse(user) } 를 더 선호하신다고 했는데 그 이유가 뭔가요? 가독성 때문인가요? 다른 두 옵션이 좀 더 스마트해보이고 세련된 syntax 같아 보이는 이상한 생각이.. :)5) UserService.kt에서 fun getUsers(): List<UserResponse> 위에 @Transactional(readOnly = true)을 붙여주는데 readOnly가 빨간색이 뜨네요. Cannot find a parameter with this name: readOnly라고 에러 내용 확인이 가능한데 이걸 해결하려고 재빌드에다 dependency확인에 다시 IDEA reboot하고 구글검색도 했는데 해결이 안되서 도움 요청 드립니다. 뭔가 엄청 간단한 걸 빼 먹었을 것 같은데 선생님은 확인이 되실까요?6) 팀 시니어들이 예전에 어떤 프로젝트가 JPA 사용된 걸 보고, 매우 싫어하는 분위기였는데 보아하니 제 팀은 보통 다 Jdbi 사용하네요. 한국에선 JPA 사용이 더 흔한 것 같은데, 혹시 단점을 쉽게 설명해주실 수 있으신가요?질문이 많아서 죄송해요. 한꺼번에 모아두고 물어보는 게 나은 것 같아서.. ^^새해 복 많이 받으시고 두 강의 다 마치고 따뜻한 후기 올릴게요. 선생님의 코틀린 심화편도 고대하고 있습니다. 이 두 강의 곧 마치고 얼른 만나보고 싶은데 강의 준비 화이팅입니다!
-
미해결입문자를 위한, HTML&CSS 웹 개발 입문
제출하기 버튼 코드 2가지 차이
전에 알려주신 input태그에서 type을 submit으로 버튼을 만드는 것과, button태그로 만드는 것의 차이는 무엇인가요??<button>보내기</button> vs<input type="submit" value="제출하기" />
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
RootTab 이동시 if(!mounted) return; 에 관해
안녕하세요. 초급 완강하고 중급을 듣고 있는 중입니다.현재 기초적인 RootTab 을 만들고 로그인 성공시 해당 페이지로 넘어가도록 설정하는 과정에서 에러,do not use BuildContext across async gaps.가 발생하여 검색해보니if(!mounted) return; Navigator.of(context).push(MaterialPageRoute(builder: (_)=>RootTab(),),);위와같이 if(!mounted);를 넣는 방법이 있다는 것을 알았습니다. 설명도 읽어보긴 했으나 조금 이해가 안되어서 질문드립니다. if(!mounted) return; 이 없어도 작동은 하더라구요.해결은 됐는데, 이 에러의 의미와 해결법의 의미가 무엇인지 궁금합니다. 연말잘보내시고, 새해복 많이 받으세요.
-
미해결[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편
is 연산자
안녕하세요 강의 잘듣고 있습니다. 강의를 듣다가 is 연산자가 나왔는데요. is 연산자를 사용했을 때와 사용하지 않았을 때? is 연산자를 사용하면 어떤 것이 달라지는지 잘모르겠습니다...연말 잘보내세요!!
-
해결됨스프링 핵심 원리 - 기본편
싱글톤 빈에 관하여 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의 잘 듣고 있습니다.해당 강의를 듣다가 의문점이 생겨서 질문 드립니다.강의에서는 싱글톤 빈 안에 프로토 타입 빈을 생성해서 테스트를 하는데 혹시 프로토 타입 빈에 싱글톤 빈을 넣으면 어떻게 되나 궁금해서 직접 테스트를 해보았습니다.그 결과 프로토 타입 빈은 따로 생성 되지만 싱글톤 빈은 각각의 프로토 타입 빈들이 모두 같은 싱글톤 객체를 사용했습니다.객체 변수의 static 과 매우 유사하게 작동하는데 싱글톤 빈의 객체 생성 시점이 컨테이너가 뜰때 생성되는지 아님 프로토 타입 빈을 생성할때 생성되는지 궁금합니다.그리고 혹시 제가 이해한 부분이 맞는지 궁금합니다. 감사합니다.
-
미해결처음 배우는 리액트 네이티브
attrs, 속성, props 가 혼란스럽습니다.
props 와 state 는 책에서 설명이 되어있습니다. 그런데 속성이 무엇인지 attrs가 무엇인지에 대해서 아무리 찾아도 그게 무엇이다 라는 것이 없습니다. 4.3.4 attrs 사용하기를 보면서는 attrs 가 props 와 같은 것인지 그것이 무엇인지 모르겠습니다. attrs 와 속성을 그 정의부터 props와 어떻게 다른지 설명이 필요한 것 같습니다.
-
미해결홍정모의 따라하며 배우는 C++
9.12 연습문제 대입연산자 오버로딩
class IntArray{unsigned mLength = 0;int *mData = nullptr;public:IntArray(unsigned length): mLength(length){mData = new int[length];}~IntArray(){delete[]this->mData;}IntArray(const std::initializer_list<int> &list): IntArray(list.size()){int count = 0;for ( auto &e : list ){mData[count] = e;++count;//count++로 쓰기도 함}}//=operatorIntArray& operator=(const std::initializer_list<int> &array){cout << "assignment operator" << endl;delete[] mData;mLength = array.size();if(mData!=nullptr ){mData = new int[mLength];int i {};for ( auto &e : array ){mData[i++] = e;}}else{mData = nullptr;}return *this;}};int main(){intArray2 = {1,2,3,4,5,6,7,8,9,10};cout << intArray << endl;}이런식으로 작성을 했는데 버퍼오버런이나옵니다버퍼오버런이 사이즈가 m-1개인데 더 큰 데이터를 넣을 할 때 발생? 하는 거라고 검색해서 찾았는데 size()함수는 배열 갯수 -1을 반환하는 것은 아닌거 같은데.. https://learn.microsoft.com/ko-kr/cpp/standard-library/initializer-list-class?view=msvc-170 //=operatorIntArray& operator=(const std::initializer_list<int> &array){cout << "assignment operator" << endl;delete[] mData;mLength = array.size();if(mData!=nullptr ){mData = new int[mLength+1];int i {};for ( auto &e : array ){mData[i++] = e;}}else{mData = nullptr;}return *this;}이렇게 1을 추가해주면 오버런이 발생하지 않아요왜일까요....?? 디버거를 봐도 이해가 안됩니다