묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
upgradeLevel에 인수를 넣기 위해 새로 AdvancedLevel 과 같은 instance를 생성하는게 어색하게 느껴집니다.
안녕하세요 강의 잘 듣고 있습니다.저는 upgradeLevel 을 하기 위해서 새로 인스턴스를 생성하고 넘겨주는 방식이 아닌 게임처럼 한단계씩 업그레이드 되는 방식으로 구현하고 싶습니다. 그래서 다음과 같이 생각해서 적어봤는데, 2가지 문제가 있는것 같습니다. 어떻게 하면 될까요? public BeginnerLevel level = new BeginnerLevel(); public void upgradeLevel(PlayerLevel level) { // if(level.levelName ) if (level instanceof BeginnerLevel) { level = new AdvancedLevel(); } else if (level instanceof AdvancedLevel) { level = new SuperLevel(); } else if (level instanceof SuperLevel) { System.out.println("you are already highest level"); } }첫째로 instanceof를 잘못쓰고 있는 것 같고, 둘째로 level = new AdvancedLevel() 이런식으로 재정의 하는게 가능한가요? 궁금합니다.
-
미해결
메모리반도체 FPGA강의
메모리 반도체(DRAM, SRAM, NAND Flash) 관련 FPGA 강의를 찾고 있는데 추천하시는 강의가 있을까요? Xilinx Evaluation kit와 SRAM, NAND Flash 칩은 보유하고 있습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jstl 관련 회원목록 조회 시 에러 발생(스프링 부트 3.0 이상 사용)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]JAVA 17, 스프링부트 3.0 이상 사용중입니다.현재 매뉴얼에는 스프링부트 3.0 이상 사용자는 dependency 부분만 수정하면 작동이 가능하다고 되어있는데회원등록 후 회원조회를 해보니 WhiteLabel Error와 함께 다음과 같은 오류가 발생했습니다.ERROR 84347 --- [nio-8080-exec-2] a.c.c.C.[.[.[.[frontControllerServletV1] : Servlet.service() for servlet [frontControllerServletV1] in context with path [] threw exception [/WEB-INF/views/members.jsp (line: [17], column: [4]) According to TLD or attribute directive in tag file, attribute [items] does not accept any expressions] with root cause이와 관련하여 해결방법을 찾아보니 JSTL의 버전업으로 인해 taglib 사용 시 uri를 "http://java.sun.com/jstl/core" 가 아닌 "http://java.sun.com/jstl/core_rt"를 사용하면 정상적으로 회원목록 조회가 작동하는 것을 확인하였습니다.관련자료 : https://erim1005.tistory.com/entry/JSTLAccording-to-TLD-or-attribute-directive-in-tag-file
-
해결됨Practical Testing: 실용적인 테스트 가이드
yml 프로파일 구분 관련 질문이 있습니다.
강의 잘 보고 있습니다. 감사합니다. 지금 설정해두신 yml 파일을 보면,아무런 프로파일을 지정하지 않으면 local 프로파일을 이용한다고 되어 있고, local 프로파일에는 ddl-auto 설정이 create으로 되어 있습니다.spring: profiles: default: local datasource: url: jdbc:h2:mem:~/cafeKioskApplication driver-class-name: org.h2.Driver username: sa password: jpa: hibernate: ddl-auto: none --- spring: config: activate: on-profile: local jpa: hibernate: ddl-auto: create show-sql: true properties: hibernate: format_sql: true defer-datasource-initialization: true # (2.5~) Hibernate ??? ?? data.sql ?? h2: console: enabled: true 기본 프로파일에는 ddl-auto 설정이 none으로 되어 있는데, 이 설정은 어떨 때 적용이 되는 건가요?어차피 아무런 프로파일을 지정하지 않으면, local 프로파일대로 ddl-auto 설정은 create을 따라갈텐데 ddl-auto: none을 적어두신 이유가 궁금합니다. 결론은 아무런 프로파일을 지정하지 않았을 때,local 파일의 ddl-auto 속성인 create이 되는지,아니면 default 프로파일로 설정한 ddl-auto: none이 적용이 되는지가 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
스프링빈 등록시점관련
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.스프링빈이 @Bean 메서드에서 return 되는 시점에 객체가 빈으로 등록되는게 아니라 new 연산자로 생성하는 시점에 빈이 되는 건가요???리턴하는 코드보다 의존관계 주입하는 코드가 먼저 있는데 (NetworkClient networkClient = new NetworkClient(); networkClient.setUrl("https://www.naver.com"); return networkClient;)스프링 컨테이너 생성→ 스프링 빈 생성 →의존관계 주입→ 초기화 콜백 이 순서에서 보면 빈이 new 로 생성되고 주입받고 return 하는 것 같아서요 .. .. 지금까지는 return new 객체 패턴으로 스프링에 빈을 등록했어서 조금 헷갈립니다.
-
미해결입문자를 위한, HTML&CSS 웹 개발 입문
float속성
float속성 강의에서 p태그의 가로 길이가 div의 width만큼밖에 안되어 있는데 원래는 block속성이니까 뷰포트 전체를 차지해야 하는 것 아닌가요?? 아니면 혹시 div의 자식 태그여서 부모의 width속성을 상속 받은 건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Server Service에서 함수포인터 사용관련해서 질문을 남깁니다.
using SessionFactory = function<SessionRef(void)>; Service(ServiceType type, NetAddress address, IocpCoreRef core, SessionFactory factory, int32 maxSessionCount = 1); Service의 생성자는 이런식으로 SessionFactory라는 함수포인터를 받고 있습니다. 그런데 함수포인터를 전달하지 않고, ServerServiceRef service = MakeShared<ServerService>( NetAddress(L"127.0.0.1", 7777), MakeShared<IocpCore>(), MakeShared<GameSession>, // TODO : SessionManager 등 100); 이렇게 MakeShared로 생성된 GameSession 클래스를 전달해도 잘 동작하는데, 함수포인터 형식에 클래스를 그냥 사용해도 잘 동작하는 이유가 궁금합니다.MakeShared의 함수에서 ()를 사용하지 않으면, 내부적으로 xnew함수만 전달되어서 그런것인가요? 제가 이해한게 정확한지 모르겠어서 질문을 남깁니다. (한번도 function을 이렇게 사용한적이 없어서 모르겠네요 ㅜㅜ)
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
강의명에 오타가 있는 것 같습니다.
강의 너무 잘듣고 있습니다.23-05-login-chech-hoc / login-check-hoc-success앞쪽에 chech라고 오타가 있는 것 같아요
-
해결됨Svelte REST-API 프로젝트
첫 메인 화면 $isLogin 인증 부분 궁금한점이 있습니다.
처음 화면에서 http://127.0.0.1:3012 을 호출하면 http://127.0.0.1:3012/articles/all 주소로 자동 이동합니다.궁금한 점은 articles/all 화면에서 제일 상단에 인증되면 보이는 입력칸이 보입니다. {#if $isLogin} 으로 조건이 되어도 true 인지 입력칸이 보입니다.로그아웃 버튼을 누르면 로그인을 하지 않은 첫화면인데 작동이 되어 로그아웃으로 해제 됩니다. 이 부분이 궁금합니다. <script> import ArticleHeader from '../components/ArticleHeader.svelte'; import ArticleList from '../components/ArticleList.svelte' import ArticleAddForm from '../components/ArticleAddForm.svelte' import Comments from '../pages/Comments.svelte' import { isLogin } from '../stores' import { Route } from 'tinro' </script> <ArticleHeader /> <main class="slog-main "> {#if $isLogin} <ArticleAddForm /> {/if} <ArticleList /> <Route path="/comments/:id" > <Comments /> </Route> </main> function setIsLogin() { const checkLogin = derived(auth, $auth => $auth.Authorization ? true : false) return checkLogin }
-
미해결마케터를 위한 구글 애널리틱스 실무
안녕하세요. pdf 수업 자료 공유 부탁드립니다.
저두 초보입니다. 수업자료 부탁드립니다. 꾸벅bbugury-r@nate.com
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
saa와 scp 내용 비교
saa 강의 듣고 scp도 취득할수 있나요?
-
미해결스프링 부트 - 핵심 원리와 활용
잘 이해가 안갑니다...
MyContainerInitV1 : ServletContainerInitializer을 implement한 클래스로서 서블릿 컨테이너 초기화를 위해 작성됐다.HelloServlet : HttpServlet을 상속받은 Servlet이다.AppInit : 애플리케이션 초기화를 위한 인터페이스이다.AppInitV1Servlet : AppInit를 implement한 애플리케이션 초기화 클래스 ? onStartup()을 통해 서블릿 컨테이너를 초기화하고 서블릿도 등록한다. MyContainerInitV2: ServletContainerInitializer을 implement한 클래스로서 @HandlesTypes(AppInit.class) 해줌으로써 해당 AppInit의 onStartup()을 통해 서블릿 컨테이너의 ctx를 파라미터로 보내서 AppInit 객체를 생성한다?================================제가 이해한 개념이 맞나요? 뭔가 용어들이 비슷해서 명확하게 이해가 안되는 것 같습니다. ㅠㅠ질문1) 컨테이너 초기화와 애플리케이션 초기화는 다른 건가요? 각각 뭐가 다르고 왜 해주는건지 잘 모르겠습니다. ㅠㅠ 질문2) AppInit과 ServletContainerInitializer은 둘다 onStartup()를 가지고 있던데.. 서로 다른 역할을 하는 각각의 인터페이스죠..? 질문3) AppInitV1Servlet 은 서블릿 컨테이너 초기화하고 서블릿도 등록하고, MyContainerInitV2도 서블릿 컨테이너 초기화와 서블릿 등록을 하게되는데 둘의 차이는 뭔가요?...너무 헷갈려요 ㅠㅠㅠㅠㅠ
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
첫페이지 크롤링하기 오류
안녕하세요!! 바꿔서 올려주신 강의자료 복사해서 사용해도 작동하지 않습니다!!맥북 사용중이라 혹시나해서 유저 에이전트 값을Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 으로 변경해서 진행했는데도 값이 나오지 않아요!! 확인부탁드립니다.! import requests from bs4 import BeautifulSoup main_url = "https://www.coupang.com/np/search?component=&q=usb%ED%97%88%EB%B8%8C&channel=user" # 헤더에 User-Agent, Accept-Language 를 추가하지 않으면 멈춥니다 header = { 'Host': 'www.coupang.com', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3', } response = requests.get(main_url, headers=header) html = response.text soup = BeautifulSoup(html, 'html.parser') links = soup.select("a.search-product-link") # select의 결과는 리스트 자료형 print(links)
-
미해결처음 만난 리액트(React)
false expression
Inline If에서 false expression을 사용하면 뒤에 내용은 평가되지 않지만, false expression의 결과 값이 그대로 리턴되기 때문에 주의 해야 한다 이렇게 말씀하셨는데 그러면 하단의 흰색 박스에 조건이 만족하지 않을 경우에도 결과 값을 그대로 리턴하나요..?
-
해결됨게임 프로그래머 취업 전략 가이드
[취업] 게임 클라이언트 개발자를 준비중입니다.
안녕하세요 현재 독학으로 게임 클라이언트 개발자를 준비하고 있습니다. 팀 프로젝트 경험이 없고 포폴은 유니티를 이용해 하이퍼 캐주얼 게임 2개정도 이며, 루키스님을 알게되어 프로그래머스와 백준에서 문제풀이를 하며 유니티 강의 수강을 고민하고 있습니다.루키스님의 유니티 mmo강의는 클라와 서버부분을 같이 공부할 수 있을 것 같은데, 빠른 취업을 목표로 강의는 최소 어디까지 듣는게 좋을지 포폴은 어느정도 수준이어야 할지 감이 잡히지 않아서 질문드립니다.
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
mapState을 이용하여 state값을 가져오면 가져와지는데 개발자 도구 Vuex 부분에서는 state값이 없다고 뜹니다.
mapState을 이용하여 state값을 가져오면 가져와지는데 개발자 도구 Vuex 부분에서는 state값이 없다고 뜹니다. 단순한 개발자도구 에러일까요? 다른 이유가 있을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입 컬렉션 삭제부분에서 이해가 안가는곳이 있는데요
챕터9 값 타입 컬렉션 25분Address 값 타입 컬렉션 삭제 부분입니다. 우선 삭제되는 부분만 확인하고 싶어서, 새로운 값을 추가하지는 않았습니다.System.out.println("========== 값 타입 컬렉션 주소 삭제================"); findMember.getAddressHistory().remove(new Address("old1", "street", "zipcode")); 데이터는 정상적으로 삭제되었는데, 저는 왜 Member테이블에 대해 update쿼리가 나가는지가 이해가 안가는데요,Member 테이블에서는 수정사항이 발생할게 없는데 왜 update쿼리도 발생했는지 알 수 있을까요? 혹시 몰라 코드 전체와 결과 남깁니다. Member member = new Member(); member.setUsername("member1"); member.setHomeAddress(new Address("homeCity","street","zipcode")); member.getFavoriteFoods().add("꾸부라꼬"); member.getFavoriteFoods().add("카페라떼"); member.getFavoriteFoods().add("회"); member.getAddressHistory().add(new Address("old1", "street", "zipcode")); member.getAddressHistory().add(new Address("old2", "street", "zipcode")); em.persist(member); em.flush(); em.clear(); System.out.println("================== 조회 시작 =================="); Member findMember = em.find(Member.class, member.getId()); System.out.println("================== 컬렉션은 지연로딩, Addr 조회 =================="); List<Address> addressHistory = findMember.getAddressHistory(); for(Address address : addressHistory) { System.out.println("address = " + address.getCity()); } System.out.println("================== 컬렉션은 지연로딩, favorite food 조회 =================="); Set<String> favoriteFoods = findMember.getFavoriteFoods(); for(String favoriteFood : favoriteFoods) { System.out.println("favoriteFood = " + favoriteFood); } Address homeAddress = findMember.getHomeAddress(); findMember.setHomeAddress(new Address("new change city", homeAddress.getStreet(), homeAddress.getZipcode())); findMember.getFavoriteFoods().remove("꾸부라꼬"); findMember.getFavoriteFoods().add("무화과 크림치즈 베이글"); System.out.println("========== 값 타입 컬렉션 주소 삭제================"); findMember.getAddressHistory().remove(new Address("old1", "street", "zipcode")); tx.commit(); Hibernate: /* insert hellojpa.Member */ insert into Member (city, street, zipcode, USERNAME, MEMBER_ID) values (?, ?, ?, ?, ?) Hibernate: /* insert collection row hellojpa.Member.addressHistory */ insert into ADDRESS (MEMBER_ID, city, street, zipcode) values (?, ?, ?, ?) Hibernate: /* insert collection row hellojpa.Member.addressHistory */ insert into ADDRESS (MEMBER_ID, city, street, zipcode) values (?, ?, ?, ?) Hibernate: /* insert collection row hellojpa.Member.favoriteFoods */ insert into FAVORITE_FOOD (MEMBER_ID, FOOD_NAME) values (?, ?) Hibernate: /* insert collection row hellojpa.Member.favoriteFoods */ insert into FAVORITE_FOOD (MEMBER_ID, FOOD_NAME) values (?, ?) Hibernate: /* insert collection row hellojpa.Member.favoriteFoods */ insert into FAVORITE_FOOD (MEMBER_ID, FOOD_NAME) values (?, ?) ================== 조회 시작 ================== Hibernate: select member0_.MEMBER_ID as member_i1_6_0_, member0_.city as city2_6_0_, member0_.street as street3_6_0_, member0_.zipcode as zipcode4_6_0_, member0_.USERNAME as username5_6_0_ from Member member0_ where member0_.MEMBER_ID=? ================== 컬렉션은 지연로딩, Addr 조회 ================== Hibernate: select addresshis0_.MEMBER_ID as member_i1_0_0_, addresshis0_.city as city2_0_0_, addresshis0_.street as street3_0_0_, addresshis0_.zipcode as zipcode4_0_0_ from ADDRESS addresshis0_ where addresshis0_.MEMBER_ID=? address = old1 address = old2 ================== 컬렉션은 지연로딩, favoritfood 조회 조회 ================== Hibernate: select favoritefo0_.MEMBER_ID as member_i1_4_0_, favoritefo0_.FOOD_NAME as food_nam2_4_0_ from FAVORITE_FOOD favoritefo0_ where favoritefo0_.MEMBER_ID=? foavortefood = 꾸부라꼬 foavortefood = 회 foavortefood = 카페라떼 ========== 값 타입 컬렉션 주소 삭제================ Hibernate: /* update hellojpa.Member */ update Member set city=?, street=?, zipcode=?, USERNAME=? where MEMBER_ID=? Hibernate: /* delete collection hellojpa.Member.addressHistory */ delete from ADDRESS where MEMBER_ID=? Hibernate: /* insert collection row hellojpa.Member.addressHistory */ insert into ADDRESS (MEMBER_ID, city, street, zipcode) values (?, ?, ?, ?) Hibernate: /* delete collection row hellojpa.Member.favoriteFoods */ delete from FAVORITE_FOOD where MEMBER_ID=? and FOOD_NAME=? Hibernate: /* insert collection row hellojpa.Member.favoriteFoods */ insert into FAVORITE_FOOD (MEMBER_ID, FOOD_NAME) values (?, ?) Process finished with exit code 0
-
미해결C# 프로그래밍 기초
메서드 Override1
09:58 이 부분에서 저는 Student가 아닌 Human이 나오는데 원인을 잘 모르겠습니다.ㅠㅠ
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
섹션2: 에너미이동
랜덤하게 에너미이동을 진행할 때, speed를 높이면 씬뷰에서 카메라 범위를 벗어나게 되어서 기존 코드에 다음 코드를 추가하였습니다. 그런데도 씬뷰를 벗어나게 되더라고요. 업데이트 부분에서 현재 위치의 x,y가 주어진 범위를 벗어나면 코루트를 시작하는 함수를 호출하여 다시 목표 방향을 설정한건데 왜 벗어나는 걸까요?if(transform.position.x < (-hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.x > (hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y < (-hs.y)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y > (hs.y)){ StartCoroutine(ChangeDir(3f)); }using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyMove1 : MonoBehaviour { public float speed = 3; Vector2 hs; //half screen: 원점 초기화 Vector2 dir; //direction: 원점 초기화 // Start is called before the first frame update void Start() { hs.x = Camera.main.orthographicSize; //카메라 위쪽에서 아래쪽 바라보는 가로의 길이 hs.y = Camera.main.aspect * hs.x; //가로세로 비율 * 가로 길이 = 세로 길이 StartCoroutine(ChangeDir(3f)); } // Update is called once per frame void Update() { Vector2 delta = dir * speed * Time.deltaTime; transform.Translate(delta); //자동으로 z가 0으로 됨. if(transform.position.x < (-hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.x > (hs.x)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y < (-hs.y)){ StartCoroutine(ChangeDir(3f)); } if(transform.position.y > (hs.x)){ StartCoroutine(ChangeDir(3f)); } } IEnumerator ChangeDir(float delta){ Vector2 goal; while(true){ goal.x = Random.Range(-hs.x,hs.x); //전체 가로 길이 goal.y = Random.Range(-hs.y,hs.y); //전체 세로 길이 dir = goal - (Vector2) transform.position; //이동방향 = 목표지점 - 현재위치(Vector3) dir.Normalize(); float delay = Random.Range(1f,delta); yield return new WaitForSeconds(delta); } } }
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
섹션2: 에너미 이동2
void Update() { Vector2 delta = dir * speed * Time.deltaTime; }이 부분에서 왜 dir을 곱하는 지 이해가 되지 않습니다!그 전에는 초당 얼만큼 가기 위해 speed를 곱했는데 dir은 여기서 무엇을 뜻하는 걸까요?