묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
hasIpAddress 설정 403
왜 게이트웨이로 접근이 안될가요?hasipaddress값에 제 컴 아이피를 적고http://220.86.33.96:9295/welcome > 접근가능한데 http://220.86.33.96:8000/user-service/welcome > 접근불가떠요..이해가안됩니다 게이트웨이서버건 유저 서버건모두 제 컴퓨터고 제 서버 아이피가 220.86.33.96인데..hasIpAddress값을 127.0.0.1로 주고 접근하면 모든곳에서 접근이 됩니다..
-
미해결홍정모의 따라하며 배우는 C언어
오류
수업에 나온 것과 똑같이 코딩을 했는데 오류가 다음과 같이 뜨는데 해결이 되질 않습니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
placeholder에 국제화 적용해보기
placeholder에 국제화를 적용하려면 다음과 같이 하면 되는 걸까요? <기존><수정>message.properties에 위의 값 추가
-
미해결
npm, node-gyp 오류 원인을 도대체 모르겠습니다..
안녕하세요. 개츠비 스타터 템플릿 받는 도중에 아래와 같은 오류가 계속 발생하는데 원인을 정말 모르겠습니다.. 일단 제가 해본 것은 node 버전, node-sass 버전 호환 확인 (node : v20.11.1, dart sass : 1.71.0)npm-cache verify노드 재설치도 해보고 이 방법 저 방법 해보고 있는데 정말 원인을 모르겠습니다ㅠ혹시 알려주실 분 계실까요?ㅠㅠ C:\Users\SEC>npx gatsby new gatsby-starter-ghost https://github.com/TryGhost/gatsby-starter-ghost info Creating new site from git: https://github.com/TryGhost/gatsby-starter-ghost.git Cloning into 'gatsby-starter-ghost'... remote: Enumerating objects: 80, done. remote: Counting objects: 100% (80/80), done. remote: Compressing objects: 100% (65/65), done. remote: Total 80 (delta 5), reused 45 (delta 4), pack-reused 0 Receiving objects: 100% (80/80), 303.50 KiB | 2.20 MiB/s, done. success Created starter directory layout info Installing packages... npm ERR! code 1 npm ERR! path C:\Users\SEC\gatsby-starter-ghost\node_modules\@parcel\watcher npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c node-gyp rebuild npm ERR! gyp: binding.gyp not found (cwd: C:\Users\SEC\gatsby-starter-ghost\node_modules\@parcel\watcher) while trying to load binding.gyp npm ERR! gyp ERR! configure error npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1 npm ERR! gyp ERR! stack at ChildProcess.<anonymous> (C:\Users\SEC\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\lib\configure.js:271:18) npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:518:28) npm ERR! gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:294:12) npm ERR! gyp ERR! System Windows_NT 10.0.22621 npm ERR! gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\SEC\\AppData\\Roaming\\npm\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" npm ERR! gyp ERR! cwd C:\Users\SEC\gatsby-starter-ghost\node_modules\@parcel\watcher npm ERR! gyp ERR! node -v v20.11.1 npm ERR! gyp ERR! node-gyp -v v10.0.1 npm ERR! gyp ERR! not ok npm ERR! A complete log of this run can be found in: C:\Users\SEC\AppData\Local\npm-cache\_logs\2024-02-16T05_22_06_366Z ERROR UNKNOWN Command failed with exit code 1: npm install --loglevel error --color always --legacy-peer-deps --no-audit Error: Command failed with exit code 1: npm install --loglevel error --color always --legacy-peer-deps --no-audit - error.js:60 makeError [npm]/[gatsby-cli]/[execa]/lib/error.js:60:11 - index.js:118 handlePromise [npm]/[gatsby-cli]/[execa]/index.js:118:26 - task_queues:95 processTicksAndRejections node:internal/process/task_queues:95:5 - init-starter.js:108 install [npm]/[gatsby-cli]/lib/init-starter.js:108:7 - init-starter.js:163 clone [npm]/[gatsby-cli]/lib/init-starter.js:163:3 - init-starter.js:285 initStarter [npm]/[gatsby-cli]/lib/init-starter.js:285:5 - create-cli.js:405 [npm]/[gatsby-cli]/lib/create-cli.js:405:9
-
미해결Next + React Query로 SNS 서비스 만들기
react-intersection-observer 무한스크롤페이지 중복호출문제
안녕하세요 제로초님 강의 잘 보고 있습니다.다름아니라 무한스크롤 부분 구현중(개인 프로젝트에 해당 부분만 먼저 적용중이라 jsonplaceholder API로 호출하고 있습니다) fetchNextPage가 2번씩호출이 되어서 delay도 조정해보았는데 계속 2번씩호출이 되서 로직에 혹시 문제가 있는지 봐주실수 있을지부탁드립니다.0. 콘솔에 확인한 결과처음 화면에 ref가 렌더되고 그 이후 data fetching이 완료되어 isFetcing이 false가 되었는데, data를 map으로 div로 뿌리는 렌더링 과정에 시간이 소모되어 inView는 true && isFetching도 false가 되어서 div가 화면에 나타나고 ref div를 가리기 전에 data fetching을 한번씩 더 하고 있는 상황입니다.감사합니다
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
혼자 풀어봤는데요...
function solution(n, arr) { // 소수를 판별하는 함수 function isPrime(num) { if (num === 1) return false; if (num === 2) return true; for (let i = 2; i <= Math.sqrt(num); i++) { if (num % i === 0) return false; } return true; } const answer = arr.filter((num) => { let reverseNum = Number(String(num).split('').reverse().join('')); if (isPrime(reverseNum)) { console.log(reverseNum); return reverseNum; } }); return answer; } const n = 9; const arr = [32, 55, 62, 20, 250, 370, 200, 30, 100]; console.log(solution(n, arr));filter 내의 조건문에서 isPrime 함수에서 판별하고 true인 것을 콘솔에 출력해보면23, 2, 73, 2, 3 이렇게 나오는데밑에 return reverseNum;을 하고 나서 answer을 보면[ 32, 20, 370, 200, 30 ] 이렇게 출력되는데 왜 숫자가 다르게 나오는 건가요?
-
미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
master init error
안녕하세요. 열심히 열공 하고 있습니다.저는 컴퓨터 환경이 우분투 데스크탑 서버 22.04 두대우분투 라이브 서버 두대 이렇게 운영중에 있습니다.kubernetes master init 에러 각 각 4대의 공유기로 따로 사설 Ip로 나가고 있습니다.몇가지 궁금한 점 1. 4대의 pc가 내부 ip로 연결이 안 되어 있습니다.(랜 카드을 두개 설치해서 각각 내부 ip로 연결이 되어야 하는지 궁금합니다.)2. Docker 서비스를 stop에서 사용해야 하는지 아니면 별개로 그냥 사용해도 되는지 궁금합니다.3. 우분투 데스크탑 서버 22.04 두대에 설치을 하면 똑같은 kubernetes master init 에러 error execution phase addon/coredns: couldn't retrieve DNS addon deployments: Get "https://192.168.0.4:6443/apis/apps/v1/namespaces/kube-system/deployments?labelSelector=k8s-app%3Dkube-dns": net/http: request canceled (Client.Timeout exceeded while awaiting headers)To see the stack trace of this error execute with --v=5 or higher이 메세지가 출력됩니다.4. kubeadm reset도 여러번 해봤습니다.5. 공유기 포트포워딩 8080, 6443, 모든 포트 개방 DMZ도 활성화 했습니다.
-
해결됨15일간의 빅데이터 파일럿 프로젝트
고사양 server03 이미지
안녕하세요고사양 pc에서는 server01, 02, 03 이 필요한 것으로 알고 있는데 혹시 server03은 어디서 받을 수 있을까요? 섹션 1~2에 업로드된 첨부파일 확인했는데 server03 이미지를 찾지 못하여 문의 드립니다!
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
uc를사용할때 유저 에이전트 변경이 불가능합니다.
undetected chromedriver 를 사용할때UA_Data = make_user_agent(UA, True) self.driver.execute_cdp_cmd("Network.setUserAgentOverride", UA_Data)를 이용하여도 userAgentData의 변경이 되지 않습니다.버전의 문제일까요?
-
해결됨개발자를 위한 쉬운 도커
Dockerfile과 docker-compose.yml 파일
안녕하세요docker-compose.yml를 사용할 때사용자가 애플리케이션에서 변경한 내용을 다시 build 해야되는 경우가 아니면dockerfile은 없어도 되는 게 맞는걸까요??
-
미해결스프링 시큐리티
msa 구성시 SecurityContext 활용
안녕하세요! 현재 학습차 msa 구성으로 회원 가입/로그인/인증 부분을 만들어 보고 있습니다.auth-micro-service에서 인증하고 gateway 계층으로 인증 객체를 전송해서 SecurityContext에 인증 객체를 저장하려고 했는데 잘 안되고 문제가 발생합니다... 아무리 관련 내용을 검색해봐도 제가 부족한 탓인지 파악이 잘 안됩니다...일반적으로 msa에서 로그인한 회원 식별을 spring-security를 통해서 어떤 방식으로 구현하나요??현재 eureka-server, gateway-server, user-service, auth-service로 구성되어 있고, JWT를 통해 인증하고 있습니다! 회원 가입과 로그인 + 로그인시 AccessToken과 RefreshToken발급까진 했습니다. 로그인 인증은 UserDetailsService 의 loadUserByUsername(username: String) 을 사용하고 있습니다.
-
미해결[자동화 완전 정복] 인스타그램 휴대폰, 웹 자동화 프로그램 개발
팔로워 리스트 추출완료 count 관련 문의드립니다.
main.py에 count 10을 했는데 계속 진행되고 있습니다.keyword_list = ["식당인테리어","식당"] for keyword in keyword_list: #해시태그 띄어쓰기 사용 불가, 필터링 기능 keyword = keyword.replace(" ","") count = 10 insta_web.insta_web_work(driver,keyword,count) insta_mobile.insta_mobile_work(device,30) print("[작업 완료] - 자동화 프로그램 동작이 완료되었습니다.") 그리고 파일이 저장이 되지 않습니다.뭐가 문제일까요?테스트용으로 count 10을 했는데 말입니다.저장되지 않는 것 같습니다. 포스팅 링크 추출 완료팔로워 리스트 추출 완료 70 - 1팔로워 리스트 추출 완료 69 - 2팔로워 리스트 추출 완료 56 -3팔로워 리스트 추출 완료 59 -4팔로워 리스트 추출 완료 52 -5[에러] 팔로워 버튼 클릭 에러팔로워 리스트 추출 완료 0팔로워 리스트 추출 완료 72 -6팔로워 리스트 추출 완료 60 -7팔로워 리스트 추출 완료 64 -8팔로워 리스트 추출 완료 54 -9팔로워 리스트 추출 완료 30 -10팔로워 리스트 추출 완료 71 -11
-
미해결실전! Querydsl
테스트에서 @Commit과 @Transactional(rollback=false) 차이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]테스트에서 DB에 반영되는 내용을 보기 위해서 @Commit을 다셨는데, 이전 강의들에서는 Transactional(rollback=false)로 그걸 수행하셨습니다. 차이가 있을까요?
-
해결됨CloudNet@와 함께하는 Amazon EKS 기본 강의
CloudForamation 이후 AWS의 계정 정보 넣은 다음 asw ec2 describe-instance에서 문제가 발생을 합니다.
[root@myeks-host ~]# aws ec2 describe-instances | jqAn error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation. User: arn:aws:iam::788105032848:user/cheonho.shin@ahnlab.com is not authorized to perform: ec2:DescribeInstances with an explicit deny in an identity-based policy
-
미해결지금 당장 데브옵스 AWS
aws build 할때
aws build 하게 될때 지금은 트리거가 생겼는데 트리거는 안주시나요 ??
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
7장 insert mapper erro 문의합니다
매개변수 strCoffee를 찾지 못하고있습니다.org.apache.ibatis.binding.BindingException: Parameter 'strCoffee' not found. Available parameters are [srtCoffee, strPrice, param3, strKind, param1, param2] menu_ins.html에서 menuCon으로 값이 넘어오는 것은 log로 확인 가능했습니다.service - dao - mapper 어디간에서 문제가 발생한 것 같은데 알 수 없어서 문의드립니다.https://drive.google.com/file/d/17keZ7jdiYPMen9Q_4I0ADqzlxplzidKF/view?usp=drive_link구글드라이브 링크 추가했습니다. 감사합니다.
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
PC에서 모바일화면으로 전환되면 GNB 메뉴가 OPEN되어있는 상태 (소스)4
@media (max-width:768px) { /* html { scroll-behavior: smooth; } */ /* Entire Layout */ .cd-section { height: auto; } .cd-section > div { height: auto; } .content { position: static; width: 100%; height: 100%; } /* Header */ header { transition: 0.5s; z-index: 100; } header.active { background-color: #fff; border-bottom: 1px solid #eee; } .menu { display: block; } .slogan { display: none; } .gnb { background-color: #fff; position: fixed; top: 0; right: -270px; width: 250px; height: 100vh; box-shadow: -5px 0 10px rgba(0, 0, 0, 0.1); transition: 0.5s; } .gnb.active { right:0; } .menu { margin-top: 60px; line-height: 40px; } .menu a { display: block; text-align: right; padding-right: 20px; color: #000; font-size: 20px; } /* Trigger */ .trigger { display: block; width: 24px; height: 14px; position: absolute; top: 20px; right: 20px; } .trigger span { position: absolute; height: 1px; width: 100%; background-color: #000; transition: 0.5s; } .trigger span:nth-child(1) { top: 0; } .trigger span:nth-child(2) { top: 50%; width: 80%; } .trigger span:nth-child(3) { top: 100%; } .trigger.active span:nth-child(1) { top: 50%; transform: rotate(45deg); } .trigger.active span:nth-child(2) { top: 50%; width: 80%; opacity: 0; } .trigger.active span:nth-child(3) { top: 50%; transform: rotate(-45deg); } /* go to top */ .gototop { position: fixed; bottom: 20px; left: 20px; border: 1px solid #fff; display: block; width: 40px; height: 40px; border-radius: 50%; text-align: center; line-height: 50px; transform: translateY(0px); opacity: 0; } .gototop.active { opacity: 1; } .btn-hiring { right: 20px; bottom: 20px; } .cd-vertical-nav { display: none; } /* Show Hide Section */ /* #home, #about, #project, #plan, #awards, #location, #contact { display: none; } */ /* ############# section : Home ############# */ .home-inner { height: 100vh; } .welcome-text { transform: translate(-50%, -50%) scale(0.7); width: 100%; /* border: 2px solid red; */ } .home-heading { left: 20px; } .home-heading span { font-size: 50px; } }
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
PC에서 모바일화면으로 전환되면 GNB 메뉴가 OPEN되어있는 상태 (소스)3
/* Google Web Font : Montserrat */ @import url('https://fonts.googleapis.com/css?family=Montserrat:200,300,400,500&display=swap'); @import url('https://fonts.googleapis.com/css?family=Manrope:300,400,500,600&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@200;300;400;600;700;900&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Overpass&display=swap'); /* FontAwesome CDN 4.7 */ @import url('https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'); /* source sans */ @import url('https://fonts.googleapis.com/css2?family=Source+Sans+3:wght@200;300;400;600&display=swap'); /* Overpass */ @import url('https://fonts.googleapis.com/css2?family=Overpass&display=swap'); /* Reset CSS */ * { box-sizing: border-box; } ul { list-style: none; padding: 0; } a { text-decoration: none; } /* Default CSS */ body { font-family: 'Montserrat', sans-serif; color: #222; font-size: 15px; margin: 0; height: 100vh; background-color: #fff; } /* Entire Layout */ .cd-section { height: 100vh; } .cd-section > div { height:100%; position: relative; } .content { background-color: #ddd; position: absolute; width: calc(100% - 40px); height: calc(100% - 80px); left: 20px; bottom: 20px; overflow: hidden; } /* Header */ header { position: fixed; top:0; left:0; width: 100%; } .gnb-inner { /* border: 1px solid #000; */ width: calc(100% - 40px); margin: auto; height: 60px; line-height: 60px; } .logo { float: left; } .logo img { padding-top: 17px; } .gnb { float: right; } .menu { display: none; } .menu a {} .slogan { font-size: 16px; font-style: italic; } .trigger { display: none; } /* Hiring button */ .btn-hiring { position: fixed; right: 50px; bottom: 50px; color: #fff; background-color: #000; padding: 10px 20px; border-radius: 20px; box-shadow: 5px 5px 20px rgb(0, 0, 0, 0.3); transition: 0.5s; } .btn-hiring .fa-solid { transform: rotateY(180deg); margin-right: 5px; } .btn-hiring:active { transform: scale(0); } /* ############# section : Home ############# */ .home-inner { background-color: #fff; height: 100%; } .home-inner::before { content: ''; background-color: #000; position: absolute; width: 0; height: 100%; top: 0; left: 0; animation: overlay 1s 2.5s ease-in-out; /* display: none; */ } .welcome-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 50px; font-weight: 300; text-align: center; line-height: 1.2em; margin: 0; font-family: 'Source Sans 3', sans-serif; animation: slideup 2s linear; animation-fill-mode: both; /* display: none; */ } .welcome-text span { display: block; font-size: 26px; } .welcome-text span .fa { color: crimson; } .opacity-image { background: url('images/section-bg-01.jpg') no-repeat center center; background-size: cover; height: 100%; opacity: 0; animation: opacity-image 1s 3s ease-in both; /* display: none; */ } .home-heading { /* display: none; border: 1px solid red;*/ position: absolute; top: 50%; /* left: 40%; */ left: 300px; /* margin-left: 200px; */ transform: translateY(-50%); } .home-heading span { display: block; font-size: 115px; color: #fff; font-weight: 600; width: 0; overflow: hidden; animation: reveal 1s 3s ease-in-out both; } .home-heading span:nth-child(1) { animation-delay: 3s; } .home-heading span:nth-child(2) { animation-delay: 3.2s; } .home-heading span:nth-child(3) { animation-delay: 3.4s; } @keyframes slideup { 0% { opacity: 0; margin-top: 50px; } 20% { opacity: 1; margin-top: 0; } 80% { opacity: 1; margin-top: 0; } 100% { opacity: 0; } } @keyframes overlay { 0% { width: 0; left: 0; } 50% { width: 100%; left: 0; } 100% { width: 0; /* right: 0; */ left: 100%; } } @keyframes opacity-image { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes reveal { 0% { width: 0; } 100% { width: 100%; } }
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
PC에서 모바일화면으로 전환되면 GNB 메뉴가 OPEN되어있는 상태 (소스 js)2
/* document ready랑 같은거 = html을 다 읽은 후 실행해라고 표시 */ /* Trigger */ $(function(){ $('.trigger').click(function(){ $(this).toggleClass('active') $('.gnb').toggleClass('active') }) $('section, .menu a').click(function(){ $('.gnb').removeClass('active') $('.trigger').removeClass('active') }) /* smooth Scrolling */ $('.menu a, .gototop').click(function(e){ $.scrollTo(this.hash || 0, 900) }) /* chacng CSS with Scroll */ // 스크롤을 한 상태 if 스크롤을 안한상태 else $(window).scroll(function(){ if($(window).scrollTop() > 50) { $('header, .gototop').addClass('active') } else { $('header, .gototop').removeClass('active') } }) // slick.js History $('.history-slider').slick({ dots: true, infinite: true, speed: 300, slidesToShow: 4, slidesToScroll: 2, responsive: [ { breakpoint: 1024, settings: { slidesToShow: 3, slidesToScroll: 3, infinite: true, dots: true } }, { breakpoint: 600, settings: { slidesToShow: 2, slidesToScroll: 2 } }, { breakpoint: 480, settings: { slidesToShow: 1, slidesToScroll: 1 } } // You can unslick at a given breakpoint now by adding: // settings: "unslick" // instead of a settings object ] }) // slick.js project photo1 $('.project-photo').slick({ dots : true, infinite : true, speed : 500, fade : true, autoplay : true, autoplaySpeed : 2000, cssEase : 'linear' }) })
-
미해결Vue.js 시작하기 - Age of Vue.js
버튼을 눌러도 data의 값이 변경되지 않습니다
안녕하세요! 제 코드로는 버튼을 눌러도 root 컴포넌트의 data 값이 변하지 않길래 캡틴판교님이 올려주신 ground-complete 코드를 복사해서 랜더링해봤는데요. 버튼을 눌러도 여전히 data 값이 그대로고, 이벤트는 어째서인지 보이지도 않네요ㅜㅜ혹시 해결 방법이 있나 궁금합니다.