섹션7의 고급 매핑 따라하면서 Exception이 발생 하여 질문 드립니다. 섹션7의 고급 매핑처럼, class로 Item, Book, Album, Movie를 만들었습니다. Main Class에 아래 처럼 코딩 하여 돌려면 Movie 와 Item table에 값이 들어 갑니다. Persistence.xml 에 설정이 <property name ="hibernate.hbm2ddl.auto" value ="create" /> 라서 매번 Debug로 Intellig 실행시 table이 drop 되고 다시 create 됩니다. ====== Persistence.xml =========== <? xml version ="1.0" encoding ="UTF-8" ?> <persistence xmlns ="http://xmlns.jcp.org/xml/ns/persistence" version ="2.1" > <persistence-unit name ="hello" > <properties> <!-- 필수 속성 --> <property name ="javax.persistence.jdbc.driver" value ="org.h2.Driver" /> <property name ="javax.persistence.jdbc.user" value ="sa" /> <property name ="javax.persistence.jdbc.password" value ="bistel01" /> <property name ="javax.persistence.jdbc.url" value =" jdbc:h2:tcp://localhost/~/h2database" /> <property name ="hibernate.dialect" value ="org.hibernate.dialect.H2Dialect" /> <!-- 옵션 --> <property name ="hibernate.show_sql" value ="true" /> <property name ="hibernate.format_sql" value ="true" /> <property name ="hibernate.use_sql_comments" value ="true" /> <property name ="hibernate.id.new_generator_mappings" value ="true" /> <property name ="hibernate.hbm2ddl.auto" value ="create" /> </properties> </persistence-unit> </persistence> Intellig 에서 한번 수행은 정상적으로 되나 그후 두번째 debug 로 수행 하면 Table drop 할때 exceptin 이 납니다. Exception을 보면 Item 과 Movie 에 이미 data가 들어가 있고, 두 table 간의 연관 관계가 FK(?) 로 잡혀 져 있는데 Table Drop을 sub table 즉 movie, book, album을 먼저 수행 하고 그 다음에 Item을 해야 하는데 drop 순서가 Albme, Book, Item , Movie 이다 보니 발생 하는 듯 합니다. 이럴때는 어떻게 Table의 연관 관계를 끊나요 .( 오라클은 이처럼 지우면 되는데==> DROP TABLE CASCADE CONSTRAINTS) ======EXCEPTION LOG====== INFO: HHH10001003: Autocommit mode: false 8월 18, 2020 2:47:18 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init> INFO: HHH000115: Hibernate connection pool size: 20 (min=1) 8월 18, 2020 2:47:18 오후 org.hibernate.dialect.Dialect <init> INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect 8월 18, 2020 2:47:19 오후 org.hibernate.cfg.AnnotationBinder processJoinedDiscriminatorProperties WARN: HHH000457: Joined inheritance hierarchy [hellojpa.shopmall.Item] defined explicit @DiscriminatorColumn. Legacy Hibernate behavior was to ignore the @DiscriminatorColumn. However, as part of issue HHH-6911 we now apply the explicit @DiscriminatorColumn. If you would prefer the legacy behavior, enable the `hibernate.discriminator.ignore_explicit_for_joined` setting (hibernate.discriminator.ignore_explicit_for_joined=true) Hibernate: drop table Album if exists Hibernate: drop table Book if exists Hibernate: drop table Item if exists 8월 18, 2020 2:47:20 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@317a118b] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. 8월 18, 2020 2:47:20 오후 org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL " drop table Item if exists" via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " drop table Item if exists" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlString(SchemaDropperImpl.java:375) at org.hibernate.tool.schema.internal.SchemaDropperImpl.applySqlStrings(SchemaDropperImpl.java:359) at org.hibernate.tool.schema.internal.SchemaDropperImpl.dropFromMetadata(SchemaDropperImpl.java:241) at org.hibernate.tool.schema.internal.SchemaDropperImpl.performDrop(SchemaDropperImpl.java:154) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:126) at org.hibernate.tool.schema.internal.SchemaDropperImpl.doDrop(SchemaDropperImpl.java:112) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:144) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at hellojpa.JpaMain.main(JpaMain.java:15) Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Cannot drop "ITEM" because "FK5SQ6D5AGRC34ITHPDFS0UMO9G" depends on it; SQL statement: drop table Item if exists [90107-200] at org.h2.message.DbException.getJdbcSQLException(DbException.java:576) at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) at org.h2.message.DbException.get(DbException.java:205) at org.h2.command.ddl.DropTable.prepareDrop(DropTable.java:98) at org.h2.command.ddl.DropTable.update(DropTable.java:124) at org.h2.command.CommandContainer.update(CommandContainer.java:198) at org.h2.command.Command.executeUpdate(Command.java:251) at org.h2.server.TcpServerThread.process(TcpServerThread.java:406) at org.h2.server.TcpServerThread.run(TcpServerThread.java:183) at java.lang.Thread.run(Unknown Source) at org.h2.message.DbException.getJdbcSQLException(DbException.java:576) at org.h2.engine.SessionRemote.done(SessionRemote.java:611) at org.h2.command.CommandRemote.executeUpdate(CommandRemote.java:237) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:228) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 15 more
강의와 관련있는 질문 을 남겨주세요. • 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등) • 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색 을 해주세요. (중복 질문을 자제해주세요.) • 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’ 를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달 에도 요령이 필요합니다. • 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요. • 강의실 페이지 (/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다. • 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재 해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드 를 남겨주세요! 구체적인 질문 일수록 명확한 답을 받을 수 있어요. • 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요. • 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요 . • 정확한 질문 내용과 함께 코드 를 적어주시거나, 캡쳐 이미지 를 첨부하면 더욱 좋습니다. 기본적인 예의 를 지켜주세요. • 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용 은 스팸 처리 등 제재를 가할 수 있습니다. useEffect만 쳐도 useEffect( () => { },input)이렇게 완성되도록 어떻게 설정하나요? ctrl+스페이스 눌려도 useEffect까지만 완성됩니다. 윈도우 사용자입니다. 감사합니다.
처음 프로그램을 실행하면 잘 실행되는데, 코드를 수정한 후 실행하면 Web server failed to start. Port 8080 was already in use. 에러가 뜹니다 cmd 창에서 해당 포트를 종료한 후 실행하면 잘되는데, 코드를 수정할때마다 포트를 종료시켜줘야하나요?
안녕하세요! 질 좋은 강의에 감사인사드립니다! 다름이 아니라 Scikit-learn의 LDA클래스에서 제공하는 하이퍼파라미터인 'max_iter'에 대한 질문입니다. LDA가 동작하는 과정 중에서 모든 단어들이 토픽 할당 분포가 변경되지 않을 때까지 반복적인 수행을 거치기 때문에 이에 관련된 파라미터로 max_iter가 있다고 하셨습니다! 그렇다면 혹시 max_iter를 예를들어 300으로 설정했는데 알고리즘이 동작하다가 200번째에 모든 단어들의 토픽 할당이 수렴이 된다면 그 때 바로 그냥 멈추고 결과를 출력하나요? 마치 XGBoost나 뉴럴네트워크 처럼 early_stopping 기능처럼요! 감사합니다 :)
p(int num)이라고 하는 의미가 p라는 함수에는 int형의 변수를 넣으라는 의미이고 그 변수를 함수내에서는 num으로 쓴다는 것으로 이해를 했는데.... char a= "abc" 이렇게 추가하고 p(a)를 하니까 동작이 되면서 "48"로 인식이 됩니다. 제가 이해한 의미가 아닌가요...??
안녕하세요! John Ahn님의 React+nodejs+MongoDB를 이용한 쇼핑몰 만들기, 영화앱 만들기 강의를 수강후 완료된 웹에 도커를 사용하고싶어 강의를 수강하게 되었습니다. 이번 강의는 mysql로 강의해주시는거 같은데 mongoDB로 개발한 환경도 이 강의가 도움이 될까요?
안녕하세요! 쉽고 재밌는 강의 만들어주셔서 감사합니다! OrderService 서비스의 public Long order() 메서드 관련해서 질문드리고자 합니다. 강의해주신 대로는 order() 함수에서는 여러 orderItem을 넣을 수 있는 것으로 설계가 되어 있습니다. 그래서 order 객체를 생성할 때 orderItem 여러 개를 파라미터로 받을 수 있도록 OrderItem... orderItems로 설정해주셨습니다. 그런데 public Long order() 함수에서는 파라미터가 하나의 itemId 및 count만을 받아서 order() 함수 내에서 order 객체를 생성할 때 하나의 orderItem만 추가 가능하다고 생각했습니다. 이 경우 아이템마다 외부에서 item마다 order() 함수를 호출하여 order객체의 필드인 orderItems에 orderItem을 추가하여야 하는 것인지 궁금합니다. 감사합니다!
kube-proxy 에 대해 자세한 설명좀 부탁드립니다. 검색으로는 잘 이해가 안되네요..대시보드 설명시 잠깐 나오기는 하는데.....이녀석에 대한 특별한 언급은 없었던것 같은데 master에서 보면 kube-proxy 데몬이 /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf --hostname-override=k8s-master ps -ef | grep kube-proxy로 보면 항상 떠잇거든요... 실제 config 경로 위치에 config.conf파일도 존재하지도 않고요...죽여도 죽지 않구요... 검색해보면 노드마다 기본적으로 떠있어서 통신하는거라고 하던데 kubelet앞단에서말이죠... 이거 master에는 kube-proxy가 왜 꼭 떠있는건가요? 그리고 게다가 LISTEN 포트가 9000번 이던데 변경가능한지도 궁금하고 또 kill -9 옵션으로 죽여서 바로 되살아나던데 master에 필요한 이유와 안죽는 이유 그리고 포트변경 가능한지 가능하다면 어떻게 변경한지 궁금합니다. 자세한 설명 부탁드릴께요~~감사합니다.
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
이 강의에서 만드는 게임과는 조금 벗어난 이야기이지만 궁금해서 여쭤봅니다. 하나의 객체가 동시에 여러개의 상태를 가질 수 있다면 어떻게 관리하는게 좋을까요? 쉽게 말해 3D액션게임의 경우에는 이동하면서 점프도 하며 점프도중에 스킬도 쓸 수 있는데 이 경우에 열거형으로는 관리가 힘들 것 같습니다. 어떤 방식으로 관리하는게 좋을까요?
안녕하세요. 잘따라가고 있다 생각했는데 화면에 시간이 출력되지 않아 당황스럽네요 ㅠㅠ 10초뒤에 화면 꺼지는건 되는데 (= 시간은 가는데) 그 시간 가는게 나도코딩님처럼 게임화면에 나타나지 않네요 아래는 제 코드입니다..! import pygame pygame.init() # 초기화 (반드시 필요) # 화면 크기 설정 screen_width = 480 # 가로 크기 screen_height = 640 # 세로 크기 screen = pygame.display.set_mode((screen_width,screen_height)) # 화면 타이틀 설정 pygame.display.set_caption("Ureal Game") # 게임 이름 # FPS clock = pygame.time.Clock() # 배경 이미지 불러오기 background = pygame.image.load("C:/realc/PythonWorkSpace/pygame_basic/background.png") # 캐릭터(스프라이트) 불러오기 character = pygame.image.load("C:/realc/PythonWorkSpace/pygame_basic/ch.png") character_size = character.get_rect().size # 이미지의 크기를 구해옴 character_width = character_size[0] # 캐릭터의 가로 크기 character_height = character_size[1] # 캐릭터의 세로 크기 character_x_pos = screen_width / 2 - character_width / 2 # 화면 가로의 절반 크기에 해당하는 곳에 위치 character_y_pos = screen_height - character_height # 화면 세로 크기 가장 아래에 해당하는 곳에 위치 # 이동할 좌표 to_x = 0 to_y = 0 # 이동 속도 character_speed = 1 # 적 enemy 캐릭터 enemy = pygame.image.load("C:/realc/PythonWorkSpace/pygame_basic/enemy.png") enemy_size = enemy.get_rect().size # 이미지의 크기를 구해옴 enemy_width = enemy_size[0] # 캐릭터의 가로 크기 enemy_height = enemy_size[1] # 캐릭터의 세로 크기 enemy_x_pos = screen_width / 2 - enemy_width / 2 # 화면 가로의 절반 크기에 해당하는 곳에 위치 enemy_y_pos = screen_height / 2 - enemy_height / 2 # 화면 세로 크기 가장 아래에 해당하는 곳에 위치 # 폰트 정의 game_font = pygame.font.Font(None, 40) # 폰트 객체 생성 (폰트, 크기) # 총 시간 total_time = 10 # 시작 시간 정보 start_ticks = pygame.time.get_ticks() # 현재 tick 을 받아옴 # 이벤트 루프 running = True # 게임이 진행중인가? while running: dt = clock.tick(60) # 게임화면의 초당 프레임 수를 설정 for event in pygame.event.get(): # 어떤 이벤트가 발생하였는가? if event.type == pygame.QUIT: # 창이 닫히는 이벤트가 발생하였는가? running = False # 게임이 진행중이 아님 if event.type == pygame.KEYDOWN: # 키가 눌러졌는지 확인 if event.key == pygame.K_LEFT: to_x -= character_speed elif event.key == pygame.K_RIGHT: to_x += character_speed elif event.key == pygame.K_UP: to_y -= character_speed elif event.key == pygame.K_DOWN: to_y += character_speed if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: to_x = 0 elif event.key == pygame.K_UP or event.key == pygame.K_DOWN: to_y = 0 character_x_pos += to_x * dt character_y_pos += to_y * dt if character_x_pos < 0 : character_x_pos = 0 elif character_x_pos > screen_width - character_width : character_x_pos = screen_width - character_width if character_y_pos < 0: character_y_pos = 0 elif character_y_pos > screen_height - character_height : character_y_pos = screen_height - character_height # 충돌 처리를 위한 rect 정보 업데이트 charcter_rect = character.get_rect() charcter_rect.left = character_x_pos charcter_rect.top = character_y_pos enemy_rect = enemy.get_rect() enemy_rect.left = enemy_x_pos enemy_rect.top = enemy_y_pos # 충돌 체크 if charcter_rect.colliderect(enemy_rect): print("충돌했어요") running=False # 타이머 집어 넣기 # 경과 시간 계산 elapsed_time = (pygame.time.get_ticks() - start_ticks) / 1000 # 경과 시간(ms)을 1000으로 나누어서 초(s) 단위로 표시 timer = game_font.render(str(int(total_time - elapsed_time)), True, (255,255,255)) # 출력할 글자, True, 글자 색상 screen.blit(timer, (10,10)) # 만약 시간이 0 이하이면 게임 종료 if total_time - elapsed_time <= 0 : print("타임아웃") running = False screen.blit(background, (0,0)) # 배경 그리기 screen.blit(character, (character_x_pos,character_y_pos)) screen.blit(enemy, (enemy_x_pos,enemy_y_pos)) pygame.display.update() # 게임 화면을 다시 그리기! # 잠시 대기 pygame.time.delay(2000) # 2초 정도 대기 # pygame 종료 pygame.quit()
안녕하세요. int flag = scanf("%f", &library[count].price); 에서 int flag라고 변수를 따로만드는 이유는 무엇인가요? scanf("%f", &library[count].price); 이렇게만 해두는거랑 무슨 차이가있나요? #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #define MAX_TITLE 40 #define MAX_AUTHOR 40 #define MAX_BOOKS 3 char* s_gets(char* st, int n) { char* ret_val; char* find; ret_val = fgets(st, n, stdin); //공백을 포함한 문자열 if (ret_val) { find = strchr(st, '\n'); //st에서 \n을 찾는다. if (find) *find = '\0'; else while (getchar() != '\n') continue; } return ret_val; } struct book { char title[MAX_TITLE]; char author[MAX_AUTHOR]; float price; }; int main() { struct book library[MAX_BOOKS] = { {"Empty","Empty",0.0f}, }; //구조체배열 선언과 초기화 int count = 0; while (1) { printf("Input a book title or press [Enter] to stop.\n>>"); if (s_gets(library[count].title, MAX_TITLE) == NULL) break; if (library[count].title[0] == '\0') break; printf("Input the author.\n>>"); s_gets(library[count].author, MAX_AUTHOR); printf("Input the price.\n>>"); int flag = scanf("%f", &library[count].price); while (getchar() != '\n') continue; //버퍼비우기 count++; if (count == MAX_BOOKS) { printf("No more books.\n"); break; } } if (count > 0) { printf("\nThe list of books:\n"); for (int index = 0; index < count; index++) printf("\"%s\" written by %s: $%.1f\n", library[index].title, library[index].author, library[index].price); } else printf("No books to show.\n"); return 0; }
이건 안 들릴때구요 이건 들릴때 인데 audio 태그 images 앞에 /을 붙이거나 src코드를 다시 작성하거나 하면 갑자기 이렇게 들릴때도 있어요 근데 저장하고 새로고침 하면 또 다시 안 들립니다 진짜 바로 듣고싶으면 controls 태그를 넣어서 화면에서 직접 켜줘야 들을수 있어요 이때는 개발자도구 콘솔창에 GET http://127.0.0.1:2809/favicon.ico 404 (Not Found) 라는 문구가 뜨면서 favicon.ico와 piano-bgm.mp3 파일이 전달됩니다 그전에는 없다가요 파비콘은 쓰지도 않았는데 이게 왜 뜨는거죠? 개발자도구 네트워크에 piano-bgm.mp3 파일 눌러보면 Failed to load response data라고 뜹니다 파일경로도 완벽하고 코드도 틀린것이 없는데 오디오 전까지는 다 잘됬는데 뭐가 문제인지 잘 모르겠습니다 도와주세요
sagas/ user.js 에서 result로 받은 값을 data: result로 하지 않고 왜 data: result.data로 넣는지 궁금합니다. function* logIn ( action ) { try { const result = yield call ( logInAPI , action . data ); yield put ({ type : LOG_IN_SUCCESS , data : result . data , // 서버로 부터 결과를 받는다. }); } catch ( err ) { yield put ({ type : LOG_IN_FAILURE , error : err . response . data , }); } }