DiscountPolicy와 같은 인터페이스들을 fixdiscount, ratediscount 등 클래스가 상속을 받고 main에서 클래스를 사용할때 부모클래스로 구현을 하잔아요 예를 들어 영상에서 코드를 보면 DiscountPolicy discountpolicy = new RateDiscountPolicy 의 형식처럼 구현되는데 만약에 자손 클래스에 새로 메서드를 추가를 했는데 그 메서드를 부모가 가지지 않았다면 그 메서드를 다운캐스팅을 통해 쓰는 건가요?? 아니면 메서드를 부모 인터페이스에도 적어주어 오버라이딩으로 활용하는 것이 좋나요? 수업에서 계속 다형성을 활용해 진행하기 때문에 이런 궁금점이생겼습니다.
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { MyWebView("https://www.daum.net/") } } } @Composable fun MyWebView(url : String) { AndroidView(factory = { WebView(it).apply { loadUrl(url) } }) } 강사님의 노고에 다시한번 감사드립니다 위의 코드를 작성한 후 AndroidManifest.xml 의 내용에 <uses-permission android:name="android.permission.INTERNET" /> <application ... android:usesCleartextTraffic="true" > 두가지를 추가한 후 앱을 실행하니 에뮬에 아래와 같은 오류가 뜨네요
listbox = [15,46,78,24,56] def min_max(data): mi = min(data) ma = max(data) return mi,ma min_max(listbox) 이 부분에서 코드가 어느 단계로 움직이는지 이해가 잘 안됩니다.min_max라는것을 임의로 지정해주고, mi에 최솟값,ma에 최대값을 저장하는것까지는 알겠는데, 그 밑에 부터 이해가 안가요return에 mi,ma는 위로 되돌아가라는건가요? 밑에 왜 다시 min_max(listbox)를 해주었을때 15,78이 나오는지 모르겠어요. listbox안에는 15,46,78,24,56이 저장되어 있는거 아닌가요? 그리고 data라는 입력값을 써주었는데 코드에 보면 data라는 값을 지정을 안해주었는데 어떻게 오류가 안나는건지도 궁금합니다!
spring boot 3.0이상에서 H2 사용할 때 test connection에서 실패하는 경우가 있을 수 있습니다. 에러 메시지로 Database "mem:testdb" not found, either pre-create it or allow remote database creation. 이 뜬 경우 아래와 같은 해결책을 사용할 수 있습니다. 우선 에러의 원인은 mem:testdb 데이터베이스가 존재하지 않기 때문에 발생합니다. H2 1.4이상 버전부터는 보안 상 문제 때문에 스프링부트 기동 시 데이터베이스 자동 생성을 막아두었다고 합니다. DB가 없으니 위와 같은 에러 메시지가 발생한 것이죠. H2 dependency 버전을 다운그레이드 시켜도 되겠지만, 솔직히 최신 버전의 dependency를 사용하고 싶잖아요? 문제 해결을 위해서 수동으로 데이터베이스를 생성하면 됩니다. 해결법은 생각보다 간단한데요. 임의의 더미 Entity를 만들어서 DB 생성을 유도하게 만들면 됩니다. 자세한 방법은 해당 블로그의 글을 참고하시기 바랍니다. https://shanepark.tistory.com/435
6:22초에 저장을 누르면 로고가 목업에 입혀지는것을 볼 수 있다고했는데, "저장"이라는 글자는 안보이고 "X"를 눌렀을 때 저장이 뜨긴합니다. 그래서 저장을 누르면 목업에 입혀지지 않고, 그냥 닫혀버립니다. ... 강사님께서 가져오신 목업의 자료도 올려놓지 않고 어떤 목업이라는 사이트에 어떤걸 가져오셨는지 언지도 하지않고 갑자기 시작해버려서 어떤 목업을 사용했는지는 모르겠지만 저는 목업월드에서 Business card 검색해서 나온것으로 가져왔습니다. 결론적으로 질문은 저장을 눌렀을 때 목업에 입혀지지 않고, 그냥 닫혀버리는것이 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. package hellojpa; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); //persistence.xml에 설정한 UnitName을 인자로 넣어주면 해당 persistence.xml 읽어서 // 팩토리 생성 완료. (내부적으로 jdbc 써서 DB와의 connection도 완료된 상태) EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try{ Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.setUsername("member1"); member.setTeam(team); em.persist(member); em.flush(); em.clear(); ///////////////////////////////////////////// Member findMember = em.find(Member.class, member.getId()); Team findTeam = findMember.getTeam(); System.out.println(findTeam.getName()); tx.commit(); } catch(Exception e) { tx.rollback(); } finally { em.close(); } 수업 듣다가 궁금한 점이 생겨 질문 남깁니다! em.clear() 하면 영속성 컨텍스트 초기화 되니까 그 다음 em.find() 는 DB서버에 쿼리문 날려서 내부적으로 객체 필드 초기화해서 반환합니다. 그런데 DB에는 TEAM_ID 컬럼에 그냥 숫자가 들어가있는데 어떻게 findMember의 Team 필드가 해당하는 Team객체로 초기화 될 수 있었던건가요?? <가설> /////////////////////////////////////////// 표시한 부분 바로 아래의 Member findMember = em.find(Member.class, member.getId()); Member 엔티티 객체의 team 필드와 Member 테이블의 TEAM_ID가 @JoinColumn 연관 관계 및 FK 설정 되어있다. referencedColumnName 의 default 값으로 인해 MEMBER 테이블의 FK가 TEAM 테이블의 PK를 참조한다. em.find(Member.class, member.getId()); 하면 JPA가 TEAM_ID(FK)로 MEMBER 와 TEAM을 JOIN해서 얻은 데이터로 원하는 Member 객체와 연결된 Team 객체를 초기화할 수 있다. Team 객체 초기화한 것을 Member 객체의 team 필드에 넣어서 Member 객체 초기화를 완료한다. 이를 반환한다. 이렇게 생각하는 것이 맞는건가요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] Transactional이 작동을 안 하길래 찾아보다가, DataSourceUtils.getConnection을 사용하지 않고, (DataSource 객체).getConnection을 써서 그런간가 싶어서 이것을 수정하려 했는데, 이러니까 테스트 코드가 작동이 안되네요... 테스트 코드와 DataSourceUtils가 어떠한 연관이 있는 건가요? (DataSource 객체).getConnection으로 DB를 연동하면 테스트 코드가 잘 되는데, DataSourceUtils.getConnection으로 하면 실행할땐 잘 되지만, 테스트 코드로 하면 데이터베이스 연동에 오류가 나는 것 같네요...
const reduce = (f, iter, acc) => { if (acc === undefined) { iter = iter[Symbol.iterator]() acc = iter.next().value } for (const v of iter) { acc = f(acc, v) } return acc } console.log(reduce(add, [1, 2, 3, 4, 5], 0)) console.log(reduce(add, [1, 2, 3, 4, 5])) 강의 언제나 즐겁게 듣고 있습니다! reduce 파트 듣다가 js reduce에 가까운 구현은 이쪽이 아닐까 싶습니다! 초기 값이 존재하지 않을 때, 배열의 첫번째 요소를 사용하는 사례를 더 잘 표현한 것 같습니다.
안녕하세요. 강의 잘 보고 있습니다. 다름이 아니라 7강 마지막에서 이미지 추가하는 부분에 해당 이미지 속성창에서 "빌드 작업" -> "없음"을 "리소스" 로 변경하면 실행 시 적용되는 부분에 대해 설명 추가하면 좋았을 것 같습니다. (해당 속성을 "리소스"로 변경하지 않으면 실행 시 이미지가 나타나지 않습니다.) 약간 아쉬움이 남는 부분인 것 같아서 의견을 드려 보았습니다. 좋은 강의 감사합니다. ^^
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] MemberRepositoryTest 코드 실행하는데 C:\bootex\spring01\mvc\src\main\java\com\sbgb\mvc\domain\member\MemberRepository.java:23: error: cannot find symbol member.setId(++sequence); ^ symbol: method setId(long) location: variable member of type Member 라고 오류가 발생합니다. 소스코드 비교해도 다른게 없고 아예 복사붙여넣기 해도 작동이 안됩니다 Lombok도 잘 돼있고 Getter Setter도 다 돼있는데 안되네요
안녕하세요, 루키스님. 강의에서 다뤄주신 부분은 아니지만, 학교에서 다른 학생분들과 프로젝트를 하는 중에 Json으로 데이터를 관리하려는데 궁금한 부분이 생겨서 혹시나 싶어 여쭤봅니다... 구글 스프레드시트에 데이터를 관리하면서 Json으로 불러와서 사용하고 있는데요. 현업에서도 Json으로 데이터 관리를 많이 하시나요? 기본타입이 아닌 Enum이나 Class타입인 데이터같은 경우, 시트에 문자열로 작성하고 Unity에서 사용할 때에는 리플렉션을 사용하여 동적으로 변환시키나요? 다른 분들 작업하신 시트를 봤을 때에는 모든 시트에 첫 열을 index값으로 설정하셨던데, 어차피 Dictionary로 읽어온다면 유닛의 이름이나, 몬스터의 이름같은 값으로 첫 열을 설정하면 사용하기 더 편하지 않나요? 데이터의 첫 열을 index로 설정하는 이유가 궁금합니다. 강의에서 다루시지 않은 부분에 대해 질문드려서 죄송합니다.. 구글에 검색해보면 "이렇게 이렇게 한다"라는 내용 뿐이지 왜 이렇게 하는지 납득할만한 내용을 찾을 수가 없더군요.