묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨처음 만난 리액트(React)
[Card 컴포넌트 만들기 강의] 코드질문 있습니다!
강의 너무 잘 보고 배우고 있습니다!! 감사합니다 🙂 카드를 한장이 아니라 여러 장이 나오게 만들고 싶어서 혼자 코드를 수정해봤는데요 key 값이 없어서 오류가 난다고 하는데요 1-1.이 상태에서는 어떻게 key값을 넣어줘야 할까요?1-2. 다른 방법은 없을까요? import Card from "./Card"; const names = [ { id: 1, name: "학생 1", comment: "리액트 공부중입니다" }, { id:2, name: "학생 2", comment: "리액트 공부중임니댜" } ] function ProfileCard(props) { <div> {names.map((name) => { return ( <Card title={name.name} backgroundColor="#B57EDC" comment={name.comment} /> ) })}; </div> } export default ProfileCard;
-
해결됨Airflow 마스터 클래스
docker 폴더 관련 질문
안녕하세요좋은 강의 감사드립니다. 섹션 7 custom operator 실습(마지막 강의) 16:11 부분에 보시면요폴더 구조를 아래와 같이 만들어놓으셨더라고요 조금 이해가 안되는게, 왜 dags 폴더를 airflow 바깥에도 만들어놓시고 안에도 만들어놓으신거죠?logs는 또 airflow 폴더 밖에 있고요. 강의 16:16 에 보면, dags는 airflow 안에 있는 것을 사용하고 계신것 같은데, (2) airflow 밖에 있는 dags 폴더를 만드신 이유, 그리고 (2) 왜 logs 폴더는 dags, plugins 와 다르게 airflow 밖에 만드셨는지 가 궁금합니다.
-
해결됨C개발자를 위한 최소한의 C++
dll 파일과 name mangling 관련 질문드립니다.
안녕하세요. 강의 잘 보고 있습니다.강의를 보는데 갑자기 궁금한 것이 생겨서 질문 드립니다.exe 파일에서 필요할 때마다 dll을 참조하여 호출하는 것으로 이해하고 있습니다.dll엔 이미 함수 symbol이 정의되어 있겠죠.예를 들어 add(int a, int b) 함수를 dll로 만들었다고 가정하면 일반적인 c라면 함수 심볼이 _add라고 예상되지만, C++ 이라면 _add가 아니라 다른 형태의 심볼이 만들어질거라 생각이 됩니다.그런데 exe을 만드는 개발자 입장에서 생각해보면 무엇으로 만들어질지 모르는 심볼을 예측할 수 없으니 c처럼 _add와 같이 확실한 symbol을 선호할 것 같은데, 그러면 dll 파일을 c++로 만들 때 함수 앞에 extern "C" 키워드를 사용하나요?만약 1번 답이 맞다면 추가로 궁금한 것이 있습니다. 제가 알기론 C와 C++의 차이가 name mangling 뿐만 아니라 스택에 쌓이는 매개변수도 차이가 있다고 들었습니다. 그런데 C++로 만드는 exe 파일과 extern "C"로 선언한 dll을 같이 사용하면 문제가 생기지 않나요?부족한 것이 많아 질문에 오류가 있을 수 있습니다. 제가 잘못 알고 있는 부분은 피드백 주신다면 다시 공부하겠습니다.감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
friend 키워드에 대한 개념이 안잡힙니다.
안녕하세요.아래와 같은 코드가 있다고 가정했을때,첫번째 operator(friend 키워드가 없는)는 에러표시를 하고두번째 operator(friend 키워드가 있는)는 정상 컴파일이 됩니다.friend 키워드에 대한 강의도 앞에서 보았고,'private 멤버 함수에 대한 접근이 가능하도록 해준다' 는 생각과 operator 코드 작성간의 상관관계가 무엇인지 모르겠습니다 ㅠ// 아래 함수 정의에선 해당 오퍼레이터 함수에 인자값이 너무 많다고 하고, std::ostream& operator << (std::ostream &out, const Point& point) { }// friend 키워드를 붙일경우엔 정상 컴파일이 됩니다. friend std::ostream& operator << (std::ostream &out, const Point& point) { }
-
해결됨C개발자를 위한 최소한의 C++
스크립트 오류 참조형(변하지 않는 포인터)
10:00 경 "근데 지금 값이 참조자인 ref에 들어있는 값하고 요놈하고 똑같죠. 네 그래서 여기에다 대고 그래서 간접지정해서 30 이러면은 F10키 눌러 보면 여기 데이터의 값이 바뀌는 걸 보실 수가 있죠? 네 데이터 출력하면 당연히 30이 나오겠네요. 해서 여러분이 지금까지 이만큼의 내용을 보셔서 아시겠지만 참조자라고 하는 것은 개념적인 표현이고 참조자의 실체는 포인터랑 똑같이 구현이 돼요. 그래서 기계어 수준으로 내려가서 쫓아가 보면은 결과적으로는 그렇다. 그래서 참고하시기 바랍니다. 아, 참조자 이런 거구나." 인데 이게 스크립트에서 이상하게 표시가 됩니다. 처리 부탁드릴게요. 고맙습니다!
-
해결됨홍정모의 따라하며 배우는 C언어
매개변수화 라는게 무슨 뜻 인가요?
5.12 함수의 인수와 매개변수 강의에도 언급이 돼있길래 봤는데 통 이해를 못하겠어요함수가 매개변수화 되었다? 매개변수는 함수 선언할 때 void function(void)에서 괄호안에 들어가는게 매개변수 아닌가요?저는 이 매개변수가 인자를 받아오는 그릇으로 이해를 하고 있는데 이게 매개변수화 되었다는 거랑 연결이 잘 안되네요
-
해결됨C개발자를 위한 최소한의 C++
스크립트 오류
7:38초 경 텍스트가 그러면 그거랑 5랑 더해서 연산의 임시결과가 떨어졌겠죠 그게 15가 저장되어 있는 integer 인스턴스일텐데, 사라져야 될 운명이었으나 거기에다 이름을 부여한거죠. 인데 수정 제안할랬더니 길어서 짤리네요. 관리자분께서 스크립트 시간 자른 후 나눠서 바꿔주셔야 할 것 같아요.지난 시간 것도 유사한 게 있었어요. 통으로 날아가 있어서... 조치 부탁드립니다! 노트 필기하는 마음으로 스크립트 수정 중입니다. ㅎㅎ
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
깃허브 pathsec 오류
git init 후에 .gitignore 파일을 작성해서 git rm --cached node_modules 명령어를 입력했는데fatal: pathspec 'node_modules' did not match any files이런 오류가 뜹니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[MemberRepositoryTest에서 Transaction 없이 실행하면, Error가 발생하지 않습니다.]
[질문 내용]영상 12:45 내용입니다. 제목 그대로 MemeberRepositoryTest를 실행하는 과정에서 Transaction없이 실행하면 Error가 발생해야 하는데, 발생하지 않습니다. 왜 그런지 궁금합니다. 질문을 수정하겠습니다. 실행결과를 다시 살펴보니 Error가 발생하지 않는 것이 아니라 Test가 실행되지 않고 있었네요ㅜ TDD 자체가 실행되지 않았습니다.@Transactional을 설정하고 다시 실행하였더니, test file 자체가 생성되지 않았고, fail인지 아닌지도 확인할 수 없었습니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - Part 1 NestJS Core
JWT refreshToken 쿠키
Client 에서 Refresh Token 을 localStorage 보다는 cookie 에 저장을 하는게 보안에 더 좋다는 이야기를 들었는데요. 만약에 구현을 하려고 하면 강의에서처럼 로그인 했을때 accessToken 과 refreshToken 을 함께 보내는게 아니라 이런식으로 보내면 될까요?res.cookie( 'refreshToken', refreshToken, { httpOnly: true, secure: true, sameSite: 'strict' }); return {accessToken: '엑세스 토큰'};배포 과정과 강의를 담은 Part 2는 언제 나올까요?
-
미해결C++20 훑어보기
StringLiteral에서 [N]은 어떻게 동작되는건가요?
안녕하세요강의를 보다가 궁금한 점이 생겨서 질문드려요 template<int N> class StringLiteral { public: constexpr StringLiteral(char const (&str)[N]) { std::copy(str, str+N, _data); } char _data[N]; }; template<StringLiteral str> class ClassTemplate { }; template<StringLiteral str> void FunctionTemplate() { cout << str._data << endl; } int main() { ClassTemplate<"Hello World"> cls1; FunctionTemplate<"Hello World">(); return 0; }위 코드에서 [N]은 자동으로 글자의 수가 채워지는건가요? 어떻게 동작되는지 좀 설명해주시면 감사하겠습니다.
-
미해결게임 엔진을 지탱하는 게임 수학
새로운 벡터를 만들어 어디다 쓰나요?
조금 엉뚱한 말일수도 있는데.. 내용이 난해하네요 ㅠㅠ 반복해서 들어도 무슨말인지 이해가 잘안갑니다.. 게임에서 어디다 쓰는지 왜 벡터를 조합해서 새로운 벡터를 만드는지 예시를 몇가지 알려주실 수 있을까요??
-
미해결C# WPF .NET Core(7.0)
MVVM 2강
안녕하세요MVVM2강에서 4:19초 실행화면에서 버튼이 활성화 안되는데.. 왜 그런지 못찾겠습니다.항목클릭시 TextBox에 이름,나이는 들어오는데.. txt.Lenght가 값이 안들어 와서 false만 되네요혹시 닷넷 버전과 관련이 있을까요??? public class PersonModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }================================<TextBox x:Name="tbox1" Width="150" Text="{Binding ElementName=lv,Path=SelectedItem.Name, Mode = TwoWay, UpdateSourceTrigger=PropertyChanged}"/><TextBox Width="150" Text="{Binding ElementName=lv, Path=SelectedItem.Age, Mode = TwoWay, UpdateSourceTrigger=PropertyChanged}"/>================================= public bool CheckMsg(string txt){if(txt.Length > 0){return true;}else{return false; //글자가 없으면 false}=====================================
-
해결됨네트워크, 그림으로 이해하자
DNS 챕터 관련 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! DNS를 학습하면서 든 의문점이 있어서 질문드립닏다.1. DNS의 계층 구조 명칭 질문보여주신 그림을 보자면 다음과 같이 이해했는데요.root -> TLD -> Sub domain -> host name이에 대해서 구글링을 해보면 어떤 사람은 naver를 Second Level domain이고, cafe 나 search를 sub domain이라고도 하는데 이를 어떤 게 정확하게 맞는 건가요?host name은 제일 하단에 있는 부분이라고 이해하면 되는 걸까요?제 생각에는 이런 문제가 발생된 이유가 DNS가 트리형인 계층적 구조로 되어 있어서 계속 밑으로 내려갈 수 있기 때문에 어디부터 어디까지를 Second level domain, sub domain, host name이라고 하기 어려워서 그런 것 같습니다. 2. DNS 질의 원리 강의해주신 질의 방식에는 재귀와 반복이 있다고 하셨는데, 재귀의 경우, DNS client가 root에 질의한다음 root에서 한 층씩 내려가는 걸로 이해했는데요. 그러면 예를 들어서 www.naver.com 이라고 하면 root 계층에는 없으니 TLD 으로 내려가고 여기서 일치하는 com이 있으니 com 에서 더 낮은 계층으로 내려가서 탐색하고 거기서 naver가 일치하니 naver에서 하위 계층으로 이렇게 내려가는 식으로 탐색한다는 건가요? 등록되어 있지 않으면 더 하위 계층으로 내려간다는 게 이해가 안가서 질문 드립니다. 더 아래로 내려갈려면 무조건 상위 도메인이 일치해야 내려가는 게 아닌가요? 그리고 반복적 질의에 대해 제가 잘 이해했는지 확인하고자 질문드립니다.예를 들겠습니다.1. 브라우저의 url 창에 www.lab.glasscom.com 을 입력하여 로컬 DNS 서버에 먼저 질의2. 로컬 DNS 서버에서 모를 경우, Root DNS 서버에 질의한다. (`www.lab.glasscom.com`의 IP 주소는?) 그러면 Root DNS 서버에서 `com` 의 IP 주소를 로컬 DNS 서버에 응답한다.3. 로컬 DNS 서버는 `com` TLD DNS 서버에 동일하게 질의한다. 그러면 `com` TLD DNS 서버에서 `glasscom`의 IP 주소를 로컬 DNS 서버에 응답한다.4. 로컬 DNS 서버는 `glasscom` DNS 서버에 동일하게 질의한다. 그러면 `glasscom` DNS 서버에서 `lab`의 IP 주소를 로컬 DNS 서버에 응답한다.5. 로컬 DNS 서버는 `lab` DNS 서버에 동일하게 질의한다. 그러면 `lab` DNS 서버에서는 `www.lab.glasscom.com`의 IP 주소를 로컬 DNS 서버에 응답한다.6. 로컬 DNS 서버는 클라이언트에게 10번에서 얻은 IP 주소를 전달위와 같이 이해하면 될까요? 마지막으로 재귀와 반복 질의 각각 언제 사용되는 건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
BFS 당근마킷 엔지니어 승원이 문제 제꺼 한번 봐주실 수 있나요?
안녕하세요 큰돌님.문제 해답 보기 전에 영상 멈추고 풀기 시작했다가 1시간이나 까먹었네요.... 이래도 성장 할 수 있을지 고민입니다.개인적인 고민은 뒤로 두고 다음의 코드로 풀긴 했는데 이게 맞는 코드인지 봐주실수 있나요?항상 질문 답변 해주셔서 감사합니다. #include <bits/stdc++.h> using namespace std; int N, M, startY, startX, destY, destX, adj[104][104]; int dy[] = {1, 0, -1, 0}; int dx[] = {0, 1, 0, -1}; map<pair<int, int>, int> visited; void bfs(int y, int x) { pair<int, int> pos = {y, x}; visited[pos] += 1; queue<pair<int, int>> q; q.push(pos); while (q.size()) { auto loc = q.front(); q.pop(); for (int i = 0; i < 4; ++i) { int ny = loc.first + dy[i]; int nx = loc.second + dx[i]; pair<int, int> prevOffset = {loc.first, loc.second}; pair<int, int> nextOffset = {ny, nx}; if (ny < 0 || nx < 0 || ny >= M || nx >= N) continue; if (visited[nextOffset]) continue; if (adj[ny][nx] == 0) continue; visited[nextOffset] = visited[prevOffset] + 1; q.push(nextOffset); if (ny == destY && nx == destX) q = queue<pair<int, int>>(); } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> M; cin >> startY >> startX; cin >> destY >> destX; for (int i = 0; i < N; ++i) for (int j = 0; j < M; ++j) cin >> adj[i][j]; bfs(startY, startX); cout << visited[make_pair(destY, destX)] << "\n"; return 0; }
-
해결됨코딩테스트 [ ALL IN ONE ]
leetCode - Two Sum 문제 Memory Limit Exceeded 에러
class Solution(object): def twoSum(self, nums, target): def backtrack(start, curr): # base case : 2개의 합을 더해서 target과 같으면 if len(curr) == 2 and sum(nums[i] for i in curr) == target: return curr # recursion : for i in range(start, len(nums)): curr.append(i) res = backtrack(i + 1, curr) if res: return res curr.pop() return None return backtrack(0, [])https://leetcode.com/problems/two-sum/submissions/1130560186/ 이 코드로 작성해서 leet-code의 two sum 문제에 제출해봤을 때 Memory Limit Exceeded 에러가 나는건 어떻게 해결해야 할까요?
-
해결됨AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
DockerFile 빌드 에러
DockerFile 빌드시에 에러가 나서 찾아보고 해결책 공유 드립니다. >> docker build . 에러메세지 : failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount029268071/Dockerfile: no such file or directory 해결책 : docker build . -f ./DockerFile
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
insert문
jpa에서 코드도 제대로 치고 <property name="hibernate.hbm2ddl.auto" value="create" />create로 설정하고 했는데 왜 저장할때 insert문이 안날라 가는걸까요?테이블은 제대로 생성이되는데 데이터가 저장이 안되고 insert문도 날라가지 않습니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값타입 쓰는 이유, 값타입의 한계와 해결방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]값 타입을 공부하며 정리한 생각입니다.제가 올바르게 생각했는지 검토해주시면 감사드리겠습니다개인적으로 정리한 글이라 존댓말이 아닌 점 양해주시면 감사드리겠습니다 값타입은 왜 쓰는가?엔티티는 서로 공유하는 것이 목표이다그래서 엔티티 필드를 다른 엔티티 필드와 연관관계 매핑(@ManyToOne 등)을 하는 것이다하지만 모든 엔티티 필드를 서로 공유한다고 하면 너무 복잡하지 않겠는가?필드가 해당 엔티티에만 소속되어 다른 엔티티와는 연관(공유)되지 않는 값이 있으면 조금이라도 단순해질 수 있지 않을까?그래서 값 타입을 사용하는 것이다!값 타입의 한계는 무엇인가?Wrapper type(기본 값 타입), String type(기본 값 타입), 임베디드 타입은 객체 타입이다.그래서 기본값 타입과 임베디드 타입은 참조 공유가 가능하다.객체 타입의 참조 공유가 문제라고 생각하면 문제일 순 있겠지만자바에서 참조 공유를 막을 수 있는 방법은 없다. 그래서 참조 공유의 문제(두 객체가 하나의 참조를 바라볼 수 있는 문제)는 차치하자.그러면 발생할 수 있는 문제는 무엇이냐면하나의 참조를 바라보는 두 객체가 존재할 때, 해당 참조의 실제 값이 바뀌면 두 객체의 값이 모두 변경될 수 있다는 것이다.(참고로, 만약 참조의 실제 값이 바뀔 때 두 객체의 값이 모두 변경되길 의도했다면 값타입이 아니라 엔티티 타입을 써야 한다. 왜냐하면 공유가 목표였다면 값타입이 아니라 엔티티를 사용하는 것이 옳기 때문이다.)물론 Wrapper type(기본값 타입), String type(기본값 타입) 은 setter 가 없기 때문에 값 변경이 불가능하다.그래서 기본값 타입은 참조 공유의 문제로부터 어느정도 자유로울 수 있다.그럼 진짜 문제는 임베디드 타입이다.왜냐하면 임베디드 타입은 만약 개발자가 setter 를 만들면 값 변경이 가능하기 때문이다.어떻게 임베디드의 참조 공유의 문제(두 객체가 하나의 참조를 바라볼 때, 참조의 실제값이 변경되어 두 객체의 값이 동시에 변경될 수 있는 문제)를 해결할 수 있을까?불변 객체를 만드는 것이다불변 객체는 말 그대로 한번 생성한 이후에 값을 변경하지 못하는 객체이다불변 객체를 만들기 위해1. 생성자로만 필드 초기화2. setter 금지를 준수하면 된다만약 값을 변경하고 싶다면 객체를 통째로 새롭게 만들어야 한다
-
미해결[코드팩토리] [입문] 9시간만에 끝내는 코드팩토리의 Javascript 무료 풀코스
sort 함수에 대해 궁금한 점이 있습니다.
sort 함수의 예시에서[1, 9, 7, 5, 3] 을 내부적으로 비교하게 될 텐데비교하는 순서가1, 91, 71, 51, 3 다 비교한 후에9, 79, 59, 3이런 식으로 순차적으로 비교하나요?