묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결함수형 프로그래밍과 JavaScript ES6+
Identity 함수
ES5, ES6 강의 모두 들었는데요.. Identity 함수에 대한 설명을 들었던게 기억이 나는데 이 함수에 대한 강의가 어디있는지 기억이 안납니다. 어떤강의 어떤 주제에서 Identity 함수에 대한 설명을 하셨나요?
-
해결됨웹 프론트엔드를 위한 자바스크립트 첫걸음
디지털시계 개발하기
🚨질문 작성법 및 안내사항질문 작성법- 몇 섹션의 어떠한 강의에 대한 질문인지 작성해주세요. (ex. 섹션2 조건문에 대한 질문)- 질문은 최대한 구체적으로 작성해주세요.- 비슷한 질문이 올라와있는지 확인해주세요.- 코드가 포함된 질문은 아래와 같이 코드블록을 사용해주세요.console.log("hello world");안내사항- 질문에 대한 답변은 보통 주말, 공휴일을 제외한 평일 오전 시간에 답변해드립니다. 디지털 시계 개발하기에서 5:41초 강의에서 parseInt(number)는 명시적 형변환 아닌가요? 묵시적 형변환이라고 강의에서 말씀하시네요
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
섹션 8 에서 도커 컴포스파일 작성해보기 에서 에러
안녕하세요docker-compose up 명령어를 입력했을 때 에러가 나왔습니다에러 내용joy@gimjonghuiui-MacBookAir CF_SNS % docker-compose upAttaching to cf_sns-postgres-1Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/host_mnt/Users/joy/Documents/NestJs/CF_SNS/postgres-data" to rootfs at "/var/lib/postgresql/data": mount /host_mnt/Users/joy/Documents/NestJs/CF_SNS/postgres-data:/var/lib/postgresql/data (via /proc/self/fd/9), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type 위에 내용이 뜨면서 실행이 안되는것 같습니다postgres-data 관련 파일도 새롭게 만들어지지 않았습니다어떻게 해결하면 좋을까요..?
-
해결됨[코드캠프] 훈훈한 Javascript
조건에 따른 메시지 출력 강의
7:49 부분에 강사님은 NaN이 한 번만 출력되는데 저는 NaN NaN NaN NaN 총 네 번이 출력되는데 괜찮나요...? <!DOCTYPE html> <html lang="ko"> <head> <title>D-Day</title> <link rel="stylesheet" href="./style.css" /> <script> const dateForMaker = function () { // HTML에서 입력된 연도 값을 가져와서 inputYear 변수에 저장 const inputYear = document.querySelector("#target-year-input").value; // HTML에서 입력된 월 값을 가져와서 inputMonth 변수에 저장 const inputMonth = document.querySelector("#target-month-input").value; // HTML에서 입력된 날짜 값을 가져와서 inputDate 변수에 저장 const inputDate = document.querySelector("#target-date-input").value; // 연도, 월, 날짜를 하이픈으로 연결하여 날짜 형식 문자열 생성 // const dateFormat = inputYear + "-" + inputMonth + "-" + inputDate; const dateFormat = `${inputYear}-${inputMonth}-${inputDate}`; // 생성된 날짜 형식 문자열을 반환 return dateFormat; // console.log(inputYear, inputMonth, inputDate); }; const counterMaker = function () { const targeDateInput = dateForMaker(); // 현재 시간 const nowDate = new Date(); // 대상 날짜를 생성하고 시, 분, 초, 밀리초를 0으로 설정 const targetDate = new Date(targeDateInput).setHours(0, 0, 0, 0); // emaining = 남은 시간을 초로 환산 // 밀리초를 초로 변환하기 위해 1000을 나눔 const remaining = (targetDate - nowDate) / 1000; console.log(targetDate); // remaining이 0보다 작으면 즉, 타이머가 종료된다면 if (remaining <= 0) { // "타이머가 종료되었습니다." 출력 console.log("타이머가 종료되었습니다."); // 만약 잘못된 날짜가 들어왔다면 "유효한 시간대가 아닙니다." 출력 } else if (remaining === NaN) { console.log("유효한 시간대가 아닙니다."); } // 'remaining' 값을 3600(초당 시간)과 24(시간당 일)로 나눈 후 정수 부분을 남은 일수로 저장 const remainingDate = Math.floor(remaining / 3600 / 24); // 'remaining' 값을 3600(초당 시간)으로 나눈 후 24(시간)로 나눈 나머지를 남은 시간(시)으로 저장 const remainingHours = Math.floor(remaining / 3600) % 24; // 'remaining' 값을 60(초당 분)으로 나눈 후 60(분)으로 나눈 나머지를 남은 분으로 저장 const remainingMin = Math.floor(remaining / 60) % 60; // 'remaining' 값을 60(초)으로 나눈 후 60(초)으로 나눈 나머지를 남은 초로 저장 const remainingSec = Math.floor(remaining) % 60; // 남은 일, 시간, 분, 초를 콘솔에 출력 console.log(remainingDate, remainingHours, remainingMin, remainingSec); }; </script> </head> <body> <h1>D-Day</h1> <div id="d-day-container"> <div class="d-day-child-container"> <span id="days">0</span> <span>일</span> </div> <div class="d-day-child-container"> <span id="hours">0</span> <span>시간</span> </div> <div class="d-day-child-container"> <span id="min">0</span> <span>분</span> </div> <div class="d-day-child-container"> <span id="sec">0</span> <span>초</span> </div> </div> <div id="target-selector"> <!-- 연도를 입력받는 입력란. 'id'는 "target-year-input"이며 CSS 클래스는 "target-input"입니다. --> <input id="target-year-input" class="target-input" size="5" /> - <!-- 월을 입력받는 입력란. 'id'는 "target-month-input"이며 CSS 클래스는 "target-input"입니다. --> <input id="target-month-input" class="target-input" size="5" /> - <!-- 날짜를 입력받는 입력란. 'id'는 "target-date-input"이며 CSS 클래스는 "target-input"입니다. --> <input id="target-date-input" class="target-input" size="5" /> </div> <button onclick="counterMaker()" id="start-btn">카운트다운 시작</button> </body> </html>
-
미해결SCSS(SASS)+FLEX 실전 반응형 웹 프로젝트 with Figma
scss 히스토리 파일
style.scss가 사진처럼 여러 파일로 히스토리가 남게 저장됩니다. 삭제를 해도 watch css를 하면 다시 파일이 만들어지는데.. 아예 히스토리 안남게 하는 방법이 있을까요 ?
-
미해결입문자를 위한 반응형 웹 기초 강의
max-width에 관해서
안녕하세요 강사님, <div id='parents'> <div id='child'></div> </div>여기서 이 밑 두 코드의 차이점을 알 수 있을까요?<style> #parents { width: 50%; } #child { max-width: 100%; } </style><style> #parents { width: 50%; } #child { width: 100%; } </style>
-
해결됨웹 애니메이션을 위한 GSAP 가이드 Part.02
gsap.set() vs gsap.default()
gsap.set(), gsap.default() 두 가지 모두트윈의 값을 미리 셋팅하는 역할을 하는데 어떤 상황에서 어떤 것을 사용해야할지 감이 잡히지 않습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
핸드폰에 전송이 안 되네요 ㅜㅜ
강의랑 똑같이 따라한 것 같은데.. postman에서는 오류가 발생하지 않고 인증완료라고 뜨긴 하는데요,vscode의 터미널을 보면 발신번호 미등록이라고 뜨고 .. 핸드폰에 전송이 안 되네요.뭐가 문제일까요? coolsms, mysms, API key랑 API secret도 cSpell 오류가 뜨길래 상위 폴더에서 .cspell.json 파일 만들어서 오류 안뜨게 했는데.. 여기서부터 문제였던 걸까요? 참고로 yarn add coolsms-node-sdk도 했고.. 분명 다 한 것 같은데ㅜ 어디서부터 잘못된건지 정말 모르겠어요..혹시 제가 코드 이상하게 작성하거나 잘못된 부분이 있나 해서.. 코드도 붙여봅니다 ㅜㅜ꼭 성공하고 싶은데 제가 아직 코린이라 ㅜㅜ 다 어렵기만 하네요 ㅜㅜ { "name": "04-01-rest-api-with-express", "version": "1.0.0", "main": "index.js", "license": "MIT", "type": "module", "scripts": { "dev": "nodemon index.js" }, "dependencies": { "coolsms-node-sdk": "^2.0.1", "cors": "^2.8.5", "express": "^4.18.2", "nodemon": "^3.0.1", "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.0" } } import coolsms from "coolsms-node-sdk"; export function checkValidationPhone(myPhone) { if (myPhone.length !== 10 && myPhone.length !== 11) { console.log("에러 발생!!! 핸드폰 번호를 제대로 입력해 주세요!!!"); return false; } else { return true; } } export function getToken() { const myCount = 6; if (myCount === undefined) { console.log("에러 발생!!! 갯수를 제대로 입력해 주세요!!!"); return; } else if (myCount <= 0) { console.log("에러 발생!!! 갯수가 너무 적습니다!!!"); return; } else if (myCount > 10) { console.log("에러 발생!!! 갯수가 너무 많습니다!!!"); return; } const result = String(Math.floor(Math.random() * 10 ** myCount)).padStart( myCount, "0" ); return result; // console.log(result) } export async function sendTokenToSMS(fff, ggg) { // console.log(fff + "번호로 인증번호" + ggg + "를 전송합니다!!"); const mysms = coolsms.default; const messageService = new mysms( "NCSESSQG0X1RZAGF", "2OFMQEDM5YCL59ICURBSPJGD08R1FQOG" ); const result = await messageService.sendOne({ to: fff, from: ggg, text: `[코드캠프] 안녕하세요?! 요청하신 인증번호는 [${ggg}] 입니다.`, }); console.log(result); } import { checkValidationPhone, getToken, sendTokenToSMS } from "./phone.js"; import express from "express"; import swaggerUi from "swagger-ui-express"; import swaggerJsdoc from "swagger-jsdoc"; import { options } from "./swagger/config.js"; import cors from "cors"; const app = express(); app.use(cors()); app.use(express.json()); app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerJsdoc(options))); app.get("/boards", (req, res) => { //1. 데이터를 조회하는 로직 => DB에 접속해서 데이터 꺼내오기 const result = [ { number: 1, writer: "철수", title: "제목1", contents: "내용1" }, { number: 2, writer: "맹구", title: "제목2", contents: "내용2" }, { number: 3, writer: "훈이", title: "제목3", contents: "내용3" }, ]; //2. 꺼내온 결과 응답 주기 res.send(result); }); app.post("/boards", (req, res) => { // 1. 데이터를 등록하는 로직 => DB에 접속해서 데이터 저장하기 // 프론트엔드로부터 데이터 받아오기 // 콘솔로 찍어서 확인 해보기 console.log(req.body); // 2. 저장 결과 알려주기 res.send("게시물 등록에 성공하였습니다."); }); app.post("/tokens/phone", (req, res) => { const myPhone = req.body.aaa; // 1. 휴대폰번호 자릿수 맞는지 확인하기 const isValid = checkValidationPhone(myPhone); if (isValid) { // 2. 핸드폰 토큰 6자리 만들기 const myToken = getToken(); // 3. 핸드폰번호에 토큰 전송하기 sendTokenToSMS(myPhone, myToken); res.send("인증완료"); } }); app.listen(3000, () => { console.log(`Example app listening on port ${3000}`); });
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
TypeORM @PrimaryGeneratedColumn 관련 질문
@PrimaryGeneratedColumn() 데코레이터에 인자로 전달할 수 있는increment와 identity에 따라서 어떤 차이가 있는지 궁금합니다.찾아봐도 알기가 어려워서 질문드립니다.
-
해결됨[코드캠프] 훈훈한 Javascript
locallhost
제 창 주소는 이렇게 뜨는데 왜 강사님은 다르게 뜨는 건가요 로컬호스트 강의 0:40 부분
-
미해결[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
nestjs와 프론트 연동 질문드립니다.
nestjs랑 nextjs를 사용하여 로그인 기능을 만들고 있습니다.nestjs의 validation을 사용해서 @IsEmail이 아닌 경우 예외처리를 하게 만들어주었습니다. postman에서는 message가 잘 뜨는데 프론트엔드에서 console.log(error)로 찍어보면 postman에서 response으로 받은 값이 없습니다. 프론트에서도 postman처럼 response값을 받으려면 어떻게 해야하나요? <프론트> <서버> <dto> <postman> <브라우저>
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
파트2 강의도 출시되나요??
궁금합니다
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
css질문
display:flex가 없어도 위치가 똑같은부분에 왜display:flex;flex-direction:column; or flex-direction:row를 왜 쓰는지모르겠어요 안써도 위치가같아보이는데필요성도 안느껴지고 언제언제쓰는지도 잘 모르겠습니다
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
제 실력으로 최대한 머리 짜내서 혼자 풀어 보았습니다. 너무 허접 할까요?
<script> function solution(arr) { const initialValue = 0; const result = arr.reduce((prev, current) => prev + current, initialValue); const overSum = result - 100; const pickNum = []; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { if (arr[i] === arr[j]) continue; if (arr[i] + arr[j] === overSum) pickNum.push(arr[i]); } } return arr.filter((val) => val !== pickNum[pickNum.length - 2] && val !== pickNum[pickNum.length - 1] ); } let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13]; //let arr = [25, 7, 23, 19, 10, 55, 20, 8, 13]; //let arr = [33, 9, 23, 17, 10, 55, 20, 8, 13]; //let arr = [13, 9, 61, 17, 11, 22, 20, 8, 70]; console.log(solution(arr)); </script> 코드 설명reduce 함수로 먼저 모든 9명의 난쟁이 녀석들 합을 구합니다.난쟁이 합은 총 100이니까 9명의 난쟁이 합 - 100을 합니다. ( 100보다 작을순 없으니까)범인은 2명이니까 중첩 for문을 돌려서 두명의 합이 2번의 값과 같은 녀석을 구합니다. pickNum 배열에 첫번째 녀석과 두번째 녀석이 담깁니다.filter함수를 이용해서 첫번째 가짜 난쟁이 값과 두번째 가짜 난쟁이 값에 해당하지 않은 녀석들로 진짜 난쟁이들 배열을 구성합니다여러가지 테스트 케이스를 만들어서 해보았는데, 진짜 난쟁이들 잘 찾습니다
-
해결됨[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
[Patch Post 엔드포인트 생성하기] posts 변경 이유
[4:23] 부분에 post를 변경하고 다시 기존 배열 값을 치환해주시는데, find()통해 할당된 변수가 어차피 참조형이라 얕은 복사로 바로 배열 내부 post가 수정되지 않나요?
-
미해결타입스크립트 입문 - 기초부터 실전까지
파일이 다른데 식별자가 중복되었다고 뜹니다.
파일이 다른데 식별자가 중복되었다고 뜹니다.강의에서는 똑같은 Person을 쓰셔도 문제 없던데 제가 뭔가 세팅을 빠뜨린 걸까요?
-
해결됨[코드캠프] 시작은 프리캠프
아이콘 부분
아이콘 부분이 너무 다닥다닥 붙어있는데 조금 띄우려면 어떻게 해야하나요ㅠㅠ
-
해결됨JavaScript로 배우는 fullPage + anime + SVG Animation 포트폴리오
스크롤링
Fullpage 를 사용할때요예를 들어 섹션 0,1,2,...이렇게 있을때, 만약 섹션1에 갔을때만 Fullpage의 스크롤링을 막을수는 없는지요? 해당하는 섹션에서 모달을 띄운다 했는때 그안에서의 긴 컨텐츠를 스크롤하는 동안은 섹션1 전체의 스크롤은 안움직이게 할수 있나 해서요
-
미해결[웹 개발 풀스택 코스] 순수 자바스크립트 기초에서 실무까지
dom_event_bubbling 질문있습니다!
수업 잘 듣고 있습니다.dom_event들 중에서 bubbling에서 console.log(event.path)실행하는 부분에서 강사님께서 실행하시면 바로 path가 나오는데 저는 코드를 똑같이 썼는데도 실행하면 undefined로 나타납니다. var: event | undefined 라고 떠있는데 무슨 문제인지 잘 모르겠습니다!저는 참고로 windows edge로 실행하고있습니다.
-
해결됨몇 줄로 끝내는 인터랙티브 웹 개발 노하우 [초급편]
javascript 도움말 vsCode 확장팩 문의!
안녕하세요~ javascript 코드 작성하실 때, 예상되는 코드 도움말? 툴팁? 처럼 나오는 기능은 어떤 확장팩을 사용하시는지 궁금합니다!