묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
프론트에서 credentials: include로 설정한경우 cors 문제
안녕하세요.프론트와 백엔드 통신 중에 문제가 있어 질문드립니다.restoreAcessToken 기능을 사용하기 위해서 쿠키를 사용해야 합니다.서버측과 프론트측 주소가 다른 경우 쿠키 정보를 전송하기 위해서는credentials: 'include'로 설정해야 하잖아요?그러면 브라우저에 다음과 같은 오류가 발생합니다.Access to fetch at 'http://localhost:3000/graphql' from origin 'http://localhost:8080' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.프론트 주소: localhost:8080백엔드 주소: localhost:3000서버측에서 cors 문제를 해결하기 위해 사용한 코드는 아래와 같습니다.app.enableCors({ origin: "http://localhost:8080", // 요청을 보내는 클라이언트의 주소를 명시 credentials: true, });오류 해결을 위해서 어떻게 해야하는 걸까요? 그리고 새 토큰을 발급 받는 아래 setRefreshToken의 코드도 수정돼야 하는지요? network 탭에서는 쿠키가 들어온게 확인이 되는데 application 탭에서는 확인이 됐다 안됐다 합니다..setRefreshToken({ user, res }: IAuthServiceSetRefreshToken): void { const refreshToken = this.jwtService.sign({ email: user.email, sub: user.userId }, { secret: process.env.JWT_REFRESH_KEY, expiresIn: "2w" }); res.setHeader("Set-Cookie", `refreshToken=${refreshToken}; path=/;`); } 답변 부탁드립니다.감사합니다.
-
해결됨데브옵스(DevOps)를 위한 쿠버네티스 마스터
cni 설치시 에러 발생
virtualbox 에서 온프레미스 환경에서 클러스터 구축하는데 오류가 발생하는 원인이 무엇인가요?강의의 내용처럼 순차적으로 실행하다가 cilium install 하는 곳에서 에러가 발생하면서 에드온이 적용이 잘 안되는 것 같습니다.환경 구성은 virtualbox-7.0.8에서 ubuntu-22.04.2-live-server-amd64.iso를 사용해서 가상머신 두 대를 생성하였습니다. nat network를 사용해서 인프라 환경을 구축하였고 ping을 통해서 게스트 os 간 통신이 정상적으로 작동하는 것을 확인했습니다.swapoff 수행netfilter 관련 설정 수행kubeadm 버전은 1.27.2와 1.26.5 버전을 사용해서 시도했으나 두 버전 같은 현상을 보이고 있었습니다.간헐적으로 kubectl get nodes 명령 정상 수행되거나 오류가 발생하는 경우가 발생해서 마스터 노드의 쿠버네티스 컴포넌트(컨테이너) 들이 정상적으로 running 상태인지 확인을 해보니 컴포넌트들이 지속적으로 running 상태가 아니라 exited 상태가 되고 다시 재시작하는 것을 확인하였습니다.kubectl 명령이 수행되지 않는 경우는 kube-proxy가 exited 상태로만 존재하는 경우 작동이 되지 않았습니다. 그래서 인증서 문제가 아니라 컴포넌트들이 다운되어서 재 역할을 하지 못해서 cni 도 설치가 안된다고 판단했는데 왜 이런지 해결할 수가 없네요. 어떻게 해야 이 오류를 해결할 수 있나요? crictl log [container-id] 조회 결과api-proxy container error logetcd container error logkube-controller-manager error log
-
해결됨입문자를 위한 Docker 및 Dockerizing 마스터하기
실습 진행 환경
안녕하세요 선생님! 수업을 신청했는데 실습을 진행할 때 맥북으로도 진행할 수 있나요??? 실습진행을 우분투로 하셨다고 나와있었서요..그리고 Node JS로 서버를 만들어본적이없는데 수업을 듣는데 문제 없을까요??
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
각 세션을 시작하기 위한 소스코드
안녕하세요.강의를 통해 많은 도움 받고 있습니다.일하면서 배우는 중이라 필요한 내용들을 그때마다 찾아서 공부하고 있습니다. 그런데 강의 특성상 각 단계를 차례대로 따라가지 않으면 새로운 세션을 공부하기 위한 베이스 코드가 없기 때문에 어려움을 겪고 있습니다. 혹시 version2의 각 세션을 시작하기 위한 베이스 코드를 제공해주시기는 어려울까요?감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
섹션29 10-08 강의 숙제 해설 질문
안녕하세요.섹션29 10-08 강의 약 5:30 부분에서 타입스크립트 에러에 관한 숙제를 내주셨는데요. 해당 숙제와 관련된 해설 및 코드가 있는지 궁금합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
섹션22 서버개념에 대한 질문입니다.
안녕하세요? 강의 잘 듣고 있습니다.서버관련해서 몇가지 헷갈리는 개념이 있어서 질문드립니다. 서버가 백엔드만 지칭하는 용어인 줄 알았는데 프론트나 DB에도 서버개념이 있다는 것이 신기했습니다. 단순히 데이터를 제공하는 입장이면 전부 서버라는 용어를 사용해도 되는 것인가요?브라우저와 클라이언트를 같은 개념으로 생각해도 되는지요? 더 나아가 프론트까지? (저는 백엔드 개발을 공부하고 있어서 백엔드입장에서는 브라우저, 클라이언트, 프론트가 전부 같은 포지션으로 생각됩니다.)백엔드서버가 브라우저의 접속도 기다린다고 하셨는데 백엔드서버는 프론트엔드서버하고만 통신하는 것이 아닌가요?예를들어 브라우저(클라이언트?)에서 회원가입창을 클릭하고 프론트서버에서 화면을 보여줍니다.그리고 휴대폰인증번호를 입력한다고 하면, 프론트서버가 그 번호을 받아 백엔드서버로 넘겨줘서 백엔드에서 검증뒤 프론트로 보내주고, 프론트는 인증결과를 브라우저에 표시해줍니다.보통 이런 경우 백엔드는 브라우저가 아니라 프론트하고 교류를 하는 것이 아닌가 생각합니다. 근본적으로 궁금한 것은 클라이언트가 브라우저에서 이런 저런 작업(클릭, 입력)을 했을 때 브라우저, 프론트, 백엔드, DB에서 서로 어떻게 통신을 하는지 내부에서 어떤 작업들이 일어나는지등의 큰 흐름을 알고 싶은데 이건 지금 질문하기보단 강의를 끝까지 들어봐야될것 같네요 ^^;;
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
모듈 의존성 문제
@Module({ imports: [ TypeOrmModule.forFeature([Product, ProductTag, ProductCategory]), UserModule, ProductTagModule, ProductCategoryModule, ], providers: [ ProductResolver, ProductService, ], }) export class ProductModule {}위와 같은 코드에서 ProductService의 실행에 필요한 ProductTagModule과 ProductCategoryModule를 다 import 해주었는데 계속 아래와 같은 의존성 오류가 나왔습니다.Nest can't resolve dependencies of the ProductService (ProductRepository, ?, UserService, ProductCategoryService). Please make sure that the argument ProductTagService at index [1] is available in the ProductModule context.Potential solutions:- Is ProductModule a valid NestJS module?- If ProductTagService is a provider, is it part of the current ProductModule?- If ProductTagService is exported from a separate @Module, is that module imported within ProductModule? @Module({ imports: [ /* the Module containing ProductTagService */ ] }) 그래서 아래와 같이 ProductTagService, ProductCategoryService를 임의로 providers에 넣어주면 또 실행이 됩니다. 해당 모듈을 이미 임포트 해주었는데 왜 서비스를 따로 또 주입해주어야 할까요?@Module({ imports: [ TypeOrmModule.forFeature([Product, ProductTag, ProductCategory]), UserModule, ProductTagModule, ProductCategoryModule, ], providers: [ ProductResolver, ProductService, ProductTagService, ProductCategoryService, ], }) export class ProductModule {} 아래는 ProductTagModule과 ProductCategoryModule 코드입니다.@Module({ imports: [TypeOrmModule.forFeature([ProductTag])], providers: [ProductTagResolver, ProductTagService], }) export class ProductTagModule {} @Module({ imports: [TypeOrmModule.forFeature([ProductCategory])], providers: [ProductsCategoriesResolver, ProductCategoryService], }) export class ProductCategoryModule {}
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
구동엔 문제 없으나 파일 참조 시 메세지가 발생합니다.
안녕하세요.강의를 따라하고 있는 중 파일 참조 부분에서"Unresolved template reference" 메세지가 발생합니다. 밑줄이 생긴 것과는 상관없이 작동에는 아무런 영향이 없기는 합니다. 하지만 깔끔하게 만들어 두고자 하는 마음에 검색을 해보았지만 뚜렷한 해결책을 찾지는 못하였습니다. 감사합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
15-02 API-GateWay 2
안녕하세요 수업을 잘 따라가고 있던 중 오류가 발생하였습니다... docker을 작동 하였고 아래와 같이 나와 도커를 확인 하였습니다.gatway제외한 나머지는 작동이 되는 걸 확인 하였고 gateway만 따로 작동을 하자 아래와 같이 에러가 발생하였습니다... 버전문제 때문에 그런건가요...??
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
안녕하세요 버전1과 버전2의 차이에서
cs적인 부분이 더 강화되고 장점이 더 많아 졌다는 것을 알게되었는데,혹시 ver1부분과 ver2부분에서 elk스택에 대해서는 없는거 같은데 빠졌나요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
중첩된 serializer(DB table은 하나)
class TbVaResult(models.Model): report_id = models.ForeignKey(TbVaReport, on_delete=models.PROTECT, db_column="report_id") result_type = models.CharField(max_length=10) asset_cd = models.CharField(max_length=20) measure_cd = models.CharField(max_length=10) result_cd = models.CharField(max_length=10, blank=True, null=True) result_desc = models.CharField(max_length=4000, blank=True, null=True) class Meta: db_table = 'tb_va_result' unique_together = (('report_id', 'result_type', 'asset_cd', 'measure_cd'),) 위와 같은 model이 있고, { "report_id": "IS_LX_2023_0010", "result_type": "C", "asset_cd": "LX001", "result": [ { "measure_code": "LX1-01-R", "result": "Y", "result_code": "LX1-01-SA", "result_desc": "root" }, { "measure_code": "LX1-03-R", "result": "SELF", "result_code": "LX1-03-SA", "result_desc": "인터뷰" } ] }이런 데이터를 보내려고 합니다.serializer를 통해 아래와 같은 데이터를 만들어 테이블(TbVaResult)에 쓰려고 합니다.{ "report_id": "IS_LX_2023_0012", "result_type": "C", "asset_cd": "LX001", "measure_cd": "LX1-01-R", "result_cd": "Y", "result_desc": "root" }, { "report_id": "IS_LX_2023_0012", "result_type": "C", "asset_cd": "LX001", "measure_cd": "LX1-03-R", "result_cd": "SELF", "result_desc": "인터뷰" }views.pyclass ResultCreateViewSet(viewsets.ModelViewSet): queryset = TbVaResult.objects.all() serializer_class = ResultCreateSerializer authentication_classes = [JWTAuthentication] permission_classes = [IsAuthenticated] serializers.pyclass ResultSerializer(serializers.Serializer): measure_cd = serializers.CharField() result_cd = serializers.CharField() result_desc = serializers.CharField() class ResultCreateSerializer(serializers.Serializer): result = ResultSerializer(many=True) report_id = serializers.CharField() result_type = serializers.CharField() asset_cd = serializers.CharField() def create(self, validated_data): print('===============================================') print('validated_data:', validated_data) result_data = validated_data.pop('result') print('result_data:', result_data) report_id = validated_data.pop('report_id') result_type = validated_data.pop('result_type') asset_cd = validated_data.pop('asset_cd') tb_va_report = TbVaReport.objects.get(report_id=report_id) for result_item in result_data: measure_cd = result_item.pop('measure_cd') result_cd = result_item.pop('result_cd') result_desc = result_item.pop('result_desc') tb_va_result = TbVaResult.objects.create( report_id=tb_va_report, result_type=result_type, asset_cd=asset_cd, measure_cd=measure_cd, result_cd=result_cd, result_desc=result_desc ) return tb_va_result"Got AttributeError when attempting to get a value for field result on serializer ResultCreateSerializer." 이런 에러가 발생하네요.DB에 쓸때 result 가 안들어가는데 어디서 발생되는 에러인지 모르겠습니다.도움을 부탁드립니다. ㅠㅠ
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
as_view()에서 인자로 http method의 사용 가능 여부
안녕하세요.강의 내용 중에 다음과 같은 코드를 보여 주셨는데요.post_list = PostViewSet.as_view({ 'get': 'list' })그런데 장고의 소스 코드를 보면,class View: """ Intentionally simple parent class for all views. Only implements dispatch-by-method and simple sanity checking. """ http_method_names = [ "get", "post", "put", "patch", "delete", "head", "options", "trace", ] # 중간 코드 생략 @classonlymethod def as_view(cls, **initkwargs): """Main entry point for a request-response process.""" for key in initkwargs: if key in cls.http_method_names: raise TypeError( "The method name %s is not accepted as a keyword argument " "to %s()." % (key, cls.__name__) ) as_view()에 전달한 키워드 인자에 http_method_names 의 항목에 해당하는 키가 있으면 TypeError 를 발생시키는 것으로 되어 있는 것 같습니다.그런데 as_view()에 강의 내용과 같이 get 을 키워드 인자로 사용해도 되는지 궁금합니다.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
수업과는 상관없지만 개발 순서와 완성도에 대해 질문드립니다!
안녕하세요!저는 프론트수업과 백엔드 수업을 듣고 하나의 웹을 혼자서 만들어보려고 하는데요.프론트부분과 백엔드 부분 중 어느 부분을 먼저 만들어야하는지 궁금합니다.그리고 백엔드 개발자를 준비한다면 프론트 부분의 완성도가 어느정도여야 하는지도 궁금합니다.( 포트폴리오 제출시 어필하기 위해서 )질문이 많이 모호해서 답변해주시기 어려울 것 같다는 생각이 드는데요, 혼자서 포트폴리오를 위해 웹을 제작하는 경우 어느정도까지 완성해야하는지가 궁금합니다.
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
쿠버네티스 설치할 때 에러납니다. 해결 방법 공유합니다. (23.05.30 기준)
한달 전에는 노션에 있는 스크립트대로 해도 잘 됐는데 지금은 안되네요. 강사님이 강의에서 설치 방법이 계속 바뀐다고 하셨는데 그 사이에 바뀐 모양입니다. 다른 질문 작성자 님이 공유해주신 내용 참고해서 문제 해결하였고 저처럼 삽질하지 마시라고 내용 공유드립니다.저는 'kubeadm, kubelet 및 kubectl 설치' 구간의 노션 스크립트를 다음과 같이 변경하여 설치 진행했습니다.#2번, #3번을 변경했습니다.sudo mkdir /etc/apt/keyrings cat <<EOF > kube_install.sh # 1. apt 패키지 색인을 업데이트하고, 쿠버네티스 apt 리포지터리를 사용하는 데 필요한 패키지를 설치한다. sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl # 2. 구글 클라우드의 공개 사이닝 키를 다운로드 한다. curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg # 3. 쿠버네티스 apt 리포지터리를 추가한다. echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list # 4. apt 패키지 색인을 업데이트하고, kubelet, kubeadm, kubectl을 설치하고 해당 버전을 고정한다. sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl EOF sudo bash kube_install.sh기존 스크립트에서 인증 관련 데이터를 '/etc/apt/keyrings'폴더에 저장하는 것으로 변경되었습니다. 강의에서 실습하는 Ubuntu 22.04 이전 환경에는 default로 '/etc/apt/keyrings' 폴더가 없어 직접 만들어 줘야 인증 키를 받을 수 있습니다.
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
jupyter notebook 에서 No module named 'django_extensions' 에러가 발생합니다 ㅠ
8강 장고 Shell 에서는 에러 없이 잘 되었는데, 지금은 스샷처럼 에러가 발생하네요 ㅠ 여기저기 찾아봐도 환경설정은 추가되어 있는거 같고 방법을 모르겠어서 질문 남깁니다. 시간되실 때 확인해주시면 감사하겠습니다. ^^
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
선택과목 교재는 없는건가요?
안녕하세요.강의를 수강하던 중일부 동영상에서 보여지는 교재 내용과 다운로드된 교재가 좀 다른 것이 보입니다.그런데 일부 과목들은 아예 교재가 안보이는 경우가 있습니다.예를 들어 구글 클라우드 플랫폼 기초 강의나 개편전 영상 같은 경우 입니다.우선 강의만 듣고 있습니다만, 지금 들어도 유익한 내용이 많아서 교재도 있었으면 합니다. 교재 추가 및 교재 업데이트 계획은 없는지 문의 드립니다.감사합니다.
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
노션 스크립트 그대로 해도 설치 않되는 경우 23-05-27 기준
containerd 까지는 잘 설치하다가 쿠버 설치하는데 에러나서 삽질 했습니다. 디렉터리가 없어서 인증 키를 다운을 하지 않아서 발생하는 문제였습니다.mkdir /etc/apt/keyrings이것 때문에 삽질해서 공유합니다.https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
도메인을 A, B 또는 그 이상으로 여러개 운영하려면 어떻게 해야 될까요?
도메인이 A,B,C 이런식으로 여러개의 독립된 사이트를 만들어 보려고 합니다.이럴때 docker compsose 안에 nginx:80 을 여러개 만들어야 되는건지아니면 docker compose를 여러개 만들어야 되는걸까요?기존 아파치에서는 virtual host에 여러개의 도메인을 셋팅하면 되었는데요도커에서는 어떻게 해야 될지 난감합니다. 구글 검색을 해봐도 이해가 잘 가는 내용이 많지가 않네요.
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
코드 오류 (06-03)
06-03 클래스 전략 패턴수업에서 선생님과 코드를 똑같이 입력했는데 오류(공중 몬스터 not defined)가 납니다. 어떤 부분이 문제일까요? class 공중부품 { run = () => { console.log("날아서 도망가자!!"); } } class 지상부품 { run = () => { console.log("뛰어서 도망가자!!"); } } class Monster { power = 10; 부품; constructor(qqq){ this.부품 = qqq; } attack = () => { console.log("공격하자!!"); console.log("내 공격력은" + this.power + "야!!!"); }; run = () => { this.부품.run();class 공중부품 { run = () => { console.log("날아서 도망가자!!"); } } class 지상부품 { run = () => { console.log("뛰어서 도망가자!!"); } } class Monster { power = 10; 부품; constructor(qqq){ this.부품 = qqq; } attack = () => { console.log("공격하자!!"); console.log("내 공격력은" + this.power + "야!! }; } const mymonster1 = new Monster(new 공중부품()); mymonster1.attack(); mymonster1.run(); const mymonster2 = new Monster(new 지상부품()); mymonster2.attack(); mymonster2.run();
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
date를 인식 못하는 문제
엔티티@Entity() @ObjectType() export class Reservation { @PrimaryGeneratedColumn('uuid') @Field(() => String) reservationId: string; @Column({ nullable: false }) @Field(() => Date) startDate: Date; @Column({ nullable: false }) @Field(() => Date) endDate: Date; @Column({ nullable: false }) @Field(() => Int) usersNumber: number; @Column({ nullable: false }) @Field(() => Int) lengthOfStay: number; @Column({ nullable: false }) @Field(() => Int) price: number; @ManyToOne(() => Member) @JoinColumn({ name: 'memberId' }) @Field(() => Member) member: Member; @ManyToOne(() => Campground) @JoinColumn({ name: 'campgroundId' }) @Field(() => Campground) campground: Campground; @ManyToOne(() => Tent) @JoinColumn({ name: 'tentId' }) @Field(() => Tent) tent: Tent; @DeleteDateColumn() deletedAt: Date; } 데이터 생성 DTO@InputType() export class CreateReservationInput extends OmitType( Reservation, ['reservationId', 'member', 'campground', 'tent'], InputType, ) { @Field(() => String) memberId: string; @Field(() => String) campgroundId: string; @Field(() => String) tentId: string; } 위 코드에 graphQL 요청시 에러가 발생합니다.mutation { createReservation ( createReservationInput: { startDate: "2023-01-01" endDate: "2023-06-06" usersNumber: 5 lengthOfStay: 10 price: 5 memberId: "lhw3542" campgroundId: "d35d3972-5c07-47d7-94a2-23c784f0a27e" tentId: "3ae33a7c-c898-4b66-b110-02b4f8c96398" } ) { reservationId startDate endDate usersNumber lengthOfStay price member { memberId } campground { campgroundId } tent { tentId } } } Field 'startDate' doesn't have a default value날짜 형식을 읽지 못하는 것 같은데 무엇이 잘못된 걸까요?아래와 같이 DTO에 직접 써줘도 인식을 못하고 있습니다. @Field(() => Date) startDate: Date; @Field(() => Date) endDate: Date;