선생님 SOLID 객체지향을 공부하다가 궁금한게 있어서 질문드립니다. S. 단일책임의 원칙에서 객체는 하나의 책임만 갖고있어야한다고 했는데 간단한 MVC 패턴의 웹서비스를 생각해보면(입문편에서 만들어본 회원가입예제처럼) DAO나 Repository 객체가 비지니스 로직의 메세지를 받고 DB와 소통한다는 책임을 갖지만 달리 보자면 CRUD에 대한 모든 메소드를 다 갖고있는만큼 여러 책임을 갖고있는것 아닌가요? 이런게 강의에서 말씀하신 단하나의 책임이란 개념의 모호함인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 자바입문강의 복습겸 듣는데 소스코드를 첨부 안해주셔서 2배속으로 듣는데 일일히 타이핑하기 번거롭네요ㅠㅠ 국비지원 수업중이라 시간이 없고 복습겸 들을려고 했는데 소스코드 공유 안되는 건가요??
1. persistence.xml 2. Member.java package hellojpa ; import javax.persistence.* ; @Entity // JPA 의 관리 대상이 된다 . public class Member { @Id @GeneratedValue @Column (name = "MEMBER_ID" ) private Long id ; @Column (name = "USERNAME" ) private String username ; // // @Column(name = "TEAM_ID") // private Long teamId; @ManyToOne @JoinColumn (name = "TEAM_ID" ) private Team team ; public Long getId () { return id ; } public void setId (Long id) { this . id = id ; } public String getUsername () { return username ; } public void setUsername (String username) { this . username = username ; } public Team getTeam () { return team ; } public void setTeam (Team team) { this . team = team ; } } 3. Team.java package hellojpa ; import javax.persistence.* ; import java.util.ArrayList ; import java.util.List ; @Entity public class Team { @Id @GeneratedValue @Column (name = "TEAM_ID" ) private Long id ; private String name ; // Team 객체에서 Member 클래스를 참조하기 위해 @OneToMany (mappedBy = "team" ) private List<Member> members = new ArrayList<>() ; public Long getId () { return id ; } public void setId (Long id) { this . id = id ; } public String getName () { return name ; } public void setName (String name) { this . name = name ; } public List<Member> getMembers () { return members ; } public void setMembers (List<Member> members) { this . members = members ; } } 4. JpaMain.java package hellojpa ; import javax.persistence.EntityManager ; import javax.persistence.EntityManagerFactory ; import javax.persistence.EntityTransaction ; import javax.persistence.Persistence ; import java.util.List ; public class JpaMain { public static void main (String[] args) { // 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에서 공유 EntityManagerFactory emf = Persistence. createEntityManagerFactory ( "hello" ) ; // DB 커넥션을 얻는 일관적인 행위를 할때마다 EntityManager 를 만들어줘야한다 . // 엔티티 매니저는 쓰레드간에 공유 X ( 사용하고 버려야 한다 ) EntityManager em = emf.createEntityManager() ; // // JPA 의 모든 데이터 변경은 트랜잭션 안에서 실행 . EntityTransaction tx = em.getTransaction() ; tx.begin() ; // 트랜젝션 시작 try { // 저장 Team team = new Team() ; team.setName( "TeamAA" ) ; em.persist(team) ; Member member = new Member() ; member.setUsername( "member22" ) ; member.setTeam(team) ; em.persist(member) ; em.flush() ; em.close() ; Member findMember = em.find(Member. class, member.getId()) ; List<Member> members = findMember.getTeam().getMembers() ; for (Member m : members) { System. out .println( "kkk = " + m.getUsername()) ; } tx.commit() ; } catch (Exception ex) { tx.rollback() ; } finally { em.close() ; } emf.close() ; // 웹 애플리케이션에서 WAS 가 종료될 때 emf 종료 => release //code em.close() ; emf.close() ; } } 문제 1. 콘솔창에 kkk = 결과값이 나오지 않습니다. 문제 2. H2 DB에 저장되지 않습니다. em.flush(); em.clear(); 를 지우고 했을 때는 저장이 되지만 마찬가지로 결과값은 나오지 않았습니다. em.flush(); em.clear();를 붙이니 결과값도, DB에 저장도 되지 않았습니다. 원인 파악 부탁드립니다 ㅠㅠ 디버깅 해보았는데도 잘 모르겠어요 ㅠㅠ
수고많으십니다. 제목대로 입력 버퍼의 초기화에 대해서 궁금증이 있어 질문 올립니다. #include <stdio.h> int pow(int base, int exp); int main() { int base, exp, q = 2; while (q == 2) { printf("Base and Exp : "); q = scanf("%d %d", &base, &exp); if (q != 2) { printf("Worng enter\n\n"); rewind(stdin); //while (getchar() != '\n'); q = 2; continue; } printf("%d exp %d : %d\n\n", base, exp, pow(base, exp)); } return 0; } int pow(int base, int exp) { int result = 1; for (int i = 0; i < exp; ++i) result *= base; return result; } 이번 강의의 예제를 나름대로 만들어 보았습니다. 저는 입력 버퍼로 인한 오류를 많이 격어서 입력 버퍼를 초기화하는 방법을 찾아보다 rewind(stdin);를 발견하여 사용했습니다. 그런대 강의 커뮤니티의 질문들을 살펴보니 대다수가 버퍼 초기화에 while (getchar() != '\n');를 사용하고 있었습니다. (참고로 전 아직 이 강의까지만 수강했습니다.) 요점은 rewind(stdin); 와 while (getchar() != '\n'); 의 기능적인 차이가 있는지, rewind(stdin);을 사용할때 위험성이 있는지 알고 싶습니다. 답변 부탁드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 크롤링하려는 웹 사이트에서 수정하기 버튼을 눌러서 수정할 데이터를 수정한 후 수정하기완료 버튼을 누르고 크롬개발자도구의 네트워크창에서 확인결과 post방식으로 formdata들을 request하는것을 확인 했습니다 혹시 form data를 딕셔너리 형태로 가져올수 있는 방법이 있을까요? 정말 궁금합니다.
안녕하세요 제로초님 강의를 보면서 느낀점은 App.tsx에서만 코드 스플리팅을 적용시켜준 것 같은데 다른 페이지에서는 코드 스플리팅을 할 필요가 없는 건가요 ? 예를들어 workSpace에서 Redirect에서 login 페이지 이동시 string으로 보내줘야하는데 이 같은 경우는 따로 스플리팅이 필요 없는걸까요 ? const LogIn = loadable (() => import ( '@pages/Login' ));
N명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요. 같은 점수가 입력될 경우 높은 등수로 동일 처리한다. 즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다. 5 87 89 92 100 76 만약 3번학생이 100점이라는 가정하에 출력을해보면 4, 3, 2, 1, 5 등으로 1등이 2명으로 안나오고 1명으로 나와서 4, 3, 1, 1, 5 등으로 코딩을 해보려고했으나 실패했습니다.. 어떻게 코딩하는게 제일 좋은 방법일까요?
안녕하세요 프론트엔드 개발자를 꿈꾸는 개린이(?)입니다. 일단 양질의 컨텐츠를 제공해주신 점, 개발의 방향을 제시해주신 점 진심으로 감사하다는 말씀드리고 싶습니다. 다름이 아니라 영상 너무 유익해서 잘 보고 있는데요. 제작자님께서 강의를 수강한 후에 별도로 첨부해주신 사이트들을 그때그때 챙겨보라고 하셔서 그렇게 하려고 노력중입니다.! '백엔드 개발자 vs 프론트엔드 개발자' 라는 영상에 추가된 " 신입 프론트엔드 개발자가 되려면 무엇을 학습해야 하나요? " 이 사이트에 의문이 생겨서요! 저 사이트에 들어가보니까 좋은 이론이 굉장히 많던데 그 내용들을 전부 독파하고 다음 영상으로 넘어가면 되는건가요? 아니면 다른 영상 보면서 중간중간에 보는게 좋을까요 어떻게 해야 효율성있게 공부를 할 수 있을까요 ㅠㅠ 도움 좀 구해요 ..
서버관련해서 처음이라 동기와 비동기를 간단히 정리하면 1. 동기는 유저가 서버에 입장할 때 까지 무조건 기다리는 것이고 2. 비동기는 서버에 유저가 바로 입장한다면 유저가 실행해야할 일(OnAcceptCompleted)을 저희가 실행 시켜주고, 바로 입장하지 않는다면 넘겨버리고 후에 유저가 입장하면 콜백event로 OnAcceptCompleted를 실행 한다고 이해 하면되는지? 무슨 느낌인지는 알겠는데 나중에 혼자 작성해보라고 하면 못할것 같네요... 모바일게임 웹서버(유저 행동 데이터,유저데이터 저장, 랭킹등..)를 혼자 만들 수 있는 실력까지 기르는 것이 목표인데 완벽하게 코드 전체를 공부하고 넘어가는 것이 좋을까요? 아니면 무슨느낌인지만 알고 넘어가도 될까요?
아이디 비활성화 전까지는 체인지인포가 잘 되었지만 비활성화 후에는 체인지인포 페이지에 들어가면 TypeError: 'NoneType' object is not callable 라며 들어가질 못합니다... 검색을 해보니 None이 발생할 경우도 설정해줘야한다는데 애초에 발생할 상황 자체가 아닌 것 같아 이상하여 질문 드립니다
안녕하세요 ! @Column(name = "") 이거를 해주는 이유가 컬럼 이름을 정해주는 걸로 이해를 했는데요 ! 계속 보다보니까 pk, fk를 지정해주는 느낌이 자꾸 들어서요 ㅠㅠ 갑자기 @Column(name = "MEMBER_ID") 해주시길래 깜짝 놀랐습니다 ㅠㅠ 왜 해주는 걸까요..??
안녕하세요 ! 강의 들으면서 궁금한점 여쭤봅니다 ! EX) 각각 다른 파일에 이미 생성되어있는 컴포넌트를 특정 파일에 복사했을 때, 해당 컴포넌트가 어떨때는 컴포넌트로 복사되고 어떨때는 인스턴스로 복사되는데 왜 이렇게 차이가 발생하는지 궁금합니다 ! 아래 그림처럼 1번 파일에 생성되어있는 '사람 모양'의 컴포넌트를 3번 파일에 복사했을 때, 왼쪽 레이어 패널에 보여지는 속성은 '컴포넌트'로 보여집니다 ! 헌데, 2번 파일에 생성되어있는 '안드로이드 모양'의 컴포넌트를 같은 3번파일에 복사했을 때는, 왼쪽 레이어 패널에 보여지는 속성이 '인스턴스'로 보여집니다 ! 이론 상 컴포넌트를 생성한 뒤 다른 파일에 복사했을 때, '인스턴스'로 복사되어야 하는거 아닌가요? 아무리 찾아도 안나오네요 ㅠ 꼭 답변 부탁드립니다 선생님 ! :)