묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결처음 만난 리액트(React)
JSX 의 XSS 방지
안녕하세요 헷깔리는게 있어서 질문을 드립니다.JSX 사용시에 XSS 방지가 된다고 말씀해주셨는데JSX 문법 사용하지 않고 createElement 사용하더라도방지가 되는 것 아닌가요?+ 제가 생각했던 것은 JSX 가 내부적으로 createElement 를 호출하고 createElement 메소드 내에서 escape 가 일어나는 것 아닌가 했는데, chatGPT 한테 물어본 결과JSX 문법을 사용하면 createElement 를 호출 하기 전에 escape 을 완료하는 것으로 이해를 하였습니다.이렇게 이해하는 것이 맞을까요..?
-
해결됨Vue.js 시작하기 - Age of Vue.js
스크립트 올리신 내용 물어봅니다.
<script src="">https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script src="">https://unpkg.com/vue-router@3.5.3/dist/vue-router.js"></script> 이거 전에.. vue router 공식홈페이지에 올라와있는 뷰 라우터3.6버전 스크립트를 땡겨다 썻고..vue 스크립트는 이전까지 실습하실 때 쓰신 스크립트로 이어서 진행했습니다.이상하네요.. 올려놓으신 스크립트로 대채하니까 뷰 라우터가 잘 작동합니다..?근데.. 이전에 사용중이던 뷰 스크립트와현재 최신 뷰라우팅 스크립트를 같이 쓰면 뷰 라우팅이 안나오는걸까요? 디버거 찍어서 new VueRouter() 를 하면... 또 객체는 잘 뜹니다만..? 뷰와 뷰라우터의 버전에 따른 호환성 문제인가요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
강의 소스 질문
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨질문 하시기 전에 꼭 확인해주세요- 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다)- 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다)- 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢)질문 하실때 꼭 확인하세요- 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X)- 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지)- 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우)- 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요- 강의의 몇 분 몇 초 관련 질문인지 알려주세요!- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.강의를 집에서 또는 사무실에서 들으니 진도가 나간 부분에 대한 코딩을 이어서 나가질 못하는데 혹시 강의에 대한 소스를 어디서 어떻게 쉽게 찾아볼 수 있을까요?답변 부탁드립니다.감사합니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
gateway level에서 filter도 잘 작동합니다!
@UsePipes( new ValidationPipe({ transform: true, transformOptions: { enableImplicitConversion: true, }, whitelist: true, forbidNonWhitelisted: true, }), ) @UseFilters(SocketCatchHttpExceptionFilter) @WebSocketGateway({ // ws://localhost:3000/chats namespace: 'chats', }) export class ChatsGateway implements OnGatewayConnection { constructor( private readonly chatsService: ChatsService, private readonly messagesService: ChatsMessagesService, ) {} ... }각각의 메소드마다 넣어주는것보다 나은것 같아서 공유 해보아요!
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
샌드박스코드 콘솔창
콘솔창이 보이지 않는데 어떻게 열어야되는지 궁금합니다!
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
ValidationPipe를 좀 더 편하게 쓸 수 없을까해서 찾아보니 controller에서 사용 할 수 있더라고요
https://docs.nestjs.com/faq/request-lifecycle공식 문서에 보니까 controller level에서 사용 할 수 있는것 같아서controller와 gateway가 비슷하니까 사용 가능하지 않을까 해서 테스트 해보니까@UsePipes( new ValidationPipe({ transform: true, transformOptions: { enableImplicitConversion: true, }, whitelist: true, forbidNonWhitelisted: true, }), ) @WebSocketGateway({ // ws://localhost:3000/chats namespace: 'chats', }) export class ChatsGateway implements OnGatewayConnection { ... }해당 gateway에서 usePipes를 설정 할 수 있더라고요!차선책으로 이것도 괜찮은것 같아서 공유 해봅니다!
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
19:55초정도에 3명의 사용자중 메세지를 보낼려는 사용자가 "enter_room"에 메세지를 보내는데
아마 강사님 실수인듯합니다.User 1이 enter_room에 2번 채팅방에 참여 한다고 메세지를 보내는데 "enter_chat"이 맞습니다! 제가 실험 해보니까 결국 enter_chat을 제대로 하지 않은 경우에 다른 사용자가 보낸 message를 제대로 리시브 받지 못하더라고요.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
쿼리러너관련질문
안녕하세요쿼리러너 관련 질문드립니다 코멘트 생성시 Pid 에 일부러 엉뚱한 값을 넣는 경우QueryRunner를 쓰고 안쓰고에 차이가 있더라구요. 예를들어this.commentService.ceateComment(dto, pId, user, qr);qr repository 를 일부러 사용하지 않게 조작하면 pid 에 이상한 값을 넣어도 valitation 없이 create 가 되었는데Qr 을 넘겨주는 순간 아래와 같이 유효하지 않은 pk 에 대해 조작하려고 한다는 validation 을 해주더라구요. { "path": "/posts/{엉뚱한 값}/comments", "statusCode": 500, "message": "insert or update on table \"comment\" violates foreign key constraint \"FK_94a85bb16d24033a2afdd5df060\"", "timestamp": "1/21/2024, 4:06:08 PM"} 이런 차이는 어디서 나는것일지, 이런것들도 Query Runner 의 역할인지도 궁금합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
정규화 엑셀자료
안녕하세요, 09-데이터 정규화 1에서 구글 시트를 사용하시는데 이 주소 어디서 접속 가능할까요?
-
미해결[코드팩토리] [입문] 9시간만에 끝내는 코드팩토리의 Javascript 무료 풀코스
선생님 저 멍청한거 맞죠?
반복문 강의보다가 6x6 크기에 정사각형 모양을 *로 채워봐라 퀴즈 내주시길래 영상 바로 멈추고 생각해봤는데도저히 떠오르는 방법이 없습니다.. 그러다 과정은 틀리더라도 결과만이라도 어떻게든 만들어 보자 해서 20분동안 고민해서 쓴게// 6x6 의 크기로 정사각형에 *을 채워 넣어야 한다. for (let i = "******"; i === i; i++) { for (let a = "******"; i === i; i++) { for (let b = "******"; i === i; i++) { for (let c = "******"; i === i; i++) { for (let d = "******"; i === i; i++) { for (let e = "******"; i === i; i++) console.log("\n", i, "\n", a, "\n", b, "\n", c, "\n", d, "\n", e); } } } } }이따구 ㅋㅋㅋㅋㅋㅋㅋㅋ 혹시나 해서 영상 틀어서 보니 차원이 다른 코드 진짜 개쪽팔린데 혹시라도 저같은 사람이 있는지 궁금해서 올려봅니다.진짜 이론 빠삭해도 활용해서 구현할줄 모르면 땡이라는게 맞는거 같습니다.물론 전 이론을 아직 이해하지 못했습니다. 열심히 공부하겠습니다 ㅠㅠ..
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
파이널 과제 css,html질문입니다.
가입하기 버튼 누르면 에레메세지 출력하게 할때저는 wrapper바깥으로 내용이 빠져 나가는데어떻게 해야 wrapper크기도 같이 늘어나게 하는건가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
mongoDB접속 관련 문의
04-05 ODM - mongoDB접속 강의에서 docker-compose build했을 때 > [mybackend 5/6] RUN yarn install:0.132 yarn install v1.22.190.150 [1/4] Resolving packages...0.176 [2/4] Fetching packages...3.678 error mongoose@8.1.0: The engine "node" is incompatible with this module. Expected version ">=16.20.1". Got "14.21.3"3.678 error Found incompatible module.3.678 info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.------failed to solve: process "/bin/sh -c yarn install" did not complete successfully: exit code: 1위와 같이 오류가 떠요. node버전이 mongoose버전과 맞지 않다고 하는데 기존 node를 삭제하고 오류에서 말한 16.20.1버전으로 새로 설치해야하는 건가요? 재 설치하면 기존에 학습했던 코드들에 영향을 받진 않나요?
-
미해결Do it! Node.js 프로그래밍 입문
이강의는 컨트롤러가 안들어가는 이유가 있나요
실무에서는 컨트롤러 없이 라우터 만으로 프로잭트를 진행하는 경우가 많나요?
-
미해결Do it! Node.js 프로그래밍 입문
관리자 로그인 쪽 작업하고 있는 무한루프에 빠져 오픈이 안됩니다.
오류가 뜨지 않고 무한루프에 걸려 있는데 , admin 을 post 로 호출하는 페이지 뿐만 아니라 모든 페이지가 로딩 자체가 안되는데 혹시 무슨 문제가 있는걸까요app. js 에서 아래 코드를 주석 처리하면 다른 페이지도 바로 로딩이 됩니다.app.use(cookieParser);
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
length에서 min값만 설정하고 싶을 때 max 없이 validationOptions을 어떻게 전달할 수 있나요..?
length에서 max값을 전달 안해주고 min만 설정하고 싶을때if(args.constraints.length===2){} else}{ }여기서 else 가 실행되어야 하는데 max 값 없이 validationOptions만을 전달하면 validationOptions가 두번째 인자로 전달되는 것 아닌가요..? 이렇게 하면 에러 나는데.. max 값에 undefined나 null을 넣어도 안되는 것 같습니다. 어떻게 max 값 없이 validationOptions를 실행할 수 있나요..?
-
미해결[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기
select 배열 이해를 도와주세요!
안녕하세요, 알고리즘 개선하기 강의를 들은 이후, 새로 짜여진 알고리즘의 원리(?)에 대해 공부하는 중입니다. 그런데, select 부분에 대한 이해가 어려워 질문 올려봐요 ㅠㅠ answer.addEventListener("click", function(){ //'answer' 버튼을 클릭했을 때 4 var children = document.querySelectorAll('.answerList'); for(let i = 0; i < children.length; i++){ children[i].disabled = true; // 버튼 비활성화 children[i].style.WebkitAnimation = "fadeOut 0.5s"; // 0.5초동안 main 섹션이 사라지면 children[i].style.animation = "fadeOut 0.5s" // 사용자가 어떤 한 버튼만 클릭해도, 다른 버튼들은 다 무시가 되고 모든 버튼들이 사라진다. } setTimeout(() => { var target = qnaList[qIdx].a[idx].type; // 우리가 선택한 버튼이 가지고 있는 타입이 target에 할당됨. //버튼을 클릭하는 순간에 바로 값 증가 for(let i = 0; i < target.length; i++){ select[target[i]] += 1; // 이 반복문이 돌고나면 사용자가 버튼을 클릭하였을 때, 12간지의 순서대로 해당하는 type의 값이 1씩 증가 } for(let i = 0; i < children.length; i++){ children[i].style.display = 'none'; // 버튼이 보이지 않게 } goNext(++qIdx); console.log(target); console.log(children.length); },450); //450 경과 시 }, false); 저는 이 for문 안에 들어있는 select[target[i]] += 1; 이 부분을 이해하기 위해calResult() 부분에 console.log(select);를 작성하였고, 임의로 선택된 모든 버튼에 대한 select값을 받을 수 있었습니다. // console.log(select); [2, 4, 3, 4, 4, 3, 4, 4, 2, 5, 1, 6]우선 저는 처음에 이 숫자들이 select 값이라는 것은 알고 있었으나 진짜 무엇을 의미 하는 지 알 수 없어 수기로 디버깅을 해보았습니다. 모든 버튼에 대한 type 값을 추적해가며 적어보았는데 qIdx 선택한 버튼 type 0 a [1, 2, 4, 9] 1 c [7, 4, 9, 11] 2 b [7, 9 ,11] 3 c [0, 3, 6, 5] 4 c [2, 5, 8] 5 b [0, 3, 6, 10] 6 a [1, 7, 11] 7 c [1, 7, 11] 8 b [1, 3, 6, 11] 9 a [4, 9, 11] 10 c [2, 5, 8] 11 a [3, 6, 4, 9]선택한 버튼에 대한 type 값의 누계를 도출해보니 [2, 4, 3, 4, 4, 3, 4, 4, 2, 5, 1, 6] // select console에 제가 요청했던 select 값과 동일한 배열이 나왔습니다. 또한 0~11까지의 띠 순서 그대로 오름차순으로 배정된 것을 발견할 수 있었습니다.제가 부족한 지식을 동원하여 생각한 바로는 type값을 누계할 때 오름차순으로 정렬하라는 어떤 메세지가 있지 않으면 [4, 2, 3, 4, 4, 3, 1, 4, 2, 6, 4, 5] 이런식으로 순서에 상관없이 해당 값에 대한 누계만 select에 담길 것으로 예상하였으나 오름차순으로 배열이 정리되어 정렬 원리가 궁금하였습니다. select[target[i]] += 1; 이 부분에서 자동으로 저희가 선택한 버튼들의 type을 select 배열에 넣을 때, 각 누계 값이 0 부터 11까지의 오름차순으로 자동 정렬되나요? const select = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];아니면 저희가 초반에 select에 0값으로 총 12개의 빈자릿수를 만들어 주었을 때부터각 자리당 0부터 11까지의 인덱스 주소가 자동 배정되는 건가요?아니면 이 배열(select)의 정렬방식에 대하여 놓친 부분이 있을까요? 도와주세요 ㅠㅠ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
강의 질문 및 코드 리뷰
안녕하세요 이번 강의를 듣고 선생님께서 알려주신 풀이 방법을 이해하게 되었습니다 감사합니다!다만 제가 몇가지 질문이 있어 글 올립니다!1 . 풀이 방향이 각각의 (조합) * (숫자) 의 합이 되는데 왜 마지막 숫자가 (조합) * (숫자) 의 합이 되나요 ???제가 강의를 듣기전에 혼자서 코드를 짜보았는데 왜 이 코드는 답이 안나오는지 여쭈고 싶습니다!function solution(n, end) { let mem_arr = Array.from(Array(n + 1), () => Array(n + 1).fill(0)); // 메모이제이션 let comb_arr = Array.from({ length: n }, () => 0); // 조합의 배열 let check = Array.from({ length: n }, () => false); // for 수열 (중복X) let arr = Array.from({ length: n }, () => 0); // 순열 저장 let answer = []; function comb(n, r) { if (n === r || r === 0) return (mem_arr[n][r] = 1); if (mem_arr > 0) return mem_arr[n][r]; return (mem_arr[n][r] = comb(n - 1, r - 1) + comb(n - 1, r)); } for (let i = 0; i < n; i++) { comb_arr[i] = comb(n - 1, i); } function dfs(lev) { if (lev >= n) { let sum = 0; for (let i = 0; i < n; i++) { sum += comb_arr[i] * (i + 1); } if (sum === end) { answer.push(arr.slice()); } } else { for (let i = 1; i <= n; i++) { if (check[i] === true) continue; check[i] = true; arr[lev] = i; dfs(lev + 1); check[i] = false; } } } dfs(0); return answer; }제가 처음에 의도했던 코드의 경우로는,,일단 순열을 arr에 저장하고 lev=== n 이 될때 구한 순열과 조합의 곱의 합인 sum 을 구하여 비교하는 방식으로 짰습니다. 근데 이 코드를 실행해보니까 arr 이 (1,2,3,4) 로만 나오는데 어디서 잘못됐는지 잘 모르겠습니다!! 답변 주시면 정말 감사하겠습니다 😄
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
while 문 펙토리얼
안녕하세요 제가 코드 짤때 재귀함수로도 풀어보고 while문으로도 풀어보았는데 둘의 시간복잡도나 그런 부분에 큰 차이가 있나요??function solution(n) { let answer; function factorial(k) { if (k === 1) return 1; return factorial(k - 1) * k; } answer = factorial(n); return answer; // while 문 이용 // let answer = 1; // while (n >= 1) { // answer *= n; // n--; // } // return answer; }
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
App.css에서 질문드립니다
.MyButton_positive{}이부분에서 앞서 MyButton.js 에서 className을 'MyButton MyButton_positive' 로 해주었는데왜 .MyButton MyButton_positive{} 가 아닌.MyButton_positive{}로 작성하는 걸까요??
-
미해결풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]
인터넷 익스플로러 호환성
모던 HTML/CSS 로 상용화도 가능한 반응형 모던 웹페이지만들기 11(9:37) 내용중인터넷 익스플로러 호환성을 위해 width:240px 대신 max-width:240px를 사용하고 flex-shrink:0;을 설정하셨는데인터넷 익스플로러가 사용되지 않는 현 시점에서 <link rel="short icon" type="image/x-icon" href="img/fun-coding.ico" />이와 같이 익스플로러의 호환성을 고려하는 행위가 현업에서 필요한지 궁금합니다!