묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨홍정모의 따라하며 배우는 C++
head guard가 있는데도 cpp 파일에서 body가 정의되면 에러가 뜨는 이유
따배씨를 듣고 곧바로 C++을 듣고 있습니다. 실험을 해보다 신기한 결과가 나오는데 해석이 되지 않아 질문을 남깁니다. add 함수는 add.header 파일에서 선언을 하고 add.cpp 파일에서 body를 정의하였습니다. global.h 내에 정의되어 있는 함수 print_global()은 header 파일에 Body를 정의하였습니다. 이 함수로 에러를 발생시킬 것이며 header guard가 잘 작동하는지 확인하기 위해 실험할 것입니다. global.h 함수에서 #pragma once와 #ifndef-#define으로 헤더가드를 만들면 서로 다른 cpp파일이 호출하여도 에러가 발생하지 않을거라 예상하고 실행하였습니다. // add.h #pragma once #ifndef __ADD #define __ADD int add(int a, int b); // Forward declaration, Prototype #endif // add.cpp #include "global.h" int add(int a, int b) // Definition { print_global(); return a + b; } // global.h #pragma once #ifndef __GLOBAL #define __GLOBAL #include <iostream> void print_global() { std::cout << __func__ << "is executed!" << std::endl; } #endif // !__GLOBAL // main.cpp #include "add.h" #include "global.h" int main() { print_global(); std::cout << add(1, 2) << std::endl; } 링크에러는 add.obj에서 발생하였습니다. header guard가 있어서 링크 에러가 발생하지 않아야 할 거 같은데 무슨일인지 이해가 되지 않습니다. add.cpp 파일을 지우고 add.h 헤더파일안에 함수의 Body를 넣으면 링크에러가 발생하지 않습니다. #pragma once #ifndef __ADD #define __ADD #include "global.h" int add(int a, int b) // Definition { print_global(); return a + b; } #endif 따라서 header guard가 header 파일 내부에서 정의되었더라도 cpp파일에서 #include 전처리 지시자를 사용해서 해당 header를 복사-붙여넣기 해버리면 header guard가 무용지물이 되어버린다는 가정을 세웠습니다. 제 가정이 맞나요? cpp파일에서 header guard는 작동하지 않는다는 가정이 맞나요? 왜 그런지 잘 모르겠습니다. header 파일은 link 없이 #include 전처리지시자로 동작하지만 cpp 파일은 obj로 만들어 linker가 연결해주기 때문에 전처리지시자가 아무 역할을 하지 못하는거 같습니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
오류 nginx: [emerg] unexpected "}" in default.conf 질문드립니다.
오류 nginx: [emerg] unexpected "}" in /etc/nginx/conf.d/default.conf:3 아무리 찾아봐도 "}" 빼놓은 게 없는데 이 오류가 계속 나오네요. 뭐가문제일까요? 심지어 깃소스에서 되는 걸로 가져온 거거든요. default.conf 소스 upstream frontend { server frontend:3000; } upstream backend { server backend:5000; } server { listen 80; location / { proxy_pass http://frontend; } location /api { proxy_pass http://backend; } location /sockjs-node { proxy_pass http://frontend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } }
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 인프런 아이디 : zaar625인프런 이메일 : zaar625@naver.com깃헙 아이디 : zaar625@naver.com깃헙 Username : zaar625 안녕하세요. 선생님~ 깃헙에도 올리긴했는데 여기에도 올립니다. 확인 부탁드리겠습니다.
-
미해결C++ Let's Make Games
질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. main 함수에서, PPLAYER을 사용한 변수를 사용하지 않고 PLAYER의 변수를 만들어서 사용하셨는데 PPLAYER를 사용해서는 만들 수 없나요?
-
미해결React 기반 Gatsby로 기술 블로그 개발하기
index.tsx 에러
현도님 안녕하세요! 꼼꼼한 강의를 공유해주셔서 정말 감사합니다 : ) 아직 코드 전부를 이해하지 못하고 그대로 실습 코드를 따라가던 중 src/pages/index.tsx 파일에서 에러가 발생했습니다. 현재 코드는 아래와 같습니다. import React, { FunctionComponent } from 'react' import styled from '@emotion/styled' import GlobalStyle from 'components/Common/GlobalStyle' import Footer from 'components/Common/Footer' import CategoryList from 'components/Main/CategoryList' import Introduction from 'components/Main/Introduction' import PostList from 'components/Main/PostList' import { graphql } from 'gatsby' import { PostListItemType } from 'types/PostItem.types' const CATEGORY_LIST = { All: 5, Web: 3, Mobile: 2, } const Container = styled.div` display: flex; flex-direction: column; height: 100%; ` type IndexPageProps = { data: { allMarkdownRemark: { edges: PostListItemType[] } } const IndexPage: FunctionComponent<IndexPageProps> = function ({ data: { // data: 쿼리를 통해 받은 데이터가 담겨있는 props allMarkdownRemark: { edges }, // edges: 각 파일의 데이터가 들어있는 배열 }, }) { return ( <Container> <GlobalStyle /> <Introduction /> <CategoryList selectedCategory="Web" categoryList={CATEGORY_LIST} /> <PostList posts={edges} /> <Footer /> </Container> ) } export default IndexPage export const getPostList = graphql` query getPostList { allMarkdownRemark( sort: { order: DESC, fields: [frontmatter___date, frontmatter___title] } ) { edges { node { id frontmatter { title summary date(formatString: "YYYY.MM.DD.") categories thumbnail { publicURL } } } } } } ` 에러 메시지가 이와 같이 IndexPage를 선언하는 부분부터 나타나는데, Member 'const' implicitly has an 'any' type.아마도 IndexPage 컴포넌트에 변경 사항을 제대로 반영하는 단계를 제대로 진행하지 못한 것으로 추측하고 있습니다. 어떠한 방향으로 해결하면 좋을지 감을 잡기가 어려워서 이렇게 문의드립니다.
-
해결됨퍼블리셔 취업을 위해 제대로 배워보는 html과 css, 그리고 웹표준
탭 / 쉬프트 탭으로 들여쓰기와 들여쓰기 삭제하기
안녕하세요 선생님! 강의를 들으며 옆에 서브라임텍스트를 켜놓고 따라하며 듣고 있는데요. 1. 파일을 저장하지 않은 상태에서 !, 혹은 !+탭키를 눌러도 반응하지 않는 것은 아직 html로 저장하지 않아서가 맞을까요? 2. !+탭으로 기본 구조를 생성한 뒤 다른 코드 등을 만들며 테스트 하다가 탭키를 눌렀을 때, 들여쓰기가 아닌 다른 태그로 넘어가기만 하는 경우가 있는데 이건 혹시 왜 그런걸까요? 쉬프트 탭도 동일하게 다른 태그로 넘어가기만 합니다. (파일을 새로 만들면 정상적으로 들여쓰기가 됨) 확인하시게 되면 답변 부탁드립니다. 감사합니다!
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
공식문서 설치방법과 차이점
리눅스 우분투에서 도커엔진 인스톨방법이 강의랑 공식문서랑 다소 다른데 두 방법 모두 정상적으로 작동하는것 같습니다만 혹시 차이점이 있을까요?? https://docs.docker.com/engine/install/ubuntu/ 위 링크가 공식문서입니다. 보면 https로 받아오기 위해 하는 세팅과 GPG key 추가하는 명령, 도커 설치 등 다른부분이 많은데 혹시 강의방식과 어떤차이점이 있을까요?
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
실습파일 p_chapter03_02.py 관련
실습파일 마지막 코드가 아래와 같이 있는데 실행결과에 대한 설명을 부탁드립니다. # 참고 : 파이썬 바이트 코드 실행 import dis dis.dis(v2.__add__)
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA가 관리하는 엔티티의 생성자에 관한 질문 드립니다.
JPA가 관리하는 엔티티의 경우, 기본 생성자를 꼭 붙여줘야 한다고 말씀 해주셨는데요, 그럼 JPA가 관리하는 엔티티의 경우 필드 final로 정의 하는건 불가능한건가요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
질문있습니다
npm build는 운영서버를 위해 build하는거지만 next의 export는 정적 페이지를 위한것이라고 알고 있는데 만약 배포를 진행한다면, build와 export 두개 다 같이 해줘야하는걸까요 ? next export명령어가 next build 후 그 빌드된 파일을 바라보고 out 디렉터리를 만드는건가요 ? !
-
미해결스프링 핵심 원리 - 고급편
프록시 객체 생성에 질문있습니다.
스프링에서는 모든곳에 프록시 객체를 생성하지 않고 자동 프록시생성기가 스프링 컨테이너에 등록된 Advisor를 조회하여 포인트컷을 기준으로 프록시객체 생성여부를 정한다고 개념정리를 하였습니다. 그렇다면 자동 프록시 생성기를 등록하는 implementation 'org.springframework.boot:spring-boot-starter-aop'라이브러리를 등록하지 않는다면 스프링은 프록시 객체를 못만드는 건가요?? 저 라이브러리가 없는데 @Transactional이 동작해서 궁금하여 물어보았습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)
유익한 강의 잘 들었습니다.
유익한 강의 잘 들었습니다. 테라 아키텍처를 이전에 소개한 글을 보았을 때 말씀하신대로 대륙단위로 프로세스를 가지고 있었습니다. 그리고 대륙안의 모든 Object가 JobSerialize를 가졌고 쓰레드 별로 복사되어 동기화 되는 World를 가졌던 것으로 기억합니다. C++강의에서 Object별로 JobSerialize를 가지는 Actor모델 구조로 가게될 시, JobSerialize 안전장치 기법과 쓰레드 각각이 World를 가지고 있고 서로 동기화 되는 구조도 같이 소개해 주시면 도움이 많이 될 것 같습니다. 하루 잘 마무리 하세요! (여담으로 아이온은 JobSerialize방식이 아니라고 들었는데 쓰레드들이나 프로세스들로 구분된 지역을 가지고 있는게 아닌가 생각이 드네요.)
-
미해결바닥부터 시작하는 STM32 드론 개발의 모든 것
안녕하세요. 궁금한 점이 있습니다.
안녕하세요. 해당 챕터를 진행중에 있습니다. printf 구문에는 Hello 라고 출력하게 했는데... 시리얼 통신 결과는 이상한 영문이 나오는데.. 왜그럴까요..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
테스트 결과에 대해 질문입니다.
제꺼 테스트 결과는 20:48:24.608 [main] INFO com.itemservice.converter.StringToIntegerConverter - convert source=10 20:48:24.657 [main] INFO com.itemservice.converter.IntegerToStringConverter - convert source=10 20:48:24.659 [main] INFO com.itemservice.converter.StringToIpPortConverter - convert source=127.0.0.1:8080 20:48:24.660 [main] INFO com.itemservice.converter.IpPortToStringConverter - convert source=com.itemservice.type.IpPort@59cb0946 -> 이런식으로 찍히거든요? 근데 여기서 궁금한게 저도 초록불이 뜨긴 뜨는데요. 4번째 값이 저렇게 객체로 뜨는게 맞는지 궁금합니다. (당연히 객체로 검증을 했으니 그럴꺼 같지만...) 맞는거 같긴 한데 강의를 보면 강사님 나오시는 그림으로 가려져 있어서 질문올립니다.
-
미해결홍정모의 따라하며 배우는 C++
입출력 오버로딩 질문이요
강의 4:48초에 나오는 friend std::ostream& operator << (std::ostream &out,const Point &point) { out << point.m_x << point.m_y << point.m_z ; } 여기서 첫번째 파라미터가 point클래스가 아니라서 member function 으로 만들기가 어렵다고 하셨는데 의미를 잘 모르겠어서 구글링하고 생각해봤는데 맞는지 여쭤보고 싶어요 멤버 함수로 만들 수 없는 이유? 를 생각해보면 << 연산자를 호출? 하는게 point 클래스 객체가 아니라서 인가요??
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
react router 6 에서 push대신 navigate사용 시 경로 이동 질문
router 6버전을 사용하고 있습니다. 영상에서는 랜딩페이지로 이동하는 것을 props.history.push('/') 로 작성하고 있는데요. 6버전에 맞춰 navigate('/')로 작성하려니 앞에 props를 제거해야 이동되더라구요. 없애도 되는 것인지, 아니면 다른 방법으로 해야하는지 답변 주시면 감사하겠습니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
3 handshake(with socket library) 관련 질문있습니다.
강의가 너무 유익해서 시간가는줄 모르고 잘 보고있습니다. 좋은 강의 만들어주셔서 대단히 감사합니다. 하지만 강의를 보다가 이해가 잘 안되는 부분이 있어서 질문 드립니다. 강의시간이 1:50 쯤의 그림을 보면서 "socket 라이브러리를 통해 전달" 한다는 것이 이해가 잘 되지 않았습니다. 이 말을 저는 socket 라이브러리가 알아서 3handshake를 해서 연결상태를 보장받고 이후 TCP/IP 패킷을 생성하고 http 메시지를 담아 보내는 것으로 이해했습니다. 그런데 이 과정 중 3handshake와 socket library에 모호한 점이 있었습니다. 1-1. socket 라이브러리에서 3 hand shake 를 그림에서의 과정과 다르게 별도로 진행하여 연결이 되었다고 판단되면, 패킷 생성하고 네트워크 인터페이스 레이어를 지나 인터넷을 통해 서버로 전달. 즉, http 통신 프로세스와는 별개로 따로 서버와 syn / syn+ack / ack 만 주고받는 통신진행을 진행하는지 1-2. 아니면 전체 프로세스(강의에서 제공한 그림처럼)를 http 메세지와 syn이 포함된 TCP/IP 패킷을 생성하여 3번(syn / syn+ack / ack) 진행하는지 만약 1-1번 처럼 socket 라이브러리에서 따로 서버측과 syn / syn+ack / ack 을 통신한다면, 2-1. 최초 서버로 http 요청시 socket 라이브러리에서 3handshake를 실패시 http 요청 자체가 보내지지 않는건지. 그렇게 되면 클라이언트는 어떠한 응답도 못받는 상태가 되는건가요? 2-2. socket 라이브러리에서 3handshake를 하는 과정도 동일하게 TCP/IP 패킷을 생성하는지, 단순히 syn / syn+ack / ack 만 보내는지 궁금합니다. 3-1. 마지막으로 궁금한 것은 socket 라이브러리가 이런 것을 담당한다면 TCP를 이용한다면 반드시 socket 라이브러리를 써야하는 건지 궁금합니다. socket 라이브러리도 대체 가능한지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
스프링 부트 처음 접해보는 학생 입니다.
안녕하세요 강의를 들으면서 실습중에 있는 학생 입니다. 4:17초 쯔음에 build.gradle project 오픈 후 코끼리 모양을 클릭 시 아래 처럼 결과가 나오고 있습니다. java 버전이 1.8.0 버전인데 혹시 관련이 있을까요? 아니면 다른 이유일까요 ㅠㅠ 답변 부탁드립니다. 감사합니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
body가 안나옵니다..
위와같이 작성했는데 높이갚을 픽셀로 두면 잘 나오는데 100%로 두었을때 바디가 화면에 안나옵니다. ㅜㅜ 강의 화면에는 잘 나오는데 문제가 뭔지 모르겠어요..
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
질문입니다.
안녕하세요. for(int x : T.solution(n, m, a, b)) System.out.print(x+" "); 이런식으로 for문이 도는데 int x 가 어떤걸 기준으로 돌게 되는지 궁금합니다. 여러개의 변수가 넘어가는데 저 x는 어떤걸 기점으로 x가 도는건지 알려주시면 감사하겠습니다.