묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다
const solution = (m, songs) => { let lt = Math.max(...songs), rt = songs.reduce((prev, cur) => prev + cur); let mid = parseInt((lt + rt) / 2); let nowCount; let minMinutes = Number.MAX_SAFE_INTEGER; const getCount = (minutes, songs) => { let count = 0; let remainMinutes = 0; for (let song of songs) { if (remainMinutes < song) { count++; remainMinutes = minutes - song; } else { remainMinutes -= song; } } return count; }; while (lt <= rt) { nowCount = getCount(mid, songs); console.log(mid, nowCount, minMinutes); if (nowCount > m) { lt = mid + 1; } else { rt = mid - 1; // if (nowCount === m) minMinutes = Math.min(minMinutes, mid); minMinutes = mid; } mid = parseInt((lt + rt) / 2); } return minMinutes; };먼저 getCount 부분을 다르게 작성해봤는데 반례가 있을지 궁금합니다.그리고 제 원래 코드는 while문 내에서 구한 nowCount값이 m과 같을 때만 minMinutes(정답)을 minMinutes와 mid 중 더 작은 값으로 대입해줬는데, nowCount가 m보다 작거나 같은 경우에 무조건 정답으로 대입해도 괜찮은 이유가 무엇인가요?
-
미해결인터랙티브 웹 개발 제대로 시작하기
질문있습니다!
3개의문 2 강의 중에서 일분이 이미지를 가릴 때 transition을 사용하셔서 처음 위치에서 오른쪽으로 100% 이동을 시키셨잖아요?그 때 처음 두개의 문에 있던 일분이는 문 뒤에 가혀 보이지 않게 되었는데 세번째 문에 있던 일분이는 <div class = 'stage'> </div> 위에 보였습니다.그렇다면 처음 두개 문에 있던 일분이는 이동한 후에 레이어 상에서 이웃한 문 뒤에 위치해서 보이지 않는건가요?
-
미해결인터랙티브 웹 개발 제대로 시작하기
이미지를 넣을 때 div 안에 background-img를 넣으시는이유
저는 어떤 이미지를 넣을 때 바로 img 태그를 이용해 넣을거같은데 강사님은 항상 div 태그 안에 background-img를 넣으시더라구요 혹시 그렇게 하시는 이유가 따로 있으신가요? 궁금합니닷!
-
미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
crispy적용오류
아래랑 똑같은 상황인데 어떻게 해야하나요?https://www.inflearn.com/questions/802016/django-crispy-%EC%A0%81%EC%9A%A9-%EC%98%A4%EB%A5%98
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
nom update check failed는 어떠한 이유로 뜨는 것인 지 궁금합니다.
안녕하세요 선생님 덕분에 강의 잘 수강하고 있습니다.다름이 아니라 back-end project를 실행하는데npm run dev 를 실행하면 정상적으로 서버도 돌아가고 /api/docs 경로도 잘 조회가 됩니다. 다만 저 경고문구는 왜 뜨는지 궁금합니다..!
-
해결됨[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
이클립스에서 javascript 람다 사용이 가능한가요??
안녕하세요. 11분 15초 쯤부터 Javascript의 람다식을 사용하면 된다고 말씀해주셨습니다. $(document).ready(function() { $("#regBtn").click(()=> { location.href="<c:out value='/register.do'/>"; }); });이클립스에서 ES6 문법 사용이 가능한가요???람다식은 ES6부터 나온 기능으로 알고 있습니다. 이와 같은 버전에 나온 백틱(`)을 사용하려고 했는데, 이클립스에서 에러 표시를 내서 사용을 안 하고 있었습니다.19년 3월 버전의 이클립스 환경에서 보면, Legacy 프로젝트를 생성했는데 ECMA 3 Browser Support Library라고 되어있길래 ES6은 지원이 안 되나 싶었습니다.(다시 보니 ECMA Script가 아니라 ECMA 3 Browser네요 ㅎㅎ; 제가 잘못 예측한 것일 수도 있겠네요)이클립스에서 ES6 버전의 JS를 쓰면 Ajax 결과로 나오는 흔한 JSON 데이터를 편하게 불러올 수 있을텐데 말이죠 ㅠㅠ항상 친절한 답변 감사합니다. 강의 잘 보고 있습니다.
-
해결됨[코드캠프] 입문자를 위한 Javascript 알고리즘 이론+실습
계산기가 이상해, typeof 풀이 문의
섹션 3. 숫자와 문자열 > typeof [🧮 계산기가 이상해]function solution(num1, num2) { return typeof(num1), typeof(num2);}저는 이렇게 풀었는데요!리턴값은 똑같은데 혹시 이렇게 풀면 안 되는 걸까요?아시는 분, 꼭 답변부탁드립니다♥
-
미해결타입스크립트 입문 - 기초부터 실전까지
정의된 타입으로 타입을 제한하기 질문 드립니다.
선생님, 안녕하세요. 강의 잘 듣고 있습니다.궁금한 것이 두 가지가 생겨서 질문하려고 합니다.dropdown 예제에서 DropdownItem의 value가 어떤 타입이든 들어올 수 있어서 toString()에 밑줄이 그어지는 것으로 알고 있는데요,이를 해결하기 위해a. DropdownItem<T>에서 T를 string과 number로 제한해야 되는 것인지, 아니면b. 강의 예제처럼 toString()에 타입을 제한하는 것인지 모르겠습니다.위의 두 사진에서 보면 34번째 줄에 selectTag에 에러가 뜨는데요, 이유가 궁금합니다.감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
UpdateValuesMissingError
import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm/repository/Repository'; import { User } from '../users/entities/user.entity'; import { Payment, POINT_TRANSACTION_STATUS_ENUM, } from './entities/payment.entity'; @Injectable() export class PaymentService { constructor( @InjectRepository(Payment) private readonly paymentRepository: Repository<Payment>, @InjectRepository(User) private readonly userRepository: Repository<User>, ) {} async create({ impUid, amount, currentUser }) { const pointTransaction = await this.paymentRepository.create({ impUid, amount, user: currentUser, status: POINT_TRANSACTION_STATUS_ENUM.PAYMENT, }); await this.paymentRepository.save(pointTransaction); const user = await this.userRepository.findOne({ id: currentUser.id }); console.log(amount); await this.userRepository.update( { id: user.id }, // where { point: user.point + amount }, ); return pointTransaction; } } payment 과제 중 payment.service.ts 코드입니다.결제는 문제없이 처리가 되었고, payment 테이블에 거래기록이 저장되어야 하는데 이러한 에러가 발생합니다.[Nest] 288 - 03/29/2023, 7:34:01 AM ERROR [ExceptionsHandler] Cannot perform update query because update values are not defined. Call "qb.set(...)" method to specify updated values. 여러 시도를 해봤지만 해결되지 않아 커뮤니티에 글 남깁니다!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
입력 값과 시간 복잡도 관해서 여쭙습니다!
다름이 아니라 이 입력값 N이 30인 경우,연산에 매우 오랜시간이 걸리더라구요!2중 반복문을 사용해서 구하는게 시간 복잡도상 이상적인 것인가요?아니면 DP를 사용하는 방법을 고려해야 되는건가여??
-
미해결몇 줄로 끝내는 인터랙티브 웹 개발 노하우 [초급편]
코드가 미리보기로 보여주는 확장프로그램이 뭔가요?
코드가 미리보기로 보여주는 확장프로그램이 뭔가요?
-
미해결
socket.io 실행
안녕하세요채팅을 구현하기위해 socket.io를 썼는데 통신이 안되는 것같습니다 io에 주소를 제대로 넣었고 서버 on 마다 클라이언트에서 emit으로 작성했는데 작동하지 않습니다 이유가 무엇일까요? // server 파일의 코드입니다 require('dotenv').config(); const { createApp } = require('./app'); const { appDataSource } = require('./models/index'); const startServer = async () => { const app = createApp(); const PORT = process.env.PORT; await appDataSource .initialize() .then(() => { const server = app.listen(PORT, () => { console.log(`🟢server is listening on ${PORT}🟢`); }); const io = require('socket.io')(server, { cors: { origin: true, credentials: true, }, }); const { socketMessage } = require('./middlewares/socket.io'); socketMessage(io); }) .catch((err) => { console.log(`❌Failed server connect❌`); appDataSource.destroy(); }); }; startServer(); // server의 socket 파일의 코드입니다 const jwt = require('jsonwebtoken'); const chatDao = require('../models/chatDao'); const { catchAsync } = require('../utils/error'); const socketMessage = (io) => { io.use((socket, next) => { const token = socket.handshake.headers.authorization; if (!token) { return next(new Error('Authentication error')); } jwt.verify(token, process.env.SECRET_KEY, async (err, decoded) => { if (err) { return next(new Error('Authentication error')); } userId = decoded.userId; next(); }); }); io.on('connection', (socket) => { console.log('A User Connected.'); socket.on( 'create_room', catchAsync(async (postId, callback) => { const room = await chatDao.createRoom(userId, postId); socket.join(room.raw.insertId); callback(room.raw.insertId); }) ); socket.on( 'enter_room', catchAsync(async (roomId, callback) => { socket.join(roomId); callback(roomId); }) ); socket.on('new_text', async (content, roomId, callback) => { await chatDao.createChat(userId, content, roomId); socket.to(roomId).emit('new_text', content); callback(content); }); socket.on('disconnect', () => { console.log('접속이 해제되었습니다', socket.id); clearInterval(socket.interval); }); socket.on('error', (error) => { console.error(error); }); socket.on('send', (data) => { console.log(data); socket.emit('reply', { data, }); }); socket.interval = setInterval(() => { socket.emit('news', 'Hello Socket.IO'); }, process.env.SOCKET_INTERVAL || 1000); }); }; module.exports = { socketMessage }; // client 코드입니다import React, { useState, useContext } from 'react'; import io from 'socket.io-client'; import './chat.css'; import { MenuContext } from '../../components/Nav/MenuProvider'; const Token = localStorage.getItem('accessToken'); const socket = io.connect('http://192.168.0.194:4000', { withCredentials: true, extraHeaders: {Authorization: `Bearer ${Token}` } appDataSource.destroy(); }), }); socket.on('connection', () => { console.log('Connected to server'); }); const Chat = () => { const [roomId, setRoomId] = useState([]); const [searchData, setSearchData] = useContext(MenuContext); const handleCreateRoom = event => { event.preventDefault(); socket.emit('create_room', searchData, ({ searchData, roomId }) => { console.log(`Joined room ${roomId}`); setRoomId(roomId); }); }; const handleJoinRoom = roomId => { socket.emit('enter_room', roomId, roomId => { console.log(`Joined room ${roomId}`); setRoomId(roomId); }); }; const handleNewText = content => { socket.emit('new_text', content, roomId, content => { console.log(`Sent message: ${content}`); }); }; const handleNewText = content => { socket.emit('new_text', content, roomId, content => { console.log(`Sent message: ${content}`); }); }; const onCheckEnter = e => {if (e.key === 'Enter') { handleNewText(); } }; return ( <div className="h-screen pt-36"> <button onClick={handleCreateRoom}>테스트</button> <button onClick={() => handleJoinRoom(roomId)}>테스트2</button> <input id="input-text" type="text" onKeyDown={onCheckEnter} /> <button onClick={handleCreateRoom}>제출</button> </div> ); }; export default Chat;
-
해결됨[코드캠프] 시작은 프리캠프
회원가입 과제 질문
선생님 강의 잘 보고 있습니다. 다름이 아니라 몇 가지 여쭤보고 싶어 글을 올리게 되었습니다. 정답코드를 따로 볼 수 있는 곳이 있을까요?제 위의 코드에서 문제점이 있을까요?button 기능이 활성화 되지 않는데 이유가 무엇인지 잘 모르겠습니다.<!DOCTYPE html> <html lang="ko"> <head> <title>Upgrade_sign_up_page</title> <style> #signup{ width: 1920px; height:1080px; background-color: #FFFFFF; /* border:1px solid red; */ display: flex; flex-direction: row; justify-content: center; align-items: center; } .main{ box-sizing: border-box; width : 670px; height : 960px; border : 1px solid #AACDFF; padding : 60px; box-shadow: 7px 7px 39px rgba(0,104,255,0.25); border-radius: 20px; display: flex; justify-content: center; } .main2{ width: 470px; height: 818px; /* border: 1px solid green; */ display : flex; flex-direction: column; align-items: center; } #introduce{ width: 466px; height: 94px; font-family: 'Noto Sans CJK KR'; font-style: normal; font-weight: 700; font-size: 32px; line-height: 47px; color : #0068FF } #group1{ width: 466px; height: 80px; /* border: 1px solid red; */ } #email{ width: 158px; height: 23.65px; font-family: 'Noto Sans CJK KR'; font-style: normal; font-weight: 400; font-size: 16px; line-height: 24px; color :#797979; } #vector1{ width: 466px; height: 0px; border: 1px solid #0068FF; } #sex{ width: 140px; height: 23.94px; display: flex; justify-content: space-between; font-family: 'Noto Sans CJK KR'; font-style: normal; font-weight: 400; font-size: 16px; line-height: 24px; color : #000000 /* border:1px solid #0068FF */ } #checkbox{ width: 454px; height: 21.06px; font-family: 'Noto Sans CJK KR'; font-style: normal; font-size: 13px; line-height: 21px; color : #000000 } #line{ width: 470px; height: 1px; background-color: #E6E6E6; } button{ width: 470px; height: 75px; background-color: #FFFFFF; border: 1px solid #0068FF; border-radius: 10px; display: flex; align-items: center; justify-content: center; } #button_text{ width: 70px; height: 27px; font-family: 'Noto Sans CJK KR'; font-style: normal; font-weight: 400; font-size: 17px; line-height: 27px; text-align: center; color : #0068FF } </style> </head> <body> <div id = "signup"> <div class = "main"> <div class = "main2"> <div id = "introduce"> 회원 가입을 위해<br>정보를 입력해주세요 </div> <br> <div id = "group1"> <div id = "email"> *이메일 </div> <input type ="text" style="border: none; width:200px;height: 50px;font-size: 30px;"> <div id = "vector1"></div> </div> <br> <div id = "group1"> <div id = "email"> *이름 </div> <input type ="text" style="border: none; width:200px;height: 50px;font-size: 30px;"> <div id = "vector1"></div> </div> <br> <div id = "group1"> <div id = "email"> *비밀번호 </div> <input type ="password" style="border: none; width:200px;height: 50px;font-size: 30px;"> <div id = "vector1"></div> </div> <br> <div id = "group1"> <div id = "email"> *비밀번호확인 </div> <input type ="password" style="border: none; width:200px;height: 50px;font-size: 30px;"> <div id = "vector1"></div> </div> <br><br> <div id = "sex"> <div> <input type = "radio" name = "gender">여성 </div> <div> <input type = "radio" name = "gender">남성 </div> </div> <br><br> <div id ="checkbox"> <input type = "checkbox"> 이용약관 개인정보 수집 및 이용, 마케팅 활용 선택에 모두 동의합니다. </div> <br><br> <div id = "line"></div> <br><br> <button> <div id = "button_text"> 가입하기 </div> </button> </div> </div> </div> </body> </html>
-
미해결Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
admin페이지에서 로그인이 안됩니다
예전에 로그인 됐었는데 로그아웃하고 다시 하려고 했더니 로그인이 안됩니다..
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
개발을 할 때 vue-til-server 에 있는 api 코드들은 백엔드 개발자가 프론트 개발자에게 작업해서 주게되나요?
개발을 할 때 vue-til-server 에 있는 api 코드들은 백엔드 개발자가 프론트 개발자에게 작업해서 주게되나요?만약 프론트개발자가 작업해야한다면 이부분은 어떤강의로 공부하면 될까요?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
뒤죽박죽 올라가는 리스트 순서를 대비해 sort() API를 사용하라고 적어주셨는데 도저히 모르겠습니다..!
const storage = { fetch() { const arr = []; if(localStorage.length > 0){ for(let i = 0; i < localStorage.length; i++){ if(localStorage.key(i) !== 'loglevel:webpack-dev-server'){ arr.push(JSON.parse(localStorage.getItem(localStorage.key(i)))); } } } return arr; }, }; 답변 중 불러올 때 for 문을 돌리는데 순서 보장이 안된다고 하신 부분을 보고 위 쪽에 있는 for문을 말씀하신 건가 싶었고 그럼 이 부분에 있는 배열 arr에 sort()를 추가하는 건가? 싶었는데 제가 맞게 이해한 걸까요?sort라는 변수를 하나 추가한 뒤 arr.sort()를 넣은 후 return값에 arr대신 sort를 넣어보기도 했는데 잘못된 방 법인지 딱히 바뀌지 않더라구요.. 구글을 뒤져봐도 아직 못 찾아 좀 더 찾아보면서 질문도 함께 올려봅니다..
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
unexpected end of input
console.log("안녕하세요, 문자 인증번호 보내드립니다.") function createTokenOfPhone(myphone){ if(myphone.length !== 10 && myphone.length !== 11){ console.log("에러 발생! 핸드폰 번호를 제대로 입력해 주세요. ") return } const aaaa=6 if(aaaa === undefined){ console.log("에러 발생!!! 갯수를 제대로 입력해 주세요!!!") return } else if(aaaa <= 0){ console.log("에러 발생!! 갯수가 너무 적습니다!!") return }else if(aaaa > 10){ console.log("에러 발생!!! 갯수가 너무 많습니다!!!") return } const result = String(Math.floor(Math.random() * 10 ** aaaa)).padStart(aaaa,"0") console.log(result) console.log(myphone+ "번호로 인증번호" +result+ "를 전송합니다!!!") createTokenOfPhone("01012341234") 수업과 동일하게 코드를 작성했으나 아래와 같은 에러가 뜹니다. (base) c@Dui-c-G9C7V6620L 01-01-token % node index.js/Users/c/Desktop/codecamp-backend-03./class/01-01-token/index.js:25createTokenOfPhone("01012341234") SyntaxError: Unexpected end of input at internalCompileFunction (node:internal/vm:73:18) at wrapSafe (node:internal/modules/cjs/loader:1176:20) at Module._compile (node:internal/modules/cjs/loader:1218:27) at Module._extensions..js (node:internal/modules/cjs/loader:1308:10) at Module.load (node:internal/modules/cjs/loader:1117:32) at Module._load (node:internal/modules/cjs/loader:958:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:23:47
-
미해결입문자를 위한 자바스크립트 기초 강의
수료 후 수업계획 문의드립니다.
강사님, 작년에 강의 듣다가 다시 듣게됐는데그때 놓쳤던 것들이 다시 보이기 시작했어요.뿌듯하게 입문 완료 했습니다!̆̈ .ᐟ 🎉🎉그런데 앞으로는 어떻게 공부하면 좋을지 모르겠습니다..쌤의 심화 강의가 있다면 듣고싶었는데자바스크립트는 기초밖에없는거 같아서요.. 🥲이후의 공부방법이나 강의 등등 추천 가능하실까요??
-
미해결Vue.js 시작하기 - Age of Vue.js
VUE CLI INSTALL 오류
안녕하세요 검색을 해도 아래와 같은 오류에 대한 가이드가 없어서 문의드립니다. verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js 1 info using npm@8.19.3 2 info using node@v18.13.0 3 timing npm:load:whichnode Completed in 2ms 4 timing config:load:defaults Completed in 2ms 5 timing config:load:file:C:\Program Files\nodejs\node_modules\npm\npmrc Completed in 15ms 6 timing config:load:builtin Completed in 16ms 7 timing config:load:cli Completed in 2ms 8 timing config:load:env Completed in 2ms 9 timing config:load:file:C:\GitHubTemp\.npmrc Completed in 0ms 10 timing config:load:project Completed in 3ms 11 timing config:load:file:C:\Users\y1126.kim\.npmrc Completed in 0ms 12 timing config:load:user Completed in 1ms 13 timing config:load:file:C:\Users\y1126.kim\AppData\Roaming\npm\etc\npmrc Completed in 0ms 14 timing config:load:global Completed in 1ms 15 timing config:load:validate Completed in 0ms 16 timing config:load:credentials Completed in 1ms 17 timing config:load:setEnvs Completed in 1ms 18 timing config:load Completed in 30ms 19 timing npm:load:configload Completed in 30ms 20 timing npm:load:mkdirpcache Completed in 2ms 21 timing npm:load:mkdirplogs Completed in 1ms 22 verbose title npm i @vue/cli-service 23 verbose argv "i" "@vue/cli-service" 24 timing npm:load:setTitle Completed in 2ms 25 timing config:load:flatten Completed in 4ms 26 timing npm:load:display Completed in 7ms 27 verbose logfile logs-max:10 dir:C:\Users\y1126.kim\AppData\Local\npm-cache\_logs 28 verbose logfile C:\Users\y1126.kim\AppData\Local\npm-cache\_logs\2023-03-27T04_58_26_832Z-debug-0.log 29 timing npm:load:logFile Completed in 22ms 30 timing npm:load:timers Completed in 0ms 31 timing npm:load:configScope Completed in 0ms 32 timing npm:load Completed in 66ms 33 timing arborist:ctor Completed in 3ms 34 silly logfile start cleaning logs, removing 2 files 35 silly logfile done cleaning log files 36 timing arborist:ctor Completed in 0ms 37 timing idealTree:init Completed in 58ms 38 timing idealTree:userRequests Completed in 4ms 39 silly idealTree buildDeps 40 silly fetch manifest @vue/cli-service@* 41 silly placeDep ROOT @vue/cli-service@ OK for: want: * 42 timing idealTree:#root Completed in 133202ms 43 timing idealTree:node_modules/@vue/cli-service Completed in 0ms 44 timing idealTree:buildDeps Completed in 133203ms 45 timing idealTree:fixDepFlags Completed in 0ms 46 timing idealTree Completed in 133267ms 47 timing command:i Completed in 133306ms 48 verbose type system 49 verbose stack FetchError: request to https://registry.npmjs.org/@vue%2fcli-service failed, reason: connect ETIMEDOUT 104.16.19.35:443 49 verbose stack at ClientRequest.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\minipass-fetch\lib\index.js:130:14) 49 verbose stack at ClientRequest.emit (node:events:513:28) 49 verbose stack at TLSSocket.socketErrorListener (node:_http_client:496:9) 49 verbose stack at TLSSocket.emit (node:events:525:35) 49 verbose stack at emitErrorNT (node:internal/streams/destroy:151:8) 49 verbose stack at emitErrorCloseNT (node:internal/streams/destroy:116:3) 49 verbose stack at process.processTicksAndRejections (node:internal/process/task_queues:82:21) 50 verbose cwd C:\GitHubTemp 51 verbose Windows_NT 10.0.19042 52 verbose node v18.13.0 53 verbose npm v8.19.3 54 error code ETIMEDOUT 55 error syscall connect 56 error errno ETIMEDOUT 57 error network request to https://registry.npmjs.org/@vue%2fcli-service failed, reason: connect ETIMEDOUT 104.16.19.35:443 58 error network This is a problem related to network connectivity. 58 error network In most cases you are behind a proxy or have bad network settings. 58 error network 58 error network If you are behind a proxy, please make sure that the 58 error network 'proxy' config is set properly. See: 'npm help config' 59 verbose exit 1 60 timing npm Completed in 134110ms 61 verbose unfinished npm timer reify 1679893107628 62 verbose unfinished npm timer reify:loadTrees 1679893107659 63 verbose code 1 64 error A complete log of this run can be found in: 64 error C:\Users\y1126.kim\AppData\Local\npm-cache\_logs\2023-03-27T04_58_26_832Z-debug-0.log
-
미해결조코딩의 코딩 기초와 웹 풀스택 개발
이번에 새로 결제 했는데요. 강의자료 다운로드 링크 오류같습니다.
이번에 새로 결제 했는데요. 강의자료 다운로드 링크 오류같습니다 답변 부탁드려요