묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결웹 게임을 만들며 배우는 React
webpack 빌드 시 에러
안녕하세요 제로초님! 에러 해결을 하다가 계속 붙잡고 있게돼서 두 가지 에러 사항 질문합니다 ! 1. 첫 번째 에러 사항 ( 모듈 빌드 실패 ) => 이런 경우는 babel-core와 babel-loader가 서로 요구하는 버전이 안맞아서 생기는 에러라는 것을 알게됐습니다. 따라서, babel-loader가 8버전이면 babel-core는 7.x대, babel-loader가 7버전이면 babel-core가 6.x대로 변경하면 된다고 해서 아래와 같이 시도했는데, 에러가 사라지지 않습니다.. 2. Unknown option : .prests 이 부분은 babel-loader의 설정을 바꿔주면 될 것 같은데, 위처럼 시도를 했을 때 에러가 사라지지 않아 질문드립니다. 혹시나 해서 package.json파일과 webpack.config.js 파일 올립니다. package.json webpack.config.js
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
vagrant up 시 오류
이번에는 Virtualbox를 아예 삭제하고 관련 폴더도 다 삭제한 다음 6.1.18버전으로 다시 설치하고, .vagrant 파일도 삭제하고 vagrant up을 했는데 다음과 같은 오류가 났습니다 ㅜ ---- w2-k8s-1.22: Installed: w2-k8s-1.22: kubeadm.x86_64 0:1.22.0-0 kubectl.x86_64 0:1.22.0-0 kubelet.x86_64 0:1.22.0-0 w2-k8s-1.22: w2-k8s-1.22: Dependency Installed: w2-k8s-1.22: conntrack-tools.x86_64 0:1.4.4-7.el7 w2-k8s-1.22: cri-tools.x86_64 0:1.13.0-0 w2-k8s-1.22: kubernetes-cni.x86_64 0:0.8.7-0 w2-k8s-1.22: libnetfilter_cthelper.x86_64 0:1.0.0-11.el7 w2-k8s-1.22: libnetfilter_cttimeout.x86_64 0:1.0.0-7.el7 w2-k8s-1.22: libnetfilter_queue.x86_64 0:1.0.2-2.el7_2 w2-k8s-1.22: socat.x86_64 0:1.7.3.2-2.el7 w2-k8s-1.22: Complete! w2-k8s-1.22: Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. w2-k8s-1.22: Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service. ==> w2-k8s-1.22: Running provisioner: shell... w2-k8s-1.22: Running: C:/Users/LG/AppData/Local/Temp/vagrant-shell20211013-18604-5scmh8.sh w2-k8s-1.22: [preflight] Running pre-flight checks w2-k8s-1.22: error execution phase preflight: couldn't validate the identity of the API Server: Get "https://192.168.1.10:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) w2-k8s-1.22: To see the stack trace of this error execute with --v=5 or higher The SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed. The output for this command should be in the log above. Please read the output to determine what went wrong. ----- 제 노트북은 왜 이럴까요..ㅎㅎㅎ;; ----- 추가) 문제가 있는 2번째 워커 노드만 제거하고 다시 vagrant up 했더니 Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. 이 부분에서 무한 대기하고 있습니다.
-
미해결홍정모의 따라하며 배우는 C++
초반에 코드가 이해가 안갑니다
#include <iostream> #include<cstdlib> //rand(), srand() #include<ctime> //time() #include<fstream>//파일 스트리밍 using namespace std; class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } int getCents() const { return m_cents; } int &getCents() { return m_cents; } friend bool operator == (const Cents &c1, const Cents &c2) { return c1.m_cents == c2.m_cents; } friend std::ostream &operator << (std::ostream &out, const Cents ¢s) { out << cents.m_cents; return out; } }; int main() { Cents cents1(6); Cents cents2(6); if (cents1 == cents2) { cout << "equal" << endl; } cout << std::boolalpha; return 0; } 디버그 해보면서 이해가 안가는게 if (cents1 == cents2) { cout << "equal" << endl; } 이 부분으로 오면 바로 friend bool operator == (const Cents &c1, const Cents &c2) 이 함수로 가지던데 이유가 뭘까요?? if문에 == 마우스를 대보니 함수를 가르키던데 == 연산자가 friend bool operator == 이기 떄문인가요? 또 마지막 코드인 cout << std::boolalpha; 가 이해가 안가던데 디버그해도 그냥 바로 건너뛰고 지워도 문제가 안되던데 굳이 쓴 이유를 알고 싶습니다 감사합니다.
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
get_context_data부분 get_queryset으로 대체가능한가요?
여기 ProjectDetailView에서 get_queryset으로 get_context_data부분의 objectlist부분을 윗사진처럼 get_queryset으로 바꿔서 리턴해주면 똑같이 동작하나요?
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
짝수개 일 경우에도 문제가 없나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 풀이에서 나온 방법이, lat_n 이 짝수개 있는 경우에도 사용 가능 한 것인가요? 조건절에서 p_rn = 0.5로 해 놓았는데, lat_n의 갯수(n)가 짝수개인 경우, 이 조건을 n/2 번째와 n/2+1 에서 만족하나요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
in :orderids 일 때 DB 쿼리에 대하여 (사소함)
사소한 것 같은데 호옥시나 해서 질문합니다. List<OrderQueryDto> orderDtos = findOrderQueryDtos(); List<Long> orderIds = orderDtos.stream().map(o -> o.getOrderId()).collect(Collectors.toList()); List<OrderItemQueryDto> orderItemDtos = em.createQuery("select new jpabook.jpashop.repository.order.query" + ".OrderItemQueryDto(oi.order.id, i.name, oi.count, oi.orderPrice)" + " from OrderItem oi join oi.item i where oi.order.id in :orderIds", OrderItemQueryDto.class).setParameter("orderIds", orderIds).getResultList(); 일 때, orderIds = [4, 11] 인데 이걸 in :orderIds에 넣으면 [4, 11]이 아니라 내부에서 자동으로 (4, 11)로 괄호가 바뀌어서 DB에 날라가는 거 맞나요 ? List 구조를 보고, 쿼리를 보면 그런 것 같은데 혹시나 혹시나 해서 사소하게 물어봅니다 :]
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
6장 패키지
안녕하세요 ~ 6장 패키지 공부중에 sub파일을 열어보면 다 저렇게 오류가 나는데 왜그런걸까요 ?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
탐색할 때 사용하는 배열에 대해 질문이 있습니다
응용해서 다른 문제를 풀어봤는데 배열을 바꾸면 정답이 계속 바뀝니다...! #include <iostream> #include <algorithm> #include <vector> using namespace std; vector<vector<int>> map(201, vector<int>(201, 1)); vector<vector<int>> visited(201, vector<int>(201, 0)); vector<pair<int, int>> cctvx[4], cctvy[5]; int res = INT_MAX, n; int dx[4] = { 0,1,0,-1 }, dy[4] = { 1,0,-1,0 }; void DFS(int x, int y,int timer,int cctvi) { int xx, yy; if (x == n && y == n) { res = min(timer, res); } else { while (cctvx[cctvi][0].first <= x && x <= cctvx[cctvi][0].second&&cctvy[cctvi][0].first <= y && y <= cctvy[cctvi][0].second) { timer++; cctvi++; if (cctvi == 4) cctvi = 0; } for (int i = 0; i < 4; i++) { xx = x + dx[i]; yy = y + dy[i]; if (xx<1 || xx>n || yy<1 || yy>n) continue; if (map[xx][yy] == 0 && visited[xx][yy] == 0){ visited[xx][yy] = 1; timer++; cctvi++; if (cctvi == 4) cctvi = 0; DFS(xx, yy,timer,cctvi); visited[xx][yy] = 0; } } } } int main() { cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { cin >> map[i][j]; } } cctvx[0].push_back(make_pair(0, n / 4)); cctvx[1].push_back(make_pair(n - (n / 4), n)); cctvx[2].push_back(make_pair(n - (n / 4), n)); cctvx[3].push_back(make_pair(0, n / 4)); cctvy[0].push_back(make_pair(0, n / 4)); cctvy[1].push_back(make_pair(0, n/4)); cctvy[2].push_back(make_pair(n - (n / 4), n)); cctvy[3].push_back(make_pair(n - (n / 4), n)); visited[1][1] = 1; DFS(1,1,0,0); if (res == INT_MAX) { cout << -1; return 0; } else cout << res; return 0; }
-
미해결
해외유입확진자 수 없어야하는건가요??
해외유입확진자 수 없어야하는건가요? 제가 코드 다쓰여진 파일가지구 실습하고 있는데 강의처럼 해외유입확진자수가 안쓰여져있길래 똑같이써서 돌렸더니 오류가 나서요! p.s.항상 답변 너무 감사드려요! 드디어 부록만 보면 수강완료인데 질문 사소한것도 받아주셔서 감사하고 수고하셨습니다~~^^&
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
재질문입니다.
아래 질문했는데 해결되지 않아 질문드립니다. @Transactional과 @AfterEach-delete() 조합의 기능이 똑같은데, 더 편한 @Transactional를 놔두고 굳이 @AfterEach-delete() 조합을 쓸 때가 있는가요? 둘의 차이가 있는지요?
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
마스터 노드 쉘 스크립트 실행 시 오류
마스터 노드 쉘 스크립트 실행 시 다음과 같은 오류가 발생합니다. ----- [root@m-k8s 1.6]# ./WO_master_node.sh I1013 17:13:43.888031 3880 version.go:251] remote version is much newer: v1.22.2; falling back to: stable-1.20 [init] Using Kubernetes version: v1.20.11 [preflight] Running pre-flight checks [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/ [preflight] Pulling images required for setting up a Kubernetes cluster [preflight] This might take a minute or two, depending on the speed of your internet connection [preflight] You can also perform this action in beforehand using 'kubeadm config images pull' [certs] Using certificateDir folder "/etc/kubernetes/pki" [certs] Generating "ca" certificate and key [certs] Generating "apiserver" certificate and key [certs] apiserver serving cert is signed for DNS names [kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local m-k8s] and IPs [10.96.0.1 192.168.1.10] [certs] Generating "apiserver-kubelet-client" certificate and key [certs] Generating "front-proxy-ca" certificate and key [certs] Generating "front-proxy-client" certificate and key [certs] Generating "etcd/ca" certificate and key [certs] Generating "etcd/server" certificate and key [certs] etcd/server serving cert is signed for DNS names [localhost m-k8s] and IPs [192.168.1.10 127.0.0.1 ::1] [certs] Generating "etcd/peer" certificate and key [certs] etcd/peer serving cert is signed for DNS names [localhost m-k8s] and IPs [192.168.1.10 127.0.0.1 ::1] [certs] Generating "etcd/healthcheck-client" certificate and key [certs] Generating "apiserver-etcd-client" certificate and key [certs] Generating "sa" key and public key [kubeconfig] Using kubeconfig folder "/etc/kubernetes" [kubeconfig] Writing "admin.conf" kubeconfig file [kubeconfig] Writing "kubelet.conf" kubeconfig file [kubeconfig] Writing "controller-manager.conf" kubeconfig file [kubeconfig] Writing "scheduler.conf" kubeconfig file [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env" [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Starting the kubelet [control-plane] Using manifest folder "/etc/kubernetes/manifests" [control-plane] Creating static Pod manifest for "kube-apiserver" [control-plane] Creating static Pod manifest for "kube-controller-manager" [control-plane] Creating static Pod manifest for "kube-scheduler" [etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests" [wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s [kubelet-check] Initial timeout of 40s passed. Unfortunately, an error has occurred: timed out waiting for the condition This error is likely caused by: - The kubelet is not running - The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled) If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands: - 'systemctl status kubelet' - 'journalctl -xeu kubelet' Additionally, a control plane component may have crashed or exited when started by the container runtime. To troubleshoot, list all containers using your preferred container runtimes CLI. Here is one example how you may list all Kubernetes containers running in docker: - 'docker ps -a | grep kube | grep -v pause' Once you have found the failing container, you can inspect its logs with: - 'docker logs CONTAINERID' error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster To see the stack trace of this error execute with --v=5 or higher The connection to the server 192.168.1.10:6443 was refused - did you specify the right host or port? ----- 다음은 한 번 더 실행했을 때 오류입니다 ----- [root@m-k8s 1.6]# ./WO_master_node.sh I1013 17:36:26.417655 5928 version.go:251] remote version is much newer: v1.22.2; falling back to: stable-1.20 [init] Using Kubernetes version: v1.20.11 [preflight] Running pre-flight checks [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/ error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR Port-6443]: Port 6443 is in use [ERROR Port-10259]: Port 10259 is in use [ERROR Port-10257]: Port 10257 is in use [ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists [ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists [ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists [ERROR FileAvailable--etc-kubernetes-manifests-etcd.yaml]: /etc/kubernetes/manifests/etcd.yaml already exists [ERROR Port-10250]: Port 10250 is in use [ERROR Port-2379]: Port 2379 is in use [ERROR Port-2380]: Port 2380 is in use [ERROR DirAvailable--var-lib-etcd]: /var/lib/etcd is not empty [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher cp: overwrite ‘/root/.kube/config’? configmap/calico-config created customresourcedefinition.apiextensions.k8s.io/bgpconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/bgppeers.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/blockaffinities.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/clusterinformations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/felixconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/globalnetworkpolicies.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/globalnetworksets.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/hostendpoints.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ipamblocks.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ipamconfigs.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ipamhandles.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/ippools.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/kubecontrollersconfigurations.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/networkpolicies.crd.projectcalico.org created customresourcedefinition.apiextensions.k8s.io/networksets.crd.projectcalico.org created clusterrole.rbac.authorization.k8s.io/calico-kube-controllers created clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers created clusterrole.rbac.authorization.k8s.io/calico-node created clusterrolebinding.rbac.authorization.k8s.io/calico-node created daemonset.apps/calico-node created serviceaccount/calico-node created deployment.apps/calico-kube-controllers created serviceaccount/calico-kube-controllers created poddisruptionbudget.policy/calico-kube-controllers created ----- 도와주세요ㅜ
-
미해결비전공자를 위한 넓고 얇은 IT 지식 & 나의 개발 유형 알아보기! <M.B.I.T>
화면이 안나와요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 수강중인데 원래 화면이 안나오고 목소리만 나오는게 정상인줄 알았는데, 이상해서요. 화면 안나오는거 어떻게 해결할 수 있나요
-
미해결실전! 스프링 데이터 JPA
로그인한 유저의 데이터만 조회
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[인사말] 안녕하세요. 김영한 선생님. 현재 IT회사에서 근무하는 주니어-시니어 사이의 개발자입니다. 최근 회사에서 프로젝트를 리더급 개발자로 진행하게 되었고 이에 JPA를 부서내에서 처음으로 도입하며, 공통 기능 및 관련 편의 기능들을 담당하게 되어 개발하고 있습니다. 먼저 하기 기능을 구글링과 스택오버플로우도 계속해서 찾아봤습니다. 아래와 같은 기능을 현재 개발자들이 JPA개발자측에 계속해서 요청하는 기능이라고 확인이 되나, 이 기능을 편법으로라도 적용할 수 있는 방법이 없는지 궁금해서 질의드립니다. ------------------------------------------------------------------- [질문 내용] SELECT문에서 각각의 개발자가 직접 코드를 작성하지 않아도, 로그인한 유저의 데이터만 기본적으로 조건절에 대입하여 제공하는 방법이 존재하는지 확인하고 싶습니다. 해당 조회기능이 단편적으로 일부 테이블에서만 사용한다면 Query를 직접 작성하거나, QueryDSL을 통해서 where절에 user관련 조건절을 각각 집어넣어도 상관없다고 생각합니다. 그러나 로그인한 유저관련 조건절을 거의 대부분의 조회문에 넣고싶을 경우, 간단한 쿼리조차도 Query를 직접 작성하거나 QueryDSL을 써야하는 것으로 알고 있습니다. 반복적인 코드라 굉장히 비효율적이라 생각하여, 해당 기능을 공통으로 사용하고 싶으나, 어떻게 작성해야하는 지 떠오르지가 않았기에, 일단 생각나는 만큼 아래와 같은 방법을 생각하거나 작성해봤습니다. 1. 디자인 패턴이나 Functional Interface을 적용해서 감싸봐도 결국은 각각의 개발자가 QueryDSL을 통해 기본적인 쿼리는 작성해야했습니다. 2. 먼저 데이터를 전부 들고온 뒤, API에서 사용자 관련으로 필터링하는 방법은 성능적으로 굉장히 안 좋은 것 같아서 시도하지 않았습니다. 3. 사용자 테이블을 조회하여 해당 사용자에 연관된 매핑을 타고 내려가야하는 방법은 필요 데이터를 내포하는 테이블에 닿기까지 많은 테이블을 조회해야하고, 데이터가 많은 경우 이도 성능적으로 좋지 않아 결국은 QueryDSL를 사용해야 한다고 생각합니다. Q. 가변적으로 변하는 유저의 값을 원하는 JPA 쿼리에 고정적으로 조건절에 집어넣을 수 있는 방법과 관련하여 문의드립니다. 반복적인 작업을 조금이라도 덜어주고자 노력하고 있는데 쉽지가 않네요.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
스택과 메모리 질문입니다.
안녕하세요. 현재 강사님의 강의를 수강중인 학생입니다. 스택과 메모리강의를 방금 보았는데 이해가 안되는 부분이 있어 질문 남깁니다. 먼저 사진 1입니다. 사진 1은 강의대로 짠 코드를 f5를 눌러 디버그 했을때의 사진입니다. 현재 rsp는 0x60fe38이라고 나와있습니다. 질문1. 현재 0x60fe38에 들어있는 값은 의미가 있는 값인가요? 그 후 디버깅을 더 진행시켜봤습니다. 사진2 입니다. 사진 2는 MAX라는 함수를 실행시키기 전까지 (위에 push를 모두 실행하기까지) 디버깅을 진행한 사진입니다. 현재 0x60fe38이후 0x60fe30에 rax값이, 0x60fe28에 rbx, 0x60fe38에 5, 0x60fe38에 1이 잘 들어가 있는 것을 확인했습니다. 사진 3입니다. 문제의 사진 3입니다. 방금의 상황에서 f11키를 눌러 step into 해보았습니다. 그랬더니 rsp가 0x60fe18에서 0x60fe10으로 바뀌며 0x60fe10에 이상한 값이 들어있는것을 확인했습니다. 질문2 왜 rsp가 0x60fe18에서 0x60fe10으로 바뀐 건가요? (왜 stack이 한단계 더 쌓인건가요?) 질문3 사진 3에서 0x60fe10에 들어있는 값은 뭔가요? 질문4 사진으론 없지만 함수에서 빠져나가니 rsp가 0x60fe10에서 다시 0x60fe18로 바뀐것을 확인했습니다. 왜인가요..? 이해력이 부족하여 질문이 많습니다.. ㅠㅠ 죄송합니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
pages폴더의 파일을 통해 components폴더의 컴포넌트들로 이동 할 경우
안녕하세요 제로초님 제로초님 영상을 보며 조금씩 응용해가면서 개인 사이드프로젝트를 진행하고 있습니다! 하단 로그인 navbar 를 클릭하여 pages의 login.js을 거쳐 LoginForm이라는 컴포넌트로 이동을 하고 있습니다! (마이페이지, 새글작성도 마찬가지) 제로초님의 방식은 AppLayout에서 컴포넌트에 바로 setIsLoggedIn props를 전달하는 방식인데 저는 AppLayout에 컴포넌트가 아닌 각각의 <Link>로 걸어놔서 props를 어떻게 효율적으로 전달해줘야할지 고민이 됩니다 ,,! 효율적인 해결방법이 생각나지않아서 const [isLoggedIn, setIsLoggedIn] = useState(false); 을 props 전달이 필요한 각 pages 마다 정의했고, login페이지에선 로그인이 되어있지 않으면 LoginForm 컴포넌트, 되어있으면 MainPage로 이동하게끔 return 부분의 컴포넌트를 이런식으로 전달을 해줬습니다 <AppLayout> { isLoggedIn ? <MainPage setIsLoggedIn={setIsLoggedIn}/> : <LoginForm setIsLoggedIn={setIsLoggedIn}/>} </AppLayout> 로그인 상태를 다른 페이지로 이동하면 유지하지 못함 (이건 서버가 없어서 그런건가 싶기도 해요..!) const [isLoggedIn, setIsLoggedIn] = useState(false);이 로그인, 마이페이지, 새글작성에 모두 중복되서 정의되어있음 (AppLayout컴포넌트에는 정의되어있지않음) 이런 문제점이 존재해서 혼자 해결해보려고 했지만 적당한 방법을 못찾아서 문의글을 남깁니다 ㅠㅠ AppLayout.js import React, { useState } from "react"; import PropTypes from "prop-types"; import Link from "next/link"; import { Row, Col } from "antd"; import styles from '../styles/styles.module.css'; import LoginForm from './LoginForm'; import MyPage from './MyPage'; const AppLayout = ({ children }) => { return ( <> <Link href="/"> <a><h1 className={styles.logo}>놀멍쉬멍 <img src="logoIcon.png" alt="logoImage" style={{width: '24px'}} /></h1> </a> </Link> <div>{children}</div> <Row className={styles.bottomNav}> <Col xs={4}><Link href="/writePost"><a>새글작성</a></Link></Col> <Col xs={4}><Link href="/community"><a>커뮤니티</a></Link></Col> <Col xs={8}> <Link href="/"> <a><img className={styles.centerNav} src='../icon.png'/></a> </Link> </Col> <Col xs={4}><Link href="/myPage"><a>마이페이지</a></Link></Col> <Col xs={4}><Link href="/login"><a>로그인</a></Link></Col> </Row> </> ); }; AppLayout.propTypes = { children: PropTypes.node.isRequired, }; export default AppLayout; pages/login.js import React, {useState} from "react"; import AppLayout from "../components/AppLayout"; import Head from 'next/head'; import MainPage from '../components/MainPage'; import LoginForm from '../components/LoginForm'; const login = () => { const [isLoggedIn, setIsLoggedIn] = useState(false); return ( <> <Head> <meta charSet="utf-8" /> <title>로그인 | 놀멍쉬멍</title> </Head> <AppLayout> { isLoggedIn ? <MainPage setIsLoggedIn={setIsLoggedIn}/> : <LoginForm setIsLoggedIn={setIsLoggedIn}/>} </AppLayout> </> ); }; export default login; components/LoginForm.js import React, { useCallback, useState } from 'react'; import {Form, Input, Button} from 'antd'; import Link from 'next/link'; import styles from '../styles/login.module.css'; import styled from 'styled-components'; const LoginBtn = styled(Button)` background-color: white; border: 1px solid #857171; &:hover { background-color: #857171; border: 1px solid #857171; color: white; } `; const LoginForm = ({setIsLoggedIn}) => { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const onChangeEmail = useCallback((e) => { setEmail(e.target.value); },[]); const onChangePassword = useCallback((e) => { setPassword(e.target.value); },[]); const onSubmitBtn = useCallback(() => { setIsLoggedIn(true); console.log(email, password); }, [email, password]); return ( <> <Form className={styles.LoginForm} onFinish={onSubmitBtn}> <div> <label htmlFor="user-email">이메일</label> <br /> <Input name="user-email" value={email} onChange={onChangeEmail} required/> </div> <div> <label htmlFor="user-password">비밀번호</label> <br /> <Input name="user-password" type="password" value={password} onChange={onChangePassword} required /> </div> <div className={styles.buttonWrapper}> <LoginBtn htmlType="submit" loading={false}>로그인</LoginBtn> < br/> <span>놀멍쉬멍이 처음이신가요?</span> <Link href="/signup"><a>회원가입</a></Link> </div> </Form> </> ); }; export default LoginForm; 폴더구조
-
미해결초보를 위한 쿠버네티스 안내서
쿠버네티스 rollout에 대해 질문있습니다.
안녕하세요. 쿠버네티스 관련하여 질문이 있습니다. yaml파일에서 이미지를 불러올떄 imagePullPolicy: Always와 버전 latest를 사용하고 있으며, 이미지는 버전관리 없이 docker hub latest로만 업데이트 되고 있습니다. 그런데 궁금한 부분이 이전 rollout undo 명령어를 사용하여 이전에 사용한 팟을 다시 실행하는 기능이 있던데, 이 경우 이전에 사용한 lateset 이미지를 사용하여 Pod을 다시 실행하는 것인지?? 아니면 이미지를 다시 다운받아서 이전 팟에 띄우는 것인지 궁금합니다.
-
미해결
리액트 state로 css변경 함수 질문드립니다.
import React, { useEffect, useState } from 'react'; import styles from './product_list.module.css'; import Product from './product_item/product_item'; const ProductList = ({products}) => { const [filterDisplay, setFilterDisplay] = useState('none'); const filterHandler = () => { if (filterDisplay === 'none') { setFilterDisplay('display'); console.log(filterDisplay); } else { setFilterDisplay('none'); console.log(filterDisplay); } } return ( <section className={styles.product_list}> <button onClick={filterHandler} className={styles.filterBtn}><i className="fas fa-filter"></i></button> <div style={{ display: filterDisplay, }} className={styles.filterBox}> <div className={styles.bikeBox}> <button className={styles.bikeBtn}>MTV</button> <button className={styles.bikeBtn}>하이브리드</button> <button className={styles.bikeBtn}>로드바이크</button> </div> </div> {/* <button className={styles.btn_regiprod}>버튼</button> */} { products.map(product => <Product key={product.id} product={product} /> ) } </section> ) }; export default ProductList; 해당 코드입니다. filterHandler()함수가 작동하면 하단 div의 스타일 display 속성값이 display로 바뀌어서 박스가 보였다 안보였다하게 만들고싶은데, 콘솔에는 변경된 state가 나오는데 실제로 작동이 안되네요... 해결법있을까요?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
안녕하세요 제로초님 3:25초경에 해당하는 주소에 들어가서 css 파일로 만들어서 html에 연결했는데 css파일에서 오류가 발생했습니다.
안녕하세요 제로초님 3:25초경에 해당하는 주소에 들어가서 css 파일로 만들어서 html에 연결했는데 css파일에서 오류가 발생했습니다. css 파일 내에서 only속성 때문에 오류가 발생하는데요.. 아래는 html 파일과 css 파일입니다. html 파일은 강의에서 말씀하신대로 슬랙에 들어가 현재에 맞게 아이콘 코드를 바꿔주었습니다. 그래도 적용이되지 않아서 파일로 만드려고 해당하는 주소에 들어가서 css 파일 내용을 복사했는데 어디가 문제인지 모르겠습니다.
-
미해결모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
취약점 분석 방법론(3) 에서 궁금한 점 질문드립니다.
취약점 분석 방법론(3)을 듣고 있는데 이해가 잘 안가는 부분이 있어 질문드립니다. 데이터 타입이 문자형일 경우 '||'와 'a'를 넣어서 취약점유무확인을 할수있다고 하셨는데 그 이유에 대해서 정확하게 이해가 되지 않습니다.ㅠ
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
안녕하세요 다른 질문이 생겨 글 남깁니다.
프로젝트 진행중에 게시판에서 사진 파일을 업로드 하는 기능을 넣어서 사용 하는데 기존에는 백엔드 소스폴더 내에 uploads폴더를 만들어 사용 했습니다. 도커를 이용해서 프로젝트를 배포 시키면 당연히 배포 서버에서 글을 작성하면 괜찮지만, 코드 수정등의 이유로 재 배포를 하면 재 배포된 폴더내용 그대로 들어가게 되어 upload폴더 내용이 초기화 되버립니다. 이런 static 폴더는 애초에 컨테이너를 따로 만들어서 사용하게 해야 하는건가요 아니면 다른 방법으로 해결해야 하나요 궁금합니다!