묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jdk 환경변수
설정 할때 이렇게 뜨는데 어디를 고쳐야 할까요? 그전에 egov oracle을 좀 공부해서.. 경로를 어떻게 해야할지 모르겠네요
-
해결됨설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
FC layer weight 관련 질문
안녕하세요, 이번 강의에서는 fully connected core에게 weight와 input 값을 정수 값만 주고 있습니다. 하지만 실제로 DNN의 weight값들은 보통 되게 작은 소수점을 가지는 값이 도출 된다고 알고 있습니다. 또한 실제로는 fully connected layer core에서 나온 output을 activation function (ex. sigmoid 함수)에 통과시켜야합니다. 궁금한 점은 아래와 같습니다. 1) 실제로는 소수점을 가지는 숫자를 fully connected core에 넣어줘야하는데 그때는 어떤 방식을 더 거쳐야하는지, 혹은 알려진 방법 중의 하나인 fixed point를 사용하는지, 2)현업에서 소수점을 다룰 때 단순히 fixed point로의 변환을 거쳐 이번 강의에서 만든 fully connected core와 같은 AI core를 통과시키는지, 아니면 다른 더 좋은 방법이 있는지, 3) activation function (시그모이드 함수)도 core로 구현하여 이번 강의에서 소개해주신 FC core 뒤에 붙이는지, 아니면 다른 현명한 방법이 있는지, 궁금합니다. 양질의 수업 항상 감사합니다.
-
미해결Vue.js - Django 연동 웹 프로그래밍 (실전편)
Forbidden (CSRF cookie not set.): /api/login/
저는 선생님의 오류와는 다르게 아래와 같이 Forbidden (CSRF cookie not set.): /api/login/ 위 오류가 발생되어집니다. 물론 axios.defaults.xsrfCookieName = "csrftoken";axios.defaults.xsrfHeaderName = "X-CSRFToken"; 위 코드는 첨부했는데도 오류가 발생되네요.. 다소 내용이 다른 csfr 오류인데 왜그럴까요 소스코드를 아무리 비교해도 다른 부분은 찾아지지가 않네요 ㅠ
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
리다이렉트 처리를 위한 메서드 삭제
안녕하세요!! 수업 듣던 중 궁금한점이 있어 질문 남깁니다. 1) URL이 변경되는 부분이 많아지게 되어 리다이렉트를 처리하는 메소드가 늘어나게 된다면 해당 메서드를 계속 유지하는지? 삭제한다면 어떤 기준으로 삭제하는지 궁금합니다. URL이 자주 변경되지는 않겠지만 만약 많은 부분이 변경되어 리다이렉트를 처리해야 하느 메소드가 늘어나게 되면 코드도 늘어나고 지저분해지지 않을까 싶어서요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jdk 버전
안녕하세요 다름이 아니라 jdk 8u281(os는 windows)를 쓰고 있는데 jdk 11로 바꿔야 할까요? 그리고 jdk11 학습용도 유료인가요?
-
미해결처음 배우는 리액트 네이티브
input 내용 관련 질문
Input에서 안드로이드에서는 add a task가 보이지 않고 또 안드로이드 ios둘다 input에 작성할 때 작성하는 글이 보이지 않는데 이거 이유가 왜그럴까요?
-
해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
코드 질문 있어요
#item-list > #item3 이런 코드를 짜셨는데 어차피 해당 파일에 item3는 한 개밖에 없는데 굳이 #item-list > 이걸 앞에 붙이는 이유가 있을까요 ? #item-list라는 것 안에 들어있는 item3를 지칭하는 것은 알겠는데 붙이는 이유가 있나요? 제가 #item-list > 이 부분을 제거해도 잘 작동되길래 질문 드립니다.
-
미해결스프링 핵심 원리 - 기본편
new memoryMemberRepository() 의 주소값 문의
public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository()); // MemberServiceImpl에 생성자 만들어서 넣어준다. Constructor Injection } public OrderService orderService() { return new OrderServiceImpl(new MemoryMemberRepository(), new FixDiscountPolicy()); // Constructor Injection }}여기서 new MemoryMemberRepository를 따로 했기 때문에 다른 주소값을 가지는게 아닌가요?? 그래서 MemberService와 OrderService는 다른 MemoryMemberRepository를가진다고 생각했었습니다.아니면 코드를 아래와 같이 써야한다고 생각했습니다. public class AppConfig { static MemberRepository memberRepository = new MemoryMemberRepository(); public MemberService memberService() { return new MemberServiceImpl(memberRepository); // MemberServiceImpl에 생성자 만들어서 넣어준다. Constructor Injection } public OrderService orderService() { return new OrderServiceImpl(memberRepository, new FixDiscountPolicy()); }}이렇게 해야 같은 주소값을 가지는 memberRepository객체를 만들 수 있다고 생각했습니다.제 생각이 틀린 건가요? 따로 new를 했는데 왜 같은 주소를 갖는지 모르겠습니다.
-
미해결[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]
결제 기능 연동하기 질문
강사님 안녕하세요, 강의 너무 잘 듣고 있습니다. 결제 기능 연동에 대한 질문드립니다. (질문) 참고할만한 결제 기능 연동 튜토리얼이나, 메뉴얼이 있을까요? 네이버페이, 아임포트, 그누보드 등 구글링해보았지만 Getting started 같은 예제는 따로 없고 단순 rest api 명령어 나열일 뿐이라, 제 수준에서 따라하기가 버거웠습니다. 어느 결제 모듈?을 사용해야 할지, 그리고 어떻게 구현해야할지 막막한 상황입니다. 적당한 모듈 추천, 참조 문서 등 방향 제시라도 해주신다면 큰 도움이 될 것 같습니다. 구현하고싶은 기능은 다음과 같습니다. 1. 웹페이지 내에 '구매하기' 버튼 추가 후, PG사 결제창 띄우기 2.회원의 결제 내역을 mysql DB에 저장하고, '마이페이지'에서 결제상태 변경하기 1강 48초에 보면, 완성된 웹페이지에서 결제화면이 나오는데, Part 1 강의를 모두 들어본 결과 해당부분 구현하는 것에 대한 코멘트를 찾지 못했습니다. ㅜㅜ 강의 자료 중 AWS 서버 연결하는 것에 대해서는 강의에서 다루진 않더라도 자료에 적어주셔서 너무 큰 도움이 되었습니다. 혹시 이런식으로 영상까진 아니더라도, 문서로 된 짧은 메뉴얼이라도 만들어주실 계획은 없으실까요? 혹시 해서 Part 2 내용인지 했는데, Part2에도 없는듯합니다. (아직 수강중이라서 혹시 다루셨다면 강의챕터 알려주시면 감사하겠습니다.) 감사합니다.
-
해결됨캐글 Advanced 머신러닝 실전 박치기
Group by Case When을 새로 작성해보았습니다.
안녕하세요 권철민 강사님!강의 매우 유익하게 듣고 있습니다!!강사님 강의만 총 6개정도 결제했습니다 ㅎㅎ파이썬 머신러닝 부터 CNN, 딥러닝심화, 캐글까지 섭렵하려합니다!! ------------------------------------------------ 강의 하신 내용 가운데 "Group by Case When" 부분을새로 만들어 보았습니다! (올린 사진이 좀 작네요 ㅠㅠ 죄송합니다) 같은 결과를 다르게 도출하는 방법이 있음을 알아가며,이렇게 하나씩 해보는게, 매우 큰 도움이 되고 있습니다. 감사합니다!!
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
debug_toolbar 세팅에 problem 메시지가 보입니다.
긴 설명보다 스크린 캡쳐 화면 붙여드립니다. 구글링을 했는데 마땅한 답변이 없어보여 질문드립니다. 미리 감사드립니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
멱등 - 고려하지 않는다 라는 말의 의미
안녕하세요! 강의를 보다 이해가 잘 가지 않아 문의 드립니다. 멱등은 외부 요인으로부터 중간에 리소스가 변경되는 경우는 고려하지 않는다고 하셨는데요. 고려하지 않는다 라는 말의 의미를 사용자 1의 데이터가 사용자 2로 인해 값이 20에서 30으로 변경된 경우는, 결과적으로 값이 변경되었기 때문에 스펙상 GET은 멱등함에도 불구하고 멱등하지 않게 됐다는 말로 이해하면 될까요?
-
미해결애플 웹사이트 인터랙션 클론!
선생님 안녕하세요!
선생님 안녕하세요 canvas_opacity_out 실행되는 시점에 main.js:299 Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLCanvasElement or HTMLImageElement or HTMLVideoElement or ImageBitmap or OffscreenCanvas or SVGImageElement or VideoFrame)'. at playAnimation (main.js:299) at scrollLoop (main.js:389) at main.js:400 에러가 출력 됩니다. 혼자 해결해보려고 완성본 파일도 찾아보고 했지만 해결이 어려워 질문 드립니다. 감사합니다. (() => { let yOffset = 0 // window.pageYOffset 대신 사용할 변수 let prevScrollHeight = 0 // 현재 스크롤 위치(yOffset)보다 이전에 위치한 스크롤 섹션들의 스크롤 높이값의 합 let currentScene = 0 // 현재 활성하된(눈 앞에 보고 있는 ) 화면 let enterNewScene = false // 새로운 scene이 시작되는 순간 false const sceneInfo = [ { // 0 type: 'sticky', heightNum : 5, // 브라우저 높이의 5배로 scrollHeight 세팅 scrollHeight: 0, objects: { container: document.querySelector('#scroll-section-0'), messageA: document.querySelector('#scroll-section-0 .main-message.a'), messageB: document.querySelector('#scroll-section-0 .main-message.b'), messageC: document.querySelector('#scroll-section-0 .main-message.c'), messageD: document.querySelector('#scroll-section-0 .main-message.d'), canvas: document.querySelector('#video-canvas-0'), context: document.querySelector('#video-canvas-0').getContext('2d'), videoImages: [] }, values: { videoImageCount: 578, imageSequence: [0, 577], canvas_opacity: [1,0,{ start: 0.9 , end: 1}], messageA_opacity_in: [0, 1, { start: 0.05, end: 0.15 }], messageB_opacity_in: [0, 1, { start: 0.25, end: 0.29 }], messageC_opacity_in: [0, 1, { start: 0.45, end: 0.5 }], messageD_opacity_in: [0, 1, { start: 0.7, end: 0.85 }], messageA_translateY_in: [20, 0, { start: 0.1, end: 0.2 }], messageB_translateY_in: [20, 0, { start: 0.3, end: 0.4 }], messageC_translateY_in: [20, 0, { start: 0.5, end: 0.6 }], messageD_translateY_in: [20, 0, { start: 0.7, end: 0.8 }], messageA_opacity_out: [1, 0, { start: 0.1, end: 0.2 }], messageB_opacity_out: [1, 0, { start: 0.3, end: 0.31}], messageC_opacity_out: [1, 0, { start: 0.55, end: 0.6 }], messageD_opacity_out: [1, 0, { start: 0.9, end: 1.0 }], messageA_translateY_out: [0, -20, { start: 0.25, end: 0.3 }], messageB_translateY_out: [0, -20, { start: 0.45, end: 0.5 }], messageC_translateY_out: [0, -20, { start: 0.65, end: 0.7 }], messageD_translateY_out: [0, -20, { start: 0.85, end: 0.9 }], } }, { // 1 type: 'normal', heightNum : 5, scrollHeight: 0, objects: { container: document.querySelector('#scroll-section-1'), content: document.querySelector('#scroll-section-1 .description') } }, { // 2 type: 'sticky', heightNum : 5, scrollHeight: 0, objects: { container: document.querySelector('#scroll-section-2'), messageA: document.querySelector('#scroll-section-2 .a'), messageB: document.querySelector('#scroll-section-2 .b'), messageC: document.querySelector('#scroll-section-2 .c'), pinB: document.querySelector('#scroll-section-2 .b .pin'), pinC: document.querySelector('#scroll-section-2 .c .pin'), canvas: document.querySelector('#video-canvas-1'), context: document.querySelector('#video-canvas-1').getContext('2d'), videoImages: [] }, values: { videoImageCount: 622, imageSequence: [0, 621], canvas_opacity_in: [0,1,{ start: 0, end: 0.1}], canvas_opacity_out: [1,0,{ start: 0.9, end: 0.95}], messageA_translateY_in: [20, 0, { start: 0.15, end: 0.2 }], messageB_translateY_in: [30, 0, { start: 0.5, end: 0.55 }], messageC_translateY_in: [30, 0, { start: 0.72, end: 0.77 }], messageA_opacity_in: [0, 1, { start: 0.15, end: 0.2 }], messageB_opacity_in: [0, 1, { start: 0.5, end: 0.55 }], messageC_opacity_in: [0, 1, { start: 0.72, end: 0.77 }], messageA_translateY_out: [0, -20, { start: 0.3, end: 0.35 }], messageB_translateY_out: [0, -20, { start: 0.58, end: 0.63 }], messageC_translateY_out: [0, -20, { start: 0.85, end: 0.9 }], messageA_opacity_out: [1, 0, { start: 0.3, end: 0.35 }], messageB_opacity_out: [1, 0, { start: 0.58, end: 0.63 }], messageC_opacity_out: [1, 0, { start: 0.85, end: 0.9 }], pinB_scaleY: [0.5, 1, { start: 0.6, end: 0.65 }], pinC_scaleY: [0.5, 1, { start: 0.87, end: 0.92 }], pinB_opacity_in: [0, 1, { start: 0.6, end: 0.65 }], pinC_opacity_in: [0, 1, { start: 0.87, end: 0.92 }], pinB_opacity_out: [1, 0, { start: 0.68, end: 0.73 }], pinC_opacity_out: [1, 0, { start: 0.95, end: 1 }] } }, { // 3 type: 'sticky', heightNum : 5, scrollHeight: 0, objects: { container: document.querySelector('#scroll-section-3'), canvasCaption: document.querySelector('.canvas-caption') }, values: { } } ] const setCanvasImages = () => { let imgElem for( let i = 0; i < sceneInfo[0].values.videoImageCount; i++) { imgElem = new Image() imgElem.src =`./video/IMG_${5555 + i}.jpg` sceneInfo[0].objects.videoImages.push(imgElem) } let imgElem2 for( let i = 0; i < sceneInfo[0].values.videoImageCount; i++) { imgElem2 = new Image() imgElem2.src =`./video/IMG_${6134 + i}.jpg` sceneInfo[2].objects.videoImages.push(imgElem2) } } setCanvasImages() const setLayout = () => { // 각 스크롤 섹션의 높이 세팅 for( let i = 0; i < sceneInfo.length; i++ ) { if( sceneInfo[i].type === 'sticky') { sceneInfo[i].scrollHeight = sceneInfo[i].heightNum * window.innerHeight sceneInfo[i].objects.container.style.height = `${sceneInfo[i].scrollHeight}px` } else if( sceneInfo[i].type === 'normal') { sceneInfo[i].scrollHeight = sceneInfo[i].objects.container.offsetHeight } sceneInfo[i].objects.container.style.height = `${sceneInfo[i].scrollHeight}px` } yOffset = window.pageYOffset let totalScrollHeight = 0 for ( let i = 0; i < sceneInfo.length; i++ ) { totalScrollHeight += sceneInfo[i].scrollHeight if( totalScrollHeight >= yOffset ) { currentScene = i break; } } document.body.setAttribute('id', `show-scene-${currentScene}`) const heightRatio = window.innerHeight / 1080 sceneInfo[0].objects.canvas.style.transform = `translate3d(-50%, -50%, 0) scale(${heightRatio})` sceneInfo[2].objects.canvas.style.transform = `translate3d(-50%, -50%, 0) scale(${heightRatio})` } const calcValues = ( values, currentYOffset ) => { let rv // 현재 스크롤섹션에서 스크롤된 비율로 구하기 const scrollHeight = sceneInfo[currentScene].scrollHeight const scrollRatio = currentYOffset / scrollHeight if ( values.length === 3 ) { // start ~~ end 사이에 애니메이션 실행 const partScrollStart = values[2].start * scrollHeight const partScrollEnd = values[2].end * scrollHeight const partScrollHeight = partScrollEnd - partScrollStart if( currentYOffset >= partScrollStart && currentYOffset <= partScrollEnd) { rv = (currentYOffset - partScrollStart) / partScrollHeight * ( values[1] - values[0] ) + values[0] } else if( currentYOffset < partScrollStart ) { rv = values[0] } else if( currentYOffset > partScrollEnd ) { rv = values[1] } } else { rv = scrollRatio * ( values[1] - values[0]) + values[0] } return rv } const playAnimation = () => { const objects = sceneInfo[currentScene].objects const values = sceneInfo[currentScene].values const currentYOffset = yOffset - prevScrollHeight const scrollHeight = sceneInfo[currentScene].scrollHeight const scrollRatio = currentYOffset / scrollHeight switch (currentScene) { case 0: let sequence = Math.round(calcValues(values.imageSequence, currentYOffset)) objects.context.drawImage(objects.videoImages[sequence], 0, 0) objects.canvas.style.opacity = calcValues(values.canvas_opacity, currentYOffset) if (scrollRatio <= 0.22) { // in objects.messageA.style.opacity = calcValues(values.messageA_opacity_in, currentYOffset); objects.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_in, currentYOffset)}%, 0)`; } else { // out objects.messageA.style.opacity = calcValues(values.messageA_opacity_out, currentYOffset); objects.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.42) { // in objects.messageB.style.opacity = calcValues(values.messageB_opacity_in, currentYOffset); objects.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_in, currentYOffset)}%, 0)`; } else { // out objects.messageB.style.opacity = calcValues(values.messageB_opacity_out, currentYOffset); objects.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.62) { // in objects.messageC.style.opacity = calcValues(values.messageC_opacity_in, currentYOffset); objects.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_in, currentYOffset)}%, 0)`; } else { // out objects.messageC.style.opacity = calcValues(values.messageC_opacity_out, currentYOffset); objects.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.82) { // in objects.messageD.style.opacity = calcValues(values.messageD_opacity_in, currentYOffset); objects.messageD.style.transform = `translate3d(0, ${calcValues(values.messageD_translateY_in, currentYOffset)}%, 0)`; } else { // out objects.messageD.style.opacity = calcValues(values.messageD_opacity_out, currentYOffset); objects.messageD.style.transform = `translate3d(0, ${calcValues(values.messageD_translateY_out, currentYOffset)}%, 0)`; } break case 2: let sequence2 = Math.round(calcValues(values.imageSequence, currentYOffset)) objects.context.drawImage(objects.videoImages[sequence2], 0, 0) if (scrollRatio <= 0.5) { // in objects.canvas.style.opacity = calcValues(values.canvas_opacity_in, currentYOffset) } else { // out objects.canvas.style.opacity = calcValues(values.canvas_opacity_out, currentYOffset) } if (scrollRatio <= 0.25) { // in objects.messageA.style.opacity = calcValues(values.messageA_opacity_in, currentYOffset); objects.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_in, currentYOffset)}%, 0)`; } else { // out objects.messageA.style.opacity = calcValues(values.messageA_opacity_out, currentYOffset); objects.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.57) { // in objects.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_in, currentYOffset)}%, 0)`; objects.messageB.style.opacity = calcValues(values.messageB_opacity_in, currentYOffset); objects.pinB.style.transform = `scaleY(${calcValues(values.pinB_scaleY, currentYOffset)})`; } else { // out objects.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_out, currentYOffset)}%, 0)`; objects.messageB.style.opacity = calcValues(values.messageB_opacity_out, currentYOffset); objects.pinB.style.transform = `scaleY(${calcValues(values.pinB_scaleY, currentYOffset)})`; } if (scrollRatio <= 0.83) { // in objects.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_in, currentYOffset)}%, 0)`; objects.messageC.style.opacity = calcValues(values.messageC_opacity_in, currentYOffset); objects.pinC.style.transform = `scaleY(${calcValues(values.pinC_scaleY, currentYOffset)})`; } else { // out objects.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_out, currentYOffset)}%, 0)`; objects.messageC.style.opacity = calcValues(values.messageC_opacity_out, currentYOffset); objects.pinC.style.transform = `scaleY(${calcValues(values.pinC_scaleY, currentYOffset)})`; } break case 3: break } } const scrollLoop = () => { enterNewScene = false prevScrollHeight = 0 // 값 초기화 for( let i = 0; i < currentScene; i++ ) { prevScrollHeight += sceneInfo[i].scrollHeight } if( yOffset > prevScrollHeight + sceneInfo[currentScene].scrollHeight) { enterNewScene = true currentScene ++ document.body.setAttribute('id', `show-scene-${currentScene}`) } if( yOffset < prevScrollHeight) { if( currentScene === 0) return //모바일 바운스 때문에 enterNewScene = true currentScene -- document.body.setAttribute('id', `show-scene-${currentScene}`) } if( enterNewScene ) return playAnimation() } window.addEventListener('scroll',() => { yOffset = window.pageYOffset scrollLoop() }) window.addEventListener('load', () => { setLayout() sceneInfo[0].objects.context.drawImage(sceneInfo[0].objects.videoImages[0], 0, 0) }) window.addEventListener('resize', setLayout) })()
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요 Entity에서 Map 프로퍼티 질문입니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 아니요2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 강의를 다 듣고 따로 실습을 진행하다가 궁금함이 생겨 질문드립니다! 체스 게임을 구현 중 Board 클래스에 Map형태로 key값은 Position 클래스 value는 Piece 클래스로 설정하였고 @MapKeyJoinColumn어노테이션을 사용하여 연관관계 매핑하였습니다 생성한 board를 초기화할 때 Position과 Piece도 같이 초기화해주는데 Map부분 테이블이 Position보다 먼저 생성되어 오류가 발생합니다 확인해보니 hibernate에서 Map Key값을 cascade를 지원하지 않는다고 합니다 1. Key cascade를 지원하지 않으니 board 초기화할때 key를 생성하고 디비에 저장시키는 작업을 먼저 진행할 수 밖에 없는걸까요? 혹시 다른 방법이 있을까요? ( 위 코드에서는 BoardFactory에서 Position을 먼저 디비에 flush 시키는 코드 추가 ) 2. 현업에서는 엔티티에서 Map 속성을 종종 사용하는지 지양하는지 궁금합니다
-
미해결iOS/Android 앱 개발을 위한 실전 React Native - Basic
안녕하십니까 이번에 수강을 하게된 직장인 입니다
안녕하십니까 강의자님 궁금증이 생겨 커뮤니티에 글을 남깁니다. hooks 보단 Class 형을 다루시고 있는데 Class를 사용하는 이유가 있습니까?? hooks 보다 나은 점이나 그런 이유에 대해 궁금합니다!!
-
해결됨디스이즈 디스커버 디스코드 파이썬봇
네온사인 닉네임 만들기 오류
``` discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Forbidden: 403 Forbidden (error code: 50013): Missing Permissions ``` 역할 권한이 없다고 계속 오류가 나는데 어떻게 해야할지 모르겠네요..
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
spring MVC와 REST API차이의 개념이 궁금합니다.
제가 이해한건 Spring MVC와 REST API 개발의 차이는 VIEW를 반환하는가 아니면 JSON의 데이터를 반환하는가의 차이인데 제가 이해한것이 맞나요??
-
미해결15일간의 빅데이터 파일럿 프로젝트
flume으로 파일이 잘 넘어갔는지 확인하는 부분에서 오류가 납니다ㅠㅠ
안녕하세요 플럼에서 자꾸 오류가 나서 문의 드립니다....
-
미해결유니티(Unity)로 시작하는 게임개발: Part 3. 슈팅게임 개발
코드스타일 문의
안녕하세요. 코드스타일(?)관련 문의를 드립니다.공부하던 도중 업데이트함수를 아래와 같이, 강의교안과 다르게 작성해보았습니다.메모리 구조 관련하여 강의교안처럼 newX, newY를 따로 만드는 것이 좋은지, 아니면 그냥 아래처럼 써도 되는건지 모르겠습니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerScript : MonoBehaviour { public float speed = 5; Vector3 min, max; Vector2 colSize; Vector2 chrSize; void Start() { min = Camera.main.ViewportToWorldPoint(new Vector3(0, 0, 0)); max = Camera.main.ViewportToWorldPoint(new Vector3(1, 1, 0)); print("min: " + min + ", max: " + max); colSize = GetComponent<BoxCollider2D>().size; chrSize = new Vector2(colSize.x / 2, colSize.y / 2); print(chrSize); } void Update() { float x = Input.GetAxisRaw("Horizontal"); float y = Input.GetAxisRaw("Vertical"); Vector3 dir = new Vector3(x, y, 0).normalized; transform.position += dir * Time.deltaTime * speed; if(transform.position.x < min.x + chrSize.x) { transform.position = new Vector3(min.x + chrSize.x, transform.position.y, transform.position.z); } if (transform.position.x > max.x - chrSize.x) { transform.position = new Vector3(max.x - chrSize.x, transform.position.y, transform.position.z); } if (transform.position.y < min.y + chrSize.y) { transform.position = new Vector3(transform.position.x, min.y + chrSize.y, transform.position.z); } if (transform.position.y > max.y - chrSize.y) { transform.position = new Vector3(transform.position.x, max.y - chrSize.y, transform.position.z); } } }
-
미해결프론트엔드 개발자를 위한 웹팩
html 페이지가 여러개인 경우는 어떻게 구성해야 할까요?
안녕하세요~ 한 페이지로 셋팅하는 것은 이제 마스터 했습니다~ 다만 산출물이 SPA가 아닌 1) 1번 html에서 링크를 클릭했을 때 2번 html로 페이지가 넘어가도록 보여져야 하는 경우 2) 여러 페이지 작업시 각각의 페이지 뷰를 확인해야 하는 경우 이경우 실무에서는 webpack 세팅이 어떻게 되어야 하는지 궁금합니다~!