묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
네비게이션 메뉴 눌렀을 때 페이지의 처음부터 보이게 하는 방법
안녕하세요, 이번 강의 마지막 부분에 전반적으로 모바일버전이 잘 작동하는지 확인하시는 과정에서 네비게이션 메뉴를 눌러 각 페이지로 이동하는지도 보여주셨는데요, 이 과정에서 상단에 고정되어 있는 header가 페이지의 내용을 일부 가리게 되는 현상이 보입니다. 이를 조정해서 페이지의 전체가 보이도록 하는 방법이 있을까요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
구글 코랩
구글 코랩도 IDE라고 할 수 있나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
plugin 오류가 계속 나요ㅠ(해결완료)
안녕하세요. 강의를 듣고 있는 수강생입니다. plugin 오류로 인해 환경 설정 후 진도를 못나가고 있습니다ㅜ 처음 build 하면 아래와 같이 에러가 나고, External Libraries에도 gradle관련 것들이 안나옵니다. java도 11버전이고 무엇이 문제일까요ㅠ 도움 부탁드립니다. (zipkyh@naver.com <- 요이로 파일 압축하여 메일 드렸습니다.)
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
무한 로딩 에러처리
back routers, models, passport font sagas reducers 부분 오타 확인하구 강의도 다시 돌려봤는데 못잡겠어서 문의 납깁니다 어디 부븐을 확인해야 할까요? 기초적인 질문 죄송합니다ㅠ
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
노드
노드라는것은 정확하게 무엇인지알수있을까요?
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
문의 드립니다.
아래 코드에서 오류가 발생합니다. 잘못 입력된 부분이 있는지 확인이 가능할까요? sns.relplot( x="PBR(IFRS-연결)", y="수익률(%)", col="size", hue="베타 (M,5Yr)", data=df, palette="coolwarm", ) ValueError: could not broadcast input array from shape (28279,2) into shape (28279)
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
씨름 선수 문제관련 질문
안녕하세요. 강의 잘 듣고 있습니다. 씨름 선수(그리디) 문제에서 잘 이해가 되지 않는 부분이 있습니다. 키순으로 정렬해서 두번째 지원자(181 60) 는 선발이 안되는 이유가 자기보다 큰(183)선수보다 몸무게가 작아서 라고 하셨는데요. 선발 원칙을 보면 “다른 모든 지원자와 비교하여 키와 몸무게 중 적어도 하나는 다른 지원자보다 키가 크거나 몸무게가 많이 나가는 지원자만 뽑기로 했습니다.” 라고 되어 있으니 다른 모든 지원자와 비교하면 키는 180인 지원자 보다 크니 해당 조건에 맞는 것 아닌가요? 적어도 하나는 키가 크거나 몸무게가 많으면 되니까요. 하지만 강의에서 보면 비교 대상이 자신보다 키가 큰 사람으로 한정하고 있습니다. 적어도 하나를 만족하려면 이미 자신보다 키가 작은 사람이 존재하기 때문에 키로는 조건을 만족한다고 봐야 하는것 아닌지요. 또, 그 다음 문장을 보면 A 지원자가 다른 모든 지원자와 비교하여 키와 몸무게가 모두 작거나 가벼운 경우가 한 번이라고 있다면 A지원자를 뽑지 않는다는 것입니다. 이 부분은 키와 몸무게가 모두 다른 사람과 비교해서 불리한 사람이라는 의미인가요? 그렇다면 항상 모든 지원자중 가장 키가 작고 몸무게가 가벼운 한명만 해당하는 것 아닌가요? 처음 문제를 읽었을때 선발조건과 입력예제, 출력예제와 맞지 않는다는 생각이 들었고. 강의를 듣고 나니 의도하신 조건과 문제에 기술된 설명이 차이가 있는 것 같다는 생각이 들었습니다.
-
미해결애플 웹사이트 인터랙션 클론!
선생님 질문이 있습니다.
/** *ECMA6 SCRIPT STUDY */ //const arr=[1,2,3]; //바람직한 패턴이 아닙니다. (()=>{ //const arr=[1,2,3]; //지역변수로 선언하고 코딩하는 것을 제안. const sceneInfo=[ { type:'sticky', //0 heightNum:5, //브라우저 높이의 5배로 scrollheight 세팅. scrollHeight:0, //문서길이에 대해서 섹션의 애니메이션 구간을 미리 설정합니다. //일단 0이라고 설정한 부부은 기기마다 값이 달라질 수 있기 때문에 //스크롤 높이의 몇배수 만큼 설정을 해주려고 합니다. objs:{ 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'), }, values:{ messageA_opacity_in: [0, 1, { start: 0.1, end: 0.2 }], messageB_opacity_in: [0, 1, { start: 0.3, end: 0.4 }], messageC_opacity_in: [0, 1, { start: 0.5, end: 0.6 }], messageD_opacity_in: [0, 1, { start: 0.7, end: 0.8 }], 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.25, end: 0.3 }], messageB_opacity_out: [1, 0, { start: 0.45, end: 0.5 }], messageC_opacity_out: [1, 0, { start: 0.65, end: 0.7 }], messageD_opacity_out: [1, 0, { start: 0.85, end: 0.9 }], 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 }] } }, //각구간을 4개로 나눴습니다. { //1 type:'normal', heightNum:5, scrollHeight:0, objs:{ container: document.querySelector('#scroll-section-1') } }, { type:'sticky', //2 scrollHeight:0, objs:{ 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') }, values: { messageA_translateY_in: [20, 0, { start: 0.15, end: 0.2 }], messageB_translateY_in: [30, 0, { start: 0.6, end: 0.65 }], messageC_translateY_in: [30, 0, { start: 0.87, end: 0.92 }], messageA_opacity_in: [0, 1, { start: 0.25, end: 0.3 }], messageB_opacity_in: [0, 1, { start: 0.6, end: 0.65 }], messageC_opacity_in: [0, 1, { start: 0.87, end: 0.92 }], messageA_translateY_out: [0, -20, { start: 0.4, end: 0.45 }], messageB_translateY_out: [0, -20, { start: 0.68, end: 0.73 }], messageC_translateY_out: [0, -20, { start: 0.95, end: 1 }], messageA_opacity_out: [1, 0, { start: 0.4, end: 0.45 }], messageB_opacity_out: [1, 0, { start: 0.68, end: 0.73 }], messageC_opacity_out: [1, 0, { start: 0.95, end: 1 }], pinB_scaleY: [0.5, 1, { start: 0.6, end: 0.65 }], pinC_scaleY: [0.5, 1, { start: 0.87, end: 0.92 }], } }, { //3 type:'sticky', scrollHeight:0, heightNum:5, objs:{ container: document.querySelector('#scroll-section-3'), canvasCaption: document.querySelector('.canvas-caption') }, values:{ } } ]; let yOffset=0; let prevScrollHeight=0; //현재 스크롤위치보다 이전에 위치한 스크롤 섹션들의 스크롤 높이값의 합. let currentScene=0; //활성화된 씬 let enterNewScene=false; //새로운 scene이 시작되는 순간. function setLayout(){ for(let i=0; i<sceneInfo.length; i++){ if (sceneInfo[i].type==='sticky'){ sceneInfo[i].scrollHeight = sceneInfo[i].heightNum * window.innerHeight; sceneInfo[i].objs.container.style.height=`${sceneInfo[i].scrollHeight}px`; //기본적으로 문자열을 설정해야하나 ${--- } << ---이부분에 변수이름을 적용 가능 }else if(sceneInfo[i].type==='normal'){ sceneInfo[i].scrollHeight = sceneInfo[i].objs.container.style.offsetHeight; } sceneInfo[i].objs.container.style.height=`${sceneInfo[i].scrollHeight}px`; } //정확하게 한번더 선언. 재선언 가능의 LET yOffset=window.pageYOffset; //load이벤트와 연관지어야하는 이유. let totalScrollHeight=0; for(let i=0; i<sceneInfo.length; i++){ totalScrollHeight+=sceneInfo[i].scrollHeight; if(totalScrollHeight >= yOffset){ currentScene=i; break; /* *총 전체스크롤 높이가 현재 커서하고있는 페이지 스크롤 위치보다 크면, *break를 사용하여 for 문을 탈출합니다. *그리고 i값을 currentscene으로 세팅해줍니다. */ } } document.body.setAttribute('id',`show-scene-${currentScene}`); } function calcValues(values, currentYOffset){//스크롤 비율 계산 let rv; let scrollRatio=currentYOffset/sceneInfo[currentScene].scrollHeight; let scrollHeight=sceneInfo[currentScene].scrollHeight; //currentYOffset은 playanimation에서 한개의 씬을 넘길때마다 초기화되는 스크롤의 값. //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; } function playAnimation(){ const objs=sceneInfo[currentScene].objs; const values=sceneInfo[currentScene].values; const currentYOffset=yOffset-prevScrollHeight; const scrollHeight=sceneInfo[currentScene].scrollHeight; const scrollRatio=(yOffset-prevScrollHeight) / scrollHeight; switch (currentScene){ case 0: //let messageA_opacity_0=values.messageA_opacity[0]; //let messageA_opacity_1=values.messageA_opacity[1]; if(scrollRatio<=0.22){ objs.messageA.style.opacity=calcValues(values.messageA_opacity_in,currentYOffset); objs.messageA.style.transform=`translateY(${calcValues(values.messageA_translateY_in,currentYOffset)}%)`; } else{ objs.messageA.style.opacity=calcValues(values.messageA_opacity_out,currentYOffset); objs.messageA.style.transform=`translateY(${calcValues(values.messageA_translateY_out,currentYOffset)}%)`; } if (scrollRatio <= 0.42) { // in objs.messageB.style.opacity = calcValues(values.messageB_opacity_in, currentYOffset); objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageB.style.opacity = calcValues(values.messageB_opacity_out, currentYOffset); objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.62) { // in objs.messageC.style.opacity = calcValues(values.messageC_opacity_in, currentYOffset); objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageC.style.opacity = calcValues(values.messageC_opacity_out, currentYOffset); objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.82) { // in objs.messageD.style.opacity = calcValues(values.messageD_opacity_in, currentYOffset); objs.messageD.style.transform = `translate3d(0, ${calcValues(values.messageD_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageD.style.opacity = calcValues(values.messageD_opacity_out, currentYOffset); objs.messageD.style.transform = `translate3d(0, ${calcValues(values.messageD_translateY_out, currentYOffset)}%, 0)`; } break; case 2: // console.log('2 play'); if (scrollRatio <= 0.32) { // in objs.messageA.style.opacity = calcValues(values.messageA_opacity_in, currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_in, currentYOffset)}%, 0)`; } else { // out objs.messageA.style.opacity = calcValues(values.messageA_opacity_out, currentYOffset); objs.messageA.style.transform = `translate3d(0, ${calcValues(values.messageA_translateY_out, currentYOffset)}%, 0)`; } if (scrollRatio <= 0.67) { // in objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_in, currentYOffset)}%, 0)`; objs.messageB.style.opacity = calcValues(values.messageB_opacity_in, currentYOffset); objs.pinB.style.transform = `scaleY(${calcValues(values.pinB_scaleY, currentYOffset)})`; } else { // out objs.messageB.style.transform = `translate3d(0, ${calcValues(values.messageB_translateY_out, currentYOffset)}%, 0)`; objs.messageB.style.opacity = calcValues(values.messageB_opacity_out, currentYOffset); objs.pinB.style.transform = `scaleY(${calcValues(values.pinB_scaleY, currentYOffset)})`; } if (scrollRatio <= 0.93) { // in objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_in, currentYOffset)}%, 0)`; objs.messageC.style.opacity = calcValues(values.messageC_opacity_in, currentYOffset); objs.pinC.style.transform = `scaleY(${calcValues(values.pinC_scaleY, currentYOffset)})`; } else { // out objs.messageC.style.transform = `translate3d(0, ${calcValues(values.messageC_translateY_out, currentYOffset)}%, 0)`; objs.messageC.style.opacity = calcValues(values.messageC_opacity_out, currentYOffset); objs.pinC.style.transform = `scaleY(${calcValues(values.pinC_scaleY, currentYOffset)})`; } break; case 3: break; } } function scrollLoop(){ prevScrollHeight=0; enterNewScene=false; for(let i = 0; i<currentScene; i++){ prevScrollHeight+=sceneInfo[i].scrollHeight; } if (yOffset>prevScrollHeight+sceneInfo[currentScene].scrollHeight){ enterNewScene=true; currentScene++; } if (yOffset<prevScrollHeight){ enterNewScene=true; if(currentScene===0) return;//모바일기기의 위로 올릴경우 -가 될 때를 방지 currentScene--; } document.body.setAttribute('id',`show-scene-${currentScene}`); //"setAttribute 속성은 id 값을 두번재 인자값으로 줄 수 있다. 라는 의미" console.log(currentScene); if (enterNewScene) return ; playAnimation(); } window.addEventListener('resize',setLayout); window.addEventListener('load',setLayout); //각 스크롤 높이를 로드, 리사이즈 될 때 스크롤의 높이를 잡아줍니다. window.addEventListener('scroll',()=>{ yOffset=window.pageYOffset; scrollLoop(); }); setLayout(); })(); 지금까지 따라 작성한 내용들인데 body요소의 id가 0 , 1,2,3 이런식으로 바뀌어야하는데 0, 1 까지만 바뀌고 2-3으로는 바뀌지가 않아서 2씬에서 핀위의 글씨가 보이지 않습니다 어딘지 잘모르겠습니다...
-
미해결타입스크립트 입문 - 기초부터 실전까지
Delete ␍ eslint (prettier/prettier) 에러
실습하다가 위와 같은 에러가 세미콜론 끝에서 계속 떠서 검색해보니까 prettier 2.0이상 부터 endOfLine 옵션 default가 auto'에서 'lf'변경되면서 뜨는것 같습니다! 강제로 아래와 같이 설정해주면 안뜨네요. .eslintrc.js 파일 내 아래와 같이 추가설정 rules: { 'prettier/prettier': [ 'error', { endOfLine: 'auto' }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 db 생성 에러
안녕하세요! [프로젝트 환경설정 - H2 데이터베이스 설치] 강의를 듣다가 질문이 생겨서 문의드립니다. 환경은 windows이고 강의 내용에 따라서 H2를 설치한 후 h2.bat을 실행해서 h2 콘솔을 열고 localhost로 바꾸고 jdbc:h2:tcp://localhost/~/jpashop가 아닌 jdbc:h2:~/jpashop 를 jdbc url에 입력하고 연결을 눌렀는데 db 설치 및 연결이 되지 않고 아래 첨부 사진과 같이 "Database "C:/Users/LG/jpashop" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149"라는 에러가 뜹니다. 혹시 몰라서 Generic H2 Server, Embedded 둘 다 해보고, h2를 여러번 껐다 켰다도 반복하며 계속 jdbc:h2:~/jpashop으로 생성을 하려는데 db가 존재하지 않다는 에러가 계속해서 뜹니다. 이런 경우에는 어떻게 해결해야하는지 구글링해도 jdbc:h2:~/test 이 방법밖에 나오지 않아 여쭙니다ㅠㅠ 감사합니다! Database "C:/Users/LG/jpashop" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 (도움말)org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "C:/Users/LG/jpashop" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] at org.h2.message.DbException.getJdbcSQLException(DbException.java:622) at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) at org.h2.message.DbException.get(DbException.java:205) at org.h2.message.DbException.get(DbException.java:181) at org.h2.engine.Engine.openSession(Engine.java:71) at org.h2.engine.Engine.openSession(Engine.java:192) at org.h2.engine.Engine.createSessionAndValidate(Engine.java:171) at org.h2.engine.Engine.createSession(Engine.java:166) at org.h2.engine.Engine.createSession(Engine.java:29) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:340) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:173) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:152) at org.h2.Driver.connect(Driver.java:69) at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:309) at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:289) at org.h2.server.web.WebServer.getConnection(WebServer.java:785) at org.h2.server.web.WebApp.login(WebApp.java:1008) at org.h2.server.web.WebApp.process(WebApp.java:223) at org.h2.server.web.WebApp.processRequest(WebApp.java:173) at org.h2.server.web.WebThread.process(WebThread.java:139) at org.h2.server.web.WebThread.run(WebThread.java:94) at java.base/java.lang.Thread.run(Thread.java:832)
-
미해결그림으로 배우는 자바, 파트2: 객체지향!
질문!
07분55초쯤에 ("나이 :%s\n" , d.age); 이부분이에요 d.age가 int형이라 %d 를 써줘야하는것이 아닌가요? %s 를 쓸수있는 이유나 개념이 따로있는건가요?
-
미해결[입문] 예민한 UX 디자인
UX 원칙 질문
17가지 UX 원칙을 영어로 알수 있을까요? NN/G에서 나온 Heuristic evaluation 으로도 다 커버가 안되서.... 따로 쓰이는 영문 용어가 있나 해서 여쭤 봅니다.
-
미해결스케치앱 마스터 과정[Sketch App]
선생님, 아이콘 관련 질문이 있습니다.
선생님 안녕하세요. 앱 디자인을 하다가 막히는 점이 있어서 질문드립니다. 구글 머터리얼 가이드에선 아이콘 최소 터치 타겟 영역을 48*48dp(안드로이드), 아이콘 획 두께를 2dp로 권장하는데, 이 규칙에서 벗어난 레퍼런스가 있어서요. 인스타그램 아이콘을 재봤더니 영역이 32*32dp정도로 터치 영역이 측정이 되었고 ] 카카오톡 아이콘을 재봤더니 마찬가지로 32dp*32dp 정도로 측정이 되었습니다. 게다가 카카오톡은 아이콘 획 두께가 1dp 정도 돼보였어요. 어떤 것은 1dp 미만으로 보였습니다. 그래서 질문은요. 1. 실무에서는 아이콘을 어느 정도의 탭 영역과 획 두께로 제작하는지 말씀해주실 수 있을까요? (48dp가이드는 공식적인 가이드일 뿐, 실제 디자인은 32dp를 많이 사용하는 트렌드나 맥락이 존재하는 것일까요?) 2. 만약 실무에선 구글 머터리얼 가이드와 다른 기준이 있다면 어떤 기준이 있을지 궁금합니다. (검색 키워드라도 부탁드립니다!) 3. 아이콘의 터치 영역이 넓으면, 그리드에 맞춰도 정렬되어 보이지 않는 문제가 있는데요. 이럴경우 어떻게 처리하실까요? (실제 아이콘이 그려진 라이브 영역을 그리드에 맞추는 게 일반적인가요? ) 선생님 강의는 모두 구매해서 열심히 신입디자이너 취업준비하고 있습니다. 유튜브도 잘 보고 있어요! 좋은 강의 늘 감사드립니다. 항상 건강하세요!
-
해결됨실전 리액트 프로그래밍
한글 인코딩
안녕하세요, 번들되어서 index.html을 브라우저로 열었을 때 한글이 깨지는데요, 인코딩 설정을 따로 해주는 부분이 있나요?
-
미해결인스타그램 클론 - full stack 웹 개발
acoount 아래에 urls.py가 없는데 만들어야하나요?
제가 직접 만드는건가요??
-
해결됨예제로 배우는 스프링 입문 (개정판)
./mvnw package, compiler 오류
백기선 개발자님 안녕하세요. 도움을 받을 수 있을까 해서 답변좀 부탁드립니다.. 제가 jdk8을 쓰고 있어서.. jdk11을 환경변수에 추가 설정했거든요. 그리고 메이븐으로 패키지를 다운받는데 jdk11을 설정한 뒤 project에 sdk에도 설정하고 환경설정에서 build tools > maven > importing, runner에 해당 jdk11인 11을 설정해놨습니다. jdk 설정을 다했는데도 8버전으로 뜨는데 메이븐 버전을 확인해보니 jdk 11로 뜬것을 확인했습니다. 근데 메이븐에서 컴파일러가 있는것을 확인했는데.. ./mvnw package 명령어를 실행하면 아래와 같은 에러 내용이 뜹니다. 컴파일러를 실행 못한다는 에러가 뜨는데 jdk11을 처음 쓰다보니 무슨 문제인지 잘 모르겠습니다. * 에러 내용 터미널에서 자바 버전 확인 시 jdk는 8로 뜹니다 ㅠㅠ ** 환경변수에 jdk 8을 없앴는데도 동일한 결과가 발생합니다.. 메이븐에서 버전 확인 시 jdk 11로 뜬 것을 확인했습니다. - 빌드 에러 아직도 jdk 버전이 8로 뜨는것 같지만 jdk 11이 적용되는건지 maven을 막 어떻게 다루다보니 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?는 안 뜨는것 까진 성공했습니다. 근데 compiler-plugin 3.8.0을 컴파일하지 못하고 있습니다. jre 관련 문제같은데 원래 이런건가요? 이거 해결하는데 강의를 듣지 못하고 있습니다.. 도저히 모르겠어요..
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
질문있습니당~
강의를 따라 진행하는데 Cannot find module './models/User' 에러가 나왔습니다~ 강의를 보니까 package.json에 scirpt start와 backend에 server/index.js로 경로가 지정되어 있길래 그대로 따라서 했는데도 위의 에러가 계속 나와서요 에러가 뜬 상태에서는 3000번은 연결이 되어있고 5000번은 연결이 안돼있습니다 그래서 index.js에 require로 파일 가져온 경로에 server를 붙이고 package.json에는 제거를 했더니 연결도 잘 되고 에러 문구도 안나오는데 혹시 무슨 이유가 있을까요? package.json에서 스크립트 문구를 줄 때 경로 인식을 못하는건 아닐텐데 왜 저는 index.js에서 경로를 변경해줘야만 제대로 된 실행이 되는지 의문입니다 ㅠ
-
미해결앨런 iOS Concurrency(동시성) - 디스패치큐와 오퍼레이션큐의 이해
GCD/OperationQueue와 RxSwift
안녕하세요! 현재 강의를 수강 중에 있는 학생입니다. 전공자라 어느정도 쓰레드, 비동기에 대한 기본지식은 약간 있는 상태인데 공부를 하다가 문득 궁금해져서 질문을 드립니다. 애플에서는 GCD/OperationQueue를 기본적으로 제공하지만, 요즘에는 여러 언어에서 ReactiveX를 많이 쓰고, iOS 개발자 채용공고에도 가끔 Rxswift가 우대조건으로 들어가있고 하더라고요. 이런 부분에서 궁금증이 생겼습니다. 1. GCD/OperationQueue와 RxSwift를 비교한다면 (대략적으로) 어떤 장단점? 차별점이 있을까요? 2. 실제 업무환경에서는 어떤 것이 많이 쓰이나요? 3. 만약 RxSwift를 공부한다면 (쓰레드에 대한 기본 지식(세마포어, 데드락 등)은 빼고)GCD/OperationQueue에 관한 지식이 있어야할까요? 4. 혹시 RxSwift도 강의하실 계획이 있으신가요? 질문은 여기까지입니다. 감사합니다.
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
모듈화(state)에 대해서 질문드립니다.
state, getters, mutations를 모듈화 하는과정에서 vue 개발자 도구를 보았더니 아래처럼 표시가 되더라구요. 저같은 경우에는 헤더명도 state 에 집어어넣어서 표시하게끔 설정해 두었었는데 왠지모르게 표시가 안되서 header.vue파일에 해당 헤더명 정의 하는곳의 코드를 {{ this.$store.state.todoApp.headerText }}로 변경하니 잘나오는데요. 문제는 mapState를 사용하여 todoItems를 가져오려고 할경우에는 todoItems가 todoApp의 맴버로 인식이되어서 리스트를 가져올 수가 없었습니다. 이럴경우엔 mapState를 어떻게 사용해야하나요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
link에 대해서
조금 혼란스러운게 react배울때 click 하면 이벤트 발생시켜서 이벤트핸들러로 자식 컴포넌트한테 props전달해서 state바뀌게해서 화면 바꾸게 하고 했는데 link를 쓰면 기존 SSR처럼 다시 서버쪽에다가 요청해서 그에 따른 데이터하고 html 렌더링 준비다 하고 뿌려주는건가요??