묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결초보를 위한 쿠버네티스 안내서
운영을 목적으로 쿠버네티스 설치 관련 문의
- 학습을 위한 설치는 잘 따라하며 실습해보고 있습니다. - 리눅스 서버 6대를 준비하고 장차 운영을 목적으로 설치하려고 합니다. 배운데로 실습도 해보고 추가적으로 컨테이너도 확장해보고자 합니다. - 현재 리눅스 서버가 6대가 있습니다. 그 중 2대는 테스트용으로각각 웹서버와 디비서버로 사용중입니다. 테스트용이긴 하지만 작은 웹어플이 돌아가고 있는 상태라 여전히 기존에 돌아가던 웹어플은 유지하고 싶습니다. 나머지 4대는 리눅스 CentOS만 설치된 노는(?) 서버( PC급, i7/32Gb/1T * 4대)입니다. - 위와같은 환경에서 설치를 하려는데 참고할만한 가이드 부탁드립니다.
-
미해결C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)
이해할수없는 애러가 발생하였습니다.
이건 SpawnManager의 코드고 이건 ItemManager 그리고 이건 Points 클래스 입니다 분명 영상을 따라한 것 같은데... 이런 애러가 떠요 제가 뭘 잘못한 걸까요 ㅜㅜ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
CSR, SSR 관련 질문있습니다!
안녕하십니까, 좋은 강의 매번 잘 듣고 있습니다! 이번 강의는 제가 궁금했던 사항을 다뤄주셔서 더 주의 깊게 시청하였습니다. 운이 좋게도 친구가 프론트(react, vue)를 공부하는 상황이라 함께 프로젝트를 진행하고자 계획하고 있는데요, 모두 처음이라 난관에 봉착하고있는 상황입니다..ㅠ 이에 몇가지 질문을 드리고 싶어 글을 남기게 되었습니다. 기초적인 질문일 수 있겠지만 답변 주시면 감사드리겠습니다! 1. 프론트와 백의 협업 과정에서 먼저 진행해야 하는 것은 프론트에서 페이지를 구성하는 것인가요? 만일 그렇다면 커뮤니케이션을 할 때 백엔드 개발자가 API 문서를 미리 작성하여 그것을 기반으로 URL 등을 공유하며 협업을 진행하는 것인가요? 협업 과정의 프로세스와 협업 시 중요사항이 궁금합니다! 2. 리액트를 이용하여 백엔드(Spring)와 협업하였을 때 완성한 웹 페이지를 안드로이드 앱 처럼 전환도 할 수 있는 것으로 알고 있는데, 이 영역은 프론트의 영역인가요 백의 영역인가요? 3. 타임리프는 백엔드의 영역이라고 강의를 통해 배웠습니다. 그런데 많은 작업이 백 개발자와 프론트 개발자의 구분으로 이루어져 있는 것으로 알고 있습니다. 그렇다면 react나 vue가 많이 사용되고, 사용 타임리프는 현업에서 많이 사용되지 않는 것인가요? 제가 지식이 부족해 질문사항이 많아 죄송합니다 ㅠㅠ 시간 되신다면 답변 부탁드리겠습니다!!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
textrpg 두번째버전을 계속 실패합니다
using System; using System.Collections.Generic; using System.Text; namespace trpg22 { public enum GameMode { None, Lobby, Town, Field } class Game { private GameMode mode = GameMode.Lobby; private Player player = null; private Monster monster = null; private Random rand = new Random(); public void Process() { switch (mode) { case GameMode.Lobby: ProcessLobby(); break; case GameMode.Town: ProcessTown(); break; case GameMode.Field: ProcessField(); break; } } public void ProcessLobby() { Console.WriteLine("직업을 선택하세요"); Console.WriteLine("[1] 기사"); Console.WriteLine("[2] 궁수"); Console.WriteLine("[3] 법사"); string input = Console.ReadLine(); switch (input) { case "1": player = new Knight(); mode = GameMode.Town; break; case "2": player = new Archer(); mode = GameMode.Town; break; case "3": player = new Mage(); mode = GameMode.Town; break; } } public void ProcessTown() { Console.WriteLine("마을에 입장했습니다!"); Console.WriteLine("[1] 필드로 가기"); Console.WriteLine("[2] 로비로 돌아가기"); string input = Console.ReadLine(); switch (input) { case "1": mode = GameMode.Field; break; case "2": mode = GameMode.Lobby; break; } } public void ProcessField() { Console.WriteLine("필드에 입장했습니다!"); Console.WriteLine("[1] 싸우기"); Console.WriteLine("[2] 일정 확률로 마을 돌아가기"); CreatRandomMonster(); string input = Console.ReadLine(); switch (input) { case "1": ProcessFight(); break; case "2": TryEscape(); break; } } private void TryEscape() { int randvalue = rand.Next(0, 101); if (randvalue < 33) { mode = GameMode.Town; } else { ProcessFight(); } } private void ProcessFight() { while (true) { int damage = player.GetAttack(); monster.OnDamaged(damage); if (monster.IsDead()) { Console.WriteLine("승리했습니다"); Console.WriteLine($"남은체력{player.GetHp()}"); break; } damage = monster.GetAttack(); player.OnDamaged(damage); if (player.IsDead()) { Console.WriteLine("패배했습니다"); break; } } } private void CreatRandomMonster() { int randValue = rand.Next(0, 3); switch (randValue) { case 0: monster = new Slime(); Console.WriteLine("슬라임이 생성되었습니다"); break; case 1: monster = new Orc(); Console.WriteLine("오크가 생성되었습니다"); break; case 2: monster = new Skeleton(); Console.WriteLine("해골이 생성되었습니다"); break; } } } } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 3번째 강의까지는 문제 없이 되는데 마무리 단계를 따라하고 나면 문제가 발생합니다. 거꾸로 영상을 다시보기도 하고 처음부터 다시만들어 봤는데 이번엔 또 같은곳에서 다른 이유로 안되네요...ㅠㅠ 맨처음 만들었던건 nullreferenceexception이라는 오류가 떴고 지금 코드를 첨부한 두번째 시도는 이렇게 나오는데 혼자 며칠 고민해봐도 강의를 반복해서 봐도 어디서 실수를 했는지 도저히 찾지를 못하겠어서 도움을 요청드립니다
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
AWS 리액트는 자동배포 성공했습니다.
강사님~, 방금 12월 28일 올린 소스라고 되있는거 보고 아래 처럼 수정하여 AWS에 리액트 뜨는건 확인했습니다. 하지만 아래와 같은 500 에러가 나네요. 플라스크나 디비가 제대로 네트워크가 연결이 안됐든 설치가 안됐든 했나봅니다. 시간될때 더 확인해보고 댓글이나 게시글 남기겠습니다. 혹시 힌트 있으시면 주셔도 매우 감사할거 같습니다. POST http://dockermultiapp-env.eba-qurqfhda.ap-northeast-2.elasticbeanstalk.com/api/value 500 (Internal Server Error) createError.js:16 Uncaught (in promise) Error: Request failed with status code 500 at e.exports (createError.js:16) at e.exports (settle.js:17) at XMLHttpRequest.p.onreadystatechange (xhr.js:61) < 리액트 => AWS 배포 성공 변경점 > - 플라스크 배포/네트웍연결이랑 AWS RDS 설정은 저의 확인이 더 필요함. frontend/Dockerfile.dev 랑 frontend/Dockerfile를 아래 처럼 수정하였습니다. (변경 전)FROM node:alpine as builder => (변경 후) FROM node:16-alpine as builder 그리고 추가로 frontend/package.json 을 로컬 개발 환경에서 빌드인가 실행시 permission 에러나서 --openssl-legacy-provider 넣었습니다. 이거 다시 없앴습니다. 개발 버전에서는 아직 테스트 못해봤는데 또 permission 에러나면 "start": "react-scripts --openssl-legacy-provider start", 이부분 다시 넣어야 할거 같습니다. < 강사님이 혹시나 제 질문때문에 뭔가 고생하실까봐랑 정보가 이리 저리 분산되는걸 방지하기위해 이글은 곧 지우겠습니다. 혹시 댓글 주실거 있으면 원래 글에 댓글 주시면 매우 감사하겟습니다.원래 글에 이글과 동일한 글을 댓글로 남겼습니다. >
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
연결 거부
local에서 npm run start:prod하면 잘되는데, lightsail에서 하면 연결이 안된다고 나옵니다 ㅠ -pm2 list - deny - lightsail ACL
-
미해결빠르게 git - 핵심만 골라 배우는 Git/Github
git fetch 정말 필요할까요?
local에서 push한 후에 remote에서 수정해서 커밋을 했습니다. 그리고 fetch를 하려고했는데, fetch하기 전에 한번 git checkout origin/main 을 해보았습니다 fetch를 하지 않아서 원격에서 커밋한 내용이 안보일 줄 알았는데 잘 보이더라구요.. fetch 안해도 잘 보이던데 꼭 해야되나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문생성 파라미터 질문
질문 1 생성 메서드에서 가격을 직접 파라미터로 받는데 가격은 상품마다 정해져있는데 보통 저렇게 가격을 파라마터로 받나요 ?? 질문2 주문 생성에 43Line 질문입니다 여기서 orderItem 이라는 전달인자를 하나를 넘겨줍니다. 그런데 생성 매서드를 보시면 59라인 orderItems를 여러개 받을수 있게 설계가 되어있습니다. 어차피 하나밖에 안넘겨주는데 저렇게 여러게 받을수 있게 해주신 이유가 있을까요 ??(OrderItem... orderItems)
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
EL1025E: The collection has '0' elements, index '0' is invalid
{{item.member.name}, item.orderItems[0].item.name} null 값이 뜨는 이유를 모르겠습니다.. 해당 질문 참고했는데 해결이 되지 않아 질문드립니다 저도 동일한 증상으로 현재 EL1025E: The collection has '0' elements, index '0' is invalid Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "order.orderItems[0].item.name" 오류가 발생하고 있습니다. DB상에 Orders에 값이 잘 올라가는건 확인했는데 Ordersitem쪽에 값이 DB에 올라가지 않는게 문제인듯한데 엔티티쪽을 봐도 그렇고 Repository쪽을 봐도 분명 문제가 없는거같은데 어디서 문제가 발생한건지 모르겠습니다. 가능하시다면 https://github.com/yunsik0115/Spring_PlayGround/tree/master/jpashop 에 제 소스코드가 올라가있는데 확인해주실 수 있을지 여쭙고 싶습니다. 연말에도 항상 고생하시는 서포터즈님들께, 김영한 선생님께 깊은 감사드리며, 새해에도 행복만 가득하시길 바라겠습니다 항상 감사합니다 :)
-
미해결퍼블리셔 취업을 위해 제대로 배워보는 html과 css, 그리고 웹표준
category를 top: 50% 했을 때 이동되는 위치들이 잘 이해가 안가네요ㅠ
gallery__img-box 높이가 정해져 있지 않아서 이미지 크기에 따라서 .garlley__itme-tag의 top:50% 위치가 조절되는거 같은데 gallery__img-box가 .garlley__itme-tag 보다 작아서 어떤 기준으로 움직이는지 이해가 잘안되네요 ㅠ 그리고 margin-top 을 line-height 반만큼 - 해서 올리는것도 ... 어렵네요 ㅠ HTML CSS
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Map<Long, Member> store 질문입니다.
private static Map<Long, Member> store = new HashMap<>(); 위와 같이 코드 작성하고 아래에서 Member save를 오버라이드 할 때 @Overridepublic Member save(Member member) { member.setId(++sequence); store.put(member.getId(), member); return member;} 이렇게 작성되었는데 store라는 map 객체에 key 값으로 id를 value 값으로 member 객체를 설정한 것 같은데 뭔가 이해되기로는 key값에도 id가 존재하고 value 값에도 id와 name 값이 존재해서 id 값이 중복으로 저장되고 있는 느낌인데 제가 잘못이해하고 있는건가요?? 자료구조에 약해서 헷갈리네요 ㅜㅜ 만약 이해한게 맞아서 store에 put 되는 값이 key : member의 id value : member객체(member의 id, member의 name) 위와 같다면 id를 중복으로 저장하게 되는 것 같아서 뭔가 자원의 낭비?? 같은 느낌이 들어서 key : member의 id value : member의 name 형태로 저장하는 식으로 바꿀 수 있는지 궁금합니다
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
@EnableDiscoveryClient 관련 문의드립니다.
앞서서 Eureka 강의에서 Eureka에 client로 등록이되는 어플리케이션의 main() 메서드에 @EnableDiscoveryClient를 함께 사용을 했는데, 이번에 각 client service에서는 해당 어노테이션을 사용하지 않아도 정상 동작이 되는 것 같습니다. @EnableDiscoveryClient는 별도로 사용을 안해되는지, 그리고 어떤 경우에 사용하는 것인지 질문 드립니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
csrf 관련
아래부분을 추가하면 관심주제 선택시 아래의 메시지와 함께 아무반응이 없습니다. csrf 소스 제거시에는 정상적으로 뜹니다. <script type="application/javascript" th:inline="javascript"> $(function() { var csrfToken = /*[[${_csrf.token}]]*/ null; var csrfHeader = /*[[${_csrf.headerName}]]*/ null; $(document).ajaxSend(function (e, xhr, options) { xhr.setRequestHeader(csrfHeader, csrfToken); }); }); </script>
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
[SSL: CERTIFICATE_VERIFY_FAILED] 에러
발생에러: urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:997)> 검색어 '고양이' 경우에 위의 에러가 떴습니다. import ssl #_ssl.c:997 ssl._create_default_https_context = ssl._create_unverified_context # _ssl.c:997 에러처리 그래서 위의 문구를 검색해서 추가해줬지만, 여전히, urllib.error.URLError: <urlopen error [SSL: WRONG_SIGNATURE_TYPE] wrong signature type (_ssl.c:997)>에러가 뜹니다. 결국, try로 에러를 처리했는데요. try없이 에러 조치가 가능할까요? from selenium import webdriver from selenium.webdriver.common.keys import Keys import time import os import urllib.request import ssl #_ssl.c:997 import pyautogui keyword = pyautogui.prompt() if not os.path.exists(f'06_구글이미지크롤링/{keyword}'): os.mkdir(f'06_구글이미지크롤링/{keyword}') main_url = f"https://www.google.com/search?q={keyword}&newwindow=1&tbm=isch&sa=X&ved=&biw=1000&bih=900&dpr=1" browser = webdriver.Chrome("C:/chromedriver.exe") browser.implicitly_wait(10) browser.maximize_window() browser.get(main_url) #무한 스크롤 처리 before_h = browser.execute_script("return window.scrollY") while True: browser.find_element_by_css_selector("body").send_keys(Keys.END) time.sleep(1) after_h = browser.execute_script("return window.scrollY") if after_h == before_h: break before_h = after_h imgs = browser.find_elements_by_css_selector(".rg_i.Q4LuWd") #자료형은 리스트 for i, img in enumerate(imgs, 1): browser.execute_script("arguments[0].click();", img) time.sleep(1) if i == 1: target = browser.find_elements_by_css_selector("img.n3VNCb")[0] else: target = browser.find_elements_by_css_selector("img.n3VNCb")[1] img_src = target.get_attribute('src') opener = urllib.request.build_opener() opener.addheaders = [('User-Agent', 'Mozila/5.0')] urllib.request.install_opener(opener) ssl._create_default_https_context = ssl._create_unverified_context # _ssl.c:997 에러처리 try: urllib.request.urlretrieve(img_src, f'06_구글이미지크롤링/{keyword}/{i}.jpg') except: continue
-
미해결Vue로 Nodebird SNS 만들기
회원가입시 로그인
안녕하세요 회원가입시 로그인이 바로구현이 되게 하고싶은데 //회원가입 router.post('/',isNotLoggedIn ,async (req,res,next)=> { try{ const hash = await bcrypt.hash(req.body.password, 12); //////이메일로 중복가입 체크// const exUser = await db.User.findOne({ where:{ email : req.body.email, }, }); if(exUser) { return res.status(403).json({ errorCode : 1, message : "이미 회원가입되어있습니다." }) } ///이메일 중복가입체크 끝 //// const newUser = await db.User.create({ email : req.body.email, nickName : req.body.nickName, password : hash, });//HTTP STATUS CODE await passport.authenticate('local',(err,user,info)=>{ //에러시나 info 에 정보 (실패사유) if(err){ console.error(err); return next(err); } if(info){ return res.status(401).send(info.reason); } return req.login(user,async(err)=> { if(err){ console.error(err); return next(err); } return res.json(user); }); })(req,res,next); // return res.status(201).json(newUser); }catch(err) { console.log(err); next(err); } }); 이렇게하면 프론트 store쪽에 user가 전달이되는데 백쪽에서는 로그인이 제대로 되지가않는데 더 확인해봐야할부분이 있을까요?
-
미해결스프링 핵심 원리 - 기본편
value 값을 싱글톤으로 했을때, @PostConstruct랑 @PreDestroy가 안됩니다.
싱글톤상태에서는 프록시가 어떻게 동작하는지 궁금해서 value값을 바꿔보았습니다. value 값을 싱글톤으로 했을때, @PostConstruct 가 출력이 안됩니다. value 값만 바꿨을 뿐인데 인식을 못하는 이유가 궁금합니다.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
getAwsS3FileUrl url
getAwsS3FileUrl의 uri를 cats(Post)로 구현했는데, 기존 cats controller의 post와 중복되지 않는 이유가 무엇인가요 ?
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
auth 분기 해준 뒤 504오류
auth 분기 해준 뒤 504 Time out 오류가 나는데 어떤 이유인지 모르겠습니다... 오타가 있나 확인해보았는데 오타는 없는거 같습니다.. 어떤 문제인지... 해결 방법 부탁드립니다 ㅠㅡㅠ
-
미해결스프링 핵심 원리 - 기본편
접근제한자 관련 질문
안녕하세요. 접근제한자를 작성하지 않으면 자동으로 default로 되는것으로 알고있는데 AutoAppConfig의 memberRepository()메서드를 package hello.core;import hello.core.member.MemberRepository;import hello.core.member.MemoryMemberRepository;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;/*@ComponentScan( basePackages = "hello.core.member", excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class))basePackage를 안주면 소스의 패키지인 hello.core 하위를 전부 search한다. */@Configuration@ComponentScan( basePackages = "hello.core.member", excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class))public class AutoAppConfig { @Bean(name = "memoryMemberRepository") default MemberRepository memberRepository(){ return new MemoryMemberRepository(); }} 처럼 고치면 에러가나서 혹시 이유를 알 수 있을까요?
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
promise
.promise()는 어떤의미인가요 ?