묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결핵심만 쉽게, 모두의 SQL 데이터 분석
2. customer 행 오류 커밋 완료
기초 통계 분석문 작성 강의를 듣고 있습니다 sql_practice 파일 이름명을 복사해서 @c:\sql_practice\2.customer.sql; 만들어서 실행하는데 다른 파일들은 행 삽입이 완료되었습니다. 커밋완료 라고 뜨는데 2.customer가 행 시작 중 오류와 커밋 완료가 같이 뜨네요 제대로 된건지 SELECT* FROM address; 쳐봤을 때 강남구 같은 주소가 이상한 문자로 뜨는데 어떻게 해야하나요? 도와주세요ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
서비스 계층 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 서비스 계층에 대해 질문이 있습니다. 강의 내용에선 서비스는 비즈니스 로직을 처리하는 역할이라고 해 주셨고, 저도 계속 스프링의 전체적인 흐름은 컨트롤러 -> 서비스 -> DB접근 계층으로 설계해놓고 가는걸로 알고 있었습니다. [상황] 최근 취업한 회사에서 제가 맡게되는 시스템의 코드도 강의 내용처럼 컨트롤러 -> 서비스 -> DB접근 계층으로 설계되어있을줄 알았는데, 코드를 보니 흐름의 설계가 컨트롤러 -> 서비스 -> 프로세스 -> DAO 더라구요. (시스템은 10년이상 되었고, 전자정부1 버전인 것 같습니다.) 서비스는 단순히 프로세스 클래스의 메서드를 호출하고, 그 값을 바로 리턴만 해주는 형식으로 작성되어 있습니다.예시) @Service("XXXService") public class XXXServiceImpl implements XXXService { @Resource("XXXProcess"); private XXXProcess xxxProcess; // 구현체인 XXXProcessImpl 을 주입받는 인터페이스 타입 입니다. public List method() { return xxxProcess.method(); } } 위처럼 작성되어 있던 것 같아요. 그래서 실질적인 비즈니스 로직은 프로세스 클래스에 있습니다. 어노테이션은 Service, Process 클래스 모두 @Service 라고 붙어있었습니다. [궁금한 점] 왜 서비스에 로직을 넣지 않고 단순히 호출만 하는 계층으로 만들고, 굳이 프로세스 라는것을 하나 더 만들어서 여기에 비즈니스 로직을 작성하는 식으로 설계를 한 것인지 궁금해서 선배님께 물어봤는데, 오래전 시스템 만들어질때 설계하신 분이 아니다보니 확실한 답을 못 주시는 것 같더라구요. 강사님께서는 SI부터 현재 서비스기업 기술이사까지의 경험이 있으신 분이기에 시원한 답을 주실 것 같아서 질문 드립니다... 질문이 계층에 대해 설명해주신 강의내용과 관련된 질문이라고 판단해서 올리지만, 혹시 관련없는 질문이라면 죄송합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
혹시 반례가 있을까요 선생님?
혼자 풀어보면서 2중 for문으로 풀어봤는데 혹시 반례가 있는지 궁금해서요. 강의 정말 재밌게 듣고 있어요! :) function solution(s, t) { let answer = []; // time complexity : O(n^2) let tIndicies = []; for (let i = 0; i < s.length; i++) { if (s[i] == t) tIndicies.push(i) } for (let i = 0; i < s.length; i++) { let min = Number.MAX_SAFE_INTEGER; for (let j = 0; j < tIndicies.length; j++) { let position = Math.abs(i - tIndicies[j]); if (min > position) min = position; } answer.push(min); } return answer; } let str = "teachermode"; console.log(solution(str, 'e'));
-
해결됨반복되는 내 업무 자동화하기 - Power Automate(Flow)
메일 발송 관련
안녕하세요 저희 회사는 Office 365 (Exchange Online) 메일이 아니라 회사 자체 온프레미스 메일을 사용 중에 있습니다. 팀즈,쉐어포인트,원드라이브 등은 모두 사용합니다. 그런 경우 메일 연동을 어떻게 할 수 있을가요?
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
Spring Initializer을 이용하여 프로젝트 생성 후 실행 시 'invalid source release: 11' 에러메시지가 출력되는 사항에 대한 내용 공유
Spring Initializer을 이용하여 프로젝트 생성 후 실행 시 'invalid source release: 11' 에러메시지가 출력되는 사항에 대한 내용 공유드립니다. 제가 겪었던 문제였으며, 아래 기재된 링크들을 참고하여 해결하였습니다. [Google 검색 단어: spring boot Cause: invalid source release: 11] https://milenote.tistory.com/63 https://blog.naver.com/PostView.naver?blogId=tofhadl529&logNo=222374497101&from=search&redirect=Log&widgetTypeCall=true&directAccess=false
-
해결됨[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
200을 404로 변경해도 되는지 질문드리고 싶습니다
강사님 안녕하세요가르쳐주신 소스코드 따라해보다가 궁금한 점이 생겨서 질문드리고 싶습니다 14행에서 200을 404로 변경해보고 8행에 일부러 에러를 줘봤습니다 웹페이지는 동일하게 에러처리를 보여주는 것 같아서, 혹시 이렇게 변경해도 되는지 질문드리고 싶습니다
-
해결됨웹 게임을 만들며 배우는 React
이번강의 코드의 동작결과를 바탕으로 예측한 동작순서가 맞는지 알고싶습니다.
이번 강의를 보고 코드를 정리한 후 실행결과를 확인했습니다. 콘솔이 생각했던것 보다 7라인 더 찍혀서 궁금해서 질문 남깁니다. 물론 다음 강의에 useMemo나 useCallback으로 문제를 해결하겠지만, 제가 생각한 동작 순서가 맞는지 궁금합니다. 코드 import React, { useEffect, useRef, useState, useMemo } from 'react' import Ball from './Ball' function getWinNumbers() { console.log('getWinNumbers함수') const candidate = Array(45) .fill() .map((v, i) => i + 1) const shuffle = [] while (candidate.length > 0) { shuffle.push( candidate.splice(Math.floor(Math.random() * candidate.length), 1)[0] ) } const bonusNumber = shuffle[shuffle.length - 1] const winNumbers = shuffle.slice(0, 6).sort((p, c) => p - c) return [...winNumbers, bonusNumber] } const Lotto = () => { const [winNumbers, setWinNumbers] = useState(getWinNumbers()) const [winBalls, setWinBalls] = useState([]) const [bonus, setBonus] = useState(null) const [redo, setRedo] = useState(false) const timeouts = useRef([]) useEffect(() => { console.log('useEffect1') for (let i = 0; i < winNumbers.length - 1; i++) { timeouts.current[i] = setTimeout(() => { setWinBalls(prevState => [...prevState, winNumbers[i]]) }, (i + 1) * 1000) } timeouts.current[6] = setTimeout(() => { setBonus(winNumbers[6]) setRedo(true) }, 7000) return () => { timeouts.current.forEach(v => { clearTimeout(v) }) } }, [timeouts.current]) // 빈 배열이면 componentDidMount와 동일 // 배열에 요소가 있으면 componentDidMount랑 componentDidUpdate 둘 다 수행 useEffect(() => { console.log('useEffect2 - 로또 숫자를 생성합니다.') }, [winNumbers]) const onClickRedo = () => { console.log('onClickRedo') setWinNumbers(getWinNumbers()) setWinBalls([]) setBonus(null) setRedo(false) timeouts.current = [] } return ( <> <div>Win Numbers</div> <div id="결과창"> {winBalls.map(v => ( <Ball key={v} number={v} /> ))} </div> <div>Bonus!</div> {bonus && <Ball number={bonus} />} {redo && <button onClick={onClickRedo}>One more</button>} </> ) } export default Lotto 동작 결과 콘솔 11:46:54.502 Lotto.jsx:5 getWinNumbers함수 11:46:54.532 Lotto.jsx:28 useEffect1 11:46:54.532 Lotto.jsx:47 useEffect2 - 로또 숫자를 생성합니다. 11:46:55.951 Lotto.jsx:5 getWinNumbers함수 11:46:56.942 Lotto.jsx:5 getWinNumbers함수 11:46:57.729 Lotto.jsx:5 getWinNumbers함수 11:46:58.536 Lotto.jsx:5 getWinNumbers함수 11:46:59.535 Lotto.jsx:5 getWinNumbers함수 11:47:00.545 Lotto.jsx:5 getWinNumbers함수 11:47:01.536 Lotto.jsx:5 getWinNumbers함수 예측한 동작 순서 1. 함수 컴포넌트에 있는 winNumbers가 getWinNumbers 함수 호출하면서 getWinNumbers함수속 console 출력 -> 'getWinNumbers함수' 2. 27번줄의 useEffect의 두번째 인자인 timeouts.current가 [] 이기 때문에 첫번쨰 useEffect의 console 출력 -> 'useEffect1' 3. 46번줄의 useEffect의 두번째 인자인 winNumbers가 7개의 배열요소가 들어있기 때문에 true 이다 그래서 두번째 useEffect의 console 출력 -> 'useEffect2 - 로또 숫자를 생성합니다.' 4. useEffect1이 출력될때 아래 코드가 6번 동작해서 getWinNumbers함수 속에있는 console 출력 -> 'getWinNumbers함수' x 6 for (let i = 0; i < winNumbers.length - 1; i++) { timeouts.current[i] = setTimeout(() => { setWinBalls(prevState => [...prevState, winNumbers[i]]) }, (i + 1) * 1000) } 그리고 아래 코드가 한번 동작해서 getWinNumbers함수 속에있는 console 출력 -> 'getWinNumbers함수' timeouts.current[6] = setTimeout(() => { setBonus(winNumbers[6]) setRedo(true) }, 7000) 동작 순서 4번에서 (setWinBalls)와 (setBonus + setRedo)가 비동기함수 라서 앞선 콘솔들이 찍히고 마지막에 찍혔던 거죠?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
로그인 후 url 가져오기 실패
제가 연습삼아 관심을 가지고 있는 사이트에 자동로그인을 했습니다. 그 후 내용을 가져오려니 아래와 같이 오류가 뜹니다. 이건 어떤 경우일까요?
-
미해결스프링 핵심 원리 - 기본편
널포인트 에러
안녕하세요 김영한 개발자님! 강의를 따라하던 중에 오류가 생겨서 질문 남겨요 AllBeanTest 코드에서 실행하면 널포인트 에러가 발생하는데 혹시 어디가 문제 있는걸까요...? 코드상 오류인줄 알고 찾아봤더니 코드 오류는 없는 것 같습니다. soutv로 찍으면 저는 fix가 아니라 rate로 찍히는데 혹시 이게 문제일까요? 감사합니다. + 추가 ) discountService.discount(member, 10000, "fixDiscountPolicy")에서 fix를 rate로 변경해보니까 정상적으로 실행됩니다. 이게 문제였을까요? 그렇다면 fix는 왜 안될까요? @component를 rate에만 작성하고 fix에는 작성하지 않은 상태입니다ㅠ + 해결(?) fixDiscountPolicy에 @Component를 하고 rate에는 지우니까 discountService.discount(member, 10000, "fixDiscountPolicy") 경우에도 잘 작동합니다. 맨 처음에 fixDiscountPolicy에 @Component가 안되어 있어서 널포인트 에러가 발생한거 같은데 제 생각이 맞을까요? + 마지막) 왜 개발자님처럼 fix랑 rate가 동시에 안되나 했는데, 다른글에서 orderServiceImpl에 있는 @Component 지우면 해결된다는 글 보고 해결했습니다! 의문점 다 해결됐습니다 감사합니다!!
-
미해결최고의 프론트엔드 CSS Frameworks, UIkit
Slider의 Content parallax 처음부터 애니메이션 작동되게 하는 법이 궁금해요
총 3장의 이미지를 넣어서 parallax 로 h2는 위에서 아래로 텍스트가 내려오고 p는 아래에서 위로 텍스트가 올라오는 효과를 넣은 슬라이드를 만들었는데요 이 효과가 맨 처음 화면 뜬 상황에서는 작동이 안되고 꼭 한번 슬라이드가 실행된 후에야 작동이 되더라구요 처음 화면 떴을때부터 텍스트 애니메이션이 작동되게 하는 그런 방법이 궁금합니다. <div class="uk-position-relative uk-visible-toggle uk-light " tabindex="-1" uk-slideshow="animation: fade; autoplay: true; autoplay-interval: 3000; "> <ul class="myslide uk-slideshow-items uk-grid-match" uk-height-viewport="min-height: 300"> <li> <img src="images/image01.jpg" uk-cover> <div class="uk-position-center uk-position-small uk-text-center"> <h2 uk-slideshow-parallax="y: -150,0,0; opacity: 1,1,0">Heading</h2> <p uk-slideshow-parallax="y: 100,0,0; opacity: 1,1,0">Lorem ipsum dolor sit amet.</p> </div> </li> <li> <img src="images/image02.jpg" uk-cover> <div class="uk-position-center uk-position-small uk-text-center"> <h2 uk-slideshow-parallax="y: -150,0,0; opacity: 1,1,0">Heading</h2> <p uk-slideshow-parallax="y: 100,0,0; opacity: 1,1,0">Lorem ipsum dolor sit amet.</p> </div> </li> <li> <img src="images/image03.jpg" uk-cover> <div class="uk-position-center uk-position-small uk-text-center"> <h2 uk-slideshow-parallax="y: -150,0,0; opacity: 1,1,0">Heading</h2> <p uk-slideshow-parallax="y: 100,0,0; opacity: 1,1,0">Lorem ipsum dolor sit amet.</p> </div> </li> </ul> <a class="uk-position-center-left uk-position-small uk-hidden-hover" href="#" uk-slidenav-previous uk-slideshow-item="previous"></a> <a class="uk-position-center-right uk-position-small uk-hidden-hover" href="#" uk-slidenav-next uk-slideshow-item="next"></a> </div>
-
해결됨그림으로 쉽게 배우는 운영체제
프로세스와 알고리즘 등 관련...
안녕하세요 강의 관련 궁금한 점들이 있습니다... 1.프로세스들의 우선순위는 어떤 방식으로 정해지는 것인가요? 2. 운영체제가 ‘준비상태의 다중큐’를 참조해 그 안에 들어있는 프로세스들 중 적당한 프로세스를 선택해 실행상태로 전환시킨다고 들었는데 적당한 프로세스를 고르는 기준은 정확히 어떻게 되는지, 우선순위가 영향을 주는지 궁금합니다. 3. CPU 스케줄러와 운영체제는 완벽한 동의어인가요? 4. FIFO 알고리즘의 단점 중, I/O 작업이 있을 경우 CPU는 I/O 작업이 끝날 때까지 쉬고 있기 때문에 CPU 사용률이 떨어지는 것이 있다고 들었습니다. 그런데 대기상태의 경우, 특정 프로세스가 입출력 요청을 하면 입출력이 완료될 때까지 CPU를 기다리게 하는 건 굉장히 비효율적이라 입출력 요청을 한 프로세스를 대기상태로 두고 다른 프로세스에게 CPU를 할당한다고 들었는데 FIFO의 경우에는 1개 프로세스의 완전 종료 전까지 다른 프로세스들이 실행될 수 없어서 그런 것인가요? 그렇다면 FIFO 알고리즘의 경우에는 대기 상태가 존재하지 않는 것인가요? 5. 대기 상태의 경우 입출력 작업이 완료되면 대기상태에 있던 프로세스에게 CPU 할당 기회를 준다고 들었는데 기회를 준다는 것은 반드시 실행상태로 즉시 전환되는 것은 아니라는 의미인가요?
-
미해결3D 게임 디자이너에게 배우는 Zbrush 2020 기초와 활용
deformer사용할 때 질문입니다.
18:36초에 서브툴에 귀를 클릭하시는데 두개였던 귀가 어떻게 하나가 되나요? 저 두개였던 삼각형이 갑자기 하나가 돼서요. 저는 귀를 deformer하는데 미러된 거랑 같이 잡혀서 수정하기 불편해요. 그리고 손가락이 한 오브젝트에 세개가 들어가있는데 원형을 세번 불러서 merge하신건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
시작 내용 변경
처음에 프로젝트를 만들면 자동으로 Hello world를 출력하는 코드가 쓰여 있잖아요? 새로 만든 프로젝트에 이 코드를 안뜨게 설정하거나 다른게 뜨도록 설정 할 수 있나요?
-
미해결스프링 핵심 원리 - 기본편
Intellij 오류 문제
안녕하세요. 강의를 들으면서 인텔리제이 설치 후에 설명해주신대로 따라갔더니 다음과 같은 오류가 발생합니다. 해당 오류에 대해서 찾아보려해도 잘 해결이 되지않는 것 같습니다.
-
미해결홍정모의 따라하며 배우는 C언어
빈칸을 입력했을 때 break하는 코드 작성에 관하여
안녕하세요 printf("Input a color name (empty line to quit):\n");을 받고 입력을 할 때 빈칸인 상태로 엔터를 누르면 프로그램이 끝나도록 하는 코드를 작성하는 과정에서 난항을 겪어서요. 몇 가지 여쭤보려고 합니다. 제가 시도했던 것들은 밑에 두 가지입니다. if (strcmp(choice, '\0') == color_is_found) break; if (choice == NULL) break; 첫 번째는 문자열이랑 문자를 비교해서 실행이 제대로 안된다는 것을 깨달았고, 두 번째도 문자열이랑 0인 NULL은 == 연산자로는 비교를 할 수 없어서 제대로 작동이 되지 않았다고 생각합니다.(제가 찾아보고 내린 결론이라 맞는지도 궁금합니다) 그래서 if (scanf("%[^\n]%*c", choice) != 1) break;를 하면 아무것도 입력안하고 엔터를 입력했을 때 프로그램이 종료되는 것은 확인했지만 왜 위 코드가 이러한 기능을 수행하는지 아직 이해가 되지 않습니다. 질문은 두 가지입니다! 1. 제가 시도했던 것들이 실패한 이유에 대해 제가 생각한 결론(노랑 형광색 부분)이 맞는 것일까요? 2. 왜 if (scanf("%[^\n]%*c", choice) != 1) break;를 하면 첫입력에 엔터를 입력했을 때 프로그램이 종료가 되는건가요? [^\n]이 \n이 나올 때까지 입력을 받는다는 것과 %*c가 마지막글자(\n)을 없앤다는 것도 알고 있지만 왜 break로 연결이 되는지는 아직 이해를 못했습니다. 설명을 해주실 수 있을까요?
-
해결됨게임 엔진을 지탱하는 게임 수학
고급 수학
선형대수학, 벡터 미적분학 등을 배우던데 이런건 배울필요 없는 건가요? 조금더 고급 수학에 대해서 가이던스를 제공해 주실수 있나요?
-
미해결Pandas 팬더스 데이터분석 기초 실습
if else 오류
왜 Nate는 Fail이 아니라 Pass가 나오는 걸까요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
에러 다시 질문드립니다 !
https://drive.google.com/drive/folders/1ARkKZ0j73PGTgFqytkgANXwa1X8DucCa 구글 드라이브에 업로드해놓았습니다. java.lang.IllegalStateException 이 에러가 뜨는데 해결법을 찾아봐도 잘 모르겠습니다 ㅠ 알려주시면 감사하겠습니다 !! ***액세스 권한 수정했습니다 !!
-
미해결실무에서 바로 쓰는 영어 이메일
강의 자료 요청 드립니다.
안녕하세요. 표제와 같이 강의 자료 요청 드립니다. ikmun@halla.com 감사합니다.
-
미해결Pandas 팬더스 데이터분석 기초 실습
행 삽입
동영상과 같이 했는데 에러가 나네요 어떻게 해야 하나요