묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)
문제에서 queue와 list의 초기화가 궁금합니다.
Queue<TreeNode> queue = new LinkedList<>();List<Integer> list = new LinkedList<>(); 이와 같이 둘 모두 LinkedList로 초기화한 이유가 궁금해서 여쭤봅니다 ㅠ그냥 PriorityQueue 혹은 ArrayList와 같은 것들로는이 문제의 로직이 설명이 안되는 것인지 궁금합니다 ㅠ어떻게 LinkedList로 바로 생각이 들까요?
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
설치..
설치법을 모르겠습니다. 저 명령어대로 쳐도 설치가 안되는대 설치법좀 다시 한번알려주세요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
CORS 관련하여 질문합니다 !
안녕하세요 선생님, 강의 정말 너무 잘 보고 있습니다. Cors 이전까지는 문제없이 쭉 잘 따라왔습니다. 물론 Cors문제도 해결을 했는데 질문란을 보니 결국 2가지 방법 정도가 많이 쓰이는 것 같더라구요. 첫 번째는 선생님이 알려주신 Proxy 를 사용하는 방법과 두 번째는 백엔드에 cors 를 받아 사용하는 방법 1. 실제 현업에서는 무엇이 더 많이 쓰이는지 궁금하고 2. 백엔드에서 cors를 받아 사용을 하게 되면 axios.get("http://localhost:8080/api/users/login") 과 같은 방식으로 사용을 하게 되는데 저 http://localhost:8080 현업에서도 저런식으로 작성하는 지 혹은 변수같은걸 통해서 생략하는지 궁금합니다. 강의 정말 너무 잘 보고 있고 좋은 강의 무료로 배포해주셔서 감사합니다.
-
미해결현존 최강 크롤링 기술: Scrapy와 Selenium 정복
robots.txt를 회피하려면 어떻게 해야하나요?
사이트를 Scrapy를 활용해서 할려고 하면 robots 때문에 redirect가 되는데 이를 해결하고자 settings.py에서 ROBOTSTXT_OBEY = False 로도 바꾸긴 했는데 동일하게 안되는데, 이런경우 scrapy로는 작업을 못하는건가요??? 제가 크롤링 하려는 사이트는 www.etherscan.io입니다 2020-10-22 19:09:55 [scrapy.utils.log] INFO: Scrapy 2.4.0 started (bot: etherscan) 2020-10-22 19:09:55 [scrapy.utils.log] INFO: Versions: lxml 4.5.0.0, libxml2 2.9.9, cssselect 1.1.0, parsel 1.6.0, w3lib 1.22.0, Twisted 20.3.0, Python 3.7.7 (default, Mar 26 2020, 10:32:53) - [Clang 4.0.1 (tags/RELEASE_401/final)], pyOpenSSL 19.1.0 (OpenSSL 1.1.1g 21 Apr 2020), cryptography 2.9.2, Platform Darwin-19.6.0-x86_64-i386-64bit 2020-10-22 19:09:55 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.selectreactor.SelectReactor 2020-10-22 19:09:55 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'etherscan', 'NEWSPIDER_MODULE': 'etherscan.spiders', 'SPIDER_MODULES': ['etherscan.spiders']} 2020-10-22 19:09:56 [scrapy.extensions.telnet] INFO: Telnet Password: 3e40e2b9fbf79ea2 2020-10-22 19:09:56 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.memusage.MemoryUsage', 'scrapy.extensions.logstats.LogStats'] 2020-10-22 19:09:56 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2020-10-22 19:09:56 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2020-10-22 19:09:56 [scrapy.middleware] INFO: Enabled item pipelines: [] 2020-10-22 19:09:56 [scrapy.core.engine] INFO: Spider opened 2020-10-22 19:09:56 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2020-10-22 19:09:56 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6026 2020-10-22 19:09:56 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <GET https://www.etherscan.io/> from <GET http://www.etherscan.io/> 2020-10-22 19:09:56 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://www.etherscan.io/404> from <GET https://www.etherscan.io/> 2020-10-22 19:09:57 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://www.etherscan.io/404> from <GET https://www.etherscan.io/404> 2020-10-22 19:09:57 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://www.etherscan.io/404> from <GET https://www.etherscan.io/404> 2020-10-22 19:09:58 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://www.etherscan.io/404> from <GET https://www.etherscan.io/404> 2020-10-22 19:09:58 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://www.etherscan.io/404> from <GET https://www.etherscan.io/404> 2020-10-22 19:09:58 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://www.etherscan.io/404> from <GET https://www.etherscan.io/404> 2020-10-22 19:09:59 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://www.etherscan.io/404> from <GET https://www.etherscan.io/404> 2020-10-22 19:09:59 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://www.etherscan.io/404> from <GET https://www.etherscan.io/404>
-
미해결[Django] 장고로 인프런 따라만들기
안녕하세요 장고에서 폴더가 안만들어지는데요
장고에서 폴더가 안들어져요 똑같이 따라했는데 잘안되네요
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
concurrently 질문입니다!!
안녕하세요! 강의 너무너무 잘 보았고, 지금 강의대로 직접 연습해보고 있습니다! 강의 내용 중 concurrently를 사용하면 백엔드, 프론트 서버를 한꺼번에 켤 수 있다고 하셨는데 한꺼번에 켜지긴 하지만, 선생님처럼 App.js가 메인으로 뜨지 않고 app.get('/', (req, res) => res.send('Hello World!')); 여기에 설정해놨던 Hello World가 계속 뜹니다 ㅠㅠ (제 서버 포트는 8080, 클라이언트 포트는 3000인데 8080에서는 Hello World가 뜨고, 3000번은 접속이 되지 않습니다.) 선생님처럼 App.js가 메인에 뜨게하려면 어떻게 해야하는지, 제가 어떤 부분을 빠뜨린건지 알려주시면 감사하겠습니다!! ** 추가 위의 문제는 proxy 코드 문제였어요 선생님! const proxy = require('http-proxy-middleware') 부분을 const { createProxyMiddleware } = require('http-proxy-middleware') 로 수정하니 되네요. 버전 문제라고 해요! 혹시 저와 같은 문제가 있으신 분들이 있을까봐 글은 그대로 남겨놓을게요! 좋은 강의 감사드립니다 :)
-
미해결실전! Querydsl
혼자 공부중 궁금한내용 질문드립니다
Spring Data JPA와 QueryDSL을 같이 사용하는이유가 혹시 쿼리가 복잡하지 않고 간단한것들은 Spring Data JPA로 처리하고 복잡한 로직이 들어간다던지 하는 로직들은 @Query 어노테이션으로 처리하면 컴파일단계가 아닌 런타임단계에서 익셉션이 발생하니 사전 방지하고자 QueryDSL을 사용하여 컴파일단계에서 방지하자!! 그래서 2개를 같이사용하는 걸까요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
cascade에 대해서 질문드립니다.
김영한 강사님께서 cascade는 소유자가 하나일때 사용하라고 하셨는데, orderItem 같은 경우는 소유자가 order와 item이 있는데도 불구하고 사용하신 이유가 궁금합니다. 단지 예제를 이용해서 사용하신건지
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
인벤토리 실습
제가 인벤토리와 장비창을 만들 예정인데 일단 토글형태로 I키로 인벤토리를제어 할려고 합니다. 이 인벤토리 관련해서 SetActive으로 껏다 켰다하는 것과 UIManager를 통해서 Instantiate, Destory 중 어떤게 더 바람직 할까요??..
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
axios.defaults.baseURL 지정 후, 다른 서버에 요청을 보내려면?
/front/sagas/index.js 에서 axios.defaults.baseURL = 'http://localhost:3065'; axios.defaults.withCredentials = true; 이렇게 공통으로 지정을 해주는데, 만약에 예외적으로 다른 URL을 사용하고 싶으면 어떻게 하나요? function loadPostsAPI(data) { return axios.get('http://naver.com/test', data); } 이런식으로 개별적으로 URL 넣어주면 될까요? 아니면 애초에 공통URL을 지정해주지 말고 각자 넣어줘야 하는걸까요? 공통URL과 더불어 withCredentials 값도 각자 넣으려면 어떻게 해야하는지 궁금합니다!
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
kubeadm reset 후 init 시 오류
kubeadm reset 후 다시 init 시 아래와 같이 나오고 [root@itsm-ci ~]# kubeadm init W1022 16:20:59.529935 3584 configset.go:348] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io] [init] Using Kubernetes version: v1.19.3 [preflight] Running pre-flight checks [WARNING SystemVerification]: missing optional cgroups: pids [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 [itsm-ci kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 10.0.0.73] [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 [itsm-ci localhost] and IPs [10.0.0.73 127.0.0.1 ::1] [certs] Generating "etcd/peer" certificate and key [certs] etcd/peer serving cert is signed for DNS names [itsm-ci localhost] and IPs [10.0.0.73 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. [kubelet-check] It seems like the kubelet isn't running or healthy. [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused. [kubelet-check] It seems like the kubelet isn't running or healthy. [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused. [kubelet-check] It seems like the kubelet isn't running or healthy. [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused. [kubelet-check] It seems like the kubelet isn't running or healthy. [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused. [kubelet-check] It seems like the kubelet isn't running or healthy. [kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused. 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 로그를 살펴봐도 딱히 알수가 없어서 질문해요. I1022 16:12:24.517130 28853 server.go:411] Version: v1.19.3 I1022 16:12:24.517630 28853 server.go:831] Client rotation is on, will bootstrap in background I1022 16:12:24.522119 28853 certificate_store.go:130] Loading cert/key pair from "/var/lib/kubelet/pki/kubelet-client-current.pem". I1022 16:12:24.524175 28853 dynamic_cafile_content.go:167] Starting client-ca-bundle::/etc/kubernetes/pki/ca.crt W1022 16:12:24.652251 28853 nvidia.go:61] NVIDIA GPU metrics will not be available: no NVIDIA devices found I1022 16:12:24.683063 28853 server.go:640] --cgroups-per-qos enabled, but --cgroup-root was not specified. defaulting to / I1022 16:12:24.683903 28853 container_manager_linux.go:276] container manager verified user specified cgroup-root exists: [] I1022 16:12:24.683963 28853 container_manager_linux.go:281] Creating Container Manager object based on Node Config: {RuntimeCgroupsName: SystemCgroupsName: KubeletCgroupsName: ContainerRuntime:d I1022 16:12:24.684185 28853 topology_manager.go:126] [topologymanager] Creating topology manager with none policy I1022 16:12:24.684204 28853 container_manager_linux.go:311] [topologymanager] Initializing Topology Manager with none policy I1022 16:12:24.684216 28853 container_manager_linux.go:316] Creating device plugin manager: true I1022 16:12:24.684341 28853 client.go:77] Connecting to docker on unix:///var/run/docker.sock I1022 16:12:24.684363 28853 client.go:94] Start docker client with request timeout=2m0s W1022 16:12:24.698575 28853 docker_service.go:565] Hairpin mode set to "promiscuous-bridge" but kubenet is not enabled, falling back to "hairpin-veth" I1022 16:12:24.698631 28853 docker_service.go:241] Hairpin mode set to "hairpin-veth" W1022 16:12:24.698810 28853 cni.go:239] Unable to update cni config: no networks found in /etc/cni/net.d W1022 16:12:24.705122 28853 cni.go:239] Unable to update cni config: no networks found in /etc/cni/net.d I1022 16:12:24.705222 28853 docker_service.go:256] Docker cri networking managed by cni W1022 16:12:24.705328 28853 cni.go:239] Unable to update cni config: no networks found in /etc/cni/net.d I1022 16:12:24.738463 28853 docker_service.go:261] Docker Info: &{ID:QG4V:H44H:7F2H:7W5N:DH3H:YTPU:VC7A:NBXY:HDOO:OZXV:NZYE:6SSC Containers:0 ContainersRunning:0 ContainersPaused:0 ContainersSto ror: RemoteManagers:[] Nodes:0 Managers:0 Cluster:<nil> Warnings:[]} LiveRestoreEnabled:false Isolation: InitBinary:docker-init ContainerdCommit:{ID:8fba4e9a7d01810a393d5d25a3621dc101981175 Expect Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.]} I1022 16:12:24.738619 28853 docker_service.go:274] Setting cgroupDriver to systemd I1022 16:12:24.762240 28853 remote_runtime.go:59] parsed scheme: "" I1022 16:12:24.762276 28853 remote_runtime.go:59] scheme "" not registered, fallback to default scheme I1022 16:12:24.762325 28853 passthrough.go:48] ccResolverWrapper: sending update to cc: {[{/var/run/dockershim.sock <nil> 0 <nil>}] <nil> <nil>} I1022 16:12:24.762351 28853 clientconn.go:948] ClientConn switching balancer to "pick_first" I1022 16:12:24.762445 28853 remote_image.go:50] parsed scheme: "" I1022 16:12:24.762463 28853 remote_image.go:50] scheme "" not registered, fallback to default scheme I1022 16:12:24.762483 28853 passthrough.go:48] ccResolverWrapper: sending update to cc: {[{/var/run/dockershim.sock <nil> 0 <nil>}] <nil> <nil>} I1022 16:12:24.762495 28853 clientconn.go:948] ClientConn switching balancer to "pick_first" I1022 16:12:24.762553 28853 kubelet.go:261] Adding pod path: /etc/kubernetes/manifests I1022 16:12:24.762627 28853 kubelet.go:273] Watching apiserver E1022 16:12:24.764326 28853 reflector.go:127] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: Failed to watch *v1.Pod: failed to list *v1.Pod: Get "https://10.0.0.73:6443/api/v1/pods?fieldSelector=spec.nodeName%3Ditsm-ci&limit=500&resourceVersion=0": dial tcp 10.0.0.73:6443: connect: connection refused E1022 16:12:24.765110 28853 reflector.go:127] k8s.io/client-go/informers/factory.go:134: Failed to watch *v1.Service: failed to list *v1.Service: Get "https://10.0.0.73:6443/api/v1/services?limit=500&resourceVersion=0": dial tcp 10.0.0.73:6443: connect: connection refused E1022 16:12:24.765661 28853 reflector.go:127] k8s.io/kubernetes/pkg/kubelet/kubelet.go:438: Failed to watch *v1.Node: failed to list *v1.Node: Get "https://10.0.0.73:6443/api/v1/nodes?fieldSelector=metadata.name%3Ditsm-ci&limit=500&resourceVersion=0": dial tcp 10.0.0.73:6443: connect: connection refused 계속 connection refused 만 나오는데 원인을 모르겠습니다. centOS7 에서 진행중이고 selinux permitive, 방화벽은 아예 off 되어 있고 swapoff 도 되어 있습니다. 동영상처럼 진행해도 잘 안되네요.
-
미해결리액트로 나만의 블로그 만들기(MERN Stack)
코드내에서 쉼표를 자동으로 찍어주는 기능이있나요?
선생님 혹시 강의 중간중간 쉼표가 안찍혀있는 부분들에 대해서 자동으로 쉼표를 찍어주시는 기능을 사용하시는 것 같은데 어떤기능인지 알 수 있을까요?
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
signup 구현
안녕하십니까 제로초님. 유저가 회원가입후 같은 컴퓨터로 다른 사람이 회원가입을 할때를 가정하여 테스트 해보았는데. 즉 회원가입이 성공한뒤 한번더 회원가입을 하는 경우. useEffect 를 사용하여 if(SighUpDone)이면 index페이지로 디렉팅이 되도록 되어있어 회원가입후에는 회원가입 페이지로 들어가지 못합니다. 이 문제를 해결하기 위해 생각한 방법으로는 새로운 Dispatch를 통해서 SignUpDone을 false로 만들거나 혹은 SignUpDone 말고 다른 SignUp이 가능한지 상태를 나타낼수있는 변수생성해 이용하면 구현이 가능할꺼 같기는 한데... Dispatch를 사용하지 않고 signup페이지에서만 이기능을 구현할수 있는 방법이 있나요?
-
해결됨스프링 핵심 원리 - 기본편
Service 레이어의 Impl 객체에 대해 질문이 있습니다.
안녕하세요!스프링 예제를 볼 때 마다, Repository에 대해 구현은 여러개 인게 많은데 Service 에 대한 구현 객체는 꼭 Impl 이라는 이름으로 하나 더라구요..ㅜㅜ현업에서 하나의 서비스 인터페이스에 대해 두 개 이상의 서비스 구현체를 만드는 경우가 있나요? 있다면 어떤 예시가 있을까요?감사합니다!
-
해결됨스프링과 JPA 기반 웹 애플리케이션 개발
질문있습니다.(자체해결..)
삭제된 글입니다
-
미해결리액트로 나만의 블로그 만들기(MERN Stack)
로그인이 에러가 뜹니다
https://github.com/hwd3004/Blog/tree/28-Header(7)-/-history%40-4.7.2 새 계정 만들어서 하면, 만든 아이디로 로그인까지 잘되어지고, 로그아웃도 잘되는데, 있는 아디로 로그인하려하면 에러가 뜹니다. 무엇을 수정해야할까요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@PostConstruct 테스트 중일때 제외
@PostConstruct가 있는 빈을 테스트 중일때 제외 시키고 싶은데 어떻게 해야 할까요. 저 샘플 데이터 때문에 테스트가 이상하게 작동합니다 ㅠㅠ ------------------------------------------------------------- 고민하다가 @SpringBootApplication 어노테이션이 달린 클래스를 하나 더 만들어서 베이스 패키지를 다르게 설정해서 @PostConstruct가 있는 빈을 제외 시켰습니다 그리고 이 클래스(@SpringBootApplication 어노테이션이 달린 다른 클래스)를 Test 클래스에 @SpringBoot(classes = 클래스 이름.class)로 전부 설정 했습니다. 이 방법이 옳은 방법일까요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Null Reference Exception 에러
참조할 수 없는 오브젝트를 참조하려고 할때 해당 에러가 나온다고 하는데, 지금 InputManager.cs ,Managers.cs , PlayerController.cs 전부 코드상 강의와 똑같고 문제가 없습니다. 무엇이 문제일까요 아래는 코드와 에러메세지입니다. Managers.cs에서 10번째 라인,PlayerController 17번째 라인에서 문제가 생기는데 public static InputManager Input { get { return Instance._input; } } Managers.Input.KeyAction -= OnKeyboard; Managers.Input.KeyAction += OnKeyboard; 이부분이네요. /////////// InputManager using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class InputManager { public Action KeyAction = null; public void OnUpdate() { if (Input.anyKey == false) return; if (KeyAction != null) KeyAction.Invoke(); } } //////////////////// Managers using System.Collections; using System.Collections.Generic; using UnityEngine; public class Managers : MonoBehaviour { static Managers s_instance; static Managers Instance { get { Init(); return s_instance; } } InputManager _input = new InputManager(); public static InputManager Input { get { return Instance._input; } } void Start() { Init(); } void Update() { _input.OnUpdate(); } static void Init() { if(s_instance == null) { GameObject go = GameObject.Find("@Managers"); if(go == null) { go = new GameObject { name = "@Managers" }; go.AddComponent<Managers>(); } DontDestroyOnLoad(go); Managers mg = go.GetComponent<Managers>(); } } } ///////////////////////// PlayerController using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { [SerializeField] float _speed = 10.0f; void Start() { Managers.Input.KeyAction -= OnKeyboard; Managers.Input.KeyAction += OnKeyboard; } void Update() { } void OnKeyboard() { if (Input.GetKey(KeyCode.W)) { transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.forward), 0.2f); transform.position += Vector3.forward * Time.deltaTime * _speed; } if (Input.GetKey(KeyCode.S)) { transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.back), 0.2f); transform.position += Vector3.back * Time.deltaTime * _speed; } if (Input.GetKey(KeyCode.A)) { transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.left), 0.2f); transform.position += Vector3.left * Time.deltaTime * _speed; } if (Input.GetKey(KeyCode.D)) { transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.right), 0.2f); transform.position += Vector3.right * Time.deltaTime * _speed; } } }
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github 승인 요청 부탁드려요
안녕하세요, 이틀전에 요청 드렸는데 아직 승인이 안된것같아서요. 확인 부탁드립니다. 인프런 아이디 : edu인프런 이메일 : edu@lutes.co.kr깃헙 아이디 : aquam41@gmail.com깃헙 Username : ksan41
-
미해결윤재성의 Java 기반 Android 9.0(pie) App 개발 심화 2단계
android 상위 버전에서는 작동이 안됩니다!
API 25일 경우는 강의와 같이 잘 작동이 되는데, API 29로 작동 할 경우, 작동이 되질 않습니다! 왜 그런지 알 수 있을까요? 항상 양질의 강의 감사합니다! package org.techdown.fileinputoutput; import androidx.appcompat.app.AppCompatActivity; import android.Manifest; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.TextView; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; // 안드로이드는 외부 저장소와 내부 저장소를 제공하고 있다 // 외부 저장소 및 내부 저장소 모두 파일 입출력이 가능하다 public class MainActivity extends AppCompatActivity { TextView text1; // 확인 받을 권한 목록(외부 저장소) String[] permission_list = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; // 외부 저장소까지의 경로를 담을 변수 String path; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text1 = (TextView)findViewById(R.id.textView); // 권한 확인 받는 메서드를 호출한다 checkPermission(); // 저장할 외부 저장소의 경로를 구한다 File f1 = Environment.getExternalStorageDirectory(); String a1 = f1.getAbsolutePath(); // 패키지명을 구한다 String a2 = getPackageName(); // 이 영역에 패키지명과 동일하게 저장하면 어플 삭제시 삭제됨 // 이외의 영역에 저장할 경우 어플이 삭제되도 유지 path = a1 + "/android/data/" + a2; } public void btnMethod(View view){ try { // 내부 저장소에 데이터를 쓸 경우 // 내부 저장소와 연결 되어 있는 쓰기 스트림 추출 // MODE_PRIVATE 이전 내용을 덮어쓰기, MODE_APPEND 이전 내용에 추가하기 FileOutputStream fos = openFileOutput("myFile.dat", MODE_PRIVATE); DataOutputStream dos = new DataOutputStream(fos); // 데이터를 쓴다 dos.writeInt(100); dos.writeDouble(11.11); dos.writeBoolean(true); dos.writeUTF("문자열"); // 파일을 닫는다 dos.flush(); dos.close(); text1.setText("내부 저장소 쓰기 완료"); }catch (Exception e){ e.printStackTrace(); } } public void btnMethod2(View view){ try { FileInputStream fis = openFileInput("myFile.dat"); DataInputStream dis = new DataInputStream(fis); // 파일에 출력한 순서대로 입력받는다. int data1 = dis.readInt(); double data2 = dis.readDouble(); boolean data3 = dis.readBoolean(); String data4= dis.readUTF(); text1.setText("data1 : " + data1 + "\n"); text1.append("data2 : " + data2 + "\n"); text1.append("data3 : " + data3 + "\n"); text1.append("data4 : " + data4 + "\n"); }catch (Exception e){ e.printStackTrace(); } } public void btnMethod3(View view){ try { checkExternalDirectory(); FileOutputStream fos = new FileOutputStream(path + "/sd_file.dat"); DataOutputStream dos = new DataOutputStream(fos); dos.writeInt(10); dos.writeDouble(11.11); dos.writeBoolean(true); dos.writeUTF("문자열"); dos.flush(); dos.close(); text1.setText("ㅁㄴㅇㅁㄴㅇ"); }catch (Exception e){ e.printStackTrace(); } } public void btnMethod4(View view){ try { FileInputStream fis = new FileInputStream(path + "/sd_file.dat"); DataInputStream dis = new DataInputStream(fis); int data1 = dis.readInt(); double data2= dis.readDouble(); boolean data3 = dis.readBoolean(); String data4 = dis.readUTF(); dis.close(); text1.setText("data1 : " + data1 + "\n"); text1.append("data2 : " + data2 + "\n"); text1.append("data3 : " + data3 + "\n"); text1.append("data4 : " + data4 + "\n"); }catch (Exception e){ e.printStackTrace(); } } public void checkPermission(){ if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M){ return; } for(String permission : permission_list){ int chk = checkCallingOrSelfPermission(permission); if(chk == PackageManager.PERMISSION_DENIED){ requestPermissions(permission_list, 0); break; } } } public void checkExternalDirectory(){ // 외부저장소 경로가 있는지 확인하고 없으면 생성한다 File file = new File(path); if(file.exists() == false){ file.mkdir(); } } }